From ac3ff3ac7bdf62d485380985c2b2361af9071bc5 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Fri, 5 Dec 2025 14:46:08 +1100 Subject: [PATCH 1/7] Add goreleaser and mise for builds --- .github/workflows/build.yml | 34 +++++++++++++++++++++++ .github/workflows/release.yml | 31 +++++++++++++++++++++ .github/workflows/snapshot.yml | 34 +++++++++++++++++++++++ .gitignore | 1 + .goreleaser.yml | 50 ++++++++++++++++++++++++++++++++++ .mise.toml | 25 +++++++++++++++++ Dockerfile | 31 ++++----------------- build.sh | 6 ++++ 8 files changed, 187 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/snapshot.yml create mode 100644 .goreleaser.yml create mode 100644 .mise.toml create mode 100755 build.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..6bca197 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,34 @@ +name: 🏗️ Build + +on: + push: + branches: [main] + pull_request: ~ + +env: + GO_VERSION: "1.25" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Set up Go ${{ env.GO_VERSION }} + uses: actions/setup-go@v6 + with: + go-version: ${{ env.GO_VERSION }} + + - name: 📦 Install Mise + run: | + curl https://mise.run | sh + mise install + + - name: Install dependencies + run: sudo apt install wv unrtf tidy + + - name: Build + run: mise build + + - name: Test + run: mise test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ff238f6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,31 @@ +name: 🚀 Publish Release + +on: + push: + tags: + - 'v?[0-9]+.[0-9]+.[0-9]+(-alpha[0-9]+|-beta[0-9]+)?' + +env: + GO_VERSION: "1.25" + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: 📦 Install Mise + run: | + curl https://mise.run | sh + mise install + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Run GoReleaser Snapshot + run: mise release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml new file mode 100644 index 0000000..f5ba423 --- /dev/null +++ b/.github/workflows/snapshot.yml @@ -0,0 +1,34 @@ +name: 👨‍🔧 Build Snapshot Release + +on: + workflow_dispatch: ~ + +env: + GO_VERSION: "1.25" + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: ${{ env.GO_VERSION }} + + - name: 📦 Install Mise + run: | + curl https://mise.run | sh + mise install + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Run GoReleaser Snapshot + run: mise snapshot + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index efc1f97..d872b6e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ sajari-convert *tests/ /dist +/vendor diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..706b7f5 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,50 @@ +project_name: docconv + +version: 2 + +builds: + - id: docconv-build + main: ./docd + binary: docconv + ldflags: + - -extldflags '-static' + env: + - CGO_ENABLED=0 + goos: [ linux ] + goarch: [ amd64, arm64 ] + +release: + prerelease: auto + name_template: "docconv {{.Version}}" + github: + owner: skpr + name: docconv + +nfpms: + - id: docconv-package + package_name: docconv + license: MIT + maintainer: Skpr + homepage: https://github.com/skpr/docconv + description: Fork of https://github.com/sajari/docconv to add additional package formats. + formats: [ apk ] + dependencies: + - tesseract-ocr + - poppler-utils + overrides: + apk: + dependencies: + - tesseract-ocr + - tesseract-ocr-dev + - poppler-utils + +dockers_v2: + - images: + - "docker.io/skpr/docconv" + - "ghcr.io/skpr/docconv" + tags: + - "{{ .Version }}" + - "latest" + platforms: + - linux/amd64 + - linux/arm64 diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..79b52ef --- /dev/null +++ b/.mise.toml @@ -0,0 +1,25 @@ +[tools] +go = "1.25" +"ubi:goreleaser/goreleaser" = "latest" + +[env] +CGO_ENABLED=0 +LGFLAGS="-extldflags '-static'" + +[tasks.build] +description = "Build the application" +run = ''' +go build -v -o ./dist/docconv ./docd +''' + +[tasks.test] +description = "Run tests" +run = "go test -v ./..." + +[tasks.snapshot] +description = "Create a snapshot release with Goreleaser" +run = "goreleaser release --snapshot --clean" + +[tasks.release] +description = "Create a release with Goreleaser" +run = "goreleaser release --clean" diff --git a/Dockerfile b/Dockerfile index cf590fa..7008e8e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,8 @@ -ARG alpine_version=3.21 -FROM golang:1.24-alpine${alpine_version} as build +ARG ALPINE_VERSION=3.21 +FROM alpine:$ALPINE_VERSION -RUN apk add make \ - cmake \ - gcc \ - g++ \ - poppler-utils \ - wv \ - lynx \ - tesseract-ocr-dev +RUN apk add --no-cache tesseract-ocr tesseract-ocr-dev poppler-utils -WORKDIR /go/src/code.sajari.com/docconv -COPY . /go/src/code.sajari.com/docconv - -RUN go build -o dist/docconv -tags ocr code.sajari.com/docconv/docd - -ARG alpine_version=3.21 -FROM alpine:${alpine_version} - -RUN apk add tesseract-ocr \ - tesseract-ocr-dev \ - poppler-utils - -COPY --from=build /go/src/code.sajari.com/docconv/dist/docconv /usr/local/bin/docconv - -ENTRYPOINT ["/usr/local/bin/docconv"] +ARG TARGETPLATFORM +COPY $TARGETPLATFORM/docconv /usr/bin/docconv +ENTRYPOINT ["/usr/bin/docconv"] diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..02be979 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +VERSION=$1 + +apk add make cmake gcc g++ poppler-utils wv lynx tesseract-ocr-dev +go build -o dist/docconv-${VERSION} -tags ocr github.com/skpr/docconv/docd From 3b26761022f21a3fbf2c4eaa6b09870ece2e6992 Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Fri, 5 Dec 2025 14:53:09 +1100 Subject: [PATCH 2/7] No need to setup go --- .github/workflows/build.yml | 7 ------- .github/workflows/release.yml | 3 --- .github/workflows/snapshot.yml | 8 -------- 3 files changed, 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bca197..39ff9e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,8 +5,6 @@ on: branches: [main] pull_request: ~ -env: - GO_VERSION: "1.25" jobs: build: @@ -14,11 +12,6 @@ jobs: steps: - uses: actions/checkout@v6 - - name: Set up Go ${{ env.GO_VERSION }} - uses: actions/setup-go@v6 - with: - go-version: ${{ env.GO_VERSION }} - - name: 📦 Install Mise run: | curl https://mise.run | sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ff238f6..262b528 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,9 +5,6 @@ on: tags: - 'v?[0-9]+.[0-9]+.[0-9]+(-alpha[0-9]+|-beta[0-9]+)?' -env: - GO_VERSION: "1.25" - jobs: release: runs-on: ubuntu-latest diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index f5ba423..23ea238 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -3,20 +3,12 @@ name: 👨‍🔧 Build Snapshot Release on: workflow_dispatch: ~ -env: - GO_VERSION: "1.25" - jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - name: Set up Go - uses: actions/setup-go@v6 - with: - go-version: ${{ env.GO_VERSION }} - - name: 📦 Install Mise run: | curl https://mise.run | sh From 829d0fa5b7bbe99f0c9917cc3634aa7b1243920e Mon Sep 17 00:00:00 2001 From: Kim Pepper Date: Fri, 5 Dec 2025 15:00:23 +1100 Subject: [PATCH 3/7] Delete unused files --- .circleci/config.yml | 99 - .travis.yml | 10 - Makefile | 19 - build.sh | 6 - vendor/github.com/JalfResi/justext/.gitignore | 32 - vendor/github.com/JalfResi/justext/LICENSE | 21 - vendor/github.com/JalfResi/justext/README.md | 48 - vendor/github.com/JalfResi/justext/TODO.txt | 3 - .../JalfResi/justext/classifyParagraphs.go | 66 - .../JalfResi/justext/defaultTemplate.go | 50 - .../JalfResi/justext/detailedTemplate.go | 181 - .../JalfResi/justext/htmlRenderer.go | 89 - .../JalfResi/justext/paragraphObjectModel.go | 160 - .../github.com/JalfResi/justext/preprocess.go | 111 - vendor/github.com/JalfResi/justext/reader.go | 98 - .../justext/reviseParagraphClassification.go | 118 - .../github.com/JalfResi/justext/stoplists.go | 158 - vendor/github.com/JalfResi/justext/writer.go | 161 - .../PuerkitoBio/goquery/.gitattributes | 1 - .../github.com/PuerkitoBio/goquery/.gitignore | 16 - vendor/github.com/PuerkitoBio/goquery/LICENSE | 12 - .../github.com/PuerkitoBio/goquery/README.md | 211 - .../github.com/PuerkitoBio/goquery/array.go | 124 - vendor/github.com/PuerkitoBio/goquery/doc.go | 123 - .../github.com/PuerkitoBio/goquery/expand.go | 70 - .../github.com/PuerkitoBio/goquery/filter.go | 163 - .../PuerkitoBio/goquery/iteration.go | 61 - .../PuerkitoBio/goquery/manipulation.go | 679 - .../PuerkitoBio/goquery/property.go | 275 - .../github.com/PuerkitoBio/goquery/query.go | 49 - .../PuerkitoBio/goquery/traversal.go | 704 - vendor/github.com/PuerkitoBio/goquery/type.go | 203 - .../PuerkitoBio/goquery/utilities.go | 178 - .../github.com/advancedlogic/GoOse/.gitignore | 26 - .../advancedlogic/GoOse/.travis.yml | 22 - .../github.com/advancedlogic/GoOse/Gopkg.lock | 129 - .../github.com/advancedlogic/GoOse/Gopkg.toml | 58 - vendor/github.com/advancedlogic/GoOse/LICENSE | 202 - .../github.com/advancedlogic/GoOse/Makefile | 203 - .../github.com/advancedlogic/GoOse/README.md | 86 - vendor/github.com/advancedlogic/GoOse/VERSION | 1 - .../github.com/advancedlogic/GoOse/article.go | 40 - .../github.com/advancedlogic/GoOse/charset.go | 92 - .../github.com/advancedlogic/GoOse/cleaner.go | 572 - .../advancedlogic/GoOse/configuration.go | 69 - .../advancedlogic/GoOse/coverage.sh | 17 - .../github.com/advancedlogic/GoOse/crawler.go | 180 - .../advancedlogic/GoOse/crawlershort.go | 155 - vendor/github.com/advancedlogic/GoOse/doc.go | 23 - .../advancedlogic/GoOse/extractor.go | 754 - .../github.com/advancedlogic/GoOse/goose.go | 41 - .../github.com/advancedlogic/GoOse/goose.json | 37 - vendor/github.com/advancedlogic/GoOse/html.go | 47 - .../github.com/advancedlogic/GoOse/images.go | 328 - .../advancedlogic/GoOse/outputformatter.go | 180 - .../github.com/advancedlogic/GoOse/parser.go | 90 - .../advancedlogic/GoOse/stopwords.go | 4076 -- .../github.com/advancedlogic/GoOse/videos.go | 165 - .../advancedlogic/GoOse/wordstats.go | 39 - .../andybalholm/cascadia/.travis.yml | 14 - .../github.com/andybalholm/cascadia/LICENSE | 24 - .../github.com/andybalholm/cascadia/README.md | 144 - .../github.com/andybalholm/cascadia/parser.go | 889 - .../andybalholm/cascadia/pseudo_classes.go | 458 - .../andybalholm/cascadia/selector.go | 586 - .../andybalholm/cascadia/serialize.go | 176 - .../andybalholm/cascadia/specificity.go | 26 - .../github.com/araddon/dateparse/.travis.yml | 13 - vendor/github.com/araddon/dateparse/LICENSE | 21 - vendor/github.com/araddon/dateparse/README.md | 323 - .../github.com/araddon/dateparse/parseany.go | 2189 - vendor/github.com/fatih/set/.travis.yml | 2 - vendor/github.com/fatih/set/LICENSE.md | 20 - vendor/github.com/fatih/set/README.md | 243 - vendor/github.com/fatih/set/set.go | 148 - vendor/github.com/fatih/set/set_nots.go | 189 - vendor/github.com/fatih/set/set_ts.go | 194 - .../github.com/gigawattio/window/.gitignore | 67 - .../github.com/gigawattio/window/.travis.yml | 16 - vendor/github.com/gigawattio/window/LICENSE | 21 - vendor/github.com/gigawattio/window/README.md | 23 - .../github.com/gigawattio/window/rolling.go | 24 - .../github.com/go-resty/resty/v2/.gitignore | 31 - .../github.com/go-resty/resty/v2/BUILD.bazel | 59 - vendor/github.com/go-resty/resty/v2/LICENSE | 21 - vendor/github.com/go-resty/resty/v2/README.md | 944 - vendor/github.com/go-resty/resty/v2/WORKSPACE | 31 - vendor/github.com/go-resty/resty/v2/client.go | 1486 - vendor/github.com/go-resty/resty/v2/digest.go | 327 - .../go-resty/resty/v2/middleware.go | 612 - .../github.com/go-resty/resty/v2/redirect.go | 106 - .../github.com/go-resty/resty/v2/request.go | 1176 - .../github.com/go-resty/resty/v2/response.go | 195 - vendor/github.com/go-resty/resty/v2/resty.go | 40 - vendor/github.com/go-resty/resty/v2/retry.go | 252 - .../go-resty/resty/v2/shellescape/BUILD.bazel | 14 - .../resty/v2/shellescape/shellescape.go | 40 - vendor/github.com/go-resty/resty/v2/trace.go | 124 - .../github.com/go-resty/resty/v2/transport.go | 36 - .../go-resty/resty/v2/transport112.go | 35 - .../go-resty/resty/v2/transport_js.go | 17 - .../go-resty/resty/v2/transport_other.go | 17 - vendor/github.com/go-resty/resty/v2/util.go | 406 - .../github.com/go-resty/resty/v2/util_curl.go | 78 - vendor/github.com/golang/protobuf/AUTHORS | 3 - .../github.com/golang/protobuf/CONTRIBUTORS | 3 - vendor/github.com/golang/protobuf/LICENSE | 28 - .../golang/protobuf/proto/buffer.go | 324 - .../golang/protobuf/proto/defaults.go | 63 - .../golang/protobuf/proto/deprecated.go | 113 - .../golang/protobuf/proto/discard.go | 58 - .../golang/protobuf/proto/extensions.go | 356 - .../golang/protobuf/proto/properties.go | 306 - .../github.com/golang/protobuf/proto/proto.go | 167 - .../golang/protobuf/proto/registry.go | 317 - .../golang/protobuf/proto/text_decode.go | 801 - .../golang/protobuf/proto/text_encode.go | 560 - .../github.com/golang/protobuf/proto/wire.go | 78 - .../golang/protobuf/proto/wrappers.go | 34 - .../github.com/jaytaylor/html2text/.gitignore | 24 - .../jaytaylor/html2text/.travis.yml | 13 - vendor/github.com/jaytaylor/html2text/LICENSE | 22 - .../github.com/jaytaylor/html2text/README.md | 143 - .../jaytaylor/html2text/html2text.go | 548 - vendor/github.com/levigross/exp-html/README | 1 - vendor/github.com/levigross/exp-html/const.go | 100 - vendor/github.com/levigross/exp-html/doc.go | 107 - .../github.com/levigross/exp-html/doctype.go | 156 - .../github.com/levigross/exp-html/entity.go | 2253 - .../github.com/levigross/exp-html/escape.go | 253 - .../github.com/levigross/exp-html/foreign.go | 132 - vendor/github.com/levigross/exp-html/node.go | 154 - vendor/github.com/levigross/exp-html/parse.go | 1869 - .../github.com/levigross/exp-html/render.go | 277 - vendor/github.com/levigross/exp-html/token.go | 779 - vendor/github.com/mattn/go-runewidth/LICENSE | 21 - .../github.com/mattn/go-runewidth/README.md | 27 - .../mattn/go-runewidth/runewidth.go | 358 - .../mattn/go-runewidth/runewidth_appengine.go | 9 - .../mattn/go-runewidth/runewidth_js.go | 9 - .../mattn/go-runewidth/runewidth_posix.go | 81 - .../mattn/go-runewidth/runewidth_table.go | 450 - .../mattn/go-runewidth/runewidth_windows.go | 28 - .../olekukonko/tablewriter/.gitignore | 15 - .../olekukonko/tablewriter/.travis.yml | 22 - .../olekukonko/tablewriter/LICENSE.md | 19 - .../olekukonko/tablewriter/README.md | 431 - .../github.com/olekukonko/tablewriter/csv.go | 52 - .../olekukonko/tablewriter/table.go | 967 - .../tablewriter/table_with_color.go | 136 - .../github.com/olekukonko/tablewriter/util.go | 93 - .../github.com/olekukonko/tablewriter/wrap.go | 99 - .../otiai10/gosseract/v2/.dockerignore | 1 - .../otiai10/gosseract/v2/.gitignore | 42 - .../otiai10/gosseract/v2/CODE_OF_CONDUCT.md | 46 - .../otiai10/gosseract/v2/Dockerfile | 42 - .../otiai10/gosseract/v2/ISSUE_TEMPLATE.md | 43 - .../github.com/otiai10/gosseract/v2/LICENSE | 21 - .../github.com/otiai10/gosseract/v2/README.md | 67 - .../github.com/otiai10/gosseract/v2/client.go | 426 - .../otiai10/gosseract/v2/constant.go | 78 - .../github.com/otiai10/gosseract/v2/hocr.go | 49 - .../gosseract/v2/preprocessflags_freebsd.go | 4 - .../otiai10/gosseract/v2/preprocessflags_x.go | 7 - .../otiai10/gosseract/v2/tessbridge.cpp | 230 - .../otiai10/gosseract/v2/tessbridge.h | 43 - vendor/github.com/pkg/errors/.gitignore | 24 - vendor/github.com/pkg/errors/.travis.yml | 10 - vendor/github.com/pkg/errors/LICENSE | 23 - vendor/github.com/pkg/errors/Makefile | 44 - vendor/github.com/pkg/errors/README.md | 59 - vendor/github.com/pkg/errors/appveyor.yml | 32 - vendor/github.com/pkg/errors/errors.go | 288 - vendor/github.com/pkg/errors/go113.go | 38 - vendor/github.com/pkg/errors/stack.go | 177 - vendor/github.com/rivo/uniseg/LICENSE.txt | 21 - vendor/github.com/rivo/uniseg/README.md | 137 - vendor/github.com/rivo/uniseg/doc.go | 108 - .../github.com/rivo/uniseg/eastasianwidth.go | 2588 - .../rivo/uniseg/emojipresentation.go | 295 - .../github.com/rivo/uniseg/gen_breaktest.go | 215 - .../github.com/rivo/uniseg/gen_properties.go | 261 - vendor/github.com/rivo/uniseg/grapheme.go | 331 - .../rivo/uniseg/graphemeproperties.go | 1915 - .../github.com/rivo/uniseg/graphemerules.go | 176 - vendor/github.com/rivo/uniseg/line.go | 134 - .../github.com/rivo/uniseg/lineproperties.go | 3554 -- vendor/github.com/rivo/uniseg/linerules.go | 626 - vendor/github.com/rivo/uniseg/properties.go | 208 - vendor/github.com/rivo/uniseg/sentence.go | 90 - .../rivo/uniseg/sentenceproperties.go | 2845 - .../github.com/rivo/uniseg/sentencerules.go | 276 - vendor/github.com/rivo/uniseg/step.go | 242 - vendor/github.com/rivo/uniseg/width.go | 61 - vendor/github.com/rivo/uniseg/word.go | 89 - .../github.com/rivo/uniseg/wordproperties.go | 1883 - vendor/github.com/rivo/uniseg/wordrules.go | 282 - vendor/github.com/ssor/bom/.travis.yml | 14 - vendor/github.com/ssor/bom/LICENSE | 21 - vendor/github.com/ssor/bom/README.md | 23 - vendor/github.com/ssor/bom/bom.go | 33 - vendor/golang.org/x/net/LICENSE | 27 - vendor/golang.org/x/net/PATENTS | 22 - vendor/golang.org/x/net/html/atom/atom.go | 78 - vendor/golang.org/x/net/html/atom/table.go | 783 - .../golang.org/x/net/html/charset/charset.go | 257 - vendor/golang.org/x/net/html/const.go | 111 - vendor/golang.org/x/net/html/doc.go | 127 - vendor/golang.org/x/net/html/doctype.go | 156 - vendor/golang.org/x/net/html/entity.go | 2253 - vendor/golang.org/x/net/html/escape.go | 339 - vendor/golang.org/x/net/html/foreign.go | 222 - vendor/golang.org/x/net/html/node.go | 225 - vendor/golang.org/x/net/html/parse.go | 2460 - vendor/golang.org/x/net/html/render.go | 293 - vendor/golang.org/x/net/html/token.go | 1272 - .../x/net/publicsuffix/data/children | Bin 2976 -> 0 bytes .../golang.org/x/net/publicsuffix/data/nodes | Bin 46610 -> 0 bytes .../golang.org/x/net/publicsuffix/data/text | 1 - vendor/golang.org/x/net/publicsuffix/list.go | 203 - vendor/golang.org/x/net/publicsuffix/table.go | 70 - vendor/golang.org/x/text/LICENSE | 27 - vendor/golang.org/x/text/PATENTS | 22 - .../x/text/encoding/charmap/charmap.go | 249 - .../x/text/encoding/charmap/tables.go | 7410 --- vendor/golang.org/x/text/encoding/encoding.go | 335 - .../x/text/encoding/htmlindex/htmlindex.go | 86 - .../x/text/encoding/htmlindex/map.go | 105 - .../x/text/encoding/htmlindex/tables.go | 362 - .../internal/identifier/identifier.go | 81 - .../text/encoding/internal/identifier/mib.go | 1627 - .../x/text/encoding/internal/internal.go | 75 - .../x/text/encoding/japanese/all.go | 12 - .../x/text/encoding/japanese/eucjp.go | 225 - .../x/text/encoding/japanese/iso2022jp.go | 299 - .../x/text/encoding/japanese/shiftjis.go | 189 - .../x/text/encoding/japanese/tables.go | 26971 ---------- .../x/text/encoding/korean/euckr.go | 177 - .../x/text/encoding/korean/tables.go | 34152 ------------ .../x/text/encoding/simplifiedchinese/all.go | 12 - .../x/text/encoding/simplifiedchinese/gbk.go | 273 - .../encoding/simplifiedchinese/hzgb2312.go | 245 - .../text/encoding/simplifiedchinese/tables.go | 43999 ---------------- .../text/encoding/traditionalchinese/big5.go | 199 - .../encoding/traditionalchinese/tables.go | 37142 ------------- .../x/text/encoding/unicode/override.go | 82 - .../x/text/encoding/unicode/unicode.go | 512 - .../x/text/internal/language/common.go | 16 - .../x/text/internal/language/compact.go | 29 - .../text/internal/language/compact/compact.go | 61 - .../internal/language/compact/language.go | 260 - .../text/internal/language/compact/parents.go | 120 - .../text/internal/language/compact/tables.go | 1015 - .../x/text/internal/language/compact/tags.go | 91 - .../x/text/internal/language/compose.go | 167 - .../x/text/internal/language/coverage.go | 28 - .../x/text/internal/language/language.go | 627 - .../x/text/internal/language/lookup.go | 412 - .../x/text/internal/language/match.go | 226 - .../x/text/internal/language/parse.go | 608 - .../x/text/internal/language/tables.go | 3494 -- .../x/text/internal/language/tags.go | 48 - vendor/golang.org/x/text/internal/tag/tag.go | 100 - .../internal/utf8internal/utf8internal.go | 87 - vendor/golang.org/x/text/language/coverage.go | 187 - vendor/golang.org/x/text/language/doc.go | 98 - vendor/golang.org/x/text/language/language.go | 605 - vendor/golang.org/x/text/language/match.go | 735 - vendor/golang.org/x/text/language/parse.go | 256 - vendor/golang.org/x/text/language/tables.go | 298 - vendor/golang.org/x/text/language/tags.go | 145 - vendor/golang.org/x/text/runes/cond.go | 187 - vendor/golang.org/x/text/runes/runes.go | 355 - .../golang.org/x/text/transform/transform.go | 709 - vendor/google.golang.org/protobuf/LICENSE | 27 - vendor/google.golang.org/protobuf/PATENTS | 22 - .../protobuf/encoding/prototext/decode.go | 772 - .../protobuf/encoding/prototext/doc.go | 7 - .../protobuf/encoding/prototext/encode.go | 380 - .../protobuf/encoding/protowire/wire.go | 547 - .../protobuf/internal/descfmt/stringer.go | 414 - .../protobuf/internal/descopts/options.go | 29 - .../protobuf/internal/detrand/rand.go | 69 - .../internal/editiondefaults/defaults.go | 12 - .../editiondefaults/editions_defaults.binpb | Bin 93 -> 0 bytes .../internal/editionssupport/editions.go | 13 - .../internal/encoding/defval/default.go | 213 - .../encoding/messageset/messageset.go | 242 - .../protobuf/internal/encoding/tag/tag.go | 207 - .../protobuf/internal/encoding/text/decode.go | 686 - .../internal/encoding/text/decode_number.go | 211 - .../internal/encoding/text/decode_string.go | 161 - .../internal/encoding/text/decode_token.go | 373 - .../protobuf/internal/encoding/text/doc.go | 29 - .../protobuf/internal/encoding/text/encode.go | 272 - .../protobuf/internal/errors/errors.go | 104 - .../protobuf/internal/errors/is_go112.go | 40 - .../protobuf/internal/errors/is_go113.go | 13 - .../protobuf/internal/filedesc/build.go | 157 - .../protobuf/internal/filedesc/desc.go | 737 - .../protobuf/internal/filedesc/desc_init.go | 560 - .../protobuf/internal/filedesc/desc_lazy.go | 703 - .../protobuf/internal/filedesc/desc_list.go | 457 - .../internal/filedesc/desc_list_gen.go | 367 - .../protobuf/internal/filedesc/editions.go | 156 - .../protobuf/internal/filedesc/placeholder.go | 110 - .../protobuf/internal/filetype/build.go | 296 - .../protobuf/internal/flags/flags.go | 24 - .../internal/flags/proto_legacy_disable.go | 10 - .../internal/flags/proto_legacy_enable.go | 10 - .../protobuf/internal/genid/any_gen.go | 34 - .../protobuf/internal/genid/api_gen.go | 106 - .../protobuf/internal/genid/descriptor_gen.go | 1270 - .../protobuf/internal/genid/doc.go | 11 - .../protobuf/internal/genid/duration_gen.go | 34 - .../protobuf/internal/genid/empty_gen.go | 19 - .../protobuf/internal/genid/field_mask_gen.go | 31 - .../internal/genid/go_features_gen.go | 36 - .../protobuf/internal/genid/goname.go | 25 - .../protobuf/internal/genid/map_entry.go | 16 - .../internal/genid/source_context_gen.go | 31 - .../protobuf/internal/genid/struct_gen.go | 121 - .../protobuf/internal/genid/timestamp_gen.go | 34 - .../protobuf/internal/genid/type_gen.go | 228 - .../protobuf/internal/genid/wrappers.go | 13 - .../protobuf/internal/genid/wrappers_gen.go | 175 - .../protobuf/internal/impl/api_export.go | 177 - .../protobuf/internal/impl/checkinit.go | 141 - .../protobuf/internal/impl/codec_extension.go | 228 - .../protobuf/internal/impl/codec_field.go | 863 - .../protobuf/internal/impl/codec_gen.go | 5724 -- .../protobuf/internal/impl/codec_map.go | 399 - .../protobuf/internal/impl/codec_map_go111.go | 38 - .../protobuf/internal/impl/codec_map_go112.go | 12 - .../protobuf/internal/impl/codec_message.go | 220 - .../internal/impl/codec_messageset.go | 145 - .../protobuf/internal/impl/codec_tables.go | 557 - .../protobuf/internal/impl/codec_unsafe.go | 15 - .../protobuf/internal/impl/convert.go | 495 - .../protobuf/internal/impl/convert_list.go | 141 - .../protobuf/internal/impl/convert_map.go | 121 - .../protobuf/internal/impl/decode.go | 285 - .../protobuf/internal/impl/encode.go | 237 - .../protobuf/internal/impl/enum.go | 21 - .../protobuf/internal/impl/equal.go | 224 - .../protobuf/internal/impl/extension.go | 156 - .../protobuf/internal/impl/legacy_enum.go | 219 - .../protobuf/internal/impl/legacy_export.go | 92 - .../internal/impl/legacy_extension.go | 177 - .../protobuf/internal/impl/legacy_file.go | 81 - .../protobuf/internal/impl/legacy_message.go | 572 - .../protobuf/internal/impl/merge.go | 176 - .../protobuf/internal/impl/merge_gen.go | 209 - .../protobuf/internal/impl/message.go | 284 - .../protobuf/internal/impl/message_reflect.go | 462 - .../internal/impl/message_reflect_field.go | 543 - .../internal/impl/message_reflect_gen.go | 271 - .../protobuf/internal/impl/pointer_unsafe.go | 212 - .../protobuf/internal/impl/validate.go | 576 - .../protobuf/internal/impl/weak.go | 74 - .../protobuf/internal/order/order.go | 89 - .../protobuf/internal/order/range.go | 115 - .../protobuf/internal/pragma/pragma.go | 29 - .../protobuf/internal/set/ints.go | 58 - .../protobuf/internal/strs/strings.go | 196 - .../internal/strs/strings_unsafe_go120.go | 94 - .../internal/strs/strings_unsafe_go121.go | 73 - .../protobuf/internal/version/version.go | 79 - .../protobuf/proto/checkinit.go | 71 - .../protobuf/proto/decode.go | 296 - .../protobuf/proto/decode_gen.go | 603 - .../google.golang.org/protobuf/proto/doc.go | 86 - .../protobuf/proto/encode.go | 354 - .../protobuf/proto/encode_gen.go | 97 - .../google.golang.org/protobuf/proto/equal.go | 66 - .../protobuf/proto/extension.go | 166 - .../google.golang.org/protobuf/proto/merge.go | 139 - .../protobuf/proto/messageset.go | 98 - .../google.golang.org/protobuf/proto/proto.go | 45 - .../protobuf/proto/proto_methods.go | 20 - .../protobuf/proto/proto_reflect.go | 20 - .../google.golang.org/protobuf/proto/reset.go | 43 - .../google.golang.org/protobuf/proto/size.go | 103 - .../protobuf/proto/size_gen.go | 55 - .../protobuf/proto/wrappers.go | 29 - .../protobuf/reflect/protodesc/desc.go | 286 - .../protobuf/reflect/protodesc/desc_init.go | 289 - .../reflect/protodesc/desc_resolve.go | 291 - .../reflect/protodesc/desc_validate.go | 371 - .../protobuf/reflect/protodesc/editions.go | 145 - .../protobuf/reflect/protodesc/proto.go | 274 - .../protobuf/reflect/protoreflect/methods.go | 88 - .../protobuf/reflect/protoreflect/proto.go | 513 - .../protobuf/reflect/protoreflect/source.go | 129 - .../reflect/protoreflect/source_gen.go | 573 - .../protobuf/reflect/protoreflect/type.go | 672 - .../protobuf/reflect/protoreflect/value.go | 285 - .../reflect/protoreflect/value_equal.go | 168 - .../reflect/protoreflect/value_union.go | 438 - .../protoreflect/value_unsafe_go120.go | 98 - .../protoreflect/value_unsafe_go121.go | 86 - .../reflect/protoregistry/registry.go | 882 - .../protobuf/runtime/protoiface/legacy.go | 15 - .../protobuf/runtime/protoiface/methods.go | 186 - .../protobuf/runtime/protoimpl/impl.go | 44 - .../protobuf/runtime/protoimpl/version.go | 60 - .../types/descriptorpb/descriptor.pb.go | 5341 -- .../types/gofeaturespb/go_features.pb.go | 165 - vendor/modules.txt | 109 - 409 files changed, 268893 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .travis.yml delete mode 100644 Makefile delete mode 100755 build.sh delete mode 100644 vendor/github.com/JalfResi/justext/.gitignore delete mode 100644 vendor/github.com/JalfResi/justext/LICENSE delete mode 100644 vendor/github.com/JalfResi/justext/README.md delete mode 100644 vendor/github.com/JalfResi/justext/TODO.txt delete mode 100644 vendor/github.com/JalfResi/justext/classifyParagraphs.go delete mode 100644 vendor/github.com/JalfResi/justext/defaultTemplate.go delete mode 100644 vendor/github.com/JalfResi/justext/detailedTemplate.go delete mode 100644 vendor/github.com/JalfResi/justext/htmlRenderer.go delete mode 100644 vendor/github.com/JalfResi/justext/paragraphObjectModel.go delete mode 100644 vendor/github.com/JalfResi/justext/preprocess.go delete mode 100644 vendor/github.com/JalfResi/justext/reader.go delete mode 100644 vendor/github.com/JalfResi/justext/reviseParagraphClassification.go delete mode 100644 vendor/github.com/JalfResi/justext/stoplists.go delete mode 100644 vendor/github.com/JalfResi/justext/writer.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/.gitattributes delete mode 100644 vendor/github.com/PuerkitoBio/goquery/.gitignore delete mode 100644 vendor/github.com/PuerkitoBio/goquery/LICENSE delete mode 100644 vendor/github.com/PuerkitoBio/goquery/README.md delete mode 100644 vendor/github.com/PuerkitoBio/goquery/array.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/doc.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/expand.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/filter.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/iteration.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/manipulation.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/property.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/query.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/traversal.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/type.go delete mode 100644 vendor/github.com/PuerkitoBio/goquery/utilities.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/.gitignore delete mode 100644 vendor/github.com/advancedlogic/GoOse/.travis.yml delete mode 100644 vendor/github.com/advancedlogic/GoOse/Gopkg.lock delete mode 100644 vendor/github.com/advancedlogic/GoOse/Gopkg.toml delete mode 100644 vendor/github.com/advancedlogic/GoOse/LICENSE delete mode 100644 vendor/github.com/advancedlogic/GoOse/Makefile delete mode 100644 vendor/github.com/advancedlogic/GoOse/README.md delete mode 100644 vendor/github.com/advancedlogic/GoOse/VERSION delete mode 100644 vendor/github.com/advancedlogic/GoOse/article.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/charset.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/cleaner.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/configuration.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/coverage.sh delete mode 100644 vendor/github.com/advancedlogic/GoOse/crawler.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/crawlershort.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/doc.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/extractor.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/goose.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/goose.json delete mode 100644 vendor/github.com/advancedlogic/GoOse/html.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/images.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/outputformatter.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/parser.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/stopwords.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/videos.go delete mode 100644 vendor/github.com/advancedlogic/GoOse/wordstats.go delete mode 100644 vendor/github.com/andybalholm/cascadia/.travis.yml delete mode 100644 vendor/github.com/andybalholm/cascadia/LICENSE delete mode 100644 vendor/github.com/andybalholm/cascadia/README.md delete mode 100644 vendor/github.com/andybalholm/cascadia/parser.go delete mode 100644 vendor/github.com/andybalholm/cascadia/pseudo_classes.go delete mode 100644 vendor/github.com/andybalholm/cascadia/selector.go delete mode 100644 vendor/github.com/andybalholm/cascadia/serialize.go delete mode 100644 vendor/github.com/andybalholm/cascadia/specificity.go delete mode 100644 vendor/github.com/araddon/dateparse/.travis.yml delete mode 100644 vendor/github.com/araddon/dateparse/LICENSE delete mode 100644 vendor/github.com/araddon/dateparse/README.md delete mode 100644 vendor/github.com/araddon/dateparse/parseany.go delete mode 100644 vendor/github.com/fatih/set/.travis.yml delete mode 100644 vendor/github.com/fatih/set/LICENSE.md delete mode 100644 vendor/github.com/fatih/set/README.md delete mode 100644 vendor/github.com/fatih/set/set.go delete mode 100644 vendor/github.com/fatih/set/set_nots.go delete mode 100644 vendor/github.com/fatih/set/set_ts.go delete mode 100644 vendor/github.com/gigawattio/window/.gitignore delete mode 100644 vendor/github.com/gigawattio/window/.travis.yml delete mode 100644 vendor/github.com/gigawattio/window/LICENSE delete mode 100644 vendor/github.com/gigawattio/window/README.md delete mode 100644 vendor/github.com/gigawattio/window/rolling.go delete mode 100644 vendor/github.com/go-resty/resty/v2/.gitignore delete mode 100644 vendor/github.com/go-resty/resty/v2/BUILD.bazel delete mode 100644 vendor/github.com/go-resty/resty/v2/LICENSE delete mode 100644 vendor/github.com/go-resty/resty/v2/README.md delete mode 100644 vendor/github.com/go-resty/resty/v2/WORKSPACE delete mode 100644 vendor/github.com/go-resty/resty/v2/client.go delete mode 100644 vendor/github.com/go-resty/resty/v2/digest.go delete mode 100644 vendor/github.com/go-resty/resty/v2/middleware.go delete mode 100644 vendor/github.com/go-resty/resty/v2/redirect.go delete mode 100644 vendor/github.com/go-resty/resty/v2/request.go delete mode 100644 vendor/github.com/go-resty/resty/v2/response.go delete mode 100644 vendor/github.com/go-resty/resty/v2/resty.go delete mode 100644 vendor/github.com/go-resty/resty/v2/retry.go delete mode 100644 vendor/github.com/go-resty/resty/v2/shellescape/BUILD.bazel delete mode 100644 vendor/github.com/go-resty/resty/v2/shellescape/shellescape.go delete mode 100644 vendor/github.com/go-resty/resty/v2/trace.go delete mode 100644 vendor/github.com/go-resty/resty/v2/transport.go delete mode 100644 vendor/github.com/go-resty/resty/v2/transport112.go delete mode 100644 vendor/github.com/go-resty/resty/v2/transport_js.go delete mode 100644 vendor/github.com/go-resty/resty/v2/transport_other.go delete mode 100644 vendor/github.com/go-resty/resty/v2/util.go delete mode 100644 vendor/github.com/go-resty/resty/v2/util_curl.go delete mode 100644 vendor/github.com/golang/protobuf/AUTHORS delete mode 100644 vendor/github.com/golang/protobuf/CONTRIBUTORS delete mode 100644 vendor/github.com/golang/protobuf/LICENSE delete mode 100644 vendor/github.com/golang/protobuf/proto/buffer.go delete mode 100644 vendor/github.com/golang/protobuf/proto/defaults.go delete mode 100644 vendor/github.com/golang/protobuf/proto/deprecated.go delete mode 100644 vendor/github.com/golang/protobuf/proto/discard.go delete mode 100644 vendor/github.com/golang/protobuf/proto/extensions.go delete mode 100644 vendor/github.com/golang/protobuf/proto/properties.go delete mode 100644 vendor/github.com/golang/protobuf/proto/proto.go delete mode 100644 vendor/github.com/golang/protobuf/proto/registry.go delete mode 100644 vendor/github.com/golang/protobuf/proto/text_decode.go delete mode 100644 vendor/github.com/golang/protobuf/proto/text_encode.go delete mode 100644 vendor/github.com/golang/protobuf/proto/wire.go delete mode 100644 vendor/github.com/golang/protobuf/proto/wrappers.go delete mode 100644 vendor/github.com/jaytaylor/html2text/.gitignore delete mode 100644 vendor/github.com/jaytaylor/html2text/.travis.yml delete mode 100644 vendor/github.com/jaytaylor/html2text/LICENSE delete mode 100644 vendor/github.com/jaytaylor/html2text/README.md delete mode 100644 vendor/github.com/jaytaylor/html2text/html2text.go delete mode 100644 vendor/github.com/levigross/exp-html/README delete mode 100644 vendor/github.com/levigross/exp-html/const.go delete mode 100644 vendor/github.com/levigross/exp-html/doc.go delete mode 100644 vendor/github.com/levigross/exp-html/doctype.go delete mode 100644 vendor/github.com/levigross/exp-html/entity.go delete mode 100644 vendor/github.com/levigross/exp-html/escape.go delete mode 100644 vendor/github.com/levigross/exp-html/foreign.go delete mode 100644 vendor/github.com/levigross/exp-html/node.go delete mode 100644 vendor/github.com/levigross/exp-html/parse.go delete mode 100644 vendor/github.com/levigross/exp-html/render.go delete mode 100644 vendor/github.com/levigross/exp-html/token.go delete mode 100644 vendor/github.com/mattn/go-runewidth/LICENSE delete mode 100644 vendor/github.com/mattn/go-runewidth/README.md delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth.go delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth_appengine.go delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth_js.go delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth_posix.go delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth_table.go delete mode 100644 vendor/github.com/mattn/go-runewidth/runewidth_windows.go delete mode 100644 vendor/github.com/olekukonko/tablewriter/.gitignore delete mode 100644 vendor/github.com/olekukonko/tablewriter/.travis.yml delete mode 100644 vendor/github.com/olekukonko/tablewriter/LICENSE.md delete mode 100644 vendor/github.com/olekukonko/tablewriter/README.md delete mode 100644 vendor/github.com/olekukonko/tablewriter/csv.go delete mode 100644 vendor/github.com/olekukonko/tablewriter/table.go delete mode 100644 vendor/github.com/olekukonko/tablewriter/table_with_color.go delete mode 100644 vendor/github.com/olekukonko/tablewriter/util.go delete mode 100644 vendor/github.com/olekukonko/tablewriter/wrap.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/.dockerignore delete mode 100644 vendor/github.com/otiai10/gosseract/v2/.gitignore delete mode 100644 vendor/github.com/otiai10/gosseract/v2/CODE_OF_CONDUCT.md delete mode 100644 vendor/github.com/otiai10/gosseract/v2/Dockerfile delete mode 100644 vendor/github.com/otiai10/gosseract/v2/ISSUE_TEMPLATE.md delete mode 100644 vendor/github.com/otiai10/gosseract/v2/LICENSE delete mode 100644 vendor/github.com/otiai10/gosseract/v2/README.md delete mode 100644 vendor/github.com/otiai10/gosseract/v2/client.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/constant.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/hocr.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/preprocessflags_freebsd.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/preprocessflags_x.go delete mode 100644 vendor/github.com/otiai10/gosseract/v2/tessbridge.cpp delete mode 100644 vendor/github.com/otiai10/gosseract/v2/tessbridge.h delete mode 100644 vendor/github.com/pkg/errors/.gitignore delete mode 100644 vendor/github.com/pkg/errors/.travis.yml delete mode 100644 vendor/github.com/pkg/errors/LICENSE delete mode 100644 vendor/github.com/pkg/errors/Makefile delete mode 100644 vendor/github.com/pkg/errors/README.md delete mode 100644 vendor/github.com/pkg/errors/appveyor.yml delete mode 100644 vendor/github.com/pkg/errors/errors.go delete mode 100644 vendor/github.com/pkg/errors/go113.go delete mode 100644 vendor/github.com/pkg/errors/stack.go delete mode 100644 vendor/github.com/rivo/uniseg/LICENSE.txt delete mode 100644 vendor/github.com/rivo/uniseg/README.md delete mode 100644 vendor/github.com/rivo/uniseg/doc.go delete mode 100644 vendor/github.com/rivo/uniseg/eastasianwidth.go delete mode 100644 vendor/github.com/rivo/uniseg/emojipresentation.go delete mode 100644 vendor/github.com/rivo/uniseg/gen_breaktest.go delete mode 100644 vendor/github.com/rivo/uniseg/gen_properties.go delete mode 100644 vendor/github.com/rivo/uniseg/grapheme.go delete mode 100644 vendor/github.com/rivo/uniseg/graphemeproperties.go delete mode 100644 vendor/github.com/rivo/uniseg/graphemerules.go delete mode 100644 vendor/github.com/rivo/uniseg/line.go delete mode 100644 vendor/github.com/rivo/uniseg/lineproperties.go delete mode 100644 vendor/github.com/rivo/uniseg/linerules.go delete mode 100644 vendor/github.com/rivo/uniseg/properties.go delete mode 100644 vendor/github.com/rivo/uniseg/sentence.go delete mode 100644 vendor/github.com/rivo/uniseg/sentenceproperties.go delete mode 100644 vendor/github.com/rivo/uniseg/sentencerules.go delete mode 100644 vendor/github.com/rivo/uniseg/step.go delete mode 100644 vendor/github.com/rivo/uniseg/width.go delete mode 100644 vendor/github.com/rivo/uniseg/word.go delete mode 100644 vendor/github.com/rivo/uniseg/wordproperties.go delete mode 100644 vendor/github.com/rivo/uniseg/wordrules.go delete mode 100644 vendor/github.com/ssor/bom/.travis.yml delete mode 100644 vendor/github.com/ssor/bom/LICENSE delete mode 100644 vendor/github.com/ssor/bom/README.md delete mode 100644 vendor/github.com/ssor/bom/bom.go delete mode 100644 vendor/golang.org/x/net/LICENSE delete mode 100644 vendor/golang.org/x/net/PATENTS delete mode 100644 vendor/golang.org/x/net/html/atom/atom.go delete mode 100644 vendor/golang.org/x/net/html/atom/table.go delete mode 100644 vendor/golang.org/x/net/html/charset/charset.go delete mode 100644 vendor/golang.org/x/net/html/const.go delete mode 100644 vendor/golang.org/x/net/html/doc.go delete mode 100644 vendor/golang.org/x/net/html/doctype.go delete mode 100644 vendor/golang.org/x/net/html/entity.go delete mode 100644 vendor/golang.org/x/net/html/escape.go delete mode 100644 vendor/golang.org/x/net/html/foreign.go delete mode 100644 vendor/golang.org/x/net/html/node.go delete mode 100644 vendor/golang.org/x/net/html/parse.go delete mode 100644 vendor/golang.org/x/net/html/render.go delete mode 100644 vendor/golang.org/x/net/html/token.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/data/children delete mode 100644 vendor/golang.org/x/net/publicsuffix/data/nodes delete mode 100644 vendor/golang.org/x/net/publicsuffix/data/text delete mode 100644 vendor/golang.org/x/net/publicsuffix/list.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/table.go delete mode 100644 vendor/golang.org/x/text/LICENSE delete mode 100644 vendor/golang.org/x/text/PATENTS delete mode 100644 vendor/golang.org/x/text/encoding/charmap/charmap.go delete mode 100644 vendor/golang.org/x/text/encoding/charmap/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/encoding.go delete mode 100644 vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go delete mode 100644 vendor/golang.org/x/text/encoding/htmlindex/map.go delete mode 100644 vendor/golang.org/x/text/encoding/htmlindex/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/identifier/identifier.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/identifier/mib.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/internal.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/all.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/eucjp.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/iso2022jp.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/shiftjis.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/korean/euckr.go delete mode 100644 vendor/golang.org/x/text/encoding/korean/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/all.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/traditionalchinese/big5.go delete mode 100644 vendor/golang.org/x/text/encoding/traditionalchinese/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/unicode/override.go delete mode 100644 vendor/golang.org/x/text/encoding/unicode/unicode.go delete mode 100644 vendor/golang.org/x/text/internal/language/common.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact/compact.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact/language.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact/parents.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact/tables.go delete mode 100644 vendor/golang.org/x/text/internal/language/compact/tags.go delete mode 100644 vendor/golang.org/x/text/internal/language/compose.go delete mode 100644 vendor/golang.org/x/text/internal/language/coverage.go delete mode 100644 vendor/golang.org/x/text/internal/language/language.go delete mode 100644 vendor/golang.org/x/text/internal/language/lookup.go delete mode 100644 vendor/golang.org/x/text/internal/language/match.go delete mode 100644 vendor/golang.org/x/text/internal/language/parse.go delete mode 100644 vendor/golang.org/x/text/internal/language/tables.go delete mode 100644 vendor/golang.org/x/text/internal/language/tags.go delete mode 100644 vendor/golang.org/x/text/internal/tag/tag.go delete mode 100644 vendor/golang.org/x/text/internal/utf8internal/utf8internal.go delete mode 100644 vendor/golang.org/x/text/language/coverage.go delete mode 100644 vendor/golang.org/x/text/language/doc.go delete mode 100644 vendor/golang.org/x/text/language/language.go delete mode 100644 vendor/golang.org/x/text/language/match.go delete mode 100644 vendor/golang.org/x/text/language/parse.go delete mode 100644 vendor/golang.org/x/text/language/tables.go delete mode 100644 vendor/golang.org/x/text/language/tags.go delete mode 100644 vendor/golang.org/x/text/runes/cond.go delete mode 100644 vendor/golang.org/x/text/runes/runes.go delete mode 100644 vendor/golang.org/x/text/transform/transform.go delete mode 100644 vendor/google.golang.org/protobuf/LICENSE delete mode 100644 vendor/google.golang.org/protobuf/PATENTS delete mode 100644 vendor/google.golang.org/protobuf/encoding/prototext/decode.go delete mode 100644 vendor/google.golang.org/protobuf/encoding/prototext/doc.go delete mode 100644 vendor/google.golang.org/protobuf/encoding/prototext/encode.go delete mode 100644 vendor/google.golang.org/protobuf/encoding/protowire/wire.go delete mode 100644 vendor/google.golang.org/protobuf/internal/descfmt/stringer.go delete mode 100644 vendor/google.golang.org/protobuf/internal/descopts/options.go delete mode 100644 vendor/google.golang.org/protobuf/internal/detrand/rand.go delete mode 100644 vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go delete mode 100644 vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb delete mode 100644 vendor/google.golang.org/protobuf/internal/editionssupport/editions.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/defval/default.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/decode.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/doc.go delete mode 100644 vendor/google.golang.org/protobuf/internal/encoding/text/encode.go delete mode 100644 vendor/google.golang.org/protobuf/internal/errors/errors.go delete mode 100644 vendor/google.golang.org/protobuf/internal/errors/is_go112.go delete mode 100644 vendor/google.golang.org/protobuf/internal/errors/is_go113.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/build.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/desc.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/editions.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go delete mode 100644 vendor/google.golang.org/protobuf/internal/filetype/build.go delete mode 100644 vendor/google.golang.org/protobuf/internal/flags/flags.go delete mode 100644 vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go delete mode 100644 vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/any_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/api_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/doc.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/duration_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/empty_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/goname.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/map_entry.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/struct_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/type_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/wrappers.go delete mode 100644 vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/api_export.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/checkinit.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_extension.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_field.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_map.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_message.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_tables.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/convert.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/convert_list.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/convert_map.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/decode.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/encode.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/enum.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/equal.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/extension.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/legacy_export.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/legacy_file.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/legacy_message.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/merge.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/merge_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/message.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/message_reflect.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/validate.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/weak.go delete mode 100644 vendor/google.golang.org/protobuf/internal/order/order.go delete mode 100644 vendor/google.golang.org/protobuf/internal/order/range.go delete mode 100644 vendor/google.golang.org/protobuf/internal/pragma/pragma.go delete mode 100644 vendor/google.golang.org/protobuf/internal/set/ints.go delete mode 100644 vendor/google.golang.org/protobuf/internal/strs/strings.go delete mode 100644 vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go delete mode 100644 vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go delete mode 100644 vendor/google.golang.org/protobuf/internal/version/version.go delete mode 100644 vendor/google.golang.org/protobuf/proto/checkinit.go delete mode 100644 vendor/google.golang.org/protobuf/proto/decode.go delete mode 100644 vendor/google.golang.org/protobuf/proto/decode_gen.go delete mode 100644 vendor/google.golang.org/protobuf/proto/doc.go delete mode 100644 vendor/google.golang.org/protobuf/proto/encode.go delete mode 100644 vendor/google.golang.org/protobuf/proto/encode_gen.go delete mode 100644 vendor/google.golang.org/protobuf/proto/equal.go delete mode 100644 vendor/google.golang.org/protobuf/proto/extension.go delete mode 100644 vendor/google.golang.org/protobuf/proto/merge.go delete mode 100644 vendor/google.golang.org/protobuf/proto/messageset.go delete mode 100644 vendor/google.golang.org/protobuf/proto/proto.go delete mode 100644 vendor/google.golang.org/protobuf/proto/proto_methods.go delete mode 100644 vendor/google.golang.org/protobuf/proto/proto_reflect.go delete mode 100644 vendor/google.golang.org/protobuf/proto/reset.go delete mode 100644 vendor/google.golang.org/protobuf/proto/size.go delete mode 100644 vendor/google.golang.org/protobuf/proto/size_gen.go delete mode 100644 vendor/google.golang.org/protobuf/proto/wrappers.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/desc.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/editions.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/proto.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/source.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/type.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go delete mode 100644 vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go delete mode 100644 vendor/google.golang.org/protobuf/runtime/protoiface/methods.go delete mode 100644 vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go delete mode 100644 vendor/google.golang.org/protobuf/runtime/protoimpl/version.go delete mode 100644 vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go delete mode 100644 vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go delete mode 100644 vendor/modules.txt diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index a719e9f..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,99 +0,0 @@ -version: 2.1 - -executors: - amd64: - machine: - image: ubuntu-2404:2024.05.1 - resource_class: medium - - arm64: - machine: - image: ubuntu-2404:2024.05.1 - resource_class: arm.medium - -platforms: &platforms - - amd64 - - arm64 - -alpine: &alpine - - "3.20" - - "3.21" - -jobs: - build: - parameters: - executor: - type: string - alpine: - type: string - push: - type: boolean - default: true - machine: true - executor: << parameters.executor >> - steps: - - checkout - - run: - name: Build and Push - command: | - docker build --build-arg alpine_version=<< parameters.alpine >> -t docker.io/skpr/docconv:alpine<< parameters.alpine >>-<< parameters.executor >> . - - when: - condition: - equal: [ true, << parameters.push >> ] - steps: - - run: - name: "Push image" - command: | - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push docker.io/skpr/docconv:alpine<< parameters.alpine >>-<< parameters.executor >> - - manifest: - parameters: - alpine: - type: string - docker: - - image: docker:stable - steps: - - checkout - - setup_remote_docker: - docker_layer_caching: true - - run: - name: Push Manifest - command: | - export DOCKER_CLI_EXPERIMENTAL=enabled - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker manifest create docker.io/skpr/docconv:alpine<< parameters.alpine >> \ - --amend docker.io/skpr/docconv:alpine<< parameters.alpine >>-arm64 \ - --amend docker.io/skpr/docconv:alpine<< parameters.alpine >>-amd64 - docker manifest push docker.io/skpr/docconv:alpine<< parameters.alpine >> - -workflows: - test: - jobs: - - build: - filters: - branches: - ignore: master - matrix: - parameters: - executor: *platforms - alpine: *alpine - - release: - jobs: - - build: - filters: - branches: - only: master - matrix: - parameters: - executor: *platforms - alpine: *alpine - - - manifest: - matrix: - parameters: - alpine: *alpine - requires: - - build - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 19271c3..0000000 --- a/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -sudo: false -language: go -go: -- "1.13" -- "1.14" -- tip -go_import_path: code.sajari.com/docconv -notifications: - email: - - infra@sajari.com diff --git a/Makefile b/Makefile deleted file mode 100644 index 6faf69c..0000000 --- a/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/make -f - -IMAGE=docker.io/skpr/docconv - -define buildimage - docker build --build-arg alpine_version=$(1) -t $(IMAGE):alpine$(1) . -endef - -define pushimage - docker push $(IMAGE):alpine$(1) -endef - -build: - $(call buildimage,3.19) - $(call buildimage,3.20) - -push: - $(call pushimage,3.19) - $(call pushimage,3.20) diff --git a/build.sh b/build.sh deleted file mode 100755 index 02be979..0000000 --- a/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -VERSION=$1 - -apk add make cmake gcc g++ poppler-utils wv lynx tesseract-ocr-dev -go build -o dist/docconv-${VERSION} -tags ocr github.com/skpr/docconv/docd diff --git a/vendor/github.com/JalfResi/justext/.gitignore b/vendor/github.com/JalfResi/justext/.gitignore deleted file mode 100644 index 4a8c882..0000000 --- a/vendor/github.com/JalfResi/justext/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ - -src/_go_.6 - -src/_obj/ourscienceistight/gojustext.a - -src/example/_go_.6 - -src/example/gojustext - -src/main.go_old - -src/.DS_Store - -src/stoplists/.DS_Store - -src/example/*.html - -src/example/*.htm - -src/stoplists/*.txt - -src/example/hp-envy-14-spectre-review - -src/example/t.txt - -src/example/t2.txt - -gojustext - -gojustext.sublime-project - -gojustext.sublime-workspace diff --git a/vendor/github.com/JalfResi/justext/LICENSE b/vendor/github.com/JalfResi/justext/LICENSE deleted file mode 100644 index 45f543b..0000000 --- a/vendor/github.com/JalfResi/justext/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Ben Davies - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/JalfResi/justext/README.md b/vendor/github.com/JalfResi/justext/README.md deleted file mode 100644 index 5b0dcbb..0000000 --- a/vendor/github.com/JalfResi/justext/README.md +++ /dev/null @@ -1,48 +0,0 @@ -justext -======= - -A Go package that implements the JusText boilerplate removal algorithm (http://code.google.com/p/justext/) - -## Install - - go get github.com/JalfResi/justext - -And import: - - import "github.com/JalfResi/justext" - -## Usage - -Supports all stoplist files available at http://code.google.com/p/justext/source/browse/#svn%2Ftrunk%2Fjustext%2Fstoplists - -Justext expects valid HTML; it is your responsability to ensure that valid HTML is passed to Justext. To make things easier -I have written a CGO wrapper around libtidy which you can find here: [github.com/JalfResi/GoTidy](https://github.com/JalfResi/GoTidy) -In the future, once exp/html is part of the standard packages I will refactor JusText to accept only valid HTML documents/strings. - -Justext use the reader-writer idiom, alowing you to setup the reader with a common configuration and just pump out -articles to the writer. - -Example usage: - - // Create a justext reader from another reader - reader := justext.NewReader(os.Stdin) - - // Configure the reader - reader.LengthLow = 70 - reader.LengthHigh = 200 - reader.Stoplist = stoplist // The stoplist map[string]bool - reader.StopwordsLow = 0.3 - reader.StopwordsHigh = 0.32 - reader.MaxLinkDensity = 0.2 - reader.MaxHeadingDistance = 200 - reader.NoHeadings = false - - // Read from the reader to generate a paragraph set - paragraphSet, _ := reader.ReadAll() - - // Create a writer from another writer - writer := justext.NewWriter(os.Stdout) - // Write the paragraph set to the writer - writer.WriteAll(paragraphSet) - - diff --git a/vendor/github.com/JalfResi/justext/TODO.txt b/vendor/github.com/JalfResi/justext/TODO.txt deleted file mode 100644 index ef24a39..0000000 --- a/vendor/github.com/JalfResi/justext/TODO.txt +++ /dev/null @@ -1,3 +0,0 @@ -TODO -==== -- Stoplists need to be separtae subpackages (use the init() package method of registration) diff --git a/vendor/github.com/JalfResi/justext/classifyParagraphs.go b/vendor/github.com/JalfResi/justext/classifyParagraphs.go deleted file mode 100644 index bf61da5..0000000 --- a/vendor/github.com/JalfResi/justext/classifyParagraphs.go +++ /dev/null @@ -1,66 +0,0 @@ -package justext - -import ( - "regexp" - "strings" -) - -var findHeadings *regexp.Regexp = regexp.MustCompile("(^h[123456]|.h[123456])") -var copyrightChar *regexp.Regexp = regexp.MustCompile("(\u0161|©)") -var findSelect *regexp.Regexp = regexp.MustCompile("(^select|.select)") - -func classifyParagraphs(paragraphs []*Paragraph, stoplist map[string]bool, lengthLow int, lengthHigh int, stopwordsLow float64, stopwordsHigh float64, maxLinkDensity float64, noHeadings bool) { - for _, paragraph := range paragraphs { - var length int = len(paragraph.Text) - var stopwordCount int = 0 - for _, word := range strings.Split(paragraph.Text, " ") { - if _, ok := stoplist[word]; ok { - stopwordCount += 1 - } - } - - var stopwordDensity float64 = 0.0 - var linkDensity float64 = 0.0 - var wordCount int = paragraph.WordCount - - if wordCount > 0 { - stopwordDensity = 1.0 * float64(stopwordCount) / float64(wordCount) - linkDensity = float64(paragraph.LinkedCharCount) / float64(length) - } - - paragraph.StopwordCount = stopwordCount - paragraph.StopwordDensity = stopwordDensity - paragraph.LinkDensity = linkDensity - paragraph.Heading = bool(!noHeadings && findHeadings.MatchString(paragraph.DomPath)) - - if linkDensity > maxLinkDensity { - paragraph.CfClass = "bad" - } else if copyrightChar.MatchString(paragraph.Text) { - paragraph.CfClass = "bad" - } else if findSelect.MatchString(paragraph.DomPath) { - paragraph.CfClass = "bad" - } else { - if length < lengthLow { - if paragraph.LinkedCharCount > 0 { - paragraph.CfClass = "bad" - } else { - paragraph.CfClass = "short" - } - } else { - if stopwordDensity >= stopwordsHigh { - if length > lengthHigh { - paragraph.CfClass = "good" - } else { - paragraph.CfClass = "neargood" - } - } else { - if stopwordDensity >= stopwordsLow { - paragraph.CfClass = "neargood" - } else { - paragraph.CfClass = "bad" - } - } - } - } - } -} diff --git a/vendor/github.com/JalfResi/justext/defaultTemplate.go b/vendor/github.com/JalfResi/justext/defaultTemplate.go deleted file mode 100644 index 8d00f6a..0000000 --- a/vendor/github.com/JalfResi/justext/defaultTemplate.go +++ /dev/null @@ -1,50 +0,0 @@ -package justext - -import ( - "bytes" - "compress/gzip" - "io" - "reflect" - "unsafe" -) - -var _DefaultTemplate = "" + - "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x90\x3d\x6e\xc4\x20" + - "\x10\x46\x6b\xfb\x14\xc8\x4a\x8d\xfb\x08\x53\x24\x45\x92\x26\x8a" + - "\x14\x5f\x60\x6c\x88\x41\xc2\x80\x80\x22\x2b\xc4\xdd\x17\xc3\x7a" + - "\xff\xb4\x5b\x81\xde\x3c\xe6\x1b\x86\x88\xb0\x2a\xda\x92\xc9\xb0" + - "\x03\x6d\x63\x7c\xd1\xe6\xcd\x48\xc5\x9d\x55\x10\x38\x7a\x1d\x10" + - "\xfe\xbe\x26\x29\x65\xc9\x81\x5e\x38\xc2\x3f\xe0\x60\x71\x60\x85" + - "\xcf\xb4\x89\x51\xfe\xa1\x2f\xff\x61\x0c\x43\xf8\x5d\x81\x2f\xb4" + - "\x62\xfc\xc9\x81\x49\xbd\x14\xd2\x10\x41\x63\x1c\x9d\x5c\x7f\x2d" + - "\xcc\xb9\xcf\xc8\xff\x43\x4a\xa4\x17\xb4\xf8\x5c\x79\x7e\x12\xed" + - "\x63\xd1\xd2\x5c\xac\xae\x66\x35\xfb\xfc\xa8\xe4\x69\x13\xd0\xed" + - "\x4f\xf6\x86\x68\xde\x26\x1b\xba\xe9\x52\xea\x9e\x85\xdc\x25\x94" + - "\xcb\x7e\x92\xbe\x6e\x2c\x4f\xbd\x2d\xf0\x18\x00\x00\xff\xff\x2c" + - "\xc5\xf5\x5d\x47\x01\x00\x00" - -// DefaultTemplate returns the binary data for a given file. -func DefaultTemplate() []byte { - // This bit of black magic ensures we do not get - // unneccesary memcpy's and can read directly from - // the .rodata section. - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&_DefaultTemplate)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(_DefaultTemplate) - bx.Cap = bx.Len - - gz, err := gzip.NewReader(bytes.NewBuffer(b)) - - if err != nil { - panic("Decompression failed: " + err.Error()) - } - - var buf bytes.Buffer - io.Copy(&buf, gz) - gz.Close() - - return buf.Bytes() -} diff --git a/vendor/github.com/JalfResi/justext/detailedTemplate.go b/vendor/github.com/JalfResi/justext/detailedTemplate.go deleted file mode 100644 index 5694151..0000000 --- a/vendor/github.com/JalfResi/justext/detailedTemplate.go +++ /dev/null @@ -1,181 +0,0 @@ -package justext - -import ( - "bytes" - "compress/gzip" - "io" - "reflect" - "unsafe" -) - -var _DetailedTemplate = "" + - "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xe4\x59\x59\x73\xe2\x3a" + - "\xf6\x7f\x4e\x3e\x85\xff\xfc\x6f\x4d\x27\x45\x9a\x1d\x02\x09\x64" + - "\xc6\x18\x13\x76\x02\x06\x02\x99\x9a\xea\x12\xb6\x6c\x14\xaf\xb1" + - "\x65\x8c\xc9\xf0\xdd\x47\x32\x66\x0b\x24\x4d\xcf\x43\xdf\x5b\x35" + - "\xbc\xd8\x3e\x3a\xfb\xf9\x49\x3a\x12\xc5\x19\xd6\xb5\x87\xcb\xa2" + - "\x83\x7d\x0d\x3e\x5c\x5e\xfc\x03\xe9\x96\x69\x63\xc6\xb5\xb5\xab" + - "\x19\xc6\xd6\x5d\x3c\x2e\x9b\x06\x76\x62\x8a\x69\x2a\x1a\x04\x16" + - "\x72\x62\xa2\xa9\xc7\x45\xc7\xf9\xbb\x0c\x74\xa4\xf9\xa5\xae\x05" + - "\x8d\xa8\x00\x0c\xe7\x2e\x93\x48\xdc\xa4\x13\x89\xbf\x39\xee\xd4" + - "\x81\xb8\xa4\x01\x8c\x8c\x1b\xd1\xb7\x91\xa6\x21\xf1\x3b\x5c\xe0" + - "\xed\xc7\x8d\x62\x43\xa8\x06\xa4\x39\x82\xd8\x00\x3a\x74\xe0\x4d" + - "\x20\x40\x89\xd7\xf7\x97\x17\x97\x17\x53\x53\xf2\x2f\x2f\xde\x2f" + - "\x2f\x2e\xa8\x0b\xdf\xd7\xe6\xee\x98\x6f\xd4\x20\x43\x0d\x7e\xbb" + - "\x61\x1c\xf2\xf8\xee\x40\x1b\xc9\xf7\x1b\x3e\x0f\x22\x65\x86\xef" + - "\x18\xe2\xc9\x3d\x43\x88\x3a\xb0\x15\xa2\x56\x83\x32\x21\x02\x17" + - "\x9b\xf7\x3b\xa2\xbd\x66\xdd\x50\x3d\x24\xe1\xd9\x1d\x93\x4f\x24" + - "\xac\x05\xf9\x5e\x5d\x5e\x5e\x38\x16\x30\x62\x0e\x36\x2d\xcf\xb4" + - "\x25\x86\x3a\x83\x89\x83\xdf\x25\x28\x9a\x36\x71\xd7\x34\xee\x18" + - "\xd7\x90\xa0\xad\x21\x03\x86\x22\x16\x4d\x96\x74\xc3\x58\xb1\x19" + - "\x04\x12\x32\x14\xfa\x3a\x05\x81\x34\x43\x7e\xa1\x95\x6c\x76\x6d" + - "\x85\x92\x02\x9d\x40\x43\x0a\x51\xf7\xea\x3a\x18\xc9\x7e\x38\x12" + - "\x3a\x4a\x1c\xb8\x63\x52\x5b\xfe\x90\x3a\x35\x31\x36\xf5\xfd\x01" + - "\x0b\x48\xd4\x62\x18\x6d\xfa\x88\x1e\x06\x9c\xde\xc6\x77\xe4\xec" + - "\xc6\xcb\x29\x10\x55\xc5\x36\x49\x70\xdf\x45\x53\x33\xed\x3b\xe6" + - "\xff\x45\x59\xdc\x4a\xed\x71\x1f\xa6\x3d\x13\xa6\x3d\x20\x3a\x68" + - "\x09\xef\x98\x64\x2c\x0d\xf5\xad\xe4\x5e\x26\x4e\xd8\x90\x25\x29" + - "\xe4\x94\xd0\x3c\x66\x01\x1b\x28\x36\xb0\x66\x3f\x24\x88\x01\xd2" + - "\x9c\x0f\x39\x4c\x65\x76\x39\x94\x35\x13\x10\xfb\x41\x84\x21\x49" + - "\x42\x8e\xa5\x01\x82\x19\xc3\xdc\x56\xe7\xb4\x5a\x0c\xa6\x1a\xdc" + - "\xba\x45\x4a\x0d\x6d\xea\x92\x06\x2c\x87\x04\xb0\x79\x3b\x43\x05" + - "\xde\x06\x77\x58\x8a\xe3\x12\x85\xa5\xd8\x0d\xac\xcd\x92\x74\x59" + - "\x0b\xc6\x31\x35\x24\x91\x6c\xc8\xf2\x57\x36\x83\xda\xad\x0d\xdf" + - "\x7c\xc6\xb2\x29\xd4\x89\x08\x0f\x4c\x15\xe4\xc2\x97\xa6\x68\xd9" + - "\x7e\xa6\x43\x06\xe0\x4c\x77\x19\x6c\x9f\xe9\x31\xb6\xbf\x40\xcb" + - "\xf9\x4e\x7f\xa9\x66\xe7\x77\x0c\xfa\xd0\x24\xeb\x4b\xb8\xee\xac" + - "\x21\x45\x2b\x78\xff\x71\x25\xf9\x9e\x24\x40\xdf\x11\x83\x09\xba" + - "\x9e\x56\x17\x5b\xd8\x4d\x35\x53\x54\xf7\x16\x96\x74\x72\xcd\x30" + - "\x0b\xe7\x4a\x2a\xb3\xfe\xde\x73\xc9\x86\x16\xa4\x36\x0d\x33\x7c" + - "\xfd\x30\x8e\x74\xa0\x10\x44\xd2\xf5\x59\x02\x18\xdc\x05\xdf\x71" + - "\xcb\x50\xee\xa7\xc0\x81\xb9\xcc\x0d\x1a\x95\xbb\x7d\x2f\xd1\x7c" + - "\x54\x4c\x96\xfc\x3a\xc2\x70\xc6\x0f\x15\xf2\x56\xce\xd3\xef\x3e" + - "\xc7\x4e\xe8\x53\xb3\x6a\x52\x83\x52\x1b\x09\x8d\xef\x8d\xfa\x99" + - "\xd4\x5b\x6a\x34\xee\xa5\x2b\x6d\xd6\xe7\x17\x3e\xdb\xe3\xde\xf8" + - "\x1e\xab\xf3\xc1\x93\x43\x7c\xaf\x8c\xc2\x77\x87\xef\xb5\x5f\x0b" + - "\x62\xa3\x8d\x9b\x53\x0c\x52\x42\x27\x5a\x49\xe4\x07\xc6\xb8\x76" + - "\x9b\x03\xcd\x54\x35\x31\x9d\x98\xcf\x03\x55\x74\xb3\xf5\x45\x4b" + - "\x5d\xf0\x6d\xae\x96\xb5\xa6\x3d\x76\x24\x69\x28\xa3\x2d\x13\xc3" + - "\x7a\xaf\xde\x86\xd9\xa7\xbe\xe8\xf3\x6d\x1f\xa4\x9f\xd2\xec\x5b" + - "\x53\x10\xdc\xe9\xe8\x09\x18\x8b\xaa\x66\xc1\x16\x18\xa3\x7e\x79" + - "\xf8\x72\xcb\xab\x13\x7b\xde\x19\xbd\xb1\xd5\x41\x6e\x22\x8d\x27" + - "\xed\xc9\x68\x24\x24\xeb\x8f\x2f\xc9\x49\x33\xca\xc7\x1f\xcb\xe2" + - "\x04\xd5\x52\xb5\xea\xf8\x35\x5b\xad\x8d\xbb\x99\x6a\x66\x91\x6b" + - "\x45\x93\xaf\xb7\xac\x50\x43\x9e\x33\x28\x3c\xb5\x66\xfd\xf9\x4b" + - "\x27\x6a\x44\x0b\x2e\x1a\x62\x81\xef\xcb\x4e\x74\xdc\x99\xb0\x9c" + - "\x97\xcc\x0f\xa7\xdd\x64\xe7\xcd\x86\x6a\xf2\x79\x6e\xcd\xa3\x65" + - "\xf1\x55\x4d\x34\x52\x95\xd6\x44\x28\x24\x6a\xe5\x6a\x05\x60\x2e" + - "\xaf\xf8\x8b\xac\x06\xe2\x51\x3b\x5d\x4b\xb3\x03\xbe\xda\x7d\x92" + - "\x2b\xad\xaa\xfb\xda\xcd\x65\xdc\xe6\xa0\xba\x30\x3b\xe9\x27\xcb" + - "\xc8\x38\x6f\x78\xc9\xdd\xbe\xe9\xa3\x7c\x42\x97\x04\x77\xe0\x4d" + - "\xbb\x59\x3d\xe5\x8e\x86\x80\xeb\x75\xc1\x70\x2c\x88\x42\x83\x2b" + - "\x14\x16\x8e\x5d\x90\x0a\xf5\x42\x2a\xee\x2f\x9b\x8b\x81\xee\xb9" + - "\x43\x0f\x3e\xaa\xb5\x78\x5a\x2d\x64\x66\x15\x29\xe5\x2f\xec\x11" + - "\x6c\x69\x62\xa7\xc7\x06\xa5\xe9\x0f\xb3\xbc\xad\x36\x14\x45\x29" + - "\x95\xae\xf7\x10\x2a\x6a\xa6\x03\xa5\xf3\x31\xfa\x57\x06\xe4\x24" + - "\x04\x24\xf7\xe6\x83\x32\xa5\x4e\xf9\x10\x90\x76\xea\xb9\x22\xa6" + - "\xf9\x3a\xeb\x3f\x2e\x3d\x5e\x68\xe8\xbc\xa0\xd6\x39\x5e\x18\xb2" + - "\x1c\x6f\xb1\x1e\x37\x44\x93\x19\xaf\x4f\xca\xdc\xc0\x01\x8b\x2e" + - "\x28\x74\x32\x6c\x34\x8e\x53\x8d\xc7\xbc\x5b\x4e\xfa\xb2\x66\xbd" + - "\xf8\x46\x3a\x2d\xc7\x93\xc3\x44\xed\x51\x9d\x73\x76\xaa\x30\xcd" + - "\xb3\xe3\x72\xbf\x10\x2d\xeb\x70\xc2\xa2\x42\x2d\x9a\xcb\x03\x9c" + - "\xeb\xb3\x48\xf7\xf3\xcd\xc6\x30\xdb\xcf\x9a\x23\xb9\x65\x56\xfb" + - "\x39\x76\x32\x07\xe5\x7c\xc3\x7a\x75\xf9\xa1\x1d\x9d\x22\x24\xa4" + - "\x9b\x29\xce\x8c\x3e\xce\xbd\x6a\x45\x89\xf2\x26\xa8\x44\xf9\xc4" + - "\xb2\xae\xbe\x2e\x15\xd9\x06\x99\xda\xeb\x74\xb1\xe4\xf8\xe9\x22" + - "\xa5\xd4\xb3\xea\x20\xd1\x2b\xa8\xcf\x0d\xdb\xee\x8d\x9e\x0c\x61" + - "\xf6\xfa\xe2\xc5\xdd\x4e\x4e\xe8\xcc\xf3\x8e\xe1\xd7\x6e\xcb\x09" + - "\xa9\x2b\xd8\x04\x65\xec\x52\xe8\x69\xfa\x14\x5a\x4b\x47\xf4\xa2" + - "\x65\xde\x29\xf4\x58\xac\x76\x9f\x47\x39\xb8\x18\xc1\xf2\x4b\x56" + - "\xab\x22\xfc\xc8\xdb\xb9\x96\xd9\x83\x75\xa1\x3e\x00\xa3\x51\xc3" + - "\x18\x71\xee\x4b\xed\x16\x4b\x2d\x6d\xda\xec\xea\x6d\x37\x3a\x98" + - "\xf5\x75\x1b\x8f\x5b\x5a\xd9\xd1\x0c\x33\xda\x28\x2c\x5e\x26\x96" + - "\xe8\x77\xd9\xbe\xef\x67\xd8\x9a\xb1\x48\x35\xe7\xb3\xee\x5b\xbd" + - "\x62\xa9\xac\x17\xf7\xf8\x0a\x28\x24\x97\x5c\x62\x32\x6e\xb6\x9a" + - "\xaa\x69\xf0\x60\xd4\x66\x5f\x8c\x4e\x54\xc9\x65\x35\x38\xcb\x3e" + - "\xd5\x13\x4e\x35\xa9\x3b\x8f\xd6\x78\x1e\x97\x85\x6e\xf6\x6d\x7a" + - "\x2b\x4d\x92\xfd\xf4\xab\xe5\x56\xd5\x4c\x6b\x68\xd8\x05\x2b\x21" + - "\xb6\xf2\x05\x2e\xeb\x95\x73\x95\x44\x66\x6e\xd4\xe1\x30\xd9\xd2" + - "\x59\xcf\x91\xd5\xb6\xe4\x55\xab\xfd\x84\x37\x1f\xa6\x33\x12\x1a" + - "\xa6\x9b\xf1\xd9\xf3\xb8\xde\x02\xd1\x38\x07\x86\xcb\x0c\x8e\xa3" + - "\x46\x5c\xa9\xbc\xc8\x5a\x5a\x2f\xe4\xc4\x71\xdb\xfb\x0c\xec\xc5" + - "\x78\xd8\x96\x16\x1d\xd1\x46\x16\x26\xfd\xa9\xec\x1a\x22\xed\xba" + - "\x18\x67\x66\x7a\x3f\x80\x34\x07\x86\x08\xa5\xab\xeb\xcd\xe2\xbe" + - "\xa1\xfc\x30\x2d\xca\xe6\x30\x25\x46\x32\x45\x57\x87\x06\x8e\x29" + - "\x10\xf3\x1a\xa4\xaf\x65\xbf\x2e\x5d\x45\x3e\xf2\x46\xae\xef\x4f" + - "\x2b\x89\x05\x6e\xc4\xc2\x59\x44\x54\x46\x82\x79\x14\x09\xd9\x0f" + - "\x5c\xf9\x41\x1a\x41\xf5\x2b\xab\xc7\xdc\x5b\xbb\xc7\x43\xc7\x96" + - "\x69\x27\xb3\x31\x3c\x43\x12\x3c\xdf\xf0\x31\xf7\xd6\xf0\xf1\xd0" + - "\xb1\xe1\x48\xb8\xfe\x6c\x2b\x70\x20\xf4\xdb\x2b\xb0\x9f\x87\xdf" + - "\x5a\x80\x3f\x25\xf9\x9b\x68\x0f\x0a\x80\x4d\x85\x1c\xc9\x7e\x4c" + - "\x4d\xa4\x41\x9b\x70\x62\xf2\xee\x92\x03\x81\xb1\x2e\xc6\xc5\x7a" + - "\xbc\xbc\x1b\xfe\xca\xc1\x23\xe6\xc0\xbf\x0b\x24\x33\x57\x47\x43" + - "\x31\x51\x03\x8e\xd3\x21\x87\xb6\x18\x22\x67\x9f\x45\x57\xbe\x8a" + - "\x6c\x77\xa5\xc8\x35\xf3\x7f\x25\xb2\xf3\xac\x7d\x38\x76\x62\x27" + - "\x4c\x03\x0b\xdb\x2d\x1a\x1b\xd9\x85\x68\x26\xf6\xc2\xb9\x0a\x5c" + - "\x58\x31\x50\x73\xe0\xb9\xda\x42\x27\x02\x7d\x41\x39\x8f\xf5\x9d" + - "\xc2\xf1\x01\xd7\xae\x83\x0f\xfb\xc9\x4f\x40\xec\x94\xfd\x01\x50" + - "\xa8\xf1\xab\x88\xb5\xad\xa7\x6c\xda\xcc\xd5\x1c\xd8\x0c\x2a\x91" + - "\x93\x10\x2a\xee\xb4\xc4\x34\x68\x28\x78\x46\x88\xd1\xe8\xd6\x08" + - "\xfd\x51\xee\x2d\x1b\xb1\xb5\x13\xf9\x27\xfa\xd7\xfd\x8e\x8f\x56" + - "\x63\x3b\x76\xaa\x0a\xa4\xdf\x3d\xc8\x3f\xb3\xf7\xdb\x09\x7e\x39" + - "\x99\xe8\x6f\xb5\x7e\x5d\xed\x01\x74\x1f\x65\x67\x81\xfd\xa3\xc0" + - "\x21\xde\x3f\x8e\x9e\x31\xc1\x7f\xc5\x83\x93\x02\x87\xd3\xfc\xe7" + - "\x1e\x1c\x4d\xb8\x63\x3c\xfd\xcf\x21\xe5\x73\x94\xfc\x39\x35\x3a" + - "\xda\x0e\x7f\x3b\x4e\x4f\xa3\xe4\xe8\x28\xba\xab\xc6\x0d\x63\x49" + - "\x48\x3a\x86\xce\xf6\x22\xe1\x73\x8f\x03\xc1\xfb\x4f\xe4\x3e\xed" + - "\x52\x98\xb5\xc0\x2f\x41\x62\x57\xe5\x8f\x60\xd8\xb5\xfe\x1c\x3d" + - "\x3d\x53\x3b\xf4\xfc\xbc\x29\x02\x5d\xab\x7f\x4d\x98\x9c\xe1\x4f" + - "\xf7\x16\x7f\x89\x1c\xae\x01\xf6\x1b\x52\x28\x49\xff\x7d\x0a\x45" + - "\x59\x8c\x6c\x3a\xe6\xb0\x53\x2e\xd2\xdb\x53\xd2\x30\x17\x25\x34" + - "\x67\x90\x54\x3a\xb1\xc1\x33\x41\x00\xa5\xbd\x5d\x93\x31\x0d\x51" + - "\x43\xa2\xba\xe1\x3e\xd9\x5b\x44\x1e\x8a\x71\xa2\xf4\xe1\xf2\xfd" + - "\xdd\x06\x86\x02\x99\x3f\x82\xf0\x6f\x98\x3f\x2c\xe6\xae\xc4\xc4" + - "\x9e\xb6\x4b\xd2\x6a\xb5\x67\xdf\x92\xde\xdf\xd7\x9c\xab\xd5\xd6" + - "\xf4\x89\xfb\xbd\x77\x92\xe4\x58\x6d\x7d\x05\xb4\x5a\x85\x77\x41" + - "\xef\xef\xd0\x90\x56\x2b\x32\x1a\xe3\xa8\x24\x55\x11\xa4\xa3\x14" + - "\xd9\x9c\x6d\x83\x2b\xbe\xc8\xc3\x05\xd9\xe1\x8b\xc1\x95\xcf\x03" + - "\x6d\x01\x8a\xd8\x0e\x9e\xe4\x45\x7a\xa8\x22\x03\x68\x6b\xd3\x77" + - "\x4c\x31\x4e\x28\x94\xba\xd3\x19\x90\x02\xa9\x78\x28\x76\x20\xce" + - "\x99\x46\x70\x4f\x2b\xdb\x10\x9e\xd4\x22\x9f\xa7\x27\x0c\xee\x50" + - "\x78\x1b\xf1\x4f\x84\x5b\xc1\xc6\xc0\x5c\x21\x83\x11\x67\x24\x7b" + - "\x22\x86\xb6\x73\x7d\xa0\x8b\xec\x1d\x4c\x6c\x40\x3c\xfd\xa9\xb2" + - "\x8e\x4b\xce\x9e\x36\x63\xca\x7b\xba\x18\x0f\x11\xfd\x74\xad\xfb" + - "\x10\x5e\x8b\x90\xa0\xc4\x11\x46\x8e\xa0\xef\xe7\xca\x29\x3f\x23" + - "\x41\xc3\x41\xd8\x3f\xd6\x54\x59\x0f\xfc\x82\x8b\xf4\x02\xfe\x83" + - "\x4b\xcf\x84\x74\x9e\x33\x3b\x35\xf4\x2e\xff\x94\x2e\x21\xbc\xe3" + - "\x3f\x4f\x9f\xb0\xd1\x72\x3a\xc2\x8d\xb2\x33\xa3\xa4\x17\xcc\xf4" + - "\x8f\x86\x52\x24\x15\xa1\xe2\x15\x53\x7f\x02\x78\x76\x42\x8c\x3c" + - "\x43\x6c\xaf\x27\x21\x81\x7b\xd1\xda\xcc\xa6\xf3\xe7\x8e\x69\xe8" + - "\xa6\xeb\x40\x73\x0e\xed\x52\xe4\x93\x0d\x0b\xcf\x90\x73\xc3\x7c" + - "\xdb\x9f\xb7\xdf\xae\xef\x77\xb2\x2e\x2e\x45\x3e\x59\xa7\x3f\x11" + - "\x25\xa1\x0d\x6c\xa4\x0b\x16\x10\xe1\x1a\xa1\xcc\xbf\x99\x36\xb0" + - "\xd5\x4d\xba\x82\xb9\x63\xd1\x95\x25\x70\x99\x2c\x67\xeb\x55\xac" + - "\x18\x0f\xfe\xa6\xfa\x4f\x00\x00\x00\xff\xff\xdb\x07\xd3\x5c\xad" + - "\x1a\x00\x00" - -// DetailedTemplate returns the binary data for a given file. -func DetailedTemplate() []byte { - // This bit of black magic ensures we do not get - // unneccesary memcpy's and can read directly from - // the .rodata section. - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&_DetailedTemplate)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(_DetailedTemplate) - bx.Cap = bx.Len - - gz, err := gzip.NewReader(bytes.NewBuffer(b)) - - if err != nil { - panic("Decompression failed: " + err.Error()) - } - - var buf bytes.Buffer - io.Copy(&buf, gz) - gz.Close() - - return buf.Bytes() -} diff --git a/vendor/github.com/JalfResi/justext/htmlRenderer.go b/vendor/github.com/JalfResi/justext/htmlRenderer.go deleted file mode 100644 index 63f28a3..0000000 --- a/vendor/github.com/JalfResi/justext/htmlRenderer.go +++ /dev/null @@ -1,89 +0,0 @@ -package justext - -import ( - "fmt" - "log" - "strings" - - "github.com/levigross/exp-html" -) - -/** -This should be a separate package! -And it should be a Writer! -*/ - -var selfClosingTags = map[string]bool{ - "area": true, - "base": true, - "basefont": true, - "br": true, - "hr": true, - "input": true, - "img": true, - "link": true, - "meta": true, -} - -// nodesToString loops over a node tree and generate HTML string -// Should be moved into html/utils package -func nodesToString(node *html.Node) string { - var response string = "" - - switch node.Type { - case html.TextNode: - response = html.EscapeString(strings.TrimSpace(node.Data)) - - case html.ElementNode, html.DoctypeNode: - var att string = "" - if len(node.Attr) > 0 { - for _, a := range node.Attr { - att = fmt.Sprintf("%s %s=\"%s\"", att, a.Key, a.Val) - } - } - - if _, ok := selfClosingTags[node.Data]; ok { - return fmt.Sprintf("<%s%s>", node.Data, att) - } - - var content string = "" - if len(node.Child) > 0 { - for _, n := range node.Child { - content = fmt.Sprintf("%s%s", content, nodesToString(n)) - } - } - response = fmt.Sprintf("<%s%s>%s", node.Data, att, content, node.Data) - - case html.DocumentNode: - if len(node.Child) > 0 { - for _, n := range node.Child { - response = nodesToString(n) - } - } - - case html.CommentNode: - // ignore - - default: - log.Printf("Unhandled node: %s", nodeTypeToString(node)) - } - return response -} - -func nodeTypeToString(n *html.Node) (t string) { - switch n.Type { - case html.ErrorNode: - t = "Error" - case html.TextNode: - t = "Text" - case html.DocumentNode: - t = "Document" - case html.ElementNode: - t = "Element" - case html.CommentNode: - t = "Comment" - case html.DoctypeNode: - t = "Doctype" - } - return t -} diff --git a/vendor/github.com/JalfResi/justext/paragraphObjectModel.go b/vendor/github.com/JalfResi/justext/paragraphObjectModel.go deleted file mode 100644 index 53322a7..0000000 --- a/vendor/github.com/JalfResi/justext/paragraphObjectModel.go +++ /dev/null @@ -1,160 +0,0 @@ -package justext - -import ( - "fmt" - "github.com/levigross/exp-html" - "io" - "regexp" - "strings" -) - -var ( - paragraphTags = map[string]bool{ - "blockquote": true, - "caption": true, - "center": true, - "col": true, - "colgroup": true, - "dd": true, - "div": true, - "dl": true, - "dt": true, - "fieldset": true, - "form": true, - "legend": true, - "optgroup": true, - "option": true, - "p": true, - "pre": true, - "table": true, - "td": true, - "textarea": true, - "tfoot": true, - "th": true, - "thead": true, - "tr": true, - "ul": true, - "li": true, - "h1": true, - "h2": true, - "h3": true, - "h4": true, - "h5": true, - "h6": true, - } - matchWhiteSpace *regexp.Regexp = regexp.MustCompile("[\n\r\t]+") -) - -type Paragraph struct { - DomPath string - TextNodes []string - WordCount int - LinkedCharCount int - TagCount int - Text string - StopwordCount int - StopwordDensity float64 - LinkDensity float64 - Heading bool - CfClass string - Class string -} - -func paragraphObjectModel(htmlStr string) ([]*Paragraph, error) { - - var dom []string - var paragraphs []*Paragraph - var paragraph *Paragraph = &Paragraph{WordCount: 0, LinkedCharCount: 0, TagCount: 0} - var link bool = false - var br bool = false - var matchToDoErrors *regexp.Regexp = regexp.MustCompile("^html: TODO: ") - - var startNewParagraph func() - startNewParagraph = func() { - if len(paragraph.TextNodes) != 0 { - paragraph.Text = strings.TrimSpace(matchWhiteSpace.ReplaceAllString(strings.Join(paragraph.TextNodes, " "), " ")) - paragraphs = append(paragraphs, paragraph) - } - paragraph = &Paragraph{ - DomPath: strings.Join(dom, "."), - WordCount: 0, - LinkedCharCount: 0, - TagCount: 0, - } - } - - z := html.NewTokenizer(strings.NewReader(htmlStr)) - - for { - tt := z.Next() - switch tt { - - case html.ErrorToken: - if z.Err() == io.EOF { - return paragraphs, nil - } - if matchToDoErrors.MatchString(fmt.Sprintf("%s", z.Err())) { - return nil, z.Err() - } - continue - - case html.StartTagToken: - tmpName, _ := z.TagName() - name := string(tmpName) - //log.Println("Matched start tag: ", name) - dom = append(dom, name) - _, ok := paragraphTags[name] - if ok || (name == "br" && br) { - if name == "br" { - paragraph.TagCount-- - } - startNewParagraph() - } else { - if name == "br" { - br = true - } else { - br = false - } - if name == "a" { - link = true - } - paragraph.TagCount++ - } - - case html.EndTagToken: - tmpName, _ := z.TagName() - name := string(tmpName) - //log.Println("Matched end tag: ", name) - dom = dom[0 : len(dom)-1] - if _, ok := paragraphTags[name]; ok { - startNewParagraph() - } - if name == "a" { - link = false - } - - case html.TextToken: - text := strings.TrimSpace(string(z.Text())) - e := 15 - if len(text) < e { - e = len(text) - } - //log.Println("Matched text: ", text[:e], "...") - if text == "" { - continue - } - text = strings.TrimSpace(matchWhiteSpace.ReplaceAllString(text, " ")) - paragraph.TextNodes = append(paragraph.TextNodes, text) - words := strings.Split(text, " ") - paragraph.WordCount += len(words) - if link { - paragraph.LinkedCharCount += len(text) - } - br = false - - } - } - startNewParagraph() - - return paragraphs, nil -} diff --git a/vendor/github.com/JalfResi/justext/preprocess.go b/vendor/github.com/JalfResi/justext/preprocess.go deleted file mode 100644 index c5b3176..0000000 --- a/vendor/github.com/JalfResi/justext/preprocess.go +++ /dev/null @@ -1,111 +0,0 @@ -package justext - -import ( - "github.com/levigross/exp-html" - "regexp" - "strings" -) - -func preprocess(htmlStr, encoding, defaultEncoding, encErrors string) (*html.Node, error) { - - root, err := html.Parse(strings.NewReader(htmlStr)) - if err != nil { - return nil, err - } - - addKwTags(root) - removeElements(root, []string{"head", "script", "style"}) - - return root, nil -} - -type nodeIterator func(n *html.Node) - -func nodeIter(n *html.Node, f nodeIterator) { - f(n) - for _, c := range n.Child { - nodeIter(c, f) - } -} - -func addKwTags(root *html.Node) *html.Node { - var blankText *regexp.Regexp = regexp.MustCompile("^[\n\r\t ]*$") - var nodesWithText []*html.Node - - var markTextAndTail nodeIterator - markTextAndTail = func(node *html.Node) { - if node.Type != html.CommentNode || node.Type != html.DoctypeNode { - if node.Type == html.TextNode { - nodesWithText = append(nodesWithText, node) - } - } - } - nodeIter(root, markTextAndTail) - - for _, node := range nodesWithText { - if blankText.MatchString(node.Data) { - node.Data = "" - } else { - kw := &html.Node{ - Parent: nil, - Type: html.ElementNode, - Data: "kw", - } - node2 := CopyNode(node, true) - kw.Child = append(kw.Child, node2) - insertNode(node, kw) - node.Parent.Remove(node) - } - } - - return root -} - -func removeElements(root *html.Node, elementsToRemove []string) { - var toBeRemoved []*html.Node - var markRemovableNodes = func(node *html.Node) { - if node.Type == html.ElementNode { - for _, nodeName := range elementsToRemove { - if node.Data == nodeName { - toBeRemoved = append(toBeRemoved, node) - } - } - } - } - nodeIter(root, markRemovableNodes) - - for _, node := range toBeRemoved { - node.Parent.Remove(node) - } -} - -// insertsNode inserts a Node in a Node tree at the position of another node. -// Should be moved into html/utils package -func insertNode(originalNode *html.Node, newNode *html.Node) { - slice := originalNode.Parent.Child - for position, n := range slice { - if n == originalNode { - originalNode.Parent.Child = append(slice[:position], append([]*html.Node{newNode}, slice[position:]...)...) - return - } - } -} - -func CopyNode(node *html.Node, deep bool) *html.Node { - newNode := &html.Node{ - Type: node.Type, - Data: node.Data, - } - - if deep && len(node.Child) > 0 { - for _, n := range node.Child { - newNode.Child = append(newNode.Child, CopyNode(n, true)) - } - } - - for _, i := range node.Attr { - newNode.Attr = append(newNode.Attr, html.Attribute{Key: i.Key, Val: i.Val}) - } - - return newNode -} diff --git a/vendor/github.com/JalfResi/justext/reader.go b/vendor/github.com/JalfResi/justext/reader.go deleted file mode 100644 index d856035..0000000 --- a/vendor/github.com/JalfResi/justext/reader.go +++ /dev/null @@ -1,98 +0,0 @@ -package justext - -import ( - "errors" - "fmt" - "io" - "strings" - - html "github.com/levigross/exp-html" -) - -type Reader struct { - LengthLow int - LengthHigh int - Stoplist map[string]bool - StopwordsLow float64 - StopwordsHigh float64 - MaxLinkDensity float64 - MaxHeadingDistance int - NoHeadings bool - r io.Reader -} - -func NewReader(r io.Reader) *Reader { - return &Reader{ - LengthLow: 70, - LengthHigh: 200, - StopwordsLow: 0.30, - StopwordsHigh: 0.32, - MaxLinkDensity: 0.2, - MaxHeadingDistance: 200, - NoHeadings: false, - r: r, - } -} - -func (r *Reader) ReadAll() ([]*Paragraph, error) { - in, err := io.ReadAll(r.r) - if err != nil { - return nil, err - } - - root, err := preprocess(string(in), "utf-8", "utf-8", "errors") - if err != nil { - return nil, err - } - if root == nil { - return nil, errors.New("Preprocess has resulted in nil") - } - - htmlSource := nodesToString(root) - if len(htmlSource) == 0 { - return nil, errors.New("MAIN: perprocess has returned an empty string") - } - - p, err := paragraphObjectModel(htmlSource) - if err != nil { - return nil, err - } - if p == nil { - return nil, errors.New("MAIN: P is nil") - } - - classifyParagraphs(p, r.Stoplist, r.LengthLow, r.LengthHigh, r.StopwordsLow, r.StopwordsHigh, r.MaxLinkDensity, r.NoHeadings) - reviseParagraphClassification(p, r.MaxHeadingDistance) - - return p, nil -} - -func dumpNodes(n *html.Node, tab int, exploreChildNodes bool) string { - var childNodes string = "" - if exploreChildNodes == true { - if len(n.Child) > 0 { - for _, c := range n.Child { - childNodes = fmt.Sprintf("%s%s\n", childNodes, dumpNodes(c, tab+1, true)) - } - } - } - - var t string - switch n.Type { - case html.ErrorNode: - t = "Err" - case html.TextNode: - t = "T" - case html.DocumentNode: - t = "D" - case html.ElementNode: - t = "E" - case html.CommentNode: - t = "C" - case html.DoctypeNode: - t = "Dt" - } - - tabStr := strings.Repeat(" ", tab) - return fmt.Sprintf("%s%s:%s\n%s", tabStr, t, strings.TrimSpace(strings.Replace(n.Data, "\n", "", -1)), childNodes) -} diff --git a/vendor/github.com/JalfResi/justext/reviseParagraphClassification.go b/vendor/github.com/JalfResi/justext/reviseParagraphClassification.go deleted file mode 100644 index bf39f49..0000000 --- a/vendor/github.com/JalfResi/justext/reviseParagraphClassification.go +++ /dev/null @@ -1,118 +0,0 @@ -package justext - -// Context-sensitive paragraph classification. Assumes that classify_pragraphs has already been called. -func reviseParagraphClassification(paragraphs []*Paragraph, maxHeadingDistance int) { - - // Copy classes - for _, paragraph := range paragraphs { - paragraph.Class = paragraph.CfClass - } - - // Good headings - var j int = 0 - var distance int - for i, paragraph := range paragraphs { - if !(paragraph.Heading && paragraph.Class == "short") { - continue - } - - j = i + 1 - distance = 0 - - for j < len(paragraphs) && distance <= maxHeadingDistance { - if paragraphs[j].Class == "good" { - paragraph.Class = "neargood" - break - } - distance += len(paragraphs[j].Text) - j += 1 - } - } - - // Classify short - var newClasses []string = make([]string, len(paragraphs)) - for i, paragraph := range paragraphs { - if paragraph.Class != "short" { - continue - } - - var prevNeighbour string = getPrevNeighbour(i, paragraphs, true) - var nextNeighbour string = getNextNeighbour(i, paragraphs, true) - - var neighbours map[string]bool = make(map[string]bool) - neighbours[prevNeighbour] = true - neighbours[nextNeighbour] = true - - if _, ok := neighbours["good"]; ok && len(neighbours) == 1 { - newClasses[i] = "good" - } else if _, ok := neighbours["bad"]; ok && len(neighbours) == 1 { - newClasses[i] = "bad" - // neighbours must contain both good and bad - } else if (prevNeighbour == "bad" && getPrevNeighbour(i, paragraphs, false) == "neargood") || (nextNeighbour == "bad" && getNextNeighbour(i, paragraphs, false) == "neargood") { - newClasses[i] = "good" - } else { - newClasses[i] = "bad" - } - } - - for i, c := range newClasses { - if c != "" { - paragraphs[i].Class = c - } - } - - // revise neargood - for i, paragraph := range paragraphs { - if paragraph.Class != "neargood" { - continue - } - - var prevNeighbour string = getPrevNeighbour(i, paragraphs, true) - var nextNeighbour string = getNextNeighbour(i, paragraphs, true) - - if prevNeighbour == "bad" && nextNeighbour == "bad" { - paragraph.Class = "bad" - } else { - paragraph.Class = "good" - } - } - - // more good headings - for i, paragraph := range paragraphs { - if !(paragraph.Heading && paragraph.Class == "bad" && paragraph.CfClass != "bad") { - continue - } - j = i + 1 - distance = 0 - for j < len(paragraphs) && distance <= maxHeadingDistance { - if paragraphs[j].Class == "good" { - paragraph.Class = "good" - break - } - distance += len(paragraphs[j].Text) - j += 1 - } - } -} - -func getPrevNeighbour(i int, paragraphs []*Paragraph, ignoreNeargood bool) string { - return getNeighbour(i, paragraphs, ignoreNeargood, -1, -1) -} - -func getNextNeighbour(i int, paragraphs []*Paragraph, ignoreNeargood bool) string { - return getNeighbour(i, paragraphs, ignoreNeargood, 1, len(paragraphs)) -} - -func getNeighbour(i int, paragraphs []*Paragraph, ignoreNeargood bool, inc int, boundary int) string { - for i+inc != boundary { - i += inc - var c string = paragraphs[i].Class - if c == "good" || c == "bad" { - return c - } - if c == "neargood" && !ignoreNeargood { - return c - } - } - return "bad" -} diff --git a/vendor/github.com/JalfResi/justext/stoplists.go b/vendor/github.com/JalfResi/justext/stoplists.go deleted file mode 100644 index ee6cfc0..0000000 --- a/vendor/github.com/JalfResi/justext/stoplists.go +++ /dev/null @@ -1,158 +0,0 @@ -package justext - -import ( - "bytes" - "errors" - "fmt" - "os" -) - -type ResourceFunc func() ([]byte, error) - -var stoplists = map[string]ResourceFunc{} - -func RegisterStoplist(name string, resourceFunc ResourceFunc) { - stoplists[name] = resourceFunc -} - -/* -{ - "Afrikaans": AfrikaansStoplist, - "Albanian": AlbanianStoplist, - "Arabic": ArabicStoplist, - "Aragonese": AragoneseStoplist, - "Armenian": ArmenianStoplist, - "Aromanian": AromanianStoplist, - "Asturian": AsturianStoplist, - "Azerbaijani": AzerbaijaniStoplist, - "Basque": BasqueStoplist, - "Belarusian": BelarusianStoplist, - "Belarusian_Taraskievica": Belarusian_TaraskievicaStoplist, - "Bengali": BengaliStoplist, - "Bishnupriya_Manipuri": Bishnupriya_ManipuriStoplist, - "Bosnian": BosnianStoplist, - "Breton": BretonStoplist, - "Bulgarian": BulgarianStoplist, - "Catalan": CatalanStoplist, - "Cebuano": CebuanoStoplist, - "Chuvash": ChuvashStoplist, - "Croatian": CroatianStoplist, - "Czech": CzechStoplist, - "Danish": DanishStoplist, - "Dutch": DutchStoplist, - "English": EnglishStoplist, - "Esperanto": EsperantoStoplist, - "Estonian": EstonianStoplist, - "Finnish": FinnishStoplist, - "French": FrenchStoplist, - "Galician": GalicianStoplist, - "Georgian": GeorgianStoplist, - "German": GermanStoplist, - "Greek": GreekStoplist, - "Gujarati": GujaratiStoplist, - "Haitian": HaitianStoplist, - "Hebrew": HebrewStoplist, - "Hindi": HindiStoplist, - "Hungarian": HungarianStoplist, - "Icelandic": IcelandicStoplist, - "Ido": IdoStoplist, - "Igbo": IgboStoplist, - "Indonesian": IndonesianStoplist, - "Irish": IrishStoplist, - "Italian": ItalianStoplist, - "Javanese": JavaneseStoplist, - "Kannada": KannadaStoplist, - "Kazakh": KazakhStoplist, - "Korean": KoreanStoplist, - "Kurdish": KurdishStoplist, - "Kyrgyz": KyrgyzStoplist, - "Latin": LatinStoplist, - "Latvian": LatvianStoplist, - "Lithuanian": LithuanianStoplist, - "Lombard": LombardStoplist, - "Low_Saxon": Low_SaxonStoplist, - "Luxembourgish": LuxembourgishStoplist, - "Macedonian": MacedonianStoplist, - "Malay": MalayStoplist, - "Malayalam": MalayalamStoplist, - "Maltese": MalteseStoplist, - "Marathi": MarathiStoplist, - "Neapolitan": NeapolitanStoplist, - "Nepali": NepaliStoplist, - "Newar": NewarStoplist, - "Norwegian_Bokmal": Norwegian_BokmalStoplist, - "Norwegian_Nynorsk": Norwegian_NynorskStoplist, - "Occitan": OccitanStoplist, - "Persian": PersianStoplist, - "Piedmontese": PiedmonteseStoplist, - "Polish": PolishStoplist, - "Portuguese": PortugueseStoplist, - "Quechua": QuechuaStoplist, - "Romanian": RomanianStoplist, - "Russian": RussianStoplist, - "Samogitian": SamogitianStoplist, - "Serbian": SerbianStoplist, - "Serbo_Croatian": Serbo_CroatianStoplist, - "Sicilian": SicilianStoplist, - "Simple_English": Simple_EnglishStoplist, - "Slovak": SlovakStoplist, - "Slovenian": SlovenianStoplist, - "Spanish": SpanishStoplist, - "Sundanese": SundaneseStoplist, - "Swahili": SwahiliStoplist, - "Swedish": SwedishStoplist, - "Tagalog": TagalogStoplist, - "Tamil": TamilStoplist, - "Telugu": TeluguStoplist, - "Turkish": TurkishStoplist, - "Turkmen": TurkmenStoplist, - "Ukrainian": UkrainianStoplist, - "Urdu": UrduStoplist, - "Uzbek": UzbekStoplist, - "Vietnamese": VietnameseStoplist, - "Volapuk": VolapukStoplist, - "Walloon": WalloonStoplist, - "Waray_Waray": Waray_WarayStoplist, - "Welsh": WelshStoplist, - "West_Frisian": West_FrisianStoplist, - "Western_Panjabi": Western_PanjabiStoplist, - "Yoruba": YorubaStoplist, -} -*/ - -func ReadStoplist(filename string) (map[string]bool, error) { - data, err := os.ReadFile(filename) - if err != nil { - return nil, err - } - - db := bytes.Split(data, []uint8("\n")) - - // Convert to map - var list = make(map[string]bool) - for _, val := range db { - list[string(val)] = true - } - - return list, nil -} - -func GetStoplist(language string) (map[string]bool, error) { - if _, ok := stoplists[language]; !ok { - return nil, errors.New(fmt.Sprintf("Language %s not supported", language)) - } - - data, err := stoplists[language]() - if err != nil { - return nil, err - } - db := bytes.Split(data, []uint8("\n")) - - // Convert to map - var list = make(map[string]bool) - for _, val := range db { - list[string(val)] = true - } - - return list, nil -} diff --git a/vendor/github.com/JalfResi/justext/writer.go b/vendor/github.com/JalfResi/justext/writer.go deleted file mode 100644 index 62f2cc5..0000000 --- a/vendor/github.com/JalfResi/justext/writer.go +++ /dev/null @@ -1,161 +0,0 @@ -package justext - -import ( - "errors" - "fmt" - "io" - "log" - "strings" - "text/template" -) - -// NOTE: -// Make a new type: -// type JusText []paragraphs - -const ( - MODE_DEFAULT = 1 - MODE_DETAILED = 2 -) - -type Writer struct { - Mode int - NoBoilerplate bool - Stoplist map[string]bool - w io.Writer -} - -func NewWriter(w io.Writer) *Writer { - return &Writer{ - Mode: MODE_DEFAULT, - NoBoilerplate: true, - w: w, - } -} - -func (w *Writer) WriteAll(paragraphs []*Paragraph) error { - switch w.Mode { - case MODE_DEFAULT: - return w.outputDefault(paragraphs) - break - - case MODE_DETAILED: - return w.outputDetailed(paragraphs) - break - - default: - return errors.New("Unrecognised mode") - } - - return nil -} - -func IsGood(args ...interface{}) (result bool) { - result = true - for _, val := range args { - if val != "good" { - result = false - return - } - } - return -} - -func (w *Writer) outputDefault(paragraphs []*Paragraph) error { - templateData := DefaultTemplate() - t := template.New("default") - t.Funcs(template.FuncMap{"TrimSpace": strings.TrimSpace}) - t.Funcs(template.FuncMap{"IsGood": IsGood}) - - templ, err := t.Parse(string(templateData)) - if err != nil { - return err - } - - var data = struct { - Paragraphs []*Paragraph - NoBoilerplate bool - }{paragraphs, w.NoBoilerplate} - - return templ.Execute(w.w, data) -} - -func (w *Writer) outputDetailed(paragraphs []*Paragraph) error { - templateData := DetailedTemplate() - var markStopwords func(args ...interface{}) string - markStopwords = func(args ...interface{}) string { - - var output string = "" - words := strings.Split(args[0].(string), " ") - for _, word := range words { - if _, ok := w.Stoplist[strings.TrimSpace(word)]; ok { - output = fmt.Sprintf("%s%s ", output, word) - } else { - output = fmt.Sprintf("%s%s ", output, word) - } - } - - return output - } - - t := template.New("detailed") - t.Funcs(template.FuncMap{"TrimSpace": strings.TrimSpace}) - t.Funcs(template.FuncMap{"MarkStopwords": markStopwords}) - - templ, err := t.Parse(string(templateData)) - if err != nil { - return err - } - - var data = struct { - Paragraphs []*Paragraph - }{paragraphs} - - return templ.Execute(w.w, data) -} - -func (w *Writer) OutputDebug(paragraphs []*Paragraph) { - for _, paragraph := range paragraphs { - log.Println(paragraph.DomPath) - log.Println("\tfinal class: ", paragraph.Class) - log.Println("\tcontext-free class: ", paragraph.CfClass) - log.Println("\theading: ", paragraph.Heading) - log.Println("\tlength (in characters): ", len(paragraph.Text)) - log.Println("\tnumber of characters with links: ", paragraph.LinkedCharCount) - log.Println("\tlink density: ", paragraph.LinkDensity) - log.Println("\tnumber of words: ", paragraph.WordCount) - log.Println("\tnumber of stop words: ", paragraph.StopwordCount) - log.Println("\tstop word density: ", paragraph.StopwordDensity) - } -} - -// TO-DO: -// Need an output feature that returns a de-duped space separated text file of all the -// words in the output document sans-boilerplate. Also needs option to exclude stoplist -// words from that output too. - -// TO-DO: -// Need an output feature that returns the content of a stop list (or do we just make -// the function getStoplist public? Might be a lot easier...) - -/* -func (w *Writer) outputKrdwrd(paragraphs []*Paragraph) (output string) { - for _, paragraph := range paragraphs { - var cls int - if paragraph.Class == "good" || paragraph.Class == "neargood" { - if paragraph.Heading { - cls = 2 - } else { - cls = 3 - } - } else { - cls = 1 - } - for _, textNode := range paragraph.TextNodes { - output = fmt.Sprintf("%s%i\t%s", output, cls, strings.TrimSpace(textNode)) - } - } - - return output -} -*/ diff --git a/vendor/github.com/PuerkitoBio/goquery/.gitattributes b/vendor/github.com/PuerkitoBio/goquery/.gitattributes deleted file mode 100644 index 0cc26ec..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -testdata/* linguist-vendored diff --git a/vendor/github.com/PuerkitoBio/goquery/.gitignore b/vendor/github.com/PuerkitoBio/goquery/.gitignore deleted file mode 100644 index 970381c..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# editor temporary files -*.sublime-* -.DS_Store -*.swp -#*.*# -tags - -# direnv config -.env* - -# test binaries -*.test - -# coverage and profilte outputs -*.out - diff --git a/vendor/github.com/PuerkitoBio/goquery/LICENSE b/vendor/github.com/PuerkitoBio/goquery/LICENSE deleted file mode 100644 index 25372c2..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) 2012-2021, Martin Angers & Contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -* Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/PuerkitoBio/goquery/README.md b/vendor/github.com/PuerkitoBio/goquery/README.md deleted file mode 100644 index 6f4619d..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/README.md +++ /dev/null @@ -1,211 +0,0 @@ -# goquery - a little like that j-thing, only in Go - -[![Build Status](https://github.com/PuerkitoBio/goquery/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/PuerkitoBio/goquery/actions) -[![Go Reference](https://pkg.go.dev/badge/github.com/PuerkitoBio/goquery.svg)](https://pkg.go.dev/github.com/PuerkitoBio/goquery) -[![Sourcegraph Badge](https://sourcegraph.com/github.com/PuerkitoBio/goquery/-/badge.svg)](https://sourcegraph.com/github.com/PuerkitoBio/goquery?badge) - -goquery brings a syntax and a set of features similar to [jQuery][] to the [Go language][go]. It is based on Go's [net/html package][html] and the CSS Selector library [cascadia][]. Since the net/html parser returns nodes, and not a full-featured DOM tree, jQuery's stateful manipulation functions (like height(), css(), detach()) have been left off. - -Also, because the net/html parser requires UTF-8 encoding, so does goquery: it is the caller's responsibility to ensure that the source document provides UTF-8 encoded HTML. See the [wiki][] for various options to do this. - -Syntax-wise, it is as close as possible to jQuery, with the same function names when possible, and that warm and fuzzy chainable interface. jQuery being the ultra-popular library that it is, I felt that writing a similar HTML-manipulating library was better to follow its API than to start anew (in the same spirit as Go's `fmt` package), even though some of its methods are less than intuitive (looking at you, [index()][index]...). - -## Table of Contents - -* [Installation](#installation) -* [Changelog](#changelog) -* [API](#api) -* [Examples](#examples) -* [Related Projects](#related-projects) -* [Support](#support) -* [License](#license) - -## Installation - -Required Go version: - -* Starting with version `v1.10.0` of goquery, Go 1.23+ is required due to the use of function-based iterators. -* For `v1.9.0` of goquery, Go 1.18+ is required due to the use of generics. -* For previous goquery versions, a Go version of 1.1+ was required because of the `net/html` dependency. - -Ongoing goquery development is tested on the latest 2 versions of Go. - - $ go get github.com/PuerkitoBio/goquery - -(optional) To run unit tests: - - $ cd $GOPATH/src/github.com/PuerkitoBio/goquery - $ go test - -(optional) To run benchmarks (warning: it runs for a few minutes): - - $ cd $GOPATH/src/github.com/PuerkitoBio/goquery - $ go test -bench=".*" - -## Changelog - -**Note that goquery's API is now stable, and will not break.** - -* **2024-09-06 (v1.10.0)** : Add `EachIter` which provides an iterator that can be used in `for..range` loops on the `*Selection` object. **goquery now requires Go version 1.23+** (thanks [@amikai](https://github.com/amikai)). -* **2024-09-06 (v1.9.3)** : Update `go.mod` dependencies. -* **2024-04-29 (v1.9.2)** : Update `go.mod` dependencies. -* **2024-02-29 (v1.9.1)** : Improve allocation and performance of the `Map` function and `Selection.Map` method, better document the cascadia differences (thanks [@jwilsson](https://github.com/jwilsson)). -* **2024-02-22 (v1.9.0)** : Add a generic `Map` function, **goquery now requires Go version 1.18+** (thanks [@Fesaa](https://github.com/Fesaa)). -* **2023-02-18 (v1.8.1)** : Update `go.mod` dependencies, update CI workflow. -* **2021-10-25 (v1.8.0)** : Add `Render` function to render a `Selection` to an `io.Writer` (thanks [@anthonygedeon](https://github.com/anthonygedeon)). -* **2021-07-11 (v1.7.1)** : Update go.mod dependencies and add dependabot config (thanks [@jauderho](https://github.com/jauderho)). -* **2021-06-14 (v1.7.0)** : Add `Single` and `SingleMatcher` functions to optimize first-match selection (thanks [@gdollardollar](https://github.com/gdollardollar)). -* **2021-01-11 (v1.6.1)** : Fix panic when calling `{Prepend,Append,Set}Html` on a `Selection` that contains non-Element nodes. -* **2020-10-08 (v1.6.0)** : Parse html in context of the container node for all functions that deal with html strings (`AfterHtml`, `AppendHtml`, etc.). Thanks to [@thiemok][thiemok] and [@davidjwilkins][djw] for their work on this. -* **2020-02-04 (v1.5.1)** : Update module dependencies. -* **2018-11-15 (v1.5.0)** : Go module support (thanks @Zaba505). -* **2018-06-07 (v1.4.1)** : Add `NewDocumentFromReader` examples. -* **2018-03-24 (v1.4.0)** : Deprecate `NewDocument(url)` and `NewDocumentFromResponse(response)`. -* **2018-01-28 (v1.3.0)** : Add `ToEnd` constant to `Slice` until the end of the selection (thanks to @davidjwilkins for raising the issue). -* **2018-01-11 (v1.2.0)** : Add `AddBack*` and deprecate `AndSelf` (thanks to @davidjwilkins). -* **2017-02-12 (v1.1.0)** : Add `SetHtml` and `SetText` (thanks to @glebtv). -* **2016-12-29 (v1.0.2)** : Optimize allocations for `Selection.Text` (thanks to @radovskyb). -* **2016-08-28 (v1.0.1)** : Optimize performance for large documents. -* **2016-07-27 (v1.0.0)** : Tag version 1.0.0. -* **2016-06-15** : Invalid selector strings internally compile to a `Matcher` implementation that never matches any node (instead of a panic). So for example, `doc.Find("~")` returns an empty `*Selection` object. -* **2016-02-02** : Add `NodeName` utility function similar to the DOM's `nodeName` property. It returns the tag name of the first element in a selection, and other relevant values of non-element nodes (see [doc][] for details). Add `OuterHtml` utility function similar to the DOM's `outerHTML` property (named `OuterHtml` in small caps for consistency with the existing `Html` method on the `Selection`). -* **2015-04-20** : Add `AttrOr` helper method to return the attribute's value or a default value if absent. Thanks to [piotrkowalczuk][piotr]. -* **2015-02-04** : Add more manipulation functions - Prepend* - thanks again to [Andrew Stone][thatguystone]. -* **2014-11-28** : Add more manipulation functions - ReplaceWith*, Wrap* and Unwrap - thanks again to [Andrew Stone][thatguystone]. -* **2014-11-07** : Add manipulation functions (thanks to [Andrew Stone][thatguystone]) and `*Matcher` functions, that receive compiled cascadia selectors instead of selector strings, thus avoiding potential panics thrown by goquery via `cascadia.MustCompile` calls. This results in better performance (selectors can be compiled once and reused) and more idiomatic error handling (you can handle cascadia's compilation errors, instead of recovering from panics, which had been bugging me for a long time). Note that the actual type expected is a `Matcher` interface, that `cascadia.Selector` implements. Other matcher implementations could be used. -* **2014-11-06** : Change import paths of net/html to golang.org/x/net/html (see https://groups.google.com/forum/#!topic/golang-nuts/eD8dh3T9yyA). Make sure to update your code to use the new import path too when you call goquery with `html.Node`s. -* **v0.3.2** : Add `NewDocumentFromReader()` (thanks jweir) which allows creating a goquery document from an io.Reader. -* **v0.3.1** : Add `NewDocumentFromResponse()` (thanks assassingj) which allows creating a goquery document from an http response. -* **v0.3.0** : Add `EachWithBreak()` which allows to break out of an `Each()` loop by returning false. This function was added instead of changing the existing `Each()` to avoid breaking compatibility. -* **v0.2.1** : Make go-getable, now that [go.net/html is Go1.0-compatible][gonet] (thanks to @matrixik for pointing this out). -* **v0.2.0** : Add support for negative indices in Slice(). **BREAKING CHANGE** `Document.Root` is removed, `Document` is now a `Selection` itself (a selection of one, the root element, just like `Document.Root` was before). Add jQuery's Closest() method. -* **v0.1.1** : Add benchmarks to use as baseline for refactorings, refactor Next...() and Prev...() methods to use the new html package's linked list features (Next/PrevSibling, FirstChild). Good performance boost (40+% in some cases). -* **v0.1.0** : Initial release. - -## API - -goquery exposes two structs, `Document` and `Selection`, and the `Matcher` interface. Unlike jQuery, which is loaded as part of a DOM document, and thus acts on its containing document, goquery doesn't know which HTML document to act upon. So it needs to be told, and that's what the `Document` type is for. It holds the root document node as the initial Selection value to manipulate. - -jQuery often has many variants for the same function (no argument, a selector string argument, a jQuery object argument, a DOM element argument, ...). Instead of exposing the same features in goquery as a single method with variadic empty interface arguments, statically-typed signatures are used following this naming convention: - -* When the jQuery equivalent can be called with no argument, it has the same name as jQuery for the no argument signature (e.g.: `Prev()`), and the version with a selector string argument is called `XxxFiltered()` (e.g.: `PrevFiltered()`) -* When the jQuery equivalent **requires** one argument, the same name as jQuery is used for the selector string version (e.g.: `Is()`) -* The signatures accepting a jQuery object as argument are defined in goquery as `XxxSelection()` and take a `*Selection` object as argument (e.g.: `FilterSelection()`) -* The signatures accepting a DOM element as argument in jQuery are defined in goquery as `XxxNodes()` and take a variadic argument of type `*html.Node` (e.g.: `FilterNodes()`) -* The signatures accepting a function as argument in jQuery are defined in goquery as `XxxFunction()` and take a function as argument (e.g.: `FilterFunction()`) -* The goquery methods that can be called with a selector string have a corresponding version that take a `Matcher` interface and are defined as `XxxMatcher()` (e.g.: `IsMatcher()`) - -Utility functions that are not in jQuery but are useful in Go are implemented as functions (that take a `*Selection` as parameter), to avoid a potential naming clash on the `*Selection`'s methods (reserved for jQuery-equivalent behaviour). - -The complete [package reference documentation can be found here][doc]. - -Please note that Cascadia's selectors do not necessarily match all supported selectors of jQuery (Sizzle). See the [cascadia project][cascadia] for details. Also, the selectors work more like the DOM's `querySelectorAll`, than jQuery's matchers - they have no concept of contextual matching (for some concrete examples of what that means, see [this ticket](https://github.com/andybalholm/cascadia/issues/61)). In practice, it doesn't matter very often but it's something worth mentioning. Invalid selector strings compile to a `Matcher` that fails to match any node. Behaviour of the various functions that take a selector string as argument follows from that fact, e.g. (where `~` is an invalid selector string): - -* `Find("~")` returns an empty selection because the selector string doesn't match anything. -* `Add("~")` returns a new selection that holds the same nodes as the original selection, because it didn't add any node (selector string didn't match anything). -* `ParentsFiltered("~")` returns an empty selection because the selector string doesn't match anything. -* `ParentsUntil("~")` returns all parents of the selection because the selector string didn't match any element to stop before the top element. - -## Examples - -See some tips and tricks in the [wiki][]. - -Adapted from example_test.go: - -```Go -package main - -import ( - "fmt" - "log" - "net/http" - - "github.com/PuerkitoBio/goquery" -) - -func ExampleScrape() { - // Request the HTML page. - res, err := http.Get("http://metalsucks.net") - if err != nil { - log.Fatal(err) - } - defer res.Body.Close() - if res.StatusCode != 200 { - log.Fatalf("status code error: %d %s", res.StatusCode, res.Status) - } - - // Load the HTML document - doc, err := goquery.NewDocumentFromReader(res.Body) - if err != nil { - log.Fatal(err) - } - - // Find the review items - doc.Find(".left-content article .post-title").Each(func(i int, s *goquery.Selection) { - // For each item found, get the title - title := s.Find("a").Text() - fmt.Printf("Review %d: %s\n", i, title) - }) -} - -func main() { - ExampleScrape() -} -``` - -## Related Projects - -- [Goq][goq], an HTML deserialization and scraping library based on goquery and struct tags. -- [andybalholm/cascadia][cascadia], the CSS selector library used by goquery. -- [suntong/cascadia][cascadiacli], a command-line interface to the cascadia CSS selector library, useful to test selectors. -- [gocolly/colly](https://github.com/gocolly/colly), a lightning fast and elegant Scraping Framework -- [gnulnx/goperf](https://github.com/gnulnx/goperf), a website performance test tool that also fetches static assets. -- [MontFerret/ferret](https://github.com/MontFerret/ferret), declarative web scraping. -- [tacusci/berrycms](https://github.com/tacusci/berrycms), a modern simple to use CMS with easy to write plugins -- [Dataflow kit](https://github.com/slotix/dataflowkit), Web Scraping framework for Gophers. -- [Geziyor](https://github.com/geziyor/geziyor), a fast web crawling & scraping framework for Go. Supports JS rendering. -- [Pagser](https://github.com/foolin/pagser), a simple, easy, extensible, configurable HTML parser to struct based on goquery and struct tags. -- [stitcherd](https://github.com/vhodges/stitcherd), A server for doing server side includes using css selectors and DOM updates. -- [goskyr](https://github.com/jakopako/goskyr), an easily configurable command-line scraper written in Go. -- [goGetJS](https://github.com/davemolk/goGetJS), a tool for extracting, searching, and saving JavaScript files (with optional headless browser). -- [fitter](https://github.com/PxyUp/fitter), a tool for selecting values from JSON, XML, HTML and XPath formatted pages. -- [seltabl](github.com/conneroisu/seltabl), an orm-like package and supporting language server for extracting values from HTML - -## Support - -There are a number of ways you can support the project: - -* Use it, star it, build something with it, spread the word! - - If you do build something open-source or otherwise publicly-visible, let me know so I can add it to the [Related Projects](#related-projects) section! -* Raise issues to improve the project (note: doc typos and clarifications are issues too!) - - Please search existing issues before opening a new one - it may have already been addressed. -* Pull requests: please discuss new code in an issue first, unless the fix is really trivial. - - Make sure new code is tested. - - Be mindful of existing code - PRs that break existing code have a high probability of being declined, unless it fixes a serious issue. -* Sponsor the developer - - See the Github Sponsor button at the top of the repo on github - - or via BuyMeACoffee.com, below - -Buy Me A Coffee - -## License - -The [BSD 3-Clause license][bsd], the same as the [Go language][golic]. Cascadia's license is [here][caslic]. - -[jquery]: https://jquery.com/ -[go]: https://go.dev/ -[cascadia]: https://github.com/andybalholm/cascadia -[cascadiacli]: https://github.com/suntong/cascadia -[bsd]: https://opensource.org/licenses/BSD-3-Clause -[golic]: https://go.dev/LICENSE -[caslic]: https://github.com/andybalholm/cascadia/blob/master/LICENSE -[doc]: https://pkg.go.dev/github.com/PuerkitoBio/goquery -[index]: https://api.jquery.com/index/ -[gonet]: https://github.com/golang/net/ -[html]: https://pkg.go.dev/golang.org/x/net/html -[wiki]: https://github.com/PuerkitoBio/goquery/wiki/Tips-and-tricks -[thatguystone]: https://github.com/thatguystone -[piotr]: https://github.com/piotrkowalczuk -[goq]: https://github.com/andrewstuart/goq -[thiemok]: https://github.com/thiemok -[djw]: https://github.com/davidjwilkins diff --git a/vendor/github.com/PuerkitoBio/goquery/array.go b/vendor/github.com/PuerkitoBio/goquery/array.go deleted file mode 100644 index 1b1f6cb..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/array.go +++ /dev/null @@ -1,124 +0,0 @@ -package goquery - -import ( - "golang.org/x/net/html" -) - -const ( - maxUint = ^uint(0) - maxInt = int(maxUint >> 1) - - // ToEnd is a special index value that can be used as end index in a call - // to Slice so that all elements are selected until the end of the Selection. - // It is equivalent to passing (*Selection).Length(). - ToEnd = maxInt -) - -// First reduces the set of matched elements to the first in the set. -// It returns a new Selection object, and an empty Selection object if the -// the selection is empty. -func (s *Selection) First() *Selection { - return s.Eq(0) -} - -// Last reduces the set of matched elements to the last in the set. -// It returns a new Selection object, and an empty Selection object if -// the selection is empty. -func (s *Selection) Last() *Selection { - return s.Eq(-1) -} - -// Eq reduces the set of matched elements to the one at the specified index. -// If a negative index is given, it counts backwards starting at the end of the -// set. It returns a new Selection object, and an empty Selection object if the -// index is invalid. -func (s *Selection) Eq(index int) *Selection { - if index < 0 { - index += len(s.Nodes) - } - - if index >= len(s.Nodes) || index < 0 { - return newEmptySelection(s.document) - } - - return s.Slice(index, index+1) -} - -// Slice reduces the set of matched elements to a subset specified by a range -// of indices. The start index is 0-based and indicates the index of the first -// element to select. The end index is 0-based and indicates the index at which -// the elements stop being selected (the end index is not selected). -// -// The indices may be negative, in which case they represent an offset from the -// end of the selection. -// -// The special value ToEnd may be specified as end index, in which case all elements -// until the end are selected. This works both for a positive and negative start -// index. -func (s *Selection) Slice(start, end int) *Selection { - if start < 0 { - start += len(s.Nodes) - } - if end == ToEnd { - end = len(s.Nodes) - } else if end < 0 { - end += len(s.Nodes) - } - return pushStack(s, s.Nodes[start:end]) -} - -// Get retrieves the underlying node at the specified index. -// Get without parameter is not implemented, since the node array is available -// on the Selection object. -func (s *Selection) Get(index int) *html.Node { - if index < 0 { - index += len(s.Nodes) // Negative index gets from the end - } - return s.Nodes[index] -} - -// Index returns the position of the first element within the Selection object -// relative to its sibling elements. -func (s *Selection) Index() int { - if len(s.Nodes) > 0 { - return newSingleSelection(s.Nodes[0], s.document).PrevAll().Length() - } - return -1 -} - -// IndexSelector returns the position of the first element within the -// Selection object relative to the elements matched by the selector, or -1 if -// not found. -func (s *Selection) IndexSelector(selector string) int { - if len(s.Nodes) > 0 { - sel := s.document.Find(selector) - return indexInSlice(sel.Nodes, s.Nodes[0]) - } - return -1 -} - -// IndexMatcher returns the position of the first element within the -// Selection object relative to the elements matched by the matcher, or -1 if -// not found. -func (s *Selection) IndexMatcher(m Matcher) int { - if len(s.Nodes) > 0 { - sel := s.document.FindMatcher(m) - return indexInSlice(sel.Nodes, s.Nodes[0]) - } - return -1 -} - -// IndexOfNode returns the position of the specified node within the Selection -// object, or -1 if not found. -func (s *Selection) IndexOfNode(node *html.Node) int { - return indexInSlice(s.Nodes, node) -} - -// IndexOfSelection returns the position of the first node in the specified -// Selection object within this Selection object, or -1 if not found. -func (s *Selection) IndexOfSelection(sel *Selection) int { - if sel != nil && len(sel.Nodes) > 0 { - return indexInSlice(s.Nodes, sel.Nodes[0]) - } - return -1 -} diff --git a/vendor/github.com/PuerkitoBio/goquery/doc.go b/vendor/github.com/PuerkitoBio/goquery/doc.go deleted file mode 100644 index 71146a7..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/doc.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (c) 2012-2016, Martin Angers & Contributors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation and/or -// other materials provided with the distribution. -// * Neither the name of the author nor the names of its contributors may be used to -// endorse or promote products derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS -// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY -// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* -Package goquery implements features similar to jQuery, including the chainable -syntax, to manipulate and query an HTML document. - -It brings a syntax and a set of features similar to jQuery to the Go language. -It is based on Go's net/html package and the CSS Selector library cascadia. -Since the net/html parser returns nodes, and not a full-featured DOM -tree, jQuery's stateful manipulation functions (like height(), css(), detach()) -have been left off. - -Also, because the net/html parser requires UTF-8 encoding, so does goquery: it is -the caller's responsibility to ensure that the source document provides UTF-8 encoded HTML. -See the repository's wiki for various options on how to do this. - -Syntax-wise, it is as close as possible to jQuery, with the same method names when -possible, and that warm and fuzzy chainable interface. jQuery being the -ultra-popular library that it is, writing a similar HTML-manipulating -library was better to follow its API than to start anew (in the same spirit as -Go's fmt package), even though some of its methods are less than intuitive (looking -at you, index()...). - -It is hosted on GitHub, along with additional documentation in the README.md -file: https://github.com/puerkitobio/goquery - -Please note that because of the net/html dependency, goquery requires Go1.1+. - -The various methods are split into files based on the category of behavior. -The three dots (...) indicate that various "overloads" are available. - -* array.go : array-like positional manipulation of the selection. - - Eq() - - First() - - Get() - - Index...() - - Last() - - Slice() - -* expand.go : methods that expand or augment the selection's set. - - Add...() - - AndSelf() - - Union(), which is an alias for AddSelection() - -* filter.go : filtering methods, that reduce the selection's set. - - End() - - Filter...() - - Has...() - - Intersection(), which is an alias of FilterSelection() - - Not...() - -* iteration.go : methods to loop over the selection's nodes. - - Each() - - EachWithBreak() - - Map() - -* manipulation.go : methods for modifying the document - - After...() - - Append...() - - Before...() - - Clone() - - Empty() - - Prepend...() - - Remove...() - - ReplaceWith...() - - Unwrap() - - Wrap...() - - WrapAll...() - - WrapInner...() - -* property.go : methods that inspect and get the node's properties values. - - Attr*(), RemoveAttr(), SetAttr() - - AddClass(), HasClass(), RemoveClass(), ToggleClass() - - Html() - - Length() - - Size(), which is an alias for Length() - - Text() - -* query.go : methods that query, or reflect, a node's identity. - - Contains() - - Is...() - -* traversal.go : methods to traverse the HTML document tree. - - Children...() - - Contents() - - Find...() - - Next...() - - Parent[s]...() - - Prev...() - - Siblings...() - -* type.go : definition of the types exposed by goquery. - - Document - - Selection - - Matcher - -* utilities.go : definition of helper functions (and not methods on a *Selection) -that are not part of jQuery, but are useful to goquery. - - NodeName - - OuterHtml -*/ -package goquery diff --git a/vendor/github.com/PuerkitoBio/goquery/expand.go b/vendor/github.com/PuerkitoBio/goquery/expand.go deleted file mode 100644 index af54acf..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/expand.go +++ /dev/null @@ -1,70 +0,0 @@ -package goquery - -import "golang.org/x/net/html" - -// Add adds the selector string's matching nodes to those in the current -// selection and returns a new Selection object. -// The selector string is run in the context of the document of the current -// Selection object. -func (s *Selection) Add(selector string) *Selection { - return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, compileMatcher(selector))...) -} - -// AddMatcher adds the matcher's matching nodes to those in the current -// selection and returns a new Selection object. -// The matcher is run in the context of the document of the current -// Selection object. -func (s *Selection) AddMatcher(m Matcher) *Selection { - return s.AddNodes(findWithMatcher([]*html.Node{s.document.rootNode}, m)...) -} - -// AddSelection adds the specified Selection object's nodes to those in the -// current selection and returns a new Selection object. -func (s *Selection) AddSelection(sel *Selection) *Selection { - if sel == nil { - return s.AddNodes() - } - return s.AddNodes(sel.Nodes...) -} - -// Union is an alias for AddSelection. -func (s *Selection) Union(sel *Selection) *Selection { - return s.AddSelection(sel) -} - -// AddNodes adds the specified nodes to those in the -// current selection and returns a new Selection object. -func (s *Selection) AddNodes(nodes ...*html.Node) *Selection { - return pushStack(s, appendWithoutDuplicates(s.Nodes, nodes, nil)) -} - -// AndSelf adds the previous set of elements on the stack to the current set. -// It returns a new Selection object containing the current Selection combined -// with the previous one. -// Deprecated: This function has been deprecated and is now an alias for AddBack(). -func (s *Selection) AndSelf() *Selection { - return s.AddBack() -} - -// AddBack adds the previous set of elements on the stack to the current set. -// It returns a new Selection object containing the current Selection combined -// with the previous one. -func (s *Selection) AddBack() *Selection { - return s.AddSelection(s.prevSel) -} - -// AddBackFiltered reduces the previous set of elements on the stack to those that -// match the selector string, and adds them to the current set. -// It returns a new Selection object containing the current Selection combined -// with the filtered previous one -func (s *Selection) AddBackFiltered(selector string) *Selection { - return s.AddSelection(s.prevSel.Filter(selector)) -} - -// AddBackMatcher reduces the previous set of elements on the stack to those that match -// the matcher, and adds them to the current set. -// It returns a new Selection object containing the current Selection combined -// with the filtered previous one -func (s *Selection) AddBackMatcher(m Matcher) *Selection { - return s.AddSelection(s.prevSel.FilterMatcher(m)) -} diff --git a/vendor/github.com/PuerkitoBio/goquery/filter.go b/vendor/github.com/PuerkitoBio/goquery/filter.go deleted file mode 100644 index 9138ffb..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/filter.go +++ /dev/null @@ -1,163 +0,0 @@ -package goquery - -import "golang.org/x/net/html" - -// Filter reduces the set of matched elements to those that match the selector string. -// It returns a new Selection object for this subset of matching elements. -func (s *Selection) Filter(selector string) *Selection { - return s.FilterMatcher(compileMatcher(selector)) -} - -// FilterMatcher reduces the set of matched elements to those that match -// the given matcher. It returns a new Selection object for this subset -// of matching elements. -func (s *Selection) FilterMatcher(m Matcher) *Selection { - return pushStack(s, winnow(s, m, true)) -} - -// Not removes elements from the Selection that match the selector string. -// It returns a new Selection object with the matching elements removed. -func (s *Selection) Not(selector string) *Selection { - return s.NotMatcher(compileMatcher(selector)) -} - -// NotMatcher removes elements from the Selection that match the given matcher. -// It returns a new Selection object with the matching elements removed. -func (s *Selection) NotMatcher(m Matcher) *Selection { - return pushStack(s, winnow(s, m, false)) -} - -// FilterFunction reduces the set of matched elements to those that pass the function's test. -// It returns a new Selection object for this subset of elements. -func (s *Selection) FilterFunction(f func(int, *Selection) bool) *Selection { - return pushStack(s, winnowFunction(s, f, true)) -} - -// NotFunction removes elements from the Selection that pass the function's test. -// It returns a new Selection object with the matching elements removed. -func (s *Selection) NotFunction(f func(int, *Selection) bool) *Selection { - return pushStack(s, winnowFunction(s, f, false)) -} - -// FilterNodes reduces the set of matched elements to those that match the specified nodes. -// It returns a new Selection object for this subset of elements. -func (s *Selection) FilterNodes(nodes ...*html.Node) *Selection { - return pushStack(s, winnowNodes(s, nodes, true)) -} - -// NotNodes removes elements from the Selection that match the specified nodes. -// It returns a new Selection object with the matching elements removed. -func (s *Selection) NotNodes(nodes ...*html.Node) *Selection { - return pushStack(s, winnowNodes(s, nodes, false)) -} - -// FilterSelection reduces the set of matched elements to those that match a -// node in the specified Selection object. -// It returns a new Selection object for this subset of elements. -func (s *Selection) FilterSelection(sel *Selection) *Selection { - if sel == nil { - return pushStack(s, winnowNodes(s, nil, true)) - } - return pushStack(s, winnowNodes(s, sel.Nodes, true)) -} - -// NotSelection removes elements from the Selection that match a node in the specified -// Selection object. It returns a new Selection object with the matching elements removed. -func (s *Selection) NotSelection(sel *Selection) *Selection { - if sel == nil { - return pushStack(s, winnowNodes(s, nil, false)) - } - return pushStack(s, winnowNodes(s, sel.Nodes, false)) -} - -// Intersection is an alias for FilterSelection. -func (s *Selection) Intersection(sel *Selection) *Selection { - return s.FilterSelection(sel) -} - -// Has reduces the set of matched elements to those that have a descendant -// that matches the selector. -// It returns a new Selection object with the matching elements. -func (s *Selection) Has(selector string) *Selection { - return s.HasSelection(s.document.Find(selector)) -} - -// HasMatcher reduces the set of matched elements to those that have a descendant -// that matches the matcher. -// It returns a new Selection object with the matching elements. -func (s *Selection) HasMatcher(m Matcher) *Selection { - return s.HasSelection(s.document.FindMatcher(m)) -} - -// HasNodes reduces the set of matched elements to those that have a -// descendant that matches one of the nodes. -// It returns a new Selection object with the matching elements. -func (s *Selection) HasNodes(nodes ...*html.Node) *Selection { - return s.FilterFunction(func(_ int, sel *Selection) bool { - // Add all nodes that contain one of the specified nodes - for _, n := range nodes { - if sel.Contains(n) { - return true - } - } - return false - }) -} - -// HasSelection reduces the set of matched elements to those that have a -// descendant that matches one of the nodes of the specified Selection object. -// It returns a new Selection object with the matching elements. -func (s *Selection) HasSelection(sel *Selection) *Selection { - if sel == nil { - return s.HasNodes() - } - return s.HasNodes(sel.Nodes...) -} - -// End ends the most recent filtering operation in the current chain and -// returns the set of matched elements to its previous state. -func (s *Selection) End() *Selection { - if s.prevSel != nil { - return s.prevSel - } - return newEmptySelection(s.document) -} - -// Filter based on the matcher, and the indicator to keep (Filter) or -// to get rid of (Not) the matching elements. -func winnow(sel *Selection, m Matcher, keep bool) []*html.Node { - // Optimize if keep is requested - if keep { - return m.Filter(sel.Nodes) - } - // Use grep - return grep(sel, func(i int, s *Selection) bool { - return !m.Match(s.Get(0)) - }) -} - -// Filter based on an array of nodes, and the indicator to keep (Filter) or -// to get rid of (Not) the matching elements. -func winnowNodes(sel *Selection, nodes []*html.Node, keep bool) []*html.Node { - if len(nodes)+len(sel.Nodes) < minNodesForSet { - return grep(sel, func(i int, s *Selection) bool { - return isInSlice(nodes, s.Get(0)) == keep - }) - } - - set := make(map[*html.Node]bool) - for _, n := range nodes { - set[n] = true - } - return grep(sel, func(i int, s *Selection) bool { - return set[s.Get(0)] == keep - }) -} - -// Filter based on a function test, and the indicator to keep (Filter) or -// to get rid of (Not) the matching elements. -func winnowFunction(sel *Selection, f func(int, *Selection) bool, keep bool) []*html.Node { - return grep(sel, func(i int, s *Selection) bool { - return f(i, s) == keep - }) -} diff --git a/vendor/github.com/PuerkitoBio/goquery/iteration.go b/vendor/github.com/PuerkitoBio/goquery/iteration.go deleted file mode 100644 index 1ca5245..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/iteration.go +++ /dev/null @@ -1,61 +0,0 @@ -package goquery - -import "iter" - -// Each iterates over a Selection object, executing a function for each -// matched element. It returns the current Selection object. The function -// f is called for each element in the selection with the index of the -// element in that selection starting at 0, and a *Selection that contains -// only that element. -func (s *Selection) Each(f func(int, *Selection)) *Selection { - for i, n := range s.Nodes { - f(i, newSingleSelection(n, s.document)) - } - return s -} - -// EachIter returns an iterator that yields the Selection object in order. -// The implementation is similar to Each, but it returns an iterator instead. -func (s *Selection) EachIter() iter.Seq2[int, *Selection] { - return func(yield func(int, *Selection) bool) { - for i, n := range s.Nodes { - if !yield(i, newSingleSelection(n, s.document)) { - return - } - } - } -} - -// EachWithBreak iterates over a Selection object, executing a function for each -// matched element. It is identical to Each except that it is possible to break -// out of the loop by returning false in the callback function. It returns the -// current Selection object. -func (s *Selection) EachWithBreak(f func(int, *Selection) bool) *Selection { - for i, n := range s.Nodes { - if !f(i, newSingleSelection(n, s.document)) { - return s - } - } - return s -} - -// Map passes each element in the current matched set through a function, -// producing a slice of string holding the returned values. The function -// f is called for each element in the selection with the index of the -// element in that selection starting at 0, and a *Selection that contains -// only that element. -func (s *Selection) Map(f func(int, *Selection) string) (result []string) { - return Map(s, f) -} - -// Map is the generic version of Selection.Map, allowing any type to be -// returned. -func Map[E any](s *Selection, f func(int, *Selection) E) (result []E) { - result = make([]E, len(s.Nodes)) - - for i, n := range s.Nodes { - result[i] = f(i, newSingleSelection(n, s.document)) - } - - return result -} diff --git a/vendor/github.com/PuerkitoBio/goquery/manipulation.go b/vendor/github.com/PuerkitoBio/goquery/manipulation.go deleted file mode 100644 index 35febf1..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/manipulation.go +++ /dev/null @@ -1,679 +0,0 @@ -package goquery - -import ( - "strings" - - "golang.org/x/net/html" -) - -// After applies the selector from the root document and inserts the matched elements -// after the elements in the set of matched elements. -// -// If one of the matched elements in the selection is not currently in the -// document, it's impossible to insert nodes after it, so it will be ignored. -// -// This follows the same rules as Selection.Append. -func (s *Selection) After(selector string) *Selection { - return s.AfterMatcher(compileMatcher(selector)) -} - -// AfterMatcher applies the matcher from the root document and inserts the matched elements -// after the elements in the set of matched elements. -// -// If one of the matched elements in the selection is not currently in the -// document, it's impossible to insert nodes after it, so it will be ignored. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AfterMatcher(m Matcher) *Selection { - return s.AfterNodes(m.MatchAll(s.document.rootNode)...) -} - -// AfterSelection inserts the elements in the selection after each element in the set of matched -// elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AfterSelection(sel *Selection) *Selection { - return s.AfterNodes(sel.Nodes...) -} - -// AfterHtml parses the html and inserts it after the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AfterHtml(htmlStr string) *Selection { - return s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { - nextSibling := node.NextSibling - for _, n := range nodes { - if node.Parent != nil { - node.Parent.InsertBefore(n, nextSibling) - } - } - }) -} - -// AfterNodes inserts the nodes after each element in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AfterNodes(ns ...*html.Node) *Selection { - return s.manipulateNodes(ns, true, func(sn *html.Node, n *html.Node) { - if sn.Parent != nil { - sn.Parent.InsertBefore(n, sn.NextSibling) - } - }) -} - -// Append appends the elements specified by the selector to the end of each element -// in the set of matched elements, following those rules: -// -// 1) The selector is applied to the root document. -// -// 2) Elements that are part of the document will be moved to the new location. -// -// 3) If there are multiple locations to append to, cloned nodes will be -// appended to all target locations except the last one, which will be moved -// as noted in (2). -func (s *Selection) Append(selector string) *Selection { - return s.AppendMatcher(compileMatcher(selector)) -} - -// AppendMatcher appends the elements specified by the matcher to the end of each element -// in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AppendMatcher(m Matcher) *Selection { - return s.AppendNodes(m.MatchAll(s.document.rootNode)...) -} - -// AppendSelection appends the elements in the selection to the end of each element -// in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AppendSelection(sel *Selection) *Selection { - return s.AppendNodes(sel.Nodes...) -} - -// AppendHtml parses the html and appends it to the set of matched elements. -func (s *Selection) AppendHtml(htmlStr string) *Selection { - return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { - for _, n := range nodes { - node.AppendChild(n) - } - }) -} - -// AppendNodes appends the specified nodes to each node in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) AppendNodes(ns ...*html.Node) *Selection { - return s.manipulateNodes(ns, false, func(sn *html.Node, n *html.Node) { - sn.AppendChild(n) - }) -} - -// Before inserts the matched elements before each element in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) Before(selector string) *Selection { - return s.BeforeMatcher(compileMatcher(selector)) -} - -// BeforeMatcher inserts the matched elements before each element in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) BeforeMatcher(m Matcher) *Selection { - return s.BeforeNodes(m.MatchAll(s.document.rootNode)...) -} - -// BeforeSelection inserts the elements in the selection before each element in the set of matched -// elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) BeforeSelection(sel *Selection) *Selection { - return s.BeforeNodes(sel.Nodes...) -} - -// BeforeHtml parses the html and inserts it before the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) BeforeHtml(htmlStr string) *Selection { - return s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { - for _, n := range nodes { - if node.Parent != nil { - node.Parent.InsertBefore(n, node) - } - } - }) -} - -// BeforeNodes inserts the nodes before each element in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) BeforeNodes(ns ...*html.Node) *Selection { - return s.manipulateNodes(ns, false, func(sn *html.Node, n *html.Node) { - if sn.Parent != nil { - sn.Parent.InsertBefore(n, sn) - } - }) -} - -// Clone creates a deep copy of the set of matched nodes. The new nodes will not be -// attached to the document. -func (s *Selection) Clone() *Selection { - ns := newEmptySelection(s.document) - ns.Nodes = cloneNodes(s.Nodes) - return ns -} - -// Empty removes all children nodes from the set of matched elements. -// It returns the children nodes in a new Selection. -func (s *Selection) Empty() *Selection { - var nodes []*html.Node - - for _, n := range s.Nodes { - for c := n.FirstChild; c != nil; c = n.FirstChild { - n.RemoveChild(c) - nodes = append(nodes, c) - } - } - - return pushStack(s, nodes) -} - -// Prepend prepends the elements specified by the selector to each element in -// the set of matched elements, following the same rules as Append. -func (s *Selection) Prepend(selector string) *Selection { - return s.PrependMatcher(compileMatcher(selector)) -} - -// PrependMatcher prepends the elements specified by the matcher to each -// element in the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) PrependMatcher(m Matcher) *Selection { - return s.PrependNodes(m.MatchAll(s.document.rootNode)...) -} - -// PrependSelection prepends the elements in the selection to each element in -// the set of matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) PrependSelection(sel *Selection) *Selection { - return s.PrependNodes(sel.Nodes...) -} - -// PrependHtml parses the html and prepends it to the set of matched elements. -func (s *Selection) PrependHtml(htmlStr string) *Selection { - return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { - firstChild := node.FirstChild - for _, n := range nodes { - node.InsertBefore(n, firstChild) - } - }) -} - -// PrependNodes prepends the specified nodes to each node in the set of -// matched elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) PrependNodes(ns ...*html.Node) *Selection { - return s.manipulateNodes(ns, true, func(sn *html.Node, n *html.Node) { - // sn.FirstChild may be nil, in which case this functions like - // sn.AppendChild() - sn.InsertBefore(n, sn.FirstChild) - }) -} - -// Remove removes the set of matched elements from the document. -// It returns the same selection, now consisting of nodes not in the document. -func (s *Selection) Remove() *Selection { - for _, n := range s.Nodes { - if n.Parent != nil { - n.Parent.RemoveChild(n) - } - } - - return s -} - -// RemoveFiltered removes from the current set of matched elements those that -// match the selector filter. It returns the Selection of removed nodes. -// -// For example if the selection s contains "

", "

" and "

" -// and s.RemoveFiltered("h2") is called, only the "

" node is removed -// (and returned), while "

" and "

" are kept in the document. -func (s *Selection) RemoveFiltered(selector string) *Selection { - return s.RemoveMatcher(compileMatcher(selector)) -} - -// RemoveMatcher removes from the current set of matched elements those that -// match the Matcher filter. It returns the Selection of removed nodes. -// See RemoveFiltered for additional information. -func (s *Selection) RemoveMatcher(m Matcher) *Selection { - return s.FilterMatcher(m).Remove() -} - -// ReplaceWith replaces each element in the set of matched elements with the -// nodes matched by the given selector. -// It returns the removed elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) ReplaceWith(selector string) *Selection { - return s.ReplaceWithMatcher(compileMatcher(selector)) -} - -// ReplaceWithMatcher replaces each element in the set of matched elements with -// the nodes matched by the given Matcher. -// It returns the removed elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) ReplaceWithMatcher(m Matcher) *Selection { - return s.ReplaceWithNodes(m.MatchAll(s.document.rootNode)...) -} - -// ReplaceWithSelection replaces each element in the set of matched elements with -// the nodes from the given Selection. -// It returns the removed elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) ReplaceWithSelection(sel *Selection) *Selection { - return s.ReplaceWithNodes(sel.Nodes...) -} - -// ReplaceWithHtml replaces each element in the set of matched elements with -// the parsed HTML. -// It returns the removed elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) ReplaceWithHtml(htmlStr string) *Selection { - s.eachNodeHtml(htmlStr, true, func(node *html.Node, nodes []*html.Node) { - nextSibling := node.NextSibling - for _, n := range nodes { - if node.Parent != nil { - node.Parent.InsertBefore(n, nextSibling) - } - } - }) - return s.Remove() -} - -// ReplaceWithNodes replaces each element in the set of matched elements with -// the given nodes. -// It returns the removed elements. -// -// This follows the same rules as Selection.Append. -func (s *Selection) ReplaceWithNodes(ns ...*html.Node) *Selection { - s.AfterNodes(ns...) - return s.Remove() -} - -// SetHtml sets the html content of each element in the selection to -// specified html string. -func (s *Selection) SetHtml(htmlStr string) *Selection { - for _, context := range s.Nodes { - for c := context.FirstChild; c != nil; c = context.FirstChild { - context.RemoveChild(c) - } - } - return s.eachNodeHtml(htmlStr, false, func(node *html.Node, nodes []*html.Node) { - for _, n := range nodes { - node.AppendChild(n) - } - }) -} - -// SetText sets the content of each element in the selection to specified content. -// The provided text string is escaped. -func (s *Selection) SetText(text string) *Selection { - return s.SetHtml(html.EscapeString(text)) -} - -// Unwrap removes the parents of the set of matched elements, leaving the matched -// elements (and their siblings, if any) in their place. -// It returns the original selection. -func (s *Selection) Unwrap() *Selection { - s.Parent().Each(func(i int, ss *Selection) { - // For some reason, jquery allows unwrap to remove the element, so - // allowing it here too. Same for . Why it allows those elements to - // be unwrapped while not allowing body is a mystery to me. - if ss.Nodes[0].Data != "body" { - ss.ReplaceWithSelection(ss.Contents()) - } - }) - - return s -} - -// Wrap wraps each element in the set of matched elements inside the first -// element matched by the given selector. The matched child is cloned before -// being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) Wrap(selector string) *Selection { - return s.WrapMatcher(compileMatcher(selector)) -} - -// WrapMatcher wraps each element in the set of matched elements inside the -// first element matched by the given matcher. The matched child is cloned -// before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapMatcher(m Matcher) *Selection { - return s.wrapNodes(m.MatchAll(s.document.rootNode)...) -} - -// WrapSelection wraps each element in the set of matched elements inside the -// first element in the given Selection. The element is cloned before being -// inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapSelection(sel *Selection) *Selection { - return s.wrapNodes(sel.Nodes...) -} - -// WrapHtml wraps each element in the set of matched elements inside the inner- -// most child of the given HTML. -// -// It returns the original set of elements. -func (s *Selection) WrapHtml(htmlStr string) *Selection { - nodesMap := make(map[string][]*html.Node) - for _, context := range s.Nodes { - var parent *html.Node - if context.Parent != nil { - parent = context.Parent - } else { - parent = &html.Node{Type: html.ElementNode} - } - nodes, found := nodesMap[nodeName(parent)] - if !found { - nodes = parseHtmlWithContext(htmlStr, parent) - nodesMap[nodeName(parent)] = nodes - } - newSingleSelection(context, s.document).wrapAllNodes(cloneNodes(nodes)...) - } - return s -} - -// WrapNode wraps each element in the set of matched elements inside the inner- -// most child of the given node. The given node is copied before being inserted -// into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapNode(n *html.Node) *Selection { - return s.wrapNodes(n) -} - -func (s *Selection) wrapNodes(ns ...*html.Node) *Selection { - s.Each(func(i int, ss *Selection) { - ss.wrapAllNodes(ns...) - }) - - return s -} - -// WrapAll wraps a single HTML structure, matched by the given selector, around -// all elements in the set of matched elements. The matched child is cloned -// before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapAll(selector string) *Selection { - return s.WrapAllMatcher(compileMatcher(selector)) -} - -// WrapAllMatcher wraps a single HTML structure, matched by the given Matcher, -// around all elements in the set of matched elements. The matched child is -// cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapAllMatcher(m Matcher) *Selection { - return s.wrapAllNodes(m.MatchAll(s.document.rootNode)...) -} - -// WrapAllSelection wraps a single HTML structure, the first node of the given -// Selection, around all elements in the set of matched elements. The matched -// child is cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapAllSelection(sel *Selection) *Selection { - return s.wrapAllNodes(sel.Nodes...) -} - -// WrapAllHtml wraps the given HTML structure around all elements in the set of -// matched elements. The matched child is cloned before being inserted into the -// document. -// -// It returns the original set of elements. -func (s *Selection) WrapAllHtml(htmlStr string) *Selection { - var context *html.Node - var nodes []*html.Node - if len(s.Nodes) > 0 { - context = s.Nodes[0] - if context.Parent != nil { - nodes = parseHtmlWithContext(htmlStr, context) - } else { - nodes = parseHtml(htmlStr) - } - } - return s.wrapAllNodes(nodes...) -} - -func (s *Selection) wrapAllNodes(ns ...*html.Node) *Selection { - if len(ns) > 0 { - return s.WrapAllNode(ns[0]) - } - return s -} - -// WrapAllNode wraps the given node around the first element in the Selection, -// making all other nodes in the Selection children of the given node. The node -// is cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapAllNode(n *html.Node) *Selection { - if s.Size() == 0 { - return s - } - - wrap := cloneNode(n) - - first := s.Nodes[0] - if first.Parent != nil { - first.Parent.InsertBefore(wrap, first) - first.Parent.RemoveChild(first) - } - - for c := getFirstChildEl(wrap); c != nil; c = getFirstChildEl(wrap) { - wrap = c - } - - newSingleSelection(wrap, s.document).AppendSelection(s) - - return s -} - -// WrapInner wraps an HTML structure, matched by the given selector, around the -// content of element in the set of matched elements. The matched child is -// cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapInner(selector string) *Selection { - return s.WrapInnerMatcher(compileMatcher(selector)) -} - -// WrapInnerMatcher wraps an HTML structure, matched by the given selector, -// around the content of element in the set of matched elements. The matched -// child is cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapInnerMatcher(m Matcher) *Selection { - return s.wrapInnerNodes(m.MatchAll(s.document.rootNode)...) -} - -// WrapInnerSelection wraps an HTML structure, matched by the given selector, -// around the content of element in the set of matched elements. The matched -// child is cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapInnerSelection(sel *Selection) *Selection { - return s.wrapInnerNodes(sel.Nodes...) -} - -// WrapInnerHtml wraps an HTML structure, matched by the given selector, around -// the content of element in the set of matched elements. The matched child is -// cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapInnerHtml(htmlStr string) *Selection { - nodesMap := make(map[string][]*html.Node) - for _, context := range s.Nodes { - nodes, found := nodesMap[nodeName(context)] - if !found { - nodes = parseHtmlWithContext(htmlStr, context) - nodesMap[nodeName(context)] = nodes - } - newSingleSelection(context, s.document).wrapInnerNodes(cloneNodes(nodes)...) - } - return s -} - -// WrapInnerNode wraps an HTML structure, matched by the given selector, around -// the content of element in the set of matched elements. The matched child is -// cloned before being inserted into the document. -// -// It returns the original set of elements. -func (s *Selection) WrapInnerNode(n *html.Node) *Selection { - return s.wrapInnerNodes(n) -} - -func (s *Selection) wrapInnerNodes(ns ...*html.Node) *Selection { - if len(ns) == 0 { - return s - } - - s.Each(func(i int, s *Selection) { - contents := s.Contents() - - if contents.Size() > 0 { - contents.wrapAllNodes(ns...) - } else { - s.AppendNodes(cloneNode(ns[0])) - } - }) - - return s -} - -func parseHtml(h string) []*html.Node { - // Errors are only returned when the io.Reader returns any error besides - // EOF, but strings.Reader never will - nodes, err := html.ParseFragment(strings.NewReader(h), &html.Node{Type: html.ElementNode}) - if err != nil { - panic("goquery: failed to parse HTML: " + err.Error()) - } - return nodes -} - -func parseHtmlWithContext(h string, context *html.Node) []*html.Node { - // Errors are only returned when the io.Reader returns any error besides - // EOF, but strings.Reader never will - nodes, err := html.ParseFragment(strings.NewReader(h), context) - if err != nil { - panic("goquery: failed to parse HTML: " + err.Error()) - } - return nodes -} - -// Get the first child that is an ElementNode -func getFirstChildEl(n *html.Node) *html.Node { - c := n.FirstChild - for c != nil && c.Type != html.ElementNode { - c = c.NextSibling - } - return c -} - -// Deep copy a slice of nodes. -func cloneNodes(ns []*html.Node) []*html.Node { - cns := make([]*html.Node, 0, len(ns)) - - for _, n := range ns { - cns = append(cns, cloneNode(n)) - } - - return cns -} - -// Deep copy a node. The new node has clones of all the original node's -// children but none of its parents or siblings. -func cloneNode(n *html.Node) *html.Node { - nn := &html.Node{ - Type: n.Type, - DataAtom: n.DataAtom, - Data: n.Data, - Attr: make([]html.Attribute, len(n.Attr)), - } - - copy(nn.Attr, n.Attr) - for c := n.FirstChild; c != nil; c = c.NextSibling { - nn.AppendChild(cloneNode(c)) - } - - return nn -} - -func (s *Selection) manipulateNodes(ns []*html.Node, reverse bool, - f func(sn *html.Node, n *html.Node)) *Selection { - - lasti := s.Size() - 1 - - // net.Html doesn't provide document fragments for insertion, so to get - // things in the correct order with After() and Prepend(), the callback - // needs to be called on the reverse of the nodes. - if reverse { - for i, j := 0, len(ns)-1; i < j; i, j = i+1, j-1 { - ns[i], ns[j] = ns[j], ns[i] - } - } - - for i, sn := range s.Nodes { - for _, n := range ns { - if i != lasti { - f(sn, cloneNode(n)) - } else { - if n.Parent != nil { - n.Parent.RemoveChild(n) - } - f(sn, n) - } - } - } - - return s -} - -// eachNodeHtml parses the given html string and inserts the resulting nodes in the dom with the mergeFn. -// The parsed nodes are inserted for each element of the selection. -// isParent can be used to indicate that the elements of the selection should be treated as the parent for the parsed html. -// A cache is used to avoid parsing the html multiple times should the elements of the selection result in the same context. -func (s *Selection) eachNodeHtml(htmlStr string, isParent bool, mergeFn func(n *html.Node, nodes []*html.Node)) *Selection { - // cache to avoid parsing the html for the same context multiple times - nodeCache := make(map[string][]*html.Node) - var context *html.Node - for _, n := range s.Nodes { - if isParent { - context = n.Parent - } else { - if n.Type != html.ElementNode { - continue - } - context = n - } - if context != nil { - nodes, found := nodeCache[nodeName(context)] - if !found { - nodes = parseHtmlWithContext(htmlStr, context) - nodeCache[nodeName(context)] = nodes - } - mergeFn(n, cloneNodes(nodes)) - } - } - return s -} diff --git a/vendor/github.com/PuerkitoBio/goquery/property.go b/vendor/github.com/PuerkitoBio/goquery/property.go deleted file mode 100644 index 411126d..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/property.go +++ /dev/null @@ -1,275 +0,0 @@ -package goquery - -import ( - "bytes" - "regexp" - "strings" - - "golang.org/x/net/html" -) - -var rxClassTrim = regexp.MustCompile("[\t\r\n]") - -// Attr gets the specified attribute's value for the first element in the -// Selection. To get the value for each element individually, use a looping -// construct such as Each or Map method. -func (s *Selection) Attr(attrName string) (val string, exists bool) { - if len(s.Nodes) == 0 { - return - } - return getAttributeValue(attrName, s.Nodes[0]) -} - -// AttrOr works like Attr but returns default value if attribute is not present. -func (s *Selection) AttrOr(attrName, defaultValue string) string { - if len(s.Nodes) == 0 { - return defaultValue - } - - val, exists := getAttributeValue(attrName, s.Nodes[0]) - if !exists { - return defaultValue - } - - return val -} - -// RemoveAttr removes the named attribute from each element in the set of matched elements. -func (s *Selection) RemoveAttr(attrName string) *Selection { - for _, n := range s.Nodes { - removeAttr(n, attrName) - } - - return s -} - -// SetAttr sets the given attribute on each element in the set of matched elements. -func (s *Selection) SetAttr(attrName, val string) *Selection { - for _, n := range s.Nodes { - attr := getAttributePtr(attrName, n) - if attr == nil { - n.Attr = append(n.Attr, html.Attribute{Key: attrName, Val: val}) - } else { - attr.Val = val - } - } - - return s -} - -// Text gets the combined text contents of each element in the set of matched -// elements, including their descendants. -func (s *Selection) Text() string { - var buf bytes.Buffer - - // Slightly optimized vs calling Each: no single selection object created - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.TextNode { - // Keep newlines and spaces, like jQuery - buf.WriteString(n.Data) - } - if n.FirstChild != nil { - for c := n.FirstChild; c != nil; c = c.NextSibling { - f(c) - } - } - } - for _, n := range s.Nodes { - f(n) - } - - return buf.String() -} - -// Size is an alias for Length. -func (s *Selection) Size() int { - return s.Length() -} - -// Length returns the number of elements in the Selection object. -func (s *Selection) Length() int { - return len(s.Nodes) -} - -// Html gets the HTML contents of the first element in the set of matched -// elements. It includes text and comment nodes. -func (s *Selection) Html() (ret string, e error) { - // Since there is no .innerHtml, the HTML content must be re-created from - // the nodes using html.Render. - var buf bytes.Buffer - - if len(s.Nodes) > 0 { - for c := s.Nodes[0].FirstChild; c != nil; c = c.NextSibling { - e = html.Render(&buf, c) - if e != nil { - return - } - } - ret = buf.String() - } - - return -} - -// AddClass adds the given class(es) to each element in the set of matched elements. -// Multiple class names can be specified, separated by a space or via multiple arguments. -func (s *Selection) AddClass(class ...string) *Selection { - classStr := strings.TrimSpace(strings.Join(class, " ")) - - if classStr == "" { - return s - } - - tcls := getClassesSlice(classStr) - for _, n := range s.Nodes { - curClasses, attr := getClassesAndAttr(n, true) - for _, newClass := range tcls { - if !strings.Contains(curClasses, " "+newClass+" ") { - curClasses += newClass + " " - } - } - - setClasses(n, attr, curClasses) - } - - return s -} - -// HasClass determines whether any of the matched elements are assigned the -// given class. -func (s *Selection) HasClass(class string) bool { - class = " " + class + " " - for _, n := range s.Nodes { - classes, _ := getClassesAndAttr(n, false) - if strings.Contains(classes, class) { - return true - } - } - return false -} - -// RemoveClass removes the given class(es) from each element in the set of matched elements. -// Multiple class names can be specified, separated by a space or via multiple arguments. -// If no class name is provided, all classes are removed. -func (s *Selection) RemoveClass(class ...string) *Selection { - var rclasses []string - - classStr := strings.TrimSpace(strings.Join(class, " ")) - remove := classStr == "" - - if !remove { - rclasses = getClassesSlice(classStr) - } - - for _, n := range s.Nodes { - if remove { - removeAttr(n, "class") - } else { - classes, attr := getClassesAndAttr(n, true) - for _, rcl := range rclasses { - classes = strings.Replace(classes, " "+rcl+" ", " ", -1) - } - - setClasses(n, attr, classes) - } - } - - return s -} - -// ToggleClass adds or removes the given class(es) for each element in the set of matched elements. -// Multiple class names can be specified, separated by a space or via multiple arguments. -func (s *Selection) ToggleClass(class ...string) *Selection { - classStr := strings.TrimSpace(strings.Join(class, " ")) - - if classStr == "" { - return s - } - - tcls := getClassesSlice(classStr) - - for _, n := range s.Nodes { - classes, attr := getClassesAndAttr(n, true) - for _, tcl := range tcls { - if strings.Contains(classes, " "+tcl+" ") { - classes = strings.Replace(classes, " "+tcl+" ", " ", -1) - } else { - classes += tcl + " " - } - } - - setClasses(n, attr, classes) - } - - return s -} - -func getAttributePtr(attrName string, n *html.Node) *html.Attribute { - if n == nil { - return nil - } - - for i, a := range n.Attr { - if a.Key == attrName { - return &n.Attr[i] - } - } - return nil -} - -// Private function to get the specified attribute's value from a node. -func getAttributeValue(attrName string, n *html.Node) (val string, exists bool) { - if a := getAttributePtr(attrName, n); a != nil { - val = a.Val - exists = true - } - return -} - -// Get and normalize the "class" attribute from the node. -func getClassesAndAttr(n *html.Node, create bool) (classes string, attr *html.Attribute) { - // Applies only to element nodes - if n.Type == html.ElementNode { - attr = getAttributePtr("class", n) - if attr == nil && create { - n.Attr = append(n.Attr, html.Attribute{ - Key: "class", - Val: "", - }) - attr = &n.Attr[len(n.Attr)-1] - } - } - - if attr == nil { - classes = " " - } else { - classes = rxClassTrim.ReplaceAllString(" "+attr.Val+" ", " ") - } - - return -} - -func getClassesSlice(classes string) []string { - return strings.Split(rxClassTrim.ReplaceAllString(" "+classes+" ", " "), " ") -} - -func removeAttr(n *html.Node, attrName string) { - for i, a := range n.Attr { - if a.Key == attrName { - n.Attr[i], n.Attr[len(n.Attr)-1], n.Attr = - n.Attr[len(n.Attr)-1], html.Attribute{}, n.Attr[:len(n.Attr)-1] - return - } - } -} - -func setClasses(n *html.Node, attr *html.Attribute, classes string) { - classes = strings.TrimSpace(classes) - if classes == "" { - removeAttr(n, "class") - return - } - - attr.Val = classes -} diff --git a/vendor/github.com/PuerkitoBio/goquery/query.go b/vendor/github.com/PuerkitoBio/goquery/query.go deleted file mode 100644 index fe86bf0..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/query.go +++ /dev/null @@ -1,49 +0,0 @@ -package goquery - -import "golang.org/x/net/html" - -// Is checks the current matched set of elements against a selector and -// returns true if at least one of these elements matches. -func (s *Selection) Is(selector string) bool { - return s.IsMatcher(compileMatcher(selector)) -} - -// IsMatcher checks the current matched set of elements against a matcher and -// returns true if at least one of these elements matches. -func (s *Selection) IsMatcher(m Matcher) bool { - if len(s.Nodes) > 0 { - if len(s.Nodes) == 1 { - return m.Match(s.Nodes[0]) - } - return len(m.Filter(s.Nodes)) > 0 - } - - return false -} - -// IsFunction checks the current matched set of elements against a predicate and -// returns true if at least one of these elements matches. -func (s *Selection) IsFunction(f func(int, *Selection) bool) bool { - return s.FilterFunction(f).Length() > 0 -} - -// IsSelection checks the current matched set of elements against a Selection object -// and returns true if at least one of these elements matches. -func (s *Selection) IsSelection(sel *Selection) bool { - return s.FilterSelection(sel).Length() > 0 -} - -// IsNodes checks the current matched set of elements against the specified nodes -// and returns true if at least one of these elements matches. -func (s *Selection) IsNodes(nodes ...*html.Node) bool { - return s.FilterNodes(nodes...).Length() > 0 -} - -// Contains returns true if the specified Node is within, -// at any depth, one of the nodes in the Selection object. -// It is NOT inclusive, to behave like jQuery's implementation, and -// unlike Javascript's .contains, so if the contained -// node is itself in the selection, it returns false. -func (s *Selection) Contains(n *html.Node) bool { - return sliceContains(s.Nodes, n) -} diff --git a/vendor/github.com/PuerkitoBio/goquery/traversal.go b/vendor/github.com/PuerkitoBio/goquery/traversal.go deleted file mode 100644 index c45fa5d..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/traversal.go +++ /dev/null @@ -1,704 +0,0 @@ -package goquery - -import "golang.org/x/net/html" - -type siblingType int - -// Sibling type, used internally when iterating over children at the same -// level (siblings) to specify which nodes are requested. -const ( - siblingPrevUntil siblingType = iota - 3 - siblingPrevAll - siblingPrev - siblingAll - siblingNext - siblingNextAll - siblingNextUntil - siblingAllIncludingNonElements -) - -// Find gets the descendants of each element in the current set of matched -// elements, filtered by a selector. It returns a new Selection object -// containing these matched elements. -// -// Note that as for all methods accepting a selector string, the selector is -// compiled and applied by the cascadia package and inherits its behavior and -// constraints regarding supported selectors. See the note on cascadia in -// the goquery documentation here: -// https://github.com/PuerkitoBio/goquery?tab=readme-ov-file#api -func (s *Selection) Find(selector string) *Selection { - return pushStack(s, findWithMatcher(s.Nodes, compileMatcher(selector))) -} - -// FindMatcher gets the descendants of each element in the current set of matched -// elements, filtered by the matcher. It returns a new Selection object -// containing these matched elements. -func (s *Selection) FindMatcher(m Matcher) *Selection { - return pushStack(s, findWithMatcher(s.Nodes, m)) -} - -// FindSelection gets the descendants of each element in the current -// Selection, filtered by a Selection. It returns a new Selection object -// containing these matched elements. -func (s *Selection) FindSelection(sel *Selection) *Selection { - if sel == nil { - return pushStack(s, nil) - } - return s.FindNodes(sel.Nodes...) -} - -// FindNodes gets the descendants of each element in the current -// Selection, filtered by some nodes. It returns a new Selection object -// containing these matched elements. -func (s *Selection) FindNodes(nodes ...*html.Node) *Selection { - return pushStack(s, mapNodes(nodes, func(i int, n *html.Node) []*html.Node { - if sliceContains(s.Nodes, n) { - return []*html.Node{n} - } - return nil - })) -} - -// Contents gets the children of each element in the Selection, -// including text and comment nodes. It returns a new Selection object -// containing these elements. -func (s *Selection) Contents() *Selection { - return pushStack(s, getChildrenNodes(s.Nodes, siblingAllIncludingNonElements)) -} - -// ContentsFiltered gets the children of each element in the Selection, -// filtered by the specified selector. It returns a new Selection -// object containing these elements. Since selectors only act on Element nodes, -// this function is an alias to ChildrenFiltered unless the selector is empty, -// in which case it is an alias to Contents. -func (s *Selection) ContentsFiltered(selector string) *Selection { - if selector != "" { - return s.ChildrenFiltered(selector) - } - return s.Contents() -} - -// ContentsMatcher gets the children of each element in the Selection, -// filtered by the specified matcher. It returns a new Selection -// object containing these elements. Since matchers only act on Element nodes, -// this function is an alias to ChildrenMatcher. -func (s *Selection) ContentsMatcher(m Matcher) *Selection { - return s.ChildrenMatcher(m) -} - -// Children gets the child elements of each element in the Selection. -// It returns a new Selection object containing these elements. -func (s *Selection) Children() *Selection { - return pushStack(s, getChildrenNodes(s.Nodes, siblingAll)) -} - -// ChildrenFiltered gets the child elements of each element in the Selection, -// filtered by the specified selector. It returns a new -// Selection object containing these elements. -func (s *Selection) ChildrenFiltered(selector string) *Selection { - return filterAndPush(s, getChildrenNodes(s.Nodes, siblingAll), compileMatcher(selector)) -} - -// ChildrenMatcher gets the child elements of each element in the Selection, -// filtered by the specified matcher. It returns a new -// Selection object containing these elements. -func (s *Selection) ChildrenMatcher(m Matcher) *Selection { - return filterAndPush(s, getChildrenNodes(s.Nodes, siblingAll), m) -} - -// Parent gets the parent of each element in the Selection. It returns a -// new Selection object containing the matched elements. -func (s *Selection) Parent() *Selection { - return pushStack(s, getParentNodes(s.Nodes)) -} - -// ParentFiltered gets the parent of each element in the Selection filtered by a -// selector. It returns a new Selection object containing the matched elements. -func (s *Selection) ParentFiltered(selector string) *Selection { - return filterAndPush(s, getParentNodes(s.Nodes), compileMatcher(selector)) -} - -// ParentMatcher gets the parent of each element in the Selection filtered by a -// matcher. It returns a new Selection object containing the matched elements. -func (s *Selection) ParentMatcher(m Matcher) *Selection { - return filterAndPush(s, getParentNodes(s.Nodes), m) -} - -// Closest gets the first element that matches the selector by testing the -// element itself and traversing up through its ancestors in the DOM tree. -func (s *Selection) Closest(selector string) *Selection { - cs := compileMatcher(selector) - return s.ClosestMatcher(cs) -} - -// ClosestMatcher gets the first element that matches the matcher by testing the -// element itself and traversing up through its ancestors in the DOM tree. -func (s *Selection) ClosestMatcher(m Matcher) *Selection { - return pushStack(s, mapNodes(s.Nodes, func(i int, n *html.Node) []*html.Node { - // For each node in the selection, test the node itself, then each parent - // until a match is found. - for ; n != nil; n = n.Parent { - if m.Match(n) { - return []*html.Node{n} - } - } - return nil - })) -} - -// ClosestNodes gets the first element that matches one of the nodes by testing the -// element itself and traversing up through its ancestors in the DOM tree. -func (s *Selection) ClosestNodes(nodes ...*html.Node) *Selection { - set := make(map[*html.Node]bool) - for _, n := range nodes { - set[n] = true - } - return pushStack(s, mapNodes(s.Nodes, func(i int, n *html.Node) []*html.Node { - // For each node in the selection, test the node itself, then each parent - // until a match is found. - for ; n != nil; n = n.Parent { - if set[n] { - return []*html.Node{n} - } - } - return nil - })) -} - -// ClosestSelection gets the first element that matches one of the nodes in the -// Selection by testing the element itself and traversing up through its ancestors -// in the DOM tree. -func (s *Selection) ClosestSelection(sel *Selection) *Selection { - if sel == nil { - return pushStack(s, nil) - } - return s.ClosestNodes(sel.Nodes...) -} - -// Parents gets the ancestors of each element in the current Selection. It -// returns a new Selection object with the matched elements. -func (s *Selection) Parents() *Selection { - return pushStack(s, getParentsNodes(s.Nodes, nil, nil)) -} - -// ParentsFiltered gets the ancestors of each element in the current -// Selection. It returns a new Selection object with the matched elements. -func (s *Selection) ParentsFiltered(selector string) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, nil, nil), compileMatcher(selector)) -} - -// ParentsMatcher gets the ancestors of each element in the current -// Selection. It returns a new Selection object with the matched elements. -func (s *Selection) ParentsMatcher(m Matcher) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, nil, nil), m) -} - -// ParentsUntil gets the ancestors of each element in the Selection, up to but -// not including the element matched by the selector. It returns a new Selection -// object containing the matched elements. -func (s *Selection) ParentsUntil(selector string) *Selection { - return pushStack(s, getParentsNodes(s.Nodes, compileMatcher(selector), nil)) -} - -// ParentsUntilMatcher gets the ancestors of each element in the Selection, up to but -// not including the element matched by the matcher. It returns a new Selection -// object containing the matched elements. -func (s *Selection) ParentsUntilMatcher(m Matcher) *Selection { - return pushStack(s, getParentsNodes(s.Nodes, m, nil)) -} - -// ParentsUntilSelection gets the ancestors of each element in the Selection, -// up to but not including the elements in the specified Selection. It returns a -// new Selection object containing the matched elements. -func (s *Selection) ParentsUntilSelection(sel *Selection) *Selection { - if sel == nil { - return s.Parents() - } - return s.ParentsUntilNodes(sel.Nodes...) -} - -// ParentsUntilNodes gets the ancestors of each element in the Selection, -// up to but not including the specified nodes. It returns a -// new Selection object containing the matched elements. -func (s *Selection) ParentsUntilNodes(nodes ...*html.Node) *Selection { - return pushStack(s, getParentsNodes(s.Nodes, nil, nodes)) -} - -// ParentsFilteredUntil is like ParentsUntil, with the option to filter the -// results based on a selector string. It returns a new Selection -// object containing the matched elements. -func (s *Selection) ParentsFilteredUntil(filterSelector, untilSelector string) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) -} - -// ParentsFilteredUntilMatcher is like ParentsUntilMatcher, with the option to filter the -// results based on a matcher. It returns a new Selection object containing the matched elements. -func (s *Selection) ParentsFilteredUntilMatcher(filter, until Matcher) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, until, nil), filter) -} - -// ParentsFilteredUntilSelection is like ParentsUntilSelection, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) ParentsFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { - return s.ParentsMatcherUntilSelection(compileMatcher(filterSelector), sel) -} - -// ParentsMatcherUntilSelection is like ParentsUntilSelection, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) ParentsMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { - if sel == nil { - return s.ParentsMatcher(filter) - } - return s.ParentsMatcherUntilNodes(filter, sel.Nodes...) -} - -// ParentsFilteredUntilNodes is like ParentsUntilNodes, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) ParentsFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, nil, nodes), compileMatcher(filterSelector)) -} - -// ParentsMatcherUntilNodes is like ParentsUntilNodes, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) ParentsMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { - return filterAndPush(s, getParentsNodes(s.Nodes, nil, nodes), filter) -} - -// Siblings gets the siblings of each element in the Selection. It returns -// a new Selection object containing the matched elements. -func (s *Selection) Siblings() *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil)) -} - -// SiblingsFiltered gets the siblings of each element in the Selection -// filtered by a selector. It returns a new Selection object containing the -// matched elements. -func (s *Selection) SiblingsFiltered(selector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil), compileMatcher(selector)) -} - -// SiblingsMatcher gets the siblings of each element in the Selection -// filtered by a matcher. It returns a new Selection object containing the -// matched elements. -func (s *Selection) SiblingsMatcher(m Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingAll, nil, nil), m) -} - -// Next gets the immediately following sibling of each element in the -// Selection. It returns a new Selection object containing the matched elements. -func (s *Selection) Next() *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil)) -} - -// NextFiltered gets the immediately following sibling of each element in the -// Selection filtered by a selector. It returns a new Selection object -// containing the matched elements. -func (s *Selection) NextFiltered(selector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil), compileMatcher(selector)) -} - -// NextMatcher gets the immediately following sibling of each element in the -// Selection filtered by a matcher. It returns a new Selection object -// containing the matched elements. -func (s *Selection) NextMatcher(m Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNext, nil, nil), m) -} - -// NextAll gets all the following siblings of each element in the -// Selection. It returns a new Selection object containing the matched elements. -func (s *Selection) NextAll() *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil)) -} - -// NextAllFiltered gets all the following siblings of each element in the -// Selection filtered by a selector. It returns a new Selection object -// containing the matched elements. -func (s *Selection) NextAllFiltered(selector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil), compileMatcher(selector)) -} - -// NextAllMatcher gets all the following siblings of each element in the -// Selection filtered by a matcher. It returns a new Selection object -// containing the matched elements. -func (s *Selection) NextAllMatcher(m Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextAll, nil, nil), m) -} - -// Prev gets the immediately preceding sibling of each element in the -// Selection. It returns a new Selection object containing the matched elements. -func (s *Selection) Prev() *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil)) -} - -// PrevFiltered gets the immediately preceding sibling of each element in the -// Selection filtered by a selector. It returns a new Selection object -// containing the matched elements. -func (s *Selection) PrevFiltered(selector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil), compileMatcher(selector)) -} - -// PrevMatcher gets the immediately preceding sibling of each element in the -// Selection filtered by a matcher. It returns a new Selection object -// containing the matched elements. -func (s *Selection) PrevMatcher(m Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrev, nil, nil), m) -} - -// PrevAll gets all the preceding siblings of each element in the -// Selection. It returns a new Selection object containing the matched elements. -func (s *Selection) PrevAll() *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil)) -} - -// PrevAllFiltered gets all the preceding siblings of each element in the -// Selection filtered by a selector. It returns a new Selection object -// containing the matched elements. -func (s *Selection) PrevAllFiltered(selector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil), compileMatcher(selector)) -} - -// PrevAllMatcher gets all the preceding siblings of each element in the -// Selection filtered by a matcher. It returns a new Selection object -// containing the matched elements. -func (s *Selection) PrevAllMatcher(m Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevAll, nil, nil), m) -} - -// NextUntil gets all following siblings of each element up to but not -// including the element matched by the selector. It returns a new Selection -// object containing the matched elements. -func (s *Selection) NextUntil(selector string) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, - compileMatcher(selector), nil)) -} - -// NextUntilMatcher gets all following siblings of each element up to but not -// including the element matched by the matcher. It returns a new Selection -// object containing the matched elements. -func (s *Selection) NextUntilMatcher(m Matcher) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, - m, nil)) -} - -// NextUntilSelection gets all following siblings of each element up to but not -// including the element matched by the Selection. It returns a new Selection -// object containing the matched elements. -func (s *Selection) NextUntilSelection(sel *Selection) *Selection { - if sel == nil { - return s.NextAll() - } - return s.NextUntilNodes(sel.Nodes...) -} - -// NextUntilNodes gets all following siblings of each element up to but not -// including the element matched by the nodes. It returns a new Selection -// object containing the matched elements. -func (s *Selection) NextUntilNodes(nodes ...*html.Node) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingNextUntil, - nil, nodes)) -} - -// PrevUntil gets all preceding siblings of each element up to but not -// including the element matched by the selector. It returns a new Selection -// object containing the matched elements. -func (s *Selection) PrevUntil(selector string) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - compileMatcher(selector), nil)) -} - -// PrevUntilMatcher gets all preceding siblings of each element up to but not -// including the element matched by the matcher. It returns a new Selection -// object containing the matched elements. -func (s *Selection) PrevUntilMatcher(m Matcher) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - m, nil)) -} - -// PrevUntilSelection gets all preceding siblings of each element up to but not -// including the element matched by the Selection. It returns a new Selection -// object containing the matched elements. -func (s *Selection) PrevUntilSelection(sel *Selection) *Selection { - if sel == nil { - return s.PrevAll() - } - return s.PrevUntilNodes(sel.Nodes...) -} - -// PrevUntilNodes gets all preceding siblings of each element up to but not -// including the element matched by the nodes. It returns a new Selection -// object containing the matched elements. -func (s *Selection) PrevUntilNodes(nodes ...*html.Node) *Selection { - return pushStack(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - nil, nodes)) -} - -// NextFilteredUntil is like NextUntil, with the option to filter -// the results based on a selector string. -// It returns a new Selection object containing the matched elements. -func (s *Selection) NextFilteredUntil(filterSelector, untilSelector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, - compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) -} - -// NextFilteredUntilMatcher is like NextUntilMatcher, with the option to filter -// the results based on a matcher. -// It returns a new Selection object containing the matched elements. -func (s *Selection) NextFilteredUntilMatcher(filter, until Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, - until, nil), filter) -} - -// NextFilteredUntilSelection is like NextUntilSelection, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) NextFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { - return s.NextMatcherUntilSelection(compileMatcher(filterSelector), sel) -} - -// NextMatcherUntilSelection is like NextUntilSelection, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) NextMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { - if sel == nil { - return s.NextMatcher(filter) - } - return s.NextMatcherUntilNodes(filter, sel.Nodes...) -} - -// NextFilteredUntilNodes is like NextUntilNodes, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) NextFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, - nil, nodes), compileMatcher(filterSelector)) -} - -// NextMatcherUntilNodes is like NextUntilNodes, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) NextMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingNextUntil, - nil, nodes), filter) -} - -// PrevFilteredUntil is like PrevUntil, with the option to filter -// the results based on a selector string. -// It returns a new Selection object containing the matched elements. -func (s *Selection) PrevFilteredUntil(filterSelector, untilSelector string) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - compileMatcher(untilSelector), nil), compileMatcher(filterSelector)) -} - -// PrevFilteredUntilMatcher is like PrevUntilMatcher, with the option to filter -// the results based on a matcher. -// It returns a new Selection object containing the matched elements. -func (s *Selection) PrevFilteredUntilMatcher(filter, until Matcher) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - until, nil), filter) -} - -// PrevFilteredUntilSelection is like PrevUntilSelection, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) PrevFilteredUntilSelection(filterSelector string, sel *Selection) *Selection { - return s.PrevMatcherUntilSelection(compileMatcher(filterSelector), sel) -} - -// PrevMatcherUntilSelection is like PrevUntilSelection, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) PrevMatcherUntilSelection(filter Matcher, sel *Selection) *Selection { - if sel == nil { - return s.PrevMatcher(filter) - } - return s.PrevMatcherUntilNodes(filter, sel.Nodes...) -} - -// PrevFilteredUntilNodes is like PrevUntilNodes, with the -// option to filter the results based on a selector string. It returns a new -// Selection object containing the matched elements. -func (s *Selection) PrevFilteredUntilNodes(filterSelector string, nodes ...*html.Node) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - nil, nodes), compileMatcher(filterSelector)) -} - -// PrevMatcherUntilNodes is like PrevUntilNodes, with the -// option to filter the results based on a matcher. It returns a new -// Selection object containing the matched elements. -func (s *Selection) PrevMatcherUntilNodes(filter Matcher, nodes ...*html.Node) *Selection { - return filterAndPush(s, getSiblingNodes(s.Nodes, siblingPrevUntil, - nil, nodes), filter) -} - -// Filter and push filters the nodes based on a matcher, and pushes the results -// on the stack, with the srcSel as previous selection. -func filterAndPush(srcSel *Selection, nodes []*html.Node, m Matcher) *Selection { - // Create a temporary Selection with the specified nodes to filter using winnow - sel := &Selection{nodes, srcSel.document, nil} - // Filter based on matcher and push on stack - return pushStack(srcSel, winnow(sel, m, true)) -} - -// Internal implementation of Find that return raw nodes. -func findWithMatcher(nodes []*html.Node, m Matcher) []*html.Node { - // Map nodes to find the matches within the children of each node - return mapNodes(nodes, func(i int, n *html.Node) (result []*html.Node) { - // Go down one level, becausejQuery's Find selects only within descendants - for c := n.FirstChild; c != nil; c = c.NextSibling { - if c.Type == html.ElementNode { - result = append(result, m.MatchAll(c)...) - } - } - return - }) -} - -// Internal implementation to get all parent nodes, stopping at the specified -// node (or nil if no stop). -func getParentsNodes(nodes []*html.Node, stopm Matcher, stopNodes []*html.Node) []*html.Node { - return mapNodes(nodes, func(i int, n *html.Node) (result []*html.Node) { - for p := n.Parent; p != nil; p = p.Parent { - sel := newSingleSelection(p, nil) - if stopm != nil { - if sel.IsMatcher(stopm) { - break - } - } else if len(stopNodes) > 0 { - if sel.IsNodes(stopNodes...) { - break - } - } - if p.Type == html.ElementNode { - result = append(result, p) - } - } - return - }) -} - -// Internal implementation of sibling nodes that return a raw slice of matches. -func getSiblingNodes(nodes []*html.Node, st siblingType, untilm Matcher, untilNodes []*html.Node) []*html.Node { - var f func(*html.Node) bool - - // If the requested siblings are ...Until, create the test function to - // determine if the until condition is reached (returns true if it is) - if st == siblingNextUntil || st == siblingPrevUntil { - f = func(n *html.Node) bool { - if untilm != nil { - // Matcher-based condition - sel := newSingleSelection(n, nil) - return sel.IsMatcher(untilm) - } else if len(untilNodes) > 0 { - // Nodes-based condition - sel := newSingleSelection(n, nil) - return sel.IsNodes(untilNodes...) - } - return false - } - } - - return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { - return getChildrenWithSiblingType(n.Parent, st, n, f) - }) -} - -// Gets the children nodes of each node in the specified slice of nodes, -// based on the sibling type request. -func getChildrenNodes(nodes []*html.Node, st siblingType) []*html.Node { - return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { - return getChildrenWithSiblingType(n, st, nil, nil) - }) -} - -// Gets the children of the specified parent, based on the requested sibling -// type, skipping a specified node if required. -func getChildrenWithSiblingType(parent *html.Node, st siblingType, skipNode *html.Node, - untilFunc func(*html.Node) bool) (result []*html.Node) { - - // Create the iterator function - var iter = func(cur *html.Node) (ret *html.Node) { - // Based on the sibling type requested, iterate the right way - for { - switch st { - case siblingAll, siblingAllIncludingNonElements: - if cur == nil { - // First iteration, start with first child of parent - // Skip node if required - if ret = parent.FirstChild; ret == skipNode && skipNode != nil { - ret = skipNode.NextSibling - } - } else { - // Skip node if required - if ret = cur.NextSibling; ret == skipNode && skipNode != nil { - ret = skipNode.NextSibling - } - } - case siblingPrev, siblingPrevAll, siblingPrevUntil: - if cur == nil { - // Start with previous sibling of the skip node - ret = skipNode.PrevSibling - } else { - ret = cur.PrevSibling - } - case siblingNext, siblingNextAll, siblingNextUntil: - if cur == nil { - // Start with next sibling of the skip node - ret = skipNode.NextSibling - } else { - ret = cur.NextSibling - } - default: - panic("Invalid sibling type.") - } - if ret == nil || ret.Type == html.ElementNode || st == siblingAllIncludingNonElements { - return - } - // Not a valid node, try again from this one - cur = ret - } - } - - for c := iter(nil); c != nil; c = iter(c) { - // If this is an ...Until case, test before append (returns true - // if the until condition is reached) - if st == siblingNextUntil || st == siblingPrevUntil { - if untilFunc(c) { - return - } - } - result = append(result, c) - if st == siblingNext || st == siblingPrev { - // Only one node was requested (immediate next or previous), so exit - return - } - } - return -} - -// Internal implementation of parent nodes that return a raw slice of Nodes. -func getParentNodes(nodes []*html.Node) []*html.Node { - return mapNodes(nodes, func(i int, n *html.Node) []*html.Node { - if n.Parent != nil && n.Parent.Type == html.ElementNode { - return []*html.Node{n.Parent} - } - return nil - }) -} - -// Internal map function used by many traversing methods. Takes the source nodes -// to iterate on and the mapping function that returns an array of nodes. -// Returns an array of nodes mapped by calling the callback function once for -// each node in the source nodes. -func mapNodes(nodes []*html.Node, f func(int, *html.Node) []*html.Node) (result []*html.Node) { - set := make(map[*html.Node]bool) - for i, n := range nodes { - if vals := f(i, n); len(vals) > 0 { - result = appendWithoutDuplicates(result, vals, set) - } - } - return result -} diff --git a/vendor/github.com/PuerkitoBio/goquery/type.go b/vendor/github.com/PuerkitoBio/goquery/type.go deleted file mode 100644 index 6646c14..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/type.go +++ /dev/null @@ -1,203 +0,0 @@ -package goquery - -import ( - "errors" - "io" - "net/http" - "net/url" - - "github.com/andybalholm/cascadia" - "golang.org/x/net/html" -) - -// Document represents an HTML document to be manipulated. Unlike jQuery, which -// is loaded as part of a DOM document, and thus acts upon its containing -// document, GoQuery doesn't know which HTML document to act upon. So it needs -// to be told, and that's what the Document class is for. It holds the root -// document node to manipulate, and can make selections on this document. -type Document struct { - *Selection - Url *url.URL - rootNode *html.Node -} - -// NewDocumentFromNode is a Document constructor that takes a root html Node -// as argument. -func NewDocumentFromNode(root *html.Node) *Document { - return newDocument(root, nil) -} - -// NewDocument is a Document constructor that takes a string URL as argument. -// It loads the specified document, parses it, and stores the root Document -// node, ready to be manipulated. -// -// Deprecated: Use the net/http standard library package to make the request -// and validate the response before calling goquery.NewDocumentFromReader -// with the response's body. -func NewDocument(url string) (*Document, error) { - // Load the URL - res, e := http.Get(url) - if e != nil { - return nil, e - } - return NewDocumentFromResponse(res) -} - -// NewDocumentFromReader returns a Document from an io.Reader. -// It returns an error as second value if the reader's data cannot be parsed -// as html. It does not check if the reader is also an io.Closer, the -// provided reader is never closed by this call. It is the responsibility -// of the caller to close it if required. -func NewDocumentFromReader(r io.Reader) (*Document, error) { - root, e := html.Parse(r) - if e != nil { - return nil, e - } - return newDocument(root, nil), nil -} - -// NewDocumentFromResponse is another Document constructor that takes an http response as argument. -// It loads the specified response's document, parses it, and stores the root Document -// node, ready to be manipulated. The response's body is closed on return. -// -// Deprecated: Use goquery.NewDocumentFromReader with the response's body. -func NewDocumentFromResponse(res *http.Response) (*Document, error) { - if res == nil { - return nil, errors.New("Response is nil") - } - defer res.Body.Close() - if res.Request == nil { - return nil, errors.New("Response.Request is nil") - } - - // Parse the HTML into nodes - root, e := html.Parse(res.Body) - if e != nil { - return nil, e - } - - // Create and fill the document - return newDocument(root, res.Request.URL), nil -} - -// CloneDocument creates a deep-clone of a document. -func CloneDocument(doc *Document) *Document { - return newDocument(cloneNode(doc.rootNode), doc.Url) -} - -// Private constructor, make sure all fields are correctly filled. -func newDocument(root *html.Node, url *url.URL) *Document { - // Create and fill the document - d := &Document{nil, url, root} - d.Selection = newSingleSelection(root, d) - return d -} - -// Selection represents a collection of nodes matching some criteria. The -// initial Selection can be created by using Document.Find, and then -// manipulated using the jQuery-like chainable syntax and methods. -type Selection struct { - Nodes []*html.Node - document *Document - prevSel *Selection -} - -// Helper constructor to create an empty selection -func newEmptySelection(doc *Document) *Selection { - return &Selection{nil, doc, nil} -} - -// Helper constructor to create a selection of only one node -func newSingleSelection(node *html.Node, doc *Document) *Selection { - return &Selection{[]*html.Node{node}, doc, nil} -} - -// Matcher is an interface that defines the methods to match -// HTML nodes against a compiled selector string. Cascadia's -// Selector implements this interface. -type Matcher interface { - Match(*html.Node) bool - MatchAll(*html.Node) []*html.Node - Filter([]*html.Node) []*html.Node -} - -// Single compiles a selector string to a Matcher that stops after the first -// match is found. -// -// By default, Selection.Find and other functions that accept a selector string -// to select nodes will use all matches corresponding to that selector. By -// using the Matcher returned by Single, at most the first match will be -// selected. -// -// For example, those two statements are semantically equivalent: -// -// sel1 := doc.Find("a").First() -// sel2 := doc.FindMatcher(goquery.Single("a")) -// -// The one using Single is optimized to be potentially much faster on large -// documents. -// -// Only the behaviour of the MatchAll method of the Matcher interface is -// altered compared to standard Matchers. This means that the single-selection -// property of the Matcher only applies for Selection methods where the Matcher -// is used to select nodes, not to filter or check if a node matches the -// Matcher - in those cases, the behaviour of the Matcher is unchanged (e.g. -// FilterMatcher(Single("div")) will still result in a Selection with multiple -// "div"s if there were many "div"s in the Selection to begin with). -func Single(selector string) Matcher { - return singleMatcher{compileMatcher(selector)} -} - -// SingleMatcher returns a Matcher matches the same nodes as m, but that stops -// after the first match is found. -// -// See the documentation of function Single for more details. -func SingleMatcher(m Matcher) Matcher { - if _, ok := m.(singleMatcher); ok { - // m is already a singleMatcher - return m - } - return singleMatcher{m} -} - -// compileMatcher compiles the selector string s and returns -// the corresponding Matcher. If s is an invalid selector string, -// it returns a Matcher that fails all matches. -func compileMatcher(s string) Matcher { - cs, err := cascadia.Compile(s) - if err != nil { - return invalidMatcher{} - } - return cs -} - -type singleMatcher struct { - Matcher -} - -func (m singleMatcher) MatchAll(n *html.Node) []*html.Node { - // Optimized version - stops finding at the first match (cascadia-compiled - // matchers all use this code path). - if mm, ok := m.Matcher.(interface{ MatchFirst(*html.Node) *html.Node }); ok { - node := mm.MatchFirst(n) - if node == nil { - return nil - } - return []*html.Node{node} - } - - // Fallback version, for e.g. test mocks that don't provide the MatchFirst - // method. - nodes := m.Matcher.MatchAll(n) - if len(nodes) > 0 { - return nodes[:1:1] - } - return nil -} - -// invalidMatcher is a Matcher that always fails to match. -type invalidMatcher struct{} - -func (invalidMatcher) Match(n *html.Node) bool { return false } -func (invalidMatcher) MatchAll(n *html.Node) []*html.Node { return nil } -func (invalidMatcher) Filter(ns []*html.Node) []*html.Node { return nil } diff --git a/vendor/github.com/PuerkitoBio/goquery/utilities.go b/vendor/github.com/PuerkitoBio/goquery/utilities.go deleted file mode 100644 index ecd3453..0000000 --- a/vendor/github.com/PuerkitoBio/goquery/utilities.go +++ /dev/null @@ -1,178 +0,0 @@ -package goquery - -import ( - "bytes" - "io" - - "golang.org/x/net/html" -) - -// used to determine if a set (map[*html.Node]bool) should be used -// instead of iterating over a slice. The set uses more memory and -// is slower than slice iteration for small N. -const minNodesForSet = 1000 - -var nodeNames = []string{ - html.ErrorNode: "#error", - html.TextNode: "#text", - html.DocumentNode: "#document", - html.CommentNode: "#comment", -} - -// NodeName returns the node name of the first element in the selection. -// It tries to behave in a similar way as the DOM's nodeName property -// (https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeName). -// -// Go's net/html package defines the following node types, listed with -// the corresponding returned value from this function: -// -// ErrorNode : #error -// TextNode : #text -// DocumentNode : #document -// ElementNode : the element's tag name -// CommentNode : #comment -// DoctypeNode : the name of the document type -// -func NodeName(s *Selection) string { - if s.Length() == 0 { - return "" - } - return nodeName(s.Get(0)) -} - -// nodeName returns the node name of the given html node. -// See NodeName for additional details on behaviour. -func nodeName(node *html.Node) string { - if node == nil { - return "" - } - - switch node.Type { - case html.ElementNode, html.DoctypeNode: - return node.Data - default: - if int(node.Type) < len(nodeNames) { - return nodeNames[node.Type] - } - return "" - } -} - -// Render renders the HTML of the first item in the selection and writes it to -// the writer. It behaves the same as OuterHtml but writes to w instead of -// returning the string. -func Render(w io.Writer, s *Selection) error { - if s.Length() == 0 { - return nil - } - n := s.Get(0) - return html.Render(w, n) -} - -// OuterHtml returns the outer HTML rendering of the first item in -// the selection - that is, the HTML including the first element's -// tag and attributes. -// -// Unlike Html, this is a function and not a method on the Selection, -// because this is not a jQuery method (in javascript-land, this is -// a property provided by the DOM). -func OuterHtml(s *Selection) (string, error) { - var buf bytes.Buffer - if err := Render(&buf, s); err != nil { - return "", err - } - return buf.String(), nil -} - -// Loop through all container nodes to search for the target node. -func sliceContains(container []*html.Node, contained *html.Node) bool { - for _, n := range container { - if nodeContains(n, contained) { - return true - } - } - - return false -} - -// Checks if the contained node is within the container node. -func nodeContains(container *html.Node, contained *html.Node) bool { - // Check if the parent of the contained node is the container node, traversing - // upward until the top is reached, or the container is found. - for contained = contained.Parent; contained != nil; contained = contained.Parent { - if container == contained { - return true - } - } - return false -} - -// Checks if the target node is in the slice of nodes. -func isInSlice(slice []*html.Node, node *html.Node) bool { - return indexInSlice(slice, node) > -1 -} - -// Returns the index of the target node in the slice, or -1. -func indexInSlice(slice []*html.Node, node *html.Node) int { - if node != nil { - for i, n := range slice { - if n == node { - return i - } - } - } - return -1 -} - -// Appends the new nodes to the target slice, making sure no duplicate is added. -// There is no check to the original state of the target slice, so it may still -// contain duplicates. The target slice is returned because append() may create -// a new underlying array. If targetSet is nil, a local set is created with the -// target if len(target) + len(nodes) is greater than minNodesForSet. -func appendWithoutDuplicates(target []*html.Node, nodes []*html.Node, targetSet map[*html.Node]bool) []*html.Node { - // if there are not that many nodes, don't use the map, faster to just use nested loops - // (unless a non-nil targetSet is passed, in which case the caller knows better). - if targetSet == nil && len(target)+len(nodes) < minNodesForSet { - for _, n := range nodes { - if !isInSlice(target, n) { - target = append(target, n) - } - } - return target - } - - // if a targetSet is passed, then assume it is reliable, otherwise create one - // and initialize it with the current target contents. - if targetSet == nil { - targetSet = make(map[*html.Node]bool, len(target)) - for _, n := range target { - targetSet[n] = true - } - } - for _, n := range nodes { - if !targetSet[n] { - target = append(target, n) - targetSet[n] = true - } - } - - return target -} - -// Loop through a selection, returning only those nodes that pass the predicate -// function. -func grep(sel *Selection, predicate func(i int, s *Selection) bool) (result []*html.Node) { - for i, n := range sel.Nodes { - if predicate(i, newSingleSelection(n, sel.document)) { - result = append(result, n) - } - } - return result -} - -// Creates a new Selection object based on the specified nodes, and keeps the -// source Selection object on the stack (linked list). -func pushStack(fromSel *Selection, nodes []*html.Node) *Selection { - result := &Selection{nodes, fromSel.document, fromSel} - return result -} diff --git a/vendor/github.com/advancedlogic/GoOse/.gitignore b/vendor/github.com/advancedlogic/GoOse/.gitignore deleted file mode 100644 index 5c204d2..0000000 --- a/vendor/github.com/advancedlogic/GoOse/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - -target diff --git a/vendor/github.com/advancedlogic/GoOse/.travis.yml b/vendor/github.com/advancedlogic/GoOse/.travis.yml deleted file mode 100644 index ce9e166..0000000 --- a/vendor/github.com/advancedlogic/GoOse/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: go - -sudo: false - -go: - - 1.5 - - tip - -before_install: - - go get github.com/mattn/goveralls - -before_script: - - make deps - -script: - - make qa - -after_failure: - - cat ./target/test/report.xml - -after_script: - - $HOME/gopath/bin/goveralls -covermode=count -coverprofile=target/report/coverage.out -service=travis-ci diff --git a/vendor/github.com/advancedlogic/GoOse/Gopkg.lock b/vendor/github.com/advancedlogic/GoOse/Gopkg.lock deleted file mode 100644 index ed54805..0000000 --- a/vendor/github.com/advancedlogic/GoOse/Gopkg.lock +++ /dev/null @@ -1,129 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:a62f6ed230a8cd138a9efbe718e7d0b0294f139266f5f55cd942769a9aac8de2" - name = "github.com/PuerkitoBio/goquery" - packages = ["."] - pruneopts = "UT" - revision = "dc2ec5c7ca4d9aae063b79b9f581dd3ea6afd2b2" - version = "v1.4.1" - -[[projects]] - digest = "1:66b3310cf22cdc96c35ef84ede4f7b9b370971c4025f394c89a2638729653b11" - name = "github.com/andybalholm/cascadia" - packages = ["."] - pruneopts = "UT" - revision = "901648c87902174f774fac311d7f176f8647bdaa" - version = "v1.0.0" - -[[projects]] - branch = "master" - digest = "1:90d593cd34221cf33017a2c944998eb29f5182a15cfbe0cf6e2a0f62cb8bbf29" - name = "github.com/araddon/dateparse" - packages = ["."] - pruneopts = "UT" - revision = "cfd92a431d0efe36a1b81ca25d15b98aae4dbdb6" - -[[projects]] - digest = "1:5f1d44e13c151d777a80b0d8ca850347530773e73ccce5995a520cdc6947c205" - name = "github.com/fatih/set" - packages = ["."] - pruneopts = "UT" - revision = "2c768e3c5489976167bfc42b5c7c92ca783f4389" - version = "v0.2.1" - -[[projects]] - branch = "master" - digest = "1:131e93e8b8f318c52b1666e5a8f3af7d236af62f5a477a11973e46af59bca7da" - name = "github.com/gigawattio/window" - packages = ["."] - pruneopts = "UT" - revision = "0f5467e35573c4ffebddd992935e1f7ceeac0696" - -[[projects]] - branch = "master" - digest = "1:8bacc2118e6cc6a207eb144656537ff7ee0397f8bc8c1f7639519b0de2bb949a" - name = "github.com/jaytaylor/html2text" - packages = ["."] - pruneopts = "UT" - revision = "57d518f124b0cf46ea2021f25a01396b3522e6fb" - -[[projects]] - digest = "1:cdb899c199f907ac9fb50495ec71212c95cb5b0e0a8ee0800da0238036091033" - name = "github.com/mattn/go-runewidth" - packages = ["."] - pruneopts = "UT" - revision = "ce7b0b5c7b45a81508558cd1dba6bb1e4ddb51bb" - version = "v0.0.3" - -[[projects]] - branch = "master" - digest = "1:4daa045e1e1f3e23f4b07db6880cdf9f259dab65312dfe244a878e6070faaf77" - name = "github.com/olekukonko/tablewriter" - packages = ["."] - pruneopts = "UT" - revision = "d4647c9c7a84d847478d890b816b7d8b62b0b279" - -[[projects]] - branch = "master" - digest = "1:362b269942e8508aed33025593090ad4cdbd9077de4b1cd505e6124728e9e856" - name = "github.com/ssor/bom" - packages = ["."] - pruneopts = "UT" - revision = "6386211fdfcf24c0bfbdaceafd02849ed9a8a509" - -[[projects]] - branch = "master" - digest = "1:1d3f083a0b29a9db5ac57dc4d486dbb97cd58696bae3da441a375916b7e8c53b" - name = "golang.org/x/net" - packages = [ - "html", - "html/atom", - "html/charset", - ] - pruneopts = "UT" - revision = "4bcd98cce591d8c7061bf313d7a3cbad05b58549" - -[[projects]] - digest = "1:aa4d6967a3237f8367b6bf91503964a77183ecf696f1273e8ad3551bb4412b5f" - name = "golang.org/x/text" - packages = [ - "encoding", - "encoding/charmap", - "encoding/htmlindex", - "encoding/internal", - "encoding/internal/identifier", - "encoding/japanese", - "encoding/korean", - "encoding/simplifiedchinese", - "encoding/traditionalchinese", - "encoding/unicode", - "internal/gen", - "internal/tag", - "internal/utf8internal", - "language", - "runes", - "transform", - "unicode/cldr", - ] - pruneopts = "UT" - revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" - version = "v0.3.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/PuerkitoBio/goquery", - "github.com/araddon/dateparse", - "github.com/fatih/set", - "github.com/gigawattio/window", - "github.com/jaytaylor/html2text", - "golang.org/x/net/html", - "golang.org/x/net/html/atom", - "golang.org/x/net/html/charset", - "golang.org/x/text/transform", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/vendor/github.com/advancedlogic/GoOse/Gopkg.toml b/vendor/github.com/advancedlogic/GoOse/Gopkg.toml deleted file mode 100644 index 5906564..0000000 --- a/vendor/github.com/advancedlogic/GoOse/Gopkg.toml +++ /dev/null @@ -1,58 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - name = "github.com/PuerkitoBio/goquery" - version = "1.4.1" - -[[constraint]] - branch = "master" - name = "github.com/araddon/dateparse" - -[[constraint]] - name = "github.com/fatih/set" - version = "0.2.1" - -[[constraint]] - branch = "master" - name = "github.com/gigawattio/window" - -[[constraint]] - branch = "master" - name = "github.com/jaytaylor/html2text" - -[[constraint]] - branch = "master" - name = "golang.org/x/net" - -[[constraint]] - name = "golang.org/x/text" - version = "0.3.0" - -[prune] - go-tests = true - unused-packages = true diff --git a/vendor/github.com/advancedlogic/GoOse/LICENSE b/vendor/github.com/advancedlogic/GoOse/LICENSE deleted file mode 100644 index e06d208..0000000 --- a/vendor/github.com/advancedlogic/GoOse/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/vendor/github.com/advancedlogic/GoOse/Makefile b/vendor/github.com/advancedlogic/GoOse/Makefile deleted file mode 100644 index e588f98..0000000 --- a/vendor/github.com/advancedlogic/GoOse/Makefile +++ /dev/null @@ -1,203 +0,0 @@ -# MAKEFILE -# -# @author Nicola Asuni -# @link https://github.com/advancedlogic/GoOse -# -# This file is intended to be executed in a Linux-compatible system. -# It also assumes that the project has been cloned in the right path under GOPATH: -# $GOPATH/src/github.com/advancedlogic/GoOse -# -# ------------------------------------------------------------------------------ - -# List special make targets that are not associated with files -.PHONY: help all test format fmtcheck vet lint coverage cyclo ineffassign misspell structcheck varcheck errcheck gosimple astscan qa deps clean nuke - -# Use bash as shell (Note: Ubuntu now uses dash which doesn't support PIPESTATUS). -SHELL=/bin/bash - -# CVS path (path to the parent dir containing the project) -CVSPATH=github.com/advancedlogic - -# Project owner -OWNER=advancedlogic - -# Project vendor -VENDOR=advancedlogic - -# Project name -PROJECT=GoOse - -# Project version -VERSION=$(shell cat VERSION) - -# Name of RPM or DEB package -PKGNAME=${VENDOR}-${PROJECT} - -# Current directory -CURRENTDIR=$(shell pwd) - -# GO lang path -ifneq ($(GOPATH),) - ifeq ($(findstring $(GOPATH),$(CURRENTDIR)),) - # the defined GOPATH is not valid - GOPATH= - endif -endif -ifeq ($(GOPATH),) - # extract the GOPATH - GOPATH=$(firstword $(subst /src/, ,$(CURRENTDIR))) -endif - -# --- MAKE TARGETS --- - -# Display general help about this command -help: - @echo "" - @echo "$(PROJECT) Makefile." - @echo "GOPATH=$(GOPATH)" - @echo "The following commands are available:" - @echo "" - @echo " make qa : Run all the tests" - @echo " make test : Run the unit tests" - @echo "" - @echo " make format : Format the source code" - @echo " make fmtcheck : Check if the source code has been formatted" - @echo " make vet : Check for suspicious constructs" - @echo " make lint : Check for style errors" - @echo " make coverage : Generate the coverage report" - @echo " make cyclo : Generate the cyclomatic complexity report" - @echo " make ineffassign : Detect ineffectual assignments" - @echo " make misspell : Detect commonly misspelled words in source files" - @echo " make structcheck : Find unused struct fields" - @echo " make varcheck : Find unused global variables and constants" - @echo " make errcheck : Check that error return values are used" - @echo " make gosimple : Suggest code simplifications" - @echo " make astscan : GO AST scanner" - @echo "" - @echo " make docs : Generate source code documentation" - @echo "" - @echo " make deps : Get the dependencies" - @echo " make clean : Remove any build artifact" - @echo " make nuke : Deletes any intermediate file" - @echo "" - - -# Alias for help target -all: help - -# Run the unit tests -test: - @mkdir -p target/test - @mkdir -p target/report - GOPATH=$(GOPATH) \ - go test \ - -covermode=atomic \ - -bench=. \ - -race \ - -cpuprofile=target/report/cpu.out \ - -memprofile=target/report/mem.out \ - -mutexprofile=target/report/mutex.out \ - -coverprofile=target/report/coverage.out \ - -v ./... | \ - tee >(PATH=$(GOPATH)/bin:$(PATH) go-junit-report > target/test/report.xml); \ - test $${PIPESTATUS[0]} -eq 0 - -# Format the source code -format: - @find . -type f -name "*.go" -exec gofmt -s -w {} \; - -# Check if the source code has been formatted -fmtcheck: - @mkdir -p target - @find . -type f -name "*.go" -exec gofmt -s -d {} \; | tee target/format.diff - @test ! -s target/format.diff || { echo "ERROR: the source code has not been formatted - please use 'make format' or 'gofmt'"; exit 1; } - -# Check for syntax errors -vet: - GOPATH=$(GOPATH) go vet . - -# Check for style errors -lint: - GOPATH=$(GOPATH) PATH=$(GOPATH)/bin:$(PATH) golint . - -# Generate the coverage report -coverage: - @mkdir -p target/report - GOPATH=$(GOPATH) \ - go tool cover -html=target/report/coverage.out -o target/report/coverage.html - -# Report cyclomatic complexity -cyclo: - @mkdir -p target/report - GOPATH=$(GOPATH) gocyclo -avg ./ | tee target/report/cyclo.txt ; test $${PIPESTATUS[0]} -eq 0 - -# Detect ineffectual assignments -ineffassign: - @mkdir -p target/report - GOPATH=$(GOPATH) ineffassign ./ | tee target/report/ineffassign.txt ; test $${PIPESTATUS[0]} -eq 0 - -# Detect commonly misspelled words in source files -misspell: - @mkdir -p target/report - GOPATH=$(GOPATH) misspell -error ./*.go | tee target/report/misspell.txt - -# Find unused struct fields -structcheck: - @mkdir -p target/report - GOPATH=$(GOPATH) structcheck -a ./ | tee target/report/structcheck.txt - -# Find unused global variables and constants -varcheck: - @mkdir -p target/report - GOPATH=$(GOPATH) varcheck -e ./ | tee target/report/varcheck.txt - -# Check that error return values are used -errcheck: - @mkdir -p target/report - GOPATH=$(GOPATH) errcheck ./ | tee target/report/errcheck.txt - -# Suggest code simplifications -gosimple: - @mkdir -p target/report - GOPATH=$(GOPATH) gosimple ./ | tee target/report/gosimple.txt - -# AST scanner -astscan: - @mkdir -p target/report - GOPATH=$(GOPATH) gas .//*.go | tee target/report/astscan.txt - -# Generate source docs -docs: - @mkdir -p target/docs - nohup sh -c 'GOPATH=$(GOPATH) godoc -http=127.0.0.1:6060' > target/godoc_server.log 2>&1 & - wget --directory-prefix=target/docs/ --execute robots=off --retry-connrefused --recursive --no-parent --adjust-extension --page-requisites --convert-links http://127.0.0.1:6060/pkg/github.com/${VENDOR}/${PROJECT}/ ; kill -9 `lsof -ti :6060` - @echo ''${PKGNAME}' Documentation ...' > target/docs/index.html - -# Alias to run all quality-assurance checks -qa: fmtcheck test vet lint coverage cyclo ineffassign misspell structcheck varcheck errcheck gosimple astscan - -# --- INSTALL --- - -# Get the dependencies -deps: - GOPATH=$(GOPATH) go get ./... - GOPATH=$(GOPATH) go get github.com/golang/lint/golint - GOPATH=$(GOPATH) go get github.com/jstemmer/go-junit-report - GOPATH=$(GOPATH) go get github.com/axw/gocov/gocov - GOPATH=$(GOPATH) go get github.com/fzipp/gocyclo - GOPATH=$(GOPATH) go get github.com/gordonklaus/ineffassign - GOPATH=$(GOPATH) go get github.com/client9/misspell/cmd/misspell - GOPATH=$(GOPATH) go get github.com/opennota/check/cmd/structcheck - GOPATH=$(GOPATH) go get github.com/opennota/check/cmd/varcheck - GOPATH=$(GOPATH) go get github.com/kisielk/errcheck - GOPATH=$(GOPATH) go get honnef.co/go/tools/cmd/gosimple - GOPATH=$(GOPATH) go get github.com/GoASTScanner/gas - -# Remove any build artifact -clean: - GOPATH=$(GOPATH) go clean ./... - -# Deletes any intermediate file -nuke: - rm -rf ./target - GOPATH=$(GOPATH) go clean -i ./... diff --git a/vendor/github.com/advancedlogic/GoOse/README.md b/vendor/github.com/advancedlogic/GoOse/README.md deleted file mode 100644 index 476f4dd..0000000 --- a/vendor/github.com/advancedlogic/GoOse/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# GoOse - -*HTML Content / Article Extractor in Golang* - -[![Build Status](https://secure.travis-ci.org/advancedlogic/GoOse.png?branch=master)](https://travis-ci.org/advancedlogic/GoOse?branch=master) -[![Coverage Status](https://coveralls.io/repos/advancedlogic/GoOse/badge.svg?branch=master&service=github)](https://coveralls.io/github/advancedlogic/GoOse?branch=master) -[![Go Report Card](https://goreportcard.com/badge/github.com/advancedlogic/GoOse)](https://goreportcard.com/report/github.com/advancedlogic/GoOse) -[![GoDoc](https://godoc.org/github.com/advancedlogic/GoOse?status.svg)](http://godoc.org/github.com/advancedlogic/GoOse) - - -## Description - -This is a golang port of "Goose" originaly licensed to Gravity.com -under one or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. - -Golang port was written by Antonio Linari - -Gravity.com licenses this file -to you under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -## INSTALL - -```bash -go get github.com/advancedlogic/GoOse -``` - -## HOW TO USE IT - -```Go -package main - -import ( - "github.com/advancedlogic/GoOse" -) - -func main() { - g := goose.New() - article, _ := g.ExtractFromURL("http://edition.cnn.com/2012/07/08/opinion/banzi-ted-open-source/index.html") - println("title", article.Title) - println("description", article.MetaDescription) - println("keywords", article.MetaKeywords) - println("content", article.CleanedText) - println("url", article.FinalURL) - println("top image", article.TopImage) -} -``` - -## Development - Getting started - -This application is written in GO language, please refere to the guides in https://golang.org for getting started. - -This project include a Makefile that allows you to test and build the project with simple commands. -To see all available options: -```bash -make help -``` - -Before committing the code, please check if it passes all tests using -```bash -make deps -make qa -``` - -## TODO -- [ ] better organize code -- [ ] improve "xpath" like queries -- [ ] add other image extractions techniques (imagemagick) - -## THANKS TO -``` -@Martin Angers for goquery -@Fatih Arslan for set -GoLang team for the amazing language and net/html -``` diff --git a/vendor/github.com/advancedlogic/GoOse/VERSION b/vendor/github.com/advancedlogic/GoOse/VERSION deleted file mode 100644 index 9084fa2..0000000 --- a/vendor/github.com/advancedlogic/GoOse/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.1.0 diff --git a/vendor/github.com/advancedlogic/GoOse/article.go b/vendor/github.com/advancedlogic/GoOse/article.go deleted file mode 100644 index 3e21079..0000000 --- a/vendor/github.com/advancedlogic/GoOse/article.go +++ /dev/null @@ -1,40 +0,0 @@ -package goose - -import ( - "time" - - "github.com/PuerkitoBio/goquery" - "github.com/fatih/set" -) - -// Article is a collection of properties extracted from the HTML body -type Article struct { - Title string `json:"title,omitempty"` - TitleUnmodified string `json:"titleunmodified,omitempty"` - CleanedText string `json:"content,omitempty"` - MetaDescription string `json:"description,omitempty"` - MetaLang string `json:"lang,omitempty"` - MetaFavicon string `json:"favicon,omitempty"` - MetaKeywords string `json:"keywords,omitempty"` - CanonicalLink string `json:"canonicalurl,omitempty"` - Domain string `json:"domain,omitempty"` - TopNode *goquery.Selection `json:"-"` - TopImage string `json:"image,omitempty"` - Tags *set.Set `json:"tags,omitempty"` - Movies *set.Set `json:"movies,omitempty"` - FinalURL string `json:"url,omitempty"` - LinkHash string `json:"linkhash,omitempty"` - RawHTML string `json:"rawhtml,omitempty"` - Doc *goquery.Document `json:"-"` - Links []string `json:"links,omitempty"` - PublishDate *time.Time `json:"publishdate,omitempty"` - AdditionalData map[string]string `json:"additionaldata,omitempty"` - Delta int64 `json:"delta,omitempty"` -} - -// ToString is a simple method to just show the title -// TODO: add more fields and pretty print -func (article *Article) ToString() string { - out := article.Title - return out -} diff --git a/vendor/github.com/advancedlogic/GoOse/charset.go b/vendor/github.com/advancedlogic/GoOse/charset.go deleted file mode 100644 index 43fc8b9..0000000 --- a/vendor/github.com/advancedlogic/GoOse/charset.go +++ /dev/null @@ -1,92 +0,0 @@ -package goose - -import ( - "log" - "strings" - "unicode/utf8" - - "golang.org/x/net/html/charset" - "golang.org/x/text/transform" -) - -// NormaliseCharset Overrides/fixes charset names to something we can parse. -// Fixes common mispellings and uses a canonical name for equivalent encodings. -// @see https://encoding.spec.whatwg.org#names-and-labels -func NormaliseCharset(characterSet string) string { - characterSet = strings.ToUpper(characterSet) - switch characterSet { - case "UTF8", "UT-8", "UTR-8", "UFT-8", "UTF8-WITHOUT-BOM", "UTF8_GENERAL_CI": - return "UTF-8" - // override Japanese - // CP943: IBM OS/2 Japanese, superset of Cp932 and Shift-JIS - case "CP943", "CP943C", "SIFT_JIS", "SHIFT-JIS": - return "SHIFT_JIS" - // override Korean - case "EUC-KR", "MS949", "KSC5601", "WINDOWS-949", "KS_C_5601-1987", "KSC_5601": - return "UHC" - // override Thai - //case "TIS-620", "WINDOWS-874": - // return "ISO-8859-11" - // override latin-2 - case "LATIN2_HUNGARIAN_CI", "LATIN2": - return "LATIN-2" - // override cyrillic - case "WIN1251", "WIN-1251", "WINDOWS-1251": - return "CP1251" - // override Hebrew - case "WINDOWS-1255": - return "ISO-8859-8" - // override Turkish - //case "WINDOWS-1254": - // return "ISO-8859-9" - // override the parsing of ISO-8859-1 to behave as Windows-1252 (CP1252): - // in ISO-8859-1, everything from 128-255 in the ASCII table are ctrl characters, - // whilst in CP1252 they're symbols - // override Baltic - case "WINDOWS-1257": - return "ISO-8859-13" - case "ANSI", "LATIN-1", "ISO", "RFC", "MACINTOSH", "8859-1", "8859-15", "ISO8859-1", "ISO8859-15", "ISO-8559-1", "ISO-8859-1", "ISO-8859-15": - return "CP1252" - } - return characterSet -} - -// UTF8encode converts a string from the source character set to UTF-8, skipping invalid byte sequences -// @see http://stackoverflow.com/questions/32512500/ignore-illegal-bytes-when-decoding-text-with-go -func UTF8encode(raw string, sourceCharset string) string { - enc, name := charset.Lookup(sourceCharset) - if nil == enc { - log.Println("Cannot convert from", sourceCharset, ":", name) - return raw - } - - dst := make([]byte, len(raw)) - d := enc.NewDecoder() - - var ( - in int - out int - ) - for in < len(raw) { - // Do the transformation - ndst, nsrc, err := d.Transform(dst[out:], []byte(raw[in:]), true) - in += nsrc - out += ndst - if err == nil { - // Completed transformation - break - } - if err == transform.ErrShortDst { - // Our output buffer is too small, so we need to grow it - t := make([]byte, (cap(dst)+1)*2) - copy(t, dst) - dst = t - continue - } - // We're here because of at least one illegal character. Skip over the current rune - // and try again. - _, width := utf8.DecodeRuneInString(raw[in:]) - in += width - } - return string(dst) -} diff --git a/vendor/github.com/advancedlogic/GoOse/cleaner.go b/vendor/github.com/advancedlogic/GoOse/cleaner.go deleted file mode 100644 index 7136448..0000000 --- a/vendor/github.com/advancedlogic/GoOse/cleaner.go +++ /dev/null @@ -1,572 +0,0 @@ -package goose - -import ( - "container/list" - "log" - "regexp" - "strings" - - "github.com/PuerkitoBio/goquery" - "golang.org/x/net/html" - "golang.org/x/net/html/atom" -) - -var whitelistedTextAtomTypes = []atom.Atom{atom.Span, atom.Em, atom.I, atom.Strong, atom.B, atom.P, atom.H1, atom.H2, atom.H3, atom.H4} -var whitelistedExtAtomTypes = []atom.Atom{atom.A, atom.Span, atom.Em, atom.I, atom.Strong, atom.B, atom.P, atom.H1, atom.H2, atom.H3, atom.H4} - -// Cleaner removes menus, ads, sidebars, etc. and leaves the main content -type Cleaner struct { - config Configuration -} - -// NewCleaner returns a new instance of a Cleaner -func NewCleaner(config Configuration) Cleaner { - return Cleaner{ - config: config, - } -} - -// replaceTagWithContents removes the tag, replacing it with its text contents -// e.g. "some text" becomes "some text" -func replaceTagWithContents(tagSelection *goquery.Selection, collapsibleAtomTypes []atom.Atom) { - if tagSelection.Length() == 0 { - return - } - node := tagSelection.Get(0) - node.Data = tagSelection.Text() - node.Type = html.TextNode - if node.FirstChild == nil { - node.Attr = []html.Attribute{} - node.DataAtom = 0 - node.FirstChild = nil - node.LastChild = nil - } else { - // If all children are text only, the parent already contains the text, so drop them - collapseTextNodes(node, collapsibleAtomTypes) - } -} - -func isAtomTypeWhitelisted(t atom.Atom, whitelist []atom.Atom) bool { - for _, allowed := range whitelist { - if t == allowed { - return true - } - } - return false -} - -func collapseTextNodes(node *html.Node, collapsibleAtomTypes []atom.Atom) { - if node.FirstChild == nil { - return - } - - if !isAtomTypeWhitelisted(node.DataAtom, collapsibleAtomTypes) { - return - } - - if node.FirstChild.DataAtom == 0 && node.FirstChild == node.LastChild { - // this tag only contains a single textual node, already contained in the parent - node.Attr = []html.Attribute{} - node.Type = html.TextNode - node.DataAtom = 0 - node.FirstChild = nil - node.LastChild = nil - return - } - - // If all children are text only, the parent already contains the text, so drop them - allTextNodes := true - for c := node.FirstChild; c != nil; c = c.NextSibling { - // attempt collapsing recursively - collapseTextNodes(c, collapsibleAtomTypes) - if c.DataAtom != 0 { - // not collapsed - allTextNodes = false - break - } - } - if allTextNodes { - // text already contained in the parent node => drop children - node.Attr = []html.Attribute{} - node.Type = html.TextNode - node.DataAtom = 0 - node.FirstChild = nil - node.LastChild = nil - } -} - -var divToPElementsPattern = regexp.MustCompile("<(a|blockquote|dl|div|img|ol|p|pre|table|ul)") -var tabsRegEx = regexp.MustCompile(`\t|^\s+$]`) -var removeVisibilityStyleRegEx = regexp.MustCompile("visibility:[ ]*hidden|display:[ ]*none") -var keepNodesRegEx = regexp.MustCompile(`\b(` + - `article|` + // theguardian.com and newyorker.com (preventing match of "commercial" or "...-ad-...") - `field--label-hidden` + // eff.org (preventing match of "hidden") - `)\b`) -var removeNodesRegEx = regexp.MustCompile("" + - "[Cc]omentario|" + - "[Ff]ooter|" + - "^fn$|" + - "^inset$|" + - "^print$|" + - "^scroll$|" + - "^side$|" + - "^side_|" + - "^widget$|" + - "^ab[0-9]$|" + - "[_-]ads$|" + - "^ad[s]?[ _-]|" + - "[_-]ad[s]?[_-]|" + - "^ADX_CLIENTSIDE$|" + - "ajoutVideo|" + - "^alerts|" + - "^Anchor$|" + - "articleheadings|" + - "_articles|" + - "^article-gallery-embedded$|" + - "author|" + - "author-dropdown|" + - "^banner|" + - "^bar$|" + - "blog-pager|" + - "brass\\-rail|" + - "breadcrumbs|" + - "button|" + - "byline|" + - "cabecalho|" + - "^caption$|" + - "carousel|" + - "^click|" + - "cnnStryHghLght|" + - "cnn_html_slideshow|" + - "cnn_strycaptiontxt|" + - "cnn_strylftcntnt|" + - "cnn_stryspcvbx|" + - "combx|" + - "comment|" + - "commercial|" + - "communitypromo|" + - "^comscore$|" + - "contact|" + - "contentTools2|" + - "controls|" + - "cookie|" + - "CoversMainContent|" + - "^css-|" + - "^critical-alerts$|" + - "^date$|" + - "detail_new_|" + - "downloadLink|" + - "^DYSRC$|" + - "^early-body|" + - "ec_blogs|" + - "^[^entry-]more.*$|" + - "error|" + - "[^-]facebook|" + - "facebook-broadcasting|" + - "^fb-root$|" + - "^feed[_-]|" + - "figcaption|" + - "footnote|" + - "foot|" + - "footer|" + - "^ga-track$|" + - " google |" + - "^gstl_|" + - "^GS-UH$|" + - "^guide$|" + - "header|" + - "hidden|" + - "img_popup_single|" + - "inline-share-tools|" + - "inread|" + - "^interstitial-ad-modal$|" + - "^Inv[0-9]$|" + - "js_replies|" + - "[Kk]ona[Ff]ilter|" + - "^kxhead$|" + - "leading|" + - "^lede[_-]container$|" + - "legende?|" + - "^lightningjs-|" + - "links|" + - "^login-modal$|" + - "^lui-mini-profile-body$|" + - "^marginalia|" + - "^marketing[_-]|" + - "^masthead|" + - "mediaarticlerelated|" + - "^media[_-]viewer$|" + - "menu|" + - "menucontainer|" + - "meta$|" + - "^moat$|" + - "moreNews|" + - "^Moses$|" + - "^nav[_-]|" + - "navbar|" + - "[Nn]avigation|" + - "newsUnder|" + - "^oauth|" + - "^overlay[_-]wrapper|" + - "pagetools|" + - "[_-]paid[_-]|" + - "panelss2|" + - "panesCity|" + - "player|" + - "PopularQuestions|" + - "popup|" + - "post[_-]attributes|" + - "post[_-]title|" + - "preview|" + - "[_-]print[_-]|" + - "products\\-events|" + - "^prop[0-9]$|" + - "^pulse-loaders|" + - "^rail$|" + - "recommend|" + - "^registration-modal$|" + - "relacionado|" + - "related|" + - "remote|" + - "retweet|" + - "^ribbon$|" + - "rightBlock|" + - "rss|" + - "runaroundLeft|" + - "search[_-]|" + - "share[_-]|" + - "shoutbox|" + - "sidebar|" + - "^simplereach$|" + - "^site[_-]index$|" + - "site[_-]box|" + - "site[_-]nav|" + - "skyscraper|" + - "social[Nn]etworking|" + - "social_|" + - "social\\-share|" + - "social\\-count|" + - "socialtools|" + - "source|" + - "^speed-bump-wrapper$|" + - "[_-]spinner$|" + - "^Splash$|" + - "sponsor|" + - "^spr-|" + - "storytopbar\\-bucket|" + - "^stream-sidebar|" + - "sub_nav|" + - "subscribe|" + - "subscription|" + - "^suggestions$|" + - "tabsCity|" + - "tag_|" + - "tags|" + - "teaser|" + - "the_answers|" + - "timestamp|" + - "tools|" + - "tooltip|" + - "^Top[0-9]?$|" + - "^TopAd[0-9]?$|" + - "[_-]track[_-]|" + - "tracking|" + - "[^-]twitter|" + - "-uix-button|" + - "updateBrowser|" + - "^username-modal$|" + - "^user-|" + - "utility-bar|" + - "^vestpocket$|" + - "vcard|" + - "^watch-action-panels$|" + - "^watch-discussion$|" + - "welcome_form|" + - "^whats[_-]next$|" + - "wp-caption-text") - -// Clean removes HTML elements around the main content and prepares the document for parsing -func (c *Cleaner) Clean(docToClean *goquery.Document) *goquery.Document { - if c.config.debug { - log.Println("Starting cleaning phase with Cleaner") - } - docToClean = c.cleanBr(docToClean) - docToClean = c.cleanArticleTags(docToClean) - docToClean = c.cleanEMTags(docToClean) - docToClean = c.dropCaps(docToClean) - docToClean = c.removeScriptsStyle(docToClean) - docToClean = c.cleanBadTags(docToClean, keepNodesRegEx, removeNodesRegEx, &[]string{"id", "class", "name"}) - docToClean = c.cleanBadTags(docToClean, nil, removeVisibilityStyleRegEx, &[]string{"style"}) - docToClean = c.removeTags(docToClean, &[]string{"nav", "footer", "aside", "cite"}) - docToClean = c.cleanParaSpans(docToClean) - - docToClean = c.convertDivsToParagraphs(docToClean, "div") - - docToClean = c.convertDivsToParagraphs(docToClean, "span") - docToClean = c.convertDivsToParagraphs(docToClean, "article") - docToClean = c.convertDivsToParagraphs(docToClean, "pre") - - return docToClean -} - -func (c *Cleaner) cleanArticleTags(doc *goquery.Document) *goquery.Document { - tags := [3]string{"id", "name", "class"} - articles := doc.Find("article") - articles.Each(func(i int, s *goquery.Selection) { - for _, tag := range tags { - c.config.parser.delAttr(s, tag) - } - }) - return doc -} - -// replace
with \n\n -func (c *Cleaner) cleanBr(doc *goquery.Document) *goquery.Document { - linebreaks := doc.Find("br") - linebreaks.Each(func(i int, br *goquery.Selection) { - node := br.Get(0) - node.Data = "\n\n" - node.Type = html.TextNode - node.Attr = []html.Attribute{} - node.DataAtom = 0 - node.FirstChild = nil - node.LastChild = nil - }) - return doc -} - -func (c *Cleaner) cleanEMTags(doc *goquery.Document) *goquery.Document { - ems := doc.Find("em") - ems.Each(func(i int, s *goquery.Selection) { - images := s.Find("img") - if images.Length() == 0 { - c.config.parser.dropTag(s) - } - }) - if c.config.debug { - log.Printf("Cleaning %d EM tags\n", ems.Size()) - } - return doc -} - -func (c *Cleaner) removeTags(doc *goquery.Document, tags *[]string) *goquery.Document { - for _, tag := range *tags { - node := doc.Find(tag) - node.Each(func(i int, s *goquery.Selection) { - c.config.parser.removeNode(s) - }) - } - return doc -} - -func (c *Cleaner) cleanDivs(doc *goquery.Document) *goquery.Document { - frames := make(map[string]int) - framesNodes := make(map[string]*list.List) - divs := doc.Find("div") - divs.Each(func(i int, s *goquery.Selection) { - children := s.Children() - if children.Size() == 0 { - text := strings.Trim(s.Text(), " \t") - text = strings.ToLower(text) - frames[text]++ - if framesNodes[text] == nil { - framesNodes[text] = list.New() - } - framesNodes[text].PushBack(s) - } - }) - for text, freq := range frames { - if freq > 1 { - selections := framesNodes[text] - for s := selections.Front(); s != nil; s = s.Next() { - selection := s.Value.(*goquery.Selection) - c.config.parser.removeNode(selection) - } - } - } - return doc -} - -func (c *Cleaner) dropCaps(doc *goquery.Document) *goquery.Document { - items := doc.Find("span") - count := 0 // remove - items.Each(func(i int, s *goquery.Selection) { - attribute, exists := s.Attr("class") - if exists && (strings.Contains(attribute, "dropcap") || strings.Contains(attribute, "drop_cap")) { - c.config.parser.dropTag(s) - count++ - } - }) - if c.config.debug && count > 0 { - log.Printf("Cleaned %d dropcap tags\n", count) - } - return doc -} - -func (c *Cleaner) removeScriptsStyle(doc *goquery.Document) *goquery.Document { - if c.config.debug { - log.Println("Starting to remove script tags") - } - count := 0 // number of removed nodes - scripts := doc.Find("script,noscript,style") - scripts.Each(func(i int, s *goquery.Selection) { - c.config.parser.removeNode(s) - count++ - }) - if c.config.debug && count > 0 { - log.Printf("Removed %d script and style tags\n", scripts.Size()) - } - return doc -} - -func (c *Cleaner) cleanBadTags(doc *goquery.Document, keepPattern *regexp.Regexp, pattern *regexp.Regexp, selectors *[]string) *goquery.Document { - body := doc.Find("html") - children := body.Children() - children.Each(func(i int, s *goquery.Selection) { - for _, selector := range *selectors { - naughtyList := s.Find("*[" + selector + "]") - count := 0 - naughtyList.Each(func(j int, node *goquery.Selection) { - attribute, _ := node.Attr(selector) - if (keepPattern == nil || !keepPattern.MatchString(attribute)) && pattern.MatchString(attribute) { - if c.config.debug { - log.Printf("Cleaning: Removing node with %s: %s => matched %s\n", selector, c.config.parser.name(selector, node), strings.Join(pattern.FindAllString(attribute, 100), ", ")) - } - c.config.parser.removeNode(node) - count++ - } - }) - if c.config.debug && count > 0 { - log.Printf("%d naughty %s elements found", count, selector) - } - } - }) - return doc -} - -// Replace

...

with

...

-func (c *Cleaner) cleanParaSpans(doc *goquery.Document) *goquery.Document { - spans := doc.Find("span") - spans.Each(func(i int, s *goquery.Selection) { - parent := s.Parent() - if parent != nil && parent.Length() > 0 && parent.Get(0).DataAtom == atom.P { - replaceTagWithContents(s, whitelistedTextAtomTypes) - } - }) - return doc -} - -func (c *Cleaner) getFlushedBuffer(fragment string) []*html.Node { - var output []*html.Node - reader := strings.NewReader(fragment) - document, _ := html.Parse(reader) - body := document.FirstChild.LastChild - for c := body.FirstChild; c != nil; c = c.NextSibling { - output = append(output, c) - c.Parent = nil - c.PrevSibling = nil - } - - for _, o := range output { - o.NextSibling = nil - } - return output -} - -func (c *Cleaner) replaceWithPara(div *goquery.Selection) { - if div.Size() > 0 { - node := div.Get(0) - node.Data = atom.P.String() - node.DataAtom = atom.P - node.Attr = []html.Attribute{} - } -} - -func (c *Cleaner) tabsAndNewLinesReplacements(text string) string { - text = strings.Replace(text, "\n", "\n\n", -1) - text = tabsRegEx.ReplaceAllString(text, "") - return text -} - -func (c *Cleaner) convertDivsToParagraphs(doc *goquery.Document, domType string) *goquery.Document { - if c.config.debug { - log.Println("Starting to replace bad divs...") - } - badDivs := 0 - convertedTextNodes := 0 - divs := doc.Find(domType) - - divs.Each(func(i int, div *goquery.Selection) { - divHTML, _ := div.Html() - if divToPElementsPattern.Match([]byte(divHTML)) { - c.replaceWithPara(div) - badDivs++ - } else { - var replacementText []string - nodesToRemove := list.New() - children := div.Contents() - if c.config.debug { - log.Printf("Found %d children of div\n", children.Size()) - } - children.EachWithBreak(func(i int, kid *goquery.Selection) bool { - text := kid.Text() - kidNode := kid.Get(0) - tag := kidNode.Data - if tag == text { - tag = "#text" - } - if tag == "#text" { - text = strings.Replace(text, "\n", "", -1) - text = tabsRegEx.ReplaceAllString(text, "") - if text == "" { - return true - } - if len(text) > 1 { - prev := kidNode.PrevSibling - if c.config.debug { - log.Printf("PARENT CLASS: %s NODENAME: %s\n", c.config.parser.name("class", div), tag) - log.Printf("TEXTREPLACE: %s\n", strings.Replace(text, "\n", "", -1)) - } - if prev != nil && prev.DataAtom == atom.A { - nodeSelection := kid.HasNodes(prev) - html, _ := nodeSelection.Html() - replacementText = append(replacementText, html) - if c.config.debug { - log.Printf("SIBLING NODENAME ADDITION: %s TEXT: %s\n", prev.Data, html) - } - } - replacementText = append(replacementText, text) - nodesToRemove.PushBack(kidNode) - convertedTextNodes++ - } - - } - return true - }) - - /* - newNode := new(html.Node) - newNode.Type = html.ElementNode - newNode.Data = strings.Join(replacementText, "") - newNode.DataAtom = atom.P - */ - /* - replacementText = strings.Replace(replacementText, "=C3=A8", "è") - replacementText = strings.Replace(replacementText, "=C3=A9", "é") - */ - div.First().BeforeHtml("

" + strings.Join(replacementText, "") + "

") - - for s := nodesToRemove.Front(); s != nil; s = s.Next() { - node := s.Value.(*html.Node) - if node != nil && node.Parent != nil { - node.Parent.RemoveChild(node) - } - } - } - }) - if c.config.debug { - log.Printf("Found %d total divs with %d bad divs replaced and %d textnodes converted inside divs", divs.Size(), badDivs, convertedTextNodes) - } - return doc - -} diff --git a/vendor/github.com/advancedlogic/GoOse/configuration.go b/vendor/github.com/advancedlogic/GoOse/configuration.go deleted file mode 100644 index d54936b..0000000 --- a/vendor/github.com/advancedlogic/GoOse/configuration.go +++ /dev/null @@ -1,69 +0,0 @@ -package goose - -import ( - "time" -) - -const defaultUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7" - -// Configuration is a wrapper for various config options -type Configuration struct { - localStoragePath string //not used in this version - imagesMinBytes int //not used in this version - targetLanguage string - imageMagickConvertPath string //not used in this version - imageMagickIdentifyPath string //not used in this version - browserUserAgent string - debug bool - extractPublishDate bool - additionalDataExtractor bool - enableImageFetching bool - useMetaLanguage bool - - //path to the stopwords folder - stopWordsPath string - stopWords StopWords - parser *Parser - - timeout time.Duration -} - -// GetDefaultConfiguration returns safe default configuration options -func GetDefaultConfiguration(args ...string) Configuration { - if len(args) == 0 { - return Configuration{ - localStoragePath: "", //not used in this version - imagesMinBytes: 4500, //not used in this version - enableImageFetching: true, - useMetaLanguage: true, - targetLanguage: "en", - imageMagickConvertPath: "/usr/bin/convert", //not used in this version - imageMagickIdentifyPath: "/usr/bin/identify", //not used in this version - browserUserAgent: defaultUserAgent, - debug: false, - extractPublishDate: true, - additionalDataExtractor: false, - stopWordsPath: "resources/stopwords", - stopWords: NewStopwords(), //TODO with path - parser: NewParser(), - timeout: time.Duration(5 * time.Second), - } - } - return Configuration{ - localStoragePath: "", //not used in this version - imagesMinBytes: 4500, //not used in this version - enableImageFetching: true, - useMetaLanguage: true, - targetLanguage: "en", - imageMagickConvertPath: "/usr/bin/convert", //not used in this version - imageMagickIdentifyPath: "/usr/bin/identify", //not used in this version - browserUserAgent: defaultUserAgent, - debug: false, - extractPublishDate: true, - additionalDataExtractor: false, - stopWordsPath: "resources/stopwords", - stopWords: NewStopwords(), //TODO with path - parser: NewParser(), - timeout: time.Duration(5 * time.Second), - } -} diff --git a/vendor/github.com/advancedlogic/GoOse/coverage.sh b/vendor/github.com/advancedlogic/GoOse/coverage.sh deleted file mode 100644 index d8a31be..0000000 --- a/vendor/github.com/advancedlogic/GoOse/coverage.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# Run test coverage on each subdirectory and merge the coverage profile. -echo "mode: count" > target/report/profile.cov - -# Standard go tooling behavior is to ignore dirs with leading underscors -for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d); do - if ls $dir/*.go &> /dev/null; then - go test -covermode=count -coverprofile=$dir/profile.tmp $dir - if [ -f $dir/profile.tmp ]; then - cat $dir/profile.tmp | tail -n +2 >> target/report/profile.cov - rm $dir/profile.tmp - fi - fi -done -go tool cover -html target/report/profile.cov -o target/report/coverage.html - diff --git a/vendor/github.com/advancedlogic/GoOse/crawler.go b/vendor/github.com/advancedlogic/GoOse/crawler.go deleted file mode 100644 index 0faaf05..0000000 --- a/vendor/github.com/advancedlogic/GoOse/crawler.go +++ /dev/null @@ -1,180 +0,0 @@ -package goose - -import ( - "errors" - "strings" - "time" - - "github.com/PuerkitoBio/goquery" -) - -// Crawler can fetch the target HTML page -type Crawler struct { - config Configuration - Charset string -} - -// NewCrawler returns a crawler object initialised with the URL and the [optional] raw HTML body -func NewCrawler(config Configuration) Crawler { - return Crawler{ - config: config, - Charset: "", - } -} - -func getCharsetFromContentType(cs string) string { - cs = strings.ToLower(strings.Replace(cs, " ", "", -1)) - cs = strings.TrimPrefix(cs, "text/html;charset=") - cs = strings.TrimPrefix(cs, "text/xhtml;charset=") - cs = strings.TrimPrefix(cs, "application/xhtml+xml;charset=") - return NormaliseCharset(cs) -} - -// SetCharset can be used to force a charset (e.g. when read from the HTTP headers) -// rather than relying on the detection from the HTML meta tags -func (c *Crawler) SetCharset(cs string) { - c.Charset = getCharsetFromContentType(cs) -} - -// GetContentType returns the Content-Type string extracted from the meta tags -func (c Crawler) GetContentType(document *goquery.Document) string { - var attr string - // - document.Find("meta[http-equiv#=(?i)^Content\\-type$]").Each(func(i int, s *goquery.Selection) { - attr, _ = s.Attr("content") - }) - return attr -} - -// GetCharset returns a normalised charset string extracted from the meta tags -func (c Crawler) GetCharset(document *goquery.Document) string { - // manually-provided charset (from HTTP headers?) takes priority - if "" != c.Charset { - return c.Charset - } - - // - ct := c.GetContentType(document) - if "" != ct && strings.Contains(strings.ToLower(ct), "charset") { - return getCharsetFromContentType(ct) - } - - // - selection := document.Find("meta").EachWithBreak(func(i int, s *goquery.Selection) bool { - _, exists := s.Attr("charset") - return !exists - }) - - if selection != nil { - cs, _ := selection.Attr("charset") - return NormaliseCharset(cs) - } - - return "" -} - -// Preprocess fetches the HTML page if needed, converts it to UTF-8 and applies -// some text normalisation to guarantee better results when extracting the content -func (c *Crawler) Preprocess(RawHTML string) (*goquery.Document, error) { - var err error - - if RawHTML == "" { - return nil, errors.New("cannot process empty HTML content") - } - - RawHTML = c.addSpacesBetweenTags(RawHTML) - - reader := strings.NewReader(RawHTML) - document, err := goquery.NewDocumentFromReader(reader) - if err != nil { - return nil, err - } - - cs := c.GetCharset(document) - //log.Println("-------------------------------------------CHARSET:", cs) - if "" != cs && "UTF-8" != cs { - // the net/html parser and goquery require UTF-8 data - RawHTML = UTF8encode(RawHTML, cs) - reader = strings.NewReader(RawHTML) - if document, err = goquery.NewDocumentFromReader(reader); err != nil { - return nil, err - } - } - - return document, nil -} - -// Crawl fetches the HTML body and returns an Article -func (c Crawler) Crawl(RawHTML string, url string) (*Article, error) { - article := new(Article) - - document, err := c.Preprocess(RawHTML) - if nil != err { - return nil, err - } - if nil == document { - return article, nil - } - extractor := NewExtractor(c.config) - startTime := time.Now().UnixNano() - - article.RawHTML, err = document.Html() - if nil != err { - return nil, err - } - article.FinalURL = url - article.Doc = document - - article.TitleUnmodified = extractor.getTitleUnmodified(document) - article.Title = extractor.GetTitleFromUnmodifiedTitle(article.TitleUnmodified) - article.MetaLang = extractor.GetMetaLanguage(document) - article.MetaFavicon = extractor.GetFavicon(document) - - article.MetaDescription = extractor.GetMetaContentWithSelector(document, "meta[name#=(?i)^description$]") - article.MetaKeywords = extractor.GetMetaContentWithSelector(document, "meta[name#=(?i)^keywords$]") - article.CanonicalLink = extractor.GetCanonicalLink(document) - if "" == article.CanonicalLink { - article.CanonicalLink = article.FinalURL - } - article.Domain = extractor.GetDomain(article.CanonicalLink) - article.Tags = extractor.GetTags(document) - - if c.config.extractPublishDate { - if timestamp := extractor.GetPublishDate(document); timestamp != nil { - article.PublishDate = timestamp - } - } - - cleaner := NewCleaner(c.config) - article.Doc = cleaner.Clean(article.Doc) - - article.TopImage = OpenGraphResolver(document) - if article.TopImage == "" { - article.TopImage = WebPageResolver(article) - } - - article.TopNode = extractor.CalculateBestNode(document) - if article.TopNode != nil { - article.TopNode = extractor.PostCleanup(article.TopNode) - - article.CleanedText, article.Links = extractor.GetCleanTextAndLinks(article.TopNode, article.MetaLang) - - videoExtractor := NewVideoExtractor() - article.Movies = videoExtractor.GetVideos(document) - } - - article.Delta = time.Now().UnixNano() - startTime - - return article, nil -} - -// In many cases, like at the end of each
  • element or between tags, -// we need to add spaces, otherwise the text on either side will get joined together into one word. -// This method also adds newlines after each

    tag to preserve paragraphs. -func (c Crawler) addSpacesBetweenTags(text string) string { - text = strings.Replace(text, "><", "> <", -1) - text = strings.Replace(text, "", "\n", -1) - text = strings.Replace(text, "", "
  • \n", -1) - return strings.Replace(text, "

    ", "

    \n", -1) -} diff --git a/vendor/github.com/advancedlogic/GoOse/crawlershort.go b/vendor/github.com/advancedlogic/GoOse/crawlershort.go deleted file mode 100644 index 15bdade..0000000 --- a/vendor/github.com/advancedlogic/GoOse/crawlershort.go +++ /dev/null @@ -1,155 +0,0 @@ -package goose - -import ( - "strings" - "time" - - "github.com/PuerkitoBio/goquery" - "github.com/pkg/errors" -) - -// Crawler can fetch the target HTML page -type CrawlerShort struct { - config Configuration - Charset string -} - -// NewCrawler returns a crawler object initialised with the URL and the [optional] raw HTML body -func NewCrawlerShort(config Configuration) CrawlerShort { - return CrawlerShort{ - config: config, - Charset: "", - } -} - -// SetCharset can be used to force a charset (e.g. when read from the HTTP headers) -// rather than relying on the detection from the HTML meta tags -func (c *CrawlerShort) SetCharset(cs string) { - c.Charset = getCharsetFromContentType(cs) -} - -// GetContentType returns the Content-Type string extracted from the meta tags -func (c CrawlerShort) GetContentType(document *goquery.Document) string { - var attr string - // - document.Find("meta[http-equiv#=(?i)^Content\\-type$]").Each(func(i int, s *goquery.Selection) { - attr, _ = s.Attr("content") - }) - return attr -} - -// GetCharset returns a normalised charset string extracted from the meta tags -func (c CrawlerShort) GetCharset(document *goquery.Document) string { - // manually-provided charset (from HTTP headers?) takes priority - if "" != c.Charset { - return c.Charset - } - - // - ct := c.GetContentType(document) - if "" != ct && strings.Contains(strings.ToLower(ct), "charset") { - return getCharsetFromContentType(ct) - } - - // - selection := document.Find("meta").EachWithBreak(func(i int, s *goquery.Selection) bool { - _, exists := s.Attr("charset") - return !exists - }) - - if selection != nil { - cs, _ := selection.Attr("charset") - return NormaliseCharset(cs) - } - - return "" -} - -// Preprocess fetches the HTML page if needed, converts it to UTF-8 and applies -// some text normalisation to guarantee better results when extracting the content -func (c *CrawlerShort) Preprocess(RawHTML string) (*goquery.Document, error) { - var err error - - RawHTML = c.addSpacesBetweenTags(RawHTML) - - reader := strings.NewReader(RawHTML) - document, err := goquery.NewDocumentFromReader(reader) - if err != nil { - return nil, errors.Wrap(err, "could not perform goquery.NewDocumentFromReader(reader)") - } - - cs := c.GetCharset(document) - //log.Println("-------------------------------------------CHARSET:", cs) - if "" != cs && "UTF-8" != cs { - // the net/html parser and goquery require UTF-8 data - RawHTML = UTF8encode(RawHTML, cs) - reader = strings.NewReader(RawHTML) - if document, err = goquery.NewDocumentFromReader(reader); err != nil { - return nil, errors.Wrap(err, "could not perform goquery.NewDocumentFromReader(reader)") - } - } - - return document, nil -} - -// Crawl fetches the HTML body and returns an Article -func (c CrawlerShort) Crawl(RawHTML, url string) (*Article, error) { - article := new(Article) - - document, err := c.Preprocess(RawHTML) - if err != nil { - return nil, errors.Wrap(err, "could not Preprocess RawHTML") - } - if document == nil { - return article, nil - } - - extractor := NewExtractor(c.config) - - startTime := time.Now().UnixNano() - - article.RawHTML, err = document.Html() - if err != nil { - return nil, errors.Wrap(err, "could not get html from document") - } - article.FinalURL = url - - article.Title = extractor.GetTitle(document) - article.MetaDescription = extractor.GetMetaContentWithSelector(document, "meta[name#=(?i)^description$]") - - if c.config.extractPublishDate { - if timestamp := extractor.GetPublishDate(document); timestamp != nil { - article.PublishDate = timestamp - } - } - - cleaner := NewCleaner(c.config) - article.Doc = cleaner.Clean(article.Doc) - - article.TopImage = OpenGraphResolver(document) - if article.TopImage == "" { - article.TopImage = WebPageResolver(article) - } - - article.TopNode = extractor.CalculateBestNode(document) - if article.TopNode != nil { - article.TopNode = extractor.PostCleanup(article.TopNode) - - article.CleanedText, article.Links = extractor.GetCleanTextAndLinks(article.TopNode, article.MetaLang) - - } - article.Delta = time.Now().UnixNano() - startTime - - return article, nil -} - -// In many cases, like at the end of each
  • element or between tags, -// we need to add spaces, otherwise the text on either side will get joined together into one word. -// This method also adds newlines after each

    tag to preserve paragraphs. -func (c CrawlerShort) addSpacesBetweenTags(text string) string { - text = strings.Replace(text, "><", "> <", -1) - text = strings.Replace(text, "", "\n", -1) - text = strings.Replace(text, "", "
  • \n", -1) - return strings.Replace(text, "

    ", "

    \n", -1) -} diff --git a/vendor/github.com/advancedlogic/GoOse/doc.go b/vendor/github.com/advancedlogic/GoOse/doc.go deleted file mode 100644 index 1ec02ac..0000000 --- a/vendor/github.com/advancedlogic/GoOse/doc.go +++ /dev/null @@ -1,23 +0,0 @@ -/* -This is a golang port of "Goose" originally licensed to Gravity.com -under one or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. - -Golang port was written by Antonio Linari - -Gravity.com licenses this file -to you under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package goose diff --git a/vendor/github.com/advancedlogic/GoOse/extractor.go b/vendor/github.com/advancedlogic/GoOse/extractor.go deleted file mode 100644 index 28a0378..0000000 --- a/vendor/github.com/advancedlogic/GoOse/extractor.go +++ /dev/null @@ -1,754 +0,0 @@ -package goose - -import ( - "container/list" - "log" - "math" - "net/url" - "regexp" - "strconv" - "strings" - "time" - - "github.com/PuerkitoBio/goquery" - "github.com/araddon/dateparse" - "github.com/fatih/set" - "github.com/gigawattio/window" - "github.com/jaytaylor/html2text" - "golang.org/x/net/html" - "golang.org/x/net/html/atom" -) - -const defaultLanguage = "en" - -var motleyReplacement = "�" // U+FFFD (decimal 65533) is the "replacement character". -//var escapedFragmentReplacement = regexp.MustCompile("#!") -//var titleReplacements = regexp.MustCompile("»") - -var titleDelimiters = []string{ - "|", - " - ", - " — ", - "»", - ":", -} - -var aRelTagSelector = "a[rel=tag]" -var aHrefTagSelector = [...]string{"/tag/", "/tags/", "/topic/", "?keyword"} - -//var langRegEx = "^[A-Za-z]{2}$" - -// ContentExtractor can parse the HTML and fetch various properties -type ContentExtractor struct { - config Configuration -} - -// NewExtractor returns a configured HTML parser -func NewExtractor(config Configuration) ContentExtractor { - return ContentExtractor{ - config: config, - } -} - -//if the article has a title set in the source, use that -func (extr *ContentExtractor) getTitleUnmodified(document *goquery.Document) string { - title := "" - - titleElement := document.Find("title") - if titleElement != nil && titleElement.Size() > 0 { - title = titleElement.Text() - } - - if title == "" { - ogTitleElement := document.Find(`meta[property="og:title"]`) - if ogTitleElement != nil && ogTitleElement.Size() > 0 { - title, _ = ogTitleElement.Attr("content") - } - } - - if title == "" { - titleElement = document.Find("post-title,headline") - if titleElement == nil || titleElement.Size() == 0 { - return title - } - title = titleElement.Text() - } - return title -} - -// GetTitleFromUnmodifiedTitle returns the title from the unmodified one -func (extr *ContentExtractor) GetTitleFromUnmodifiedTitle(title string) string { - for _, delimiter := range titleDelimiters { - if strings.Contains(title, delimiter) { - title = extr.splitTitle(strings.Split(title, delimiter)) - break - } - } - - title = strings.Replace(title, motleyReplacement, "", -1) - - if extr.config.debug { - log.Printf("Page title is %s\n", title) - } - - return strings.TrimSpace(title) -} - -// GetTitle returns the title set in the source, if the article has one -func (extr *ContentExtractor) GetTitle(document *goquery.Document) string { - title := extr.getTitleUnmodified(document) - return extr.GetTitleFromUnmodifiedTitle(title) -} - -func (extr *ContentExtractor) splitTitle(titles []string) string { - largeTextLength := 0 - largeTextIndex := 0 - for i, current := range titles { - if len(current) > largeTextLength { - largeTextLength = len(current) - largeTextIndex = i - } - } - title := titles[largeTextIndex] - title = strings.Replace(title, "»", "»", -1) - return title -} - -// GetMetaLanguage returns the meta language set in the source, if the article has one -func (extr *ContentExtractor) GetMetaLanguage(document *goquery.Document) string { - var language string - shtml := document.Find("html") - attr, _ := shtml.Attr("lang") - if attr == "" { - attr, _ = document.Attr("lang") - } - if attr == "" { - selection := document.Find("meta").EachWithBreak(func(i int, s *goquery.Selection) bool { - var exists bool - attr, exists = s.Attr("http-equiv") - if exists && attr == "content-language" { - return false - } - return true - }) - if selection != nil { - attr, _ = selection.Attr("content") - } - } - idx := strings.LastIndex(attr, "-") - if idx == -1 { - language = attr - } else { - language = attr[0:idx] - } - - _, ok := sw[language] - - if language == "" || !ok { - language = extr.config.stopWords.SimpleLanguageDetector(shtml.Text()) - if language == "" { - language = defaultLanguage - } - } - - extr.config.targetLanguage = language - return language -} - -// GetFavicon returns the favicon set in the source, if the article has one -func (extr *ContentExtractor) GetFavicon(document *goquery.Document) string { - favicon := "" - document.Find("link").EachWithBreak(func(i int, s *goquery.Selection) bool { - attr, exists := s.Attr("rel") - if exists && strings.Contains(attr, "icon") { - favicon, _ = s.Attr("href") - return false - } - return true - }) - return favicon -} - -// GetMetaContentWithSelector returns the content attribute of meta tag matching the selector -func (extr *ContentExtractor) GetMetaContentWithSelector(document *goquery.Document, selector string) string { - selection := document.Find(selector) - content, _ := selection.Attr("content") - return strings.TrimSpace(content) -} - -// GetMetaContent returns the content attribute of meta tag with the given property name -func (extr *ContentExtractor) GetMetaContent(document *goquery.Document, metaName string) string { - content := "" - document.Find("meta").EachWithBreak(func(i int, s *goquery.Selection) bool { - attr, exists := s.Attr("name") - if exists && attr == metaName { - content, _ = s.Attr("content") - return false - } - attr, exists = s.Attr("itemprop") - if exists && attr == metaName { - content, _ = s.Attr("content") - return false - } - return true - }) - return content -} - -// GetMetaContents returns all the meta tags as name->content pairs -func (extr *ContentExtractor) GetMetaContents(document *goquery.Document, metaNames *set.Set) map[string]string { - contents := make(map[string]string) - counter := metaNames.Size() - document.Find("meta").EachWithBreak(func(i int, s *goquery.Selection) bool { - attr, exists := s.Attr("name") - if exists && metaNames.Has(attr) { - content, _ := s.Attr("content") - contents[attr] = content - counter-- - if counter < 0 { - return false - } - } - return true - }) - return contents -} - -// GetMetaDescription returns the meta description set in the source, if the article has one -func (extr *ContentExtractor) GetMetaDescription(document *goquery.Document) string { - return extr.GetMetaContent(document, "description") -} - -// GetMetaKeywords returns the meta keywords set in the source, if the article has them -func (extr *ContentExtractor) GetMetaKeywords(document *goquery.Document) string { - return extr.GetMetaContent(document, "keywords") -} - -// GetMetaAuthor returns the meta author set in the source, if the article has one -func (extr *ContentExtractor) GetMetaAuthor(document *goquery.Document) string { - return extr.GetMetaContent(document, "author") -} - -// GetMetaContentLocation returns the meta content location set in the source, if the article has one -func (extr *ContentExtractor) GetMetaContentLocation(document *goquery.Document) string { - return extr.GetMetaContent(document, "contentLocation") -} - -// GetCanonicalLink returns the meta canonical link set in the source -func (extr *ContentExtractor) GetCanonicalLink(document *goquery.Document) string { - metas := document.Find("link[rel=canonical]") - if metas.Length() > 0 { - meta := metas.First() - href, _ := meta.Attr("href") - href = strings.Trim(href, "\n") - href = strings.Trim(href, " ") - if href != "" { - return href - } - } - return "" -} - -// GetDomain extracts the domain from a link -func (extr *ContentExtractor) GetDomain(canonicalLink string) string { - u, err := url.Parse(canonicalLink) - if err == nil { - return u.Host - } - return "" -} - -// GetTags returns the tags set in the source, if the article has them -func (extr *ContentExtractor) GetTags(document *goquery.Document) *set.Set { - tags := set.New(set.ThreadSafe).(*set.Set) - selections := document.Find(aRelTagSelector) - selections.Each(func(i int, s *goquery.Selection) { - tags.Add(s.Text()) - }) - selections = document.Find("a") - selections.Each(func(i int, s *goquery.Selection) { - href, exists := s.Attr("href") - if exists { - for _, part := range aHrefTagSelector { - if strings.Contains(href, part) { - tags.Add(s.Text()) - } - } - } - }) - - return tags -} - -// GetPublishDate returns the publication date, if one can be located. -func (extr *ContentExtractor) GetPublishDate(document *goquery.Document) *time.Time { - raw, err := document.Html() - if err != nil { - log.Printf("Error converting document HTML nodes to raw HTML: %s (publish date detection aborted)\n", err) - return nil - } - - text, err := html2text.FromString(raw) - if err != nil { - log.Printf("Error converting document HTML to plaintext: %s (publish date detection aborted)\n", err) - return nil - } - - text = strings.ToLower(text) - - // Simplify months because the dateparse pkg only handles abbreviated. - for k, v := range map[string]string{ - "january": "jan", - "march": "mar", - "february": "feb", - "april": "apr", - // "may": "may", // Pointless. - "june": "jun", - "august": "aug", - "september": "sep", - "sept": "sep", - "october": "oct", - "november": "nov", - "december": "dec", - "th,": ",", // Strip day number suffixes. - "rd,": ",", - } { - text = strings.Replace(text, k, v, -1) - } - text = strings.Replace(text, "\n", " ", -1) - text = regexp.MustCompile(" +").ReplaceAllString(text, " ") - - tuple1 := strings.Split(text, " ") - - var ( - expr = regexp.MustCompile("[0-9]") - ts time.Time - found bool - ) - for _, n := range []int{3, 4, 5, 2, 6} { - for _, win := range window.Rolling(tuple1, n) { - if !expr.MatchString(strings.Join(win, " ")) { - continue - } - - input := strings.Join(win, " ") - ts, err = dateparse.ParseAny(input) - if err == nil && ts.Year() > 0 && ts.Month() > 0 && ts.Day() > 0 { - found = true - break - } - - // Try injecting a comma for dateparse. - win[1] = win[1] + "," - input = strings.Join(win, " ") - ts, err = dateparse.ParseAny(input) - if err == nil && ts.Year() > 0 && ts.Month() > 0 && ts.Day() > 0 { - found = true - break - } - } - if found { - break - } - } - - if found { - return &ts - } - return nil -} - -// GetCleanTextAndLinks parses the main HTML node for text and links -func (extr *ContentExtractor) GetCleanTextAndLinks(topNode *goquery.Selection, lang string) (string, []string) { - outputFormatter := new(outputFormatter) - outputFormatter.config = extr.config - return outputFormatter.getFormattedText(topNode, lang) -} - -// CalculateBestNode checks for the HTML node most likely to contain the main content. -//we're going to start looking for where the clusters of paragraphs are. We'll score a cluster based on the number of stopwords -//and the number of consecutive paragraphs together, which should form the cluster of text that this node is around -//also store on how high up the paragraphs are, comments are usually at the bottom and should get a lower score -func (extr *ContentExtractor) CalculateBestNode(document *goquery.Document) *goquery.Selection { - var topNode *goquery.Selection - nodesToCheck := extr.nodesToCheck(document) - if extr.config.debug { - log.Printf("Nodes to check %d\n", len(nodesToCheck)) - } - startingBoost := 1.0 - cnt := 0 - i := 0 - parentNodes := set.New(set.ThreadSafe).(*set.Set) - nodesWithText := list.New() - for _, node := range nodesToCheck { - textNode := node.Text() - ws := extr.config.stopWords.stopWordsCount(extr.config.targetLanguage, textNode) - highLinkDensity := extr.isHighLinkDensity(node) - if ws.stopWordCount > 2 && !highLinkDensity { - nodesWithText.PushBack(node) - } - } - nodesNumber := nodesWithText.Len() - negativeScoring := 0 - bottomNegativeScoring := float64(nodesNumber) * 0.25 - - if extr.config.debug { - log.Printf("About to inspect num of nodes with text %d\n", nodesNumber) - } - - for n := nodesWithText.Front(); n != nil; n = n.Next() { - node := n.Value.(*goquery.Selection) - boostScore := 0.0 - if extr.isBoostable(node) { - if cnt >= 0 { - boostScore = float64((1.0 / startingBoost) * 50) - startingBoost++ - } - } - - if nodesNumber > 15 { - if float64(nodesNumber-i) <= bottomNegativeScoring { - booster := bottomNegativeScoring - float64(nodesNumber-i) - boostScore = -math.Pow(booster, 2.0) - negScore := math.Abs(boostScore) + float64(negativeScoring) - if negScore > 40 { - boostScore = 5.0 - } - } - } - - if extr.config.debug { - log.Printf("Location Boost Score %1.5f on iteration %d id='%s' class='%s'\n", boostScore, i, extr.config.parser.name("id", node), extr.config.parser.name("class", node)) - } - textNode := node.Text() - ws := extr.config.stopWords.stopWordsCount(extr.config.targetLanguage, textNode) - upScore := ws.stopWordCount + int(boostScore) - parentNode := node.Parent() - extr.updateScore(parentNode, upScore) - extr.updateNodeCount(parentNode, 1) - if !parentNodes.Has(parentNode) { - parentNodes.Add(parentNode) - } - parentParentNode := parentNode.Parent() - if parentParentNode != nil { - extr.updateNodeCount(parentParentNode, 1) - extr.updateScore(parentParentNode, upScore/2.0) - if !parentNodes.Has(parentParentNode) { - parentNodes.Add(parentParentNode) - } - } - cnt++ - i++ - } - - topNodeScore := 0 - parentNodesArray := parentNodes.List() - for _, p := range parentNodesArray { - e := p.(*goquery.Selection) - if extr.config.debug { - log.Printf("ParentNode: score=%s nodeCount=%s id='%s' class='%s'\n", extr.config.parser.name("gravityScore", e), extr.config.parser.name("gravityNodes", e), extr.config.parser.name("id", e), extr.config.parser.name("class", e)) - } - score := extr.getScore(e) - if score >= topNodeScore { - topNode = e - topNodeScore = score - } - if topNode == nil { - topNode = e - } - } - return topNode -} - -//returns the gravityScore as an integer from this node -func (extr *ContentExtractor) getScore(node *goquery.Selection) int { - return extr.getNodeGravityScore(node) -} - -func (extr *ContentExtractor) getNodeGravityScore(node *goquery.Selection) int { - grvScoreString, exists := node.Attr("gravityScore") - if !exists { - return 0 - } - grvScore, err := strconv.Atoi(grvScoreString) - if err != nil { - return 0 - } - return grvScore -} - -//adds a score to the gravityScore Attribute we put on divs -//we'll get the current score then add the score we're passing in to the current -func (extr *ContentExtractor) updateScore(node *goquery.Selection, addToScore int) { - currentScore := 0 - var err error - scoreString, _ := node.Attr("gravityScore") - if scoreString != "" { - currentScore, err = strconv.Atoi(scoreString) - if err != nil { - currentScore = 0 - } - } - newScore := currentScore + addToScore - extr.config.parser.setAttr(node, "gravityScore", strconv.Itoa(newScore)) -} - -//stores how many decent nodes are under a parent node -func (extr *ContentExtractor) updateNodeCount(node *goquery.Selection, addToCount int) { - currentScore := 0 - var err error - scoreString, _ := node.Attr("gravityNodes") - if scoreString != "" { - currentScore, err = strconv.Atoi(scoreString) - if err != nil { - currentScore = 0 - } - } - newScore := currentScore + addToCount - extr.config.parser.setAttr(node, "gravityNodes", strconv.Itoa(newScore)) -} - -//a lot of times the first paragraph might be the caption under an image so we'll want to make sure if we're going to -//boost a parent node that it should be connected to other paragraphs, at least for the first n paragraphs -//so we'll want to make sure that the next sibling is a paragraph and has at least some substantial weight to it -func (extr *ContentExtractor) isBoostable(node *goquery.Selection) bool { - stepsAway := 0 - next := node.Next() - for next != nil && stepsAway < node.Siblings().Length() { - currentNodeTag := node.Get(0).DataAtom.String() - if currentNodeTag == "p" { - if stepsAway >= 3 { - if extr.config.debug { - log.Println("Next paragraph is too far away, not boosting") - } - return false - } - - paraText := node.Text() - ws := extr.config.stopWords.stopWordsCount(extr.config.targetLanguage, paraText) - if ws.stopWordCount > 5 { - if extr.config.debug { - log.Println("We're gonna boost this node, seems content") - } - return true - } - } - - stepsAway++ - next = next.Next() - } - - return false -} - -//returns a list of nodes we want to search on like paragraphs and tables -func (extr *ContentExtractor) nodesToCheck(doc *goquery.Document) []*goquery.Selection { - var output []*goquery.Selection - tags := []string{"p", "pre", "td"} - for _, tag := range tags { - selections := doc.Children().Find(tag) - if selections != nil { - selections.Each(func(i int, s *goquery.Selection) { - output = append(output, s) - }) - } - } - return output -} - -//checks the density of links within a node, is there not much text and most of it contains bad links? -//if so it's no good -func (extr *ContentExtractor) isHighLinkDensity(node *goquery.Selection) bool { - links := node.Find("a") - if links == nil || links.Size() == 0 { - return false - } - text := node.Text() - words := strings.Split(text, " ") - nwords := len(words) - var sb []string - links.Each(func(i int, s *goquery.Selection) { - linkText := s.Text() - sb = append(sb, linkText) - }) - linkText := strings.Join(sb, "") - linkWords := strings.Split(linkText, " ") - nlinkWords := len(linkWords) - nlinks := links.Size() - linkDivisor := float64(nlinkWords) / float64(nwords) - score := linkDivisor * float64(nlinks) - - if extr.config.debug { - var logText string - if len(node.Text()) >= 51 { - logText = node.Text()[0:50] - } else { - logText = node.Text() - } - log.Printf("Calculated link density score as %1.5f for node %s\n", score, logText) - } - if score > 1.0 { - return true - } - return false -} - -func (extr *ContentExtractor) isTableAndNoParaExist(selection *goquery.Selection) bool { - subParagraph := selection.Find("p") - subParagraph.Each(func(i int, s *goquery.Selection) { - txt := s.Text() - if len(txt) < 25 { - node := s.Get(0) - parent := node.Parent - parent.RemoveChild(node) - } - }) - - subParagraph2 := selection.Find("p") - if subParagraph2.Length() == 0 && selection.Get(0).DataAtom.String() != "td" { - return true - } - return false -} - -func (extr *ContentExtractor) isNodescoreThresholdMet(node *goquery.Selection, e *goquery.Selection) bool { - topNodeScore := extr.getNodeGravityScore(node) - currentNodeScore := extr.getNodeGravityScore(e) - threasholdScore := float64(topNodeScore) * 0.08 - if (float64(currentNodeScore) < threasholdScore) && e.Get(0).DataAtom.String() != "td" { - return false - } - return true -} - -//we could have long articles that have tons of paragraphs so if we tried to calculate the base score against -//the total text score of those paragraphs it would be unfair. So we need to normalize the score based on the average scoring -//of the paragraphs within the top node. For example if our total score of 10 paragraphs was 1000 but each had an average value of -//100 then 100 should be our base. -func (extr *ContentExtractor) getSiblingsScore(topNode *goquery.Selection) int { - base := 100000 - paragraphNumber := 0 - paragraphScore := 0 - nodesToCheck := topNode.Find("p") - nodesToCheck.Each(func(i int, s *goquery.Selection) { - textNode := s.Text() - ws := extr.config.stopWords.stopWordsCount(extr.config.targetLanguage, textNode) - highLinkDensity := extr.isHighLinkDensity(s) - if ws.stopWordCount > 2 && !highLinkDensity { - paragraphNumber++ - paragraphScore += ws.stopWordCount - } - }) - if paragraphNumber > 0 { - base = paragraphScore / paragraphNumber - } - return base -} - -func (extr *ContentExtractor) getSiblingsContent(currentSibling *goquery.Selection, baselinescoreSiblingsPara float64) []*goquery.Selection { - var ps []*goquery.Selection - if currentSibling.Get(0).DataAtom.String() == "p" && len(currentSibling.Text()) > 0 { - ps = append(ps, currentSibling) - return ps - } - - potentialParagraphs := currentSibling.Find("p") - potentialParagraphs.Each(func(i int, s *goquery.Selection) { - text := s.Text() - if len(text) > 0 { - ws := extr.config.stopWords.stopWordsCount(extr.config.targetLanguage, text) - paragraphScore := ws.stopWordCount - siblingBaselineScore := 0.30 - highLinkDensity := extr.isHighLinkDensity(s) - score := siblingBaselineScore * baselinescoreSiblingsPara - if score < float64(paragraphScore) && !highLinkDensity { - node := new(html.Node) - node.Type = html.TextNode - node.Data = text - node.DataAtom = atom.P - nodes := make([]*html.Node, 1) - nodes[0] = node - newSelection := new(goquery.Selection) - newSelection.Nodes = nodes - ps = append(ps, newSelection) - } - } - - }) - return ps -} - -func (extr *ContentExtractor) walkSiblings(node *goquery.Selection) []*goquery.Selection { - currentSibling := node.Prev() - var b []*goquery.Selection - for currentSibling.Length() != 0 { - b = append(b, currentSibling) - previousSibling := currentSibling.Prev() - currentSibling = previousSibling - } - return b -} - -//adds any siblings that may have a decent score to this node -func (extr *ContentExtractor) addSiblings(topNode *goquery.Selection) *goquery.Selection { - if extr.config.debug { - log.Println("Starting to add siblings") - } - baselinescoreSiblingsPara := extr.getSiblingsScore(topNode) - results := extr.walkSiblings(topNode) - for _, currentNode := range results { - ps := extr.getSiblingsContent(currentNode, float64(baselinescoreSiblingsPara)) - for _, p := range ps { - nodes := make([]*html.Node, len(topNode.Nodes)+1) - nodes[0] = p.Get(0) - for i, node := range topNode.Nodes { - nodes[i+1] = node - } - topNode.Nodes = nodes - } - } - return topNode -} - -//PostCleanup removes any divs that looks like non-content, clusters of links, or paras with no gusto -func (extr *ContentExtractor) PostCleanup(targetNode *goquery.Selection) *goquery.Selection { - if extr.config.debug { - log.Println("Starting cleanup Node") - } - node := extr.addSiblings(targetNode) - children := node.Children() - children.Each(func(i int, s *goquery.Selection) { - tag := s.Get(0).DataAtom.String() - if tag != "p" { - if extr.config.debug { - log.Printf("CLEANUP NODE: %s class: %s\n", extr.config.parser.name("id", s), extr.config.parser.name("class", s)) - } - //if extr.isHighLinkDensity(s) || extr.isTableAndNoParaExist(s) || !extr.isNodescoreThresholdMet(node, s) { - if extr.isHighLinkDensity(s) { - extr.config.parser.removeNode(s) - return - } - - subParagraph := s.Find("p") - subParagraph.Each(func(j int, e *goquery.Selection) { - if len(e.Text()) < 25 { - extr.config.parser.removeNode(e) - } - }) - - subParagraph2 := s.Find("p") - if subParagraph2.Length() == 0 && tag != "td" { - if extr.config.debug { - log.Println("Removing node because it doesn't have any paragraphs") - } - extr.config.parser.removeNode(s) - } else { - if extr.config.debug { - log.Println("Not removing TD node") - } - } - return - } - }) - return node -} diff --git a/vendor/github.com/advancedlogic/GoOse/goose.go b/vendor/github.com/advancedlogic/GoOse/goose.go deleted file mode 100644 index 419887e..0000000 --- a/vendor/github.com/advancedlogic/GoOse/goose.go +++ /dev/null @@ -1,41 +0,0 @@ -package goose - -import ( - "github.com/pkg/errors" -) - -// Goose is the main entry point of the program -type Goose struct { - config Configuration -} - -// New returns a new instance of the article extractor -func New(args ...string) Goose { - return Goose{ - config: GetDefaultConfiguration(args...), - } -} - -// NewWithConfig returns a new instance of the article extractor with configuration -func NewWithConfig(config Configuration) Goose { - return Goose{ - config, - } -} - -// ExtractFromURL follows the URL, fetches the HTML page and returns an article object -func (g Goose) ExtractFromURL(url string) (*Article, error) { - HtmlRequester := NewHtmlRequester(g.config) - html, err := HtmlRequester.fetchHTML(url) - if err != nil { - return nil, errors.Wrap(err, "could not get htnk from site") - } - cc := NewCrawler(g.config) - return cc.Crawl(html, url) -} - -// ExtractFromRawHTML returns an article object from the raw HTML content -func (g Goose) ExtractFromRawHTML(RawHTML string, url string) (*Article, error) { - cc := NewCrawler(g.config) - return cc.Crawl(RawHTML, url) -} diff --git a/vendor/github.com/advancedlogic/GoOse/goose.json b/vendor/github.com/advancedlogic/GoOse/goose.json deleted file mode 100644 index e0f0fec..0000000 --- a/vendor/github.com/advancedlogic/GoOse/goose.json +++ /dev/null @@ -1,37 +0,0 @@ -/* -This is a golang port of "Goose" originaly licensed to Gravity.com -under one or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. - -Golang port was written by Antonio Linari - -Gravity.com licenses this file -to you under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -//JSON Configuration file -{ - "localStoragePath": "", - "imagesMinBytes": 4500, - "enableImageFetching": true, - "useMetaLanguage": true, - "targetLanguage": "en", - "imageMagickConvertPath": "/usr/bin/convert", - "imageMagickIdentifyPath": "/usr/bin/identify", - "browserUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7", - "debug": false, - "extractPublishDate": false, - "additionalDataExtractor": false, - "stopWordsPath": "resources/stopwords" -} diff --git a/vendor/github.com/advancedlogic/GoOse/html.go b/vendor/github.com/advancedlogic/GoOse/html.go deleted file mode 100644 index 5928dd5..0000000 --- a/vendor/github.com/advancedlogic/GoOse/html.go +++ /dev/null @@ -1,47 +0,0 @@ -package goose - -import ( - resty "github.com/go-resty/resty/v2" - "github.com/pkg/errors" -) - -type HtmlRequester interface { - fetchHTML(string) (string, error) -} - -// Crawler can fetch the target HTML page -type htmlrequester struct { - config Configuration -} - -// NewCrawler returns a crawler object initialised with the URL and the [optional] raw HTML body -func NewHtmlRequester(config Configuration) HtmlRequester { - return htmlrequester{ - config: config, - } -} - -func (hr htmlrequester) fetchHTML(url string) (string, error) { - client := resty.New() - client.SetTimeout(hr.config.timeout) - resp, err := client.R(). - SetHeader("Content-Type", "text/html"). - SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30"). - Get(url) - - if err != nil { - return "", errors.Wrap(err, "could not perform request on "+url) - } - if resp.IsError() { - return "", &badRequest{Message: "could not perform request with " + url + " status code " + string(resp.StatusCode())} - } - return resp.String(), nil -} - -type badRequest struct { - Message string `json:"message,omitempty"` -} - -func (BadRequest *badRequest) Error() string { - return "Required request fields are not filled" -} diff --git a/vendor/github.com/advancedlogic/GoOse/images.go b/vendor/github.com/advancedlogic/GoOse/images.go deleted file mode 100644 index da0c889..0000000 --- a/vendor/github.com/advancedlogic/GoOse/images.go +++ /dev/null @@ -1,328 +0,0 @@ -package goose - -import ( - "github.com/PuerkitoBio/goquery" - "net/url" - "regexp" - "strconv" - "strings" -) - -type candidate struct { - url string - surface int - score int -} - -func (c *candidate) GetUrl() string { - return c.url -} - -var largebig = regexp.MustCompile("(large|big|full)") - -var classRules = map[*regexp.Regexp]int{ - regexp.MustCompile("(promo|ads|banner)"): -1} - -var rules = map[*regexp.Regexp]int{ - largebig: 1, - regexp.MustCompile("upload"): 1, - regexp.MustCompile("media"): 1, - regexp.MustCompile("gravatar.com"): -1, - regexp.MustCompile("feeds.feedburner.com"): -1, - regexp.MustCompile("(?i)icon"): -1, - regexp.MustCompile("(?i)logo"): -1, - regexp.MustCompile("(?i)spinner"): -1, - regexp.MustCompile("(?i)loading"): -1, - regexp.MustCompile("(?i)ads"): -1, - regexp.MustCompile("badge"): -1, - regexp.MustCompile("1x1"): -1, - regexp.MustCompile("pixel"): -1, - regexp.MustCompile("thumbnail[s]*"): -1, - regexp.MustCompile(".html|" + - ".gif|" + - ".ico|" + - "button|" + - "twitter.jpg|" + - "facebook.jpg|" + - "ap_buy_photo|" + - "digg.jpg|" + - "digg.png|" + - "delicious.png|" + - "facebook.png|" + - "reddit.jpg|" + - "doubleclick|" + - "diggthis|" + - "diggThis|" + - "adserver|" + - "/(ads|promos|banners)/|" + - "ec.atdmt.com|" + - "mediaplex.com|" + - "adsatt|" + - "view.atdmt"): -1} - -func getImageSrc(tag *goquery.Selection) string { - src, _ := tag.Attr("src") - // skip inline images - if strings.Contains(src, "data:image/") { - src = "" - } - if src == "" { - src, _ = tag.Attr("data-src") - } - if src == "" { - src, _ = tag.Attr("data-lazy-src") - } - return src -} - -func score(tag *goquery.Selection) int { - src := getImageSrc(tag) - if src == "" { - return -1 - } - tagScore := 0 - for rule, score := range rules { - if rule.MatchString(src) { - tagScore += score - } - } - - alt, exists := tag.Attr("alt") - if exists { - if strings.Contains(alt, "thumbnail") { - tagScore-- - } - } - - id, exists := tag.Attr("id") - if exists { - if id == "fbPhotoImage" { - tagScore++ - } - } - - class, exists := tag.Attr("class") - if exists { - for rule, score := range classRules { - if rule.MatchString(class) { - tagScore += score - } - } - } - - return tagScore -} - -// WebPageImageResolver fetches all candidate images from the HTML page -func WebPageImageResolver(doc *goquery.Document) ([]candidate, int) { - imgs := doc.Find("img") - - var candidates []candidate - significantSurface := 320 * 200 - significantSurfaceCount := 0 - src := "" - imgs.Each(func(i int, tag *goquery.Selection) { - var surface int - src = getImageSrc(tag) - if src == "" { - return - } - - width, _ := tag.Attr("width") - height, _ := tag.Attr("height") - if width != "" { - w, _ := strconv.Atoi(width) - if height != "" { - h, _ := strconv.Atoi(height) - surface = w * h - } else { - surface = w - } - } else { - if height != "" { - surface, _ = strconv.Atoi(height) - } else { - surface = 0 - } - } - - if surface > significantSurface { - significantSurfaceCount++ - } - - tagscore := score(tag) - if tagscore >= 0 { - c := candidate{ - url: src, - surface: surface, - score: score(tag), - } - candidates = append(candidates, c) - } - }) - - if len(candidates) == 0 { - return nil, 0 - } - - return candidates, significantSurfaceCount - -} - -// WebPageResolver fetches the main image from the HTML page -func WebPageResolver(article *Article) string { - candidates, significantSurfaceCount := WebPageImageResolver(article.Doc) - if candidates == nil { - return "" - } - var bestCandidate candidate - var topImage string - if significantSurfaceCount > 0 { - bestCandidate = findBestCandidateFromSurface(candidates) - } else { - bestCandidate = findBestCandidateFromScore(candidates) - } - - topImage = bestCandidate.url - a, err := url.Parse(topImage) - if err != nil { - return topImage - } - finalURL, err := url.Parse(article.FinalURL) - if err != nil { - return topImage - } - b := finalURL.ResolveReference(a) - topImage = b.String() - - return topImage -} - -func findBestCandidateFromSurface(candidates []candidate) candidate { - max := 0 - var bestCandidate candidate - for _, candidate := range candidates { - surface := candidate.surface - if surface >= max { - max = surface - bestCandidate = candidate - } - } - - return bestCandidate -} - -func findBestCandidateFromScore(candidates []candidate) candidate { - max := 0 - var bestCandidate candidate - for _, candidate := range candidates { - score := candidate.score - if score >= max { - max = score - bestCandidate = candidate - } - } - - return bestCandidate -} - -type ogTag struct { - tpe string - attribute string - name string - value string -} - -var ogTags = [4]ogTag{ - { - tpe: "facebook", - attribute: "property", - name: "og:image", - value: "content", - }, - { - tpe: "facebook", - attribute: "rel", - name: "image_src", - value: "href", - }, - { - tpe: "twitter", - attribute: "name", - name: "twitter:image", - value: "value", - }, - { - tpe: "twitter", - attribute: "name", - name: "twitter:image", - value: "content", - }, -} - -type ogImage struct { - url string - tpe string - score int -} - -// OpenGraphResolver return OpenGraph properties -func OpenGraphResolver(doc *goquery.Document) string { - meta := doc.Find("meta") - links := doc.Find("link") - var topImage string - meta = meta.Union(links) - var ogImages []ogImage - meta.Each(func(i int, tag *goquery.Selection) { - for _, ogTag := range ogTags { - attr, exist := tag.Attr(ogTag.attribute) - value, vexist := tag.Attr(ogTag.value) - if exist && attr == ogTag.name && vexist { - ogImage := ogImage{ - url: value, - tpe: ogTag.tpe, - score: 0, - } - - ogImages = append(ogImages, ogImage) - } - } - }) - if len(ogImages) == 0 { - return "" - } - if len(ogImages) == 1 { - topImage = ogImages[0].url - goto IMAGE_FINALIZE - } - for _, ogImage := range ogImages { - if largebig.MatchString(ogImage.url) { - ogImage.score++ - } - if ogImage.tpe == "twitter" { - ogImage.score++ - } - } - topImage = findBestImageFromScore(ogImages).url -IMAGE_FINALIZE: - if !strings.HasPrefix(topImage, "http") { - topImage = "http://" + topImage - } - - return topImage -} - -// assume that len(ogImages)>=2 -func findBestImageFromScore(ogImages []ogImage) ogImage { - max := 0 - bestOGImage := ogImages[0] - for _, ogImage := range ogImages[1:] { - score := ogImage.score - if score > max { - max = score - bestOGImage = ogImage - } - } - - return bestOGImage -} diff --git a/vendor/github.com/advancedlogic/GoOse/outputformatter.go b/vendor/github.com/advancedlogic/GoOse/outputformatter.go deleted file mode 100644 index 7829d08..0000000 --- a/vendor/github.com/advancedlogic/GoOse/outputformatter.go +++ /dev/null @@ -1,180 +0,0 @@ -package goose - -import ( - "bytes" - "regexp" - "strconv" - "strings" - - "github.com/PuerkitoBio/goquery" - "golang.org/x/net/html" -) - -var normalizeWhitespaceRegexp = regexp.MustCompile(`[ \r\f\v\t]+`) -var normalizeNl = regexp.MustCompile(`[\n]+`) -var validURLRegex = regexp.MustCompile("^http[s]?://") - -type outputFormatter struct { - topNode *goquery.Selection - config Configuration - language string -} - -func (formatter *outputFormatter) getLanguage(lang string) string { - if formatter.config.useMetaLanguage && "" != lang { - return lang - } - return formatter.config.targetLanguage -} - -func (formatter *outputFormatter) getTopNode() *goquery.Selection { - return formatter.topNode -} - -func (formatter *outputFormatter) getFormattedText(topNode *goquery.Selection, lang string) (output string, links []string) { - formatter.topNode = topNode - formatter.language = formatter.getLanguage(lang) - if formatter.language == "" { - formatter.language = formatter.config.targetLanguage - } - formatter.removeNegativescoresNodes() - links = formatter.linksToText() - formatter.replaceTagsWithText() - formatter.removeParagraphsWithFewWords() - - output = formatter.getOutputText() - return output, links -} - -func (formatter *outputFormatter) convertToText() string { - var txts []string - selections := formatter.topNode - selections.Each(func(i int, s *goquery.Selection) { - txt := s.Text() - if txt != "" { - // txt = txt //unescape - txtLis := strings.Trim(txt, "\n") - txts = append(txts, txtLis) - } - }) - return strings.Join(txts, "\n\n") -} - -// check if this is a valid URL -func isValidURL(u string) bool { - return validURLRegex.MatchString(u) -} - -func (formatter *outputFormatter) linksToText() []string { - var urlList []string - links := formatter.topNode.Find("a") - links.Each(func(i int, a *goquery.Selection) { - imgs := a.Find("img") - // ignore linked images - if imgs.Length() == 0 { - // save a list of URLs - url, _ := a.Attr("href") - if isValidURL(url) { - urlList = append(urlList, url) - } - // replace tag with its text contents - replaceTagWithContents(a, whitelistedExtAtomTypes) - - // see whether we can collapse the parent node now - replaceTagWithContents(a.Parent(), whitelistedTextAtomTypes) - } - }) - - return urlList -} - -// Text gets the combined text contents of each element in the set of matched -// elements, including their descendants. -// -// @see https://github.com/PuerkitoBio/goquery/blob/master/property.go -func (formatter *outputFormatter) Text(s *goquery.Selection) string { - var buf bytes.Buffer - - // Slightly optimized vs calling Each: no single selection object created - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.TextNode && 0 == n.DataAtom { // NB: had to add the DataAtom check to avoid printing text twice when a textual node embeds another textual node - // Keep newlines and spaces, like jQuery - buf.WriteString(n.Data) - } - if n.FirstChild != nil { - for c := n.FirstChild; c != nil; c = c.NextSibling { - f(c) - } - } - } - for _, n := range s.Nodes { - f(n) - } - - return buf.String() -} - -func (formatter *outputFormatter) getOutputText() string { - //out := formatter.topNode.Text() - out := formatter.Text(formatter.topNode) - out = normalizeWhitespaceRegexp.ReplaceAllString(out, " ") - - strArr := strings.Split(out, "\n") - resArr := []string{} - - for i, v := range strArr { - v = strings.TrimSpace(v) - if v != "" { - resArr = append(resArr, v) - } else if i > 2 && strArr[i-2] != "" { - resArr = append(resArr, "") - } - } - - out = strings.Join(resArr, "\n") - out = normalizeNl.ReplaceAllString(out, "\n\n") - - out = strings.TrimSpace(out) - return out -} - -func (formatter *outputFormatter) removeNegativescoresNodes() { - gravityItems := formatter.topNode.Find("*[gravityScore]") - gravityItems.Each(func(i int, s *goquery.Selection) { - var score int - sscore, exists := s.Attr("gravityScore") - if exists { - score, _ = strconv.Atoi(sscore) - if score < 1 { - sNode := s.Get(0) - sNode.Parent.RemoveChild(sNode) - } - } - - }) -} - -func (formatter *outputFormatter) replaceTagsWithText() { - for _, tag := range []string{"em", "strong", "b", "i", "span", "h1", "h2", "h3", "h4"} { - nodes := formatter.topNode.Find(tag) - nodes.Each(func(i int, node *goquery.Selection) { - replaceTagWithContents(node, whitelistedTextAtomTypes) - }) - } -} - -func (formatter *outputFormatter) removeParagraphsWithFewWords() { - language := formatter.language - if language == "" { - language = "en" - } - allNodes := formatter.topNode.Children() - allNodes.Each(func(i int, s *goquery.Selection) { - sw := formatter.config.stopWords.stopWordsCount(language, s.Text()) - if sw.wordCount < 5 && s.Find("object").Length() == 0 && s.Find("em").Length() == 0 { - node := s.Get(0) - node.Parent.RemoveChild(node) - } - }) -} diff --git a/vendor/github.com/advancedlogic/GoOse/parser.go b/vendor/github.com/advancedlogic/GoOse/parser.go deleted file mode 100644 index 1975c0f..0000000 --- a/vendor/github.com/advancedlogic/GoOse/parser.go +++ /dev/null @@ -1,90 +0,0 @@ -package goose - -import ( - "github.com/PuerkitoBio/goquery" - "golang.org/x/net/html" -) - -// Parser is an HTML parser specialised in extraction of main content and other properties -type Parser struct{} - -// NewParser returns an HTML parser -func NewParser() *Parser { - return &Parser{} -} - -func (p Parser) dropTag(selection *goquery.Selection) { - selection.Each(func(i int, s *goquery.Selection) { - replaceTagWithContents(s, whitelistedTextAtomTypes) - }) -} - -func (p Parser) indexOfAttribute(selection *goquery.Selection, attr string) int { - node := selection.Get(0) - for i, a := range node.Attr { - if a.Key == attr { - return i - } - } - return -1 -} - -func (p Parser) delAttr(selection *goquery.Selection, attr string) { - idx := p.indexOfAttribute(selection, attr) - if idx > -1 { - node := selection.Get(0) - node.Attr = append(node.Attr[:idx], node.Attr[idx+1:]...) - } -} - -func (p Parser) getElementsByTags(div *goquery.Selection, tags []string) *goquery.Selection { - selection := new(goquery.Selection) - for _, tag := range tags { - selections := div.Find(tag) - if selections != nil { - selection = selection.Union(selections) - } - } - return selection -} - -func (p Parser) clear(selection *goquery.Selection) { - selection.Nodes = make([]*html.Node, 0) -} - -func (p Parser) removeNode(selection *goquery.Selection) { - if selection != nil { - node := selection.Get(0) - if node != nil && node.Parent != nil { - node.Parent.RemoveChild(node) - } - } -} - -func (p Parser) name(selector string, selection *goquery.Selection) string { - value, exists := selection.Attr(selector) - if exists { - return value - } - return "" -} - -func (p Parser) setAttr(selection *goquery.Selection, attr string, value string) { - if selection.Size() > 0 { - node := selection.Get(0) - var attrs []html.Attribute - for _, a := range node.Attr { - if a.Key != attr { - newAttr := new(html.Attribute) - newAttr.Key = a.Key - newAttr.Val = a.Val - attrs = append(attrs, *newAttr) - } - } - newAttr := new(html.Attribute) - newAttr.Key = attr - newAttr.Val = value - attrs = append(attrs, *newAttr) - node.Attr = attrs - } -} diff --git a/vendor/github.com/advancedlogic/GoOse/stopwords.go b/vendor/github.com/advancedlogic/GoOse/stopwords.go deleted file mode 100644 index fa77c75..0000000 --- a/vendor/github.com/advancedlogic/GoOse/stopwords.go +++ /dev/null @@ -1,4076 +0,0 @@ -package goose - -import ( - "log" - "os" - "regexp" - "strings" - - "github.com/fatih/set" -) - -var punctuationRegex = regexp.MustCompile(`[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\s]`) - -// StopWords implements a simple language detector -type StopWords struct { - cachedStopWords map[string]*set.Set -} - -// NewStopwords returns an instance of a stop words detector -func NewStopwords() StopWords { - cachedStopWords := make(map[string]*set.Set) - for lang, stopwords := range sw { - lines := strings.Split(stopwords, "\n") - cachedStopWords[lang] = set.New(set.ThreadSafe).(*set.Set) - for _, line := range lines { - if strings.HasPrefix(line, "#") { - continue - } - line = strings.TrimSpace(line) - cachedStopWords[lang].Add(line) - } - } - return StopWords{ - cachedStopWords: cachedStopWords, - } -} - -/* -func NewStopwords(path string) StopWords { - cachedStopWords := make(map[string]*set.Set) - files, err := ioutil.ReadDir(path) - if err != nil { - panic(err.Error()) - } - for _, file := range files { - name := strings.Replace(file.Name(), ".txt", "", -1) - name = strings.Replace(name, "stopwords-", "", -1) - name = strings.ToLower(name) - - stops := set.New() - lines := ReadLinesOfFile(path + "/" + file.Name()) - for _, line := range lines { - line = strings.Trim(line, " ") - stops.Add(line) - } - cachedStopWords[name] = stops - } - - return StopWords{ - cachedStopWords: cachedStopWords, - } -} -*/ - -func (stop *StopWords) removePunctuation(text string) string { - return punctuationRegex.ReplaceAllString(text, "") -} - -func (stop *StopWords) stopWordsCount(lang string, text string) wordStats { - if text == "" { - return wordStats{} - } - ws := wordStats{} - stopWords := set.New(set.ThreadSafe).(*set.Set) - text = strings.ToLower(text) - items := strings.Split(text, " ") - stops := stop.cachedStopWords[lang] - count := 0 - if stops != nil { - for _, item := range items { - if stops.Has(item) { - stopWords.Add(item) - count++ - } - } - } - - ws.stopWordCount = stopWords.Size() - ws.wordCount = len(items) - ws.stopWords = stopWords - - return ws -} - -// SimpleLanguageDetector returns the language code for the text, based on its stop words -func (stop StopWords) SimpleLanguageDetector(text string) string { - max := 0 - currentLang := "en" - - for k := range sw { - ws := stop.stopWordsCount(k, text) - if ws.stopWordCount > max { - max = ws.stopWordCount - currentLang = k - } - } - - return currentLang -} - -// ReadLinesOfFile returns the lines from a file as a slice of strings -func ReadLinesOfFile(filename string) []string { - content, err := os.ReadFile(filename) - if err != nil { - log.Println(err.Error()) - } - lines := strings.Split(string(content), "\n") - return lines -} - -var sw = map[string]string{ - "ar": ` -فى -في -كل -لم -لن -له -من -هو -هي -قوة -كما -لها -منذ -وقد -ولا -نفسه -لقاء -مقابل -هناك -وقال -وكان -نهاية -وقالت -وكانت -للامم -فيه -كلم -لكن -وفي -وقف -ولم -ومن -وهو -وهي -يوم -فيها -منها -مليار -لوكالة -يكون -يمكن -مليون -حيث -اكد -الا -اما -امس -السابق -التى -التي -اكثر -ايار -ايضا -ثلاثة -الذاتي -الاخيرة -الثاني -الثانية -الذى -الذي -الان -امام -ايام -خلال -حوالى -الذين -الاول -الاولى -بين -ذلك -دون -حول -حين -الف -الى -انه -اول -ضمن -انها -جميع -الماضي -الوقت -المقبل -اليوم -ـ -ف -و -و6 -قد -لا -ما -مع -مساء -هذا -واحد -واضاف -واضافت -فان -قبل -قال -كان -لدى -نحو -هذه -وان -واكد -كانت -واوضح -مايو -ب -ا -أ -، -عشر -عدد -عدة -عشرة -عدم -عام -عاما -عن -عند -عندما -على -عليه -عليها -زيارة -سنة -سنوات -تم -ضد -بعد -بعض -اعادة -اعلنت -بسبب -حتى -اذا -احد -اثر -برس -باسم -غدا -شخصا -صباح -اطار -اربعة -اخرى -بان -اجل -غير -بشكل -حاليا -بن -به -ثم -اف -ان -او -اي -بها -صفر - `, - "en": ` - a's -able -about -above -according -accordingly -across -actually -after -afterwards -again -against -ain't -all -allow -allows -almost -alone -along -already -also -although -always -am -among -amongst -an -and -another -any -anybody -anyhow -anyone -anything -anyway -anyways -anywhere -apart -appear -appreciate -appropriate -are -aren't -around -as -aside -ask -asking -associated -at -available -away -awfully -be -became -because -become -becomes -becoming -been -before -beforehand -behind -being -believe -below -beside -besides -best -better -between -beyond -both -brief -but -by -c -c'mon -c's -came -campaign -can -can't -cannot -cant -cause -causes -certain -certainly -changes -clearly -co -com -come -comes -concerning -consequently -consider -considering -contain -containing -contains -corresponding -could -couldn't -course -currently -definitely -described -despite -did -didn't -different -do -does -doesn't -doing -don't -done -down -downwards -during -each -edu -eight -either -else -elsewhere -enough -endorsed -entirely -especially -et -etc -even -ever -every -everybody -everyone -everything -everywhere -ex -exactly -example -except -far -few -fifth -first -financial -five -followed -following -follows -for -former -formerly -forth -four -from -further -furthermore -get -gets -getting -given -gives -go -goes -going -gone -got -gotten -greetings -had -hadn't -happens -hardly -has -hasn't -have -haven't -having -he -he's -hello -help -hence -her -here -here's -hereafter -hereby -herein -hereupon -hers -herself -hi -him -himself -his -hither -hopefully -how -howbeit -however -i'd -i'll -i'm -i've -if -ignored -immediate -in -inasmuch -inc -indeed -indicate -indicated -indicates -inner -insofar -instead -into -inward -is -isn't -it -it'd -it'll -it's -its -itself -just -keep -keeps -kept -know -knows -known -last -lately -later -latter -latterly -least -less -lest -let -let's -like -liked -likely -little -look -looking -looks -ltd -mainly -many -may -maybe -me -mean -meanwhile -merely -might -more -moreover -most -mostly -much -must -my -myself -name -namely -nd -near -nearly -necessary -need -needs -neither -never -nevertheless -new -next -nine -no -nobody -non -none -noone -nor -normally -not -nothing -novel -now -nowhere -obviously -of -off -often -oh -ok -okay -old -on -once -one -ones -only -onto -or -other -others -otherwise -ought -our -ours -ourselves -out -outside -over -overall -own -particular -particularly -per -perhaps -placed -please -plus -possible -presumably -probably -provides -quite -quote -quarterly -rather -really -reasonably -regarding -regardless -regards -relatively -respectively -right -said -same -saw -say -saying -says -second -secondly -see -seeing -seem -seemed -seeming -seems -seen -self -selves -sensible -sent -serious -seriously -seven -several -shall -she -should -shouldn't -since -six -so -some -somebody -somehow -someone -something -sometime -sometimes -somewhat -somewhere -soon -sorry -specified -specify -specifying -still -sub -such -sup -sure -t's -take -taken -tell -tends -than -thank -thanks -thanx -that -that's -thats -the -their -theirs -them -themselves -then -thence -there -there's -thereafter -thereby -therefore -therein -theres -thereupon -these -they -they'd -they'll -they're -they've -think -third -this -thorough -thoroughly -those -though -three -through -throughout -thru -thus -to -together -too -took -toward -towards -tried -tries -truly -try -trying -twice -two -under -unfortunately -unless -unlikely -until -unto -up -upon -us -use -used -useful -uses -using -usually -uucp -value -various -very -via -viz -vs -want -wants -was -wasn't -way -we -we'd -we'll -we're -we've -welcome -well -went -were -weren't -what -what's -whatever -when -whence -whenever -where -where's -whereafter -whereas -whereby -wherein -whereupon -wherever -whether -which -while -whither -who -who's -whoever -whole -whom -whose -why -will -willing -wish -with -within -without -won't -wonder -would -would -wouldn't -yes -yet -you -you'd -you'll -you're -you've -your -yours -yourself -yourselves -zero -official -sharply -criticized -`, - "es": ` -de -la -que -el -en -y -a -los -del -se -las -por -un -para -con -no -una -su -al -lo -como -más -pero -sus -le -ya -o -este -sí -porque -esta -entre -cuando -muy -sin -sobre -también -me -hasta -hay -donde -quien -desde -todo -nos -durante -todos -uno -les -ni -contra -otros -ese -eso -ante -ellos -e -esto -mí -antes -algunos -qué -unos -yo -otro -otras -otra -él -tanto -esa -estos -mucho -quienes -nada -muchos -cual -poco -ella -estar -estas -algunas -algo -nosotros -mi -mis -tú -te -ti -tu -tus -ellas -nosotras -vosotros -vosotras -os -mío -mía -míos -mías -tuyo -tuya -tuyos -tuyas -suyo -suya -suyos -suyas -nuestro -nuestra -nuestros -nuestras -vuestro -vuestra -vuestros -vuestras -esos -esas -estoy -estás -está -estamos -estáis -están -esté -estés -estemos -estéis -estén -estaré -estarás -estará -estaremos -estaréis -estarán -estaría -estarías -estaríamos -estaríais -estarían -estaba -estabas -estábamos -estabais -estaban -estuve -estuviste -estuvo -estuvimos -estuvisteis -estuvieron -estuviera -estuvieras -estuviéramos -estuvierais -estuvieran -estuviese -estuvieses -estuviésemos -estuvieseis -estuviesen -estando -estado -estada -estados -estadas -estad -he -has -ha -hemos -habéis -han -haya -hayas -hayamos -hayáis -hayan -habré -habrás -habrá -habremos -habréis -habrán -habría -habrías -habríamos -habríais -habrían -había -habías -habíamos -habíais -habían -hube -hubiste -hubo -hubimos -hubisteis -hubieron -hubiera -hubieras -hubiéramos -hubierais -hubieran -hubiese -hubieses -hubiésemos -hubieseis -hubiesen -habiendo -habido -habida -habidos -habidas - -# forms of ser, to be (not including the infinitive): -soy -eres -es -somos -sois -son -sea -seas -seamos -seáis -sean -seré -serás -será -seremos -seréis -serán -sería -serías -seríamos -seríais -serían -era -eras -éramos -erais -eran -fui -fuiste -fue -fuimos -fuisteis -fueron -fuera -fueras -fuéramos -fuerais -fueran -fuese -fueses -fuésemos -fueseis -fuesen -siendo -sido -tengo -tienes -tiene -tenemos -tenéis -tienen -tenga -tengas -tengamos -tengáis -tengan -tendré -tendrás -tendrá -tendremos -tendréis -tendrán -tendría -tendrías -tendríamos -tendríais -tendrían -tenía -tenías -teníamos -teníais -tenían -tuve -tuviste -tuvo -tuvimos -tuvisteis -tuvieron -tuviera -tuvieras -tuviéramos -tuvierais -tuvieran -tuviese -tuvieses -tuviésemos -tuvieseis -tuviesen -teniendo -tenido -tenida -tenidos -tenidas -tened -`, - "fr": ` - # Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#----------------------------------------------------------------------- -# a couple of test stopwords to test that the words are really being -# configured from this file: -stopworda -stopwordb - -#Standard english stop words taken from Lucene's StopAnalyzer -a -an -and -are -as -at -be -but -by -for -if -in -into -is -it -no -not -of -on -or -s -such -t -that -the -their -then -there -these -they -this -to -was -will -with -au -aux -avec -ce -ces -dans -de -des -du -elle -en -et -eux -il -je -la -le -leur -lui -ma -mais -me -même -mes -moi -mon -ne -nos -notre -nous -on -ou -par -pas -pour -qu -que -qui -sa -se -ses -son -sur -ta -te -tes -toi -ton -tu -un -une -vos -votre -vous -c -d -j -l -à -m -n -s -t -y -été -étée -étées -étés -étant -suis -es -est -sommes -êtes -sont -serai -seras -sera -serons -serez -seront -serais -serait -serions -seriez -seraient -étais -était -étions -étiez -étaient -fus -fut -fûmes -fûtes -furent -sois -soit -soyons -soyez -soient -fusse -fusses -fût -fussions -fussiez -fussent -ayant -eu -eue -eues -eus -ai -as -avons -avez -ont -aurai -auras -aura -aurons -aurez -auront -aurais -aurait -aurions -auriez -auraient -avais -avait -avions -aviez -avaient -eut -eûmes -eûtes -eurent -aie -aies -ait -ayons -ayez -aient -eusse -eusses -eût -eussions -eussiez -eussent -ceci -celà -cet -cette -ici -ils -les -leurs -quel -quels -quelle -quelles -sans -soi - -`, - "nl": ` -aan -af -al -alleen -als -altijd -ben -bent -bij -daar -dag -dan -dat -de -der -deze -die -direct -dit -doch -doen -dus -een -eens -en -er -gaan -gaat -ge -geen -geweest -graag -haar -had -heb -hebben -heeft -hem -het -hij -hoe -hun -ik -in -is -je -kan -komt -kon -kunnen -kunt -laatste -maar -maken -me -mee -meer -men -met -mij -mijn -na -naar -niet -nog -nu -of -om -omdat -onder -ons -onze -ook -op -reeds -te -toch -toen -tot -uit -uw -van -vanaf -veel -via -voor -waar -was -wat -we -weer -wel -werd -wie -wij -wilt -worden -wordt -zal -ze -zei -zelf -zich -zij -zijn -zo -zoals -zou -`, - "sv": ` -#----------------------------------------------------------------------- -# translated -#----------------------------------------------------------------------- - -kunna -om -ovan -enligt -i enlighet med detta -över -faktiskt -efter -efteråt -igen -mot -är inte -alla -tillåta -tillåter -nästan -ensam -längs -redan -också -även om -alltid -am -bland -bland -en -och -en annan -någon -någon -hur som helst -någon -något -ändå -ändå -var som helst -isär -visas -uppskatta -lämpligt -är -inte -runt -som -åt sidan -be -frågar -associerad -vid -tillgängliga -bort -väldigt -vara -blev -eftersom -bli -blir -blir -varit -innan -förhand -bakom -vara -tro -nedan -bredvid -förutom -bäst -bättre -mellan -bortom -både -kort -men -genom -c -c'mon -c: s -kom -kampanj -kan -kan inte -kan inte -cant -orsaka -orsaker -viss -säkerligen -förändringar -klart -co -com -komma -kommer -om -följaktligen -överväga -överväger -innehålla -innehållande -innehåller -motsvarande -kunde -kunde inte -kurs -närvarande -definitivt -beskrivits -trots -gjorde -inte -olika -göra -gör -inte -gör -inte -gjort -ned -nedåt -under -varje -edu -åtta -antingen -annars -någon annanstans -tillräckligt -godkändes -helt -speciellt -et -etc -även -någonsin -varje -alla -alla -allt -överallt -ex -exakt -exempel -utom -långt -få -femte -först -finansiella -fem -följt -efter -följer -för -fd -tidigare -framåt -fyra -från -ytterligare -dessutom -få -blir -få -given -ger -gå -går -gå -borta -fick -fått -hälsningar -hade -hade inte -händer -knappast -har -har inte -ha -har inte -med -han -han är -hallå -hjälpa -hence -henne -här -här finns -härefter -härmed -häri -härpå -hennes -själv -hej -honom -själv -hans -hit -förhoppningsvis -hur -howbeit -dock -jag skulle -jag ska -jag är -jag har -om -ignoreras -omedelbar -i -eftersom -inc -indeed -indikera -indikerade -indikerar -inre -mån -istället -in -inåt -är -är inte -den -det skulle -det ska -det är -dess -själv -bara -hålla -håller -hålls -vet -vet -känd -sista -nyligen -senare -senare -latterly -minst -mindre -lest -låt -låt oss -liknande -gillade -sannolikt -lite -ser -ser -ser -ltd -huvudsakligen -många -kan -kanske -mig -betyda -under tiden -endast -kanske -mer -dessutom -mest -mestadels -mycket -måste -min -själv -namn -nämligen -nd -nära -nästan -nödvändigt -behöver -behov -varken -aldrig -ändå -ny -nästa -nio -ingen -ingen -icke -ingen -ingen -eller -normalt -inte -ingenting -roman -nu -ingenstans -uppenbarligen -av -off -ofta -oh -ok -okay -gammal -på -en gång -ett -ettor -endast -på -eller -andra -andra -annars -borde -vår -vårt -oss -ut -utanför -över -övergripande -egen -särskilt -särskilt -per -kanske -placeras -vänligen -plus -möjligt -förmodligen -förmodligen -ger -ganska -citera -kvartalsvis -snarare -verkligen -rimligen -om -oavsett -gäller -relativt -respektive -höger -sa -samma -såg -säga -säger -säger -andra -det andra -se -ser -verkar -verkade -informationsproblem -verkar -sett -själv -själva -förnuftig -skickas -allvarlig -allvarligt -sju -flera -skall -hon -bör -bör inte -eftersom -sex -så -några -någon -på något sätt -någon -något -sometime -ibland -något -någonstans -snart -sorry -specificerade -ange -ange -fortfarande -sub -sådan -sup -säker -t s -ta -tas -berätta -tenderar -än -tacka -tack -thanx -att -det är -brinner -den -deras -deras -dem -själva -sedan -därifrån -där -det finns -därefter -därigenom -därför -däri -theres -därpå -dessa -de -de hade -de kommer -de är -de har -tror -tredje -detta -grundlig -grundligt -de -though -tre -genom -hela -thru -sålunda -till -tillsammans -alltför -tog -mot -mot -försökte -försöker -verkligt -försök -försöker -två gånger -två -enligt -tyvärr -såvida inte -osannolikt -tills -åt -upp -på -oss -använda -används -användbar -använder -användning -vanligtvis -uucp -värde -olika -mycket -via -viz -vs -vill -vill -var -var inte -sätt -vi -vi skulle -vi kommer -vi är -vi har -välkommen -väl -gick -var -var inte -vad -vad är -oavsett -när -varifrån -närhelst -där -var är -varefter -medan -varigenom -vari -varpå -varhelst -huruvida -som -medan -dit -som -vem är -vem -hela -vem -vars -varför -kommer -villig -önskar -med -inom -utan -kommer inte -undrar -skulle -skulle inte -ja -ännu -ni -du skulle -kommer du -du är -du har -din -själv -er -noll -tjänsteman -skarpt -kritiserade -`, - "zh": ` -的 -一 -不 -在 -人 -有 -是 -为 -以 -于 -上 -他 -而 -后 -之 -来 -及 -了 -因 -下 -可 -到 -由 -这 -与 -也 -此 -但 -并 -个 -其 -已 -无 -小 -我 -们 -起 -最 -再 -今 -去 -好 -只 -又 -或 -很 -亦 -某 -把 -那 -你 -乃 -它 -吧 -被 -比 -别 -趁 -当 -从 -到 -得 -打 -凡 -儿 -尔 -该 -各 -给 -跟 -和 -何 -还 -即 -几 -既 -看 -据 -距 -靠 -啦 -了 -另 -么 -每 -们 -嘛 -拿 -哪 -那 -您 -凭 -且 -却 -让 -仍 -啥 -如 -若 -使 -谁 -虽 -随 -同 -所 -她 -哇 -嗡 -往 -哪 -些 -向 -沿 -哟 -用 -于 -咱 -则 -怎 -曾 -至 -致 -着 -诸 -自 -`, - "ru": ` -а -е -и -ж -м -о -на -не -ни -об -но -он -мне -мои -мож -она -они -оно -мной -много -многочисленное -многочисленная -многочисленные -многочисленный -мною -мой -мог -могут -можно -может -можхо -мор -моя -моё -мочь -над -нее -оба -нам -нем -нами -ними -мимо -немного -одной -одного -менее -однажды -однако -меня -нему -меньше -ней -наверху -него -ниже -мало -надо -один -одиннадцать -одиннадцатый -назад -наиболее -недавно -миллионов -недалеко -между -низко -меля -нельзя -нибудь -непрерывно -наконец -никогда -никуда -нас -наш -нет -нею -неё -них -мира -наша -наше -наши -ничего -начала -нередко -несколько -обычно -опять -около -мы -ну -нх -от -отовсюду -особенно -нужно -очень -отсюда -в -во -вон -вниз -внизу -вокруг -вот -восемнадцать -восемнадцатый -восемь -восьмой -вверх -вам -вами -важное -важная -важные -важный -вдали -везде -ведь -вас -ваш -ваша -ваше -ваши -впрочем -весь -вдруг -вы -все -второй -всем -всеми -времени -время -всему -всего -всегда -всех -всею -всю -вся -всё -всюду -г -год -говорил -говорит -года -году -где -да -ее -за -из -ли -же -им -до -по -ими -под -иногда -довольно -именно -долго -позже -более -должно -пожалуйста -значит -иметь -больше -пока -ему -имя -пор -пора -потом -потому -после -почему -почти -посреди -ей -два -две -двенадцать -двенадцатый -двадцать -двадцатый -двух -его -дел -или -без -день -занят -занята -занято -заняты -действительно -давно -девятнадцать -девятнадцатый -девять -девятый -даже -алло -жизнь -далеко -близко -здесь -дальше -для -лет -зато -даром -первый -перед -затем -зачем -лишь -десять -десятый -ею -её -их -бы -еще -при -был -про -процентов -против -просто -бывает -бывь -если -люди -была -были -было -будем -будет -будете -будешь -прекрасно -буду -будь -будто -будут -ещё -пятнадцать -пятнадцатый -друго -другое -другой -другие -другая -других -есть -пять -быть -лучше -пятый -к -ком -конечно -кому -кого -когда -которой -которого -которая -которые -который -которых -кем -каждое -каждая -каждые -каждый -кажется -как -какой -какая -кто -кроме -куда -кругом -с -т -у -я -та -те -уж -со -то -том -снова -тому -совсем -того -тогда -тоже -собой -тобой -собою -тобою -сначала -только -уметь -тот -тою -хорошо -хотеть -хочешь -хоть -хотя -свое -свои -твой -своей -своего -своих -свою -твоя -твоё -раз -уже -сам -там -тем -чем -сама -сами -теми -само -рано -самом -самому -самой -самого -семнадцать -семнадцатый -самим -самими -самих -саму -семь -чему -раньше -сейчас -чего -сегодня -себе -тебе -сеаой -человек -разве -теперь -себя -тебя -седьмой -спасибо -слишком -так -такое -такой -такие -также -такая -сих -тех -чаще -четвертый -через -часто -шестой -шестнадцать -шестнадцатый -шесть -четыре -четырнадцать -четырнадцатый -сколько -сказал -сказала -сказать -ту -ты -три -эта -эти -что -это -чтоб -этом -этому -этой -этого -чтобы -этот -стал -туда -этим -этими -рядом -тринадцать -тринадцатый -этих -третий -тут -эту -суть -чуть -тысяч`, - "sr": ` -# Serbian Cyrillic - Српски Ћирилица - -а -ако -али -баш -без -би -биће -бих -била -били -било -био -бисмо -бисте -бити -близу -број -ће -ћемо -ћеш -често -ћете -чији -ћу -да -дана -данас -до -добар -добити -доћи -док -доле -дошао -други -дуж -два -га -где -горе -хоће -хоћемо -хоћеш -хоћете -хоћу -хвала -и -иако -ићи -иде -их -или -има -имам -имао -испод -из -између -изнад -изван -изволи -ја -је -један -једини -једна -једне -једно -једном -јер -јесам -јеси -јесмо -јесте -јесу -јој -још -јуче -кад -када -како -као -кога -која -које -који -којима -коју -кроз -ли -мали -мањи -ме -мене -мени -ми -мимо -мисли -много -моћи -могу -мој -моја -моје -мора -морао -на -наћи -над -након -нам -нама -нас -наш -наша -наше -нашег -не -неће -нећемо -нећеш -нећете -нећу -негде -него -нека -некад -неки -неко -неког -неку -нема -немам -нешто -ни -није -ниједан -никада -никога -нисам -ниси -нисмо -ништа -нисте -нису -њега -његов -његова -његово -њему -њен -њих -њихов -њихова -њихово -њим -њима -њој -њу -о -од -одмах -око -около -он -она -онај -они -оно -осим -остали -отишао -ова -овако -овамо -овде -ове -ово -па -питати -по -почетак -под -поједини -поред -после -поводом -правити -пре -преко -према -први -пут -радије -са -сада -сам -само -се -себе -себи -си -смети -смо -шта -сте -што -ствар -стварно -су -сутра -сваки -све -сви -свим -свог -свој -своја -своје -свом -свугде -та -тачно -тада -тај -тако -такође -тамо -те -тебе -теби -ти -тим -то -тој -томе -ту -твој -твоја -твоје -у -учинио -учинити -умало -унутра -употребити -уз -узети -вам -вама -вас -ваш -ваша -ваше -већ -већина -веома -ви -више -врло -за -захвалити -зар -зашто -због -желео -жели -знати - -# Serbian Latin - Srpski Latinica - -a -ako -ali -baš -bez -bi -biće -bih -bila -bili -bilo -bio -bismo -biste -biti -blizu -broj -će -ćemo -ćeš -često -ćete -čiji -ću -da -dana -danas -do -dobar -dobiti -doći -dok -dole -došao -drugi -duž -dva -ga -gde -gore -hoće -hoćemo -hoćeš -hoćete -hoću -hvala -i -iako -ići -ide -ih -ili -ima -imam -imao -ispod -iz -između -iznad -izvan -izvoli -ja -je -jedan -jedini -jedna -jedne -jedno -jednom -jer -jesam -jesi -jesmo -jest -jeste -jesu -joj -još -juče -kad -kada -kako -kao -koga -koja -koje -koji -kojima -koju -kroz -li -mali -manji -me -mene -meni -mi -mimo -misli -mnogo -moći -mogu -moj -moja -moje -mora -morao -na -naći -nad -nakon -nam -nama -nas -naš -naša -naše -našeg -ne -neće -nećemo -nećeš -nećete -neću -negde -nego -neka -nekad -neki -neko -nekog -neku -nema -nemam -nešto -ni -nije -nijedan -nikada -nikoga -nisam -nisi -nismo -ništa -niste -nisu -njega -njegov -njegova -njegovo -njemu -njen -njih -njihov -njihova -njihovo -njim -njima -njoj -nju -o -od -odmah -oko -okolo -on -ona -onaj -oni -ono -osim -ostali -otišao -ova -ovako -ovamo -ovde -ove -ovo -pa -pitati -po -početak -pod -pojedini -pored -posle -povodom -praviti -pre -preko -prema -prvi -put -radije -sa -sada -sam -samo -se -sebe -sebi -si -smeti -smo -šta -ste -što -stvar -stvarno -su -sutra -svaki -sve -svi -svim -svog -svoj -svoja -svoje -svom -svugde -ta -tačno -tada -taj -tako -takođe -tamo -te -tebe -tebi -ti -tim -to -toj -tome -tu -tvoj -tvoja -tvoje -u -učinio -učiniti -umalo -unutra -upotrebiti -uz -uzeti -vam -vama -vas -vaš -vaša -vaše -već -većina -veoma -vi -više -vrlo -za -zahvaliti -zar -zašto -zbog -želeo -želi -znati`, - "bg": ` -# This file was created by Jacques Savoy and is distributed under the BSD license. -# See http://members.unine.ch/jacques.savoy/clef/index.html. -# Also see http://www.opensource.org/licenses/bsd-license.html -а -аз -ако -ала -бе -без -беше -би -бил -била -били -било -близо -бъдат -бъде -бяха -в -вас -ваш -ваша -вероятно -вече -взема -ви -вие -винаги -все -всеки -всички -всичко -всяка -във -въпреки -върху -г -ги -главно -го -д -да -дали -до -докато -докога -дори -досега -доста -е -едва -един -ето -за -зад -заедно -заради -засега -затова -защо -защото -и -из -или -им -има -имат -иска -й -каза -как -каква -какво -както -какъв -като -кога -когато -което -които -кой -който -колко -която -къде -където -към -ли -м -ме -между -мен -ми -мнозина -мога -могат -може -моля -момента -му -н -на -над -назад -най -направи -напред -например -нас -не -него -нея -ни -ние -никой -нито -но -някои -някой -няма -обаче -около -освен -особено -от -отгоре -отново -още -пак -по -повече -повечето -под -поне -поради -после -почти -прави -пред -преди -през -при -пък -първо -с -са -само -се -сега -си -скоро -след -сме -според -сред -срещу -сте -съм -със -също -т -тази -така -такива -такъв -там -твой -те -тези -ти -тн -то -това -тогава -този -той -толкова -точно -трябва -тук -тъй -тя -тях -у -харесва -ч -че -често -чрез -ще -щом -я -`, - "id": ` -# Indonesia stopwords list provide by @masdevid -# Link: https://github.com/masdevid/ID-Stopwords -ada -adalah -adanya -adapun -agak -agaknya -agar -akan -akankah -akhir -akhiri -akhirnya -aku -akulah -amat -amatlah -anda -andalah -antar -antara -antaranya -apa -apaan -apabila -apakah -apalagi -apatah -artinya -asal -asalkan -atas -atau -ataukah -ataupun -awal -awalnya -bagai -bagaikan -bagaimana -bagaimanakah -bagaimanapun -bagi -bagian -bahkan -bahwa -bahwasanya -baik -bakal -bakalan -balik -banyak -bapak -baru -bawah -beberapa -begini -beginian -beginikah -beginilah -begitu -begitukah -begitulah -begitupun -bekerja -belakang -belakangan -belum -belumlah -benar -benarkah -benarlah -berada -berakhir -berakhirlah -berakhirnya -berapa -berapakah -berapalah -berapapun -berarti -berawal -berbagai -berdatangan -beri -berikan -berikut -berikutnya -berjumlah -berkali-kali -berkata -berkehendak -berkeinginan -berkenaan -berlainan -berlalu -berlangsung -berlebihan -bermacam -bermacam-macam -bermaksud -bermula -bersama -bersama-sama -bersiap -bersiap-siap -bertanya -bertanya-tanya -berturut -berturut-turut -bertutur -berujar -berupa -besar -betul -betulkah -biasa -biasanya -bila -bilakah -bisa -bisakah -boleh -bolehkah -bolehlah -buat -bukan -bukankah -bukanlah -bukannya -bulan -bung -cara -caranya -cukup -cukupkah -cukuplah -cuma -dahulu -dalam -dan -dapat -dari -daripada -datang -dekat -demi -demikian -demikianlah -dengan -depan -di -dia -diakhiri -diakhirinya -dialah -diantara -diantaranya -diberi -diberikan -diberikannya -dibuat -dibuatnya -didapat -didatangkan -digunakan -diibaratkan -diibaratkannya -diingat -diingatkan -diinginkan -dijawab -dijelaskan -dijelaskannya -dikarenakan -dikatakan -dikatakannya -dikerjakan -diketahui -diketahuinya -dikira -dilakukan -dilalui -dilihat -dimaksud -dimaksudkan -dimaksudkannya -dimaksudnya -diminta -dimintai -dimisalkan -dimulai -dimulailah -dimulainya -dimungkinkan -dini -dipastikan -diperbuat -diperbuatnya -dipergunakan -diperkirakan -diperlihatkan -diperlukan -diperlukannya -dipersoalkan -dipertanyakan -dipunyai -diri -dirinya -disampaikan -disebut -disebutkan -disebutkannya -disini -disinilah -ditambahkan -ditandaskan -ditanya -ditanyai -ditanyakan -ditegaskan -ditujukan -ditunjuk -ditunjuki -ditunjukkan -ditunjukkannya -ditunjuknya -dituturkan -dituturkannya -diucapkan -diucapkannya -diungkapkan -dong -dua -dulu -empat -enggak -enggaknya -entah -entahlah -guna -gunakan -hal -hampir -hanya -hanyalah -hari -harus -haruslah -harusnya -hendak -hendaklah -hendaknya -hingga -ia -ialah -ibarat -ibaratkan -ibaratnya -ibu -ikut -ingat -ingat-ingat -ingin -inginkah -inginkan -ini -inikah -inilah -itu -itukah -itulah -jadi -jadilah -jadinya -jangan -jangankan -janganlah -jauh -jawab -jawaban -jawabnya -jelas -jelaskan -jelaslah -jelasnya -jika -jikalau -juga -jumlah -jumlahnya -justru -kala -kalau -kalaulah -kalaupun -kalian -kami -kamilah -kamu -kamulah -kan -kapan -kapankah -kapanpun -karena -karenanya -kasus -kata -katakan -katakanlah -katanya -ke -keadaan -kebetulan -kecil -kedua -keduanya -keinginan -kelamaan -kelihatan -kelihatannya -kelima -keluar -kembali -kemudian -kemungkinan -kemungkinannya -kenapa -kepada -kepadanya -kesampaian -keseluruhan -keseluruhannya -keterlaluan -ketika -khususnya -kini -kinilah -kira -kira-kira -kiranya -kita -kitalah -kok -kurang -lagi -lagian -lah -lain -lainnya -lalu -lama -lamanya -lanjut -lanjutnya -lebih -lewat -lima -luar -macam -maka -makanya -makin -malah -malahan -mampu -mampukah -mana -manakala -manalagi -masa -masalah -masalahnya -masih -masihkah -masing -masing-masing -mau -maupun -melainkan -melakukan -melalui -melihat -melihatnya -memang -memastikan -memberi -memberikan -membuat -memerlukan -memihak -meminta -memintakan -memisalkan -memperbuat -mempergunakan -memperkirakan -memperlihatkan -mempersiapkan -mempersoalkan -mempertanyakan -mempunyai -memulai -memungkinkan -menaiki -menambahkan -menandaskan -menanti -menanti-nanti -menantikan -menanya -menanyai -menanyakan -mendapat -mendapatkan -mendatang -mendatangi -mendatangkan -menegaskan -mengakhiri -mengapa -mengatakan -mengatakannya -mengenai -mengerjakan -mengetahui -menggunakan -menghendaki -mengibaratkan -mengibaratkannya -mengingat -mengingatkan -menginginkan -mengira -mengucapkan -mengucapkannya -mengungkapkan -menjadi -menjawab -menjelaskan -menuju -menunjuk -menunjuki -menunjukkan -menunjuknya -menurut -menuturkan -menyampaikan -menyangkut -menyatakan -menyebutkan -menyeluruh -menyiapkan -merasa -mereka -merekalah -merupakan -meski -meskipun -meyakini -meyakinkan -minta -mirip -misal -misalkan -misalnya -mula -mulai -mulailah -mulanya -mungkin -mungkinkah -nah -naik -namun -nanti -nantinya -nyaris -nyatanya -oleh -olehnya -pada -padahal -padanya -pak -paling -panjang -pantas -para -pasti -pastilah -penting -pentingnya -per -percuma -perlu -perlukah -perlunya -pernah -persoalan -pertama -pertama-tama -pertanyaan -pertanyakan -pihak -pihaknya -pukul -pula -pun -punya -rasa -rasanya -rata -rupanya -saat -saatnya -saja -sajalah -saling -sama -sama-sama -sambil -sampai -sampai-sampai -sampaikan -sana -sangat -sangatlah -satu -saya -sayalah -se -sebab -sebabnya -sebagai -sebagaimana -sebagainya -sebagian -sebaik -sebaik-baiknya -sebaiknya -sebaliknya -sebanyak -sebegini -sebegitu -sebelum -sebelumnya -sebenarnya -seberapa -sebesar -sebetulnya -sebisanya -sebuah -sebut -sebutlah -sebutnya -secara -secukupnya -sedang -sedangkan -sedemikian -sedikit -sedikitnya -seenaknya -segala -segalanya -segera -seharusnya -sehingga -seingat -sejak -sejauh -sejenak -sejumlah -sekadar -sekadarnya -sekali -sekali-kali -sekalian -sekaligus -sekalipun -sekarang -sekarang -sekecil -seketika -sekiranya -sekitar -sekitarnya -sekurang-kurangnya -sekurangnya -sela -selain -selaku -selalu -selama -selama-lamanya -selamanya -selanjutnya -seluruh -seluruhnya -semacam -semakin -semampu -semampunya -semasa -semasih -semata -semata-mata -semaunya -sementara -semisal -semisalnya -sempat -semua -semuanya -semula -sendiri -sendirian -sendirinya -seolah -seolah-olah -seorang -sepanjang -sepantasnya -sepantasnyalah -seperlunya -seperti -sepertinya -sepihak -sering -seringnya -serta -serupa -sesaat -sesama -sesampai -sesegera -sesekali -seseorang -sesuatu -sesuatunya -sesudah -sesudahnya -setelah -setempat -setengah -seterusnya -setiap -setiba -setibanya -setidak-tidaknya -setidaknya -setinggi -seusai -sewaktu -siap -siapa -siapakah -siapapun -sini -sinilah -soal -soalnya -suatu -sudah -sudahkah -sudahlah -supaya -tadi -tadinya -tahu -tahun -tak -tambah -tambahnya -tampak -tampaknya -tandas -tandasnya -tanpa -tanya -tanyakan -tanyanya -tapi -tegas -tegasnya -telah -tempat -tengah -tentang -tentu -tentulah -tentunya -tepat -terakhir -terasa -terbanyak -terdahulu -terdapat -terdiri -terhadap -terhadapnya -teringat -teringat-ingat -terjadi -terjadilah -terjadinya -terkira -terlalu -terlebih -terlihat -termasuk -ternyata -tersampaikan -tersebut -tersebutlah -tertentu -tertuju -terus -terutama -tetap -tetapi -tiap -tiba -tiba-tiba -tidak -tidakkah -tidaklah -tiga -tinggi -toh -tunjuk -turut -tutur -tuturnya -ucap -ucapnya -ujar -ujarnya -umum -umumnya -ungkap -ungkapnya -untuk -usah -usai -waduh -wah -wahai -waktu -waktunya -walau -walaupun -wong -yaitu -yakin -yakni -yang`, -} diff --git a/vendor/github.com/advancedlogic/GoOse/videos.go b/vendor/github.com/advancedlogic/GoOse/videos.go deleted file mode 100644 index c389049..0000000 --- a/vendor/github.com/advancedlogic/GoOse/videos.go +++ /dev/null @@ -1,165 +0,0 @@ -package goose - -import ( - "strconv" - "strings" - - "github.com/PuerkitoBio/goquery" - "github.com/fatih/set" -) - -// VideoExtractor can extract the main video from an HTML page -type VideoExtractor struct { - article *Article - config Configuration - candidates *set.Set - movies *set.Set -} - -type video struct { - embedType string - provider string - width int - height int - embedCode string - src string -} - -// NewVideoExtractor returns a new instance of a HTML video extractor -func NewVideoExtractor() VideoExtractor { - return VideoExtractor{ - candidates: set.New(set.ThreadSafe).(*set.Set), - movies: set.New(set.ThreadSafe).(*set.Set), - } -} - -var videoTags = [4]string{"iframe", "embed", "object", "video"} -var videoProviders = [4]string{"youtube", "vimeo", "dailymotion", "kewego"} - -func (ve *VideoExtractor) getEmbedCode(node *goquery.Selection) string { - return node.Text() -} - -func (ve *VideoExtractor) getWidth(node *goquery.Selection) int { - value, exists := node.Attr("width") - if exists { - nvalue, _ := strconv.Atoi(value) - return nvalue - } - return 0 -} - -func (ve *VideoExtractor) getHeight(node *goquery.Selection) int { - value, exists := node.Attr("height") - if exists { - nvalue, _ := strconv.Atoi(value) - return nvalue - } - return 0 -} - -func (ve *VideoExtractor) getSrc(node *goquery.Selection) string { - value, exists := node.Attr("src") - if exists { - return value - } - return "" -} - -func (ve *VideoExtractor) getProvider(src string) string { - if src != "" { - for _, provider := range videoProviders { - if strings.Contains(src, provider) { - return provider - } - } - } - return "" -} - -func (ve *VideoExtractor) getVideo(node *goquery.Selection) video { - src := ve.getSrc(node) - video := video{ - embedCode: ve.getEmbedCode(node), - embedType: node.Get(0).DataAtom.String(), - width: ve.getWidth(node), - height: ve.getHeight(node), - src: src, - provider: ve.getProvider(src), - } - return video -} - -func (ve *VideoExtractor) getIFrame(node *goquery.Selection) video { - return ve.getVideo(node) -} - -func (ve *VideoExtractor) getVideoTag(node *goquery.Selection) video { - return video{} -} - -func (ve *VideoExtractor) getEmbedTag(node *goquery.Selection) video { - parent := node.Parent() - if parent != nil { - parentTag := parent.Get(0).DataAtom.String() - if parentTag == "object" { - return ve.getObjectTag(node) - } - } - return ve.getVideo(node) -} - -func (ve *VideoExtractor) getObjectTag(node *goquery.Selection) video { - childEmbedTag := node.Find("embed") - if ve.candidates.Has(childEmbedTag) { - ve.candidates.Remove(childEmbedTag) - } - srcNode := node.Find(`param[name="movie"]`) - if srcNode == nil || srcNode.Length() == 0 { - return video{} - } - - src, _ := srcNode.Attr("value") - provider := ve.getProvider(src) - if provider == "" { - return video{} - } - video := ve.getVideo(node) - video.provider = provider - video.src = src - return video -} - -// GetVideos returns the video tags embedded in the article -func (ve *VideoExtractor) GetVideos(doc *goquery.Document) *set.Set { - var nodes *goquery.Selection - for _, videoTag := range videoTags { - tmpNodes := doc.Find(videoTag) - if nodes == nil { - nodes = tmpNodes - } else { - nodes.Union(tmpNodes) - } - } - - nodes.Each(func(i int, node *goquery.Selection) { - tag := node.Get(0).DataAtom.String() - var movie video - switch tag { - case "video": - movie = ve.getVideoTag(node) - case "embed": - movie = ve.getEmbedTag(node) - case "object": - movie = ve.getObjectTag(node) - case "iframe": - movie = ve.getIFrame(node) - } - - if movie.src != "" { - ve.movies.Add(movie) - } - }) - - return ve.movies -} diff --git a/vendor/github.com/advancedlogic/GoOse/wordstats.go b/vendor/github.com/advancedlogic/GoOse/wordstats.go deleted file mode 100644 index 2454dad..0000000 --- a/vendor/github.com/advancedlogic/GoOse/wordstats.go +++ /dev/null @@ -1,39 +0,0 @@ -package goose - -import ( - "github.com/fatih/set" -) - -//some word statistics -type wordStats struct { - //total number of stopwords or good words that we can calculate - stopWordCount int - //total number of words on a node - wordCount int - //holds an actual list of the stop words we found - stopWords *set.Set -} - -func (w *wordStats) getStopWords() *set.Set { - return w.stopWords -} - -func (w *wordStats) setStopWords(stopWords *set.Set) { - w.stopWords = stopWords -} - -func (w *wordStats) getStopWordCount() int { - return w.stopWordCount -} - -func (w *wordStats) setStopWordCount(stopWordCount int) { - w.stopWordCount = stopWordCount -} - -func (w *wordStats) getWordCount() int { - return w.wordCount -} - -func (w *wordStats) setWordCount(wordCount int) { - w.wordCount = wordCount -} diff --git a/vendor/github.com/andybalholm/cascadia/.travis.yml b/vendor/github.com/andybalholm/cascadia/.travis.yml deleted file mode 100644 index 6f22751..0000000 --- a/vendor/github.com/andybalholm/cascadia/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: - - 1.3 - - 1.4 - -install: - - go get github.com/andybalholm/cascadia - -script: - - go test -v - -notifications: - email: false diff --git a/vendor/github.com/andybalholm/cascadia/LICENSE b/vendor/github.com/andybalholm/cascadia/LICENSE deleted file mode 100644 index ee5ad35..0000000 --- a/vendor/github.com/andybalholm/cascadia/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2011 Andy Balholm. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/andybalholm/cascadia/README.md b/vendor/github.com/andybalholm/cascadia/README.md deleted file mode 100644 index 6433cb9..0000000 --- a/vendor/github.com/andybalholm/cascadia/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# cascadia - -[![](https://travis-ci.org/andybalholm/cascadia.svg)](https://travis-ci.org/andybalholm/cascadia) - -The Cascadia package implements CSS selectors for use with the parse trees produced by the html package. - -To test CSS selectors without writing Go code, check out [cascadia](https://github.com/suntong/cascadia) the command line tool, a thin wrapper around this package. - -[Refer to godoc here](https://godoc.org/github.com/andybalholm/cascadia). - -## Example - -The following is an example of how you can use Cascadia. - -```go -package main - -import ( - "fmt" - "log" - "strings" - - "github.com/andybalholm/cascadia" - "golang.org/x/net/html" -) - -var pricingHtml string = ` - - -
    -
    -

    Pro

    -
    -
    -

    $15/mo

    -
      -
    • 20 users included
    • -
    • 10 GB of storage
    • -
    • See more
    • -
    -
    -
    - -
    -
    -

    Enterprise

    -
    -
    -

    $29/mo

    -
      -
    • 30 users included
    • -
    • 15 GB of storage
    • -
    • See more
    • -
    -
    -
    -` - -func Query(n *html.Node, query string) *html.Node { - sel, err := cascadia.Parse(query) - if err != nil { - return &html.Node{} - } - return cascadia.Query(n, sel) -} - -func QueryAll(n *html.Node, query string) []*html.Node { - sel, err := cascadia.Parse(query) - if err != nil { - return []*html.Node{} - } - return cascadia.QueryAll(n, sel) -} - -func AttrOr(n *html.Node, attrName, or string) string { - for _, a := range n.Attr { - if a.Key == attrName { - return a.Val - } - } - return or -} - -func main() { - doc, err := html.Parse(strings.NewReader(pricingHtml)) - if err != nil { - log.Fatal(err) - } - fmt.Printf("List of pricing plans:\n\n") - for i, p := range QueryAll(doc, "div.card.mb-4.box-shadow") { - planName := Query(p, "h4").FirstChild.Data - price := Query(p, ".pricing-card-title").FirstChild.Data - usersIncluded := Query(p, "li:first-child").FirstChild.Data - storage := Query(p, "li:nth-child(2)").FirstChild.Data - detailsUrl := AttrOr(Query(p, "li:last-child a"), "href", "(No link available)") - fmt.Printf( - "Plan #%d\nName: %s\nPrice: %s\nUsers: %s\nStorage: %s\nDetails: %s\n\n", - i+1, - planName, - price, - usersIncluded, - storage, - detailsUrl, - ) - } -} -``` -The output is: -``` -List of pricing plans: - -Plan #1 -Name: Free -Price: $0/mo -Users: 10 users included -Storage: 2 GB of storage -Details: https://example.com - -Plan #2 -Name: Pro -Price: $15/mo -Users: 20 users included -Storage: 10 GB of storage -Details: https://example.com - -Plan #3 -Name: Enterprise -Price: $29/mo -Users: 30 users included -Storage: 15 GB of storage -Details: (No link available) -``` diff --git a/vendor/github.com/andybalholm/cascadia/parser.go b/vendor/github.com/andybalholm/cascadia/parser.go deleted file mode 100644 index 06eccd5..0000000 --- a/vendor/github.com/andybalholm/cascadia/parser.go +++ /dev/null @@ -1,889 +0,0 @@ -// Package cascadia is an implementation of CSS selectors. -package cascadia - -import ( - "errors" - "fmt" - "regexp" - "strconv" - "strings" -) - -// a parser for CSS selectors -type parser struct { - s string // the source text - i int // the current position - - // if `false`, parsing a pseudo-element - // returns an error. - acceptPseudoElements bool -} - -// parseEscape parses a backslash escape. -func (p *parser) parseEscape() (result string, err error) { - if len(p.s) < p.i+2 || p.s[p.i] != '\\' { - return "", errors.New("invalid escape sequence") - } - - start := p.i + 1 - c := p.s[start] - switch { - case c == '\r' || c == '\n' || c == '\f': - return "", errors.New("escaped line ending outside string") - case hexDigit(c): - // unicode escape (hex) - var i int - for i = start; i < start+6 && i < len(p.s) && hexDigit(p.s[i]); i++ { - // empty - } - v, _ := strconv.ParseUint(p.s[start:i], 16, 64) - if len(p.s) > i { - switch p.s[i] { - case '\r': - i++ - if len(p.s) > i && p.s[i] == '\n' { - i++ - } - case ' ', '\t', '\n', '\f': - i++ - } - } - p.i = i - return string(rune(v)), nil - } - - // Return the literal character after the backslash. - result = p.s[start : start+1] - p.i += 2 - return result, nil -} - -// toLowerASCII returns s with all ASCII capital letters lowercased. -func toLowerASCII(s string) string { - var b []byte - for i := 0; i < len(s); i++ { - if c := s[i]; 'A' <= c && c <= 'Z' { - if b == nil { - b = make([]byte, len(s)) - copy(b, s) - } - b[i] = s[i] + ('a' - 'A') - } - } - - if b == nil { - return s - } - - return string(b) -} - -func hexDigit(c byte) bool { - return '0' <= c && c <= '9' || 'a' <= c && c <= 'f' || 'A' <= c && c <= 'F' -} - -// nameStart returns whether c can be the first character of an identifier -// (not counting an initial hyphen, or an escape sequence). -func nameStart(c byte) bool { - return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || c == '_' || c > 127 -} - -// nameChar returns whether c can be a character within an identifier -// (not counting an escape sequence). -func nameChar(c byte) bool { - return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || c == '_' || c > 127 || - c == '-' || '0' <= c && c <= '9' -} - -// parseIdentifier parses an identifier. -func (p *parser) parseIdentifier() (result string, err error) { - const prefix = '-' - var numPrefix int - - for len(p.s) > p.i && p.s[p.i] == prefix { - p.i++ - numPrefix++ - } - - if len(p.s) <= p.i { - return "", errors.New("expected identifier, found EOF instead") - } - - if c := p.s[p.i]; !(nameStart(c) || c == '\\') { - return "", fmt.Errorf("expected identifier, found %c instead", c) - } - - result, err = p.parseName() - if numPrefix > 0 && err == nil { - result = strings.Repeat(string(prefix), numPrefix) + result - } - return -} - -// parseName parses a name (which is like an identifier, but doesn't have -// extra restrictions on the first character). -func (p *parser) parseName() (result string, err error) { - i := p.i -loop: - for i < len(p.s) { - c := p.s[i] - switch { - case nameChar(c): - start := i - for i < len(p.s) && nameChar(p.s[i]) { - i++ - } - result += p.s[start:i] - case c == '\\': - p.i = i - val, err := p.parseEscape() - if err != nil { - return "", err - } - i = p.i - result += val - default: - break loop - } - } - - if result == "" { - return "", errors.New("expected name, found EOF instead") - } - - p.i = i - return result, nil -} - -// parseString parses a single- or double-quoted string. -func (p *parser) parseString() (result string, err error) { - i := p.i - if len(p.s) < i+2 { - return "", errors.New("expected string, found EOF instead") - } - - quote := p.s[i] - i++ - -loop: - for i < len(p.s) { - switch p.s[i] { - case '\\': - if len(p.s) > i+1 { - switch c := p.s[i+1]; c { - case '\r': - if len(p.s) > i+2 && p.s[i+2] == '\n' { - i += 3 - continue loop - } - fallthrough - case '\n', '\f': - i += 2 - continue loop - } - } - p.i = i - val, err := p.parseEscape() - if err != nil { - return "", err - } - i = p.i - result += val - case quote: - break loop - case '\r', '\n', '\f': - return "", errors.New("unexpected end of line in string") - default: - start := i - for i < len(p.s) { - if c := p.s[i]; c == quote || c == '\\' || c == '\r' || c == '\n' || c == '\f' { - break - } - i++ - } - result += p.s[start:i] - } - } - - if i >= len(p.s) { - return "", errors.New("EOF in string") - } - - // Consume the final quote. - i++ - - p.i = i - return result, nil -} - -// parseRegex parses a regular expression; the end is defined by encountering an -// unmatched closing ')' or ']' which is not consumed -func (p *parser) parseRegex() (rx *regexp.Regexp, err error) { - i := p.i - if len(p.s) < i+2 { - return nil, errors.New("expected regular expression, found EOF instead") - } - - // number of open parens or brackets; - // when it becomes negative, finished parsing regex - open := 0 - -loop: - for i < len(p.s) { - switch p.s[i] { - case '(', '[': - open++ - case ')', ']': - open-- - if open < 0 { - break loop - } - } - i++ - } - - if i >= len(p.s) { - return nil, errors.New("EOF in regular expression") - } - rx, err = regexp.Compile(p.s[p.i:i]) - p.i = i - return rx, err -} - -// skipWhitespace consumes whitespace characters and comments. -// It returns true if there was actually anything to skip. -func (p *parser) skipWhitespace() bool { - i := p.i - for i < len(p.s) { - switch p.s[i] { - case ' ', '\t', '\r', '\n', '\f': - i++ - continue - case '/': - if strings.HasPrefix(p.s[i:], "/*") { - end := strings.Index(p.s[i+len("/*"):], "*/") - if end != -1 { - i += end + len("/**/") - continue - } - } - } - break - } - - if i > p.i { - p.i = i - return true - } - - return false -} - -// consumeParenthesis consumes an opening parenthesis and any following -// whitespace. It returns true if there was actually a parenthesis to skip. -func (p *parser) consumeParenthesis() bool { - if p.i < len(p.s) && p.s[p.i] == '(' { - p.i++ - p.skipWhitespace() - return true - } - return false -} - -// consumeClosingParenthesis consumes a closing parenthesis and any preceding -// whitespace. It returns true if there was actually a parenthesis to skip. -func (p *parser) consumeClosingParenthesis() bool { - i := p.i - p.skipWhitespace() - if p.i < len(p.s) && p.s[p.i] == ')' { - p.i++ - return true - } - p.i = i - return false -} - -// parseTypeSelector parses a type selector (one that matches by tag name). -func (p *parser) parseTypeSelector() (result tagSelector, err error) { - tag, err := p.parseIdentifier() - if err != nil { - return - } - return tagSelector{tag: toLowerASCII(tag)}, nil -} - -// parseIDSelector parses a selector that matches by id attribute. -func (p *parser) parseIDSelector() (idSelector, error) { - if p.i >= len(p.s) { - return idSelector{}, fmt.Errorf("expected id selector (#id), found EOF instead") - } - if p.s[p.i] != '#' { - return idSelector{}, fmt.Errorf("expected id selector (#id), found '%c' instead", p.s[p.i]) - } - - p.i++ - id, err := p.parseName() - if err != nil { - return idSelector{}, err - } - - return idSelector{id: id}, nil -} - -// parseClassSelector parses a selector that matches by class attribute. -func (p *parser) parseClassSelector() (classSelector, error) { - if p.i >= len(p.s) { - return classSelector{}, fmt.Errorf("expected class selector (.class), found EOF instead") - } - if p.s[p.i] != '.' { - return classSelector{}, fmt.Errorf("expected class selector (.class), found '%c' instead", p.s[p.i]) - } - - p.i++ - class, err := p.parseIdentifier() - if err != nil { - return classSelector{}, err - } - - return classSelector{class: class}, nil -} - -// parseAttributeSelector parses a selector that matches by attribute value. -func (p *parser) parseAttributeSelector() (attrSelector, error) { - if p.i >= len(p.s) { - return attrSelector{}, fmt.Errorf("expected attribute selector ([attribute]), found EOF instead") - } - if p.s[p.i] != '[' { - return attrSelector{}, fmt.Errorf("expected attribute selector ([attribute]), found '%c' instead", p.s[p.i]) - } - - p.i++ - p.skipWhitespace() - key, err := p.parseIdentifier() - if err != nil { - return attrSelector{}, err - } - key = toLowerASCII(key) - - p.skipWhitespace() - if p.i >= len(p.s) { - return attrSelector{}, errors.New("unexpected EOF in attribute selector") - } - - if p.s[p.i] == ']' { - p.i++ - return attrSelector{key: key, operation: ""}, nil - } - - if p.i+2 >= len(p.s) { - return attrSelector{}, errors.New("unexpected EOF in attribute selector") - } - - op := p.s[p.i : p.i+2] - if op[0] == '=' { - op = "=" - } else if op[1] != '=' { - return attrSelector{}, fmt.Errorf(`expected equality operator, found "%s" instead`, op) - } - p.i += len(op) - - p.skipWhitespace() - if p.i >= len(p.s) { - return attrSelector{}, errors.New("unexpected EOF in attribute selector") - } - var val string - var rx *regexp.Regexp - if op == "#=" { - rx, err = p.parseRegex() - } else { - switch p.s[p.i] { - case '\'', '"': - val, err = p.parseString() - default: - val, err = p.parseIdentifier() - } - } - if err != nil { - return attrSelector{}, err - } - - p.skipWhitespace() - if p.i >= len(p.s) { - return attrSelector{}, errors.New("unexpected EOF in attribute selector") - } - - // check if the attribute contains an ignore case flag - ignoreCase := false - if p.s[p.i] == 'i' || p.s[p.i] == 'I' { - ignoreCase = true - p.i++ - } - - p.skipWhitespace() - if p.i >= len(p.s) { - return attrSelector{}, errors.New("unexpected EOF in attribute selector") - } - - if p.s[p.i] != ']' { - return attrSelector{}, fmt.Errorf("expected ']', found '%c' instead", p.s[p.i]) - } - p.i++ - - switch op { - case "=", "!=", "~=", "|=", "^=", "$=", "*=", "#=": - return attrSelector{key: key, val: val, operation: op, regexp: rx, insensitive: ignoreCase}, nil - default: - return attrSelector{}, fmt.Errorf("attribute operator %q is not supported", op) - } -} - -var ( - errExpectedParenthesis = errors.New("expected '(' but didn't find it") - errExpectedClosingParenthesis = errors.New("expected ')' but didn't find it") - errUnmatchedParenthesis = errors.New("unmatched '('") -) - -// parsePseudoclassSelector parses a pseudoclass selector like :not(p) or a pseudo-element -// For backwards compatibility, both ':' and '::' prefix are allowed for pseudo-elements. -// https://drafts.csswg.org/selectors-3/#pseudo-elements -// Returning a nil `Sel` (and a nil `error`) means we found a pseudo-element. -func (p *parser) parsePseudoclassSelector() (out Sel, pseudoElement string, err error) { - if p.i >= len(p.s) { - return nil, "", fmt.Errorf("expected pseudoclass selector (:pseudoclass), found EOF instead") - } - if p.s[p.i] != ':' { - return nil, "", fmt.Errorf("expected attribute selector (:pseudoclass), found '%c' instead", p.s[p.i]) - } - - p.i++ - var mustBePseudoElement bool - if p.i >= len(p.s) { - return nil, "", fmt.Errorf("got empty pseudoclass (or pseudoelement)") - } - if p.s[p.i] == ':' { // we found a pseudo-element - mustBePseudoElement = true - p.i++ - } - - name, err := p.parseIdentifier() - if err != nil { - return - } - name = toLowerASCII(name) - if mustBePseudoElement && (name != "after" && name != "backdrop" && name != "before" && - name != "cue" && name != "first-letter" && name != "first-line" && name != "grammar-error" && - name != "marker" && name != "placeholder" && name != "selection" && name != "spelling-error") { - return out, "", fmt.Errorf("unknown pseudoelement :%s", name) - } - - switch name { - case "not", "has", "haschild": - if !p.consumeParenthesis() { - return out, "", errExpectedParenthesis - } - sel, parseErr := p.parseSelectorGroup() - if parseErr != nil { - return out, "", parseErr - } - if !p.consumeClosingParenthesis() { - return out, "", errExpectedClosingParenthesis - } - - out = relativePseudoClassSelector{name: name, match: sel} - - case "contains", "containsown": - if !p.consumeParenthesis() { - return out, "", errExpectedParenthesis - } - if p.i == len(p.s) { - return out, "", errUnmatchedParenthesis - } - var val string - switch p.s[p.i] { - case '\'', '"': - val, err = p.parseString() - default: - val, err = p.parseIdentifier() - } - if err != nil { - return out, "", err - } - val = strings.ToLower(val) - p.skipWhitespace() - if p.i >= len(p.s) { - return out, "", errors.New("unexpected EOF in pseudo selector") - } - if !p.consumeClosingParenthesis() { - return out, "", errExpectedClosingParenthesis - } - - out = containsPseudoClassSelector{own: name == "containsown", value: val} - - case "matches", "matchesown": - if !p.consumeParenthesis() { - return out, "", errExpectedParenthesis - } - rx, err := p.parseRegex() - if err != nil { - return out, "", err - } - if p.i >= len(p.s) { - return out, "", errors.New("unexpected EOF in pseudo selector") - } - if !p.consumeClosingParenthesis() { - return out, "", errExpectedClosingParenthesis - } - - out = regexpPseudoClassSelector{own: name == "matchesown", regexp: rx} - - case "nth-child", "nth-last-child", "nth-of-type", "nth-last-of-type": - if !p.consumeParenthesis() { - return out, "", errExpectedParenthesis - } - a, b, err := p.parseNth() - if err != nil { - return out, "", err - } - if !p.consumeClosingParenthesis() { - return out, "", errExpectedClosingParenthesis - } - last := name == "nth-last-child" || name == "nth-last-of-type" - ofType := name == "nth-of-type" || name == "nth-last-of-type" - out = nthPseudoClassSelector{a: a, b: b, last: last, ofType: ofType} - - case "first-child": - out = nthPseudoClassSelector{a: 0, b: 1, ofType: false, last: false} - case "last-child": - out = nthPseudoClassSelector{a: 0, b: 1, ofType: false, last: true} - case "first-of-type": - out = nthPseudoClassSelector{a: 0, b: 1, ofType: true, last: false} - case "last-of-type": - out = nthPseudoClassSelector{a: 0, b: 1, ofType: true, last: true} - case "only-child": - out = onlyChildPseudoClassSelector{ofType: false} - case "only-of-type": - out = onlyChildPseudoClassSelector{ofType: true} - case "input": - out = inputPseudoClassSelector{} - case "empty": - out = emptyElementPseudoClassSelector{} - case "root": - out = rootPseudoClassSelector{} - case "link": - out = linkPseudoClassSelector{} - case "lang": - if !p.consumeParenthesis() { - return out, "", errExpectedParenthesis - } - if p.i == len(p.s) { - return out, "", errUnmatchedParenthesis - } - val, err := p.parseIdentifier() - if err != nil { - return out, "", err - } - val = strings.ToLower(val) - p.skipWhitespace() - if p.i >= len(p.s) { - return out, "", errors.New("unexpected EOF in pseudo selector") - } - if !p.consumeClosingParenthesis() { - return out, "", errExpectedClosingParenthesis - } - out = langPseudoClassSelector{lang: val} - case "enabled": - out = enabledPseudoClassSelector{} - case "disabled": - out = disabledPseudoClassSelector{} - case "checked": - out = checkedPseudoClassSelector{} - case "visited", "hover", "active", "focus", "target": - // Not applicable in a static context: never match. - out = neverMatchSelector{value: ":" + name} - case "after", "backdrop", "before", "cue", "first-letter", "first-line", "grammar-error", "marker", "placeholder", "selection", "spelling-error": - return nil, name, nil - default: - return out, "", fmt.Errorf("unknown pseudoclass or pseudoelement :%s", name) - } - return -} - -// parseInteger parses a decimal integer. -func (p *parser) parseInteger() (int, error) { - i := p.i - start := i - for i < len(p.s) && '0' <= p.s[i] && p.s[i] <= '9' { - i++ - } - if i == start { - return 0, errors.New("expected integer, but didn't find it") - } - p.i = i - - val, err := strconv.Atoi(p.s[start:i]) - if err != nil { - return 0, err - } - - return val, nil -} - -// parseNth parses the argument for :nth-child (normally of the form an+b). -func (p *parser) parseNth() (a, b int, err error) { - // initial state - if p.i >= len(p.s) { - goto eof - } - switch p.s[p.i] { - case '-': - p.i++ - goto negativeA - case '+': - p.i++ - goto positiveA - case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': - goto positiveA - case 'n', 'N': - a = 1 - p.i++ - goto readN - case 'o', 'O', 'e', 'E': - id, nameErr := p.parseName() - if nameErr != nil { - return 0, 0, nameErr - } - id = toLowerASCII(id) - if id == "odd" { - return 2, 1, nil - } - if id == "even" { - return 2, 0, nil - } - return 0, 0, fmt.Errorf("expected 'odd' or 'even', but found '%s' instead", id) - default: - goto invalid - } - -positiveA: - if p.i >= len(p.s) { - goto eof - } - switch p.s[p.i] { - case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': - a, err = p.parseInteger() - if err != nil { - return 0, 0, err - } - goto readA - case 'n', 'N': - a = 1 - p.i++ - goto readN - default: - goto invalid - } - -negativeA: - if p.i >= len(p.s) { - goto eof - } - switch p.s[p.i] { - case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': - a, err = p.parseInteger() - if err != nil { - return 0, 0, err - } - a = -a - goto readA - case 'n', 'N': - a = -1 - p.i++ - goto readN - default: - goto invalid - } - -readA: - if p.i >= len(p.s) { - goto eof - } - switch p.s[p.i] { - case 'n', 'N': - p.i++ - goto readN - default: - // The number we read as a is actually b. - return 0, a, nil - } - -readN: - p.skipWhitespace() - if p.i >= len(p.s) { - goto eof - } - switch p.s[p.i] { - case '+': - p.i++ - p.skipWhitespace() - b, err = p.parseInteger() - if err != nil { - return 0, 0, err - } - return a, b, nil - case '-': - p.i++ - p.skipWhitespace() - b, err = p.parseInteger() - if err != nil { - return 0, 0, err - } - return a, -b, nil - default: - return a, 0, nil - } - -eof: - return 0, 0, errors.New("unexpected EOF while attempting to parse expression of form an+b") - -invalid: - return 0, 0, errors.New("unexpected character while attempting to parse expression of form an+b") -} - -// parseSimpleSelectorSequence parses a selector sequence that applies to -// a single element. -func (p *parser) parseSimpleSelectorSequence() (Sel, error) { - var selectors []Sel - - if p.i >= len(p.s) { - return nil, errors.New("expected selector, found EOF instead") - } - - switch p.s[p.i] { - case '*': - // It's the universal selector. Just skip over it, since it doesn't affect the meaning. - p.i++ - if p.i+2 < len(p.s) && p.s[p.i:p.i+2] == "|*" { // other version of universal selector - p.i += 2 - } - case '#', '.', '[', ':': - // There's no type selector. Wait to process the other till the main loop. - default: - r, err := p.parseTypeSelector() - if err != nil { - return nil, err - } - selectors = append(selectors, r) - } - - var pseudoElement string -loop: - for p.i < len(p.s) { - var ( - ns Sel - newPseudoElement string - err error - ) - switch p.s[p.i] { - case '#': - ns, err = p.parseIDSelector() - case '.': - ns, err = p.parseClassSelector() - case '[': - ns, err = p.parseAttributeSelector() - case ':': - ns, newPseudoElement, err = p.parsePseudoclassSelector() - default: - break loop - } - if err != nil { - return nil, err - } - // From https://drafts.csswg.org/selectors-3/#pseudo-elements : - // "Only one pseudo-element may appear per selector, and if present - // it must appear after the sequence of simple selectors that - // represents the subjects of the selector."" - if ns == nil { // we found a pseudo-element - if pseudoElement != "" { - return nil, fmt.Errorf("only one pseudo-element is accepted per selector, got %s and %s", pseudoElement, newPseudoElement) - } - if !p.acceptPseudoElements { - return nil, fmt.Errorf("pseudo-element %s found, but pseudo-elements support is disabled", newPseudoElement) - } - pseudoElement = newPseudoElement - } else { - if pseudoElement != "" { - return nil, fmt.Errorf("pseudo-element %s must be at the end of selector", pseudoElement) - } - selectors = append(selectors, ns) - } - - } - if len(selectors) == 1 && pseudoElement == "" { // no need wrap the selectors in compoundSelector - return selectors[0], nil - } - return compoundSelector{selectors: selectors, pseudoElement: pseudoElement}, nil -} - -// parseSelector parses a selector that may include combinators. -func (p *parser) parseSelector() (Sel, error) { - p.skipWhitespace() - result, err := p.parseSimpleSelectorSequence() - if err != nil { - return nil, err - } - - for { - var ( - combinator byte - c Sel - ) - if p.skipWhitespace() { - combinator = ' ' - } - if p.i >= len(p.s) { - return result, nil - } - - switch p.s[p.i] { - case '+', '>', '~': - combinator = p.s[p.i] - p.i++ - p.skipWhitespace() - case ',', ')': - // These characters can't begin a selector, but they can legally occur after one. - return result, nil - } - - if combinator == 0 { - return result, nil - } - - c, err = p.parseSimpleSelectorSequence() - if err != nil { - return nil, err - } - result = combinedSelector{first: result, combinator: combinator, second: c} - } -} - -// parseSelectorGroup parses a group of selectors, separated by commas. -func (p *parser) parseSelectorGroup() (SelectorGroup, error) { - current, err := p.parseSelector() - if err != nil { - return nil, err - } - result := SelectorGroup{current} - - for p.i < len(p.s) { - if p.s[p.i] != ',' { - break - } - p.i++ - c, err := p.parseSelector() - if err != nil { - return nil, err - } - result = append(result, c) - } - return result, nil -} diff --git a/vendor/github.com/andybalholm/cascadia/pseudo_classes.go b/vendor/github.com/andybalholm/cascadia/pseudo_classes.go deleted file mode 100644 index 6234c3e..0000000 --- a/vendor/github.com/andybalholm/cascadia/pseudo_classes.go +++ /dev/null @@ -1,458 +0,0 @@ -package cascadia - -import ( - "bytes" - "fmt" - "regexp" - "strings" - - "golang.org/x/net/html" - "golang.org/x/net/html/atom" -) - -// This file implements the pseudo classes selectors, -// which share the implementation of PseudoElement() and Specificity() - -type abstractPseudoClass struct{} - -func (s abstractPseudoClass) Specificity() Specificity { - return Specificity{0, 1, 0} -} - -func (c abstractPseudoClass) PseudoElement() string { - return "" -} - -type relativePseudoClassSelector struct { - name string // one of "not", "has", "haschild" - match SelectorGroup -} - -func (s relativePseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - switch s.name { - case "not": - // matches elements that do not match a. - return !s.match.Match(n) - case "has": - // matches elements with any descendant that matches a. - return hasDescendantMatch(n, s.match) - case "haschild": - // matches elements with a child that matches a. - return hasChildMatch(n, s.match) - default: - panic(fmt.Sprintf("unsupported relative pseudo class selector : %s", s.name)) - } -} - -// hasChildMatch returns whether n has any child that matches a. -func hasChildMatch(n *html.Node, a Matcher) bool { - for c := n.FirstChild; c != nil; c = c.NextSibling { - if a.Match(c) { - return true - } - } - return false -} - -// hasDescendantMatch performs a depth-first search of n's descendants, -// testing whether any of them match a. It returns true as soon as a match is -// found, or false if no match is found. -func hasDescendantMatch(n *html.Node, a Matcher) bool { - for c := n.FirstChild; c != nil; c = c.NextSibling { - if a.Match(c) || (c.Type == html.ElementNode && hasDescendantMatch(c, a)) { - return true - } - } - return false -} - -// Specificity returns the specificity of the most specific selectors -// in the pseudo-class arguments. -// See https://www.w3.org/TR/selectors/#specificity-rules -func (s relativePseudoClassSelector) Specificity() Specificity { - var max Specificity - for _, sel := range s.match { - newSpe := sel.Specificity() - if max.Less(newSpe) { - max = newSpe - } - } - return max -} - -func (c relativePseudoClassSelector) PseudoElement() string { - return "" -} - -type containsPseudoClassSelector struct { - abstractPseudoClass - value string - own bool -} - -func (s containsPseudoClassSelector) Match(n *html.Node) bool { - var text string - if s.own { - // matches nodes that directly contain the given text - text = strings.ToLower(nodeOwnText(n)) - } else { - // matches nodes that contain the given text. - text = strings.ToLower(nodeText(n)) - } - return strings.Contains(text, s.value) -} - -type regexpPseudoClassSelector struct { - abstractPseudoClass - regexp *regexp.Regexp - own bool -} - -func (s regexpPseudoClassSelector) Match(n *html.Node) bool { - var text string - if s.own { - // matches nodes whose text directly matches the specified regular expression - text = nodeOwnText(n) - } else { - // matches nodes whose text matches the specified regular expression - text = nodeText(n) - } - return s.regexp.MatchString(text) -} - -// writeNodeText writes the text contained in n and its descendants to b. -func writeNodeText(n *html.Node, b *bytes.Buffer) { - switch n.Type { - case html.TextNode: - b.WriteString(n.Data) - case html.ElementNode: - for c := n.FirstChild; c != nil; c = c.NextSibling { - writeNodeText(c, b) - } - } -} - -// nodeText returns the text contained in n and its descendants. -func nodeText(n *html.Node) string { - var b bytes.Buffer - writeNodeText(n, &b) - return b.String() -} - -// nodeOwnText returns the contents of the text nodes that are direct -// children of n. -func nodeOwnText(n *html.Node) string { - var b bytes.Buffer - for c := n.FirstChild; c != nil; c = c.NextSibling { - if c.Type == html.TextNode { - b.WriteString(c.Data) - } - } - return b.String() -} - -type nthPseudoClassSelector struct { - abstractPseudoClass - a, b int - last, ofType bool -} - -func (s nthPseudoClassSelector) Match(n *html.Node) bool { - if s.a == 0 { - if s.last { - return simpleNthLastChildMatch(s.b, s.ofType, n) - } else { - return simpleNthChildMatch(s.b, s.ofType, n) - } - } - return nthChildMatch(s.a, s.b, s.last, s.ofType, n) -} - -// nthChildMatch implements :nth-child(an+b). -// If last is true, implements :nth-last-child instead. -// If ofType is true, implements :nth-of-type instead. -func nthChildMatch(a, b int, last, ofType bool, n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - - parent := n.Parent - if parent == nil { - return false - } - - i := -1 - count := 0 - for c := parent.FirstChild; c != nil; c = c.NextSibling { - if (c.Type != html.ElementNode) || (ofType && c.Data != n.Data) { - continue - } - count++ - if c == n { - i = count - if !last { - break - } - } - } - - if i == -1 { - // This shouldn't happen, since n should always be one of its parent's children. - return false - } - - if last { - i = count - i + 1 - } - - i -= b - if a == 0 { - return i == 0 - } - - return i%a == 0 && i/a >= 0 -} - -// simpleNthChildMatch implements :nth-child(b). -// If ofType is true, implements :nth-of-type instead. -func simpleNthChildMatch(b int, ofType bool, n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - - parent := n.Parent - if parent == nil { - return false - } - - count := 0 - for c := parent.FirstChild; c != nil; c = c.NextSibling { - if c.Type != html.ElementNode || (ofType && c.Data != n.Data) { - continue - } - count++ - if c == n { - return count == b - } - if count >= b { - return false - } - } - return false -} - -// simpleNthLastChildMatch implements :nth-last-child(b). -// If ofType is true, implements :nth-last-of-type instead. -func simpleNthLastChildMatch(b int, ofType bool, n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - - parent := n.Parent - if parent == nil { - return false - } - - count := 0 - for c := parent.LastChild; c != nil; c = c.PrevSibling { - if c.Type != html.ElementNode || (ofType && c.Data != n.Data) { - continue - } - count++ - if c == n { - return count == b - } - if count >= b { - return false - } - } - return false -} - -type onlyChildPseudoClassSelector struct { - abstractPseudoClass - ofType bool -} - -// Match implements :only-child. -// If `ofType` is true, it implements :only-of-type instead. -func (s onlyChildPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - - parent := n.Parent - if parent == nil { - return false - } - - count := 0 - for c := parent.FirstChild; c != nil; c = c.NextSibling { - if (c.Type != html.ElementNode) || (s.ofType && c.Data != n.Data) { - continue - } - count++ - if count > 1 { - return false - } - } - - return count == 1 -} - -type inputPseudoClassSelector struct { - abstractPseudoClass -} - -// Matches input, select, textarea and button elements. -func (s inputPseudoClassSelector) Match(n *html.Node) bool { - return n.Type == html.ElementNode && (n.Data == "input" || n.Data == "select" || n.Data == "textarea" || n.Data == "button") -} - -type emptyElementPseudoClassSelector struct { - abstractPseudoClass -} - -// Matches empty elements. -func (s emptyElementPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - - for c := n.FirstChild; c != nil; c = c.NextSibling { - switch c.Type { - case html.ElementNode: - return false - case html.TextNode: - if strings.TrimSpace(nodeText(c)) == "" { - continue - } else { - return false - } - } - } - - return true -} - -type rootPseudoClassSelector struct { - abstractPseudoClass -} - -// Match implements :root -func (s rootPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - if n.Parent == nil { - return false - } - return n.Parent.Type == html.DocumentNode -} - -func hasAttr(n *html.Node, attr string) bool { - return matchAttribute(n, attr, func(string) bool { return true }) -} - -type linkPseudoClassSelector struct { - abstractPseudoClass -} - -// Match implements :link -func (s linkPseudoClassSelector) Match(n *html.Node) bool { - return (n.DataAtom == atom.A || n.DataAtom == atom.Area || n.DataAtom == atom.Link) && hasAttr(n, "href") -} - -type langPseudoClassSelector struct { - abstractPseudoClass - lang string -} - -func (s langPseudoClassSelector) Match(n *html.Node) bool { - own := matchAttribute(n, "lang", func(val string) bool { - return val == s.lang || strings.HasPrefix(val, s.lang+"-") - }) - if n.Parent == nil { - return own - } - return own || s.Match(n.Parent) -} - -type enabledPseudoClassSelector struct { - abstractPseudoClass -} - -func (s enabledPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - switch n.DataAtom { - case atom.A, atom.Area, atom.Link: - return hasAttr(n, "href") - case atom.Optgroup, atom.Menuitem, atom.Fieldset: - return !hasAttr(n, "disabled") - case atom.Button, atom.Input, atom.Select, atom.Textarea, atom.Option: - return !hasAttr(n, "disabled") && !inDisabledFieldset(n) - } - return false -} - -type disabledPseudoClassSelector struct { - abstractPseudoClass -} - -func (s disabledPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - switch n.DataAtom { - case atom.Optgroup, atom.Menuitem, atom.Fieldset: - return hasAttr(n, "disabled") - case atom.Button, atom.Input, atom.Select, atom.Textarea, atom.Option: - return hasAttr(n, "disabled") || inDisabledFieldset(n) - } - return false -} - -func hasLegendInPreviousSiblings(n *html.Node) bool { - for s := n.PrevSibling; s != nil; s = s.PrevSibling { - if s.DataAtom == atom.Legend { - return true - } - } - return false -} - -func inDisabledFieldset(n *html.Node) bool { - if n.Parent == nil { - return false - } - if n.Parent.DataAtom == atom.Fieldset && hasAttr(n.Parent, "disabled") && - (n.DataAtom != atom.Legend || hasLegendInPreviousSiblings(n)) { - return true - } - return inDisabledFieldset(n.Parent) -} - -type checkedPseudoClassSelector struct { - abstractPseudoClass -} - -func (s checkedPseudoClassSelector) Match(n *html.Node) bool { - if n.Type != html.ElementNode { - return false - } - switch n.DataAtom { - case atom.Input, atom.Menuitem: - return hasAttr(n, "checked") && matchAttribute(n, "type", func(val string) bool { - t := toLowerASCII(val) - return t == "checkbox" || t == "radio" - }) - case atom.Option: - return hasAttr(n, "selected") - } - return false -} diff --git a/vendor/github.com/andybalholm/cascadia/selector.go b/vendor/github.com/andybalholm/cascadia/selector.go deleted file mode 100644 index 87549be..0000000 --- a/vendor/github.com/andybalholm/cascadia/selector.go +++ /dev/null @@ -1,586 +0,0 @@ -package cascadia - -import ( - "fmt" - "regexp" - "strings" - - "golang.org/x/net/html" -) - -// Matcher is the interface for basic selector functionality. -// Match returns whether a selector matches n. -type Matcher interface { - Match(n *html.Node) bool -} - -// Sel is the interface for all the functionality provided by selectors. -type Sel interface { - Matcher - Specificity() Specificity - - // Returns a CSS input compiling to this selector. - String() string - - // Returns a pseudo-element, or an empty string. - PseudoElement() string -} - -// Parse parses a selector. Use `ParseWithPseudoElement` -// if you need support for pseudo-elements. -func Parse(sel string) (Sel, error) { - p := &parser{s: sel} - compiled, err := p.parseSelector() - if err != nil { - return nil, err - } - - if p.i < len(sel) { - return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) - } - - return compiled, nil -} - -// ParseWithPseudoElement parses a single selector, -// with support for pseudo-element. -func ParseWithPseudoElement(sel string) (Sel, error) { - p := &parser{s: sel, acceptPseudoElements: true} - compiled, err := p.parseSelector() - if err != nil { - return nil, err - } - - if p.i < len(sel) { - return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) - } - - return compiled, nil -} - -// ParseGroup parses a selector, or a group of selectors separated by commas. -// Use `ParseGroupWithPseudoElements` -// if you need support for pseudo-elements. -func ParseGroup(sel string) (SelectorGroup, error) { - p := &parser{s: sel} - compiled, err := p.parseSelectorGroup() - if err != nil { - return nil, err - } - - if p.i < len(sel) { - return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) - } - - return compiled, nil -} - -// ParseGroupWithPseudoElements parses a selector, or a group of selectors separated by commas. -// It supports pseudo-elements. -func ParseGroupWithPseudoElements(sel string) (SelectorGroup, error) { - p := &parser{s: sel, acceptPseudoElements: true} - compiled, err := p.parseSelectorGroup() - if err != nil { - return nil, err - } - - if p.i < len(sel) { - return nil, fmt.Errorf("parsing %q: %d bytes left over", sel, len(sel)-p.i) - } - - return compiled, nil -} - -// A Selector is a function which tells whether a node matches or not. -// -// This type is maintained for compatibility; I recommend using the newer and -// more idiomatic interfaces Sel and Matcher. -type Selector func(*html.Node) bool - -// Compile parses a selector and returns, if successful, a Selector object -// that can be used to match against html.Node objects. -func Compile(sel string) (Selector, error) { - compiled, err := ParseGroup(sel) - if err != nil { - return nil, err - } - - return Selector(compiled.Match), nil -} - -// MustCompile is like Compile, but panics instead of returning an error. -func MustCompile(sel string) Selector { - compiled, err := Compile(sel) - if err != nil { - panic(err) - } - return compiled -} - -// MatchAll returns a slice of the nodes that match the selector, -// from n and its children. -func (s Selector) MatchAll(n *html.Node) []*html.Node { - return s.matchAllInto(n, nil) -} - -func (s Selector) matchAllInto(n *html.Node, storage []*html.Node) []*html.Node { - if s(n) { - storage = append(storage, n) - } - - for child := n.FirstChild; child != nil; child = child.NextSibling { - storage = s.matchAllInto(child, storage) - } - - return storage -} - -func queryInto(n *html.Node, m Matcher, storage []*html.Node) []*html.Node { - for child := n.FirstChild; child != nil; child = child.NextSibling { - if m.Match(child) { - storage = append(storage, child) - } - storage = queryInto(child, m, storage) - } - - return storage -} - -// QueryAll returns a slice of all the nodes that match m, from the descendants -// of n. -func QueryAll(n *html.Node, m Matcher) []*html.Node { - return queryInto(n, m, nil) -} - -// Match returns true if the node matches the selector. -func (s Selector) Match(n *html.Node) bool { - return s(n) -} - -// MatchFirst returns the first node that matches s, from n and its children. -func (s Selector) MatchFirst(n *html.Node) *html.Node { - if s.Match(n) { - return n - } - - for c := n.FirstChild; c != nil; c = c.NextSibling { - m := s.MatchFirst(c) - if m != nil { - return m - } - } - return nil -} - -// Query returns the first node that matches m, from the descendants of n. -// If none matches, it returns nil. -func Query(n *html.Node, m Matcher) *html.Node { - for c := n.FirstChild; c != nil; c = c.NextSibling { - if m.Match(c) { - return c - } - if matched := Query(c, m); matched != nil { - return matched - } - } - - return nil -} - -// Filter returns the nodes in nodes that match the selector. -func (s Selector) Filter(nodes []*html.Node) (result []*html.Node) { - for _, n := range nodes { - if s(n) { - result = append(result, n) - } - } - return result -} - -// Filter returns the nodes that match m. -func Filter(nodes []*html.Node, m Matcher) (result []*html.Node) { - for _, n := range nodes { - if m.Match(n) { - result = append(result, n) - } - } - return result -} - -type tagSelector struct { - tag string -} - -// Matches elements with a given tag name. -func (t tagSelector) Match(n *html.Node) bool { - return n.Type == html.ElementNode && n.Data == t.tag -} - -func (c tagSelector) Specificity() Specificity { - return Specificity{0, 0, 1} -} - -func (c tagSelector) PseudoElement() string { - return "" -} - -type classSelector struct { - class string -} - -// Matches elements by class attribute. -func (t classSelector) Match(n *html.Node) bool { - return matchAttribute(n, "class", func(s string) bool { - return matchInclude(t.class, s, false) - }) -} - -func (c classSelector) Specificity() Specificity { - return Specificity{0, 1, 0} -} - -func (c classSelector) PseudoElement() string { - return "" -} - -type idSelector struct { - id string -} - -// Matches elements by id attribute. -func (t idSelector) Match(n *html.Node) bool { - return matchAttribute(n, "id", func(s string) bool { - return s == t.id - }) -} - -func (c idSelector) Specificity() Specificity { - return Specificity{1, 0, 0} -} - -func (c idSelector) PseudoElement() string { - return "" -} - -type attrSelector struct { - key, val, operation string - regexp *regexp.Regexp - insensitive bool -} - -// Matches elements by attribute value. -func (t attrSelector) Match(n *html.Node) bool { - switch t.operation { - case "": - return matchAttribute(n, t.key, func(string) bool { return true }) - case "=": - return matchAttribute(n, t.key, func(s string) bool { return matchInsensitiveValue(s, t.val, t.insensitive) }) - case "!=": - return attributeNotEqualMatch(t.key, t.val, n, t.insensitive) - case "~=": - // matches elements where the attribute named key is a whitespace-separated list that includes val. - return matchAttribute(n, t.key, func(s string) bool { return matchInclude(t.val, s, t.insensitive) }) - case "|=": - return attributeDashMatch(t.key, t.val, n, t.insensitive) - case "^=": - return attributePrefixMatch(t.key, t.val, n, t.insensitive) - case "$=": - return attributeSuffixMatch(t.key, t.val, n, t.insensitive) - case "*=": - return attributeSubstringMatch(t.key, t.val, n, t.insensitive) - case "#=": - return attributeRegexMatch(t.key, t.regexp, n) - default: - panic(fmt.Sprintf("unsuported operation : %s", t.operation)) - } -} - -// matches elements where we ignore (or not) the case of the attribute value -// the user attribute is the value set by the user to match elements -// the real attribute is the attribute value found in the code parsed -func matchInsensitiveValue(userAttr string, realAttr string, ignoreCase bool) bool { - if ignoreCase { - return strings.EqualFold(userAttr, realAttr) - } - return userAttr == realAttr - -} - -// matches elements where the attribute named key satisifes the function f. -func matchAttribute(n *html.Node, key string, f func(string) bool) bool { - if n.Type != html.ElementNode { - return false - } - for _, a := range n.Attr { - if a.Key == key && f(a.Val) { - return true - } - } - return false -} - -// attributeNotEqualMatch matches elements where -// the attribute named key does not have the value val. -func attributeNotEqualMatch(key, val string, n *html.Node, ignoreCase bool) bool { - if n.Type != html.ElementNode { - return false - } - for _, a := range n.Attr { - if a.Key == key && matchInsensitiveValue(a.Val, val, ignoreCase) { - return false - } - } - return true -} - -// returns true if s is a whitespace-separated list that includes val. -func matchInclude(val string, s string, ignoreCase bool) bool { - for s != "" { - i := strings.IndexAny(s, " \t\r\n\f") - if i == -1 { - return matchInsensitiveValue(s, val, ignoreCase) - } - if matchInsensitiveValue(s[:i], val, ignoreCase) { - return true - } - s = s[i+1:] - } - return false -} - -// matches elements where the attribute named key equals val or starts with val plus a hyphen. -func attributeDashMatch(key, val string, n *html.Node, ignoreCase bool) bool { - return matchAttribute(n, key, - func(s string) bool { - if matchInsensitiveValue(s, val, ignoreCase) { - return true - } - if len(s) <= len(val) { - return false - } - if matchInsensitiveValue(s[:len(val)], val, ignoreCase) && s[len(val)] == '-' { - return true - } - return false - }) -} - -// attributePrefixMatch returns a Selector that matches elements where -// the attribute named key starts with val. -func attributePrefixMatch(key, val string, n *html.Node, ignoreCase bool) bool { - return matchAttribute(n, key, - func(s string) bool { - if strings.TrimSpace(s) == "" { - return false - } - if ignoreCase { - return strings.HasPrefix(strings.ToLower(s), strings.ToLower(val)) - } - return strings.HasPrefix(s, val) - }) -} - -// attributeSuffixMatch matches elements where -// the attribute named key ends with val. -func attributeSuffixMatch(key, val string, n *html.Node, ignoreCase bool) bool { - return matchAttribute(n, key, - func(s string) bool { - if strings.TrimSpace(s) == "" { - return false - } - if ignoreCase { - return strings.HasSuffix(strings.ToLower(s), strings.ToLower(val)) - } - return strings.HasSuffix(s, val) - }) -} - -// attributeSubstringMatch matches nodes where -// the attribute named key contains val. -func attributeSubstringMatch(key, val string, n *html.Node, ignoreCase bool) bool { - return matchAttribute(n, key, - func(s string) bool { - if strings.TrimSpace(s) == "" { - return false - } - if ignoreCase { - return strings.Contains(strings.ToLower(s), strings.ToLower(val)) - } - return strings.Contains(s, val) - }) -} - -// attributeRegexMatch matches nodes where -// the attribute named key matches the regular expression rx -func attributeRegexMatch(key string, rx *regexp.Regexp, n *html.Node) bool { - return matchAttribute(n, key, - func(s string) bool { - return rx.MatchString(s) - }) -} - -func (c attrSelector) Specificity() Specificity { - return Specificity{0, 1, 0} -} - -func (c attrSelector) PseudoElement() string { - return "" -} - -// see pseudo_classes.go for pseudo classes selectors - -// on a static context, some selectors can't match anything -type neverMatchSelector struct { - value string -} - -func (s neverMatchSelector) Match(n *html.Node) bool { - return false -} - -func (s neverMatchSelector) Specificity() Specificity { - return Specificity{0, 0, 0} -} - -func (c neverMatchSelector) PseudoElement() string { - return "" -} - -type compoundSelector struct { - selectors []Sel - pseudoElement string -} - -// Matches elements if each sub-selectors matches. -func (t compoundSelector) Match(n *html.Node) bool { - if len(t.selectors) == 0 { - return n.Type == html.ElementNode - } - - for _, sel := range t.selectors { - if !sel.Match(n) { - return false - } - } - return true -} - -func (s compoundSelector) Specificity() Specificity { - var out Specificity - for _, sel := range s.selectors { - out = out.Add(sel.Specificity()) - } - if s.pseudoElement != "" { - // https://drafts.csswg.org/selectors-3/#specificity - out = out.Add(Specificity{0, 0, 1}) - } - return out -} - -func (c compoundSelector) PseudoElement() string { - return c.pseudoElement -} - -type combinedSelector struct { - first Sel - combinator byte - second Sel -} - -func (t combinedSelector) Match(n *html.Node) bool { - if t.first == nil { - return false // maybe we should panic - } - switch t.combinator { - case 0: - return t.first.Match(n) - case ' ': - return descendantMatch(t.first, t.second, n) - case '>': - return childMatch(t.first, t.second, n) - case '+': - return siblingMatch(t.first, t.second, true, n) - case '~': - return siblingMatch(t.first, t.second, false, n) - default: - panic("unknown combinator") - } -} - -// matches an element if it matches d and has an ancestor that matches a. -func descendantMatch(a, d Matcher, n *html.Node) bool { - if !d.Match(n) { - return false - } - - for p := n.Parent; p != nil; p = p.Parent { - if a.Match(p) { - return true - } - } - - return false -} - -// matches an element if it matches d and its parent matches a. -func childMatch(a, d Matcher, n *html.Node) bool { - return d.Match(n) && n.Parent != nil && a.Match(n.Parent) -} - -// matches an element if it matches s2 and is preceded by an element that matches s1. -// If adjacent is true, the sibling must be immediately before the element. -func siblingMatch(s1, s2 Matcher, adjacent bool, n *html.Node) bool { - if !s2.Match(n) { - return false - } - - if adjacent { - for n = n.PrevSibling; n != nil; n = n.PrevSibling { - if n.Type == html.TextNode || n.Type == html.CommentNode { - continue - } - return s1.Match(n) - } - return false - } - - // Walk backwards looking for element that matches s1 - for c := n.PrevSibling; c != nil; c = c.PrevSibling { - if s1.Match(c) { - return true - } - } - - return false -} - -func (s combinedSelector) Specificity() Specificity { - spec := s.first.Specificity() - if s.second != nil { - spec = spec.Add(s.second.Specificity()) - } - return spec -} - -// on combinedSelector, a pseudo-element only makes sens on the last -// selector, although others increase specificity. -func (c combinedSelector) PseudoElement() string { - if c.second == nil { - return "" - } - return c.second.PseudoElement() -} - -// A SelectorGroup is a list of selectors, which matches if any of the -// individual selectors matches. -type SelectorGroup []Sel - -// Match returns true if the node matches one of the single selectors. -func (s SelectorGroup) Match(n *html.Node) bool { - for _, sel := range s { - if sel.Match(n) { - return true - } - } - return false -} diff --git a/vendor/github.com/andybalholm/cascadia/serialize.go b/vendor/github.com/andybalholm/cascadia/serialize.go deleted file mode 100644 index 61acf04..0000000 --- a/vendor/github.com/andybalholm/cascadia/serialize.go +++ /dev/null @@ -1,176 +0,0 @@ -package cascadia - -import ( - "fmt" - "strconv" - "strings" -) - -// implements the reverse operation Sel -> string - -var specialCharReplacer *strings.Replacer - -func init() { - var pairs []string - for _, s := range ",!\"#$%&'()*+ -./:;<=>?@[\\]^`{|}~" { - pairs = append(pairs, string(s), "\\"+string(s)) - } - specialCharReplacer = strings.NewReplacer(pairs...) -} - -// espace special CSS char -func escape(s string) string { return specialCharReplacer.Replace(s) } - -func (c tagSelector) String() string { - return c.tag -} - -func (c idSelector) String() string { - return "#" + escape(c.id) -} - -func (c classSelector) String() string { - return "." + escape(c.class) -} - -func (c attrSelector) String() string { - val := c.val - if c.operation == "#=" { - val = c.regexp.String() - } else if c.operation != "" { - val = fmt.Sprintf(`"%s"`, val) - } - - ignoreCase := "" - - if c.insensitive { - ignoreCase = " i" - } - - return fmt.Sprintf(`[%s%s%s%s]`, c.key, c.operation, val, ignoreCase) -} - -func (c relativePseudoClassSelector) String() string { - return fmt.Sprintf(":%s(%s)", c.name, c.match.String()) -} - -func (c containsPseudoClassSelector) String() string { - s := "contains" - if c.own { - s += "Own" - } - return fmt.Sprintf(`:%s("%s")`, s, c.value) -} - -func (c regexpPseudoClassSelector) String() string { - s := "matches" - if c.own { - s += "Own" - } - return fmt.Sprintf(":%s(%s)", s, c.regexp.String()) -} - -func (c nthPseudoClassSelector) String() string { - if c.a == 0 && c.b == 1 { // special cases - s := ":first-" - if c.last { - s = ":last-" - } - if c.ofType { - s += "of-type" - } else { - s += "child" - } - return s - } - var name string - switch [2]bool{c.last, c.ofType} { - case [2]bool{true, true}: - name = "nth-last-of-type" - case [2]bool{true, false}: - name = "nth-last-child" - case [2]bool{false, true}: - name = "nth-of-type" - case [2]bool{false, false}: - name = "nth-child" - } - s := fmt.Sprintf("+%d", c.b) - if c.b < 0 { // avoid +-8 invalid syntax - s = strconv.Itoa(c.b) - } - return fmt.Sprintf(":%s(%dn%s)", name, c.a, s) -} - -func (c onlyChildPseudoClassSelector) String() string { - if c.ofType { - return ":only-of-type" - } - return ":only-child" -} - -func (c inputPseudoClassSelector) String() string { - return ":input" -} - -func (c emptyElementPseudoClassSelector) String() string { - return ":empty" -} - -func (c rootPseudoClassSelector) String() string { - return ":root" -} - -func (c linkPseudoClassSelector) String() string { - return ":link" -} - -func (c langPseudoClassSelector) String() string { - return fmt.Sprintf(":lang(%s)", c.lang) -} - -func (c neverMatchSelector) String() string { - return c.value -} - -func (c enabledPseudoClassSelector) String() string { - return ":enabled" -} - -func (c disabledPseudoClassSelector) String() string { - return ":disabled" -} - -func (c checkedPseudoClassSelector) String() string { - return ":checked" -} - -func (c compoundSelector) String() string { - if len(c.selectors) == 0 && c.pseudoElement == "" { - return "*" - } - chunks := make([]string, len(c.selectors)) - for i, sel := range c.selectors { - chunks[i] = sel.String() - } - s := strings.Join(chunks, "") - if c.pseudoElement != "" { - s += "::" + c.pseudoElement - } - return s -} - -func (c combinedSelector) String() string { - start := c.first.String() - if c.second != nil { - start += fmt.Sprintf(" %s %s", string(c.combinator), c.second.String()) - } - return start -} - -func (c SelectorGroup) String() string { - ck := make([]string, len(c)) - for i, s := range c { - ck[i] = s.String() - } - return strings.Join(ck, ", ") -} diff --git a/vendor/github.com/andybalholm/cascadia/specificity.go b/vendor/github.com/andybalholm/cascadia/specificity.go deleted file mode 100644 index 8db864f..0000000 --- a/vendor/github.com/andybalholm/cascadia/specificity.go +++ /dev/null @@ -1,26 +0,0 @@ -package cascadia - -// Specificity is the CSS specificity as defined in -// https://www.w3.org/TR/selectors/#specificity-rules -// with the convention Specificity = [A,B,C]. -type Specificity [3]int - -// returns `true` if s < other (strictly), false otherwise -func (s Specificity) Less(other Specificity) bool { - for i := range s { - if s[i] < other[i] { - return true - } - if s[i] > other[i] { - return false - } - } - return false -} - -func (s Specificity) Add(other Specificity) Specificity { - for i, sp := range other { - s[i] += sp - } - return s -} diff --git a/vendor/github.com/araddon/dateparse/.travis.yml b/vendor/github.com/araddon/dateparse/.travis.yml deleted file mode 100644 index 3b4b177..0000000 --- a/vendor/github.com/araddon/dateparse/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -go: - - 1.13.x - -before_install: - - go get -t -v ./... - -script: - - go test -race -coverprofile=coverage.txt -covermode=atomic - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/araddon/dateparse/LICENSE b/vendor/github.com/araddon/dateparse/LICENSE deleted file mode 100644 index f675ed3..0000000 --- a/vendor/github.com/araddon/dateparse/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2017 Aaron Raddon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/araddon/dateparse/README.md b/vendor/github.com/araddon/dateparse/README.md deleted file mode 100644 index fe682dd..0000000 --- a/vendor/github.com/araddon/dateparse/README.md +++ /dev/null @@ -1,323 +0,0 @@ -Go Date Parser ---------------------------- - -Parse many date strings without knowing format in advance. Uses a scanner to read bytes and use a state machine to find format. Much faster than shotgun based parse methods. See [bench_test.go](https://github.com/araddon/dateparse/blob/master/bench_test.go) for performance comparison. - - -[![Code Coverage](https://codecov.io/gh/araddon/dateparse/branch/master/graph/badge.svg)](https://codecov.io/gh/araddon/dateparse) -[![GoDoc](https://godoc.org/github.com/araddon/dateparse?status.svg)](http://godoc.org/github.com/araddon/dateparse) -[![Build Status](https://travis-ci.org/araddon/dateparse.svg?branch=master)](https://travis-ci.org/araddon/dateparse) -[![Go ReportCard](https://goreportcard.com/badge/araddon/dateparse)](https://goreportcard.com/report/araddon/dateparse) - -**MM/DD/YYYY VS DD/MM/YYYY** Right now this uses mm/dd/yyyy WHEN ambiguous if this is not desired behavior, use `ParseStrict` which will fail on ambiguous date strings. - -**Timezones** The location your server is configured affects the results! See example or https://play.golang.org/p/IDHRalIyXh and last paragraph here https://golang.org/pkg/time/#Parse. - - -```go - -// Normal parse. Equivalent Timezone rules as time.Parse() -t, err := dateparse.ParseAny("3/1/2014") - -// Parse Strict, error on ambigous mm/dd vs dd/mm dates -t, err := dateparse.ParseStrict("3/1/2014") -> returns error - -// Return a string that represents the layout to parse the given date-time. -layout, err := dateparse.ParseFormat("May 8, 2009 5:57:51 PM") -> "Jan 2, 2006 3:04:05 PM" - -``` - -cli tool for testing dateformats ----------------------------------- - -[Date Parse CLI](https://github.com/araddon/dateparse/blob/master/dateparse) - - -Extended example -------------------- - -https://github.com/araddon/dateparse/blob/master/example/main.go - -```go -package main - -import ( - "flag" - "fmt" - "time" - - "github.com/scylladb/termtables" - "github.com/araddon/dateparse" -) - -var examples = []string{ - "May 8, 2009 5:57:51 PM", - "oct 7, 1970", - "oct 7, '70", - "oct. 7, 1970", - "oct. 7, 70", - "Mon Jan 2 15:04:05 2006", - "Mon Jan 2 15:04:05 MST 2006", - "Mon Jan 02 15:04:05 -0700 2006", - "Monday, 02-Jan-06 15:04:05 MST", - "Mon, 02 Jan 2006 15:04:05 MST", - "Tue, 11 Jul 2017 16:28:13 +0200 (CEST)", - "Mon, 02 Jan 2006 15:04:05 -0700", - "Mon 30 Sep 2018 09:09:09 PM UTC", - "Mon Aug 10 15:44:11 UTC+0100 2015", - "Thu, 4 Jan 2018 17:53:36 +0000", - "Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time)", - "Sun, 3 Jan 2021 00:12:23 +0800 (GMT+08:00)", - "September 17, 2012 10:09am", - "September 17, 2012 at 10:09am PST-08", - "September 17, 2012, 10:10:09", - "October 7, 1970", - "October 7th, 1970", - "12 Feb 2006, 19:17", - "12 Feb 2006 19:17", - "14 May 2019 19:11:40.164", - "7 oct 70", - "7 oct 1970", - "03 February 2013", - "1 July 2013", - "2013-Feb-03", - // dd/Mon/yyy alpha Months - "06/Jan/2008:15:04:05 -0700", - "06/Jan/2008 15:04:05 -0700", - // mm/dd/yy - "3/31/2014", - "03/31/2014", - "08/21/71", - "8/1/71", - "4/8/2014 22:05", - "04/08/2014 22:05", - "4/8/14 22:05", - "04/2/2014 03:00:51", - "8/8/1965 12:00:00 AM", - "8/8/1965 01:00:01 PM", - "8/8/1965 01:00 PM", - "8/8/1965 1:00 PM", - "8/8/1965 12:00 AM", - "4/02/2014 03:00:51", - "03/19/2012 10:11:59", - "03/19/2012 10:11:59.3186369", - // yyyy/mm/dd - "2014/3/31", - "2014/03/31", - "2014/4/8 22:05", - "2014/04/08 22:05", - "2014/04/2 03:00:51", - "2014/4/02 03:00:51", - "2012/03/19 10:11:59", - "2012/03/19 10:11:59.3186369", - // yyyy:mm:dd - "2014:3:31", - "2014:03:31", - "2014:4:8 22:05", - "2014:04:08 22:05", - "2014:04:2 03:00:51", - "2014:4:02 03:00:51", - "2012:03:19 10:11:59", - "2012:03:19 10:11:59.3186369", - // Chinese - "2014年04月08日", - // yyyy-mm-ddThh - "2006-01-02T15:04:05+0000", - "2009-08-12T22:15:09-07:00", - "2009-08-12T22:15:09", - "2009-08-12T22:15:09.988", - "2009-08-12T22:15:09Z", - "2017-07-19T03:21:51:897+0100", - "2019-05-29T08:41-04", // no seconds, 2 digit TZ offset - // yyyy-mm-dd hh:mm:ss - "2014-04-26 17:24:37.3186369", - "2012-08-03 18:31:59.257000000", - "2014-04-26 17:24:37.123", - "2013-04-01 22:43", - "2013-04-01 22:43:22", - "2014-12-16 06:20:00 UTC", - "2014-12-16 06:20:00 GMT", - "2014-04-26 05:24:37 PM", - "2014-04-26 13:13:43 +0800", - "2014-04-26 13:13:43 +0800 +08", - "2014-04-26 13:13:44 +09:00", - "2012-08-03 18:31:59.257000000 +0000 UTC", - "2015-09-30 18:48:56.35272715 +0000 UTC", - "2015-02-18 00:12:00 +0000 GMT", - "2015-02-18 00:12:00 +0000 UTC", - "2015-02-08 03:02:00 +0300 MSK m=+0.000000001", - "2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001", - "2017-07-19 03:21:51+00:00", - "2014-04-26", - "2014-04", - "2014", - "2014-05-11 08:20:13,787", - // yyyy-mm-dd-07:00 - "2020-07-20+08:00", - // mm.dd.yy - "3.31.2014", - "03.31.2014", - "08.21.71", - "2014.03", - "2014.03.30", - // yyyymmdd and similar - "20140601", - "20140722105203", - // yymmdd hh:mm:yy mysql log - // 080313 05:21:55 mysqld started - "171113 14:14:20", - // unix seconds, ms, micro, nano - "1332151919", - "1384216367189", - "1384216367111222", - "1384216367111222333", -} - -var ( - timezone = "" -) - -func main() { - flag.StringVar(&timezone, "timezone", "UTC", "Timezone aka `America/Los_Angeles` formatted time-zone") - flag.Parse() - - if timezone != "" { - // NOTE: This is very, very important to understand - // time-parsing in go - loc, err := time.LoadLocation(timezone) - if err != nil { - panic(err.Error()) - } - time.Local = loc - } - - table := termtables.CreateTable() - - table.AddHeaders("Input", "Parsed, and Output as %v") - for _, dateExample := range examples { - t, err := dateparse.ParseLocal(dateExample) - if err != nil { - panic(err.Error()) - } - table.AddRow(dateExample, fmt.Sprintf("%v", t)) - } - fmt.Println(table.Render()) -} - -/* -+-------------------------------------------------------+-----------------------------------------+ -| Input | Parsed, and Output as %v | -+-------------------------------------------------------+-----------------------------------------+ -| May 8, 2009 5:57:51 PM | 2009-05-08 17:57:51 +0000 UTC | -| oct 7, 1970 | 1970-10-07 00:00:00 +0000 UTC | -| oct 7, '70 | 1970-10-07 00:00:00 +0000 UTC | -| oct. 7, 1970 | 1970-10-07 00:00:00 +0000 UTC | -| oct. 7, 70 | 1970-10-07 00:00:00 +0000 UTC | -| Mon Jan 2 15:04:05 2006 | 2006-01-02 15:04:05 +0000 UTC | -| Mon Jan 2 15:04:05 MST 2006 | 2006-01-02 15:04:05 +0000 MST | -| Mon Jan 02 15:04:05 -0700 2006 | 2006-01-02 15:04:05 -0700 -0700 | -| Monday, 02-Jan-06 15:04:05 MST | 2006-01-02 15:04:05 +0000 MST | -| Mon, 02 Jan 2006 15:04:05 MST | 2006-01-02 15:04:05 +0000 MST | -| Tue, 11 Jul 2017 16:28:13 +0200 (CEST) | 2017-07-11 16:28:13 +0200 +0200 | -| Mon, 02 Jan 2006 15:04:05 -0700 | 2006-01-02 15:04:05 -0700 -0700 | -| Mon 30 Sep 2018 09:09:09 PM UTC | 2018-09-30 21:09:09 +0000 UTC | -| Mon Aug 10 15:44:11 UTC+0100 2015 | 2015-08-10 15:44:11 +0000 UTC | -| Thu, 4 Jan 2018 17:53:36 +0000 | 2018-01-04 17:53:36 +0000 UTC | -| Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) | 2015-07-03 18:04:07 +0100 GMT | -| Sun, 3 Jan 2021 00:12:23 +0800 (GMT+08:00) | 2021-01-03 00:12:23 +0800 +0800 | -| September 17, 2012 10:09am | 2012-09-17 10:09:00 +0000 UTC | -| September 17, 2012 at 10:09am PST-08 | 2012-09-17 10:09:00 -0800 PST | -| September 17, 2012, 10:10:09 | 2012-09-17 10:10:09 +0000 UTC | -| October 7, 1970 | 1970-10-07 00:00:00 +0000 UTC | -| October 7th, 1970 | 1970-10-07 00:00:00 +0000 UTC | -| 12 Feb 2006, 19:17 | 2006-02-12 19:17:00 +0000 UTC | -| 12 Feb 2006 19:17 | 2006-02-12 19:17:00 +0000 UTC | -| 14 May 2019 19:11:40.164 | 2019-05-14 19:11:40.164 +0000 UTC | -| 7 oct 70 | 1970-10-07 00:00:00 +0000 UTC | -| 7 oct 1970 | 1970-10-07 00:00:00 +0000 UTC | -| 03 February 2013 | 2013-02-03 00:00:00 +0000 UTC | -| 1 July 2013 | 2013-07-01 00:00:00 +0000 UTC | -| 2013-Feb-03 | 2013-02-03 00:00:00 +0000 UTC | -| 06/Jan/2008:15:04:05 -0700 | 2008-01-06 15:04:05 -0700 -0700 | -| 06/Jan/2008 15:04:05 -0700 | 2008-01-06 15:04:05 -0700 -0700 | -| 3/31/2014 | 2014-03-31 00:00:00 +0000 UTC | -| 03/31/2014 | 2014-03-31 00:00:00 +0000 UTC | -| 08/21/71 | 1971-08-21 00:00:00 +0000 UTC | -| 8/1/71 | 1971-08-01 00:00:00 +0000 UTC | -| 4/8/2014 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 04/08/2014 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 4/8/14 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 04/2/2014 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 8/8/1965 12:00:00 AM | 1965-08-08 00:00:00 +0000 UTC | -| 8/8/1965 01:00:01 PM | 1965-08-08 13:00:01 +0000 UTC | -| 8/8/1965 01:00 PM | 1965-08-08 13:00:00 +0000 UTC | -| 8/8/1965 1:00 PM | 1965-08-08 13:00:00 +0000 UTC | -| 8/8/1965 12:00 AM | 1965-08-08 00:00:00 +0000 UTC | -| 4/02/2014 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 03/19/2012 10:11:59 | 2012-03-19 10:11:59 +0000 UTC | -| 03/19/2012 10:11:59.3186369 | 2012-03-19 10:11:59.3186369 +0000 UTC | -| 2014/3/31 | 2014-03-31 00:00:00 +0000 UTC | -| 2014/03/31 | 2014-03-31 00:00:00 +0000 UTC | -| 2014/4/8 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 2014/04/08 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 2014/04/2 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 2014/4/02 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 2012/03/19 10:11:59 | 2012-03-19 10:11:59 +0000 UTC | -| 2012/03/19 10:11:59.3186369 | 2012-03-19 10:11:59.3186369 +0000 UTC | -| 2014:3:31 | 2014-03-31 00:00:00 +0000 UTC | -| 2014:03:31 | 2014-03-31 00:00:00 +0000 UTC | -| 2014:4:8 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 2014:04:08 22:05 | 2014-04-08 22:05:00 +0000 UTC | -| 2014:04:2 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 2014:4:02 03:00:51 | 2014-04-02 03:00:51 +0000 UTC | -| 2012:03:19 10:11:59 | 2012-03-19 10:11:59 +0000 UTC | -| 2012:03:19 10:11:59.3186369 | 2012-03-19 10:11:59.3186369 +0000 UTC | -| 2014年04月08日 | 2014-04-08 00:00:00 +0000 UTC | -| 2006-01-02T15:04:05+0000 | 2006-01-02 15:04:05 +0000 UTC | -| 2009-08-12T22:15:09-07:00 | 2009-08-12 22:15:09 -0700 -0700 | -| 2009-08-12T22:15:09 | 2009-08-12 22:15:09 +0000 UTC | -| 2009-08-12T22:15:09.988 | 2009-08-12 22:15:09.988 +0000 UTC | -| 2009-08-12T22:15:09Z | 2009-08-12 22:15:09 +0000 UTC | -| 2017-07-19T03:21:51:897+0100 | 2017-07-19 03:21:51.897 +0100 +0100 | -| 2019-05-29T08:41-04 | 2019-05-29 08:41:00 -0400 -0400 | -| 2014-04-26 17:24:37.3186369 | 2014-04-26 17:24:37.3186369 +0000 UTC | -| 2012-08-03 18:31:59.257000000 | 2012-08-03 18:31:59.257 +0000 UTC | -| 2014-04-26 17:24:37.123 | 2014-04-26 17:24:37.123 +0000 UTC | -| 2013-04-01 22:43 | 2013-04-01 22:43:00 +0000 UTC | -| 2013-04-01 22:43:22 | 2013-04-01 22:43:22 +0000 UTC | -| 2014-12-16 06:20:00 UTC | 2014-12-16 06:20:00 +0000 UTC | -| 2014-12-16 06:20:00 GMT | 2014-12-16 06:20:00 +0000 UTC | -| 2014-04-26 05:24:37 PM | 2014-04-26 17:24:37 +0000 UTC | -| 2014-04-26 13:13:43 +0800 | 2014-04-26 13:13:43 +0800 +0800 | -| 2014-04-26 13:13:43 +0800 +08 | 2014-04-26 13:13:43 +0800 +0800 | -| 2014-04-26 13:13:44 +09:00 | 2014-04-26 13:13:44 +0900 +0900 | -| 2012-08-03 18:31:59.257000000 +0000 UTC | 2012-08-03 18:31:59.257 +0000 UTC | -| 2015-09-30 18:48:56.35272715 +0000 UTC | 2015-09-30 18:48:56.35272715 +0000 UTC | -| 2015-02-18 00:12:00 +0000 GMT | 2015-02-18 00:12:00 +0000 UTC | -| 2015-02-18 00:12:00 +0000 UTC | 2015-02-18 00:12:00 +0000 UTC | -| 2015-02-08 03:02:00 +0300 MSK m=+0.000000001 | 2015-02-08 03:02:00 +0300 +0300 | -| 2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001 | 2015-02-08 03:02:00.001 +0300 +0300 | -| 2017-07-19 03:21:51+00:00 | 2017-07-19 03:21:51 +0000 UTC | -| 2014-04-26 | 2014-04-26 00:00:00 +0000 UTC | -| 2014-04 | 2014-04-01 00:00:00 +0000 UTC | -| 2014 | 2014-01-01 00:00:00 +0000 UTC | -| 2014-05-11 08:20:13,787 | 2014-05-11 08:20:13.787 +0000 UTC | -| 2020-07-20+08:00 | 2020-07-20 00:00:00 +0800 +0800 | -| 3.31.2014 | 2014-03-31 00:00:00 +0000 UTC | -| 03.31.2014 | 2014-03-31 00:00:00 +0000 UTC | -| 08.21.71 | 1971-08-21 00:00:00 +0000 UTC | -| 2014.03 | 2014-03-01 00:00:00 +0000 UTC | -| 2014.03.30 | 2014-03-30 00:00:00 +0000 UTC | -| 20140601 | 2014-06-01 00:00:00 +0000 UTC | -| 20140722105203 | 2014-07-22 10:52:03 +0000 UTC | -| 171113 14:14:20 | 2017-11-13 14:14:20 +0000 UTC | -| 1332151919 | 2012-03-19 10:11:59 +0000 UTC | -| 1384216367189 | 2013-11-12 00:32:47.189 +0000 UTC | -| 1384216367111222 | 2013-11-12 00:32:47.111222 +0000 UTC | -| 1384216367111222333 | 2013-11-12 00:32:47.111222333 +0000 UTC | -+-------------------------------------------------------+-----------------------------------------+ -*/ - -``` diff --git a/vendor/github.com/araddon/dateparse/parseany.go b/vendor/github.com/araddon/dateparse/parseany.go deleted file mode 100644 index b9668b2..0000000 --- a/vendor/github.com/araddon/dateparse/parseany.go +++ /dev/null @@ -1,2189 +0,0 @@ -// Package dateparse parses date-strings without knowing the format -// in advance, using a fast lex based approach to eliminate shotgun -// attempts. It leans towards US style dates when there is a conflict. -package dateparse - -import ( - "fmt" - "strconv" - "strings" - "time" - "unicode" - "unicode/utf8" -) - -// func init() { -// gou.SetupLogging("debug") -// gou.SetColorOutput() -// } - -var days = []string{ - "mon", - "tue", - "wed", - "thu", - "fri", - "sat", - "sun", - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday", -} - -var months = []string{ - "january", - "february", - "march", - "april", - "may", - "june", - "july", - "august", - "september", - "october", - "november", - "december", -} - -type dateState uint8 -type timeState uint8 - -const ( - dateStart dateState = iota // 0 - dateDigit - dateDigitSt - dateYearDash - dateYearDashAlphaDash - dateYearDashDash - dateYearDashDashWs // 5 - dateYearDashDashT - dateYearDashDashOffset - dateDigitDash - dateDigitDashAlpha - dateDigitDashAlphaDash // 10 - dateDigitDot - dateDigitDotDot - dateDigitSlash - dateDigitYearSlash - dateDigitSlashAlpha // 15 - dateDigitColon - dateDigitChineseYear - dateDigitChineseYearWs - dateDigitWs - dateDigitWsMoYear // 20 - dateDigitWsMolong - dateAlpha - dateAlphaWs - dateAlphaWsDigit - dateAlphaWsDigitMore // 25 - dateAlphaWsDigitMoreWs - dateAlphaWsDigitMoreWsYear - dateAlphaWsMonth - dateAlphaWsDigitYearmaybe - dateAlphaWsMonthMore - dateAlphaWsMonthSuffix - dateAlphaWsMore - dateAlphaWsAtTime - dateAlphaWsAlpha - dateAlphaWsAlphaYearmaybe // 35 - dateAlphaPeriodWsDigit - dateWeekdayComma - dateWeekdayAbbrevComma -) -const ( - // Time state - timeIgnore timeState = iota // 0 - timeStart - timeWs - timeWsAlpha - timeWsAlphaWs - timeWsAlphaZoneOffset // 5 - timeWsAlphaZoneOffsetWs - timeWsAlphaZoneOffsetWsYear - timeWsAlphaZoneOffsetWsExtra - timeWsAMPMMaybe - timeWsAMPM // 10 - timeWsOffset - timeWsOffsetWs // 12 - timeWsOffsetColonAlpha - timeWsOffsetColon - timeWsYear // 15 - timeOffset - timeOffsetColon - timeAlpha - timePeriod - timePeriodOffset // 20 - timePeriodOffsetColon - timePeriodOffsetColonWs - timePeriodWs - timePeriodWsAlpha - timePeriodWsOffset // 25 - timePeriodWsOffsetWs - timePeriodWsOffsetWsAlpha - timePeriodWsOffsetColon - timePeriodWsOffsetColonAlpha - timeZ - timeZDigit -) - -var ( - // ErrAmbiguousMMDD for date formats such as 04/02/2014 the mm/dd vs dd/mm are - // ambiguous, so it is an error for strict parse rules. - ErrAmbiguousMMDD = fmt.Errorf("This date has ambiguous mm/dd vs dd/mm type format") -) - -func unknownErr(datestr string) error { - return fmt.Errorf("Could not find format for %q", datestr) -} - -// ParseAny parse an unknown date format, detect the layout. -// Normal parse. Equivalent Timezone rules as time.Parse(). -// NOTE: please see readme on mmdd vs ddmm ambiguous dates. -func ParseAny(datestr string, opts ...ParserOption) (time.Time, error) { - p, err := parseTime(datestr, nil, opts...) - if err != nil { - return time.Time{}, err - } - return p.parse() -} - -// ParseIn with Location, equivalent to time.ParseInLocation() timezone/offset -// rules. Using location arg, if timezone/offset info exists in the -// datestring, it uses the given location rules for any zone interpretation. -// That is, MST means one thing when using America/Denver and something else -// in other locations. -func ParseIn(datestr string, loc *time.Location, opts ...ParserOption) (time.Time, error) { - p, err := parseTime(datestr, loc, opts...) - if err != nil { - return time.Time{}, err - } - return p.parse() -} - -// ParseLocal Given an unknown date format, detect the layout, -// using time.Local, parse. -// -// Set Location to time.Local. Same as ParseIn Location but lazily uses -// the global time.Local variable for Location argument. -// -// denverLoc, _ := time.LoadLocation("America/Denver") -// time.Local = denverLoc -// -// t, err := dateparse.ParseLocal("3/1/2014") -// -// Equivalent to: -// -// t, err := dateparse.ParseIn("3/1/2014", denverLoc) -// -func ParseLocal(datestr string, opts ...ParserOption) (time.Time, error) { - p, err := parseTime(datestr, time.Local, opts...) - if err != nil { - return time.Time{}, err - } - return p.parse() -} - -// MustParse parse a date, and panic if it can't be parsed. Used for testing. -// Not recommended for most use-cases. -func MustParse(datestr string, opts ...ParserOption) time.Time { - p, err := parseTime(datestr, nil, opts...) - if err != nil { - panic(err.Error()) - } - t, err := p.parse() - if err != nil { - panic(err.Error()) - } - return t -} - -// ParseFormat parse's an unknown date-time string and returns a layout -// string that can parse this (and exact same format) other date-time strings. -// -// layout, err := dateparse.ParseFormat("2013-02-01 00:00:00") -// // layout = "2006-01-02 15:04:05" -// -func ParseFormat(datestr string, opts ...ParserOption) (string, error) { - p, err := parseTime(datestr, nil, opts...) - if err != nil { - return "", err - } - _, err = p.parse() - if err != nil { - return "", err - } - return string(p.format), nil -} - -// ParseStrict parse an unknown date format. IF the date is ambigous -// mm/dd vs dd/mm then return an error. These return errors: 3.3.2014 , 8/8/71 etc -func ParseStrict(datestr string, opts ...ParserOption) (time.Time, error) { - p, err := parseTime(datestr, nil, opts...) - if err != nil { - return time.Time{}, err - } - if p.ambiguousMD { - return time.Time{}, ErrAmbiguousMMDD - } - return p.parse() -} - -func parseTime(datestr string, loc *time.Location, opts ...ParserOption) (p *parser, err error) { - - p = newParser(datestr, loc, opts...) - if p.retryAmbiguousDateWithSwap { - // month out of range signifies that a day/month swap is the correct solution to an ambiguous date - // this is because it means that a day is being interpreted as a month and overflowing the valid value for that - // by retrying in this case, we can fix a common situation with no assumptions - defer func() { - if p != nil && p.ambiguousMD { - // if it errors out with the following error, swap before we - // get out of this function to reduce scope it needs to be applied on - _, err := p.parse() - if err != nil && strings.Contains(err.Error(), "month out of range") { - // create the option to reverse the preference - preferMonthFirst := PreferMonthFirst(!p.preferMonthFirst) - // turn off the retry to avoid endless recursion - retryAmbiguousDateWithSwap := RetryAmbiguousDateWithSwap(false) - modifiedOpts := append(opts, preferMonthFirst, retryAmbiguousDateWithSwap) - p, err = parseTime(datestr, time.Local, modifiedOpts...) - } - } - - }() - } - - i := 0 - - // General strategy is to read rune by rune through the date looking for - // certain hints of what type of date we are dealing with. - // Hopefully we only need to read about 5 or 6 bytes before - // we figure it out and then attempt a parse -iterRunes: - for ; i < len(datestr); i++ { - //r := rune(datestr[i]) - r, bytesConsumed := utf8.DecodeRuneInString(datestr[i:]) - if bytesConsumed > 1 { - i += (bytesConsumed - 1) - } - - // gou.Debugf("i=%d r=%s state=%d %s", i, string(r), p.stateDate, datestr) - switch p.stateDate { - case dateStart: - if unicode.IsDigit(r) { - p.stateDate = dateDigit - } else if unicode.IsLetter(r) { - p.stateDate = dateAlpha - } else { - return nil, unknownErr(datestr) - } - case dateDigit: - - switch r { - case '-', '\u2212': - // 2006-01-02 - // 2013-Feb-03 - // 13-Feb-03 - // 29-Jun-2016 - if i == 4 { - p.stateDate = dateYearDash - p.yeari = 0 - p.yearlen = i - p.moi = i + 1 - p.set(0, "2006") - } else { - p.stateDate = dateDigitDash - } - case '/': - // 08/May/2005 - // 03/31/2005 - // 2014/02/24 - p.stateDate = dateDigitSlash - if i == 4 { - // 2014/02/24 - Year first / - p.yearlen = i // since it was start of datestr, i=len - p.moi = i + 1 - p.setYear() - p.stateDate = dateDigitYearSlash - } else { - // Either Ambiguous dd/mm vs mm/dd OR dd/month/yy - // 08/May/2005 - // 03/31/2005 - // 31/03/2005 - if i+2 < len(p.datestr) && unicode.IsLetter(rune(datestr[i+1])) { - // 08/May/2005 - p.stateDate = dateDigitSlashAlpha - p.moi = i + 1 - p.daylen = 2 - p.dayi = 0 - p.setDay() - continue - } - // Ambiguous dd/mm vs mm/dd the bane of date-parsing - // 03/31/2005 - // 31/03/2005 - p.ambiguousMD = true - if p.preferMonthFirst { - if p.molen == 0 { - // 03/31/2005 - p.molen = i - p.setMonth() - p.dayi = i + 1 - } - } else { - if p.daylen == 0 { - p.daylen = i - p.setDay() - p.moi = i + 1 - } - } - - } - - case ':': - // 03/31/2005 - // 2014/02/24 - p.stateDate = dateDigitColon - if i == 4 { - p.yearlen = i - p.moi = i + 1 - p.setYear() - } else { - p.ambiguousMD = true - if p.preferMonthFirst { - if p.molen == 0 { - p.molen = i - p.setMonth() - p.dayi = i + 1 - } - } - } - - case '.': - // 3.31.2014 - // 08.21.71 - // 2014.05 - p.stateDate = dateDigitDot - if i == 4 { - p.yearlen = i - p.moi = i + 1 - p.setYear() - } else { - p.ambiguousMD = true - p.moi = 0 - p.molen = i - p.setMonth() - p.dayi = i + 1 - } - - case ' ': - // 18 January 2018 - // 8 January 2018 - // 8 jan 2018 - // 02 Jan 2018 23:59 - // 02 Jan 2018 23:59:34 - // 12 Feb 2006, 19:17 - // 12 Feb 2006, 19:17:22 - if i == 6 { - p.stateDate = dateDigitSt - } else { - p.stateDate = dateDigitWs - p.dayi = 0 - p.daylen = i - } - case '年': - // Chinese Year - p.stateDate = dateDigitChineseYear - case ',': - return nil, unknownErr(datestr) - default: - continue - } - p.part1Len = i - - case dateDigitSt: - p.set(0, "060102") - i = i - 1 - p.stateTime = timeStart - break iterRunes - case dateYearDash: - // dateYearDashDashT - // 2006-01-02T15:04:05Z07:00 - // 2020-08-17T17:00:00:000+0100 - // dateYearDashDashWs - // 2013-04-01 22:43:22 - // dateYearDashAlphaDash - // 2013-Feb-03 - switch r { - case '-': - p.molen = i - p.moi - p.dayi = i + 1 - p.stateDate = dateYearDashDash - p.setMonth() - default: - if unicode.IsLetter(r) { - p.stateDate = dateYearDashAlphaDash - } - } - - case dateYearDashDash: - // dateYearDashDashT - // 2006-01-02T15:04:05Z07:00 - // dateYearDashDashWs - // 2013-04-01 22:43:22 - // dateYearDashDashOffset - // 2020-07-20+00:00 - switch r { - case '+', '-': - p.offseti = i - p.daylen = i - p.dayi - p.stateDate = dateYearDashDashOffset - p.setDay() - case ' ': - p.daylen = i - p.dayi - p.stateDate = dateYearDashDashWs - p.stateTime = timeStart - p.setDay() - break iterRunes - case 'T': - p.daylen = i - p.dayi - p.stateDate = dateYearDashDashT - p.stateTime = timeStart - p.setDay() - break iterRunes - } - - case dateYearDashDashT: - // dateYearDashDashT - // 2006-01-02T15:04:05Z07:00 - // 2020-08-17T17:00:00:000+0100 - - case dateYearDashDashOffset: - // 2020-07-20+00:00 - switch r { - case ':': - p.set(p.offseti, "-07:00") - // case ' ': - // return nil, unknownErr(datestr) - } - - case dateYearDashAlphaDash: - // 2013-Feb-03 - switch r { - case '-': - p.molen = i - p.moi - p.set(p.moi, "Jan") - p.dayi = i + 1 - } - case dateDigitDash: - // 13-Feb-03 - // 29-Jun-2016 - if unicode.IsLetter(r) { - p.stateDate = dateDigitDashAlpha - p.moi = i - } else { - return nil, unknownErr(datestr) - } - case dateDigitDashAlpha: - // 13-Feb-03 - // 28-Feb-03 - // 29-Jun-2016 - switch r { - case '-': - p.molen = i - p.moi - p.set(p.moi, "Jan") - p.yeari = i + 1 - p.stateDate = dateDigitDashAlphaDash - } - - case dateDigitDashAlphaDash: - // 13-Feb-03 ambiguous - // 28-Feb-03 ambiguous - // 29-Jun-2016 dd-month(alpha)-yyyy - switch r { - case ' ': - // we need to find if this was 4 digits, aka year - // or 2 digits which makes it ambiguous year/day - length := i - (p.moi + p.molen + 1) - if length == 4 { - p.yearlen = 4 - p.set(p.yeari, "2006") - // We now also know that part1 was the day - p.dayi = 0 - p.daylen = p.part1Len - p.setDay() - } else if length == 2 { - // We have no idea if this is - // yy-mon-dd OR dd-mon-yy - // - // We are going to ASSUME (bad, bad) that it is dd-mon-yy which is a horible assumption - p.ambiguousMD = true - p.yearlen = 2 - p.set(p.yeari, "06") - // We now also know that part1 was the day - p.dayi = 0 - p.daylen = p.part1Len - p.setDay() - } - p.stateTime = timeStart - break iterRunes - } - - case dateDigitYearSlash: - // 2014/07/10 06:55:38.156283 - // I honestly don't know if this format ever shows up as yyyy/ - - switch r { - case ' ', ':': - p.stateTime = timeStart - if p.daylen == 0 { - p.daylen = i - p.dayi - p.setDay() - } - break iterRunes - case '/': - if p.molen == 0 { - p.molen = i - p.moi - p.setMonth() - p.dayi = i + 1 - } - } - - case dateDigitSlashAlpha: - // 06/May/2008 - - switch r { - case '/': - // | - // 06/May/2008 - if p.molen == 0 { - p.set(p.moi, "Jan") - p.yeari = i + 1 - } - // We aren't breaking because we are going to re-use this case - // to find where the date starts, and possible time begins - case ' ', ':': - p.stateTime = timeStart - if p.yearlen == 0 { - p.yearlen = i - p.yeari - p.setYear() - } - break iterRunes - } - - case dateDigitSlash: - // 03/19/2012 10:11:59 - // 04/2/2014 03:00:37 - // 3/1/2012 10:11:59 - // 4/8/2014 22:05 - // 3/1/2014 - // 10/13/2014 - // 01/02/2006 - // 1/2/06 - - switch r { - case '/': - // This is the 2nd / so now we should know start pts of all of the dd, mm, yy - if p.preferMonthFirst { - if p.daylen == 0 { - p.daylen = i - p.dayi - p.setDay() - p.yeari = i + 1 - } - } else { - if p.molen == 0 { - p.molen = i - p.moi - p.setMonth() - p.yeari = i + 1 - } - } - // Note no break, we are going to pass by and re-enter this dateDigitSlash - // and look for ending (space) or not (just date) - case ' ': - p.stateTime = timeStart - if p.yearlen == 0 { - p.yearlen = i - p.yeari - p.setYear() - } - break iterRunes - } - - case dateDigitColon: - // 2014:07:10 06:55:38.156283 - // 03:19:2012 10:11:59 - // 04:2:2014 03:00:37 - // 3:1:2012 10:11:59 - // 4:8:2014 22:05 - // 3:1:2014 - // 10:13:2014 - // 01:02:2006 - // 1:2:06 - - switch r { - case ' ': - p.stateTime = timeStart - if p.yearlen == 0 { - p.yearlen = i - p.yeari - p.setYear() - } else if p.daylen == 0 { - p.daylen = i - p.dayi - p.setDay() - } - break iterRunes - case ':': - if p.yearlen > 0 { - // 2014:07:10 06:55:38.156283 - if p.molen == 0 { - p.molen = i - p.moi - p.setMonth() - p.dayi = i + 1 - } - } else if p.preferMonthFirst { - if p.daylen == 0 { - p.daylen = i - p.dayi - p.setDay() - p.yeari = i + 1 - } - } - } - - case dateDigitWs: - // 18 January 2018 - // 8 January 2018 - // 8 jan 2018 - // 1 jan 18 - // 02 Jan 2018 23:59 - // 02 Jan 2018 23:59:34 - // 12 Feb 2006, 19:17 - // 12 Feb 2006, 19:17:22 - switch r { - case ' ': - p.yeari = i + 1 - //p.yearlen = 4 - p.dayi = 0 - p.daylen = p.part1Len - p.setDay() - p.stateTime = timeStart - if i > p.daylen+len(" Sep") { // November etc - // If len greather than space + 3 it must be full month - p.stateDate = dateDigitWsMolong - } else { - // If len=3, the might be Feb or May? Ie ambigous abbreviated but - // we can parse may with either. BUT, that means the - // format may not be correct? - // mo := strings.ToLower(datestr[p.daylen+1 : i]) - p.moi = p.daylen + 1 - p.molen = i - p.moi - p.set(p.moi, "Jan") - p.stateDate = dateDigitWsMoYear - } - } - - case dateDigitWsMoYear: - // 8 jan 2018 - // 02 Jan 2018 23:59 - // 02 Jan 2018 23:59:34 - // 12 Feb 2006, 19:17 - // 12 Feb 2006, 19:17:22 - switch r { - case ',': - p.yearlen = i - p.yeari - p.setYear() - i++ - break iterRunes - case ' ': - p.yearlen = i - p.yeari - p.setYear() - break iterRunes - } - case dateDigitWsMolong: - // 18 January 2018 - // 8 January 2018 - - case dateDigitChineseYear: - // dateDigitChineseYear - // 2014年04月08日 - // weekday %Y年%m月%e日 %A %I:%M %p - // 2013年07月18日 星期四 10:27 上午 - if r == ' ' { - p.stateDate = dateDigitChineseYearWs - break - } - case dateDigitDot: - // This is the 2nd period - // 3.31.2014 - // 08.21.71 - // 2014.05 - // 2018.09.30 - if r == '.' { - if p.moi == 0 { - // 3.31.2014 - p.daylen = i - p.dayi - p.yeari = i + 1 - p.setDay() - p.stateDate = dateDigitDotDot - } else { - // 2018.09.30 - //p.molen = 2 - p.molen = i - p.moi - p.dayi = i + 1 - p.setMonth() - p.stateDate = dateDigitDotDot - } - } - case dateDigitDotDot: - // iterate all the way through - case dateAlpha: - // dateAlphaWS - // Mon Jan _2 15:04:05 2006 - // Mon Jan _2 15:04:05 MST 2006 - // Mon Jan 02 15:04:05 -0700 2006 - // Mon Aug 10 15:44:11 UTC+0100 2015 - // Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) - // dateAlphaWSDigit - // May 8, 2009 5:57:51 PM - // oct 1, 1970 - // dateAlphaWsMonth - // April 8, 2009 - // dateAlphaWsMore - // dateAlphaWsAtTime - // January 02, 2006 at 3:04pm MST-07 - // - // dateAlphaPeriodWsDigit - // oct. 1, 1970 - // dateWeekdayComma - // Monday, 02 Jan 2006 15:04:05 MST - // Monday, 02-Jan-06 15:04:05 MST - // Monday, 02 Jan 2006 15:04:05 -0700 - // Monday, 02 Jan 2006 15:04:05 +0100 - // dateWeekdayAbbrevComma - // Mon, 02 Jan 2006 15:04:05 MST - // Mon, 02 Jan 2006 15:04:05 -0700 - // Thu, 13 Jul 2017 08:58:40 +0100 - // Tue, 11 Jul 2017 16:28:13 +0200 (CEST) - // Mon, 02-Jan-06 15:04:05 MST - switch { - case r == ' ': - // X - // April 8, 2009 - if i > 3 { - // Check to see if the alpha is name of month? or Day? - month := strings.ToLower(datestr[0:i]) - if isMonthFull(month) { - p.fullMonth = month - // len(" 31, 2018") = 9 - if len(datestr[i:]) < 10 { - // April 8, 2009 - p.stateDate = dateAlphaWsMonth - } else { - p.stateDate = dateAlphaWsMore - } - p.dayi = i + 1 - break - } - - } else { - // This is possibly ambiguous? May will parse as either though. - // So, it could return in-correct format. - // dateAlphaWs - // May 05, 2005, 05:05:05 - // May 05 2005, 05:05:05 - // Jul 05, 2005, 05:05:05 - // May 8 17:57:51 2009 - // May 8 17:57:51 2009 - // skip & return to dateStart - // Tue 05 May 2020, 05:05:05 - // Mon Jan 2 15:04:05 2006 - - maybeDay := strings.ToLower(datestr[0:i]) - if isDay(maybeDay) { - // using skip throws off indices used by other code; saner to restart - return parseTime(datestr[i+1:], loc) - } - p.stateDate = dateAlphaWs - } - - case r == ',': - // Mon, 02 Jan 2006 - - if i == 3 { - p.stateDate = dateWeekdayAbbrevComma - p.set(0, "Mon") - } else { - p.stateDate = dateWeekdayComma - p.skip = i + 2 - i++ - // TODO: lets just make this "skip" as we don't need - // the mon, monday, they are all superfelous and not needed - // just lay down the skip, no need to fill and then skip - } - case r == '.': - // sept. 28, 2017 - // jan. 28, 2017 - p.stateDate = dateAlphaPeriodWsDigit - if i == 3 { - p.molen = i - p.set(0, "Jan") - } else if i == 4 { - // gross - datestr = datestr[0:i-1] + datestr[i:] - return parseTime(datestr, loc, opts...) - } else { - return nil, unknownErr(datestr) - } - } - - case dateAlphaWs: - // dateAlphaWsAlpha - // Mon Jan _2 15:04:05 2006 - // Mon Jan _2 15:04:05 MST 2006 - // Mon Jan 02 15:04:05 -0700 2006 - // Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) - // Mon Aug 10 15:44:11 UTC+0100 2015 - // dateAlphaWsDigit - // May 8, 2009 5:57:51 PM - // May 8 2009 5:57:51 PM - // May 8 17:57:51 2009 - // May 8 17:57:51 2009 - // May 08 17:57:51 2009 - // oct 1, 1970 - // oct 7, '70 - switch { - case unicode.IsLetter(r): - p.set(0, "Mon") - p.stateDate = dateAlphaWsAlpha - p.set(i, "Jan") - case unicode.IsDigit(r): - p.set(0, "Jan") - p.stateDate = dateAlphaWsDigit - p.dayi = i - } - - case dateAlphaWsDigit: - // May 8, 2009 5:57:51 PM - // May 8 2009 5:57:51 PM - // oct 1, 1970 - // oct 7, '70 - // oct. 7, 1970 - // May 8 17:57:51 2009 - // May 8 17:57:51 2009 - // May 08 17:57:51 2009 - if r == ',' { - p.daylen = i - p.dayi - p.setDay() - p.stateDate = dateAlphaWsDigitMore - } else if r == ' ' { - p.daylen = i - p.dayi - p.setDay() - p.yeari = i + 1 - p.stateDate = dateAlphaWsDigitYearmaybe - p.stateTime = timeStart - } else if unicode.IsLetter(r) { - p.stateDate = dateAlphaWsMonthSuffix - i-- - } - case dateAlphaWsDigitYearmaybe: - // x - // May 8 2009 5:57:51 PM - // May 8 17:57:51 2009 - // May 8 17:57:51 2009 - // May 08 17:57:51 2009 - // Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) - if r == ':' { - // Guessed wrong; was not a year - i = i - 3 - p.stateDate = dateAlphaWsDigit - p.yeari = 0 - break iterRunes - } else if r == ' ' { - // must be year format, not 15:04 - p.yearlen = i - p.yeari - p.setYear() - break iterRunes - } - case dateAlphaWsDigitMore: - // x - // May 8, 2009 5:57:51 PM - // May 05, 2005, 05:05:05 - // May 05 2005, 05:05:05 - // oct 1, 1970 - // oct 7, '70 - if r == ' ' { - p.yeari = i + 1 - p.stateDate = dateAlphaWsDigitMoreWs - } - case dateAlphaWsDigitMoreWs: - // x - // May 8, 2009 5:57:51 PM - // May 05, 2005, 05:05:05 - // oct 1, 1970 - // oct 7, '70 - switch r { - case '\'': - p.yeari = i + 1 - case ' ', ',': - // x - // May 8, 2009 5:57:51 PM - // x - // May 8, 2009, 5:57:51 PM - p.stateDate = dateAlphaWsDigitMoreWsYear - p.yearlen = i - p.yeari - p.setYear() - p.stateTime = timeStart - break iterRunes - } - - case dateAlphaWsMonth: - // April 8, 2009 - // April 8 2009 - switch r { - case ' ', ',': - // x - // June 8, 2009 - // x - // June 8 2009 - if p.daylen == 0 { - p.daylen = i - p.dayi - p.setDay() - } - case 's', 'S', 'r', 'R', 't', 'T', 'n', 'N': - // st, rd, nd, st - i-- - p.stateDate = dateAlphaWsMonthSuffix - default: - if p.daylen > 0 && p.yeari == 0 { - p.yeari = i - } - } - case dateAlphaWsMonthMore: - // X - // January 02, 2006, 15:04:05 - // January 02 2006, 15:04:05 - // January 02, 2006 15:04:05 - // January 02 2006 15:04:05 - switch r { - case ',': - p.yearlen = i - p.yeari - p.setYear() - p.stateTime = timeStart - i++ - break iterRunes - case ' ': - p.yearlen = i - p.yeari - p.setYear() - p.stateTime = timeStart - break iterRunes - } - case dateAlphaWsMonthSuffix: - // x - // April 8th, 2009 - // April 8th 2009 - switch r { - case 't', 'T': - if p.nextIs(i, 'h') || p.nextIs(i, 'H') { - if len(datestr) > i+2 { - return parseTime(fmt.Sprintf("%s%s", p.datestr[0:i], p.datestr[i+2:]), loc, opts...) - } - } - case 'n', 'N': - if p.nextIs(i, 'd') || p.nextIs(i, 'D') { - if len(datestr) > i+2 { - return parseTime(fmt.Sprintf("%s%s", p.datestr[0:i], p.datestr[i+2:]), loc, opts...) - } - } - case 's', 'S': - if p.nextIs(i, 't') || p.nextIs(i, 'T') { - if len(datestr) > i+2 { - return parseTime(fmt.Sprintf("%s%s", p.datestr[0:i], p.datestr[i+2:]), loc, opts...) - } - } - case 'r', 'R': - if p.nextIs(i, 'd') || p.nextIs(i, 'D') { - if len(datestr) > i+2 { - return parseTime(fmt.Sprintf("%s%s", p.datestr[0:i], p.datestr[i+2:]), loc, opts...) - } - } - } - case dateAlphaWsMore: - // January 02, 2006, 15:04:05 - // January 02 2006, 15:04:05 - // January 2nd, 2006, 15:04:05 - // January 2nd 2006, 15:04:05 - // September 17, 2012 at 5:00pm UTC-05 - switch { - case r == ',': - // x - // January 02, 2006, 15:04:05 - if p.nextIs(i, ' ') { - p.daylen = i - p.dayi - p.setDay() - p.yeari = i + 2 - p.stateDate = dateAlphaWsMonthMore - i++ - } - - case r == ' ': - // x - // January 02 2006, 15:04:05 - p.daylen = i - p.dayi - p.setDay() - p.yeari = i + 1 - p.stateDate = dateAlphaWsMonthMore - case unicode.IsDigit(r): - // XX - // January 02, 2006, 15:04:05 - continue - case unicode.IsLetter(r): - // X - // January 2nd, 2006, 15:04:05 - p.daylen = i - p.dayi - p.setDay() - p.stateDate = dateAlphaWsMonthSuffix - i-- - } - - case dateAlphaPeriodWsDigit: - // oct. 7, '70 - switch { - case r == ' ': - // continue - case unicode.IsDigit(r): - p.stateDate = dateAlphaWsDigit - p.dayi = i - default: - return p, unknownErr(datestr) - } - case dateWeekdayComma: - // Monday, 02 Jan 2006 15:04:05 MST - // Monday, 02 Jan 2006 15:04:05 -0700 - // Monday, 02 Jan 2006 15:04:05 +0100 - // Monday, 02-Jan-06 15:04:05 MST - if p.dayi == 0 { - p.dayi = i - } - switch r { - case ' ', '-': - if p.moi == 0 { - p.moi = i + 1 - p.daylen = i - p.dayi - p.setDay() - } else if p.yeari == 0 { - p.yeari = i + 1 - p.molen = i - p.moi - p.set(p.moi, "Jan") - } else { - p.stateTime = timeStart - break iterRunes - } - } - case dateWeekdayAbbrevComma: - // Mon, 02 Jan 2006 15:04:05 MST - // Mon, 02 Jan 2006 15:04:05 -0700 - // Thu, 13 Jul 2017 08:58:40 +0100 - // Thu, 4 Jan 2018 17:53:36 +0000 - // Tue, 11 Jul 2017 16:28:13 +0200 (CEST) - // Mon, 02-Jan-06 15:04:05 MST - switch r { - case ' ', '-': - if p.dayi == 0 { - p.dayi = i + 1 - } else if p.moi == 0 { - p.daylen = i - p.dayi - p.setDay() - p.moi = i + 1 - } else if p.yeari == 0 { - p.molen = i - p.moi - p.set(p.moi, "Jan") - p.yeari = i + 1 - } else { - p.yearlen = i - p.yeari - p.setYear() - p.stateTime = timeStart - break iterRunes - } - } - - default: - break iterRunes - } - } - p.coalesceDate(i) - if p.stateTime == timeStart { - // increment first one, since the i++ occurs at end of loop - if i < len(p.datestr) { - i++ - } - // ensure we skip any whitespace prefix - for ; i < len(datestr); i++ { - r := rune(datestr[i]) - if r != ' ' { - break - } - } - - iterTimeRunes: - for ; i < len(datestr); i++ { - r := rune(datestr[i]) - - // gou.Debugf("i=%d r=%s state=%d iterTimeRunes %s %s", i, string(r), p.stateTime, p.ds(), p.ts()) - - switch p.stateTime { - case timeStart: - // 22:43:22 - // 22:43 - // timeComma - // 08:20:13,787 - // timeWs - // 05:24:37 PM - // 06:20:00 UTC - // 06:20:00 UTC-05 - // 00:12:00 +0000 UTC - // 22:18:00 +0000 UTC m=+0.000000001 - // 15:04:05 -0700 - // 15:04:05 -07:00 - // 15:04:05 2008 - // timeOffset - // 03:21:51+00:00 - // 19:55:00+0100 - // timePeriod - // 17:24:37.3186369 - // 00:07:31.945167 - // 18:31:59.257000000 - // 00:00:00.000 - // timePeriodOffset - // 19:55:00.799+0100 - // timePeriodOffsetColon - // 15:04:05.999-07:00 - // timePeriodWs - // timePeriodWsOffset - // 00:07:31.945167 +0000 - // 00:00:00.000 +0000 - // timePeriodWsOffsetAlpha - // 00:07:31.945167 +0000 UTC - // 22:18:00.001 +0000 UTC m=+0.000000001 - // 00:00:00.000 +0000 UTC - // timePeriodWsAlpha - // 06:20:00.000 UTC - if p.houri == 0 { - p.houri = i - } - switch r { - case ',': - // hm, lets just swap out comma for period. for some reason go - // won't parse it. - // 2014-05-11 08:20:13,787 - ds := []byte(p.datestr) - ds[i] = '.' - return parseTime(string(ds), loc, opts...) - case '-', '+': - // 03:21:51+00:00 - p.stateTime = timeOffset - if p.seci == 0 { - // 22:18+0530 - p.minlen = i - p.mini - } else { - if p.seclen == 0 { - p.seclen = i - p.seci - } - if p.msi > 0 && p.mslen == 0 { - p.mslen = i - p.msi - } - } - p.offseti = i - case '.': - p.stateTime = timePeriod - p.seclen = i - p.seci - p.msi = i + 1 - case 'Z': - p.stateTime = timeZ - if p.seci == 0 { - p.minlen = i - p.mini - } else { - p.seclen = i - p.seci - } - // (Z)ulu time - p.loc = time.UTC - case 'a', 'A': - if p.nextIs(i, 't') || p.nextIs(i, 'T') { - // x - // September 17, 2012 at 5:00pm UTC-05 - i++ // skip t - if p.nextIs(i, ' ') { - // x - // September 17, 2012 at 5:00pm UTC-05 - i++ // skip ' - p.houri = 0 // reset hour - } - } else { - switch { - case r == 'a' && p.nextIs(i, 'm'): - p.coalesceTime(i) - p.set(i, "am") - case r == 'A' && p.nextIs(i, 'M'): - p.coalesceTime(i) - p.set(i, "PM") - } - } - - case 'p', 'P': - // Could be AM/PM - switch { - case r == 'p' && p.nextIs(i, 'm'): - p.coalesceTime(i) - p.set(i, "pm") - case r == 'P' && p.nextIs(i, 'M'): - p.coalesceTime(i) - p.set(i, "PM") - } - case ' ': - p.coalesceTime(i) - p.stateTime = timeWs - case ':': - if p.mini == 0 { - p.mini = i + 1 - p.hourlen = i - p.houri - } else if p.seci == 0 { - p.seci = i + 1 - p.minlen = i - p.mini - } else if p.seci > 0 { - // 18:31:59:257 ms uses colon, wtf - p.seclen = i - p.seci - p.set(p.seci, "05") - p.msi = i + 1 - - // gross, gross, gross. manipulating the datestr is horrible. - // https://github.com/araddon/dateparse/issues/117 - // Could not get the parsing to work using golang time.Parse() without - // replacing that colon with period. - p.set(i, ".") - datestr = datestr[0:i] + "." + datestr[i+1:] - p.datestr = datestr - } - } - case timeOffset: - // 19:55:00+0100 - // timeOffsetColon - // 15:04:05+07:00 - // 15:04:05-07:00 - if r == ':' { - p.stateTime = timeOffsetColon - } - case timeWs: - // timeWsAlpha - // 06:20:00 UTC - // 06:20:00 UTC-05 - // 15:44:11 UTC+0100 2015 - // 18:04:07 GMT+0100 (GMT Daylight Time) - // 17:57:51 MST 2009 - // timeWsAMPMMaybe - // 05:24:37 PM - // timeWsOffset - // 15:04:05 -0700 - // 00:12:00 +0000 UTC - // timeWsOffsetColon - // 15:04:05 -07:00 - // 17:57:51 -0700 2009 - // timeWsOffsetColonAlpha - // 00:12:00 +00:00 UTC - // timeWsYear - // 00:12:00 2008 - // timeZ - // 15:04:05.99Z - switch r { - case 'A', 'P': - // Could be AM/PM or could be PST or similar - p.tzi = i - p.stateTime = timeWsAMPMMaybe - case '+', '-': - p.offseti = i - p.stateTime = timeWsOffset - default: - if unicode.IsLetter(r) { - // 06:20:00 UTC - // 06:20:00 UTC-05 - // 15:44:11 UTC+0100 2015 - // 17:57:51 MST 2009 - p.tzi = i - p.stateTime = timeWsAlpha - } else if unicode.IsDigit(r) { - // 00:12:00 2008 - p.stateTime = timeWsYear - p.yeari = i - } - } - case timeWsAlpha: - // 06:20:00 UTC - // 06:20:00 UTC-05 - // timeWsAlphaWs - // 17:57:51 MST 2009 - // timeWsAlphaZoneOffset - // timeWsAlphaZoneOffsetWs - // timeWsAlphaZoneOffsetWsExtra - // 18:04:07 GMT+0100 (GMT Daylight Time) - // timeWsAlphaZoneOffsetWsYear - // 15:44:11 UTC+0100 2015 - switch r { - case '+', '-': - p.tzlen = i - p.tzi - if p.tzlen == 4 { - p.set(p.tzi, " MST") - } else if p.tzlen == 3 { - p.set(p.tzi, "MST") - } - p.stateTime = timeWsAlphaZoneOffset - p.offseti = i - case ' ': - // 17:57:51 MST 2009 - // 17:57:51 MST - p.tzlen = i - p.tzi - if p.tzlen == 4 { - p.set(p.tzi, " MST") - } else if p.tzlen == 3 { - p.set(p.tzi, "MST") - } - p.stateTime = timeWsAlphaWs - p.yeari = i + 1 - } - case timeWsAlphaWs: - // 17:57:51 MST 2009 - - case timeWsAlphaZoneOffset: - // 06:20:00 UTC-05 - // timeWsAlphaZoneOffset - // timeWsAlphaZoneOffsetWs - // timeWsAlphaZoneOffsetWsExtra - // 18:04:07 GMT+0100 (GMT Daylight Time) - // timeWsAlphaZoneOffsetWsYear - // 15:44:11 UTC+0100 2015 - switch r { - case ' ': - p.set(p.offseti, "-0700") - if p.yeari == 0 { - p.yeari = i + 1 - } - p.stateTime = timeWsAlphaZoneOffsetWs - } - case timeWsAlphaZoneOffsetWs: - // timeWsAlphaZoneOffsetWs - // timeWsAlphaZoneOffsetWsExtra - // 18:04:07 GMT+0100 (GMT Daylight Time) - // timeWsAlphaZoneOffsetWsYear - // 15:44:11 UTC+0100 2015 - if unicode.IsDigit(r) { - p.stateTime = timeWsAlphaZoneOffsetWsYear - } else { - p.extra = i - 1 - p.stateTime = timeWsAlphaZoneOffsetWsExtra - } - case timeWsAlphaZoneOffsetWsYear: - // 15:44:11 UTC+0100 2015 - if unicode.IsDigit(r) { - p.yearlen = i - p.yeari + 1 - if p.yearlen == 4 { - p.setYear() - } - } - case timeWsAMPMMaybe: - // timeWsAMPMMaybe - // timeWsAMPM - // 05:24:37 PM - // timeWsAlpha - // 00:12:00 PST - // 15:44:11 UTC+0100 2015 - if r == 'M' { - //return parse("2006-01-02 03:04:05 PM", datestr, loc) - p.stateTime = timeWsAMPM - p.set(i-1, "PM") - if p.hourlen == 2 { - p.set(p.houri, "03") - } else if p.hourlen == 1 { - p.set(p.houri, "3") - } - } else { - p.stateTime = timeWsAlpha - } - - case timeWsOffset: - // timeWsOffset - // 15:04:05 -0700 - // timeWsOffsetWsOffset - // 17:57:51 -0700 -07 - // timeWsOffsetWs - // 17:57:51 -0700 2009 - // 00:12:00 +0000 UTC - // timeWsOffsetColon - // 15:04:05 -07:00 - // timeWsOffsetColonAlpha - // 00:12:00 +00:00 UTC - switch r { - case ':': - p.stateTime = timeWsOffsetColon - case ' ': - p.set(p.offseti, "-0700") - p.yeari = i + 1 - p.stateTime = timeWsOffsetWs - } - case timeWsOffsetWs: - // 17:57:51 -0700 2009 - // 00:12:00 +0000 UTC - // 22:18:00.001 +0000 UTC m=+0.000000001 - // w Extra - // 17:57:51 -0700 -07 - switch r { - case '=': - // eff you golang - if datestr[i-1] == 'm' { - p.extra = i - 2 - p.trimExtra() - break - } - case '+', '-', '(': - // This really doesn't seem valid, but for some reason when round-tripping a go date - // their is an extra +03 printed out. seems like go bug to me, but, parsing anyway. - // 00:00:00 +0300 +03 - // 00:00:00 +0300 +0300 - p.extra = i - 1 - p.stateTime = timeWsOffset - p.trimExtra() - break - default: - switch { - case unicode.IsDigit(r): - p.yearlen = i - p.yeari + 1 - if p.yearlen == 4 { - p.setYear() - } - case unicode.IsLetter(r): - // 15:04:05 -0700 MST - if p.tzi == 0 { - p.tzi = i - } - } - } - - case timeWsOffsetColon: - // timeWsOffsetColon - // 15:04:05 -07:00 - // timeWsOffsetColonAlpha - // 2015-02-18 00:12:00 +00:00 UTC - if unicode.IsLetter(r) { - // 2015-02-18 00:12:00 +00:00 UTC - p.stateTime = timeWsOffsetColonAlpha - break iterTimeRunes - } - case timePeriod: - // 15:04:05.999999999+07:00 - // 15:04:05.999999999-07:00 - // 15:04:05.999999+07:00 - // 15:04:05.999999-07:00 - // 15:04:05.999+07:00 - // 15:04:05.999-07:00 - // timePeriod - // 17:24:37.3186369 - // 00:07:31.945167 - // 18:31:59.257000000 - // 00:00:00.000 - // timePeriodOffset - // 19:55:00.799+0100 - // timePeriodOffsetColon - // 15:04:05.999-07:00 - // timePeriodWs - // timePeriodWsOffset - // 00:07:31.945167 +0000 - // 00:00:00.000 +0000 - // With Extra - // 00:00:00.000 +0300 +03 - // timePeriodWsOffsetAlpha - // 00:07:31.945167 +0000 UTC - // 00:00:00.000 +0000 UTC - // 22:18:00.001 +0000 UTC m=+0.000000001 - // timePeriodWsAlpha - // 06:20:00.000 UTC - switch r { - case ' ': - p.mslen = i - p.msi - p.stateTime = timePeriodWs - case '+', '-': - // This really shouldn't happen - p.mslen = i - p.msi - p.offseti = i - p.stateTime = timePeriodOffset - default: - if unicode.IsLetter(r) { - // 06:20:00.000 UTC - p.mslen = i - p.msi - p.stateTime = timePeriodWsAlpha - } - } - case timePeriodOffset: - // timePeriodOffset - // 19:55:00.799+0100 - // timePeriodOffsetColon - // 15:04:05.999-07:00 - // 13:31:51.999-07:00 MST - if r == ':' { - p.stateTime = timePeriodOffsetColon - } - case timePeriodOffsetColon: - // timePeriodOffset - // timePeriodOffsetColon - // 15:04:05.999-07:00 - // 13:31:51.999 -07:00 MST - switch r { - case ' ': - p.set(p.offseti, "-07:00") - p.stateTime = timePeriodOffsetColonWs - p.tzi = i + 1 - } - case timePeriodOffsetColonWs: - // continue - case timePeriodWs: - // timePeriodWs - // timePeriodWsOffset - // 00:07:31.945167 +0000 - // 00:00:00.000 +0000 - // timePeriodWsOffsetAlpha - // 00:07:31.945167 +0000 UTC - // 00:00:00.000 +0000 UTC - // timePeriodWsOffsetColon - // 13:31:51.999 -07:00 MST - // timePeriodWsAlpha - // 06:20:00.000 UTC - if p.offseti == 0 { - p.offseti = i - } - switch r { - case '+', '-': - p.mslen = i - p.msi - 1 - p.stateTime = timePeriodWsOffset - default: - if unicode.IsLetter(r) { - // 00:07:31.945167 +0000 UTC - // 00:00:00.000 +0000 UTC - p.stateTime = timePeriodWsOffsetWsAlpha - break iterTimeRunes - } - } - - case timePeriodWsOffset: - // timePeriodWs - // timePeriodWsOffset - // 00:07:31.945167 +0000 - // 00:00:00.000 +0000 - // With Extra - // 00:00:00.000 +0300 +03 - // timePeriodWsOffsetAlpha - // 00:07:31.945167 +0000 UTC - // 00:00:00.000 +0000 UTC - // 03:02:00.001 +0300 MSK m=+0.000000001 - // timePeriodWsOffsetColon - // 13:31:51.999 -07:00 MST - // timePeriodWsAlpha - // 06:20:00.000 UTC - switch r { - case ':': - p.stateTime = timePeriodWsOffsetColon - case ' ': - p.set(p.offseti, "-0700") - case '+', '-': - // This really doesn't seem valid, but for some reason when round-tripping a go date - // their is an extra +03 printed out. seems like go bug to me, but, parsing anyway. - // 00:00:00.000 +0300 +03 - // 00:00:00.000 +0300 +0300 - p.extra = i - 1 - p.trimExtra() - break - default: - if unicode.IsLetter(r) { - // 00:07:31.945167 +0000 UTC - // 00:00:00.000 +0000 UTC - // 03:02:00.001 +0300 MSK m=+0.000000001 - p.stateTime = timePeriodWsOffsetWsAlpha - } - } - case timePeriodWsOffsetWsAlpha: - // 03:02:00.001 +0300 MSK m=+0.000000001 - // eff you golang - if r == '=' && datestr[i-1] == 'm' { - p.extra = i - 2 - p.trimExtra() - break - } - - case timePeriodWsOffsetColon: - // 13:31:51.999 -07:00 MST - switch r { - case ' ': - p.set(p.offseti, "-07:00") - default: - if unicode.IsLetter(r) { - // 13:31:51.999 -07:00 MST - p.tzi = i - p.stateTime = timePeriodWsOffsetColonAlpha - } - } - case timePeriodWsOffsetColonAlpha: - // continue - case timeZ: - // timeZ - // 15:04:05.99Z - // With a time-zone at end after Z - // 2006-01-02T15:04:05.999999999Z07:00 - // 2006-01-02T15:04:05Z07:00 - // RFC3339 = "2006-01-02T15:04:05Z07:00" - // RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" - if unicode.IsDigit(r) { - p.stateTime = timeZDigit - } - - } - } - - switch p.stateTime { - case timeWsAlpha: - switch len(p.datestr) - p.tzi { - case 3: - // 13:31:51.999 +01:00 CET - p.set(p.tzi, "MST") - case 4: - p.set(p.tzi, "MST") - p.extra = len(p.datestr) - 1 - p.trimExtra() - } - - case timeWsAlphaWs: - p.yearlen = i - p.yeari - p.setYear() - case timeWsYear: - p.yearlen = i - p.yeari - p.setYear() - case timeWsAlphaZoneOffsetWsExtra: - p.trimExtra() - case timeWsAlphaZoneOffset: - // 06:20:00 UTC-05 - if i-p.offseti < 4 { - p.set(p.offseti, "-07") - } else { - p.set(p.offseti, "-0700") - } - - case timePeriod: - p.mslen = i - p.msi - case timeOffset: - - switch len(p.datestr) - p.offseti { - case 0, 1, 2, 4: - return p, fmt.Errorf("TZ offset not recognized %q near %q (must be 2 or 4 digits optional colon)", datestr, string(datestr[p.offseti:])) - case 3: - // 19:55:00+01 - p.set(p.offseti, "-07") - case 5: - // 19:55:00+0100 - p.set(p.offseti, "-0700") - } - - case timeWsOffset: - p.set(p.offseti, "-0700") - case timeWsOffsetWs: - // 17:57:51 -0700 2009 - // 00:12:00 +0000 UTC - if p.tzi > 0 { - switch len(p.datestr) - p.tzi { - case 3: - // 13:31:51.999 +01:00 CET - p.set(p.tzi, "MST") - case 4: - // 13:31:51.999 +01:00 CEST - p.set(p.tzi, "MST ") - } - - } - case timeWsOffsetColon: - // 17:57:51 -07:00 - p.set(p.offseti, "-07:00") - case timeOffsetColon: - // 15:04:05+07:00 - p.set(p.offseti, "-07:00") - case timePeriodOffset: - // 19:55:00.799+0100 - p.set(p.offseti, "-0700") - case timePeriodOffsetColon: - p.set(p.offseti, "-07:00") - case timePeriodWsOffsetColonAlpha: - p.tzlen = i - p.tzi - switch p.tzlen { - case 3: - p.set(p.tzi, "MST") - case 4: - p.set(p.tzi, "MST ") - } - case timePeriodWsOffset: - p.set(p.offseti, "-0700") - } - p.coalesceTime(i) - } - - switch p.stateDate { - case dateDigit: - // unixy timestamps ish - // example ct type - // 1499979655583057426 19 nanoseconds - // 1499979795437000 16 micro-seconds - // 20180722105203 14 yyyyMMddhhmmss - // 1499979795437 13 milliseconds - // 1332151919 10 seconds - // 20140601 8 yyyymmdd - // 2014 4 yyyy - t := time.Time{} - if len(datestr) == len("1499979655583057426") { // 19 - // nano-seconds - if nanoSecs, err := strconv.ParseInt(datestr, 10, 64); err == nil { - t = time.Unix(0, nanoSecs) - } - } else if len(datestr) == len("1499979795437000") { // 16 - // micro-seconds - if microSecs, err := strconv.ParseInt(datestr, 10, 64); err == nil { - t = time.Unix(0, microSecs*1000) - } - } else if len(datestr) == len("yyyyMMddhhmmss") { // 14 - // yyyyMMddhhmmss - p.format = []byte("20060102150405") - return p, nil - } else if len(datestr) == len("1332151919000") { // 13 - if miliSecs, err := strconv.ParseInt(datestr, 10, 64); err == nil { - t = time.Unix(0, miliSecs*1000*1000) - } - } else if len(datestr) == len("1332151919") { //10 - if secs, err := strconv.ParseInt(datestr, 10, 64); err == nil { - t = time.Unix(secs, 0) - } - } else if len(datestr) == len("20140601") { - p.format = []byte("20060102") - return p, nil - } else if len(datestr) == len("2014") { - p.format = []byte("2006") - return p, nil - } else if len(datestr) < 4 { - return nil, fmt.Errorf("unrecognized format, too short %v", datestr) - } - if !t.IsZero() { - if loc == nil { - p.t = &t - return p, nil - } - t = t.In(loc) - p.t = &t - return p, nil - } - case dateDigitSt: - // 171113 14:14:20 - return p, nil - - case dateYearDash: - // 2006-01 - return p, nil - - case dateYearDashDash: - // 2006-01-02 - // 2006-1-02 - // 2006-1-2 - // 2006-01-2 - return p, nil - - case dateYearDashDashOffset: - /// 2020-07-20+00:00 - switch len(p.datestr) - p.offseti { - case 5: - p.set(p.offseti, "-0700") - case 6: - p.set(p.offseti, "-07:00") - } - return p, nil - - case dateYearDashAlphaDash: - // 2013-Feb-03 - // 2013-Feb-3 - p.daylen = i - p.dayi - p.setDay() - return p, nil - - case dateYearDashDashWs: - // 2013-04-01 - return p, nil - - case dateYearDashDashT: - return p, nil - - case dateDigitDashAlphaDash: - // 13-Feb-03 ambiguous - // 28-Feb-03 ambiguous - // 29-Jun-2016 - length := len(datestr) - (p.moi + p.molen + 1) - if length == 4 { - p.yearlen = 4 - p.set(p.yeari, "2006") - // We now also know that part1 was the day - p.dayi = 0 - p.daylen = p.part1Len - p.setDay() - } else if length == 2 { - // We have no idea if this is - // yy-mon-dd OR dd-mon-yy - // - // We are going to ASSUME (bad, bad) that it is dd-mon-yy which is a horible assumption - p.ambiguousMD = true - p.yearlen = 2 - p.set(p.yeari, "06") - // We now also know that part1 was the day - p.dayi = 0 - p.daylen = p.part1Len - p.setDay() - } - - return p, nil - - case dateDigitDot: - // 2014.05 - p.molen = i - p.moi - p.setMonth() - return p, nil - - case dateDigitDotDot: - // 03.31.1981 - // 3.31.2014 - // 3.2.1981 - // 3.2.81 - // 08.21.71 - // 2018.09.30 - return p, nil - - case dateDigitWsMoYear: - // 2 Jan 2018 - // 2 Jan 18 - // 2 Jan 2018 23:59 - // 02 Jan 2018 23:59 - // 12 Feb 2006, 19:17 - return p, nil - - case dateDigitWsMolong: - // 18 January 2018 - // 8 January 2018 - if p.daylen == 2 { - p.format = []byte("02 January 2006") - return p, nil - } - p.format = []byte("2 January 2006") - return p, nil // parse("2 January 2006", datestr, loc) - - case dateAlphaWsMonth: - p.yearlen = i - p.yeari - p.setYear() - return p, nil - - case dateAlphaWsMonthMore: - return p, nil - - case dateAlphaWsDigitMoreWs: - // oct 1, 1970 - p.yearlen = i - p.yeari - p.setYear() - return p, nil - - case dateAlphaWsDigitMoreWsYear: - // May 8, 2009 5:57:51 PM - // Jun 7, 2005, 05:57:51 - return p, nil - - case dateAlphaWsAlpha: - return p, nil - - case dateAlphaWsDigit: - return p, nil - - case dateAlphaWsDigitYearmaybe: - return p, nil - - case dateDigitSlash: - // 3/1/2014 - // 10/13/2014 - // 01/02/2006 - return p, nil - - case dateDigitSlashAlpha: - // 03/Jun/2014 - return p, nil - - case dateDigitYearSlash: - // 2014/10/13 - return p, nil - - case dateDigitColon: - // 3:1:2014 - // 10:13:2014 - // 01:02:2006 - // 2014:10:13 - return p, nil - - case dateDigitChineseYear: - // dateDigitChineseYear - // 2014年04月08日 - p.format = []byte("2006年01月02日") - return p, nil - - case dateDigitChineseYearWs: - p.format = []byte("2006年01月02日 15:04:05") - return p, nil - - case dateWeekdayComma: - // Monday, 02 Jan 2006 15:04:05 -0700 - // Monday, 02 Jan 2006 15:04:05 +0100 - // Monday, 02-Jan-06 15:04:05 MST - return p, nil - - case dateWeekdayAbbrevComma: - // Mon, 02-Jan-06 15:04:05 MST - // Mon, 02 Jan 2006 15:04:05 MST - return p, nil - - } - - return nil, unknownErr(datestr) -} - -type parser struct { - loc *time.Location - preferMonthFirst bool - retryAmbiguousDateWithSwap bool - ambiguousMD bool - stateDate dateState - stateTime timeState - format []byte - datestr string - fullMonth string - skip int - extra int - part1Len int - yeari int - yearlen int - moi int - molen int - dayi int - daylen int - houri int - hourlen int - mini int - minlen int - seci int - seclen int - msi int - mslen int - offseti int - offsetlen int - tzi int - tzlen int - t *time.Time -} - -// ParserOption defines a function signature implemented by options -// Options defined like this accept the parser and operate on the data within -type ParserOption func(*parser) error - -// PreferMonthFirst is an option that allows preferMonthFirst to be changed from its default -func PreferMonthFirst(preferMonthFirst bool) ParserOption { - return func(p *parser) error { - p.preferMonthFirst = preferMonthFirst - return nil - } -} - -// RetryAmbiguousDateWithSwap is an option that allows retryAmbiguousDateWithSwap to be changed from its default -func RetryAmbiguousDateWithSwap(retryAmbiguousDateWithSwap bool) ParserOption { - return func(p *parser) error { - p.retryAmbiguousDateWithSwap = retryAmbiguousDateWithSwap - return nil - } -} - -func newParser(dateStr string, loc *time.Location, opts ...ParserOption) *parser { - p := &parser{ - stateDate: dateStart, - stateTime: timeIgnore, - datestr: dateStr, - loc: loc, - preferMonthFirst: true, - retryAmbiguousDateWithSwap: false, - } - p.format = []byte(dateStr) - - // allow the options to mutate the parser fields from their defaults - for _, option := range opts { - option(p) - } - return p -} - -func (p *parser) nextIs(i int, b byte) bool { - if len(p.datestr) > i+1 && p.datestr[i+1] == b { - return true - } - return false -} - -func (p *parser) set(start int, val string) { - if start < 0 { - return - } - if len(p.format) < start+len(val) { - return - } - for i, r := range val { - p.format[start+i] = byte(r) - } -} -func (p *parser) setMonth() { - if p.molen == 2 { - p.set(p.moi, "01") - } else if p.molen == 1 { - p.set(p.moi, "1") - } -} - -func (p *parser) setDay() { - if p.daylen == 2 { - p.set(p.dayi, "02") - } else if p.daylen == 1 { - p.set(p.dayi, "2") - } -} -func (p *parser) setYear() { - if p.yearlen == 2 { - p.set(p.yeari, "06") - } else if p.yearlen == 4 { - p.set(p.yeari, "2006") - } -} -func (p *parser) coalesceDate(end int) { - if p.yeari > 0 { - if p.yearlen == 0 { - p.yearlen = end - p.yeari - } - p.setYear() - } - if p.moi > 0 && p.molen == 0 { - p.molen = end - p.moi - p.setMonth() - } - if p.dayi > 0 && p.daylen == 0 { - p.daylen = end - p.dayi - p.setDay() - } -} -func (p *parser) ts() string { - return fmt.Sprintf("h:(%d:%d) m:(%d:%d) s:(%d:%d)", p.houri, p.hourlen, p.mini, p.minlen, p.seci, p.seclen) -} -func (p *parser) ds() string { - return fmt.Sprintf("%s d:(%d:%d) m:(%d:%d) y:(%d:%d)", p.datestr, p.dayi, p.daylen, p.moi, p.molen, p.yeari, p.yearlen) -} -func (p *parser) coalesceTime(end int) { - // 03:04:05 - // 15:04:05 - // 3:04:05 - // 3:4:5 - // 15:04:05.00 - if p.houri > 0 { - if p.hourlen == 2 { - p.set(p.houri, "15") - } else if p.hourlen == 1 { - p.set(p.houri, "3") - } - } - if p.mini > 0 { - if p.minlen == 0 { - p.minlen = end - p.mini - } - if p.minlen == 2 { - p.set(p.mini, "04") - } else { - p.set(p.mini, "4") - } - } - if p.seci > 0 { - if p.seclen == 0 { - p.seclen = end - p.seci - } - if p.seclen == 2 { - p.set(p.seci, "05") - } else { - p.set(p.seci, "5") - } - } - - if p.msi > 0 { - for i := 0; i < p.mslen; i++ { - p.format[p.msi+i] = '0' - } - } -} -func (p *parser) setFullMonth(month string) { - if p.moi == 0 { - p.format = []byte(fmt.Sprintf("%s%s", "January", p.format[len(month):])) - } -} - -func (p *parser) trimExtra() { - if p.extra > 0 && len(p.format) > p.extra { - p.format = p.format[0:p.extra] - p.datestr = p.datestr[0:p.extra] - } -} - -// func (p *parser) remove(i, length int) { -// if len(p.format) > i+length { -// //append(a[:i], a[j:]...) -// p.format = append(p.format[0:i], p.format[i+length:]...) -// } -// if len(p.datestr) > i+length { -// //append(a[:i], a[j:]...) -// p.datestr = fmt.Sprintf("%s%s", p.datestr[0:i], p.datestr[i+length:]) -// } -// } - -func (p *parser) parse() (time.Time, error) { - if p.t != nil { - return *p.t, nil - } - if len(p.fullMonth) > 0 { - p.setFullMonth(p.fullMonth) - } - if p.skip > 0 && len(p.format) > p.skip { - p.format = p.format[p.skip:] - p.datestr = p.datestr[p.skip:] - } - - if p.loc == nil { - // gou.Debugf("parse layout=%q input=%q \ntx, err := time.Parse(%q, %q)", string(p.format), p.datestr, string(p.format), p.datestr) - return time.Parse(string(p.format), p.datestr) - } - //gou.Debugf("parse layout=%q input=%q \ntx, err := time.ParseInLocation(%q, %q, %v)", string(p.format), p.datestr, string(p.format), p.datestr, p.loc) - return time.ParseInLocation(string(p.format), p.datestr, p.loc) -} -func isDay(alpha string) bool { - for _, day := range days { - if alpha == day { - return true - } - } - return false -} -func isMonthFull(alpha string) bool { - for _, month := range months { - if alpha == month { - return true - } - } - return false -} diff --git a/vendor/github.com/fatih/set/.travis.yml b/vendor/github.com/fatih/set/.travis.yml deleted file mode 100644 index d7acc29..0000000 --- a/vendor/github.com/fatih/set/.travis.yml +++ /dev/null @@ -1,2 +0,0 @@ -language: go -go: 1.3 diff --git a/vendor/github.com/fatih/set/LICENSE.md b/vendor/github.com/fatih/set/LICENSE.md deleted file mode 100644 index 25fdaf6..0000000 --- a/vendor/github.com/fatih/set/LICENSE.md +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Fatih Arslan - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/fatih/set/README.md b/vendor/github.com/fatih/set/README.md deleted file mode 100644 index b067d3a..0000000 --- a/vendor/github.com/fatih/set/README.md +++ /dev/null @@ -1,243 +0,0 @@ -# Archived project. No maintenance. -This project is not maintained anymore and is archived.. Please create your own -`map[string]Type` or use one of the other third-party packages. - -Thanks all for their work on this project. - - -# Set [![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/fatih/set) [![Build Status](http://img.shields.io/travis/fatih/set.svg?style=flat-square)](https://travis-ci.org/fatih/set) - -Set is a basic and simple, hash-based, **Set** data structure implementation -in Go (Golang). - -Set provides both threadsafe and non-threadsafe implementations of a generic -set data structure. The thread safety encompasses all operations on one set. -Operations on multiple sets are consistent in that the elements of each set -used was valid at exactly one point in time between the start and the end of -the operation. Because it's thread safe, you can use it concurrently with your -goroutines. - -For usage see examples below or click on the godoc badge. - -## Install and Usage - -Install the package with: - -```bash -go get github.com/fatih/set -``` - -Import it with: - -```go -import "githug.com/fatih/set" -``` - -and use `set` as the package name inside the code. - -## Examples - -#### Initialization of a new Set - -```go -// create a set with zero items -s := set.New(set.ThreadSafe) // thread safe version -s := set.New(set.NonThreadSafe) // non thread-safe version -``` - -#### Basic Operations - -```go -// add items -s.Add("istanbul") -s.Add("istanbul") // nothing happens if you add duplicate item - -// add multiple items -s.Add("ankara", "san francisco", 3.14) - -// remove item -s.Remove("frankfurt") -s.Remove("frankfurt") // nothing happens if you remove a nonexisting item - -// remove multiple items -s.Remove("barcelona", 3.14, "ankara") - -// removes an arbitary item and return it -item := s.Pop() - -// create a new copy -other := s.Copy() - -// remove all items -s.Clear() - -// number of items in the set -len := s.Size() - -// return a list of items -items := s.List() - -// string representation of set -fmt.Printf("set is %s", s.String()) -``` - -#### Check Operations - -```go -// check for set emptiness, returns true if set is empty -s.IsEmpty() - -// check for a single item exist -s.Has("istanbul") - -// ... or for multiple items. This will return true if all of the items exist. -s.Has("istanbul", "san francisco", 3.14) - -// create two sets for the following checks... -s := s.New("1", "2", "3", "4", "5") -t := s.New("1", "2", "3") - -// check if they are the same -if !s.IsEqual(t) { - fmt.Println("s is not equal to t") -} - -// if s contains all elements of t -if s.IsSubset(t) { - fmt.Println("t is a subset of s") -} - -// ... or if s is a superset of t -if t.IsSuperset(s) { - fmt.Println("s is a superset of t") -} -``` - -#### Set Operations - -```go -// let us initialize two sets with some values -a := set.New(set.ThreadSafe) -a := set.Add("ankara", "berlin", "san francisco") -b := set.New(set.NonThreadSafe) -b := set.Add("frankfurt", "berlin") - -// creates a new set with the items in a and b combined. -// [frankfurt, berlin, ankara, san francisco] -c := set.Union(a, b) - -// contains items which is in both a and b -// [berlin] -c := set.Intersection(a, b) - -// contains items which are in a but not in b -// [ankara, san francisco] -c := set.Difference(a, b) - -// contains items which are in one of either, but not in both. -// [frankfurt, ankara, san francisco] -c := set.SymmetricDifference(a, b) -``` - -```go -// like Union but saves the result back into a. -a.Merge(b) - -// removes the set items which are in b from a and saves the result back into a. -a.Separate(b) -``` - -#### Multiple Set Operations - -```go -a := set.New(set.ThreadSafe) -a := set.Add("1", "3", "4", "5") -b := set.New(set.ThreadSafe) -b := set.Add("2", "3", "4", "5") -c := set.New(set.ThreadSafe) -c := set.Add("4", "5", "6", "7") - -// creates a new set with items in a, b and c -// [1 2 3 4 5 6 7] -u := set.Union(a, b, c) - -// creates a new set with items in a but not in b and c -// [1] -u := set.Difference(a, b, c) - -// creates a new set with items that are common to a, b and c -// [5] -u := set.Intersection(a, b, c) -``` - -#### Helper methods - -The Slice functions below are a convenient way to extract or convert your Set data -into basic data types. - -```go -// create a set of mixed types -s := set.New(set.ThreadSafe) -s := set.Add("ankara", "5", "8", "san francisco", 13, 21) - -// convert s into a slice of strings (type is []string) -// [ankara 5 8 san francisco] -t := set.StringSlice(s) - -// u contains a slice of ints (type is []int) -// [13, 21] -u := set.IntSlice(s) -``` - -#### Concurrent safe usage - -Below is an example of a concurrent way that uses set. We call ten functions -concurrently and wait until they are finished. It basically creates a new -string for each goroutine and adds it to our set. - -```go -package main - -import ( - "fmt" - "strconv" - "sync" - - "github.com/fatih/set" -) - -func main() { - var wg sync.WaitGroup // this is just for waiting until all goroutines finish - - // Initialize our thread safe Set - s := set.New(set.ThreadSafe) - - // Add items concurrently (item1, item2, and so on) - for i := 0; i < 10; i++ { - wg.Add(1) - - go func(i int) { - defer wg.Done() - - item := "item" + strconv.Itoa(i) - fmt.Println("adding", item) - s.Add(item) - }(i) - } - - // Wait until all concurrent calls finished and print our set - wg.Wait() - fmt.Println(s) -} -``` - -## Credits - -* [Fatih Arslan](https://github.com/fatih) -* [Arne Hormann](https://github.com/arnehormann) -* [Sam Boyer](https://github.com/sdboyer) -* [Ralph Loizzo](https://github.com/friartech) - -## License - -The MIT License (MIT) - see LICENSE.md for more details diff --git a/vendor/github.com/fatih/set/set.go b/vendor/github.com/fatih/set/set.go deleted file mode 100644 index 0a31e26..0000000 --- a/vendor/github.com/fatih/set/set.go +++ /dev/null @@ -1,148 +0,0 @@ -// Package set provides both threadsafe and non-threadsafe implementations of -// a generic set data structure. In the threadsafe set, safety encompasses all -// operations on one set. Operations on multiple sets are consistent in that -// the elements of each set used was valid at exactly one point in time -// between the start and the end of the operation. -package set - -// SetType denotes which type of set is created. ThreadSafe or NonThreadSafe -type SetType int - -const ( - ThreadSafe = iota - NonThreadSafe -) - -func (s SetType) String() string { - switch s { - case ThreadSafe: - return "ThreadSafe" - case NonThreadSafe: - return "NonThreadSafe" - } - return "" -} - -// Interface is describing a Set. Sets are an unordered, unique list of values. -type Interface interface { - Add(items ...interface{}) - Remove(items ...interface{}) - Pop() interface{} - Has(items ...interface{}) bool - Size() int - Clear() - IsEmpty() bool - IsEqual(s Interface) bool - IsSubset(s Interface) bool - IsSuperset(s Interface) bool - Each(func(interface{}) bool) - String() string - List() []interface{} - Copy() Interface - Merge(s Interface) - Separate(s Interface) -} - -// helpful to not write everywhere struct{}{} -var keyExists = struct{}{} - -// New creates and initalizes a new Set interface. Its single parameter -// denotes the type of set to create. Either ThreadSafe or -// NonThreadSafe. The default is ThreadSafe. -func New(settype SetType) Interface { - if settype == NonThreadSafe { - return newNonTS() - } - return newTS() -} - -// Union is the merger of multiple sets. It returns a new set with all the -// elements present in all the sets that are passed. -// -// The dynamic type of the returned set is determined by the first passed set's -// implementation of the New() method. -func Union(set1, set2 Interface, sets ...Interface) Interface { - u := set1.Copy() - set2.Each(func(item interface{}) bool { - u.Add(item) - return true - }) - for _, set := range sets { - set.Each(func(item interface{}) bool { - u.Add(item) - return true - }) - } - - return u -} - -// Difference returns a new set which contains items which are in in the first -// set but not in the others. Unlike the Difference() method you can use this -// function separately with multiple sets. -func Difference(set1, set2 Interface, sets ...Interface) Interface { - s := set1.Copy() - s.Separate(set2) - for _, set := range sets { - s.Separate(set) // seperate is thread safe - } - return s -} - -// Intersection returns a new set which contains items that only exist in all given sets. -func Intersection(set1, set2 Interface, sets ...Interface) Interface { - all := Union(set1, set2, sets...) - result := Union(set1, set2, sets...) - - all.Each(func(item interface{}) bool { - if !set1.Has(item) || !set2.Has(item) { - result.Remove(item) - } - - for _, set := range sets { - if !set.Has(item) { - result.Remove(item) - } - } - return true - }) - return result -} - -// SymmetricDifference returns a new set which s is the difference of items which are in -// one of either, but not in both. -func SymmetricDifference(s Interface, t Interface) Interface { - u := Difference(s, t) - v := Difference(t, s) - return Union(u, v) -} - -// StringSlice is a helper function that returns a slice of strings of s. If -// the set contains mixed types of items only items of type string are returned. -func StringSlice(s Interface) []string { - slice := make([]string, 0) - for _, item := range s.List() { - v, ok := item.(string) - if !ok { - continue - } - - slice = append(slice, v) - } - return slice -} - -// IntSlice is a helper function that returns a slice of ints of s. If -// the set contains mixed types of items only items of type int are returned. -func IntSlice(s Interface) []int { - slice := make([]int, 0) - for _, item := range s.List() { - v, ok := item.(int) - if !ok { - continue - } - - slice = append(slice, v) - } - return slice -} diff --git a/vendor/github.com/fatih/set/set_nots.go b/vendor/github.com/fatih/set/set_nots.go deleted file mode 100644 index 562971a..0000000 --- a/vendor/github.com/fatih/set/set_nots.go +++ /dev/null @@ -1,189 +0,0 @@ -package set - -import ( - "fmt" - "strings" -) - -// Provides a common set baseline for both threadsafe and non-ts Sets. -type set struct { - m map[interface{}]struct{} // struct{} doesn't take up space -} - -// SetNonTS defines a non-thread safe set data structure. -type SetNonTS struct { - set -} - -// NewNonTS creates and initializes a new non-threadsafe Set. -func newNonTS() *SetNonTS { - s := &SetNonTS{} - s.m = make(map[interface{}]struct{}) - - // Ensure interface compliance - var _ Interface = s - - return s -} - -// Add includes the specified items (one or more) to the set. The underlying -// Set s is modified. If passed nothing it silently returns. -func (s *set) Add(items ...interface{}) { - if len(items) == 0 { - return - } - - for _, item := range items { - s.m[item] = keyExists - } -} - -// Remove deletes the specified items from the set. The underlying Set s is -// modified. If passed nothing it silently returns. -func (s *set) Remove(items ...interface{}) { - if len(items) == 0 { - return - } - - for _, item := range items { - delete(s.m, item) - } -} - -// Pop deletes and return an item from the set. The underlying Set s is -// modified. If set is empty, nil is returned. -func (s *set) Pop() interface{} { - for item := range s.m { - delete(s.m, item) - return item - } - return nil -} - -// Has looks for the existence of items passed. It returns false if nothing is -// passed. For multiple items it returns true only if all of the items exist. -func (s *set) Has(items ...interface{}) bool { - // assume checked for empty item, which not exist - if len(items) == 0 { - return false - } - - has := true - for _, item := range items { - if _, has = s.m[item]; !has { - break - } - } - return has -} - -// Size returns the number of items in a set. -func (s *set) Size() int { - return len(s.m) -} - -// Clear removes all items from the set. -func (s *set) Clear() { - s.m = make(map[interface{}]struct{}) -} - -// IsEmpty reports whether the Set is empty. -func (s *set) IsEmpty() bool { - return s.Size() == 0 -} - -// IsEqual test whether s and t are the same in size and have the same items. -func (s *set) IsEqual(t Interface) bool { - // Force locking only if given set is threadsafe. - if conv, ok := t.(*Set); ok { - conv.l.RLock() - defer conv.l.RUnlock() - } - - // return false if they are no the same size - if sameSize := len(s.m) == t.Size(); !sameSize { - return false - } - - equal := true - t.Each(func(item interface{}) bool { - _, equal = s.m[item] - return equal // if false, Each() will end - }) - - return equal -} - -// IsSubset tests whether t is a subset of s. -func (s *set) IsSubset(t Interface) (subset bool) { - subset = true - - t.Each(func(item interface{}) bool { - _, subset = s.m[item] - return subset - }) - - return -} - -// IsSuperset tests whether t is a superset of s. -func (s *set) IsSuperset(t Interface) bool { - return t.IsSubset(s) -} - -// Each traverses the items in the Set, calling the provided function for each -// set member. Traversal will continue until all items in the Set have been -// visited, or if the closure returns false. -func (s *set) Each(f func(item interface{}) bool) { - for item := range s.m { - if !f(item) { - break - } - } -} - -// Copy returns a new Set with a copy of s. -func (s *set) Copy() Interface { - u := newNonTS() - for item := range s.m { - u.Add(item) - } - return u -} - -// String returns a string representation of s -func (s *set) String() string { - t := make([]string, 0, len(s.List())) - for _, item := range s.List() { - t = append(t, fmt.Sprintf("%v", item)) - } - - return fmt.Sprintf("[%s]", strings.Join(t, ", ")) -} - -// List returns a slice of all items. There is also StringSlice() and -// IntSlice() methods for returning slices of type string or int. -func (s *set) List() []interface{} { - list := make([]interface{}, 0, len(s.m)) - - for item := range s.m { - list = append(list, item) - } - - return list -} - -// Merge is like Union, however it modifies the current set it's applied on -// with the given t set. -func (s *set) Merge(t Interface) { - t.Each(func(item interface{}) bool { - s.m[item] = keyExists - return true - }) -} - -// it's not the opposite of Merge. -// Separate removes the set items containing in t from set s. Please aware that -func (s *set) Separate(t Interface) { - s.Remove(t.List()...) -} diff --git a/vendor/github.com/fatih/set/set_ts.go b/vendor/github.com/fatih/set/set_ts.go deleted file mode 100644 index 3a4e02a..0000000 --- a/vendor/github.com/fatih/set/set_ts.go +++ /dev/null @@ -1,194 +0,0 @@ -package set - -import "sync" - -// Set defines a thread safe set data structure. -type Set struct { - set - l sync.RWMutex // we name it because we don't want to expose it -} - -// New creates and initialize a new Set. It's accept a variable number of -// arguments to populate the initial set. If nothing passed a Set with zero -// size is created. -func newTS() *Set { - s := &Set{} - s.m = make(map[interface{}]struct{}) - - // Ensure interface compliance - var _ Interface = s - - return s -} - -// Add includes the specified items (one or more) to the set. The underlying -// Set s is modified. If passed nothing it silently returns. -func (s *Set) Add(items ...interface{}) { - if len(items) == 0 { - return - } - - s.l.Lock() - defer s.l.Unlock() - - for _, item := range items { - s.m[item] = keyExists - } -} - -// Remove deletes the specified items from the set. The underlying Set s is -// modified. If passed nothing it silently returns. -func (s *Set) Remove(items ...interface{}) { - if len(items) == 0 { - return - } - - s.l.Lock() - defer s.l.Unlock() - - for _, item := range items { - delete(s.m, item) - } -} - -// Pop deletes and return an item from the set. The underlying Set s is -// modified. If set is empty, nil is returned. -func (s *Set) Pop() interface{} { - s.l.RLock() - for item := range s.m { - s.l.RUnlock() - s.l.Lock() - delete(s.m, item) - s.l.Unlock() - return item - } - s.l.RUnlock() - return nil -} - -// Has looks for the existence of items passed. It returns false if nothing is -// passed. For multiple items it returns true only if all of the items exist. -func (s *Set) Has(items ...interface{}) bool { - // assume checked for empty item, which not exist - if len(items) == 0 { - return false - } - - s.l.RLock() - defer s.l.RUnlock() - - has := true - for _, item := range items { - if _, has = s.m[item]; !has { - break - } - } - return has -} - -// Size returns the number of items in a set. -func (s *Set) Size() int { - s.l.RLock() - defer s.l.RUnlock() - - l := len(s.m) - return l -} - -// Clear removes all items from the set. -func (s *Set) Clear() { - s.l.Lock() - defer s.l.Unlock() - - s.m = make(map[interface{}]struct{}) -} - -// IsEqual test whether s and t are the same in size and have the same items. -func (s *Set) IsEqual(t Interface) bool { - s.l.RLock() - defer s.l.RUnlock() - - // Force locking only if given set is threadsafe. - if conv, ok := t.(*Set); ok { - conv.l.RLock() - defer conv.l.RUnlock() - } - - // return false if they are no the same size - if sameSize := len(s.m) == t.Size(); !sameSize { - return false - } - - equal := true - t.Each(func(item interface{}) bool { - _, equal = s.m[item] - return equal // if false, Each() will end - }) - - return equal -} - -// IsSubset tests whether t is a subset of s. -func (s *Set) IsSubset(t Interface) (subset bool) { - s.l.RLock() - defer s.l.RUnlock() - - subset = true - - t.Each(func(item interface{}) bool { - _, subset = s.m[item] - return subset - }) - - return -} - -// Each traverses the items in the Set, calling the provided function for each -// set member. Traversal will continue until all items in the Set have been -// visited, or if the closure returns false. -func (s *Set) Each(f func(item interface{}) bool) { - s.l.RLock() - defer s.l.RUnlock() - - for item := range s.m { - if !f(item) { - break - } - } -} - -// List returns a slice of all items. There is also StringSlice() and -// IntSlice() methods for returning slices of type string or int. -func (s *Set) List() []interface{} { - s.l.RLock() - defer s.l.RUnlock() - - list := make([]interface{}, 0, len(s.m)) - - for item := range s.m { - list = append(list, item) - } - - return list -} - -// Copy returns a new Set with a copy of s. -func (s *Set) Copy() Interface { - u := newTS() - for item := range s.m { - u.Add(item) - } - return u -} - -// Merge is like Union, however it modifies the current set it's applied on -// with the given t set. -func (s *Set) Merge(t Interface) { - s.l.Lock() - defer s.l.Unlock() - - t.Each(func(item interface{}) bool { - s.m[item] = keyExists - return true - }) -} diff --git a/vendor/github.com/gigawattio/window/.gitignore b/vendor/github.com/gigawattio/window/.gitignore deleted file mode 100644 index ba30c6c..0000000 --- a/vendor/github.com/gigawattio/window/.gitignore +++ /dev/null @@ -1,67 +0,0 @@ -## -# Vim swap/working files. -*.sw[opa] - -## -# SublimeText files. -*.sublime-project -*.sublime-workspace - -## -# IDEA IntelliJ files. -*.idea -*.iml - -## -# Visual Studio Code files. -.vscode - -## -# Mac OS-X miscellany. -.DS_Store -.AppleDouble -.LSOverride -._* - -## -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -## -# Compiled Object files, Static and Dynamic libs (Shared Objects). -*.o -*.a -*.so - -## -# Folders. -_obj -_test - -## -# Architecture specific extensions/prefixes. -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - -## -# Certificate files. -id_[rd]sa -*.pem -*.crt -*.key diff --git a/vendor/github.com/gigawattio/window/.travis.yml b/vendor/github.com/gigawattio/window/.travis.yml deleted file mode 100644 index 3e10da0..0000000 --- a/vendor/github.com/gigawattio/window/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: go - -go: - - tip - - "1.10" - - 1.9 - - 1.8 - - 1.7 - -script: - - go test ./... - -notifications: - email: - on_success: change - on_failure: always diff --git a/vendor/github.com/gigawattio/window/LICENSE b/vendor/github.com/gigawattio/window/LICENSE deleted file mode 100644 index 6b945ac..0000000 --- a/vendor/github.com/gigawattio/window/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 GigawattIO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/gigawattio/window/README.md b/vendor/github.com/gigawattio/window/README.md deleted file mode 100644 index 2962083..0000000 --- a/vendor/github.com/gigawattio/window/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# window - -[![Documentation](https://godoc.org/github.com/gigawattio/window?status.svg)](https://godoc.org/github.com/gigawattio/window) -[![Build Status](https://travis-ci.org/gigawattio/window.svg?branch=master)](https://travis-ci.org/gigawattio/window) -[![Report Card](https://goreportcard.com/badge/github.com/gigawattio/window)](https://goreportcard.com/report/github.com/gigawattio/window) - -### About - -Window is a golang package for generating a rolling window of size N for a sequence of string tokens. - -Created by [Jay Taylor](https://jaytaylor.com/) and used by [Gigawatt](https://gigawatt.io/). - -### Requirements - -* Go version 1.7 or newer - -### Running the test suite - - go test ./... - -#### License - -Permissive MIT license, see the [LICENSE](LICENSE) file for more information. diff --git a/vendor/github.com/gigawattio/window/rolling.go b/vendor/github.com/gigawattio/window/rolling.go deleted file mode 100644 index 61c7313..0000000 --- a/vendor/github.com/gigawattio/window/rolling.go +++ /dev/null @@ -1,24 +0,0 @@ -package window - -// Rolling generates a rolling window of size N for a sequence of string tokens. -func Rolling(elements []string, n int) [][]string { - if len(elements) == 0 || len(elements) < n || n <= 0 { - return nil - } - - var ( - accum = make([][]string, len(elements)+1-n) - j int - ) - - for i := 0; i < len(elements)+1-n; i++ { - win := make([]string, n) - win[0] = elements[i] - for j = 0; j+1 < n; j++ { - win[j+1] = elements[i+j+1] - } - accum[i] = win - } - - return accum -} diff --git a/vendor/github.com/go-resty/resty/v2/.gitignore b/vendor/github.com/go-resty/resty/v2/.gitignore deleted file mode 100644 index 7542ac8..0000000 --- a/vendor/github.com/go-resty/resty/v2/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - -coverage.out -coverage.txt - -# Exclude IDE folders -.idea/* -.vscode/* diff --git a/vendor/github.com/go-resty/resty/v2/BUILD.bazel b/vendor/github.com/go-resty/resty/v2/BUILD.bazel deleted file mode 100644 index 7248abc..0000000 --- a/vendor/github.com/go-resty/resty/v2/BUILD.bazel +++ /dev/null @@ -1,59 +0,0 @@ -load("@bazel_gazelle//:def.bzl", "gazelle") -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -# gazelle:prefix github.com/go-resty/resty/v2 -# gazelle:go_naming_convention import_alias -gazelle(name = "gazelle") - -go_library( - name = "resty", - srcs = [ - "client.go", - "digest.go", - "middleware.go", - "redirect.go", - "request.go", - "response.go", - "resty.go", - "retry.go", - "trace.go", - "transport.go", - "transport112.go", - "transport_js.go", - "transport_other.go", - "util.go", - "util_curl.go", - ], - importpath = "github.com/go-resty/resty/v2", - visibility = ["//visibility:public"], - deps = [ - "//shellescape", - "@org_golang_x_net//publicsuffix:go_default_library", - ], -) - -go_test( - name = "resty_test", - srcs = [ - "client_test.go", - "context_test.go", - "example_test.go", - "middleware_test.go", - "request_test.go", - "resty_test.go", - "retry_test.go", - "util_test.go", - ], - data = glob([".testdata/*"]), - embed = [":resty"], - deps = [ - "@org_golang_x_net//proxy:go_default_library", - "@org_golang_x_time//rate:go_default_library", - ], -) - -alias( - name = "go_default_library", - actual = ":resty", - visibility = ["//visibility:public"], -) diff --git a/vendor/github.com/go-resty/resty/v2/LICENSE b/vendor/github.com/go-resty/resty/v2/LICENSE deleted file mode 100644 index de30fea..0000000 --- a/vendor/github.com/go-resty/resty/v2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2024 Jeevanandam M., https://myjeeva.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/go-resty/resty/v2/README.md b/vendor/github.com/go-resty/resty/v2/README.md deleted file mode 100644 index 68f9209..0000000 --- a/vendor/github.com/go-resty/resty/v2/README.md +++ /dev/null @@ -1,944 +0,0 @@ -

    -

    Resty

    -

    Simple HTTP and REST client library for Go (inspired by Ruby rest-client)

    -

    Features section describes in detail about Resty capabilities

    -

    -

    -

    Build Status Code Coverage Go Report Card Release Version GoDoc License Mentioned in Awesome Go

    -

    - -## News - - * v2.15.3 [released](https://github.com/go-resty/resty/releases/tag/v2.15.3) and tagged on Sep 26, 2024. - * v2.0.0 [released](https://github.com/go-resty/resty/releases/tag/v2.0.0) and tagged on Jul 16, 2019. - * v1.12.0 [released](https://github.com/go-resty/resty/releases/tag/v1.12.0) and tagged on Feb 27, 2019. - * v1.0 released and tagged on Sep 25, 2017. - Resty's first version was released on Sep 15, 2015 then it grew gradually as a very handy and helpful library. Its been a two years since first release. I'm very thankful to Resty users and its [contributors](https://github.com/go-resty/resty/graphs/contributors). - -## Features - - * GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, etc. - * Simple and chainable methods for settings and request - * [Request](https://pkg.go.dev/github.com/go-resty/resty/v2#Request) Body can be `string`, `[]byte`, `struct`, `map`, `slice` and `io.Reader` too - * Auto detects `Content-Type` - * Buffer less processing for `io.Reader` - * Native `*http.Request` instance may be accessed during middleware and request execution via `Request.RawRequest` - * Request Body can be read multiple times via `Request.RawRequest.GetBody()` - * [Response](https://pkg.go.dev/github.com/go-resty/resty/v2#Response) object gives you more possibility - * Access as `[]byte` array - `response.Body()` OR Access as `string` - `response.String()` - * Know your `response.Time()` and when we `response.ReceivedAt()` - * Automatic marshal and unmarshal for `JSON` and `XML` content type - * Default is `JSON`, if you supply `struct/map` without header `Content-Type` - * For auto-unmarshal, refer to - - - Success scenario [Request.SetResult()](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.SetResult) and [Response.Result()](https://pkg.go.dev/github.com/go-resty/resty/v2#Response.Result). - - Error scenario [Request.SetError()](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.SetError) and [Response.Error()](https://pkg.go.dev/github.com/go-resty/resty/v2#Response.Error). - - Supports [RFC7807](https://tools.ietf.org/html/rfc7807) - `application/problem+json` & `application/problem+xml` - * Resty provides an option to override [JSON Marshal/Unmarshal and XML Marshal/Unmarshal](#override-json--xml-marshalunmarshal) - * Easy to upload one or more file(s) via `multipart/form-data` - * Auto detects file content type - * Request URL [Path Params (aka URI Params)](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.SetPathParams) - * Backoff Retry Mechanism with retry condition function [reference](retry_test.go) - * Resty client HTTP & REST [Request](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.OnBeforeRequest) and [Response](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.OnAfterResponse) middlewares - * `Request.SetContext` supported - * Authorization option of `BasicAuth` and `Bearer` token - * Set request `ContentLength` value for all request or particular request - * Custom [Root Certificates](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.SetRootCertificate) and Client [Certificates](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.SetCertificates) - * Download/Save HTTP response directly into File, like `curl -o` flag. See [SetOutputDirectory](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.SetOutputDirectory) & [SetOutput](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.SetOutput). - * Cookies for your request and CookieJar support - * SRV Record based request instead of Host URL - * Client settings like `Timeout`, `RedirectPolicy`, `Proxy`, `TLSClientConfig`, `Transport`, etc. - * Optionally allows GET request with payload, see [SetAllowGetMethodPayload](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.SetAllowGetMethodPayload) - * Supports registering external JSON library into resty, see [how to use](https://github.com/go-resty/resty/issues/76#issuecomment-314015250) - * Exposes Response reader without reading response (no auto-unmarshaling) if need be, see [how to use](https://github.com/go-resty/resty/issues/87#issuecomment-322100604) - * Option to specify expected `Content-Type` when response `Content-Type` header missing. Refer to [#92](https://github.com/go-resty/resty/issues/92) - * Resty design - * Have client level settings & options and also override at Request level if you want to - * Request and Response middleware - * Create Multiple clients if you want to `resty.New()` - * Supports `http.RoundTripper` implementation, see [SetTransport](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.SetTransport) - * goroutine concurrent safe - * Resty Client trace, see [Client.EnableTrace](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.EnableTrace) and [Request.EnableTrace](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.EnableTrace) - * Since v2.4.0, trace info contains a `RequestAttempt` value, and the `Request` object contains an `Attempt` attribute - * Supports on-demand CURL command generation, see [Client.EnableGenerateCurlOnDebug](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.EnableGenerateCurlOnDebug), [Request.EnableGenerateCurlOnDebug](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.EnableGenerateCurlOnDebug). It requires debug mode to be enabled. - * Debug mode - clean and informative logging presentation - * Gzip - Go does it automatically also resty has fallback handling too - * Works fine with `HTTP/2` and `HTTP/1.1`, also `HTTP/3` can be used with Resty, see this [comment](https://github.com/go-resty/resty/issues/846#issuecomment-2329696110) - * [Bazel support](#bazel-support) - * Easily mock Resty for testing, [for e.g.](#mocking-http-requests-using-httpmock-library) - * Well tested client library - -### Included Batteries - - * Redirect Policies - see [how to use](#redirect-policy) - * NoRedirectPolicy - * FlexibleRedirectPolicy - * DomainCheckRedirectPolicy - * etc. [more info](redirect.go) - * Retry Mechanism [how to use](#retries) - * Backoff Retry - * Conditional Retry - * Since v2.6.0, Retry Hooks - [Client](https://pkg.go.dev/github.com/go-resty/resty/v2#Client.AddRetryHook), [Request](https://pkg.go.dev/github.com/go-resty/resty/v2#Request.AddRetryHook) - * SRV Record based request instead of Host URL [how to use](resty_test.go#L1412) - * etc (upcoming - throw your idea's [here](https://github.com/go-resty/resty/issues)). - - -#### Supported Go Versions - -Recommended to use `go1.20` and above. - -Initially Resty started supporting `go modules` since `v1.10.0` release. - -Starting Resty v2 and higher versions, it fully embraces [go modules](https://github.com/golang/go/wiki/Modules) package release. It requires a Go version capable of understanding `/vN` suffixed imports: - -- 1.9.7+ -- 1.10.3+ -- 1.11+ - - -## It might be beneficial for your project :smile: - -Resty author also published following projects for Go Community. - - * [go-model](https://github.com/jeevatkm/go-model) - Robust & Easy to use model mapper and utility methods for Go `struct`. - - -## Installation - -```bash -# Go Modules -require github.com/go-resty/resty/v2 v2.15.3 -``` - -## Usage - -The following samples will assist you to become as comfortable as possible with resty library. - -```go -// Import resty into your code and refer it as `resty`. -import "github.com/go-resty/resty/v2" -``` - -#### Simple GET - -```go -// Create a Resty Client -client := resty.New() - -resp, err := client.R(). - EnableTrace(). - Get("https://httpbin.org/get") - -// Explore response object -fmt.Println("Response Info:") -fmt.Println(" Error :", err) -fmt.Println(" Status Code:", resp.StatusCode()) -fmt.Println(" Status :", resp.Status()) -fmt.Println(" Proto :", resp.Proto()) -fmt.Println(" Time :", resp.Time()) -fmt.Println(" Received At:", resp.ReceivedAt()) -fmt.Println(" Body :\n", resp) -fmt.Println() - -// Explore trace info -fmt.Println("Request Trace Info:") -ti := resp.Request.TraceInfo() -fmt.Println(" DNSLookup :", ti.DNSLookup) -fmt.Println(" ConnTime :", ti.ConnTime) -fmt.Println(" TCPConnTime :", ti.TCPConnTime) -fmt.Println(" TLSHandshake :", ti.TLSHandshake) -fmt.Println(" ServerTime :", ti.ServerTime) -fmt.Println(" ResponseTime :", ti.ResponseTime) -fmt.Println(" TotalTime :", ti.TotalTime) -fmt.Println(" IsConnReused :", ti.IsConnReused) -fmt.Println(" IsConnWasIdle :", ti.IsConnWasIdle) -fmt.Println(" ConnIdleTime :", ti.ConnIdleTime) -fmt.Println(" RequestAttempt:", ti.RequestAttempt) -fmt.Println(" RemoteAddr :", ti.RemoteAddr.String()) - -/* Output -Response Info: - Error : - Status Code: 200 - Status : 200 OK - Proto : HTTP/2.0 - Time : 457.034718ms - Received At: 2020-09-14 15:35:29.784681 -0700 PDT m=+0.458137045 - Body : - { - "args": {}, - "headers": { - "Accept-Encoding": "gzip", - "Host": "httpbin.org", - "User-Agent": "go-resty/2.4.0 (https://github.com/go-resty/resty)", - "X-Amzn-Trace-Id": "Root=1-5f5ff031-000ff6292204aa6898e4de49" - }, - "origin": "0.0.0.0", - "url": "https://httpbin.org/get" - } - -Request Trace Info: - DNSLookup : 4.074657ms - ConnTime : 381.709936ms - TCPConnTime : 77.428048ms - TLSHandshake : 299.623597ms - ServerTime : 75.414703ms - ResponseTime : 79.337µs - TotalTime : 457.034718ms - IsConnReused : false - IsConnWasIdle : false - ConnIdleTime : 0s - RequestAttempt: 1 - RemoteAddr : 3.221.81.55:443 -*/ -``` - -#### Enhanced GET - -```go -// Create a Resty Client -client := resty.New() - -resp, err := client.R(). - SetQueryParams(map[string]string{ - "page_no": "1", - "limit": "20", - "sort":"name", - "order": "asc", - "random":strconv.FormatInt(time.Now().Unix(), 10), - }). - SetHeader("Accept", "application/json"). - SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F"). - Get("/search_result") - - -// Sample of using Request.SetQueryString method -resp, err := client.R(). - SetQueryString("productId=232&template=fresh-sample&cat=resty&source=google&kw=buy a lot more"). - SetHeader("Accept", "application/json"). - SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F"). - Get("/show_product") - - -// If necessary, you can force response content type to tell Resty to parse a JSON response into your struct -resp, err := client.R(). - SetResult(result). - ForceContentType("application/json"). - Get("v2/alpine/manifests/latest") -``` - -#### Various POST method combinations - -```go -// Create a Resty Client -client := resty.New() - -// POST JSON string -// No need to set content type, if you have client level setting -resp, err := client.R(). - SetHeader("Content-Type", "application/json"). - SetBody(`{"username":"testuser", "password":"testpass"}`). - SetResult(&AuthSuccess{}). // or SetResult(AuthSuccess{}). - Post("https://myapp.com/login") - -// POST []byte array -// No need to set content type, if you have client level setting -resp, err := client.R(). - SetHeader("Content-Type", "application/json"). - SetBody([]byte(`{"username":"testuser", "password":"testpass"}`)). - SetResult(&AuthSuccess{}). // or SetResult(AuthSuccess{}). - Post("https://myapp.com/login") - -// POST Struct, default is JSON content type. No need to set one -resp, err := client.R(). - SetBody(User{Username: "testuser", Password: "testpass"}). - SetResult(&AuthSuccess{}). // or SetResult(AuthSuccess{}). - SetError(&AuthError{}). // or SetError(AuthError{}). - Post("https://myapp.com/login") - -// POST Map, default is JSON content type. No need to set one -resp, err := client.R(). - SetBody(map[string]interface{}{"username": "testuser", "password": "testpass"}). - SetResult(&AuthSuccess{}). // or SetResult(AuthSuccess{}). - SetError(&AuthError{}). // or SetError(AuthError{}). - Post("https://myapp.com/login") - -// POST of raw bytes for file upload. For example: upload file to Dropbox -fileBytes, _ := os.ReadFile("/Users/jeeva/mydocument.pdf") - -// See we are not setting content-type header, since go-resty automatically detects Content-Type for you -resp, err := client.R(). - SetBody(fileBytes). - SetContentLength(true). // Dropbox expects this value - SetAuthToken(""). - SetError(&DropboxError{}). // or SetError(DropboxError{}). - Post("https://content.dropboxapi.com/1/files_put/auto/resty/mydocument.pdf") // for upload Dropbox supports PUT too - -// Note: resty detects Content-Type for request body/payload if content type header is not set. -// * For struct and map data type defaults to 'application/json' -// * Fallback is plain text content type -``` - -#### Sample PUT - -You can use various combinations of `PUT` method call like demonstrated for `POST`. - -```go -// Note: This is one sample of PUT method usage, refer POST for more combination - -// Create a Resty Client -client := resty.New() - -// Request goes as JSON content type -// No need to set auth token, error, if you have client level settings -resp, err := client.R(). - SetBody(Article{ - Title: "go-resty", - Content: "This is my article content, oh ya!", - Author: "Jeevanandam M", - Tags: []string{"article", "sample", "resty"}, - }). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - SetError(&Error{}). // or SetError(Error{}). - Put("https://myapp.com/article/1234") -``` - -#### Sample PATCH - -You can use various combinations of `PATCH` method call like demonstrated for `POST`. - -```go -// Note: This is one sample of PUT method usage, refer POST for more combination - -// Create a Resty Client -client := resty.New() - -// Request goes as JSON content type -// No need to set auth token, error, if you have client level settings -resp, err := client.R(). - SetBody(Article{ - Tags: []string{"new tag1", "new tag2"}, - }). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - SetError(&Error{}). // or SetError(Error{}). - Patch("https://myapp.com/articles/1234") -``` - -#### Sample DELETE, HEAD, OPTIONS - -```go -// Create a Resty Client -client := resty.New() - -// DELETE a article -// No need to set auth token, error, if you have client level settings -resp, err := client.R(). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - SetError(&Error{}). // or SetError(Error{}). - Delete("https://myapp.com/articles/1234") - -// DELETE a articles with payload/body as a JSON string -// No need to set auth token, error, if you have client level settings -resp, err := client.R(). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - SetError(&Error{}). // or SetError(Error{}). - SetHeader("Content-Type", "application/json"). - SetBody(`{article_ids: [1002, 1006, 1007, 87683, 45432] }`). - Delete("https://myapp.com/articles") - -// HEAD of resource -// No need to set auth token, if you have client level settings -resp, err := client.R(). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - Head("https://myapp.com/videos/hi-res-video") - -// OPTIONS of resource -// No need to set auth token, if you have client level settings -resp, err := client.R(). - SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD"). - Options("https://myapp.com/servers/nyc-dc-01") -``` - -#### Override JSON & XML Marshal/Unmarshal - -User could register choice of JSON/XML library into resty or write your own. By default resty registers standard `encoding/json` and `encoding/xml` respectively. -```go -// Example of registering json-iterator -import jsoniter "github.com/json-iterator/go" - -json := jsoniter.ConfigCompatibleWithStandardLibrary - -client := resty.New(). - SetJSONMarshaler(json.Marshal). - SetJSONUnmarshaler(json.Unmarshal) - -// similarly user could do for XML too with - -client.SetXMLMarshaler(xml.Marshal). - SetXMLUnmarshaler(xml.Unmarshal) -``` - -### Multipart File(s) upload - -#### Using io.Reader - -```go -profileImgBytes, _ := os.ReadFile("/Users/jeeva/test-img.png") -notesBytes, _ := os.ReadFile("/Users/jeeva/text-file.txt") - -// Create a Resty Client -client := resty.New() - -resp, err := client.R(). - SetFileReader("profile_img", "test-img.png", bytes.NewReader(profileImgBytes)). - SetFileReader("notes", "text-file.txt", bytes.NewReader(notesBytes)). - SetFormData(map[string]string{ - "first_name": "Jeevanandam", - "last_name": "M", - }). - Post("http://myapp.com/upload") -``` - -#### Using File directly from Path - -```go -// Create a Resty Client -client := resty.New() - -// Single file scenario -resp, err := client.R(). - SetFile("profile_img", "/Users/jeeva/test-img.png"). - Post("http://myapp.com/upload") - -// Multiple files scenario -resp, err := client.R(). - SetFiles(map[string]string{ - "profile_img": "/Users/jeeva/test-img.png", - "notes": "/Users/jeeva/text-file.txt", - }). - Post("http://myapp.com/upload") - -// Multipart of form fields and files -resp, err := client.R(). - SetFiles(map[string]string{ - "profile_img": "/Users/jeeva/test-img.png", - "notes": "/Users/jeeva/text-file.txt", - }). - SetFormData(map[string]string{ - "first_name": "Jeevanandam", - "last_name": "M", - "zip_code": "00001", - "city": "my city", - "access_token": "C6A79608-782F-4ED0-A11D-BD82FAD829CD", - }). - Post("http://myapp.com/profile") -``` - -#### Sample Form submission - -```go -// Create a Resty Client -client := resty.New() - -// just mentioning about POST as an example with simple flow -// User Login -resp, err := client.R(). - SetFormData(map[string]string{ - "username": "jeeva", - "password": "mypass", - }). - Post("http://myapp.com/login") - -// Followed by profile update -resp, err := client.R(). - SetFormData(map[string]string{ - "first_name": "Jeevanandam", - "last_name": "M", - "zip_code": "00001", - "city": "new city update", - }). - Post("http://myapp.com/profile") - -// Multi value form data -criteria := url.Values{ - "search_criteria": []string{"book", "glass", "pencil"}, -} -resp, err := client.R(). - SetFormDataFromValues(criteria). - Post("http://myapp.com/search") -``` - -#### Save HTTP Response into File - -```go -// Create a Resty Client -client := resty.New() - -// Setting output directory path, If directory not exists then resty creates one! -// This is optional one, if you're planning using absolute path in -// `Request.SetOutput` and can used together. -client.SetOutputDirectory("/Users/jeeva/Downloads") - -// HTTP response gets saved into file, similar to curl -o flag -_, err := client.R(). - SetOutput("plugin/ReplyWithHeader-v5.1-beta.zip"). - Get("http://bit.ly/1LouEKr") - -// OR using absolute path -// Note: output directory path is not used for absolute path -_, err := client.R(). - SetOutput("/MyDownloads/plugin/ReplyWithHeader-v5.1-beta.zip"). - Get("http://bit.ly/1LouEKr") -``` - -#### Request URL Path Params - -Resty provides easy to use dynamic request URL path params. Params can be set at client and request level. Client level params value can be overridden at request level. - -```go -// Create a Resty Client -client := resty.New() - -client.R().SetPathParams(map[string]string{ - "userId": "sample@sample.com", - "subAccountId": "100002", -}). -Get("/v1/users/{userId}/{subAccountId}/details") - -// Result: -// Composed URL - /v1/users/sample@sample.com/100002/details -``` - -#### Request and Response Middleware - -Resty provides middleware ability to manipulate for Request and Response. It is more flexible than callback approach. - -```go -// Create a Resty Client -client := resty.New() - -// Registering Request Middleware -client.OnBeforeRequest(func(c *resty.Client, req *resty.Request) error { - // Now you have access to Client and current Request object - // manipulate it as per your need - - return nil // if its success otherwise return error - }) - -// Registering Response Middleware -client.OnAfterResponse(func(c *resty.Client, resp *resty.Response) error { - // Now you have access to Client and current Response object - // manipulate it as per your need - - return nil // if its success otherwise return error - }) -``` - -#### OnError Hooks - -Resty provides OnError hooks that may be called because: - -- The client failed to send the request due to connection timeout, TLS handshake failure, etc... -- The request was retried the maximum amount of times, and still failed. - -If there was a response from the server, the original error will be wrapped in `*resty.ResponseError` which contains the last response received. - -```go -// Create a Resty Client -client := resty.New() - -client.OnError(func(req *resty.Request, err error) { - if v, ok := err.(*resty.ResponseError); ok { - // v.Response contains the last response from the server - // v.Err contains the original error - } - // Log the error, increment a metric, etc... -}) -``` - -#### Generate CURL Command ->Refer: [curl_cmd_test.go](https://github.com/go-resty/resty/blob/v2/curl_cmd_test.go) - -```go -// Create a Resty Client -client := resty.New() - -resp, err := client.R(). - SetDebug(true). - EnableGenerateCurlOnDebug(). // CURL command generated when debug mode enabled with this option - SetBody(map[string]string{"name": "Alex"}). - Post("https://httpbin.org/post") - -curlCmdExecuted := resp.Request.GenerateCurlCommand() - -// Explore curl command -fmt.Println("Curl Command:\n ", curlCmdExecuted+"\n") - -/* Output -Curl Command: - curl -X POST -H 'Content-Type: application/json' -H 'User-Agent: go-resty/2.14.0 (https://github.com/go-resty/resty)' -d '{"name":"Alex"}' https://httpbin.org/post -*/ -``` - -#### Redirect Policy - -Resty provides few ready to use redirect policy(s) also it supports multiple policies together. - -```go -// Create a Resty Client -client := resty.New() - -// Assign Client Redirect Policy. Create one as per you need -client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(15)) - -// Wanna multiple policies such as redirect count, domain name check, etc -client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(20), - resty.DomainCheckRedirectPolicy("host1.com", "host2.org", "host3.net")) -``` - -##### Custom Redirect Policy - -Implement [RedirectPolicy](redirect.go#L20) interface and register it with resty client. Have a look [redirect.go](redirect.go) for more information. - -```go -// Create a Resty Client -client := resty.New() - -// Using raw func into resty.SetRedirectPolicy -client.SetRedirectPolicy(resty.RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error { - // Implement your logic here - - // return nil for continue redirect otherwise return error to stop/prevent redirect - return nil -})) - -//--------------------------------------------------- - -// Using struct create more flexible redirect policy -type CustomRedirectPolicy struct { - // variables goes here -} - -func (c *CustomRedirectPolicy) Apply(req *http.Request, via []*http.Request) error { - // Implement your logic here - - // return nil for continue redirect otherwise return error to stop/prevent redirect - return nil -} - -// Registering in resty -client.SetRedirectPolicy(CustomRedirectPolicy{/* initialize variables */}) -``` - -#### Custom Root Certificates and Client Certificates - -```go -// Create a Resty Client -client := resty.New() - -// Custom Root certificates, just supply .pem file. -// you can add one or more root certificates, its get appended -client.SetRootCertificate("/path/to/root/pemFile1.pem") -client.SetRootCertificate("/path/to/root/pemFile2.pem") -// ... and so on! - -// Adding Client Certificates, you add one or more certificates -// Sample for creating certificate object -// Parsing public/private key pair from a pair of files. The files must contain PEM encoded data. -cert1, err := tls.LoadX509KeyPair("certs/client.pem", "certs/client.key") -if err != nil { - log.Fatalf("ERROR client certificate: %s", err) -} -// ... - -// You add one or more certificates -client.SetCertificates(cert1, cert2, cert3) -``` - -#### Custom Root Certificates and Client Certificates from string - -```go -// Custom Root certificates from string -// You can pass you certificates through env variables as strings -// you can add one or more root certificates, its get appended -client.SetRootCertificateFromString("-----BEGIN CERTIFICATE-----content-----END CERTIFICATE-----") -client.SetRootCertificateFromString("-----BEGIN CERTIFICATE-----content-----END CERTIFICATE-----") -// ... and so on! - -// Adding Client Certificates, you add one or more certificates -// Sample for creating certificate object -// Parsing public/private key pair from a pair of files. The files must contain PEM encoded data. -cert1, err := tls.X509KeyPair([]byte("-----BEGIN CERTIFICATE-----content-----END CERTIFICATE-----"), []byte("-----BEGIN CERTIFICATE-----content-----END CERTIFICATE-----")) -if err != nil { - log.Fatalf("ERROR client certificate: %s", err) -} -// ... - -// You add one or more certificates -client.SetCertificates(cert1, cert2, cert3) -``` - -#### Proxy Settings - -Default `Go` supports Proxy via environment variable `HTTP_PROXY`. Resty provides support via `SetProxy` & `RemoveProxy`. -Choose as per your need. - -**Client Level Proxy** settings applied to all the request - -```go -// Create a Resty Client -client := resty.New() - -// Setting a Proxy URL and Port -client.SetProxy("http://proxyserver:8888") - -// Want to remove proxy setting -client.RemoveProxy() -``` - -#### Retries - -Resty uses [backoff](http://www.awsarchitectureblog.com/2015/03/backoff.html) -to increase retry intervals after each attempt. - -Usage example: - -```go -// Create a Resty Client -client := resty.New() - -// Retries are configured per client -client. - // Set retry count to non zero to enable retries - SetRetryCount(3). - // You can override initial retry wait time. - // Default is 100 milliseconds. - SetRetryWaitTime(5 * time.Second). - // MaxWaitTime can be overridden as well. - // Default is 2 seconds. - SetRetryMaxWaitTime(20 * time.Second). - // SetRetryAfter sets callback to calculate wait time between retries. - // Default (nil) implies exponential backoff with jitter - SetRetryAfter(func(client *resty.Client, resp *resty.Response) (time.Duration, error) { - return 0, errors.New("quota exceeded") - }) -``` - -By default, resty will retry requests that return a non-nil error during execution. -Therefore, the above setup will result in resty retrying requests with non-nil errors up to 3 times, -with the delay increasing after each attempt. - -You can optionally provide client with [custom retry conditions](https://pkg.go.dev/github.com/go-resty/resty/v2#RetryConditionFunc): - -```go -// Create a Resty Client -client := resty.New() - -client.AddRetryCondition( - // RetryConditionFunc type is for retry condition function - // input: non-nil Response OR request execution error - func(r *resty.Response, err error) bool { - return r.StatusCode() == http.StatusTooManyRequests - }, -) -``` - -The above example will make resty retry requests that end with a `429 Too Many Requests` status code. -It's important to note that when you specify conditions using `AddRetryCondition`, -it will override the default retry behavior, which retries on errors encountered during the request. -If you want to retry on errors encountered during the request, similar to the default behavior, -you'll need to configure it as follows: - -```go -// Create a Resty Client -client := resty.New() - -client.AddRetryCondition( - func(r *resty.Response, err error) bool { - // Including "err != nil" emulates the default retry behavior for errors encountered during the request. - return err != nil || r.StatusCode() == http.StatusTooManyRequests - }, -) -``` - -Multiple retry conditions can be added. -Note that if multiple conditions are specified, a retry will occur if any of the conditions are met. - -It is also possible to use `resty.Backoff(...)` to get arbitrary retry scenarios -implemented. [Reference](retry_test.go). - -#### Allow GET request with Payload - -```go -// Create a Resty Client -client := resty.New() - -// Allow GET request with Payload. This is disabled by default. -client.SetAllowGetMethodPayload(true) -``` - -#### Wanna Multiple Clients - -```go -// Here you go! -// Client 1 -client1 := resty.New() -client1.R().Get("http://httpbin.org") -// ... - -// Client 2 -client2 := resty.New() -client2.R().Head("http://httpbin.org") -// ... - -// Bend it as per your need!!! -``` - -#### Remaining Client Settings & its Options - -```go -// Create a Resty Client -client := resty.New() - -// Unique settings at Client level -//-------------------------------- -// Enable debug mode -client.SetDebug(true) - -// Assign Client TLSClientConfig -// One can set custom root-certificate. Refer: http://golang.org/pkg/crypto/tls/#example_Dial -client.SetTLSClientConfig(&tls.Config{ RootCAs: roots }) - -// or One can disable security check (https) -client.SetTLSClientConfig(&tls.Config{ InsecureSkipVerify: true }) - -// Set client timeout as per your need -client.SetTimeout(1 * time.Minute) - - -// You can override all below settings and options at request level if you want to -//-------------------------------------------------------------------------------- -// Host URL for all request. So you can use relative URL in the request -client.SetBaseURL("http://httpbin.org") - -// Headers for all request -client.SetHeader("Accept", "application/json") -client.SetHeaders(map[string]string{ - "Content-Type": "application/json", - "User-Agent": "My custom User Agent String", - }) - -// Cookies for all request -client.SetCookie(&http.Cookie{ - Name:"go-resty", - Value:"This is cookie value", - Path: "/", - Domain: "sample.com", - MaxAge: 36000, - HttpOnly: true, - Secure: false, - }) -client.SetCookies(cookies) - -// URL query parameters for all request -client.SetQueryParam("user_id", "00001") -client.SetQueryParams(map[string]string{ // sample of those who use this manner - "api_key": "api-key-here", - "api_secret": "api-secret", - }) -client.R().SetQueryString("productId=232&template=fresh-sample&cat=resty&source=google&kw=buy a lot more") - -// Form data for all request. Typically used with POST and PUT -client.SetFormData(map[string]string{ - "access_token": "BC594900-518B-4F7E-AC75-BD37F019E08F", - }) - -// Basic Auth for all request -client.SetBasicAuth("myuser", "mypass") - -// Bearer Auth Token for all request -client.SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F") - -// Enabling Content length value for all request -client.SetContentLength(true) - -// Registering global Error object structure for JSON/XML request -client.SetError(&Error{}) // or resty.SetError(Error{}) -``` - -#### Unix Socket - -```go -unixSocket := "/var/run/my_socket.sock" - -// Create a Go's http.Transport so we can set it in resty. -transport := http.Transport{ - Dial: func(_, _ string) (net.Conn, error) { - return net.Dial("unix", unixSocket) - }, -} - -// Create a Resty Client -client := resty.New() - -// Set the previous transport that we created, set the scheme of the communication to the -// socket and set the unixSocket as the HostURL. -client.SetTransport(&transport).SetScheme("http").SetBaseURL(unixSocket) - -// No need to write the host's URL on the request, just the path. -client.R().Get("http://localhost/index.html") -``` - -#### Bazel Support - -Resty can be built, tested and depended upon via [Bazel](https://bazel.build). -For example, to run all tests: - -```shell -bazel test :resty_test -``` - -#### Mocking http requests using [httpmock](https://github.com/jarcoal/httpmock) library - -In order to mock the http requests when testing your application you -could use the `httpmock` library. - -When using the default resty client, you should pass the client to the library as follow: - -```go -// Create a Resty Client -client := resty.New() - -// Get the underlying HTTP Client and set it to Mock -httpmock.ActivateNonDefault(client.GetClient()) -``` - -More detailed example of mocking resty http requests using ginko could be found [here](https://github.com/jarcoal/httpmock#ginkgo--resty-example). - -## Versioning - -Resty releases versions according to [Semantic Versioning](http://semver.org) - - * Resty v2 does not use `gopkg.in` service for library versioning. - * Resty fully adapted to `go mod` capabilities since `v1.10.0` release. - * Resty v1 series was using `gopkg.in` to provide versioning. `gopkg.in/resty.vX` points to appropriate tagged versions; `X` denotes version series number and it's a stable release for production use. For e.g. `gopkg.in/resty.v0`. - * Development takes place at the master branch. Although the code in master should always compile and test successfully, it might break API's. I aim to maintain backwards compatibility, but sometimes API's and behavior might be changed to fix a bug. - -## Contribution - -I would welcome your contribution! If you find any improvement or issue you want to fix, feel free to send a pull request, I like pull requests that include test cases for fix/enhancement. I have done my best to bring pretty good code coverage. Feel free to write tests. - -BTW, I'd like to know what you think about `Resty`. Kindly open an issue or send me an email; it'd mean a lot to me. - -## Creator - -[Jeevanandam M.](https://github.com/jeevatkm) (jeeva@myjeeva.com) - -## Core Team - -Have a look on [Members](https://github.com/orgs/go-resty/people) page. - -## Contributors - -Have a look on [Contributors](https://github.com/go-resty/resty/graphs/contributors) page. - -## License - -Resty released under MIT license, refer [LICENSE](LICENSE) file. diff --git a/vendor/github.com/go-resty/resty/v2/WORKSPACE b/vendor/github.com/go-resty/resty/v2/WORKSPACE deleted file mode 100644 index 504de14..0000000 --- a/vendor/github.com/go-resty/resty/v2/WORKSPACE +++ /dev/null @@ -1,31 +0,0 @@ -workspace(name = "resty") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "io_bazel_rules_go", - sha256 = "80a98277ad1311dacd837f9b16db62887702e9f1d1c4c9f796d0121a46c8e184", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip", - "https://github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip", - ], -) - -http_archive( - name = "bazel_gazelle", - sha256 = "62ca106be173579c0a167deb23358fdfe71ffa1e4cfdddf5582af26520f1c66f", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.23.0/bazel-gazelle-v0.23.0.tar.gz", - "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.23.0/bazel-gazelle-v0.23.0.tar.gz", - ], -) - -load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") - -go_rules_dependencies() - -go_register_toolchains(version = "1.19") - -load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") - -gazelle_dependencies() diff --git a/vendor/github.com/go-resty/resty/v2/client.go b/vendor/github.com/go-resty/resty/v2/client.go deleted file mode 100644 index 87a88da..0000000 --- a/vendor/github.com/go-resty/resty/v2/client.go +++ /dev/null @@ -1,1486 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "bytes" - "compress/gzip" - "crypto/tls" - "crypto/x509" - "encoding/json" - "encoding/xml" - "errors" - "fmt" - "io" - "math" - "net/http" - "net/url" - "os" - "reflect" - "regexp" - "strings" - "sync" - "time" -) - -const ( - // MethodGet HTTP method - MethodGet = "GET" - - // MethodPost HTTP method - MethodPost = "POST" - - // MethodPut HTTP method - MethodPut = "PUT" - - // MethodDelete HTTP method - MethodDelete = "DELETE" - - // MethodPatch HTTP method - MethodPatch = "PATCH" - - // MethodHead HTTP method - MethodHead = "HEAD" - - // MethodOptions HTTP method - MethodOptions = "OPTIONS" -) - -var ( - hdrUserAgentKey = http.CanonicalHeaderKey("User-Agent") - hdrAcceptKey = http.CanonicalHeaderKey("Accept") - hdrContentTypeKey = http.CanonicalHeaderKey("Content-Type") - hdrContentLengthKey = http.CanonicalHeaderKey("Content-Length") - hdrContentEncodingKey = http.CanonicalHeaderKey("Content-Encoding") - hdrLocationKey = http.CanonicalHeaderKey("Location") - hdrAuthorizationKey = http.CanonicalHeaderKey("Authorization") - hdrWwwAuthenticateKey = http.CanonicalHeaderKey("WWW-Authenticate") - - plainTextType = "text/plain; charset=utf-8" - jsonContentType = "application/json" - formContentType = "application/x-www-form-urlencoded" - - jsonCheck = regexp.MustCompile(`(?i:(application|text)/(.*json.*)(;|$))`) - xmlCheck = regexp.MustCompile(`(?i:(application|text)/(.*xml.*)(;|$))`) - - hdrUserAgentValue = "go-resty/" + Version + " (https://github.com/go-resty/resty)" - bufPool = &sync.Pool{New: func() interface{} { return &bytes.Buffer{} }} -) - -type ( - // RequestMiddleware type is for request middleware, called before a request is sent - RequestMiddleware func(*Client, *Request) error - - // ResponseMiddleware type is for response middleware, called after a response has been received - ResponseMiddleware func(*Client, *Response) error - - // PreRequestHook type is for the request hook, called right before the request is sent - PreRequestHook func(*Client, *http.Request) error - - // RequestLogCallback type is for request logs, called before the request is logged - RequestLogCallback func(*RequestLog) error - - // ResponseLogCallback type is for response logs, called before the response is logged - ResponseLogCallback func(*ResponseLog) error - - // ErrorHook type is for reacting to request errors, called after all retries were attempted - ErrorHook func(*Request, error) - - // SuccessHook type is for reacting to request success - SuccessHook func(*Client, *Response) -) - -// Client struct is used to create a Resty client with client-level settings, -// these settings apply to all the requests raised from the client. -// -// Resty also provides an option to override most of the client settings -// at [Request] level. -type Client struct { - BaseURL string - HostURL string // Deprecated: use BaseURL instead. To be removed in v3.0.0 release. - QueryParam url.Values - FormData url.Values - PathParams map[string]string - RawPathParams map[string]string - Header http.Header - UserInfo *User - Token string - AuthScheme string - Cookies []*http.Cookie - Error reflect.Type - Debug bool - DisableWarn bool - AllowGetMethodPayload bool - RetryCount int - RetryWaitTime time.Duration - RetryMaxWaitTime time.Duration - RetryConditions []RetryConditionFunc - RetryHooks []OnRetryFunc - RetryAfter RetryAfterFunc - RetryResetReaders bool - JSONMarshal func(v interface{}) ([]byte, error) - JSONUnmarshal func(data []byte, v interface{}) error - XMLMarshal func(v interface{}) ([]byte, error) - XMLUnmarshal func(data []byte, v interface{}) error - - // HeaderAuthorizationKey is used to set/access Request Authorization header - // value when `SetAuthToken` option is used. - HeaderAuthorizationKey string - ResponseBodyLimit int - - jsonEscapeHTML bool - setContentLength bool - closeConnection bool - notParseResponse bool - trace bool - debugBodySizeLimit int64 - outputDirectory string - scheme string - log Logger - httpClient *http.Client - proxyURL *url.URL - beforeRequest []RequestMiddleware - udBeforeRequest []RequestMiddleware - udBeforeRequestLock *sync.RWMutex - preReqHook PreRequestHook - successHooks []SuccessHook - afterResponse []ResponseMiddleware - afterResponseLock *sync.RWMutex - requestLog RequestLogCallback - responseLog ResponseLogCallback - errorHooks []ErrorHook - invalidHooks []ErrorHook - panicHooks []ErrorHook - rateLimiter RateLimiter - generateCurlOnDebug bool -} - -// User type is to hold an username and password information -type User struct { - Username, Password string -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Client methods -//___________________________________ - -// SetHostURL method sets the Host URL in the client instance. It will be used with a request -// raised from this client with a relative URL -// -// // Setting HTTP address -// client.SetHostURL("http://myjeeva.com") -// -// // Setting HTTPS address -// client.SetHostURL("https://myjeeva.com") -// -// Deprecated: use [Client.SetBaseURL] instead. To be removed in the v3.0.0 release. -func (c *Client) SetHostURL(url string) *Client { - c.SetBaseURL(url) - return c -} - -// SetBaseURL method sets the Base URL in the client instance. It will be used with a request -// raised from this client with a relative URL -// -// // Setting HTTP address -// client.SetBaseURL("http://myjeeva.com") -// -// // Setting HTTPS address -// client.SetBaseURL("https://myjeeva.com") -func (c *Client) SetBaseURL(url string) *Client { - c.BaseURL = strings.TrimRight(url, "/") - c.HostURL = c.BaseURL - return c -} - -// SetHeader method sets a single header field and its value in the client instance. -// These headers will be applied to all requests from this client instance. -// Also, it can be overridden by request-level header options. -// -// See [Request.SetHeader] or [Request.SetHeaders]. -// -// For Example: To set `Content-Type` and `Accept` as `application/json` -// -// client. -// SetHeader("Content-Type", "application/json"). -// SetHeader("Accept", "application/json") -func (c *Client) SetHeader(header, value string) *Client { - c.Header.Set(header, value) - return c -} - -// SetHeaders method sets multiple header fields and their values at one go in the client instance. -// These headers will be applied to all requests from this client instance. Also, it can be -// overridden at request level headers options. -// -// See [Request.SetHeaders] or [Request.SetHeader]. -// -// For Example: To set `Content-Type` and `Accept` as `application/json` -// -// client.SetHeaders(map[string]string{ -// "Content-Type": "application/json", -// "Accept": "application/json", -// }) -func (c *Client) SetHeaders(headers map[string]string) *Client { - for h, v := range headers { - c.Header.Set(h, v) - } - return c -} - -// SetHeaderVerbatim method sets a single header field and its value verbatim in the current request. -// -// For Example: To set `all_lowercase` and `UPPERCASE` as `available`. -// -// client. -// SetHeaderVerbatim("all_lowercase", "available"). -// SetHeaderVerbatim("UPPERCASE", "available") -func (c *Client) SetHeaderVerbatim(header, value string) *Client { - c.Header[header] = []string{value} - return c -} - -// SetCookieJar method sets custom [http.CookieJar] in the resty client. It's a way to override the default. -// -// For Example, sometimes we don't want to save cookies in API mode so that we can remove the default -// CookieJar in resty client. -// -// client.SetCookieJar(nil) -func (c *Client) SetCookieJar(jar http.CookieJar) *Client { - c.httpClient.Jar = jar - return c -} - -// SetCookie method appends a single cookie to the client instance. -// These cookies will be added to all the requests from this client instance. -// -// client.SetCookie(&http.Cookie{ -// Name:"go-resty", -// Value:"This is cookie value", -// }) -func (c *Client) SetCookie(hc *http.Cookie) *Client { - c.Cookies = append(c.Cookies, hc) - return c -} - -// SetCookies method sets an array of cookies in the client instance. -// These cookies will be added to all the requests from this client instance. -// -// cookies := []*http.Cookie{ -// &http.Cookie{ -// Name:"go-resty-1", -// Value:"This is cookie 1 value", -// }, -// &http.Cookie{ -// Name:"go-resty-2", -// Value:"This is cookie 2 value", -// }, -// } -// -// // Setting a cookies into resty -// client.SetCookies(cookies) -func (c *Client) SetCookies(cs []*http.Cookie) *Client { - c.Cookies = append(c.Cookies, cs...) - return c -} - -// SetQueryParam method sets a single parameter and its value in the client instance. -// It will be formed as a query string for the request. -// -// For Example: `search=kitchen%20papers&size=large` -// -// In the URL after the `?` mark. These query params will be added to all the requests raised from -// this client instance. Also, it can be overridden at the request level. -// -// See [Request.SetQueryParam] or [Request.SetQueryParams]. -// -// client. -// SetQueryParam("search", "kitchen papers"). -// SetQueryParam("size", "large") -func (c *Client) SetQueryParam(param, value string) *Client { - c.QueryParam.Set(param, value) - return c -} - -// SetQueryParams method sets multiple parameters and their values at one go in the client instance. -// It will be formed as a query string for the request. -// -// For Example: `search=kitchen%20papers&size=large` -// -// In the URL after the `?` mark. These query params will be added to all the requests raised from this -// client instance. Also, it can be overridden at the request level. -// -// See [Request.SetQueryParams] or [Request.SetQueryParam]. -// -// client.SetQueryParams(map[string]string{ -// "search": "kitchen papers", -// "size": "large", -// }) -func (c *Client) SetQueryParams(params map[string]string) *Client { - for p, v := range params { - c.SetQueryParam(p, v) - } - return c -} - -// SetFormData method sets Form parameters and their values in the client instance. -// It applies only to HTTP methods `POST` and `PUT`, and the request content type would be set as -// `application/x-www-form-urlencoded`. These form data will be added to all the requests raised from -// this client instance. Also, it can be overridden at the request level. -// -// See [Request.SetFormData]. -// -// client.SetFormData(map[string]string{ -// "access_token": "BC594900-518B-4F7E-AC75-BD37F019E08F", -// "user_id": "3455454545", -// }) -func (c *Client) SetFormData(data map[string]string) *Client { - for k, v := range data { - c.FormData.Set(k, v) - } - return c -} - -// SetBasicAuth method sets the basic authentication header in the HTTP request. For Example: -// -// Authorization: Basic -// -// For Example: To set the header for username "go-resty" and password "welcome" -// -// client.SetBasicAuth("go-resty", "welcome") -// -// This basic auth information is added to all requests from this client instance. -// It can also be overridden at the request level. -// -// See [Request.SetBasicAuth]. -func (c *Client) SetBasicAuth(username, password string) *Client { - c.UserInfo = &User{Username: username, Password: password} - return c -} - -// SetAuthToken method sets the auth token of the `Authorization` header for all HTTP requests. -// The default auth scheme is `Bearer`; it can be customized with the method [Client.SetAuthScheme]. For Example: -// -// Authorization: -// -// For Example: To set auth token BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F -// -// client.SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F") -// -// This auth token gets added to all the requests raised from this client instance. -// Also, it can be overridden at the request level. -// -// See [Request.SetAuthToken]. -func (c *Client) SetAuthToken(token string) *Client { - c.Token = token - return c -} - -// SetAuthScheme method sets the auth scheme type in the HTTP request. For Example: -// -// Authorization: -// -// For Example: To set the scheme to use OAuth -// -// client.SetAuthScheme("OAuth") -// -// This auth scheme gets added to all the requests raised from this client instance. -// Also, it can be overridden at the request level. -// -// Information about auth schemes can be found in [RFC 7235], IANA [HTTP Auth schemes]. -// -// See [Request.SetAuthToken]. -// -// [RFC 7235]: https://tools.ietf.org/html/rfc7235 -// [HTTP Auth schemes]: https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml#authschemes -func (c *Client) SetAuthScheme(scheme string) *Client { - c.AuthScheme = scheme - return c -} - -// SetDigestAuth method sets the Digest Access auth scheme for the client. If a server responds with 401 and sends -// a Digest challenge in the WWW-Authenticate Header, requests will be resent with the appropriate Authorization Header. -// -// For Example: To set the Digest scheme with user "Mufasa" and password "Circle Of Life" -// -// client.SetDigestAuth("Mufasa", "Circle Of Life") -// -// Information about Digest Access Authentication can be found in [RFC 7616]. -// -// See [Request.SetDigestAuth]. -// -// [RFC 7616]: https://datatracker.ietf.org/doc/html/rfc7616 -func (c *Client) SetDigestAuth(username, password string) *Client { - oldTransport := c.httpClient.Transport - c.OnBeforeRequest(func(c *Client, _ *Request) error { - c.httpClient.Transport = &digestTransport{ - digestCredentials: digestCredentials{username, password}, - transport: oldTransport, - } - return nil - }) - c.OnAfterResponse(func(c *Client, _ *Response) error { - c.httpClient.Transport = oldTransport - return nil - }) - return c -} - -// R method creates a new request instance; it's used for Get, Post, Put, Delete, Patch, Head, Options, etc. -func (c *Client) R() *Request { - r := &Request{ - QueryParam: url.Values{}, - FormData: url.Values{}, - Header: http.Header{}, - Cookies: make([]*http.Cookie, 0), - PathParams: map[string]string{}, - RawPathParams: map[string]string{}, - Debug: c.Debug, - - client: c, - multipartFiles: []*File{}, - multipartFields: []*MultipartField{}, - jsonEscapeHTML: c.jsonEscapeHTML, - log: c.log, - responseBodyLimit: c.ResponseBodyLimit, - generateCurlOnDebug: c.generateCurlOnDebug, - } - return r -} - -// NewRequest method is an alias for method `R()`. -func (c *Client) NewRequest() *Request { - return c.R() -} - -// OnBeforeRequest method appends a request middleware to the before request chain. -// The user-defined middlewares are applied before the default Resty request middlewares. -// After all middlewares have been applied, the request is sent from Resty to the host server. -// -// client.OnBeforeRequest(func(c *resty.Client, r *resty.Request) error { -// // Now you have access to the Client and Request instance -// // manipulate it as per your need -// -// return nil // if its successful otherwise return error -// }) -func (c *Client) OnBeforeRequest(m RequestMiddleware) *Client { - c.udBeforeRequestLock.Lock() - defer c.udBeforeRequestLock.Unlock() - - c.udBeforeRequest = append(c.udBeforeRequest, m) - - return c -} - -// OnAfterResponse method appends response middleware to the after-response chain. -// Once we receive a response from the host server, the default Resty response middleware -// gets applied, and then the user-assigned response middleware is applied. -// -// client.OnAfterResponse(func(c *resty.Client, r *resty.Response) error { -// // Now you have access to the Client and Response instance -// // manipulate it as per your need -// -// return nil // if its successful otherwise return error -// }) -func (c *Client) OnAfterResponse(m ResponseMiddleware) *Client { - c.afterResponseLock.Lock() - defer c.afterResponseLock.Unlock() - - c.afterResponse = append(c.afterResponse, m) - - return c -} - -// OnError method adds a callback that will be run whenever a request execution fails. -// This is called after all retries have been attempted (if any). -// If there was a response from the server, the error will be wrapped in [ResponseError] -// which has the last response received from the server. -// -// client.OnError(func(req *resty.Request, err error) { -// if v, ok := err.(*resty.ResponseError); ok { -// // Do something with v.Response -// } -// // Log the error, increment a metric, etc... -// }) -// -// Out of the [Client.OnSuccess], [Client.OnError], [Client.OnInvalid], [Client.OnPanic] -// callbacks, exactly one set will be invoked for each call to [Request.Execute] that completes. -func (c *Client) OnError(h ErrorHook) *Client { - c.errorHooks = append(c.errorHooks, h) - return c -} - -// OnSuccess method adds a callback that will be run whenever a request execution -// succeeds. This is called after all retries have been attempted (if any). -// -// Out of the [Client.OnSuccess], [Client.OnError], [Client.OnInvalid], [Client.OnPanic] -// callbacks, exactly one set will be invoked for each call to [Request.Execute] that completes. -func (c *Client) OnSuccess(h SuccessHook) *Client { - c.successHooks = append(c.successHooks, h) - return c -} - -// OnInvalid method adds a callback that will be run whenever a request execution -// fails before it starts because the request is invalid. -// -// Out of the [Client.OnSuccess], [Client.OnError], [Client.OnInvalid], [Client.OnPanic] -// callbacks, exactly one set will be invoked for each call to [Request.Execute] that completes. -func (c *Client) OnInvalid(h ErrorHook) *Client { - c.invalidHooks = append(c.invalidHooks, h) - return c -} - -// OnPanic method adds a callback that will be run whenever a request execution -// panics. -// -// Out of the [Client.OnSuccess], [Client.OnError], [Client.OnInvalid], [Client.OnPanic] -// callbacks, exactly one set will be invoked for each call to [Request.Execute] that completes. -// -// If an [Client.OnSuccess], [Client.OnError], or [Client.OnInvalid] callback panics, -// then exactly one rule can be violated. -func (c *Client) OnPanic(h ErrorHook) *Client { - c.panicHooks = append(c.panicHooks, h) - return c -} - -// SetPreRequestHook method sets the given pre-request function into a resty client. -// It is called right before the request is fired. -// -// NOTE: Only one pre-request hook can be registered. Use [Client.OnBeforeRequest] for multiple. -func (c *Client) SetPreRequestHook(h PreRequestHook) *Client { - if c.preReqHook != nil { - c.log.Warnf("Overwriting an existing pre-request hook: %s", functionName(h)) - } - c.preReqHook = h - return c -} - -// SetDebug method enables the debug mode on the Resty client. The client logs details -// of every request and response. -// -// client.SetDebug(true) -// -// Also, it can be enabled at the request level for a particular request; see [Request.SetDebug]. -// - For [Request], it logs information such as HTTP verb, Relative URL path, -// Host, Headers, and Body if it has one. -// - For [Response], it logs information such as Status, Response Time, Headers, -// and Body if it has one. -func (c *Client) SetDebug(d bool) *Client { - c.Debug = d - return c -} - -// SetDebugBodyLimit sets the maximum size in bytes for which the response and -// request body will be logged in debug mode. -// -// client.SetDebugBodyLimit(1000000) -func (c *Client) SetDebugBodyLimit(sl int64) *Client { - c.debugBodySizeLimit = sl - return c -} - -// OnRequestLog method sets the request log callback to Resty. Registered callback gets -// called before the resty logs the information. -func (c *Client) OnRequestLog(rl RequestLogCallback) *Client { - if c.requestLog != nil { - c.log.Warnf("Overwriting an existing on-request-log callback from=%s to=%s", - functionName(c.requestLog), functionName(rl)) - } - c.requestLog = rl - return c -} - -// OnResponseLog method sets the response log callback to Resty. Registered callback gets -// called before the resty logs the information. -func (c *Client) OnResponseLog(rl ResponseLogCallback) *Client { - if c.responseLog != nil { - c.log.Warnf("Overwriting an existing on-response-log callback from=%s to=%s", - functionName(c.responseLog), functionName(rl)) - } - c.responseLog = rl - return c -} - -// SetDisableWarn method disables the warning log message on the Resty client. -// -// For example, Resty warns users when BasicAuth is used in non-TLS mode. -// -// client.SetDisableWarn(true) -func (c *Client) SetDisableWarn(d bool) *Client { - c.DisableWarn = d - return c -} - -// SetAllowGetMethodPayload method allows the GET method with payload on the Resty client. -// -// For example, Resty allows the user to send a request with a payload using the HTTP GET method. -// -// client.SetAllowGetMethodPayload(true) -func (c *Client) SetAllowGetMethodPayload(a bool) *Client { - c.AllowGetMethodPayload = a - return c -} - -// SetLogger method sets given writer for logging Resty request and response details. -// -// Compliant to interface [resty.Logger] -func (c *Client) SetLogger(l Logger) *Client { - c.log = l - return c -} - -// SetContentLength method enables the HTTP header `Content-Length` value for every request. -// By default, Resty won't set `Content-Length`. -// -// client.SetContentLength(true) -// -// Also, you have the option to enable a particular request. See [Request.SetContentLength] -func (c *Client) SetContentLength(l bool) *Client { - c.setContentLength = l - return c -} - -// SetTimeout method sets the timeout for a request raised by the client. -// -// client.SetTimeout(time.Duration(1 * time.Minute)) -func (c *Client) SetTimeout(timeout time.Duration) *Client { - c.httpClient.Timeout = timeout - return c -} - -// SetError method registers the global or client common `Error` object into Resty. -// It is used for automatic unmarshalling if the response status code is greater than 399 and -// content type is JSON or XML. It can be a pointer or a non-pointer. -// -// client.SetError(&Error{}) -// // OR -// client.SetError(Error{}) -func (c *Client) SetError(err interface{}) *Client { - c.Error = typeOf(err) - return c -} - -// SetRedirectPolicy method sets the redirect policy for the client. Resty provides ready-to-use -// redirect policies. Wanna create one for yourself, refer to `redirect.go`. -// -// client.SetRedirectPolicy(FlexibleRedirectPolicy(20)) -// -// // Need multiple redirect policies together -// client.SetRedirectPolicy(FlexibleRedirectPolicy(20), DomainCheckRedirectPolicy("host1.com", "host2.net")) -func (c *Client) SetRedirectPolicy(policies ...interface{}) *Client { - for _, p := range policies { - if _, ok := p.(RedirectPolicy); !ok { - c.log.Errorf("%v does not implement resty.RedirectPolicy (missing Apply method)", - functionName(p)) - } - } - - c.httpClient.CheckRedirect = func(req *http.Request, via []*http.Request) error { - for _, p := range policies { - if err := p.(RedirectPolicy).Apply(req, via); err != nil { - return err - } - } - return nil // looks good, go ahead - } - - return c -} - -// SetRetryCount method enables retry on Resty client and allows you -// to set no. of retry count. Resty uses a Backoff mechanism. -func (c *Client) SetRetryCount(count int) *Client { - c.RetryCount = count - return c -} - -// SetRetryWaitTime method sets the default wait time for sleep before retrying -// request. -// -// Default is 100 milliseconds. -func (c *Client) SetRetryWaitTime(waitTime time.Duration) *Client { - c.RetryWaitTime = waitTime - return c -} - -// SetRetryMaxWaitTime method sets the max wait time for sleep before retrying -// request. -// -// Default is 2 seconds. -func (c *Client) SetRetryMaxWaitTime(maxWaitTime time.Duration) *Client { - c.RetryMaxWaitTime = maxWaitTime - return c -} - -// SetRetryAfter sets a callback to calculate the wait time between retries. -// Default (nil) implies exponential backoff with jitter -func (c *Client) SetRetryAfter(callback RetryAfterFunc) *Client { - c.RetryAfter = callback - return c -} - -// SetJSONMarshaler method sets the JSON marshaler function to marshal the request body. -// By default, Resty uses [encoding/json] package to marshal the request body. -func (c *Client) SetJSONMarshaler(marshaler func(v interface{}) ([]byte, error)) *Client { - c.JSONMarshal = marshaler - return c -} - -// SetJSONUnmarshaler method sets the JSON unmarshaler function to unmarshal the response body. -// By default, Resty uses [encoding/json] package to unmarshal the response body. -func (c *Client) SetJSONUnmarshaler(unmarshaler func(data []byte, v interface{}) error) *Client { - c.JSONUnmarshal = unmarshaler - return c -} - -// SetXMLMarshaler method sets the XML marshaler function to marshal the request body. -// By default, Resty uses [encoding/xml] package to marshal the request body. -func (c *Client) SetXMLMarshaler(marshaler func(v interface{}) ([]byte, error)) *Client { - c.XMLMarshal = marshaler - return c -} - -// SetXMLUnmarshaler method sets the XML unmarshaler function to unmarshal the response body. -// By default, Resty uses [encoding/xml] package to unmarshal the response body. -func (c *Client) SetXMLUnmarshaler(unmarshaler func(data []byte, v interface{}) error) *Client { - c.XMLUnmarshal = unmarshaler - return c -} - -// AddRetryCondition method adds a retry condition function to an array of functions -// that are checked to determine if the request is retried. The request will -// retry if any functions return true and the error is nil. -// -// NOTE: These retry conditions are applied on all requests made using this Client. -// For [Request] specific retry conditions, check [Request.AddRetryCondition] -func (c *Client) AddRetryCondition(condition RetryConditionFunc) *Client { - c.RetryConditions = append(c.RetryConditions, condition) - return c -} - -// AddRetryAfterErrorCondition adds the basic condition of retrying after encountering -// an error from the HTTP response -func (c *Client) AddRetryAfterErrorCondition() *Client { - c.AddRetryCondition(func(response *Response, err error) bool { - return response.IsError() - }) - return c -} - -// AddRetryHook adds a side-effecting retry hook to an array of hooks -// that will be executed on each retry. -func (c *Client) AddRetryHook(hook OnRetryFunc) *Client { - c.RetryHooks = append(c.RetryHooks, hook) - return c -} - -// SetRetryResetReaders method enables the Resty client to seek the start of all -// file readers are given as multipart files if the object implements [io.ReadSeeker]. -func (c *Client) SetRetryResetReaders(b bool) *Client { - c.RetryResetReaders = b - return c -} - -// SetTLSClientConfig method sets TLSClientConfig for underlying client Transport. -// -// For Example: -// -// // One can set a custom root certificate. Refer: http://golang.org/pkg/crypto/tls/#example_Dial -// client.SetTLSClientConfig(&tls.Config{ RootCAs: roots }) -// -// // or One can disable security check (https) -// client.SetTLSClientConfig(&tls.Config{ InsecureSkipVerify: true }) -// -// NOTE: This method overwrites existing [http.Transport.TLSClientConfig] -func (c *Client) SetTLSClientConfig(config *tls.Config) *Client { - transport, err := c.Transport() - if err != nil { - c.log.Errorf("%v", err) - return c - } - transport.TLSClientConfig = config - return c -} - -// SetProxy method sets the Proxy URL and Port for the Resty client. -// -// client.SetProxy("http://proxyserver:8888") -// -// OR you could also set Proxy via environment variable, refer to [http.ProxyFromEnvironment] -func (c *Client) SetProxy(proxyURL string) *Client { - transport, err := c.Transport() - if err != nil { - c.log.Errorf("%v", err) - return c - } - - pURL, err := url.Parse(proxyURL) - if err != nil { - c.log.Errorf("%v", err) - return c - } - - c.proxyURL = pURL - transport.Proxy = http.ProxyURL(c.proxyURL) - return c -} - -// RemoveProxy method removes the proxy configuration from the Resty client -// -// client.RemoveProxy() -func (c *Client) RemoveProxy() *Client { - transport, err := c.Transport() - if err != nil { - c.log.Errorf("%v", err) - return c - } - c.proxyURL = nil - transport.Proxy = nil - return c -} - -// SetCertificates method helps to conveniently set client certificates into Resty. -func (c *Client) SetCertificates(certs ...tls.Certificate) *Client { - config, err := c.tlsConfig() - if err != nil { - c.log.Errorf("%v", err) - return c - } - config.Certificates = append(config.Certificates, certs...) - return c -} - -// SetRootCertificate method helps to add one or more root certificates into the Resty client -// -// client.SetRootCertificate("/path/to/root/pemFile.pem") -func (c *Client) SetRootCertificate(pemFilePath string) *Client { - rootPemData, err := os.ReadFile(pemFilePath) - if err != nil { - c.log.Errorf("%v", err) - return c - } - c.handleCAs("root", rootPemData) - return c -} - -// SetRootCertificateFromString method helps to add one or more root certificates -// into the Resty client -// -// client.SetRootCertificateFromString("pem certs content") -func (c *Client) SetRootCertificateFromString(pemCerts string) *Client { - c.handleCAs("root", []byte(pemCerts)) - return c -} - -// SetClientRootCertificate method helps to add one or more client's root -// certificates into the Resty client -// -// client.SetClientRootCertificate("/path/to/root/pemFile.pem") -func (c *Client) SetClientRootCertificate(pemFilePath string) *Client { - rootPemData, err := os.ReadFile(pemFilePath) - if err != nil { - c.log.Errorf("%v", err) - return c - } - c.handleCAs("client", rootPemData) - return c -} - -// SetClientRootCertificateFromString method helps to add one or more clients -// root certificates into the Resty client -// -// client.SetClientRootCertificateFromString("pem certs content") -func (c *Client) SetClientRootCertificateFromString(pemCerts string) *Client { - c.handleCAs("client", []byte(pemCerts)) - return c -} - -func (c *Client) handleCAs(scope string, permCerts []byte) { - config, err := c.tlsConfig() - if err != nil { - c.log.Errorf("%v", err) - return - } - - switch scope { - case "root": - if config.RootCAs == nil { - config.RootCAs = x509.NewCertPool() - } - config.RootCAs.AppendCertsFromPEM(permCerts) - case "client": - if config.ClientCAs == nil { - config.ClientCAs = x509.NewCertPool() - } - config.ClientCAs.AppendCertsFromPEM(permCerts) - } -} - -// SetOutputDirectory method sets the output directory for saving HTTP responses in a file. -// Resty creates one if the output directory does not exist. This setting is optional, -// if you plan to use the absolute path in [Request.SetOutput] and can used together. -// -// client.SetOutputDirectory("/save/http/response/here") -func (c *Client) SetOutputDirectory(dirPath string) *Client { - c.outputDirectory = dirPath - return c -} - -// SetRateLimiter sets an optional [RateLimiter]. If set, the rate limiter will control -// all requests were made by this client. -func (c *Client) SetRateLimiter(rl RateLimiter) *Client { - c.rateLimiter = rl - return c -} - -// SetTransport method sets custom [http.Transport] or any [http.RoundTripper] -// compatible interface implementation in the Resty client. -// -// transport := &http.Transport{ -// // something like Proxying to httptest.Server, etc... -// Proxy: func(req *http.Request) (*url.URL, error) { -// return url.Parse(server.URL) -// }, -// } -// client.SetTransport(transport) -// -// NOTE: -// - If transport is not the type of `*http.Transport`, then you may not be able to -// take advantage of some of the Resty client settings. -// - It overwrites the Resty client transport instance and its configurations. -func (c *Client) SetTransport(transport http.RoundTripper) *Client { - if transport != nil { - c.httpClient.Transport = transport - } - return c -} - -// SetScheme method sets a custom scheme for the Resty client. It's a way to override the default. -// -// client.SetScheme("http") -func (c *Client) SetScheme(scheme string) *Client { - if !IsStringEmpty(scheme) { - c.scheme = strings.TrimSpace(scheme) - } - return c -} - -// SetCloseConnection method sets variable `Close` in HTTP request struct with the given -// value. More info: https://golang.org/src/net/http/request.go -func (c *Client) SetCloseConnection(close bool) *Client { - c.closeConnection = close - return c -} - -// SetDoNotParseResponse method instructs Resty not to parse the response body automatically. -// Resty exposes the raw response body as [io.ReadCloser]. If you use it, do not -// forget to close the body, otherwise, you might get into connection leaks, and connection -// reuse may not happen. -// -// NOTE: [Response] middlewares are not executed using this option. You have -// taken over the control of response parsing from Resty. -func (c *Client) SetDoNotParseResponse(notParse bool) *Client { - c.notParseResponse = notParse - return c -} - -// SetPathParam method sets a single URL path key-value pair in the -// Resty client instance. -// -// client.SetPathParam("userId", "sample@sample.com") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/sample@sample.com/details -// -// It replaces the value of the key while composing the request URL. -// The value will be escaped using [url.PathEscape] function. -// -// It can be overridden at the request level, -// see [Request.SetPathParam] or [Request.SetPathParams] -func (c *Client) SetPathParam(param, value string) *Client { - c.PathParams[param] = value - return c -} - -// SetPathParams method sets multiple URL path key-value pairs at one go in the -// Resty client instance. -// -// client.SetPathParams(map[string]string{ -// "userId": "sample@sample.com", -// "subAccountId": "100002", -// "path": "groups/developers", -// }) -// -// Result: -// URL - /v1/users/{userId}/{subAccountId}/{path}/details -// Composed URL - /v1/users/sample@sample.com/100002/groups%2Fdevelopers/details -// -// It replaces the value of the key while composing the request URL. -// The values will be escaped using [url.PathEscape] function. -// -// It can be overridden at the request level, -// see [Request.SetPathParam] or [Request.SetPathParams] -func (c *Client) SetPathParams(params map[string]string) *Client { - for p, v := range params { - c.SetPathParam(p, v) - } - return c -} - -// SetRawPathParam method sets a single URL path key-value pair in the -// Resty client instance. -// -// client.SetPathParam("userId", "sample@sample.com") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/sample@sample.com/details -// -// client.SetPathParam("path", "groups/developers") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/groups%2Fdevelopers/details -// -// It replaces the value of the key while composing the request URL. -// The value will be used as it is and will not be escaped. -// -// It can be overridden at the request level, -// see [Request.SetRawPathParam] or [Request.SetRawPathParams] -func (c *Client) SetRawPathParam(param, value string) *Client { - c.RawPathParams[param] = value - return c -} - -// SetRawPathParams method sets multiple URL path key-value pairs at one go in the -// Resty client instance. -// -// client.SetPathParams(map[string]string{ -// "userId": "sample@sample.com", -// "subAccountId": "100002", -// "path": "groups/developers", -// }) -// -// Result: -// URL - /v1/users/{userId}/{subAccountId}/{path}/details -// Composed URL - /v1/users/sample@sample.com/100002/groups/developers/details -// -// It replaces the value of the key while composing the request URL. -// The values will be used as they are and will not be escaped. -// -// It can be overridden at the request level, -// see [Request.SetRawPathParam] or [Request.SetRawPathParams] -func (c *Client) SetRawPathParams(params map[string]string) *Client { - for p, v := range params { - c.SetRawPathParam(p, v) - } - return c -} - -// SetJSONEscapeHTML method enables or disables the HTML escape on JSON marshal. -// By default, escape HTML is false. -// -// NOTE: This option only applies to the standard JSON Marshaller used by Resty. -// -// It can be overridden at the request level, see [Client.SetJSONEscapeHTML] -func (c *Client) SetJSONEscapeHTML(b bool) *Client { - c.jsonEscapeHTML = b - return c -} - -// SetResponseBodyLimit method sets a maximum body size limit in bytes on response, -// avoid reading too much data to memory. -// -// Client will return [resty.ErrResponseBodyTooLarge] if the body size of the body -// in the uncompressed response is larger than the limit. -// Body size limit will not be enforced in the following cases: -// - ResponseBodyLimit <= 0, which is the default behavior. -// - [Request.SetOutput] is called to save response data to the file. -// - "DoNotParseResponse" is set for client or request. -// -// It can be overridden at the request level; see [Request.SetResponseBodyLimit] -func (c *Client) SetResponseBodyLimit(v int) *Client { - c.ResponseBodyLimit = v - return c -} - -// EnableTrace method enables the Resty client trace for the requests fired from -// the client using [httptrace.ClientTrace] and provides insights. -// -// client := resty.New().EnableTrace() -// -// resp, err := client.R().Get("https://httpbin.org/get") -// fmt.Println("Error:", err) -// fmt.Println("Trace Info:", resp.Request.TraceInfo()) -// -// The method [Request.EnableTrace] is also available to get trace info for a single request. -func (c *Client) EnableTrace() *Client { - c.trace = true - return c -} - -// DisableTrace method disables the Resty client trace. Refer to [Client.EnableTrace]. -func (c *Client) DisableTrace() *Client { - c.trace = false - return c -} - -// EnableGenerateCurlOnDebug method enables the generation of CURL commands in the debug log. -// It works in conjunction with debug mode. -// -// NOTE: Use with care. -// - Potential to leak sensitive data from [Request] and [Response] in the debug log. -// - Beware of memory usage since the request body is reread. -func (c *Client) EnableGenerateCurlOnDebug() *Client { - c.generateCurlOnDebug = true - return c -} - -// DisableGenerateCurlOnDebug method disables the option set by [Client.EnableGenerateCurlOnDebug]. -func (c *Client) DisableGenerateCurlOnDebug() *Client { - c.generateCurlOnDebug = false - return c -} - -// IsProxySet method returns the true is proxy is set from the Resty client; otherwise -// false. By default, the proxy is set from the environment variable; refer to [http.ProxyFromEnvironment]. -func (c *Client) IsProxySet() bool { - return c.proxyURL != nil -} - -// GetClient method returns the underlying [http.Client] used by the Resty. -func (c *Client) GetClient() *http.Client { - return c.httpClient -} - -// Clone returns a clone of the original client. -// -// NOTE: Use with care: -// - Interface values are not deeply cloned. Thus, both the original and the -// clone will use the same value. -// - This function is not safe for concurrent use. You should only use this method -// when you are sure that any other goroutine is not using the client. -func (c *Client) Clone() *Client { - // dereference the pointer and copy the value - cc := *c - - // lock values should not be copied - thus new values are used. - cc.afterResponseLock = &sync.RWMutex{} - cc.udBeforeRequestLock = &sync.RWMutex{} - return &cc -} - -func (c *Client) executeBefore(req *Request) error { - // Lock the user-defined pre-request hooks. - c.udBeforeRequestLock.RLock() - defer c.udBeforeRequestLock.RUnlock() - - // Lock the post-request hooks. - c.afterResponseLock.RLock() - defer c.afterResponseLock.RUnlock() - - // Apply Request middleware - var err error - - // user defined on before request methods - // to modify the *resty.Request object - for _, f := range c.udBeforeRequest { - if err = f(c, req); err != nil { - return wrapNoRetryErr(err) - } - } - - // If there is a rate limiter set for this client, the Execute call - // will return an error if the rate limit is exceeded. - if req.client.rateLimiter != nil { - if !req.client.rateLimiter.Allow() { - return wrapNoRetryErr(ErrRateLimitExceeded) - } - } - - // resty middlewares - for _, f := range c.beforeRequest { - if err = f(c, req); err != nil { - return wrapNoRetryErr(err) - } - } - - if hostHeader := req.Header.Get("Host"); hostHeader != "" { - req.RawRequest.Host = hostHeader - } - - // call pre-request if defined - if c.preReqHook != nil { - if err = c.preReqHook(c, req.RawRequest); err != nil { - return wrapNoRetryErr(err) - } - } - - if err = requestLogger(c, req); err != nil { - return wrapNoRetryErr(err) - } - - req.RawRequest.Body = newRequestBodyReleaser(req.RawRequest.Body, req.bodyBuf) - return nil -} - -// Executes method executes the given `Request` object and returns -// response or error. -func (c *Client) execute(req *Request) (*Response, error) { - if err := c.executeBefore(req); err != nil { - return nil, err - } - - req.Time = time.Now() - resp, err := c.httpClient.Do(req.RawRequest) - - response := &Response{ - Request: req, - RawResponse: resp, - } - - if err != nil || req.notParseResponse || c.notParseResponse { - response.setReceivedAt() - if logErr := responseLogger(c, response); logErr != nil { - return response, wrapErrors(logErr, err) - } - if err != nil { - return response, err - } - return response, nil - } - - if !req.isSaveResponse { - defer closeq(resp.Body) - body := resp.Body - - // GitHub #142 & #187 - if strings.EqualFold(resp.Header.Get(hdrContentEncodingKey), "gzip") && resp.ContentLength != 0 { - if _, ok := body.(*gzip.Reader); !ok { - body, err = gzip.NewReader(body) - if err != nil { - err = wrapErrors(responseLogger(c, response), err) - response.setReceivedAt() - return response, err - } - defer closeq(body) - } - } - - if response.body, err = readAllWithLimit(body, req.responseBodyLimit); err != nil { - err = wrapErrors(responseLogger(c, response), err) - response.setReceivedAt() - return response, err - } - - response.size = int64(len(response.body)) - } - - response.setReceivedAt() // after we read the body - - // Apply Response middleware - err = responseLogger(c, response) - if err != nil { - return response, wrapNoRetryErr(err) - } - - for _, f := range c.afterResponse { - if err = f(c, response); err != nil { - break - } - } - - return response, wrapNoRetryErr(err) -} - -var ErrResponseBodyTooLarge = errors.New("resty: response body too large") - -// https://github.com/golang/go/issues/51115 -// [io.LimitedReader] can only return [io.EOF] -func readAllWithLimit(r io.Reader, maxSize int) ([]byte, error) { - if maxSize <= 0 { - return io.ReadAll(r) - } - - var buf [512]byte // make buf stack allocated - result := make([]byte, 0, 512) - total := 0 - for { - n, err := r.Read(buf[:]) - total += n - if total > maxSize { - return nil, ErrResponseBodyTooLarge - } - - if err != nil { - if err == io.EOF { - result = append(result, buf[:n]...) - break - } - return nil, err - } - - result = append(result, buf[:n]...) - } - - return result, nil -} - -// getting TLS client config if not exists then create one -func (c *Client) tlsConfig() (*tls.Config, error) { - transport, err := c.Transport() - if err != nil { - return nil, err - } - if transport.TLSClientConfig == nil { - transport.TLSClientConfig = &tls.Config{} - } - return transport.TLSClientConfig, nil -} - -// Transport method returns [http.Transport] currently in use or error -// in case the currently used `transport` is not a [http.Transport]. -// -// Since v2.8.0 has become exported method. -func (c *Client) Transport() (*http.Transport, error) { - if transport, ok := c.httpClient.Transport.(*http.Transport); ok { - return transport, nil - } - return nil, errors.New("current transport is not an *http.Transport instance") -} - -// just an internal helper method -func (c *Client) outputLogTo(w io.Writer) *Client { - c.log.(*logger).l.SetOutput(w) - return c -} - -// ResponseError is a wrapper that includes the server response with an error. -// Neither the err nor the response should be nil. -type ResponseError struct { - Response *Response - Err error -} - -func (e *ResponseError) Error() string { - return e.Err.Error() -} - -func (e *ResponseError) Unwrap() error { - return e.Err -} - -// Helper to run errorHooks hooks. -// It wraps the error in a [ResponseError] if the resp is not nil -// so hooks can access it. -func (c *Client) onErrorHooks(req *Request, resp *Response, err error) { - if err != nil { - if resp != nil { // wrap with ResponseError - err = &ResponseError{Response: resp, Err: err} - } - for _, h := range c.errorHooks { - h(req, err) - } - } else { - for _, h := range c.successHooks { - h(c, resp) - } - } -} - -// Helper to run panicHooks hooks. -func (c *Client) onPanicHooks(req *Request, err error) { - for _, h := range c.panicHooks { - h(req, err) - } -} - -// Helper to run invalidHooks hooks. -func (c *Client) onInvalidHooks(req *Request, err error) { - for _, h := range c.invalidHooks { - h(req, err) - } -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// File struct and its methods -//_______________________________________________________________________ - -// File struct represents file information for multipart request -type File struct { - Name string - ParamName string - io.Reader -} - -// String method returns the string value of current file details -func (f *File) String() string { - return fmt.Sprintf("ParamName: %v; FileName: %v", f.ParamName, f.Name) -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// MultipartField struct -//_______________________________________________________________________ - -// MultipartField struct represents the custom data part for a multipart request -type MultipartField struct { - Param string - FileName string - ContentType string - io.Reader -} - -func createClient(hc *http.Client) *Client { - if hc.Transport == nil { - hc.Transport = createTransport(nil) - } - - c := &Client{ // not setting lang default values - QueryParam: url.Values{}, - FormData: url.Values{}, - Header: http.Header{}, - Cookies: make([]*http.Cookie, 0), - RetryWaitTime: defaultWaitTime, - RetryMaxWaitTime: defaultMaxWaitTime, - PathParams: make(map[string]string), - RawPathParams: make(map[string]string), - JSONMarshal: json.Marshal, - JSONUnmarshal: json.Unmarshal, - XMLMarshal: xml.Marshal, - XMLUnmarshal: xml.Unmarshal, - HeaderAuthorizationKey: http.CanonicalHeaderKey("Authorization"), - - jsonEscapeHTML: true, - httpClient: hc, - debugBodySizeLimit: math.MaxInt32, - udBeforeRequestLock: &sync.RWMutex{}, - afterResponseLock: &sync.RWMutex{}, - } - - // Logger - c.SetLogger(createLogger()) - - // default before request middlewares - c.beforeRequest = []RequestMiddleware{ - parseRequestURL, - parseRequestHeader, - parseRequestBody, - createHTTPRequest, - addCredentials, - createCurlCmd, - } - - // user defined request middlewares - c.udBeforeRequest = []RequestMiddleware{} - - // default after response middlewares - c.afterResponse = []ResponseMiddleware{ - parseResponseBody, - saveResponseIntoFile, - } - - return c -} diff --git a/vendor/github.com/go-resty/resty/v2/digest.go b/vendor/github.com/go-resty/resty/v2/digest.go deleted file mode 100644 index 3a08477..0000000 --- a/vendor/github.com/go-resty/resty/v2/digest.go +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com) -// 2023 Segev Dagan (https://github.com/segevda) -// 2024 Philipp Wolfer (https://github.com/phw) -// All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "crypto/md5" - "crypto/rand" - "crypto/sha256" - "crypto/sha512" - "errors" - "fmt" - "hash" - "io" - "net/http" - "strings" -) - -var ( - ErrDigestBadChallenge = errors.New("digest: challenge is bad") - ErrDigestCharset = errors.New("digest: unsupported charset") - ErrDigestAlgNotSupported = errors.New("digest: algorithm is not supported") - ErrDigestQopNotSupported = errors.New("digest: no supported qop in list") - ErrDigestNoQop = errors.New("digest: qop must be specified") -) - -var hashFuncs = map[string]func() hash.Hash{ - "": md5.New, - "MD5": md5.New, - "MD5-sess": md5.New, - "SHA-256": sha256.New, - "SHA-256-sess": sha256.New, - "SHA-512-256": sha512.New, - "SHA-512-256-sess": sha512.New, -} - -type digestCredentials struct { - username, password string -} - -type digestTransport struct { - digestCredentials - transport http.RoundTripper -} - -func (dt *digestTransport) RoundTrip(req *http.Request) (*http.Response, error) { - // Copy the request, so we don't modify the input. - req2 := new(http.Request) - *req2 = *req - req2.Header = make(http.Header) - for k, s := range req.Header { - req2.Header[k] = s - } - - // Fix http: ContentLength=xxx with Body length 0 - if req2.Body == nil { - req2.ContentLength = 0 - } else if req2.GetBody != nil { - var err error - req2.Body, err = req2.GetBody() - if err != nil { - return nil, err - } - } - - // Make a request to get the 401 that contains the challenge. - resp, err := dt.transport.RoundTrip(req) - if err != nil || resp.StatusCode != http.StatusUnauthorized { - return resp, err - } - chal := resp.Header.Get(hdrWwwAuthenticateKey) - if chal == "" { - return resp, ErrDigestBadChallenge - } - - c, err := parseChallenge(chal) - if err != nil { - return resp, err - } - - // Form credentials based on the challenge - cr := dt.newCredentials(req2, c) - auth, err := cr.authorize() - if err != nil { - return resp, err - } - err = resp.Body.Close() - if err != nil { - return nil, err - } - - // Make authenticated request - req2.Header.Set(hdrAuthorizationKey, auth) - return dt.transport.RoundTrip(req2) -} - -func (dt *digestTransport) newCredentials(req *http.Request, c *challenge) *credentials { - return &credentials{ - username: dt.username, - userhash: c.userhash, - realm: c.realm, - nonce: c.nonce, - digestURI: req.URL.RequestURI(), - algorithm: c.algorithm, - sessionAlg: strings.HasSuffix(c.algorithm, "-sess"), - opaque: c.opaque, - messageQop: c.qop, - nc: 0, - method: req.Method, - password: dt.password, - } -} - -type challenge struct { - realm string - domain string - nonce string - opaque string - stale string - algorithm string - qop string - userhash string -} - -func (c *challenge) setValue(k, v string) error { - switch k { - case "realm": - c.realm = v - case "domain": - c.domain = v - case "nonce": - c.nonce = v - case "opaque": - c.opaque = v - case "stale": - c.stale = v - case "algorithm": - c.algorithm = v - case "qop": - c.qop = v - case "charset": - if strings.ToUpper(v) != "UTF-8" { - return ErrDigestCharset - } - case "userhash": - c.userhash = v - default: - return ErrDigestBadChallenge - } - return nil -} - -func parseChallenge(input string) (*challenge, error) { - const ws = " \n\r\t" - s := strings.Trim(input, ws) - if !strings.HasPrefix(s, "Digest ") { - return nil, ErrDigestBadChallenge - } - s = strings.Trim(s[7:], ws) - c := &challenge{} - b := strings.Builder{} - key := "" - quoted := false - for _, r := range s { - switch r { - case '"': - quoted = !quoted - case ',': - if quoted { - b.WriteRune(r) - } else { - val := strings.Trim(b.String(), ws) - b.Reset() - if err := c.setValue(key, val); err != nil { - return nil, err - } - key = "" - } - case '=': - if quoted { - b.WriteRune(r) - } else { - key = strings.Trim(b.String(), ws) - b.Reset() - } - default: - b.WriteRune(r) - } - } - if quoted || (key == "" && b.Len() > 0) { - return nil, ErrDigestBadChallenge - } - if key != "" { - val := strings.Trim(b.String(), ws) - if err := c.setValue(key, val); err != nil { - return nil, err - } - } - return c, nil -} - -type credentials struct { - username string - userhash string - realm string - nonce string - digestURI string - algorithm string - sessionAlg bool - cNonce string - opaque string - messageQop string - nc int - method string - password string -} - -func (c *credentials) authorize() (string, error) { - if _, ok := hashFuncs[c.algorithm]; !ok { - return "", ErrDigestAlgNotSupported - } - - if err := c.validateQop(); err != nil { - return "", err - } - - resp, err := c.resp() - if err != nil { - return "", err - } - - sl := make([]string, 0, 10) - if c.userhash == "true" { - // RFC 7616 3.4.4 - c.username = c.h(fmt.Sprintf("%s:%s", c.username, c.realm)) - sl = append(sl, fmt.Sprintf(`userhash=%s`, c.userhash)) - } - sl = append(sl, fmt.Sprintf(`username="%s"`, c.username)) - sl = append(sl, fmt.Sprintf(`realm="%s"`, c.realm)) - sl = append(sl, fmt.Sprintf(`nonce="%s"`, c.nonce)) - sl = append(sl, fmt.Sprintf(`uri="%s"`, c.digestURI)) - sl = append(sl, fmt.Sprintf(`response="%s"`, resp)) - sl = append(sl, fmt.Sprintf(`algorithm=%s`, c.algorithm)) - if c.opaque != "" { - sl = append(sl, fmt.Sprintf(`opaque="%s"`, c.opaque)) - } - if c.messageQop != "" { - sl = append(sl, fmt.Sprintf("qop=%s", c.messageQop)) - sl = append(sl, fmt.Sprintf("nc=%08x", c.nc)) - sl = append(sl, fmt.Sprintf(`cnonce="%s"`, c.cNonce)) - } - - return fmt.Sprintf("Digest %s", strings.Join(sl, ", ")), nil -} - -func (c *credentials) validateQop() error { - // Currently only supporting auth quality of protection. TODO: add auth-int support - // NOTE: cURL support auth-int qop for requests other than POST and PUT (i.e. w/o body) by hashing an empty string - // is this applicable for resty? see: https://github.com/curl/curl/blob/307b7543ea1e73ab04e062bdbe4b5bb409eaba3a/lib/vauth/digest.c#L774 - if c.messageQop == "" { - return ErrDigestNoQop - } - possibleQops := strings.Split(c.messageQop, ",") - var authSupport bool - for _, qop := range possibleQops { - qop = strings.TrimSpace(qop) - if qop == "auth" { - authSupport = true - break - } - } - if !authSupport { - return ErrDigestQopNotSupported - } - - c.messageQop = "auth" - - return nil -} - -func (c *credentials) h(data string) string { - hfCtor := hashFuncs[c.algorithm] - hf := hfCtor() - _, _ = hf.Write([]byte(data)) // Hash.Write never returns an error - return fmt.Sprintf("%x", hf.Sum(nil)) -} - -func (c *credentials) resp() (string, error) { - c.nc++ - - b := make([]byte, 16) - _, err := io.ReadFull(rand.Reader, b) - if err != nil { - return "", err - } - c.cNonce = fmt.Sprintf("%x", b)[:32] - - ha1 := c.ha1() - ha2 := c.ha2() - - return c.kd(ha1, fmt.Sprintf("%s:%08x:%s:%s:%s", - c.nonce, c.nc, c.cNonce, c.messageQop, ha2)), nil -} - -func (c *credentials) kd(secret, data string) string { - return c.h(fmt.Sprintf("%s:%s", secret, data)) -} - -// RFC 7616 3.4.2 -func (c *credentials) ha1() string { - ret := c.h(fmt.Sprintf("%s:%s:%s", c.username, c.realm, c.password)) - if c.sessionAlg { - return c.h(fmt.Sprintf("%s:%s:%s", ret, c.nonce, c.cNonce)) - } - - return ret -} - -// RFC 7616 3.4.3 -func (c *credentials) ha2() string { - // currently no auth-int support - return c.h(fmt.Sprintf("%s:%s", c.method, c.digestURI)) -} diff --git a/vendor/github.com/go-resty/resty/v2/middleware.go b/vendor/github.com/go-resty/resty/v2/middleware.go deleted file mode 100644 index 4f57915..0000000 --- a/vendor/github.com/go-resty/resty/v2/middleware.go +++ /dev/null @@ -1,612 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "bytes" - "errors" - "fmt" - "io" - "mime/multipart" - "net/http" - "net/url" - "os" - "path/filepath" - "reflect" - "strconv" - "strings" - "time" -) - -const debugRequestLogKey = "__restyDebugRequestLog" - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Request Middleware(s) -//_______________________________________________________________________ - -func parseRequestURL(c *Client, r *Request) error { - if l := len(c.PathParams) + len(c.RawPathParams) + len(r.PathParams) + len(r.RawPathParams); l > 0 { - params := make(map[string]string, l) - - // GitHub #103 Path Params - for p, v := range r.PathParams { - params[p] = url.PathEscape(v) - } - for p, v := range c.PathParams { - if _, ok := params[p]; !ok { - params[p] = url.PathEscape(v) - } - } - - // GitHub #663 Raw Path Params - for p, v := range r.RawPathParams { - if _, ok := params[p]; !ok { - params[p] = v - } - } - for p, v := range c.RawPathParams { - if _, ok := params[p]; !ok { - params[p] = v - } - } - - if len(params) > 0 { - var prev int - buf := acquireBuffer() - defer releaseBuffer(buf) - // search for the next or first opened curly bracket - for curr := strings.Index(r.URL, "{"); curr == 0 || curr > prev; curr = prev + strings.Index(r.URL[prev:], "{") { - // write everything from the previous position up to the current - if curr > prev { - buf.WriteString(r.URL[prev:curr]) - } - // search for the closed curly bracket from current position - next := curr + strings.Index(r.URL[curr:], "}") - // if not found, then write the remainder and exit - if next < curr { - buf.WriteString(r.URL[curr:]) - prev = len(r.URL) - break - } - // special case for {}, without parameter's name - if next == curr+1 { - buf.WriteString("{}") - } else { - // check for the replacement - key := r.URL[curr+1 : next] - value, ok := params[key] - /// keep the original string if the replacement not found - if !ok { - value = r.URL[curr : next+1] - } - buf.WriteString(value) - } - - // set the previous position after the closed curly bracket - prev = next + 1 - if prev >= len(r.URL) { - break - } - } - if buf.Len() > 0 { - // write remainder - if prev < len(r.URL) { - buf.WriteString(r.URL[prev:]) - } - r.URL = buf.String() - } - } - } - - // Parsing request URL - reqURL, err := url.Parse(r.URL) - if err != nil { - return err - } - - // If Request.URL is relative path then added c.HostURL into - // the request URL otherwise Request.URL will be used as-is - if !reqURL.IsAbs() { - r.URL = reqURL.String() - if len(r.URL) > 0 && r.URL[0] != '/' { - r.URL = "/" + r.URL - } - - // TODO: change to use c.BaseURL only in v3.0.0 - baseURL := c.BaseURL - if len(baseURL) == 0 { - baseURL = c.HostURL - } - reqURL, err = url.Parse(baseURL + r.URL) - if err != nil { - return err - } - } - - // GH #407 && #318 - if reqURL.Scheme == "" && len(c.scheme) > 0 { - reqURL.Scheme = c.scheme - } - - // Adding Query Param - if len(c.QueryParam)+len(r.QueryParam) > 0 { - for k, v := range c.QueryParam { - // skip query parameter if it was set in request - if _, ok := r.QueryParam[k]; ok { - continue - } - - r.QueryParam[k] = v[:] - } - - // GitHub #123 Preserve query string order partially. - // Since not feasible in `SetQuery*` resty methods, because - // standard package `url.Encode(...)` sorts the query params - // alphabetically - if len(r.QueryParam) > 0 { - if IsStringEmpty(reqURL.RawQuery) { - reqURL.RawQuery = r.QueryParam.Encode() - } else { - reqURL.RawQuery = reqURL.RawQuery + "&" + r.QueryParam.Encode() - } - } - } - - r.URL = reqURL.String() - - return nil -} - -func parseRequestHeader(c *Client, r *Request) error { - for k, v := range c.Header { - if _, ok := r.Header[k]; ok { - continue - } - r.Header[k] = v[:] - } - - if IsStringEmpty(r.Header.Get(hdrUserAgentKey)) { - r.Header.Set(hdrUserAgentKey, hdrUserAgentValue) - } - - if ct := r.Header.Get(hdrContentTypeKey); IsStringEmpty(r.Header.Get(hdrAcceptKey)) && !IsStringEmpty(ct) && (IsJSONType(ct) || IsXMLType(ct)) { - r.Header.Set(hdrAcceptKey, r.Header.Get(hdrContentTypeKey)) - } - - return nil -} - -func parseRequestBody(c *Client, r *Request) error { - if isPayloadSupported(r.Method, c.AllowGetMethodPayload) { - switch { - case r.isMultiPart: // Handling Multipart - if err := handleMultipart(c, r); err != nil { - return err - } - case len(c.FormData) > 0 || len(r.FormData) > 0: // Handling Form Data - handleFormData(c, r) - case r.Body != nil: // Handling Request body - handleContentType(c, r) - - if err := handleRequestBody(c, r); err != nil { - return err - } - } - } - - // by default resty won't set content length, you can if you want to :) - if c.setContentLength || r.setContentLength { - if r.bodyBuf == nil { - r.Header.Set(hdrContentLengthKey, "0") - } else { - r.Header.Set(hdrContentLengthKey, strconv.Itoa(r.bodyBuf.Len())) - } - } - - return nil -} - -func createHTTPRequest(c *Client, r *Request) (err error) { - if r.bodyBuf == nil { - if reader, ok := r.Body.(io.Reader); ok && isPayloadSupported(r.Method, c.AllowGetMethodPayload) { - r.RawRequest, err = http.NewRequest(r.Method, r.URL, reader) - } else if c.setContentLength || r.setContentLength { - r.RawRequest, err = http.NewRequest(r.Method, r.URL, http.NoBody) - } else { - r.RawRequest, err = http.NewRequest(r.Method, r.URL, nil) - } - } else { - // fix data race: must deep copy. - bodyBuf := bytes.NewBuffer(append([]byte{}, r.bodyBuf.Bytes()...)) - r.RawRequest, err = http.NewRequest(r.Method, r.URL, bodyBuf) - } - - if err != nil { - return - } - - // Assign close connection option - r.RawRequest.Close = c.closeConnection - - // Add headers into http request - r.RawRequest.Header = r.Header - - // Add cookies from client instance into http request - for _, cookie := range c.Cookies { - r.RawRequest.AddCookie(cookie) - } - - // Add cookies from request instance into http request - for _, cookie := range r.Cookies { - r.RawRequest.AddCookie(cookie) - } - - // Enable trace - if c.trace || r.trace { - r.clientTrace = &clientTrace{} - r.ctx = r.clientTrace.createContext(r.Context()) - } - - // Use context if it was specified - if r.ctx != nil { - r.RawRequest = r.RawRequest.WithContext(r.ctx) - } - - bodyCopy, err := getBodyCopy(r) - if err != nil { - return err - } - - // assign get body func for the underlying raw request instance - r.RawRequest.GetBody = func() (io.ReadCloser, error) { - if bodyCopy != nil { - return io.NopCloser(bytes.NewReader(bodyCopy.Bytes())), nil - } - return nil, nil - } - - return -} - -func addCredentials(c *Client, r *Request) error { - var isBasicAuth bool - // Basic Auth - if r.UserInfo != nil { // takes precedence - r.RawRequest.SetBasicAuth(r.UserInfo.Username, r.UserInfo.Password) - isBasicAuth = true - } else if c.UserInfo != nil { - r.RawRequest.SetBasicAuth(c.UserInfo.Username, c.UserInfo.Password) - isBasicAuth = true - } - - if !c.DisableWarn { - if isBasicAuth && !strings.HasPrefix(r.URL, "https") { - r.log.Warnf("Using Basic Auth in HTTP mode is not secure, use HTTPS") - } - } - - // Set the Authorization Header Scheme - var authScheme string - if !IsStringEmpty(r.AuthScheme) { - authScheme = r.AuthScheme - } else if !IsStringEmpty(c.AuthScheme) { - authScheme = c.AuthScheme - } else { - authScheme = "Bearer" - } - - // Build the Token Auth header - if !IsStringEmpty(r.Token) { // takes precedence - r.RawRequest.Header.Set(c.HeaderAuthorizationKey, authScheme+" "+r.Token) - } else if !IsStringEmpty(c.Token) { - r.RawRequest.Header.Set(c.HeaderAuthorizationKey, authScheme+" "+c.Token) - } - - return nil -} - -func createCurlCmd(c *Client, r *Request) (err error) { - if r.Debug && r.generateCurlOnDebug { - if r.resultCurlCmd == nil { - r.resultCurlCmd = new(string) - } - *r.resultCurlCmd = buildCurlRequest(r.RawRequest, c.httpClient.Jar) - } - return nil -} - -func requestLogger(c *Client, r *Request) error { - if r.Debug { - rr := r.RawRequest - rh := copyHeaders(rr.Header) - if c.GetClient().Jar != nil { - for _, cookie := range c.GetClient().Jar.Cookies(r.RawRequest.URL) { - s := fmt.Sprintf("%s=%s", cookie.Name, cookie.Value) - if c := rh.Get("Cookie"); c != "" { - rh.Set("Cookie", c+"; "+s) - } else { - rh.Set("Cookie", s) - } - } - } - rl := &RequestLog{Header: rh, Body: r.fmtBodyString(c.debugBodySizeLimit)} - if c.requestLog != nil { - if err := c.requestLog(rl); err != nil { - return err - } - } - - reqLog := "\n==============================================================================\n" - - if r.Debug && r.generateCurlOnDebug { - reqLog += "~~~ REQUEST(CURL) ~~~\n" + - fmt.Sprintf(" %v\n", *r.resultCurlCmd) - } - - reqLog += "~~~ REQUEST ~~~\n" + - fmt.Sprintf("%s %s %s\n", r.Method, rr.URL.RequestURI(), rr.Proto) + - fmt.Sprintf("HOST : %s\n", rr.URL.Host) + - fmt.Sprintf("HEADERS:\n%s\n", composeHeaders(c, r, rl.Header)) + - fmt.Sprintf("BODY :\n%v\n", rl.Body) + - "------------------------------------------------------------------------------\n" - - r.initValuesMap() - r.values[debugRequestLogKey] = reqLog - } - - return nil -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Response Middleware(s) -//_______________________________________________________________________ - -func responseLogger(c *Client, res *Response) error { - if res.Request.Debug { - rl := &ResponseLog{Header: copyHeaders(res.Header()), Body: res.fmtBodyString(c.debugBodySizeLimit)} - if c.responseLog != nil { - if err := c.responseLog(rl); err != nil { - return err - } - } - - debugLog := res.Request.values[debugRequestLogKey].(string) - debugLog += "~~~ RESPONSE ~~~\n" + - fmt.Sprintf("STATUS : %s\n", res.Status()) + - fmt.Sprintf("PROTO : %s\n", res.Proto()) + - fmt.Sprintf("RECEIVED AT : %v\n", res.ReceivedAt().Format(time.RFC3339Nano)) + - fmt.Sprintf("TIME DURATION: %v\n", res.Time()) + - "HEADERS :\n" + - composeHeaders(c, res.Request, rl.Header) + "\n" - if res.Request.isSaveResponse { - debugLog += "BODY :\n***** RESPONSE WRITTEN INTO FILE *****\n" - } else { - debugLog += fmt.Sprintf("BODY :\n%v\n", rl.Body) - } - debugLog += "==============================================================================\n" - - res.Request.log.Debugf("%s", debugLog) - } - - return nil -} - -func parseResponseBody(c *Client, res *Response) (err error) { - if res.StatusCode() == http.StatusNoContent { - res.Request.Error = nil - return - } - // Handles only JSON or XML content type - ct := firstNonEmpty(res.Request.forceContentType, res.Header().Get(hdrContentTypeKey), res.Request.fallbackContentType) - if IsJSONType(ct) || IsXMLType(ct) { - // HTTP status code > 199 and < 300, considered as Result - if res.IsSuccess() { - res.Request.Error = nil - if res.Request.Result != nil { - err = Unmarshalc(c, ct, res.body, res.Request.Result) - return - } - } - - // HTTP status code > 399, considered as Error - if res.IsError() { - // global error interface - if res.Request.Error == nil && c.Error != nil { - res.Request.Error = reflect.New(c.Error).Interface() - } - - if res.Request.Error != nil { - unmarshalErr := Unmarshalc(c, ct, res.body, res.Request.Error) - if unmarshalErr != nil { - c.log.Warnf("Cannot unmarshal response body: %s", unmarshalErr) - } - } - } - } - - return -} - -func handleMultipart(c *Client, r *Request) error { - r.bodyBuf = acquireBuffer() - w := multipart.NewWriter(r.bodyBuf) - - // Set boundary if not set by user - if r.multipartBoundary != "" { - if err := w.SetBoundary(r.multipartBoundary); err != nil { - return err - } - } - - for k, v := range c.FormData { - for _, iv := range v { - if err := w.WriteField(k, iv); err != nil { - return err - } - } - } - - for k, v := range r.FormData { - for _, iv := range v { - if strings.HasPrefix(k, "@") { // file - if err := addFile(w, k[1:], iv); err != nil { - return err - } - } else { // form value - if err := w.WriteField(k, iv); err != nil { - return err - } - } - } - } - - // #21 - adding io.Reader support - for _, f := range r.multipartFiles { - if err := addFileReader(w, f); err != nil { - return err - } - } - - // GitHub #130 adding multipart field support with content type - for _, mf := range r.multipartFields { - if err := addMultipartFormField(w, mf); err != nil { - return err - } - } - - r.Header.Set(hdrContentTypeKey, w.FormDataContentType()) - return w.Close() -} - -func handleFormData(c *Client, r *Request) { - for k, v := range c.FormData { - if _, ok := r.FormData[k]; ok { - continue - } - r.FormData[k] = v[:] - } - - r.bodyBuf = acquireBuffer() - r.bodyBuf.WriteString(r.FormData.Encode()) - r.Header.Set(hdrContentTypeKey, formContentType) - r.isFormData = true -} - -func handleContentType(c *Client, r *Request) { - contentType := r.Header.Get(hdrContentTypeKey) - if IsStringEmpty(contentType) { - contentType = DetectContentType(r.Body) - r.Header.Set(hdrContentTypeKey, contentType) - } -} - -func handleRequestBody(c *Client, r *Request) error { - var bodyBytes []byte - r.bodyBuf = nil - - switch body := r.Body.(type) { - case io.Reader: - if c.setContentLength || r.setContentLength { // keep backward compatibility - r.bodyBuf = acquireBuffer() - if _, err := r.bodyBuf.ReadFrom(body); err != nil { - return err - } - r.Body = nil - } else { - // Otherwise buffer less processing for `io.Reader`, sounds good. - return nil - } - case []byte: - bodyBytes = body - case string: - bodyBytes = []byte(body) - default: - contentType := r.Header.Get(hdrContentTypeKey) - kind := kindOf(r.Body) - var err error - if IsJSONType(contentType) && (kind == reflect.Struct || kind == reflect.Map || kind == reflect.Slice) { - r.bodyBuf, err = jsonMarshal(c, r, r.Body) - } else if IsXMLType(contentType) && (kind == reflect.Struct) { - bodyBytes, err = c.XMLMarshal(r.Body) - } - if err != nil { - return err - } - } - - if bodyBytes == nil && r.bodyBuf == nil { - return errors.New("unsupported 'Body' type/value") - } - - // []byte into Buffer - if bodyBytes != nil && r.bodyBuf == nil { - r.bodyBuf = acquireBuffer() - _, _ = r.bodyBuf.Write(bodyBytes) - } - - return nil -} - -func saveResponseIntoFile(c *Client, res *Response) error { - if res.Request.isSaveResponse { - file := "" - - if len(c.outputDirectory) > 0 && !filepath.IsAbs(res.Request.outputFile) { - file += c.outputDirectory + string(filepath.Separator) - } - - file = filepath.Clean(file + res.Request.outputFile) - if err := createDirectory(filepath.Dir(file)); err != nil { - return err - } - - outFile, err := os.Create(file) - if err != nil { - return err - } - defer closeq(outFile) - - // io.Copy reads maximum 32kb size, it is perfect for large file download too - defer closeq(res.RawResponse.Body) - - written, err := io.Copy(outFile, res.RawResponse.Body) - if err != nil { - return err - } - - res.size = written - } - - return nil -} - -func getBodyCopy(r *Request) (*bytes.Buffer, error) { - // If r.bodyBuf present, return the copy - if r.bodyBuf != nil { - bodyCopy := acquireBuffer() - if _, err := io.Copy(bodyCopy, bytes.NewReader(r.bodyBuf.Bytes())); err != nil { - // cannot use io.Copy(bodyCopy, r.bodyBuf) because io.Copy reset r.bodyBuf - return nil, err - } - return bodyCopy, nil - } - - // Maybe body is `io.Reader`. - // Note: Resty user have to watchout for large body size of `io.Reader` - if r.RawRequest.Body != nil { - b, err := io.ReadAll(r.RawRequest.Body) - if err != nil { - return nil, err - } - - // Restore the Body - closeq(r.RawRequest.Body) - r.RawRequest.Body = io.NopCloser(bytes.NewBuffer(b)) - - // Return the Body bytes - return bytes.NewBuffer(b), nil - } - return nil, nil -} diff --git a/vendor/github.com/go-resty/resty/v2/redirect.go b/vendor/github.com/go-resty/resty/v2/redirect.go deleted file mode 100644 index bb016e2..0000000 --- a/vendor/github.com/go-resty/resty/v2/redirect.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "errors" - "fmt" - "net" - "net/http" - "strings" -) - -var ( - ErrAutoRedirectDisabled = errors.New("auto redirect is disabled") -) - -type ( - // RedirectPolicy to regulate the redirects in the Resty client. - // Objects implementing the [RedirectPolicy] interface can be registered as - // - // Apply function should return nil to continue the redirect journey; otherwise - // return error to stop the redirect. - RedirectPolicy interface { - Apply(req *http.Request, via []*http.Request) error - } - - // The [RedirectPolicyFunc] type is an adapter to allow the use of ordinary - // functions as [RedirectPolicy]. If `f` is a function with the appropriate - // signature, RedirectPolicyFunc(f) is a RedirectPolicy object that calls `f`. - RedirectPolicyFunc func(*http.Request, []*http.Request) error -) - -// Apply calls f(req, via). -func (f RedirectPolicyFunc) Apply(req *http.Request, via []*http.Request) error { - return f(req, via) -} - -// NoRedirectPolicy is used to disable redirects in the Resty client -// -// resty.SetRedirectPolicy(NoRedirectPolicy()) -func NoRedirectPolicy() RedirectPolicy { - return RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error { - return ErrAutoRedirectDisabled - }) -} - -// FlexibleRedirectPolicy method is convenient for creating several redirect policies for Resty clients. -// -// resty.SetRedirectPolicy(FlexibleRedirectPolicy(20)) -func FlexibleRedirectPolicy(noOfRedirect int) RedirectPolicy { - return RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error { - if len(via) >= noOfRedirect { - return fmt.Errorf("stopped after %d redirects", noOfRedirect) - } - checkHostAndAddHeaders(req, via[0]) - return nil - }) -} - -// DomainCheckRedirectPolicy method is convenient for defining domain name redirect rules in Resty clients. -// Redirect is allowed only for the host mentioned in the policy. -// -// resty.SetRedirectPolicy(DomainCheckRedirectPolicy("host1.com", "host2.org", "host3.net")) -func DomainCheckRedirectPolicy(hostnames ...string) RedirectPolicy { - hosts := make(map[string]bool) - for _, h := range hostnames { - hosts[strings.ToLower(h)] = true - } - - fn := RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error { - if ok := hosts[getHostname(req.URL.Host)]; !ok { - return errors.New("redirect is not allowed as per DomainCheckRedirectPolicy") - } - - return nil - }) - - return fn -} - -func getHostname(host string) (hostname string) { - if strings.Index(host, ":") > 0 { - host, _, _ = net.SplitHostPort(host) - } - hostname = strings.ToLower(host) - return -} - -// By default, Golang will not redirect request headers. -// After reading through the various discussion comments from the thread - -// https://github.com/golang/go/issues/4800 -// Resty will add all the headers during a redirect for the same host and -// adds library user-agent if the Host is different. -func checkHostAndAddHeaders(cur *http.Request, pre *http.Request) { - curHostname := getHostname(cur.URL.Host) - preHostname := getHostname(pre.URL.Host) - if strings.EqualFold(curHostname, preHostname) { - for key, val := range pre.Header { - cur.Header[key] = val - } - } else { // only library User-Agent header is added - cur.Header.Set(hdrUserAgentKey, hdrUserAgentValue) - } -} diff --git a/vendor/github.com/go-resty/resty/v2/request.go b/vendor/github.com/go-resty/resty/v2/request.go deleted file mode 100644 index 1834071..0000000 --- a/vendor/github.com/go-resty/resty/v2/request.go +++ /dev/null @@ -1,1176 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "bytes" - "context" - "encoding/json" - "encoding/xml" - "fmt" - "io" - "net" - "net/http" - "net/url" - "reflect" - "strings" - "time" -) - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Request struct and methods -//_______________________________________________________________________ - -// Request struct is used to compose and fire individual requests from -// Resty client. The [Request] provides an option to override client-level -// settings and also an option for the request composition. -type Request struct { - URL string - Method string - Token string - AuthScheme string - QueryParam url.Values - FormData url.Values - PathParams map[string]string - RawPathParams map[string]string - Header http.Header - Time time.Time - Body interface{} - Result interface{} - resultCurlCmd *string - Error interface{} - RawRequest *http.Request - SRV *SRVRecord - UserInfo *User - Cookies []*http.Cookie - Debug bool - - // Attempt is to represent the request attempt made during a Resty - // request execution flow, including retry count. - Attempt int - - isMultiPart bool - isFormData bool - setContentLength bool - isSaveResponse bool - notParseResponse bool - jsonEscapeHTML bool - trace bool - outputFile string - fallbackContentType string - forceContentType string - ctx context.Context - values map[string]interface{} - client *Client - bodyBuf *bytes.Buffer - clientTrace *clientTrace - log Logger - multipartBoundary string - multipartFiles []*File - multipartFields []*MultipartField - retryConditions []RetryConditionFunc - responseBodyLimit int - generateCurlOnDebug bool -} - -// GenerateCurlCommand method generates the CURL command for the request. -func (r *Request) GenerateCurlCommand() string { - if !(r.Debug && r.generateCurlOnDebug) { - return "" - } - - if r.resultCurlCmd != nil { - return *r.resultCurlCmd - } - - if r.RawRequest == nil { - r.client.executeBefore(r) // mock with r.Get("/") - } - if r.resultCurlCmd == nil { - r.resultCurlCmd = new(string) - } - *r.resultCurlCmd = buildCurlRequest(r.RawRequest, r.client.httpClient.Jar) - return *r.resultCurlCmd -} - -// Context method returns the Context if it is already set in the [Request] -// otherwise, it creates a new one using [context.Background]. -func (r *Request) Context() context.Context { - if r.ctx == nil { - return context.Background() - } - return r.ctx -} - -// SetContext method sets the [context.Context] for current [Request]. It allows -// to interrupt the request execution if `ctx.Done()` channel is closed. -// See https://blog.golang.org/context article and the package [context] -// documentation. -func (r *Request) SetContext(ctx context.Context) *Request { - r.ctx = ctx - return r -} - -// SetHeader method sets a single header field and its value in the current request. -// -// For Example: To set `Content-Type` and `Accept` as `application/json`. -// -// client.R(). -// SetHeader("Content-Type", "application/json"). -// SetHeader("Accept", "application/json") -// -// It overrides the header value set at the client instance level. -func (r *Request) SetHeader(header, value string) *Request { - r.Header.Set(header, value) - return r -} - -// SetHeaders method sets multiple header fields and their values at one go in the current request. -// -// For Example: To set `Content-Type` and `Accept` as `application/json` -// -// client.R(). -// SetHeaders(map[string]string{ -// "Content-Type": "application/json", -// "Accept": "application/json", -// }) -// -// It overrides the header value set at the client instance level. -func (r *Request) SetHeaders(headers map[string]string) *Request { - for h, v := range headers { - r.SetHeader(h, v) - } - return r -} - -// SetHeaderMultiValues sets multiple header fields and their values as a list of strings in the current request. -// -// For Example: To set `Accept` as `text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8` -// -// client.R(). -// SetHeaderMultiValues(map[string][]string{ -// "Accept": []string{"text/html", "application/xhtml+xml", "application/xml;q=0.9", "image/webp", "*/*;q=0.8"}, -// }) -// -// It overrides the header value set at the client instance level. -func (r *Request) SetHeaderMultiValues(headers map[string][]string) *Request { - for key, values := range headers { - r.SetHeader(key, strings.Join(values, ", ")) - } - return r -} - -// SetHeaderVerbatim method sets a single header field and its value verbatim in the current request. -// -// For Example: To set `all_lowercase` and `UPPERCASE` as `available`. -// -// client.R(). -// SetHeaderVerbatim("all_lowercase", "available"). -// SetHeaderVerbatim("UPPERCASE", "available") -// -// It overrides the header value set at the client instance level. -func (r *Request) SetHeaderVerbatim(header, value string) *Request { - r.Header[header] = []string{value} - return r -} - -// SetQueryParam method sets a single parameter and its value in the current request. -// It will be formed as a query string for the request. -// -// For Example: `search=kitchen%20papers&size=large` in the URL after the `?` mark. -// -// client.R(). -// SetQueryParam("search", "kitchen papers"). -// SetQueryParam("size", "large") -// -// It overrides the query parameter value set at the client instance level. -func (r *Request) SetQueryParam(param, value string) *Request { - r.QueryParam.Set(param, value) - return r -} - -// SetQueryParams method sets multiple parameters and their values at one go in the current request. -// It will be formed as a query string for the request. -// -// For Example: `search=kitchen%20papers&size=large` in the URL after the `?` mark. -// -// client.R(). -// SetQueryParams(map[string]string{ -// "search": "kitchen papers", -// "size": "large", -// }) -// -// It overrides the query parameter value set at the client instance level. -func (r *Request) SetQueryParams(params map[string]string) *Request { - for p, v := range params { - r.SetQueryParam(p, v) - } - return r -} - -// SetQueryParamsFromValues method appends multiple parameters with multi-value -// ([url.Values]) at one go in the current request. It will be formed as -// query string for the request. -// -// For Example: `status=pending&status=approved&status=open` in the URL after the `?` mark. -// -// client.R(). -// SetQueryParamsFromValues(url.Values{ -// "status": []string{"pending", "approved", "open"}, -// }) -// -// It overrides the query parameter value set at the client instance level. -func (r *Request) SetQueryParamsFromValues(params url.Values) *Request { - for p, v := range params { - for _, pv := range v { - r.QueryParam.Add(p, pv) - } - } - return r -} - -// SetQueryString method provides the ability to use string as an input to set URL query string for the request. -// -// client.R(). -// SetQueryString("productId=232&template=fresh-sample&cat=resty&source=google&kw=buy a lot more") -// -// It overrides the query parameter value set at the client instance level. -func (r *Request) SetQueryString(query string) *Request { - params, err := url.ParseQuery(strings.TrimSpace(query)) - if err == nil { - for p, v := range params { - for _, pv := range v { - r.QueryParam.Add(p, pv) - } - } - } else { - r.log.Errorf("%v", err) - } - return r -} - -// SetFormData method sets Form parameters and their values for the current request. -// It applies only to HTTP methods `POST` and `PUT`, and by default requests -// content type would be set as `application/x-www-form-urlencoded`. -// -// client.R(). -// SetFormData(map[string]string{ -// "access_token": "BC594900-518B-4F7E-AC75-BD37F019E08F", -// "user_id": "3455454545", -// }) -// -// It overrides the form data value set at the client instance level. -func (r *Request) SetFormData(data map[string]string) *Request { - for k, v := range data { - r.FormData.Set(k, v) - } - return r -} - -// SetFormDataFromValues method appends multiple form parameters with multi-value -// ([url.Values]) at one go in the current request. -// -// client.R(). -// SetFormDataFromValues(url.Values{ -// "search_criteria": []string{"book", "glass", "pencil"}, -// }) -// -// It overrides the form data value set at the client instance level. -func (r *Request) SetFormDataFromValues(data url.Values) *Request { - for k, v := range data { - for _, kv := range v { - r.FormData.Add(k, kv) - } - } - return r -} - -// SetBody method sets the request body for the request. It supports various practical needs as easy. -// It's quite handy and powerful. Supported request body data types are `string`, -// `[]byte`, `struct`, `map`, `slice` and [io.Reader]. -// -// Body value can be pointer or non-pointer. Automatic marshalling for JSON and XML content type, if it is `struct`, `map`, or `slice`. -// -// NOTE: [io.Reader] is processed in bufferless mode while sending a request. -// -// For Example: -// -// `struct` gets marshaled based on the request header `Content-Type`. -// -// client.R(). -// SetBody(User{ -// Username: "jeeva@myjeeva.com", -// Password: "welcome2resty", -// }) -// -// 'map` gets marshaled based on the request header `Content-Type`. -// -// client.R(). -// SetBody(map[string]interface{}{ -// "username": "jeeva@myjeeva.com", -// "password": "welcome2resty", -// "address": &Address{ -// Address1: "1111 This is my street", -// Address2: "Apt 201", -// City: "My City", -// State: "My State", -// ZipCode: 00000, -// }, -// }) -// -// `string` as a body input. Suitable for any need as a string input. -// -// client.R(). -// SetBody(`{ -// "username": "jeeva@getrightcare.com", -// "password": "admin" -// }`) -// -// `[]byte` as a body input. Suitable for raw requests such as file upload, serialize & deserialize, etc. -// -// client.R(). -// SetBody([]byte("This is my raw request, sent as-is")) -// -// and so on. -func (r *Request) SetBody(body interface{}) *Request { - r.Body = body - return r -} - -// SetResult method is to register the response `Result` object for automatic -// unmarshalling of the HTTP response if the response status code is -// between 200 and 299, and the content type is JSON or XML. -// -// Note: [Request.SetResult] input can be a pointer or non-pointer. -// -// The pointer with handle -// -// authToken := &AuthToken{} -// client.R().SetResult(authToken) -// -// // Can be accessed via - -// fmt.Println(authToken) OR fmt.Println(response.Result().(*AuthToken)) -// -// OR - -// -// The pointer without handle or non-pointer -// -// client.R().SetResult(&AuthToken{}) -// // OR -// client.R().SetResult(AuthToken{}) -// -// // Can be accessed via - -// fmt.Println(response.Result().(*AuthToken)) -func (r *Request) SetResult(res interface{}) *Request { - if res != nil { - r.Result = getPointer(res) - } - return r -} - -// SetError method is to register the request `Error` object for automatic unmarshalling for the request, -// if the response status code is greater than 399 and the content type is either JSON or XML. -// -// NOTE: [Request.SetError] input can be a pointer or non-pointer. -// -// client.R().SetError(&AuthError{}) -// // OR -// client.R().SetError(AuthError{}) -// -// Accessing an error value from response instance. -// -// response.Error().(*AuthError) -// -// If this request Error object is nil, Resty will use the client-level error object Type if it is set. -func (r *Request) SetError(err interface{}) *Request { - r.Error = getPointer(err) - return r -} - -// SetFile method sets a single file field name and its path for multipart upload. -// -// client.R(). -// SetFile("my_file", "/Users/jeeva/Gas Bill - Sep.pdf") -func (r *Request) SetFile(param, filePath string) *Request { - r.isMultiPart = true - r.FormData.Set("@"+param, filePath) - return r -} - -// SetFiles method sets multiple file field names and their paths for multipart uploads. -// -// client.R(). -// SetFiles(map[string]string{ -// "my_file1": "/Users/jeeva/Gas Bill - Sep.pdf", -// "my_file2": "/Users/jeeva/Electricity Bill - Sep.pdf", -// "my_file3": "/Users/jeeva/Water Bill - Sep.pdf", -// }) -func (r *Request) SetFiles(files map[string]string) *Request { - r.isMultiPart = true - for f, fp := range files { - r.FormData.Set("@"+f, fp) - } - return r -} - -// SetFileReader method is to set a file using [io.Reader] for multipart upload. -// -// client.R(). -// SetFileReader("profile_img", "my-profile-img.png", bytes.NewReader(profileImgBytes)). -// SetFileReader("notes", "user-notes.txt", bytes.NewReader(notesBytes)) -func (r *Request) SetFileReader(param, fileName string, reader io.Reader) *Request { - r.isMultiPart = true - r.multipartFiles = append(r.multipartFiles, &File{ - Name: fileName, - ParamName: param, - Reader: reader, - }) - return r -} - -// SetMultipartFormData method allows simple form data to be attached to the request -// as `multipart:form-data` -func (r *Request) SetMultipartFormData(data map[string]string) *Request { - for k, v := range data { - r = r.SetMultipartField(k, "", "", strings.NewReader(v)) - } - - return r -} - -// SetMultipartField method sets custom data with Content-Type using [io.Reader] for multipart upload. -func (r *Request) SetMultipartField(param, fileName, contentType string, reader io.Reader) *Request { - r.isMultiPart = true - r.multipartFields = append(r.multipartFields, &MultipartField{ - Param: param, - FileName: fileName, - ContentType: contentType, - Reader: reader, - }) - return r -} - -// SetMultipartFields method sets multiple data fields using [io.Reader] for multipart upload. -// -// For Example: -// -// client.R().SetMultipartFields( -// &resty.MultipartField{ -// Param: "uploadManifest1", -// FileName: "upload-file-1.json", -// ContentType: "application/json", -// Reader: strings.NewReader(`{"input": {"name": "Uploaded document 1", "_filename" : ["file1.txt"]}}`), -// }, -// &resty.MultipartField{ -// Param: "uploadManifest2", -// FileName: "upload-file-2.json", -// ContentType: "application/json", -// Reader: strings.NewReader(`{"input": {"name": "Uploaded document 2", "_filename" : ["file2.txt"]}}`), -// }) -// -// If you have a `slice` of fields already, then call- -// -// client.R().SetMultipartFields(fields...) -func (r *Request) SetMultipartFields(fields ...*MultipartField) *Request { - r.isMultiPart = true - r.multipartFields = append(r.multipartFields, fields...) - return r -} - -// SetMultipartBoundary method sets the custom multipart boundary for the multipart request. -// Typically, the `mime/multipart` package generates a random multipart boundary if not provided. -func (r *Request) SetMultipartBoundary(boundary string) *Request { - r.multipartBoundary = boundary - return r -} - -// SetContentLength method sets the current request's HTTP header `Content-Length` value. -// By default, Resty won't set `Content-Length`. -// -// See [Client.SetContentLength] -// -// client.R().SetContentLength(true) -// -// It overrides the value set at the client instance level. -func (r *Request) SetContentLength(l bool) *Request { - r.setContentLength = l - return r -} - -// SetBasicAuth method sets the basic authentication header in the current HTTP request. -// -// For Example: -// -// Authorization: Basic -// -// To set the header for username "go-resty" and password "welcome" -// -// client.R().SetBasicAuth("go-resty", "welcome") -// -// It overrides the credentials set by method [Client.SetBasicAuth]. -func (r *Request) SetBasicAuth(username, password string) *Request { - r.UserInfo = &User{Username: username, Password: password} - return r -} - -// SetAuthToken method sets the auth token header(Default Scheme: Bearer) in the current HTTP request. Header example: -// -// Authorization: Bearer -// -// For Example: To set auth token BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F -// -// client.R().SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F") -// -// It overrides the Auth token set by method [Client.SetAuthToken]. -func (r *Request) SetAuthToken(token string) *Request { - r.Token = token - return r -} - -// SetAuthScheme method sets the auth token scheme type in the HTTP request. -// -// Example Header value structure: -// -// Authorization: -// -// For Example: To set the scheme to use OAuth -// -// client.R().SetAuthScheme("OAuth") -// -// // The outcome will be - -// Authorization: OAuth -// -// Information about Auth schemes can be found in [RFC 7235], IANA [HTTP Auth schemes] -// -// It overrides the `Authorization` scheme set by method [Client.SetAuthScheme]. -// -// [RFC 7235]: https://tools.ietf.org/html/rfc7235 -// [HTTP Auth schemes]: https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml#authschemes -func (r *Request) SetAuthScheme(scheme string) *Request { - r.AuthScheme = scheme - return r -} - -// SetDigestAuth method sets the Digest Access auth scheme for the HTTP request. -// If a server responds with 401 and sends a Digest challenge in the WWW-Authenticate Header, -// the request will be resent with the appropriate Authorization Header. -// -// For Example: To set the Digest scheme with username "Mufasa" and password "Circle Of Life" -// -// client.R().SetDigestAuth("Mufasa", "Circle Of Life") -// -// Information about Digest Access Authentication can be found in [RFC 7616] -// -// It overrides the digest username and password set by method [Client.SetDigestAuth]. -// -// [RFC 7616]: https://datatracker.ietf.org/doc/html/rfc7616 -func (r *Request) SetDigestAuth(username, password string) *Request { - oldTransport := r.client.httpClient.Transport - r.client.OnBeforeRequest(func(c *Client, _ *Request) error { - c.httpClient.Transport = &digestTransport{ - digestCredentials: digestCredentials{username, password}, - transport: oldTransport, - } - return nil - }) - r.client.OnAfterResponse(func(c *Client, _ *Response) error { - c.httpClient.Transport = oldTransport - return nil - }) - - return r -} - -// SetOutput method sets the output file for the current HTTP request. The current -// HTTP response will be saved in the given file. It is similar to the `curl -o` flag. -// -// Absolute path or relative path can be used. -// -// If it is a relative path, then the output file goes under the output directory, as mentioned -// in the [Client.SetOutputDirectory]. -// -// client.R(). -// SetOutput("/Users/jeeva/Downloads/ReplyWithHeader-v5.1-beta.zip"). -// Get("http://bit.ly/1LouEKr") -// -// NOTE: In this scenario [Response.Body] might be nil. -func (r *Request) SetOutput(file string) *Request { - r.outputFile = file - r.isSaveResponse = true - return r -} - -// SetSRV method sets the details to query the service SRV record and execute the -// request. -// -// client.R(). -// SetSRV(SRVRecord{"web", "testservice.com"}). -// Get("/get") -func (r *Request) SetSRV(srv *SRVRecord) *Request { - r.SRV = srv - return r -} - -// SetDoNotParseResponse method instructs Resty not to parse the response body automatically. -// Resty exposes the raw response body as [io.ReadCloser]. If you use it, do not -// forget to close the body, otherwise, you might get into connection leaks, and connection -// reuse may not happen. -// -// NOTE: [Response] middlewares are not executed using this option. You have -// taken over the control of response parsing from Resty. -func (r *Request) SetDoNotParseResponse(parse bool) *Request { - r.notParseResponse = parse - return r -} - -// SetResponseBodyLimit method sets a maximum body size limit in bytes on response, -// avoid reading too much data to memory. -// -// Client will return [resty.ErrResponseBodyTooLarge] if the body size of the body -// in the uncompressed response is larger than the limit. -// Body size limit will not be enforced in the following cases: -// - ResponseBodyLimit <= 0, which is the default behavior. -// - [Request.SetOutput] is called to save response data to the file. -// - "DoNotParseResponse" is set for client or request. -// -// It overrides the value set at the client instance level. see [Client.SetResponseBodyLimit] -func (r *Request) SetResponseBodyLimit(v int) *Request { - r.responseBodyLimit = v - return r -} - -// SetPathParam method sets a single URL path key-value pair in the -// Resty current request instance. -// -// client.R().SetPathParam("userId", "sample@sample.com") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/sample@sample.com/details -// -// client.R().SetPathParam("path", "groups/developers") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/groups%2Fdevelopers/details -// -// It replaces the value of the key while composing the request URL. -// The values will be escaped using function [url.PathEscape]. -// -// It overrides the path parameter set at the client instance level. -func (r *Request) SetPathParam(param, value string) *Request { - r.PathParams[param] = value - return r -} - -// SetPathParams method sets multiple URL path key-value pairs at one go in the -// Resty current request instance. -// -// client.R().SetPathParams(map[string]string{ -// "userId": "sample@sample.com", -// "subAccountId": "100002", -// "path": "groups/developers", -// }) -// -// Result: -// URL - /v1/users/{userId}/{subAccountId}/{path}/details -// Composed URL - /v1/users/sample@sample.com/100002/groups%2Fdevelopers/details -// -// It replaces the value of the key while composing the request URL. -// The values will be escaped using function [url.PathEscape]. -// -// It overrides the path parameter set at the client instance level. -func (r *Request) SetPathParams(params map[string]string) *Request { - for p, v := range params { - r.SetPathParam(p, v) - } - return r -} - -// SetRawPathParam method sets a single URL path key-value pair in the -// Resty current request instance. -// -// client.R().SetPathParam("userId", "sample@sample.com") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/sample@sample.com/details -// -// client.R().SetPathParam("path", "groups/developers") -// -// Result: -// URL - /v1/users/{userId}/details -// Composed URL - /v1/users/groups/developers/details -// -// It replaces the value of the key while composing the request URL. -// The value will be used as-is and has not been escaped. -// -// It overrides the raw path parameter set at the client instance level. -func (r *Request) SetRawPathParam(param, value string) *Request { - r.RawPathParams[param] = value - return r -} - -// SetRawPathParams method sets multiple URL path key-value pairs at one go in the -// Resty current request instance. -// -// client.R().SetPathParams(map[string]string{ -// "userId": "sample@sample.com", -// "subAccountId": "100002", -// "path": "groups/developers", -// }) -// -// Result: -// URL - /v1/users/{userId}/{subAccountId}/{path}/details -// Composed URL - /v1/users/sample@sample.com/100002/groups/developers/details -// -// It replaces the value of the key while composing the request URL. -// The value will be used as-is and has not been escaped. -// -// It overrides the raw path parameter set at the client instance level. -func (r *Request) SetRawPathParams(params map[string]string) *Request { - for p, v := range params { - r.SetRawPathParam(p, v) - } - return r -} - -// ExpectContentType method allows to provide fallback `Content-Type` for automatic unmarshalling -// when the `Content-Type` response header is unavailable. -func (r *Request) ExpectContentType(contentType string) *Request { - r.fallbackContentType = contentType - return r -} - -// ForceContentType method provides a strong sense of response `Content-Type` for -// automatic unmarshalling. Resty gives this a higher priority than the `Content-Type` -// response header. -// -// This means that if both [Request.ForceContentType] is set and -// the response `Content-Type` is available, `ForceContentType` will win. -func (r *Request) ForceContentType(contentType string) *Request { - r.forceContentType = contentType - return r -} - -// SetJSONEscapeHTML method enables or disables the HTML escape on JSON marshal. -// By default, escape HTML is false. -// -// NOTE: This option only applies to the standard JSON Marshaller used by Resty. -// -// It overrides the value set at the client instance level, see [Client.SetJSONEscapeHTML] -func (r *Request) SetJSONEscapeHTML(b bool) *Request { - r.jsonEscapeHTML = b - return r -} - -// SetCookie method appends a single cookie in the current request instance. -// -// client.R().SetCookie(&http.Cookie{ -// Name:"go-resty", -// Value:"This is cookie value", -// }) -// -// NOTE: Method appends the Cookie value into existing Cookie even if its already existing. -func (r *Request) SetCookie(hc *http.Cookie) *Request { - r.Cookies = append(r.Cookies, hc) - return r -} - -// SetCookies method sets an array of cookies in the current request instance. -// -// cookies := []*http.Cookie{ -// &http.Cookie{ -// Name:"go-resty-1", -// Value:"This is cookie 1 value", -// }, -// &http.Cookie{ -// Name:"go-resty-2", -// Value:"This is cookie 2 value", -// }, -// } -// -// // Setting a cookies into resty's current request -// client.R().SetCookies(cookies) -// -// NOTE: Method appends the Cookie value into existing Cookie even if its already existing. -func (r *Request) SetCookies(rs []*http.Cookie) *Request { - r.Cookies = append(r.Cookies, rs...) - return r -} - -// SetLogger method sets given writer for logging Resty request and response details. -// By default, requests and responses inherit their logger from the client. -// -// Compliant to interface [resty.Logger]. -// -// It overrides the logger value set at the client instance level. -func (r *Request) SetLogger(l Logger) *Request { - r.log = l - return r -} - -// SetDebug method enables the debug mode on the current request. It logs -// the details current request and response. -// -// client.SetDebug(true) -// -// Also, it can be enabled at the request level for a particular request; see [Request.SetDebug]. -// - For [Request], it logs information such as HTTP verb, Relative URL path, -// Host, Headers, and Body if it has one. -// - For [Response], it logs information such as Status, Response Time, Headers, -// and Body if it has one. -func (r *Request) SetDebug(d bool) *Request { - r.Debug = d - return r -} - -// AddRetryCondition method adds a retry condition function to the request's -// array of functions is checked to determine if the request can be retried. -// The request will retry if any functions return true and the error is nil. -// -// NOTE: The request level retry conditions are checked before all retry -// conditions from the client instance. -func (r *Request) AddRetryCondition(condition RetryConditionFunc) *Request { - r.retryConditions = append(r.retryConditions, condition) - return r -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// HTTP request tracing -//_______________________________________________________________________ - -// EnableTrace method enables trace for the current request -// using [httptrace.ClientTrace] and provides insights. -// -// client := resty.New() -// -// resp, err := client.R().EnableTrace().Get("https://httpbin.org/get") -// fmt.Println("Error:", err) -// fmt.Println("Trace Info:", resp.Request.TraceInfo()) -// -// See [Client.EnableTrace] is also available to get trace info for all requests. -func (r *Request) EnableTrace() *Request { - r.trace = true - return r -} - -// EnableGenerateCurlOnDebug method enables the generation of CURL commands in the debug log. -// It works in conjunction with debug mode. It overrides the options set by the [Client]. -// -// NOTE: Use with care. -// - Potential to leak sensitive data from [Request] and [Response] in the debug log. -// - Beware of memory usage since the request body is reread. -func (r *Request) EnableGenerateCurlOnDebug() *Request { - r.generateCurlOnDebug = true - return r -} - -// DisableGenerateCurlOnDebug method disables the option set by [Request.EnableGenerateCurlOnDebug]. -// It overrides the options set by the [Client]. -func (r *Request) DisableGenerateCurlOnDebug() *Request { - r.generateCurlOnDebug = false - return r -} - -// TraceInfo method returns the trace info for the request. -// If either the [Client.EnableTrace] or [Request.EnableTrace] function has not been called -// before the request is made, an empty [resty.TraceInfo] object is returned. -func (r *Request) TraceInfo() TraceInfo { - ct := r.clientTrace - - if ct == nil { - return TraceInfo{} - } - - ti := TraceInfo{ - DNSLookup: ct.dnsDone.Sub(ct.dnsStart), - TLSHandshake: ct.tlsHandshakeDone.Sub(ct.tlsHandshakeStart), - ServerTime: ct.gotFirstResponseByte.Sub(ct.gotConn), - IsConnReused: ct.gotConnInfo.Reused, - IsConnWasIdle: ct.gotConnInfo.WasIdle, - ConnIdleTime: ct.gotConnInfo.IdleTime, - RequestAttempt: r.Attempt, - } - - // Calculate the total time accordingly, - // when connection is reused - if ct.gotConnInfo.Reused { - ti.TotalTime = ct.endTime.Sub(ct.getConn) - } else { - ti.TotalTime = ct.endTime.Sub(ct.dnsStart) - } - - // Only calculate on successful connections - if !ct.connectDone.IsZero() { - ti.TCPConnTime = ct.connectDone.Sub(ct.dnsDone) - } - - // Only calculate on successful connections - if !ct.gotConn.IsZero() { - ti.ConnTime = ct.gotConn.Sub(ct.getConn) - } - - // Only calculate on successful connections - if !ct.gotFirstResponseByte.IsZero() { - ti.ResponseTime = ct.endTime.Sub(ct.gotFirstResponseByte) - } - - // Capture remote address info when connection is non-nil - if ct.gotConnInfo.Conn != nil { - ti.RemoteAddr = ct.gotConnInfo.Conn.RemoteAddr() - } - - return ti -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// HTTP verb method starts here -//_______________________________________________________________________ - -// Get method does GET HTTP request. It's defined in section 4.3.1 of RFC7231. -func (r *Request) Get(url string) (*Response, error) { - return r.Execute(MethodGet, url) -} - -// Head method does HEAD HTTP request. It's defined in section 4.3.2 of RFC7231. -func (r *Request) Head(url string) (*Response, error) { - return r.Execute(MethodHead, url) -} - -// Post method does POST HTTP request. It's defined in section 4.3.3 of RFC7231. -func (r *Request) Post(url string) (*Response, error) { - return r.Execute(MethodPost, url) -} - -// Put method does PUT HTTP request. It's defined in section 4.3.4 of RFC7231. -func (r *Request) Put(url string) (*Response, error) { - return r.Execute(MethodPut, url) -} - -// Delete method does DELETE HTTP request. It's defined in section 4.3.5 of RFC7231. -func (r *Request) Delete(url string) (*Response, error) { - return r.Execute(MethodDelete, url) -} - -// Options method does OPTIONS HTTP request. It's defined in section 4.3.7 of RFC7231. -func (r *Request) Options(url string) (*Response, error) { - return r.Execute(MethodOptions, url) -} - -// Patch method does PATCH HTTP request. It's defined in section 2 of RFC5789. -func (r *Request) Patch(url string) (*Response, error) { - return r.Execute(MethodPatch, url) -} - -// Send method performs the HTTP request using the method and URL already defined -// for current [Request]. -// -// req := client.R() -// req.Method = resty.MethodGet -// req.URL = "http://httpbin.org/get" -// resp, err := req.Send() -func (r *Request) Send() (*Response, error) { - return r.Execute(r.Method, r.URL) -} - -// Execute method performs the HTTP request with the given HTTP method and URL -// for current [Request]. -// -// resp, err := client.R().Execute(resty.MethodGet, "http://httpbin.org/get") -func (r *Request) Execute(method, url string) (*Response, error) { - var addrs []*net.SRV - var resp *Response - var err error - - defer func() { - if rec := recover(); rec != nil { - if err, ok := rec.(error); ok { - r.client.onPanicHooks(r, err) - } else { - r.client.onPanicHooks(r, fmt.Errorf("panic %v", rec)) - } - panic(rec) - } - }() - - if r.isMultiPart && !(method == MethodPost || method == MethodPut || method == MethodPatch) { - // No OnError hook here since this is a request validation error - err := fmt.Errorf("multipart content is not allowed in HTTP verb [%v]", method) - r.client.onInvalidHooks(r, err) - return nil, err - } - - if r.SRV != nil { - _, addrs, err = net.LookupSRV(r.SRV.Service, "tcp", r.SRV.Domain) - if err != nil { - r.client.onErrorHooks(r, nil, err) - return nil, err - } - } - - r.Method = method - r.URL = r.selectAddr(addrs, url, 0) - - if r.client.RetryCount == 0 { - r.Attempt = 1 - resp, err = r.client.execute(r) - r.client.onErrorHooks(r, resp, unwrapNoRetryErr(err)) - return resp, unwrapNoRetryErr(err) - } - - err = Backoff( - func() (*Response, error) { - r.Attempt++ - - r.URL = r.selectAddr(addrs, url, r.Attempt) - - resp, err = r.client.execute(r) - if err != nil { - r.log.Warnf("%v, Attempt %v", err, r.Attempt) - } - - return resp, err - }, - Retries(r.client.RetryCount), - WaitTime(r.client.RetryWaitTime), - MaxWaitTime(r.client.RetryMaxWaitTime), - RetryConditions(append(r.retryConditions, r.client.RetryConditions...)), - RetryHooks(r.client.RetryHooks), - ResetMultipartReaders(r.client.RetryResetReaders), - ) - - if err != nil { - r.log.Errorf("%v", err) - } - - r.client.onErrorHooks(r, resp, unwrapNoRetryErr(err)) - return resp, unwrapNoRetryErr(err) -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// SRVRecord struct -//_______________________________________________________________________ - -// SRVRecord struct holds the data to query the SRV record for the -// following service. -type SRVRecord struct { - Service string - Domain string -} - -func (r *Request) fmtBodyString(sl int64) (body string) { - body = "***** NO CONTENT *****" - if !isPayloadSupported(r.Method, r.client.AllowGetMethodPayload) { - return - } - - if _, ok := r.Body.(io.Reader); ok { - body = "***** BODY IS io.Reader *****" - return - } - - // multipart or form-data - if r.isMultiPart || r.isFormData { - bodySize := int64(r.bodyBuf.Len()) - if bodySize > sl { - body = fmt.Sprintf("***** REQUEST TOO LARGE (size - %d) *****", bodySize) - return - } - body = r.bodyBuf.String() - return - } - - // request body data - if r.Body == nil { - return - } - var prtBodyBytes []byte - var err error - - contentType := r.Header.Get(hdrContentTypeKey) - kind := kindOf(r.Body) - if canJSONMarshal(contentType, kind) { - var bodyBuf *bytes.Buffer - bodyBuf, err = noescapeJSONMarshalIndent(&r.Body) - if err == nil { - prtBodyBytes = bodyBuf.Bytes() - defer releaseBuffer(bodyBuf) - } - } else if IsXMLType(contentType) && (kind == reflect.Struct) { - prtBodyBytes, err = xml.MarshalIndent(&r.Body, "", " ") - } else if b, ok := r.Body.(string); ok { - if IsJSONType(contentType) { - bodyBytes := []byte(b) - out := acquireBuffer() - defer releaseBuffer(out) - if err = json.Indent(out, bodyBytes, "", " "); err == nil { - prtBodyBytes = out.Bytes() - } - } else { - body = b - } - } else if b, ok := r.Body.([]byte); ok { - body = fmt.Sprintf("***** BODY IS byte(s) (size - %d) *****", len(b)) - return - } - - if prtBodyBytes != nil && err == nil { - body = string(prtBodyBytes) - } - - if len(body) > 0 { - bodySize := int64(len([]byte(body))) - if bodySize > sl { - body = fmt.Sprintf("***** REQUEST TOO LARGE (size - %d) *****", bodySize) - } - } - - return -} - -func (r *Request) selectAddr(addrs []*net.SRV, path string, attempt int) string { - if addrs == nil { - return path - } - - idx := attempt % len(addrs) - domain := strings.TrimRight(addrs[idx].Target, ".") - path = strings.TrimLeft(path, "/") - - return fmt.Sprintf("%s://%s:%d/%s", r.client.scheme, domain, addrs[idx].Port, path) -} - -func (r *Request) initValuesMap() { - if r.values == nil { - r.values = make(map[string]interface{}) - } -} - -var noescapeJSONMarshal = func(v interface{}) (*bytes.Buffer, error) { - buf := acquireBuffer() - encoder := json.NewEncoder(buf) - encoder.SetEscapeHTML(false) - if err := encoder.Encode(v); err != nil { - releaseBuffer(buf) - return nil, err - } - - return buf, nil -} - -var noescapeJSONMarshalIndent = func(v interface{}) (*bytes.Buffer, error) { - buf := acquireBuffer() - encoder := json.NewEncoder(buf) - encoder.SetEscapeHTML(false) - encoder.SetIndent("", " ") - - if err := encoder.Encode(v); err != nil { - releaseBuffer(buf) - return nil, err - } - - return buf, nil -} diff --git a/vendor/github.com/go-resty/resty/v2/response.go b/vendor/github.com/go-resty/resty/v2/response.go deleted file mode 100644 index f52b5c6..0000000 --- a/vendor/github.com/go-resty/resty/v2/response.go +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "strings" - "time" -) - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Response struct and methods -//_______________________________________________________________________ - -// Response struct holds response values of executed requests. -type Response struct { - Request *Request - RawResponse *http.Response - - body []byte - size int64 - receivedAt time.Time -} - -// Body method returns the HTTP response as `[]byte` slice for the executed request. -// -// NOTE: [Response.Body] might be nil if [Request.SetOutput] is used. -// Also see [Request.SetDoNotParseResponse], [Client.SetDoNotParseResponse] -func (r *Response) Body() []byte { - if r.RawResponse == nil { - return []byte{} - } - return r.body -} - -// SetBody method sets [Response] body in byte slice. Typically, -// It is helpful for test cases. -// -// resp.SetBody([]byte("This is test body content")) -// resp.SetBody(nil) -func (r *Response) SetBody(b []byte) *Response { - r.body = b - return r -} - -// Status method returns the HTTP status string for the executed request. -// -// Example: 200 OK -func (r *Response) Status() string { - if r.RawResponse == nil { - return "" - } - return r.RawResponse.Status -} - -// StatusCode method returns the HTTP status code for the executed request. -// -// Example: 200 -func (r *Response) StatusCode() int { - if r.RawResponse == nil { - return 0 - } - return r.RawResponse.StatusCode -} - -// Proto method returns the HTTP response protocol used for the request. -func (r *Response) Proto() string { - if r.RawResponse == nil { - return "" - } - return r.RawResponse.Proto -} - -// Result method returns the response value as an object if it has one -// -// See [Request.SetResult] -func (r *Response) Result() interface{} { - return r.Request.Result -} - -// Error method returns the error object if it has one -// -// See [Request.SetError], [Client.SetError] -func (r *Response) Error() interface{} { - return r.Request.Error -} - -// Header method returns the response headers -func (r *Response) Header() http.Header { - if r.RawResponse == nil { - return http.Header{} - } - return r.RawResponse.Header -} - -// Cookies method to returns all the response cookies -func (r *Response) Cookies() []*http.Cookie { - if r.RawResponse == nil { - return make([]*http.Cookie, 0) - } - return r.RawResponse.Cookies() -} - -// String method returns the body of the HTTP response as a `string`. -// It returns an empty string if it is nil or the body is zero length. -func (r *Response) String() string { - if len(r.body) == 0 { - return "" - } - return strings.TrimSpace(string(r.body)) -} - -// Time method returns the duration of HTTP response time from the request we sent -// and received a request. -// -// See [Response.ReceivedAt] to know when the client received a response and see -// `Response.Request.Time` to know when the client sent a request. -func (r *Response) Time() time.Duration { - if r.Request.clientTrace != nil { - return r.Request.TraceInfo().TotalTime - } - return r.receivedAt.Sub(r.Request.Time) -} - -// ReceivedAt method returns the time we received a response from the server for the request. -func (r *Response) ReceivedAt() time.Time { - return r.receivedAt -} - -// Size method returns the HTTP response size in bytes. Yeah, you can rely on HTTP `Content-Length` -// header, however it won't be available for chucked transfer/compressed response. -// Since Resty captures response size details when processing the response body -// when possible. So that users get the actual size of response bytes. -func (r *Response) Size() int64 { - return r.size -} - -// RawBody method exposes the HTTP raw response body. Use this method in conjunction with -// [Client.SetDoNotParseResponse] or [Request.SetDoNotParseResponse] -// option; otherwise, you get an error as `read err: http: read on closed response body.` -// -// Do not forget to close the body, otherwise you might get into connection leaks, no connection reuse. -// You have taken over the control of response parsing from Resty. -func (r *Response) RawBody() io.ReadCloser { - if r.RawResponse == nil { - return nil - } - return r.RawResponse.Body -} - -// IsSuccess method returns true if HTTP status `code >= 200 and <= 299` otherwise false. -func (r *Response) IsSuccess() bool { - return r.StatusCode() > 199 && r.StatusCode() < 300 -} - -// IsError method returns true if HTTP status `code >= 400` otherwise false. -func (r *Response) IsError() bool { - return r.StatusCode() > 399 -} - -func (r *Response) setReceivedAt() { - r.receivedAt = time.Now() - if r.Request.clientTrace != nil { - r.Request.clientTrace.endTime = r.receivedAt - } -} - -func (r *Response) fmtBodyString(sl int64) string { - if r.Request.client.notParseResponse || r.Request.notParseResponse { - return "***** DO NOT PARSE RESPONSE - Enabled *****" - } - if len(r.body) > 0 { - if int64(len(r.body)) > sl { - return fmt.Sprintf("***** RESPONSE TOO LARGE (size - %d) *****", len(r.body)) - } - ct := r.Header().Get(hdrContentTypeKey) - if IsJSONType(ct) { - out := acquireBuffer() - defer releaseBuffer(out) - err := json.Indent(out, r.body, "", " ") - if err != nil { - return fmt.Sprintf("*** Error: Unable to format response body - \"%s\" ***\n\nLog Body as-is:\n%s", err, r.String()) - } - return out.String() - } - return r.String() - } - - return "***** NO CONTENT *****" -} diff --git a/vendor/github.com/go-resty/resty/v2/resty.go b/vendor/github.com/go-resty/resty/v2/resty.go deleted file mode 100644 index 8f3d35b..0000000 --- a/vendor/github.com/go-resty/resty/v2/resty.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -// Package resty provides Simple HTTP and REST client library for Go. -package resty - -import ( - "net" - "net/http" - "net/http/cookiejar" - - "golang.org/x/net/publicsuffix" -) - -// Version # of resty -const Version = "2.15.3" - -// New method creates a new Resty client. -func New() *Client { - cookieJar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) - return createClient(&http.Client{ - Jar: cookieJar, - }) -} - -// NewWithClient method creates a new Resty client with given [http.Client]. -func NewWithClient(hc *http.Client) *Client { - return createClient(hc) -} - -// NewWithLocalAddr method creates a new Resty client with the given Local Address. -// to dial from. -func NewWithLocalAddr(localAddr net.Addr) *Client { - cookieJar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) - return createClient(&http.Client{ - Jar: cookieJar, - Transport: createTransport(localAddr), - }) -} diff --git a/vendor/github.com/go-resty/resty/v2/retry.go b/vendor/github.com/go-resty/resty/v2/retry.go deleted file mode 100644 index 416107e..0000000 --- a/vendor/github.com/go-resty/resty/v2/retry.go +++ /dev/null @@ -1,252 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "context" - "io" - "math" - "math/rand" - "sync" - "time" -) - -const ( - defaultMaxRetries = 3 - defaultWaitTime = time.Duration(100) * time.Millisecond - defaultMaxWaitTime = time.Duration(2000) * time.Millisecond -) - -type ( - // Option is to create convenient retry options like wait time, max retries, etc. - Option func(*Options) - - // RetryConditionFunc type is for the retry condition function - // input: non-nil Response OR request execution error - RetryConditionFunc func(*Response, error) bool - - // OnRetryFunc is for side-effecting functions triggered on retry - OnRetryFunc func(*Response, error) - - // RetryAfterFunc returns time to wait before retry - // For example, it can parse HTTP Retry-After header - // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - // Non-nil error is returned if it is found that the request is not retryable - // (0, nil) is a special result that means 'use default algorithm' - RetryAfterFunc func(*Client, *Response) (time.Duration, error) - - // Options struct is used to hold retry settings. - Options struct { - maxRetries int - waitTime time.Duration - maxWaitTime time.Duration - retryConditions []RetryConditionFunc - retryHooks []OnRetryFunc - resetReaders bool - } -) - -// Retries sets the max number of retries -func Retries(value int) Option { - return func(o *Options) { - o.maxRetries = value - } -} - -// WaitTime sets the default wait time to sleep between requests -func WaitTime(value time.Duration) Option { - return func(o *Options) { - o.waitTime = value - } -} - -// MaxWaitTime sets the max wait time to sleep between requests -func MaxWaitTime(value time.Duration) Option { - return func(o *Options) { - o.maxWaitTime = value - } -} - -// RetryConditions sets the conditions that will be checked for retry -func RetryConditions(conditions []RetryConditionFunc) Option { - return func(o *Options) { - o.retryConditions = conditions - } -} - -// RetryHooks sets the hooks that will be executed after each retry -func RetryHooks(hooks []OnRetryFunc) Option { - return func(o *Options) { - o.retryHooks = hooks - } -} - -// ResetMultipartReaders sets a boolean value which will lead the start being seeked out -// on all multipart file readers if they implement [io.ReadSeeker] -func ResetMultipartReaders(value bool) Option { - return func(o *Options) { - o.resetReaders = value - } -} - -// Backoff retries with increasing timeout duration up until X amount of retries -// (Default is 3 attempts, Override with option Retries(n)) -func Backoff(operation func() (*Response, error), options ...Option) error { - // Defaults - opts := Options{ - maxRetries: defaultMaxRetries, - waitTime: defaultWaitTime, - maxWaitTime: defaultMaxWaitTime, - retryConditions: []RetryConditionFunc{}, - } - - for _, o := range options { - o(&opts) - } - - var ( - resp *Response - err error - ) - - for attempt := 0; attempt <= opts.maxRetries; attempt++ { - resp, err = operation() - ctx := context.Background() - if resp != nil && resp.Request.ctx != nil { - ctx = resp.Request.ctx - } - if ctx.Err() != nil { - return err - } - - err1 := unwrapNoRetryErr(err) // raw error, it used for return users callback. - needsRetry := err != nil && err == err1 // retry on a few operation errors by default - - for _, condition := range opts.retryConditions { - needsRetry = condition(resp, err1) - if needsRetry { - break - } - } - - if !needsRetry { - return err - } - - if opts.resetReaders { - if err := resetFileReaders(resp.Request.multipartFiles); err != nil { - return err - } - } - - for _, hook := range opts.retryHooks { - hook(resp, err) - } - - // Don't need to wait when no retries left. - // Still run retry hooks even on last retry to keep compatibility. - if attempt == opts.maxRetries { - return err - } - - waitTime, err2 := sleepDuration(resp, opts.waitTime, opts.maxWaitTime, attempt) - if err2 != nil { - if err == nil { - err = err2 - } - return err - } - - select { - case <-time.After(waitTime): - case <-ctx.Done(): - return ctx.Err() - } - } - - return err -} - -func sleepDuration(resp *Response, min, max time.Duration, attempt int) (time.Duration, error) { - const maxInt = 1<<31 - 1 // max int for arch 386 - if max < 0 { - max = maxInt - } - if resp == nil { - return jitterBackoff(min, max, attempt), nil - } - - retryAfterFunc := resp.Request.client.RetryAfter - - // Check for custom callback - if retryAfterFunc == nil { - return jitterBackoff(min, max, attempt), nil - } - - result, err := retryAfterFunc(resp.Request.client, resp) - if err != nil { - return 0, err // i.e. 'API quota exceeded' - } - if result == 0 { - return jitterBackoff(min, max, attempt), nil - } - if result < 0 || max < result { - result = max - } - if result < min { - result = min - } - return result, nil -} - -// Return capped exponential backoff with jitter -// https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/ -func jitterBackoff(min, max time.Duration, attempt int) time.Duration { - base := float64(min) - capLevel := float64(max) - - temp := math.Min(capLevel, base*math.Exp2(float64(attempt))) - ri := time.Duration(temp / 2) - if ri == 0 { - ri = time.Nanosecond - } - result := randDuration(ri) - - if result < min { - result = min - } - - return result -} - -var rnd = newRnd() -var rndMu sync.Mutex - -func randDuration(center time.Duration) time.Duration { - rndMu.Lock() - defer rndMu.Unlock() - - var ri = int64(center) - var jitter = rnd.Int63n(ri) - return time.Duration(math.Abs(float64(ri + jitter))) -} - -func newRnd() *rand.Rand { - var seed = time.Now().UnixNano() - var src = rand.NewSource(seed) - return rand.New(src) -} - -func resetFileReaders(files []*File) error { - for _, f := range files { - if rs, ok := f.Reader.(io.ReadSeeker); ok { - if _, err := rs.Seek(0, io.SeekStart); err != nil { - return err - } - } - } - - return nil -} diff --git a/vendor/github.com/go-resty/resty/v2/shellescape/BUILD.bazel b/vendor/github.com/go-resty/resty/v2/shellescape/BUILD.bazel deleted file mode 100644 index fe829e3..0000000 --- a/vendor/github.com/go-resty/resty/v2/shellescape/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "shellescape", - srcs = ["shellescape.go"], - importpath = "github.com/go-resty/resty/v2/shellescape", - visibility = ["//visibility:public"], -) - -alias( - name = "go_default_library", - actual = ":shellescape", - visibility = ["//visibility:public"], -) diff --git a/vendor/github.com/go-resty/resty/v2/shellescape/shellescape.go b/vendor/github.com/go-resty/resty/v2/shellescape/shellescape.go deleted file mode 100644 index 1e835cb..0000000 --- a/vendor/github.com/go-resty/resty/v2/shellescape/shellescape.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2015-present Jeevanandam M (jeeva@myjeeva.com) -// 2024 Ahuigo (https://github.com/ahuigo) -// All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -/* -Package shellescape provides the methods to escape arbitrary -strings for a safe use as command line arguments in the most common -POSIX shells. - -The original Python package which this work was inspired by can be found -at https://pypi.python.org/pypi/shellescape. -*/ -package shellescape - -import ( - "regexp" - "strings" -) - -var pattern *regexp.Regexp - -func init() { - pattern = regexp.MustCompile(`[^\w@%+=:,./-]`) -} - -// Quote method returns a shell-escaped version of the string. The returned value -// can safely be used as one token in a shell command line. -func Quote(s string) string { - if len(s) == 0 { - return "''" - } - - if pattern.MatchString(s) { - return "'" + strings.ReplaceAll(s, "'", "'\"'\"'") + "'" - } - - return s -} diff --git a/vendor/github.com/go-resty/resty/v2/trace.go b/vendor/github.com/go-resty/resty/v2/trace.go deleted file mode 100644 index 226bfbf..0000000 --- a/vendor/github.com/go-resty/resty/v2/trace.go +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "context" - "crypto/tls" - "net" - "net/http/httptrace" - "time" -) - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// TraceInfo struct -//_______________________________________________________________________ - -// TraceInfo struct is used to provide request trace info such as DNS lookup -// duration, Connection obtain duration, Server processing duration, etc. -type TraceInfo struct { - // DNSLookup is the duration that transport took to perform - // DNS lookup. - DNSLookup time.Duration - - // ConnTime is the duration it took to obtain a successful connection. - ConnTime time.Duration - - // TCPConnTime is the duration it took to obtain the TCP connection. - TCPConnTime time.Duration - - // TLSHandshake is the duration of the TLS handshake. - TLSHandshake time.Duration - - // ServerTime is the server's duration for responding to the first byte. - ServerTime time.Duration - - // ResponseTime is the duration since the first response byte from the server to - // request completion. - ResponseTime time.Duration - - // TotalTime is the duration of the total time request taken end-to-end. - TotalTime time.Duration - - // IsConnReused is whether this connection has been previously - // used for another HTTP request. - IsConnReused bool - - // IsConnWasIdle is whether this connection was obtained from an - // idle pool. - IsConnWasIdle bool - - // ConnIdleTime is the duration how long the connection that was previously - // idle, if IsConnWasIdle is true. - ConnIdleTime time.Duration - - // RequestAttempt is to represent the request attempt made during a Resty - // request execution flow, including retry count. - RequestAttempt int - - // RemoteAddr returns the remote network address. - RemoteAddr net.Addr -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// ClientTrace struct and its methods -//_______________________________________________________________________ - -// clientTrace struct maps the [httptrace.ClientTrace] hooks into Fields -// with the same naming for easy understanding. Plus additional insights -// [Request]. -type clientTrace struct { - getConn time.Time - dnsStart time.Time - dnsDone time.Time - connectDone time.Time - tlsHandshakeStart time.Time - tlsHandshakeDone time.Time - gotConn time.Time - gotFirstResponseByte time.Time - endTime time.Time - gotConnInfo httptrace.GotConnInfo -} - -func (t *clientTrace) createContext(ctx context.Context) context.Context { - return httptrace.WithClientTrace( - ctx, - &httptrace.ClientTrace{ - DNSStart: func(_ httptrace.DNSStartInfo) { - t.dnsStart = time.Now() - }, - DNSDone: func(_ httptrace.DNSDoneInfo) { - t.dnsDone = time.Now() - }, - ConnectStart: func(_, _ string) { - if t.dnsDone.IsZero() { - t.dnsDone = time.Now() - } - if t.dnsStart.IsZero() { - t.dnsStart = t.dnsDone - } - }, - ConnectDone: func(net, addr string, err error) { - t.connectDone = time.Now() - }, - GetConn: func(_ string) { - t.getConn = time.Now() - }, - GotConn: func(ci httptrace.GotConnInfo) { - t.gotConn = time.Now() - t.gotConnInfo = ci - }, - GotFirstResponseByte: func() { - t.gotFirstResponseByte = time.Now() - }, - TLSHandshakeStart: func() { - t.tlsHandshakeStart = time.Now() - }, - TLSHandshakeDone: func(_ tls.ConnectionState, _ error) { - t.tlsHandshakeDone = time.Now() - }, - }, - ) -} diff --git a/vendor/github.com/go-resty/resty/v2/transport.go b/vendor/github.com/go-resty/resty/v2/transport.go deleted file mode 100644 index 13c3de3..0000000 --- a/vendor/github.com/go-resty/resty/v2/transport.go +++ /dev/null @@ -1,36 +0,0 @@ -//go:build go1.13 -// +build go1.13 - -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "net" - "net/http" - "runtime" - "time" -) - -func createTransport(localAddr net.Addr) *http.Transport { - dialer := &net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 30 * time.Second, - DualStack: true, - } - if localAddr != nil { - dialer.LocalAddr = localAddr - } - return &http.Transport{ - Proxy: http.ProxyFromEnvironment, - DialContext: transportDialContext(dialer), - ForceAttemptHTTP2: true, - MaxIdleConns: 100, - IdleConnTimeout: 90 * time.Second, - TLSHandshakeTimeout: 10 * time.Second, - ExpectContinueTimeout: 1 * time.Second, - MaxIdleConnsPerHost: runtime.GOMAXPROCS(0) + 1, - } -} diff --git a/vendor/github.com/go-resty/resty/v2/transport112.go b/vendor/github.com/go-resty/resty/v2/transport112.go deleted file mode 100644 index beb0301..0000000 --- a/vendor/github.com/go-resty/resty/v2/transport112.go +++ /dev/null @@ -1,35 +0,0 @@ -//go:build !go1.13 -// +build !go1.13 - -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "net" - "net/http" - "runtime" - "time" -) - -func createTransport(localAddr net.Addr) *http.Transport { - dialer := &net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 30 * time.Second, - DualStack: true, - } - if localAddr != nil { - dialer.LocalAddr = localAddr - } - return &http.Transport{ - Proxy: http.ProxyFromEnvironment, - DialContext: dialer.DialContext, - MaxIdleConns: 100, - IdleConnTimeout: 90 * time.Second, - TLSHandshakeTimeout: 10 * time.Second, - ExpectContinueTimeout: 1 * time.Second, - MaxIdleConnsPerHost: runtime.GOMAXPROCS(0) + 1, - } -} diff --git a/vendor/github.com/go-resty/resty/v2/transport_js.go b/vendor/github.com/go-resty/resty/v2/transport_js.go deleted file mode 100644 index 6227aa9..0000000 --- a/vendor/github.com/go-resty/resty/v2/transport_js.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build js && wasm -// +build js,wasm - -package resty - -import ( - "context" - "net" -) - -func transportDialContext(dialer *net.Dialer) func(context.Context, string, string) (net.Conn, error) { - return nil -} diff --git a/vendor/github.com/go-resty/resty/v2/transport_other.go b/vendor/github.com/go-resty/resty/v2/transport_other.go deleted file mode 100644 index 73553c3..0000000 --- a/vendor/github.com/go-resty/resty/v2/transport_other.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !(js && wasm) -// +build !js !wasm - -package resty - -import ( - "context" - "net" -) - -func transportDialContext(dialer *net.Dialer) func(context.Context, string, string) (net.Conn, error) { - return dialer.DialContext -} diff --git a/vendor/github.com/go-resty/resty/v2/util.go b/vendor/github.com/go-resty/resty/v2/util.go deleted file mode 100644 index e1a66ff..0000000 --- a/vendor/github.com/go-resty/resty/v2/util.go +++ /dev/null @@ -1,406 +0,0 @@ -// Copyright (c) 2015-2024 Jeevanandam M (jeeva@myjeeva.com), All rights reserved. -// resty source code and usage is governed by a MIT style -// license that can be found in the LICENSE file. - -package resty - -import ( - "bytes" - "errors" - "fmt" - "io" - "log" - "mime/multipart" - "net/http" - "net/textproto" - "os" - "path/filepath" - "reflect" - "runtime" - "sort" - "strings" - "sync" -) - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Logger interface -//_______________________________________________________________________ - -// Logger interface is to abstract the logging from Resty. Gives control to -// the Resty users, choice of the logger. -type Logger interface { - Errorf(format string, v ...interface{}) - Warnf(format string, v ...interface{}) - Debugf(format string, v ...interface{}) -} - -func createLogger() *logger { - l := &logger{l: log.New(os.Stderr, "", log.Ldate|log.Lmicroseconds)} - return l -} - -var _ Logger = (*logger)(nil) - -type logger struct { - l *log.Logger -} - -func (l *logger) Errorf(format string, v ...interface{}) { - l.output("ERROR RESTY "+format, v...) -} - -func (l *logger) Warnf(format string, v ...interface{}) { - l.output("WARN RESTY "+format, v...) -} - -func (l *logger) Debugf(format string, v ...interface{}) { - l.output("DEBUG RESTY "+format, v...) -} - -func (l *logger) output(format string, v ...interface{}) { - if len(v) == 0 { - l.l.Print(format) - return - } - l.l.Printf(format, v...) -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Rate Limiter interface -//_______________________________________________________________________ - -type RateLimiter interface { - Allow() bool -} - -var ErrRateLimitExceeded = errors.New("rate limit exceeded") - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// Package Helper methods -//_______________________________________________________________________ - -// IsStringEmpty method tells whether given string is empty or not -func IsStringEmpty(str string) bool { - return len(strings.TrimSpace(str)) == 0 -} - -// DetectContentType method is used to figure out `Request.Body` content type for request header -func DetectContentType(body interface{}) string { - contentType := plainTextType - kind := kindOf(body) - switch kind { - case reflect.Struct, reflect.Map: - contentType = jsonContentType - case reflect.String: - contentType = plainTextType - default: - if b, ok := body.([]byte); ok { - contentType = http.DetectContentType(b) - } else if kind == reflect.Slice { - contentType = jsonContentType - } - } - - return contentType -} - -// IsJSONType method is to check JSON content type or not -func IsJSONType(ct string) bool { - return jsonCheck.MatchString(ct) -} - -// IsXMLType method is to check XML content type or not -func IsXMLType(ct string) bool { - return xmlCheck.MatchString(ct) -} - -// Unmarshalc content into object from JSON or XML -func Unmarshalc(c *Client, ct string, b []byte, d interface{}) (err error) { - if IsJSONType(ct) { - err = c.JSONUnmarshal(b, d) - } else if IsXMLType(ct) { - err = c.XMLUnmarshal(b, d) - } - - return -} - -//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -// RequestLog and ResponseLog type -//_______________________________________________________________________ - -// RequestLog struct is used to collected information from resty request -// instance for debug logging. It sent to request log callback before resty -// actually logs the information. -type RequestLog struct { - Header http.Header - Body string -} - -// ResponseLog struct is used to collected information from resty response -// instance for debug logging. It sent to response log callback before resty -// actually logs the information. -type ResponseLog struct { - Header http.Header - Body string -} - -// way to disable the HTML escape as opt-in -func jsonMarshal(c *Client, r *Request, d interface{}) (*bytes.Buffer, error) { - if !r.jsonEscapeHTML || !c.jsonEscapeHTML { - return noescapeJSONMarshal(d) - } - - data, err := c.JSONMarshal(d) - if err != nil { - return nil, err - } - - buf := acquireBuffer() - _, _ = buf.Write(data) - return buf, nil -} - -func firstNonEmpty(v ...string) string { - for _, s := range v { - if !IsStringEmpty(s) { - return s - } - } - return "" -} - -var quoteEscaper = strings.NewReplacer("\\", "\\\\", `"`, "\\\"") - -func escapeQuotes(s string) string { - return quoteEscaper.Replace(s) -} - -func createMultipartHeader(param, fileName, contentType string) textproto.MIMEHeader { - hdr := make(textproto.MIMEHeader) - - var contentDispositionValue string - if IsStringEmpty(fileName) { - contentDispositionValue = fmt.Sprintf(`form-data; name="%s"`, param) - } else { - contentDispositionValue = fmt.Sprintf(`form-data; name="%s"; filename="%s"`, - param, escapeQuotes(fileName)) - } - hdr.Set("Content-Disposition", contentDispositionValue) - - if !IsStringEmpty(contentType) { - hdr.Set(hdrContentTypeKey, contentType) - } - return hdr -} - -func addMultipartFormField(w *multipart.Writer, mf *MultipartField) error { - partWriter, err := w.CreatePart(createMultipartHeader(mf.Param, mf.FileName, mf.ContentType)) - if err != nil { - return err - } - - _, err = io.Copy(partWriter, mf.Reader) - return err -} - -func writeMultipartFormFile(w *multipart.Writer, fieldName, fileName string, r io.Reader) error { - // Auto detect actual multipart content type - cbuf := make([]byte, 512) - size, err := r.Read(cbuf) - if err != nil && err != io.EOF { - return err - } - - partWriter, err := w.CreatePart(createMultipartHeader(fieldName, fileName, http.DetectContentType(cbuf[:size]))) - if err != nil { - return err - } - - if _, err = partWriter.Write(cbuf[:size]); err != nil { - return err - } - - _, err = io.Copy(partWriter, r) - return err -} - -func addFile(w *multipart.Writer, fieldName, path string) error { - file, err := os.Open(path) - if err != nil { - return err - } - defer closeq(file) - return writeMultipartFormFile(w, fieldName, filepath.Base(path), file) -} - -func addFileReader(w *multipart.Writer, f *File) error { - return writeMultipartFormFile(w, f.ParamName, f.Name, f.Reader) -} - -func getPointer(v interface{}) interface{} { - vv := valueOf(v) - if vv.Kind() == reflect.Ptr { - return v - } - return reflect.New(vv.Type()).Interface() -} - -func isPayloadSupported(m string, allowMethodGet bool) bool { - return !(m == MethodHead || m == MethodOptions || (m == MethodGet && !allowMethodGet)) -} - -func typeOf(i interface{}) reflect.Type { - return indirect(valueOf(i)).Type() -} - -func valueOf(i interface{}) reflect.Value { - return reflect.ValueOf(i) -} - -func indirect(v reflect.Value) reflect.Value { - return reflect.Indirect(v) -} - -func kindOf(v interface{}) reflect.Kind { - return typeOf(v).Kind() -} - -func createDirectory(dir string) (err error) { - if _, err = os.Stat(dir); err != nil { - if os.IsNotExist(err) { - if err = os.MkdirAll(dir, 0755); err != nil { - return - } - } - } - return -} - -func canJSONMarshal(contentType string, kind reflect.Kind) bool { - return IsJSONType(contentType) && (kind == reflect.Struct || kind == reflect.Map || kind == reflect.Slice) -} - -func functionName(i interface{}) string { - return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() -} - -func acquireBuffer() *bytes.Buffer { - return bufPool.Get().(*bytes.Buffer) -} - -func releaseBuffer(buf *bytes.Buffer) { - if buf != nil { - buf.Reset() - bufPool.Put(buf) - } -} - -// requestBodyReleaser wraps requests's body and implements custom Close for it. -// The Close method closes original body and releases request body back to sync.Pool. -type requestBodyReleaser struct { - releaseOnce sync.Once - reqBuf *bytes.Buffer - io.ReadCloser -} - -func newRequestBodyReleaser(respBody io.ReadCloser, reqBuf *bytes.Buffer) io.ReadCloser { - if reqBuf == nil { - return respBody - } - - return &requestBodyReleaser{ - reqBuf: reqBuf, - ReadCloser: respBody, - } -} - -func (rr *requestBodyReleaser) Close() error { - err := rr.ReadCloser.Close() - rr.releaseOnce.Do(func() { - releaseBuffer(rr.reqBuf) - }) - - return err -} - -func closeq(v interface{}) { - if c, ok := v.(io.Closer); ok { - silently(c.Close()) - } -} - -func silently(_ ...interface{}) {} - -func composeHeaders(c *Client, r *Request, hdrs http.Header) string { - str := make([]string, 0, len(hdrs)) - for _, k := range sortHeaderKeys(hdrs) { - str = append(str, "\t"+strings.TrimSpace(fmt.Sprintf("%25s: %s", k, strings.Join(hdrs[k], ", ")))) - } - return strings.Join(str, "\n") -} - -func sortHeaderKeys(hdrs http.Header) []string { - keys := make([]string, 0, len(hdrs)) - for key := range hdrs { - keys = append(keys, key) - } - sort.Strings(keys) - return keys -} - -func copyHeaders(hdrs http.Header) http.Header { - nh := http.Header{} - for k, v := range hdrs { - nh[k] = v - } - return nh -} - -func wrapErrors(n error, inner error) error { - if inner == nil { - return n - } - if n == nil { - return inner - } - return &restyError{ - err: n, - inner: inner, - } -} - -type restyError struct { - err error - inner error -} - -func (e *restyError) Error() string { - return e.err.Error() -} - -func (e *restyError) Unwrap() error { - return e.inner -} - -type noRetryErr struct { - err error -} - -func (e *noRetryErr) Error() string { - return e.err.Error() -} - -func wrapNoRetryErr(err error) error { - if err != nil { - err = &noRetryErr{err: err} - } - return err -} - -func unwrapNoRetryErr(err error) error { - if e, ok := err.(*noRetryErr); ok { - err = e.err - } - return err -} diff --git a/vendor/github.com/go-resty/resty/v2/util_curl.go b/vendor/github.com/go-resty/resty/v2/util_curl.go deleted file mode 100644 index 2bd9127..0000000 --- a/vendor/github.com/go-resty/resty/v2/util_curl.go +++ /dev/null @@ -1,78 +0,0 @@ -package resty - -import ( - "bytes" - "io" - "net/http" - "net/http/cookiejar" - - "net/url" - "strings" - - "github.com/go-resty/resty/v2/shellescape" -) - -func buildCurlRequest(req *http.Request, httpCookiejar http.CookieJar) (curl string) { - // 1. Generate curl raw headers - - curl = "curl -X " + req.Method + " " - // req.Host + req.URL.Path + "?" + req.URL.RawQuery + " " + req.Proto + " " - headers := dumpCurlHeaders(req) - for _, kv := range *headers { - curl += `-H ` + shellescape.Quote(kv[0]+": "+kv[1]) + ` ` - } - - // 2. Generate curl cookies - // TODO validate this block of code, I think its not required since cookie captured via Headers - if cookieJar, ok := httpCookiejar.(*cookiejar.Jar); ok { - cookies := cookieJar.Cookies(req.URL) - if len(cookies) > 0 { - curl += ` -H ` + shellescape.Quote(dumpCurlCookies(cookies)) + " " - } - } - - // 3. Generate curl body - if req.Body != nil { - buf, _ := io.ReadAll(req.Body) - req.Body = io.NopCloser(bytes.NewBuffer(buf)) // important!! - curl += `-d ` + shellescape.Quote(string(buf)) - } - - urlString := shellescape.Quote(req.URL.String()) - if urlString == "''" { - urlString = "'http://unexecuted-request'" - } - curl += " " + urlString - return curl -} - -// dumpCurlCookies dumps cookies to curl format -func dumpCurlCookies(cookies []*http.Cookie) string { - sb := strings.Builder{} - sb.WriteString("Cookie: ") - for _, cookie := range cookies { - sb.WriteString(cookie.Name + "=" + url.QueryEscape(cookie.Value) + "&") - } - return strings.TrimRight(sb.String(), "&") -} - -// dumpCurlHeaders dumps headers to curl format -func dumpCurlHeaders(req *http.Request) *[][2]string { - headers := [][2]string{} - for k, vs := range req.Header { - for _, v := range vs { - headers = append(headers, [2]string{k, v}) - } - } - n := len(headers) - for i := 0; i < n; i++ { - for j := n - 1; j > i; j-- { - jj := j - 1 - h1, h2 := headers[j], headers[jj] - if h1[0] < h2[0] { - headers[jj], headers[j] = headers[j], headers[jj] - } - } - } - return &headers -} diff --git a/vendor/github.com/golang/protobuf/AUTHORS b/vendor/github.com/golang/protobuf/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/github.com/golang/protobuf/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/github.com/golang/protobuf/CONTRIBUTORS b/vendor/github.com/golang/protobuf/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/github.com/golang/protobuf/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE deleted file mode 100644 index 0f64693..0000000 --- a/vendor/github.com/golang/protobuf/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright 2010 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/github.com/golang/protobuf/proto/buffer.go b/vendor/github.com/golang/protobuf/proto/buffer.go deleted file mode 100644 index e810e6f..0000000 --- a/vendor/github.com/golang/protobuf/proto/buffer.go +++ /dev/null @@ -1,324 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "errors" - "fmt" - - "google.golang.org/protobuf/encoding/prototext" - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - WireVarint = 0 - WireFixed32 = 5 - WireFixed64 = 1 - WireBytes = 2 - WireStartGroup = 3 - WireEndGroup = 4 -) - -// EncodeVarint returns the varint encoded bytes of v. -func EncodeVarint(v uint64) []byte { - return protowire.AppendVarint(nil, v) -} - -// SizeVarint returns the length of the varint encoded bytes of v. -// This is equal to len(EncodeVarint(v)). -func SizeVarint(v uint64) int { - return protowire.SizeVarint(v) -} - -// DecodeVarint parses a varint encoded integer from b, -// returning the integer value and the length of the varint. -// It returns (0, 0) if there is a parse error. -func DecodeVarint(b []byte) (uint64, int) { - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, 0 - } - return v, n -} - -// Buffer is a buffer for encoding and decoding the protobuf wire format. -// It may be reused between invocations to reduce memory usage. -type Buffer struct { - buf []byte - idx int - deterministic bool -} - -// NewBuffer allocates a new Buffer initialized with buf, -// where the contents of buf are considered the unread portion of the buffer. -func NewBuffer(buf []byte) *Buffer { - return &Buffer{buf: buf} -} - -// SetDeterministic specifies whether to use deterministic serialization. -// -// Deterministic serialization guarantees that for a given binary, equal -// messages will always be serialized to the same bytes. This implies: -// -// - Repeated serialization of a message will return the same bytes. -// - Different processes of the same binary (which may be executing on -// different machines) will serialize equal messages to the same bytes. -// -// Note that the deterministic serialization is NOT canonical across -// languages. It is not guaranteed to remain stable over time. It is unstable -// across different builds with schema changes due to unknown fields. -// Users who need canonical serialization (e.g., persistent storage in a -// canonical form, fingerprinting, etc.) should define their own -// canonicalization specification and implement their own serializer rather -// than relying on this API. -// -// If deterministic serialization is requested, map entries will be sorted -// by keys in lexographical order. This is an implementation detail and -// subject to change. -func (b *Buffer) SetDeterministic(deterministic bool) { - b.deterministic = deterministic -} - -// SetBuf sets buf as the internal buffer, -// where the contents of buf are considered the unread portion of the buffer. -func (b *Buffer) SetBuf(buf []byte) { - b.buf = buf - b.idx = 0 -} - -// Reset clears the internal buffer of all written and unread data. -func (b *Buffer) Reset() { - b.buf = b.buf[:0] - b.idx = 0 -} - -// Bytes returns the internal buffer. -func (b *Buffer) Bytes() []byte { - return b.buf -} - -// Unread returns the unread portion of the buffer. -func (b *Buffer) Unread() []byte { - return b.buf[b.idx:] -} - -// Marshal appends the wire-format encoding of m to the buffer. -func (b *Buffer) Marshal(m Message) error { - var err error - b.buf, err = marshalAppend(b.buf, m, b.deterministic) - return err -} - -// Unmarshal parses the wire-format message in the buffer and -// places the decoded results in m. -// It does not reset m before unmarshaling. -func (b *Buffer) Unmarshal(m Message) error { - err := UnmarshalMerge(b.Unread(), m) - b.idx = len(b.buf) - return err -} - -type unknownFields struct{ XXX_unrecognized protoimpl.UnknownFields } - -func (m *unknownFields) String() string { panic("not implemented") } -func (m *unknownFields) Reset() { panic("not implemented") } -func (m *unknownFields) ProtoMessage() { panic("not implemented") } - -// DebugPrint dumps the encoded bytes of b with a header and footer including s -// to stdout. This is only intended for debugging. -func (*Buffer) DebugPrint(s string, b []byte) { - m := MessageReflect(new(unknownFields)) - m.SetUnknown(b) - b, _ = prototext.MarshalOptions{AllowPartial: true, Indent: "\t"}.Marshal(m.Interface()) - fmt.Printf("==== %s ====\n%s==== %s ====\n", s, b, s) -} - -// EncodeVarint appends an unsigned varint encoding to the buffer. -func (b *Buffer) EncodeVarint(v uint64) error { - b.buf = protowire.AppendVarint(b.buf, v) - return nil -} - -// EncodeZigzag32 appends a 32-bit zig-zag varint encoding to the buffer. -func (b *Buffer) EncodeZigzag32(v uint64) error { - return b.EncodeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31)))) -} - -// EncodeZigzag64 appends a 64-bit zig-zag varint encoding to the buffer. -func (b *Buffer) EncodeZigzag64(v uint64) error { - return b.EncodeVarint(uint64((uint64(v) << 1) ^ uint64((int64(v) >> 63)))) -} - -// EncodeFixed32 appends a 32-bit little-endian integer to the buffer. -func (b *Buffer) EncodeFixed32(v uint64) error { - b.buf = protowire.AppendFixed32(b.buf, uint32(v)) - return nil -} - -// EncodeFixed64 appends a 64-bit little-endian integer to the buffer. -func (b *Buffer) EncodeFixed64(v uint64) error { - b.buf = protowire.AppendFixed64(b.buf, uint64(v)) - return nil -} - -// EncodeRawBytes appends a length-prefixed raw bytes to the buffer. -func (b *Buffer) EncodeRawBytes(v []byte) error { - b.buf = protowire.AppendBytes(b.buf, v) - return nil -} - -// EncodeStringBytes appends a length-prefixed raw bytes to the buffer. -// It does not validate whether v contains valid UTF-8. -func (b *Buffer) EncodeStringBytes(v string) error { - b.buf = protowire.AppendString(b.buf, v) - return nil -} - -// EncodeMessage appends a length-prefixed encoded message to the buffer. -func (b *Buffer) EncodeMessage(m Message) error { - var err error - b.buf = protowire.AppendVarint(b.buf, uint64(Size(m))) - b.buf, err = marshalAppend(b.buf, m, b.deterministic) - return err -} - -// DecodeVarint consumes an encoded unsigned varint from the buffer. -func (b *Buffer) DecodeVarint() (uint64, error) { - v, n := protowire.ConsumeVarint(b.buf[b.idx:]) - if n < 0 { - return 0, protowire.ParseError(n) - } - b.idx += n - return uint64(v), nil -} - -// DecodeZigzag32 consumes an encoded 32-bit zig-zag varint from the buffer. -func (b *Buffer) DecodeZigzag32() (uint64, error) { - v, err := b.DecodeVarint() - if err != nil { - return 0, err - } - return uint64((uint32(v) >> 1) ^ uint32((int32(v&1)<<31)>>31)), nil -} - -// DecodeZigzag64 consumes an encoded 64-bit zig-zag varint from the buffer. -func (b *Buffer) DecodeZigzag64() (uint64, error) { - v, err := b.DecodeVarint() - if err != nil { - return 0, err - } - return uint64((uint64(v) >> 1) ^ uint64((int64(v&1)<<63)>>63)), nil -} - -// DecodeFixed32 consumes a 32-bit little-endian integer from the buffer. -func (b *Buffer) DecodeFixed32() (uint64, error) { - v, n := protowire.ConsumeFixed32(b.buf[b.idx:]) - if n < 0 { - return 0, protowire.ParseError(n) - } - b.idx += n - return uint64(v), nil -} - -// DecodeFixed64 consumes a 64-bit little-endian integer from the buffer. -func (b *Buffer) DecodeFixed64() (uint64, error) { - v, n := protowire.ConsumeFixed64(b.buf[b.idx:]) - if n < 0 { - return 0, protowire.ParseError(n) - } - b.idx += n - return uint64(v), nil -} - -// DecodeRawBytes consumes a length-prefixed raw bytes from the buffer. -// If alloc is specified, it returns a copy the raw bytes -// rather than a sub-slice of the buffer. -func (b *Buffer) DecodeRawBytes(alloc bool) ([]byte, error) { - v, n := protowire.ConsumeBytes(b.buf[b.idx:]) - if n < 0 { - return nil, protowire.ParseError(n) - } - b.idx += n - if alloc { - v = append([]byte(nil), v...) - } - return v, nil -} - -// DecodeStringBytes consumes a length-prefixed raw bytes from the buffer. -// It does not validate whether the raw bytes contain valid UTF-8. -func (b *Buffer) DecodeStringBytes() (string, error) { - v, n := protowire.ConsumeString(b.buf[b.idx:]) - if n < 0 { - return "", protowire.ParseError(n) - } - b.idx += n - return v, nil -} - -// DecodeMessage consumes a length-prefixed message from the buffer. -// It does not reset m before unmarshaling. -func (b *Buffer) DecodeMessage(m Message) error { - v, err := b.DecodeRawBytes(false) - if err != nil { - return err - } - return UnmarshalMerge(v, m) -} - -// DecodeGroup consumes a message group from the buffer. -// It assumes that the start group marker has already been consumed and -// consumes all bytes until (and including the end group marker). -// It does not reset m before unmarshaling. -func (b *Buffer) DecodeGroup(m Message) error { - v, n, err := consumeGroup(b.buf[b.idx:]) - if err != nil { - return err - } - b.idx += n - return UnmarshalMerge(v, m) -} - -// consumeGroup parses b until it finds an end group marker, returning -// the raw bytes of the message (excluding the end group marker) and the -// the total length of the message (including the end group marker). -func consumeGroup(b []byte) ([]byte, int, error) { - b0 := b - depth := 1 // assume this follows a start group marker - for { - _, wtyp, tagLen := protowire.ConsumeTag(b) - if tagLen < 0 { - return nil, 0, protowire.ParseError(tagLen) - } - b = b[tagLen:] - - var valLen int - switch wtyp { - case protowire.VarintType: - _, valLen = protowire.ConsumeVarint(b) - case protowire.Fixed32Type: - _, valLen = protowire.ConsumeFixed32(b) - case protowire.Fixed64Type: - _, valLen = protowire.ConsumeFixed64(b) - case protowire.BytesType: - _, valLen = protowire.ConsumeBytes(b) - case protowire.StartGroupType: - depth++ - case protowire.EndGroupType: - depth-- - default: - return nil, 0, errors.New("proto: cannot parse reserved wire type") - } - if valLen < 0 { - return nil, 0, protowire.ParseError(valLen) - } - b = b[valLen:] - - if depth == 0 { - return b0[:len(b0)-len(b)-tagLen], len(b0) - len(b), nil - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/defaults.go b/vendor/github.com/golang/protobuf/proto/defaults.go deleted file mode 100644 index d399bf0..0000000 --- a/vendor/github.com/golang/protobuf/proto/defaults.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/reflect/protoreflect" -) - -// SetDefaults sets unpopulated scalar fields to their default values. -// Fields within a oneof are not set even if they have a default value. -// SetDefaults is recursively called upon any populated message fields. -func SetDefaults(m Message) { - if m != nil { - setDefaults(MessageReflect(m)) - } -} - -func setDefaults(m protoreflect.Message) { - fds := m.Descriptor().Fields() - for i := 0; i < fds.Len(); i++ { - fd := fds.Get(i) - if !m.Has(fd) { - if fd.HasDefault() && fd.ContainingOneof() == nil { - v := fd.Default() - if fd.Kind() == protoreflect.BytesKind { - v = protoreflect.ValueOf(append([]byte(nil), v.Bytes()...)) // copy the default bytes - } - m.Set(fd, v) - } - continue - } - } - - m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - switch { - // Handle singular message. - case fd.Cardinality() != protoreflect.Repeated: - if fd.Message() != nil { - setDefaults(m.Get(fd).Message()) - } - // Handle list of messages. - case fd.IsList(): - if fd.Message() != nil { - ls := m.Get(fd).List() - for i := 0; i < ls.Len(); i++ { - setDefaults(ls.Get(i).Message()) - } - } - // Handle map of messages. - case fd.IsMap(): - if fd.MapValue().Message() != nil { - ms := m.Get(fd).Map() - ms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool { - setDefaults(v.Message()) - return true - }) - } - } - return true - }) -} diff --git a/vendor/github.com/golang/protobuf/proto/deprecated.go b/vendor/github.com/golang/protobuf/proto/deprecated.go deleted file mode 100644 index e8db57e..0000000 --- a/vendor/github.com/golang/protobuf/proto/deprecated.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "encoding/json" - "errors" - "fmt" - "strconv" - - protoV2 "google.golang.org/protobuf/proto" -) - -var ( - // Deprecated: No longer returned. - ErrNil = errors.New("proto: Marshal called with nil") - - // Deprecated: No longer returned. - ErrTooLarge = errors.New("proto: message encodes to over 2 GB") - - // Deprecated: No longer returned. - ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof") -) - -// Deprecated: Do not use. -type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 } - -// Deprecated: Do not use. -func GetStats() Stats { return Stats{} } - -// Deprecated: Do not use. -func MarshalMessageSet(interface{}) ([]byte, error) { - return nil, errors.New("proto: not implemented") -} - -// Deprecated: Do not use. -func UnmarshalMessageSet([]byte, interface{}) error { - return errors.New("proto: not implemented") -} - -// Deprecated: Do not use. -func MarshalMessageSetJSON(interface{}) ([]byte, error) { - return nil, errors.New("proto: not implemented") -} - -// Deprecated: Do not use. -func UnmarshalMessageSetJSON([]byte, interface{}) error { - return errors.New("proto: not implemented") -} - -// Deprecated: Do not use. -func RegisterMessageSetType(Message, int32, string) {} - -// Deprecated: Do not use. -func EnumName(m map[int32]string, v int32) string { - s, ok := m[v] - if ok { - return s - } - return strconv.Itoa(int(v)) -} - -// Deprecated: Do not use. -func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) { - if data[0] == '"' { - // New style: enums are strings. - var repr string - if err := json.Unmarshal(data, &repr); err != nil { - return -1, err - } - val, ok := m[repr] - if !ok { - return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr) - } - return val, nil - } - // Old style: enums are ints. - var val int32 - if err := json.Unmarshal(data, &val); err != nil { - return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName) - } - return val, nil -} - -// Deprecated: Do not use; this type existed for intenal-use only. -type InternalMessageInfo struct{} - -// Deprecated: Do not use; this method existed for intenal-use only. -func (*InternalMessageInfo) DiscardUnknown(m Message) { - DiscardUnknown(m) -} - -// Deprecated: Do not use; this method existed for intenal-use only. -func (*InternalMessageInfo) Marshal(b []byte, m Message, deterministic bool) ([]byte, error) { - return protoV2.MarshalOptions{Deterministic: deterministic}.MarshalAppend(b, MessageV2(m)) -} - -// Deprecated: Do not use; this method existed for intenal-use only. -func (*InternalMessageInfo) Merge(dst, src Message) { - protoV2.Merge(MessageV2(dst), MessageV2(src)) -} - -// Deprecated: Do not use; this method existed for intenal-use only. -func (*InternalMessageInfo) Size(m Message) int { - return protoV2.Size(MessageV2(m)) -} - -// Deprecated: Do not use; this method existed for intenal-use only. -func (*InternalMessageInfo) Unmarshal(m Message, b []byte) error { - return protoV2.UnmarshalOptions{Merge: true}.Unmarshal(b, MessageV2(m)) -} diff --git a/vendor/github.com/golang/protobuf/proto/discard.go b/vendor/github.com/golang/protobuf/proto/discard.go deleted file mode 100644 index 2187e87..0000000 --- a/vendor/github.com/golang/protobuf/proto/discard.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/reflect/protoreflect" -) - -// DiscardUnknown recursively discards all unknown fields from this message -// and all embedded messages. -// -// When unmarshaling a message with unrecognized fields, the tags and values -// of such fields are preserved in the Message. This allows a later call to -// marshal to be able to produce a message that continues to have those -// unrecognized fields. To avoid this, DiscardUnknown is used to -// explicitly clear the unknown fields after unmarshaling. -func DiscardUnknown(m Message) { - if m != nil { - discardUnknown(MessageReflect(m)) - } -} - -func discardUnknown(m protoreflect.Message) { - m.Range(func(fd protoreflect.FieldDescriptor, val protoreflect.Value) bool { - switch { - // Handle singular message. - case fd.Cardinality() != protoreflect.Repeated: - if fd.Message() != nil { - discardUnknown(m.Get(fd).Message()) - } - // Handle list of messages. - case fd.IsList(): - if fd.Message() != nil { - ls := m.Get(fd).List() - for i := 0; i < ls.Len(); i++ { - discardUnknown(ls.Get(i).Message()) - } - } - // Handle map of messages. - case fd.IsMap(): - if fd.MapValue().Message() != nil { - ms := m.Get(fd).Map() - ms.Range(func(_ protoreflect.MapKey, v protoreflect.Value) bool { - discardUnknown(v.Message()) - return true - }) - } - } - return true - }) - - // Discard unknown fields. - if len(m.GetUnknown()) > 0 { - m.SetUnknown(nil) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go deleted file mode 100644 index 42fc120..0000000 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ /dev/null @@ -1,356 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "errors" - "fmt" - "reflect" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" - "google.golang.org/protobuf/runtime/protoimpl" -) - -type ( - // ExtensionDesc represents an extension descriptor and - // is used to interact with an extension field in a message. - // - // Variables of this type are generated in code by protoc-gen-go. - ExtensionDesc = protoimpl.ExtensionInfo - - // ExtensionRange represents a range of message extensions. - // Used in code generated by protoc-gen-go. - ExtensionRange = protoiface.ExtensionRangeV1 - - // Deprecated: Do not use; this is an internal type. - Extension = protoimpl.ExtensionFieldV1 - - // Deprecated: Do not use; this is an internal type. - XXX_InternalExtensions = protoimpl.ExtensionFields -) - -// ErrMissingExtension reports whether the extension was not present. -var ErrMissingExtension = errors.New("proto: missing extension") - -var errNotExtendable = errors.New("proto: not an extendable proto.Message") - -// HasExtension reports whether the extension field is present in m -// either as an explicitly populated field or as an unknown field. -func HasExtension(m Message, xt *ExtensionDesc) (has bool) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return false - } - - // Check whether any populated known field matches the field number. - xtd := xt.TypeDescriptor() - if isValidExtension(mr.Descriptor(), xtd) { - has = mr.Has(xtd) - } else { - mr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { - has = int32(fd.Number()) == xt.Field - return !has - }) - } - - // Check whether any unknown field matches the field number. - for b := mr.GetUnknown(); !has && len(b) > 0; { - num, _, n := protowire.ConsumeField(b) - has = int32(num) == xt.Field - b = b[n:] - } - return has -} - -// ClearExtension removes the extension field from m -// either as an explicitly populated field or as an unknown field. -func ClearExtension(m Message, xt *ExtensionDesc) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return - } - - xtd := xt.TypeDescriptor() - if isValidExtension(mr.Descriptor(), xtd) { - mr.Clear(xtd) - } else { - mr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { - if int32(fd.Number()) == xt.Field { - mr.Clear(fd) - return false - } - return true - }) - } - clearUnknown(mr, fieldNum(xt.Field)) -} - -// ClearAllExtensions clears all extensions from m. -// This includes populated fields and unknown fields in the extension range. -func ClearAllExtensions(m Message) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return - } - - mr.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { - if fd.IsExtension() { - mr.Clear(fd) - } - return true - }) - clearUnknown(mr, mr.Descriptor().ExtensionRanges()) -} - -// GetExtension retrieves a proto2 extended field from m. -// -// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil), -// then GetExtension parses the encoded field and returns a Go value of the specified type. -// If the field is not present, then the default value is returned (if one is specified), -// otherwise ErrMissingExtension is reported. -// -// If the descriptor is type incomplete (i.e., ExtensionDesc.ExtensionType is nil), -// then GetExtension returns the raw encoded bytes for the extension field. -func GetExtension(m Message, xt *ExtensionDesc) (interface{}, error) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 { - return nil, errNotExtendable - } - - // Retrieve the unknown fields for this extension field. - var bo protoreflect.RawFields - for bi := mr.GetUnknown(); len(bi) > 0; { - num, _, n := protowire.ConsumeField(bi) - if int32(num) == xt.Field { - bo = append(bo, bi[:n]...) - } - bi = bi[n:] - } - - // For type incomplete descriptors, only retrieve the unknown fields. - if xt.ExtensionType == nil { - return []byte(bo), nil - } - - // If the extension field only exists as unknown fields, unmarshal it. - // This is rarely done since proto.Unmarshal eagerly unmarshals extensions. - xtd := xt.TypeDescriptor() - if !isValidExtension(mr.Descriptor(), xtd) { - return nil, fmt.Errorf("proto: bad extended type; %T does not extend %T", xt.ExtendedType, m) - } - if !mr.Has(xtd) && len(bo) > 0 { - m2 := mr.New() - if err := (proto.UnmarshalOptions{ - Resolver: extensionResolver{xt}, - }.Unmarshal(bo, m2.Interface())); err != nil { - return nil, err - } - if m2.Has(xtd) { - mr.Set(xtd, m2.Get(xtd)) - clearUnknown(mr, fieldNum(xt.Field)) - } - } - - // Check whether the message has the extension field set or a default. - var pv protoreflect.Value - switch { - case mr.Has(xtd): - pv = mr.Get(xtd) - case xtd.HasDefault(): - pv = xtd.Default() - default: - return nil, ErrMissingExtension - } - - v := xt.InterfaceOf(pv) - rv := reflect.ValueOf(v) - if isScalarKind(rv.Kind()) { - rv2 := reflect.New(rv.Type()) - rv2.Elem().Set(rv) - v = rv2.Interface() - } - return v, nil -} - -// extensionResolver is a custom extension resolver that stores a single -// extension type that takes precedence over the global registry. -type extensionResolver struct{ xt protoreflect.ExtensionType } - -func (r extensionResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) { - if xtd := r.xt.TypeDescriptor(); xtd.FullName() == field { - return r.xt, nil - } - return protoregistry.GlobalTypes.FindExtensionByName(field) -} - -func (r extensionResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) { - if xtd := r.xt.TypeDescriptor(); xtd.ContainingMessage().FullName() == message && xtd.Number() == field { - return r.xt, nil - } - return protoregistry.GlobalTypes.FindExtensionByNumber(message, field) -} - -// GetExtensions returns a list of the extensions values present in m, -// corresponding with the provided list of extension descriptors, xts. -// If an extension is missing in m, the corresponding value is nil. -func GetExtensions(m Message, xts []*ExtensionDesc) ([]interface{}, error) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return nil, errNotExtendable - } - - vs := make([]interface{}, len(xts)) - for i, xt := range xts { - v, err := GetExtension(m, xt) - if err != nil { - if err == ErrMissingExtension { - continue - } - return vs, err - } - vs[i] = v - } - return vs, nil -} - -// SetExtension sets an extension field in m to the provided value. -func SetExtension(m Message, xt *ExtensionDesc, v interface{}) error { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 { - return errNotExtendable - } - - rv := reflect.ValueOf(v) - if reflect.TypeOf(v) != reflect.TypeOf(xt.ExtensionType) { - return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", v, xt.ExtensionType) - } - if rv.Kind() == reflect.Ptr { - if rv.IsNil() { - return fmt.Errorf("proto: SetExtension called with nil value of type %T", v) - } - if isScalarKind(rv.Elem().Kind()) { - v = rv.Elem().Interface() - } - } - - xtd := xt.TypeDescriptor() - if !isValidExtension(mr.Descriptor(), xtd) { - return fmt.Errorf("proto: bad extended type; %T does not extend %T", xt.ExtendedType, m) - } - mr.Set(xtd, xt.ValueOf(v)) - clearUnknown(mr, fieldNum(xt.Field)) - return nil -} - -// SetRawExtension inserts b into the unknown fields of m. -// -// Deprecated: Use Message.ProtoReflect.SetUnknown instead. -func SetRawExtension(m Message, fnum int32, b []byte) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return - } - - // Verify that the raw field is valid. - for b0 := b; len(b0) > 0; { - num, _, n := protowire.ConsumeField(b0) - if int32(num) != fnum { - panic(fmt.Sprintf("mismatching field number: got %d, want %d", num, fnum)) - } - b0 = b0[n:] - } - - ClearExtension(m, &ExtensionDesc{Field: fnum}) - mr.SetUnknown(append(mr.GetUnknown(), b...)) -} - -// ExtensionDescs returns a list of extension descriptors found in m, -// containing descriptors for both populated extension fields in m and -// also unknown fields of m that are in the extension range. -// For the later case, an type incomplete descriptor is provided where only -// the ExtensionDesc.Field field is populated. -// The order of the extension descriptors is undefined. -func ExtensionDescs(m Message) ([]*ExtensionDesc, error) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() || mr.Descriptor().ExtensionRanges().Len() == 0 { - return nil, errNotExtendable - } - - // Collect a set of known extension descriptors. - extDescs := make(map[protoreflect.FieldNumber]*ExtensionDesc) - mr.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - if fd.IsExtension() { - xt := fd.(protoreflect.ExtensionTypeDescriptor) - if xd, ok := xt.Type().(*ExtensionDesc); ok { - extDescs[fd.Number()] = xd - } - } - return true - }) - - // Collect a set of unknown extension descriptors. - extRanges := mr.Descriptor().ExtensionRanges() - for b := mr.GetUnknown(); len(b) > 0; { - num, _, n := protowire.ConsumeField(b) - if extRanges.Has(num) && extDescs[num] == nil { - extDescs[num] = nil - } - b = b[n:] - } - - // Transpose the set of descriptors into a list. - var xts []*ExtensionDesc - for num, xt := range extDescs { - if xt == nil { - xt = &ExtensionDesc{Field: int32(num)} - } - xts = append(xts, xt) - } - return xts, nil -} - -// isValidExtension reports whether xtd is a valid extension descriptor for md. -func isValidExtension(md protoreflect.MessageDescriptor, xtd protoreflect.ExtensionTypeDescriptor) bool { - return xtd.ContainingMessage() == md && md.ExtensionRanges().Has(xtd.Number()) -} - -// isScalarKind reports whether k is a protobuf scalar kind (except bytes). -// This function exists for historical reasons since the representation of -// scalars differs between v1 and v2, where v1 uses *T and v2 uses T. -func isScalarKind(k reflect.Kind) bool { - switch k { - case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: - return true - default: - return false - } -} - -// clearUnknown removes unknown fields from m where remover.Has reports true. -func clearUnknown(m protoreflect.Message, remover interface { - Has(protoreflect.FieldNumber) bool -}) { - var bo protoreflect.RawFields - for bi := m.GetUnknown(); len(bi) > 0; { - num, _, n := protowire.ConsumeField(bi) - if !remover.Has(num) { - bo = append(bo, bi[:n]...) - } - bi = bi[n:] - } - if bi := m.GetUnknown(); len(bi) != len(bo) { - m.SetUnknown(bo) - } -} - -type fieldNum protoreflect.FieldNumber - -func (n1 fieldNum) Has(n2 protoreflect.FieldNumber) bool { - return protoreflect.FieldNumber(n1) == n2 -} diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go deleted file mode 100644 index dcdc220..0000000 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ /dev/null @@ -1,306 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "sync" - - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoimpl" -) - -// StructProperties represents protocol buffer type information for a -// generated protobuf message in the open-struct API. -// -// Deprecated: Do not use. -type StructProperties struct { - // Prop are the properties for each field. - // - // Fields belonging to a oneof are stored in OneofTypes instead, with a - // single Properties representing the parent oneof held here. - // - // The order of Prop matches the order of fields in the Go struct. - // Struct fields that are not related to protobufs have a "XXX_" prefix - // in the Properties.Name and must be ignored by the user. - Prop []*Properties - - // OneofTypes contains information about the oneof fields in this message. - // It is keyed by the protobuf field name. - OneofTypes map[string]*OneofProperties -} - -// Properties represents the type information for a protobuf message field. -// -// Deprecated: Do not use. -type Properties struct { - // Name is a placeholder name with little meaningful semantic value. - // If the name has an "XXX_" prefix, the entire Properties must be ignored. - Name string - // OrigName is the protobuf field name or oneof name. - OrigName string - // JSONName is the JSON name for the protobuf field. - JSONName string - // Enum is a placeholder name for enums. - // For historical reasons, this is neither the Go name for the enum, - // nor the protobuf name for the enum. - Enum string // Deprecated: Do not use. - // Weak contains the full name of the weakly referenced message. - Weak string - // Wire is a string representation of the wire type. - Wire string - // WireType is the protobuf wire type for the field. - WireType int - // Tag is the protobuf field number. - Tag int - // Required reports whether this is a required field. - Required bool - // Optional reports whether this is a optional field. - Optional bool - // Repeated reports whether this is a repeated field. - Repeated bool - // Packed reports whether this is a packed repeated field of scalars. - Packed bool - // Proto3 reports whether this field operates under the proto3 syntax. - Proto3 bool - // Oneof reports whether this field belongs within a oneof. - Oneof bool - - // Default is the default value in string form. - Default string - // HasDefault reports whether the field has a default value. - HasDefault bool - - // MapKeyProp is the properties for the key field for a map field. - MapKeyProp *Properties - // MapValProp is the properties for the value field for a map field. - MapValProp *Properties -} - -// OneofProperties represents the type information for a protobuf oneof. -// -// Deprecated: Do not use. -type OneofProperties struct { - // Type is a pointer to the generated wrapper type for the field value. - // This is nil for messages that are not in the open-struct API. - Type reflect.Type - // Field is the index into StructProperties.Prop for the containing oneof. - Field int - // Prop is the properties for the field. - Prop *Properties -} - -// String formats the properties in the protobuf struct field tag style. -func (p *Properties) String() string { - s := p.Wire - s += "," + strconv.Itoa(p.Tag) - if p.Required { - s += ",req" - } - if p.Optional { - s += ",opt" - } - if p.Repeated { - s += ",rep" - } - if p.Packed { - s += ",packed" - } - s += ",name=" + p.OrigName - if p.JSONName != "" { - s += ",json=" + p.JSONName - } - if len(p.Enum) > 0 { - s += ",enum=" + p.Enum - } - if len(p.Weak) > 0 { - s += ",weak=" + p.Weak - } - if p.Proto3 { - s += ",proto3" - } - if p.Oneof { - s += ",oneof" - } - if p.HasDefault { - s += ",def=" + p.Default - } - return s -} - -// Parse populates p by parsing a string in the protobuf struct field tag style. -func (p *Properties) Parse(tag string) { - // For example: "bytes,49,opt,name=foo,def=hello!" - for len(tag) > 0 { - i := strings.IndexByte(tag, ',') - if i < 0 { - i = len(tag) - } - switch s := tag[:i]; { - case strings.HasPrefix(s, "name="): - p.OrigName = s[len("name="):] - case strings.HasPrefix(s, "json="): - p.JSONName = s[len("json="):] - case strings.HasPrefix(s, "enum="): - p.Enum = s[len("enum="):] - case strings.HasPrefix(s, "weak="): - p.Weak = s[len("weak="):] - case strings.Trim(s, "0123456789") == "": - n, _ := strconv.ParseUint(s, 10, 32) - p.Tag = int(n) - case s == "opt": - p.Optional = true - case s == "req": - p.Required = true - case s == "rep": - p.Repeated = true - case s == "varint" || s == "zigzag32" || s == "zigzag64": - p.Wire = s - p.WireType = WireVarint - case s == "fixed32": - p.Wire = s - p.WireType = WireFixed32 - case s == "fixed64": - p.Wire = s - p.WireType = WireFixed64 - case s == "bytes": - p.Wire = s - p.WireType = WireBytes - case s == "group": - p.Wire = s - p.WireType = WireStartGroup - case s == "packed": - p.Packed = true - case s == "proto3": - p.Proto3 = true - case s == "oneof": - p.Oneof = true - case strings.HasPrefix(s, "def="): - // The default tag is special in that everything afterwards is the - // default regardless of the presence of commas. - p.HasDefault = true - p.Default, i = tag[len("def="):], len(tag) - } - tag = strings.TrimPrefix(tag[i:], ",") - } -} - -// Init populates the properties from a protocol buffer struct tag. -// -// Deprecated: Do not use. -func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) { - p.Name = name - p.OrigName = name - if tag == "" { - return - } - p.Parse(tag) - - if typ != nil && typ.Kind() == reflect.Map { - p.MapKeyProp = new(Properties) - p.MapKeyProp.Init(nil, "Key", f.Tag.Get("protobuf_key"), nil) - p.MapValProp = new(Properties) - p.MapValProp.Init(nil, "Value", f.Tag.Get("protobuf_val"), nil) - } -} - -var propertiesCache sync.Map // map[reflect.Type]*StructProperties - -// GetProperties returns the list of properties for the type represented by t, -// which must be a generated protocol buffer message in the open-struct API, -// where protobuf message fields are represented by exported Go struct fields. -// -// Deprecated: Use protobuf reflection instead. -func GetProperties(t reflect.Type) *StructProperties { - if p, ok := propertiesCache.Load(t); ok { - return p.(*StructProperties) - } - p, _ := propertiesCache.LoadOrStore(t, newProperties(t)) - return p.(*StructProperties) -} - -func newProperties(t reflect.Type) *StructProperties { - if t.Kind() != reflect.Struct { - panic(fmt.Sprintf("%v is not a generated message in the open-struct API", t)) - } - - var hasOneof bool - prop := new(StructProperties) - - // Construct a list of properties for each field in the struct. - for i := 0; i < t.NumField(); i++ { - p := new(Properties) - f := t.Field(i) - tagField := f.Tag.Get("protobuf") - p.Init(f.Type, f.Name, tagField, &f) - - tagOneof := f.Tag.Get("protobuf_oneof") - if tagOneof != "" { - hasOneof = true - p.OrigName = tagOneof - } - - // Rename unrelated struct fields with the "XXX_" prefix since so much - // user code simply checks for this to exclude special fields. - if tagField == "" && tagOneof == "" && !strings.HasPrefix(p.Name, "XXX_") { - p.Name = "XXX_" + p.Name - p.OrigName = "XXX_" + p.OrigName - } else if p.Weak != "" { - p.Name = p.OrigName // avoid possible "XXX_" prefix on weak field - } - - prop.Prop = append(prop.Prop, p) - } - - // Construct a mapping of oneof field names to properties. - if hasOneof { - var oneofWrappers []interface{} - if fn, ok := reflect.PtrTo(t).MethodByName("XXX_OneofFuncs"); ok { - oneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[3].Interface().([]interface{}) - } - if fn, ok := reflect.PtrTo(t).MethodByName("XXX_OneofWrappers"); ok { - oneofWrappers = fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0].Interface().([]interface{}) - } - if m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(protoreflect.ProtoMessage); ok { - if m, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *protoimpl.MessageInfo }); ok { - oneofWrappers = m.ProtoMessageInfo().OneofWrappers - } - } - - prop.OneofTypes = make(map[string]*OneofProperties) - for _, wrapper := range oneofWrappers { - p := &OneofProperties{ - Type: reflect.ValueOf(wrapper).Type(), // *T - Prop: new(Properties), - } - f := p.Type.Elem().Field(0) - p.Prop.Name = f.Name - p.Prop.Parse(f.Tag.Get("protobuf")) - - // Determine the struct field that contains this oneof. - // Each wrapper is assignable to exactly one parent field. - var foundOneof bool - for i := 0; i < t.NumField() && !foundOneof; i++ { - if p.Type.AssignableTo(t.Field(i).Type) { - p.Field = i - foundOneof = true - } - } - if !foundOneof { - panic(fmt.Sprintf("%v is not a generated message in the open-struct API", t)) - } - prop.OneofTypes[p.Prop.OrigName] = p - } - } - - return prop -} - -func (sp *StructProperties) Len() int { return len(sp.Prop) } -func (sp *StructProperties) Less(i, j int) bool { return false } -func (sp *StructProperties) Swap(i, j int) { return } diff --git a/vendor/github.com/golang/protobuf/proto/proto.go b/vendor/github.com/golang/protobuf/proto/proto.go deleted file mode 100644 index 5aee89c..0000000 --- a/vendor/github.com/golang/protobuf/proto/proto.go +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package proto provides functionality for handling protocol buffer messages. -// In particular, it provides marshaling and unmarshaling between a protobuf -// message and the binary wire format. -// -// See https://developers.google.com/protocol-buffers/docs/gotutorial for -// more information. -// -// Deprecated: Use the "google.golang.org/protobuf/proto" package instead. -package proto - -import ( - protoV2 "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" - "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - ProtoPackageIsVersion1 = true - ProtoPackageIsVersion2 = true - ProtoPackageIsVersion3 = true - ProtoPackageIsVersion4 = true -) - -// GeneratedEnum is any enum type generated by protoc-gen-go -// which is a named int32 kind. -// This type exists for documentation purposes. -type GeneratedEnum interface{} - -// GeneratedMessage is any message type generated by protoc-gen-go -// which is a pointer to a named struct kind. -// This type exists for documentation purposes. -type GeneratedMessage interface{} - -// Message is a protocol buffer message. -// -// This is the v1 version of the message interface and is marginally better -// than an empty interface as it lacks any method to programatically interact -// with the contents of the message. -// -// A v2 message is declared in "google.golang.org/protobuf/proto".Message and -// exposes protobuf reflection as a first-class feature of the interface. -// -// To convert a v1 message to a v2 message, use the MessageV2 function. -// To convert a v2 message to a v1 message, use the MessageV1 function. -type Message = protoiface.MessageV1 - -// MessageV1 converts either a v1 or v2 message to a v1 message. -// It returns nil if m is nil. -func MessageV1(m GeneratedMessage) protoiface.MessageV1 { - return protoimpl.X.ProtoMessageV1Of(m) -} - -// MessageV2 converts either a v1 or v2 message to a v2 message. -// It returns nil if m is nil. -func MessageV2(m GeneratedMessage) protoV2.Message { - return protoimpl.X.ProtoMessageV2Of(m) -} - -// MessageReflect returns a reflective view for a message. -// It returns nil if m is nil. -func MessageReflect(m Message) protoreflect.Message { - return protoimpl.X.MessageOf(m) -} - -// Marshaler is implemented by messages that can marshal themselves. -// This interface is used by the following functions: Size, Marshal, -// Buffer.Marshal, and Buffer.EncodeMessage. -// -// Deprecated: Do not implement. -type Marshaler interface { - // Marshal formats the encoded bytes of the message. - // It should be deterministic and emit valid protobuf wire data. - // The caller takes ownership of the returned buffer. - Marshal() ([]byte, error) -} - -// Unmarshaler is implemented by messages that can unmarshal themselves. -// This interface is used by the following functions: Unmarshal, UnmarshalMerge, -// Buffer.Unmarshal, Buffer.DecodeMessage, and Buffer.DecodeGroup. -// -// Deprecated: Do not implement. -type Unmarshaler interface { - // Unmarshal parses the encoded bytes of the protobuf wire input. - // The provided buffer is only valid for during method call. - // It should not reset the receiver message. - Unmarshal([]byte) error -} - -// Merger is implemented by messages that can merge themselves. -// This interface is used by the following functions: Clone and Merge. -// -// Deprecated: Do not implement. -type Merger interface { - // Merge merges the contents of src into the receiver message. - // It clones all data structures in src such that it aliases no mutable - // memory referenced by src. - Merge(src Message) -} - -// RequiredNotSetError is an error type returned when -// marshaling or unmarshaling a message with missing required fields. -type RequiredNotSetError struct { - err error -} - -func (e *RequiredNotSetError) Error() string { - if e.err != nil { - return e.err.Error() - } - return "proto: required field not set" -} -func (e *RequiredNotSetError) RequiredNotSet() bool { - return true -} - -func checkRequiredNotSet(m protoV2.Message) error { - if err := protoV2.CheckInitialized(m); err != nil { - return &RequiredNotSetError{err: err} - } - return nil -} - -// Clone returns a deep copy of src. -func Clone(src Message) Message { - return MessageV1(protoV2.Clone(MessageV2(src))) -} - -// Merge merges src into dst, which must be messages of the same type. -// -// Populated scalar fields in src are copied to dst, while populated -// singular messages in src are merged into dst by recursively calling Merge. -// The elements of every list field in src is appended to the corresponded -// list fields in dst. The entries of every map field in src is copied into -// the corresponding map field in dst, possibly replacing existing entries. -// The unknown fields of src are appended to the unknown fields of dst. -func Merge(dst, src Message) { - protoV2.Merge(MessageV2(dst), MessageV2(src)) -} - -// Equal reports whether two messages are equal. -// If two messages marshal to the same bytes under deterministic serialization, -// then Equal is guaranteed to report true. -// -// Two messages are equal if they are the same protobuf message type, -// have the same set of populated known and extension field values, -// and the same set of unknown fields values. -// -// Scalar values are compared with the equivalent of the == operator in Go, -// except bytes values which are compared using bytes.Equal and -// floating point values which specially treat NaNs as equal. -// Message values are compared by recursively calling Equal. -// Lists are equal if each element value is also equal. -// Maps are equal if they have the same set of keys, where the pair of values -// for each key is also equal. -func Equal(x, y Message) bool { - return protoV2.Equal(MessageV2(x), MessageV2(y)) -} - -func isMessageSet(md protoreflect.MessageDescriptor) bool { - ms, ok := md.(interface{ IsMessageSet() bool }) - return ok && ms.IsMessageSet() -} diff --git a/vendor/github.com/golang/protobuf/proto/registry.go b/vendor/github.com/golang/protobuf/proto/registry.go deleted file mode 100644 index 337cadc..0000000 --- a/vendor/github.com/golang/protobuf/proto/registry.go +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "bytes" - "compress/gzip" - "fmt" - "io" - "reflect" - "strings" - "sync" - - "google.golang.org/protobuf/reflect/protodesc" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoimpl" -) - -// filePath is the path to the proto source file. -type filePath = string // e.g., "google/protobuf/descriptor.proto" - -// fileDescGZIP is the compressed contents of the encoded FileDescriptorProto. -type fileDescGZIP = []byte - -var fileCache sync.Map // map[filePath]fileDescGZIP - -// RegisterFile is called from generated code to register the compressed -// FileDescriptorProto with the file path for a proto source file. -// -// Deprecated: Use protoregistry.GlobalFiles.RegisterFile instead. -func RegisterFile(s filePath, d fileDescGZIP) { - // Decompress the descriptor. - zr, err := gzip.NewReader(bytes.NewReader(d)) - if err != nil { - panic(fmt.Sprintf("proto: invalid compressed file descriptor: %v", err)) - } - b, err := io.ReadAll(zr) - if err != nil { - panic(fmt.Sprintf("proto: invalid compressed file descriptor: %v", err)) - } - - // Construct a protoreflect.FileDescriptor from the raw descriptor. - // Note that DescBuilder.Build automatically registers the constructed - // file descriptor with the v2 registry. - protoimpl.DescBuilder{RawDescriptor: b}.Build() - - // Locally cache the raw descriptor form for the file. - fileCache.Store(s, d) -} - -// FileDescriptor returns the compressed FileDescriptorProto given the file path -// for a proto source file. It returns nil if not found. -// -// Deprecated: Use protoregistry.GlobalFiles.FindFileByPath instead. -func FileDescriptor(s filePath) fileDescGZIP { - if v, ok := fileCache.Load(s); ok { - return v.(fileDescGZIP) - } - - // Find the descriptor in the v2 registry. - var b []byte - if fd, _ := protoregistry.GlobalFiles.FindFileByPath(s); fd != nil { - b, _ = Marshal(protodesc.ToFileDescriptorProto(fd)) - } - - // Locally cache the raw descriptor form for the file. - if len(b) > 0 { - v, _ := fileCache.LoadOrStore(s, protoimpl.X.CompressGZIP(b)) - return v.(fileDescGZIP) - } - return nil -} - -// enumName is the name of an enum. For historical reasons, the enum name is -// neither the full Go name nor the full protobuf name of the enum. -// The name is the dot-separated combination of just the proto package that the -// enum is declared within followed by the Go type name of the generated enum. -type enumName = string // e.g., "my.proto.package.GoMessage_GoEnum" - -// enumsByName maps enum values by name to their numeric counterpart. -type enumsByName = map[string]int32 - -// enumsByNumber maps enum values by number to their name counterpart. -type enumsByNumber = map[int32]string - -var enumCache sync.Map // map[enumName]enumsByName -var numFilesCache sync.Map // map[protoreflect.FullName]int - -// RegisterEnum is called from the generated code to register the mapping of -// enum value names to enum numbers for the enum identified by s. -// -// Deprecated: Use protoregistry.GlobalTypes.RegisterEnum instead. -func RegisterEnum(s enumName, _ enumsByNumber, m enumsByName) { - if _, ok := enumCache.Load(s); ok { - panic("proto: duplicate enum registered: " + s) - } - enumCache.Store(s, m) - - // This does not forward registration to the v2 registry since this API - // lacks sufficient information to construct a complete v2 enum descriptor. -} - -// EnumValueMap returns the mapping from enum value names to enum numbers for -// the enum of the given name. It returns nil if not found. -// -// Deprecated: Use protoregistry.GlobalTypes.FindEnumByName instead. -func EnumValueMap(s enumName) enumsByName { - if v, ok := enumCache.Load(s); ok { - return v.(enumsByName) - } - - // Check whether the cache is stale. If the number of files in the current - // package differs, then it means that some enums may have been recently - // registered upstream that we do not know about. - var protoPkg protoreflect.FullName - if i := strings.LastIndexByte(s, '.'); i >= 0 { - protoPkg = protoreflect.FullName(s[:i]) - } - v, _ := numFilesCache.Load(protoPkg) - numFiles, _ := v.(int) - if protoregistry.GlobalFiles.NumFilesByPackage(protoPkg) == numFiles { - return nil // cache is up-to-date; was not found earlier - } - - // Update the enum cache for all enums declared in the given proto package. - numFiles = 0 - protoregistry.GlobalFiles.RangeFilesByPackage(protoPkg, func(fd protoreflect.FileDescriptor) bool { - walkEnums(fd, func(ed protoreflect.EnumDescriptor) { - name := protoimpl.X.LegacyEnumName(ed) - if _, ok := enumCache.Load(name); !ok { - m := make(enumsByName) - evs := ed.Values() - for i := evs.Len() - 1; i >= 0; i-- { - ev := evs.Get(i) - m[string(ev.Name())] = int32(ev.Number()) - } - enumCache.LoadOrStore(name, m) - } - }) - numFiles++ - return true - }) - numFilesCache.Store(protoPkg, numFiles) - - // Check cache again for enum map. - if v, ok := enumCache.Load(s); ok { - return v.(enumsByName) - } - return nil -} - -// walkEnums recursively walks all enums declared in d. -func walkEnums(d interface { - Enums() protoreflect.EnumDescriptors - Messages() protoreflect.MessageDescriptors -}, f func(protoreflect.EnumDescriptor)) { - eds := d.Enums() - for i := eds.Len() - 1; i >= 0; i-- { - f(eds.Get(i)) - } - mds := d.Messages() - for i := mds.Len() - 1; i >= 0; i-- { - walkEnums(mds.Get(i), f) - } -} - -// messageName is the full name of protobuf message. -type messageName = string - -var messageTypeCache sync.Map // map[messageName]reflect.Type - -// RegisterType is called from generated code to register the message Go type -// for a message of the given name. -// -// Deprecated: Use protoregistry.GlobalTypes.RegisterMessage instead. -func RegisterType(m Message, s messageName) { - mt := protoimpl.X.LegacyMessageTypeOf(m, protoreflect.FullName(s)) - if err := protoregistry.GlobalTypes.RegisterMessage(mt); err != nil { - panic(err) - } - messageTypeCache.Store(s, reflect.TypeOf(m)) -} - -// RegisterMapType is called from generated code to register the Go map type -// for a protobuf message representing a map entry. -// -// Deprecated: Do not use. -func RegisterMapType(m interface{}, s messageName) { - t := reflect.TypeOf(m) - if t.Kind() != reflect.Map { - panic(fmt.Sprintf("invalid map kind: %v", t)) - } - if _, ok := messageTypeCache.Load(s); ok { - panic(fmt.Errorf("proto: duplicate proto message registered: %s", s)) - } - messageTypeCache.Store(s, t) -} - -// MessageType returns the message type for a named message. -// It returns nil if not found. -// -// Deprecated: Use protoregistry.GlobalTypes.FindMessageByName instead. -func MessageType(s messageName) reflect.Type { - if v, ok := messageTypeCache.Load(s); ok { - return v.(reflect.Type) - } - - // Derive the message type from the v2 registry. - var t reflect.Type - if mt, _ := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName(s)); mt != nil { - t = messageGoType(mt) - } - - // If we could not get a concrete type, it is possible that it is a - // pseudo-message for a map entry. - if t == nil { - d, _ := protoregistry.GlobalFiles.FindDescriptorByName(protoreflect.FullName(s)) - if md, _ := d.(protoreflect.MessageDescriptor); md != nil && md.IsMapEntry() { - kt := goTypeForField(md.Fields().ByNumber(1)) - vt := goTypeForField(md.Fields().ByNumber(2)) - t = reflect.MapOf(kt, vt) - } - } - - // Locally cache the message type for the given name. - if t != nil { - v, _ := messageTypeCache.LoadOrStore(s, t) - return v.(reflect.Type) - } - return nil -} - -func goTypeForField(fd protoreflect.FieldDescriptor) reflect.Type { - switch k := fd.Kind(); k { - case protoreflect.EnumKind: - if et, _ := protoregistry.GlobalTypes.FindEnumByName(fd.Enum().FullName()); et != nil { - return enumGoType(et) - } - return reflect.TypeOf(protoreflect.EnumNumber(0)) - case protoreflect.MessageKind, protoreflect.GroupKind: - if mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()); mt != nil { - return messageGoType(mt) - } - return reflect.TypeOf((*protoreflect.Message)(nil)).Elem() - default: - return reflect.TypeOf(fd.Default().Interface()) - } -} - -func enumGoType(et protoreflect.EnumType) reflect.Type { - return reflect.TypeOf(et.New(0)) -} - -func messageGoType(mt protoreflect.MessageType) reflect.Type { - return reflect.TypeOf(MessageV1(mt.Zero().Interface())) -} - -// MessageName returns the full protobuf name for the given message type. -// -// Deprecated: Use protoreflect.MessageDescriptor.FullName instead. -func MessageName(m Message) messageName { - if m == nil { - return "" - } - if m, ok := m.(interface{ XXX_MessageName() messageName }); ok { - return m.XXX_MessageName() - } - return messageName(protoimpl.X.MessageDescriptorOf(m).FullName()) -} - -// RegisterExtension is called from the generated code to register -// the extension descriptor. -// -// Deprecated: Use protoregistry.GlobalTypes.RegisterExtension instead. -func RegisterExtension(d *ExtensionDesc) { - if err := protoregistry.GlobalTypes.RegisterExtension(d); err != nil { - panic(err) - } -} - -type extensionsByNumber = map[int32]*ExtensionDesc - -var extensionCache sync.Map // map[messageName]extensionsByNumber - -// RegisteredExtensions returns a map of the registered extensions for the -// provided protobuf message, indexed by the extension field number. -// -// Deprecated: Use protoregistry.GlobalTypes.RangeExtensionsByMessage instead. -func RegisteredExtensions(m Message) extensionsByNumber { - // Check whether the cache is stale. If the number of extensions for - // the given message differs, then it means that some extensions were - // recently registered upstream that we do not know about. - s := MessageName(m) - v, _ := extensionCache.Load(s) - xs, _ := v.(extensionsByNumber) - if protoregistry.GlobalTypes.NumExtensionsByMessage(protoreflect.FullName(s)) == len(xs) { - return xs // cache is up-to-date - } - - // Cache is stale, re-compute the extensions map. - xs = make(extensionsByNumber) - protoregistry.GlobalTypes.RangeExtensionsByMessage(protoreflect.FullName(s), func(xt protoreflect.ExtensionType) bool { - if xd, ok := xt.(*ExtensionDesc); ok { - xs[int32(xt.TypeDescriptor().Number())] = xd - } else { - // TODO: This implies that the protoreflect.ExtensionType is a - // custom type not generated by protoc-gen-go. We could try and - // convert the type to an ExtensionDesc. - } - return true - }) - extensionCache.Store(s, xs) - return xs -} diff --git a/vendor/github.com/golang/protobuf/proto/text_decode.go b/vendor/github.com/golang/protobuf/proto/text_decode.go deleted file mode 100644 index 47eb3e4..0000000 --- a/vendor/github.com/golang/protobuf/proto/text_decode.go +++ /dev/null @@ -1,801 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "encoding" - "errors" - "fmt" - "reflect" - "strconv" - "strings" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/prototext" - protoV2 "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -const wrapTextUnmarshalV2 = false - -// ParseError is returned by UnmarshalText. -type ParseError struct { - Message string - - // Deprecated: Do not use. - Line, Offset int -} - -func (e *ParseError) Error() string { - if wrapTextUnmarshalV2 { - return e.Message - } - if e.Line == 1 { - return fmt.Sprintf("line 1.%d: %v", e.Offset, e.Message) - } - return fmt.Sprintf("line %d: %v", e.Line, e.Message) -} - -// UnmarshalText parses a proto text formatted string into m. -func UnmarshalText(s string, m Message) error { - if u, ok := m.(encoding.TextUnmarshaler); ok { - return u.UnmarshalText([]byte(s)) - } - - m.Reset() - mi := MessageV2(m) - - if wrapTextUnmarshalV2 { - err := prototext.UnmarshalOptions{ - AllowPartial: true, - }.Unmarshal([]byte(s), mi) - if err != nil { - return &ParseError{Message: err.Error()} - } - return checkRequiredNotSet(mi) - } else { - if err := newTextParser(s).unmarshalMessage(mi.ProtoReflect(), ""); err != nil { - return err - } - return checkRequiredNotSet(mi) - } -} - -type textParser struct { - s string // remaining input - done bool // whether the parsing is finished (success or error) - backed bool // whether back() was called - offset, line int - cur token -} - -type token struct { - value string - err *ParseError - line int // line number - offset int // byte number from start of input, not start of line - unquoted string // the unquoted version of value, if it was a quoted string -} - -func newTextParser(s string) *textParser { - p := new(textParser) - p.s = s - p.line = 1 - p.cur.line = 1 - return p -} - -func (p *textParser) unmarshalMessage(m protoreflect.Message, terminator string) (err error) { - md := m.Descriptor() - fds := md.Fields() - - // A struct is a sequence of "name: value", terminated by one of - // '>' or '}', or the end of the input. A name may also be - // "[extension]" or "[type/url]". - // - // The whole struct can also be an expanded Any message, like: - // [type/url] < ... struct contents ... > - seen := make(map[protoreflect.FieldNumber]bool) - for { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value == terminator { - break - } - if tok.value == "[" { - if err := p.unmarshalExtensionOrAny(m, seen); err != nil { - return err - } - continue - } - - // This is a normal, non-extension field. - name := protoreflect.Name(tok.value) - fd := fds.ByName(name) - switch { - case fd == nil: - gd := fds.ByName(protoreflect.Name(strings.ToLower(string(name)))) - if gd != nil && gd.Kind() == protoreflect.GroupKind && gd.Message().Name() == name { - fd = gd - } - case fd.Kind() == protoreflect.GroupKind && fd.Message().Name() != name: - fd = nil - case fd.IsWeak() && fd.Message().IsPlaceholder(): - fd = nil - } - if fd == nil { - typeName := string(md.FullName()) - if m, ok := m.Interface().(Message); ok { - t := reflect.TypeOf(m) - if t.Kind() == reflect.Ptr { - typeName = t.Elem().String() - } - } - return p.errorf("unknown field name %q in %v", name, typeName) - } - if od := fd.ContainingOneof(); od != nil && m.WhichOneof(od) != nil { - return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, od.Name()) - } - if fd.Cardinality() != protoreflect.Repeated && seen[fd.Number()] { - return p.errorf("non-repeated field %q was repeated", fd.Name()) - } - seen[fd.Number()] = true - - // Consume any colon. - if err := p.checkForColon(fd); err != nil { - return err - } - - // Parse into the field. - v := m.Get(fd) - if !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) { - v = m.Mutable(fd) - } - if v, err = p.unmarshalValue(v, fd); err != nil { - return err - } - m.Set(fd, v) - - if err := p.consumeOptionalSeparator(); err != nil { - return err - } - } - return nil -} - -func (p *textParser) unmarshalExtensionOrAny(m protoreflect.Message, seen map[protoreflect.FieldNumber]bool) error { - name, err := p.consumeExtensionOrAnyName() - if err != nil { - return err - } - - // If it contains a slash, it's an Any type URL. - if slashIdx := strings.LastIndex(name, "/"); slashIdx >= 0 { - tok := p.next() - if tok.err != nil { - return tok.err - } - // consume an optional colon - if tok.value == ":" { - tok = p.next() - if tok.err != nil { - return tok.err - } - } - - var terminator string - switch tok.value { - case "<": - terminator = ">" - case "{": - terminator = "}" - default: - return p.errorf("expected '{' or '<', found %q", tok.value) - } - - mt, err := protoregistry.GlobalTypes.FindMessageByURL(name) - if err != nil { - return p.errorf("unrecognized message %q in google.protobuf.Any", name[slashIdx+len("/"):]) - } - m2 := mt.New() - if err := p.unmarshalMessage(m2, terminator); err != nil { - return err - } - b, err := protoV2.Marshal(m2.Interface()) - if err != nil { - return p.errorf("failed to marshal message of type %q: %v", name[slashIdx+len("/"):], err) - } - - urlFD := m.Descriptor().Fields().ByName("type_url") - valFD := m.Descriptor().Fields().ByName("value") - if seen[urlFD.Number()] { - return p.errorf("Any message unpacked multiple times, or %q already set", urlFD.Name()) - } - if seen[valFD.Number()] { - return p.errorf("Any message unpacked multiple times, or %q already set", valFD.Name()) - } - m.Set(urlFD, protoreflect.ValueOfString(name)) - m.Set(valFD, protoreflect.ValueOfBytes(b)) - seen[urlFD.Number()] = true - seen[valFD.Number()] = true - return nil - } - - xname := protoreflect.FullName(name) - xt, _ := protoregistry.GlobalTypes.FindExtensionByName(xname) - if xt == nil && isMessageSet(m.Descriptor()) { - xt, _ = protoregistry.GlobalTypes.FindExtensionByName(xname.Append("message_set_extension")) - } - if xt == nil { - return p.errorf("unrecognized extension %q", name) - } - fd := xt.TypeDescriptor() - if fd.ContainingMessage().FullName() != m.Descriptor().FullName() { - return p.errorf("extension field %q does not extend message %q", name, m.Descriptor().FullName()) - } - - if err := p.checkForColon(fd); err != nil { - return err - } - - v := m.Get(fd) - if !m.Has(fd) && (fd.IsList() || fd.IsMap() || fd.Message() != nil) { - v = m.Mutable(fd) - } - v, err = p.unmarshalValue(v, fd) - if err != nil { - return err - } - m.Set(fd, v) - return p.consumeOptionalSeparator() -} - -func (p *textParser) unmarshalValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { - tok := p.next() - if tok.err != nil { - return v, tok.err - } - if tok.value == "" { - return v, p.errorf("unexpected EOF") - } - - switch { - case fd.IsList(): - lv := v.List() - var err error - if tok.value == "[" { - // Repeated field with list notation, like [1,2,3]. - for { - vv := lv.NewElement() - vv, err = p.unmarshalSingularValue(vv, fd) - if err != nil { - return v, err - } - lv.Append(vv) - - tok := p.next() - if tok.err != nil { - return v, tok.err - } - if tok.value == "]" { - break - } - if tok.value != "," { - return v, p.errorf("Expected ']' or ',' found %q", tok.value) - } - } - return v, nil - } - - // One value of the repeated field. - p.back() - vv := lv.NewElement() - vv, err = p.unmarshalSingularValue(vv, fd) - if err != nil { - return v, err - } - lv.Append(vv) - return v, nil - case fd.IsMap(): - // The map entry should be this sequence of tokens: - // < key : KEY value : VALUE > - // However, implementations may omit key or value, and technically - // we should support them in any order. - var terminator string - switch tok.value { - case "<": - terminator = ">" - case "{": - terminator = "}" - default: - return v, p.errorf("expected '{' or '<', found %q", tok.value) - } - - keyFD := fd.MapKey() - valFD := fd.MapValue() - - mv := v.Map() - kv := keyFD.Default() - vv := mv.NewValue() - for { - tok := p.next() - if tok.err != nil { - return v, tok.err - } - if tok.value == terminator { - break - } - var err error - switch tok.value { - case "key": - if err := p.consumeToken(":"); err != nil { - return v, err - } - if kv, err = p.unmarshalSingularValue(kv, keyFD); err != nil { - return v, err - } - if err := p.consumeOptionalSeparator(); err != nil { - return v, err - } - case "value": - if err := p.checkForColon(valFD); err != nil { - return v, err - } - if vv, err = p.unmarshalSingularValue(vv, valFD); err != nil { - return v, err - } - if err := p.consumeOptionalSeparator(); err != nil { - return v, err - } - default: - p.back() - return v, p.errorf(`expected "key", "value", or %q, found %q`, terminator, tok.value) - } - } - mv.Set(kv.MapKey(), vv) - return v, nil - default: - p.back() - return p.unmarshalSingularValue(v, fd) - } -} - -func (p *textParser) unmarshalSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { - tok := p.next() - if tok.err != nil { - return v, tok.err - } - if tok.value == "" { - return v, p.errorf("unexpected EOF") - } - - switch fd.Kind() { - case protoreflect.BoolKind: - switch tok.value { - case "true", "1", "t", "True": - return protoreflect.ValueOfBool(true), nil - case "false", "0", "f", "False": - return protoreflect.ValueOfBool(false), nil - } - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { - return protoreflect.ValueOfInt32(int32(x)), nil - } - - // The C++ parser accepts large positive hex numbers that uses - // two's complement arithmetic to represent negative numbers. - // This feature is here for backwards compatibility with C++. - if strings.HasPrefix(tok.value, "0x") { - if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - return protoreflect.ValueOfInt32(int32(-(int64(^x) + 1))), nil - } - } - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil { - return protoreflect.ValueOfInt64(int64(x)), nil - } - - // The C++ parser accepts large positive hex numbers that uses - // two's complement arithmetic to represent negative numbers. - // This feature is here for backwards compatibility with C++. - if strings.HasPrefix(tok.value, "0x") { - if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil { - return protoreflect.ValueOfInt64(int64(-(int64(^x) + 1))), nil - } - } - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { - return protoreflect.ValueOfUint32(uint32(x)), nil - } - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil { - return protoreflect.ValueOfUint64(uint64(x)), nil - } - case protoreflect.FloatKind: - // Ignore 'f' for compatibility with output generated by C++, - // but don't remove 'f' when the value is "-inf" or "inf". - v := tok.value - if strings.HasSuffix(v, "f") && v != "-inf" && v != "inf" { - v = v[:len(v)-len("f")] - } - if x, err := strconv.ParseFloat(v, 32); err == nil { - return protoreflect.ValueOfFloat32(float32(x)), nil - } - case protoreflect.DoubleKind: - // Ignore 'f' for compatibility with output generated by C++, - // but don't remove 'f' when the value is "-inf" or "inf". - v := tok.value - if strings.HasSuffix(v, "f") && v != "-inf" && v != "inf" { - v = v[:len(v)-len("f")] - } - if x, err := strconv.ParseFloat(v, 64); err == nil { - return protoreflect.ValueOfFloat64(float64(x)), nil - } - case protoreflect.StringKind: - if isQuote(tok.value[0]) { - return protoreflect.ValueOfString(tok.unquoted), nil - } - case protoreflect.BytesKind: - if isQuote(tok.value[0]) { - return protoreflect.ValueOfBytes([]byte(tok.unquoted)), nil - } - case protoreflect.EnumKind: - if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { - return protoreflect.ValueOfEnum(protoreflect.EnumNumber(x)), nil - } - vd := fd.Enum().Values().ByName(protoreflect.Name(tok.value)) - if vd != nil { - return protoreflect.ValueOfEnum(vd.Number()), nil - } - case protoreflect.MessageKind, protoreflect.GroupKind: - var terminator string - switch tok.value { - case "{": - terminator = "}" - case "<": - terminator = ">" - default: - return v, p.errorf("expected '{' or '<', found %q", tok.value) - } - err := p.unmarshalMessage(v.Message(), terminator) - return v, err - default: - panic(fmt.Sprintf("invalid kind %v", fd.Kind())) - } - return v, p.errorf("invalid %v: %v", fd.Kind(), tok.value) -} - -// Consume a ':' from the input stream (if the next token is a colon), -// returning an error if a colon is needed but not present. -func (p *textParser) checkForColon(fd protoreflect.FieldDescriptor) *ParseError { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ":" { - if fd.Message() == nil { - return p.errorf("expected ':', found %q", tok.value) - } - p.back() - } - return nil -} - -// consumeExtensionOrAnyName consumes an extension name or an Any type URL and -// the following ']'. It returns the name or URL consumed. -func (p *textParser) consumeExtensionOrAnyName() (string, error) { - tok := p.next() - if tok.err != nil { - return "", tok.err - } - - // If extension name or type url is quoted, it's a single token. - if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] { - name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0])) - if err != nil { - return "", err - } - return name, p.consumeToken("]") - } - - // Consume everything up to "]" - var parts []string - for tok.value != "]" { - parts = append(parts, tok.value) - tok = p.next() - if tok.err != nil { - return "", p.errorf("unrecognized type_url or extension name: %s", tok.err) - } - if p.done && tok.value != "]" { - return "", p.errorf("unclosed type_url or extension name") - } - } - return strings.Join(parts, ""), nil -} - -// consumeOptionalSeparator consumes an optional semicolon or comma. -// It is used in unmarshalMessage to provide backward compatibility. -func (p *textParser) consumeOptionalSeparator() error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != ";" && tok.value != "," { - p.back() - } - return nil -} - -func (p *textParser) errorf(format string, a ...interface{}) *ParseError { - pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset} - p.cur.err = pe - p.done = true - return pe -} - -func (p *textParser) skipWhitespace() { - i := 0 - for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') { - if p.s[i] == '#' { - // comment; skip to end of line or input - for i < len(p.s) && p.s[i] != '\n' { - i++ - } - if i == len(p.s) { - break - } - } - if p.s[i] == '\n' { - p.line++ - } - i++ - } - p.offset += i - p.s = p.s[i:len(p.s)] - if len(p.s) == 0 { - p.done = true - } -} - -func (p *textParser) advance() { - // Skip whitespace - p.skipWhitespace() - if p.done { - return - } - - // Start of non-whitespace - p.cur.err = nil - p.cur.offset, p.cur.line = p.offset, p.line - p.cur.unquoted = "" - switch p.s[0] { - case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/': - // Single symbol - p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)] - case '"', '\'': - // Quoted string - i := 1 - for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' { - if p.s[i] == '\\' && i+1 < len(p.s) { - // skip escaped char - i++ - } - i++ - } - if i >= len(p.s) || p.s[i] != p.s[0] { - p.errorf("unmatched quote") - return - } - unq, err := unquoteC(p.s[1:i], rune(p.s[0])) - if err != nil { - p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err) - return - } - p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)] - p.cur.unquoted = unq - default: - i := 0 - for i < len(p.s) && isIdentOrNumberChar(p.s[i]) { - i++ - } - if i == 0 { - p.errorf("unexpected byte %#x", p.s[0]) - return - } - p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)] - } - p.offset += len(p.cur.value) -} - -// Back off the parser by one token. Can only be done between calls to next(). -// It makes the next advance() a no-op. -func (p *textParser) back() { p.backed = true } - -// Advances the parser and returns the new current token. -func (p *textParser) next() *token { - if p.backed || p.done { - p.backed = false - return &p.cur - } - p.advance() - if p.done { - p.cur.value = "" - } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) { - // Look for multiple quoted strings separated by whitespace, - // and concatenate them. - cat := p.cur - for { - p.skipWhitespace() - if p.done || !isQuote(p.s[0]) { - break - } - p.advance() - if p.cur.err != nil { - return &p.cur - } - cat.value += " " + p.cur.value - cat.unquoted += p.cur.unquoted - } - p.done = false // parser may have seen EOF, but we want to return cat - p.cur = cat - } - return &p.cur -} - -func (p *textParser) consumeToken(s string) error { - tok := p.next() - if tok.err != nil { - return tok.err - } - if tok.value != s { - p.back() - return p.errorf("expected %q, found %q", s, tok.value) - } - return nil -} - -var errBadUTF8 = errors.New("proto: bad UTF-8") - -func unquoteC(s string, quote rune) (string, error) { - // This is based on C++'s tokenizer.cc. - // Despite its name, this is *not* parsing C syntax. - // For instance, "\0" is an invalid quoted string. - - // Avoid allocation in trivial cases. - simple := true - for _, r := range s { - if r == '\\' || r == quote { - simple = false - break - } - } - if simple { - return s, nil - } - - buf := make([]byte, 0, 3*len(s)/2) - for len(s) > 0 { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", errBadUTF8 - } - s = s[n:] - if r != '\\' { - if r < utf8.RuneSelf { - buf = append(buf, byte(r)) - } else { - buf = append(buf, string(r)...) - } - continue - } - - ch, tail, err := unescape(s) - if err != nil { - return "", err - } - buf = append(buf, ch...) - s = tail - } - return string(buf), nil -} - -func unescape(s string) (ch string, tail string, err error) { - r, n := utf8.DecodeRuneInString(s) - if r == utf8.RuneError && n == 1 { - return "", "", errBadUTF8 - } - s = s[n:] - switch r { - case 'a': - return "\a", s, nil - case 'b': - return "\b", s, nil - case 'f': - return "\f", s, nil - case 'n': - return "\n", s, nil - case 'r': - return "\r", s, nil - case 't': - return "\t", s, nil - case 'v': - return "\v", s, nil - case '?': - return "?", s, nil // trigraph workaround - case '\'', '"', '\\': - return string(r), s, nil - case '0', '1', '2', '3', '4', '5', '6', '7': - if len(s) < 2 { - return "", "", fmt.Errorf(`\%c requires 2 following digits`, r) - } - ss := string(r) + s[:2] - s = s[2:] - i, err := strconv.ParseUint(ss, 8, 8) - if err != nil { - return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss) - } - return string([]byte{byte(i)}), s, nil - case 'x', 'X', 'u', 'U': - var n int - switch r { - case 'x', 'X': - n = 2 - case 'u': - n = 4 - case 'U': - n = 8 - } - if len(s) < n { - return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n) - } - ss := s[:n] - s = s[n:] - i, err := strconv.ParseUint(ss, 16, 64) - if err != nil { - return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss) - } - if r == 'x' || r == 'X' { - return string([]byte{byte(i)}), s, nil - } - if i > utf8.MaxRune { - return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss) - } - return string(rune(i)), s, nil - } - return "", "", fmt.Errorf(`unknown escape \%c`, r) -} - -func isIdentOrNumberChar(c byte) bool { - switch { - case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z': - return true - case '0' <= c && c <= '9': - return true - } - switch c { - case '-', '+', '.', '_': - return true - } - return false -} - -func isWhitespace(c byte) bool { - switch c { - case ' ', '\t', '\n', '\r': - return true - } - return false -} - -func isQuote(c byte) bool { - switch c { - case '"', '\'': - return true - } - return false -} diff --git a/vendor/github.com/golang/protobuf/proto/text_encode.go b/vendor/github.com/golang/protobuf/proto/text_encode.go deleted file mode 100644 index a31134e..0000000 --- a/vendor/github.com/golang/protobuf/proto/text_encode.go +++ /dev/null @@ -1,560 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "bytes" - "encoding" - "fmt" - "io" - "math" - "sort" - "strings" - - "google.golang.org/protobuf/encoding/prototext" - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -const wrapTextMarshalV2 = false - -// TextMarshaler is a configurable text format marshaler. -type TextMarshaler struct { - Compact bool // use compact text format (one line) - ExpandAny bool // expand google.protobuf.Any messages of known types -} - -// Marshal writes the proto text format of m to w. -func (tm *TextMarshaler) Marshal(w io.Writer, m Message) error { - b, err := tm.marshal(m) - if len(b) > 0 { - if _, err := w.Write(b); err != nil { - return err - } - } - return err -} - -// Text returns a proto text formatted string of m. -func (tm *TextMarshaler) Text(m Message) string { - b, _ := tm.marshal(m) - return string(b) -} - -func (tm *TextMarshaler) marshal(m Message) ([]byte, error) { - mr := MessageReflect(m) - if mr == nil || !mr.IsValid() { - return []byte(""), nil - } - - if wrapTextMarshalV2 { - if m, ok := m.(encoding.TextMarshaler); ok { - return m.MarshalText() - } - - opts := prototext.MarshalOptions{ - AllowPartial: true, - EmitUnknown: true, - } - if !tm.Compact { - opts.Indent = " " - } - if !tm.ExpandAny { - opts.Resolver = (*protoregistry.Types)(nil) - } - return opts.Marshal(mr.Interface()) - } else { - w := &textWriter{ - compact: tm.Compact, - expandAny: tm.ExpandAny, - complete: true, - } - - if m, ok := m.(encoding.TextMarshaler); ok { - b, err := m.MarshalText() - if err != nil { - return nil, err - } - w.Write(b) - return w.buf, nil - } - - err := w.writeMessage(mr) - return w.buf, err - } -} - -var ( - defaultTextMarshaler = TextMarshaler{} - compactTextMarshaler = TextMarshaler{Compact: true} -) - -// MarshalText writes the proto text format of m to w. -func MarshalText(w io.Writer, m Message) error { return defaultTextMarshaler.Marshal(w, m) } - -// MarshalTextString returns a proto text formatted string of m. -func MarshalTextString(m Message) string { return defaultTextMarshaler.Text(m) } - -// CompactText writes the compact proto text format of m to w. -func CompactText(w io.Writer, m Message) error { return compactTextMarshaler.Marshal(w, m) } - -// CompactTextString returns a compact proto text formatted string of m. -func CompactTextString(m Message) string { return compactTextMarshaler.Text(m) } - -var ( - newline = []byte("\n") - endBraceNewline = []byte("}\n") - posInf = []byte("inf") - negInf = []byte("-inf") - nan = []byte("nan") -) - -// textWriter is an io.Writer that tracks its indentation level. -type textWriter struct { - compact bool // same as TextMarshaler.Compact - expandAny bool // same as TextMarshaler.ExpandAny - complete bool // whether the current position is a complete line - indent int // indentation level; never negative - buf []byte -} - -func (w *textWriter) Write(p []byte) (n int, _ error) { - newlines := bytes.Count(p, newline) - if newlines == 0 { - if !w.compact && w.complete { - w.writeIndent() - } - w.buf = append(w.buf, p...) - w.complete = false - return len(p), nil - } - - frags := bytes.SplitN(p, newline, newlines+1) - if w.compact { - for i, frag := range frags { - if i > 0 { - w.buf = append(w.buf, ' ') - n++ - } - w.buf = append(w.buf, frag...) - n += len(frag) - } - return n, nil - } - - for i, frag := range frags { - if w.complete { - w.writeIndent() - } - w.buf = append(w.buf, frag...) - n += len(frag) - if i+1 < len(frags) { - w.buf = append(w.buf, '\n') - n++ - } - } - w.complete = len(frags[len(frags)-1]) == 0 - return n, nil -} - -func (w *textWriter) WriteByte(c byte) error { - if w.compact && c == '\n' { - c = ' ' - } - if !w.compact && w.complete { - w.writeIndent() - } - w.buf = append(w.buf, c) - w.complete = c == '\n' - return nil -} - -func (w *textWriter) writeName(fd protoreflect.FieldDescriptor) { - if !w.compact && w.complete { - w.writeIndent() - } - w.complete = false - - if fd.Kind() != protoreflect.GroupKind { - w.buf = append(w.buf, fd.Name()...) - w.WriteByte(':') - } else { - // Use message type name for group field name. - w.buf = append(w.buf, fd.Message().Name()...) - } - - if !w.compact { - w.WriteByte(' ') - } -} - -func requiresQuotes(u string) bool { - // When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted. - for _, ch := range u { - switch { - case ch == '.' || ch == '/' || ch == '_': - continue - case '0' <= ch && ch <= '9': - continue - case 'A' <= ch && ch <= 'Z': - continue - case 'a' <= ch && ch <= 'z': - continue - default: - return true - } - } - return false -} - -// writeProto3Any writes an expanded google.protobuf.Any message. -// -// It returns (false, nil) if sv value can't be unmarshaled (e.g. because -// required messages are not linked in). -// -// It returns (true, error) when sv was written in expanded format or an error -// was encountered. -func (w *textWriter) writeProto3Any(m protoreflect.Message) (bool, error) { - md := m.Descriptor() - fdURL := md.Fields().ByName("type_url") - fdVal := md.Fields().ByName("value") - - url := m.Get(fdURL).String() - mt, err := protoregistry.GlobalTypes.FindMessageByURL(url) - if err != nil { - return false, nil - } - - b := m.Get(fdVal).Bytes() - m2 := mt.New() - if err := proto.Unmarshal(b, m2.Interface()); err != nil { - return false, nil - } - w.Write([]byte("[")) - if requiresQuotes(url) { - w.writeQuotedString(url) - } else { - w.Write([]byte(url)) - } - if w.compact { - w.Write([]byte("]:<")) - } else { - w.Write([]byte("]: <\n")) - w.indent++ - } - if err := w.writeMessage(m2); err != nil { - return true, err - } - if w.compact { - w.Write([]byte("> ")) - } else { - w.indent-- - w.Write([]byte(">\n")) - } - return true, nil -} - -func (w *textWriter) writeMessage(m protoreflect.Message) error { - md := m.Descriptor() - if w.expandAny && md.FullName() == "google.protobuf.Any" { - if canExpand, err := w.writeProto3Any(m); canExpand { - return err - } - } - - fds := md.Fields() - for i := 0; i < fds.Len(); { - fd := fds.Get(i) - if od := fd.ContainingOneof(); od != nil { - fd = m.WhichOneof(od) - i += od.Fields().Len() - } else { - i++ - } - if fd == nil || !m.Has(fd) { - continue - } - - switch { - case fd.IsList(): - lv := m.Get(fd).List() - for j := 0; j < lv.Len(); j++ { - w.writeName(fd) - v := lv.Get(j) - if err := w.writeSingularValue(v, fd); err != nil { - return err - } - w.WriteByte('\n') - } - case fd.IsMap(): - kfd := fd.MapKey() - vfd := fd.MapValue() - mv := m.Get(fd).Map() - - type entry struct{ key, val protoreflect.Value } - var entries []entry - mv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { - entries = append(entries, entry{k.Value(), v}) - return true - }) - sort.Slice(entries, func(i, j int) bool { - switch kfd.Kind() { - case protoreflect.BoolKind: - return !entries[i].key.Bool() && entries[j].key.Bool() - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - return entries[i].key.Int() < entries[j].key.Int() - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - return entries[i].key.Uint() < entries[j].key.Uint() - case protoreflect.StringKind: - return entries[i].key.String() < entries[j].key.String() - default: - panic("invalid kind") - } - }) - for _, entry := range entries { - w.writeName(fd) - w.WriteByte('<') - if !w.compact { - w.WriteByte('\n') - } - w.indent++ - w.writeName(kfd) - if err := w.writeSingularValue(entry.key, kfd); err != nil { - return err - } - w.WriteByte('\n') - w.writeName(vfd) - if err := w.writeSingularValue(entry.val, vfd); err != nil { - return err - } - w.WriteByte('\n') - w.indent-- - w.WriteByte('>') - w.WriteByte('\n') - } - default: - w.writeName(fd) - if err := w.writeSingularValue(m.Get(fd), fd); err != nil { - return err - } - w.WriteByte('\n') - } - } - - if b := m.GetUnknown(); len(b) > 0 { - w.writeUnknownFields(b) - } - return w.writeExtensions(m) -} - -func (w *textWriter) writeSingularValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) error { - switch fd.Kind() { - case protoreflect.FloatKind, protoreflect.DoubleKind: - switch vf := v.Float(); { - case math.IsInf(vf, +1): - w.Write(posInf) - case math.IsInf(vf, -1): - w.Write(negInf) - case math.IsNaN(vf): - w.Write(nan) - default: - fmt.Fprint(w, v.Interface()) - } - case protoreflect.StringKind: - // NOTE: This does not validate UTF-8 for historical reasons. - w.writeQuotedString(string(v.String())) - case protoreflect.BytesKind: - w.writeQuotedString(string(v.Bytes())) - case protoreflect.MessageKind, protoreflect.GroupKind: - var bra, ket byte = '<', '>' - if fd.Kind() == protoreflect.GroupKind { - bra, ket = '{', '}' - } - w.WriteByte(bra) - if !w.compact { - w.WriteByte('\n') - } - w.indent++ - m := v.Message() - if m2, ok := m.Interface().(encoding.TextMarshaler); ok { - b, err := m2.MarshalText() - if err != nil { - return err - } - w.Write(b) - } else { - w.writeMessage(m) - } - w.indent-- - w.WriteByte(ket) - case protoreflect.EnumKind: - if ev := fd.Enum().Values().ByNumber(v.Enum()); ev != nil { - fmt.Fprint(w, ev.Name()) - } else { - fmt.Fprint(w, v.Enum()) - } - default: - fmt.Fprint(w, v.Interface()) - } - return nil -} - -// writeQuotedString writes a quoted string in the protocol buffer text format. -func (w *textWriter) writeQuotedString(s string) { - w.WriteByte('"') - for i := 0; i < len(s); i++ { - switch c := s[i]; c { - case '\n': - w.buf = append(w.buf, `\n`...) - case '\r': - w.buf = append(w.buf, `\r`...) - case '\t': - w.buf = append(w.buf, `\t`...) - case '"': - w.buf = append(w.buf, `\"`...) - case '\\': - w.buf = append(w.buf, `\\`...) - default: - if isPrint := c >= 0x20 && c < 0x7f; isPrint { - w.buf = append(w.buf, c) - } else { - w.buf = append(w.buf, fmt.Sprintf(`\%03o`, c)...) - } - } - } - w.WriteByte('"') -} - -func (w *textWriter) writeUnknownFields(b []byte) { - if !w.compact { - fmt.Fprintf(w, "/* %d unknown bytes */\n", len(b)) - } - - for len(b) > 0 { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return - } - b = b[n:] - - if wtyp == protowire.EndGroupType { - w.indent-- - w.Write(endBraceNewline) - continue - } - fmt.Fprint(w, num) - if wtyp != protowire.StartGroupType { - w.WriteByte(':') - } - if !w.compact || wtyp == protowire.StartGroupType { - w.WriteByte(' ') - } - switch wtyp { - case protowire.VarintType: - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return - } - b = b[n:] - fmt.Fprint(w, v) - case protowire.Fixed32Type: - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return - } - b = b[n:] - fmt.Fprint(w, v) - case protowire.Fixed64Type: - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return - } - b = b[n:] - fmt.Fprint(w, v) - case protowire.BytesType: - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return - } - b = b[n:] - fmt.Fprintf(w, "%q", v) - case protowire.StartGroupType: - w.WriteByte('{') - w.indent++ - default: - fmt.Fprintf(w, "/* unknown wire type %d */", wtyp) - } - w.WriteByte('\n') - } -} - -// writeExtensions writes all the extensions in m. -func (w *textWriter) writeExtensions(m protoreflect.Message) error { - md := m.Descriptor() - if md.ExtensionRanges().Len() == 0 { - return nil - } - - type ext struct { - desc protoreflect.FieldDescriptor - val protoreflect.Value - } - var exts []ext - m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - if fd.IsExtension() { - exts = append(exts, ext{fd, v}) - } - return true - }) - sort.Slice(exts, func(i, j int) bool { - return exts[i].desc.Number() < exts[j].desc.Number() - }) - - for _, ext := range exts { - // For message set, use the name of the message as the extension name. - name := string(ext.desc.FullName()) - if isMessageSet(ext.desc.ContainingMessage()) { - name = strings.TrimSuffix(name, ".message_set_extension") - } - - if !ext.desc.IsList() { - if err := w.writeSingularExtension(name, ext.val, ext.desc); err != nil { - return err - } - } else { - lv := ext.val.List() - for i := 0; i < lv.Len(); i++ { - if err := w.writeSingularExtension(name, lv.Get(i), ext.desc); err != nil { - return err - } - } - } - } - return nil -} - -func (w *textWriter) writeSingularExtension(name string, v protoreflect.Value, fd protoreflect.FieldDescriptor) error { - fmt.Fprintf(w, "[%s]:", name) - if !w.compact { - w.WriteByte(' ') - } - if err := w.writeSingularValue(v, fd); err != nil { - return err - } - w.WriteByte('\n') - return nil -} - -func (w *textWriter) writeIndent() { - if !w.complete { - return - } - for i := 0; i < w.indent*2; i++ { - w.buf = append(w.buf, ' ') - } - w.complete = false -} diff --git a/vendor/github.com/golang/protobuf/proto/wire.go b/vendor/github.com/golang/protobuf/proto/wire.go deleted file mode 100644 index d7c28da..0000000 --- a/vendor/github.com/golang/protobuf/proto/wire.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - protoV2 "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/runtime/protoiface" -) - -// Size returns the size in bytes of the wire-format encoding of m. -func Size(m Message) int { - if m == nil { - return 0 - } - mi := MessageV2(m) - return protoV2.Size(mi) -} - -// Marshal returns the wire-format encoding of m. -func Marshal(m Message) ([]byte, error) { - b, err := marshalAppend(nil, m, false) - if b == nil { - b = zeroBytes - } - return b, err -} - -var zeroBytes = make([]byte, 0, 0) - -func marshalAppend(buf []byte, m Message, deterministic bool) ([]byte, error) { - if m == nil { - return nil, ErrNil - } - mi := MessageV2(m) - nbuf, err := protoV2.MarshalOptions{ - Deterministic: deterministic, - AllowPartial: true, - }.MarshalAppend(buf, mi) - if err != nil { - return buf, err - } - if len(buf) == len(nbuf) { - if !mi.ProtoReflect().IsValid() { - return buf, ErrNil - } - } - return nbuf, checkRequiredNotSet(mi) -} - -// Unmarshal parses a wire-format message in b and places the decoded results in m. -// -// Unmarshal resets m before starting to unmarshal, so any existing data in m is always -// removed. Use UnmarshalMerge to preserve and append to existing data. -func Unmarshal(b []byte, m Message) error { - m.Reset() - return UnmarshalMerge(b, m) -} - -// UnmarshalMerge parses a wire-format message in b and places the decoded results in m. -func UnmarshalMerge(b []byte, m Message) error { - mi := MessageV2(m) - out, err := protoV2.UnmarshalOptions{ - AllowPartial: true, - Merge: true, - }.UnmarshalState(protoiface.UnmarshalInput{ - Buf: b, - Message: mi.ProtoReflect(), - }) - if err != nil { - return err - } - if out.Flags&protoiface.UnmarshalInitialized > 0 { - return nil - } - return checkRequiredNotSet(mi) -} diff --git a/vendor/github.com/golang/protobuf/proto/wrappers.go b/vendor/github.com/golang/protobuf/proto/wrappers.go deleted file mode 100644 index 398e348..0000000 --- a/vendor/github.com/golang/protobuf/proto/wrappers.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -// Bool stores v in a new bool value and returns a pointer to it. -func Bool(v bool) *bool { return &v } - -// Int stores v in a new int32 value and returns a pointer to it. -// -// Deprecated: Use Int32 instead. -func Int(v int) *int32 { return Int32(int32(v)) } - -// Int32 stores v in a new int32 value and returns a pointer to it. -func Int32(v int32) *int32 { return &v } - -// Int64 stores v in a new int64 value and returns a pointer to it. -func Int64(v int64) *int64 { return &v } - -// Uint32 stores v in a new uint32 value and returns a pointer to it. -func Uint32(v uint32) *uint32 { return &v } - -// Uint64 stores v in a new uint64 value and returns a pointer to it. -func Uint64(v uint64) *uint64 { return &v } - -// Float32 stores v in a new float32 value and returns a pointer to it. -func Float32(v float32) *float32 { return &v } - -// Float64 stores v in a new float64 value and returns a pointer to it. -func Float64(v float64) *float64 { return &v } - -// String stores v in a new string value and returns a pointer to it. -func String(v string) *string { return &v } diff --git a/vendor/github.com/jaytaylor/html2text/.gitignore b/vendor/github.com/jaytaylor/html2text/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/jaytaylor/html2text/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/jaytaylor/html2text/.travis.yml b/vendor/github.com/jaytaylor/html2text/.travis.yml deleted file mode 100644 index 2e8ae28..0000000 --- a/vendor/github.com/jaytaylor/html2text/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go -go: - # n.b. For golang release history, see https://golang.org/doc/devel/release.html - - tip - - "1.13.8" - - "1.12.17" - - "1.11.13" - - "1.10.8" - - "1.9.7" -notifications: - email: - on_success: change - on_failure: always diff --git a/vendor/github.com/jaytaylor/html2text/LICENSE b/vendor/github.com/jaytaylor/html2text/LICENSE deleted file mode 100644 index 24dc4ab..0000000 --- a/vendor/github.com/jaytaylor/html2text/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Jay Taylor - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/jaytaylor/html2text/README.md b/vendor/github.com/jaytaylor/html2text/README.md deleted file mode 100644 index 675e281..0000000 --- a/vendor/github.com/jaytaylor/html2text/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# html2text - -[![Documentation](https://godoc.org/github.com/jaytaylor/html2text?status.svg)](https://godoc.org/github.com/jaytaylor/html2text) -[![Build Status](https://travis-ci.org/jaytaylor/html2text.svg?branch=master)](https://travis-ci.org/jaytaylor/html2text) -[![Report Card](https://goreportcard.com/badge/github.com/jaytaylor/html2text)](https://goreportcard.com/report/github.com/jaytaylor/html2text) - -### Converts HTML into text of the markdown-flavored variety - -## Introduction - -Ensure your emails are readable by all! - -Turns HTML into raw text, useful for sending fancy HTML emails with an equivalently nicely formatted TXT document as a fallback (e.g. for people who don't allow HTML emails or have other display issues). - -html2text is a simple golang package for rendering HTML into plaintext. - -There are still lots of improvements to be had, but FWIW this has worked fine for my [basic] HTML-2-text needs. - -It requires go 1.x or newer ;) - -## Download the package - -```bash -go get jaytaylor.com/html2text -``` - -## Example usage - -### Library - -```go -package main - -import ( - "fmt" - - "jaytaylor.com/html2text" -) - -func main() { - inputHTML := ` - - - My Mega Service - - - - - - - -

    Welcome to your new account on my service!

    - -

    - Here is some more information: - -

    -

    - - - - - - - - - - - - -
    Header 1Header 2
    Footer 1Footer 2
    Row 1 Col 1Row 1 Col 2
    Row 2 Col 1Row 2 Col 2
    - -` - - text, err := html2text.FromString(inputHTML, html2text.Options{PrettyTables: true}) - if err != nil { - panic(err) - } - fmt.Println(text) -} -``` - -Output: -``` -Mega Service ( http://jaytaylor.com/ ) - -****************************************** -Welcome to your new account on my service! -****************************************** - -Here is some more information: - -* Link 1: Example.com ( https://example.com ) -* Link 2: Example2.com ( https://example2.com ) -* Something else - -+-------------+-------------+ -| HEADER 1 | HEADER 2 | -+-------------+-------------+ -| Row 1 Col 1 | Row 1 Col 2 | -| Row 2 Col 1 | Row 2 Col 2 | -+-------------+-------------+ -| FOOTER 1 | FOOTER 2 | -+-------------+-------------+ -``` - -### Command line - -``` -echo '
    hi
    ' | html2text -``` - -## Unit-tests - -Running the unit-tests is straightforward and standard: - -```bash -go test -``` - -# License - -Permissive MIT license. - -## Contact - -You are more than welcome to open issues and send pull requests if you find a bug or want a new feature. - -If you appreciate this library please feel free to drop me a line and tell me! It's always nice to hear from people who have benefitted from my work. - -Email: jay at (my github username).com - -Twitter: [@jtaylor](https://twitter.com/jtaylor) - -# Alternatives - -https://github.com/k3a/html2text - Lightweight diff --git a/vendor/github.com/jaytaylor/html2text/html2text.go b/vendor/github.com/jaytaylor/html2text/html2text.go deleted file mode 100644 index 8fe9000..0000000 --- a/vendor/github.com/jaytaylor/html2text/html2text.go +++ /dev/null @@ -1,548 +0,0 @@ -package html2text - -import ( - "bytes" - "io" - "regexp" - "strings" - "unicode" - - "github.com/olekukonko/tablewriter" - "github.com/ssor/bom" - "golang.org/x/net/html" - "golang.org/x/net/html/atom" -) - -// Options provide toggles and overrides to control specific rendering behaviors. -type Options struct { - PrettyTables bool // Turns on pretty ASCII rendering for table elements. - PrettyTablesOptions *PrettyTablesOptions // Configures pretty ASCII rendering for table elements. - OmitLinks bool // Turns on omitting links - TextOnly bool // Returns only plain text -} - -// PrettyTablesOptions overrides tablewriter behaviors -type PrettyTablesOptions struct { - AutoFormatHeader bool - AutoWrapText bool - ReflowDuringAutoWrap bool - ColWidth int - ColumnSeparator string - RowSeparator string - CenterSeparator string - HeaderAlignment int - FooterAlignment int - Alignment int - ColumnAlignment []int - NewLine string - HeaderLine bool - RowLine bool - AutoMergeCells bool - Borders tablewriter.Border -} - -// NewPrettyTablesOptions creates PrettyTablesOptions with default settings -func NewPrettyTablesOptions() *PrettyTablesOptions { - return &PrettyTablesOptions{ - AutoFormatHeader: true, - AutoWrapText: true, - ReflowDuringAutoWrap: true, - ColWidth: tablewriter.MAX_ROW_WIDTH, - ColumnSeparator: tablewriter.COLUMN, - RowSeparator: tablewriter.ROW, - CenterSeparator: tablewriter.CENTER, - HeaderAlignment: tablewriter.ALIGN_DEFAULT, - FooterAlignment: tablewriter.ALIGN_DEFAULT, - Alignment: tablewriter.ALIGN_DEFAULT, - ColumnAlignment: []int{}, - NewLine: tablewriter.NEWLINE, - HeaderLine: true, - RowLine: false, - AutoMergeCells: false, - Borders: tablewriter.Border{Left: true, Right: true, Bottom: true, Top: true}, - } -} - -// FromHTMLNode renders text output from a pre-parsed HTML document. -func FromHTMLNode(doc *html.Node, o ...Options) (string, error) { - var options Options - if len(o) > 0 { - options = o[0] - } - - ctx := textifyTraverseContext{ - buf: bytes.Buffer{}, - options: options, - } - if err := ctx.traverse(doc); err != nil { - return "", err - } - - text := strings.TrimSpace(newlineRe.ReplaceAllString( - strings.Replace(ctx.buf.String(), "\n ", "\n", -1), "\n\n"), - ) - return text, nil -} - -// FromReader renders text output after parsing HTML for the specified -// io.Reader. -func FromReader(reader io.Reader, options ...Options) (string, error) { - newReader, err := bom.NewReaderWithoutBom(reader) - if err != nil { - return "", err - } - doc, err := html.Parse(newReader) - if err != nil { - return "", err - } - return FromHTMLNode(doc, options...) -} - -// FromString parses HTML from the input string, then renders the text form. -func FromString(input string, options ...Options) (string, error) { - bs := bom.CleanBom([]byte(input)) - text, err := FromReader(bytes.NewReader(bs), options...) - if err != nil { - return "", err - } - return text, nil -} - -var ( - spacingRe = regexp.MustCompile(`[ \r\n\t]+`) - newlineRe = regexp.MustCompile(`\n\n+`) -) - -// traverseTableCtx holds text-related context. -type textifyTraverseContext struct { - buf bytes.Buffer - - prefix string - tableCtx tableTraverseContext - options Options - endsWithSpace bool - justClosedDiv bool - blockquoteLevel int - lineLength int - isPre bool -} - -// tableTraverseContext holds table ASCII-form related context. -type tableTraverseContext struct { - header []string - body [][]string - footer []string - tmpRow int - isInFooter bool -} - -func (tableCtx *tableTraverseContext) init() { - tableCtx.body = [][]string{} - tableCtx.header = []string{} - tableCtx.footer = []string{} - tableCtx.isInFooter = false - tableCtx.tmpRow = 0 -} - -func (ctx *textifyTraverseContext) handleElement(node *html.Node) error { - ctx.justClosedDiv = false - - switch node.DataAtom { - case atom.Br: - return ctx.emit("\n") - - case atom.H1, atom.H2, atom.H3: - subCtx := textifyTraverseContext{} - if err := subCtx.traverseChildren(node); err != nil { - return err - } - - str := subCtx.buf.String() - if ctx.options.TextOnly { - return ctx.emit(str + ".\n\n") - } - dividerLen := 0 - for _, line := range strings.Split(str, "\n") { - if lineLen := len([]rune(line)); lineLen-1 > dividerLen { - dividerLen = lineLen - 1 - } - } - var divider string - if node.DataAtom == atom.H1 { - divider = strings.Repeat("*", dividerLen) - } else { - divider = strings.Repeat("-", dividerLen) - } - - if node.DataAtom == atom.H3 { - return ctx.emit("\n\n" + str + "\n" + divider + "\n\n") - } - return ctx.emit("\n\n" + divider + "\n" + str + "\n" + divider + "\n\n") - - case atom.Blockquote: - ctx.blockquoteLevel++ - if !ctx.options.TextOnly { - ctx.prefix = strings.Repeat(">", ctx.blockquoteLevel) + " " - } - if err := ctx.emit("\n"); err != nil { - return err - } - if ctx.blockquoteLevel == 1 { - if err := ctx.emit("\n"); err != nil { - return err - } - } - if err := ctx.traverseChildren(node); err != nil { - return err - } - ctx.blockquoteLevel-- - if !ctx.options.TextOnly { - ctx.prefix = strings.Repeat(">", ctx.blockquoteLevel) - } - if ctx.blockquoteLevel > 0 { - ctx.prefix += " " - } - return ctx.emit("\n\n") - - case atom.Div: - if ctx.lineLength > 0 { - if err := ctx.emit("\n"); err != nil { - return err - } - } - if err := ctx.traverseChildren(node); err != nil { - return err - } - var err error - if !ctx.justClosedDiv { - err = ctx.emit("\n") - } - ctx.justClosedDiv = true - return err - - case atom.Li: - if !ctx.options.TextOnly { - if err := ctx.emit("* "); err != nil { - return err - } - } - - if err := ctx.traverseChildren(node); err != nil { - return err - } - - return ctx.emit("\n") - - case atom.B, atom.Strong: - subCtx := textifyTraverseContext{} - subCtx.endsWithSpace = true - if err := subCtx.traverseChildren(node); err != nil { - return err - } - str := subCtx.buf.String() - if ctx.options.TextOnly { - return ctx.emit(str + ".") - } - return ctx.emit("*" + str + "*") - - case atom.A: - linkText := "" - // For simple link element content with single text node only, peek at the link text. - if node.FirstChild != nil && node.FirstChild.NextSibling == nil && node.FirstChild.Type == html.TextNode { - linkText = node.FirstChild.Data - } - - // If image is the only child, take its alt text as the link text. - if img := node.FirstChild; img != nil && node.LastChild == img && img.DataAtom == atom.Img { - if altText := getAttrVal(img, "alt"); altText != "" { - if err := ctx.emit(altText); err != nil { - return err - } - } - } else if err := ctx.traverseChildren(node); err != nil { - return err - } - - hrefLink := "" - if attrVal := getAttrVal(node, "href"); attrVal != "" { - attrVal = ctx.normalizeHrefLink(attrVal) - // Don't print link href if it matches link element content or if the link is empty. - if (attrVal != "" && linkText != attrVal) && !ctx.options.OmitLinks && !ctx.options.TextOnly { - hrefLink = "( " + attrVal + " )" - } - } - - return ctx.emit(hrefLink) - - case atom.P, atom.Ul: - return ctx.paragraphHandler(node) - - case atom.Table, atom.Tfoot, atom.Th, atom.Tr, atom.Td: - if ctx.options.PrettyTables { - return ctx.handleTableElement(node) - } else if node.DataAtom == atom.Table { - return ctx.paragraphHandler(node) - } - return ctx.traverseChildren(node) - - case atom.Pre: - ctx.isPre = true - err := ctx.traverseChildren(node) - ctx.isPre = false - return err - - case atom.Style, atom.Script, atom.Head: - // Ignore the subtree. - return nil - - default: - return ctx.traverseChildren(node) - } -} - -// paragraphHandler renders node children surrounded by double newlines. -func (ctx *textifyTraverseContext) paragraphHandler(node *html.Node) error { - if err := ctx.emit("\n\n"); err != nil { - return err - } - if err := ctx.traverseChildren(node); err != nil { - return err - } - return ctx.emit("\n\n") -} - -// handleTableElement is only to be invoked when options.PrettyTables is active. -func (ctx *textifyTraverseContext) handleTableElement(node *html.Node) error { - if !ctx.options.PrettyTables { - panic("handleTableElement invoked when PrettyTables not active") - } - - switch node.DataAtom { - case atom.Table: - if err := ctx.emit("\n\n"); err != nil { - return err - } - - // Re-intialize all table context. - ctx.tableCtx.init() - - // Browse children, enriching context with table data. - if err := ctx.traverseChildren(node); err != nil { - return err - } - - buf := &bytes.Buffer{} - table := tablewriter.NewWriter(buf) - if ctx.options.PrettyTablesOptions != nil { - options := ctx.options.PrettyTablesOptions - table.SetAutoFormatHeaders(options.AutoFormatHeader) - table.SetAutoWrapText(options.AutoWrapText) - table.SetReflowDuringAutoWrap(options.ReflowDuringAutoWrap) - table.SetColWidth(options.ColWidth) - table.SetColumnSeparator(options.ColumnSeparator) - table.SetRowSeparator(options.RowSeparator) - table.SetCenterSeparator(options.CenterSeparator) - table.SetHeaderAlignment(options.HeaderAlignment) - table.SetFooterAlignment(options.FooterAlignment) - table.SetAlignment(options.Alignment) - table.SetColumnAlignment(options.ColumnAlignment) - table.SetNewLine(options.NewLine) - table.SetHeaderLine(options.HeaderLine) - table.SetRowLine(options.RowLine) - table.SetAutoMergeCells(options.AutoMergeCells) - table.SetBorders(options.Borders) - } - table.SetHeader(ctx.tableCtx.header) - table.SetFooter(ctx.tableCtx.footer) - table.AppendBulk(ctx.tableCtx.body) - - // Render the table using ASCII. - table.Render() - if err := ctx.emit(buf.String()); err != nil { - return err - } - - return ctx.emit("\n\n") - - case atom.Tfoot: - ctx.tableCtx.isInFooter = true - if err := ctx.traverseChildren(node); err != nil { - return err - } - ctx.tableCtx.isInFooter = false - - case atom.Tr: - ctx.tableCtx.body = append(ctx.tableCtx.body, []string{}) - if err := ctx.traverseChildren(node); err != nil { - return err - } - ctx.tableCtx.tmpRow++ - - case atom.Th: - res, err := ctx.renderEachChild(node) - if err != nil { - return err - } - - ctx.tableCtx.header = append(ctx.tableCtx.header, res) - - case atom.Td: - res, err := ctx.renderEachChild(node) - if err != nil { - return err - } - - if ctx.tableCtx.isInFooter { - ctx.tableCtx.footer = append(ctx.tableCtx.footer, res) - } else { - ctx.tableCtx.body[ctx.tableCtx.tmpRow] = append(ctx.tableCtx.body[ctx.tableCtx.tmpRow], res) - } - - } - return nil -} - -func (ctx *textifyTraverseContext) traverse(node *html.Node) error { - switch node.Type { - default: - return ctx.traverseChildren(node) - - case html.TextNode: - var data string - if ctx.isPre { - data = node.Data - } else { - data = strings.TrimSpace(spacingRe.ReplaceAllString(node.Data, " ")) - } - return ctx.emit(data) - - case html.ElementNode: - return ctx.handleElement(node) - } -} - -func (ctx *textifyTraverseContext) traverseChildren(node *html.Node) error { - for c := node.FirstChild; c != nil; c = c.NextSibling { - if err := ctx.traverse(c); err != nil { - return err - } - } - - return nil -} - -func (ctx *textifyTraverseContext) emit(data string) error { - if data == "" { - return nil - } - var ( - lines = ctx.breakLongLines(data) - err error - ) - for _, line := range lines { - runes := []rune(line) - startsWithSpace := unicode.IsSpace(runes[0]) - if !startsWithSpace && !ctx.endsWithSpace && !strings.HasPrefix(data, ".") { - if err = ctx.buf.WriteByte(' '); err != nil { - return err - } - ctx.lineLength++ - } - ctx.endsWithSpace = unicode.IsSpace(runes[len(runes)-1]) - for _, c := range line { - if _, err = ctx.buf.WriteString(string(c)); err != nil { - return err - } - ctx.lineLength++ - if c == '\n' { - ctx.lineLength = 0 - if ctx.prefix != "" { - if _, err = ctx.buf.WriteString(ctx.prefix); err != nil { - return err - } - } - } - } - } - return nil -} - -const maxLineLen = 74 - -func (ctx *textifyTraverseContext) breakLongLines(data string) []string { - // Only break lines when in blockquotes. - if ctx.blockquoteLevel == 0 { - return []string{data} - } - var ( - ret = []string{} - runes = []rune(data) - l = len(runes) - existing = ctx.lineLength - ) - if existing >= maxLineLen { - ret = append(ret, "\n") - existing = 0 - } - for l+existing > maxLineLen { - i := maxLineLen - existing - for i >= 0 && !unicode.IsSpace(runes[i]) { - i-- - } - if i == -1 { - // No spaces, so go the other way. - i = maxLineLen - existing - for i < l && !unicode.IsSpace(runes[i]) { - i++ - } - } - ret = append(ret, string(runes[:i])+"\n") - for i < l && unicode.IsSpace(runes[i]) { - i++ - } - runes = runes[i:] - l = len(runes) - existing = 0 - } - if len(runes) > 0 { - ret = append(ret, string(runes)) - } - return ret -} - -func (ctx *textifyTraverseContext) normalizeHrefLink(link string) string { - link = strings.TrimSpace(link) - link = strings.TrimPrefix(link, "mailto:") - return link -} - -// renderEachChild visits each direct child of a node and collects the sequence of -// textuual representaitons separated by a single newline. -func (ctx *textifyTraverseContext) renderEachChild(node *html.Node) (string, error) { - buf := &bytes.Buffer{} - for c := node.FirstChild; c != nil; c = c.NextSibling { - s, err := FromHTMLNode(c, ctx.options) - if err != nil { - return "", err - } - if _, err = buf.WriteString(s); err != nil { - return "", err - } - if c.NextSibling != nil { - if err = buf.WriteByte('\n'); err != nil { - return "", err - } - } - } - return buf.String(), nil -} - -func getAttrVal(node *html.Node, attrName string) string { - for _, attr := range node.Attr { - if attr.Key == attrName { - return attr.Val - } - } - - return "" -} diff --git a/vendor/github.com/levigross/exp-html/README b/vendor/github.com/levigross/exp-html/README deleted file mode 100644 index 0333a1b..0000000 --- a/vendor/github.com/levigross/exp-html/README +++ /dev/null @@ -1 +0,0 @@ -Copied from weekly.2012-03-27 diff --git a/vendor/github.com/levigross/exp-html/const.go b/vendor/github.com/levigross/exp-html/const.go deleted file mode 100644 index d7cc8bb..0000000 --- a/vendor/github.com/levigross/exp-html/const.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -// Section 12.2.3.2 of the HTML5 specification says "The following elements -// have varying levels of special parsing rules". -// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#the-stack-of-open-elements -var isSpecialElementMap = map[string]bool{ - "address": true, - "applet": true, - "area": true, - "article": true, - "aside": true, - "base": true, - "basefont": true, - "bgsound": true, - "blockquote": true, - "body": true, - "br": true, - "button": true, - "caption": true, - "center": true, - "col": true, - "colgroup": true, - "command": true, - "dd": true, - "details": true, - "dir": true, - "div": true, - "dl": true, - "dt": true, - "embed": true, - "fieldset": true, - "figcaption": true, - "figure": true, - "footer": true, - "form": true, - "frame": true, - "frameset": true, - "h1": true, - "h2": true, - "h3": true, - "h4": true, - "h5": true, - "h6": true, - "head": true, - "header": true, - "hgroup": true, - "hr": true, - "html": true, - "iframe": true, - "img": true, - "input": true, - "isindex": true, - "li": true, - "link": true, - "listing": true, - "marquee": true, - "menu": true, - "meta": true, - "nav": true, - "noembed": true, - "noframes": true, - "noscript": true, - "object": true, - "ol": true, - "p": true, - "param": true, - "plaintext": true, - "pre": true, - "script": true, - "section": true, - "select": true, - "style": true, - "summary": true, - "table": true, - "tbody": true, - "td": true, - "textarea": true, - "tfoot": true, - "th": true, - "thead": true, - "title": true, - "tr": true, - "ul": true, - "wbr": true, - "xmp": true, -} - -func isSpecialElement(element *Node) bool { - switch element.Namespace { - case "", "html": - return isSpecialElementMap[element.Data] - case "svg": - return element.Data == "foreignObject" - } - return false -} diff --git a/vendor/github.com/levigross/exp-html/doc.go b/vendor/github.com/levigross/exp-html/doc.go deleted file mode 100644 index 56b194f..0000000 --- a/vendor/github.com/levigross/exp-html/doc.go +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package html implements an HTML5-compliant tokenizer and parser. -INCOMPLETE. - -Tokenization is done by creating a Tokenizer for an io.Reader r. It is the -caller's responsibility to ensure that r provides UTF-8 encoded HTML. - - z := html.NewTokenizer(r) - -Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(), -which parses the next token and returns its type, or an error: - - for { - tt := z.Next() - if tt == html.ErrorToken { - // ... - return ... - } - // Process the current token. - } - -There are two APIs for retrieving the current token. The high-level API is to -call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs -allow optionally calling Raw after Next but before Token, Text, TagName, or -TagAttr. In EBNF notation, the valid call sequence per token is: - - Next {Raw} [ Token | Text | TagName {TagAttr} ] - -Token returns an independent data structure that completely describes a token. -Entities (such as "<") are unescaped, tag names and attribute keys are -lower-cased, and attributes are collected into a []Attribute. For example: - - for { - if z.Next() == html.ErrorToken { - // Returning io.EOF indicates success. - return z.Err() - } - emitToken(z.Token()) - } - -The low-level API performs fewer allocations and copies, but the contents of -the []byte values returned by Text, TagName and TagAttr may change on the next -call to Next. For example, to extract an HTML page's anchor text: - - depth := 0 - for { - tt := z.Next() - switch tt { - case ErrorToken: - return z.Err() - case TextToken: - if depth > 0 { - // emitBytes should copy the []byte it receives, - // if it doesn't process it immediately. - emitBytes(z.Text()) - } - case StartTagToken, EndTagToken: - tn, _ := z.TagName() - if len(tn) == 1 && tn[0] == 'a' { - if tt == StartTagToken { - depth++ - } else { - depth-- - } - } - } - } - -Parsing is done by calling Parse with an io.Reader, which returns the root of -the parse tree (the document element) as a *Node. It is the caller's -responsibility to ensure that the Reader provides UTF-8 encoded HTML. For -example, to process each anchor node in depth-first order: - - doc, err := html.Parse(r) - if err != nil { - // ... - } - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.ElementNode && n.Data == "a" { - // Do something with n... - } - for _, c := range n.Child { - f(c) - } - } - f(doc) - -The relevant specifications include: -http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html and -http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html -*/ -package html - -// The tokenization algorithm implemented by this package is not a line-by-line -// transliteration of the relatively verbose state-machine in the WHATWG -// specification. A more direct approach is used instead, where the program -// counter implies the state, such as whether it is tokenizing a tag or a text -// node. Specification compliance is verified by checking expected and actual -// outputs over a test suite rather than aiming for algorithmic fidelity. - -// TODO(nigeltao): Does a DOM API belong in this package or a separate one? -// TODO(nigeltao): How does parsing interact with a JavaScript engine? diff --git a/vendor/github.com/levigross/exp-html/doctype.go b/vendor/github.com/levigross/exp-html/doctype.go deleted file mode 100644 index f692061..0000000 --- a/vendor/github.com/levigross/exp-html/doctype.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "strings" -) - -// parseDoctype parses the data from a DoctypeToken into a name, -// public identifier, and system identifier. It returns a Node whose Type -// is DoctypeNode, whose Data is the name, and which has attributes -// named "system" and "public" for the two identifiers if they were present. -// quirks is whether the document should be parsed in "quirks mode". -func parseDoctype(s string) (n *Node, quirks bool) { - n = &Node{Type: DoctypeNode} - - // Find the name. - space := strings.IndexAny(s, whitespace) - if space == -1 { - space = len(s) - } - n.Data = s[:space] - // The comparison to "html" is case-sensitive. - if n.Data != "html" { - quirks = true - } - n.Data = strings.ToLower(n.Data) - s = strings.TrimLeft(s[space:], whitespace) - - if len(s) < 6 { - // It can't start with "PUBLIC" or "SYSTEM". - // Ignore the rest of the string. - return n, quirks || s != "" - } - - key := strings.ToLower(s[:6]) - s = s[6:] - for key == "public" || key == "system" { - s = strings.TrimLeft(s, whitespace) - if s == "" { - break - } - quote := s[0] - if quote != '"' && quote != '\'' { - break - } - s = s[1:] - q := strings.IndexRune(s, rune(quote)) - var id string - if q == -1 { - id = s - s = "" - } else { - id = s[:q] - s = s[q+1:] - } - n.Attr = append(n.Attr, Attribute{Key: key, Val: id}) - if key == "public" { - key = "system" - } else { - key = "" - } - } - - if key != "" || s != "" { - quirks = true - } else if len(n.Attr) > 0 { - if n.Attr[0].Key == "public" { - public := strings.ToLower(n.Attr[0].Val) - switch public { - case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html": - quirks = true - default: - for _, q := range quirkyIDs { - if strings.HasPrefix(public, q) { - quirks = true - break - } - } - } - // The following two public IDs only cause quirks mode if there is no system ID. - if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") || - strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) { - quirks = true - } - } - if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" && - strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" { - quirks = true - } - } - - return n, quirks -} - -// quirkyIDs is a list of public doctype identifiers that cause a document -// to be interpreted in quirks mode. The identifiers should be in lower case. -var quirkyIDs = []string{ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//", -} diff --git a/vendor/github.com/levigross/exp-html/entity.go b/vendor/github.com/levigross/exp-html/entity.go deleted file mode 100644 index bd83075..0000000 --- a/vendor/github.com/levigross/exp-html/entity.go +++ /dev/null @@ -1,2253 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -// All entities that do not end with ';' are 6 or fewer bytes long. -const longestEntityWithoutSemicolon = 6 - -// entity is a map from HTML entity names to their values. The semicolon matters: -// http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html -// lists both "amp" and "amp;" as two separate entries. -// -// Note that the HTML5 list is larger than the HTML4 list at -// http://www.w3.org/TR/html4/sgml/entities.html -var entity = map[string]rune{ - "AElig;": '\U000000C6', - "AMP;": '\U00000026', - "Aacute;": '\U000000C1', - "Abreve;": '\U00000102', - "Acirc;": '\U000000C2', - "Acy;": '\U00000410', - "Afr;": '\U0001D504', - "Agrave;": '\U000000C0', - "Alpha;": '\U00000391', - "Amacr;": '\U00000100', - "And;": '\U00002A53', - "Aogon;": '\U00000104', - "Aopf;": '\U0001D538', - "ApplyFunction;": '\U00002061', - "Aring;": '\U000000C5', - "Ascr;": '\U0001D49C', - "Assign;": '\U00002254', - "Atilde;": '\U000000C3', - "Auml;": '\U000000C4', - "Backslash;": '\U00002216', - "Barv;": '\U00002AE7', - "Barwed;": '\U00002306', - "Bcy;": '\U00000411', - "Because;": '\U00002235', - "Bernoullis;": '\U0000212C', - "Beta;": '\U00000392', - "Bfr;": '\U0001D505', - "Bopf;": '\U0001D539', - "Breve;": '\U000002D8', - "Bscr;": '\U0000212C', - "Bumpeq;": '\U0000224E', - "CHcy;": '\U00000427', - "COPY;": '\U000000A9', - "Cacute;": '\U00000106', - "Cap;": '\U000022D2', - "CapitalDifferentialD;": '\U00002145', - "Cayleys;": '\U0000212D', - "Ccaron;": '\U0000010C', - "Ccedil;": '\U000000C7', - "Ccirc;": '\U00000108', - "Cconint;": '\U00002230', - "Cdot;": '\U0000010A', - "Cedilla;": '\U000000B8', - "CenterDot;": '\U000000B7', - "Cfr;": '\U0000212D', - "Chi;": '\U000003A7', - "CircleDot;": '\U00002299', - "CircleMinus;": '\U00002296', - "CirclePlus;": '\U00002295', - "CircleTimes;": '\U00002297', - "ClockwiseContourIntegral;": '\U00002232', - "CloseCurlyDoubleQuote;": '\U0000201D', - "CloseCurlyQuote;": '\U00002019', - "Colon;": '\U00002237', - "Colone;": '\U00002A74', - "Congruent;": '\U00002261', - "Conint;": '\U0000222F', - "ContourIntegral;": '\U0000222E', - "Copf;": '\U00002102', - "Coproduct;": '\U00002210', - "CounterClockwiseContourIntegral;": '\U00002233', - "Cross;": '\U00002A2F', - "Cscr;": '\U0001D49E', - "Cup;": '\U000022D3', - "CupCap;": '\U0000224D', - "DD;": '\U00002145', - "DDotrahd;": '\U00002911', - "DJcy;": '\U00000402', - "DScy;": '\U00000405', - "DZcy;": '\U0000040F', - "Dagger;": '\U00002021', - "Darr;": '\U000021A1', - "Dashv;": '\U00002AE4', - "Dcaron;": '\U0000010E', - "Dcy;": '\U00000414', - "Del;": '\U00002207', - "Delta;": '\U00000394', - "Dfr;": '\U0001D507', - "DiacriticalAcute;": '\U000000B4', - "DiacriticalDot;": '\U000002D9', - "DiacriticalDoubleAcute;": '\U000002DD', - "DiacriticalGrave;": '\U00000060', - "DiacriticalTilde;": '\U000002DC', - "Diamond;": '\U000022C4', - "DifferentialD;": '\U00002146', - "Dopf;": '\U0001D53B', - "Dot;": '\U000000A8', - "DotDot;": '\U000020DC', - "DotEqual;": '\U00002250', - "DoubleContourIntegral;": '\U0000222F', - "DoubleDot;": '\U000000A8', - "DoubleDownArrow;": '\U000021D3', - "DoubleLeftArrow;": '\U000021D0', - "DoubleLeftRightArrow;": '\U000021D4', - "DoubleLeftTee;": '\U00002AE4', - "DoubleLongLeftArrow;": '\U000027F8', - "DoubleLongLeftRightArrow;": '\U000027FA', - "DoubleLongRightArrow;": '\U000027F9', - "DoubleRightArrow;": '\U000021D2', - "DoubleRightTee;": '\U000022A8', - "DoubleUpArrow;": '\U000021D1', - "DoubleUpDownArrow;": '\U000021D5', - "DoubleVerticalBar;": '\U00002225', - "DownArrow;": '\U00002193', - "DownArrowBar;": '\U00002913', - "DownArrowUpArrow;": '\U000021F5', - "DownBreve;": '\U00000311', - "DownLeftRightVector;": '\U00002950', - "DownLeftTeeVector;": '\U0000295E', - "DownLeftVector;": '\U000021BD', - "DownLeftVectorBar;": '\U00002956', - "DownRightTeeVector;": '\U0000295F', - "DownRightVector;": '\U000021C1', - "DownRightVectorBar;": '\U00002957', - "DownTee;": '\U000022A4', - "DownTeeArrow;": '\U000021A7', - "Downarrow;": '\U000021D3', - "Dscr;": '\U0001D49F', - "Dstrok;": '\U00000110', - "ENG;": '\U0000014A', - "ETH;": '\U000000D0', - "Eacute;": '\U000000C9', - "Ecaron;": '\U0000011A', - "Ecirc;": '\U000000CA', - "Ecy;": '\U0000042D', - "Edot;": '\U00000116', - "Efr;": '\U0001D508', - "Egrave;": '\U000000C8', - "Element;": '\U00002208', - "Emacr;": '\U00000112', - "EmptySmallSquare;": '\U000025FB', - "EmptyVerySmallSquare;": '\U000025AB', - "Eogon;": '\U00000118', - "Eopf;": '\U0001D53C', - "Epsilon;": '\U00000395', - "Equal;": '\U00002A75', - "EqualTilde;": '\U00002242', - "Equilibrium;": '\U000021CC', - "Escr;": '\U00002130', - "Esim;": '\U00002A73', - "Eta;": '\U00000397', - "Euml;": '\U000000CB', - "Exists;": '\U00002203', - "ExponentialE;": '\U00002147', - "Fcy;": '\U00000424', - "Ffr;": '\U0001D509', - "FilledSmallSquare;": '\U000025FC', - "FilledVerySmallSquare;": '\U000025AA', - "Fopf;": '\U0001D53D', - "ForAll;": '\U00002200', - "Fouriertrf;": '\U00002131', - "Fscr;": '\U00002131', - "GJcy;": '\U00000403', - "GT;": '\U0000003E', - "Gamma;": '\U00000393', - "Gammad;": '\U000003DC', - "Gbreve;": '\U0000011E', - "Gcedil;": '\U00000122', - "Gcirc;": '\U0000011C', - "Gcy;": '\U00000413', - "Gdot;": '\U00000120', - "Gfr;": '\U0001D50A', - "Gg;": '\U000022D9', - "Gopf;": '\U0001D53E', - "GreaterEqual;": '\U00002265', - "GreaterEqualLess;": '\U000022DB', - "GreaterFullEqual;": '\U00002267', - "GreaterGreater;": '\U00002AA2', - "GreaterLess;": '\U00002277', - "GreaterSlantEqual;": '\U00002A7E', - "GreaterTilde;": '\U00002273', - "Gscr;": '\U0001D4A2', - "Gt;": '\U0000226B', - "HARDcy;": '\U0000042A', - "Hacek;": '\U000002C7', - "Hat;": '\U0000005E', - "Hcirc;": '\U00000124', - "Hfr;": '\U0000210C', - "HilbertSpace;": '\U0000210B', - "Hopf;": '\U0000210D', - "HorizontalLine;": '\U00002500', - "Hscr;": '\U0000210B', - "Hstrok;": '\U00000126', - "HumpDownHump;": '\U0000224E', - "HumpEqual;": '\U0000224F', - "IEcy;": '\U00000415', - "IJlig;": '\U00000132', - "IOcy;": '\U00000401', - "Iacute;": '\U000000CD', - "Icirc;": '\U000000CE', - "Icy;": '\U00000418', - "Idot;": '\U00000130', - "Ifr;": '\U00002111', - "Igrave;": '\U000000CC', - "Im;": '\U00002111', - "Imacr;": '\U0000012A', - "ImaginaryI;": '\U00002148', - "Implies;": '\U000021D2', - "Int;": '\U0000222C', - "Integral;": '\U0000222B', - "Intersection;": '\U000022C2', - "InvisibleComma;": '\U00002063', - "InvisibleTimes;": '\U00002062', - "Iogon;": '\U0000012E', - "Iopf;": '\U0001D540', - "Iota;": '\U00000399', - "Iscr;": '\U00002110', - "Itilde;": '\U00000128', - "Iukcy;": '\U00000406', - "Iuml;": '\U000000CF', - "Jcirc;": '\U00000134', - "Jcy;": '\U00000419', - "Jfr;": '\U0001D50D', - "Jopf;": '\U0001D541', - "Jscr;": '\U0001D4A5', - "Jsercy;": '\U00000408', - "Jukcy;": '\U00000404', - "KHcy;": '\U00000425', - "KJcy;": '\U0000040C', - "Kappa;": '\U0000039A', - "Kcedil;": '\U00000136', - "Kcy;": '\U0000041A', - "Kfr;": '\U0001D50E', - "Kopf;": '\U0001D542', - "Kscr;": '\U0001D4A6', - "LJcy;": '\U00000409', - "LT;": '\U0000003C', - "Lacute;": '\U00000139', - "Lambda;": '\U0000039B', - "Lang;": '\U000027EA', - "Laplacetrf;": '\U00002112', - "Larr;": '\U0000219E', - "Lcaron;": '\U0000013D', - "Lcedil;": '\U0000013B', - "Lcy;": '\U0000041B', - "LeftAngleBracket;": '\U000027E8', - "LeftArrow;": '\U00002190', - "LeftArrowBar;": '\U000021E4', - "LeftArrowRightArrow;": '\U000021C6', - "LeftCeiling;": '\U00002308', - "LeftDoubleBracket;": '\U000027E6', - "LeftDownTeeVector;": '\U00002961', - "LeftDownVector;": '\U000021C3', - "LeftDownVectorBar;": '\U00002959', - "LeftFloor;": '\U0000230A', - "LeftRightArrow;": '\U00002194', - "LeftRightVector;": '\U0000294E', - "LeftTee;": '\U000022A3', - "LeftTeeArrow;": '\U000021A4', - "LeftTeeVector;": '\U0000295A', - "LeftTriangle;": '\U000022B2', - "LeftTriangleBar;": '\U000029CF', - "LeftTriangleEqual;": '\U000022B4', - "LeftUpDownVector;": '\U00002951', - "LeftUpTeeVector;": '\U00002960', - "LeftUpVector;": '\U000021BF', - "LeftUpVectorBar;": '\U00002958', - "LeftVector;": '\U000021BC', - "LeftVectorBar;": '\U00002952', - "Leftarrow;": '\U000021D0', - "Leftrightarrow;": '\U000021D4', - "LessEqualGreater;": '\U000022DA', - "LessFullEqual;": '\U00002266', - "LessGreater;": '\U00002276', - "LessLess;": '\U00002AA1', - "LessSlantEqual;": '\U00002A7D', - "LessTilde;": '\U00002272', - "Lfr;": '\U0001D50F', - "Ll;": '\U000022D8', - "Lleftarrow;": '\U000021DA', - "Lmidot;": '\U0000013F', - "LongLeftArrow;": '\U000027F5', - "LongLeftRightArrow;": '\U000027F7', - "LongRightArrow;": '\U000027F6', - "Longleftarrow;": '\U000027F8', - "Longleftrightarrow;": '\U000027FA', - "Longrightarrow;": '\U000027F9', - "Lopf;": '\U0001D543', - "LowerLeftArrow;": '\U00002199', - "LowerRightArrow;": '\U00002198', - "Lscr;": '\U00002112', - "Lsh;": '\U000021B0', - "Lstrok;": '\U00000141', - "Lt;": '\U0000226A', - "Map;": '\U00002905', - "Mcy;": '\U0000041C', - "MediumSpace;": '\U0000205F', - "Mellintrf;": '\U00002133', - "Mfr;": '\U0001D510', - "MinusPlus;": '\U00002213', - "Mopf;": '\U0001D544', - "Mscr;": '\U00002133', - "Mu;": '\U0000039C', - "NJcy;": '\U0000040A', - "Nacute;": '\U00000143', - "Ncaron;": '\U00000147', - "Ncedil;": '\U00000145', - "Ncy;": '\U0000041D', - "NegativeMediumSpace;": '\U0000200B', - "NegativeThickSpace;": '\U0000200B', - "NegativeThinSpace;": '\U0000200B', - "NegativeVeryThinSpace;": '\U0000200B', - "NestedGreaterGreater;": '\U0000226B', - "NestedLessLess;": '\U0000226A', - "NewLine;": '\U0000000A', - "Nfr;": '\U0001D511', - "NoBreak;": '\U00002060', - "NonBreakingSpace;": '\U000000A0', - "Nopf;": '\U00002115', - "Not;": '\U00002AEC', - "NotCongruent;": '\U00002262', - "NotCupCap;": '\U0000226D', - "NotDoubleVerticalBar;": '\U00002226', - "NotElement;": '\U00002209', - "NotEqual;": '\U00002260', - "NotExists;": '\U00002204', - "NotGreater;": '\U0000226F', - "NotGreaterEqual;": '\U00002271', - "NotGreaterLess;": '\U00002279', - "NotGreaterTilde;": '\U00002275', - "NotLeftTriangle;": '\U000022EA', - "NotLeftTriangleEqual;": '\U000022EC', - "NotLess;": '\U0000226E', - "NotLessEqual;": '\U00002270', - "NotLessGreater;": '\U00002278', - "NotLessTilde;": '\U00002274', - "NotPrecedes;": '\U00002280', - "NotPrecedesSlantEqual;": '\U000022E0', - "NotReverseElement;": '\U0000220C', - "NotRightTriangle;": '\U000022EB', - "NotRightTriangleEqual;": '\U000022ED', - "NotSquareSubsetEqual;": '\U000022E2', - "NotSquareSupersetEqual;": '\U000022E3', - "NotSubsetEqual;": '\U00002288', - "NotSucceeds;": '\U00002281', - "NotSucceedsSlantEqual;": '\U000022E1', - "NotSupersetEqual;": '\U00002289', - "NotTilde;": '\U00002241', - "NotTildeEqual;": '\U00002244', - "NotTildeFullEqual;": '\U00002247', - "NotTildeTilde;": '\U00002249', - "NotVerticalBar;": '\U00002224', - "Nscr;": '\U0001D4A9', - "Ntilde;": '\U000000D1', - "Nu;": '\U0000039D', - "OElig;": '\U00000152', - "Oacute;": '\U000000D3', - "Ocirc;": '\U000000D4', - "Ocy;": '\U0000041E', - "Odblac;": '\U00000150', - "Ofr;": '\U0001D512', - "Ograve;": '\U000000D2', - "Omacr;": '\U0000014C', - "Omega;": '\U000003A9', - "Omicron;": '\U0000039F', - "Oopf;": '\U0001D546', - "OpenCurlyDoubleQuote;": '\U0000201C', - "OpenCurlyQuote;": '\U00002018', - "Or;": '\U00002A54', - "Oscr;": '\U0001D4AA', - "Oslash;": '\U000000D8', - "Otilde;": '\U000000D5', - "Otimes;": '\U00002A37', - "Ouml;": '\U000000D6', - "OverBar;": '\U0000203E', - "OverBrace;": '\U000023DE', - "OverBracket;": '\U000023B4', - "OverParenthesis;": '\U000023DC', - "PartialD;": '\U00002202', - "Pcy;": '\U0000041F', - "Pfr;": '\U0001D513', - "Phi;": '\U000003A6', - "Pi;": '\U000003A0', - "PlusMinus;": '\U000000B1', - "Poincareplane;": '\U0000210C', - "Popf;": '\U00002119', - "Pr;": '\U00002ABB', - "Precedes;": '\U0000227A', - "PrecedesEqual;": '\U00002AAF', - "PrecedesSlantEqual;": '\U0000227C', - "PrecedesTilde;": '\U0000227E', - "Prime;": '\U00002033', - "Product;": '\U0000220F', - "Proportion;": '\U00002237', - "Proportional;": '\U0000221D', - "Pscr;": '\U0001D4AB', - "Psi;": '\U000003A8', - "QUOT;": '\U00000022', - "Qfr;": '\U0001D514', - "Qopf;": '\U0000211A', - "Qscr;": '\U0001D4AC', - "RBarr;": '\U00002910', - "REG;": '\U000000AE', - "Racute;": '\U00000154', - "Rang;": '\U000027EB', - "Rarr;": '\U000021A0', - "Rarrtl;": '\U00002916', - "Rcaron;": '\U00000158', - "Rcedil;": '\U00000156', - "Rcy;": '\U00000420', - "Re;": '\U0000211C', - "ReverseElement;": '\U0000220B', - "ReverseEquilibrium;": '\U000021CB', - "ReverseUpEquilibrium;": '\U0000296F', - "Rfr;": '\U0000211C', - "Rho;": '\U000003A1', - "RightAngleBracket;": '\U000027E9', - "RightArrow;": '\U00002192', - "RightArrowBar;": '\U000021E5', - "RightArrowLeftArrow;": '\U000021C4', - "RightCeiling;": '\U00002309', - "RightDoubleBracket;": '\U000027E7', - "RightDownTeeVector;": '\U0000295D', - "RightDownVector;": '\U000021C2', - "RightDownVectorBar;": '\U00002955', - "RightFloor;": '\U0000230B', - "RightTee;": '\U000022A2', - "RightTeeArrow;": '\U000021A6', - "RightTeeVector;": '\U0000295B', - "RightTriangle;": '\U000022B3', - "RightTriangleBar;": '\U000029D0', - "RightTriangleEqual;": '\U000022B5', - "RightUpDownVector;": '\U0000294F', - "RightUpTeeVector;": '\U0000295C', - "RightUpVector;": '\U000021BE', - "RightUpVectorBar;": '\U00002954', - "RightVector;": '\U000021C0', - "RightVectorBar;": '\U00002953', - "Rightarrow;": '\U000021D2', - "Ropf;": '\U0000211D', - "RoundImplies;": '\U00002970', - "Rrightarrow;": '\U000021DB', - "Rscr;": '\U0000211B', - "Rsh;": '\U000021B1', - "RuleDelayed;": '\U000029F4', - "SHCHcy;": '\U00000429', - "SHcy;": '\U00000428', - "SOFTcy;": '\U0000042C', - "Sacute;": '\U0000015A', - "Sc;": '\U00002ABC', - "Scaron;": '\U00000160', - "Scedil;": '\U0000015E', - "Scirc;": '\U0000015C', - "Scy;": '\U00000421', - "Sfr;": '\U0001D516', - "ShortDownArrow;": '\U00002193', - "ShortLeftArrow;": '\U00002190', - "ShortRightArrow;": '\U00002192', - "ShortUpArrow;": '\U00002191', - "Sigma;": '\U000003A3', - "SmallCircle;": '\U00002218', - "Sopf;": '\U0001D54A', - "Sqrt;": '\U0000221A', - "Square;": '\U000025A1', - "SquareIntersection;": '\U00002293', - "SquareSubset;": '\U0000228F', - "SquareSubsetEqual;": '\U00002291', - "SquareSuperset;": '\U00002290', - "SquareSupersetEqual;": '\U00002292', - "SquareUnion;": '\U00002294', - "Sscr;": '\U0001D4AE', - "Star;": '\U000022C6', - "Sub;": '\U000022D0', - "Subset;": '\U000022D0', - "SubsetEqual;": '\U00002286', - "Succeeds;": '\U0000227B', - "SucceedsEqual;": '\U00002AB0', - "SucceedsSlantEqual;": '\U0000227D', - "SucceedsTilde;": '\U0000227F', - "SuchThat;": '\U0000220B', - "Sum;": '\U00002211', - "Sup;": '\U000022D1', - "Superset;": '\U00002283', - "SupersetEqual;": '\U00002287', - "Supset;": '\U000022D1', - "THORN;": '\U000000DE', - "TRADE;": '\U00002122', - "TSHcy;": '\U0000040B', - "TScy;": '\U00000426', - "Tab;": '\U00000009', - "Tau;": '\U000003A4', - "Tcaron;": '\U00000164', - "Tcedil;": '\U00000162', - "Tcy;": '\U00000422', - "Tfr;": '\U0001D517', - "Therefore;": '\U00002234', - "Theta;": '\U00000398', - "ThinSpace;": '\U00002009', - "Tilde;": '\U0000223C', - "TildeEqual;": '\U00002243', - "TildeFullEqual;": '\U00002245', - "TildeTilde;": '\U00002248', - "Topf;": '\U0001D54B', - "TripleDot;": '\U000020DB', - "Tscr;": '\U0001D4AF', - "Tstrok;": '\U00000166', - "Uacute;": '\U000000DA', - "Uarr;": '\U0000219F', - "Uarrocir;": '\U00002949', - "Ubrcy;": '\U0000040E', - "Ubreve;": '\U0000016C', - "Ucirc;": '\U000000DB', - "Ucy;": '\U00000423', - "Udblac;": '\U00000170', - "Ufr;": '\U0001D518', - "Ugrave;": '\U000000D9', - "Umacr;": '\U0000016A', - "UnderBar;": '\U0000005F', - "UnderBrace;": '\U000023DF', - "UnderBracket;": '\U000023B5', - "UnderParenthesis;": '\U000023DD', - "Union;": '\U000022C3', - "UnionPlus;": '\U0000228E', - "Uogon;": '\U00000172', - "Uopf;": '\U0001D54C', - "UpArrow;": '\U00002191', - "UpArrowBar;": '\U00002912', - "UpArrowDownArrow;": '\U000021C5', - "UpDownArrow;": '\U00002195', - "UpEquilibrium;": '\U0000296E', - "UpTee;": '\U000022A5', - "UpTeeArrow;": '\U000021A5', - "Uparrow;": '\U000021D1', - "Updownarrow;": '\U000021D5', - "UpperLeftArrow;": '\U00002196', - "UpperRightArrow;": '\U00002197', - "Upsi;": '\U000003D2', - "Upsilon;": '\U000003A5', - "Uring;": '\U0000016E', - "Uscr;": '\U0001D4B0', - "Utilde;": '\U00000168', - "Uuml;": '\U000000DC', - "VDash;": '\U000022AB', - "Vbar;": '\U00002AEB', - "Vcy;": '\U00000412', - "Vdash;": '\U000022A9', - "Vdashl;": '\U00002AE6', - "Vee;": '\U000022C1', - "Verbar;": '\U00002016', - "Vert;": '\U00002016', - "VerticalBar;": '\U00002223', - "VerticalLine;": '\U0000007C', - "VerticalSeparator;": '\U00002758', - "VerticalTilde;": '\U00002240', - "VeryThinSpace;": '\U0000200A', - "Vfr;": '\U0001D519', - "Vopf;": '\U0001D54D', - "Vscr;": '\U0001D4B1', - "Vvdash;": '\U000022AA', - "Wcirc;": '\U00000174', - "Wedge;": '\U000022C0', - "Wfr;": '\U0001D51A', - "Wopf;": '\U0001D54E', - "Wscr;": '\U0001D4B2', - "Xfr;": '\U0001D51B', - "Xi;": '\U0000039E', - "Xopf;": '\U0001D54F', - "Xscr;": '\U0001D4B3', - "YAcy;": '\U0000042F', - "YIcy;": '\U00000407', - "YUcy;": '\U0000042E', - "Yacute;": '\U000000DD', - "Ycirc;": '\U00000176', - "Ycy;": '\U0000042B', - "Yfr;": '\U0001D51C', - "Yopf;": '\U0001D550', - "Yscr;": '\U0001D4B4', - "Yuml;": '\U00000178', - "ZHcy;": '\U00000416', - "Zacute;": '\U00000179', - "Zcaron;": '\U0000017D', - "Zcy;": '\U00000417', - "Zdot;": '\U0000017B', - "ZeroWidthSpace;": '\U0000200B', - "Zeta;": '\U00000396', - "Zfr;": '\U00002128', - "Zopf;": '\U00002124', - "Zscr;": '\U0001D4B5', - "aacute;": '\U000000E1', - "abreve;": '\U00000103', - "ac;": '\U0000223E', - "acd;": '\U0000223F', - "acirc;": '\U000000E2', - "acute;": '\U000000B4', - "acy;": '\U00000430', - "aelig;": '\U000000E6', - "af;": '\U00002061', - "afr;": '\U0001D51E', - "agrave;": '\U000000E0', - "alefsym;": '\U00002135', - "aleph;": '\U00002135', - "alpha;": '\U000003B1', - "amacr;": '\U00000101', - "amalg;": '\U00002A3F', - "amp;": '\U00000026', - "and;": '\U00002227', - "andand;": '\U00002A55', - "andd;": '\U00002A5C', - "andslope;": '\U00002A58', - "andv;": '\U00002A5A', - "ang;": '\U00002220', - "ange;": '\U000029A4', - "angle;": '\U00002220', - "angmsd;": '\U00002221', - "angmsdaa;": '\U000029A8', - "angmsdab;": '\U000029A9', - "angmsdac;": '\U000029AA', - "angmsdad;": '\U000029AB', - "angmsdae;": '\U000029AC', - "angmsdaf;": '\U000029AD', - "angmsdag;": '\U000029AE', - "angmsdah;": '\U000029AF', - "angrt;": '\U0000221F', - "angrtvb;": '\U000022BE', - "angrtvbd;": '\U0000299D', - "angsph;": '\U00002222', - "angst;": '\U000000C5', - "angzarr;": '\U0000237C', - "aogon;": '\U00000105', - "aopf;": '\U0001D552', - "ap;": '\U00002248', - "apE;": '\U00002A70', - "apacir;": '\U00002A6F', - "ape;": '\U0000224A', - "apid;": '\U0000224B', - "apos;": '\U00000027', - "approx;": '\U00002248', - "approxeq;": '\U0000224A', - "aring;": '\U000000E5', - "ascr;": '\U0001D4B6', - "ast;": '\U0000002A', - "asymp;": '\U00002248', - "asympeq;": '\U0000224D', - "atilde;": '\U000000E3', - "auml;": '\U000000E4', - "awconint;": '\U00002233', - "awint;": '\U00002A11', - "bNot;": '\U00002AED', - "backcong;": '\U0000224C', - "backepsilon;": '\U000003F6', - "backprime;": '\U00002035', - "backsim;": '\U0000223D', - "backsimeq;": '\U000022CD', - "barvee;": '\U000022BD', - "barwed;": '\U00002305', - "barwedge;": '\U00002305', - "bbrk;": '\U000023B5', - "bbrktbrk;": '\U000023B6', - "bcong;": '\U0000224C', - "bcy;": '\U00000431', - "bdquo;": '\U0000201E', - "becaus;": '\U00002235', - "because;": '\U00002235', - "bemptyv;": '\U000029B0', - "bepsi;": '\U000003F6', - "bernou;": '\U0000212C', - "beta;": '\U000003B2', - "beth;": '\U00002136', - "between;": '\U0000226C', - "bfr;": '\U0001D51F', - "bigcap;": '\U000022C2', - "bigcirc;": '\U000025EF', - "bigcup;": '\U000022C3', - "bigodot;": '\U00002A00', - "bigoplus;": '\U00002A01', - "bigotimes;": '\U00002A02', - "bigsqcup;": '\U00002A06', - "bigstar;": '\U00002605', - "bigtriangledown;": '\U000025BD', - "bigtriangleup;": '\U000025B3', - "biguplus;": '\U00002A04', - "bigvee;": '\U000022C1', - "bigwedge;": '\U000022C0', - "bkarow;": '\U0000290D', - "blacklozenge;": '\U000029EB', - "blacksquare;": '\U000025AA', - "blacktriangle;": '\U000025B4', - "blacktriangledown;": '\U000025BE', - "blacktriangleleft;": '\U000025C2', - "blacktriangleright;": '\U000025B8', - "blank;": '\U00002423', - "blk12;": '\U00002592', - "blk14;": '\U00002591', - "blk34;": '\U00002593', - "block;": '\U00002588', - "bnot;": '\U00002310', - "bopf;": '\U0001D553', - "bot;": '\U000022A5', - "bottom;": '\U000022A5', - "bowtie;": '\U000022C8', - "boxDL;": '\U00002557', - "boxDR;": '\U00002554', - "boxDl;": '\U00002556', - "boxDr;": '\U00002553', - "boxH;": '\U00002550', - "boxHD;": '\U00002566', - "boxHU;": '\U00002569', - "boxHd;": '\U00002564', - "boxHu;": '\U00002567', - "boxUL;": '\U0000255D', - "boxUR;": '\U0000255A', - "boxUl;": '\U0000255C', - "boxUr;": '\U00002559', - "boxV;": '\U00002551', - "boxVH;": '\U0000256C', - "boxVL;": '\U00002563', - "boxVR;": '\U00002560', - "boxVh;": '\U0000256B', - "boxVl;": '\U00002562', - "boxVr;": '\U0000255F', - "boxbox;": '\U000029C9', - "boxdL;": '\U00002555', - "boxdR;": '\U00002552', - "boxdl;": '\U00002510', - "boxdr;": '\U0000250C', - "boxh;": '\U00002500', - "boxhD;": '\U00002565', - "boxhU;": '\U00002568', - "boxhd;": '\U0000252C', - "boxhu;": '\U00002534', - "boxminus;": '\U0000229F', - "boxplus;": '\U0000229E', - "boxtimes;": '\U000022A0', - "boxuL;": '\U0000255B', - "boxuR;": '\U00002558', - "boxul;": '\U00002518', - "boxur;": '\U00002514', - "boxv;": '\U00002502', - "boxvH;": '\U0000256A', - "boxvL;": '\U00002561', - "boxvR;": '\U0000255E', - "boxvh;": '\U0000253C', - "boxvl;": '\U00002524', - "boxvr;": '\U0000251C', - "bprime;": '\U00002035', - "breve;": '\U000002D8', - "brvbar;": '\U000000A6', - "bscr;": '\U0001D4B7', - "bsemi;": '\U0000204F', - "bsim;": '\U0000223D', - "bsime;": '\U000022CD', - "bsol;": '\U0000005C', - "bsolb;": '\U000029C5', - "bsolhsub;": '\U000027C8', - "bull;": '\U00002022', - "bullet;": '\U00002022', - "bump;": '\U0000224E', - "bumpE;": '\U00002AAE', - "bumpe;": '\U0000224F', - "bumpeq;": '\U0000224F', - "cacute;": '\U00000107', - "cap;": '\U00002229', - "capand;": '\U00002A44', - "capbrcup;": '\U00002A49', - "capcap;": '\U00002A4B', - "capcup;": '\U00002A47', - "capdot;": '\U00002A40', - "caret;": '\U00002041', - "caron;": '\U000002C7', - "ccaps;": '\U00002A4D', - "ccaron;": '\U0000010D', - "ccedil;": '\U000000E7', - "ccirc;": '\U00000109', - "ccups;": '\U00002A4C', - "ccupssm;": '\U00002A50', - "cdot;": '\U0000010B', - "cedil;": '\U000000B8', - "cemptyv;": '\U000029B2', - "cent;": '\U000000A2', - "centerdot;": '\U000000B7', - "cfr;": '\U0001D520', - "chcy;": '\U00000447', - "check;": '\U00002713', - "checkmark;": '\U00002713', - "chi;": '\U000003C7', - "cir;": '\U000025CB', - "cirE;": '\U000029C3', - "circ;": '\U000002C6', - "circeq;": '\U00002257', - "circlearrowleft;": '\U000021BA', - "circlearrowright;": '\U000021BB', - "circledR;": '\U000000AE', - "circledS;": '\U000024C8', - "circledast;": '\U0000229B', - "circledcirc;": '\U0000229A', - "circleddash;": '\U0000229D', - "cire;": '\U00002257', - "cirfnint;": '\U00002A10', - "cirmid;": '\U00002AEF', - "cirscir;": '\U000029C2', - "clubs;": '\U00002663', - "clubsuit;": '\U00002663', - "colon;": '\U0000003A', - "colone;": '\U00002254', - "coloneq;": '\U00002254', - "comma;": '\U0000002C', - "commat;": '\U00000040', - "comp;": '\U00002201', - "compfn;": '\U00002218', - "complement;": '\U00002201', - "complexes;": '\U00002102', - "cong;": '\U00002245', - "congdot;": '\U00002A6D', - "conint;": '\U0000222E', - "copf;": '\U0001D554', - "coprod;": '\U00002210', - "copy;": '\U000000A9', - "copysr;": '\U00002117', - "crarr;": '\U000021B5', - "cross;": '\U00002717', - "cscr;": '\U0001D4B8', - "csub;": '\U00002ACF', - "csube;": '\U00002AD1', - "csup;": '\U00002AD0', - "csupe;": '\U00002AD2', - "ctdot;": '\U000022EF', - "cudarrl;": '\U00002938', - "cudarrr;": '\U00002935', - "cuepr;": '\U000022DE', - "cuesc;": '\U000022DF', - "cularr;": '\U000021B6', - "cularrp;": '\U0000293D', - "cup;": '\U0000222A', - "cupbrcap;": '\U00002A48', - "cupcap;": '\U00002A46', - "cupcup;": '\U00002A4A', - "cupdot;": '\U0000228D', - "cupor;": '\U00002A45', - "curarr;": '\U000021B7', - "curarrm;": '\U0000293C', - "curlyeqprec;": '\U000022DE', - "curlyeqsucc;": '\U000022DF', - "curlyvee;": '\U000022CE', - "curlywedge;": '\U000022CF', - "curren;": '\U000000A4', - "curvearrowleft;": '\U000021B6', - "curvearrowright;": '\U000021B7', - "cuvee;": '\U000022CE', - "cuwed;": '\U000022CF', - "cwconint;": '\U00002232', - "cwint;": '\U00002231', - "cylcty;": '\U0000232D', - "dArr;": '\U000021D3', - "dHar;": '\U00002965', - "dagger;": '\U00002020', - "daleth;": '\U00002138', - "darr;": '\U00002193', - "dash;": '\U00002010', - "dashv;": '\U000022A3', - "dbkarow;": '\U0000290F', - "dblac;": '\U000002DD', - "dcaron;": '\U0000010F', - "dcy;": '\U00000434', - "dd;": '\U00002146', - "ddagger;": '\U00002021', - "ddarr;": '\U000021CA', - "ddotseq;": '\U00002A77', - "deg;": '\U000000B0', - "delta;": '\U000003B4', - "demptyv;": '\U000029B1', - "dfisht;": '\U0000297F', - "dfr;": '\U0001D521', - "dharl;": '\U000021C3', - "dharr;": '\U000021C2', - "diam;": '\U000022C4', - "diamond;": '\U000022C4', - "diamondsuit;": '\U00002666', - "diams;": '\U00002666', - "die;": '\U000000A8', - "digamma;": '\U000003DD', - "disin;": '\U000022F2', - "div;": '\U000000F7', - "divide;": '\U000000F7', - "divideontimes;": '\U000022C7', - "divonx;": '\U000022C7', - "djcy;": '\U00000452', - "dlcorn;": '\U0000231E', - "dlcrop;": '\U0000230D', - "dollar;": '\U00000024', - "dopf;": '\U0001D555', - "dot;": '\U000002D9', - "doteq;": '\U00002250', - "doteqdot;": '\U00002251', - "dotminus;": '\U00002238', - "dotplus;": '\U00002214', - "dotsquare;": '\U000022A1', - "doublebarwedge;": '\U00002306', - "downarrow;": '\U00002193', - "downdownarrows;": '\U000021CA', - "downharpoonleft;": '\U000021C3', - "downharpoonright;": '\U000021C2', - "drbkarow;": '\U00002910', - "drcorn;": '\U0000231F', - "drcrop;": '\U0000230C', - "dscr;": '\U0001D4B9', - "dscy;": '\U00000455', - "dsol;": '\U000029F6', - "dstrok;": '\U00000111', - "dtdot;": '\U000022F1', - "dtri;": '\U000025BF', - "dtrif;": '\U000025BE', - "duarr;": '\U000021F5', - "duhar;": '\U0000296F', - "dwangle;": '\U000029A6', - "dzcy;": '\U0000045F', - "dzigrarr;": '\U000027FF', - "eDDot;": '\U00002A77', - "eDot;": '\U00002251', - "eacute;": '\U000000E9', - "easter;": '\U00002A6E', - "ecaron;": '\U0000011B', - "ecir;": '\U00002256', - "ecirc;": '\U000000EA', - "ecolon;": '\U00002255', - "ecy;": '\U0000044D', - "edot;": '\U00000117', - "ee;": '\U00002147', - "efDot;": '\U00002252', - "efr;": '\U0001D522', - "eg;": '\U00002A9A', - "egrave;": '\U000000E8', - "egs;": '\U00002A96', - "egsdot;": '\U00002A98', - "el;": '\U00002A99', - "elinters;": '\U000023E7', - "ell;": '\U00002113', - "els;": '\U00002A95', - "elsdot;": '\U00002A97', - "emacr;": '\U00000113', - "empty;": '\U00002205', - "emptyset;": '\U00002205', - "emptyv;": '\U00002205', - "emsp;": '\U00002003', - "emsp13;": '\U00002004', - "emsp14;": '\U00002005', - "eng;": '\U0000014B', - "ensp;": '\U00002002', - "eogon;": '\U00000119', - "eopf;": '\U0001D556', - "epar;": '\U000022D5', - "eparsl;": '\U000029E3', - "eplus;": '\U00002A71', - "epsi;": '\U000003B5', - "epsilon;": '\U000003B5', - "epsiv;": '\U000003F5', - "eqcirc;": '\U00002256', - "eqcolon;": '\U00002255', - "eqsim;": '\U00002242', - "eqslantgtr;": '\U00002A96', - "eqslantless;": '\U00002A95', - "equals;": '\U0000003D', - "equest;": '\U0000225F', - "equiv;": '\U00002261', - "equivDD;": '\U00002A78', - "eqvparsl;": '\U000029E5', - "erDot;": '\U00002253', - "erarr;": '\U00002971', - "escr;": '\U0000212F', - "esdot;": '\U00002250', - "esim;": '\U00002242', - "eta;": '\U000003B7', - "eth;": '\U000000F0', - "euml;": '\U000000EB', - "euro;": '\U000020AC', - "excl;": '\U00000021', - "exist;": '\U00002203', - "expectation;": '\U00002130', - "exponentiale;": '\U00002147', - "fallingdotseq;": '\U00002252', - "fcy;": '\U00000444', - "female;": '\U00002640', - "ffilig;": '\U0000FB03', - "fflig;": '\U0000FB00', - "ffllig;": '\U0000FB04', - "ffr;": '\U0001D523', - "filig;": '\U0000FB01', - "flat;": '\U0000266D', - "fllig;": '\U0000FB02', - "fltns;": '\U000025B1', - "fnof;": '\U00000192', - "fopf;": '\U0001D557', - "forall;": '\U00002200', - "fork;": '\U000022D4', - "forkv;": '\U00002AD9', - "fpartint;": '\U00002A0D', - "frac12;": '\U000000BD', - "frac13;": '\U00002153', - "frac14;": '\U000000BC', - "frac15;": '\U00002155', - "frac16;": '\U00002159', - "frac18;": '\U0000215B', - "frac23;": '\U00002154', - "frac25;": '\U00002156', - "frac34;": '\U000000BE', - "frac35;": '\U00002157', - "frac38;": '\U0000215C', - "frac45;": '\U00002158', - "frac56;": '\U0000215A', - "frac58;": '\U0000215D', - "frac78;": '\U0000215E', - "frasl;": '\U00002044', - "frown;": '\U00002322', - "fscr;": '\U0001D4BB', - "gE;": '\U00002267', - "gEl;": '\U00002A8C', - "gacute;": '\U000001F5', - "gamma;": '\U000003B3', - "gammad;": '\U000003DD', - "gap;": '\U00002A86', - "gbreve;": '\U0000011F', - "gcirc;": '\U0000011D', - "gcy;": '\U00000433', - "gdot;": '\U00000121', - "ge;": '\U00002265', - "gel;": '\U000022DB', - "geq;": '\U00002265', - "geqq;": '\U00002267', - "geqslant;": '\U00002A7E', - "ges;": '\U00002A7E', - "gescc;": '\U00002AA9', - "gesdot;": '\U00002A80', - "gesdoto;": '\U00002A82', - "gesdotol;": '\U00002A84', - "gesles;": '\U00002A94', - "gfr;": '\U0001D524', - "gg;": '\U0000226B', - "ggg;": '\U000022D9', - "gimel;": '\U00002137', - "gjcy;": '\U00000453', - "gl;": '\U00002277', - "glE;": '\U00002A92', - "gla;": '\U00002AA5', - "glj;": '\U00002AA4', - "gnE;": '\U00002269', - "gnap;": '\U00002A8A', - "gnapprox;": '\U00002A8A', - "gne;": '\U00002A88', - "gneq;": '\U00002A88', - "gneqq;": '\U00002269', - "gnsim;": '\U000022E7', - "gopf;": '\U0001D558', - "grave;": '\U00000060', - "gscr;": '\U0000210A', - "gsim;": '\U00002273', - "gsime;": '\U00002A8E', - "gsiml;": '\U00002A90', - "gt;": '\U0000003E', - "gtcc;": '\U00002AA7', - "gtcir;": '\U00002A7A', - "gtdot;": '\U000022D7', - "gtlPar;": '\U00002995', - "gtquest;": '\U00002A7C', - "gtrapprox;": '\U00002A86', - "gtrarr;": '\U00002978', - "gtrdot;": '\U000022D7', - "gtreqless;": '\U000022DB', - "gtreqqless;": '\U00002A8C', - "gtrless;": '\U00002277', - "gtrsim;": '\U00002273', - "hArr;": '\U000021D4', - "hairsp;": '\U0000200A', - "half;": '\U000000BD', - "hamilt;": '\U0000210B', - "hardcy;": '\U0000044A', - "harr;": '\U00002194', - "harrcir;": '\U00002948', - "harrw;": '\U000021AD', - "hbar;": '\U0000210F', - "hcirc;": '\U00000125', - "hearts;": '\U00002665', - "heartsuit;": '\U00002665', - "hellip;": '\U00002026', - "hercon;": '\U000022B9', - "hfr;": '\U0001D525', - "hksearow;": '\U00002925', - "hkswarow;": '\U00002926', - "hoarr;": '\U000021FF', - "homtht;": '\U0000223B', - "hookleftarrow;": '\U000021A9', - "hookrightarrow;": '\U000021AA', - "hopf;": '\U0001D559', - "horbar;": '\U00002015', - "hscr;": '\U0001D4BD', - "hslash;": '\U0000210F', - "hstrok;": '\U00000127', - "hybull;": '\U00002043', - "hyphen;": '\U00002010', - "iacute;": '\U000000ED', - "ic;": '\U00002063', - "icirc;": '\U000000EE', - "icy;": '\U00000438', - "iecy;": '\U00000435', - "iexcl;": '\U000000A1', - "iff;": '\U000021D4', - "ifr;": '\U0001D526', - "igrave;": '\U000000EC', - "ii;": '\U00002148', - "iiiint;": '\U00002A0C', - "iiint;": '\U0000222D', - "iinfin;": '\U000029DC', - "iiota;": '\U00002129', - "ijlig;": '\U00000133', - "imacr;": '\U0000012B', - "image;": '\U00002111', - "imagline;": '\U00002110', - "imagpart;": '\U00002111', - "imath;": '\U00000131', - "imof;": '\U000022B7', - "imped;": '\U000001B5', - "in;": '\U00002208', - "incare;": '\U00002105', - "infin;": '\U0000221E', - "infintie;": '\U000029DD', - "inodot;": '\U00000131', - "int;": '\U0000222B', - "intcal;": '\U000022BA', - "integers;": '\U00002124', - "intercal;": '\U000022BA', - "intlarhk;": '\U00002A17', - "intprod;": '\U00002A3C', - "iocy;": '\U00000451', - "iogon;": '\U0000012F', - "iopf;": '\U0001D55A', - "iota;": '\U000003B9', - "iprod;": '\U00002A3C', - "iquest;": '\U000000BF', - "iscr;": '\U0001D4BE', - "isin;": '\U00002208', - "isinE;": '\U000022F9', - "isindot;": '\U000022F5', - "isins;": '\U000022F4', - "isinsv;": '\U000022F3', - "isinv;": '\U00002208', - "it;": '\U00002062', - "itilde;": '\U00000129', - "iukcy;": '\U00000456', - "iuml;": '\U000000EF', - "jcirc;": '\U00000135', - "jcy;": '\U00000439', - "jfr;": '\U0001D527', - "jmath;": '\U00000237', - "jopf;": '\U0001D55B', - "jscr;": '\U0001D4BF', - "jsercy;": '\U00000458', - "jukcy;": '\U00000454', - "kappa;": '\U000003BA', - "kappav;": '\U000003F0', - "kcedil;": '\U00000137', - "kcy;": '\U0000043A', - "kfr;": '\U0001D528', - "kgreen;": '\U00000138', - "khcy;": '\U00000445', - "kjcy;": '\U0000045C', - "kopf;": '\U0001D55C', - "kscr;": '\U0001D4C0', - "lAarr;": '\U000021DA', - "lArr;": '\U000021D0', - "lAtail;": '\U0000291B', - "lBarr;": '\U0000290E', - "lE;": '\U00002266', - "lEg;": '\U00002A8B', - "lHar;": '\U00002962', - "lacute;": '\U0000013A', - "laemptyv;": '\U000029B4', - "lagran;": '\U00002112', - "lambda;": '\U000003BB', - "lang;": '\U000027E8', - "langd;": '\U00002991', - "langle;": '\U000027E8', - "lap;": '\U00002A85', - "laquo;": '\U000000AB', - "larr;": '\U00002190', - "larrb;": '\U000021E4', - "larrbfs;": '\U0000291F', - "larrfs;": '\U0000291D', - "larrhk;": '\U000021A9', - "larrlp;": '\U000021AB', - "larrpl;": '\U00002939', - "larrsim;": '\U00002973', - "larrtl;": '\U000021A2', - "lat;": '\U00002AAB', - "latail;": '\U00002919', - "late;": '\U00002AAD', - "lbarr;": '\U0000290C', - "lbbrk;": '\U00002772', - "lbrace;": '\U0000007B', - "lbrack;": '\U0000005B', - "lbrke;": '\U0000298B', - "lbrksld;": '\U0000298F', - "lbrkslu;": '\U0000298D', - "lcaron;": '\U0000013E', - "lcedil;": '\U0000013C', - "lceil;": '\U00002308', - "lcub;": '\U0000007B', - "lcy;": '\U0000043B', - "ldca;": '\U00002936', - "ldquo;": '\U0000201C', - "ldquor;": '\U0000201E', - "ldrdhar;": '\U00002967', - "ldrushar;": '\U0000294B', - "ldsh;": '\U000021B2', - "le;": '\U00002264', - "leftarrow;": '\U00002190', - "leftarrowtail;": '\U000021A2', - "leftharpoondown;": '\U000021BD', - "leftharpoonup;": '\U000021BC', - "leftleftarrows;": '\U000021C7', - "leftrightarrow;": '\U00002194', - "leftrightarrows;": '\U000021C6', - "leftrightharpoons;": '\U000021CB', - "leftrightsquigarrow;": '\U000021AD', - "leftthreetimes;": '\U000022CB', - "leg;": '\U000022DA', - "leq;": '\U00002264', - "leqq;": '\U00002266', - "leqslant;": '\U00002A7D', - "les;": '\U00002A7D', - "lescc;": '\U00002AA8', - "lesdot;": '\U00002A7F', - "lesdoto;": '\U00002A81', - "lesdotor;": '\U00002A83', - "lesges;": '\U00002A93', - "lessapprox;": '\U00002A85', - "lessdot;": '\U000022D6', - "lesseqgtr;": '\U000022DA', - "lesseqqgtr;": '\U00002A8B', - "lessgtr;": '\U00002276', - "lesssim;": '\U00002272', - "lfisht;": '\U0000297C', - "lfloor;": '\U0000230A', - "lfr;": '\U0001D529', - "lg;": '\U00002276', - "lgE;": '\U00002A91', - "lhard;": '\U000021BD', - "lharu;": '\U000021BC', - "lharul;": '\U0000296A', - "lhblk;": '\U00002584', - "ljcy;": '\U00000459', - "ll;": '\U0000226A', - "llarr;": '\U000021C7', - "llcorner;": '\U0000231E', - "llhard;": '\U0000296B', - "lltri;": '\U000025FA', - "lmidot;": '\U00000140', - "lmoust;": '\U000023B0', - "lmoustache;": '\U000023B0', - "lnE;": '\U00002268', - "lnap;": '\U00002A89', - "lnapprox;": '\U00002A89', - "lne;": '\U00002A87', - "lneq;": '\U00002A87', - "lneqq;": '\U00002268', - "lnsim;": '\U000022E6', - "loang;": '\U000027EC', - "loarr;": '\U000021FD', - "lobrk;": '\U000027E6', - "longleftarrow;": '\U000027F5', - "longleftrightarrow;": '\U000027F7', - "longmapsto;": '\U000027FC', - "longrightarrow;": '\U000027F6', - "looparrowleft;": '\U000021AB', - "looparrowright;": '\U000021AC', - "lopar;": '\U00002985', - "lopf;": '\U0001D55D', - "loplus;": '\U00002A2D', - "lotimes;": '\U00002A34', - "lowast;": '\U00002217', - "lowbar;": '\U0000005F', - "loz;": '\U000025CA', - "lozenge;": '\U000025CA', - "lozf;": '\U000029EB', - "lpar;": '\U00000028', - "lparlt;": '\U00002993', - "lrarr;": '\U000021C6', - "lrcorner;": '\U0000231F', - "lrhar;": '\U000021CB', - "lrhard;": '\U0000296D', - "lrm;": '\U0000200E', - "lrtri;": '\U000022BF', - "lsaquo;": '\U00002039', - "lscr;": '\U0001D4C1', - "lsh;": '\U000021B0', - "lsim;": '\U00002272', - "lsime;": '\U00002A8D', - "lsimg;": '\U00002A8F', - "lsqb;": '\U0000005B', - "lsquo;": '\U00002018', - "lsquor;": '\U0000201A', - "lstrok;": '\U00000142', - "lt;": '\U0000003C', - "ltcc;": '\U00002AA6', - "ltcir;": '\U00002A79', - "ltdot;": '\U000022D6', - "lthree;": '\U000022CB', - "ltimes;": '\U000022C9', - "ltlarr;": '\U00002976', - "ltquest;": '\U00002A7B', - "ltrPar;": '\U00002996', - "ltri;": '\U000025C3', - "ltrie;": '\U000022B4', - "ltrif;": '\U000025C2', - "lurdshar;": '\U0000294A', - "luruhar;": '\U00002966', - "mDDot;": '\U0000223A', - "macr;": '\U000000AF', - "male;": '\U00002642', - "malt;": '\U00002720', - "maltese;": '\U00002720', - "map;": '\U000021A6', - "mapsto;": '\U000021A6', - "mapstodown;": '\U000021A7', - "mapstoleft;": '\U000021A4', - "mapstoup;": '\U000021A5', - "marker;": '\U000025AE', - "mcomma;": '\U00002A29', - "mcy;": '\U0000043C', - "mdash;": '\U00002014', - "measuredangle;": '\U00002221', - "mfr;": '\U0001D52A', - "mho;": '\U00002127', - "micro;": '\U000000B5', - "mid;": '\U00002223', - "midast;": '\U0000002A', - "midcir;": '\U00002AF0', - "middot;": '\U000000B7', - "minus;": '\U00002212', - "minusb;": '\U0000229F', - "minusd;": '\U00002238', - "minusdu;": '\U00002A2A', - "mlcp;": '\U00002ADB', - "mldr;": '\U00002026', - "mnplus;": '\U00002213', - "models;": '\U000022A7', - "mopf;": '\U0001D55E', - "mp;": '\U00002213', - "mscr;": '\U0001D4C2', - "mstpos;": '\U0000223E', - "mu;": '\U000003BC', - "multimap;": '\U000022B8', - "mumap;": '\U000022B8', - "nLeftarrow;": '\U000021CD', - "nLeftrightarrow;": '\U000021CE', - "nRightarrow;": '\U000021CF', - "nVDash;": '\U000022AF', - "nVdash;": '\U000022AE', - "nabla;": '\U00002207', - "nacute;": '\U00000144', - "nap;": '\U00002249', - "napos;": '\U00000149', - "napprox;": '\U00002249', - "natur;": '\U0000266E', - "natural;": '\U0000266E', - "naturals;": '\U00002115', - "nbsp;": '\U000000A0', - "ncap;": '\U00002A43', - "ncaron;": '\U00000148', - "ncedil;": '\U00000146', - "ncong;": '\U00002247', - "ncup;": '\U00002A42', - "ncy;": '\U0000043D', - "ndash;": '\U00002013', - "ne;": '\U00002260', - "neArr;": '\U000021D7', - "nearhk;": '\U00002924', - "nearr;": '\U00002197', - "nearrow;": '\U00002197', - "nequiv;": '\U00002262', - "nesear;": '\U00002928', - "nexist;": '\U00002204', - "nexists;": '\U00002204', - "nfr;": '\U0001D52B', - "nge;": '\U00002271', - "ngeq;": '\U00002271', - "ngsim;": '\U00002275', - "ngt;": '\U0000226F', - "ngtr;": '\U0000226F', - "nhArr;": '\U000021CE', - "nharr;": '\U000021AE', - "nhpar;": '\U00002AF2', - "ni;": '\U0000220B', - "nis;": '\U000022FC', - "nisd;": '\U000022FA', - "niv;": '\U0000220B', - "njcy;": '\U0000045A', - "nlArr;": '\U000021CD', - "nlarr;": '\U0000219A', - "nldr;": '\U00002025', - "nle;": '\U00002270', - "nleftarrow;": '\U0000219A', - "nleftrightarrow;": '\U000021AE', - "nleq;": '\U00002270', - "nless;": '\U0000226E', - "nlsim;": '\U00002274', - "nlt;": '\U0000226E', - "nltri;": '\U000022EA', - "nltrie;": '\U000022EC', - "nmid;": '\U00002224', - "nopf;": '\U0001D55F', - "not;": '\U000000AC', - "notin;": '\U00002209', - "notinva;": '\U00002209', - "notinvb;": '\U000022F7', - "notinvc;": '\U000022F6', - "notni;": '\U0000220C', - "notniva;": '\U0000220C', - "notnivb;": '\U000022FE', - "notnivc;": '\U000022FD', - "npar;": '\U00002226', - "nparallel;": '\U00002226', - "npolint;": '\U00002A14', - "npr;": '\U00002280', - "nprcue;": '\U000022E0', - "nprec;": '\U00002280', - "nrArr;": '\U000021CF', - "nrarr;": '\U0000219B', - "nrightarrow;": '\U0000219B', - "nrtri;": '\U000022EB', - "nrtrie;": '\U000022ED', - "nsc;": '\U00002281', - "nsccue;": '\U000022E1', - "nscr;": '\U0001D4C3', - "nshortmid;": '\U00002224', - "nshortparallel;": '\U00002226', - "nsim;": '\U00002241', - "nsime;": '\U00002244', - "nsimeq;": '\U00002244', - "nsmid;": '\U00002224', - "nspar;": '\U00002226', - "nsqsube;": '\U000022E2', - "nsqsupe;": '\U000022E3', - "nsub;": '\U00002284', - "nsube;": '\U00002288', - "nsubseteq;": '\U00002288', - "nsucc;": '\U00002281', - "nsup;": '\U00002285', - "nsupe;": '\U00002289', - "nsupseteq;": '\U00002289', - "ntgl;": '\U00002279', - "ntilde;": '\U000000F1', - "ntlg;": '\U00002278', - "ntriangleleft;": '\U000022EA', - "ntrianglelefteq;": '\U000022EC', - "ntriangleright;": '\U000022EB', - "ntrianglerighteq;": '\U000022ED', - "nu;": '\U000003BD', - "num;": '\U00000023', - "numero;": '\U00002116', - "numsp;": '\U00002007', - "nvDash;": '\U000022AD', - "nvHarr;": '\U00002904', - "nvdash;": '\U000022AC', - "nvinfin;": '\U000029DE', - "nvlArr;": '\U00002902', - "nvrArr;": '\U00002903', - "nwArr;": '\U000021D6', - "nwarhk;": '\U00002923', - "nwarr;": '\U00002196', - "nwarrow;": '\U00002196', - "nwnear;": '\U00002927', - "oS;": '\U000024C8', - "oacute;": '\U000000F3', - "oast;": '\U0000229B', - "ocir;": '\U0000229A', - "ocirc;": '\U000000F4', - "ocy;": '\U0000043E', - "odash;": '\U0000229D', - "odblac;": '\U00000151', - "odiv;": '\U00002A38', - "odot;": '\U00002299', - "odsold;": '\U000029BC', - "oelig;": '\U00000153', - "ofcir;": '\U000029BF', - "ofr;": '\U0001D52C', - "ogon;": '\U000002DB', - "ograve;": '\U000000F2', - "ogt;": '\U000029C1', - "ohbar;": '\U000029B5', - "ohm;": '\U000003A9', - "oint;": '\U0000222E', - "olarr;": '\U000021BA', - "olcir;": '\U000029BE', - "olcross;": '\U000029BB', - "oline;": '\U0000203E', - "olt;": '\U000029C0', - "omacr;": '\U0000014D', - "omega;": '\U000003C9', - "omicron;": '\U000003BF', - "omid;": '\U000029B6', - "ominus;": '\U00002296', - "oopf;": '\U0001D560', - "opar;": '\U000029B7', - "operp;": '\U000029B9', - "oplus;": '\U00002295', - "or;": '\U00002228', - "orarr;": '\U000021BB', - "ord;": '\U00002A5D', - "order;": '\U00002134', - "orderof;": '\U00002134', - "ordf;": '\U000000AA', - "ordm;": '\U000000BA', - "origof;": '\U000022B6', - "oror;": '\U00002A56', - "orslope;": '\U00002A57', - "orv;": '\U00002A5B', - "oscr;": '\U00002134', - "oslash;": '\U000000F8', - "osol;": '\U00002298', - "otilde;": '\U000000F5', - "otimes;": '\U00002297', - "otimesas;": '\U00002A36', - "ouml;": '\U000000F6', - "ovbar;": '\U0000233D', - "par;": '\U00002225', - "para;": '\U000000B6', - "parallel;": '\U00002225', - "parsim;": '\U00002AF3', - "parsl;": '\U00002AFD', - "part;": '\U00002202', - "pcy;": '\U0000043F', - "percnt;": '\U00000025', - "period;": '\U0000002E', - "permil;": '\U00002030', - "perp;": '\U000022A5', - "pertenk;": '\U00002031', - "pfr;": '\U0001D52D', - "phi;": '\U000003C6', - "phiv;": '\U000003D5', - "phmmat;": '\U00002133', - "phone;": '\U0000260E', - "pi;": '\U000003C0', - "pitchfork;": '\U000022D4', - "piv;": '\U000003D6', - "planck;": '\U0000210F', - "planckh;": '\U0000210E', - "plankv;": '\U0000210F', - "plus;": '\U0000002B', - "plusacir;": '\U00002A23', - "plusb;": '\U0000229E', - "pluscir;": '\U00002A22', - "plusdo;": '\U00002214', - "plusdu;": '\U00002A25', - "pluse;": '\U00002A72', - "plusmn;": '\U000000B1', - "plussim;": '\U00002A26', - "plustwo;": '\U00002A27', - "pm;": '\U000000B1', - "pointint;": '\U00002A15', - "popf;": '\U0001D561', - "pound;": '\U000000A3', - "pr;": '\U0000227A', - "prE;": '\U00002AB3', - "prap;": '\U00002AB7', - "prcue;": '\U0000227C', - "pre;": '\U00002AAF', - "prec;": '\U0000227A', - "precapprox;": '\U00002AB7', - "preccurlyeq;": '\U0000227C', - "preceq;": '\U00002AAF', - "precnapprox;": '\U00002AB9', - "precneqq;": '\U00002AB5', - "precnsim;": '\U000022E8', - "precsim;": '\U0000227E', - "prime;": '\U00002032', - "primes;": '\U00002119', - "prnE;": '\U00002AB5', - "prnap;": '\U00002AB9', - "prnsim;": '\U000022E8', - "prod;": '\U0000220F', - "profalar;": '\U0000232E', - "profline;": '\U00002312', - "profsurf;": '\U00002313', - "prop;": '\U0000221D', - "propto;": '\U0000221D', - "prsim;": '\U0000227E', - "prurel;": '\U000022B0', - "pscr;": '\U0001D4C5', - "psi;": '\U000003C8', - "puncsp;": '\U00002008', - "qfr;": '\U0001D52E', - "qint;": '\U00002A0C', - "qopf;": '\U0001D562', - "qprime;": '\U00002057', - "qscr;": '\U0001D4C6', - "quaternions;": '\U0000210D', - "quatint;": '\U00002A16', - "quest;": '\U0000003F', - "questeq;": '\U0000225F', - "quot;": '\U00000022', - "rAarr;": '\U000021DB', - "rArr;": '\U000021D2', - "rAtail;": '\U0000291C', - "rBarr;": '\U0000290F', - "rHar;": '\U00002964', - "racute;": '\U00000155', - "radic;": '\U0000221A', - "raemptyv;": '\U000029B3', - "rang;": '\U000027E9', - "rangd;": '\U00002992', - "range;": '\U000029A5', - "rangle;": '\U000027E9', - "raquo;": '\U000000BB', - "rarr;": '\U00002192', - "rarrap;": '\U00002975', - "rarrb;": '\U000021E5', - "rarrbfs;": '\U00002920', - "rarrc;": '\U00002933', - "rarrfs;": '\U0000291E', - "rarrhk;": '\U000021AA', - "rarrlp;": '\U000021AC', - "rarrpl;": '\U00002945', - "rarrsim;": '\U00002974', - "rarrtl;": '\U000021A3', - "rarrw;": '\U0000219D', - "ratail;": '\U0000291A', - "ratio;": '\U00002236', - "rationals;": '\U0000211A', - "rbarr;": '\U0000290D', - "rbbrk;": '\U00002773', - "rbrace;": '\U0000007D', - "rbrack;": '\U0000005D', - "rbrke;": '\U0000298C', - "rbrksld;": '\U0000298E', - "rbrkslu;": '\U00002990', - "rcaron;": '\U00000159', - "rcedil;": '\U00000157', - "rceil;": '\U00002309', - "rcub;": '\U0000007D', - "rcy;": '\U00000440', - "rdca;": '\U00002937', - "rdldhar;": '\U00002969', - "rdquo;": '\U0000201D', - "rdquor;": '\U0000201D', - "rdsh;": '\U000021B3', - "real;": '\U0000211C', - "realine;": '\U0000211B', - "realpart;": '\U0000211C', - "reals;": '\U0000211D', - "rect;": '\U000025AD', - "reg;": '\U000000AE', - "rfisht;": '\U0000297D', - "rfloor;": '\U0000230B', - "rfr;": '\U0001D52F', - "rhard;": '\U000021C1', - "rharu;": '\U000021C0', - "rharul;": '\U0000296C', - "rho;": '\U000003C1', - "rhov;": '\U000003F1', - "rightarrow;": '\U00002192', - "rightarrowtail;": '\U000021A3', - "rightharpoondown;": '\U000021C1', - "rightharpoonup;": '\U000021C0', - "rightleftarrows;": '\U000021C4', - "rightleftharpoons;": '\U000021CC', - "rightrightarrows;": '\U000021C9', - "rightsquigarrow;": '\U0000219D', - "rightthreetimes;": '\U000022CC', - "ring;": '\U000002DA', - "risingdotseq;": '\U00002253', - "rlarr;": '\U000021C4', - "rlhar;": '\U000021CC', - "rlm;": '\U0000200F', - "rmoust;": '\U000023B1', - "rmoustache;": '\U000023B1', - "rnmid;": '\U00002AEE', - "roang;": '\U000027ED', - "roarr;": '\U000021FE', - "robrk;": '\U000027E7', - "ropar;": '\U00002986', - "ropf;": '\U0001D563', - "roplus;": '\U00002A2E', - "rotimes;": '\U00002A35', - "rpar;": '\U00000029', - "rpargt;": '\U00002994', - "rppolint;": '\U00002A12', - "rrarr;": '\U000021C9', - "rsaquo;": '\U0000203A', - "rscr;": '\U0001D4C7', - "rsh;": '\U000021B1', - "rsqb;": '\U0000005D', - "rsquo;": '\U00002019', - "rsquor;": '\U00002019', - "rthree;": '\U000022CC', - "rtimes;": '\U000022CA', - "rtri;": '\U000025B9', - "rtrie;": '\U000022B5', - "rtrif;": '\U000025B8', - "rtriltri;": '\U000029CE', - "ruluhar;": '\U00002968', - "rx;": '\U0000211E', - "sacute;": '\U0000015B', - "sbquo;": '\U0000201A', - "sc;": '\U0000227B', - "scE;": '\U00002AB4', - "scap;": '\U00002AB8', - "scaron;": '\U00000161', - "sccue;": '\U0000227D', - "sce;": '\U00002AB0', - "scedil;": '\U0000015F', - "scirc;": '\U0000015D', - "scnE;": '\U00002AB6', - "scnap;": '\U00002ABA', - "scnsim;": '\U000022E9', - "scpolint;": '\U00002A13', - "scsim;": '\U0000227F', - "scy;": '\U00000441', - "sdot;": '\U000022C5', - "sdotb;": '\U000022A1', - "sdote;": '\U00002A66', - "seArr;": '\U000021D8', - "searhk;": '\U00002925', - "searr;": '\U00002198', - "searrow;": '\U00002198', - "sect;": '\U000000A7', - "semi;": '\U0000003B', - "seswar;": '\U00002929', - "setminus;": '\U00002216', - "setmn;": '\U00002216', - "sext;": '\U00002736', - "sfr;": '\U0001D530', - "sfrown;": '\U00002322', - "sharp;": '\U0000266F', - "shchcy;": '\U00000449', - "shcy;": '\U00000448', - "shortmid;": '\U00002223', - "shortparallel;": '\U00002225', - "shy;": '\U000000AD', - "sigma;": '\U000003C3', - "sigmaf;": '\U000003C2', - "sigmav;": '\U000003C2', - "sim;": '\U0000223C', - "simdot;": '\U00002A6A', - "sime;": '\U00002243', - "simeq;": '\U00002243', - "simg;": '\U00002A9E', - "simgE;": '\U00002AA0', - "siml;": '\U00002A9D', - "simlE;": '\U00002A9F', - "simne;": '\U00002246', - "simplus;": '\U00002A24', - "simrarr;": '\U00002972', - "slarr;": '\U00002190', - "smallsetminus;": '\U00002216', - "smashp;": '\U00002A33', - "smeparsl;": '\U000029E4', - "smid;": '\U00002223', - "smile;": '\U00002323', - "smt;": '\U00002AAA', - "smte;": '\U00002AAC', - "softcy;": '\U0000044C', - "sol;": '\U0000002F', - "solb;": '\U000029C4', - "solbar;": '\U0000233F', - "sopf;": '\U0001D564', - "spades;": '\U00002660', - "spadesuit;": '\U00002660', - "spar;": '\U00002225', - "sqcap;": '\U00002293', - "sqcup;": '\U00002294', - "sqsub;": '\U0000228F', - "sqsube;": '\U00002291', - "sqsubset;": '\U0000228F', - "sqsubseteq;": '\U00002291', - "sqsup;": '\U00002290', - "sqsupe;": '\U00002292', - "sqsupset;": '\U00002290', - "sqsupseteq;": '\U00002292', - "squ;": '\U000025A1', - "square;": '\U000025A1', - "squarf;": '\U000025AA', - "squf;": '\U000025AA', - "srarr;": '\U00002192', - "sscr;": '\U0001D4C8', - "ssetmn;": '\U00002216', - "ssmile;": '\U00002323', - "sstarf;": '\U000022C6', - "star;": '\U00002606', - "starf;": '\U00002605', - "straightepsilon;": '\U000003F5', - "straightphi;": '\U000003D5', - "strns;": '\U000000AF', - "sub;": '\U00002282', - "subE;": '\U00002AC5', - "subdot;": '\U00002ABD', - "sube;": '\U00002286', - "subedot;": '\U00002AC3', - "submult;": '\U00002AC1', - "subnE;": '\U00002ACB', - "subne;": '\U0000228A', - "subplus;": '\U00002ABF', - "subrarr;": '\U00002979', - "subset;": '\U00002282', - "subseteq;": '\U00002286', - "subseteqq;": '\U00002AC5', - "subsetneq;": '\U0000228A', - "subsetneqq;": '\U00002ACB', - "subsim;": '\U00002AC7', - "subsub;": '\U00002AD5', - "subsup;": '\U00002AD3', - "succ;": '\U0000227B', - "succapprox;": '\U00002AB8', - "succcurlyeq;": '\U0000227D', - "succeq;": '\U00002AB0', - "succnapprox;": '\U00002ABA', - "succneqq;": '\U00002AB6', - "succnsim;": '\U000022E9', - "succsim;": '\U0000227F', - "sum;": '\U00002211', - "sung;": '\U0000266A', - "sup;": '\U00002283', - "sup1;": '\U000000B9', - "sup2;": '\U000000B2', - "sup3;": '\U000000B3', - "supE;": '\U00002AC6', - "supdot;": '\U00002ABE', - "supdsub;": '\U00002AD8', - "supe;": '\U00002287', - "supedot;": '\U00002AC4', - "suphsol;": '\U000027C9', - "suphsub;": '\U00002AD7', - "suplarr;": '\U0000297B', - "supmult;": '\U00002AC2', - "supnE;": '\U00002ACC', - "supne;": '\U0000228B', - "supplus;": '\U00002AC0', - "supset;": '\U00002283', - "supseteq;": '\U00002287', - "supseteqq;": '\U00002AC6', - "supsetneq;": '\U0000228B', - "supsetneqq;": '\U00002ACC', - "supsim;": '\U00002AC8', - "supsub;": '\U00002AD4', - "supsup;": '\U00002AD6', - "swArr;": '\U000021D9', - "swarhk;": '\U00002926', - "swarr;": '\U00002199', - "swarrow;": '\U00002199', - "swnwar;": '\U0000292A', - "szlig;": '\U000000DF', - "target;": '\U00002316', - "tau;": '\U000003C4', - "tbrk;": '\U000023B4', - "tcaron;": '\U00000165', - "tcedil;": '\U00000163', - "tcy;": '\U00000442', - "tdot;": '\U000020DB', - "telrec;": '\U00002315', - "tfr;": '\U0001D531', - "there4;": '\U00002234', - "therefore;": '\U00002234', - "theta;": '\U000003B8', - "thetasym;": '\U000003D1', - "thetav;": '\U000003D1', - "thickapprox;": '\U00002248', - "thicksim;": '\U0000223C', - "thinsp;": '\U00002009', - "thkap;": '\U00002248', - "thksim;": '\U0000223C', - "thorn;": '\U000000FE', - "tilde;": '\U000002DC', - "times;": '\U000000D7', - "timesb;": '\U000022A0', - "timesbar;": '\U00002A31', - "timesd;": '\U00002A30', - "tint;": '\U0000222D', - "toea;": '\U00002928', - "top;": '\U000022A4', - "topbot;": '\U00002336', - "topcir;": '\U00002AF1', - "topf;": '\U0001D565', - "topfork;": '\U00002ADA', - "tosa;": '\U00002929', - "tprime;": '\U00002034', - "trade;": '\U00002122', - "triangle;": '\U000025B5', - "triangledown;": '\U000025BF', - "triangleleft;": '\U000025C3', - "trianglelefteq;": '\U000022B4', - "triangleq;": '\U0000225C', - "triangleright;": '\U000025B9', - "trianglerighteq;": '\U000022B5', - "tridot;": '\U000025EC', - "trie;": '\U0000225C', - "triminus;": '\U00002A3A', - "triplus;": '\U00002A39', - "trisb;": '\U000029CD', - "tritime;": '\U00002A3B', - "trpezium;": '\U000023E2', - "tscr;": '\U0001D4C9', - "tscy;": '\U00000446', - "tshcy;": '\U0000045B', - "tstrok;": '\U00000167', - "twixt;": '\U0000226C', - "twoheadleftarrow;": '\U0000219E', - "twoheadrightarrow;": '\U000021A0', - "uArr;": '\U000021D1', - "uHar;": '\U00002963', - "uacute;": '\U000000FA', - "uarr;": '\U00002191', - "ubrcy;": '\U0000045E', - "ubreve;": '\U0000016D', - "ucirc;": '\U000000FB', - "ucy;": '\U00000443', - "udarr;": '\U000021C5', - "udblac;": '\U00000171', - "udhar;": '\U0000296E', - "ufisht;": '\U0000297E', - "ufr;": '\U0001D532', - "ugrave;": '\U000000F9', - "uharl;": '\U000021BF', - "uharr;": '\U000021BE', - "uhblk;": '\U00002580', - "ulcorn;": '\U0000231C', - "ulcorner;": '\U0000231C', - "ulcrop;": '\U0000230F', - "ultri;": '\U000025F8', - "umacr;": '\U0000016B', - "uml;": '\U000000A8', - "uogon;": '\U00000173', - "uopf;": '\U0001D566', - "uparrow;": '\U00002191', - "updownarrow;": '\U00002195', - "upharpoonleft;": '\U000021BF', - "upharpoonright;": '\U000021BE', - "uplus;": '\U0000228E', - "upsi;": '\U000003C5', - "upsih;": '\U000003D2', - "upsilon;": '\U000003C5', - "upuparrows;": '\U000021C8', - "urcorn;": '\U0000231D', - "urcorner;": '\U0000231D', - "urcrop;": '\U0000230E', - "uring;": '\U0000016F', - "urtri;": '\U000025F9', - "uscr;": '\U0001D4CA', - "utdot;": '\U000022F0', - "utilde;": '\U00000169', - "utri;": '\U000025B5', - "utrif;": '\U000025B4', - "uuarr;": '\U000021C8', - "uuml;": '\U000000FC', - "uwangle;": '\U000029A7', - "vArr;": '\U000021D5', - "vBar;": '\U00002AE8', - "vBarv;": '\U00002AE9', - "vDash;": '\U000022A8', - "vangrt;": '\U0000299C', - "varepsilon;": '\U000003F5', - "varkappa;": '\U000003F0', - "varnothing;": '\U00002205', - "varphi;": '\U000003D5', - "varpi;": '\U000003D6', - "varpropto;": '\U0000221D', - "varr;": '\U00002195', - "varrho;": '\U000003F1', - "varsigma;": '\U000003C2', - "vartheta;": '\U000003D1', - "vartriangleleft;": '\U000022B2', - "vartriangleright;": '\U000022B3', - "vcy;": '\U00000432', - "vdash;": '\U000022A2', - "vee;": '\U00002228', - "veebar;": '\U000022BB', - "veeeq;": '\U0000225A', - "vellip;": '\U000022EE', - "verbar;": '\U0000007C', - "vert;": '\U0000007C', - "vfr;": '\U0001D533', - "vltri;": '\U000022B2', - "vopf;": '\U0001D567', - "vprop;": '\U0000221D', - "vrtri;": '\U000022B3', - "vscr;": '\U0001D4CB', - "vzigzag;": '\U0000299A', - "wcirc;": '\U00000175', - "wedbar;": '\U00002A5F', - "wedge;": '\U00002227', - "wedgeq;": '\U00002259', - "weierp;": '\U00002118', - "wfr;": '\U0001D534', - "wopf;": '\U0001D568', - "wp;": '\U00002118', - "wr;": '\U00002240', - "wreath;": '\U00002240', - "wscr;": '\U0001D4CC', - "xcap;": '\U000022C2', - "xcirc;": '\U000025EF', - "xcup;": '\U000022C3', - "xdtri;": '\U000025BD', - "xfr;": '\U0001D535', - "xhArr;": '\U000027FA', - "xharr;": '\U000027F7', - "xi;": '\U000003BE', - "xlArr;": '\U000027F8', - "xlarr;": '\U000027F5', - "xmap;": '\U000027FC', - "xnis;": '\U000022FB', - "xodot;": '\U00002A00', - "xopf;": '\U0001D569', - "xoplus;": '\U00002A01', - "xotime;": '\U00002A02', - "xrArr;": '\U000027F9', - "xrarr;": '\U000027F6', - "xscr;": '\U0001D4CD', - "xsqcup;": '\U00002A06', - "xuplus;": '\U00002A04', - "xutri;": '\U000025B3', - "xvee;": '\U000022C1', - "xwedge;": '\U000022C0', - "yacute;": '\U000000FD', - "yacy;": '\U0000044F', - "ycirc;": '\U00000177', - "ycy;": '\U0000044B', - "yen;": '\U000000A5', - "yfr;": '\U0001D536', - "yicy;": '\U00000457', - "yopf;": '\U0001D56A', - "yscr;": '\U0001D4CE', - "yucy;": '\U0000044E', - "yuml;": '\U000000FF', - "zacute;": '\U0000017A', - "zcaron;": '\U0000017E', - "zcy;": '\U00000437', - "zdot;": '\U0000017C', - "zeetrf;": '\U00002128', - "zeta;": '\U000003B6', - "zfr;": '\U0001D537', - "zhcy;": '\U00000436', - "zigrarr;": '\U000021DD', - "zopf;": '\U0001D56B', - "zscr;": '\U0001D4CF', - "zwj;": '\U0000200D', - "zwnj;": '\U0000200C', - "AElig": '\U000000C6', - "AMP": '\U00000026', - "Aacute": '\U000000C1', - "Acirc": '\U000000C2', - "Agrave": '\U000000C0', - "Aring": '\U000000C5', - "Atilde": '\U000000C3', - "Auml": '\U000000C4', - "COPY": '\U000000A9', - "Ccedil": '\U000000C7', - "ETH": '\U000000D0', - "Eacute": '\U000000C9', - "Ecirc": '\U000000CA', - "Egrave": '\U000000C8', - "Euml": '\U000000CB', - "GT": '\U0000003E', - "Iacute": '\U000000CD', - "Icirc": '\U000000CE', - "Igrave": '\U000000CC', - "Iuml": '\U000000CF', - "LT": '\U0000003C', - "Ntilde": '\U000000D1', - "Oacute": '\U000000D3', - "Ocirc": '\U000000D4', - "Ograve": '\U000000D2', - "Oslash": '\U000000D8', - "Otilde": '\U000000D5', - "Ouml": '\U000000D6', - "QUOT": '\U00000022', - "REG": '\U000000AE', - "THORN": '\U000000DE', - "Uacute": '\U000000DA', - "Ucirc": '\U000000DB', - "Ugrave": '\U000000D9', - "Uuml": '\U000000DC', - "Yacute": '\U000000DD', - "aacute": '\U000000E1', - "acirc": '\U000000E2', - "acute": '\U000000B4', - "aelig": '\U000000E6', - "agrave": '\U000000E0', - "amp": '\U00000026', - "aring": '\U000000E5', - "atilde": '\U000000E3', - "auml": '\U000000E4', - "brvbar": '\U000000A6', - "ccedil": '\U000000E7', - "cedil": '\U000000B8', - "cent": '\U000000A2', - "copy": '\U000000A9', - "curren": '\U000000A4', - "deg": '\U000000B0', - "divide": '\U000000F7', - "eacute": '\U000000E9', - "ecirc": '\U000000EA', - "egrave": '\U000000E8', - "eth": '\U000000F0', - "euml": '\U000000EB', - "frac12": '\U000000BD', - "frac14": '\U000000BC', - "frac34": '\U000000BE', - "gt": '\U0000003E', - "iacute": '\U000000ED', - "icirc": '\U000000EE', - "iexcl": '\U000000A1', - "igrave": '\U000000EC', - "iquest": '\U000000BF', - "iuml": '\U000000EF', - "laquo": '\U000000AB', - "lt": '\U0000003C', - "macr": '\U000000AF', - "micro": '\U000000B5', - "middot": '\U000000B7', - "nbsp": '\U000000A0', - "not": '\U000000AC', - "ntilde": '\U000000F1', - "oacute": '\U000000F3', - "ocirc": '\U000000F4', - "ograve": '\U000000F2', - "ordf": '\U000000AA', - "ordm": '\U000000BA', - "oslash": '\U000000F8', - "otilde": '\U000000F5', - "ouml": '\U000000F6', - "para": '\U000000B6', - "plusmn": '\U000000B1', - "pound": '\U000000A3', - "quot": '\U00000022', - "raquo": '\U000000BB', - "reg": '\U000000AE', - "sect": '\U000000A7', - "shy": '\U000000AD', - "sup1": '\U000000B9', - "sup2": '\U000000B2', - "sup3": '\U000000B3', - "szlig": '\U000000DF', - "thorn": '\U000000FE', - "times": '\U000000D7', - "uacute": '\U000000FA', - "ucirc": '\U000000FB', - "ugrave": '\U000000F9', - "uml": '\U000000A8', - "uuml": '\U000000FC', - "yacute": '\U000000FD', - "yen": '\U000000A5', - "yuml": '\U000000FF', -} - -// HTML entities that are two unicode codepoints. -var entity2 = map[string][2]rune{ - // TODO(nigeltao): Handle replacements that are wider than their names. - // "nLt;": {'\u226A', '\u20D2'}, - // "nGt;": {'\u226B', '\u20D2'}, - "NotEqualTilde;": {'\u2242', '\u0338'}, - "NotGreaterFullEqual;": {'\u2267', '\u0338'}, - "NotGreaterGreater;": {'\u226B', '\u0338'}, - "NotGreaterSlantEqual;": {'\u2A7E', '\u0338'}, - "NotHumpDownHump;": {'\u224E', '\u0338'}, - "NotHumpEqual;": {'\u224F', '\u0338'}, - "NotLeftTriangleBar;": {'\u29CF', '\u0338'}, - "NotLessLess;": {'\u226A', '\u0338'}, - "NotLessSlantEqual;": {'\u2A7D', '\u0338'}, - "NotNestedGreaterGreater;": {'\u2AA2', '\u0338'}, - "NotNestedLessLess;": {'\u2AA1', '\u0338'}, - "NotPrecedesEqual;": {'\u2AAF', '\u0338'}, - "NotRightTriangleBar;": {'\u29D0', '\u0338'}, - "NotSquareSubset;": {'\u228F', '\u0338'}, - "NotSquareSuperset;": {'\u2290', '\u0338'}, - "NotSubset;": {'\u2282', '\u20D2'}, - "NotSucceedsEqual;": {'\u2AB0', '\u0338'}, - "NotSucceedsTilde;": {'\u227F', '\u0338'}, - "NotSuperset;": {'\u2283', '\u20D2'}, - "ThickSpace;": {'\u205F', '\u200A'}, - "acE;": {'\u223E', '\u0333'}, - "bne;": {'\u003D', '\u20E5'}, - "bnequiv;": {'\u2261', '\u20E5'}, - "caps;": {'\u2229', '\uFE00'}, - "cups;": {'\u222A', '\uFE00'}, - "fjlig;": {'\u0066', '\u006A'}, - "gesl;": {'\u22DB', '\uFE00'}, - "gvertneqq;": {'\u2269', '\uFE00'}, - "gvnE;": {'\u2269', '\uFE00'}, - "lates;": {'\u2AAD', '\uFE00'}, - "lesg;": {'\u22DA', '\uFE00'}, - "lvertneqq;": {'\u2268', '\uFE00'}, - "lvnE;": {'\u2268', '\uFE00'}, - "nGg;": {'\u22D9', '\u0338'}, - "nGtv;": {'\u226B', '\u0338'}, - "nLl;": {'\u22D8', '\u0338'}, - "nLtv;": {'\u226A', '\u0338'}, - "nang;": {'\u2220', '\u20D2'}, - "napE;": {'\u2A70', '\u0338'}, - "napid;": {'\u224B', '\u0338'}, - "nbump;": {'\u224E', '\u0338'}, - "nbumpe;": {'\u224F', '\u0338'}, - "ncongdot;": {'\u2A6D', '\u0338'}, - "nedot;": {'\u2250', '\u0338'}, - "nesim;": {'\u2242', '\u0338'}, - "ngE;": {'\u2267', '\u0338'}, - "ngeqq;": {'\u2267', '\u0338'}, - "ngeqslant;": {'\u2A7E', '\u0338'}, - "nges;": {'\u2A7E', '\u0338'}, - "nlE;": {'\u2266', '\u0338'}, - "nleqq;": {'\u2266', '\u0338'}, - "nleqslant;": {'\u2A7D', '\u0338'}, - "nles;": {'\u2A7D', '\u0338'}, - "notinE;": {'\u22F9', '\u0338'}, - "notindot;": {'\u22F5', '\u0338'}, - "nparsl;": {'\u2AFD', '\u20E5'}, - "npart;": {'\u2202', '\u0338'}, - "npre;": {'\u2AAF', '\u0338'}, - "npreceq;": {'\u2AAF', '\u0338'}, - "nrarrc;": {'\u2933', '\u0338'}, - "nrarrw;": {'\u219D', '\u0338'}, - "nsce;": {'\u2AB0', '\u0338'}, - "nsubE;": {'\u2AC5', '\u0338'}, - "nsubset;": {'\u2282', '\u20D2'}, - "nsubseteqq;": {'\u2AC5', '\u0338'}, - "nsucceq;": {'\u2AB0', '\u0338'}, - "nsupE;": {'\u2AC6', '\u0338'}, - "nsupset;": {'\u2283', '\u20D2'}, - "nsupseteqq;": {'\u2AC6', '\u0338'}, - "nvap;": {'\u224D', '\u20D2'}, - "nvge;": {'\u2265', '\u20D2'}, - "nvgt;": {'\u003E', '\u20D2'}, - "nvle;": {'\u2264', '\u20D2'}, - "nvlt;": {'\u003C', '\u20D2'}, - "nvltrie;": {'\u22B4', '\u20D2'}, - "nvrtrie;": {'\u22B5', '\u20D2'}, - "nvsim;": {'\u223C', '\u20D2'}, - "race;": {'\u223D', '\u0331'}, - "smtes;": {'\u2AAC', '\uFE00'}, - "sqcaps;": {'\u2293', '\uFE00'}, - "sqcups;": {'\u2294', '\uFE00'}, - "varsubsetneq;": {'\u228A', '\uFE00'}, - "varsubsetneqq;": {'\u2ACB', '\uFE00'}, - "varsupsetneq;": {'\u228B', '\uFE00'}, - "varsupsetneqq;": {'\u2ACC', '\uFE00'}, - "vnsub;": {'\u2282', '\u20D2'}, - "vnsup;": {'\u2283', '\u20D2'}, - "vsubnE;": {'\u2ACB', '\uFE00'}, - "vsubne;": {'\u228A', '\uFE00'}, - "vsupnE;": {'\u2ACC', '\uFE00'}, - "vsupne;": {'\u228B', '\uFE00'}, -} diff --git a/vendor/github.com/levigross/exp-html/escape.go b/vendor/github.com/levigross/exp-html/escape.go deleted file mode 100644 index 8f62a8c..0000000 --- a/vendor/github.com/levigross/exp-html/escape.go +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "strings" - "unicode/utf8" -) - -// These replacements permit compatibility with old numeric entities that -// assumed Windows-1252 encoding. -// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference -var replacementTable = [...]rune{ - '\u20AC', // First entry is what 0x80 should be replaced with. - '\u0081', - '\u201A', - '\u0192', - '\u201E', - '\u2026', - '\u2020', - '\u2021', - '\u02C6', - '\u2030', - '\u0160', - '\u2039', - '\u0152', - '\u008D', - '\u017D', - '\u008F', - '\u0090', - '\u2018', - '\u2019', - '\u201C', - '\u201D', - '\u2022', - '\u2013', - '\u2014', - '\u02DC', - '\u2122', - '\u0161', - '\u203A', - '\u0153', - '\u009D', - '\u017E', - '\u0178', // Last entry is 0x9F. - // 0x00->'\uFFFD' is handled programmatically. - // 0x0D->'\u000D' is a no-op. -} - -// unescapeEntity reads an entity like "<" from b[src:] and writes the -// corresponding "<" to b[dst:], returning the incremented dst and src cursors. -// Precondition: b[src] == '&' && dst <= src. -// attribute should be true if parsing an attribute value. -func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) { - // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference - - // i starts at 1 because we already know that s[0] == '&'. - i, s := 1, b[src:] - - if len(s) <= 1 { - b[dst] = b[src] - return dst + 1, src + 1 - } - - if s[i] == '#' { - if len(s) <= 3 { // We need to have at least "&#.". - b[dst] = b[src] - return dst + 1, src + 1 - } - i++ - c := s[i] - hex := false - if c == 'x' || c == 'X' { - hex = true - i++ - } - - x := '\x00' - for i < len(s) { - c = s[i] - i++ - if hex { - if '0' <= c && c <= '9' { - x = 16*x + rune(c) - '0' - continue - } else if 'a' <= c && c <= 'f' { - x = 16*x + rune(c) - 'a' + 10 - continue - } else if 'A' <= c && c <= 'F' { - x = 16*x + rune(c) - 'A' + 10 - continue - } - } else if '0' <= c && c <= '9' { - x = 10*x + rune(c) - '0' - continue - } - if c != ';' { - i-- - } - break - } - - if i <= 3 { // No characters matched. - b[dst] = b[src] - return dst + 1, src + 1 - } - - if 0x80 <= x && x <= 0x9F { - // Replace characters from Windows-1252 with UTF-8 equivalents. - x = replacementTable[x-0x80] - } else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF { - // Replace invalid characters with the replacement character. - x = '\uFFFD' - } - - return dst + utf8.EncodeRune(b[dst:], x), src + i - } - - // Consume the maximum number of characters possible, with the - // consumed characters matching one of the named references. - - for i < len(s) { - c := s[i] - i++ - // Lower-cased characters are more common in entities, so we check for them first. - if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { - continue - } - if c != ';' { - i-- - } - break - } - - entityName := string(s[1:i]) - if entityName == "" { - // No-op. - } else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' { - // No-op. - } else if x := entity[entityName]; x != 0 { - return dst + utf8.EncodeRune(b[dst:], x), src + i - } else if x := entity2[entityName]; x[0] != 0 { - dst1 := dst + utf8.EncodeRune(b[dst:], x[0]) - return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i - } else if !attribute { - maxLen := len(entityName) - 1 - if maxLen > longestEntityWithoutSemicolon { - maxLen = longestEntityWithoutSemicolon - } - for j := maxLen; j > 1; j-- { - if x := entity[entityName[:j]]; x != 0 { - return dst + utf8.EncodeRune(b[dst:], x), src + j + 1 - } - } - } - - dst1, src1 = dst+i, src+i - copy(b[dst:dst1], b[src:src1]) - return dst1, src1 -} - -// unescape unescapes b's entities in-place, so that "a<b" becomes "a"` - -func escape(w writer, s string) error { - i := strings.IndexAny(s, escapedChars) - for i != -1 { - if _, err := w.WriteString(s[:i]); err != nil { - return err - } - var esc string - switch s[i] { - case '&': - esc = "&" - case '\'': - esc = "'" - case '<': - esc = "<" - case '>': - esc = ">" - case '"': - esc = """ - default: - panic("unrecognized escape character") - } - s = s[i+1:] - if _, err := w.WriteString(esc); err != nil { - return err - } - i = strings.IndexAny(s, escapedChars) - } - _, err := w.WriteString(s) - return err -} - -// EscapeString escapes special characters like "<" to become "<". It -// escapes only five such characters: amp, apos, lt, gt and quot. -// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't -// always true. -func EscapeString(s string) string { - if strings.IndexAny(s, escapedChars) == -1 { - return s - } - var buf bytes.Buffer - escape(&buf, s) - return buf.String() -} - -// UnescapeString unescapes entities like "<" to become "<". It unescapes a -// larger range of entities than EscapeString escapes. For example, "á" -// unescapes to "á", as does "á" and "&xE1;". -// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't -// always true. -func UnescapeString(s string) string { - for _, c := range s { - if c == '&' { - return string(unescape([]byte(s))) - } - } - return s -} diff --git a/vendor/github.com/levigross/exp-html/foreign.go b/vendor/github.com/levigross/exp-html/foreign.go deleted file mode 100644 index 3ba81ce..0000000 --- a/vendor/github.com/levigross/exp-html/foreign.go +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "strings" -) - -func adjustForeignAttributes(aa []Attribute) { - for i, a := range aa { - if a.Key == "" || a.Key[0] != 'x' { - continue - } - switch a.Key { - case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show", - "xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink": - j := strings.Index(a.Key, ":") - aa[i].Namespace = a.Key[:j] - aa[i].Key = a.Key[j+1:] - } - } -} - -func htmlIntegrationPoint(n *Node) bool { - if n.Type != ElementNode { - return false - } - switch n.Namespace { - case "math": - // TODO: annotation-xml elements whose start tags have "text/html" or - // "application/xhtml+xml" encodings. - case "svg": - switch n.Data { - case "desc", "foreignObject", "title": - return true - } - } - return false -} - -// Section 12.2.5.5. -var breakout = map[string]bool{ - "b": true, - "big": true, - "blockquote": true, - "body": true, - "br": true, - "center": true, - "code": true, - "dd": true, - "div": true, - "dl": true, - "dt": true, - "em": true, - "embed": true, - "font": true, - "h1": true, - "h2": true, - "h3": true, - "h4": true, - "h5": true, - "h6": true, - "head": true, - "hr": true, - "i": true, - "img": true, - "li": true, - "listing": true, - "menu": true, - "meta": true, - "nobr": true, - "ol": true, - "p": true, - "pre": true, - "ruby": true, - "s": true, - "small": true, - "span": true, - "strong": true, - "strike": true, - "sub": true, - "sup": true, - "table": true, - "tt": true, - "u": true, - "ul": true, - "var": true, -} - -// Section 12.2.5.5. -var svgTagNameAdjustments = map[string]string{ - "altglyph": "altGlyph", - "altglyphdef": "altGlyphDef", - "altglyphitem": "altGlyphItem", - "animatecolor": "animateColor", - "animatemotion": "animateMotion", - "animatetransform": "animateTransform", - "clippath": "clipPath", - "feblend": "feBlend", - "fecolormatrix": "feColorMatrix", - "fecomponenttransfer": "feComponentTransfer", - "fecomposite": "feComposite", - "feconvolvematrix": "feConvolveMatrix", - "fediffuselighting": "feDiffuseLighting", - "fedisplacementmap": "feDisplacementMap", - "fedistantlight": "feDistantLight", - "feflood": "feFlood", - "fefunca": "feFuncA", - "fefuncb": "feFuncB", - "fefuncg": "feFuncG", - "fefuncr": "feFuncR", - "fegaussianblur": "feGaussianBlur", - "feimage": "feImage", - "femerge": "feMerge", - "femergenode": "feMergeNode", - "femorphology": "feMorphology", - "feoffset": "feOffset", - "fepointlight": "fePointLight", - "fespecularlighting": "feSpecularLighting", - "fespotlight": "feSpotLight", - "fetile": "feTile", - "feturbulence": "feTurbulence", - "foreignobject": "foreignObject", - "glyphref": "glyphRef", - "lineargradient": "linearGradient", - "radialgradient": "radialGradient", - "textpath": "textPath", -} - -// TODO: add look-up tables for MathML and SVG attribute adjustments. diff --git a/vendor/github.com/levigross/exp-html/node.go b/vendor/github.com/levigross/exp-html/node.go deleted file mode 100644 index c105a4e..0000000 --- a/vendor/github.com/levigross/exp-html/node.go +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -// A NodeType is the type of a Node. -type NodeType int - -const ( - ErrorNode NodeType = iota - TextNode - DocumentNode - ElementNode - CommentNode - DoctypeNode - scopeMarkerNode -) - -// Section 12.2.3.3 says "scope markers are inserted when entering applet -// elements, buttons, object elements, marquees, table cells, and table -// captions, and are used to prevent formatting from 'leaking'". -var scopeMarker = Node{Type: scopeMarkerNode} - -// A Node consists of a NodeType and some Data (tag name for element nodes, -// content for text) and are part of a tree of Nodes. Element nodes may also -// have a Namespace and contain a slice of Attributes. Data is unescaped, so -// that it looks like "a 0 { - return (*s)[i-1] - } - return nil -} - -// index returns the index of the top-most occurrence of n in the stack, or -1 -// if n is not present. -func (s *nodeStack) index(n *Node) int { - for i := len(*s) - 1; i >= 0; i-- { - if (*s)[i] == n { - return i - } - } - return -1 -} - -// insert inserts a node at the given index. -func (s *nodeStack) insert(i int, n *Node) { - (*s) = append(*s, nil) - copy((*s)[i+1:], (*s)[i:]) - (*s)[i] = n -} - -// remove removes a node from the stack. It is a no-op if n is not present. -func (s *nodeStack) remove(n *Node) { - i := s.index(n) - if i == -1 { - return - } - copy((*s)[i:], (*s)[i+1:]) - j := len(*s) - 1 - (*s)[j] = nil - *s = (*s)[:j] -} - -// TODO(nigeltao): forTag no longer used. Should it be deleted? - -// forTag returns the top-most element node with the given tag. -func (s *nodeStack) forTag(tag string) *Node { - for i := len(*s) - 1; i >= 0; i-- { - n := (*s)[i] - if n.Type == ElementNode && n.Data == tag { - return n - } - } - return nil -} diff --git a/vendor/github.com/levigross/exp-html/parse.go b/vendor/github.com/levigross/exp-html/parse.go deleted file mode 100644 index 04f4ae7..0000000 --- a/vendor/github.com/levigross/exp-html/parse.go +++ /dev/null @@ -1,1869 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "io" - "strings" -) - -// A parser implements the HTML5 parsing algorithm: -// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tree-construction -type parser struct { - // tokenizer provides the tokens for the parser. - tokenizer *Tokenizer - // tok is the most recently read token. - tok Token - // Self-closing tags like
    are re-interpreted as a two-token sequence: - //
    followed by . hasSelfClosingToken is true if we have just read - // the synthetic start tag and the next one due is the matching end tag. - hasSelfClosingToken bool - // doc is the document root element. - doc *Node - // The stack of open elements (section 12.2.3.2) and active formatting - // elements (section 12.2.3.3). - oe, afe nodeStack - // Element pointers (section 12.2.3.4). - head, form *Node - // Other parsing state flags (section 12.2.3.5). - scripting, framesetOK bool - // im is the current insertion mode. - im insertionMode - // originalIM is the insertion mode to go back to after completing a text - // or inTableText insertion mode. - originalIM insertionMode - // fosterParenting is whether new elements should be inserted according to - // the foster parenting rules (section 12.2.5.3). - fosterParenting bool - // quirks is whether the parser is operating in "quirks mode." - quirks bool - // context is the context element when parsing an HTML fragment - // (section 12.4). - context *Node -} - -func (p *parser) top() *Node { - if n := p.oe.top(); n != nil { - return n - } - return p.doc -} - -// Stop tags for use in popUntil. These come from section 12.2.3.2. -var ( - defaultScopeStopTags = map[string][]string{ - "": {"applet", "caption", "html", "table", "td", "th", "marquee", "object"}, - "math": {"annotation-xml", "mi", "mn", "mo", "ms", "mtext"}, - "svg": {"desc", "foreignObject", "title"}, - } -) - -type scope int - -const ( - defaultScope scope = iota - listItemScope - buttonScope - tableScope - tableRowScope -) - -// popUntil pops the stack of open elements at the highest element whose tag -// is in matchTags, provided there is no higher element in the scope's stop -// tags (as defined in section 12.2.3.2). It returns whether or not there was -// such an element. If there was not, popUntil leaves the stack unchanged. -// -// For example, the set of stop tags for table scope is: "html", "table". If -// the stack was: -// ["html", "body", "font", "table", "b", "i", "u"] -// then popUntil(tableScope, "font") would return false, but -// popUntil(tableScope, "i") would return true and the stack would become: -// ["html", "body", "font", "table", "b"] -// -// If an element's tag is in both the stop tags and matchTags, then the stack -// will be popped and the function returns true (provided, of course, there was -// no higher element in the stack that was also in the stop tags). For example, -// popUntil(tableScope, "table") returns true and leaves: -// ["html", "body", "font"] -func (p *parser) popUntil(s scope, matchTags ...string) bool { - if i := p.indexOfElementInScope(s, matchTags...); i != -1 { - p.oe = p.oe[:i] - return true - } - return false -} - -// indexOfElementInScope returns the index in p.oe of the highest element whose -// tag is in matchTags that is in scope. If no matching element is in scope, it -// returns -1. -func (p *parser) indexOfElementInScope(s scope, matchTags ...string) int { - for i := len(p.oe) - 1; i >= 0; i-- { - tag := p.oe[i].Data - if p.oe[i].Namespace == "" { - for _, t := range matchTags { - if t == tag { - return i - } - } - switch s { - case defaultScope: - // No-op. - case listItemScope: - if tag == "ol" || tag == "ul" { - return -1 - } - case buttonScope: - if tag == "button" { - return -1 - } - case tableScope: - if tag == "html" || tag == "table" { - return -1 - } - default: - panic("unreachable") - } - } - switch s { - case defaultScope, listItemScope, buttonScope: - for _, t := range defaultScopeStopTags[p.oe[i].Namespace] { - if t == tag { - return -1 - } - } - } - } - return -1 -} - -// elementInScope is like popUntil, except that it doesn't modify the stack of -// open elements. -func (p *parser) elementInScope(s scope, matchTags ...string) bool { - return p.indexOfElementInScope(s, matchTags...) != -1 -} - -// clearStackToContext pops elements off the stack of open elements until a -// scope-defined element is found. -func (p *parser) clearStackToContext(s scope) { - for i := len(p.oe) - 1; i >= 0; i-- { - tag := p.oe[i].Data - switch s { - case tableScope: - if tag == "html" || tag == "table" { - p.oe = p.oe[:i+1] - return - } - case tableRowScope: - if tag == "html" || tag == "tr" { - p.oe = p.oe[:i+1] - return - } - default: - panic("unreachable") - } - } -} - -// addChild adds a child node n to the top element, and pushes n onto the stack -// of open elements if it is an element node. -func (p *parser) addChild(n *Node) { - if p.fosterParenting { - p.fosterParent(n) - } else { - p.top().Add(n) - } - - if n.Type == ElementNode { - p.oe = append(p.oe, n) - } -} - -// fosterParent adds a child node according to the foster parenting rules. -// Section 12.2.5.3, "foster parenting". -func (p *parser) fosterParent(n *Node) { - p.fosterParenting = false - var table, parent *Node - var i int - for i = len(p.oe) - 1; i >= 0; i-- { - if p.oe[i].Data == "table" { - table = p.oe[i] - break - } - } - - if table == nil { - // The foster parent is the html element. - parent = p.oe[0] - } else { - parent = table.Parent - } - if parent == nil { - parent = p.oe[i-1] - } - - var child *Node - for i, child = range parent.Child { - if child == table { - break - } - } - - if i > 0 && parent.Child[i-1].Type == TextNode && n.Type == TextNode { - parent.Child[i-1].Data += n.Data - return - } - - if i == len(parent.Child) { - parent.Add(n) - } else { - // Insert n into parent.Child at index i. - parent.Child = append(parent.Child[:i+1], parent.Child[i:]...) - parent.Child[i] = n - n.Parent = parent - } -} - -// addText adds text to the preceding node if it is a text node, or else it -// calls addChild with a new text node. -func (p *parser) addText(text string) { - // TODO: distinguish whitespace text from others. - t := p.top() - if i := len(t.Child); i > 0 && t.Child[i-1].Type == TextNode { - t.Child[i-1].Data += text - return - } - p.addChild(&Node{ - Type: TextNode, - Data: text, - }) -} - -// addElement calls addChild with an element node. -func (p *parser) addElement(tag string, attr []Attribute) { - p.addChild(&Node{ - Type: ElementNode, - Data: tag, - Attr: attr, - }) -} - -// Section 12.2.3.3. -func (p *parser) addFormattingElement(tag string, attr []Attribute) { - p.addElement(tag, attr) - p.afe = append(p.afe, p.top()) - // TODO. -} - -// Section 12.2.3.3. -func (p *parser) clearActiveFormattingElements() { - for { - n := p.afe.pop() - if len(p.afe) == 0 || n.Type == scopeMarkerNode { - return - } - } -} - -// Section 12.2.3.3. -func (p *parser) reconstructActiveFormattingElements() { - n := p.afe.top() - if n == nil { - return - } - if n.Type == scopeMarkerNode || p.oe.index(n) != -1 { - return - } - i := len(p.afe) - 1 - for n.Type != scopeMarkerNode && p.oe.index(n) == -1 { - if i == 0 { - i = -1 - break - } - i-- - n = p.afe[i] - } - for { - i++ - clone := p.afe[i].clone() - p.addChild(clone) - p.afe[i] = clone - if i == len(p.afe)-1 { - break - } - } -} - -// read reads the next token. This is usually from the tokenizer, but it may -// be the synthesized end tag implied by a self-closing tag. -func (p *parser) read() error { - if p.hasSelfClosingToken { - p.hasSelfClosingToken = false - p.tok.Type = EndTagToken - p.tok.Attr = nil - return nil - } - p.tokenizer.Next() - p.tok = p.tokenizer.Token() - switch p.tok.Type { - case ErrorToken: - return p.tokenizer.Err() - case SelfClosingTagToken: - p.hasSelfClosingToken = true - p.tok.Type = StartTagToken - } - return nil -} - -// Section 12.2.4. -func (p *parser) acknowledgeSelfClosingTag() { - p.hasSelfClosingToken = false -} - -// An insertion mode (section 12.2.3.1) is the state transition function from -// a particular state in the HTML5 parser's state machine. It updates the -// parser's fields depending on parser.tok (where ErrorToken means EOF). -// It returns whether the token was consumed. -type insertionMode func(*parser) bool - -// setOriginalIM sets the insertion mode to return to after completing a text or -// inTableText insertion mode. -// Section 12.2.3.1, "using the rules for". -func (p *parser) setOriginalIM() { - if p.originalIM != nil { - panic("html: bad parser state: originalIM was set twice") - } - p.originalIM = p.im -} - -// Section 12.2.3.1, "reset the insertion mode". -func (p *parser) resetInsertionMode() { - for i := len(p.oe) - 1; i >= 0; i-- { - n := p.oe[i] - if i == 0 && p.context != nil { - n = p.context - } - - switch n.Data { - case "select": - p.im = inSelectIM - case "td", "th": - p.im = inCellIM - case "tr": - p.im = inRowIM - case "tbody", "thead", "tfoot": - p.im = inTableBodyIM - case "caption": - p.im = inCaptionIM - case "colgroup": - p.im = inColumnGroupIM - case "table": - p.im = inTableIM - case "head": - p.im = inBodyIM - case "body": - p.im = inBodyIM - case "frameset": - p.im = inFramesetIM - case "html": - p.im = beforeHeadIM - default: - continue - } - return - } - p.im = inBodyIM -} - -const whitespace = " \t\r\n\f" - -// Section 12.2.5.4.1. -func initialIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - case CommentToken: - p.doc.Add(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - n, quirks := parseDoctype(p.tok.Data) - p.doc.Add(n) - p.quirks = quirks - p.im = beforeHTMLIM - return true - } - p.quirks = true - p.im = beforeHTMLIM - return false -} - -// Section 12.2.5.4.2. -func beforeHTMLIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - case StartTagToken: - if p.tok.Data == "html" { - p.addElement(p.tok.Data, p.tok.Attr) - p.im = beforeHeadIM - return true - } - case EndTagToken: - switch p.tok.Data { - case "head", "body", "html", "br": - // Drop down to creating an implied tag. - default: - // Ignore the token. - return true - } - case CommentToken: - p.doc.Add(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - // Create an implied tag. - p.addElement("html", nil) - p.im = beforeHeadIM - return false -} - -// Section 12.2.5.4.3. -func beforeHeadIM(p *parser) bool { - var ( - add bool - attr []Attribute - implied bool - ) - switch p.tok.Type { - case ErrorToken: - implied = true - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - implied = true - case StartTagToken: - switch p.tok.Data { - case "head": - add = true - attr = p.tok.Attr - case "html": - return inBodyIM(p) - default: - implied = true - } - case EndTagToken: - switch p.tok.Data { - case "head", "body", "html", "br": - implied = true - default: - // Ignore the token. - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - if add || implied { - p.addElement("head", attr) - p.head = p.top() - } - p.im = inHeadIM - return !implied -} - -// Section 12.2.5.4.4. -func inHeadIM(p *parser) bool { - var ( - pop bool - implied bool - ) - switch p.tok.Type { - case ErrorToken: - implied = true - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) < len(p.tok.Data) { - // Add the initial whitespace to the current node. - p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) - if s == "" { - return true - } - p.tok.Data = s - } - implied = true - case StartTagToken: - switch p.tok.Data { - case "html": - return inBodyIM(p) - case "base", "basefont", "bgsound", "command", "link", "meta": - p.addElement(p.tok.Data, p.tok.Attr) - p.oe.pop() - p.acknowledgeSelfClosingTag() - case "script", "title", "noscript", "noframes", "style": - p.addElement(p.tok.Data, p.tok.Attr) - p.setOriginalIM() - p.im = textIM - return true - case "head": - // Ignore the token. - return true - default: - implied = true - } - case EndTagToken: - switch p.tok.Data { - case "head": - pop = true - case "body", "html", "br": - implied = true - default: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - if pop || implied { - n := p.oe.pop() - if n.Data != "head" { - panic("html: bad parser state: element not found, in the in-head insertion mode") - } - p.im = afterHeadIM - return !implied - } - return true -} - -// Section 12.2.5.4.6. -func afterHeadIM(p *parser) bool { - var ( - add bool - attr []Attribute - framesetOK bool - implied bool - ) - switch p.tok.Type { - case ErrorToken: - implied = true - framesetOK = true - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) < len(p.tok.Data) { - // Add the initial whitespace to the current node. - p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) - if s == "" { - return true - } - p.tok.Data = s - } - implied = true - framesetOK = true - case StartTagToken: - switch p.tok.Data { - case "html": - // TODO. - case "body": - add = true - attr = p.tok.Attr - framesetOK = false - case "frameset": - p.addElement(p.tok.Data, p.tok.Attr) - p.im = inFramesetIM - return true - case "base", "basefont", "bgsound", "link", "meta", "noframes", "script", "style", "title": - p.oe = append(p.oe, p.head) - defer p.oe.pop() - return inHeadIM(p) - case "head": - // Ignore the token. - return true - default: - implied = true - framesetOK = true - } - case EndTagToken: - switch p.tok.Data { - case "body", "html", "br": - implied = true - framesetOK = true - default: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - if add || implied { - p.addElement("body", attr) - p.framesetOK = framesetOK - } - p.im = inBodyIM - return !implied -} - -// copyAttributes copies attributes of src not found on dst to dst. -func copyAttributes(dst *Node, src Token) { - if len(src.Attr) == 0 { - return - } - attr := map[string]string{} - for _, a := range dst.Attr { - attr[a.Key] = a.Val - } - for _, a := range src.Attr { - if _, ok := attr[a.Key]; !ok { - dst.Attr = append(dst.Attr, a) - attr[a.Key] = a.Val - } - } -} - -// Section 12.2.5.4.7. -func inBodyIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - switch n := p.oe.top(); n.Data { - case "pre", "listing", "textarea": - if len(n.Child) == 0 { - // Ignore a newline at the start of a
     block.
    -				d := p.tok.Data
    -				if d != "" && d[0] == '\r' {
    -					d = d[1:]
    -				}
    -				if d != "" && d[0] == '\n' {
    -					d = d[1:]
    -				}
    -				if d == "" {
    -					return true
    -				}
    -				p.tok.Data = d
    -			}
    -		}
    -		p.reconstructActiveFormattingElements()
    -		p.addText(p.tok.Data)
    -		p.framesetOK = false
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			copyAttributes(p.oe[0], p.tok)
    -		case "address", "article", "aside", "blockquote", "center", "details", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "menu", "nav", "ol", "p", "section", "summary", "ul":
    -			p.popUntil(buttonScope, "p")
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "h1", "h2", "h3", "h4", "h5", "h6":
    -			p.popUntil(buttonScope, "p")
    -			switch n := p.top(); n.Data {
    -			case "h1", "h2", "h3", "h4", "h5", "h6":
    -				p.oe.pop()
    -			}
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "a":
    -			for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {
    -				if n := p.afe[i]; n.Type == ElementNode && n.Data == "a" {
    -					p.inBodyEndTagFormatting("a")
    -					p.oe.remove(n)
    -					p.afe.remove(n)
    -					break
    -				}
    -			}
    -			p.reconstructActiveFormattingElements()
    -			p.addFormattingElement(p.tok.Data, p.tok.Attr)
    -		case "b", "big", "code", "em", "font", "i", "s", "small", "strike", "strong", "tt", "u":
    -			p.reconstructActiveFormattingElements()
    -			p.addFormattingElement(p.tok.Data, p.tok.Attr)
    -		case "nobr":
    -			p.reconstructActiveFormattingElements()
    -			if p.elementInScope(defaultScope, "nobr") {
    -				p.inBodyEndTagFormatting("nobr")
    -				p.reconstructActiveFormattingElements()
    -			}
    -			p.addFormattingElement(p.tok.Data, p.tok.Attr)
    -		case "applet", "marquee", "object":
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.afe = append(p.afe, &scopeMarker)
    -			p.framesetOK = false
    -		case "area", "br", "embed", "img", "input", "keygen", "wbr":
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.oe.pop()
    -			p.acknowledgeSelfClosingTag()
    -			p.framesetOK = false
    -		case "table":
    -			if !p.quirks {
    -				p.popUntil(buttonScope, "p")
    -			}
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.framesetOK = false
    -			p.im = inTableIM
    -			return true
    -		case "hr":
    -			p.popUntil(buttonScope, "p")
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.oe.pop()
    -			p.acknowledgeSelfClosingTag()
    -			p.framesetOK = false
    -		case "select":
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.framesetOK = false
    -			p.im = inSelectIM
    -			return true
    -		case "form":
    -			if p.form == nil {
    -				p.popUntil(buttonScope, "p")
    -				p.addElement(p.tok.Data, p.tok.Attr)
    -				p.form = p.top()
    -			}
    -		case "li":
    -			p.framesetOK = false
    -			for i := len(p.oe) - 1; i >= 0; i-- {
    -				node := p.oe[i]
    -				switch node.Data {
    -				case "li":
    -					p.popUntil(listItemScope, "li")
    -				case "address", "div", "p":
    -					continue
    -				default:
    -					if !isSpecialElement(node) {
    -						continue
    -					}
    -				}
    -				break
    -			}
    -			p.popUntil(buttonScope, "p")
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "dd", "dt":
    -			p.framesetOK = false
    -			for i := len(p.oe) - 1; i >= 0; i-- {
    -				node := p.oe[i]
    -				switch node.Data {
    -				case "dd", "dt":
    -					p.oe = p.oe[:i]
    -				case "address", "div", "p":
    -					continue
    -				default:
    -					if !isSpecialElement(node) {
    -						continue
    -					}
    -				}
    -				break
    -			}
    -			p.popUntil(buttonScope, "p")
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "plaintext":
    -			p.popUntil(buttonScope, "p")
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "button":
    -			p.popUntil(defaultScope, "button")
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.framesetOK = false
    -		case "optgroup", "option":
    -			if p.top().Data == "option" {
    -				p.oe.pop()
    -			}
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "body":
    -			if len(p.oe) >= 2 {
    -				body := p.oe[1]
    -				if body.Type == ElementNode && body.Data == "body" {
    -					p.framesetOK = false
    -					copyAttributes(body, p.tok)
    -				}
    -			}
    -		case "frameset":
    -			if !p.framesetOK || len(p.oe) < 2 || p.oe[1].Data != "body" {
    -				// Ignore the token.
    -				return true
    -			}
    -			body := p.oe[1]
    -			if body.Parent != nil {
    -				body.Parent.Remove(body)
    -			}
    -			p.oe = p.oe[:1]
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.im = inFramesetIM
    -			return true
    -		case "base", "basefont", "bgsound", "command", "link", "meta", "noframes", "script", "style", "title":
    -			return inHeadIM(p)
    -		case "image":
    -			p.tok.Data = "img"
    -			return false
    -		case "isindex":
    -			if p.form != nil {
    -				// Ignore the token.
    -				return true
    -			}
    -			action := ""
    -			prompt := "This is a searchable index. Enter search keywords: "
    -			attr := []Attribute{{Key: "name", Val: "isindex"}}
    -			for _, a := range p.tok.Attr {
    -				switch a.Key {
    -				case "action":
    -					action = a.Val
    -				case "name":
    -					// Ignore the attribute.
    -				case "prompt":
    -					prompt = a.Val
    -				default:
    -					attr = append(attr, a)
    -				}
    -			}
    -			p.acknowledgeSelfClosingTag()
    -			p.popUntil(buttonScope, "p")
    -			p.addElement("form", nil)
    -			p.form = p.top()
    -			if action != "" {
    -				p.form.Attr = []Attribute{{Key: "action", Val: action}}
    -			}
    -			p.addElement("hr", nil)
    -			p.oe.pop()
    -			p.addElement("label", nil)
    -			p.addText(prompt)
    -			p.addElement("input", attr)
    -			p.oe.pop()
    -			p.oe.pop()
    -			p.addElement("hr", nil)
    -			p.oe.pop()
    -			p.oe.pop()
    -			p.form = nil
    -		case "xmp":
    -			p.popUntil(buttonScope, "p")
    -			p.reconstructActiveFormattingElements()
    -			p.framesetOK = false
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "math", "svg":
    -			p.reconstructActiveFormattingElements()
    -			if p.tok.Data == "math" {
    -				// TODO: adjust MathML attributes.
    -			} else {
    -				// TODO: adjust SVG attributes.
    -			}
    -			adjustForeignAttributes(p.tok.Attr)
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.top().Namespace = p.tok.Data
    -			return true
    -		case "caption", "col", "colgroup", "frame", "head", "tbody", "td", "tfoot", "th", "thead", "tr":
    -			// Ignore the token.
    -		default:
    -			// TODO.
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "body":
    -			// TODO: autoclose the stack of open elements.
    -			p.im = afterBodyIM
    -			return true
    -		case "p":
    -			if !p.elementInScope(buttonScope, "p") {
    -				p.addElement("p", nil)
    -			}
    -			p.popUntil(buttonScope, "p")
    -		case "a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u":
    -			p.inBodyEndTagFormatting(p.tok.Data)
    -		case "address", "article", "aside", "blockquote", "button", "center", "details", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "listing", "menu", "nav", "ol", "pre", "section", "summary", "ul":
    -			p.popUntil(defaultScope, p.tok.Data)
    -		case "applet", "marquee", "object":
    -			if p.popUntil(defaultScope, p.tok.Data) {
    -				p.clearActiveFormattingElements()
    -			}
    -		case "br":
    -			p.tok.Type = StartTagToken
    -			return false
    -		default:
    -			p.inBodyEndTagOther(p.tok.Data)
    -		}
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	}
    -
    -	return true
    -}
    -
    -func (p *parser) inBodyEndTagFormatting(tag string) {
    -	// This is the "adoption agency" algorithm, described at
    -	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#adoptionAgency
    -
    -	// TODO: this is a fairly literal line-by-line translation of that algorithm.
    -	// Once the code successfully parses the comprehensive test suite, we should
    -	// refactor this code to be more idiomatic.
    -
    -	// Steps 1-3. The outer loop.
    -	for i := 0; i < 8; i++ {
    -		// Step 4. Find the formatting element.
    -		var formattingElement *Node
    -		for j := len(p.afe) - 1; j >= 0; j-- {
    -			if p.afe[j].Type == scopeMarkerNode {
    -				break
    -			}
    -			if p.afe[j].Data == tag {
    -				formattingElement = p.afe[j]
    -				break
    -			}
    -		}
    -		if formattingElement == nil {
    -			p.inBodyEndTagOther(tag)
    -			return
    -		}
    -		feIndex := p.oe.index(formattingElement)
    -		if feIndex == -1 {
    -			p.afe.remove(formattingElement)
    -			return
    -		}
    -		if !p.elementInScope(defaultScope, tag) {
    -			// Ignore the tag.
    -			return
    -		}
    -
    -		// Steps 5-6. Find the furthest block.
    -		var furthestBlock *Node
    -		for _, e := range p.oe[feIndex:] {
    -			if isSpecialElement(e) {
    -				furthestBlock = e
    -				break
    -			}
    -		}
    -		if furthestBlock == nil {
    -			e := p.oe.pop()
    -			for e != formattingElement {
    -				e = p.oe.pop()
    -			}
    -			p.afe.remove(e)
    -			return
    -		}
    -
    -		// Steps 7-8. Find the common ancestor and bookmark node.
    -		commonAncestor := p.oe[feIndex-1]
    -		bookmark := p.afe.index(formattingElement)
    -
    -		// Step 9. The inner loop. Find the lastNode to reparent.
    -		lastNode := furthestBlock
    -		node := furthestBlock
    -		x := p.oe.index(node)
    -		// Steps 9.1-9.3.
    -		for j := 0; j < 3; j++ {
    -			// Step 9.4.
    -			x--
    -			node = p.oe[x]
    -			// Step 9.5.
    -			if p.afe.index(node) == -1 {
    -				p.oe.remove(node)
    -				continue
    -			}
    -			// Step 9.6.
    -			if node == formattingElement {
    -				break
    -			}
    -			// Step 9.7.
    -			clone := node.clone()
    -			p.afe[p.afe.index(node)] = clone
    -			p.oe[p.oe.index(node)] = clone
    -			node = clone
    -			// Step 9.8.
    -			if lastNode == furthestBlock {
    -				bookmark = p.afe.index(node) + 1
    -			}
    -			// Step 9.9.
    -			if lastNode.Parent != nil {
    -				lastNode.Parent.Remove(lastNode)
    -			}
    -			node.Add(lastNode)
    -			// Step 9.10.
    -			lastNode = node
    -		}
    -
    -		// Step 10. Reparent lastNode to the common ancestor,
    -		// or for misnested table nodes, to the foster parent.
    -		if lastNode.Parent != nil {
    -			lastNode.Parent.Remove(lastNode)
    -		}
    -		switch commonAncestor.Data {
    -		case "table", "tbody", "tfoot", "thead", "tr":
    -			p.fosterParent(lastNode)
    -		default:
    -			commonAncestor.Add(lastNode)
    -		}
    -
    -		// Steps 11-13. Reparent nodes from the furthest block's children
    -		// to a clone of the formatting element.
    -		clone := formattingElement.clone()
    -		reparentChildren(clone, furthestBlock)
    -		furthestBlock.Add(clone)
    -
    -		// Step 14. Fix up the list of active formatting elements.
    -		if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
    -			// Move the bookmark with the rest of the list.
    -			bookmark--
    -		}
    -		p.afe.remove(formattingElement)
    -		p.afe.insert(bookmark, clone)
    -
    -		// Step 15. Fix up the stack of open elements.
    -		p.oe.remove(formattingElement)
    -		p.oe.insert(p.oe.index(furthestBlock)+1, clone)
    -	}
    -}
    -
    -// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM.
    -func (p *parser) inBodyEndTagOther(tag string) {
    -	for i := len(p.oe) - 1; i >= 0; i-- {
    -		if p.oe[i].Data == tag {
    -			p.oe = p.oe[:i]
    -			break
    -		}
    -		if isSpecialElement(p.oe[i]) {
    -			break
    -		}
    -	}
    -}
    -
    -// Section 12.2.5.4.8.
    -func textIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		p.oe.pop()
    -	case TextToken:
    -		p.addText(p.tok.Data)
    -		return true
    -	case EndTagToken:
    -		p.oe.pop()
    -	}
    -	p.im = p.originalIM
    -	p.originalIM = nil
    -	return p.tok.Type == EndTagToken
    -}
    -
    -// Section 12.2.5.4.9.
    -func inTableIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// Stop parsing.
    -		return true
    -	case TextToken:
    -		// TODO.
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "caption":
    -			p.clearStackToContext(tableScope)
    -			p.afe = append(p.afe, &scopeMarker)
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.im = inCaptionIM
    -			return true
    -		case "tbody", "tfoot", "thead":
    -			p.clearStackToContext(tableScope)
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.im = inTableBodyIM
    -			return true
    -		case "td", "th", "tr":
    -			p.clearStackToContext(tableScope)
    -			p.addElement("tbody", nil)
    -			p.im = inTableBodyIM
    -			return false
    -		case "table":
    -			if p.popUntil(tableScope, "table") {
    -				p.resetInsertionMode()
    -				return false
    -			}
    -			// Ignore the token.
    -			return true
    -		case "colgroup":
    -			p.clearStackToContext(tableScope)
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.im = inColumnGroupIM
    -			return true
    -		case "col":
    -			p.clearStackToContext(tableScope)
    -			p.addElement("colgroup", p.tok.Attr)
    -			p.im = inColumnGroupIM
    -			return false
    -		case "select":
    -			p.reconstructActiveFormattingElements()
    -			switch p.top().Data {
    -			case "table", "tbody", "tfoot", "thead", "tr":
    -				p.fosterParenting = true
    -			}
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.fosterParenting = false
    -			p.framesetOK = false
    -			p.im = inSelectInTableIM
    -			return true
    -		default:
    -			// TODO.
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "table":
    -			if p.popUntil(tableScope, "table") {
    -				p.resetInsertionMode()
    -				return true
    -			}
    -			// Ignore the token.
    -			return true
    -		case "body", "caption", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr":
    -			// Ignore the token.
    -			return true
    -		}
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -
    -	switch p.top().Data {
    -	case "table", "tbody", "tfoot", "thead", "tr":
    -		p.fosterParenting = true
    -		defer func() { p.fosterParenting = false }()
    -	}
    -
    -	return inBodyIM(p)
    -}
    -
    -// Section 12.2.5.4.11.
    -func inCaptionIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "caption", "col", "colgroup", "tbody", "td", "tfoot", "thead", "tr":
    -			if p.popUntil(tableScope, "caption") {
    -				p.clearActiveFormattingElements()
    -				p.im = inTableIM
    -				return false
    -			} else {
    -				// Ignore the token.
    -				return true
    -			}
    -		case "select":
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.framesetOK = false
    -			p.im = inSelectInTableIM
    -			return true
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "caption":
    -			if p.popUntil(tableScope, "caption") {
    -				p.clearActiveFormattingElements()
    -				p.im = inTableIM
    -			}
    -			return true
    -		case "table":
    -			if p.popUntil(tableScope, "caption") {
    -				p.clearActiveFormattingElements()
    -				p.im = inTableIM
    -				return false
    -			} else {
    -				// Ignore the token.
    -				return true
    -			}
    -		case "body", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr":
    -			// Ignore the token.
    -			return true
    -		}
    -	}
    -	return inBodyIM(p)
    -}
    -
    -// Section 12.2.5.4.12.
    -func inColumnGroupIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	case DoctypeToken:
    -		// Ignore the token.
    -		return true
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			return inBodyIM(p)
    -		case "col":
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.oe.pop()
    -			p.acknowledgeSelfClosingTag()
    -			return true
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "colgroup":
    -			if p.oe.top().Data != "html" {
    -				p.oe.pop()
    -				p.im = inTableIM
    -			}
    -			return true
    -		case "col":
    -			// Ignore the token.
    -			return true
    -		}
    -	}
    -	if p.oe.top().Data != "html" {
    -		p.oe.pop()
    -		p.im = inTableIM
    -		return false
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.4.13.
    -func inTableBodyIM(p *parser) bool {
    -	var (
    -		add      bool
    -		data     string
    -		attr     []Attribute
    -		consumed bool
    -	)
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// TODO.
    -	case TextToken:
    -		// TODO.
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "tr":
    -			add = true
    -			data = p.tok.Data
    -			attr = p.tok.Attr
    -			consumed = true
    -		case "td", "th":
    -			add = true
    -			data = "tr"
    -			consumed = false
    -		case "caption", "col", "colgroup", "tbody", "tfoot", "thead":
    -			if !p.popUntil(tableScope, "tbody", "thead", "tfoot") {
    -				// Ignore the token.
    -				return true
    -			}
    -			p.im = inTableIM
    -			return false
    -		default:
    -			// TODO.
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "table":
    -			if p.popUntil(tableScope, "tbody", "thead", "tfoot") {
    -				p.im = inTableIM
    -				return false
    -			}
    -			// Ignore the token.
    -			return true
    -		case "body", "caption", "col", "colgroup", "html", "td", "th", "tr":
    -			// Ignore the token.
    -			return true
    -		}
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -	if add {
    -		// TODO: clear the stack back to a table body context.
    -		p.addElement(data, attr)
    -		p.im = inRowIM
    -		return consumed
    -	}
    -	return inTableIM(p)
    -}
    -
    -// Section 12.2.5.4.14.
    -func inRowIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// TODO.
    -	case TextToken:
    -		// TODO.
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "td", "th":
    -			p.clearStackToContext(tableRowScope)
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.afe = append(p.afe, &scopeMarker)
    -			p.im = inCellIM
    -			return true
    -		case "caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr":
    -			if p.popUntil(tableScope, "tr") {
    -				p.im = inTableBodyIM
    -				return false
    -			}
    -			// Ignore the token.
    -			return true
    -		default:
    -			// TODO.
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "tr":
    -			if p.popUntil(tableScope, "tr") {
    -				p.im = inTableBodyIM
    -				return true
    -			}
    -			// Ignore the token.
    -			return true
    -		case "table":
    -			if p.popUntil(tableScope, "tr") {
    -				p.im = inTableBodyIM
    -				return false
    -			}
    -			// Ignore the token.
    -			return true
    -		case "tbody", "tfoot", "thead":
    -			// TODO.
    -		case "body", "caption", "col", "colgroup", "html", "td", "th":
    -			// Ignore the token.
    -			return true
    -		default:
    -			// TODO.
    -		}
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -	return inTableIM(p)
    -}
    -
    -// Section 12.2.5.4.15.
    -func inCellIM(p *parser) bool {
    -	var (
    -		closeTheCellAndReprocess bool
    -	)
    -	switch p.tok.Type {
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "caption", "col", "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr":
    -			// TODO: check for "td" or "th" in table scope.
    -			closeTheCellAndReprocess = true
    -		case "select":
    -			p.reconstructActiveFormattingElements()
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.framesetOK = false
    -			p.im = inSelectInTableIM
    -			return true
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "td", "th":
    -			if !p.popUntil(tableScope, p.tok.Data) {
    -				// Ignore the token.
    -				return true
    -			}
    -			p.clearActiveFormattingElements()
    -			p.im = inRowIM
    -			return true
    -		case "body", "caption", "col", "colgroup", "html":
    -			// TODO.
    -		case "table", "tbody", "tfoot", "thead", "tr":
    -			// TODO: check for matching element in table scope.
    -			closeTheCellAndReprocess = true
    -		}
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -	if closeTheCellAndReprocess {
    -		if p.popUntil(tableScope, "td") || p.popUntil(tableScope, "th") {
    -			p.clearActiveFormattingElements()
    -			p.im = inRowIM
    -			return false
    -		}
    -	}
    -	return inBodyIM(p)
    -}
    -
    -// Section 12.2.5.4.16.
    -func inSelectIM(p *parser) bool {
    -	endSelect := false
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// TODO.
    -	case TextToken:
    -		p.addText(p.tok.Data)
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			// TODO.
    -		case "option":
    -			if p.top().Data == "option" {
    -				p.oe.pop()
    -			}
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "optgroup":
    -			if p.top().Data == "option" {
    -				p.oe.pop()
    -			}
    -			if p.top().Data == "optgroup" {
    -				p.oe.pop()
    -			}
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "select":
    -			endSelect = true
    -		case "input", "keygen", "textarea":
    -			// TODO.
    -		case "script":
    -			// TODO.
    -		default:
    -			// Ignore the token.
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "option":
    -			if p.top().Data == "option" {
    -				p.oe.pop()
    -			}
    -		case "optgroup":
    -			i := len(p.oe) - 1
    -			if p.oe[i].Data == "option" {
    -				i--
    -			}
    -			if p.oe[i].Data == "optgroup" {
    -				p.oe = p.oe[:i]
    -			}
    -		case "select":
    -			endSelect = true
    -		default:
    -			// Ignore the token.
    -		}
    -	case CommentToken:
    -		p.doc.Add(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	}
    -	if endSelect {
    -		p.endSelect()
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.4.17.
    -func inSelectInTableIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case StartTagToken, EndTagToken:
    -		switch p.tok.Data {
    -		case "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th":
    -			if p.tok.Type == StartTagToken || p.elementInScope(tableScope, p.tok.Data) {
    -				p.endSelect()
    -				return false
    -			} else {
    -				// Ignore the token.
    -				return true
    -			}
    -		}
    -	}
    -	return inSelectIM(p)
    -}
    -
    -func (p *parser) endSelect() {
    -	for i := len(p.oe) - 1; i >= 0; i-- {
    -		switch p.oe[i].Data {
    -		case "option", "optgroup":
    -			continue
    -		case "select":
    -			p.oe = p.oe[:i]
    -			p.resetInsertionMode()
    -		}
    -		return
    -	}
    -}
    -
    -// Section 12.2.5.4.18.
    -func afterBodyIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// Stop parsing.
    -		return true
    -	case StartTagToken:
    -		if p.tok.Data == "html" {
    -			return inBodyIM(p)
    -		}
    -	case EndTagToken:
    -		if p.tok.Data == "html" {
    -			p.im = afterAfterBodyIM
    -			return true
    -		}
    -	case CommentToken:
    -		// The comment is attached to the  element.
    -		if len(p.oe) < 1 || p.oe[0].Data != "html" {
    -			panic("html: bad parser state:  element not found, in the after-body insertion mode")
    -		}
    -		p.oe[0].Add(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -	p.im = inBodyIM
    -	return false
    -}
    -
    -// Section 12.2.5.4.19.
    -func inFramesetIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	case TextToken:
    -		// Ignore all text but whitespace.
    -		s := strings.Map(func(c rune) rune {
    -			switch c {
    -			case ' ', '\t', '\n', '\f', '\r':
    -				return c
    -			}
    -			return -1
    -		}, p.tok.Data)
    -		if s != "" {
    -			p.addText(s)
    -		}
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			return inBodyIM(p)
    -		case "frameset":
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -		case "frame":
    -			p.addElement(p.tok.Data, p.tok.Attr)
    -			p.oe.pop()
    -			p.acknowledgeSelfClosingTag()
    -		case "noframes":
    -			return inHeadIM(p)
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "frameset":
    -			if p.oe.top().Data != "html" {
    -				p.oe.pop()
    -				if p.oe.top().Data != "frameset" {
    -					p.im = afterFramesetIM
    -					return true
    -				}
    -			}
    -		}
    -	default:
    -		// Ignore the token.
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.4.20.
    -func afterFramesetIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	case TextToken:
    -		// Ignore all text but whitespace.
    -		s := strings.Map(func(c rune) rune {
    -			switch c {
    -			case ' ', '\t', '\n', '\f', '\r':
    -				return c
    -			}
    -			return -1
    -		}, p.tok.Data)
    -		if s != "" {
    -			p.addText(s)
    -		}
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			return inBodyIM(p)
    -		case "noframes":
    -			return inHeadIM(p)
    -		}
    -	case EndTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			p.im = afterAfterFramesetIM
    -			return true
    -		}
    -	default:
    -		// Ignore the token.
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.4.21.
    -func afterAfterBodyIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case ErrorToken:
    -		// Stop parsing.
    -		return true
    -	case TextToken:
    -		// TODO.
    -	case StartTagToken:
    -		if p.tok.Data == "html" {
    -			return inBodyIM(p)
    -		}
    -	case CommentToken:
    -		p.doc.Add(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -		return true
    -	}
    -	p.im = inBodyIM
    -	return false
    -}
    -
    -// Section 12.2.5.4.22.
    -func afterAfterFramesetIM(p *parser) bool {
    -	switch p.tok.Type {
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	case TextToken:
    -		// Ignore all text but whitespace.
    -		s := strings.Map(func(c rune) rune {
    -			switch c {
    -			case ' ', '\t', '\n', '\f', '\r':
    -				return c
    -			}
    -			return -1
    -		}, p.tok.Data)
    -		if s != "" {
    -			p.reconstructActiveFormattingElements()
    -			p.addText(s)
    -		}
    -	case StartTagToken:
    -		switch p.tok.Data {
    -		case "html":
    -			return inBodyIM(p)
    -		case "noframes":
    -			return inHeadIM(p)
    -		}
    -	default:
    -		// Ignore the token.
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.5.
    -func parseForeignContent(p *parser) bool {
    -	switch p.tok.Type {
    -	case TextToken:
    -		// TODO: HTML integration points.
    -		if p.top().Namespace == "" {
    -			inBodyIM(p)
    -			p.resetInsertionMode()
    -			return true
    -		}
    -		if p.framesetOK {
    -			p.framesetOK = strings.TrimLeft(p.tok.Data, whitespace) == ""
    -		}
    -		p.addText(p.tok.Data)
    -	case CommentToken:
    -		p.addChild(&Node{
    -			Type: CommentNode,
    -			Data: p.tok.Data,
    -		})
    -	case StartTagToken:
    -		if htmlIntegrationPoint(p.top()) {
    -			inBodyIM(p)
    -			p.resetInsertionMode()
    -			return true
    -		}
    -		if breakout[p.tok.Data] {
    -			for i := len(p.oe) - 1; i >= 0; i-- {
    -				// TODO: MathML integration points.
    -				if p.oe[i].Namespace == "" || htmlIntegrationPoint(p.oe[i]) {
    -					p.oe = p.oe[:i+1]
    -					break
    -				}
    -			}
    -			return false
    -		}
    -		switch p.top().Namespace {
    -		case "math":
    -			// TODO: adjust MathML attributes.
    -		case "svg":
    -			// Adjust SVG tag names. The tokenizer lower-cases tag names, but
    -			// SVG wants e.g. "foreignObject" with a capital second "O".
    -			if x := svgTagNameAdjustments[p.tok.Data]; x != "" {
    -				p.tok.Data = x
    -			}
    -			// TODO: adjust SVG attributes.
    -		default:
    -			panic("html: bad parser state: unexpected namespace")
    -		}
    -		adjustForeignAttributes(p.tok.Attr)
    -		namespace := p.top().Namespace
    -		p.addElement(p.tok.Data, p.tok.Attr)
    -		p.top().Namespace = namespace
    -	case EndTagToken:
    -		for i := len(p.oe) - 1; i >= 0; i-- {
    -			if p.oe[i].Namespace == "" {
    -				return p.im(p)
    -			}
    -			if strings.EqualFold(p.oe[i].Data, p.tok.Data) {
    -				p.oe = p.oe[:i]
    -				break
    -			}
    -		}
    -		return true
    -	default:
    -		// Ignore the token.
    -	}
    -	return true
    -}
    -
    -// Section 12.2.5.
    -func (p *parser) inForeignContent() bool {
    -	if len(p.oe) == 0 {
    -		return false
    -	}
    -	n := p.oe[len(p.oe)-1]
    -	if n.Namespace == "" {
    -		return false
    -	}
    -	// TODO: MathML, HTML integration points.
    -	// TODO: MathML's annotation-xml combining with SVG's svg.
    -	return true
    -}
    -
    -func (p *parser) parse() error {
    -	// Iterate until EOF. Any other error will cause an early return.
    -	consumed := true
    -	for {
    -		if consumed {
    -			if err := p.read(); err != nil {
    -				if err == io.EOF {
    -					break
    -				}
    -				return err
    -			}
    -		}
    -		if p.inForeignContent() {
    -			consumed = parseForeignContent(p)
    -		} else {
    -			consumed = p.im(p)
    -		}
    -	}
    -	// Loop until the final token (the ErrorToken signifying EOF) is consumed.
    -	for {
    -		if consumed = p.im(p); consumed {
    -			break
    -		}
    -	}
    -	return nil
    -}
    -
    -// Parse returns the parse tree for the HTML from the given Reader.
    -// The input is assumed to be UTF-8 encoded.
    -func Parse(r io.Reader) (*Node, error) {
    -	p := &parser{
    -		tokenizer: NewTokenizer(r),
    -		doc: &Node{
    -			Type: DocumentNode,
    -		},
    -		scripting:  true,
    -		framesetOK: true,
    -		im:         initialIM,
    -	}
    -	err := p.parse()
    -	if err != nil {
    -		return nil, err
    -	}
    -	return p.doc, nil
    -}
    -
    -// ParseFragment parses a fragment of HTML and returns the nodes that were 
    -// found. If the fragment is the InnerHTML for an existing element, pass that
    -// element in context.
    -func ParseFragment(r io.Reader, context *Node) ([]*Node, error) {
    -	p := &parser{
    -		tokenizer: NewTokenizer(r),
    -		doc: &Node{
    -			Type: DocumentNode,
    -		},
    -		scripting: true,
    -		context:   context,
    -	}
    -
    -	if context != nil {
    -		switch context.Data {
    -		case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp":
    -			p.tokenizer.rawTag = context.Data
    -		}
    -	}
    -
    -	root := &Node{
    -		Type: ElementNode,
    -		Data: "html",
    -	}
    -	p.doc.Add(root)
    -	p.oe = nodeStack{root}
    -	p.resetInsertionMode()
    -
    -	for n := context; n != nil; n = n.Parent {
    -		if n.Type == ElementNode && n.Data == "form" {
    -			p.form = n
    -			break
    -		}
    -	}
    -
    -	err := p.parse()
    -	if err != nil {
    -		return nil, err
    -	}
    -
    -	parent := p.doc
    -	if context != nil {
    -		parent = root
    -	}
    -
    -	result := parent.Child
    -	parent.Child = nil
    -	for _, n := range result {
    -		n.Parent = nil
    -	}
    -	return result, nil
    -}
    diff --git a/vendor/github.com/levigross/exp-html/render.go b/vendor/github.com/levigross/exp-html/render.go
    deleted file mode 100644
    index 07859fa..0000000
    --- a/vendor/github.com/levigross/exp-html/render.go
    +++ /dev/null
    @@ -1,277 +0,0 @@
    -// Copyright 2011 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -package html
    -
    -import (
    -	"bufio"
    -	"errors"
    -	"fmt"
    -	"io"
    -	"strings"
    -)
    -
    -type writer interface {
    -	io.Writer
    -	WriteByte(byte) error
    -	WriteString(string) (int, error)
    -}
    -
    -// Render renders the parse tree n to the given writer.
    -//
    -// Rendering is done on a 'best effort' basis: calling Parse on the output of
    -// Render will always result in something similar to the original tree, but it
    -// is not necessarily an exact clone unless the original tree was 'well-formed'.
    -// 'Well-formed' is not easily specified; the HTML5 specification is
    -// complicated.
    -//
    -// Calling Parse on arbitrary input typically results in a 'well-formed' parse
    -// tree. However, it is possible for Parse to yield a 'badly-formed' parse tree.
    -// For example, in a 'well-formed' parse tree, no  element is a child of
    -// another  element: parsing "" results in two sibling elements.
    -// Similarly, in a 'well-formed' parse tree, no  element is a child of a
    -//  element: parsing "

    " results in a

    with two sibling -// children; the is reparented to the

    's parent. However, calling -// Parse on "
    " does not return an error, but the result has an -// element with an child, and is therefore not 'well-formed'. -// -// Programmatically constructed trees are typically also 'well-formed', but it -// is possible to construct a tree that looks innocuous but, when rendered and -// re-parsed, results in a different tree. A simple example is that a solitary -// text node would become a tree containing , and elements. -// Another example is that the programmatic equivalent of "abc" -// becomes "abc". -func Render(w io.Writer, n *Node) error { - if x, ok := w.(writer); ok { - return render(x, n) - } - buf := bufio.NewWriter(w) - if err := render(buf, n); err != nil { - return err - } - return buf.Flush() -} - -// plaintextAbort is returned from render1 when a element -// has been rendered. No more end tags should be rendered after that. -var plaintextAbort = errors.New("html: internal error (plaintext abort)") - -func render(w writer, n *Node) error { - err := render1(w, n) - if err == plaintextAbort { - err = nil - } - return err -} - -func render1(w writer, n *Node) error { - // Render non-element nodes; these are the easy cases. - switch n.Type { - case ErrorNode: - return errors.New("html: cannot render an ErrorNode node") - case TextNode: - return escape(w, n.Data) - case DocumentNode: - for _, c := range n.Child { - if err := render1(w, c); err != nil { - return err - } - } - return nil - case ElementNode: - // No-op. - case CommentNode: - if _, err := w.WriteString("<!--"); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - if _, err := w.WriteString("-->"); err != nil { - return err - } - return nil - case DoctypeNode: - if _, err := w.WriteString("<!DOCTYPE "); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - if n.Attr != nil { - var p, s string - for _, a := range n.Attr { - switch a.Key { - case "public": - p = a.Val - case "system": - s = a.Val - } - } - if p != "" { - if _, err := w.WriteString(" PUBLIC "); err != nil { - return err - } - if err := writeQuoted(w, p); err != nil { - return err - } - if s != "" { - if err := w.WriteByte(' '); err != nil { - return err - } - if err := writeQuoted(w, s); err != nil { - return err - } - } - } else if s != "" { - if _, err := w.WriteString(" SYSTEM "); err != nil { - return err - } - if err := writeQuoted(w, s); err != nil { - return err - } - } - } - return w.WriteByte('>') - default: - return errors.New("html: unknown node type") - } - - // Render the <xxx> opening tag. - if err := w.WriteByte('<'); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - for _, a := range n.Attr { - if err := w.WriteByte(' '); err != nil { - return err - } - if a.Namespace != "" { - if _, err := w.WriteString(a.Namespace); err != nil { - return err - } - if err := w.WriteByte(':'); err != nil { - return err - } - } - if _, err := w.WriteString(a.Key); err != nil { - return err - } - if _, err := w.WriteString(`="`); err != nil { - return err - } - if err := escape(w, a.Val); err != nil { - return err - } - if err := w.WriteByte('"'); err != nil { - return err - } - } - if voidElements[n.Data] { - if len(n.Child) != 0 { - return fmt.Errorf("html: void element <%s> has child nodes", n.Data) - } - _, err := w.WriteString("/>") - return err - } - if err := w.WriteByte('>'); err != nil { - return err - } - - // Add initial newline where there is danger of a newline beging ignored. - if len(n.Child) > 0 && n.Child[0].Type == TextNode && strings.HasPrefix(n.Child[0].Data, "\n") { - switch n.Data { - case "pre", "listing", "textarea": - if err := w.WriteByte('\n'); err != nil { - return err - } - } - } - - // Render any child nodes. - switch n.Data { - case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "xmp": - for _, c := range n.Child { - if c.Type != TextNode { - return fmt.Errorf("html: raw text element <%s> has non-text child node", n.Data) - } - if _, err := w.WriteString(c.Data); err != nil { - return err - } - } - if n.Data == "plaintext" { - // Don't render anything else. <plaintext> must be the - // last element in the file, with no closing tag. - return plaintextAbort - } - case "textarea", "title": - for _, c := range n.Child { - if c.Type != TextNode { - return fmt.Errorf("html: RCDATA element <%s> has non-text child node", n.Data) - } - if err := render1(w, c); err != nil { - return err - } - } - default: - for _, c := range n.Child { - if err := render1(w, c); err != nil { - return err - } - } - } - - // Render the </xxx> closing tag. - if _, err := w.WriteString("</"); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - return w.WriteByte('>') -} - -// writeQuoted writes s to w surrounded by quotes. Normally it will use double -// quotes, but if s contains a double quote, it will use single quotes. -// It is used for writing the identifiers in a doctype declaration. -// In valid HTML, they can't contain both types of quotes. -func writeQuoted(w writer, s string) error { - var q byte = '"' - if strings.Contains(s, `"`) { - q = '\'' - } - if err := w.WriteByte(q); err != nil { - return err - } - if _, err := w.WriteString(s); err != nil { - return err - } - if err := w.WriteByte(q); err != nil { - return err - } - return nil -} - -// Section 12.1.2, "Elements", gives this list of void elements. Void elements -// are those that can't have any contents. -var voidElements = map[string]bool{ - "area": true, - "base": true, - "br": true, - "col": true, - "command": true, - "embed": true, - "hr": true, - "img": true, - "input": true, - "keygen": true, - "link": true, - "meta": true, - "param": true, - "source": true, - "track": true, - "wbr": true, -} diff --git a/vendor/github.com/levigross/exp-html/token.go b/vendor/github.com/levigross/exp-html/token.go deleted file mode 100644 index b5e9c2d..0000000 --- a/vendor/github.com/levigross/exp-html/token.go +++ /dev/null @@ -1,779 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "io" - "strconv" - "strings" -) - -// A TokenType is the type of a Token. -type TokenType int - -const ( - // ErrorToken means that an error occurred during tokenization. - ErrorToken TokenType = iota - // TextToken means a text node. - TextToken - // A StartTagToken looks like <a>. - StartTagToken - // An EndTagToken looks like </a>. - EndTagToken - // A SelfClosingTagToken tag looks like <br/>. - SelfClosingTagToken - // A CommentToken looks like <!--x-->. - CommentToken - // A DoctypeToken looks like <!DOCTYPE x> - DoctypeToken -) - -// String returns a string representation of the TokenType. -func (t TokenType) String() string { - switch t { - case ErrorToken: - return "Error" - case TextToken: - return "Text" - case StartTagToken: - return "StartTag" - case EndTagToken: - return "EndTag" - case SelfClosingTagToken: - return "SelfClosingTag" - case CommentToken: - return "Comment" - case DoctypeToken: - return "Doctype" - } - return "Invalid(" + strconv.Itoa(int(t)) + ")" -} - -// An Attribute is an attribute namespace-key-value triple. Namespace is -// non-empty for foreign attributes like xlink, Key is alphabetic (and hence -// does not contain escapable characters like '&', '<' or '>'), and Val is -// unescaped (it looks like "a<b" rather than "a&lt;b"). -// -// Namespace is only used by the parser, not the tokenizer. -type Attribute struct { - Namespace, Key, Val string -} - -// A Token consists of a TokenType and some Data (tag name for start and end -// tags, content for text, comments and doctypes). A tag Token may also contain -// a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b" -// rather than "a&lt;b"). -type Token struct { - Type TokenType - Data string - Attr []Attribute -} - -// tagString returns a string representation of a tag Token's Data and Attr. -func (t Token) tagString() string { - if len(t.Attr) == 0 { - return t.Data - } - buf := bytes.NewBufferString(t.Data) - for _, a := range t.Attr { - buf.WriteByte(' ') - buf.WriteString(a.Key) - buf.WriteString(`="`) - escape(buf, a.Val) - buf.WriteByte('"') - } - return buf.String() -} - -// String returns a string representation of the Token. -func (t Token) String() string { - switch t.Type { - case ErrorToken: - return "" - case TextToken: - return EscapeString(t.Data) - case StartTagToken: - return "<" + t.tagString() + ">" - case EndTagToken: - return "</" + t.tagString() + ">" - case SelfClosingTagToken: - return "<" + t.tagString() + "/>" - case CommentToken: - return "<!--" + t.Data + "-->" - case DoctypeToken: - return "<!DOCTYPE " + t.Data + ">" - } - return "Invalid(" + strconv.Itoa(int(t.Type)) + ")" -} - -// span is a range of bytes in a Tokenizer's buffer. The start is inclusive, -// the end is exclusive. -type span struct { - start, end int -} - -// A Tokenizer returns a stream of HTML Tokens. -type Tokenizer struct { - // r is the source of the HTML text. - r io.Reader - // tt is the TokenType of the current token. - tt TokenType - // err is the first error encountered during tokenization. It is possible - // for tt != Error && err != nil to hold: this means that Next returned a - // valid token but the subsequent Next call will return an error token. - // For example, if the HTML text input was just "plain", then the first - // Next call would set z.err to io.EOF but return a TextToken, and all - // subsequent Next calls would return an ErrorToken. - // err is never reset. Once it becomes non-nil, it stays non-nil. - err error - // buf[raw.start:raw.end] holds the raw bytes of the current token. - // buf[raw.end:] is buffered input that will yield future tokens. - raw span - buf []byte - // buf[data.start:data.end] holds the raw bytes of the current token's data: - // a text token's text, a tag token's tag name, etc. - data span - // pendingAttr is the attribute key and value currently being tokenized. - // When complete, pendingAttr is pushed onto attr. nAttrReturned is - // incremented on each call to TagAttr. - pendingAttr [2]span - attr [][2]span - nAttrReturned int - // rawTag is the "script" in "</script>" that closes the next token. If - // non-empty, the subsequent call to Next will return a raw or RCDATA text - // token: one that treats "<p>" as text instead of an element. - // rawTag's contents are lower-cased. - rawTag string - // textIsRaw is whether the current text token's data is not escaped. - textIsRaw bool -} - -// Err returns the error associated with the most recent ErrorToken token. -// This is typically io.EOF, meaning the end of tokenization. -func (z *Tokenizer) Err() error { - if z.tt != ErrorToken { - return nil - } - return z.err -} - -// readByte returns the next byte from the input stream, doing a buffered read -// from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte -// slice that holds all the bytes read so far for the current token. -// It sets z.err if the underlying reader returns an error. -// Pre-condition: z.err == nil. -func (z *Tokenizer) readByte() byte { - if z.raw.end >= len(z.buf) { - // Our buffer is exhausted and we have to read from z.r. - // We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length - // z.raw.end - z.raw.start is more than half the capacity of z.buf, then we - // allocate a new buffer before the copy. - c := cap(z.buf) - d := z.raw.end - z.raw.start - var buf1 []byte - if 2*d > c { - buf1 = make([]byte, d, 2*c) - } else { - buf1 = z.buf[:d] - } - copy(buf1, z.buf[z.raw.start:z.raw.end]) - if x := z.raw.start; x != 0 { - // Adjust the data/attr spans to refer to the same contents after the copy. - z.data.start -= x - z.data.end -= x - z.pendingAttr[0].start -= x - z.pendingAttr[0].end -= x - z.pendingAttr[1].start -= x - z.pendingAttr[1].end -= x - for i := range z.attr { - z.attr[i][0].start -= x - z.attr[i][0].end -= x - z.attr[i][1].start -= x - z.attr[i][1].end -= x - } - } - z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d] - // Now that we have copied the live bytes to the start of the buffer, - // we read from z.r into the remainder. - n, err := z.r.Read(buf1[d:cap(buf1)]) - if err != nil { - z.err = err - return 0 - } - z.buf = buf1[:d+n] - } - x := z.buf[z.raw.end] - z.raw.end++ - return x -} - -// skipWhiteSpace skips past any white space. -func (z *Tokenizer) skipWhiteSpace() { - if z.err != nil { - return - } - for { - c := z.readByte() - if z.err != nil { - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - // No-op. - default: - z.raw.end-- - return - } - } -} - -// readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and -// is typically something like "script" or "textarea". -func (z *Tokenizer) readRawOrRCDATA() { -loop: - for { - c := z.readByte() - if z.err != nil { - break loop - } - if c != '<' { - continue loop - } - c = z.readByte() - if z.err != nil { - break loop - } - if c != '/' { - continue loop - } - for i := 0; i < len(z.rawTag); i++ { - c = z.readByte() - if z.err != nil { - break loop - } - if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') { - continue loop - } - } - c = z.readByte() - if z.err != nil { - break loop - } - switch c { - case ' ', '\n', '\r', '\t', '\f', '/', '>': - // The 3 is 2 for the leading "</" plus 1 for the trailing character c. - z.raw.end -= 3 + len(z.rawTag) - break loop - case '<': - // Step back one, to catch "</foo</foo>". - z.raw.end-- - } - } - z.data.end = z.raw.end - // A textarea's or title's RCDATA can contain escaped entities. - z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title" - z.rawTag = "" -} - -// readComment reads the next comment token starting with "<!--". The opening -// "<!--" has already been consumed. -func (z *Tokenizer) readComment() { - z.data.start = z.raw.end - defer func() { - if z.data.end < z.data.start { - // It's a comment with no data, like <!-->. - z.data.end = z.data.start - } - }() - for dashCount := 2; ; { - c := z.readByte() - if z.err != nil { - // Ignore up to two dashes at EOF. - if dashCount > 2 { - dashCount = 2 - } - z.data.end = z.raw.end - dashCount - return - } - switch c { - case '-': - dashCount++ - continue - case '>': - if dashCount >= 2 { - z.data.end = z.raw.end - len("-->") - return - } - case '!': - if dashCount >= 2 { - c = z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return - } - if c == '>' { - z.data.end = z.raw.end - len("--!>") - return - } - } - } - dashCount = 0 - } -} - -// readUntilCloseAngle reads until the next ">". -func (z *Tokenizer) readUntilCloseAngle() { - z.data.start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return - } - if c == '>' { - z.data.end = z.raw.end - len(">") - return - } - } -} - -// readMarkupDeclaration reads the next token starting with "<!". It might be -// a "<!--comment-->", a "<!DOCTYPE foo>", or "<!a bogus comment". The opening -// "<!" has already been consumed. -func (z *Tokenizer) readMarkupDeclaration() TokenType { - z.data.start = z.raw.end - var c [2]byte - for i := 0; i < 2; i++ { - c[i] = z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return CommentToken - } - } - if c[0] == '-' && c[1] == '-' { - z.readComment() - return CommentToken - } - z.raw.end -= 2 - const s = "DOCTYPE" - for i := 0; i < len(s); i++ { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return CommentToken - } - if c != s[i] && c != s[i]+('a'-'A') { - // Back up to read the fragment of "DOCTYPE" again. - z.raw.end = z.data.start - z.readUntilCloseAngle() - return CommentToken - } - } - if z.skipWhiteSpace(); z.err != nil { - z.data.start = z.raw.end - z.data.end = z.raw.end - return DoctypeToken - } - z.readUntilCloseAngle() - return DoctypeToken -} - -// startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end] -// case-insensitively matches any element of ss. -func (z *Tokenizer) startTagIn(ss ...string) bool { -loop: - for _, s := range ss { - if z.data.end-z.data.start != len(s) { - continue loop - } - for i := 0; i < len(s); i++ { - c := z.buf[z.data.start+i] - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - if c != s[i] { - continue loop - } - } - return true - } - return false -} - -// readStartTag reads the next start tag token. The opening "<a" has already -// been consumed, where 'a' means anything in [A-Za-z]. -func (z *Tokenizer) readStartTag() TokenType { - z.attr = z.attr[:0] - z.nAttrReturned = 0 - // Read the tag name and attribute key/value pairs. - z.readTagName() - if z.skipWhiteSpace(); z.err != nil { - return ErrorToken - } - for { - c := z.readByte() - if z.err != nil || c == '>' { - break - } - z.raw.end-- - z.readTagAttrKey() - z.readTagAttrVal() - // Save pendingAttr if it has a non-empty key. - if z.pendingAttr[0].start != z.pendingAttr[0].end { - z.attr = append(z.attr, z.pendingAttr) - } - if z.skipWhiteSpace(); z.err != nil { - break - } - } - // Several tags flag the tokenizer's next token as raw. - c, raw := z.buf[z.data.start], false - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - switch c { - case 'i': - raw = z.startTagIn("iframe") - case 'n': - raw = z.startTagIn("noembed", "noframes", "noscript") - case 'p': - raw = z.startTagIn("plaintext") - case 's': - raw = z.startTagIn("script", "style") - case 't': - raw = z.startTagIn("textarea", "title") - case 'x': - raw = z.startTagIn("xmp") - } - if raw { - z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end])) - } - // Look for a self-closing token like "<br/>". - if z.err == nil && z.buf[z.raw.end-2] == '/' { - return SelfClosingTagToken - } - return StartTagToken -} - -// readEndTag reads the next end tag token. The opening "</a" has already -// been consumed, where 'a' means anything in [A-Za-z]. -func (z *Tokenizer) readEndTag() { - z.attr = z.attr[:0] - z.nAttrReturned = 0 - z.readTagName() - for { - c := z.readByte() - if z.err != nil || c == '>' { - return - } - } -} - -// readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end) -// is positioned such that the first byte of the tag name (the "d" in "<div") -// has already been consumed. -func (z *Tokenizer) readTagName() { - z.data.start = z.raw.end - 1 - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - z.data.end = z.raw.end - 1 - return - case '/', '>': - z.raw.end-- - z.data.end = z.raw.end - return - } - } -} - -// readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>". -// Precondition: z.err == nil. -func (z *Tokenizer) readTagAttrKey() { - z.pendingAttr[0].start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[0].end = z.raw.end - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f', '/': - z.pendingAttr[0].end = z.raw.end - 1 - return - case '=', '>': - z.raw.end-- - z.pendingAttr[0].end = z.raw.end - return - } - } -} - -// readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>". -func (z *Tokenizer) readTagAttrVal() { - z.pendingAttr[1].start = z.raw.end - z.pendingAttr[1].end = z.raw.end - if z.skipWhiteSpace(); z.err != nil { - return - } - c := z.readByte() - if z.err != nil { - return - } - if c != '=' { - z.raw.end-- - return - } - if z.skipWhiteSpace(); z.err != nil { - return - } - quote := z.readByte() - if z.err != nil { - return - } - switch quote { - case '>': - z.raw.end-- - return - - case '\'', '"': - z.pendingAttr[1].start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[1].end = z.raw.end - return - } - if c == quote { - z.pendingAttr[1].end = z.raw.end - 1 - return - } - } - - default: - z.pendingAttr[1].start = z.raw.end - 1 - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[1].end = z.raw.end - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - z.pendingAttr[1].end = z.raw.end - 1 - return - case '>': - z.raw.end-- - z.pendingAttr[1].end = z.raw.end - return - } - } - } -} - -// Next scans the next token and returns its type. -func (z *Tokenizer) Next() TokenType { - if z.err != nil { - z.tt = ErrorToken - return z.tt - } - z.raw.start = z.raw.end - z.data.start = z.raw.end - z.data.end = z.raw.end - if z.rawTag != "" { - if z.rawTag == "plaintext" { - // Read everything up to EOF. - for z.err == nil { - z.readByte() - } - z.textIsRaw = true - } else { - z.readRawOrRCDATA() - } - if z.data.end > z.data.start { - z.tt = TextToken - return z.tt - } - } - z.textIsRaw = false - -loop: - for { - c := z.readByte() - if z.err != nil { - break loop - } - if c != '<' { - continue loop - } - - // Check if the '<' we have just read is part of a tag, comment - // or doctype. If not, it's part of the accumulated text token. - c = z.readByte() - if z.err != nil { - break loop - } - var tokenType TokenType - switch { - case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z': - tokenType = StartTagToken - case c == '/': - tokenType = EndTagToken - case c == '!' || c == '?': - // We use CommentToken to mean any of "<!--actual comments-->", - // "<!DOCTYPE declarations>" and "<?xml processing instructions?>". - tokenType = CommentToken - default: - continue - } - - // We have a non-text token, but we might have accumulated some text - // before that. If so, we return the text first, and return the non- - // text token on the subsequent call to Next. - if x := z.raw.end - len("<a"); z.raw.start < x { - z.raw.end = x - z.data.end = x - z.tt = TextToken - return z.tt - } - switch tokenType { - case StartTagToken: - z.tt = z.readStartTag() - return z.tt - case EndTagToken: - c = z.readByte() - if z.err != nil { - break loop - } - if c == '>' { - // "</>" does not generate a token at all. - // Reset the tokenizer state and start again. - z.raw.start = z.raw.end - z.data.start = z.raw.end - z.data.end = z.raw.end - continue loop - } - if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' { - z.readEndTag() - z.tt = EndTagToken - return z.tt - } - z.raw.end-- - z.readUntilCloseAngle() - z.tt = CommentToken - return z.tt - case CommentToken: - if c == '!' { - z.tt = z.readMarkupDeclaration() - return z.tt - } - z.raw.end-- - z.readUntilCloseAngle() - z.tt = CommentToken - return z.tt - } - } - if z.raw.start < z.raw.end { - z.data.end = z.raw.end - z.tt = TextToken - return z.tt - } - z.tt = ErrorToken - return z.tt -} - -// Raw returns the unmodified text of the current token. Calling Next, Token, -// Text, TagName or TagAttr may change the contents of the returned slice. -func (z *Tokenizer) Raw() []byte { - return z.buf[z.raw.start:z.raw.end] -} - -// Text returns the unescaped text of a text, comment or doctype token. The -// contents of the returned slice may change on the next call to Next. -func (z *Tokenizer) Text() []byte { - switch z.tt { - case TextToken, CommentToken, DoctypeToken: - s := z.buf[z.data.start:z.data.end] - z.data.start = z.raw.end - z.data.end = z.raw.end - if !z.textIsRaw { - s = unescape(s) - } - return s - } - return nil -} - -// TagName returns the lower-cased name of a tag token (the `img` out of -// `<IMG SRC="foo">`) and whether the tag has attributes. -// The contents of the returned slice may change on the next call to Next. -func (z *Tokenizer) TagName() (name []byte, hasAttr bool) { - if z.data.start < z.data.end { - switch z.tt { - case StartTagToken, EndTagToken, SelfClosingTagToken: - s := z.buf[z.data.start:z.data.end] - z.data.start = z.raw.end - z.data.end = z.raw.end - return lower(s), z.nAttrReturned < len(z.attr) - } - } - return nil, false -} - -// TagAttr returns the lower-cased key and unescaped value of the next unparsed -// attribute for the current tag token and whether there are more attributes. -// The contents of the returned slices may change on the next call to Next. -func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) { - if z.nAttrReturned < len(z.attr) { - switch z.tt { - case StartTagToken, SelfClosingTagToken: - x := z.attr[z.nAttrReturned] - z.nAttrReturned++ - key = z.buf[x[0].start:x[0].end] - val = z.buf[x[1].start:x[1].end] - return lower(key), unescape(val), z.nAttrReturned < len(z.attr) - } - } - return nil, nil, false -} - -// Token returns the next Token. The result's Data and Attr values remain valid -// after subsequent Next calls. -func (z *Tokenizer) Token() Token { - t := Token{Type: z.tt} - switch z.tt { - case TextToken, CommentToken, DoctypeToken: - t.Data = string(z.Text()) - case StartTagToken, SelfClosingTagToken: - var attr []Attribute - name, moreAttr := z.TagName() - for moreAttr { - var key, val []byte - key, val, moreAttr = z.TagAttr() - attr = append(attr, Attribute{"", string(key), string(val)}) - } - t.Data = string(name) - t.Attr = attr - case EndTagToken: - name, _ := z.TagName() - t.Data = string(name) - } - return t -} - -// NewTokenizer returns a new HTML Tokenizer for the given Reader. -// The input is assumed to be UTF-8 encoded. -func NewTokenizer(r io.Reader) *Tokenizer { - return &Tokenizer{ - r: r, - buf: make([]byte, 0, 4096), - } -} diff --git a/vendor/github.com/mattn/go-runewidth/LICENSE b/vendor/github.com/mattn/go-runewidth/LICENSE deleted file mode 100644 index 91b5cef..0000000 --- a/vendor/github.com/mattn/go-runewidth/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Yasuhiro Matsumoto - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/mattn/go-runewidth/README.md b/vendor/github.com/mattn/go-runewidth/README.md deleted file mode 100644 index 5e2cfd9..0000000 --- a/vendor/github.com/mattn/go-runewidth/README.md +++ /dev/null @@ -1,27 +0,0 @@ -go-runewidth -============ - -[![Build Status](https://github.com/mattn/go-runewidth/workflows/test/badge.svg?branch=master)](https://github.com/mattn/go-runewidth/actions?query=workflow%3Atest) -[![Codecov](https://codecov.io/gh/mattn/go-runewidth/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-runewidth) -[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth) -[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth) - -Provides functions to get fixed width of the character or string. - -Usage ------ - -```go -runewidth.StringWidth("つのだ☆HIRO") == 12 -``` - - -Author ------- - -Yasuhiro Matsumoto - -License -------- - -under the MIT License: http://mattn.mit-license.org/2013 diff --git a/vendor/github.com/mattn/go-runewidth/runewidth.go b/vendor/github.com/mattn/go-runewidth/runewidth.go deleted file mode 100644 index 7dfbb3b..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth.go +++ /dev/null @@ -1,358 +0,0 @@ -package runewidth - -import ( - "os" - "strings" - - "github.com/rivo/uniseg" -) - -//go:generate go run script/generate.go - -var ( - // EastAsianWidth will be set true if the current locale is CJK - EastAsianWidth bool - - // StrictEmojiNeutral should be set false if handle broken fonts - StrictEmojiNeutral bool = true - - // DefaultCondition is a condition in current locale - DefaultCondition = &Condition{ - EastAsianWidth: false, - StrictEmojiNeutral: true, - } -) - -func init() { - handleEnv() -} - -func handleEnv() { - env := os.Getenv("RUNEWIDTH_EASTASIAN") - if env == "" { - EastAsianWidth = IsEastAsian() - } else { - EastAsianWidth = env == "1" - } - // update DefaultCondition - if DefaultCondition.EastAsianWidth != EastAsianWidth { - DefaultCondition.EastAsianWidth = EastAsianWidth - if len(DefaultCondition.combinedLut) > 0 { - DefaultCondition.combinedLut = DefaultCondition.combinedLut[:0] - CreateLUT() - } - } -} - -type interval struct { - first rune - last rune -} - -type table []interval - -func inTables(r rune, ts ...table) bool { - for _, t := range ts { - if inTable(r, t) { - return true - } - } - return false -} - -func inTable(r rune, t table) bool { - if r < t[0].first { - return false - } - - bot := 0 - top := len(t) - 1 - for top >= bot { - mid := (bot + top) >> 1 - - switch { - case t[mid].last < r: - bot = mid + 1 - case t[mid].first > r: - top = mid - 1 - default: - return true - } - } - - return false -} - -var private = table{ - {0x00E000, 0x00F8FF}, {0x0F0000, 0x0FFFFD}, {0x100000, 0x10FFFD}, -} - -var nonprint = table{ - {0x0000, 0x001F}, {0x007F, 0x009F}, {0x00AD, 0x00AD}, - {0x070F, 0x070F}, {0x180B, 0x180E}, {0x200B, 0x200F}, - {0x2028, 0x202E}, {0x206A, 0x206F}, {0xD800, 0xDFFF}, - {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFB}, {0xFFFE, 0xFFFF}, -} - -// Condition have flag EastAsianWidth whether the current locale is CJK or not. -type Condition struct { - combinedLut []byte - EastAsianWidth bool - StrictEmojiNeutral bool -} - -// NewCondition return new instance of Condition which is current locale. -func NewCondition() *Condition { - return &Condition{ - EastAsianWidth: EastAsianWidth, - StrictEmojiNeutral: StrictEmojiNeutral, - } -} - -// RuneWidth returns the number of cells in r. -// See http://www.unicode.org/reports/tr11/ -func (c *Condition) RuneWidth(r rune) int { - if r < 0 || r > 0x10FFFF { - return 0 - } - if len(c.combinedLut) > 0 { - return int(c.combinedLut[r>>1]>>(uint(r&1)*4)) & 3 - } - // optimized version, verified by TestRuneWidthChecksums() - if !c.EastAsianWidth { - switch { - case r < 0x20: - return 0 - case (r >= 0x7F && r <= 0x9F) || r == 0xAD: // nonprint - return 0 - case r < 0x300: - return 1 - case inTable(r, narrow): - return 1 - case inTables(r, nonprint, combining): - return 0 - case inTable(r, doublewidth): - return 2 - default: - return 1 - } - } else { - switch { - case inTables(r, nonprint, combining): - return 0 - case inTable(r, narrow): - return 1 - case inTables(r, ambiguous, doublewidth): - return 2 - case !c.StrictEmojiNeutral && inTables(r, ambiguous, emoji, narrow): - return 2 - default: - return 1 - } - } -} - -// CreateLUT will create an in-memory lookup table of 557056 bytes for faster operation. -// This should not be called concurrently with other operations on c. -// If options in c is changed, CreateLUT should be called again. -func (c *Condition) CreateLUT() { - const max = 0x110000 - lut := c.combinedLut - if len(c.combinedLut) != 0 { - // Remove so we don't use it. - c.combinedLut = nil - } else { - lut = make([]byte, max/2) - } - for i := range lut { - i32 := int32(i * 2) - x0 := c.RuneWidth(i32) - x1 := c.RuneWidth(i32 + 1) - lut[i] = uint8(x0) | uint8(x1)<<4 - } - c.combinedLut = lut -} - -// StringWidth return width as you can see -func (c *Condition) StringWidth(s string) (width int) { - g := uniseg.NewGraphemes(s) - for g.Next() { - var chWidth int - for _, r := range g.Runes() { - chWidth = c.RuneWidth(r) - if chWidth > 0 { - break // Our best guess at this point is to use the width of the first non-zero-width rune. - } - } - width += chWidth - } - return -} - -// Truncate return string truncated with w cells -func (c *Condition) Truncate(s string, w int, tail string) string { - if c.StringWidth(s) <= w { - return s - } - w -= c.StringWidth(tail) - var width int - pos := len(s) - g := uniseg.NewGraphemes(s) - for g.Next() { - var chWidth int - for _, r := range g.Runes() { - chWidth = c.RuneWidth(r) - if chWidth > 0 { - break // See StringWidth() for details. - } - } - if width+chWidth > w { - pos, _ = g.Positions() - break - } - width += chWidth - } - return s[:pos] + tail -} - -// TruncateLeft cuts w cells from the beginning of the `s`. -func (c *Condition) TruncateLeft(s string, w int, prefix string) string { - if c.StringWidth(s) <= w { - return prefix - } - - var width int - pos := len(s) - - g := uniseg.NewGraphemes(s) - for g.Next() { - var chWidth int - for _, r := range g.Runes() { - chWidth = c.RuneWidth(r) - if chWidth > 0 { - break // See StringWidth() for details. - } - } - - if width+chWidth > w { - if width < w { - _, pos = g.Positions() - prefix += strings.Repeat(" ", width+chWidth-w) - } else { - pos, _ = g.Positions() - } - - break - } - - width += chWidth - } - - return prefix + s[pos:] -} - -// Wrap return string wrapped with w cells -func (c *Condition) Wrap(s string, w int) string { - width := 0 - out := "" - for _, r := range s { - cw := c.RuneWidth(r) - if r == '\n' { - out += string(r) - width = 0 - continue - } else if width+cw > w { - out += "\n" - width = 0 - out += string(r) - width += cw - continue - } - out += string(r) - width += cw - } - return out -} - -// FillLeft return string filled in left by spaces in w cells -func (c *Condition) FillLeft(s string, w int) string { - width := c.StringWidth(s) - count := w - width - if count > 0 { - b := make([]byte, count) - for i := range b { - b[i] = ' ' - } - return string(b) + s - } - return s -} - -// FillRight return string filled in left by spaces in w cells -func (c *Condition) FillRight(s string, w int) string { - width := c.StringWidth(s) - count := w - width - if count > 0 { - b := make([]byte, count) - for i := range b { - b[i] = ' ' - } - return s + string(b) - } - return s -} - -// RuneWidth returns the number of cells in r. -// See http://www.unicode.org/reports/tr11/ -func RuneWidth(r rune) int { - return DefaultCondition.RuneWidth(r) -} - -// IsAmbiguousWidth returns whether is ambiguous width or not. -func IsAmbiguousWidth(r rune) bool { - return inTables(r, private, ambiguous) -} - -// IsNeutralWidth returns whether is neutral width or not. -func IsNeutralWidth(r rune) bool { - return inTable(r, neutral) -} - -// StringWidth return width as you can see -func StringWidth(s string) (width int) { - return DefaultCondition.StringWidth(s) -} - -// Truncate return string truncated with w cells -func Truncate(s string, w int, tail string) string { - return DefaultCondition.Truncate(s, w, tail) -} - -// TruncateLeft cuts w cells from the beginning of the `s`. -func TruncateLeft(s string, w int, prefix string) string { - return DefaultCondition.TruncateLeft(s, w, prefix) -} - -// Wrap return string wrapped with w cells -func Wrap(s string, w int) string { - return DefaultCondition.Wrap(s, w) -} - -// FillLeft return string filled in left by spaces in w cells -func FillLeft(s string, w int) string { - return DefaultCondition.FillLeft(s, w) -} - -// FillRight return string filled in left by spaces in w cells -func FillRight(s string, w int) string { - return DefaultCondition.FillRight(s, w) -} - -// CreateLUT will create an in-memory lookup table of 557055 bytes for faster operation. -// This should not be called concurrently with other operations. -func CreateLUT() { - if len(DefaultCondition.combinedLut) > 0 { - return - } - DefaultCondition.CreateLUT() -} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go b/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go deleted file mode 100644 index 84b6528..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build appengine -// +build appengine - -package runewidth - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - return false -} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_js.go b/vendor/github.com/mattn/go-runewidth/runewidth_js.go deleted file mode 100644 index c2abbc2..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth_js.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build js && !appengine -// +build js,!appengine - -package runewidth - -func IsEastAsian() bool { - // TODO: Implement this for the web. Detect east asian in a compatible way, and return true. - return false -} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_posix.go b/vendor/github.com/mattn/go-runewidth/runewidth_posix.go deleted file mode 100644 index 5a31d73..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth_posix.go +++ /dev/null @@ -1,81 +0,0 @@ -//go:build !windows && !js && !appengine -// +build !windows,!js,!appengine - -package runewidth - -import ( - "os" - "regexp" - "strings" -) - -var reLoc = regexp.MustCompile(`^[a-z][a-z][a-z]?(?:_[A-Z][A-Z])?\.(.+)`) - -var mblenTable = map[string]int{ - "utf-8": 6, - "utf8": 6, - "jis": 8, - "eucjp": 3, - "euckr": 2, - "euccn": 2, - "sjis": 2, - "cp932": 2, - "cp51932": 2, - "cp936": 2, - "cp949": 2, - "cp950": 2, - "big5": 2, - "gbk": 2, - "gb2312": 2, -} - -func isEastAsian(locale string) bool { - charset := strings.ToLower(locale) - r := reLoc.FindStringSubmatch(locale) - if len(r) == 2 { - charset = strings.ToLower(r[1]) - } - - if strings.HasSuffix(charset, "@cjk_narrow") { - return false - } - - for pos, b := range []byte(charset) { - if b == '@' { - charset = charset[:pos] - break - } - } - max := 1 - if m, ok := mblenTable[charset]; ok { - max = m - } - if max > 1 && (charset[0] != 'u' || - strings.HasPrefix(locale, "ja") || - strings.HasPrefix(locale, "ko") || - strings.HasPrefix(locale, "zh")) { - return true - } - return false -} - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - locale := os.Getenv("LC_ALL") - if locale == "" { - locale = os.Getenv("LC_CTYPE") - } - if locale == "" { - locale = os.Getenv("LANG") - } - - // ignore C locale - if locale == "POSIX" || locale == "C" { - return false - } - if len(locale) > 1 && locale[0] == 'C' && (locale[1] == '.' || locale[1] == '-') { - return false - } - - return isEastAsian(locale) -} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_table.go b/vendor/github.com/mattn/go-runewidth/runewidth_table.go deleted file mode 100644 index ad025ad..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth_table.go +++ /dev/null @@ -1,450 +0,0 @@ -// Code generated by script/generate.go. DO NOT EDIT. - -package runewidth - -var combining = table{ - {0x0300, 0x036F}, {0x0483, 0x0489}, {0x07EB, 0x07F3}, - {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0CF3, 0x0CF3}, - {0x0D00, 0x0D01}, {0x135D, 0x135F}, {0x1A7F, 0x1A7F}, - {0x1AB0, 0x1ACE}, {0x1B6B, 0x1B73}, {0x1DC0, 0x1DFF}, - {0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2DE0, 0x2DFF}, - {0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D}, - {0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA8E0, 0xA8F1}, - {0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, {0x10376, 0x1037A}, - {0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x10F82, 0x10F85}, - {0x11300, 0x11301}, {0x1133B, 0x1133C}, {0x11366, 0x1136C}, - {0x11370, 0x11374}, {0x16AF0, 0x16AF4}, {0x1CF00, 0x1CF2D}, - {0x1CF30, 0x1CF46}, {0x1D165, 0x1D169}, {0x1D16D, 0x1D172}, - {0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, - {0x1D242, 0x1D244}, {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, - {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, - {0x1E08F, 0x1E08F}, {0x1E8D0, 0x1E8D6}, -} - -var doublewidth = table{ - {0x1100, 0x115F}, {0x231A, 0x231B}, {0x2329, 0x232A}, - {0x23E9, 0x23EC}, {0x23F0, 0x23F0}, {0x23F3, 0x23F3}, - {0x25FD, 0x25FE}, {0x2614, 0x2615}, {0x2648, 0x2653}, - {0x267F, 0x267F}, {0x2693, 0x2693}, {0x26A1, 0x26A1}, - {0x26AA, 0x26AB}, {0x26BD, 0x26BE}, {0x26C4, 0x26C5}, - {0x26CE, 0x26CE}, {0x26D4, 0x26D4}, {0x26EA, 0x26EA}, - {0x26F2, 0x26F3}, {0x26F5, 0x26F5}, {0x26FA, 0x26FA}, - {0x26FD, 0x26FD}, {0x2705, 0x2705}, {0x270A, 0x270B}, - {0x2728, 0x2728}, {0x274C, 0x274C}, {0x274E, 0x274E}, - {0x2753, 0x2755}, {0x2757, 0x2757}, {0x2795, 0x2797}, - {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, {0x2B1B, 0x2B1C}, - {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99}, - {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x303E}, - {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312F}, - {0x3131, 0x318E}, {0x3190, 0x31E3}, {0x31EF, 0x321E}, - {0x3220, 0x3247}, {0x3250, 0x4DBF}, {0x4E00, 0xA48C}, - {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, - {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52}, - {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, - {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4}, {0x16FF0, 0x16FF1}, - {0x17000, 0x187F7}, {0x18800, 0x18CD5}, {0x18D00, 0x18D08}, - {0x1AFF0, 0x1AFF3}, {0x1AFF5, 0x1AFFB}, {0x1AFFD, 0x1AFFE}, - {0x1B000, 0x1B122}, {0x1B132, 0x1B132}, {0x1B150, 0x1B152}, - {0x1B155, 0x1B155}, {0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, - {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, - {0x1F191, 0x1F19A}, {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, - {0x1F240, 0x1F248}, {0x1F250, 0x1F251}, {0x1F260, 0x1F265}, - {0x1F300, 0x1F320}, {0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, - {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, - {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, - {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, - {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, - {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, - {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, - {0x1F6D5, 0x1F6D7}, {0x1F6DC, 0x1F6DF}, {0x1F6EB, 0x1F6EC}, - {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, {0x1F7F0, 0x1F7F0}, - {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F9FF}, - {0x1FA70, 0x1FA7C}, {0x1FA80, 0x1FA88}, {0x1FA90, 0x1FABD}, - {0x1FABF, 0x1FAC5}, {0x1FACE, 0x1FADB}, {0x1FAE0, 0x1FAE8}, - {0x1FAF0, 0x1FAF8}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, -} - -var ambiguous = table{ - {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8}, - {0x00AA, 0x00AA}, {0x00AD, 0x00AE}, {0x00B0, 0x00B4}, - {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6}, - {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1}, - {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED}, - {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA}, - {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101}, - {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B}, - {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133}, - {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144}, - {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153}, - {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE}, - {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4}, - {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA}, - {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261}, - {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB}, - {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB}, - {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0300, 0x036F}, - {0x0391, 0x03A1}, {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, - {0x03C3, 0x03C9}, {0x0401, 0x0401}, {0x0410, 0x044F}, - {0x0451, 0x0451}, {0x2010, 0x2010}, {0x2013, 0x2016}, - {0x2018, 0x2019}, {0x201C, 0x201D}, {0x2020, 0x2022}, - {0x2024, 0x2027}, {0x2030, 0x2030}, {0x2032, 0x2033}, - {0x2035, 0x2035}, {0x203B, 0x203B}, {0x203E, 0x203E}, - {0x2074, 0x2074}, {0x207F, 0x207F}, {0x2081, 0x2084}, - {0x20AC, 0x20AC}, {0x2103, 0x2103}, {0x2105, 0x2105}, - {0x2109, 0x2109}, {0x2113, 0x2113}, {0x2116, 0x2116}, - {0x2121, 0x2122}, {0x2126, 0x2126}, {0x212B, 0x212B}, - {0x2153, 0x2154}, {0x215B, 0x215E}, {0x2160, 0x216B}, - {0x2170, 0x2179}, {0x2189, 0x2189}, {0x2190, 0x2199}, - {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, {0x21D4, 0x21D4}, - {0x21E7, 0x21E7}, {0x2200, 0x2200}, {0x2202, 0x2203}, - {0x2207, 0x2208}, {0x220B, 0x220B}, {0x220F, 0x220F}, - {0x2211, 0x2211}, {0x2215, 0x2215}, {0x221A, 0x221A}, - {0x221D, 0x2220}, {0x2223, 0x2223}, {0x2225, 0x2225}, - {0x2227, 0x222C}, {0x222E, 0x222E}, {0x2234, 0x2237}, - {0x223C, 0x223D}, {0x2248, 0x2248}, {0x224C, 0x224C}, - {0x2252, 0x2252}, {0x2260, 0x2261}, {0x2264, 0x2267}, - {0x226A, 0x226B}, {0x226E, 0x226F}, {0x2282, 0x2283}, - {0x2286, 0x2287}, {0x2295, 0x2295}, {0x2299, 0x2299}, - {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, {0x2312, 0x2312}, - {0x2460, 0x24E9}, {0x24EB, 0x254B}, {0x2550, 0x2573}, - {0x2580, 0x258F}, {0x2592, 0x2595}, {0x25A0, 0x25A1}, - {0x25A3, 0x25A9}, {0x25B2, 0x25B3}, {0x25B6, 0x25B7}, - {0x25BC, 0x25BD}, {0x25C0, 0x25C1}, {0x25C6, 0x25C8}, - {0x25CB, 0x25CB}, {0x25CE, 0x25D1}, {0x25E2, 0x25E5}, - {0x25EF, 0x25EF}, {0x2605, 0x2606}, {0x2609, 0x2609}, - {0x260E, 0x260F}, {0x261C, 0x261C}, {0x261E, 0x261E}, - {0x2640, 0x2640}, {0x2642, 0x2642}, {0x2660, 0x2661}, - {0x2663, 0x2665}, {0x2667, 0x266A}, {0x266C, 0x266D}, - {0x266F, 0x266F}, {0x269E, 0x269F}, {0x26BF, 0x26BF}, - {0x26C6, 0x26CD}, {0x26CF, 0x26D3}, {0x26D5, 0x26E1}, - {0x26E3, 0x26E3}, {0x26E8, 0x26E9}, {0x26EB, 0x26F1}, - {0x26F4, 0x26F4}, {0x26F6, 0x26F9}, {0x26FB, 0x26FC}, - {0x26FE, 0x26FF}, {0x273D, 0x273D}, {0x2776, 0x277F}, - {0x2B56, 0x2B59}, {0x3248, 0x324F}, {0xE000, 0xF8FF}, - {0xFE00, 0xFE0F}, {0xFFFD, 0xFFFD}, {0x1F100, 0x1F10A}, - {0x1F110, 0x1F12D}, {0x1F130, 0x1F169}, {0x1F170, 0x1F18D}, - {0x1F18F, 0x1F190}, {0x1F19B, 0x1F1AC}, {0xE0100, 0xE01EF}, - {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD}, -} -var narrow = table{ - {0x0020, 0x007E}, {0x00A2, 0x00A3}, {0x00A5, 0x00A6}, - {0x00AC, 0x00AC}, {0x00AF, 0x00AF}, {0x27E6, 0x27ED}, - {0x2985, 0x2986}, -} - -var neutral = table{ - {0x0000, 0x001F}, {0x007F, 0x00A0}, {0x00A9, 0x00A9}, - {0x00AB, 0x00AB}, {0x00B5, 0x00B5}, {0x00BB, 0x00BB}, - {0x00C0, 0x00C5}, {0x00C7, 0x00CF}, {0x00D1, 0x00D6}, - {0x00D9, 0x00DD}, {0x00E2, 0x00E5}, {0x00E7, 0x00E7}, - {0x00EB, 0x00EB}, {0x00EE, 0x00EF}, {0x00F1, 0x00F1}, - {0x00F4, 0x00F6}, {0x00FB, 0x00FB}, {0x00FD, 0x00FD}, - {0x00FF, 0x0100}, {0x0102, 0x0110}, {0x0112, 0x0112}, - {0x0114, 0x011A}, {0x011C, 0x0125}, {0x0128, 0x012A}, - {0x012C, 0x0130}, {0x0134, 0x0137}, {0x0139, 0x013E}, - {0x0143, 0x0143}, {0x0145, 0x0147}, {0x014C, 0x014C}, - {0x014E, 0x0151}, {0x0154, 0x0165}, {0x0168, 0x016A}, - {0x016C, 0x01CD}, {0x01CF, 0x01CF}, {0x01D1, 0x01D1}, - {0x01D3, 0x01D3}, {0x01D5, 0x01D5}, {0x01D7, 0x01D7}, - {0x01D9, 0x01D9}, {0x01DB, 0x01DB}, {0x01DD, 0x0250}, - {0x0252, 0x0260}, {0x0262, 0x02C3}, {0x02C5, 0x02C6}, - {0x02C8, 0x02C8}, {0x02CC, 0x02CC}, {0x02CE, 0x02CF}, - {0x02D1, 0x02D7}, {0x02DC, 0x02DC}, {0x02DE, 0x02DE}, - {0x02E0, 0x02FF}, {0x0370, 0x0377}, {0x037A, 0x037F}, - {0x0384, 0x038A}, {0x038C, 0x038C}, {0x038E, 0x0390}, - {0x03AA, 0x03B0}, {0x03C2, 0x03C2}, {0x03CA, 0x0400}, - {0x0402, 0x040F}, {0x0450, 0x0450}, {0x0452, 0x052F}, - {0x0531, 0x0556}, {0x0559, 0x058A}, {0x058D, 0x058F}, - {0x0591, 0x05C7}, {0x05D0, 0x05EA}, {0x05EF, 0x05F4}, - {0x0600, 0x070D}, {0x070F, 0x074A}, {0x074D, 0x07B1}, - {0x07C0, 0x07FA}, {0x07FD, 0x082D}, {0x0830, 0x083E}, - {0x0840, 0x085B}, {0x085E, 0x085E}, {0x0860, 0x086A}, - {0x0870, 0x088E}, {0x0890, 0x0891}, {0x0898, 0x0983}, - {0x0985, 0x098C}, {0x098F, 0x0990}, {0x0993, 0x09A8}, - {0x09AA, 0x09B0}, {0x09B2, 0x09B2}, {0x09B6, 0x09B9}, - {0x09BC, 0x09C4}, {0x09C7, 0x09C8}, {0x09CB, 0x09CE}, - {0x09D7, 0x09D7}, {0x09DC, 0x09DD}, {0x09DF, 0x09E3}, - {0x09E6, 0x09FE}, {0x0A01, 0x0A03}, {0x0A05, 0x0A0A}, - {0x0A0F, 0x0A10}, {0x0A13, 0x0A28}, {0x0A2A, 0x0A30}, - {0x0A32, 0x0A33}, {0x0A35, 0x0A36}, {0x0A38, 0x0A39}, - {0x0A3C, 0x0A3C}, {0x0A3E, 0x0A42}, {0x0A47, 0x0A48}, - {0x0A4B, 0x0A4D}, {0x0A51, 0x0A51}, {0x0A59, 0x0A5C}, - {0x0A5E, 0x0A5E}, {0x0A66, 0x0A76}, {0x0A81, 0x0A83}, - {0x0A85, 0x0A8D}, {0x0A8F, 0x0A91}, {0x0A93, 0x0AA8}, - {0x0AAA, 0x0AB0}, {0x0AB2, 0x0AB3}, {0x0AB5, 0x0AB9}, - {0x0ABC, 0x0AC5}, {0x0AC7, 0x0AC9}, {0x0ACB, 0x0ACD}, - {0x0AD0, 0x0AD0}, {0x0AE0, 0x0AE3}, {0x0AE6, 0x0AF1}, - {0x0AF9, 0x0AFF}, {0x0B01, 0x0B03}, {0x0B05, 0x0B0C}, - {0x0B0F, 0x0B10}, {0x0B13, 0x0B28}, {0x0B2A, 0x0B30}, - {0x0B32, 0x0B33}, {0x0B35, 0x0B39}, {0x0B3C, 0x0B44}, - {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D}, {0x0B55, 0x0B57}, - {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63}, {0x0B66, 0x0B77}, - {0x0B82, 0x0B83}, {0x0B85, 0x0B8A}, {0x0B8E, 0x0B90}, - {0x0B92, 0x0B95}, {0x0B99, 0x0B9A}, {0x0B9C, 0x0B9C}, - {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4}, {0x0BA8, 0x0BAA}, - {0x0BAE, 0x0BB9}, {0x0BBE, 0x0BC2}, {0x0BC6, 0x0BC8}, - {0x0BCA, 0x0BCD}, {0x0BD0, 0x0BD0}, {0x0BD7, 0x0BD7}, - {0x0BE6, 0x0BFA}, {0x0C00, 0x0C0C}, {0x0C0E, 0x0C10}, - {0x0C12, 0x0C28}, {0x0C2A, 0x0C39}, {0x0C3C, 0x0C44}, - {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, {0x0C55, 0x0C56}, - {0x0C58, 0x0C5A}, {0x0C5D, 0x0C5D}, {0x0C60, 0x0C63}, - {0x0C66, 0x0C6F}, {0x0C77, 0x0C8C}, {0x0C8E, 0x0C90}, - {0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9}, - {0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD}, - {0x0CD5, 0x0CD6}, {0x0CDD, 0x0CDE}, {0x0CE0, 0x0CE3}, - {0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF3}, {0x0D00, 0x0D0C}, - {0x0D0E, 0x0D10}, {0x0D12, 0x0D44}, {0x0D46, 0x0D48}, - {0x0D4A, 0x0D4F}, {0x0D54, 0x0D63}, {0x0D66, 0x0D7F}, - {0x0D81, 0x0D83}, {0x0D85, 0x0D96}, {0x0D9A, 0x0DB1}, - {0x0DB3, 0x0DBB}, {0x0DBD, 0x0DBD}, {0x0DC0, 0x0DC6}, - {0x0DCA, 0x0DCA}, {0x0DCF, 0x0DD4}, {0x0DD6, 0x0DD6}, - {0x0DD8, 0x0DDF}, {0x0DE6, 0x0DEF}, {0x0DF2, 0x0DF4}, - {0x0E01, 0x0E3A}, {0x0E3F, 0x0E5B}, {0x0E81, 0x0E82}, - {0x0E84, 0x0E84}, {0x0E86, 0x0E8A}, {0x0E8C, 0x0EA3}, - {0x0EA5, 0x0EA5}, {0x0EA7, 0x0EBD}, {0x0EC0, 0x0EC4}, - {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECE}, {0x0ED0, 0x0ED9}, - {0x0EDC, 0x0EDF}, {0x0F00, 0x0F47}, {0x0F49, 0x0F6C}, - {0x0F71, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FBE, 0x0FCC}, - {0x0FCE, 0x0FDA}, {0x1000, 0x10C5}, {0x10C7, 0x10C7}, - {0x10CD, 0x10CD}, {0x10D0, 0x10FF}, {0x1160, 0x1248}, - {0x124A, 0x124D}, {0x1250, 0x1256}, {0x1258, 0x1258}, - {0x125A, 0x125D}, {0x1260, 0x1288}, {0x128A, 0x128D}, - {0x1290, 0x12B0}, {0x12B2, 0x12B5}, {0x12B8, 0x12BE}, - {0x12C0, 0x12C0}, {0x12C2, 0x12C5}, {0x12C8, 0x12D6}, - {0x12D8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135A}, - {0x135D, 0x137C}, {0x1380, 0x1399}, {0x13A0, 0x13F5}, - {0x13F8, 0x13FD}, {0x1400, 0x169C}, {0x16A0, 0x16F8}, - {0x1700, 0x1715}, {0x171F, 0x1736}, {0x1740, 0x1753}, - {0x1760, 0x176C}, {0x176E, 0x1770}, {0x1772, 0x1773}, - {0x1780, 0x17DD}, {0x17E0, 0x17E9}, {0x17F0, 0x17F9}, - {0x1800, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18AA}, - {0x18B0, 0x18F5}, {0x1900, 0x191E}, {0x1920, 0x192B}, - {0x1930, 0x193B}, {0x1940, 0x1940}, {0x1944, 0x196D}, - {0x1970, 0x1974}, {0x1980, 0x19AB}, {0x19B0, 0x19C9}, - {0x19D0, 0x19DA}, {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, - {0x1A60, 0x1A7C}, {0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, - {0x1AA0, 0x1AAD}, {0x1AB0, 0x1ACE}, {0x1B00, 0x1B4C}, - {0x1B50, 0x1B7E}, {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, - {0x1C3B, 0x1C49}, {0x1C4D, 0x1C88}, {0x1C90, 0x1CBA}, - {0x1CBD, 0x1CC7}, {0x1CD0, 0x1CFA}, {0x1D00, 0x1F15}, - {0x1F18, 0x1F1D}, {0x1F20, 0x1F45}, {0x1F48, 0x1F4D}, - {0x1F50, 0x1F57}, {0x1F59, 0x1F59}, {0x1F5B, 0x1F5B}, - {0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D}, {0x1F80, 0x1FB4}, - {0x1FB6, 0x1FC4}, {0x1FC6, 0x1FD3}, {0x1FD6, 0x1FDB}, - {0x1FDD, 0x1FEF}, {0x1FF2, 0x1FF4}, {0x1FF6, 0x1FFE}, - {0x2000, 0x200F}, {0x2011, 0x2012}, {0x2017, 0x2017}, - {0x201A, 0x201B}, {0x201E, 0x201F}, {0x2023, 0x2023}, - {0x2028, 0x202F}, {0x2031, 0x2031}, {0x2034, 0x2034}, - {0x2036, 0x203A}, {0x203C, 0x203D}, {0x203F, 0x2064}, - {0x2066, 0x2071}, {0x2075, 0x207E}, {0x2080, 0x2080}, - {0x2085, 0x208E}, {0x2090, 0x209C}, {0x20A0, 0x20A8}, - {0x20AA, 0x20AB}, {0x20AD, 0x20C0}, {0x20D0, 0x20F0}, - {0x2100, 0x2102}, {0x2104, 0x2104}, {0x2106, 0x2108}, - {0x210A, 0x2112}, {0x2114, 0x2115}, {0x2117, 0x2120}, - {0x2123, 0x2125}, {0x2127, 0x212A}, {0x212C, 0x2152}, - {0x2155, 0x215A}, {0x215F, 0x215F}, {0x216C, 0x216F}, - {0x217A, 0x2188}, {0x218A, 0x218B}, {0x219A, 0x21B7}, - {0x21BA, 0x21D1}, {0x21D3, 0x21D3}, {0x21D5, 0x21E6}, - {0x21E8, 0x21FF}, {0x2201, 0x2201}, {0x2204, 0x2206}, - {0x2209, 0x220A}, {0x220C, 0x220E}, {0x2210, 0x2210}, - {0x2212, 0x2214}, {0x2216, 0x2219}, {0x221B, 0x221C}, - {0x2221, 0x2222}, {0x2224, 0x2224}, {0x2226, 0x2226}, - {0x222D, 0x222D}, {0x222F, 0x2233}, {0x2238, 0x223B}, - {0x223E, 0x2247}, {0x2249, 0x224B}, {0x224D, 0x2251}, - {0x2253, 0x225F}, {0x2262, 0x2263}, {0x2268, 0x2269}, - {0x226C, 0x226D}, {0x2270, 0x2281}, {0x2284, 0x2285}, - {0x2288, 0x2294}, {0x2296, 0x2298}, {0x229A, 0x22A4}, - {0x22A6, 0x22BE}, {0x22C0, 0x2311}, {0x2313, 0x2319}, - {0x231C, 0x2328}, {0x232B, 0x23E8}, {0x23ED, 0x23EF}, - {0x23F1, 0x23F2}, {0x23F4, 0x2426}, {0x2440, 0x244A}, - {0x24EA, 0x24EA}, {0x254C, 0x254F}, {0x2574, 0x257F}, - {0x2590, 0x2591}, {0x2596, 0x259F}, {0x25A2, 0x25A2}, - {0x25AA, 0x25B1}, {0x25B4, 0x25B5}, {0x25B8, 0x25BB}, - {0x25BE, 0x25BF}, {0x25C2, 0x25C5}, {0x25C9, 0x25CA}, - {0x25CC, 0x25CD}, {0x25D2, 0x25E1}, {0x25E6, 0x25EE}, - {0x25F0, 0x25FC}, {0x25FF, 0x2604}, {0x2607, 0x2608}, - {0x260A, 0x260D}, {0x2610, 0x2613}, {0x2616, 0x261B}, - {0x261D, 0x261D}, {0x261F, 0x263F}, {0x2641, 0x2641}, - {0x2643, 0x2647}, {0x2654, 0x265F}, {0x2662, 0x2662}, - {0x2666, 0x2666}, {0x266B, 0x266B}, {0x266E, 0x266E}, - {0x2670, 0x267E}, {0x2680, 0x2692}, {0x2694, 0x269D}, - {0x26A0, 0x26A0}, {0x26A2, 0x26A9}, {0x26AC, 0x26BC}, - {0x26C0, 0x26C3}, {0x26E2, 0x26E2}, {0x26E4, 0x26E7}, - {0x2700, 0x2704}, {0x2706, 0x2709}, {0x270C, 0x2727}, - {0x2729, 0x273C}, {0x273E, 0x274B}, {0x274D, 0x274D}, - {0x274F, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x2775}, - {0x2780, 0x2794}, {0x2798, 0x27AF}, {0x27B1, 0x27BE}, - {0x27C0, 0x27E5}, {0x27EE, 0x2984}, {0x2987, 0x2B1A}, - {0x2B1D, 0x2B4F}, {0x2B51, 0x2B54}, {0x2B5A, 0x2B73}, - {0x2B76, 0x2B95}, {0x2B97, 0x2CF3}, {0x2CF9, 0x2D25}, - {0x2D27, 0x2D27}, {0x2D2D, 0x2D2D}, {0x2D30, 0x2D67}, - {0x2D6F, 0x2D70}, {0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6}, - {0x2DA8, 0x2DAE}, {0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE}, - {0x2DC0, 0x2DC6}, {0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6}, - {0x2DD8, 0x2DDE}, {0x2DE0, 0x2E5D}, {0x303F, 0x303F}, - {0x4DC0, 0x4DFF}, {0xA4D0, 0xA62B}, {0xA640, 0xA6F7}, - {0xA700, 0xA7CA}, {0xA7D0, 0xA7D1}, {0xA7D3, 0xA7D3}, - {0xA7D5, 0xA7D9}, {0xA7F2, 0xA82C}, {0xA830, 0xA839}, - {0xA840, 0xA877}, {0xA880, 0xA8C5}, {0xA8CE, 0xA8D9}, - {0xA8E0, 0xA953}, {0xA95F, 0xA95F}, {0xA980, 0xA9CD}, - {0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE}, {0xAA00, 0xAA36}, - {0xAA40, 0xAA4D}, {0xAA50, 0xAA59}, {0xAA5C, 0xAAC2}, - {0xAADB, 0xAAF6}, {0xAB01, 0xAB06}, {0xAB09, 0xAB0E}, - {0xAB11, 0xAB16}, {0xAB20, 0xAB26}, {0xAB28, 0xAB2E}, - {0xAB30, 0xAB6B}, {0xAB70, 0xABED}, {0xABF0, 0xABF9}, - {0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB}, {0xD800, 0xDFFF}, - {0xFB00, 0xFB06}, {0xFB13, 0xFB17}, {0xFB1D, 0xFB36}, - {0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E}, {0xFB40, 0xFB41}, - {0xFB43, 0xFB44}, {0xFB46, 0xFBC2}, {0xFBD3, 0xFD8F}, - {0xFD92, 0xFDC7}, {0xFDCF, 0xFDCF}, {0xFDF0, 0xFDFF}, - {0xFE20, 0xFE2F}, {0xFE70, 0xFE74}, {0xFE76, 0xFEFC}, - {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC}, {0x10000, 0x1000B}, - {0x1000D, 0x10026}, {0x10028, 0x1003A}, {0x1003C, 0x1003D}, - {0x1003F, 0x1004D}, {0x10050, 0x1005D}, {0x10080, 0x100FA}, - {0x10100, 0x10102}, {0x10107, 0x10133}, {0x10137, 0x1018E}, - {0x10190, 0x1019C}, {0x101A0, 0x101A0}, {0x101D0, 0x101FD}, - {0x10280, 0x1029C}, {0x102A0, 0x102D0}, {0x102E0, 0x102FB}, - {0x10300, 0x10323}, {0x1032D, 0x1034A}, {0x10350, 0x1037A}, - {0x10380, 0x1039D}, {0x1039F, 0x103C3}, {0x103C8, 0x103D5}, - {0x10400, 0x1049D}, {0x104A0, 0x104A9}, {0x104B0, 0x104D3}, - {0x104D8, 0x104FB}, {0x10500, 0x10527}, {0x10530, 0x10563}, - {0x1056F, 0x1057A}, {0x1057C, 0x1058A}, {0x1058C, 0x10592}, - {0x10594, 0x10595}, {0x10597, 0x105A1}, {0x105A3, 0x105B1}, - {0x105B3, 0x105B9}, {0x105BB, 0x105BC}, {0x10600, 0x10736}, - {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, - {0x10787, 0x107B0}, {0x107B2, 0x107BA}, {0x10800, 0x10805}, - {0x10808, 0x10808}, {0x1080A, 0x10835}, {0x10837, 0x10838}, - {0x1083C, 0x1083C}, {0x1083F, 0x10855}, {0x10857, 0x1089E}, - {0x108A7, 0x108AF}, {0x108E0, 0x108F2}, {0x108F4, 0x108F5}, - {0x108FB, 0x1091B}, {0x1091F, 0x10939}, {0x1093F, 0x1093F}, - {0x10980, 0x109B7}, {0x109BC, 0x109CF}, {0x109D2, 0x10A03}, - {0x10A05, 0x10A06}, {0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, - {0x10A19, 0x10A35}, {0x10A38, 0x10A3A}, {0x10A3F, 0x10A48}, - {0x10A50, 0x10A58}, {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, - {0x10AEB, 0x10AF6}, {0x10B00, 0x10B35}, {0x10B39, 0x10B55}, - {0x10B58, 0x10B72}, {0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, - {0x10BA9, 0x10BAF}, {0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, - {0x10CC0, 0x10CF2}, {0x10CFA, 0x10D27}, {0x10D30, 0x10D39}, - {0x10E60, 0x10E7E}, {0x10E80, 0x10EA9}, {0x10EAB, 0x10EAD}, - {0x10EB0, 0x10EB1}, {0x10EFD, 0x10F27}, {0x10F30, 0x10F59}, - {0x10F70, 0x10F89}, {0x10FB0, 0x10FCB}, {0x10FE0, 0x10FF6}, - {0x11000, 0x1104D}, {0x11052, 0x11075}, {0x1107F, 0x110C2}, - {0x110CD, 0x110CD}, {0x110D0, 0x110E8}, {0x110F0, 0x110F9}, - {0x11100, 0x11134}, {0x11136, 0x11147}, {0x11150, 0x11176}, - {0x11180, 0x111DF}, {0x111E1, 0x111F4}, {0x11200, 0x11211}, - {0x11213, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, - {0x1128A, 0x1128D}, {0x1128F, 0x1129D}, {0x1129F, 0x112A9}, - {0x112B0, 0x112EA}, {0x112F0, 0x112F9}, {0x11300, 0x11303}, - {0x11305, 0x1130C}, {0x1130F, 0x11310}, {0x11313, 0x11328}, - {0x1132A, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, - {0x1133B, 0x11344}, {0x11347, 0x11348}, {0x1134B, 0x1134D}, - {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135D, 0x11363}, - {0x11366, 0x1136C}, {0x11370, 0x11374}, {0x11400, 0x1145B}, - {0x1145D, 0x11461}, {0x11480, 0x114C7}, {0x114D0, 0x114D9}, - {0x11580, 0x115B5}, {0x115B8, 0x115DD}, {0x11600, 0x11644}, - {0x11650, 0x11659}, {0x11660, 0x1166C}, {0x11680, 0x116B9}, - {0x116C0, 0x116C9}, {0x11700, 0x1171A}, {0x1171D, 0x1172B}, - {0x11730, 0x11746}, {0x11800, 0x1183B}, {0x118A0, 0x118F2}, - {0x118FF, 0x11906}, {0x11909, 0x11909}, {0x1190C, 0x11913}, - {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, - {0x1193B, 0x11946}, {0x11950, 0x11959}, {0x119A0, 0x119A7}, - {0x119AA, 0x119D7}, {0x119DA, 0x119E4}, {0x11A00, 0x11A47}, - {0x11A50, 0x11AA2}, {0x11AB0, 0x11AF8}, {0x11B00, 0x11B09}, - {0x11C00, 0x11C08}, {0x11C0A, 0x11C36}, {0x11C38, 0x11C45}, - {0x11C50, 0x11C6C}, {0x11C70, 0x11C8F}, {0x11C92, 0x11CA7}, - {0x11CA9, 0x11CB6}, {0x11D00, 0x11D06}, {0x11D08, 0x11D09}, - {0x11D0B, 0x11D36}, {0x11D3A, 0x11D3A}, {0x11D3C, 0x11D3D}, - {0x11D3F, 0x11D47}, {0x11D50, 0x11D59}, {0x11D60, 0x11D65}, - {0x11D67, 0x11D68}, {0x11D6A, 0x11D8E}, {0x11D90, 0x11D91}, - {0x11D93, 0x11D98}, {0x11DA0, 0x11DA9}, {0x11EE0, 0x11EF8}, - {0x11F00, 0x11F10}, {0x11F12, 0x11F3A}, {0x11F3E, 0x11F59}, - {0x11FB0, 0x11FB0}, {0x11FC0, 0x11FF1}, {0x11FFF, 0x12399}, - {0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543}, - {0x12F90, 0x12FF2}, {0x13000, 0x13455}, {0x14400, 0x14646}, - {0x16800, 0x16A38}, {0x16A40, 0x16A5E}, {0x16A60, 0x16A69}, - {0x16A6E, 0x16ABE}, {0x16AC0, 0x16AC9}, {0x16AD0, 0x16AED}, - {0x16AF0, 0x16AF5}, {0x16B00, 0x16B45}, {0x16B50, 0x16B59}, - {0x16B5B, 0x16B61}, {0x16B63, 0x16B77}, {0x16B7D, 0x16B8F}, - {0x16E40, 0x16E9A}, {0x16F00, 0x16F4A}, {0x16F4F, 0x16F87}, - {0x16F8F, 0x16F9F}, {0x1BC00, 0x1BC6A}, {0x1BC70, 0x1BC7C}, - {0x1BC80, 0x1BC88}, {0x1BC90, 0x1BC99}, {0x1BC9C, 0x1BCA3}, - {0x1CF00, 0x1CF2D}, {0x1CF30, 0x1CF46}, {0x1CF50, 0x1CFC3}, - {0x1D000, 0x1D0F5}, {0x1D100, 0x1D126}, {0x1D129, 0x1D1EA}, - {0x1D200, 0x1D245}, {0x1D2C0, 0x1D2D3}, {0x1D2E0, 0x1D2F3}, - {0x1D300, 0x1D356}, {0x1D360, 0x1D378}, {0x1D400, 0x1D454}, - {0x1D456, 0x1D49C}, {0x1D49E, 0x1D49F}, {0x1D4A2, 0x1D4A2}, - {0x1D4A5, 0x1D4A6}, {0x1D4A9, 0x1D4AC}, {0x1D4AE, 0x1D4B9}, - {0x1D4BB, 0x1D4BB}, {0x1D4BD, 0x1D4C3}, {0x1D4C5, 0x1D505}, - {0x1D507, 0x1D50A}, {0x1D50D, 0x1D514}, {0x1D516, 0x1D51C}, - {0x1D51E, 0x1D539}, {0x1D53B, 0x1D53E}, {0x1D540, 0x1D544}, - {0x1D546, 0x1D546}, {0x1D54A, 0x1D550}, {0x1D552, 0x1D6A5}, - {0x1D6A8, 0x1D7CB}, {0x1D7CE, 0x1DA8B}, {0x1DA9B, 0x1DA9F}, - {0x1DAA1, 0x1DAAF}, {0x1DF00, 0x1DF1E}, {0x1DF25, 0x1DF2A}, - {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, - {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, {0x1E030, 0x1E06D}, - {0x1E08F, 0x1E08F}, {0x1E100, 0x1E12C}, {0x1E130, 0x1E13D}, - {0x1E140, 0x1E149}, {0x1E14E, 0x1E14F}, {0x1E290, 0x1E2AE}, - {0x1E2C0, 0x1E2F9}, {0x1E2FF, 0x1E2FF}, {0x1E4D0, 0x1E4F9}, - {0x1E7E0, 0x1E7E6}, {0x1E7E8, 0x1E7EB}, {0x1E7ED, 0x1E7EE}, - {0x1E7F0, 0x1E7FE}, {0x1E800, 0x1E8C4}, {0x1E8C7, 0x1E8D6}, - {0x1E900, 0x1E94B}, {0x1E950, 0x1E959}, {0x1E95E, 0x1E95F}, - {0x1EC71, 0x1ECB4}, {0x1ED01, 0x1ED3D}, {0x1EE00, 0x1EE03}, - {0x1EE05, 0x1EE1F}, {0x1EE21, 0x1EE22}, {0x1EE24, 0x1EE24}, - {0x1EE27, 0x1EE27}, {0x1EE29, 0x1EE32}, {0x1EE34, 0x1EE37}, - {0x1EE39, 0x1EE39}, {0x1EE3B, 0x1EE3B}, {0x1EE42, 0x1EE42}, - {0x1EE47, 0x1EE47}, {0x1EE49, 0x1EE49}, {0x1EE4B, 0x1EE4B}, - {0x1EE4D, 0x1EE4F}, {0x1EE51, 0x1EE52}, {0x1EE54, 0x1EE54}, - {0x1EE57, 0x1EE57}, {0x1EE59, 0x1EE59}, {0x1EE5B, 0x1EE5B}, - {0x1EE5D, 0x1EE5D}, {0x1EE5F, 0x1EE5F}, {0x1EE61, 0x1EE62}, - {0x1EE64, 0x1EE64}, {0x1EE67, 0x1EE6A}, {0x1EE6C, 0x1EE72}, - {0x1EE74, 0x1EE77}, {0x1EE79, 0x1EE7C}, {0x1EE7E, 0x1EE7E}, - {0x1EE80, 0x1EE89}, {0x1EE8B, 0x1EE9B}, {0x1EEA1, 0x1EEA3}, - {0x1EEA5, 0x1EEA9}, {0x1EEAB, 0x1EEBB}, {0x1EEF0, 0x1EEF1}, - {0x1F000, 0x1F003}, {0x1F005, 0x1F02B}, {0x1F030, 0x1F093}, - {0x1F0A0, 0x1F0AE}, {0x1F0B1, 0x1F0BF}, {0x1F0C1, 0x1F0CE}, - {0x1F0D1, 0x1F0F5}, {0x1F10B, 0x1F10F}, {0x1F12E, 0x1F12F}, - {0x1F16A, 0x1F16F}, {0x1F1AD, 0x1F1AD}, {0x1F1E6, 0x1F1FF}, - {0x1F321, 0x1F32C}, {0x1F336, 0x1F336}, {0x1F37D, 0x1F37D}, - {0x1F394, 0x1F39F}, {0x1F3CB, 0x1F3CE}, {0x1F3D4, 0x1F3DF}, - {0x1F3F1, 0x1F3F3}, {0x1F3F5, 0x1F3F7}, {0x1F43F, 0x1F43F}, - {0x1F441, 0x1F441}, {0x1F4FD, 0x1F4FE}, {0x1F53E, 0x1F54A}, - {0x1F54F, 0x1F54F}, {0x1F568, 0x1F579}, {0x1F57B, 0x1F594}, - {0x1F597, 0x1F5A3}, {0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F}, - {0x1F6C6, 0x1F6CB}, {0x1F6CD, 0x1F6CF}, {0x1F6D3, 0x1F6D4}, - {0x1F6E0, 0x1F6EA}, {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F776}, - {0x1F77B, 0x1F7D9}, {0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, - {0x1F850, 0x1F859}, {0x1F860, 0x1F887}, {0x1F890, 0x1F8AD}, - {0x1F8B0, 0x1F8B1}, {0x1F900, 0x1F90B}, {0x1F93B, 0x1F93B}, - {0x1F946, 0x1F946}, {0x1FA00, 0x1FA53}, {0x1FA60, 0x1FA6D}, - {0x1FB00, 0x1FB92}, {0x1FB94, 0x1FBCA}, {0x1FBF0, 0x1FBF9}, - {0xE0001, 0xE0001}, {0xE0020, 0xE007F}, -} - -var emoji = table{ - {0x203C, 0x203C}, {0x2049, 0x2049}, {0x2122, 0x2122}, - {0x2139, 0x2139}, {0x2194, 0x2199}, {0x21A9, 0x21AA}, - {0x231A, 0x231B}, {0x2328, 0x2328}, {0x2388, 0x2388}, - {0x23CF, 0x23CF}, {0x23E9, 0x23F3}, {0x23F8, 0x23FA}, - {0x24C2, 0x24C2}, {0x25AA, 0x25AB}, {0x25B6, 0x25B6}, - {0x25C0, 0x25C0}, {0x25FB, 0x25FE}, {0x2600, 0x2605}, - {0x2607, 0x2612}, {0x2614, 0x2685}, {0x2690, 0x2705}, - {0x2708, 0x2712}, {0x2714, 0x2714}, {0x2716, 0x2716}, - {0x271D, 0x271D}, {0x2721, 0x2721}, {0x2728, 0x2728}, - {0x2733, 0x2734}, {0x2744, 0x2744}, {0x2747, 0x2747}, - {0x274C, 0x274C}, {0x274E, 0x274E}, {0x2753, 0x2755}, - {0x2757, 0x2757}, {0x2763, 0x2767}, {0x2795, 0x2797}, - {0x27A1, 0x27A1}, {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, - {0x2934, 0x2935}, {0x2B05, 0x2B07}, {0x2B1B, 0x2B1C}, - {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x3030, 0x3030}, - {0x303D, 0x303D}, {0x3297, 0x3297}, {0x3299, 0x3299}, - {0x1F000, 0x1F0FF}, {0x1F10D, 0x1F10F}, {0x1F12F, 0x1F12F}, - {0x1F16C, 0x1F171}, {0x1F17E, 0x1F17F}, {0x1F18E, 0x1F18E}, - {0x1F191, 0x1F19A}, {0x1F1AD, 0x1F1E5}, {0x1F201, 0x1F20F}, - {0x1F21A, 0x1F21A}, {0x1F22F, 0x1F22F}, {0x1F232, 0x1F23A}, - {0x1F23C, 0x1F23F}, {0x1F249, 0x1F3FA}, {0x1F400, 0x1F53D}, - {0x1F546, 0x1F64F}, {0x1F680, 0x1F6FF}, {0x1F774, 0x1F77F}, - {0x1F7D5, 0x1F7FF}, {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F}, - {0x1F85A, 0x1F85F}, {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F8FF}, - {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1FAFF}, - {0x1FC00, 0x1FFFD}, -} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_windows.go b/vendor/github.com/mattn/go-runewidth/runewidth_windows.go deleted file mode 100644 index 5f987a3..0000000 --- a/vendor/github.com/mattn/go-runewidth/runewidth_windows.go +++ /dev/null @@ -1,28 +0,0 @@ -//go:build windows && !appengine -// +build windows,!appengine - -package runewidth - -import ( - "syscall" -) - -var ( - kernel32 = syscall.NewLazyDLL("kernel32") - procGetConsoleOutputCP = kernel32.NewProc("GetConsoleOutputCP") -) - -// IsEastAsian return true if the current locale is CJK -func IsEastAsian() bool { - r1, _, _ := procGetConsoleOutputCP.Call() - if r1 == 0 { - return false - } - - switch int(r1) { - case 932, 51932, 936, 949, 950: - return true - } - - return false -} diff --git a/vendor/github.com/olekukonko/tablewriter/.gitignore b/vendor/github.com/olekukonko/tablewriter/.gitignore deleted file mode 100644 index b66cec6..0000000 --- a/vendor/github.com/olekukonko/tablewriter/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) -### Go template -# Binaries for programs and plugins -*.exe -*.exe~ -*.dll -*.so -*.dylib - -# Test binary, build with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - diff --git a/vendor/github.com/olekukonko/tablewriter/.travis.yml b/vendor/github.com/olekukonko/tablewriter/.travis.yml deleted file mode 100644 index 366d48a..0000000 --- a/vendor/github.com/olekukonko/tablewriter/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: go -arch: - - ppc64le - - amd64 -go: - - 1.3 - - 1.4 - - 1.5 - - 1.6 - - 1.7 - - 1.8 - - 1.9 - - "1.10" - - tip -jobs: - exclude : - - arch : ppc64le - go : - - 1.3 - - arch : ppc64le - go : - - 1.4 diff --git a/vendor/github.com/olekukonko/tablewriter/LICENSE.md b/vendor/github.com/olekukonko/tablewriter/LICENSE.md deleted file mode 100644 index a0769b5..0000000 --- a/vendor/github.com/olekukonko/tablewriter/LICENSE.md +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2014 by Oleku Konko - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/olekukonko/tablewriter/README.md b/vendor/github.com/olekukonko/tablewriter/README.md deleted file mode 100644 index f06530d..0000000 --- a/vendor/github.com/olekukonko/tablewriter/README.md +++ /dev/null @@ -1,431 +0,0 @@ -ASCII Table Writer -========= - -[![Build Status](https://travis-ci.org/olekukonko/tablewriter.png?branch=master)](https://travis-ci.org/olekukonko/tablewriter) -[![Total views](https://img.shields.io/sourcegraph/rrc/github.com/olekukonko/tablewriter.svg)](https://sourcegraph.com/github.com/olekukonko/tablewriter) -[![Godoc](https://godoc.org/github.com/olekukonko/tablewriter?status.svg)](https://godoc.org/github.com/olekukonko/tablewriter) - -Generate ASCII table on the fly ... Installation is simple as - - go get github.com/olekukonko/tablewriter - - -#### Features -- Automatic Padding -- Support Multiple Lines -- Supports Alignment -- Support Custom Separators -- Automatic Alignment of numbers & percentage -- Write directly to http , file etc via `io.Writer` -- Read directly from CSV file -- Optional row line via `SetRowLine` -- Normalise table header -- Make CSV Headers optional -- Enable or disable table border -- Set custom footer support -- Optional identical cells merging -- Set custom caption -- Optional reflowing of paragraphs in multi-line cells. - -#### Example 1 - Basic -```go -data := [][]string{ - []string{"A", "The Good", "500"}, - []string{"B", "The Very very Bad Man", "288"}, - []string{"C", "The Ugly", "120"}, - []string{"D", "The Gopher", "800"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Name", "Sign", "Rating"}) - -for _, v := range data { - table.Append(v) -} -table.Render() // Send output -``` - -##### Output 1 -``` -+------+-----------------------+--------+ -| NAME | SIGN | RATING | -+------+-----------------------+--------+ -| A | The Good | 500 | -| B | The Very very Bad Man | 288 | -| C | The Ugly | 120 | -| D | The Gopher | 800 | -+------+-----------------------+--------+ -``` - -#### Example 2 - Without Border / Footer / Bulk Append -```go -data := [][]string{ - []string{"1/1/2014", "Domain name", "2233", "$10.98"}, - []string{"1/1/2014", "January Hosting", "2233", "$54.95"}, - []string{"1/4/2014", "February Hosting", "2233", "$51.00"}, - []string{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Date", "Description", "CV2", "Amount"}) -table.SetFooter([]string{"", "", "Total", "$146.93"}) // Add Footer -table.SetBorder(false) // Set Border to false -table.AppendBulk(data) // Add Bulk Data -table.Render() -``` - -##### Output 2 -``` - - DATE | DESCRIPTION | CV2 | AMOUNT ------------+--------------------------+-------+---------- - 1/1/2014 | Domain name | 2233 | $10.98 - 1/1/2014 | January Hosting | 2233 | $54.95 - 1/4/2014 | February Hosting | 2233 | $51.00 - 1/4/2014 | February Extra Bandwidth | 2233 | $30.00 ------------+--------------------------+-------+---------- - TOTAL | $146 93 - --------+---------- - -``` - - -#### Example 3 - CSV -```go -table, _ := tablewriter.NewCSV(os.Stdout, "testdata/test_info.csv", true) -table.SetAlignment(tablewriter.ALIGN_LEFT) // Set Alignment -table.Render() -``` - -##### Output 3 -``` -+----------+--------------+------+-----+---------+----------------+ -| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA | -+----------+--------------+------+-----+---------+----------------+ -| user_id | smallint(5) | NO | PRI | NULL | auto_increment | -| username | varchar(10) | NO | | NULL | | -| password | varchar(100) | NO | | NULL | | -+----------+--------------+------+-----+---------+----------------+ -``` - -#### Example 4 - Custom Separator -```go -table, _ := tablewriter.NewCSV(os.Stdout, "testdata/test.csv", true) -table.SetRowLine(true) // Enable row line - -// Change table lines -table.SetCenterSeparator("*") -table.SetColumnSeparator("╪") -table.SetRowSeparator("-") - -table.SetAlignment(tablewriter.ALIGN_LEFT) -table.Render() -``` - -##### Output 4 -``` -*------------*-----------*---------* -╪ FIRST NAME ╪ LAST NAME ╪ SSN ╪ -*------------*-----------*---------* -╪ John ╪ Barry ╪ 123456 ╪ -*------------*-----------*---------* -╪ Kathy ╪ Smith ╪ 687987 ╪ -*------------*-----------*---------* -╪ Bob ╪ McCornick ╪ 3979870 ╪ -*------------*-----------*---------* -``` - -#### Example 5 - Markdown Format -```go -data := [][]string{ - []string{"1/1/2014", "Domain name", "2233", "$10.98"}, - []string{"1/1/2014", "January Hosting", "2233", "$54.95"}, - []string{"1/4/2014", "February Hosting", "2233", "$51.00"}, - []string{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Date", "Description", "CV2", "Amount"}) -table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false}) -table.SetCenterSeparator("|") -table.AppendBulk(data) // Add Bulk Data -table.Render() -``` - -##### Output 5 -``` -| DATE | DESCRIPTION | CV2 | AMOUNT | -|----------|--------------------------|------|--------| -| 1/1/2014 | Domain name | 2233 | $10.98 | -| 1/1/2014 | January Hosting | 2233 | $54.95 | -| 1/4/2014 | February Hosting | 2233 | $51.00 | -| 1/4/2014 | February Extra Bandwidth | 2233 | $30.00 | -``` - -#### Example 6 - Identical cells merging -```go -data := [][]string{ - []string{"1/1/2014", "Domain name", "1234", "$10.98"}, - []string{"1/1/2014", "January Hosting", "2345", "$54.95"}, - []string{"1/4/2014", "February Hosting", "3456", "$51.00"}, - []string{"1/4/2014", "February Extra Bandwidth", "4567", "$30.00"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Date", "Description", "CV2", "Amount"}) -table.SetFooter([]string{"", "", "Total", "$146.93"}) -table.SetAutoMergeCells(true) -table.SetRowLine(true) -table.AppendBulk(data) -table.Render() -``` - -##### Output 6 -``` -+----------+--------------------------+-------+---------+ -| DATE | DESCRIPTION | CV2 | AMOUNT | -+----------+--------------------------+-------+---------+ -| 1/1/2014 | Domain name | 1234 | $10.98 | -+ +--------------------------+-------+---------+ -| | January Hosting | 2345 | $54.95 | -+----------+--------------------------+-------+---------+ -| 1/4/2014 | February Hosting | 3456 | $51.00 | -+ +--------------------------+-------+---------+ -| | February Extra Bandwidth | 4567 | $30.00 | -+----------+--------------------------+-------+---------+ -| TOTAL | $146 93 | -+----------+--------------------------+-------+---------+ -``` - -#### Example 7 - Identical cells merging (specify the column index to merge) -```go -data := [][]string{ - []string{"1/1/2014", "Domain name", "1234", "$10.98"}, - []string{"1/1/2014", "January Hosting", "1234", "$10.98"}, - []string{"1/4/2014", "February Hosting", "3456", "$51.00"}, - []string{"1/4/2014", "February Extra Bandwidth", "4567", "$30.00"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Date", "Description", "CV2", "Amount"}) -table.SetFooter([]string{"", "", "Total", "$146.93"}) -table.SetAutoMergeCellsByColumnIndex([]int{2, 3}) -table.SetRowLine(true) -table.AppendBulk(data) -table.Render() -``` - -##### Output 7 -``` -+----------+--------------------------+-------+---------+ -| DATE | DESCRIPTION | CV2 | AMOUNT | -+----------+--------------------------+-------+---------+ -| 1/1/2014 | Domain name | 1234 | $10.98 | -+----------+--------------------------+ + + -| 1/1/2014 | January Hosting | | | -+----------+--------------------------+-------+---------+ -| 1/4/2014 | February Hosting | 3456 | $51.00 | -+----------+--------------------------+-------+---------+ -| 1/4/2014 | February Extra Bandwidth | 4567 | $30.00 | -+----------+--------------------------+-------+---------+ -| TOTAL | $146.93 | -+----------+--------------------------+-------+---------+ -``` - - -#### Table with color -```go -data := [][]string{ - []string{"1/1/2014", "Domain name", "2233", "$10.98"}, - []string{"1/1/2014", "January Hosting", "2233", "$54.95"}, - []string{"1/4/2014", "February Hosting", "2233", "$51.00"}, - []string{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Date", "Description", "CV2", "Amount"}) -table.SetFooter([]string{"", "", "Total", "$146.93"}) // Add Footer -table.SetBorder(false) // Set Border to false - -table.SetHeaderColor(tablewriter.Colors{tablewriter.Bold, tablewriter.BgGreenColor}, - tablewriter.Colors{tablewriter.FgHiRedColor, tablewriter.Bold, tablewriter.BgBlackColor}, - tablewriter.Colors{tablewriter.BgRedColor, tablewriter.FgWhiteColor}, - tablewriter.Colors{tablewriter.BgCyanColor, tablewriter.FgWhiteColor}) - -table.SetColumnColor(tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiBlackColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiRedColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiBlackColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgBlackColor}) - -table.SetFooterColor(tablewriter.Colors{}, tablewriter.Colors{}, - tablewriter.Colors{tablewriter.Bold}, - tablewriter.Colors{tablewriter.FgHiRedColor}) - -table.AppendBulk(data) -table.Render() -``` - -#### Table with color Output -![Table with Color](https://cloud.githubusercontent.com/assets/6460392/21101956/bbc7b356-c0a1-11e6-9f36-dba694746efc.png) - -#### Example - 8 Table Cells with Color - -Individual Cell Colors from `func Rich` take precedence over Column Colors - -```go -data := [][]string{ - []string{"Test1Merge", "HelloCol2 - 1", "HelloCol3 - 1", "HelloCol4 - 1"}, - []string{"Test1Merge", "HelloCol2 - 2", "HelloCol3 - 2", "HelloCol4 - 2"}, - []string{"Test1Merge", "HelloCol2 - 3", "HelloCol3 - 3", "HelloCol4 - 3"}, - []string{"Test2Merge", "HelloCol2 - 4", "HelloCol3 - 4", "HelloCol4 - 4"}, - []string{"Test2Merge", "HelloCol2 - 5", "HelloCol3 - 5", "HelloCol4 - 5"}, - []string{"Test2Merge", "HelloCol2 - 6", "HelloCol3 - 6", "HelloCol4 - 6"}, - []string{"Test2Merge", "HelloCol2 - 7", "HelloCol3 - 7", "HelloCol4 - 7"}, - []string{"Test3Merge", "HelloCol2 - 8", "HelloCol3 - 8", "HelloCol4 - 8"}, - []string{"Test3Merge", "HelloCol2 - 9", "HelloCol3 - 9", "HelloCol4 - 9"}, - []string{"Test3Merge", "HelloCol2 - 10", "HelloCol3 -10", "HelloCol4 - 10"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Col1", "Col2", "Col3", "Col4"}) -table.SetFooter([]string{"", "", "Footer3", "Footer4"}) -table.SetBorder(false) - -table.SetHeaderColor(tablewriter.Colors{tablewriter.Bold, tablewriter.BgGreenColor}, - tablewriter.Colors{tablewriter.FgHiRedColor, tablewriter.Bold, tablewriter.BgBlackColor}, - tablewriter.Colors{tablewriter.BgRedColor, tablewriter.FgWhiteColor}, - tablewriter.Colors{tablewriter.BgCyanColor, tablewriter.FgWhiteColor}) - -table.SetColumnColor(tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiBlackColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiRedColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgHiBlackColor}, - tablewriter.Colors{tablewriter.Bold, tablewriter.FgBlackColor}) - -table.SetFooterColor(tablewriter.Colors{}, tablewriter.Colors{}, - tablewriter.Colors{tablewriter.Bold}, - tablewriter.Colors{tablewriter.FgHiRedColor}) - -colorData1 := []string{"TestCOLOR1Merge", "HelloCol2 - COLOR1", "HelloCol3 - COLOR1", "HelloCol4 - COLOR1"} -colorData2 := []string{"TestCOLOR2Merge", "HelloCol2 - COLOR2", "HelloCol3 - COLOR2", "HelloCol4 - COLOR2"} - -for i, row := range data { - if i == 4 { - table.Rich(colorData1, []tablewriter.Colors{tablewriter.Colors{}, tablewriter.Colors{tablewriter.Normal, tablewriter.FgCyanColor}, tablewriter.Colors{tablewriter.Bold, tablewriter.FgWhiteColor}, tablewriter.Colors{}}) - table.Rich(colorData2, []tablewriter.Colors{tablewriter.Colors{tablewriter.Normal, tablewriter.FgMagentaColor}, tablewriter.Colors{}, tablewriter.Colors{tablewriter.Bold, tablewriter.BgRedColor}, tablewriter.Colors{tablewriter.FgHiGreenColor, tablewriter.Italic, tablewriter.BgHiCyanColor}}) - } - table.Append(row) -} - -table.SetAutoMergeCells(true) -table.Render() - -``` - -##### Table cells with color Output -![Table cells with Color](https://user-images.githubusercontent.com/9064687/63969376-bcd88d80-ca6f-11e9-9466-c3d954700b25.png) - -#### Example 9 - Set table caption -```go -data := [][]string{ - []string{"A", "The Good", "500"}, - []string{"B", "The Very very Bad Man", "288"}, - []string{"C", "The Ugly", "120"}, - []string{"D", "The Gopher", "800"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Name", "Sign", "Rating"}) -table.SetCaption(true, "Movie ratings.") - -for _, v := range data { - table.Append(v) -} -table.Render() // Send output -``` - -Note: Caption text will wrap with total width of rendered table. - -##### Output 9 -``` -+------+-----------------------+--------+ -| NAME | SIGN | RATING | -+------+-----------------------+--------+ -| A | The Good | 500 | -| B | The Very very Bad Man | 288 | -| C | The Ugly | 120 | -| D | The Gopher | 800 | -+------+-----------------------+--------+ -Movie ratings. -``` - -#### Example 10 - Set NoWhiteSpace and TablePadding option -```go -data := [][]string{ - {"node1.example.com", "Ready", "compute", "1.11"}, - {"node2.example.com", "Ready", "compute", "1.11"}, - {"node3.example.com", "Ready", "compute", "1.11"}, - {"node4.example.com", "NotReady", "compute", "1.11"}, -} - -table := tablewriter.NewWriter(os.Stdout) -table.SetHeader([]string{"Name", "Status", "Role", "Version"}) -table.SetAutoWrapText(false) -table.SetAutoFormatHeaders(true) -table.SetHeaderAlignment(ALIGN_LEFT) -table.SetAlignment(ALIGN_LEFT) -table.SetCenterSeparator("") -table.SetColumnSeparator("") -table.SetRowSeparator("") -table.SetHeaderLine(false) -table.SetBorder(false) -table.SetTablePadding("\t") // pad with tabs -table.SetNoWhiteSpace(true) -table.AppendBulk(data) // Add Bulk Data -table.Render() -``` - -##### Output 10 -``` -NAME STATUS ROLE VERSION -node1.example.com Ready compute 1.11 -node2.example.com Ready compute 1.11 -node3.example.com Ready compute 1.11 -node4.example.com NotReady compute 1.11 -``` - -#### Render table into a string - -Instead of rendering the table to `io.Stdout` you can also render it into a string. Go 1.10 introduced the `strings.Builder` type which implements the `io.Writer` interface and can therefore be used for this task. Example: - -```go -package main - -import ( - "strings" - "fmt" - - "github.com/olekukonko/tablewriter" -) - -func main() { - tableString := &strings.Builder{} - table := tablewriter.NewWriter(tableString) - - /* - * Code to fill the table - */ - - table.Render() - - fmt.Println(tableString.String()) -} -``` - -#### TODO -- ~~Import Directly from CSV~~ - `done` -- ~~Support for `SetFooter`~~ - `done` -- ~~Support for `SetBorder`~~ - `done` -- ~~Support table with uneven rows~~ - `done` -- ~~Support custom alignment~~ -- General Improvement & Optimisation -- `NewHTML` Parse table from HTML diff --git a/vendor/github.com/olekukonko/tablewriter/csv.go b/vendor/github.com/olekukonko/tablewriter/csv.go deleted file mode 100644 index 9887830..0000000 --- a/vendor/github.com/olekukonko/tablewriter/csv.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2014 Oleku Konko All rights reserved. -// Use of this source code is governed by a MIT -// license that can be found in the LICENSE file. - -// This module is a Table Writer API for the Go Programming Language. -// The protocols were written in pure Go and works on windows and unix systems - -package tablewriter - -import ( - "encoding/csv" - "io" - "os" -) - -// Start A new table by importing from a CSV file -// Takes io.Writer and csv File name -func NewCSV(writer io.Writer, fileName string, hasHeader bool) (*Table, error) { - file, err := os.Open(fileName) - if err != nil { - return &Table{}, err - } - defer file.Close() - csvReader := csv.NewReader(file) - t, err := NewCSVReader(writer, csvReader, hasHeader) - return t, err -} - -// Start a New Table Writer with csv.Reader -// This enables customisation such as reader.Comma = ';' -// See http://golang.org/src/pkg/encoding/csv/reader.go?s=3213:3671#L94 -func NewCSVReader(writer io.Writer, csvReader *csv.Reader, hasHeader bool) (*Table, error) { - t := NewWriter(writer) - if hasHeader { - // Read the first row - headers, err := csvReader.Read() - if err != nil { - return &Table{}, err - } - t.SetHeader(headers) - } - for { - record, err := csvReader.Read() - if err == io.EOF { - break - } else if err != nil { - return &Table{}, err - } - t.Append(record) - } - return t, nil -} diff --git a/vendor/github.com/olekukonko/tablewriter/table.go b/vendor/github.com/olekukonko/tablewriter/table.go deleted file mode 100644 index f913149..0000000 --- a/vendor/github.com/olekukonko/tablewriter/table.go +++ /dev/null @@ -1,967 +0,0 @@ -// Copyright 2014 Oleku Konko All rights reserved. -// Use of this source code is governed by a MIT -// license that can be found in the LICENSE file. - -// This module is a Table Writer API for the Go Programming Language. -// The protocols were written in pure Go and works on windows and unix systems - -// Create & Generate text based table -package tablewriter - -import ( - "bytes" - "fmt" - "io" - "regexp" - "strings" -) - -const ( - MAX_ROW_WIDTH = 30 -) - -const ( - CENTER = "+" - ROW = "-" - COLUMN = "|" - SPACE = " " - NEWLINE = "\n" -) - -const ( - ALIGN_DEFAULT = iota - ALIGN_CENTER - ALIGN_RIGHT - ALIGN_LEFT -) - -var ( - decimal = regexp.MustCompile(`^-?(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$`) - percent = regexp.MustCompile(`^-?\d+\.?\d*$%$`) -) - -type Border struct { - Left bool - Right bool - Top bool - Bottom bool -} - -type Table struct { - out io.Writer - rows [][]string - lines [][][]string - cs map[int]int - rs map[int]int - headers [][]string - footers [][]string - caption bool - captionText string - autoFmt bool - autoWrap bool - reflowText bool - mW int - pCenter string - pRow string - pColumn string - tColumn int - tRow int - hAlign int - fAlign int - align int - newLine string - rowLine bool - autoMergeCells bool - columnsToAutoMergeCells map[int]bool - noWhiteSpace bool - tablePadding string - hdrLine bool - borders Border - colSize int - headerParams []string - columnsParams []string - footerParams []string - columnsAlign []int -} - -// Start New Table -// Take io.Writer Directly -func NewWriter(writer io.Writer) *Table { - t := &Table{ - out: writer, - rows: [][]string{}, - lines: [][][]string{}, - cs: make(map[int]int), - rs: make(map[int]int), - headers: [][]string{}, - footers: [][]string{}, - caption: false, - captionText: "Table caption.", - autoFmt: true, - autoWrap: true, - reflowText: true, - mW: MAX_ROW_WIDTH, - pCenter: CENTER, - pRow: ROW, - pColumn: COLUMN, - tColumn: -1, - tRow: -1, - hAlign: ALIGN_DEFAULT, - fAlign: ALIGN_DEFAULT, - align: ALIGN_DEFAULT, - newLine: NEWLINE, - rowLine: false, - hdrLine: true, - borders: Border{Left: true, Right: true, Bottom: true, Top: true}, - colSize: -1, - headerParams: []string{}, - columnsParams: []string{}, - footerParams: []string{}, - columnsAlign: []int{}} - return t -} - -// Render table output -func (t *Table) Render() { - if t.borders.Top { - t.printLine(true) - } - t.printHeading() - if t.autoMergeCells { - t.printRowsMergeCells() - } else { - t.printRows() - } - if !t.rowLine && t.borders.Bottom { - t.printLine(true) - } - t.printFooter() - - if t.caption { - t.printCaption() - } -} - -const ( - headerRowIdx = -1 - footerRowIdx = -2 -) - -// Set table header -func (t *Table) SetHeader(keys []string) { - t.colSize = len(keys) - for i, v := range keys { - lines := t.parseDimension(v, i, headerRowIdx) - t.headers = append(t.headers, lines) - } -} - -// Set table Footer -func (t *Table) SetFooter(keys []string) { - //t.colSize = len(keys) - for i, v := range keys { - lines := t.parseDimension(v, i, footerRowIdx) - t.footers = append(t.footers, lines) - } -} - -// Set table Caption -func (t *Table) SetCaption(caption bool, captionText ...string) { - t.caption = caption - if len(captionText) == 1 { - t.captionText = captionText[0] - } -} - -// Turn header autoformatting on/off. Default is on (true). -func (t *Table) SetAutoFormatHeaders(auto bool) { - t.autoFmt = auto -} - -// Turn automatic multiline text adjustment on/off. Default is on (true). -func (t *Table) SetAutoWrapText(auto bool) { - t.autoWrap = auto -} - -// Turn automatic reflowing of multiline text when rewrapping. Default is on (true). -func (t *Table) SetReflowDuringAutoWrap(auto bool) { - t.reflowText = auto -} - -// Set the Default column width -func (t *Table) SetColWidth(width int) { - t.mW = width -} - -// Set the minimal width for a column -func (t *Table) SetColMinWidth(column int, width int) { - t.cs[column] = width -} - -// Set the Column Separator -func (t *Table) SetColumnSeparator(sep string) { - t.pColumn = sep -} - -// Set the Row Separator -func (t *Table) SetRowSeparator(sep string) { - t.pRow = sep -} - -// Set the center Separator -func (t *Table) SetCenterSeparator(sep string) { - t.pCenter = sep -} - -// Set Header Alignment -func (t *Table) SetHeaderAlignment(hAlign int) { - t.hAlign = hAlign -} - -// Set Footer Alignment -func (t *Table) SetFooterAlignment(fAlign int) { - t.fAlign = fAlign -} - -// Set Table Alignment -func (t *Table) SetAlignment(align int) { - t.align = align -} - -// Set No White Space -func (t *Table) SetNoWhiteSpace(allow bool) { - t.noWhiteSpace = allow -} - -// Set Table Padding -func (t *Table) SetTablePadding(padding string) { - t.tablePadding = padding -} - -func (t *Table) SetColumnAlignment(keys []int) { - for _, v := range keys { - switch v { - case ALIGN_CENTER: - break - case ALIGN_LEFT: - break - case ALIGN_RIGHT: - break - default: - v = ALIGN_DEFAULT - } - t.columnsAlign = append(t.columnsAlign, v) - } -} - -// Set New Line -func (t *Table) SetNewLine(nl string) { - t.newLine = nl -} - -// Set Header Line -// This would enable / disable a line after the header -func (t *Table) SetHeaderLine(line bool) { - t.hdrLine = line -} - -// Set Row Line -// This would enable / disable a line on each row of the table -func (t *Table) SetRowLine(line bool) { - t.rowLine = line -} - -// Set Auto Merge Cells -// This would enable / disable the merge of cells with identical values -func (t *Table) SetAutoMergeCells(auto bool) { - t.autoMergeCells = auto -} - -// Set Auto Merge Cells By Column Index -// This would enable / disable the merge of cells with identical values for specific columns -// If cols is empty, it is the same as `SetAutoMergeCells(true)`. -func (t *Table) SetAutoMergeCellsByColumnIndex(cols []int) { - t.autoMergeCells = true - - if len(cols) > 0 { - m := make(map[int]bool) - for _, col := range cols { - m[col] = true - } - t.columnsToAutoMergeCells = m - } -} - -// Set Table Border -// This would enable / disable line around the table -func (t *Table) SetBorder(border bool) { - t.SetBorders(Border{border, border, border, border}) -} - -func (t *Table) SetBorders(border Border) { - t.borders = border -} - -// Append row to table -func (t *Table) Append(row []string) { - rowSize := len(t.headers) - if rowSize > t.colSize { - t.colSize = rowSize - } - - n := len(t.lines) - line := [][]string{} - for i, v := range row { - - // Detect string width - // Detect String height - // Break strings into words - out := t.parseDimension(v, i, n) - - // Append broken words - line = append(line, out) - } - t.lines = append(t.lines, line) -} - -// Append row to table with color attributes -func (t *Table) Rich(row []string, colors []Colors) { - rowSize := len(t.headers) - if rowSize > t.colSize { - t.colSize = rowSize - } - - n := len(t.lines) - line := [][]string{} - for i, v := range row { - - // Detect string width - // Detect String height - // Break strings into words - out := t.parseDimension(v, i, n) - - if len(colors) > i { - color := colors[i] - out[0] = format(out[0], color) - } - - // Append broken words - line = append(line, out) - } - t.lines = append(t.lines, line) -} - -// Allow Support for Bulk Append -// Eliminates repeated for loops -func (t *Table) AppendBulk(rows [][]string) { - for _, row := range rows { - t.Append(row) - } -} - -// NumLines to get the number of lines -func (t *Table) NumLines() int { - return len(t.lines) -} - -// Clear rows -func (t *Table) ClearRows() { - t.lines = [][][]string{} -} - -// Clear footer -func (t *Table) ClearFooter() { - t.footers = [][]string{} -} - -// Center based on position and border. -func (t *Table) center(i int) string { - if i == -1 && !t.borders.Left { - return t.pRow - } - - if i == len(t.cs)-1 && !t.borders.Right { - return t.pRow - } - - return t.pCenter -} - -// Print line based on row width -func (t *Table) printLine(nl bool) { - fmt.Fprint(t.out, t.center(-1)) - for i := 0; i < len(t.cs); i++ { - v := t.cs[i] - fmt.Fprintf(t.out, "%s%s%s%s", - t.pRow, - strings.Repeat(string(t.pRow), v), - t.pRow, - t.center(i)) - } - if nl { - fmt.Fprint(t.out, t.newLine) - } -} - -// Print line based on row width with our without cell separator -func (t *Table) printLineOptionalCellSeparators(nl bool, displayCellSeparator []bool) { - fmt.Fprint(t.out, t.pCenter) - for i := 0; i < len(t.cs); i++ { - v := t.cs[i] - if i > len(displayCellSeparator) || displayCellSeparator[i] { - // Display the cell separator - fmt.Fprintf(t.out, "%s%s%s%s", - t.pRow, - strings.Repeat(string(t.pRow), v), - t.pRow, - t.pCenter) - } else { - // Don't display the cell separator for this cell - fmt.Fprintf(t.out, "%s%s", - strings.Repeat(" ", v+2), - t.pCenter) - } - } - if nl { - fmt.Fprint(t.out, t.newLine) - } -} - -// Return the PadRight function if align is left, PadLeft if align is right, -// and Pad by default -func pad(align int) func(string, string, int) string { - padFunc := Pad - switch align { - case ALIGN_LEFT: - padFunc = PadRight - case ALIGN_RIGHT: - padFunc = PadLeft - } - return padFunc -} - -// Print heading information -func (t *Table) printHeading() { - // Check if headers is available - if len(t.headers) < 1 { - return - } - - // Identify last column - end := len(t.cs) - 1 - - // Get pad function - padFunc := pad(t.hAlign) - - // Checking for ANSI escape sequences for header - is_esc_seq := false - if len(t.headerParams) > 0 { - is_esc_seq = true - } - - // Maximum height. - max := t.rs[headerRowIdx] - - // Print Heading - for x := 0; x < max; x++ { - // Check if border is set - // Replace with space if not set - if !t.noWhiteSpace { - fmt.Fprint(t.out, ConditionString(t.borders.Left, t.pColumn, SPACE)) - } - - for y := 0; y <= end; y++ { - v := t.cs[y] - h := "" - - if y < len(t.headers) && x < len(t.headers[y]) { - h = t.headers[y][x] - } - if t.autoFmt { - h = Title(h) - } - pad := ConditionString((y == end && !t.borders.Left), SPACE, t.pColumn) - if t.noWhiteSpace { - pad = ConditionString((y == end && !t.borders.Left), SPACE, t.tablePadding) - } - if is_esc_seq { - if !t.noWhiteSpace { - fmt.Fprintf(t.out, " %s %s", - format(padFunc(h, SPACE, v), - t.headerParams[y]), pad) - } else { - fmt.Fprintf(t.out, "%s %s", - format(padFunc(h, SPACE, v), - t.headerParams[y]), pad) - } - } else { - if !t.noWhiteSpace { - fmt.Fprintf(t.out, " %s %s", - padFunc(h, SPACE, v), - pad) - } else { - // the spaces between breaks the kube formatting - fmt.Fprintf(t.out, "%s%s", - padFunc(h, SPACE, v), - pad) - } - } - } - // Next line - fmt.Fprint(t.out, t.newLine) - } - if t.hdrLine { - t.printLine(true) - } -} - -// Print heading information -func (t *Table) printFooter() { - // Check if headers is available - if len(t.footers) < 1 { - return - } - - // Only print line if border is not set - if !t.borders.Bottom { - t.printLine(true) - } - - // Identify last column - end := len(t.cs) - 1 - - // Get pad function - padFunc := pad(t.fAlign) - - // Checking for ANSI escape sequences for header - is_esc_seq := false - if len(t.footerParams) > 0 { - is_esc_seq = true - } - - // Maximum height. - max := t.rs[footerRowIdx] - - // Print Footer - erasePad := make([]bool, len(t.footers)) - for x := 0; x < max; x++ { - // Check if border is set - // Replace with space if not set - fmt.Fprint(t.out, ConditionString(t.borders.Bottom, t.pColumn, SPACE)) - - for y := 0; y <= end; y++ { - v := t.cs[y] - f := "" - if y < len(t.footers) && x < len(t.footers[y]) { - f = t.footers[y][x] - } - if t.autoFmt { - f = Title(f) - } - pad := ConditionString((y == end && !t.borders.Top), SPACE, t.pColumn) - - if erasePad[y] || (x == 0 && len(f) == 0) { - pad = SPACE - erasePad[y] = true - } - - if is_esc_seq { - fmt.Fprintf(t.out, " %s %s", - format(padFunc(f, SPACE, v), - t.footerParams[y]), pad) - } else { - fmt.Fprintf(t.out, " %s %s", - padFunc(f, SPACE, v), - pad) - } - - //fmt.Fprintf(t.out, " %s %s", - // padFunc(f, SPACE, v), - // pad) - } - // Next line - fmt.Fprint(t.out, t.newLine) - //t.printLine(true) - } - - hasPrinted := false - - for i := 0; i <= end; i++ { - v := t.cs[i] - pad := t.pRow - center := t.pCenter - length := len(t.footers[i][0]) - - if length > 0 { - hasPrinted = true - } - - // Set center to be space if length is 0 - if length == 0 && !t.borders.Right { - center = SPACE - } - - // Print first junction - if i == 0 { - if length > 0 && !t.borders.Left { - center = t.pRow - } - fmt.Fprint(t.out, center) - } - - // Pad With space of length is 0 - if length == 0 { - pad = SPACE - } - // Ignore left space as it has printed before - if hasPrinted || t.borders.Left { - pad = t.pRow - center = t.pCenter - } - - // Change Center end position - if center != SPACE { - if i == end && !t.borders.Right { - center = t.pRow - } - } - - // Change Center start position - if center == SPACE { - if i < end && len(t.footers[i+1][0]) != 0 { - if !t.borders.Left { - center = t.pRow - } else { - center = t.pCenter - } - } - } - - // Print the footer - fmt.Fprintf(t.out, "%s%s%s%s", - pad, - strings.Repeat(string(pad), v), - pad, - center) - - } - - fmt.Fprint(t.out, t.newLine) -} - -// Print caption text -func (t Table) printCaption() { - width := t.getTableWidth() - paragraph, _ := WrapString(t.captionText, width) - for linecount := 0; linecount < len(paragraph); linecount++ { - fmt.Fprintln(t.out, paragraph[linecount]) - } -} - -// Calculate the total number of characters in a row -func (t Table) getTableWidth() int { - var chars int - for _, v := range t.cs { - chars += v - } - - // Add chars, spaces, seperators to calculate the total width of the table. - // ncols := t.colSize - // spaces := ncols * 2 - // seps := ncols + 1 - - return (chars + (3 * t.colSize) + 2) -} - -func (t Table) printRows() { - for i, lines := range t.lines { - t.printRow(lines, i) - } -} - -func (t *Table) fillAlignment(num int) { - if len(t.columnsAlign) < num { - t.columnsAlign = make([]int, num) - for i := range t.columnsAlign { - t.columnsAlign[i] = t.align - } - } -} - -// Print Row Information -// Adjust column alignment based on type - -func (t *Table) printRow(columns [][]string, rowIdx int) { - // Get Maximum Height - max := t.rs[rowIdx] - total := len(columns) - - // TODO Fix uneven col size - // if total < t.colSize { - // for n := t.colSize - total; n < t.colSize ; n++ { - // columns = append(columns, []string{SPACE}) - // t.cs[n] = t.mW - // } - //} - - // Pad Each Height - pads := []int{} - - // Checking for ANSI escape sequences for columns - is_esc_seq := false - if len(t.columnsParams) > 0 { - is_esc_seq = true - } - t.fillAlignment(total) - - for i, line := range columns { - length := len(line) - pad := max - length - pads = append(pads, pad) - for n := 0; n < pad; n++ { - columns[i] = append(columns[i], " ") - } - } - //fmt.Println(max, "\n") - for x := 0; x < max; x++ { - for y := 0; y < total; y++ { - - // Check if border is set - if !t.noWhiteSpace { - fmt.Fprint(t.out, ConditionString((!t.borders.Left && y == 0), SPACE, t.pColumn)) - fmt.Fprintf(t.out, SPACE) - } - - str := columns[y][x] - - // Embedding escape sequence with column value - if is_esc_seq { - str = format(str, t.columnsParams[y]) - } - - // This would print alignment - // Default alignment would use multiple configuration - switch t.columnsAlign[y] { - case ALIGN_CENTER: // - fmt.Fprintf(t.out, "%s", Pad(str, SPACE, t.cs[y])) - case ALIGN_RIGHT: - fmt.Fprintf(t.out, "%s", PadLeft(str, SPACE, t.cs[y])) - case ALIGN_LEFT: - fmt.Fprintf(t.out, "%s", PadRight(str, SPACE, t.cs[y])) - default: - if decimal.MatchString(strings.TrimSpace(str)) || percent.MatchString(strings.TrimSpace(str)) { - fmt.Fprintf(t.out, "%s", PadLeft(str, SPACE, t.cs[y])) - } else { - fmt.Fprintf(t.out, "%s", PadRight(str, SPACE, t.cs[y])) - - // TODO Custom alignment per column - //if max == 1 || pads[y] > 0 { - // fmt.Fprintf(t.out, "%s", Pad(str, SPACE, t.cs[y])) - //} else { - // fmt.Fprintf(t.out, "%s", PadRight(str, SPACE, t.cs[y])) - //} - - } - } - if !t.noWhiteSpace { - fmt.Fprintf(t.out, SPACE) - } else { - fmt.Fprintf(t.out, t.tablePadding) - } - } - // Check if border is set - // Replace with space if not set - if !t.noWhiteSpace { - fmt.Fprint(t.out, ConditionString(t.borders.Left, t.pColumn, SPACE)) - } - fmt.Fprint(t.out, t.newLine) - } - - if t.rowLine { - t.printLine(true) - } -} - -// Print the rows of the table and merge the cells that are identical -func (t *Table) printRowsMergeCells() { - var previousLine []string - var displayCellBorder []bool - var tmpWriter bytes.Buffer - for i, lines := range t.lines { - // We store the display of the current line in a tmp writer, as we need to know which border needs to be print above - previousLine, displayCellBorder = t.printRowMergeCells(&tmpWriter, lines, i, previousLine) - if i > 0 { //We don't need to print borders above first line - if t.rowLine { - t.printLineOptionalCellSeparators(true, displayCellBorder) - } - } - tmpWriter.WriteTo(t.out) - } - //Print the end of the table - if t.rowLine { - t.printLine(true) - } -} - -// Print Row Information to a writer and merge identical cells. -// Adjust column alignment based on type - -func (t *Table) printRowMergeCells(writer io.Writer, columns [][]string, rowIdx int, previousLine []string) ([]string, []bool) { - // Get Maximum Height - max := t.rs[rowIdx] - total := len(columns) - - // Pad Each Height - pads := []int{} - - // Checking for ANSI escape sequences for columns - is_esc_seq := false - if len(t.columnsParams) > 0 { - is_esc_seq = true - } - for i, line := range columns { - length := len(line) - pad := max - length - pads = append(pads, pad) - for n := 0; n < pad; n++ { - columns[i] = append(columns[i], " ") - } - } - - var displayCellBorder []bool - t.fillAlignment(total) - for x := 0; x < max; x++ { - for y := 0; y < total; y++ { - - // Check if border is set - fmt.Fprint(writer, ConditionString((!t.borders.Left && y == 0), SPACE, t.pColumn)) - - fmt.Fprintf(writer, SPACE) - - str := columns[y][x] - - // Embedding escape sequence with column value - if is_esc_seq { - str = format(str, t.columnsParams[y]) - } - - if t.autoMergeCells { - var mergeCell bool - if t.columnsToAutoMergeCells != nil { - // Check to see if the column index is in columnsToAutoMergeCells. - if t.columnsToAutoMergeCells[y] { - mergeCell = true - } - } else { - // columnsToAutoMergeCells was not set. - mergeCell = true - } - //Store the full line to merge mutli-lines cells - fullLine := strings.TrimRight(strings.Join(columns[y], " "), " ") - if len(previousLine) > y && fullLine == previousLine[y] && fullLine != "" && mergeCell { - // If this cell is identical to the one above but not empty, we don't display the border and keep the cell empty. - displayCellBorder = append(displayCellBorder, false) - str = "" - } else { - // First line or different content, keep the content and print the cell border - displayCellBorder = append(displayCellBorder, true) - } - } - - // This would print alignment - // Default alignment would use multiple configuration - switch t.columnsAlign[y] { - case ALIGN_CENTER: // - fmt.Fprintf(writer, "%s", Pad(str, SPACE, t.cs[y])) - case ALIGN_RIGHT: - fmt.Fprintf(writer, "%s", PadLeft(str, SPACE, t.cs[y])) - case ALIGN_LEFT: - fmt.Fprintf(writer, "%s", PadRight(str, SPACE, t.cs[y])) - default: - if decimal.MatchString(strings.TrimSpace(str)) || percent.MatchString(strings.TrimSpace(str)) { - fmt.Fprintf(writer, "%s", PadLeft(str, SPACE, t.cs[y])) - } else { - fmt.Fprintf(writer, "%s", PadRight(str, SPACE, t.cs[y])) - } - } - fmt.Fprintf(writer, SPACE) - } - // Check if border is set - // Replace with space if not set - fmt.Fprint(writer, ConditionString(t.borders.Left, t.pColumn, SPACE)) - fmt.Fprint(writer, t.newLine) - } - - //The new previous line is the current one - previousLine = make([]string, total) - for y := 0; y < total; y++ { - previousLine[y] = strings.TrimRight(strings.Join(columns[y], " "), " ") //Store the full line for multi-lines cells - } - //Returns the newly added line and wether or not a border should be displayed above. - return previousLine, displayCellBorder -} - -func (t *Table) parseDimension(str string, colKey, rowKey int) []string { - var ( - raw []string - maxWidth int - ) - - raw = getLines(str) - maxWidth = 0 - for _, line := range raw { - if w := DisplayWidth(line); w > maxWidth { - maxWidth = w - } - } - - // If wrapping, ensure that all paragraphs in the cell fit in the - // specified width. - if t.autoWrap { - // If there's a maximum allowed width for wrapping, use that. - if maxWidth > t.mW { - maxWidth = t.mW - } - - // In the process of doing so, we need to recompute maxWidth. This - // is because perhaps a word in the cell is longer than the - // allowed maximum width in t.mW. - newMaxWidth := maxWidth - newRaw := make([]string, 0, len(raw)) - - if t.reflowText { - // Make a single paragraph of everything. - raw = []string{strings.Join(raw, " ")} - } - for i, para := range raw { - paraLines, _ := WrapString(para, maxWidth) - for _, line := range paraLines { - if w := DisplayWidth(line); w > newMaxWidth { - newMaxWidth = w - } - } - if i > 0 { - newRaw = append(newRaw, " ") - } - newRaw = append(newRaw, paraLines...) - } - raw = newRaw - maxWidth = newMaxWidth - } - - // Store the new known maximum width. - v, ok := t.cs[colKey] - if !ok || v < maxWidth || v == 0 { - t.cs[colKey] = maxWidth - } - - // Remember the number of lines for the row printer. - h := len(raw) - v, ok = t.rs[rowKey] - - if !ok || v < h || v == 0 { - t.rs[rowKey] = h - } - //fmt.Printf("Raw %+v %d\n", raw, len(raw)) - return raw -} diff --git a/vendor/github.com/olekukonko/tablewriter/table_with_color.go b/vendor/github.com/olekukonko/tablewriter/table_with_color.go deleted file mode 100644 index ae7a364..0000000 --- a/vendor/github.com/olekukonko/tablewriter/table_with_color.go +++ /dev/null @@ -1,136 +0,0 @@ -package tablewriter - -import ( - "fmt" - "strconv" - "strings" -) - -const ESC = "\033" -const SEP = ";" - -const ( - BgBlackColor int = iota + 40 - BgRedColor - BgGreenColor - BgYellowColor - BgBlueColor - BgMagentaColor - BgCyanColor - BgWhiteColor -) - -const ( - FgBlackColor int = iota + 30 - FgRedColor - FgGreenColor - FgYellowColor - FgBlueColor - FgMagentaColor - FgCyanColor - FgWhiteColor -) - -const ( - BgHiBlackColor int = iota + 100 - BgHiRedColor - BgHiGreenColor - BgHiYellowColor - BgHiBlueColor - BgHiMagentaColor - BgHiCyanColor - BgHiWhiteColor -) - -const ( - FgHiBlackColor int = iota + 90 - FgHiRedColor - FgHiGreenColor - FgHiYellowColor - FgHiBlueColor - FgHiMagentaColor - FgHiCyanColor - FgHiWhiteColor -) - -const ( - Normal = 0 - Bold = 1 - UnderlineSingle = 4 - Italic -) - -type Colors []int - -func startFormat(seq string) string { - return fmt.Sprintf("%s[%sm", ESC, seq) -} - -func stopFormat() string { - return fmt.Sprintf("%s[%dm", ESC, Normal) -} - -// Making the SGR (Select Graphic Rendition) sequence. -func makeSequence(codes []int) string { - codesInString := []string{} - for _, code := range codes { - codesInString = append(codesInString, strconv.Itoa(code)) - } - return strings.Join(codesInString, SEP) -} - -// Adding ANSI escape sequences before and after string -func format(s string, codes interface{}) string { - var seq string - - switch v := codes.(type) { - - case string: - seq = v - case []int: - seq = makeSequence(v) - case Colors: - seq = makeSequence(v) - default: - return s - } - - if len(seq) == 0 { - return s - } - return startFormat(seq) + s + stopFormat() -} - -// Adding header colors (ANSI codes) -func (t *Table) SetHeaderColor(colors ...Colors) { - if t.colSize != len(colors) { - panic("Number of header colors must be equal to number of headers.") - } - for i := 0; i < len(colors); i++ { - t.headerParams = append(t.headerParams, makeSequence(colors[i])) - } -} - -// Adding column colors (ANSI codes) -func (t *Table) SetColumnColor(colors ...Colors) { - if t.colSize != len(colors) { - panic("Number of column colors must be equal to number of headers.") - } - for i := 0; i < len(colors); i++ { - t.columnsParams = append(t.columnsParams, makeSequence(colors[i])) - } -} - -// Adding column colors (ANSI codes) -func (t *Table) SetFooterColor(colors ...Colors) { - if len(t.footers) != len(colors) { - panic("Number of footer colors must be equal to number of footer.") - } - for i := 0; i < len(colors); i++ { - t.footerParams = append(t.footerParams, makeSequence(colors[i])) - } -} - -func Color(colors ...int) []int { - return colors -} diff --git a/vendor/github.com/olekukonko/tablewriter/util.go b/vendor/github.com/olekukonko/tablewriter/util.go deleted file mode 100644 index 380e7ab..0000000 --- a/vendor/github.com/olekukonko/tablewriter/util.go +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2014 Oleku Konko All rights reserved. -// Use of this source code is governed by a MIT -// license that can be found in the LICENSE file. - -// This module is a Table Writer API for the Go Programming Language. -// The protocols were written in pure Go and works on windows and unix systems - -package tablewriter - -import ( - "math" - "regexp" - "strings" - - "github.com/mattn/go-runewidth" -) - -var ansi = regexp.MustCompile("\033\\[(?:[0-9]{1,3}(?:;[0-9]{1,3})*)?[m|K]") - -func DisplayWidth(str string) int { - return runewidth.StringWidth(ansi.ReplaceAllLiteralString(str, "")) -} - -// Simple Condition for string -// Returns value based on condition -func ConditionString(cond bool, valid, inValid string) string { - if cond { - return valid - } - return inValid -} - -func isNumOrSpace(r rune) bool { - return ('0' <= r && r <= '9') || r == ' ' -} - -// Format Table Header -// Replace _ , . and spaces -func Title(name string) string { - origLen := len(name) - rs := []rune(name) - for i, r := range rs { - switch r { - case '_': - rs[i] = ' ' - case '.': - // ignore floating number 0.0 - if (i != 0 && !isNumOrSpace(rs[i-1])) || (i != len(rs)-1 && !isNumOrSpace(rs[i+1])) { - rs[i] = ' ' - } - } - } - name = string(rs) - name = strings.TrimSpace(name) - if len(name) == 0 && origLen > 0 { - // Keep at least one character. This is important to preserve - // empty lines in multi-line headers/footers. - name = " " - } - return strings.ToUpper(name) -} - -// Pad String -// Attempts to place string in the center -func Pad(s, pad string, width int) string { - gap := width - DisplayWidth(s) - if gap > 0 { - gapLeft := int(math.Ceil(float64(gap / 2))) - gapRight := gap - gapLeft - return strings.Repeat(string(pad), gapLeft) + s + strings.Repeat(string(pad), gapRight) - } - return s -} - -// Pad String Right position -// This would place string at the left side of the screen -func PadRight(s, pad string, width int) string { - gap := width - DisplayWidth(s) - if gap > 0 { - return s + strings.Repeat(string(pad), gap) - } - return s -} - -// Pad String Left position -// This would place string at the right side of the screen -func PadLeft(s, pad string, width int) string { - gap := width - DisplayWidth(s) - if gap > 0 { - return strings.Repeat(string(pad), gap) + s - } - return s -} diff --git a/vendor/github.com/olekukonko/tablewriter/wrap.go b/vendor/github.com/olekukonko/tablewriter/wrap.go deleted file mode 100644 index a092ee1..0000000 --- a/vendor/github.com/olekukonko/tablewriter/wrap.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2014 Oleku Konko All rights reserved. -// Use of this source code is governed by a MIT -// license that can be found in the LICENSE file. - -// This module is a Table Writer API for the Go Programming Language. -// The protocols were written in pure Go and works on windows and unix systems - -package tablewriter - -import ( - "math" - "strings" - - "github.com/mattn/go-runewidth" -) - -var ( - nl = "\n" - sp = " " -) - -const defaultPenalty = 1e5 - -// Wrap wraps s into a paragraph of lines of length lim, with minimal -// raggedness. -func WrapString(s string, lim int) ([]string, int) { - words := strings.Split(strings.Replace(s, nl, sp, -1), sp) - var lines []string - max := 0 - for _, v := range words { - max = runewidth.StringWidth(v) - if max > lim { - lim = max - } - } - for _, line := range WrapWords(words, 1, lim, defaultPenalty) { - lines = append(lines, strings.Join(line, sp)) - } - return lines, lim -} - -// WrapWords is the low-level line-breaking algorithm, useful if you need more -// control over the details of the text wrapping process. For most uses, -// WrapString will be sufficient and more convenient. -// -// WrapWords splits a list of words into lines with minimal "raggedness", -// treating each rune as one unit, accounting for spc units between adjacent -// words on each line, and attempting to limit lines to lim units. Raggedness -// is the total error over all lines, where error is the square of the -// difference of the length of the line and lim. Too-long lines (which only -// happen when a single word is longer than lim units) have pen penalty units -// added to the error. -func WrapWords(words []string, spc, lim, pen int) [][]string { - n := len(words) - - length := make([][]int, n) - for i := 0; i < n; i++ { - length[i] = make([]int, n) - length[i][i] = runewidth.StringWidth(words[i]) - for j := i + 1; j < n; j++ { - length[i][j] = length[i][j-1] + spc + runewidth.StringWidth(words[j]) - } - } - nbrk := make([]int, n) - cost := make([]int, n) - for i := range cost { - cost[i] = math.MaxInt32 - } - for i := n - 1; i >= 0; i-- { - if length[i][n-1] <= lim { - cost[i] = 0 - nbrk[i] = n - } else { - for j := i + 1; j < n; j++ { - d := lim - length[i][j-1] - c := d*d + cost[j] - if length[i][j-1] > lim { - c += pen // too-long lines get a worse penalty - } - if c < cost[i] { - cost[i] = c - nbrk[i] = j - } - } - } - } - var lines [][]string - i := 0 - for i < n { - lines = append(lines, words[i:nbrk[i]]) - i = nbrk[i] - } - return lines -} - -// getLines decomposes a multiline string into a slice of strings. -func getLines(s string) []string { - return strings.Split(s, nl) -} diff --git a/vendor/github.com/otiai10/gosseract/v2/.dockerignore b/vendor/github.com/otiai10/gosseract/v2/.dockerignore deleted file mode 100644 index 5657f6e..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -vendor \ No newline at end of file diff --git a/vendor/github.com/otiai10/gosseract/v2/.gitignore b/vendor/github.com/otiai10/gosseract/v2/.gitignore deleted file mode 100644 index 98a71f0..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe - -# environment -*.DS_Store - -# editors and IDEs - -.idea/* -gosseract.sublime-project -gosseract.sublime-workspace -gosseract.iml - -# runtime -.vagrant -coverage.txt -coverage -vendor -test/runtimes/TESTRESULT.*.txt - -# Editors -.vscode diff --git a/vendor/github.com/otiai10/gosseract/v2/CODE_OF_CONDUCT.md b/vendor/github.com/otiai10/gosseract/v2/CODE_OF_CONDUCT.md deleted file mode 100644 index 3c16497..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at otiai10@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/otiai10/gosseract/v2/Dockerfile b/vendor/github.com/otiai10/gosseract/v2/Dockerfile deleted file mode 100644 index 46c2bb0..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -##### -# This is a working example of setting up tesseract/gosseract, -# and also works as an example runtime to use gosseract package. -# You can just hit `docker run -it --rm otiai10/gosseract` -# to try and check it out! -##### -FROM golang:latest -LABEL maintainer="Hiromu Ochiai <otiai10@gmail.com>" - -RUN apt-get update -qq - -# You need librariy files and headers of tesseract and leptonica. -# When you miss these or LD_LIBRARY_PATH is not set to them, -# you would face an error: "tesseract/baseapi.h: No such file or directory" -RUN apt-get install -y -qq libtesseract-dev libleptonica-dev - -# In case you face TESSDATA_PREFIX error, you minght need to set env vars -# to specify the directory where "tessdata" is located. -ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata/ - -# Load languages. -# These {lang}.traineddata would b located under ${TESSDATA_PREFIX}/tessdata. -RUN apt-get install -y -qq \ - tesseract-ocr-eng \ - tesseract-ocr-deu \ - tesseract-ocr-jpn -# See https://github.com/tesseract-ocr/tessdata for the list of available languages. -# If you want to download these traineddata via `wget`, don't forget to locate -# downloaded traineddata under ${TESSDATA_PREFIX}/tessdata. - -# Setup your cool project with go.mod. -WORKDIR ${GOPATH}/src/github.com/ghost/cool-project -RUN go mod init - -# Let's have gosseract in your project and test it. -RUN go get -t github.com/otiai10/gosseract/v2 - -# Now, you've got complete environment to play with "gosseract"! -# For other OS, check https://github.com/otiai10/gosseract/tree/main/test/runtimes - -# Try `docker run -it --rm otiai10/gosseract` to test this environment. -CMD go test -v github.com/otiai10/gosseract/v2 diff --git a/vendor/github.com/otiai10/gosseract/v2/ISSUE_TEMPLATE.md b/vendor/github.com/otiai10/gosseract/v2/ISSUE_TEMPLATE.md deleted file mode 100644 index b427c0b..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,43 +0,0 @@ -> This text is generated based on `ISSUE_TEMPLATE.md`. The issue reporter must read and remove this block before submitting. - -# Summary - -- bla bla bla - -# Reproducibility - -## Reproducibility Frequency - -- XX% - -## Reproducible Dockerfile - -```dockerfile -FROM your-os:your-version -# Describe how to reproduce your problem -# on your environment -``` - -Otherwise, describe how to reproduce - -1. `foo bar` -2. `spam ham` -3. `hoge fuga` - -# Environment - -``` -uname -a -``` - -``` -go env -``` - -``` -go version -``` - -``` -tesseract --version -``` diff --git a/vendor/github.com/otiai10/gosseract/v2/LICENSE b/vendor/github.com/otiai10/gosseract/v2/LICENSE deleted file mode 100644 index 79a64e9..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 otiai10 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/github.com/otiai10/gosseract/v2/README.md b/vendor/github.com/otiai10/gosseract/v2/README.md deleted file mode 100644 index b43cc9b..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# gosseract OCR - -[![Go Test](https://github.com/otiai10/gosseract/actions/workflows/go-ci.yml/badge.svg)](https://github.com/otiai10/gosseract/actions/workflows/go-ci.yml) -[![Docker Test](https://github.com/otiai10/gosseract/actions/workflows/runtime-docker.yml/badge.svg)](https://github.com/otiai10/gosseract/actions/workflows/runtime-docker.yml) -[![Vagrant Test](https://github.com/otiai10/gosseract/actions/workflows/runtime-vagrant.yml/badge.svg)](https://github.com/otiai10/gosseract/actions/workflows/runtime-vagrant.yml) -[![codecov](https://codecov.io/gh/otiai10/gosseract/branch/main/graph/badge.svg)](https://codecov.io/gh/otiai10/gosseract) -[![Go Report Card](https://goreportcard.com/badge/github.com/otiai10/gosseract)](https://goreportcard.com/report/github.com/otiai10/gosseract) -[![Maintainability](https://api.codeclimate.com/v1/badges/351d9027a3c517505094/maintainability)](https://codeclimate.com/github/otiai10/gosseract/maintainability) -[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/otiai10/gosseract/blob/main/LICENSE) -[![Go Reference](https://pkg.go.dev/badge/github.com/otiai10/gosseract/v2.svg)](https://pkg.go.dev/github.com/otiai10/gosseract/v2) - -Golang OCR package, by using Tesseract C++ library. - -# OCR Server - -Do you just want OCR server, or see the working example of this package? Yes, there is already-made server application, which is seriously easy to deploy! - -👉 https://github.com/otiai10/ocrserver - -# Example - -```go -package main - -import ( - "fmt" - "github.com/otiai10/gosseract/v2" -) - -func main() { - client := gosseract.NewClient() - defer client.Close() - client.SetImage("path/to/image.png") - text, _ := client.Text() - fmt.Println(text) - // Hello, World! -} -``` - -# Installation - -1. [tesseract-ocr](https://github.com/tesseract-ocr/tessdoc), including library and headers -2. `go get -t github.com/otiai10/gosseract/v2` - -Please check this [Dockerfile](https://github.com/otiai10/gosseract/blob/main/Dockerfile) to get started step-by-step. -Or if you want the env instantly, you can just try by `docker run -it --rm otiai10/gosseract`. - -# Test - -In case you have [tesseract-ocr](https://github.com/tesseract-ocr/tessdoc) on your local, you can just hit - -``` -% go test . -``` - -Otherwise, if you **DON'T** want to install tesseract-ocr on your local, kick `./test/runtime` which is using Docker and Vagrant to test the source code on some runtimes. - -``` -% ./test/runtime --driver docker -% ./test/runtime --driver vagrant -``` - -Check [./test/runtimes](https://github.com/otiai10/gosseract/tree/main/test/runtimes) for more information about runtime tests. - -# Issues - -- [https://github.com/otiai10/gosseract/issues](https://github.com/otiai10/gosseract/issues?utf8=%E2%9C%93&q=is%3Aissue) diff --git a/vendor/github.com/otiai10/gosseract/v2/client.go b/vendor/github.com/otiai10/gosseract/v2/client.go deleted file mode 100644 index f016977..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/client.go +++ /dev/null @@ -1,426 +0,0 @@ -package gosseract - -// #include <stdlib.h> -// #include <stdbool.h> -// #include "tessbridge.h" -import "C" -import ( - "fmt" - "image" - "os" - "path/filepath" - "strings" - "unsafe" -) - -// Version returns the version of Tesseract-OCR -func Version() string { - api := C.Create() - defer C.Free(api) - version := C.Version(api) - return C.GoString(version) -} - -// ClearPersistentCache clears any library-level memory caches. There are a variety of expensive-to-load constant data structures (mostly language dictionaries) that are cached globally – surviving the Init() and End() of individual TessBaseAPI's. This function allows the clearing of these caches. -func ClearPersistentCache() { - api := C.Create() - defer C.Free(api) - C.ClearPersistentCache(api) -} - -// Client is argument builder for tesseract::TessBaseAPI. -type Client struct { - api C.TessBaseAPI - - // Holds a reference to the pix image to be able to destroy on client close - // or when a new image is set - pixImage C.PixImage - - // Trim specifies characters to trim, which would be trimed from result string. - // As results of OCR, text often contains unnecessary characters, such as newlines, on the head/foot of string. - // If `Trim` is set, this client will remove specified characters from the result. - Trim bool - - // TessdataPrefix can indicate directory path to `tessdata`. - // It is set `/usr/local/share/tessdata/` or something like that, as default. - // TODO: Implement and test - TessdataPrefix string - - // Languages are languages to be detected. If not specified, it's gonna be "eng". - Languages []string - - // Variables is just a pool to evaluate "tesseract::TessBaseAPI->SetVariable" in delay. - // TODO: Think if it should be public, or private property. - Variables map[SettableVariable]string - - // Config is a file path to the configuration for Tesseract - // See http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version - // TODO: Fix link to official page - ConfigFilePath string - - // internal flag to check if the instance should be initialized again - // i.e, we should create a new gosseract client when language or config file change - shouldInit bool -} - -// NewClient construct new Client. It's due to caller to Close this client. -func NewClient() *Client { - client := &Client{ - api: C.Create(), - Variables: map[SettableVariable]string{}, - Trim: true, - shouldInit: true, - Languages: []string{"eng"}, - } - return client -} - -// Close frees allocated API. This MUST be called for ANY client constructed by "NewClient" function. -func (client *Client) Close() (err error) { - // defer func() { - // if e := recover(); e != nil { - // err = fmt.Errorf("%v", e) - // } - // }() - C.Clear(client.api) - C.Free(client.api) - if client.pixImage != nil { - C.DestroyPixImage(client.pixImage) - client.pixImage = nil - } - return err -} - -// Version provides the version of Tesseract used by this client. -func (client *Client) Version() string { - version := C.Version(client.api) - return C.GoString(version) -} - -// SetImage sets path to image file to be processed OCR. -func (client *Client) SetImage(imagepath string) error { - - if client.api == nil { - return fmt.Errorf("TessBaseAPI is not constructed, please use `gosseract.NewClient`") - } - if imagepath == "" { - return fmt.Errorf("image path cannot be empty") - } - if _, err := os.Stat(imagepath); err != nil { - return fmt.Errorf("cannot detect the stat of specified file: %v", err) - } - - if client.pixImage != nil { - C.DestroyPixImage(client.pixImage) - client.pixImage = nil - } - - p := C.CString(imagepath) - defer C.free(unsafe.Pointer(p)) - - img := C.CreatePixImageByFilePath(p) - client.pixImage = img - - return nil -} - -// SetImageFromBytes sets the image data to be processed OCR. -func (client *Client) SetImageFromBytes(data []byte) error { - - if client.api == nil { - return fmt.Errorf("TessBaseAPI is not constructed, please use `gosseract.NewClient`") - } - if len(data) == 0 { - return fmt.Errorf("image data cannot be empty") - } - - if client.pixImage != nil { - C.DestroyPixImage(client.pixImage) - client.pixImage = nil - } - - img := C.CreatePixImageFromBytes((*C.uchar)(unsafe.Pointer(&data[0])), C.int(len(data))) - client.pixImage = img - - return nil -} - -// SetLanguage sets languages to use. English as default. -func (client *Client) SetLanguage(langs ...string) error { - if len(langs) == 0 { - return fmt.Errorf("languages cannot be empty") - } - - client.Languages = langs - - client.flagForInit() - - return nil -} - -// DisableOutput ... -func (client *Client) DisableOutput() error { - err := client.SetVariable(DEBUG_FILE, os.DevNull) - - client.setVariablesToInitializedAPIIfNeeded() - - return err -} - -// SetWhitelist sets whitelist chars. -// See official documentation for whitelist here https://tesseract-ocr.github.io/tessdoc/ImproveQuality#dictionaries-word-lists-and-patterns -func (client *Client) SetWhitelist(whitelist string) error { - err := client.SetVariable(TESSEDIT_CHAR_WHITELIST, whitelist) - - client.setVariablesToInitializedAPIIfNeeded() - - return err -} - -// SetBlacklist sets blacklist chars. -// See official documentation for blacklist here https://tesseract-ocr.github.io/tessdoc/ImproveQuality#dictionaries-word-lists-and-patterns -func (client *Client) SetBlacklist(blacklist string) error { - err := client.SetVariable(TESSEDIT_CHAR_BLACKLIST, blacklist) - - client.setVariablesToInitializedAPIIfNeeded() - - return err -} - -// SetVariable sets parameters, representing tesseract::TessBaseAPI->SetVariable. -// See official documentation here https://zdenop.github.io/tesseract-doc/classtesseract_1_1_tess_base_a_p_i.html#a2e09259c558c6d8e0f7e523cbaf5adf5 -// Because `api->SetVariable` must be called after `api->Init`, this method cannot detect unexpected key for variables. -// Check `client.setVariablesToInitializedAPI` for more information. -func (client *Client) SetVariable(key SettableVariable, value string) error { - client.Variables[key] = value - - client.setVariablesToInitializedAPIIfNeeded() - - return nil -} - -// SetPageSegMode sets "Page Segmentation Mode" (PSM) to detect layout of characters. -// See official documentation for PSM here https://tesseract-ocr.github.io/tessdoc/ImproveQuality#page-segmentation-method -// See https://github.com/otiai10/gosseract/issues/52 for more information. -func (client *Client) SetPageSegMode(mode PageSegMode) error { - C.SetPageSegMode(client.api, C.int(mode)) - return nil -} - -// SetConfigFile sets the file path to config file. -func (client *Client) SetConfigFile(fpath string) error { - info, err := os.Stat(fpath) - if err != nil { - return err - } - if info.IsDir() { - return fmt.Errorf("the specified config file path seems to be a directory") - } - client.ConfigFilePath = fpath - - client.flagForInit() - - return nil -} - -// SetTessdataPrefix sets path to the models directory. -// Environment variable TESSDATA_PREFIX is used as default. -func (client *Client) SetTessdataPrefix(prefix string) error { - if prefix == "" { - return fmt.Errorf("tessdata prefix could not be empty") - } - client.TessdataPrefix = prefix - client.flagForInit() - return nil -} - -// Initialize tesseract::TessBaseAPI -func (client *Client) init() error { - - if !client.shouldInit { - C.SetPixImage(client.api, client.pixImage) - return nil - } - - var languages *C.char - if len(client.Languages) != 0 { - languages = C.CString(strings.Join(client.Languages, "+")) - } - defer C.free(unsafe.Pointer(languages)) - - var configfile *C.char - if _, err := os.Stat(client.ConfigFilePath); err == nil { - configfile = C.CString(client.ConfigFilePath) - } - defer C.free(unsafe.Pointer(configfile)) - - var tessdataPrefix *C.char - if client.TessdataPrefix != "" { - tessdataPrefix = C.CString(client.TessdataPrefix) - } - defer C.free(unsafe.Pointer(tessdataPrefix)) - - errbuf := [512]C.char{} - res := C.Init(client.api, tessdataPrefix, languages, configfile, &errbuf[0]) - msg := C.GoString(&errbuf[0]) - - if res != 0 { - return fmt.Errorf("failed to initialize TessBaseAPI with code %d: %s", res, msg) - } - - if err := client.setVariablesToInitializedAPI(); err != nil { - return err - } - - if client.pixImage == nil { - return fmt.Errorf("PixImage is not set, use SetImage or SetImageFromBytes before Text or HOCRText") - } - - C.SetPixImage(client.api, client.pixImage) - - client.shouldInit = false - - return nil -} - -// This method flag the current instance to be initialized again on the next call to a function that -// requires a gosseract API initialized: when user change the config file or the languages -// the instance needs to init a new gosseract api -func (client *Client) flagForInit() { - client.shouldInit = true -} - -// This method sets all the sspecified variables to TessBaseAPI structure. -// Because `api->SetVariable` must be called after `api->Init()`, -// gosseract.Client.SetVariable cannot call `api->SetVariable` directly. -// See https://zdenop.github.io/tesseract-doc/classtesseract_1_1_tess_base_a_p_i.html#a2e09259c558c6d8e0f7e523cbaf5adf5 -func (client *Client) setVariablesToInitializedAPI() error { - for key, value := range client.Variables { - k, v := C.CString(string(key)), C.CString(value) - defer C.free(unsafe.Pointer(k)) - defer C.free(unsafe.Pointer(v)) - res := C.SetVariable(client.api, k, v) - if !bool(res) { - return fmt.Errorf("failed to set variable with key(%v) and value(%v)", key, value) - } - } - return nil -} - -// Call setVariablesToInitializedAPI only if the API is initialized -// it is useful to call when changing variables that does not requires -// to init a new tesseract instance. Otherwise it is better to just flag -// the instance for re-init (Client.flagForInit()) -func (client *Client) setVariablesToInitializedAPIIfNeeded() error { - if !client.shouldInit { - return client.setVariablesToInitializedAPI() - } - - return nil -} - -// Text finally initialize tesseract::TessBaseAPI, execute OCR and extract text detected as string. -func (client *Client) Text() (out string, err error) { - if err = client.init(); err != nil { - return - } - out = C.GoString(C.UTF8Text(client.api)) - if client.Trim { - out = strings.Trim(out, "\n") - } - return out, err -} - -// HOCRText finally initialize tesseract::TessBaseAPI, execute OCR and returns hOCR text. -// See https://en.wikipedia.org/wiki/HOCR for more information of hOCR. -func (client *Client) HOCRText() (out string, err error) { - if err = client.init(); err != nil { - return - } - out = C.GoString(C.HOCRText(client.api)) - return -} - -// BoundingBox contains the position, confidence and UTF8 text of the recognized word -type BoundingBox struct { - Box image.Rectangle - Word string - Confidence float64 - BlockNum, ParNum, LineNum, WordNum int -} - -// GetBoundingBoxes returns bounding boxes for each matched word -func (client *Client) GetBoundingBoxes(level PageIteratorLevel) (out []BoundingBox, err error) { - if client.api == nil { - return out, fmt.Errorf("TessBaseAPI is not constructed, please use `gosseract.NewClient`") - } - if err = client.init(); err != nil { - return - } - boxArray := C.GetBoundingBoxes(client.api, C.int(level)) - length := int(boxArray.length) - defer C.free(unsafe.Pointer(boxArray.boxes)) - defer C.free(unsafe.Pointer(boxArray)) - out = make([]BoundingBox, 0, length) - for i := 0; i < length; i++ { - // cast to bounding_box: boxes + i*sizeof(box) - box := (*C.struct_bounding_box)(unsafe.Pointer(uintptr(unsafe.Pointer(boxArray.boxes)) + uintptr(i)*unsafe.Sizeof(C.struct_bounding_box{}))) - out = append(out, BoundingBox{ - Box: image.Rect(int(box.x1), int(box.y1), int(box.x2), int(box.y2)), - Word: C.GoString(box.word), - Confidence: float64(box.confidence), - }) - } - - return -} - -// GetAvailableLanguages returns a list of available languages in the default tesspath -func GetAvailableLanguages() ([]string, error) { - languages, err := filepath.Glob(filepath.Join(getDataPath(), "*.traineddata")) - if err != nil { - return languages, err - } - for i := 0; i < len(languages); i++ { - languages[i] = filepath.Base(languages[i]) - idx := strings.Index(languages[i], ".") - languages[i] = languages[i][:idx] - } - return languages, nil -} - -// GetBoundingBoxesVerbose returns bounding boxes at word level with block_num, par_num, line_num and word_num -// according to the c++ api that returns a formatted TSV output. Reference: `TessBaseAPI::GetTSVText`. -func (client *Client) GetBoundingBoxesVerbose() (out []BoundingBox, err error) { - if client.api == nil { - return out, fmt.Errorf("TessBaseAPI is not constructed, please use `gosseract.NewClient`") - } - if err = client.init(); err != nil { - return - } - boxArray := C.GetBoundingBoxesVerbose(client.api) - length := int(boxArray.length) - defer C.free(unsafe.Pointer(boxArray.boxes)) - defer C.free(unsafe.Pointer(boxArray)) - out = make([]BoundingBox, 0, length) - for i := 0; i < length; i++ { - // cast to bounding_box: boxes + i*sizeof(box) - box := (*C.struct_bounding_box)(unsafe.Pointer(uintptr(unsafe.Pointer(boxArray.boxes)) + uintptr(i)*unsafe.Sizeof(C.struct_bounding_box{}))) - out = append(out, BoundingBox{ - Box: image.Rect(int(box.x1), int(box.y1), int(box.x2), int(box.y2)), - Word: C.GoString(box.word), - Confidence: float64(box.confidence), - BlockNum: int(box.block_num), - ParNum: int(box.par_num), - LineNum: int(box.line_num), - WordNum: int(box.word_num), - }) - } - return -} - -// getDataPath is useful hepler to determine where current tesseract -// installation stores trained models -func getDataPath() string { - return C.GoString(C.GetDataPath()) -} diff --git a/vendor/github.com/otiai10/gosseract/v2/constant.go b/vendor/github.com/otiai10/gosseract/v2/constant.go deleted file mode 100644 index b431d7c..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/constant.go +++ /dev/null @@ -1,78 +0,0 @@ -package gosseract - -// PageSegMode represents tesseract::PageSegMode. -// See https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#page-segmentation-method and -// https://github.com/tesseract-ocr/tesseract/blob/a18620cfea33d03032b71fe1b9fc424777e34252/ccstruct/publictypes.h#L158-L183 for more information. -type PageSegMode int - -const ( - // PSM_OSD_ONLY - Orientation and script detection (OSD) only. - PSM_OSD_ONLY PageSegMode = iota - // PSM_AUTO_OSD - Automatic page segmentation with OSD. - PSM_AUTO_OSD - // PSM_AUTO_ONLY - Automatic page segmentation, but no OSD, or OCR. - PSM_AUTO_ONLY - // PSM_AUTO - (DEFAULT) Fully automatic page segmentation, but no OSD. - PSM_AUTO - // PSM_SINGLE_COLUMN - Assume a single column of text of variable sizes. - PSM_SINGLE_COLUMN - // PSM_SINGLE_BLOCK_VERT_TEXT - Assume a single uniform block of vertically aligned text. - PSM_SINGLE_BLOCK_VERT_TEXT - // PSM_SINGLE_BLOCK - Assume a single uniform block of text. - PSM_SINGLE_BLOCK - // PSM_SINGLE_LINE - Treat the image as a single text line. - PSM_SINGLE_LINE - // PSM_SINGLE_WORD - Treat the image as a single word. - PSM_SINGLE_WORD - // PSM_CIRCLE_WORD - Treat the image as a single word in a circle. - PSM_CIRCLE_WORD - // PSM_SINGLE_CHAR - Treat the image as a single character. - PSM_SINGLE_CHAR - // PSM_SPARSE_TEXT - Find as much text as possible in no particular order. - PSM_SPARSE_TEXT - // PSM_SPARSE_TEXT_OSD - Sparse text with orientation and script det. - PSM_SPARSE_TEXT_OSD - // PSM_RAW_LINE - Treat the image as a single text line, bypassing hacks that are Tesseract-specific. - PSM_RAW_LINE - - // PSM_COUNT - Just a number of enum entries. This is NOT a member of PSM ;) - PSM_COUNT -) - -// PageIteratorLevel maps directly to tesseracts enum tesseract::PageIteratorLevel -// represents the hierarchy of the page elements used in ResultIterator. -// https://github.com/tesseract-ocr/tesseract/blob/a18620cfea33d03032b71fe1b9fc424777e34252/ccstruct/publictypes.h#L219-L225 -type PageIteratorLevel int - -const ( - // RIL_BLOCK - Block of text/image/separator line. - RIL_BLOCK PageIteratorLevel = iota - // RIL_PARA - Paragraph within a block. - RIL_PARA - // RIL_TEXTLINE - Line within a paragraph. - RIL_TEXTLINE - // RIL_WORD - Word within a textline. - RIL_WORD - // RIL_SYMBOL - Symbol/character within a word. - RIL_SYMBOL -) - -// SettableVariable represents available strings for TessBaseAPI::SetVariable. -// See https://groups.google.com/forum/#!topic/tesseract-ocr/eHTBzrBiwvQ -// and https://github.com/tesseract-ocr/tesseract/blob/master/src/ccmain/tesseractclass.h -type SettableVariable string - -// Followings are variables which can be used for TessBaseAPI::SetVariable. -// If anything missing (I know there are many), please add one below. -const ( - // DEBUG_FILE - File to send output to. - DEBUG_FILE SettableVariable = "debug_file" - // TESSEDIT_CHAR_WHITELIST - Whitelist of chars to recognize - // There is a known issue in 4.00 with LSTM - // https://github.com/tesseract-ocr/tesseract/issues/751 - TESSEDIT_CHAR_WHITELIST SettableVariable = "tessedit_char_whitelist" - // TESSEDIT_CHAR_BLACKLIST - Blacklist of chars not to recognize - // There is a known issue in 4.00 with LSTM - // https://github.com/tesseract-ocr/tesseract/issues/751 - TESSEDIT_CHAR_BLACKLIST SettableVariable = "tessedit_char_blacklist" -) diff --git a/vendor/github.com/otiai10/gosseract/v2/hocr.go b/vendor/github.com/otiai10/gosseract/v2/hocr.go deleted file mode 100644 index 1007b1c..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/hocr.go +++ /dev/null @@ -1,49 +0,0 @@ -package gosseract - -/** - * NOTE: - * These structs are the very minimum implementation - * only to satisfy test assertions. - * TODO: Extend structs to cover main usecases. -**/ - -// Page represents `<div class='ocr_page' />` -type Page struct { - ID string `xml:"id,attr"` - Title string `xml:"title,attr"` - Class string `xml:"class,attr"` - Content Content `xml:"div"` -} - -// Content represents `<div class='ocr_carea' />` -type Content struct { - ID string `xml:"id,attr"` - Title string `xml:"title,attr"` - Class string `xml:"class,attr"` - Par Par `xml:"p"` -} - -// Par represents `<p class='ocr_par' />` -type Par struct { - ID string `xml:"id,attr"` - Title string `xml:"title,attr"` - Class string `xml:"class,attr"` - Language string `xml:"lang,attr"` - Lines []Line `xml:"span"` -} - -// Line represents `<span class='ocr_line' />` -type Line struct { - ID string `xml:"id,attr"` - Title string `xml:"title,attr"` - Class string `xml:"class,attr"` - Words []Word `xml:"span"` -} - -// Word represents `<span class='ocr_word' />` -type Word struct { - ID string `xml:"id,attr"` - Title string `xml:"title,attr"` - Class string `xml:"class,attr"` - Characters string `xml:",chardata"` -} diff --git a/vendor/github.com/otiai10/gosseract/v2/preprocessflags_freebsd.go b/vendor/github.com/otiai10/gosseract/v2/preprocessflags_freebsd.go deleted file mode 100644 index 269dc1e..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/preprocessflags_freebsd.go +++ /dev/null @@ -1,4 +0,0 @@ -package gosseract - -// #cgo LDFLAGS: -L/usr/local/lib -llept -ltesseract -fopenmp -import "C" diff --git a/vendor/github.com/otiai10/gosseract/v2/preprocessflags_x.go b/vendor/github.com/otiai10/gosseract/v2/preprocessflags_x.go deleted file mode 100644 index f12d1a2..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/preprocessflags_x.go +++ /dev/null @@ -1,7 +0,0 @@ -package gosseract - -// #cgo CXXFLAGS: -std=c++0x -// #cgo CPPFLAGS: -I/usr/local/include -// #cgo CPPFLAGS: -Wno-unused-result -// #cgo LDFLAGS: -L/usr/local/lib -lleptonica -ltesseract -import "C" diff --git a/vendor/github.com/otiai10/gosseract/v2/tessbridge.cpp b/vendor/github.com/otiai10/gosseract/v2/tessbridge.cpp deleted file mode 100644 index c37378b..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/tessbridge.cpp +++ /dev/null @@ -1,230 +0,0 @@ -#if __FreeBSD__ >= 10 -#include "/usr/local/include/leptonica/allheaders.h" -#include "/usr/local/include/tesseract/baseapi.h" -#else -#include <leptonica/allheaders.h> -#include <tesseract/baseapi.h> -#endif - -#include <stdio.h> -#include <unistd.h> -#include "tessbridge.h" - -TessBaseAPI Create() { - tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI(); - return (void*)api; -} - -void Free(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - if (api != nullptr) { - api->End(); - delete api; - } -} - -void Clear(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - if (api != nullptr) { - api->Clear(); - } -} - -void ClearPersistentCache(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - api->ClearPersistentCache(); -} - -int Init(TessBaseAPI a, char* tessdataprefix, char* languages) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - return api->Init(tessdataprefix, languages); -} - -int Init(TessBaseAPI a, char* tessdataprefix, char* languages, char* configfilepath, char* errbuf) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - - // {{{ Redirect STDERR to given buffer - fflush(stderr); - int original_stderr; - original_stderr = dup(STDERR_FILENO); - (void)freopen("/dev/null", "a", stderr); - setbuf(stderr, errbuf); - // }}} - - int ret; - if (configfilepath != NULL) { - char* configs[] = {configfilepath}; - int configs_size = 1; - ret = api->Init(tessdataprefix, languages, tesseract::OEM_DEFAULT, configs, configs_size, NULL, NULL, false); - } else { - ret = api->Init(tessdataprefix, languages); - } - - // {{{ Restore default stderr - (void)freopen("/dev/null", "a", stderr); - dup2(original_stderr, STDERR_FILENO); - close(original_stderr); - setbuf(stderr, NULL); - // }}} - - return ret; -} - -bool SetVariable(TessBaseAPI a, char* name, char* value) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - return api->SetVariable(name, value); -} - -void SetPixImage(TessBaseAPI a, PixImage pix) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - Pix* image = (Pix*)pix; - api->SetImage(image); - if (api->GetSourceYResolution() < 70) { - api->SetSourceResolution(70); - } -} - -void SetPageSegMode(TessBaseAPI a, int m) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - tesseract::PageSegMode mode = (tesseract::PageSegMode)m; - api->SetPageSegMode(mode); -} - -int GetPageSegMode(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - return api->GetPageSegMode(); -} - -char* UTF8Text(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - return api->GetUTF8Text(); -} - -char* HOCRText(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - return api->GetHOCRText(0); -} - -bounding_boxes* GetBoundingBoxesVerbose(TessBaseAPI a) { - using namespace tesseract; - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - struct bounding_boxes* box_array; - box_array = (bounding_boxes*)malloc(sizeof(bounding_boxes)); - // linearly resize boxes array - int realloc_threshold = 900; - int realloc_raise = 1000; - int capacity = 1000; - box_array->boxes = (bounding_box*)malloc(capacity * sizeof(bounding_box)); - box_array->length = 0; - api->Recognize(NULL); - int block_num = 0; - int par_num = 0; - int line_num = 0; - int word_num = 0; - - ResultIterator* res_it = api->GetIterator(); - while (!res_it->Empty(RIL_BLOCK)) { - if (res_it->Empty(RIL_WORD)) { - res_it->Next(RIL_WORD); - continue; - } - // Add rows for any new block/paragraph/textline. - if (res_it->IsAtBeginningOf(RIL_BLOCK)) { - block_num++; - par_num = 0; - line_num = 0; - word_num = 0; - } - if (res_it->IsAtBeginningOf(RIL_PARA)) { - par_num++; - line_num = 0; - word_num = 0; - } - if (res_it->IsAtBeginningOf(RIL_TEXTLINE)) { - line_num++; - word_num = 0; - } - word_num++; - - if (box_array->length >= realloc_threshold) { - capacity += realloc_raise; - box_array->boxes = (bounding_box*)realloc(box_array->boxes, capacity * sizeof(bounding_box)); - realloc_threshold += realloc_raise; - } - - box_array->boxes[box_array->length].word = res_it->GetUTF8Text(RIL_WORD); - box_array->boxes[box_array->length].confidence = res_it->Confidence(RIL_WORD); - res_it->BoundingBox(RIL_WORD, &box_array->boxes[box_array->length].x1, &box_array->boxes[box_array->length].y1, - &box_array->boxes[box_array->length].x2, &box_array->boxes[box_array->length].y2); - - // block, para, line, word numbers - box_array->boxes[box_array->length].block_num = block_num; - box_array->boxes[box_array->length].par_num = par_num; - box_array->boxes[box_array->length].line_num = line_num; - box_array->boxes[box_array->length].word_num = word_num; - - box_array->length++; - res_it->Next(RIL_WORD); - } - - return box_array; -} - -bounding_boxes* GetBoundingBoxes(TessBaseAPI a, int pageIteratorLevel) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - struct bounding_boxes* box_array; - box_array = (bounding_boxes*)malloc(sizeof(bounding_boxes)); - // linearly resize boxes array - int realloc_threshold = 900; - int realloc_raise = 1000; - int capacity = 1000; - box_array->boxes = (bounding_box*)malloc(capacity * sizeof(bounding_box)); - box_array->length = 0; - api->Recognize(NULL); - tesseract::ResultIterator* ri = api->GetIterator(); - tesseract::PageIteratorLevel level = (tesseract::PageIteratorLevel)pageIteratorLevel; - - if (ri != 0) { - do { - if (box_array->length >= realloc_threshold) { - capacity += realloc_raise; - box_array->boxes = (bounding_box*)realloc(box_array->boxes, capacity * sizeof(bounding_box)); - realloc_threshold += realloc_raise; - } - box_array->boxes[box_array->length].word = ri->GetUTF8Text(level); - box_array->boxes[box_array->length].confidence = ri->Confidence(level); - ri->BoundingBox(level, &box_array->boxes[box_array->length].x1, &box_array->boxes[box_array->length].y1, - &box_array->boxes[box_array->length].x2, &box_array->boxes[box_array->length].y2); - box_array->length++; - } while (ri->Next(level)); - } - - return box_array; -} - -const char* Version(TessBaseAPI a) { - tesseract::TessBaseAPI* api = (tesseract::TessBaseAPI*)a; - const char* v = api->Version(); - return v; -} - -PixImage CreatePixImageByFilePath(char* imagepath) { - Pix* image = pixRead(imagepath); - return (void*)image; -} - -PixImage CreatePixImageFromBytes(unsigned char* data, int size) { - Pix* image = pixReadMem(data, (size_t)size); - return (void*)image; -} - -void DestroyPixImage(PixImage pix) { - Pix* img = (Pix*)pix; - pixDestroy(&img); -} - -const char* GetDataPath() { - static tesseract::TessBaseAPI api; - api.Init(nullptr, nullptr); - return api.GetDatapath(); -} diff --git a/vendor/github.com/otiai10/gosseract/v2/tessbridge.h b/vendor/github.com/otiai10/gosseract/v2/tessbridge.h deleted file mode 100644 index 161c08a..0000000 --- a/vendor/github.com/otiai10/gosseract/v2/tessbridge.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -typedef void* TessBaseAPI; -typedef void* PixImage; - -struct bounding_box { - int x1, y1, x2, y2; - char* word; - float confidence; - int block_num, par_num, line_num, word_num; -}; - -struct bounding_boxes { - int length; - struct bounding_box* boxes; -}; - -TessBaseAPI Create(void); - -void Free(TessBaseAPI); -void Clear(TessBaseAPI); -void ClearPersistentCache(TessBaseAPI); -int Init(TessBaseAPI, char*, char*, char*, char*); -struct bounding_boxes* GetBoundingBoxes(TessBaseAPI, int); -struct bounding_boxes* GetBoundingBoxesVerbose(TessBaseAPI); -bool SetVariable(TessBaseAPI, char*, char*); -void SetPixImage(TessBaseAPI a, PixImage pix); -void SetPageSegMode(TessBaseAPI, int); -int GetPageSegMode(TessBaseAPI); -char* UTF8Text(TessBaseAPI); -char* HOCRText(TessBaseAPI); -const char* Version(TessBaseAPI); -const char* GetDataPath(); - -PixImage CreatePixImageByFilePath(char*); -PixImage CreatePixImageFromBytes(unsigned char*, int); -void DestroyPixImage(PixImage pix); - -#ifdef __cplusplus -} -#endif /* extern "C" */ diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/pkg/errors/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml deleted file mode 100644 index 9159de0..0000000 --- a/vendor/github.com/pkg/errors/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: go -go_import_path: github.com/pkg/errors -go: - - 1.11.x - - 1.12.x - - 1.13.x - - tip - -script: - - make check diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE deleted file mode 100644 index 835ba3e..0000000 --- a/vendor/github.com/pkg/errors/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2015, Dave Cheney <dave@cheney.net> -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/Makefile b/vendor/github.com/pkg/errors/Makefile deleted file mode 100644 index ce9d7cd..0000000 --- a/vendor/github.com/pkg/errors/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -PKGS := github.com/pkg/errors -SRCDIRS := $(shell go list -f '{{.Dir}}' $(PKGS)) -GO := go - -check: test vet gofmt misspell unconvert staticcheck ineffassign unparam - -test: - $(GO) test $(PKGS) - -vet: | test - $(GO) vet $(PKGS) - -staticcheck: - $(GO) get honnef.co/go/tools/cmd/staticcheck - staticcheck -checks all $(PKGS) - -misspell: - $(GO) get github.com/client9/misspell/cmd/misspell - misspell \ - -locale GB \ - -error \ - *.md *.go - -unconvert: - $(GO) get github.com/mdempsky/unconvert - unconvert -v $(PKGS) - -ineffassign: - $(GO) get github.com/gordonklaus/ineffassign - find $(SRCDIRS) -name '*.go' | xargs ineffassign - -pedantic: check errcheck - -unparam: - $(GO) get mvdan.cc/unparam - unparam ./... - -errcheck: - $(GO) get github.com/kisielk/errcheck - errcheck $(PKGS) - -gofmt: - @echo Checking code is gofmted - @test -z "$(shell gofmt -s -l -d -e $(SRCDIRS) | tee /dev/stderr)" diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md deleted file mode 100644 index ac4240c..0000000 --- a/vendor/github.com/pkg/errors/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) - -Package errors provides simple error handling primitives. - -`go get github.com/pkg/errors` - -The traditional error handling idiom in Go is roughly akin to -```go -if err != nil { - return err -} -``` -which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. - -## Adding context to an error - -The errors.Wrap function returns a new error that adds context to the original error. For example -```go -_, err := io.ReadAll(r) -if err != nil { - return errors.Wrap(err, "read failed") -} -``` -## Retrieving the cause of an error - -Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. -```go -type causer interface { - Cause() error -} -``` -`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: -```go -switch err := errors.Cause(err).(type) { -case *MyError: - // handle specifically -default: - // unknown error -} -``` - -[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). - -## Roadmap - -With the upcoming [Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) this package is moving into maintenance mode. The roadmap for a 1.0 release is as follows: - -- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests (if possible) -- 1.0. Final release. - -## Contributing - -Because of the Go2 errors changes, this package is not accepting proposals for new functionality. With that said, we welcome pull requests, bug fixes and issue reports. - -Before sending a PR, please discuss your change by raising an issue. - -## License - -BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml deleted file mode 100644 index a932ead..0000000 --- a/vendor/github.com/pkg/errors/appveyor.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: build-{build}.{branch} - -clone_folder: C:\gopath\src\github.com\pkg\errors -shallow_clone: true # for startup speed - -environment: - GOPATH: C:\gopath - -platform: - - x64 - -# http://www.appveyor.com/docs/installed-software -install: - # some helpful output for debugging builds - - go version - - go env - # pre-installed MinGW at C:\MinGW is 32bit only - # but MSYS2 at C:\msys64 has mingw64 - - set PATH=C:\msys64\mingw64\bin;%PATH% - - gcc --version - - g++ --version - -build_script: - - go install -v ./... - -test_script: - - set PATH=C:\gopath\bin;%PATH% - - go test -v ./... - -#artifacts: -# - path: '%GOPATH%\bin\*.exe' -deploy: off diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go deleted file mode 100644 index d9bd8f1..0000000 --- a/vendor/github.com/pkg/errors/errors.go +++ /dev/null @@ -1,288 +0,0 @@ -// Package errors provides simple error handling primitives. -// -// The traditional error handling idiom in Go is roughly akin to -// -// if err != nil { -// return err -// } -// -// which when applied recursively up the call stack results in error reports -// without context or debugging information. The errors package allows -// programmers to add context to the failure path in their code in a way -// that does not destroy the original value of the error. -// -// # Adding context to an error -// -// The errors.Wrap function returns a new error that adds context to the -// original error by recording a stack trace at the point Wrap is called, -// together with the supplied message. For example -// -// _, err := io.ReadAll(r) -// if err != nil { -// return errors.Wrap(err, "read failed") -// } -// -// If additional control is required, the errors.WithStack and -// errors.WithMessage functions destructure errors.Wrap into its component -// operations: annotating an error with a stack trace and with a message, -// respectively. -// -// # Retrieving the cause of an error -// -// Using errors.Wrap constructs a stack of errors, adding context to the -// preceding error. Depending on the nature of the error it may be necessary -// to reverse the operation of errors.Wrap to retrieve the original error -// for inspection. Any error value which implements this interface -// -// type causer interface { -// Cause() error -// } -// -// can be inspected by errors.Cause. errors.Cause will recursively retrieve -// the topmost error that does not implement causer, which is assumed to be -// the original cause. For example: -// -// switch err := errors.Cause(err).(type) { -// case *MyError: -// // handle specifically -// default: -// // unknown error -// } -// -// Although the causer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// # Formatted printing of errors -// -// All error values returned from this package implement fmt.Formatter and can -// be formatted by the fmt package. The following verbs are supported: -// -// %s print the error. If the error has a Cause it will be -// printed recursively. -// %v see %s -// %+v extended format. Each Frame of the error's StackTrace will -// be printed in detail. -// -// # Retrieving the stack trace of an error or wrapper -// -// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are -// invoked. This information can be retrieved with the following interface: -// -// type stackTracer interface { -// StackTrace() errors.StackTrace -// } -// -// The returned errors.StackTrace type is defined as -// -// type StackTrace []Frame -// -// The Frame type represents a call site in the stack trace. Frame supports -// the fmt.Formatter interface that can be used for printing information about -// the stack trace of this error. For example: -// -// if err, ok := err.(stackTracer); ok { -// for _, f := range err.StackTrace() { -// fmt.Printf("%+s:%d\n", f, f) -// } -// } -// -// Although the stackTracer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// See the documentation for Frame.Format for more details. -package errors - -import ( - "fmt" - "io" -) - -// New returns an error with the supplied message. -// New also records the stack trace at the point it was called. -func New(message string) error { - return &fundamental{ - msg: message, - stack: callers(), - } -} - -// Errorf formats according to a format specifier and returns the string -// as a value that satisfies error. -// Errorf also records the stack trace at the point it was called. -func Errorf(format string, args ...interface{}) error { - return &fundamental{ - msg: fmt.Sprintf(format, args...), - stack: callers(), - } -} - -// fundamental is an error that has a message and a stack, but no caller. -type fundamental struct { - msg string - *stack -} - -func (f *fundamental) Error() string { return f.msg } - -func (f *fundamental) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - io.WriteString(s, f.msg) - f.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, f.msg) - case 'q': - fmt.Fprintf(s, "%q", f.msg) - } -} - -// WithStack annotates err with a stack trace at the point WithStack was called. -// If err is nil, WithStack returns nil. -func WithStack(err error) error { - if err == nil { - return nil - } - return &withStack{ - err, - callers(), - } -} - -type withStack struct { - error - *stack -} - -func (w *withStack) Cause() error { return w.error } - -// Unwrap provides compatibility for Go 1.13 error chains. -func (w *withStack) Unwrap() error { return w.error } - -func (w *withStack) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v", w.Cause()) - w.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, w.Error()) - case 'q': - fmt.Fprintf(s, "%q", w.Error()) - } -} - -// Wrap returns an error annotating err with a stack trace -// at the point Wrap is called, and the supplied message. -// If err is nil, Wrap returns nil. -func Wrap(err error, message string) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: message, - } - return &withStack{ - err, - callers(), - } -} - -// Wrapf returns an error annotating err with a stack trace -// at the point Wrapf is called, and the format specifier. -// If err is nil, Wrapf returns nil. -func Wrapf(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } - return &withStack{ - err, - callers(), - } -} - -// WithMessage annotates err with a new message. -// If err is nil, WithMessage returns nil. -func WithMessage(err error, message string) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: message, - } -} - -// WithMessagef annotates err with the format specifier. -// If err is nil, WithMessagef returns nil. -func WithMessagef(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } -} - -type withMessage struct { - cause error - msg string -} - -func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } -func (w *withMessage) Cause() error { return w.cause } - -// Unwrap provides compatibility for Go 1.13 error chains. -func (w *withMessage) Unwrap() error { return w.cause } - -func (w *withMessage) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v\n", w.Cause()) - io.WriteString(s, w.msg) - return - } - fallthrough - case 's', 'q': - io.WriteString(s, w.Error()) - } -} - -// Cause returns the underlying cause of the error, if possible. -// An error value has a cause if it implements the following -// interface: -// -// type causer interface { -// Cause() error -// } -// -// If the error does not implement Cause, the original error will -// be returned. If the error is nil, nil will be returned without further -// investigation. -func Cause(err error) error { - type causer interface { - Cause() error - } - - for err != nil { - cause, ok := err.(causer) - if !ok { - break - } - err = cause.Cause() - } - return err -} diff --git a/vendor/github.com/pkg/errors/go113.go b/vendor/github.com/pkg/errors/go113.go deleted file mode 100644 index be0d10d..0000000 --- a/vendor/github.com/pkg/errors/go113.go +++ /dev/null @@ -1,38 +0,0 @@ -// +build go1.13 - -package errors - -import ( - stderrors "errors" -) - -// Is reports whether any error in err's chain matches target. -// -// The chain consists of err itself followed by the sequence of errors obtained by -// repeatedly calling Unwrap. -// -// An error is considered to match a target if it is equal to that target or if -// it implements a method Is(error) bool such that Is(target) returns true. -func Is(err, target error) bool { return stderrors.Is(err, target) } - -// As finds the first error in err's chain that matches target, and if so, sets -// target to that error value and returns true. -// -// The chain consists of err itself followed by the sequence of errors obtained by -// repeatedly calling Unwrap. -// -// An error matches target if the error's concrete value is assignable to the value -// pointed to by target, or if the error has a method As(interface{}) bool such that -// As(target) returns true. In the latter case, the As method is responsible for -// setting target. -// -// As will panic if target is not a non-nil pointer to either a type that implements -// error, or to any interface type. As returns false if err is nil. -func As(err error, target interface{}) bool { return stderrors.As(err, target) } - -// Unwrap returns the result of calling the Unwrap method on err, if err's -// type contains an Unwrap method returning error. -// Otherwise, Unwrap returns nil. -func Unwrap(err error) error { - return stderrors.Unwrap(err) -} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go deleted file mode 100644 index 779a834..0000000 --- a/vendor/github.com/pkg/errors/stack.go +++ /dev/null @@ -1,177 +0,0 @@ -package errors - -import ( - "fmt" - "io" - "path" - "runtime" - "strconv" - "strings" -) - -// Frame represents a program counter inside a stack frame. -// For historical reasons if Frame is interpreted as a uintptr -// its value represents the program counter + 1. -type Frame uintptr - -// pc returns the program counter for this frame; -// multiple frames may have the same PC value. -func (f Frame) pc() uintptr { return uintptr(f) - 1 } - -// file returns the full path to the file that contains the -// function for this Frame's pc. -func (f Frame) file() string { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return "unknown" - } - file, _ := fn.FileLine(f.pc()) - return file -} - -// line returns the line number of source code of the -// function for this Frame's pc. -func (f Frame) line() int { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return 0 - } - _, line := fn.FileLine(f.pc()) - return line -} - -// name returns the name of this function, if known. -func (f Frame) name() string { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return "unknown" - } - return fn.Name() -} - -// Format formats the frame according to the fmt.Formatter interface. -// -// %s source file -// %d source line -// %n function name -// %v equivalent to %s:%d -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+s function name and path of source file relative to the compile time -// GOPATH separated by \n\t (<funcname>\n\t<path>) -// %+v equivalent to %+s:%d -func (f Frame) Format(s fmt.State, verb rune) { - switch verb { - case 's': - switch { - case s.Flag('+'): - io.WriteString(s, f.name()) - io.WriteString(s, "\n\t") - io.WriteString(s, f.file()) - default: - io.WriteString(s, path.Base(f.file())) - } - case 'd': - io.WriteString(s, strconv.Itoa(f.line())) - case 'n': - io.WriteString(s, funcname(f.name())) - case 'v': - f.Format(s, 's') - io.WriteString(s, ":") - f.Format(s, 'd') - } -} - -// MarshalText formats a stacktrace Frame as a text string. The output is the -// same as that of fmt.Sprintf("%+v", f), but without newlines or tabs. -func (f Frame) MarshalText() ([]byte, error) { - name := f.name() - if name == "unknown" { - return []byte(name), nil - } - return []byte(fmt.Sprintf("%s %s:%d", name, f.file(), f.line())), nil -} - -// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). -type StackTrace []Frame - -// Format formats the stack of Frames according to the fmt.Formatter interface. -// -// %s lists source files for each Frame in the stack -// %v lists the source file and line number for each Frame in the stack -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+v Prints filename, function, and line number for each Frame in the stack. -func (st StackTrace) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case s.Flag('+'): - for _, f := range st { - io.WriteString(s, "\n") - f.Format(s, verb) - } - case s.Flag('#'): - fmt.Fprintf(s, "%#v", []Frame(st)) - default: - st.formatSlice(s, verb) - } - case 's': - st.formatSlice(s, verb) - } -} - -// formatSlice will format this StackTrace into the given buffer as a slice of -// Frame, only valid when called with '%s' or '%v'. -func (st StackTrace) formatSlice(s fmt.State, verb rune) { - io.WriteString(s, "[") - for i, f := range st { - if i > 0 { - io.WriteString(s, " ") - } - f.Format(s, verb) - } - io.WriteString(s, "]") -} - -// stack represents a stack of program counters. -type stack []uintptr - -func (s *stack) Format(st fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case st.Flag('+'): - for _, pc := range *s { - f := Frame(pc) - fmt.Fprintf(st, "\n%+v", f) - } - } - } -} - -func (s *stack) StackTrace() StackTrace { - f := make([]Frame, len(*s)) - for i := 0; i < len(f); i++ { - f[i] = Frame((*s)[i]) - } - return f -} - -func callers() *stack { - const depth = 32 - var pcs [depth]uintptr - n := runtime.Callers(3, pcs[:]) - var st stack = pcs[0:n] - return &st -} - -// funcname removes the path prefix component of a function's name reported by func.Name(). -func funcname(name string) string { - i := strings.LastIndex(name, "/") - name = name[i+1:] - i = strings.Index(name, ".") - return name[i+1:] -} diff --git a/vendor/github.com/rivo/uniseg/LICENSE.txt b/vendor/github.com/rivo/uniseg/LICENSE.txt deleted file mode 100644 index 5040f1e..0000000 --- a/vendor/github.com/rivo/uniseg/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Oliver Kuederle - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/rivo/uniseg/README.md b/vendor/github.com/rivo/uniseg/README.md deleted file mode 100644 index a8191b8..0000000 --- a/vendor/github.com/rivo/uniseg/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# Unicode Text Segmentation for Go - -[![Go Reference](https://pkg.go.dev/badge/github.com/rivo/uniseg.svg)](https://pkg.go.dev/github.com/rivo/uniseg) -[![Go Report](https://img.shields.io/badge/go%20report-A%2B-brightgreen.svg)](https://goreportcard.com/report/github.com/rivo/uniseg) - -This Go package implements Unicode Text Segmentation according to [Unicode Standard Annex #29](https://unicode.org/reports/tr29/), Unicode Line Breaking according to [Unicode Standard Annex #14](https://unicode.org/reports/tr14/) (Unicode version 15.0.0), and monospace font string width calculation similar to [wcwidth](https://man7.org/linux/man-pages/man3/wcwidth.3.html). - -## Background - -### Grapheme Clusters - -In Go, [strings are read-only slices of bytes](https://go.dev/blog/strings). They can be turned into Unicode code points using the `for` loop or by casting: `[]rune(str)`. However, multiple code points may be combined into one user-perceived character or what the Unicode specification calls "grapheme cluster". Here are some examples: - -|String|Bytes (UTF-8)|Code points (runes)|Grapheme clusters| -|-|-|-|-| -|Käse|6 bytes: `4b 61 cc 88 73 65`|5 code points: `4b 61 308 73 65`|4 clusters: `[4b],[61 308],[73],[65]`| -|🏳️‍🌈|14 bytes: `f0 9f 8f b3 ef b8 8f e2 80 8d f0 9f 8c 88`|4 code points: `1f3f3 fe0f 200d 1f308`|1 cluster: `[1f3f3 fe0f 200d 1f308]`| -|🇩🇪|8 bytes: `f0 9f 87 a9 f0 9f 87 aa`|2 code points: `1f1e9 1f1ea`|1 cluster: `[1f1e9 1f1ea]`| - -This package provides tools to iterate over these grapheme clusters. This may be used to determine the number of user-perceived characters, to split strings in their intended places, or to extract individual characters which form a unit. - -### Word Boundaries - -Word boundaries are used in a number of different contexts. The most familiar ones are selection (double-click mouse selection), cursor movement ("move to next word" control-arrow keys), and the dialog option "Whole Word Search" for search and replace. They are also used in database queries, to determine whether elements are within a certain number of words of one another. Searching may also use word boundaries in determining matching items. This package provides tools to determine word boundaries within strings. - -### Sentence Boundaries - -Sentence boundaries are often used for triple-click or some other method of selecting or iterating through blocks of text that are larger than single words. They are also used to determine whether words occur within the same sentence in database queries. This package provides tools to determine sentence boundaries within strings. - -### Line Breaking - -Line breaking, also known as word wrapping, is the process of breaking a section of text into lines such that it will fit in the available width of a page, window or other display area. This package provides tools to determine where a string may or may not be broken and where it must be broken (for example after newline characters). - -### Monospace Width - -Most terminals or text displays / text editors using a monospace font (for example source code editors) use a fixed width for each character. Some characters such as emojis or characters found in Asian and other languages may take up more than one character cell. This package provides tools to determine the number of cells a string will take up when displayed in a monospace font. See [here](https://pkg.go.dev/github.com/rivo/uniseg#hdr-Monospace_Width) for more information. - -## Installation - -```bash -go get github.com/rivo/uniseg -``` - -## Examples - -### Counting Characters in a String - -```go -n := uniseg.GraphemeClusterCount("🇩🇪🏳️‍🌈") -fmt.Println(n) -// 2 -``` - -### Calculating the Monospace String Width - -```go -width := uniseg.StringWidth("🇩🇪🏳️‍🌈!") -fmt.Println(width) -// 5 -``` - -### Using the [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) Class - -This is the most convenient method of iterating over grapheme clusters: - -```go -gr := uniseg.NewGraphemes("👍🏼!") -for gr.Next() { - fmt.Printf("%x ", gr.Runes()) -} -// [1f44d 1f3fc] [21] -``` - -### Using the [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step) or [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString) Function - -This avoids allocating a new `Graphemes` object but it requires the handling of states and boundaries: - -```go -str := "🇩🇪🏳️‍🌈" -state := -1 -var c string -for len(str) > 0 { - c, str, _, state = uniseg.StepString(str, state) - fmt.Printf("%x ", []rune(c)) -} -// [1f1e9 1f1ea] [1f3f3 fe0f 200d 1f308] -``` - -### Advanced Examples - -The [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) class offers the most convenient way to access all functionality of this package. But in some cases, it may be better to use the specialized functions directly. For example, if you're only interested in word segmentation, use [`FirstWord`](https://pkg.go.dev/github.com/rivo/uniseg#FirstWord) or [`FirstWordInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstWordInString): - -```go -str := "Hello, world!" -state := -1 -var c string -for len(str) > 0 { - c, str, state = uniseg.FirstWordInString(str, state) - fmt.Printf("(%s)\n", c) -} -// (Hello) -// (,) -// ( ) -// (world) -// (!) -``` - -Similarly, use - -- [`FirstGraphemeCluster`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeCluster) or [`FirstGraphemeClusterInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeClusterInString) for grapheme cluster determination only, -- [`FirstSentence`](https://pkg.go.dev/github.com/rivo/uniseg#FirstSentence) or [`FirstSentenceInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstSentenceInString) for sentence segmentation only, and -- [`FirstLineSegment`](https://pkg.go.dev/github.com/rivo/uniseg#FirstLineSegment) or [`FirstLineSegmentInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstLineSegmentInString) for line breaking / word wrapping (although using [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step) or [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString) is preferred as it will observe grapheme cluster boundaries). - -If you're only interested in the width of characters, use [`FirstGraphemeCluster`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeCluster) or [`FirstGraphemeClusterInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeClusterInString). It is much faster than using [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step), [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString), or the [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) class because it does not include the logic for word / sentence / line boundaries. - -Finally, if you need to reverse a string while preserving grapheme clusters, use [`ReverseString`](https://pkg.go.dev/github.com/rivo/uniseg#ReverseString): - -```go -fmt.Println(uniseg.ReverseString("🇩🇪🏳️‍🌈")) -// 🏳️‍🌈🇩🇪 -``` - -## Documentation - -Refer to https://pkg.go.dev/github.com/rivo/uniseg for the package's documentation. - -## Dependencies - -This package does not depend on any packages outside the standard library. - -## Sponsor this Project - -[Become a Sponsor on GitHub](https://github.com/sponsors/rivo?metadata_source=uniseg_readme) to support this project! - -## Your Feedback - -Add your issue here on GitHub, preferably before submitting any PR's. Feel free to get in touch if you have any questions. \ No newline at end of file diff --git a/vendor/github.com/rivo/uniseg/doc.go b/vendor/github.com/rivo/uniseg/doc.go deleted file mode 100644 index 11224ae..0000000 --- a/vendor/github.com/rivo/uniseg/doc.go +++ /dev/null @@ -1,108 +0,0 @@ -/* -Package uniseg implements Unicode Text Segmentation, Unicode Line Breaking, and -string width calculation for monospace fonts. Unicode Text Segmentation conforms -to Unicode Standard Annex #29 (https://unicode.org/reports/tr29/) and Unicode -Line Breaking conforms to Unicode Standard Annex #14 -(https://unicode.org/reports/tr14/). - -In short, using this package, you can split a string into grapheme clusters -(what people would usually refer to as a "character"), into words, and into -sentences. Or, in its simplest case, this package allows you to count the number -of characters in a string, especially when it contains complex characters such -as emojis, combining characters, or characters from Asian, Arabic, Hebrew, or -other languages. Additionally, you can use it to implement line breaking (or -"word wrapping"), that is, to determine where text can be broken over to the -next line when the width of the line is not big enough to fit the entire text. -Finally, you can use it to calculate the display width of a string for monospace -fonts. - -# Getting Started - -If you just want to count the number of characters in a string, you can use -[GraphemeClusterCount]. If you want to determine the display width of a string, -you can use [StringWidth]. If you want to iterate over a string, you can use -[Step], [StepString], or the [Graphemes] class (more convenient but less -performant). This will provide you with all information: grapheme clusters, -word boundaries, sentence boundaries, line breaks, and monospace character -widths. The specialized functions [FirstGraphemeCluster], -[FirstGraphemeClusterInString], [FirstWord], [FirstWordInString], -[FirstSentence], and [FirstSentenceInString] can be used if only one type of -information is needed. - -# Grapheme Clusters - -Consider the rainbow flag emoji: 🏳️‍🌈. On most modern systems, it appears as one -character. But its string representation actually has 14 bytes, so counting -bytes (or using len("🏳️‍🌈")) will not work as expected. Counting runes won't, -either: The flag has 4 Unicode code points, thus 4 runes. The stdlib function -utf8.RuneCountInString("🏳️‍🌈") and len([]rune("🏳️‍🌈")) will both return 4. - -The [GraphemeClusterCount] function will return 1 for the rainbow flag emoji. -The Graphemes class and a variety of functions in this package will allow you to -split strings into its grapheme clusters. - -# Word Boundaries - -Word boundaries are used in a number of different contexts. The most familiar -ones are selection (double-click mouse selection), cursor movement ("move to -next word" control-arrow keys), and the dialog option "Whole Word Search" for -search and replace. This package provides methods for determining word -boundaries. - -# Sentence Boundaries - -Sentence boundaries are often used for triple-click or some other method of -selecting or iterating through blocks of text that are larger than single words. -They are also used to determine whether words occur within the same sentence in -database queries. This package provides methods for determining sentence -boundaries. - -# Line Breaking - -Line breaking, also known as word wrapping, is the process of breaking a section -of text into lines such that it will fit in the available width of a page, -window or other display area. This package provides methods to determine the -positions in a string where a line must be broken, may be broken, or must not be -broken. - -# Monospace Width - -Monospace width, as referred to in this package, is the width of a string in a -monospace font. This is commonly used in terminal user interfaces or text -displays or editors that don't support proportional fonts. A width of 1 -corresponds to a single character cell. The C function [wcswidth()] and its -implementation in other programming languages is in widespread use for the same -purpose. However, there is no standard for the calculation of such widths, and -this package differs from wcswidth() in a number of ways, presumably to generate -more visually pleasing results. - -To start, we assume that every code point has a width of 1, with the following -exceptions: - - - Code points with grapheme cluster break properties Control, CR, LF, Extend, - and ZWJ have a width of 0. - - U+2E3A, Two-Em Dash, has a width of 3. - - U+2E3B, Three-Em Dash, has a width of 4. - - Characters with the East-Asian Width properties "Fullwidth" (F) and "Wide" - (W) have a width of 2. (Properties "Ambiguous" (A) and "Neutral" (N) both - have a width of 1.) - - Code points with grapheme cluster break property Regional Indicator have a - width of 2. - - Code points with grapheme cluster break property Extended Pictographic have - a width of 2, unless their Emoji Presentation flag is "No", in which case - the width is 1. - -For Hangul grapheme clusters composed of conjoining Jamo and for Regional -Indicators (flags), all code points except the first one have a width of 0. For -grapheme clusters starting with an Extended Pictographic, any additional code -point will force a total width of 2, except if the Variation Selector-15 -(U+FE0E) is included, in which case the total width is always 1. Grapheme -clusters ending with Variation Selector-16 (U+FE0F) have a width of 2. - -Note that whether these widths appear correct depends on your application's -render engine, to which extent it conforms to the Unicode Standard, and its -choice of font. - -[wcswidth()]: https://man7.org/linux/man-pages/man3/wcswidth.3.html -*/ -package uniseg diff --git a/vendor/github.com/rivo/uniseg/eastasianwidth.go b/vendor/github.com/rivo/uniseg/eastasianwidth.go deleted file mode 100644 index 5fc54d9..0000000 --- a/vendor/github.com/rivo/uniseg/eastasianwidth.go +++ /dev/null @@ -1,2588 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// eastAsianWidth are taken from -// https://www.unicode.org/Public/15.0.0/ucd/EastAsianWidth.txt -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var eastAsianWidth = [][3]int{ - {0x0000, 0x001F, prN}, // Cc [32] <control-0000>..<control-001F> - {0x0020, 0x0020, prNa}, // Zs SPACE - {0x0021, 0x0023, prNa}, // Po [3] EXCLAMATION MARK..NUMBER SIGN - {0x0024, 0x0024, prNa}, // Sc DOLLAR SIGN - {0x0025, 0x0027, prNa}, // Po [3] PERCENT SIGN..APOSTROPHE - {0x0028, 0x0028, prNa}, // Ps LEFT PARENTHESIS - {0x0029, 0x0029, prNa}, // Pe RIGHT PARENTHESIS - {0x002A, 0x002A, prNa}, // Po ASTERISK - {0x002B, 0x002B, prNa}, // Sm PLUS SIGN - {0x002C, 0x002C, prNa}, // Po COMMA - {0x002D, 0x002D, prNa}, // Pd HYPHEN-MINUS - {0x002E, 0x002F, prNa}, // Po [2] FULL STOP..SOLIDUS - {0x0030, 0x0039, prNa}, // Nd [10] DIGIT ZERO..DIGIT NINE - {0x003A, 0x003B, prNa}, // Po [2] COLON..SEMICOLON - {0x003C, 0x003E, prNa}, // Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN - {0x003F, 0x0040, prNa}, // Po [2] QUESTION MARK..COMMERCIAL AT - {0x0041, 0x005A, prNa}, // Lu [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z - {0x005B, 0x005B, prNa}, // Ps LEFT SQUARE BRACKET - {0x005C, 0x005C, prNa}, // Po REVERSE SOLIDUS - {0x005D, 0x005D, prNa}, // Pe RIGHT SQUARE BRACKET - {0x005E, 0x005E, prNa}, // Sk CIRCUMFLEX ACCENT - {0x005F, 0x005F, prNa}, // Pc LOW LINE - {0x0060, 0x0060, prNa}, // Sk GRAVE ACCENT - {0x0061, 0x007A, prNa}, // Ll [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z - {0x007B, 0x007B, prNa}, // Ps LEFT CURLY BRACKET - {0x007C, 0x007C, prNa}, // Sm VERTICAL LINE - {0x007D, 0x007D, prNa}, // Pe RIGHT CURLY BRACKET - {0x007E, 0x007E, prNa}, // Sm TILDE - {0x007F, 0x007F, prN}, // Cc <control-007F> - {0x0080, 0x009F, prN}, // Cc [32] <control-0080>..<control-009F> - {0x00A0, 0x00A0, prN}, // Zs NO-BREAK SPACE - {0x00A1, 0x00A1, prA}, // Po INVERTED EXCLAMATION MARK - {0x00A2, 0x00A3, prNa}, // Sc [2] CENT SIGN..POUND SIGN - {0x00A4, 0x00A4, prA}, // Sc CURRENCY SIGN - {0x00A5, 0x00A5, prNa}, // Sc YEN SIGN - {0x00A6, 0x00A6, prNa}, // So BROKEN BAR - {0x00A7, 0x00A7, prA}, // Po SECTION SIGN - {0x00A8, 0x00A8, prA}, // Sk DIAERESIS - {0x00A9, 0x00A9, prN}, // So COPYRIGHT SIGN - {0x00AA, 0x00AA, prA}, // Lo FEMININE ORDINAL INDICATOR - {0x00AB, 0x00AB, prN}, // Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00AC, 0x00AC, prNa}, // Sm NOT SIGN - {0x00AD, 0x00AD, prA}, // Cf SOFT HYPHEN - {0x00AE, 0x00AE, prA}, // So REGISTERED SIGN - {0x00AF, 0x00AF, prNa}, // Sk MACRON - {0x00B0, 0x00B0, prA}, // So DEGREE SIGN - {0x00B1, 0x00B1, prA}, // Sm PLUS-MINUS SIGN - {0x00B2, 0x00B3, prA}, // No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE - {0x00B4, 0x00B4, prA}, // Sk ACUTE ACCENT - {0x00B5, 0x00B5, prN}, // Ll MICRO SIGN - {0x00B6, 0x00B7, prA}, // Po [2] PILCROW SIGN..MIDDLE DOT - {0x00B8, 0x00B8, prA}, // Sk CEDILLA - {0x00B9, 0x00B9, prA}, // No SUPERSCRIPT ONE - {0x00BA, 0x00BA, prA}, // Lo MASCULINE ORDINAL INDICATOR - {0x00BB, 0x00BB, prN}, // Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00BC, 0x00BE, prA}, // No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS - {0x00BF, 0x00BF, prA}, // Po INVERTED QUESTION MARK - {0x00C0, 0x00C5, prN}, // Lu [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE - {0x00C6, 0x00C6, prA}, // Lu LATIN CAPITAL LETTER AE - {0x00C7, 0x00CF, prN}, // Lu [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS - {0x00D0, 0x00D0, prA}, // Lu LATIN CAPITAL LETTER ETH - {0x00D1, 0x00D6, prN}, // Lu [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS - {0x00D7, 0x00D7, prA}, // Sm MULTIPLICATION SIGN - {0x00D8, 0x00D8, prA}, // Lu LATIN CAPITAL LETTER O WITH STROKE - {0x00D9, 0x00DD, prN}, // Lu [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE - {0x00DE, 0x00E1, prA}, // L& [4] LATIN CAPITAL LETTER THORN..LATIN SMALL LETTER A WITH ACUTE - {0x00E2, 0x00E5, prN}, // Ll [4] LATIN SMALL LETTER A WITH CIRCUMFLEX..LATIN SMALL LETTER A WITH RING ABOVE - {0x00E6, 0x00E6, prA}, // Ll LATIN SMALL LETTER AE - {0x00E7, 0x00E7, prN}, // Ll LATIN SMALL LETTER C WITH CEDILLA - {0x00E8, 0x00EA, prA}, // Ll [3] LATIN SMALL LETTER E WITH GRAVE..LATIN SMALL LETTER E WITH CIRCUMFLEX - {0x00EB, 0x00EB, prN}, // Ll LATIN SMALL LETTER E WITH DIAERESIS - {0x00EC, 0x00ED, prA}, // Ll [2] LATIN SMALL LETTER I WITH GRAVE..LATIN SMALL LETTER I WITH ACUTE - {0x00EE, 0x00EF, prN}, // Ll [2] LATIN SMALL LETTER I WITH CIRCUMFLEX..LATIN SMALL LETTER I WITH DIAERESIS - {0x00F0, 0x00F0, prA}, // Ll LATIN SMALL LETTER ETH - {0x00F1, 0x00F1, prN}, // Ll LATIN SMALL LETTER N WITH TILDE - {0x00F2, 0x00F3, prA}, // Ll [2] LATIN SMALL LETTER O WITH GRAVE..LATIN SMALL LETTER O WITH ACUTE - {0x00F4, 0x00F6, prN}, // Ll [3] LATIN SMALL LETTER O WITH CIRCUMFLEX..LATIN SMALL LETTER O WITH DIAERESIS - {0x00F7, 0x00F7, prA}, // Sm DIVISION SIGN - {0x00F8, 0x00FA, prA}, // Ll [3] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER U WITH ACUTE - {0x00FB, 0x00FB, prN}, // Ll LATIN SMALL LETTER U WITH CIRCUMFLEX - {0x00FC, 0x00FC, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS - {0x00FD, 0x00FD, prN}, // Ll LATIN SMALL LETTER Y WITH ACUTE - {0x00FE, 0x00FE, prA}, // Ll LATIN SMALL LETTER THORN - {0x00FF, 0x00FF, prN}, // Ll LATIN SMALL LETTER Y WITH DIAERESIS - {0x0100, 0x0100, prN}, // Lu LATIN CAPITAL LETTER A WITH MACRON - {0x0101, 0x0101, prA}, // Ll LATIN SMALL LETTER A WITH MACRON - {0x0102, 0x0110, prN}, // L& [15] LATIN CAPITAL LETTER A WITH BREVE..LATIN CAPITAL LETTER D WITH STROKE - {0x0111, 0x0111, prA}, // Ll LATIN SMALL LETTER D WITH STROKE - {0x0112, 0x0112, prN}, // Lu LATIN CAPITAL LETTER E WITH MACRON - {0x0113, 0x0113, prA}, // Ll LATIN SMALL LETTER E WITH MACRON - {0x0114, 0x011A, prN}, // L& [7] LATIN CAPITAL LETTER E WITH BREVE..LATIN CAPITAL LETTER E WITH CARON - {0x011B, 0x011B, prA}, // Ll LATIN SMALL LETTER E WITH CARON - {0x011C, 0x0125, prN}, // L& [10] LATIN CAPITAL LETTER G WITH CIRCUMFLEX..LATIN SMALL LETTER H WITH CIRCUMFLEX - {0x0126, 0x0127, prA}, // L& [2] LATIN CAPITAL LETTER H WITH STROKE..LATIN SMALL LETTER H WITH STROKE - {0x0128, 0x012A, prN}, // L& [3] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH MACRON - {0x012B, 0x012B, prA}, // Ll LATIN SMALL LETTER I WITH MACRON - {0x012C, 0x0130, prN}, // L& [5] LATIN CAPITAL LETTER I WITH BREVE..LATIN CAPITAL LETTER I WITH DOT ABOVE - {0x0131, 0x0133, prA}, // L& [3] LATIN SMALL LETTER DOTLESS I..LATIN SMALL LIGATURE IJ - {0x0134, 0x0137, prN}, // L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA - {0x0138, 0x0138, prA}, // Ll LATIN SMALL LETTER KRA - {0x0139, 0x013E, prN}, // L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON - {0x013F, 0x0142, prA}, // L& [4] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH STROKE - {0x0143, 0x0143, prN}, // Lu LATIN CAPITAL LETTER N WITH ACUTE - {0x0144, 0x0144, prA}, // Ll LATIN SMALL LETTER N WITH ACUTE - {0x0145, 0x0147, prN}, // L& [3] LATIN CAPITAL LETTER N WITH CEDILLA..LATIN CAPITAL LETTER N WITH CARON - {0x0148, 0x014B, prA}, // L& [4] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER ENG - {0x014C, 0x014C, prN}, // Lu LATIN CAPITAL LETTER O WITH MACRON - {0x014D, 0x014D, prA}, // Ll LATIN SMALL LETTER O WITH MACRON - {0x014E, 0x0151, prN}, // L& [4] LATIN CAPITAL LETTER O WITH BREVE..LATIN SMALL LETTER O WITH DOUBLE ACUTE - {0x0152, 0x0153, prA}, // L& [2] LATIN CAPITAL LIGATURE OE..LATIN SMALL LIGATURE OE - {0x0154, 0x0165, prN}, // L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON - {0x0166, 0x0167, prA}, // L& [2] LATIN CAPITAL LETTER T WITH STROKE..LATIN SMALL LETTER T WITH STROKE - {0x0168, 0x016A, prN}, // L& [3] LATIN CAPITAL LETTER U WITH TILDE..LATIN CAPITAL LETTER U WITH MACRON - {0x016B, 0x016B, prA}, // Ll LATIN SMALL LETTER U WITH MACRON - {0x016C, 0x017F, prN}, // L& [20] LATIN CAPITAL LETTER U WITH BREVE..LATIN SMALL LETTER LONG S - {0x0180, 0x01BA, prN}, // L& [59] LATIN SMALL LETTER B WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL - {0x01BB, 0x01BB, prN}, // Lo LATIN LETTER TWO WITH STROKE - {0x01BC, 0x01BF, prN}, // L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN - {0x01C0, 0x01C3, prN}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK - {0x01C4, 0x01CD, prN}, // L& [10] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER A WITH CARON - {0x01CE, 0x01CE, prA}, // Ll LATIN SMALL LETTER A WITH CARON - {0x01CF, 0x01CF, prN}, // Lu LATIN CAPITAL LETTER I WITH CARON - {0x01D0, 0x01D0, prA}, // Ll LATIN SMALL LETTER I WITH CARON - {0x01D1, 0x01D1, prN}, // Lu LATIN CAPITAL LETTER O WITH CARON - {0x01D2, 0x01D2, prA}, // Ll LATIN SMALL LETTER O WITH CARON - {0x01D3, 0x01D3, prN}, // Lu LATIN CAPITAL LETTER U WITH CARON - {0x01D4, 0x01D4, prA}, // Ll LATIN SMALL LETTER U WITH CARON - {0x01D5, 0x01D5, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON - {0x01D6, 0x01D6, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND MACRON - {0x01D7, 0x01D7, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE - {0x01D8, 0x01D8, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE - {0x01D9, 0x01D9, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON - {0x01DA, 0x01DA, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND CARON - {0x01DB, 0x01DB, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE - {0x01DC, 0x01DC, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE - {0x01DD, 0x024F, prN}, // L& [115] LATIN SMALL LETTER TURNED E..LATIN SMALL LETTER Y WITH STROKE - {0x0250, 0x0250, prN}, // Ll LATIN SMALL LETTER TURNED A - {0x0251, 0x0251, prA}, // Ll LATIN SMALL LETTER ALPHA - {0x0252, 0x0260, prN}, // Ll [15] LATIN SMALL LETTER TURNED ALPHA..LATIN SMALL LETTER G WITH HOOK - {0x0261, 0x0261, prA}, // Ll LATIN SMALL LETTER SCRIPT G - {0x0262, 0x0293, prN}, // Ll [50] LATIN LETTER SMALL CAPITAL G..LATIN SMALL LETTER EZH WITH CURL - {0x0294, 0x0294, prN}, // Lo LATIN LETTER GLOTTAL STOP - {0x0295, 0x02AF, prN}, // Ll [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL - {0x02B0, 0x02C1, prN}, // Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP - {0x02C2, 0x02C3, prN}, // Sk [2] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER RIGHT ARROWHEAD - {0x02C4, 0x02C4, prA}, // Sk MODIFIER LETTER UP ARROWHEAD - {0x02C5, 0x02C5, prN}, // Sk MODIFIER LETTER DOWN ARROWHEAD - {0x02C6, 0x02C6, prN}, // Lm MODIFIER LETTER CIRCUMFLEX ACCENT - {0x02C7, 0x02C7, prA}, // Lm CARON - {0x02C8, 0x02C8, prN}, // Lm MODIFIER LETTER VERTICAL LINE - {0x02C9, 0x02CB, prA}, // Lm [3] MODIFIER LETTER MACRON..MODIFIER LETTER GRAVE ACCENT - {0x02CC, 0x02CC, prN}, // Lm MODIFIER LETTER LOW VERTICAL LINE - {0x02CD, 0x02CD, prA}, // Lm MODIFIER LETTER LOW MACRON - {0x02CE, 0x02CF, prN}, // Lm [2] MODIFIER LETTER LOW GRAVE ACCENT..MODIFIER LETTER LOW ACUTE ACCENT - {0x02D0, 0x02D0, prA}, // Lm MODIFIER LETTER TRIANGULAR COLON - {0x02D1, 0x02D1, prN}, // Lm MODIFIER LETTER HALF TRIANGULAR COLON - {0x02D2, 0x02D7, prN}, // Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN - {0x02D8, 0x02DB, prA}, // Sk [4] BREVE..OGONEK - {0x02DC, 0x02DC, prN}, // Sk SMALL TILDE - {0x02DD, 0x02DD, prA}, // Sk DOUBLE ACUTE ACCENT - {0x02DE, 0x02DE, prN}, // Sk MODIFIER LETTER RHOTIC HOOK - {0x02DF, 0x02DF, prA}, // Sk MODIFIER LETTER CROSS ACCENT - {0x02E0, 0x02E4, prN}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP - {0x02E5, 0x02EB, prN}, // Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK - {0x02EC, 0x02EC, prN}, // Lm MODIFIER LETTER VOICING - {0x02ED, 0x02ED, prN}, // Sk MODIFIER LETTER UNASPIRATED - {0x02EE, 0x02EE, prN}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE - {0x02EF, 0x02FF, prN}, // Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW - {0x0300, 0x036F, prA}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X - {0x0370, 0x0373, prN}, // L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI - {0x0374, 0x0374, prN}, // Lm GREEK NUMERAL SIGN - {0x0375, 0x0375, prN}, // Sk GREEK LOWER NUMERAL SIGN - {0x0376, 0x0377, prN}, // L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA - {0x037A, 0x037A, prN}, // Lm GREEK YPOGEGRAMMENI - {0x037B, 0x037D, prN}, // Ll [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x037E, 0x037E, prN}, // Po GREEK QUESTION MARK - {0x037F, 0x037F, prN}, // Lu GREEK CAPITAL LETTER YOT - {0x0384, 0x0385, prN}, // Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS - {0x0386, 0x0386, prN}, // Lu GREEK CAPITAL LETTER ALPHA WITH TONOS - {0x0387, 0x0387, prN}, // Po GREEK ANO TELEIA - {0x0388, 0x038A, prN}, // Lu [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS - {0x038C, 0x038C, prN}, // Lu GREEK CAPITAL LETTER OMICRON WITH TONOS - {0x038E, 0x0390, prN}, // L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS - {0x0391, 0x03A1, prA}, // Lu [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO - {0x03A3, 0x03A9, prA}, // Lu [7] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER OMEGA - {0x03AA, 0x03B0, prN}, // L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS - {0x03B1, 0x03C1, prA}, // Ll [17] GREEK SMALL LETTER ALPHA..GREEK SMALL LETTER RHO - {0x03C2, 0x03C2, prN}, // Ll GREEK SMALL LETTER FINAL SIGMA - {0x03C3, 0x03C9, prA}, // Ll [7] GREEK SMALL LETTER SIGMA..GREEK SMALL LETTER OMEGA - {0x03CA, 0x03F5, prN}, // L& [44] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK LUNATE EPSILON SYMBOL - {0x03F6, 0x03F6, prN}, // Sm GREEK REVERSED LUNATE EPSILON SYMBOL - {0x03F7, 0x03FF, prN}, // L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x0400, 0x0400, prN}, // Lu CYRILLIC CAPITAL LETTER IE WITH GRAVE - {0x0401, 0x0401, prA}, // Lu CYRILLIC CAPITAL LETTER IO - {0x0402, 0x040F, prN}, // Lu [14] CYRILLIC CAPITAL LETTER DJE..CYRILLIC CAPITAL LETTER DZHE - {0x0410, 0x044F, prA}, // L& [64] CYRILLIC CAPITAL LETTER A..CYRILLIC SMALL LETTER YA - {0x0450, 0x0450, prN}, // Ll CYRILLIC SMALL LETTER IE WITH GRAVE - {0x0451, 0x0451, prA}, // Ll CYRILLIC SMALL LETTER IO - {0x0452, 0x0481, prN}, // L& [48] CYRILLIC SMALL LETTER DJE..CYRILLIC SMALL LETTER KOPPA - {0x0482, 0x0482, prN}, // So CYRILLIC THOUSANDS SIGN - {0x0483, 0x0487, prN}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE - {0x0488, 0x0489, prN}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN - {0x048A, 0x04FF, prN}, // L& [118] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER HA WITH STROKE - {0x0500, 0x052F, prN}, // L& [48] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER EL WITH DESCENDER - {0x0531, 0x0556, prN}, // Lu [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH - {0x0559, 0x0559, prN}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING - {0x055A, 0x055F, prN}, // Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK - {0x0560, 0x0588, prN}, // Ll [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE - {0x0589, 0x0589, prN}, // Po ARMENIAN FULL STOP - {0x058A, 0x058A, prN}, // Pd ARMENIAN HYPHEN - {0x058D, 0x058E, prN}, // So [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN - {0x058F, 0x058F, prN}, // Sc ARMENIAN DRAM SIGN - {0x0591, 0x05BD, prN}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG - {0x05BE, 0x05BE, prN}, // Pd HEBREW PUNCTUATION MAQAF - {0x05BF, 0x05BF, prN}, // Mn HEBREW POINT RAFE - {0x05C0, 0x05C0, prN}, // Po HEBREW PUNCTUATION PASEQ - {0x05C1, 0x05C2, prN}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT - {0x05C3, 0x05C3, prN}, // Po HEBREW PUNCTUATION SOF PASUQ - {0x05C4, 0x05C5, prN}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT - {0x05C6, 0x05C6, prN}, // Po HEBREW PUNCTUATION NUN HAFUKHA - {0x05C7, 0x05C7, prN}, // Mn HEBREW POINT QAMATS QATAN - {0x05D0, 0x05EA, prN}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV - {0x05EF, 0x05F2, prN}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD - {0x05F3, 0x05F4, prN}, // Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM - {0x0600, 0x0605, prN}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE - {0x0606, 0x0608, prN}, // Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY - {0x0609, 0x060A, prN}, // Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN - {0x060B, 0x060B, prN}, // Sc AFGHANI SIGN - {0x060C, 0x060D, prN}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR - {0x060E, 0x060F, prN}, // So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA - {0x0610, 0x061A, prN}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA - {0x061B, 0x061B, prN}, // Po ARABIC SEMICOLON - {0x061C, 0x061C, prN}, // Cf ARABIC LETTER MARK - {0x061D, 0x061F, prN}, // Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK - {0x0620, 0x063F, prN}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE - {0x0640, 0x0640, prN}, // Lm ARABIC TATWEEL - {0x0641, 0x064A, prN}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH - {0x064B, 0x065F, prN}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW - {0x0660, 0x0669, prN}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE - {0x066A, 0x066D, prN}, // Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR - {0x066E, 0x066F, prN}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF - {0x0670, 0x0670, prN}, // Mn ARABIC LETTER SUPERSCRIPT ALEF - {0x0671, 0x06D3, prN}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE - {0x06D4, 0x06D4, prN}, // Po ARABIC FULL STOP - {0x06D5, 0x06D5, prN}, // Lo ARABIC LETTER AE - {0x06D6, 0x06DC, prN}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN - {0x06DD, 0x06DD, prN}, // Cf ARABIC END OF AYAH - {0x06DE, 0x06DE, prN}, // So ARABIC START OF RUB EL HIZB - {0x06DF, 0x06E4, prN}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA - {0x06E5, 0x06E6, prN}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH - {0x06E7, 0x06E8, prN}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON - {0x06E9, 0x06E9, prN}, // So ARABIC PLACE OF SAJDAH - {0x06EA, 0x06ED, prN}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM - {0x06EE, 0x06EF, prN}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V - {0x06F0, 0x06F9, prN}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE - {0x06FA, 0x06FC, prN}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW - {0x06FD, 0x06FE, prN}, // So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN - {0x06FF, 0x06FF, prN}, // Lo ARABIC LETTER HEH WITH INVERTED V - {0x0700, 0x070D, prN}, // Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS - {0x070F, 0x070F, prN}, // Cf SYRIAC ABBREVIATION MARK - {0x0710, 0x0710, prN}, // Lo SYRIAC LETTER ALAPH - {0x0711, 0x0711, prN}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH - {0x0712, 0x072F, prN}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH - {0x0730, 0x074A, prN}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH - {0x074D, 0x074F, prN}, // Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE - {0x0750, 0x077F, prN}, // Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE - {0x0780, 0x07A5, prN}, // Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU - {0x07A6, 0x07B0, prN}, // Mn [11] THAANA ABAFILI..THAANA SUKUN - {0x07B1, 0x07B1, prN}, // Lo THAANA LETTER NAA - {0x07C0, 0x07C9, prN}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE - {0x07CA, 0x07EA, prN}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA - {0x07EB, 0x07F3, prN}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE - {0x07F4, 0x07F5, prN}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE - {0x07F6, 0x07F6, prN}, // So NKO SYMBOL OO DENNEN - {0x07F7, 0x07F9, prN}, // Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK - {0x07FA, 0x07FA, prN}, // Lm NKO LAJANYALAN - {0x07FD, 0x07FD, prN}, // Mn NKO DANTAYALAN - {0x07FE, 0x07FF, prN}, // Sc [2] NKO DOROME SIGN..NKO TAMAN SIGN - {0x0800, 0x0815, prN}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF - {0x0816, 0x0819, prN}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH - {0x081A, 0x081A, prN}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT - {0x081B, 0x0823, prN}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A - {0x0824, 0x0824, prN}, // Lm SAMARITAN MODIFIER LETTER SHORT A - {0x0825, 0x0827, prN}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U - {0x0828, 0x0828, prN}, // Lm SAMARITAN MODIFIER LETTER I - {0x0829, 0x082D, prN}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - {0x0830, 0x083E, prN}, // Po [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU - {0x0840, 0x0858, prN}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - {0x0859, 0x085B, prN}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - {0x085E, 0x085E, prN}, // Po MANDAIC PUNCTUATION - {0x0860, 0x086A, prN}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA - {0x0870, 0x0887, prN}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT - {0x0888, 0x0888, prN}, // Sk ARABIC RAISED ROUND DOT - {0x0889, 0x088E, prN}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL - {0x0890, 0x0891, prN}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE - {0x0898, 0x089F, prN}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA - {0x08A0, 0x08C8, prN}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF - {0x08C9, 0x08C9, prN}, // Lm ARABIC SMALL FARSI YEH - {0x08CA, 0x08E1, prN}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA - {0x08E2, 0x08E2, prN}, // Cf ARABIC DISPUTED END OF AYAH - {0x08E3, 0x08FF, prN}, // Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA - {0x0900, 0x0902, prN}, // Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA - {0x0903, 0x0903, prN}, // Mc DEVANAGARI SIGN VISARGA - {0x0904, 0x0939, prN}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - {0x093A, 0x093A, prN}, // Mn DEVANAGARI VOWEL SIGN OE - {0x093B, 0x093B, prN}, // Mc DEVANAGARI VOWEL SIGN OOE - {0x093C, 0x093C, prN}, // Mn DEVANAGARI SIGN NUKTA - {0x093D, 0x093D, prN}, // Lo DEVANAGARI SIGN AVAGRAHA - {0x093E, 0x0940, prN}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II - {0x0941, 0x0948, prN}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI - {0x0949, 0x094C, prN}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU - {0x094D, 0x094D, prN}, // Mn DEVANAGARI SIGN VIRAMA - {0x094E, 0x094F, prN}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW - {0x0950, 0x0950, prN}, // Lo DEVANAGARI OM - {0x0951, 0x0957, prN}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE - {0x0958, 0x0961, prN}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL - {0x0962, 0x0963, prN}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL - {0x0964, 0x0965, prN}, // Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA - {0x0966, 0x096F, prN}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE - {0x0970, 0x0970, prN}, // Po DEVANAGARI ABBREVIATION SIGN - {0x0971, 0x0971, prN}, // Lm DEVANAGARI SIGN HIGH SPACING DOT - {0x0972, 0x097F, prN}, // Lo [14] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER BBA - {0x0980, 0x0980, prN}, // Lo BENGALI ANJI - {0x0981, 0x0981, prN}, // Mn BENGALI SIGN CANDRABINDU - {0x0982, 0x0983, prN}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA - {0x0985, 0x098C, prN}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L - {0x098F, 0x0990, prN}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI - {0x0993, 0x09A8, prN}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA - {0x09AA, 0x09B0, prN}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA - {0x09B2, 0x09B2, prN}, // Lo BENGALI LETTER LA - {0x09B6, 0x09B9, prN}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA - {0x09BC, 0x09BC, prN}, // Mn BENGALI SIGN NUKTA - {0x09BD, 0x09BD, prN}, // Lo BENGALI SIGN AVAGRAHA - {0x09BE, 0x09C0, prN}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II - {0x09C1, 0x09C4, prN}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR - {0x09C7, 0x09C8, prN}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI - {0x09CB, 0x09CC, prN}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU - {0x09CD, 0x09CD, prN}, // Mn BENGALI SIGN VIRAMA - {0x09CE, 0x09CE, prN}, // Lo BENGALI LETTER KHANDA TA - {0x09D7, 0x09D7, prN}, // Mc BENGALI AU LENGTH MARK - {0x09DC, 0x09DD, prN}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA - {0x09DF, 0x09E1, prN}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL - {0x09E2, 0x09E3, prN}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL - {0x09E6, 0x09EF, prN}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE - {0x09F0, 0x09F1, prN}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL - {0x09F2, 0x09F3, prN}, // Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN - {0x09F4, 0x09F9, prN}, // No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN - {0x09FA, 0x09FA, prN}, // So BENGALI ISSHAR - {0x09FB, 0x09FB, prN}, // Sc BENGALI GANDA MARK - {0x09FC, 0x09FC, prN}, // Lo BENGALI LETTER VEDIC ANUSVARA - {0x09FD, 0x09FD, prN}, // Po BENGALI ABBREVIATION SIGN - {0x09FE, 0x09FE, prN}, // Mn BENGALI SANDHI MARK - {0x0A01, 0x0A02, prN}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI - {0x0A03, 0x0A03, prN}, // Mc GURMUKHI SIGN VISARGA - {0x0A05, 0x0A0A, prN}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU - {0x0A0F, 0x0A10, prN}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI - {0x0A13, 0x0A28, prN}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA - {0x0A2A, 0x0A30, prN}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA - {0x0A32, 0x0A33, prN}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA - {0x0A35, 0x0A36, prN}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA - {0x0A38, 0x0A39, prN}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA - {0x0A3C, 0x0A3C, prN}, // Mn GURMUKHI SIGN NUKTA - {0x0A3E, 0x0A40, prN}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II - {0x0A41, 0x0A42, prN}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU - {0x0A47, 0x0A48, prN}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI - {0x0A4B, 0x0A4D, prN}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA - {0x0A51, 0x0A51, prN}, // Mn GURMUKHI SIGN UDAAT - {0x0A59, 0x0A5C, prN}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA - {0x0A5E, 0x0A5E, prN}, // Lo GURMUKHI LETTER FA - {0x0A66, 0x0A6F, prN}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE - {0x0A70, 0x0A71, prN}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK - {0x0A72, 0x0A74, prN}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR - {0x0A75, 0x0A75, prN}, // Mn GURMUKHI SIGN YAKASH - {0x0A76, 0x0A76, prN}, // Po GURMUKHI ABBREVIATION SIGN - {0x0A81, 0x0A82, prN}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA - {0x0A83, 0x0A83, prN}, // Mc GUJARATI SIGN VISARGA - {0x0A85, 0x0A8D, prN}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E - {0x0A8F, 0x0A91, prN}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O - {0x0A93, 0x0AA8, prN}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA - {0x0AAA, 0x0AB0, prN}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA - {0x0AB2, 0x0AB3, prN}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA - {0x0AB5, 0x0AB9, prN}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA - {0x0ABC, 0x0ABC, prN}, // Mn GUJARATI SIGN NUKTA - {0x0ABD, 0x0ABD, prN}, // Lo GUJARATI SIGN AVAGRAHA - {0x0ABE, 0x0AC0, prN}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II - {0x0AC1, 0x0AC5, prN}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E - {0x0AC7, 0x0AC8, prN}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI - {0x0AC9, 0x0AC9, prN}, // Mc GUJARATI VOWEL SIGN CANDRA O - {0x0ACB, 0x0ACC, prN}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU - {0x0ACD, 0x0ACD, prN}, // Mn GUJARATI SIGN VIRAMA - {0x0AD0, 0x0AD0, prN}, // Lo GUJARATI OM - {0x0AE0, 0x0AE1, prN}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL - {0x0AE2, 0x0AE3, prN}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL - {0x0AE6, 0x0AEF, prN}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE - {0x0AF0, 0x0AF0, prN}, // Po GUJARATI ABBREVIATION SIGN - {0x0AF1, 0x0AF1, prN}, // Sc GUJARATI RUPEE SIGN - {0x0AF9, 0x0AF9, prN}, // Lo GUJARATI LETTER ZHA - {0x0AFA, 0x0AFF, prN}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE - {0x0B01, 0x0B01, prN}, // Mn ORIYA SIGN CANDRABINDU - {0x0B02, 0x0B03, prN}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA - {0x0B05, 0x0B0C, prN}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L - {0x0B0F, 0x0B10, prN}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI - {0x0B13, 0x0B28, prN}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA - {0x0B2A, 0x0B30, prN}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA - {0x0B32, 0x0B33, prN}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA - {0x0B35, 0x0B39, prN}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA - {0x0B3C, 0x0B3C, prN}, // Mn ORIYA SIGN NUKTA - {0x0B3D, 0x0B3D, prN}, // Lo ORIYA SIGN AVAGRAHA - {0x0B3E, 0x0B3E, prN}, // Mc ORIYA VOWEL SIGN AA - {0x0B3F, 0x0B3F, prN}, // Mn ORIYA VOWEL SIGN I - {0x0B40, 0x0B40, prN}, // Mc ORIYA VOWEL SIGN II - {0x0B41, 0x0B44, prN}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR - {0x0B47, 0x0B48, prN}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI - {0x0B4B, 0x0B4C, prN}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU - {0x0B4D, 0x0B4D, prN}, // Mn ORIYA SIGN VIRAMA - {0x0B55, 0x0B56, prN}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK - {0x0B57, 0x0B57, prN}, // Mc ORIYA AU LENGTH MARK - {0x0B5C, 0x0B5D, prN}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA - {0x0B5F, 0x0B61, prN}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL - {0x0B62, 0x0B63, prN}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL - {0x0B66, 0x0B6F, prN}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE - {0x0B70, 0x0B70, prN}, // So ORIYA ISSHAR - {0x0B71, 0x0B71, prN}, // Lo ORIYA LETTER WA - {0x0B72, 0x0B77, prN}, // No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS - {0x0B82, 0x0B82, prN}, // Mn TAMIL SIGN ANUSVARA - {0x0B83, 0x0B83, prN}, // Lo TAMIL SIGN VISARGA - {0x0B85, 0x0B8A, prN}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU - {0x0B8E, 0x0B90, prN}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI - {0x0B92, 0x0B95, prN}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA - {0x0B99, 0x0B9A, prN}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA - {0x0B9C, 0x0B9C, prN}, // Lo TAMIL LETTER JA - {0x0B9E, 0x0B9F, prN}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA - {0x0BA3, 0x0BA4, prN}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA - {0x0BA8, 0x0BAA, prN}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA - {0x0BAE, 0x0BB9, prN}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA - {0x0BBE, 0x0BBF, prN}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I - {0x0BC0, 0x0BC0, prN}, // Mn TAMIL VOWEL SIGN II - {0x0BC1, 0x0BC2, prN}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU - {0x0BC6, 0x0BC8, prN}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI - {0x0BCA, 0x0BCC, prN}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU - {0x0BCD, 0x0BCD, prN}, // Mn TAMIL SIGN VIRAMA - {0x0BD0, 0x0BD0, prN}, // Lo TAMIL OM - {0x0BD7, 0x0BD7, prN}, // Mc TAMIL AU LENGTH MARK - {0x0BE6, 0x0BEF, prN}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE - {0x0BF0, 0x0BF2, prN}, // No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND - {0x0BF3, 0x0BF8, prN}, // So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN - {0x0BF9, 0x0BF9, prN}, // Sc TAMIL RUPEE SIGN - {0x0BFA, 0x0BFA, prN}, // So TAMIL NUMBER SIGN - {0x0C00, 0x0C00, prN}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE - {0x0C01, 0x0C03, prN}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA - {0x0C04, 0x0C04, prN}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE - {0x0C05, 0x0C0C, prN}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L - {0x0C0E, 0x0C10, prN}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI - {0x0C12, 0x0C28, prN}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA - {0x0C2A, 0x0C39, prN}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA - {0x0C3C, 0x0C3C, prN}, // Mn TELUGU SIGN NUKTA - {0x0C3D, 0x0C3D, prN}, // Lo TELUGU SIGN AVAGRAHA - {0x0C3E, 0x0C40, prN}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II - {0x0C41, 0x0C44, prN}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR - {0x0C46, 0x0C48, prN}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI - {0x0C4A, 0x0C4D, prN}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA - {0x0C55, 0x0C56, prN}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK - {0x0C58, 0x0C5A, prN}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - {0x0C5D, 0x0C5D, prN}, // Lo TELUGU LETTER NAKAARA POLLU - {0x0C60, 0x0C61, prN}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - {0x0C62, 0x0C63, prN}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - {0x0C66, 0x0C6F, prN}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE - {0x0C77, 0x0C77, prN}, // Po TELUGU SIGN SIDDHAM - {0x0C78, 0x0C7E, prN}, // No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR - {0x0C7F, 0x0C7F, prN}, // So TELUGU SIGN TUUMU - {0x0C80, 0x0C80, prN}, // Lo KANNADA SIGN SPACING CANDRABINDU - {0x0C81, 0x0C81, prN}, // Mn KANNADA SIGN CANDRABINDU - {0x0C82, 0x0C83, prN}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - {0x0C84, 0x0C84, prN}, // Po KANNADA SIGN SIDDHAM - {0x0C85, 0x0C8C, prN}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - {0x0C8E, 0x0C90, prN}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI - {0x0C92, 0x0CA8, prN}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA - {0x0CAA, 0x0CB3, prN}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA - {0x0CB5, 0x0CB9, prN}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA - {0x0CBC, 0x0CBC, prN}, // Mn KANNADA SIGN NUKTA - {0x0CBD, 0x0CBD, prN}, // Lo KANNADA SIGN AVAGRAHA - {0x0CBE, 0x0CBE, prN}, // Mc KANNADA VOWEL SIGN AA - {0x0CBF, 0x0CBF, prN}, // Mn KANNADA VOWEL SIGN I - {0x0CC0, 0x0CC4, prN}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR - {0x0CC6, 0x0CC6, prN}, // Mn KANNADA VOWEL SIGN E - {0x0CC7, 0x0CC8, prN}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI - {0x0CCA, 0x0CCB, prN}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO - {0x0CCC, 0x0CCD, prN}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA - {0x0CD5, 0x0CD6, prN}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK - {0x0CDD, 0x0CDE, prN}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA - {0x0CE0, 0x0CE1, prN}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL - {0x0CE2, 0x0CE3, prN}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL - {0x0CE6, 0x0CEF, prN}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - {0x0CF1, 0x0CF2, prN}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA - {0x0CF3, 0x0CF3, prN}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT - {0x0D00, 0x0D01, prN}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU - {0x0D02, 0x0D03, prN}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA - {0x0D04, 0x0D0C, prN}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L - {0x0D0E, 0x0D10, prN}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI - {0x0D12, 0x0D3A, prN}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - {0x0D3B, 0x0D3C, prN}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA - {0x0D3D, 0x0D3D, prN}, // Lo MALAYALAM SIGN AVAGRAHA - {0x0D3E, 0x0D40, prN}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II - {0x0D41, 0x0D44, prN}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR - {0x0D46, 0x0D48, prN}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - {0x0D4A, 0x0D4C, prN}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - {0x0D4D, 0x0D4D, prN}, // Mn MALAYALAM SIGN VIRAMA - {0x0D4E, 0x0D4E, prN}, // Lo MALAYALAM LETTER DOT REPH - {0x0D4F, 0x0D4F, prN}, // So MALAYALAM SIGN PARA - {0x0D54, 0x0D56, prN}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - {0x0D57, 0x0D57, prN}, // Mc MALAYALAM AU LENGTH MARK - {0x0D58, 0x0D5E, prN}, // No [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH - {0x0D5F, 0x0D61, prN}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - {0x0D62, 0x0D63, prN}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL - {0x0D66, 0x0D6F, prN}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE - {0x0D70, 0x0D78, prN}, // No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS - {0x0D79, 0x0D79, prN}, // So MALAYALAM DATE MARK - {0x0D7A, 0x0D7F, prN}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - {0x0D81, 0x0D81, prN}, // Mn SINHALA SIGN CANDRABINDU - {0x0D82, 0x0D83, prN}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA - {0x0D85, 0x0D96, prN}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA - {0x0D9A, 0x0DB1, prN}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA - {0x0DB3, 0x0DBB, prN}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA - {0x0DBD, 0x0DBD, prN}, // Lo SINHALA LETTER DANTAJA LAYANNA - {0x0DC0, 0x0DC6, prN}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA - {0x0DCA, 0x0DCA, prN}, // Mn SINHALA SIGN AL-LAKUNA - {0x0DCF, 0x0DD1, prN}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA - {0x0DD2, 0x0DD4, prN}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA - {0x0DD6, 0x0DD6, prN}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA - {0x0DD8, 0x0DDF, prN}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA - {0x0DE6, 0x0DEF, prN}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE - {0x0DF2, 0x0DF3, prN}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA - {0x0DF4, 0x0DF4, prN}, // Po SINHALA PUNCTUATION KUNDDALIYA - {0x0E01, 0x0E30, prN}, // Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A - {0x0E31, 0x0E31, prN}, // Mn THAI CHARACTER MAI HAN-AKAT - {0x0E32, 0x0E33, prN}, // Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM - {0x0E34, 0x0E3A, prN}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU - {0x0E3F, 0x0E3F, prN}, // Sc THAI CURRENCY SYMBOL BAHT - {0x0E40, 0x0E45, prN}, // Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO - {0x0E46, 0x0E46, prN}, // Lm THAI CHARACTER MAIYAMOK - {0x0E47, 0x0E4E, prN}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN - {0x0E4F, 0x0E4F, prN}, // Po THAI CHARACTER FONGMAN - {0x0E50, 0x0E59, prN}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE - {0x0E5A, 0x0E5B, prN}, // Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT - {0x0E81, 0x0E82, prN}, // Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG - {0x0E84, 0x0E84, prN}, // Lo LAO LETTER KHO TAM - {0x0E86, 0x0E8A, prN}, // Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM - {0x0E8C, 0x0EA3, prN}, // Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING - {0x0EA5, 0x0EA5, prN}, // Lo LAO LETTER LO LOOT - {0x0EA7, 0x0EB0, prN}, // Lo [10] LAO LETTER WO..LAO VOWEL SIGN A - {0x0EB1, 0x0EB1, prN}, // Mn LAO VOWEL SIGN MAI KAN - {0x0EB2, 0x0EB3, prN}, // Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM - {0x0EB4, 0x0EBC, prN}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO - {0x0EBD, 0x0EBD, prN}, // Lo LAO SEMIVOWEL SIGN NYO - {0x0EC0, 0x0EC4, prN}, // Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI - {0x0EC6, 0x0EC6, prN}, // Lm LAO KO LA - {0x0EC8, 0x0ECE, prN}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN - {0x0ED0, 0x0ED9, prN}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE - {0x0EDC, 0x0EDF, prN}, // Lo [4] LAO HO NO..LAO LETTER KHMU NYO - {0x0F00, 0x0F00, prN}, // Lo TIBETAN SYLLABLE OM - {0x0F01, 0x0F03, prN}, // So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA - {0x0F04, 0x0F12, prN}, // Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD - {0x0F13, 0x0F13, prN}, // So TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN - {0x0F14, 0x0F14, prN}, // Po TIBETAN MARK GTER TSHEG - {0x0F15, 0x0F17, prN}, // So [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS - {0x0F18, 0x0F19, prN}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS - {0x0F1A, 0x0F1F, prN}, // So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG - {0x0F20, 0x0F29, prN}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE - {0x0F2A, 0x0F33, prN}, // No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO - {0x0F34, 0x0F34, prN}, // So TIBETAN MARK BSDUS RTAGS - {0x0F35, 0x0F35, prN}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA - {0x0F36, 0x0F36, prN}, // So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN - {0x0F37, 0x0F37, prN}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS - {0x0F38, 0x0F38, prN}, // So TIBETAN MARK CHE MGO - {0x0F39, 0x0F39, prN}, // Mn TIBETAN MARK TSA -PHRU - {0x0F3A, 0x0F3A, prN}, // Ps TIBETAN MARK GUG RTAGS GYON - {0x0F3B, 0x0F3B, prN}, // Pe TIBETAN MARK GUG RTAGS GYAS - {0x0F3C, 0x0F3C, prN}, // Ps TIBETAN MARK ANG KHANG GYON - {0x0F3D, 0x0F3D, prN}, // Pe TIBETAN MARK ANG KHANG GYAS - {0x0F3E, 0x0F3F, prN}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES - {0x0F40, 0x0F47, prN}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA - {0x0F49, 0x0F6C, prN}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA - {0x0F71, 0x0F7E, prN}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO - {0x0F7F, 0x0F7F, prN}, // Mc TIBETAN SIGN RNAM BCAD - {0x0F80, 0x0F84, prN}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA - {0x0F85, 0x0F85, prN}, // Po TIBETAN MARK PALUTA - {0x0F86, 0x0F87, prN}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS - {0x0F88, 0x0F8C, prN}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN - {0x0F8D, 0x0F97, prN}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA - {0x0F99, 0x0FBC, prN}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA - {0x0FBE, 0x0FC5, prN}, // So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE - {0x0FC6, 0x0FC6, prN}, // Mn TIBETAN SYMBOL PADMA GDAN - {0x0FC7, 0x0FCC, prN}, // So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL - {0x0FCE, 0x0FCF, prN}, // So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM - {0x0FD0, 0x0FD4, prN}, // Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA - {0x0FD5, 0x0FD8, prN}, // So [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS - {0x0FD9, 0x0FDA, prN}, // Po [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS - {0x1000, 0x102A, prN}, // Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU - {0x102B, 0x102C, prN}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA - {0x102D, 0x1030, prN}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU - {0x1031, 0x1031, prN}, // Mc MYANMAR VOWEL SIGN E - {0x1032, 0x1037, prN}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW - {0x1038, 0x1038, prN}, // Mc MYANMAR SIGN VISARGA - {0x1039, 0x103A, prN}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT - {0x103B, 0x103C, prN}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA - {0x103D, 0x103E, prN}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA - {0x103F, 0x103F, prN}, // Lo MYANMAR LETTER GREAT SA - {0x1040, 0x1049, prN}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE - {0x104A, 0x104F, prN}, // Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE - {0x1050, 0x1055, prN}, // Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL - {0x1056, 0x1057, prN}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR - {0x1058, 0x1059, prN}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - {0x105A, 0x105D, prN}, // Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE - {0x105E, 0x1060, prN}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA - {0x1061, 0x1061, prN}, // Lo MYANMAR LETTER SGAW KAREN SHA - {0x1062, 0x1064, prN}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO - {0x1065, 0x1066, prN}, // Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA - {0x1067, 0x106D, prN}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 - {0x106E, 0x1070, prN}, // Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA - {0x1071, 0x1074, prN}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE - {0x1075, 0x1081, prN}, // Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA - {0x1082, 0x1082, prN}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA - {0x1083, 0x1084, prN}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E - {0x1085, 0x1086, prN}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y - {0x1087, 0x108C, prN}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 - {0x108D, 0x108D, prN}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE - {0x108E, 0x108E, prN}, // Lo MYANMAR LETTER RUMAI PALAUNG FA - {0x108F, 0x108F, prN}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 - {0x1090, 0x1099, prN}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE - {0x109A, 0x109C, prN}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A - {0x109D, 0x109D, prN}, // Mn MYANMAR VOWEL SIGN AITON AI - {0x109E, 0x109F, prN}, // So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION - {0x10A0, 0x10C5, prN}, // Lu [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE - {0x10C7, 0x10C7, prN}, // Lu GEORGIAN CAPITAL LETTER YN - {0x10CD, 0x10CD, prN}, // Lu GEORGIAN CAPITAL LETTER AEN - {0x10D0, 0x10FA, prN}, // Ll [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN - {0x10FB, 0x10FB, prN}, // Po GEORGIAN PARAGRAPH SEPARATOR - {0x10FC, 0x10FC, prN}, // Lm MODIFIER LETTER GEORGIAN NAR - {0x10FD, 0x10FF, prN}, // Ll [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN - {0x1100, 0x115F, prW}, // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER - {0x1160, 0x11FF, prN}, // Lo [160] HANGUL JUNGSEONG FILLER..HANGUL JONGSEONG SSANGNIEUN - {0x1200, 0x1248, prN}, // Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA - {0x124A, 0x124D, prN}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE - {0x1250, 0x1256, prN}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO - {0x1258, 0x1258, prN}, // Lo ETHIOPIC SYLLABLE QHWA - {0x125A, 0x125D, prN}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE - {0x1260, 0x1288, prN}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA - {0x128A, 0x128D, prN}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE - {0x1290, 0x12B0, prN}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA - {0x12B2, 0x12B5, prN}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE - {0x12B8, 0x12BE, prN}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO - {0x12C0, 0x12C0, prN}, // Lo ETHIOPIC SYLLABLE KXWA - {0x12C2, 0x12C5, prN}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE - {0x12C8, 0x12D6, prN}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O - {0x12D8, 0x1310, prN}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA - {0x1312, 0x1315, prN}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE - {0x1318, 0x135A, prN}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA - {0x135D, 0x135F, prN}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK - {0x1360, 0x1368, prN}, // Po [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR - {0x1369, 0x137C, prN}, // No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND - {0x1380, 0x138F, prN}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE - {0x1390, 0x1399, prN}, // So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT - {0x13A0, 0x13F5, prN}, // Lu [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - {0x13F8, 0x13FD, prN}, // Ll [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV - {0x1400, 0x1400, prN}, // Pd CANADIAN SYLLABICS HYPHEN - {0x1401, 0x166C, prN}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA - {0x166D, 0x166D, prN}, // So CANADIAN SYLLABICS CHI SIGN - {0x166E, 0x166E, prN}, // Po CANADIAN SYLLABICS FULL STOP - {0x166F, 0x167F, prN}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W - {0x1680, 0x1680, prN}, // Zs OGHAM SPACE MARK - {0x1681, 0x169A, prN}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH - {0x169B, 0x169B, prN}, // Ps OGHAM FEATHER MARK - {0x169C, 0x169C, prN}, // Pe OGHAM REVERSED FEATHER MARK - {0x16A0, 0x16EA, prN}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X - {0x16EB, 0x16ED, prN}, // Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION - {0x16EE, 0x16F0, prN}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - {0x16F1, 0x16F8, prN}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC - {0x1700, 0x1711, prN}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA - {0x1712, 0x1714, prN}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - {0x1715, 0x1715, prN}, // Mc TAGALOG SIGN PAMUDPOD - {0x171F, 0x171F, prN}, // Lo TAGALOG LETTER ARCHAIC RA - {0x1720, 0x1731, prN}, // Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA - {0x1732, 0x1733, prN}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U - {0x1734, 0x1734, prN}, // Mc HANUNOO SIGN PAMUDPOD - {0x1735, 0x1736, prN}, // Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION - {0x1740, 0x1751, prN}, // Lo [18] BUHID LETTER A..BUHID LETTER HA - {0x1752, 0x1753, prN}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - {0x1760, 0x176C, prN}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA - {0x176E, 0x1770, prN}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA - {0x1772, 0x1773, prN}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - {0x1780, 0x17B3, prN}, // Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU - {0x17B4, 0x17B5, prN}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA - {0x17B6, 0x17B6, prN}, // Mc KHMER VOWEL SIGN AA - {0x17B7, 0x17BD, prN}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA - {0x17BE, 0x17C5, prN}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU - {0x17C6, 0x17C6, prN}, // Mn KHMER SIGN NIKAHIT - {0x17C7, 0x17C8, prN}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU - {0x17C9, 0x17D3, prN}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT - {0x17D4, 0x17D6, prN}, // Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH - {0x17D7, 0x17D7, prN}, // Lm KHMER SIGN LEK TOO - {0x17D8, 0x17DA, prN}, // Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT - {0x17DB, 0x17DB, prN}, // Sc KHMER CURRENCY SYMBOL RIEL - {0x17DC, 0x17DC, prN}, // Lo KHMER SIGN AVAKRAHASANYA - {0x17DD, 0x17DD, prN}, // Mn KHMER SIGN ATTHACAN - {0x17E0, 0x17E9, prN}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE - {0x17F0, 0x17F9, prN}, // No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON - {0x1800, 0x1805, prN}, // Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS - {0x1806, 0x1806, prN}, // Pd MONGOLIAN TODO SOFT HYPHEN - {0x1807, 0x180A, prN}, // Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU - {0x180B, 0x180D, prN}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - {0x180E, 0x180E, prN}, // Cf MONGOLIAN VOWEL SEPARATOR - {0x180F, 0x180F, prN}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR - {0x1810, 0x1819, prN}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE - {0x1820, 0x1842, prN}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - {0x1843, 0x1843, prN}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - {0x1844, 0x1878, prN}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS - {0x1880, 0x1884, prN}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA - {0x1885, 0x1886, prN}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - {0x1887, 0x18A8, prN}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - {0x18A9, 0x18A9, prN}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA - {0x18AA, 0x18AA, prN}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - {0x18B0, 0x18F5, prN}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - {0x1900, 0x191E, prN}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA - {0x1920, 0x1922, prN}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - {0x1923, 0x1926, prN}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU - {0x1927, 0x1928, prN}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O - {0x1929, 0x192B, prN}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA - {0x1930, 0x1931, prN}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA - {0x1932, 0x1932, prN}, // Mn LIMBU SMALL LETTER ANUSVARA - {0x1933, 0x1938, prN}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA - {0x1939, 0x193B, prN}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I - {0x1940, 0x1940, prN}, // So LIMBU SIGN LOO - {0x1944, 0x1945, prN}, // Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK - {0x1946, 0x194F, prN}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - {0x1950, 0x196D, prN}, // Lo [30] TAI LE LETTER KA..TAI LE LETTER AI - {0x1970, 0x1974, prN}, // Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 - {0x1980, 0x19AB, prN}, // Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA - {0x19B0, 0x19C9, prN}, // Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 - {0x19D0, 0x19D9, prN}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE - {0x19DA, 0x19DA, prN}, // No NEW TAI LUE THAM DIGIT ONE - {0x19DE, 0x19DF, prN}, // So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV - {0x19E0, 0x19FF, prN}, // So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC - {0x1A00, 0x1A16, prN}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA - {0x1A17, 0x1A18, prN}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U - {0x1A19, 0x1A1A, prN}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O - {0x1A1B, 0x1A1B, prN}, // Mn BUGINESE VOWEL SIGN AE - {0x1A1E, 0x1A1F, prN}, // Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION - {0x1A20, 0x1A54, prN}, // Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA - {0x1A55, 0x1A55, prN}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA - {0x1A56, 0x1A56, prN}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA - {0x1A57, 0x1A57, prN}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI - {0x1A58, 0x1A5E, prN}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA - {0x1A60, 0x1A60, prN}, // Mn TAI THAM SIGN SAKOT - {0x1A61, 0x1A61, prN}, // Mc TAI THAM VOWEL SIGN A - {0x1A62, 0x1A62, prN}, // Mn TAI THAM VOWEL SIGN MAI SAT - {0x1A63, 0x1A64, prN}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA - {0x1A65, 0x1A6C, prN}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW - {0x1A6D, 0x1A72, prN}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI - {0x1A73, 0x1A7C, prN}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN - {0x1A7F, 0x1A7F, prN}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT - {0x1A80, 0x1A89, prN}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE - {0x1A90, 0x1A99, prN}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE - {0x1AA0, 0x1AA6, prN}, // Po [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA - {0x1AA7, 0x1AA7, prN}, // Lm TAI THAM SIGN MAI YAMOK - {0x1AA8, 0x1AAD, prN}, // Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG - {0x1AB0, 0x1ABD, prN}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW - {0x1ABE, 0x1ABE, prN}, // Me COMBINING PARENTHESES OVERLAY - {0x1ABF, 0x1ACE, prN}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T - {0x1B00, 0x1B03, prN}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG - {0x1B04, 0x1B04, prN}, // Mc BALINESE SIGN BISAH - {0x1B05, 0x1B33, prN}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA - {0x1B34, 0x1B34, prN}, // Mn BALINESE SIGN REREKAN - {0x1B35, 0x1B35, prN}, // Mc BALINESE VOWEL SIGN TEDUNG - {0x1B36, 0x1B3A, prN}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA - {0x1B3B, 0x1B3B, prN}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG - {0x1B3C, 0x1B3C, prN}, // Mn BALINESE VOWEL SIGN LA LENGA - {0x1B3D, 0x1B41, prN}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG - {0x1B42, 0x1B42, prN}, // Mn BALINESE VOWEL SIGN PEPET - {0x1B43, 0x1B44, prN}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG - {0x1B45, 0x1B4C, prN}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA - {0x1B50, 0x1B59, prN}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE - {0x1B5A, 0x1B60, prN}, // Po [7] BALINESE PANTI..BALINESE PAMENENG - {0x1B61, 0x1B6A, prN}, // So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE - {0x1B6B, 0x1B73, prN}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG - {0x1B74, 0x1B7C, prN}, // So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING - {0x1B7D, 0x1B7E, prN}, // Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG - {0x1B80, 0x1B81, prN}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR - {0x1B82, 0x1B82, prN}, // Mc SUNDANESE SIGN PANGWISAD - {0x1B83, 0x1BA0, prN}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA - {0x1BA1, 0x1BA1, prN}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL - {0x1BA2, 0x1BA5, prN}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU - {0x1BA6, 0x1BA7, prN}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG - {0x1BA8, 0x1BA9, prN}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG - {0x1BAA, 0x1BAA, prN}, // Mc SUNDANESE SIGN PAMAAEH - {0x1BAB, 0x1BAD, prN}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA - {0x1BAE, 0x1BAF, prN}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA - {0x1BB0, 0x1BB9, prN}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE - {0x1BBA, 0x1BBF, prN}, // Lo [6] SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M - {0x1BC0, 0x1BE5, prN}, // Lo [38] BATAK LETTER A..BATAK LETTER U - {0x1BE6, 0x1BE6, prN}, // Mn BATAK SIGN TOMPI - {0x1BE7, 0x1BE7, prN}, // Mc BATAK VOWEL SIGN E - {0x1BE8, 0x1BE9, prN}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE - {0x1BEA, 0x1BEC, prN}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O - {0x1BED, 0x1BED, prN}, // Mn BATAK VOWEL SIGN KARO O - {0x1BEE, 0x1BEE, prN}, // Mc BATAK VOWEL SIGN U - {0x1BEF, 0x1BF1, prN}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H - {0x1BF2, 0x1BF3, prN}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN - {0x1BFC, 0x1BFF, prN}, // Po [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT - {0x1C00, 0x1C23, prN}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A - {0x1C24, 0x1C2B, prN}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU - {0x1C2C, 0x1C33, prN}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T - {0x1C34, 0x1C35, prN}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG - {0x1C36, 0x1C37, prN}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA - {0x1C3B, 0x1C3F, prN}, // Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK - {0x1C40, 0x1C49, prN}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE - {0x1C4D, 0x1C4F, prN}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - {0x1C50, 0x1C59, prN}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - {0x1C5A, 0x1C77, prN}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - {0x1C78, 0x1C7D, prN}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD - {0x1C7E, 0x1C7F, prN}, // Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD - {0x1C80, 0x1C88, prN}, // Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - {0x1C90, 0x1CBA, prN}, // Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN - {0x1CBD, 0x1CBF, prN}, // Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN - {0x1CC0, 0x1CC7, prN}, // Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA - {0x1CD0, 0x1CD2, prN}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - {0x1CD3, 0x1CD3, prN}, // Po VEDIC SIGN NIHSHVASA - {0x1CD4, 0x1CE0, prN}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - {0x1CE1, 0x1CE1, prN}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA - {0x1CE2, 0x1CE8, prN}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL - {0x1CE9, 0x1CEC, prN}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - {0x1CED, 0x1CED, prN}, // Mn VEDIC SIGN TIRYAK - {0x1CEE, 0x1CF3, prN}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA - {0x1CF4, 0x1CF4, prN}, // Mn VEDIC TONE CANDRA ABOVE - {0x1CF5, 0x1CF6, prN}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA - {0x1CF7, 0x1CF7, prN}, // Mc VEDIC SIGN ATIKRAMA - {0x1CF8, 0x1CF9, prN}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE - {0x1CFA, 0x1CFA, prN}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA - {0x1D00, 0x1D2B, prN}, // Ll [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - {0x1D2C, 0x1D6A, prN}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - {0x1D6B, 0x1D77, prN}, // Ll [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G - {0x1D78, 0x1D78, prN}, // Lm MODIFIER LETTER CYRILLIC EN - {0x1D79, 0x1D7F, prN}, // Ll [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE - {0x1D80, 0x1D9A, prN}, // Ll [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - {0x1D9B, 0x1DBF, prN}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - {0x1DC0, 0x1DFF, prN}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - {0x1E00, 0x1EFF, prN}, // L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP - {0x1F00, 0x1F15, prN}, // L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - {0x1F18, 0x1F1D, prN}, // Lu [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - {0x1F20, 0x1F45, prN}, // L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA - {0x1F48, 0x1F4D, prN}, // Lu [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA - {0x1F50, 0x1F57, prN}, // Ll [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI - {0x1F59, 0x1F59, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA - {0x1F5B, 0x1F5B, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA - {0x1F5D, 0x1F5D, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA - {0x1F5F, 0x1F7D, prN}, // L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA - {0x1F80, 0x1FB4, prN}, // L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI - {0x1FB6, 0x1FBC, prN}, // L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI - {0x1FBD, 0x1FBD, prN}, // Sk GREEK KORONIS - {0x1FBE, 0x1FBE, prN}, // Ll GREEK PROSGEGRAMMENI - {0x1FBF, 0x1FC1, prN}, // Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI - {0x1FC2, 0x1FC4, prN}, // Ll [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI - {0x1FC6, 0x1FCC, prN}, // L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI - {0x1FCD, 0x1FCF, prN}, // Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI - {0x1FD0, 0x1FD3, prN}, // Ll [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA - {0x1FD6, 0x1FDB, prN}, // L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA - {0x1FDD, 0x1FDF, prN}, // Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI - {0x1FE0, 0x1FEC, prN}, // L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA - {0x1FED, 0x1FEF, prN}, // Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA - {0x1FF2, 0x1FF4, prN}, // Ll [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - {0x1FF6, 0x1FFC, prN}, // L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - {0x1FFD, 0x1FFE, prN}, // Sk [2] GREEK OXIA..GREEK DASIA - {0x2000, 0x200A, prN}, // Zs [11] EN QUAD..HAIR SPACE - {0x200B, 0x200F, prN}, // Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK - {0x2010, 0x2010, prA}, // Pd HYPHEN - {0x2011, 0x2012, prN}, // Pd [2] NON-BREAKING HYPHEN..FIGURE DASH - {0x2013, 0x2015, prA}, // Pd [3] EN DASH..HORIZONTAL BAR - {0x2016, 0x2016, prA}, // Po DOUBLE VERTICAL LINE - {0x2017, 0x2017, prN}, // Po DOUBLE LOW LINE - {0x2018, 0x2018, prA}, // Pi LEFT SINGLE QUOTATION MARK - {0x2019, 0x2019, prA}, // Pf RIGHT SINGLE QUOTATION MARK - {0x201A, 0x201A, prN}, // Ps SINGLE LOW-9 QUOTATION MARK - {0x201B, 0x201B, prN}, // Pi SINGLE HIGH-REVERSED-9 QUOTATION MARK - {0x201C, 0x201C, prA}, // Pi LEFT DOUBLE QUOTATION MARK - {0x201D, 0x201D, prA}, // Pf RIGHT DOUBLE QUOTATION MARK - {0x201E, 0x201E, prN}, // Ps DOUBLE LOW-9 QUOTATION MARK - {0x201F, 0x201F, prN}, // Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK - {0x2020, 0x2022, prA}, // Po [3] DAGGER..BULLET - {0x2023, 0x2023, prN}, // Po TRIANGULAR BULLET - {0x2024, 0x2027, prA}, // Po [4] ONE DOT LEADER..HYPHENATION POINT - {0x2028, 0x2028, prN}, // Zl LINE SEPARATOR - {0x2029, 0x2029, prN}, // Zp PARAGRAPH SEPARATOR - {0x202A, 0x202E, prN}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - {0x202F, 0x202F, prN}, // Zs NARROW NO-BREAK SPACE - {0x2030, 0x2030, prA}, // Po PER MILLE SIGN - {0x2031, 0x2031, prN}, // Po PER TEN THOUSAND SIGN - {0x2032, 0x2033, prA}, // Po [2] PRIME..DOUBLE PRIME - {0x2034, 0x2034, prN}, // Po TRIPLE PRIME - {0x2035, 0x2035, prA}, // Po REVERSED PRIME - {0x2036, 0x2038, prN}, // Po [3] REVERSED DOUBLE PRIME..CARET - {0x2039, 0x2039, prN}, // Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK - {0x203A, 0x203A, prN}, // Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - {0x203B, 0x203B, prA}, // Po REFERENCE MARK - {0x203C, 0x203D, prN}, // Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG - {0x203E, 0x203E, prA}, // Po OVERLINE - {0x203F, 0x2040, prN}, // Pc [2] UNDERTIE..CHARACTER TIE - {0x2041, 0x2043, prN}, // Po [3] CARET INSERTION POINT..HYPHEN BULLET - {0x2044, 0x2044, prN}, // Sm FRACTION SLASH - {0x2045, 0x2045, prN}, // Ps LEFT SQUARE BRACKET WITH QUILL - {0x2046, 0x2046, prN}, // Pe RIGHT SQUARE BRACKET WITH QUILL - {0x2047, 0x2051, prN}, // Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY - {0x2052, 0x2052, prN}, // Sm COMMERCIAL MINUS SIGN - {0x2053, 0x2053, prN}, // Po SWUNG DASH - {0x2054, 0x2054, prN}, // Pc INVERTED UNDERTIE - {0x2055, 0x205E, prN}, // Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS - {0x205F, 0x205F, prN}, // Zs MEDIUM MATHEMATICAL SPACE - {0x2060, 0x2064, prN}, // Cf [5] WORD JOINER..INVISIBLE PLUS - {0x2066, 0x206F, prN}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES - {0x2070, 0x2070, prN}, // No SUPERSCRIPT ZERO - {0x2071, 0x2071, prN}, // Lm SUPERSCRIPT LATIN SMALL LETTER I - {0x2074, 0x2074, prA}, // No SUPERSCRIPT FOUR - {0x2075, 0x2079, prN}, // No [5] SUPERSCRIPT FIVE..SUPERSCRIPT NINE - {0x207A, 0x207C, prN}, // Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN - {0x207D, 0x207D, prN}, // Ps SUPERSCRIPT LEFT PARENTHESIS - {0x207E, 0x207E, prN}, // Pe SUPERSCRIPT RIGHT PARENTHESIS - {0x207F, 0x207F, prA}, // Lm SUPERSCRIPT LATIN SMALL LETTER N - {0x2080, 0x2080, prN}, // No SUBSCRIPT ZERO - {0x2081, 0x2084, prA}, // No [4] SUBSCRIPT ONE..SUBSCRIPT FOUR - {0x2085, 0x2089, prN}, // No [5] SUBSCRIPT FIVE..SUBSCRIPT NINE - {0x208A, 0x208C, prN}, // Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN - {0x208D, 0x208D, prN}, // Ps SUBSCRIPT LEFT PARENTHESIS - {0x208E, 0x208E, prN}, // Pe SUBSCRIPT RIGHT PARENTHESIS - {0x2090, 0x209C, prN}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T - {0x20A0, 0x20A8, prN}, // Sc [9] EURO-CURRENCY SIGN..RUPEE SIGN - {0x20A9, 0x20A9, prH}, // Sc WON SIGN - {0x20AA, 0x20AB, prN}, // Sc [2] NEW SHEQEL SIGN..DONG SIGN - {0x20AC, 0x20AC, prA}, // Sc EURO SIGN - {0x20AD, 0x20C0, prN}, // Sc [20] KIP SIGN..SOM SIGN - {0x20D0, 0x20DC, prN}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE - {0x20DD, 0x20E0, prN}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH - {0x20E1, 0x20E1, prN}, // Mn COMBINING LEFT RIGHT ARROW ABOVE - {0x20E2, 0x20E4, prN}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE - {0x20E5, 0x20F0, prN}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE - {0x2100, 0x2101, prN}, // So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT - {0x2102, 0x2102, prN}, // Lu DOUBLE-STRUCK CAPITAL C - {0x2103, 0x2103, prA}, // So DEGREE CELSIUS - {0x2104, 0x2104, prN}, // So CENTRE LINE SYMBOL - {0x2105, 0x2105, prA}, // So CARE OF - {0x2106, 0x2106, prN}, // So CADA UNA - {0x2107, 0x2107, prN}, // Lu EULER CONSTANT - {0x2108, 0x2108, prN}, // So SCRUPLE - {0x2109, 0x2109, prA}, // So DEGREE FAHRENHEIT - {0x210A, 0x2112, prN}, // L& [9] SCRIPT SMALL G..SCRIPT CAPITAL L - {0x2113, 0x2113, prA}, // Ll SCRIPT SMALL L - {0x2114, 0x2114, prN}, // So L B BAR SYMBOL - {0x2115, 0x2115, prN}, // Lu DOUBLE-STRUCK CAPITAL N - {0x2116, 0x2116, prA}, // So NUMERO SIGN - {0x2117, 0x2117, prN}, // So SOUND RECORDING COPYRIGHT - {0x2118, 0x2118, prN}, // Sm SCRIPT CAPITAL P - {0x2119, 0x211D, prN}, // Lu [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R - {0x211E, 0x2120, prN}, // So [3] PRESCRIPTION TAKE..SERVICE MARK - {0x2121, 0x2122, prA}, // So [2] TELEPHONE SIGN..TRADE MARK SIGN - {0x2123, 0x2123, prN}, // So VERSICLE - {0x2124, 0x2124, prN}, // Lu DOUBLE-STRUCK CAPITAL Z - {0x2125, 0x2125, prN}, // So OUNCE SIGN - {0x2126, 0x2126, prA}, // Lu OHM SIGN - {0x2127, 0x2127, prN}, // So INVERTED OHM SIGN - {0x2128, 0x2128, prN}, // Lu BLACK-LETTER CAPITAL Z - {0x2129, 0x2129, prN}, // So TURNED GREEK SMALL LETTER IOTA - {0x212A, 0x212A, prN}, // Lu KELVIN SIGN - {0x212B, 0x212B, prA}, // Lu ANGSTROM SIGN - {0x212C, 0x212D, prN}, // Lu [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C - {0x212E, 0x212E, prN}, // So ESTIMATED SYMBOL - {0x212F, 0x2134, prN}, // L& [6] SCRIPT SMALL E..SCRIPT SMALL O - {0x2135, 0x2138, prN}, // Lo [4] ALEF SYMBOL..DALET SYMBOL - {0x2139, 0x2139, prN}, // Ll INFORMATION SOURCE - {0x213A, 0x213B, prN}, // So [2] ROTATED CAPITAL Q..FACSIMILE SIGN - {0x213C, 0x213F, prN}, // L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI - {0x2140, 0x2144, prN}, // Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y - {0x2145, 0x2149, prN}, // L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J - {0x214A, 0x214A, prN}, // So PROPERTY LINE - {0x214B, 0x214B, prN}, // Sm TURNED AMPERSAND - {0x214C, 0x214D, prN}, // So [2] PER SIGN..AKTIESELSKAB - {0x214E, 0x214E, prN}, // Ll TURNED SMALL F - {0x214F, 0x214F, prN}, // So SYMBOL FOR SAMARITAN SOURCE - {0x2150, 0x2152, prN}, // No [3] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE TENTH - {0x2153, 0x2154, prA}, // No [2] VULGAR FRACTION ONE THIRD..VULGAR FRACTION TWO THIRDS - {0x2155, 0x215A, prN}, // No [6] VULGAR FRACTION ONE FIFTH..VULGAR FRACTION FIVE SIXTHS - {0x215B, 0x215E, prA}, // No [4] VULGAR FRACTION ONE EIGHTH..VULGAR FRACTION SEVEN EIGHTHS - {0x215F, 0x215F, prN}, // No FRACTION NUMERATOR ONE - {0x2160, 0x216B, prA}, // Nl [12] ROMAN NUMERAL ONE..ROMAN NUMERAL TWELVE - {0x216C, 0x216F, prN}, // Nl [4] ROMAN NUMERAL FIFTY..ROMAN NUMERAL ONE THOUSAND - {0x2170, 0x2179, prA}, // Nl [10] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL TEN - {0x217A, 0x2182, prN}, // Nl [9] SMALL ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TEN THOUSAND - {0x2183, 0x2184, prN}, // L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C - {0x2185, 0x2188, prN}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND - {0x2189, 0x2189, prA}, // No VULGAR FRACTION ZERO THIRDS - {0x218A, 0x218B, prN}, // So [2] TURNED DIGIT TWO..TURNED DIGIT THREE - {0x2190, 0x2194, prA}, // Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW - {0x2195, 0x2199, prA}, // So [5] UP DOWN ARROW..SOUTH WEST ARROW - {0x219A, 0x219B, prN}, // Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE - {0x219C, 0x219F, prN}, // So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW - {0x21A0, 0x21A0, prN}, // Sm RIGHTWARDS TWO HEADED ARROW - {0x21A1, 0x21A2, prN}, // So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL - {0x21A3, 0x21A3, prN}, // Sm RIGHTWARDS ARROW WITH TAIL - {0x21A4, 0x21A5, prN}, // So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR - {0x21A6, 0x21A6, prN}, // Sm RIGHTWARDS ARROW FROM BAR - {0x21A7, 0x21AD, prN}, // So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW - {0x21AE, 0x21AE, prN}, // Sm LEFT RIGHT ARROW WITH STROKE - {0x21AF, 0x21B7, prN}, // So [9] DOWNWARDS ZIGZAG ARROW..CLOCKWISE TOP SEMICIRCLE ARROW - {0x21B8, 0x21B9, prA}, // So [2] NORTH WEST ARROW TO LONG BAR..LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR - {0x21BA, 0x21CD, prN}, // So [20] ANTICLOCKWISE OPEN CIRCLE ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE - {0x21CE, 0x21CF, prN}, // Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE - {0x21D0, 0x21D1, prN}, // So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW - {0x21D2, 0x21D2, prA}, // Sm RIGHTWARDS DOUBLE ARROW - {0x21D3, 0x21D3, prN}, // So DOWNWARDS DOUBLE ARROW - {0x21D4, 0x21D4, prA}, // Sm LEFT RIGHT DOUBLE ARROW - {0x21D5, 0x21E6, prN}, // So [18] UP DOWN DOUBLE ARROW..LEFTWARDS WHITE ARROW - {0x21E7, 0x21E7, prA}, // So UPWARDS WHITE ARROW - {0x21E8, 0x21F3, prN}, // So [12] RIGHTWARDS WHITE ARROW..UP DOWN WHITE ARROW - {0x21F4, 0x21FF, prN}, // Sm [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW - {0x2200, 0x2200, prA}, // Sm FOR ALL - {0x2201, 0x2201, prN}, // Sm COMPLEMENT - {0x2202, 0x2203, prA}, // Sm [2] PARTIAL DIFFERENTIAL..THERE EXISTS - {0x2204, 0x2206, prN}, // Sm [3] THERE DOES NOT EXIST..INCREMENT - {0x2207, 0x2208, prA}, // Sm [2] NABLA..ELEMENT OF - {0x2209, 0x220A, prN}, // Sm [2] NOT AN ELEMENT OF..SMALL ELEMENT OF - {0x220B, 0x220B, prA}, // Sm CONTAINS AS MEMBER - {0x220C, 0x220E, prN}, // Sm [3] DOES NOT CONTAIN AS MEMBER..END OF PROOF - {0x220F, 0x220F, prA}, // Sm N-ARY PRODUCT - {0x2210, 0x2210, prN}, // Sm N-ARY COPRODUCT - {0x2211, 0x2211, prA}, // Sm N-ARY SUMMATION - {0x2212, 0x2214, prN}, // Sm [3] MINUS SIGN..DOT PLUS - {0x2215, 0x2215, prA}, // Sm DIVISION SLASH - {0x2216, 0x2219, prN}, // Sm [4] SET MINUS..BULLET OPERATOR - {0x221A, 0x221A, prA}, // Sm SQUARE ROOT - {0x221B, 0x221C, prN}, // Sm [2] CUBE ROOT..FOURTH ROOT - {0x221D, 0x2220, prA}, // Sm [4] PROPORTIONAL TO..ANGLE - {0x2221, 0x2222, prN}, // Sm [2] MEASURED ANGLE..SPHERICAL ANGLE - {0x2223, 0x2223, prA}, // Sm DIVIDES - {0x2224, 0x2224, prN}, // Sm DOES NOT DIVIDE - {0x2225, 0x2225, prA}, // Sm PARALLEL TO - {0x2226, 0x2226, prN}, // Sm NOT PARALLEL TO - {0x2227, 0x222C, prA}, // Sm [6] LOGICAL AND..DOUBLE INTEGRAL - {0x222D, 0x222D, prN}, // Sm TRIPLE INTEGRAL - {0x222E, 0x222E, prA}, // Sm CONTOUR INTEGRAL - {0x222F, 0x2233, prN}, // Sm [5] SURFACE INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL - {0x2234, 0x2237, prA}, // Sm [4] THEREFORE..PROPORTION - {0x2238, 0x223B, prN}, // Sm [4] DOT MINUS..HOMOTHETIC - {0x223C, 0x223D, prA}, // Sm [2] TILDE OPERATOR..REVERSED TILDE - {0x223E, 0x2247, prN}, // Sm [10] INVERTED LAZY S..NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO - {0x2248, 0x2248, prA}, // Sm ALMOST EQUAL TO - {0x2249, 0x224B, prN}, // Sm [3] NOT ALMOST EQUAL TO..TRIPLE TILDE - {0x224C, 0x224C, prA}, // Sm ALL EQUAL TO - {0x224D, 0x2251, prN}, // Sm [5] EQUIVALENT TO..GEOMETRICALLY EQUAL TO - {0x2252, 0x2252, prA}, // Sm APPROXIMATELY EQUAL TO OR THE IMAGE OF - {0x2253, 0x225F, prN}, // Sm [13] IMAGE OF OR APPROXIMATELY EQUAL TO..QUESTIONED EQUAL TO - {0x2260, 0x2261, prA}, // Sm [2] NOT EQUAL TO..IDENTICAL TO - {0x2262, 0x2263, prN}, // Sm [2] NOT IDENTICAL TO..STRICTLY EQUIVALENT TO - {0x2264, 0x2267, prA}, // Sm [4] LESS-THAN OR EQUAL TO..GREATER-THAN OVER EQUAL TO - {0x2268, 0x2269, prN}, // Sm [2] LESS-THAN BUT NOT EQUAL TO..GREATER-THAN BUT NOT EQUAL TO - {0x226A, 0x226B, prA}, // Sm [2] MUCH LESS-THAN..MUCH GREATER-THAN - {0x226C, 0x226D, prN}, // Sm [2] BETWEEN..NOT EQUIVALENT TO - {0x226E, 0x226F, prA}, // Sm [2] NOT LESS-THAN..NOT GREATER-THAN - {0x2270, 0x2281, prN}, // Sm [18] NEITHER LESS-THAN NOR EQUAL TO..DOES NOT SUCCEED - {0x2282, 0x2283, prA}, // Sm [2] SUBSET OF..SUPERSET OF - {0x2284, 0x2285, prN}, // Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF - {0x2286, 0x2287, prA}, // Sm [2] SUBSET OF OR EQUAL TO..SUPERSET OF OR EQUAL TO - {0x2288, 0x2294, prN}, // Sm [13] NEITHER A SUBSET OF NOR EQUAL TO..SQUARE CUP - {0x2295, 0x2295, prA}, // Sm CIRCLED PLUS - {0x2296, 0x2298, prN}, // Sm [3] CIRCLED MINUS..CIRCLED DIVISION SLASH - {0x2299, 0x2299, prA}, // Sm CIRCLED DOT OPERATOR - {0x229A, 0x22A4, prN}, // Sm [11] CIRCLED RING OPERATOR..DOWN TACK - {0x22A5, 0x22A5, prA}, // Sm UP TACK - {0x22A6, 0x22BE, prN}, // Sm [25] ASSERTION..RIGHT ANGLE WITH ARC - {0x22BF, 0x22BF, prA}, // Sm RIGHT TRIANGLE - {0x22C0, 0x22FF, prN}, // Sm [64] N-ARY LOGICAL AND..Z NOTATION BAG MEMBERSHIP - {0x2300, 0x2307, prN}, // So [8] DIAMETER SIGN..WAVY LINE - {0x2308, 0x2308, prN}, // Ps LEFT CEILING - {0x2309, 0x2309, prN}, // Pe RIGHT CEILING - {0x230A, 0x230A, prN}, // Ps LEFT FLOOR - {0x230B, 0x230B, prN}, // Pe RIGHT FLOOR - {0x230C, 0x2311, prN}, // So [6] BOTTOM RIGHT CROP..SQUARE LOZENGE - {0x2312, 0x2312, prA}, // So ARC - {0x2313, 0x2319, prN}, // So [7] SEGMENT..TURNED NOT SIGN - {0x231A, 0x231B, prW}, // So [2] WATCH..HOURGLASS - {0x231C, 0x231F, prN}, // So [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER - {0x2320, 0x2321, prN}, // Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL - {0x2322, 0x2328, prN}, // So [7] FROWN..KEYBOARD - {0x2329, 0x2329, prW}, // Ps LEFT-POINTING ANGLE BRACKET - {0x232A, 0x232A, prW}, // Pe RIGHT-POINTING ANGLE BRACKET - {0x232B, 0x237B, prN}, // So [81] ERASE TO THE LEFT..NOT CHECK MARK - {0x237C, 0x237C, prN}, // Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW - {0x237D, 0x239A, prN}, // So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL - {0x239B, 0x23B3, prN}, // Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM - {0x23B4, 0x23DB, prN}, // So [40] TOP SQUARE BRACKET..FUSE - {0x23DC, 0x23E1, prN}, // Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET - {0x23E2, 0x23E8, prN}, // So [7] WHITE TRAPEZIUM..DECIMAL EXPONENT SYMBOL - {0x23E9, 0x23EC, prW}, // So [4] BLACK RIGHT-POINTING DOUBLE TRIANGLE..BLACK DOWN-POINTING DOUBLE TRIANGLE - {0x23ED, 0x23EF, prN}, // So [3] BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR - {0x23F0, 0x23F0, prW}, // So ALARM CLOCK - {0x23F1, 0x23F2, prN}, // So [2] STOPWATCH..TIMER CLOCK - {0x23F3, 0x23F3, prW}, // So HOURGLASS WITH FLOWING SAND - {0x23F4, 0x23FF, prN}, // So [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL - {0x2400, 0x2426, prN}, // So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO - {0x2440, 0x244A, prN}, // So [11] OCR HOOK..OCR DOUBLE BACKSLASH - {0x2460, 0x249B, prA}, // No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP - {0x249C, 0x24E9, prA}, // So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z - {0x24EA, 0x24EA, prN}, // No CIRCLED DIGIT ZERO - {0x24EB, 0x24FF, prA}, // No [21] NEGATIVE CIRCLED NUMBER ELEVEN..NEGATIVE CIRCLED DIGIT ZERO - {0x2500, 0x254B, prA}, // So [76] BOX DRAWINGS LIGHT HORIZONTAL..BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - {0x254C, 0x254F, prN}, // So [4] BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL..BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL - {0x2550, 0x2573, prA}, // So [36] BOX DRAWINGS DOUBLE HORIZONTAL..BOX DRAWINGS LIGHT DIAGONAL CROSS - {0x2574, 0x257F, prN}, // So [12] BOX DRAWINGS LIGHT LEFT..BOX DRAWINGS HEAVY UP AND LIGHT DOWN - {0x2580, 0x258F, prA}, // So [16] UPPER HALF BLOCK..LEFT ONE EIGHTH BLOCK - {0x2590, 0x2591, prN}, // So [2] RIGHT HALF BLOCK..LIGHT SHADE - {0x2592, 0x2595, prA}, // So [4] MEDIUM SHADE..RIGHT ONE EIGHTH BLOCK - {0x2596, 0x259F, prN}, // So [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT - {0x25A0, 0x25A1, prA}, // So [2] BLACK SQUARE..WHITE SQUARE - {0x25A2, 0x25A2, prN}, // So WHITE SQUARE WITH ROUNDED CORNERS - {0x25A3, 0x25A9, prA}, // So [7] WHITE SQUARE CONTAINING BLACK SMALL SQUARE..SQUARE WITH DIAGONAL CROSSHATCH FILL - {0x25AA, 0x25B1, prN}, // So [8] BLACK SMALL SQUARE..WHITE PARALLELOGRAM - {0x25B2, 0x25B3, prA}, // So [2] BLACK UP-POINTING TRIANGLE..WHITE UP-POINTING TRIANGLE - {0x25B4, 0x25B5, prN}, // So [2] BLACK UP-POINTING SMALL TRIANGLE..WHITE UP-POINTING SMALL TRIANGLE - {0x25B6, 0x25B6, prA}, // So BLACK RIGHT-POINTING TRIANGLE - {0x25B7, 0x25B7, prA}, // Sm WHITE RIGHT-POINTING TRIANGLE - {0x25B8, 0x25BB, prN}, // So [4] BLACK RIGHT-POINTING SMALL TRIANGLE..WHITE RIGHT-POINTING POINTER - {0x25BC, 0x25BD, prA}, // So [2] BLACK DOWN-POINTING TRIANGLE..WHITE DOWN-POINTING TRIANGLE - {0x25BE, 0x25BF, prN}, // So [2] BLACK DOWN-POINTING SMALL TRIANGLE..WHITE DOWN-POINTING SMALL TRIANGLE - {0x25C0, 0x25C0, prA}, // So BLACK LEFT-POINTING TRIANGLE - {0x25C1, 0x25C1, prA}, // Sm WHITE LEFT-POINTING TRIANGLE - {0x25C2, 0x25C5, prN}, // So [4] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE LEFT-POINTING POINTER - {0x25C6, 0x25C8, prA}, // So [3] BLACK DIAMOND..WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND - {0x25C9, 0x25CA, prN}, // So [2] FISHEYE..LOZENGE - {0x25CB, 0x25CB, prA}, // So WHITE CIRCLE - {0x25CC, 0x25CD, prN}, // So [2] DOTTED CIRCLE..CIRCLE WITH VERTICAL FILL - {0x25CE, 0x25D1, prA}, // So [4] BULLSEYE..CIRCLE WITH RIGHT HALF BLACK - {0x25D2, 0x25E1, prN}, // So [16] CIRCLE WITH LOWER HALF BLACK..LOWER HALF CIRCLE - {0x25E2, 0x25E5, prA}, // So [4] BLACK LOWER RIGHT TRIANGLE..BLACK UPPER RIGHT TRIANGLE - {0x25E6, 0x25EE, prN}, // So [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK - {0x25EF, 0x25EF, prA}, // So LARGE CIRCLE - {0x25F0, 0x25F7, prN}, // So [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT - {0x25F8, 0x25FC, prN}, // Sm [5] UPPER LEFT TRIANGLE..BLACK MEDIUM SQUARE - {0x25FD, 0x25FE, prW}, // Sm [2] WHITE MEDIUM SMALL SQUARE..BLACK MEDIUM SMALL SQUARE - {0x25FF, 0x25FF, prN}, // Sm LOWER RIGHT TRIANGLE - {0x2600, 0x2604, prN}, // So [5] BLACK SUN WITH RAYS..COMET - {0x2605, 0x2606, prA}, // So [2] BLACK STAR..WHITE STAR - {0x2607, 0x2608, prN}, // So [2] LIGHTNING..THUNDERSTORM - {0x2609, 0x2609, prA}, // So SUN - {0x260A, 0x260D, prN}, // So [4] ASCENDING NODE..OPPOSITION - {0x260E, 0x260F, prA}, // So [2] BLACK TELEPHONE..WHITE TELEPHONE - {0x2610, 0x2613, prN}, // So [4] BALLOT BOX..SALTIRE - {0x2614, 0x2615, prW}, // So [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE - {0x2616, 0x261B, prN}, // So [6] WHITE SHOGI PIECE..BLACK RIGHT POINTING INDEX - {0x261C, 0x261C, prA}, // So WHITE LEFT POINTING INDEX - {0x261D, 0x261D, prN}, // So WHITE UP POINTING INDEX - {0x261E, 0x261E, prA}, // So WHITE RIGHT POINTING INDEX - {0x261F, 0x263F, prN}, // So [33] WHITE DOWN POINTING INDEX..MERCURY - {0x2640, 0x2640, prA}, // So FEMALE SIGN - {0x2641, 0x2641, prN}, // So EARTH - {0x2642, 0x2642, prA}, // So MALE SIGN - {0x2643, 0x2647, prN}, // So [5] JUPITER..PLUTO - {0x2648, 0x2653, prW}, // So [12] ARIES..PISCES - {0x2654, 0x265F, prN}, // So [12] WHITE CHESS KING..BLACK CHESS PAWN - {0x2660, 0x2661, prA}, // So [2] BLACK SPADE SUIT..WHITE HEART SUIT - {0x2662, 0x2662, prN}, // So WHITE DIAMOND SUIT - {0x2663, 0x2665, prA}, // So [3] BLACK CLUB SUIT..BLACK HEART SUIT - {0x2666, 0x2666, prN}, // So BLACK DIAMOND SUIT - {0x2667, 0x266A, prA}, // So [4] WHITE CLUB SUIT..EIGHTH NOTE - {0x266B, 0x266B, prN}, // So BEAMED EIGHTH NOTES - {0x266C, 0x266D, prA}, // So [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN - {0x266E, 0x266E, prN}, // So MUSIC NATURAL SIGN - {0x266F, 0x266F, prA}, // Sm MUSIC SHARP SIGN - {0x2670, 0x267E, prN}, // So [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN - {0x267F, 0x267F, prW}, // So WHEELCHAIR SYMBOL - {0x2680, 0x2692, prN}, // So [19] DIE FACE-1..HAMMER AND PICK - {0x2693, 0x2693, prW}, // So ANCHOR - {0x2694, 0x269D, prN}, // So [10] CROSSED SWORDS..OUTLINED WHITE STAR - {0x269E, 0x269F, prA}, // So [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT - {0x26A0, 0x26A0, prN}, // So WARNING SIGN - {0x26A1, 0x26A1, prW}, // So HIGH VOLTAGE SIGN - {0x26A2, 0x26A9, prN}, // So [8] DOUBLED FEMALE SIGN..HORIZONTAL MALE WITH STROKE SIGN - {0x26AA, 0x26AB, prW}, // So [2] MEDIUM WHITE CIRCLE..MEDIUM BLACK CIRCLE - {0x26AC, 0x26BC, prN}, // So [17] MEDIUM SMALL WHITE CIRCLE..SESQUIQUADRATE - {0x26BD, 0x26BE, prW}, // So [2] SOCCER BALL..BASEBALL - {0x26BF, 0x26BF, prA}, // So SQUARED KEY - {0x26C0, 0x26C3, prN}, // So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING - {0x26C4, 0x26C5, prW}, // So [2] SNOWMAN WITHOUT SNOW..SUN BEHIND CLOUD - {0x26C6, 0x26CD, prA}, // So [8] RAIN..DISABLED CAR - {0x26CE, 0x26CE, prW}, // So OPHIUCHUS - {0x26CF, 0x26D3, prA}, // So [5] PICK..CHAINS - {0x26D4, 0x26D4, prW}, // So NO ENTRY - {0x26D5, 0x26E1, prA}, // So [13] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..RESTRICTED LEFT ENTRY-2 - {0x26E2, 0x26E2, prN}, // So ASTRONOMICAL SYMBOL FOR URANUS - {0x26E3, 0x26E3, prA}, // So HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE - {0x26E4, 0x26E7, prN}, // So [4] PENTAGRAM..INVERTED PENTAGRAM - {0x26E8, 0x26E9, prA}, // So [2] BLACK CROSS ON SHIELD..SHINTO SHRINE - {0x26EA, 0x26EA, prW}, // So CHURCH - {0x26EB, 0x26F1, prA}, // So [7] CASTLE..UMBRELLA ON GROUND - {0x26F2, 0x26F3, prW}, // So [2] FOUNTAIN..FLAG IN HOLE - {0x26F4, 0x26F4, prA}, // So FERRY - {0x26F5, 0x26F5, prW}, // So SAILBOAT - {0x26F6, 0x26F9, prA}, // So [4] SQUARE FOUR CORNERS..PERSON WITH BALL - {0x26FA, 0x26FA, prW}, // So TENT - {0x26FB, 0x26FC, prA}, // So [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL - {0x26FD, 0x26FD, prW}, // So FUEL PUMP - {0x26FE, 0x26FF, prA}, // So [2] CUP ON BLACK SQUARE..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE - {0x2700, 0x2704, prN}, // So [5] BLACK SAFETY SCISSORS..WHITE SCISSORS - {0x2705, 0x2705, prW}, // So WHITE HEAVY CHECK MARK - {0x2706, 0x2709, prN}, // So [4] TELEPHONE LOCATION SIGN..ENVELOPE - {0x270A, 0x270B, prW}, // So [2] RAISED FIST..RAISED HAND - {0x270C, 0x2727, prN}, // So [28] VICTORY HAND..WHITE FOUR POINTED STAR - {0x2728, 0x2728, prW}, // So SPARKLES - {0x2729, 0x273C, prN}, // So [20] STRESS OUTLINED WHITE STAR..OPEN CENTRE TEARDROP-SPOKED ASTERISK - {0x273D, 0x273D, prA}, // So HEAVY TEARDROP-SPOKED ASTERISK - {0x273E, 0x274B, prN}, // So [14] SIX PETALLED BLACK AND WHITE FLORETTE..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - {0x274C, 0x274C, prW}, // So CROSS MARK - {0x274D, 0x274D, prN}, // So SHADOWED WHITE CIRCLE - {0x274E, 0x274E, prW}, // So NEGATIVE SQUARED CROSS MARK - {0x274F, 0x2752, prN}, // So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE - {0x2753, 0x2755, prW}, // So [3] BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT - {0x2756, 0x2756, prN}, // So BLACK DIAMOND MINUS WHITE X - {0x2757, 0x2757, prW}, // So HEAVY EXCLAMATION MARK SYMBOL - {0x2758, 0x2767, prN}, // So [16] LIGHT VERTICAL BAR..ROTATED FLORAL HEART BULLET - {0x2768, 0x2768, prN}, // Ps MEDIUM LEFT PARENTHESIS ORNAMENT - {0x2769, 0x2769, prN}, // Pe MEDIUM RIGHT PARENTHESIS ORNAMENT - {0x276A, 0x276A, prN}, // Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - {0x276B, 0x276B, prN}, // Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - {0x276C, 0x276C, prN}, // Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x276D, 0x276D, prN}, // Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x276E, 0x276E, prN}, // Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x276F, 0x276F, prN}, // Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x2770, 0x2770, prN}, // Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x2771, 0x2771, prN}, // Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x2772, 0x2772, prN}, // Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - {0x2773, 0x2773, prN}, // Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - {0x2774, 0x2774, prN}, // Ps MEDIUM LEFT CURLY BRACKET ORNAMENT - {0x2775, 0x2775, prN}, // Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT - {0x2776, 0x277F, prA}, // No [10] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED NUMBER TEN - {0x2780, 0x2793, prN}, // No [20] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN - {0x2794, 0x2794, prN}, // So HEAVY WIDE-HEADED RIGHTWARDS ARROW - {0x2795, 0x2797, prW}, // So [3] HEAVY PLUS SIGN..HEAVY DIVISION SIGN - {0x2798, 0x27AF, prN}, // So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - {0x27B0, 0x27B0, prW}, // So CURLY LOOP - {0x27B1, 0x27BE, prN}, // So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW - {0x27BF, 0x27BF, prW}, // So DOUBLE CURLY LOOP - {0x27C0, 0x27C4, prN}, // Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET - {0x27C5, 0x27C5, prN}, // Ps LEFT S-SHAPED BAG DELIMITER - {0x27C6, 0x27C6, prN}, // Pe RIGHT S-SHAPED BAG DELIMITER - {0x27C7, 0x27E5, prN}, // Sm [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK - {0x27E6, 0x27E6, prNa}, // Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET - {0x27E7, 0x27E7, prNa}, // Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET - {0x27E8, 0x27E8, prNa}, // Ps MATHEMATICAL LEFT ANGLE BRACKET - {0x27E9, 0x27E9, prNa}, // Pe MATHEMATICAL RIGHT ANGLE BRACKET - {0x27EA, 0x27EA, prNa}, // Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - {0x27EB, 0x27EB, prNa}, // Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - {0x27EC, 0x27EC, prNa}, // Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET - {0x27ED, 0x27ED, prNa}, // Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET - {0x27EE, 0x27EE, prN}, // Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS - {0x27EF, 0x27EF, prN}, // Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS - {0x27F0, 0x27FF, prN}, // Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW - {0x2800, 0x28FF, prN}, // So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 - {0x2900, 0x297F, prN}, // Sm [128] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..DOWN FISH TAIL - {0x2980, 0x2982, prN}, // Sm [3] TRIPLE VERTICAL BAR DELIMITER..Z NOTATION TYPE COLON - {0x2983, 0x2983, prN}, // Ps LEFT WHITE CURLY BRACKET - {0x2984, 0x2984, prN}, // Pe RIGHT WHITE CURLY BRACKET - {0x2985, 0x2985, prNa}, // Ps LEFT WHITE PARENTHESIS - {0x2986, 0x2986, prNa}, // Pe RIGHT WHITE PARENTHESIS - {0x2987, 0x2987, prN}, // Ps Z NOTATION LEFT IMAGE BRACKET - {0x2988, 0x2988, prN}, // Pe Z NOTATION RIGHT IMAGE BRACKET - {0x2989, 0x2989, prN}, // Ps Z NOTATION LEFT BINDING BRACKET - {0x298A, 0x298A, prN}, // Pe Z NOTATION RIGHT BINDING BRACKET - {0x298B, 0x298B, prN}, // Ps LEFT SQUARE BRACKET WITH UNDERBAR - {0x298C, 0x298C, prN}, // Pe RIGHT SQUARE BRACKET WITH UNDERBAR - {0x298D, 0x298D, prN}, // Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x298E, 0x298E, prN}, // Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x298F, 0x298F, prN}, // Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x2990, 0x2990, prN}, // Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x2991, 0x2991, prN}, // Ps LEFT ANGLE BRACKET WITH DOT - {0x2992, 0x2992, prN}, // Pe RIGHT ANGLE BRACKET WITH DOT - {0x2993, 0x2993, prN}, // Ps LEFT ARC LESS-THAN BRACKET - {0x2994, 0x2994, prN}, // Pe RIGHT ARC GREATER-THAN BRACKET - {0x2995, 0x2995, prN}, // Ps DOUBLE LEFT ARC GREATER-THAN BRACKET - {0x2996, 0x2996, prN}, // Pe DOUBLE RIGHT ARC LESS-THAN BRACKET - {0x2997, 0x2997, prN}, // Ps LEFT BLACK TORTOISE SHELL BRACKET - {0x2998, 0x2998, prN}, // Pe RIGHT BLACK TORTOISE SHELL BRACKET - {0x2999, 0x29D7, prN}, // Sm [63] DOTTED FENCE..BLACK HOURGLASS - {0x29D8, 0x29D8, prN}, // Ps LEFT WIGGLY FENCE - {0x29D9, 0x29D9, prN}, // Pe RIGHT WIGGLY FENCE - {0x29DA, 0x29DA, prN}, // Ps LEFT DOUBLE WIGGLY FENCE - {0x29DB, 0x29DB, prN}, // Pe RIGHT DOUBLE WIGGLY FENCE - {0x29DC, 0x29FB, prN}, // Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS - {0x29FC, 0x29FC, prN}, // Ps LEFT-POINTING CURVED ANGLE BRACKET - {0x29FD, 0x29FD, prN}, // Pe RIGHT-POINTING CURVED ANGLE BRACKET - {0x29FE, 0x29FF, prN}, // Sm [2] TINY..MINY - {0x2A00, 0x2AFF, prN}, // Sm [256] N-ARY CIRCLED DOT OPERATOR..N-ARY WHITE VERTICAL BAR - {0x2B00, 0x2B1A, prN}, // So [27] NORTH EAST WHITE ARROW..DOTTED SQUARE - {0x2B1B, 0x2B1C, prW}, // So [2] BLACK LARGE SQUARE..WHITE LARGE SQUARE - {0x2B1D, 0x2B2F, prN}, // So [19] BLACK VERY SMALL SQUARE..WHITE VERTICAL ELLIPSE - {0x2B30, 0x2B44, prN}, // Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET - {0x2B45, 0x2B46, prN}, // So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW - {0x2B47, 0x2B4C, prN}, // Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR - {0x2B4D, 0x2B4F, prN}, // So [3] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW - {0x2B50, 0x2B50, prW}, // So WHITE MEDIUM STAR - {0x2B51, 0x2B54, prN}, // So [4] BLACK SMALL STAR..WHITE RIGHT-POINTING PENTAGON - {0x2B55, 0x2B55, prW}, // So HEAVY LARGE CIRCLE - {0x2B56, 0x2B59, prA}, // So [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE - {0x2B5A, 0x2B73, prN}, // So [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR - {0x2B76, 0x2B95, prN}, // So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW - {0x2B97, 0x2BFF, prN}, // So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL - {0x2C00, 0x2C5F, prN}, // L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI - {0x2C60, 0x2C7B, prN}, // L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E - {0x2C7C, 0x2C7D, prN}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V - {0x2C7E, 0x2C7F, prN}, // Lu [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL - {0x2C80, 0x2CE4, prN}, // L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI - {0x2CE5, 0x2CEA, prN}, // So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA - {0x2CEB, 0x2CEE, prN}, // L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA - {0x2CEF, 0x2CF1, prN}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS - {0x2CF2, 0x2CF3, prN}, // L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI - {0x2CF9, 0x2CFC, prN}, // Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER - {0x2CFD, 0x2CFD, prN}, // No COPTIC FRACTION ONE HALF - {0x2CFE, 0x2CFF, prN}, // Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER - {0x2D00, 0x2D25, prN}, // Ll [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - {0x2D27, 0x2D27, prN}, // Ll GEORGIAN SMALL LETTER YN - {0x2D2D, 0x2D2D, prN}, // Ll GEORGIAN SMALL LETTER AEN - {0x2D30, 0x2D67, prN}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO - {0x2D6F, 0x2D6F, prN}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK - {0x2D70, 0x2D70, prN}, // Po TIFINAGH SEPARATOR MARK - {0x2D7F, 0x2D7F, prN}, // Mn TIFINAGH CONSONANT JOINER - {0x2D80, 0x2D96, prN}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE - {0x2DA0, 0x2DA6, prN}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO - {0x2DA8, 0x2DAE, prN}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO - {0x2DB0, 0x2DB6, prN}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO - {0x2DB8, 0x2DBE, prN}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO - {0x2DC0, 0x2DC6, prN}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO - {0x2DC8, 0x2DCE, prN}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO - {0x2DD0, 0x2DD6, prN}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO - {0x2DD8, 0x2DDE, prN}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - {0x2DE0, 0x2DFF, prN}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS - {0x2E00, 0x2E01, prN}, // Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER - {0x2E02, 0x2E02, prN}, // Pi LEFT SUBSTITUTION BRACKET - {0x2E03, 0x2E03, prN}, // Pf RIGHT SUBSTITUTION BRACKET - {0x2E04, 0x2E04, prN}, // Pi LEFT DOTTED SUBSTITUTION BRACKET - {0x2E05, 0x2E05, prN}, // Pf RIGHT DOTTED SUBSTITUTION BRACKET - {0x2E06, 0x2E08, prN}, // Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER - {0x2E09, 0x2E09, prN}, // Pi LEFT TRANSPOSITION BRACKET - {0x2E0A, 0x2E0A, prN}, // Pf RIGHT TRANSPOSITION BRACKET - {0x2E0B, 0x2E0B, prN}, // Po RAISED SQUARE - {0x2E0C, 0x2E0C, prN}, // Pi LEFT RAISED OMISSION BRACKET - {0x2E0D, 0x2E0D, prN}, // Pf RIGHT RAISED OMISSION BRACKET - {0x2E0E, 0x2E16, prN}, // Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE - {0x2E17, 0x2E17, prN}, // Pd DOUBLE OBLIQUE HYPHEN - {0x2E18, 0x2E19, prN}, // Po [2] INVERTED INTERROBANG..PALM BRANCH - {0x2E1A, 0x2E1A, prN}, // Pd HYPHEN WITH DIAERESIS - {0x2E1B, 0x2E1B, prN}, // Po TILDE WITH RING ABOVE - {0x2E1C, 0x2E1C, prN}, // Pi LEFT LOW PARAPHRASE BRACKET - {0x2E1D, 0x2E1D, prN}, // Pf RIGHT LOW PARAPHRASE BRACKET - {0x2E1E, 0x2E1F, prN}, // Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW - {0x2E20, 0x2E20, prN}, // Pi LEFT VERTICAL BAR WITH QUILL - {0x2E21, 0x2E21, prN}, // Pf RIGHT VERTICAL BAR WITH QUILL - {0x2E22, 0x2E22, prN}, // Ps TOP LEFT HALF BRACKET - {0x2E23, 0x2E23, prN}, // Pe TOP RIGHT HALF BRACKET - {0x2E24, 0x2E24, prN}, // Ps BOTTOM LEFT HALF BRACKET - {0x2E25, 0x2E25, prN}, // Pe BOTTOM RIGHT HALF BRACKET - {0x2E26, 0x2E26, prN}, // Ps LEFT SIDEWAYS U BRACKET - {0x2E27, 0x2E27, prN}, // Pe RIGHT SIDEWAYS U BRACKET - {0x2E28, 0x2E28, prN}, // Ps LEFT DOUBLE PARENTHESIS - {0x2E29, 0x2E29, prN}, // Pe RIGHT DOUBLE PARENTHESIS - {0x2E2A, 0x2E2E, prN}, // Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK - {0x2E2F, 0x2E2F, prN}, // Lm VERTICAL TILDE - {0x2E30, 0x2E39, prN}, // Po [10] RING POINT..TOP HALF SECTION SIGN - {0x2E3A, 0x2E3B, prN}, // Pd [2] TWO-EM DASH..THREE-EM DASH - {0x2E3C, 0x2E3F, prN}, // Po [4] STENOGRAPHIC FULL STOP..CAPITULUM - {0x2E40, 0x2E40, prN}, // Pd DOUBLE HYPHEN - {0x2E41, 0x2E41, prN}, // Po REVERSED COMMA - {0x2E42, 0x2E42, prN}, // Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK - {0x2E43, 0x2E4F, prN}, // Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER - {0x2E50, 0x2E51, prN}, // So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR - {0x2E52, 0x2E54, prN}, // Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK - {0x2E55, 0x2E55, prN}, // Ps LEFT SQUARE BRACKET WITH STROKE - {0x2E56, 0x2E56, prN}, // Pe RIGHT SQUARE BRACKET WITH STROKE - {0x2E57, 0x2E57, prN}, // Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E58, 0x2E58, prN}, // Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E59, 0x2E59, prN}, // Ps TOP HALF LEFT PARENTHESIS - {0x2E5A, 0x2E5A, prN}, // Pe TOP HALF RIGHT PARENTHESIS - {0x2E5B, 0x2E5B, prN}, // Ps BOTTOM HALF LEFT PARENTHESIS - {0x2E5C, 0x2E5C, prN}, // Pe BOTTOM HALF RIGHT PARENTHESIS - {0x2E5D, 0x2E5D, prN}, // Pd OBLIQUE HYPHEN - {0x2E80, 0x2E99, prW}, // So [26] CJK RADICAL REPEAT..CJK RADICAL RAP - {0x2E9B, 0x2EF3, prW}, // So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE - {0x2F00, 0x2FD5, prW}, // So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE - {0x2FF0, 0x2FFB, prW}, // So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID - {0x3000, 0x3000, prF}, // Zs IDEOGRAPHIC SPACE - {0x3001, 0x3003, prW}, // Po [3] IDEOGRAPHIC COMMA..DITTO MARK - {0x3004, 0x3004, prW}, // So JAPANESE INDUSTRIAL STANDARD SYMBOL - {0x3005, 0x3005, prW}, // Lm IDEOGRAPHIC ITERATION MARK - {0x3006, 0x3006, prW}, // Lo IDEOGRAPHIC CLOSING MARK - {0x3007, 0x3007, prW}, // Nl IDEOGRAPHIC NUMBER ZERO - {0x3008, 0x3008, prW}, // Ps LEFT ANGLE BRACKET - {0x3009, 0x3009, prW}, // Pe RIGHT ANGLE BRACKET - {0x300A, 0x300A, prW}, // Ps LEFT DOUBLE ANGLE BRACKET - {0x300B, 0x300B, prW}, // Pe RIGHT DOUBLE ANGLE BRACKET - {0x300C, 0x300C, prW}, // Ps LEFT CORNER BRACKET - {0x300D, 0x300D, prW}, // Pe RIGHT CORNER BRACKET - {0x300E, 0x300E, prW}, // Ps LEFT WHITE CORNER BRACKET - {0x300F, 0x300F, prW}, // Pe RIGHT WHITE CORNER BRACKET - {0x3010, 0x3010, prW}, // Ps LEFT BLACK LENTICULAR BRACKET - {0x3011, 0x3011, prW}, // Pe RIGHT BLACK LENTICULAR BRACKET - {0x3012, 0x3013, prW}, // So [2] POSTAL MARK..GETA MARK - {0x3014, 0x3014, prW}, // Ps LEFT TORTOISE SHELL BRACKET - {0x3015, 0x3015, prW}, // Pe RIGHT TORTOISE SHELL BRACKET - {0x3016, 0x3016, prW}, // Ps LEFT WHITE LENTICULAR BRACKET - {0x3017, 0x3017, prW}, // Pe RIGHT WHITE LENTICULAR BRACKET - {0x3018, 0x3018, prW}, // Ps LEFT WHITE TORTOISE SHELL BRACKET - {0x3019, 0x3019, prW}, // Pe RIGHT WHITE TORTOISE SHELL BRACKET - {0x301A, 0x301A, prW}, // Ps LEFT WHITE SQUARE BRACKET - {0x301B, 0x301B, prW}, // Pe RIGHT WHITE SQUARE BRACKET - {0x301C, 0x301C, prW}, // Pd WAVE DASH - {0x301D, 0x301D, prW}, // Ps REVERSED DOUBLE PRIME QUOTATION MARK - {0x301E, 0x301F, prW}, // Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK - {0x3020, 0x3020, prW}, // So POSTAL MARK FACE - {0x3021, 0x3029, prW}, // Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE - {0x302A, 0x302D, prW}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK - {0x302E, 0x302F, prW}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK - {0x3030, 0x3030, prW}, // Pd WAVY DASH - {0x3031, 0x3035, prW}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF - {0x3036, 0x3037, prW}, // So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL - {0x3038, 0x303A, prW}, // Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY - {0x303B, 0x303B, prW}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK - {0x303C, 0x303C, prW}, // Lo MASU MARK - {0x303D, 0x303D, prW}, // Po PART ALTERNATION MARK - {0x303E, 0x303E, prW}, // So IDEOGRAPHIC VARIATION INDICATOR - {0x303F, 0x303F, prN}, // So IDEOGRAPHIC HALF FILL SPACE - {0x3041, 0x3096, prW}, // Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE - {0x3099, 0x309A, prW}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309B, 0x309C, prW}, // Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309D, 0x309E, prW}, // Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK - {0x309F, 0x309F, prW}, // Lo HIRAGANA DIGRAPH YORI - {0x30A0, 0x30A0, prW}, // Pd KATAKANA-HIRAGANA DOUBLE HYPHEN - {0x30A1, 0x30FA, prW}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO - {0x30FB, 0x30FB, prW}, // Po KATAKANA MIDDLE DOT - {0x30FC, 0x30FE, prW}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK - {0x30FF, 0x30FF, prW}, // Lo KATAKANA DIGRAPH KOTO - {0x3105, 0x312F, prW}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN - {0x3131, 0x318E, prW}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE - {0x3190, 0x3191, prW}, // So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK - {0x3192, 0x3195, prW}, // No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK - {0x3196, 0x319F, prW}, // So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK - {0x31A0, 0x31BF, prW}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH - {0x31C0, 0x31E3, prW}, // So [36] CJK STROKE T..CJK STROKE Q - {0x31F0, 0x31FF, prW}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO - {0x3200, 0x321E, prW}, // So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU - {0x3220, 0x3229, prW}, // No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN - {0x322A, 0x3247, prW}, // So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO - {0x3248, 0x324F, prA}, // No [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE - {0x3250, 0x3250, prW}, // So PARTNERSHIP SIGN - {0x3251, 0x325F, prW}, // No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE - {0x3260, 0x327F, prW}, // So [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL - {0x3280, 0x3289, prW}, // No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN - {0x328A, 0x32B0, prW}, // So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT - {0x32B1, 0x32BF, prW}, // No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY - {0x32C0, 0x32FF, prW}, // So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA - {0x3300, 0x33FF, prW}, // So [256] SQUARE APAATO..SQUARE GAL - {0x3400, 0x4DBF, prW}, // Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF - {0x4DC0, 0x4DFF, prN}, // So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION - {0x4E00, 0x9FFF, prW}, // Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF - {0xA000, 0xA014, prW}, // Lo [21] YI SYLLABLE IT..YI SYLLABLE E - {0xA015, 0xA015, prW}, // Lm YI SYLLABLE WU - {0xA016, 0xA48C, prW}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR - {0xA490, 0xA4C6, prW}, // So [55] YI RADICAL QOT..YI RADICAL KE - {0xA4D0, 0xA4F7, prN}, // Lo [40] LISU LETTER BA..LISU LETTER OE - {0xA4F8, 0xA4FD, prN}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU - {0xA4FE, 0xA4FF, prN}, // Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP - {0xA500, 0xA60B, prN}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG - {0xA60C, 0xA60C, prN}, // Lm VAI SYLLABLE LENGTHENER - {0xA60D, 0xA60F, prN}, // Po [3] VAI COMMA..VAI QUESTION MARK - {0xA610, 0xA61F, prN}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG - {0xA620, 0xA629, prN}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE - {0xA62A, 0xA62B, prN}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO - {0xA640, 0xA66D, prN}, // L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O - {0xA66E, 0xA66E, prN}, // Lo CYRILLIC LETTER MULTIOCULAR O - {0xA66F, 0xA66F, prN}, // Mn COMBINING CYRILLIC VZMET - {0xA670, 0xA672, prN}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN - {0xA673, 0xA673, prN}, // Po SLAVONIC ASTERISK - {0xA674, 0xA67D, prN}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK - {0xA67E, 0xA67E, prN}, // Po CYRILLIC KAVYKA - {0xA67F, 0xA67F, prN}, // Lm CYRILLIC PAYEROK - {0xA680, 0xA69B, prN}, // L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O - {0xA69C, 0xA69D, prN}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN - {0xA69E, 0xA69F, prN}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E - {0xA6A0, 0xA6E5, prN}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI - {0xA6E6, 0xA6EF, prN}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM - {0xA6F0, 0xA6F1, prN}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS - {0xA6F2, 0xA6F7, prN}, // Po [6] BAMUM NJAEMLI..BAMUM QUESTION MARK - {0xA700, 0xA716, prN}, // Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR - {0xA717, 0xA71F, prN}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK - {0xA720, 0xA721, prN}, // Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE - {0xA722, 0xA76F, prN}, // L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON - {0xA770, 0xA770, prN}, // Lm MODIFIER LETTER US - {0xA771, 0xA787, prN}, // L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T - {0xA788, 0xA788, prN}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - {0xA789, 0xA78A, prN}, // Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN - {0xA78B, 0xA78E, prN}, // L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - {0xA78F, 0xA78F, prN}, // Lo LATIN LETTER SINOLOGICAL DOT - {0xA790, 0xA7CA, prN}, // L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY - {0xA7D0, 0xA7D1, prN}, // L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G - {0xA7D3, 0xA7D3, prN}, // Ll LATIN SMALL LETTER DOUBLE THORN - {0xA7D5, 0xA7D9, prN}, // L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S - {0xA7F2, 0xA7F4, prN}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q - {0xA7F5, 0xA7F6, prN}, // L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H - {0xA7F7, 0xA7F7, prN}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - {0xA7F8, 0xA7F9, prN}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE - {0xA7FA, 0xA7FA, prN}, // Ll LATIN LETTER SMALL CAPITAL TURNED M - {0xA7FB, 0xA7FF, prN}, // Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M - {0xA800, 0xA801, prN}, // Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I - {0xA802, 0xA802, prN}, // Mn SYLOTI NAGRI SIGN DVISVARA - {0xA803, 0xA805, prN}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O - {0xA806, 0xA806, prN}, // Mn SYLOTI NAGRI SIGN HASANTA - {0xA807, 0xA80A, prN}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO - {0xA80B, 0xA80B, prN}, // Mn SYLOTI NAGRI SIGN ANUSVARA - {0xA80C, 0xA822, prN}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO - {0xA823, 0xA824, prN}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I - {0xA825, 0xA826, prN}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E - {0xA827, 0xA827, prN}, // Mc SYLOTI NAGRI VOWEL SIGN OO - {0xA828, 0xA82B, prN}, // So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 - {0xA82C, 0xA82C, prN}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA - {0xA830, 0xA835, prN}, // No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS - {0xA836, 0xA837, prN}, // So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK - {0xA838, 0xA838, prN}, // Sc NORTH INDIC RUPEE MARK - {0xA839, 0xA839, prN}, // So NORTH INDIC QUANTITY MARK - {0xA840, 0xA873, prN}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU - {0xA874, 0xA877, prN}, // Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD - {0xA880, 0xA881, prN}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - {0xA882, 0xA8B3, prN}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - {0xA8B4, 0xA8C3, prN}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU - {0xA8C4, 0xA8C5, prN}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - {0xA8CE, 0xA8CF, prN}, // Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA - {0xA8D0, 0xA8D9, prN}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - {0xA8E0, 0xA8F1, prN}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - {0xA8F2, 0xA8F7, prN}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA - {0xA8F8, 0xA8FA, prN}, // Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET - {0xA8FB, 0xA8FB, prN}, // Lo DEVANAGARI HEADSTROKE - {0xA8FC, 0xA8FC, prN}, // Po DEVANAGARI SIGN SIDDHAM - {0xA8FD, 0xA8FE, prN}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY - {0xA8FF, 0xA8FF, prN}, // Mn DEVANAGARI VOWEL SIGN AY - {0xA900, 0xA909, prN}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE - {0xA90A, 0xA925, prN}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO - {0xA926, 0xA92D, prN}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - {0xA92E, 0xA92F, prN}, // Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA - {0xA930, 0xA946, prN}, // Lo [23] REJANG LETTER KA..REJANG LETTER A - {0xA947, 0xA951, prN}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R - {0xA952, 0xA953, prN}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA - {0xA95F, 0xA95F, prN}, // Po REJANG SECTION MARK - {0xA960, 0xA97C, prW}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH - {0xA980, 0xA982, prN}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR - {0xA983, 0xA983, prN}, // Mc JAVANESE SIGN WIGNYAN - {0xA984, 0xA9B2, prN}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA - {0xA9B3, 0xA9B3, prN}, // Mn JAVANESE SIGN CECAK TELU - {0xA9B4, 0xA9B5, prN}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG - {0xA9B6, 0xA9B9, prN}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT - {0xA9BA, 0xA9BB, prN}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE - {0xA9BC, 0xA9BD, prN}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET - {0xA9BE, 0xA9C0, prN}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON - {0xA9C1, 0xA9CD, prN}, // Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH - {0xA9CF, 0xA9CF, prN}, // Lm JAVANESE PANGRANGKEP - {0xA9D0, 0xA9D9, prN}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE - {0xA9DE, 0xA9DF, prN}, // Po [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN - {0xA9E0, 0xA9E4, prN}, // Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA - {0xA9E5, 0xA9E5, prN}, // Mn MYANMAR SIGN SHAN SAW - {0xA9E6, 0xA9E6, prN}, // Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION - {0xA9E7, 0xA9EF, prN}, // Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA - {0xA9F0, 0xA9F9, prN}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE - {0xA9FA, 0xA9FE, prN}, // Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA - {0xAA00, 0xAA28, prN}, // Lo [41] CHAM LETTER A..CHAM LETTER HA - {0xAA29, 0xAA2E, prN}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE - {0xAA2F, 0xAA30, prN}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI - {0xAA31, 0xAA32, prN}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE - {0xAA33, 0xAA34, prN}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA - {0xAA35, 0xAA36, prN}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA - {0xAA40, 0xAA42, prN}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG - {0xAA43, 0xAA43, prN}, // Mn CHAM CONSONANT SIGN FINAL NG - {0xAA44, 0xAA4B, prN}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS - {0xAA4C, 0xAA4C, prN}, // Mn CHAM CONSONANT SIGN FINAL M - {0xAA4D, 0xAA4D, prN}, // Mc CHAM CONSONANT SIGN FINAL H - {0xAA50, 0xAA59, prN}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE - {0xAA5C, 0xAA5F, prN}, // Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA - {0xAA60, 0xAA6F, prN}, // Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA - {0xAA70, 0xAA70, prN}, // Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION - {0xAA71, 0xAA76, prN}, // Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM - {0xAA77, 0xAA79, prN}, // So [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO - {0xAA7A, 0xAA7A, prN}, // Lo MYANMAR LETTER AITON RA - {0xAA7B, 0xAA7B, prN}, // Mc MYANMAR SIGN PAO KAREN TONE - {0xAA7C, 0xAA7C, prN}, // Mn MYANMAR SIGN TAI LAING TONE-2 - {0xAA7D, 0xAA7D, prN}, // Mc MYANMAR SIGN TAI LAING TONE-5 - {0xAA7E, 0xAA7F, prN}, // Lo [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA - {0xAA80, 0xAAAF, prN}, // Lo [48] TAI VIET LETTER LOW KO..TAI VIET LETTER HIGH O - {0xAAB0, 0xAAB0, prN}, // Mn TAI VIET MAI KANG - {0xAAB1, 0xAAB1, prN}, // Lo TAI VIET VOWEL AA - {0xAAB2, 0xAAB4, prN}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U - {0xAAB5, 0xAAB6, prN}, // Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O - {0xAAB7, 0xAAB8, prN}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA - {0xAAB9, 0xAABD, prN}, // Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN - {0xAABE, 0xAABF, prN}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK - {0xAAC0, 0xAAC0, prN}, // Lo TAI VIET TONE MAI NUENG - {0xAAC1, 0xAAC1, prN}, // Mn TAI VIET TONE MAI THO - {0xAAC2, 0xAAC2, prN}, // Lo TAI VIET TONE MAI SONG - {0xAADB, 0xAADC, prN}, // Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG - {0xAADD, 0xAADD, prN}, // Lm TAI VIET SYMBOL SAM - {0xAADE, 0xAADF, prN}, // Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI - {0xAAE0, 0xAAEA, prN}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA - {0xAAEB, 0xAAEB, prN}, // Mc MEETEI MAYEK VOWEL SIGN II - {0xAAEC, 0xAAED, prN}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI - {0xAAEE, 0xAAEF, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU - {0xAAF0, 0xAAF1, prN}, // Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM - {0xAAF2, 0xAAF2, prN}, // Lo MEETEI MAYEK ANJI - {0xAAF3, 0xAAF4, prN}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK - {0xAAF5, 0xAAF5, prN}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA - {0xAAF6, 0xAAF6, prN}, // Mn MEETEI MAYEK VIRAMA - {0xAB01, 0xAB06, prN}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO - {0xAB09, 0xAB0E, prN}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO - {0xAB11, 0xAB16, prN}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO - {0xAB20, 0xAB26, prN}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO - {0xAB28, 0xAB2E, prN}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO - {0xAB30, 0xAB5A, prN}, // Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG - {0xAB5B, 0xAB5B, prN}, // Sk MODIFIER BREVE WITH INVERTED BREVE - {0xAB5C, 0xAB5F, prN}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK - {0xAB60, 0xAB68, prN}, // Ll [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE - {0xAB69, 0xAB69, prN}, // Lm MODIFIER LETTER SMALL TURNED W - {0xAB6A, 0xAB6B, prN}, // Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK - {0xAB70, 0xABBF, prN}, // Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA - {0xABC0, 0xABE2, prN}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM - {0xABE3, 0xABE4, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP - {0xABE5, 0xABE5, prN}, // Mn MEETEI MAYEK VOWEL SIGN ANAP - {0xABE6, 0xABE7, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP - {0xABE8, 0xABE8, prN}, // Mn MEETEI MAYEK VOWEL SIGN UNAP - {0xABE9, 0xABEA, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG - {0xABEB, 0xABEB, prN}, // Po MEETEI MAYEK CHEIKHEI - {0xABEC, 0xABEC, prN}, // Mc MEETEI MAYEK LUM IYEK - {0xABED, 0xABED, prN}, // Mn MEETEI MAYEK APUN IYEK - {0xABF0, 0xABF9, prN}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE - {0xAC00, 0xD7A3, prW}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH - {0xD7B0, 0xD7C6, prN}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E - {0xD7CB, 0xD7FB, prN}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH - {0xD800, 0xDB7F, prN}, // Cs [896] <surrogate-D800>..<surrogate-DB7F> - {0xDB80, 0xDBFF, prN}, // Cs [128] <surrogate-DB80>..<surrogate-DBFF> - {0xDC00, 0xDFFF, prN}, // Cs [1024] <surrogate-DC00>..<surrogate-DFFF> - {0xE000, 0xF8FF, prA}, // Co [6400] <private-use-E000>..<private-use-F8FF> - {0xF900, 0xFA6D, prW}, // Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D - {0xFA6E, 0xFA6F, prW}, // Cn [2] <reserved-FA6E>..<reserved-FA6F> - {0xFA70, 0xFAD9, prW}, // Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 - {0xFADA, 0xFAFF, prW}, // Cn [38] <reserved-FADA>..<reserved-FAFF> - {0xFB00, 0xFB06, prN}, // Ll [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST - {0xFB13, 0xFB17, prN}, // Ll [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - {0xFB1D, 0xFB1D, prN}, // Lo HEBREW LETTER YOD WITH HIRIQ - {0xFB1E, 0xFB1E, prN}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA - {0xFB1F, 0xFB28, prN}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV - {0xFB29, 0xFB29, prN}, // Sm HEBREW LETTER ALTERNATIVE PLUS SIGN - {0xFB2A, 0xFB36, prN}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH - {0xFB38, 0xFB3C, prN}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH - {0xFB3E, 0xFB3E, prN}, // Lo HEBREW LETTER MEM WITH DAGESH - {0xFB40, 0xFB41, prN}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH - {0xFB43, 0xFB44, prN}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH - {0xFB46, 0xFB4F, prN}, // Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED - {0xFB50, 0xFBB1, prN}, // Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM - {0xFBB2, 0xFBC2, prN}, // Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE - {0xFBD3, 0xFD3D, prN}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM - {0xFD3E, 0xFD3E, prN}, // Pe ORNATE LEFT PARENTHESIS - {0xFD3F, 0xFD3F, prN}, // Ps ORNATE RIGHT PARENTHESIS - {0xFD40, 0xFD4F, prN}, // So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH - {0xFD50, 0xFD8F, prN}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM - {0xFD92, 0xFDC7, prN}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM - {0xFDCF, 0xFDCF, prN}, // So ARABIC LIGATURE SALAAMUHU ALAYNAA - {0xFDF0, 0xFDFB, prN}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU - {0xFDFC, 0xFDFC, prN}, // Sc RIAL SIGN - {0xFDFD, 0xFDFF, prN}, // So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL - {0xFE00, 0xFE0F, prA}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 - {0xFE10, 0xFE16, prW}, // Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK - {0xFE17, 0xFE17, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - {0xFE18, 0xFE18, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET - {0xFE19, 0xFE19, prW}, // Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS - {0xFE20, 0xFE2F, prN}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF - {0xFE30, 0xFE30, prW}, // Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - {0xFE31, 0xFE32, prW}, // Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH - {0xFE33, 0xFE34, prW}, // Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - {0xFE35, 0xFE35, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - {0xFE36, 0xFE36, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - {0xFE37, 0xFE37, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - {0xFE38, 0xFE38, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - {0xFE39, 0xFE39, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - {0xFE3A, 0xFE3A, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - {0xFE3B, 0xFE3B, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - {0xFE3C, 0xFE3C, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - {0xFE3D, 0xFE3D, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - {0xFE3E, 0xFE3E, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - {0xFE3F, 0xFE3F, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - {0xFE40, 0xFE40, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - {0xFE41, 0xFE41, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - {0xFE42, 0xFE42, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - {0xFE43, 0xFE43, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - {0xFE44, 0xFE44, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - {0xFE45, 0xFE46, prW}, // Po [2] SESAME DOT..WHITE SESAME DOT - {0xFE47, 0xFE47, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - {0xFE48, 0xFE48, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - {0xFE49, 0xFE4C, prW}, // Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE - {0xFE4D, 0xFE4F, prW}, // Pc [3] DASHED LOW LINE..WAVY LOW LINE - {0xFE50, 0xFE52, prW}, // Po [3] SMALL COMMA..SMALL FULL STOP - {0xFE54, 0xFE57, prW}, // Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK - {0xFE58, 0xFE58, prW}, // Pd SMALL EM DASH - {0xFE59, 0xFE59, prW}, // Ps SMALL LEFT PARENTHESIS - {0xFE5A, 0xFE5A, prW}, // Pe SMALL RIGHT PARENTHESIS - {0xFE5B, 0xFE5B, prW}, // Ps SMALL LEFT CURLY BRACKET - {0xFE5C, 0xFE5C, prW}, // Pe SMALL RIGHT CURLY BRACKET - {0xFE5D, 0xFE5D, prW}, // Ps SMALL LEFT TORTOISE SHELL BRACKET - {0xFE5E, 0xFE5E, prW}, // Pe SMALL RIGHT TORTOISE SHELL BRACKET - {0xFE5F, 0xFE61, prW}, // Po [3] SMALL NUMBER SIGN..SMALL ASTERISK - {0xFE62, 0xFE62, prW}, // Sm SMALL PLUS SIGN - {0xFE63, 0xFE63, prW}, // Pd SMALL HYPHEN-MINUS - {0xFE64, 0xFE66, prW}, // Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN - {0xFE68, 0xFE68, prW}, // Po SMALL REVERSE SOLIDUS - {0xFE69, 0xFE69, prW}, // Sc SMALL DOLLAR SIGN - {0xFE6A, 0xFE6B, prW}, // Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT - {0xFE70, 0xFE74, prN}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM - {0xFE76, 0xFEFC, prN}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - {0xFEFF, 0xFEFF, prN}, // Cf ZERO WIDTH NO-BREAK SPACE - {0xFF01, 0xFF03, prF}, // Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN - {0xFF04, 0xFF04, prF}, // Sc FULLWIDTH DOLLAR SIGN - {0xFF05, 0xFF07, prF}, // Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE - {0xFF08, 0xFF08, prF}, // Ps FULLWIDTH LEFT PARENTHESIS - {0xFF09, 0xFF09, prF}, // Pe FULLWIDTH RIGHT PARENTHESIS - {0xFF0A, 0xFF0A, prF}, // Po FULLWIDTH ASTERISK - {0xFF0B, 0xFF0B, prF}, // Sm FULLWIDTH PLUS SIGN - {0xFF0C, 0xFF0C, prF}, // Po FULLWIDTH COMMA - {0xFF0D, 0xFF0D, prF}, // Pd FULLWIDTH HYPHEN-MINUS - {0xFF0E, 0xFF0F, prF}, // Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS - {0xFF10, 0xFF19, prF}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE - {0xFF1A, 0xFF1B, prF}, // Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON - {0xFF1C, 0xFF1E, prF}, // Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN - {0xFF1F, 0xFF20, prF}, // Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT - {0xFF21, 0xFF3A, prF}, // Lu [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - {0xFF3B, 0xFF3B, prF}, // Ps FULLWIDTH LEFT SQUARE BRACKET - {0xFF3C, 0xFF3C, prF}, // Po FULLWIDTH REVERSE SOLIDUS - {0xFF3D, 0xFF3D, prF}, // Pe FULLWIDTH RIGHT SQUARE BRACKET - {0xFF3E, 0xFF3E, prF}, // Sk FULLWIDTH CIRCUMFLEX ACCENT - {0xFF3F, 0xFF3F, prF}, // Pc FULLWIDTH LOW LINE - {0xFF40, 0xFF40, prF}, // Sk FULLWIDTH GRAVE ACCENT - {0xFF41, 0xFF5A, prF}, // Ll [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - {0xFF5B, 0xFF5B, prF}, // Ps FULLWIDTH LEFT CURLY BRACKET - {0xFF5C, 0xFF5C, prF}, // Sm FULLWIDTH VERTICAL LINE - {0xFF5D, 0xFF5D, prF}, // Pe FULLWIDTH RIGHT CURLY BRACKET - {0xFF5E, 0xFF5E, prF}, // Sm FULLWIDTH TILDE - {0xFF5F, 0xFF5F, prF}, // Ps FULLWIDTH LEFT WHITE PARENTHESIS - {0xFF60, 0xFF60, prF}, // Pe FULLWIDTH RIGHT WHITE PARENTHESIS - {0xFF61, 0xFF61, prH}, // Po HALFWIDTH IDEOGRAPHIC FULL STOP - {0xFF62, 0xFF62, prH}, // Ps HALFWIDTH LEFT CORNER BRACKET - {0xFF63, 0xFF63, prH}, // Pe HALFWIDTH RIGHT CORNER BRACKET - {0xFF64, 0xFF65, prH}, // Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT - {0xFF66, 0xFF6F, prH}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU - {0xFF70, 0xFF70, prH}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - {0xFF71, 0xFF9D, prH}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - {0xFF9E, 0xFF9F, prH}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - {0xFFA0, 0xFFBE, prH}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH - {0xFFC2, 0xFFC7, prH}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E - {0xFFCA, 0xFFCF, prH}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE - {0xFFD2, 0xFFD7, prH}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU - {0xFFDA, 0xFFDC, prH}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - {0xFFE0, 0xFFE1, prF}, // Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN - {0xFFE2, 0xFFE2, prF}, // Sm FULLWIDTH NOT SIGN - {0xFFE3, 0xFFE3, prF}, // Sk FULLWIDTH MACRON - {0xFFE4, 0xFFE4, prF}, // So FULLWIDTH BROKEN BAR - {0xFFE5, 0xFFE6, prF}, // Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN - {0xFFE8, 0xFFE8, prH}, // So HALFWIDTH FORMS LIGHT VERTICAL - {0xFFE9, 0xFFEC, prH}, // Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW - {0xFFED, 0xFFEE, prH}, // So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE - {0xFFF9, 0xFFFB, prN}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR - {0xFFFC, 0xFFFC, prN}, // So OBJECT REPLACEMENT CHARACTER - {0xFFFD, 0xFFFD, prA}, // So REPLACEMENT CHARACTER - {0x10000, 0x1000B, prN}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE - {0x1000D, 0x10026, prN}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO - {0x10028, 0x1003A, prN}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO - {0x1003C, 0x1003D, prN}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE - {0x1003F, 0x1004D, prN}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO - {0x10050, 0x1005D, prN}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 - {0x10080, 0x100FA, prN}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - {0x10100, 0x10102, prN}, // Po [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK - {0x10107, 0x10133, prN}, // No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND - {0x10137, 0x1013F, prN}, // So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT - {0x10140, 0x10174, prN}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS - {0x10175, 0x10178, prN}, // No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN - {0x10179, 0x10189, prN}, // So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN - {0x1018A, 0x1018B, prN}, // No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN - {0x1018C, 0x1018E, prN}, // So [3] GREEK SINUSOID SIGN..NOMISMA SIGN - {0x10190, 0x1019C, prN}, // So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL - {0x101A0, 0x101A0, prN}, // So GREEK SYMBOL TAU RHO - {0x101D0, 0x101FC, prN}, // So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND - {0x101FD, 0x101FD, prN}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE - {0x10280, 0x1029C, prN}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X - {0x102A0, 0x102D0, prN}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 - {0x102E0, 0x102E0, prN}, // Mn COPTIC EPACT THOUSANDS MARK - {0x102E1, 0x102FB, prN}, // No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED - {0x10300, 0x1031F, prN}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS - {0x10320, 0x10323, prN}, // No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY - {0x1032D, 0x1032F, prN}, // Lo [3] OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE - {0x10330, 0x10340, prN}, // Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA - {0x10341, 0x10341, prN}, // Nl GOTHIC LETTER NINETY - {0x10342, 0x10349, prN}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL - {0x1034A, 0x1034A, prN}, // Nl GOTHIC LETTER NINE HUNDRED - {0x10350, 0x10375, prN}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA - {0x10376, 0x1037A, prN}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII - {0x10380, 0x1039D, prN}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU - {0x1039F, 0x1039F, prN}, // Po UGARITIC WORD DIVIDER - {0x103A0, 0x103C3, prN}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA - {0x103C8, 0x103CF, prN}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH - {0x103D0, 0x103D0, prN}, // Po OLD PERSIAN WORD DIVIDER - {0x103D1, 0x103D5, prN}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - {0x10400, 0x1044F, prN}, // L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - {0x10450, 0x1047F, prN}, // Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW - {0x10480, 0x1049D, prN}, // Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO - {0x104A0, 0x104A9, prN}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - {0x104B0, 0x104D3, prN}, // Lu [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - {0x104D8, 0x104FB, prN}, // Ll [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - {0x10500, 0x10527, prN}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - {0x10530, 0x10563, prN}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - {0x1056F, 0x1056F, prN}, // Po CAUCASIAN ALBANIAN CITATION MARK - {0x10570, 0x1057A, prN}, // Lu [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA - {0x1057C, 0x1058A, prN}, // Lu [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE - {0x1058C, 0x10592, prN}, // Lu [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE - {0x10594, 0x10595, prN}, // Lu [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE - {0x10597, 0x105A1, prN}, // Ll [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA - {0x105A3, 0x105B1, prN}, // Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE - {0x105B3, 0x105B9, prN}, // Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE - {0x105BB, 0x105BC, prN}, // Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE - {0x10600, 0x10736, prN}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 - {0x10740, 0x10755, prN}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE - {0x10760, 0x10767, prN}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 - {0x10780, 0x10785, prN}, // Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK - {0x10787, 0x107B0, prN}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK - {0x107B2, 0x107BA, prN}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL - {0x10800, 0x10805, prN}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA - {0x10808, 0x10808, prN}, // Lo CYPRIOT SYLLABLE JO - {0x1080A, 0x10835, prN}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO - {0x10837, 0x10838, prN}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE - {0x1083C, 0x1083C, prN}, // Lo CYPRIOT SYLLABLE ZA - {0x1083F, 0x1083F, prN}, // Lo CYPRIOT SYLLABLE ZO - {0x10840, 0x10855, prN}, // Lo [22] IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW - {0x10857, 0x10857, prN}, // Po IMPERIAL ARAMAIC SECTION SIGN - {0x10858, 0x1085F, prN}, // No [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND - {0x10860, 0x10876, prN}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW - {0x10877, 0x10878, prN}, // So [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON - {0x10879, 0x1087F, prN}, // No [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY - {0x10880, 0x1089E, prN}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW - {0x108A7, 0x108AF, prN}, // No [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED - {0x108E0, 0x108F2, prN}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH - {0x108F4, 0x108F5, prN}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW - {0x108FB, 0x108FF, prN}, // No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED - {0x10900, 0x10915, prN}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU - {0x10916, 0x1091B, prN}, // No [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE - {0x1091F, 0x1091F, prN}, // Po PHOENICIAN WORD SEPARATOR - {0x10920, 0x10939, prN}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C - {0x1093F, 0x1093F, prN}, // Po LYDIAN TRIANGULAR MARK - {0x10980, 0x1099F, prN}, // Lo [32] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 - {0x109A0, 0x109B7, prN}, // Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA - {0x109BC, 0x109BD, prN}, // No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF - {0x109BE, 0x109BF, prN}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN - {0x109C0, 0x109CF, prN}, // No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY - {0x109D2, 0x109FF, prN}, // No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS - {0x10A00, 0x10A00, prN}, // Lo KHAROSHTHI LETTER A - {0x10A01, 0x10A03, prN}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R - {0x10A05, 0x10A06, prN}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O - {0x10A0C, 0x10A0F, prN}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - {0x10A10, 0x10A13, prN}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA - {0x10A15, 0x10A17, prN}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA - {0x10A19, 0x10A35, prN}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA - {0x10A38, 0x10A3A, prN}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW - {0x10A3F, 0x10A3F, prN}, // Mn KHAROSHTHI VIRAMA - {0x10A40, 0x10A48, prN}, // No [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF - {0x10A50, 0x10A58, prN}, // Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES - {0x10A60, 0x10A7C, prN}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH - {0x10A7D, 0x10A7E, prN}, // No [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY - {0x10A7F, 0x10A7F, prN}, // Po OLD SOUTH ARABIAN NUMERIC INDICATOR - {0x10A80, 0x10A9C, prN}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH - {0x10A9D, 0x10A9F, prN}, // No [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY - {0x10AC0, 0x10AC7, prN}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW - {0x10AC8, 0x10AC8, prN}, // So MANICHAEAN SIGN UD - {0x10AC9, 0x10AE4, prN}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW - {0x10AE5, 0x10AE6, prN}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW - {0x10AEB, 0x10AEF, prN}, // No [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED - {0x10AF0, 0x10AF6, prN}, // Po [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER - {0x10B00, 0x10B35, prN}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE - {0x10B39, 0x10B3F, prN}, // Po [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION - {0x10B40, 0x10B55, prN}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW - {0x10B58, 0x10B5F, prN}, // No [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND - {0x10B60, 0x10B72, prN}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW - {0x10B78, 0x10B7F, prN}, // No [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND - {0x10B80, 0x10B91, prN}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW - {0x10B99, 0x10B9C, prN}, // Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT - {0x10BA9, 0x10BAF, prN}, // No [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED - {0x10C00, 0x10C48, prN}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH - {0x10C80, 0x10CB2, prN}, // Lu [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - {0x10CC0, 0x10CF2, prN}, // Ll [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - {0x10CFA, 0x10CFF, prN}, // No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND - {0x10D00, 0x10D23, prN}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA - {0x10D24, 0x10D27, prN}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI - {0x10D30, 0x10D39, prN}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE - {0x10E60, 0x10E7E, prN}, // No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS - {0x10E80, 0x10EA9, prN}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET - {0x10EAB, 0x10EAC, prN}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK - {0x10EAD, 0x10EAD, prN}, // Pd YEZIDI HYPHENATION MARK - {0x10EB0, 0x10EB1, prN}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE - {0x10EFD, 0x10EFF, prN}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA - {0x10F00, 0x10F1C, prN}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL - {0x10F1D, 0x10F26, prN}, // No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF - {0x10F27, 0x10F27, prN}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH - {0x10F30, 0x10F45, prN}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN - {0x10F46, 0x10F50, prN}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW - {0x10F51, 0x10F54, prN}, // No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED - {0x10F55, 0x10F59, prN}, // Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT - {0x10F70, 0x10F81, prN}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH - {0x10F82, 0x10F85, prN}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW - {0x10F86, 0x10F89, prN}, // Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS - {0x10FB0, 0x10FC4, prN}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW - {0x10FC5, 0x10FCB, prN}, // No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED - {0x10FE0, 0x10FF6, prN}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH - {0x11000, 0x11000, prN}, // Mc BRAHMI SIGN CANDRABINDU - {0x11001, 0x11001, prN}, // Mn BRAHMI SIGN ANUSVARA - {0x11002, 0x11002, prN}, // Mc BRAHMI SIGN VISARGA - {0x11003, 0x11037, prN}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA - {0x11038, 0x11046, prN}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA - {0x11047, 0x1104D, prN}, // Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS - {0x11052, 0x11065, prN}, // No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND - {0x11066, 0x1106F, prN}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE - {0x11070, 0x11070, prN}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA - {0x11071, 0x11072, prN}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O - {0x11073, 0x11074, prN}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O - {0x11075, 0x11075, prN}, // Lo BRAHMI LETTER OLD TAMIL LLA - {0x1107F, 0x1107F, prN}, // Mn BRAHMI NUMBER JOINER - {0x11080, 0x11081, prN}, // Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA - {0x11082, 0x11082, prN}, // Mc KAITHI SIGN VISARGA - {0x11083, 0x110AF, prN}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA - {0x110B0, 0x110B2, prN}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II - {0x110B3, 0x110B6, prN}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI - {0x110B7, 0x110B8, prN}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU - {0x110B9, 0x110BA, prN}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA - {0x110BB, 0x110BC, prN}, // Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN - {0x110BD, 0x110BD, prN}, // Cf KAITHI NUMBER SIGN - {0x110BE, 0x110C1, prN}, // Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA - {0x110C2, 0x110C2, prN}, // Mn KAITHI VOWEL SIGN VOCALIC R - {0x110CD, 0x110CD, prN}, // Cf KAITHI NUMBER SIGN ABOVE - {0x110D0, 0x110E8, prN}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE - {0x110F0, 0x110F9, prN}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE - {0x11100, 0x11102, prN}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA - {0x11103, 0x11126, prN}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA - {0x11127, 0x1112B, prN}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU - {0x1112C, 0x1112C, prN}, // Mc CHAKMA VOWEL SIGN E - {0x1112D, 0x11134, prN}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA - {0x11136, 0x1113F, prN}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE - {0x11140, 0x11143, prN}, // Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK - {0x11144, 0x11144, prN}, // Lo CHAKMA LETTER LHAA - {0x11145, 0x11146, prN}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI - {0x11147, 0x11147, prN}, // Lo CHAKMA LETTER VAA - {0x11150, 0x11172, prN}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA - {0x11173, 0x11173, prN}, // Mn MAHAJANI SIGN NUKTA - {0x11174, 0x11175, prN}, // Po [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK - {0x11176, 0x11176, prN}, // Lo MAHAJANI LIGATURE SHRI - {0x11180, 0x11181, prN}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA - {0x11182, 0x11182, prN}, // Mc SHARADA SIGN VISARGA - {0x11183, 0x111B2, prN}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA - {0x111B3, 0x111B5, prN}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II - {0x111B6, 0x111BE, prN}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O - {0x111BF, 0x111C0, prN}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA - {0x111C1, 0x111C4, prN}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM - {0x111C5, 0x111C8, prN}, // Po [4] SHARADA DANDA..SHARADA SEPARATOR - {0x111C9, 0x111CC, prN}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK - {0x111CD, 0x111CD, prN}, // Po SHARADA SUTRA MARK - {0x111CE, 0x111CE, prN}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E - {0x111CF, 0x111CF, prN}, // Mn SHARADA SIGN INVERTED CANDRABINDU - {0x111D0, 0x111D9, prN}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE - {0x111DA, 0x111DA, prN}, // Lo SHARADA EKAM - {0x111DB, 0x111DB, prN}, // Po SHARADA SIGN SIDDHAM - {0x111DC, 0x111DC, prN}, // Lo SHARADA HEADSTROKE - {0x111DD, 0x111DF, prN}, // Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 - {0x111E1, 0x111F4, prN}, // No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND - {0x11200, 0x11211, prN}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA - {0x11213, 0x1122B, prN}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA - {0x1122C, 0x1122E, prN}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II - {0x1122F, 0x11231, prN}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - {0x11232, 0x11233, prN}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - {0x11234, 0x11234, prN}, // Mn KHOJKI SIGN ANUSVARA - {0x11235, 0x11235, prN}, // Mc KHOJKI SIGN VIRAMA - {0x11236, 0x11237, prN}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA - {0x11238, 0x1123D, prN}, // Po [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN - {0x1123E, 0x1123E, prN}, // Mn KHOJKI SIGN SUKUN - {0x1123F, 0x11240, prN}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I - {0x11241, 0x11241, prN}, // Mn KHOJKI VOWEL SIGN VOCALIC R - {0x11280, 0x11286, prN}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA - {0x11288, 0x11288, prN}, // Lo MULTANI LETTER GHA - {0x1128A, 0x1128D, prN}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA - {0x1128F, 0x1129D, prN}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA - {0x1129F, 0x112A8, prN}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA - {0x112A9, 0x112A9, prN}, // Po MULTANI SECTION MARK - {0x112B0, 0x112DE, prN}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA - {0x112DF, 0x112DF, prN}, // Mn KHUDAWADI SIGN ANUSVARA - {0x112E0, 0x112E2, prN}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II - {0x112E3, 0x112EA, prN}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - {0x112F0, 0x112F9, prN}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE - {0x11300, 0x11301, prN}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU - {0x11302, 0x11303, prN}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA - {0x11305, 0x1130C, prN}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L - {0x1130F, 0x11310, prN}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI - {0x11313, 0x11328, prN}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA - {0x1132A, 0x11330, prN}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA - {0x11332, 0x11333, prN}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA - {0x11335, 0x11339, prN}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA - {0x1133B, 0x1133C, prN}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA - {0x1133D, 0x1133D, prN}, // Lo GRANTHA SIGN AVAGRAHA - {0x1133E, 0x1133F, prN}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I - {0x11340, 0x11340, prN}, // Mn GRANTHA VOWEL SIGN II - {0x11341, 0x11344, prN}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR - {0x11347, 0x11348, prN}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI - {0x1134B, 0x1134D, prN}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA - {0x11350, 0x11350, prN}, // Lo GRANTHA OM - {0x11357, 0x11357, prN}, // Mc GRANTHA AU LENGTH MARK - {0x1135D, 0x11361, prN}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL - {0x11362, 0x11363, prN}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - {0x11366, 0x1136C, prN}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - {0x11370, 0x11374, prN}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA - {0x11400, 0x11434, prN}, // Lo [53] NEWA LETTER A..NEWA LETTER HA - {0x11435, 0x11437, prN}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II - {0x11438, 0x1143F, prN}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI - {0x11440, 0x11441, prN}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU - {0x11442, 0x11444, prN}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA - {0x11445, 0x11445, prN}, // Mc NEWA SIGN VISARGA - {0x11446, 0x11446, prN}, // Mn NEWA SIGN NUKTA - {0x11447, 0x1144A, prN}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - {0x1144B, 0x1144F, prN}, // Po [5] NEWA DANDA..NEWA ABBREVIATION SIGN - {0x11450, 0x11459, prN}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - {0x1145A, 0x1145B, prN}, // Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK - {0x1145D, 0x1145D, prN}, // Po NEWA INSERTION SIGN - {0x1145E, 0x1145E, prN}, // Mn NEWA SANDHI MARK - {0x1145F, 0x11461, prN}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA - {0x11480, 0x114AF, prN}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - {0x114B0, 0x114B2, prN}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - {0x114B3, 0x114B8, prN}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - {0x114B9, 0x114B9, prN}, // Mc TIRHUTA VOWEL SIGN E - {0x114BA, 0x114BA, prN}, // Mn TIRHUTA VOWEL SIGN SHORT E - {0x114BB, 0x114BE, prN}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU - {0x114BF, 0x114C0, prN}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA - {0x114C1, 0x114C1, prN}, // Mc TIRHUTA SIGN VISARGA - {0x114C2, 0x114C3, prN}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA - {0x114C4, 0x114C5, prN}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - {0x114C6, 0x114C6, prN}, // Po TIRHUTA ABBREVIATION SIGN - {0x114C7, 0x114C7, prN}, // Lo TIRHUTA OM - {0x114D0, 0x114D9, prN}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE - {0x11580, 0x115AE, prN}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA - {0x115AF, 0x115B1, prN}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II - {0x115B2, 0x115B5, prN}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR - {0x115B8, 0x115BB, prN}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU - {0x115BC, 0x115BD, prN}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA - {0x115BE, 0x115BE, prN}, // Mc SIDDHAM SIGN VISARGA - {0x115BF, 0x115C0, prN}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA - {0x115C1, 0x115D7, prN}, // Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES - {0x115D8, 0x115DB, prN}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U - {0x115DC, 0x115DD, prN}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU - {0x11600, 0x1162F, prN}, // Lo [48] MODI LETTER A..MODI LETTER LLA - {0x11630, 0x11632, prN}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II - {0x11633, 0x1163A, prN}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI - {0x1163B, 0x1163C, prN}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU - {0x1163D, 0x1163D, prN}, // Mn MODI SIGN ANUSVARA - {0x1163E, 0x1163E, prN}, // Mc MODI SIGN VISARGA - {0x1163F, 0x11640, prN}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA - {0x11641, 0x11643, prN}, // Po [3] MODI DANDA..MODI ABBREVIATION SIGN - {0x11644, 0x11644, prN}, // Lo MODI SIGN HUVA - {0x11650, 0x11659, prN}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE - {0x11660, 0x1166C, prN}, // Po [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT - {0x11680, 0x116AA, prN}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA - {0x116AB, 0x116AB, prN}, // Mn TAKRI SIGN ANUSVARA - {0x116AC, 0x116AC, prN}, // Mc TAKRI SIGN VISARGA - {0x116AD, 0x116AD, prN}, // Mn TAKRI VOWEL SIGN AA - {0x116AE, 0x116AF, prN}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II - {0x116B0, 0x116B5, prN}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU - {0x116B6, 0x116B6, prN}, // Mc TAKRI SIGN VIRAMA - {0x116B7, 0x116B7, prN}, // Mn TAKRI SIGN NUKTA - {0x116B8, 0x116B8, prN}, // Lo TAKRI LETTER ARCHAIC KHA - {0x116B9, 0x116B9, prN}, // Po TAKRI ABBREVIATION SIGN - {0x116C0, 0x116C9, prN}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE - {0x11700, 0x1171A, prN}, // Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA - {0x1171D, 0x1171F, prN}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - {0x11720, 0x11721, prN}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA - {0x11722, 0x11725, prN}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - {0x11726, 0x11726, prN}, // Mc AHOM VOWEL SIGN E - {0x11727, 0x1172B, prN}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER - {0x11730, 0x11739, prN}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE - {0x1173A, 0x1173B, prN}, // No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY - {0x1173C, 0x1173E, prN}, // Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI - {0x1173F, 0x1173F, prN}, // So AHOM SYMBOL VI - {0x11740, 0x11746, prN}, // Lo [7] AHOM LETTER CA..AHOM LETTER LLA - {0x11800, 0x1182B, prN}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA - {0x1182C, 0x1182E, prN}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II - {0x1182F, 0x11837, prN}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA - {0x11838, 0x11838, prN}, // Mc DOGRA SIGN VISARGA - {0x11839, 0x1183A, prN}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA - {0x1183B, 0x1183B, prN}, // Po DOGRA ABBREVIATION SIGN - {0x118A0, 0x118DF, prN}, // L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - {0x118E0, 0x118E9, prN}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - {0x118EA, 0x118F2, prN}, // No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY - {0x118FF, 0x118FF, prN}, // Lo WARANG CITI OM - {0x11900, 0x11906, prN}, // Lo [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E - {0x11909, 0x11909, prN}, // Lo DIVES AKURU LETTER O - {0x1190C, 0x11913, prN}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA - {0x11915, 0x11916, prN}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA - {0x11918, 0x1192F, prN}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA - {0x11930, 0x11935, prN}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E - {0x11937, 0x11938, prN}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O - {0x1193B, 0x1193C, prN}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU - {0x1193D, 0x1193D, prN}, // Mc DIVES AKURU SIGN HALANTA - {0x1193E, 0x1193E, prN}, // Mn DIVES AKURU VIRAMA - {0x1193F, 0x1193F, prN}, // Lo DIVES AKURU PREFIXED NASAL SIGN - {0x11940, 0x11940, prN}, // Mc DIVES AKURU MEDIAL YA - {0x11941, 0x11941, prN}, // Lo DIVES AKURU INITIAL RA - {0x11942, 0x11942, prN}, // Mc DIVES AKURU MEDIAL RA - {0x11943, 0x11943, prN}, // Mn DIVES AKURU SIGN NUKTA - {0x11944, 0x11946, prN}, // Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK - {0x11950, 0x11959, prN}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE - {0x119A0, 0x119A7, prN}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR - {0x119AA, 0x119D0, prN}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA - {0x119D1, 0x119D3, prN}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II - {0x119D4, 0x119D7, prN}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR - {0x119DA, 0x119DB, prN}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI - {0x119DC, 0x119DF, prN}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA - {0x119E0, 0x119E0, prN}, // Mn NANDINAGARI SIGN VIRAMA - {0x119E1, 0x119E1, prN}, // Lo NANDINAGARI SIGN AVAGRAHA - {0x119E2, 0x119E2, prN}, // Po NANDINAGARI SIGN SIDDHAM - {0x119E3, 0x119E3, prN}, // Lo NANDINAGARI HEADSTROKE - {0x119E4, 0x119E4, prN}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E - {0x11A00, 0x11A00, prN}, // Lo ZANABAZAR SQUARE LETTER A - {0x11A01, 0x11A0A, prN}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK - {0x11A0B, 0x11A32, prN}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA - {0x11A33, 0x11A38, prN}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA - {0x11A39, 0x11A39, prN}, // Mc ZANABAZAR SQUARE SIGN VISARGA - {0x11A3A, 0x11A3A, prN}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA - {0x11A3B, 0x11A3E, prN}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA - {0x11A3F, 0x11A46, prN}, // Po [8] ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK - {0x11A47, 0x11A47, prN}, // Mn ZANABAZAR SQUARE SUBJOINER - {0x11A50, 0x11A50, prN}, // Lo SOYOMBO LETTER A - {0x11A51, 0x11A56, prN}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE - {0x11A57, 0x11A58, prN}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU - {0x11A59, 0x11A5B, prN}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK - {0x11A5C, 0x11A89, prN}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA - {0x11A8A, 0x11A96, prN}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA - {0x11A97, 0x11A97, prN}, // Mc SOYOMBO SIGN VISARGA - {0x11A98, 0x11A99, prN}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER - {0x11A9A, 0x11A9C, prN}, // Po [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD - {0x11A9D, 0x11A9D, prN}, // Lo SOYOMBO MARK PLUTA - {0x11A9E, 0x11AA2, prN}, // Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 - {0x11AB0, 0x11ABF, prN}, // Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA - {0x11AC0, 0x11AF8, prN}, // Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL - {0x11B00, 0x11B09, prN}, // Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU - {0x11C00, 0x11C08, prN}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L - {0x11C0A, 0x11C2E, prN}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA - {0x11C2F, 0x11C2F, prN}, // Mc BHAIKSUKI VOWEL SIGN AA - {0x11C30, 0x11C36, prN}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L - {0x11C38, 0x11C3D, prN}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA - {0x11C3E, 0x11C3E, prN}, // Mc BHAIKSUKI SIGN VISARGA - {0x11C3F, 0x11C3F, prN}, // Mn BHAIKSUKI SIGN VIRAMA - {0x11C40, 0x11C40, prN}, // Lo BHAIKSUKI SIGN AVAGRAHA - {0x11C41, 0x11C45, prN}, // Po [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 - {0x11C50, 0x11C59, prN}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE - {0x11C5A, 0x11C6C, prN}, // No [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK - {0x11C70, 0x11C71, prN}, // Po [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD - {0x11C72, 0x11C8F, prN}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A - {0x11C92, 0x11CA7, prN}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA - {0x11CA9, 0x11CA9, prN}, // Mc MARCHEN SUBJOINED LETTER YA - {0x11CAA, 0x11CB0, prN}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA - {0x11CB1, 0x11CB1, prN}, // Mc MARCHEN VOWEL SIGN I - {0x11CB2, 0x11CB3, prN}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E - {0x11CB4, 0x11CB4, prN}, // Mc MARCHEN VOWEL SIGN O - {0x11CB5, 0x11CB6, prN}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - {0x11D00, 0x11D06, prN}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E - {0x11D08, 0x11D09, prN}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O - {0x11D0B, 0x11D30, prN}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA - {0x11D31, 0x11D36, prN}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R - {0x11D3A, 0x11D3A, prN}, // Mn MASARAM GONDI VOWEL SIGN E - {0x11D3C, 0x11D3D, prN}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O - {0x11D3F, 0x11D45, prN}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA - {0x11D46, 0x11D46, prN}, // Lo MASARAM GONDI REPHA - {0x11D47, 0x11D47, prN}, // Mn MASARAM GONDI RA-KARA - {0x11D50, 0x11D59, prN}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE - {0x11D60, 0x11D65, prN}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU - {0x11D67, 0x11D68, prN}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI - {0x11D6A, 0x11D89, prN}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA - {0x11D8A, 0x11D8E, prN}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU - {0x11D90, 0x11D91, prN}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI - {0x11D93, 0x11D94, prN}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU - {0x11D95, 0x11D95, prN}, // Mn GUNJALA GONDI SIGN ANUSVARA - {0x11D96, 0x11D96, prN}, // Mc GUNJALA GONDI SIGN VISARGA - {0x11D97, 0x11D97, prN}, // Mn GUNJALA GONDI VIRAMA - {0x11D98, 0x11D98, prN}, // Lo GUNJALA GONDI OM - {0x11DA0, 0x11DA9, prN}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE - {0x11EE0, 0x11EF2, prN}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA - {0x11EF3, 0x11EF4, prN}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U - {0x11EF5, 0x11EF6, prN}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O - {0x11EF7, 0x11EF8, prN}, // Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION - {0x11F00, 0x11F01, prN}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA - {0x11F02, 0x11F02, prN}, // Lo KAWI SIGN REPHA - {0x11F03, 0x11F03, prN}, // Mc KAWI SIGN VISARGA - {0x11F04, 0x11F10, prN}, // Lo [13] KAWI LETTER A..KAWI LETTER O - {0x11F12, 0x11F33, prN}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA - {0x11F34, 0x11F35, prN}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA - {0x11F36, 0x11F3A, prN}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R - {0x11F3E, 0x11F3F, prN}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI - {0x11F40, 0x11F40, prN}, // Mn KAWI VOWEL SIGN EU - {0x11F41, 0x11F41, prN}, // Mc KAWI SIGN KILLER - {0x11F42, 0x11F42, prN}, // Mn KAWI CONJOINER - {0x11F43, 0x11F4F, prN}, // Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL - {0x11F50, 0x11F59, prN}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE - {0x11FB0, 0x11FB0, prN}, // Lo LISU LETTER YHA - {0x11FC0, 0x11FD4, prN}, // No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH - {0x11FD5, 0x11FDC, prN}, // So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI - {0x11FDD, 0x11FE0, prN}, // Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN - {0x11FE1, 0x11FF1, prN}, // So [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA - {0x11FFF, 0x11FFF, prN}, // Po TAMIL PUNCTUATION END OF TEXT - {0x12000, 0x12399, prN}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - {0x12400, 0x1246E, prN}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - {0x12470, 0x12474, prN}, // Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON - {0x12480, 0x12543, prN}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU - {0x12F90, 0x12FF0, prN}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 - {0x12FF1, 0x12FF2, prN}, // Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 - {0x13000, 0x1342F, prN}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D - {0x13430, 0x1343F, prN}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE - {0x13440, 0x13440, prN}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY - {0x13441, 0x13446, prN}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN - {0x13447, 0x13455, prN}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED - {0x14400, 0x14646, prN}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 - {0x16800, 0x16A38, prN}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ - {0x16A40, 0x16A5E, prN}, // Lo [31] MRO LETTER TA..MRO LETTER TEK - {0x16A60, 0x16A69, prN}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE - {0x16A6E, 0x16A6F, prN}, // Po [2] MRO DANDA..MRO DOUBLE DANDA - {0x16A70, 0x16ABE, prN}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA - {0x16AC0, 0x16AC9, prN}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE - {0x16AD0, 0x16AED, prN}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I - {0x16AF0, 0x16AF4, prN}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - {0x16AF5, 0x16AF5, prN}, // Po BASSA VAH FULL STOP - {0x16B00, 0x16B2F, prN}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU - {0x16B30, 0x16B36, prN}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - {0x16B37, 0x16B3B, prN}, // Po [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM - {0x16B3C, 0x16B3F, prN}, // So [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB - {0x16B40, 0x16B43, prN}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM - {0x16B44, 0x16B44, prN}, // Po PAHAWH HMONG SIGN XAUS - {0x16B45, 0x16B45, prN}, // So PAHAWH HMONG SIGN CIM TSOV ROG - {0x16B50, 0x16B59, prN}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE - {0x16B5B, 0x16B61, prN}, // No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS - {0x16B63, 0x16B77, prN}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS - {0x16B7D, 0x16B8F, prN}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ - {0x16E40, 0x16E7F, prN}, // L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y - {0x16E80, 0x16E96, prN}, // No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM - {0x16E97, 0x16E9A, prN}, // Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH - {0x16F00, 0x16F4A, prN}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE - {0x16F4F, 0x16F4F, prN}, // Mn MIAO SIGN CONSONANT MODIFIER BAR - {0x16F50, 0x16F50, prN}, // Lo MIAO LETTER NASALIZATION - {0x16F51, 0x16F87, prN}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI - {0x16F8F, 0x16F92, prN}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - {0x16F93, 0x16F9F, prN}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 - {0x16FE0, 0x16FE1, prW}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK - {0x16FE2, 0x16FE2, prW}, // Po OLD CHINESE HOOK MARK - {0x16FE3, 0x16FE3, prW}, // Lm OLD CHINESE ITERATION MARK - {0x16FE4, 0x16FE4, prW}, // Mn KHITAN SMALL SCRIPT FILLER - {0x16FF0, 0x16FF1, prW}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY - {0x17000, 0x187F7, prW}, // Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 - {0x18800, 0x18AFF, prW}, // Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 - {0x18B00, 0x18CD5, prW}, // Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 - {0x18D00, 0x18D08, prW}, // Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 - {0x1AFF0, 0x1AFF3, prW}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 - {0x1AFF5, 0x1AFFB, prW}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 - {0x1AFFD, 0x1AFFE, prW}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 - {0x1B000, 0x1B0FF, prW}, // Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 - {0x1B100, 0x1B122, prW}, // Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU - {0x1B132, 0x1B132, prW}, // Lo HIRAGANA LETTER SMALL KO - {0x1B150, 0x1B152, prW}, // Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO - {0x1B155, 0x1B155, prW}, // Lo KATAKANA LETTER SMALL KO - {0x1B164, 0x1B167, prW}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N - {0x1B170, 0x1B2FB, prW}, // Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB - {0x1BC00, 0x1BC6A, prN}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - {0x1BC70, 0x1BC7C, prN}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK - {0x1BC80, 0x1BC88, prN}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL - {0x1BC90, 0x1BC99, prN}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW - {0x1BC9C, 0x1BC9C, prN}, // So DUPLOYAN SIGN O WITH CROSS - {0x1BC9D, 0x1BC9E, prN}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - {0x1BC9F, 0x1BC9F, prN}, // Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP - {0x1BCA0, 0x1BCA3, prN}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - {0x1CF00, 0x1CF2D, prN}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT - {0x1CF30, 0x1CF46, prN}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG - {0x1CF50, 0x1CFC3, prN}, // So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK - {0x1D000, 0x1D0F5, prN}, // So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO - {0x1D100, 0x1D126, prN}, // So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 - {0x1D129, 0x1D164, prN}, // So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE - {0x1D165, 0x1D166, prN}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM - {0x1D167, 0x1D169, prN}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 - {0x1D16A, 0x1D16C, prN}, // So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 - {0x1D16D, 0x1D172, prN}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 - {0x1D173, 0x1D17A, prN}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE - {0x1D17B, 0x1D182, prN}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE - {0x1D183, 0x1D184, prN}, // So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN - {0x1D185, 0x1D18B, prN}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE - {0x1D18C, 0x1D1A9, prN}, // So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH - {0x1D1AA, 0x1D1AD, prN}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - {0x1D1AE, 0x1D1EA, prN}, // So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON - {0x1D200, 0x1D241, prN}, // So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 - {0x1D242, 0x1D244, prN}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME - {0x1D245, 0x1D245, prN}, // So GREEK MUSICAL LEIMMA - {0x1D2C0, 0x1D2D3, prN}, // No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN - {0x1D2E0, 0x1D2F3, prN}, // No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN - {0x1D300, 0x1D356, prN}, // So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING - {0x1D360, 0x1D378, prN}, // No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE - {0x1D400, 0x1D454, prN}, // L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G - {0x1D456, 0x1D49C, prN}, // L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A - {0x1D49E, 0x1D49F, prN}, // Lu [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D - {0x1D4A2, 0x1D4A2, prN}, // Lu MATHEMATICAL SCRIPT CAPITAL G - {0x1D4A5, 0x1D4A6, prN}, // Lu [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K - {0x1D4A9, 0x1D4AC, prN}, // Lu [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q - {0x1D4AE, 0x1D4B9, prN}, // L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D - {0x1D4BB, 0x1D4BB, prN}, // Ll MATHEMATICAL SCRIPT SMALL F - {0x1D4BD, 0x1D4C3, prN}, // Ll [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N - {0x1D4C5, 0x1D505, prN}, // L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B - {0x1D507, 0x1D50A, prN}, // Lu [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G - {0x1D50D, 0x1D514, prN}, // Lu [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q - {0x1D516, 0x1D51C, prN}, // Lu [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y - {0x1D51E, 0x1D539, prN}, // L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B - {0x1D53B, 0x1D53E, prN}, // Lu [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G - {0x1D540, 0x1D544, prN}, // Lu [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M - {0x1D546, 0x1D546, prN}, // Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL O - {0x1D54A, 0x1D550, prN}, // Lu [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y - {0x1D552, 0x1D6A5, prN}, // L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J - {0x1D6A8, 0x1D6C0, prN}, // Lu [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA - {0x1D6C1, 0x1D6C1, prN}, // Sm MATHEMATICAL BOLD NABLA - {0x1D6C2, 0x1D6DA, prN}, // Ll [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA - {0x1D6DB, 0x1D6DB, prN}, // Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL - {0x1D6DC, 0x1D6FA, prN}, // L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA - {0x1D6FB, 0x1D6FB, prN}, // Sm MATHEMATICAL ITALIC NABLA - {0x1D6FC, 0x1D714, prN}, // Ll [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA - {0x1D715, 0x1D715, prN}, // Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL - {0x1D716, 0x1D734, prN}, // L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA - {0x1D735, 0x1D735, prN}, // Sm MATHEMATICAL BOLD ITALIC NABLA - {0x1D736, 0x1D74E, prN}, // Ll [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA - {0x1D74F, 0x1D74F, prN}, // Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL - {0x1D750, 0x1D76E, prN}, // L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - {0x1D76F, 0x1D76F, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD NABLA - {0x1D770, 0x1D788, prN}, // Ll [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA - {0x1D789, 0x1D789, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL - {0x1D78A, 0x1D7A8, prN}, // L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - {0x1D7A9, 0x1D7A9, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA - {0x1D7AA, 0x1D7C2, prN}, // Ll [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - {0x1D7C3, 0x1D7C3, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL - {0x1D7C4, 0x1D7CB, prN}, // L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA - {0x1D7CE, 0x1D7FF, prN}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE - {0x1D800, 0x1D9FF, prN}, // So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD - {0x1DA00, 0x1DA36, prN}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN - {0x1DA37, 0x1DA3A, prN}, // So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE - {0x1DA3B, 0x1DA6C, prN}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT - {0x1DA6D, 0x1DA74, prN}, // So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING - {0x1DA75, 0x1DA75, prN}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS - {0x1DA76, 0x1DA83, prN}, // So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH - {0x1DA84, 0x1DA84, prN}, // Mn SIGNWRITING LOCATION HEAD NECK - {0x1DA85, 0x1DA86, prN}, // So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS - {0x1DA87, 0x1DA8B, prN}, // Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS - {0x1DA9B, 0x1DA9F, prN}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - {0x1DAA1, 0x1DAAF, prN}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 - {0x1DF00, 0x1DF09, prN}, // Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK - {0x1DF0A, 0x1DF0A, prN}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK - {0x1DF0B, 0x1DF1E, prN}, // Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL - {0x1DF25, 0x1DF2A, prN}, // Ll [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK - {0x1E000, 0x1E006, prN}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE - {0x1E008, 0x1E018, prN}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU - {0x1E01B, 0x1E021, prN}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI - {0x1E023, 0x1E024, prN}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS - {0x1E026, 0x1E02A, prN}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - {0x1E030, 0x1E06D, prN}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE - {0x1E08F, 0x1E08F, prN}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - {0x1E100, 0x1E12C, prN}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W - {0x1E130, 0x1E136, prN}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D - {0x1E137, 0x1E13D, prN}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER - {0x1E140, 0x1E149, prN}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE - {0x1E14E, 0x1E14E, prN}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ - {0x1E14F, 0x1E14F, prN}, // So NYIAKENG PUACHUE HMONG CIRCLED CA - {0x1E290, 0x1E2AD, prN}, // Lo [30] TOTO LETTER PA..TOTO LETTER A - {0x1E2AE, 0x1E2AE, prN}, // Mn TOTO SIGN RISING TONE - {0x1E2C0, 0x1E2EB, prN}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH - {0x1E2EC, 0x1E2EF, prN}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI - {0x1E2F0, 0x1E2F9, prN}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE - {0x1E2FF, 0x1E2FF, prN}, // Sc WANCHO NGUN SIGN - {0x1E4D0, 0x1E4EA, prN}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL - {0x1E4EB, 0x1E4EB, prN}, // Lm NAG MUNDARI SIGN OJOD - {0x1E4EC, 0x1E4EF, prN}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH - {0x1E4F0, 0x1E4F9, prN}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE - {0x1E7E0, 0x1E7E6, prN}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO - {0x1E7E8, 0x1E7EB, prN}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE - {0x1E7ED, 0x1E7EE, prN}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE - {0x1E7F0, 0x1E7FE, prN}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE - {0x1E800, 0x1E8C4, prN}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - {0x1E8C7, 0x1E8CF, prN}, // No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE - {0x1E8D0, 0x1E8D6, prN}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS - {0x1E900, 0x1E943, prN}, // L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - {0x1E944, 0x1E94A, prN}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - {0x1E94B, 0x1E94B, prN}, // Lm ADLAM NASALIZATION MARK - {0x1E950, 0x1E959, prN}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - {0x1E95E, 0x1E95F, prN}, // Po [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK - {0x1EC71, 0x1ECAB, prN}, // No [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE - {0x1ECAC, 0x1ECAC, prN}, // So INDIC SIYAQ PLACEHOLDER - {0x1ECAD, 0x1ECAF, prN}, // No [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS - {0x1ECB0, 0x1ECB0, prN}, // Sc INDIC SIYAQ RUPEE MARK - {0x1ECB1, 0x1ECB4, prN}, // No [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK - {0x1ED01, 0x1ED2D, prN}, // No [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND - {0x1ED2E, 0x1ED2E, prN}, // So OTTOMAN SIYAQ MARRATAN - {0x1ED2F, 0x1ED3D, prN}, // No [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH - {0x1EE00, 0x1EE03, prN}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - {0x1EE05, 0x1EE1F, prN}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - {0x1EE21, 0x1EE22, prN}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM - {0x1EE24, 0x1EE24, prN}, // Lo ARABIC MATHEMATICAL INITIAL HEH - {0x1EE27, 0x1EE27, prN}, // Lo ARABIC MATHEMATICAL INITIAL HAH - {0x1EE29, 0x1EE32, prN}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF - {0x1EE34, 0x1EE37, prN}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH - {0x1EE39, 0x1EE39, prN}, // Lo ARABIC MATHEMATICAL INITIAL DAD - {0x1EE3B, 0x1EE3B, prN}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN - {0x1EE42, 0x1EE42, prN}, // Lo ARABIC MATHEMATICAL TAILED JEEM - {0x1EE47, 0x1EE47, prN}, // Lo ARABIC MATHEMATICAL TAILED HAH - {0x1EE49, 0x1EE49, prN}, // Lo ARABIC MATHEMATICAL TAILED YEH - {0x1EE4B, 0x1EE4B, prN}, // Lo ARABIC MATHEMATICAL TAILED LAM - {0x1EE4D, 0x1EE4F, prN}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN - {0x1EE51, 0x1EE52, prN}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF - {0x1EE54, 0x1EE54, prN}, // Lo ARABIC MATHEMATICAL TAILED SHEEN - {0x1EE57, 0x1EE57, prN}, // Lo ARABIC MATHEMATICAL TAILED KHAH - {0x1EE59, 0x1EE59, prN}, // Lo ARABIC MATHEMATICAL TAILED DAD - {0x1EE5B, 0x1EE5B, prN}, // Lo ARABIC MATHEMATICAL TAILED GHAIN - {0x1EE5D, 0x1EE5D, prN}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON - {0x1EE5F, 0x1EE5F, prN}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF - {0x1EE61, 0x1EE62, prN}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM - {0x1EE64, 0x1EE64, prN}, // Lo ARABIC MATHEMATICAL STRETCHED HEH - {0x1EE67, 0x1EE6A, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF - {0x1EE6C, 0x1EE72, prN}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF - {0x1EE74, 0x1EE77, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH - {0x1EE79, 0x1EE7C, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH - {0x1EE7E, 0x1EE7E, prN}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH - {0x1EE80, 0x1EE89, prN}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH - {0x1EE8B, 0x1EE9B, prN}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN - {0x1EEA1, 0x1EEA3, prN}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL - {0x1EEA5, 0x1EEA9, prN}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH - {0x1EEAB, 0x1EEBB, prN}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN - {0x1EEF0, 0x1EEF1, prN}, // Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL - {0x1F000, 0x1F003, prN}, // So [4] MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND - {0x1F004, 0x1F004, prW}, // So MAHJONG TILE RED DRAGON - {0x1F005, 0x1F02B, prN}, // So [39] MAHJONG TILE GREEN DRAGON..MAHJONG TILE BACK - {0x1F030, 0x1F093, prN}, // So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 - {0x1F0A0, 0x1F0AE, prN}, // So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES - {0x1F0B1, 0x1F0BF, prN}, // So [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER - {0x1F0C1, 0x1F0CE, prN}, // So [14] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD KING OF DIAMONDS - {0x1F0CF, 0x1F0CF, prW}, // So PLAYING CARD BLACK JOKER - {0x1F0D1, 0x1F0F5, prN}, // So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 - {0x1F100, 0x1F10A, prA}, // No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA - {0x1F10B, 0x1F10C, prN}, // No [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO - {0x1F10D, 0x1F10F, prN}, // So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH - {0x1F110, 0x1F12D, prA}, // So [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD - {0x1F12E, 0x1F12F, prN}, // So [2] CIRCLED WZ..COPYLEFT SYMBOL - {0x1F130, 0x1F169, prA}, // So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - {0x1F16A, 0x1F16F, prN}, // So [6] RAISED MC SIGN..CIRCLED HUMAN FIGURE - {0x1F170, 0x1F18D, prA}, // So [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA - {0x1F18E, 0x1F18E, prW}, // So NEGATIVE SQUARED AB - {0x1F18F, 0x1F190, prA}, // So [2] NEGATIVE SQUARED WC..SQUARE DJ - {0x1F191, 0x1F19A, prW}, // So [10] SQUARED CL..SQUARED VS - {0x1F19B, 0x1F1AC, prA}, // So [18] SQUARED THREE D..SQUARED VOD - {0x1F1AD, 0x1F1AD, prN}, // So MASK WORK SYMBOL - {0x1F1E6, 0x1F1FF, prN}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z - {0x1F200, 0x1F202, prW}, // So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA - {0x1F210, 0x1F23B, prW}, // So [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D - {0x1F240, 0x1F248, prW}, // So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 - {0x1F250, 0x1F251, prW}, // So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT - {0x1F260, 0x1F265, prW}, // So [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI - {0x1F300, 0x1F320, prW}, // So [33] CYCLONE..SHOOTING STAR - {0x1F321, 0x1F32C, prN}, // So [12] THERMOMETER..WIND BLOWING FACE - {0x1F32D, 0x1F335, prW}, // So [9] HOT DOG..CACTUS - {0x1F336, 0x1F336, prN}, // So HOT PEPPER - {0x1F337, 0x1F37C, prW}, // So [70] TULIP..BABY BOTTLE - {0x1F37D, 0x1F37D, prN}, // So FORK AND KNIFE WITH PLATE - {0x1F37E, 0x1F393, prW}, // So [22] BOTTLE WITH POPPING CORK..GRADUATION CAP - {0x1F394, 0x1F39F, prN}, // So [12] HEART WITH TIP ON THE LEFT..ADMISSION TICKETS - {0x1F3A0, 0x1F3CA, prW}, // So [43] CAROUSEL HORSE..SWIMMER - {0x1F3CB, 0x1F3CE, prN}, // So [4] WEIGHT LIFTER..RACING CAR - {0x1F3CF, 0x1F3D3, prW}, // So [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL - {0x1F3D4, 0x1F3DF, prN}, // So [12] SNOW CAPPED MOUNTAIN..STADIUM - {0x1F3E0, 0x1F3F0, prW}, // So [17] HOUSE BUILDING..EUROPEAN CASTLE - {0x1F3F1, 0x1F3F3, prN}, // So [3] WHITE PENNANT..WAVING WHITE FLAG - {0x1F3F4, 0x1F3F4, prW}, // So WAVING BLACK FLAG - {0x1F3F5, 0x1F3F7, prN}, // So [3] ROSETTE..LABEL - {0x1F3F8, 0x1F3FA, prW}, // So [3] BADMINTON RACQUET AND SHUTTLECOCK..AMPHORA - {0x1F3FB, 0x1F3FF, prW}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 - {0x1F400, 0x1F43E, prW}, // So [63] RAT..PAW PRINTS - {0x1F43F, 0x1F43F, prN}, // So CHIPMUNK - {0x1F440, 0x1F440, prW}, // So EYES - {0x1F441, 0x1F441, prN}, // So EYE - {0x1F442, 0x1F4FC, prW}, // So [187] EAR..VIDEOCASSETTE - {0x1F4FD, 0x1F4FE, prN}, // So [2] FILM PROJECTOR..PORTABLE STEREO - {0x1F4FF, 0x1F53D, prW}, // So [63] PRAYER BEADS..DOWN-POINTING SMALL RED TRIANGLE - {0x1F53E, 0x1F54A, prN}, // So [13] LOWER RIGHT SHADOWED WHITE CIRCLE..DOVE OF PEACE - {0x1F54B, 0x1F54E, prW}, // So [4] KAABA..MENORAH WITH NINE BRANCHES - {0x1F54F, 0x1F54F, prN}, // So BOWL OF HYGIEIA - {0x1F550, 0x1F567, prW}, // So [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY - {0x1F568, 0x1F579, prN}, // So [18] RIGHT SPEAKER..JOYSTICK - {0x1F57A, 0x1F57A, prW}, // So MAN DANCING - {0x1F57B, 0x1F594, prN}, // So [26] LEFT HAND TELEPHONE RECEIVER..REVERSED VICTORY HAND - {0x1F595, 0x1F596, prW}, // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS - {0x1F597, 0x1F5A3, prN}, // So [13] WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX - {0x1F5A4, 0x1F5A4, prW}, // So BLACK HEART - {0x1F5A5, 0x1F5FA, prN}, // So [86] DESKTOP COMPUTER..WORLD MAP - {0x1F5FB, 0x1F5FF, prW}, // So [5] MOUNT FUJI..MOYAI - {0x1F600, 0x1F64F, prW}, // So [80] GRINNING FACE..PERSON WITH FOLDED HANDS - {0x1F650, 0x1F67F, prN}, // So [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD - {0x1F680, 0x1F6C5, prW}, // So [70] ROCKET..LEFT LUGGAGE - {0x1F6C6, 0x1F6CB, prN}, // So [6] TRIANGLE WITH ROUNDED CORNERS..COUCH AND LAMP - {0x1F6CC, 0x1F6CC, prW}, // So SLEEPING ACCOMMODATION - {0x1F6CD, 0x1F6CF, prN}, // So [3] SHOPPING BAGS..BED - {0x1F6D0, 0x1F6D2, prW}, // So [3] PLACE OF WORSHIP..SHOPPING TROLLEY - {0x1F6D3, 0x1F6D4, prN}, // So [2] STUPA..PAGODA - {0x1F6D5, 0x1F6D7, prW}, // So [3] HINDU TEMPLE..ELEVATOR - {0x1F6DC, 0x1F6DF, prW}, // So [4] WIRELESS..RING BUOY - {0x1F6E0, 0x1F6EA, prN}, // So [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE - {0x1F6EB, 0x1F6EC, prW}, // So [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING - {0x1F6F0, 0x1F6F3, prN}, // So [4] SATELLITE..PASSENGER SHIP - {0x1F6F4, 0x1F6FC, prW}, // So [9] SCOOTER..ROLLER SKATE - {0x1F700, 0x1F776, prN}, // So [119] ALCHEMICAL SYMBOL FOR QUINTESSENCE..LUNAR ECLIPSE - {0x1F77B, 0x1F77F, prN}, // So [5] HAUMEA..ORCUS - {0x1F780, 0x1F7D9, prN}, // So [90] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NINE POINTED WHITE STAR - {0x1F7E0, 0x1F7EB, prW}, // So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE - {0x1F7F0, 0x1F7F0, prW}, // So HEAVY EQUALS SIGN - {0x1F800, 0x1F80B, prN}, // So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD - {0x1F810, 0x1F847, prN}, // So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW - {0x1F850, 0x1F859, prN}, // So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW - {0x1F860, 0x1F887, prN}, // So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW - {0x1F890, 0x1F8AD, prN}, // So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS - {0x1F8B0, 0x1F8B1, prN}, // So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST - {0x1F900, 0x1F90B, prN}, // So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT - {0x1F90C, 0x1F93A, prW}, // So [47] PINCHED FINGERS..FENCER - {0x1F93B, 0x1F93B, prN}, // So MODERN PENTATHLON - {0x1F93C, 0x1F945, prW}, // So [10] WRESTLERS..GOAL NET - {0x1F946, 0x1F946, prN}, // So RIFLE - {0x1F947, 0x1F9FF, prW}, // So [185] FIRST PLACE MEDAL..NAZAR AMULET - {0x1FA00, 0x1FA53, prN}, // So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP - {0x1FA60, 0x1FA6D, prN}, // So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER - {0x1FA70, 0x1FA7C, prW}, // So [13] BALLET SHOES..CRUTCH - {0x1FA80, 0x1FA88, prW}, // So [9] YO-YO..FLUTE - {0x1FA90, 0x1FABD, prW}, // So [46] RINGED PLANET..WING - {0x1FABF, 0x1FAC5, prW}, // So [7] GOOSE..PERSON WITH CROWN - {0x1FACE, 0x1FADB, prW}, // So [14] MOOSE..PEA POD - {0x1FAE0, 0x1FAE8, prW}, // So [9] MELTING FACE..SHAKING FACE - {0x1FAF0, 0x1FAF8, prW}, // So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND - {0x1FB00, 0x1FB92, prN}, // So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK - {0x1FB94, 0x1FBCA, prN}, // So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON - {0x1FBF0, 0x1FBF9, prN}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE - {0x20000, 0x2A6DF, prW}, // Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF - {0x2A6E0, 0x2A6FF, prW}, // Cn [32] <reserved-2A6E0>..<reserved-2A6FF> - {0x2A700, 0x2B739, prW}, // Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 - {0x2B73A, 0x2B73F, prW}, // Cn [6] <reserved-2B73A>..<reserved-2B73F> - {0x2B740, 0x2B81D, prW}, // Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D - {0x2B81E, 0x2B81F, prW}, // Cn [2] <reserved-2B81E>..<reserved-2B81F> - {0x2B820, 0x2CEA1, prW}, // Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - {0x2CEA2, 0x2CEAF, prW}, // Cn [14] <reserved-2CEA2>..<reserved-2CEAF> - {0x2CEB0, 0x2EBE0, prW}, // Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 - {0x2EBE1, 0x2F7FF, prW}, // Cn [3103] <reserved-2EBE1>..<reserved-2F7FF> - {0x2F800, 0x2FA1D, prW}, // Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - {0x2FA1E, 0x2FA1F, prW}, // Cn [2] <reserved-2FA1E>..<reserved-2FA1F> - {0x2FA20, 0x2FFFD, prW}, // Cn [1502] <reserved-2FA20>..<reserved-2FFFD> - {0x30000, 0x3134A, prW}, // Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A - {0x3134B, 0x3134F, prW}, // Cn [5] <reserved-3134B>..<reserved-3134F> - {0x31350, 0x323AF, prW}, // Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF - {0x323B0, 0x3FFFD, prW}, // Cn [56398] <reserved-323B0>..<reserved-3FFFD> - {0xE0001, 0xE0001, prN}, // Cf LANGUAGE TAG - {0xE0020, 0xE007F, prN}, // Cf [96] TAG SPACE..CANCEL TAG - {0xE0100, 0xE01EF, prA}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - {0xF0000, 0xFFFFD, prA}, // Co [65534] <private-use-F0000>..<private-use-FFFFD> - {0x100000, 0x10FFFD, prA}, // Co [65534] <private-use-100000>..<private-use-10FFFD> -} diff --git a/vendor/github.com/rivo/uniseg/emojipresentation.go b/vendor/github.com/rivo/uniseg/emojipresentation.go deleted file mode 100644 index 9b5f499..0000000 --- a/vendor/github.com/rivo/uniseg/emojipresentation.go +++ /dev/null @@ -1,295 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// emojiPresentation are taken from -// -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var emojiPresentation = [][3]int{ - {0x231A, 0x231B, prEmojiPresentation}, // E0.6 [2] (⌚..⌛) watch..hourglass done - {0x23E9, 0x23EC, prEmojiPresentation}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button - {0x23F0, 0x23F0, prEmojiPresentation}, // E0.6 [1] (⏰) alarm clock - {0x23F3, 0x23F3, prEmojiPresentation}, // E0.6 [1] (⏳) hourglass not done - {0x25FD, 0x25FE, prEmojiPresentation}, // E0.6 [2] (◽..◾) white medium-small square..black medium-small square - {0x2614, 0x2615, prEmojiPresentation}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage - {0x2648, 0x2653, prEmojiPresentation}, // E0.6 [12] (♈..♓) Aries..Pisces - {0x267F, 0x267F, prEmojiPresentation}, // E0.6 [1] (♿) wheelchair symbol - {0x2693, 0x2693, prEmojiPresentation}, // E0.6 [1] (⚓) anchor - {0x26A1, 0x26A1, prEmojiPresentation}, // E0.6 [1] (⚡) high voltage - {0x26AA, 0x26AB, prEmojiPresentation}, // E0.6 [2] (⚪..⚫) white circle..black circle - {0x26BD, 0x26BE, prEmojiPresentation}, // E0.6 [2] (⚽..⚾) soccer ball..baseball - {0x26C4, 0x26C5, prEmojiPresentation}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud - {0x26CE, 0x26CE, prEmojiPresentation}, // E0.6 [1] (⛎) Ophiuchus - {0x26D4, 0x26D4, prEmojiPresentation}, // E0.6 [1] (⛔) no entry - {0x26EA, 0x26EA, prEmojiPresentation}, // E0.6 [1] (⛪) church - {0x26F2, 0x26F3, prEmojiPresentation}, // E0.6 [2] (⛲..⛳) fountain..flag in hole - {0x26F5, 0x26F5, prEmojiPresentation}, // E0.6 [1] (⛵) sailboat - {0x26FA, 0x26FA, prEmojiPresentation}, // E0.6 [1] (⛺) tent - {0x26FD, 0x26FD, prEmojiPresentation}, // E0.6 [1] (⛽) fuel pump - {0x2705, 0x2705, prEmojiPresentation}, // E0.6 [1] (✅) check mark button - {0x270A, 0x270B, prEmojiPresentation}, // E0.6 [2] (✊..✋) raised fist..raised hand - {0x2728, 0x2728, prEmojiPresentation}, // E0.6 [1] (✨) sparkles - {0x274C, 0x274C, prEmojiPresentation}, // E0.6 [1] (❌) cross mark - {0x274E, 0x274E, prEmojiPresentation}, // E0.6 [1] (❎) cross mark button - {0x2753, 0x2755, prEmojiPresentation}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark - {0x2757, 0x2757, prEmojiPresentation}, // E0.6 [1] (❗) red exclamation mark - {0x2795, 0x2797, prEmojiPresentation}, // E0.6 [3] (➕..➗) plus..divide - {0x27B0, 0x27B0, prEmojiPresentation}, // E0.6 [1] (➰) curly loop - {0x27BF, 0x27BF, prEmojiPresentation}, // E1.0 [1] (➿) double curly loop - {0x2B1B, 0x2B1C, prEmojiPresentation}, // E0.6 [2] (⬛..⬜) black large square..white large square - {0x2B50, 0x2B50, prEmojiPresentation}, // E0.6 [1] (⭐) star - {0x2B55, 0x2B55, prEmojiPresentation}, // E0.6 [1] (⭕) hollow red circle - {0x1F004, 0x1F004, prEmojiPresentation}, // E0.6 [1] (🀄) mahjong red dragon - {0x1F0CF, 0x1F0CF, prEmojiPresentation}, // E0.6 [1] (🃏) joker - {0x1F18E, 0x1F18E, prEmojiPresentation}, // E0.6 [1] (🆎) AB button (blood type) - {0x1F191, 0x1F19A, prEmojiPresentation}, // E0.6 [10] (🆑..🆚) CL button..VS button - {0x1F1E6, 0x1F1FF, prEmojiPresentation}, // E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z - {0x1F201, 0x1F201, prEmojiPresentation}, // E0.6 [1] (🈁) Japanese “here” button - {0x1F21A, 0x1F21A, prEmojiPresentation}, // E0.6 [1] (🈚) Japanese “free of charge” button - {0x1F22F, 0x1F22F, prEmojiPresentation}, // E0.6 [1] (🈯) Japanese “reserved” button - {0x1F232, 0x1F236, prEmojiPresentation}, // E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button - {0x1F238, 0x1F23A, prEmojiPresentation}, // E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button - {0x1F250, 0x1F251, prEmojiPresentation}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button - {0x1F300, 0x1F30C, prEmojiPresentation}, // E0.6 [13] (🌀..🌌) cyclone..milky way - {0x1F30D, 0x1F30E, prEmojiPresentation}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas - {0x1F30F, 0x1F30F, prEmojiPresentation}, // E0.6 [1] (🌏) globe showing Asia-Australia - {0x1F310, 0x1F310, prEmojiPresentation}, // E1.0 [1] (🌐) globe with meridians - {0x1F311, 0x1F311, prEmojiPresentation}, // E0.6 [1] (🌑) new moon - {0x1F312, 0x1F312, prEmojiPresentation}, // E1.0 [1] (🌒) waxing crescent moon - {0x1F313, 0x1F315, prEmojiPresentation}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon - {0x1F316, 0x1F318, prEmojiPresentation}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon - {0x1F319, 0x1F319, prEmojiPresentation}, // E0.6 [1] (🌙) crescent moon - {0x1F31A, 0x1F31A, prEmojiPresentation}, // E1.0 [1] (🌚) new moon face - {0x1F31B, 0x1F31B, prEmojiPresentation}, // E0.6 [1] (🌛) first quarter moon face - {0x1F31C, 0x1F31C, prEmojiPresentation}, // E0.7 [1] (🌜) last quarter moon face - {0x1F31D, 0x1F31E, prEmojiPresentation}, // E1.0 [2] (🌝..🌞) full moon face..sun with face - {0x1F31F, 0x1F320, prEmojiPresentation}, // E0.6 [2] (🌟..🌠) glowing star..shooting star - {0x1F32D, 0x1F32F, prEmojiPresentation}, // E1.0 [3] (🌭..🌯) hot dog..burrito - {0x1F330, 0x1F331, prEmojiPresentation}, // E0.6 [2] (🌰..🌱) chestnut..seedling - {0x1F332, 0x1F333, prEmojiPresentation}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree - {0x1F334, 0x1F335, prEmojiPresentation}, // E0.6 [2] (🌴..🌵) palm tree..cactus - {0x1F337, 0x1F34A, prEmojiPresentation}, // E0.6 [20] (🌷..🍊) tulip..tangerine - {0x1F34B, 0x1F34B, prEmojiPresentation}, // E1.0 [1] (🍋) lemon - {0x1F34C, 0x1F34F, prEmojiPresentation}, // E0.6 [4] (🍌..🍏) banana..green apple - {0x1F350, 0x1F350, prEmojiPresentation}, // E1.0 [1] (🍐) pear - {0x1F351, 0x1F37B, prEmojiPresentation}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs - {0x1F37C, 0x1F37C, prEmojiPresentation}, // E1.0 [1] (🍼) baby bottle - {0x1F37E, 0x1F37F, prEmojiPresentation}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn - {0x1F380, 0x1F393, prEmojiPresentation}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap - {0x1F3A0, 0x1F3C4, prEmojiPresentation}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing - {0x1F3C5, 0x1F3C5, prEmojiPresentation}, // E1.0 [1] (🏅) sports medal - {0x1F3C6, 0x1F3C6, prEmojiPresentation}, // E0.6 [1] (🏆) trophy - {0x1F3C7, 0x1F3C7, prEmojiPresentation}, // E1.0 [1] (🏇) horse racing - {0x1F3C8, 0x1F3C8, prEmojiPresentation}, // E0.6 [1] (🏈) american football - {0x1F3C9, 0x1F3C9, prEmojiPresentation}, // E1.0 [1] (🏉) rugby football - {0x1F3CA, 0x1F3CA, prEmojiPresentation}, // E0.6 [1] (🏊) person swimming - {0x1F3CF, 0x1F3D3, prEmojiPresentation}, // E1.0 [5] (🏏..🏓) cricket game..ping pong - {0x1F3E0, 0x1F3E3, prEmojiPresentation}, // E0.6 [4] (🏠..🏣) house..Japanese post office - {0x1F3E4, 0x1F3E4, prEmojiPresentation}, // E1.0 [1] (🏤) post office - {0x1F3E5, 0x1F3F0, prEmojiPresentation}, // E0.6 [12] (🏥..🏰) hospital..castle - {0x1F3F4, 0x1F3F4, prEmojiPresentation}, // E1.0 [1] (🏴) black flag - {0x1F3F8, 0x1F407, prEmojiPresentation}, // E1.0 [16] (🏸..🐇) badminton..rabbit - {0x1F408, 0x1F408, prEmojiPresentation}, // E0.7 [1] (🐈) cat - {0x1F409, 0x1F40B, prEmojiPresentation}, // E1.0 [3] (🐉..🐋) dragon..whale - {0x1F40C, 0x1F40E, prEmojiPresentation}, // E0.6 [3] (🐌..🐎) snail..horse - {0x1F40F, 0x1F410, prEmojiPresentation}, // E1.0 [2] (🐏..🐐) ram..goat - {0x1F411, 0x1F412, prEmojiPresentation}, // E0.6 [2] (🐑..🐒) ewe..monkey - {0x1F413, 0x1F413, prEmojiPresentation}, // E1.0 [1] (🐓) rooster - {0x1F414, 0x1F414, prEmojiPresentation}, // E0.6 [1] (🐔) chicken - {0x1F415, 0x1F415, prEmojiPresentation}, // E0.7 [1] (🐕) dog - {0x1F416, 0x1F416, prEmojiPresentation}, // E1.0 [1] (🐖) pig - {0x1F417, 0x1F429, prEmojiPresentation}, // E0.6 [19] (🐗..🐩) boar..poodle - {0x1F42A, 0x1F42A, prEmojiPresentation}, // E1.0 [1] (🐪) camel - {0x1F42B, 0x1F43E, prEmojiPresentation}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints - {0x1F440, 0x1F440, prEmojiPresentation}, // E0.6 [1] (👀) eyes - {0x1F442, 0x1F464, prEmojiPresentation}, // E0.6 [35] (👂..👤) ear..bust in silhouette - {0x1F465, 0x1F465, prEmojiPresentation}, // E1.0 [1] (👥) busts in silhouette - {0x1F466, 0x1F46B, prEmojiPresentation}, // E0.6 [6] (👦..👫) boy..woman and man holding hands - {0x1F46C, 0x1F46D, prEmojiPresentation}, // E1.0 [2] (👬..👭) men holding hands..women holding hands - {0x1F46E, 0x1F4AC, prEmojiPresentation}, // E0.6 [63] (👮..💬) police officer..speech balloon - {0x1F4AD, 0x1F4AD, prEmojiPresentation}, // E1.0 [1] (💭) thought balloon - {0x1F4AE, 0x1F4B5, prEmojiPresentation}, // E0.6 [8] (💮..💵) white flower..dollar banknote - {0x1F4B6, 0x1F4B7, prEmojiPresentation}, // E1.0 [2] (💶..💷) euro banknote..pound banknote - {0x1F4B8, 0x1F4EB, prEmojiPresentation}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag - {0x1F4EC, 0x1F4ED, prEmojiPresentation}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag - {0x1F4EE, 0x1F4EE, prEmojiPresentation}, // E0.6 [1] (📮) postbox - {0x1F4EF, 0x1F4EF, prEmojiPresentation}, // E1.0 [1] (📯) postal horn - {0x1F4F0, 0x1F4F4, prEmojiPresentation}, // E0.6 [5] (📰..📴) newspaper..mobile phone off - {0x1F4F5, 0x1F4F5, prEmojiPresentation}, // E1.0 [1] (📵) no mobile phones - {0x1F4F6, 0x1F4F7, prEmojiPresentation}, // E0.6 [2] (📶..📷) antenna bars..camera - {0x1F4F8, 0x1F4F8, prEmojiPresentation}, // E1.0 [1] (📸) camera with flash - {0x1F4F9, 0x1F4FC, prEmojiPresentation}, // E0.6 [4] (📹..📼) video camera..videocassette - {0x1F4FF, 0x1F502, prEmojiPresentation}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button - {0x1F503, 0x1F503, prEmojiPresentation}, // E0.6 [1] (🔃) clockwise vertical arrows - {0x1F504, 0x1F507, prEmojiPresentation}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker - {0x1F508, 0x1F508, prEmojiPresentation}, // E0.7 [1] (🔈) speaker low volume - {0x1F509, 0x1F509, prEmojiPresentation}, // E1.0 [1] (🔉) speaker medium volume - {0x1F50A, 0x1F514, prEmojiPresentation}, // E0.6 [11] (🔊..🔔) speaker high volume..bell - {0x1F515, 0x1F515, prEmojiPresentation}, // E1.0 [1] (🔕) bell with slash - {0x1F516, 0x1F52B, prEmojiPresentation}, // E0.6 [22] (🔖..🔫) bookmark..water pistol - {0x1F52C, 0x1F52D, prEmojiPresentation}, // E1.0 [2] (🔬..🔭) microscope..telescope - {0x1F52E, 0x1F53D, prEmojiPresentation}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button - {0x1F54B, 0x1F54E, prEmojiPresentation}, // E1.0 [4] (🕋..🕎) kaaba..menorah - {0x1F550, 0x1F55B, prEmojiPresentation}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock - {0x1F55C, 0x1F567, prEmojiPresentation}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty - {0x1F57A, 0x1F57A, prEmojiPresentation}, // E3.0 [1] (🕺) man dancing - {0x1F595, 0x1F596, prEmojiPresentation}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute - {0x1F5A4, 0x1F5A4, prEmojiPresentation}, // E3.0 [1] (🖤) black heart - {0x1F5FB, 0x1F5FF, prEmojiPresentation}, // E0.6 [5] (🗻..🗿) mount fuji..moai - {0x1F600, 0x1F600, prEmojiPresentation}, // E1.0 [1] (😀) grinning face - {0x1F601, 0x1F606, prEmojiPresentation}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face - {0x1F607, 0x1F608, prEmojiPresentation}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns - {0x1F609, 0x1F60D, prEmojiPresentation}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes - {0x1F60E, 0x1F60E, prEmojiPresentation}, // E1.0 [1] (😎) smiling face with sunglasses - {0x1F60F, 0x1F60F, prEmojiPresentation}, // E0.6 [1] (😏) smirking face - {0x1F610, 0x1F610, prEmojiPresentation}, // E0.7 [1] (😐) neutral face - {0x1F611, 0x1F611, prEmojiPresentation}, // E1.0 [1] (😑) expressionless face - {0x1F612, 0x1F614, prEmojiPresentation}, // E0.6 [3] (😒..😔) unamused face..pensive face - {0x1F615, 0x1F615, prEmojiPresentation}, // E1.0 [1] (😕) confused face - {0x1F616, 0x1F616, prEmojiPresentation}, // E0.6 [1] (😖) confounded face - {0x1F617, 0x1F617, prEmojiPresentation}, // E1.0 [1] (😗) kissing face - {0x1F618, 0x1F618, prEmojiPresentation}, // E0.6 [1] (😘) face blowing a kiss - {0x1F619, 0x1F619, prEmojiPresentation}, // E1.0 [1] (😙) kissing face with smiling eyes - {0x1F61A, 0x1F61A, prEmojiPresentation}, // E0.6 [1] (😚) kissing face with closed eyes - {0x1F61B, 0x1F61B, prEmojiPresentation}, // E1.0 [1] (😛) face with tongue - {0x1F61C, 0x1F61E, prEmojiPresentation}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face - {0x1F61F, 0x1F61F, prEmojiPresentation}, // E1.0 [1] (😟) worried face - {0x1F620, 0x1F625, prEmojiPresentation}, // E0.6 [6] (😠..😥) angry face..sad but relieved face - {0x1F626, 0x1F627, prEmojiPresentation}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face - {0x1F628, 0x1F62B, prEmojiPresentation}, // E0.6 [4] (😨..😫) fearful face..tired face - {0x1F62C, 0x1F62C, prEmojiPresentation}, // E1.0 [1] (😬) grimacing face - {0x1F62D, 0x1F62D, prEmojiPresentation}, // E0.6 [1] (😭) loudly crying face - {0x1F62E, 0x1F62F, prEmojiPresentation}, // E1.0 [2] (😮..😯) face with open mouth..hushed face - {0x1F630, 0x1F633, prEmojiPresentation}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face - {0x1F634, 0x1F634, prEmojiPresentation}, // E1.0 [1] (😴) sleeping face - {0x1F635, 0x1F635, prEmojiPresentation}, // E0.6 [1] (😵) face with crossed-out eyes - {0x1F636, 0x1F636, prEmojiPresentation}, // E1.0 [1] (😶) face without mouth - {0x1F637, 0x1F640, prEmojiPresentation}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat - {0x1F641, 0x1F644, prEmojiPresentation}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes - {0x1F645, 0x1F64F, prEmojiPresentation}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands - {0x1F680, 0x1F680, prEmojiPresentation}, // E0.6 [1] (🚀) rocket - {0x1F681, 0x1F682, prEmojiPresentation}, // E1.0 [2] (🚁..🚂) helicopter..locomotive - {0x1F683, 0x1F685, prEmojiPresentation}, // E0.6 [3] (🚃..🚅) railway car..bullet train - {0x1F686, 0x1F686, prEmojiPresentation}, // E1.0 [1] (🚆) train - {0x1F687, 0x1F687, prEmojiPresentation}, // E0.6 [1] (🚇) metro - {0x1F688, 0x1F688, prEmojiPresentation}, // E1.0 [1] (🚈) light rail - {0x1F689, 0x1F689, prEmojiPresentation}, // E0.6 [1] (🚉) station - {0x1F68A, 0x1F68B, prEmojiPresentation}, // E1.0 [2] (🚊..🚋) tram..tram car - {0x1F68C, 0x1F68C, prEmojiPresentation}, // E0.6 [1] (🚌) bus - {0x1F68D, 0x1F68D, prEmojiPresentation}, // E0.7 [1] (🚍) oncoming bus - {0x1F68E, 0x1F68E, prEmojiPresentation}, // E1.0 [1] (🚎) trolleybus - {0x1F68F, 0x1F68F, prEmojiPresentation}, // E0.6 [1] (🚏) bus stop - {0x1F690, 0x1F690, prEmojiPresentation}, // E1.0 [1] (🚐) minibus - {0x1F691, 0x1F693, prEmojiPresentation}, // E0.6 [3] (🚑..🚓) ambulance..police car - {0x1F694, 0x1F694, prEmojiPresentation}, // E0.7 [1] (🚔) oncoming police car - {0x1F695, 0x1F695, prEmojiPresentation}, // E0.6 [1] (🚕) taxi - {0x1F696, 0x1F696, prEmojiPresentation}, // E1.0 [1] (🚖) oncoming taxi - {0x1F697, 0x1F697, prEmojiPresentation}, // E0.6 [1] (🚗) automobile - {0x1F698, 0x1F698, prEmojiPresentation}, // E0.7 [1] (🚘) oncoming automobile - {0x1F699, 0x1F69A, prEmojiPresentation}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck - {0x1F69B, 0x1F6A1, prEmojiPresentation}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway - {0x1F6A2, 0x1F6A2, prEmojiPresentation}, // E0.6 [1] (🚢) ship - {0x1F6A3, 0x1F6A3, prEmojiPresentation}, // E1.0 [1] (🚣) person rowing boat - {0x1F6A4, 0x1F6A5, prEmojiPresentation}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light - {0x1F6A6, 0x1F6A6, prEmojiPresentation}, // E1.0 [1] (🚦) vertical traffic light - {0x1F6A7, 0x1F6AD, prEmojiPresentation}, // E0.6 [7] (🚧..🚭) construction..no smoking - {0x1F6AE, 0x1F6B1, prEmojiPresentation}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water - {0x1F6B2, 0x1F6B2, prEmojiPresentation}, // E0.6 [1] (🚲) bicycle - {0x1F6B3, 0x1F6B5, prEmojiPresentation}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking - {0x1F6B6, 0x1F6B6, prEmojiPresentation}, // E0.6 [1] (🚶) person walking - {0x1F6B7, 0x1F6B8, prEmojiPresentation}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing - {0x1F6B9, 0x1F6BE, prEmojiPresentation}, // E0.6 [6] (🚹..🚾) men’s room..water closet - {0x1F6BF, 0x1F6BF, prEmojiPresentation}, // E1.0 [1] (🚿) shower - {0x1F6C0, 0x1F6C0, prEmojiPresentation}, // E0.6 [1] (🛀) person taking bath - {0x1F6C1, 0x1F6C5, prEmojiPresentation}, // E1.0 [5] (🛁..🛅) bathtub..left luggage - {0x1F6CC, 0x1F6CC, prEmojiPresentation}, // E1.0 [1] (🛌) person in bed - {0x1F6D0, 0x1F6D0, prEmojiPresentation}, // E1.0 [1] (🛐) place of worship - {0x1F6D1, 0x1F6D2, prEmojiPresentation}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart - {0x1F6D5, 0x1F6D5, prEmojiPresentation}, // E12.0 [1] (🛕) hindu temple - {0x1F6D6, 0x1F6D7, prEmojiPresentation}, // E13.0 [2] (🛖..🛗) hut..elevator - {0x1F6DC, 0x1F6DC, prEmojiPresentation}, // E15.0 [1] (🛜) wireless - {0x1F6DD, 0x1F6DF, prEmojiPresentation}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy - {0x1F6EB, 0x1F6EC, prEmojiPresentation}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival - {0x1F6F4, 0x1F6F6, prEmojiPresentation}, // E3.0 [3] (🛴..🛶) kick scooter..canoe - {0x1F6F7, 0x1F6F8, prEmojiPresentation}, // E5.0 [2] (🛷..🛸) sled..flying saucer - {0x1F6F9, 0x1F6F9, prEmojiPresentation}, // E11.0 [1] (🛹) skateboard - {0x1F6FA, 0x1F6FA, prEmojiPresentation}, // E12.0 [1] (🛺) auto rickshaw - {0x1F6FB, 0x1F6FC, prEmojiPresentation}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate - {0x1F7E0, 0x1F7EB, prEmojiPresentation}, // E12.0 [12] (🟠..🟫) orange circle..brown square - {0x1F7F0, 0x1F7F0, prEmojiPresentation}, // E14.0 [1] (🟰) heavy equals sign - {0x1F90C, 0x1F90C, prEmojiPresentation}, // E13.0 [1] (🤌) pinched fingers - {0x1F90D, 0x1F90F, prEmojiPresentation}, // E12.0 [3] (🤍..🤏) white heart..pinching hand - {0x1F910, 0x1F918, prEmojiPresentation}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns - {0x1F919, 0x1F91E, prEmojiPresentation}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers - {0x1F91F, 0x1F91F, prEmojiPresentation}, // E5.0 [1] (🤟) love-you gesture - {0x1F920, 0x1F927, prEmojiPresentation}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face - {0x1F928, 0x1F92F, prEmojiPresentation}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head - {0x1F930, 0x1F930, prEmojiPresentation}, // E3.0 [1] (🤰) pregnant woman - {0x1F931, 0x1F932, prEmojiPresentation}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together - {0x1F933, 0x1F93A, prEmojiPresentation}, // E3.0 [8] (🤳..🤺) selfie..person fencing - {0x1F93C, 0x1F93E, prEmojiPresentation}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball - {0x1F93F, 0x1F93F, prEmojiPresentation}, // E12.0 [1] (🤿) diving mask - {0x1F940, 0x1F945, prEmojiPresentation}, // E3.0 [6] (🥀..🥅) wilted flower..goal net - {0x1F947, 0x1F94B, prEmojiPresentation}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform - {0x1F94C, 0x1F94C, prEmojiPresentation}, // E5.0 [1] (🥌) curling stone - {0x1F94D, 0x1F94F, prEmojiPresentation}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc - {0x1F950, 0x1F95E, prEmojiPresentation}, // E3.0 [15] (🥐..🥞) croissant..pancakes - {0x1F95F, 0x1F96B, prEmojiPresentation}, // E5.0 [13] (🥟..🥫) dumpling..canned food - {0x1F96C, 0x1F970, prEmojiPresentation}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts - {0x1F971, 0x1F971, prEmojiPresentation}, // E12.0 [1] (🥱) yawning face - {0x1F972, 0x1F972, prEmojiPresentation}, // E13.0 [1] (🥲) smiling face with tear - {0x1F973, 0x1F976, prEmojiPresentation}, // E11.0 [4] (🥳..🥶) partying face..cold face - {0x1F977, 0x1F978, prEmojiPresentation}, // E13.0 [2] (🥷..🥸) ninja..disguised face - {0x1F979, 0x1F979, prEmojiPresentation}, // E14.0 [1] (🥹) face holding back tears - {0x1F97A, 0x1F97A, prEmojiPresentation}, // E11.0 [1] (🥺) pleading face - {0x1F97B, 0x1F97B, prEmojiPresentation}, // E12.0 [1] (🥻) sari - {0x1F97C, 0x1F97F, prEmojiPresentation}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe - {0x1F980, 0x1F984, prEmojiPresentation}, // E1.0 [5] (🦀..🦄) crab..unicorn - {0x1F985, 0x1F991, prEmojiPresentation}, // E3.0 [13] (🦅..🦑) eagle..squid - {0x1F992, 0x1F997, prEmojiPresentation}, // E5.0 [6] (🦒..🦗) giraffe..cricket - {0x1F998, 0x1F9A2, prEmojiPresentation}, // E11.0 [11] (🦘..🦢) kangaroo..swan - {0x1F9A3, 0x1F9A4, prEmojiPresentation}, // E13.0 [2] (🦣..🦤) mammoth..dodo - {0x1F9A5, 0x1F9AA, prEmojiPresentation}, // E12.0 [6] (🦥..🦪) sloth..oyster - {0x1F9AB, 0x1F9AD, prEmojiPresentation}, // E13.0 [3] (🦫..🦭) beaver..seal - {0x1F9AE, 0x1F9AF, prEmojiPresentation}, // E12.0 [2] (🦮..🦯) guide dog..white cane - {0x1F9B0, 0x1F9B9, prEmojiPresentation}, // E11.0 [10] (🦰..🦹) red hair..supervillain - {0x1F9BA, 0x1F9BF, prEmojiPresentation}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg - {0x1F9C0, 0x1F9C0, prEmojiPresentation}, // E1.0 [1] (🧀) cheese wedge - {0x1F9C1, 0x1F9C2, prEmojiPresentation}, // E11.0 [2] (🧁..🧂) cupcake..salt - {0x1F9C3, 0x1F9CA, prEmojiPresentation}, // E12.0 [8] (🧃..🧊) beverage box..ice - {0x1F9CB, 0x1F9CB, prEmojiPresentation}, // E13.0 [1] (🧋) bubble tea - {0x1F9CC, 0x1F9CC, prEmojiPresentation}, // E14.0 [1] (🧌) troll - {0x1F9CD, 0x1F9CF, prEmojiPresentation}, // E12.0 [3] (🧍..🧏) person standing..deaf person - {0x1F9D0, 0x1F9E6, prEmojiPresentation}, // E5.0 [23] (🧐..🧦) face with monocle..socks - {0x1F9E7, 0x1F9FF, prEmojiPresentation}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet - {0x1FA70, 0x1FA73, prEmojiPresentation}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts - {0x1FA74, 0x1FA74, prEmojiPresentation}, // E13.0 [1] (🩴) thong sandal - {0x1FA75, 0x1FA77, prEmojiPresentation}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart - {0x1FA78, 0x1FA7A, prEmojiPresentation}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope - {0x1FA7B, 0x1FA7C, prEmojiPresentation}, // E14.0 [2] (🩻..🩼) x-ray..crutch - {0x1FA80, 0x1FA82, prEmojiPresentation}, // E12.0 [3] (🪀..🪂) yo-yo..parachute - {0x1FA83, 0x1FA86, prEmojiPresentation}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls - {0x1FA87, 0x1FA88, prEmojiPresentation}, // E15.0 [2] (🪇..🪈) maracas..flute - {0x1FA90, 0x1FA95, prEmojiPresentation}, // E12.0 [6] (🪐..🪕) ringed planet..banjo - {0x1FA96, 0x1FAA8, prEmojiPresentation}, // E13.0 [19] (🪖..🪨) military helmet..rock - {0x1FAA9, 0x1FAAC, prEmojiPresentation}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa - {0x1FAAD, 0x1FAAF, prEmojiPresentation}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda - {0x1FAB0, 0x1FAB6, prEmojiPresentation}, // E13.0 [7] (🪰..🪶) fly..feather - {0x1FAB7, 0x1FABA, prEmojiPresentation}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs - {0x1FABB, 0x1FABD, prEmojiPresentation}, // E15.0 [3] (🪻..🪽) hyacinth..wing - {0x1FABF, 0x1FABF, prEmojiPresentation}, // E15.0 [1] (🪿) goose - {0x1FAC0, 0x1FAC2, prEmojiPresentation}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging - {0x1FAC3, 0x1FAC5, prEmojiPresentation}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown - {0x1FACE, 0x1FACF, prEmojiPresentation}, // E15.0 [2] (🫎..🫏) moose..donkey - {0x1FAD0, 0x1FAD6, prEmojiPresentation}, // E13.0 [7] (🫐..🫖) blueberries..teapot - {0x1FAD7, 0x1FAD9, prEmojiPresentation}, // E14.0 [3] (🫗..🫙) pouring liquid..jar - {0x1FADA, 0x1FADB, prEmojiPresentation}, // E15.0 [2] (🫚..🫛) ginger root..pea pod - {0x1FAE0, 0x1FAE7, prEmojiPresentation}, // E14.0 [8] (🫠..🫧) melting face..bubbles - {0x1FAE8, 0x1FAE8, prEmojiPresentation}, // E15.0 [1] (🫨) shaking face - {0x1FAF0, 0x1FAF6, prEmojiPresentation}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands - {0x1FAF7, 0x1FAF8, prEmojiPresentation}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand -} diff --git a/vendor/github.com/rivo/uniseg/gen_breaktest.go b/vendor/github.com/rivo/uniseg/gen_breaktest.go deleted file mode 100644 index 6bfbeb5..0000000 --- a/vendor/github.com/rivo/uniseg/gen_breaktest.go +++ /dev/null @@ -1,215 +0,0 @@ -//go:build generate - -// This program generates a Go containing a slice of test cases based on the -// Unicode Character Database auxiliary data files. The command line arguments -// are as follows: -// -// 1. The name of the Unicode data file (just the filename, without extension). -// 2. The name of the locally generated Go file. -// 3. The name of the slice containing the test cases. -// 4. The name of the generator, for logging purposes. -// -//go:generate go run gen_breaktest.go GraphemeBreakTest graphemebreak_test.go graphemeBreakTestCases graphemes -//go:generate go run gen_breaktest.go WordBreakTest wordbreak_test.go wordBreakTestCases words -//go:generate go run gen_breaktest.go SentenceBreakTest sentencebreak_test.go sentenceBreakTestCases sentences -//go:generate go run gen_breaktest.go LineBreakTest linebreak_test.go lineBreakTestCases lines - -package main - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "go/format" - "io/ioutil" - "log" - "net/http" - "os" - "time" -) - -// We want to test against a specific version rather than the latest. When the -// package is upgraded to a new version, change these to generate new tests. -const ( - testCaseURL = `https://www.unicode.org/Public/15.0.0/ucd/auxiliary/%s.txt` -) - -func main() { - if len(os.Args) < 5 { - fmt.Println("Not enough arguments, see code for details") - os.Exit(1) - } - - log.SetPrefix("gen_breaktest (" + os.Args[4] + "): ") - log.SetFlags(0) - - // Read text of testcases and parse into Go source code. - src, err := parse(fmt.Sprintf(testCaseURL, os.Args[1])) - if err != nil { - log.Fatal(err) - } - - // Format the Go code. - formatted, err := format.Source(src) - if err != nil { - log.Fatalln("gofmt:", err) - } - - // Write it out. - log.Print("Writing to ", os.Args[2]) - if err := ioutil.WriteFile(os.Args[2], formatted, 0644); err != nil { - log.Fatal(err) - } -} - -// parse reads a break text file, either from a local file or from a URL. It -// parses the file data into Go source code representing the test cases. -func parse(url string) ([]byte, error) { - log.Printf("Parsing %s", url) - res, err := http.Get(url) - if err != nil { - return nil, err - } - body := res.Body - defer body.Close() - - buf := new(bytes.Buffer) - buf.Grow(120 << 10) - buf.WriteString(`// Code generated via go generate from gen_breaktest.go. DO NOT EDIT. - -package uniseg - -// ` + os.Args[3] + ` are Grapheme testcases taken from -// ` + url + ` -// on ` + time.Now().Format("January 2, 2006") + `. See -// https://www.unicode.org/license.html for the Unicode license agreement. -var ` + os.Args[3] + ` = []testCase { -`) - - sc := bufio.NewScanner(body) - num := 1 - var line []byte - original := make([]byte, 0, 64) - expected := make([]byte, 0, 64) - for sc.Scan() { - num++ - line = sc.Bytes() - if len(line) == 0 || line[0] == '#' { - continue - } - var comment []byte - if i := bytes.IndexByte(line, '#'); i >= 0 { - comment = bytes.TrimSpace(line[i+1:]) - line = bytes.TrimSpace(line[:i]) - } - original, expected, err := parseRuneSequence(line, original[:0], expected[:0]) - if err != nil { - return nil, fmt.Errorf(`line %d: %v: %q`, num, err, line) - } - fmt.Fprintf(buf, "\t{original: \"%s\", expected: %s}, // %s\n", original, expected, comment) - } - if err := sc.Err(); err != nil { - return nil, err - } - - // Check for final "# EOF", useful check if we're streaming via HTTP - if !bytes.Equal(line, []byte("# EOF")) { - return nil, fmt.Errorf(`line %d: exected "# EOF" as final line, got %q`, num, line) - } - buf.WriteString("}\n") - return buf.Bytes(), nil -} - -// Used by parseRuneSequence to match input via bytes.HasPrefix. -var ( - prefixBreak = []byte("÷ ") - prefixDontBreak = []byte("× ") - breakOk = []byte("÷") - breakNo = []byte("×") -) - -// parseRuneSequence parses a rune + breaking opportunity sequence from b -// and appends the Go code for testcase.original to orig -// and appends the Go code for testcase.expected to exp. -// It retuns the new orig and exp slices. -// -// E.g. for the input b="÷ 0020 × 0308 ÷ 1F1E6 ÷" -// it will append -// -// "\u0020\u0308\U0001F1E6" -// -// and "[][]rune{{0x0020,0x0308},{0x1F1E6},}" -// to orig and exp respectively. -// -// The formatting of exp is expected to be cleaned up by gofmt or format.Source. -// Note we explicitly require the sequence to start with ÷ and we implicitly -// require it to end with ÷. -func parseRuneSequence(b, orig, exp []byte) ([]byte, []byte, error) { - // Check for and remove first ÷ or ×. - if !bytes.HasPrefix(b, prefixBreak) && !bytes.HasPrefix(b, prefixDontBreak) { - return nil, nil, errors.New("expected ÷ or × as first character") - } - if bytes.HasPrefix(b, prefixBreak) { - b = b[len(prefixBreak):] - } else { - b = b[len(prefixDontBreak):] - } - - boundary := true - exp = append(exp, "[][]rune{"...) - for len(b) > 0 { - if boundary { - exp = append(exp, '{') - } - exp = append(exp, "0x"...) - // Find end of hex digits. - var i int - for i = 0; i < len(b) && b[i] != ' '; i++ { - if d := b[i]; ('0' <= d || d <= '9') || - ('A' <= d || d <= 'F') || - ('a' <= d || d <= 'f') { - continue - } - return nil, nil, errors.New("bad hex digit") - } - switch i { - case 4: - orig = append(orig, "\\u"...) - case 5: - orig = append(orig, "\\U000"...) - default: - return nil, nil, errors.New("unsupport code point hex length") - } - orig = append(orig, b[:i]...) - exp = append(exp, b[:i]...) - b = b[i:] - - // Check for space between hex and ÷ or ×. - if len(b) < 1 || b[0] != ' ' { - return nil, nil, errors.New("bad input") - } - b = b[1:] - - // Check for next boundary. - switch { - case bytes.HasPrefix(b, breakOk): - boundary = true - b = b[len(breakOk):] - case bytes.HasPrefix(b, breakNo): - boundary = false - b = b[len(breakNo):] - default: - return nil, nil, errors.New("missing ÷ or ×") - } - if boundary { - exp = append(exp, '}') - } - exp = append(exp, ',') - if len(b) > 0 && b[0] == ' ' { - b = b[1:] - } - } - exp = append(exp, '}') - return orig, exp, nil -} diff --git a/vendor/github.com/rivo/uniseg/gen_properties.go b/vendor/github.com/rivo/uniseg/gen_properties.go deleted file mode 100644 index 8992d2c..0000000 --- a/vendor/github.com/rivo/uniseg/gen_properties.go +++ /dev/null @@ -1,261 +0,0 @@ -//go:build generate - -// This program generates a property file in Go file from Unicode Character -// Database auxiliary data files. The command line arguments are as follows: -// -// 1. The name of the Unicode data file (just the filename, without extension). -// Can be "-" (to skip) if the emoji flag is included. -// 2. The name of the locally generated Go file. -// 3. The name of the slice mapping code points to properties. -// 4. The name of the generator, for logging purposes. -// 5. (Optional) Flags, comma-separated. The following flags are available: -// - "emojis=<property>": include the specified emoji properties (e.g. -// "Extended_Pictographic"). -// - "gencat": include general category properties. -// -//go:generate go run gen_properties.go auxiliary/GraphemeBreakProperty graphemeproperties.go graphemeCodePoints graphemes emojis=Extended_Pictographic -//go:generate go run gen_properties.go auxiliary/WordBreakProperty wordproperties.go workBreakCodePoints words emojis=Extended_Pictographic -//go:generate go run gen_properties.go auxiliary/SentenceBreakProperty sentenceproperties.go sentenceBreakCodePoints sentences -//go:generate go run gen_properties.go LineBreak lineproperties.go lineBreakCodePoints lines gencat -//go:generate go run gen_properties.go EastAsianWidth eastasianwidth.go eastAsianWidth eastasianwidth -//go:generate go run gen_properties.go - emojipresentation.go emojiPresentation emojipresentation emojis=Emoji_Presentation -package main - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "go/format" - "io/ioutil" - "log" - "net/http" - "os" - "regexp" - "sort" - "strconv" - "strings" - "time" -) - -// We want to test against a specific version rather than the latest. When the -// package is upgraded to a new version, change these to generate new tests. -const ( - propertyURL = `https://www.unicode.org/Public/15.0.0/ucd/%s.txt` - emojiURL = `https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt` -) - -// The regular expression for a line containing a code point range property. -var propertyPattern = regexp.MustCompile(`^([0-9A-F]{4,6})(\.\.([0-9A-F]{4,6}))?\s*;\s*([A-Za-z0-9_]+)\s*#\s(.+)$`) - -func main() { - if len(os.Args) < 5 { - fmt.Println("Not enough arguments, see code for details") - os.Exit(1) - } - - log.SetPrefix("gen_properties (" + os.Args[4] + "): ") - log.SetFlags(0) - - // Parse flags. - flags := make(map[string]string) - if len(os.Args) >= 6 { - for _, flag := range strings.Split(os.Args[5], ",") { - flagFields := strings.Split(flag, "=") - if len(flagFields) == 1 { - flags[flagFields[0]] = "yes" - } else { - flags[flagFields[0]] = flagFields[1] - } - } - } - - // Parse the text file and generate Go source code from it. - _, includeGeneralCategory := flags["gencat"] - var mainURL string - if os.Args[1] != "-" { - mainURL = fmt.Sprintf(propertyURL, os.Args[1]) - } - src, err := parse(mainURL, flags["emojis"], includeGeneralCategory) - if err != nil { - log.Fatal(err) - } - - // Format the Go code. - formatted, err := format.Source([]byte(src)) - if err != nil { - log.Fatal("gofmt:", err) - } - - // Save it to the (local) target file. - log.Print("Writing to ", os.Args[2]) - if err := ioutil.WriteFile(os.Args[2], formatted, 0644); err != nil { - log.Fatal(err) - } -} - -// parse parses the Unicode Properties text files located at the given URLs and -// returns their equivalent Go source code to be used in the uniseg package. If -// "emojiProperty" is not an empty string, emoji code points for that emoji -// property (e.g. "Extended_Pictographic") will be included. In those cases, you -// may pass an empty "propertyURL" to skip parsing the main properties file. If -// "includeGeneralCategory" is true, the Unicode General Category property will -// be extracted from the comments and included in the output. -func parse(propertyURL, emojiProperty string, includeGeneralCategory bool) (string, error) { - if propertyURL == "" && emojiProperty == "" { - return "", errors.New("no properties to parse") - } - - // Temporary buffer to hold properties. - var properties [][4]string - - // Open the first URL. - if propertyURL != "" { - log.Printf("Parsing %s", propertyURL) - res, err := http.Get(propertyURL) - if err != nil { - return "", err - } - in1 := res.Body - defer in1.Close() - - // Parse it. - scanner := bufio.NewScanner(in1) - num := 0 - for scanner.Scan() { - num++ - line := strings.TrimSpace(scanner.Text()) - - // Skip comments and empty lines. - if strings.HasPrefix(line, "#") || line == "" { - continue - } - - // Everything else must be a code point range, a property and a comment. - from, to, property, comment, err := parseProperty(line) - if err != nil { - return "", fmt.Errorf("%s line %d: %v", os.Args[4], num, err) - } - properties = append(properties, [4]string{from, to, property, comment}) - } - if err := scanner.Err(); err != nil { - return "", err - } - } - - // Open the second URL. - if emojiProperty != "" { - log.Printf("Parsing %s", emojiURL) - res, err := http.Get(emojiURL) - if err != nil { - return "", err - } - in2 := res.Body - defer in2.Close() - - // Parse it. - scanner := bufio.NewScanner(in2) - num := 0 - for scanner.Scan() { - num++ - line := scanner.Text() - - // Skip comments, empty lines, and everything not containing - // "Extended_Pictographic". - if strings.HasPrefix(line, "#") || line == "" || !strings.Contains(line, emojiProperty) { - continue - } - - // Everything else must be a code point range, a property and a comment. - from, to, property, comment, err := parseProperty(line) - if err != nil { - return "", fmt.Errorf("emojis line %d: %v", num, err) - } - properties = append(properties, [4]string{from, to, property, comment}) - } - if err := scanner.Err(); err != nil { - return "", err - } - } - - // Avoid overflow during binary search. - if len(properties) >= 1<<31 { - return "", errors.New("too many properties") - } - - // Sort properties. - sort.Slice(properties, func(i, j int) bool { - left, _ := strconv.ParseUint(properties[i][0], 16, 64) - right, _ := strconv.ParseUint(properties[j][0], 16, 64) - return left < right - }) - - // Header. - var ( - buf bytes.Buffer - emojiComment string - ) - columns := 3 - if includeGeneralCategory { - columns = 4 - } - if emojiURL != "" { - emojiComment = ` -// and -// ` + emojiURL + ` -// ("Extended_Pictographic" only)` - } - buf.WriteString(`// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// ` + os.Args[3] + ` are taken from -// ` + propertyURL + emojiComment + ` -// on ` + time.Now().Format("January 2, 2006") + `. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var ` + os.Args[3] + ` = [][` + strconv.Itoa(columns) + `]int{ - `) - - // Properties. - for _, prop := range properties { - if includeGeneralCategory { - generalCategory := "gc" + prop[3][:2] - if generalCategory == "gcL&" { - generalCategory = "gcLC" - } - prop[3] = prop[3][3:] - fmt.Fprintf(&buf, "{0x%s,0x%s,%s,%s}, // %s\n", prop[0], prop[1], translateProperty("pr", prop[2]), generalCategory, prop[3]) - } else { - fmt.Fprintf(&buf, "{0x%s,0x%s,%s}, // %s\n", prop[0], prop[1], translateProperty("pr", prop[2]), prop[3]) - } - } - - // Tail. - buf.WriteString("}") - - return buf.String(), nil -} - -// parseProperty parses a line of the Unicode properties text file containing a -// property for a code point range and returns it along with its comment. -func parseProperty(line string) (from, to, property, comment string, err error) { - fields := propertyPattern.FindStringSubmatch(line) - if fields == nil { - err = errors.New("no property found") - return - } - from = fields[1] - to = fields[3] - if to == "" { - to = from - } - property = fields[4] - comment = fields[5] - return -} - -// translateProperty translates a property name as used in the Unicode data file -// to a variable used in the Go code. -func translateProperty(prefix, property string) string { - return prefix + strings.ReplaceAll(property, "_", "") -} diff --git a/vendor/github.com/rivo/uniseg/grapheme.go b/vendor/github.com/rivo/uniseg/grapheme.go deleted file mode 100644 index b12403d..0000000 --- a/vendor/github.com/rivo/uniseg/grapheme.go +++ /dev/null @@ -1,331 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// Graphemes implements an iterator over Unicode grapheme clusters, or -// user-perceived characters. While iterating, it also provides information -// about word boundaries, sentence boundaries, line breaks, and monospace -// character widths. -// -// After constructing the class via [NewGraphemes] for a given string "str", -// [Graphemes.Next] is called for every grapheme cluster in a loop until it -// returns false. Inside the loop, information about the grapheme cluster as -// well as boundary information and character width is available via the various -// methods (see examples below). -// -// This class basically wraps the [StepString] parser and provides a convenient -// interface to it. If you are only interested in some parts of this package's -// functionality, using the specialized functions starting with "First" is -// almost always faster. -type Graphemes struct { - // The original string. - original string - - // The remaining string to be parsed. - remaining string - - // The current grapheme cluster. - cluster string - - // The byte offset of the current grapheme cluster relative to the original - // string. - offset int - - // The current boundary information of the [Step] parser. - boundaries int - - // The current state of the [Step] parser. - state int -} - -// NewGraphemes returns a new grapheme cluster iterator. -func NewGraphemes(str string) *Graphemes { - return &Graphemes{ - original: str, - remaining: str, - state: -1, - } -} - -// Next advances the iterator by one grapheme cluster and returns false if no -// clusters are left. This function must be called before the first cluster is -// accessed. -func (g *Graphemes) Next() bool { - if len(g.remaining) == 0 { - // We're already past the end. - g.state = -2 - g.cluster = "" - return false - } - g.offset += len(g.cluster) - g.cluster, g.remaining, g.boundaries, g.state = StepString(g.remaining, g.state) - return true -} - -// Runes returns a slice of runes (code points) which corresponds to the current -// grapheme cluster. If the iterator is already past the end or [Graphemes.Next] -// has not yet been called, nil is returned. -func (g *Graphemes) Runes() []rune { - if g.state < 0 { - return nil - } - return []rune(g.cluster) -} - -// Str returns a substring of the original string which corresponds to the -// current grapheme cluster. If the iterator is already past the end or -// [Graphemes.Next] has not yet been called, an empty string is returned. -func (g *Graphemes) Str() string { - return g.cluster -} - -// Bytes returns a byte slice which corresponds to the current grapheme cluster. -// If the iterator is already past the end or [Graphemes.Next] has not yet been -// called, nil is returned. -func (g *Graphemes) Bytes() []byte { - if g.state < 0 { - return nil - } - return []byte(g.cluster) -} - -// Positions returns the interval of the current grapheme cluster as byte -// positions into the original string. The first returned value "from" indexes -// the first byte and the second returned value "to" indexes the first byte that -// is not included anymore, i.e. str[from:to] is the current grapheme cluster of -// the original string "str". If [Graphemes.Next] has not yet been called, both -// values are 0. If the iterator is already past the end, both values are 1. -func (g *Graphemes) Positions() (int, int) { - if g.state == -1 { - return 0, 0 - } else if g.state == -2 { - return 1, 1 - } - return g.offset, g.offset + len(g.cluster) -} - -// IsWordBoundary returns true if a word ends after the current grapheme -// cluster. -func (g *Graphemes) IsWordBoundary() bool { - if g.state < 0 { - return true - } - return g.boundaries&MaskWord != 0 -} - -// IsSentenceBoundary returns true if a sentence ends after the current -// grapheme cluster. -func (g *Graphemes) IsSentenceBoundary() bool { - if g.state < 0 { - return true - } - return g.boundaries&MaskSentence != 0 -} - -// LineBreak returns whether the line can be broken after the current grapheme -// cluster. A value of [LineDontBreak] means the line may not be broken, a value -// of [LineMustBreak] means the line must be broken, and a value of -// [LineCanBreak] means the line may or may not be broken. -func (g *Graphemes) LineBreak() int { - if g.state == -1 { - return LineDontBreak - } - if g.state == -2 { - return LineMustBreak - } - return g.boundaries & MaskLine -} - -// Width returns the monospace width of the current grapheme cluster. -func (g *Graphemes) Width() int { - if g.state < 0 { - return 0 - } - return g.boundaries >> ShiftWidth -} - -// Reset puts the iterator into its initial state such that the next call to -// [Graphemes.Next] sets it to the first grapheme cluster again. -func (g *Graphemes) Reset() { - g.state = -1 - g.offset = 0 - g.cluster = "" - g.remaining = g.original -} - -// GraphemeClusterCount returns the number of user-perceived characters -// (grapheme clusters) for the given string. -func GraphemeClusterCount(s string) (n int) { - state := -1 - for len(s) > 0 { - _, s, _, state = FirstGraphemeClusterInString(s, state) - n++ - } - return -} - -// ReverseString reverses the given string while observing grapheme cluster -// boundaries. -func ReverseString(s string) string { - str := []byte(s) - reversed := make([]byte, len(str)) - state := -1 - index := len(str) - for len(str) > 0 { - var cluster []byte - cluster, str, _, state = FirstGraphemeCluster(str, state) - index -= len(cluster) - copy(reversed[index:], cluster) - if index <= len(str)/2 { - break - } - } - return string(reversed) -} - -// The number of bits the grapheme property must be shifted to make place for -// grapheme states. -const shiftGraphemePropState = 4 - -// FirstGraphemeCluster returns the first grapheme cluster found in the given -// byte slice according to the rules of [Unicode Standard Annex #29, Grapheme -// Cluster Boundaries]. This function can be called continuously to extract all -// grapheme clusters from a byte slice, as illustrated in the example below. -// -// If you don't know the current state, for example when calling the function -// for the first time, you must pass -1. For consecutive calls, pass the state -// and rest slice returned by the previous call. -// -// The "rest" slice is the sub-slice of the original byte slice "b" starting -// after the last byte of the identified grapheme cluster. If the length of the -// "rest" slice is 0, the entire byte slice "b" has been processed. The -// "cluster" byte slice is the sub-slice of the input slice containing the -// identified grapheme cluster. -// -// The returned width is the width of the grapheme cluster for most monospace -// fonts where a value of 1 represents one character cell. -// -// Given an empty byte slice "b", the function returns nil values. -// -// While slightly less convenient than using the Graphemes class, this function -// has much better performance and makes no allocations. It lends itself well to -// large byte slices. -// -// [Unicode Standard Annex #29, Grapheme Cluster Boundaries]: http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries -func FirstGraphemeCluster(b []byte, state int) (cluster, rest []byte, width, newState int) { - // An empty byte slice returns nothing. - if len(b) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRune(b) - if len(b) <= length { // If we're already past the end, there is nothing else to parse. - var prop int - if state < 0 { - prop = propertyGraphemes(r) - } else { - prop = state >> shiftGraphemePropState - } - return b, nil, runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) - } - - // If we don't know the state, determine it now. - var firstProp int - if state < 0 { - state, firstProp, _ = transitionGraphemeState(state, r) - } else { - firstProp = state >> shiftGraphemePropState - } - width += runeWidth(r, firstProp) - - // Transition until we find a boundary. - for { - var ( - prop int - boundary bool - ) - - r, l := utf8.DecodeRune(b[length:]) - state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) - - if boundary { - return b[:length], b[length:], width, state | (prop << shiftGraphemePropState) - } - - if firstProp == prExtendedPictographic { - if r == vs15 { - width = 1 - } else if r == vs16 { - width = 2 - } - } else if firstProp != prRegionalIndicator && firstProp != prL { - width += runeWidth(r, prop) - } - - length += l - if len(b) <= length { - return b, nil, width, grAny | (prop << shiftGraphemePropState) - } - } -} - -// FirstGraphemeClusterInString is like [FirstGraphemeCluster] but its input and -// outputs are strings. -func FirstGraphemeClusterInString(str string, state int) (cluster, rest string, width, newState int) { - // An empty string returns nothing. - if len(str) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRuneInString(str) - if len(str) <= length { // If we're already past the end, there is nothing else to parse. - var prop int - if state < 0 { - prop = propertyGraphemes(r) - } else { - prop = state >> shiftGraphemePropState - } - return str, "", runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) - } - - // If we don't know the state, determine it now. - var firstProp int - if state < 0 { - state, firstProp, _ = transitionGraphemeState(state, r) - } else { - firstProp = state >> shiftGraphemePropState - } - width += runeWidth(r, firstProp) - - // Transition until we find a boundary. - for { - var ( - prop int - boundary bool - ) - - r, l := utf8.DecodeRuneInString(str[length:]) - state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) - - if boundary { - return str[:length], str[length:], width, state | (prop << shiftGraphemePropState) - } - - if firstProp == prExtendedPictographic { - if r == vs15 { - width = 1 - } else if r == vs16 { - width = 2 - } - } else if firstProp != prRegionalIndicator && firstProp != prL { - width += runeWidth(r, prop) - } - - length += l - if len(str) <= length { - return str, "", width, grAny | (prop << shiftGraphemePropState) - } - } -} diff --git a/vendor/github.com/rivo/uniseg/graphemeproperties.go b/vendor/github.com/rivo/uniseg/graphemeproperties.go deleted file mode 100644 index 0aff4a6..0000000 --- a/vendor/github.com/rivo/uniseg/graphemeproperties.go +++ /dev/null @@ -1,1915 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// graphemeCodePoints are taken from -// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/GraphemeBreakProperty.txt -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var graphemeCodePoints = [][3]int{ - {0x0000, 0x0009, prControl}, // Cc [10] <control-0000>..<control-0009> - {0x000A, 0x000A, prLF}, // Cc <control-000A> - {0x000B, 0x000C, prControl}, // Cc [2] <control-000B>..<control-000C> - {0x000D, 0x000D, prCR}, // Cc <control-000D> - {0x000E, 0x001F, prControl}, // Cc [18] <control-000E>..<control-001F> - {0x007F, 0x009F, prControl}, // Cc [33] <control-007F>..<control-009F> - {0x00A9, 0x00A9, prExtendedPictographic}, // E0.6 [1] (©️) copyright - {0x00AD, 0x00AD, prControl}, // Cf SOFT HYPHEN - {0x00AE, 0x00AE, prExtendedPictographic}, // E0.6 [1] (®️) registered - {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X - {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE - {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN - {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG - {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE - {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT - {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT - {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN - {0x0600, 0x0605, prPrepend}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE - {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA - {0x061C, 0x061C, prControl}, // Cf ARABIC LETTER MARK - {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW - {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF - {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN - {0x06DD, 0x06DD, prPrepend}, // Cf ARABIC END OF AYAH - {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA - {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON - {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM - {0x070F, 0x070F, prPrepend}, // Cf SYRIAC ABBREVIATION MARK - {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH - {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH - {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN - {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE - {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN - {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH - {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A - {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U - {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - {0x0890, 0x0891, prPrepend}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE - {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA - {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA - {0x08E2, 0x08E2, prPrepend}, // Cf ARABIC DISPUTED END OF AYAH - {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - {0x0903, 0x0903, prSpacingMark}, // Mc DEVANAGARI SIGN VISARGA - {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE - {0x093B, 0x093B, prSpacingMark}, // Mc DEVANAGARI VOWEL SIGN OOE - {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA - {0x093E, 0x0940, prSpacingMark}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II - {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI - {0x0949, 0x094C, prSpacingMark}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU - {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA - {0x094E, 0x094F, prSpacingMark}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW - {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE - {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL - {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU - {0x0982, 0x0983, prSpacingMark}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA - {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA - {0x09BE, 0x09BE, prExtend}, // Mc BENGALI VOWEL SIGN AA - {0x09BF, 0x09C0, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II - {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR - {0x09C7, 0x09C8, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI - {0x09CB, 0x09CC, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU - {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA - {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK - {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL - {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK - {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI - {0x0A03, 0x0A03, prSpacingMark}, // Mc GURMUKHI SIGN VISARGA - {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA - {0x0A3E, 0x0A40, prSpacingMark}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II - {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU - {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI - {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA - {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT - {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK - {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH - {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA - {0x0A83, 0x0A83, prSpacingMark}, // Mc GUJARATI SIGN VISARGA - {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA - {0x0ABE, 0x0AC0, prSpacingMark}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II - {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E - {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI - {0x0AC9, 0x0AC9, prSpacingMark}, // Mc GUJARATI VOWEL SIGN CANDRA O - {0x0ACB, 0x0ACC, prSpacingMark}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU - {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA - {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL - {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE - {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU - {0x0B02, 0x0B03, prSpacingMark}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA - {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA - {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA - {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I - {0x0B40, 0x0B40, prSpacingMark}, // Mc ORIYA VOWEL SIGN II - {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR - {0x0B47, 0x0B48, prSpacingMark}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI - {0x0B4B, 0x0B4C, prSpacingMark}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU - {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA - {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK - {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK - {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL - {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA - {0x0BBE, 0x0BBE, prExtend}, // Mc TAMIL VOWEL SIGN AA - {0x0BBF, 0x0BBF, prSpacingMark}, // Mc TAMIL VOWEL SIGN I - {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II - {0x0BC1, 0x0BC2, prSpacingMark}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU - {0x0BC6, 0x0BC8, prSpacingMark}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI - {0x0BCA, 0x0BCC, prSpacingMark}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU - {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA - {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK - {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE - {0x0C01, 0x0C03, prSpacingMark}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA - {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE - {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA - {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II - {0x0C41, 0x0C44, prSpacingMark}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR - {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI - {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA - {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK - {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU - {0x0C82, 0x0C83, prSpacingMark}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA - {0x0CBE, 0x0CBE, prSpacingMark}, // Mc KANNADA VOWEL SIGN AA - {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I - {0x0CC0, 0x0CC1, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U - {0x0CC2, 0x0CC2, prExtend}, // Mc KANNADA VOWEL SIGN UU - {0x0CC3, 0x0CC4, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR - {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E - {0x0CC7, 0x0CC8, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI - {0x0CCA, 0x0CCB, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO - {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA - {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK - {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL - {0x0CF3, 0x0CF3, prSpacingMark}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT - {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU - {0x0D02, 0x0D03, prSpacingMark}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA - {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA - {0x0D3E, 0x0D3E, prExtend}, // Mc MALAYALAM VOWEL SIGN AA - {0x0D3F, 0x0D40, prSpacingMark}, // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II - {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR - {0x0D46, 0x0D48, prSpacingMark}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - {0x0D4A, 0x0D4C, prSpacingMark}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA - {0x0D4E, 0x0D4E, prPrepend}, // Lo MALAYALAM LETTER DOT REPH - {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK - {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL - {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU - {0x0D82, 0x0D83, prSpacingMark}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA - {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA - {0x0DCF, 0x0DCF, prExtend}, // Mc SINHALA VOWEL SIGN AELA-PILLA - {0x0DD0, 0x0DD1, prSpacingMark}, // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA - {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA - {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA - {0x0DD8, 0x0DDE, prSpacingMark}, // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA - {0x0DDF, 0x0DDF, prExtend}, // Mc SINHALA VOWEL SIGN GAYANUKITTA - {0x0DF2, 0x0DF3, prSpacingMark}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA - {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT - {0x0E33, 0x0E33, prSpacingMark}, // Lo THAI CHARACTER SARA AM - {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU - {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN - {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN - {0x0EB3, 0x0EB3, prSpacingMark}, // Lo LAO VOWEL SIGN AM - {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO - {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN - {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS - {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA - {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS - {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU - {0x0F3E, 0x0F3F, prSpacingMark}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES - {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO - {0x0F7F, 0x0F7F, prSpacingMark}, // Mc TIBETAN SIGN RNAM BCAD - {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA - {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS - {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA - {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA - {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN - {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU - {0x1031, 0x1031, prSpacingMark}, // Mc MYANMAR VOWEL SIGN E - {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW - {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT - {0x103B, 0x103C, prSpacingMark}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA - {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA - {0x1056, 0x1057, prSpacingMark}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR - {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA - {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE - {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA - {0x1084, 0x1084, prSpacingMark}, // Mc MYANMAR VOWEL SIGN SHAN E - {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y - {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE - {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI - {0x1100, 0x115F, prL}, // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER - {0x1160, 0x11A7, prV}, // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE - {0x11A8, 0x11FF, prT}, // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN - {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK - {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - {0x1715, 0x1715, prSpacingMark}, // Mc TAGALOG SIGN PAMUDPOD - {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U - {0x1734, 0x1734, prSpacingMark}, // Mc HANUNOO SIGN PAMUDPOD - {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA - {0x17B6, 0x17B6, prSpacingMark}, // Mc KHMER VOWEL SIGN AA - {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA - {0x17BE, 0x17C5, prSpacingMark}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU - {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT - {0x17C7, 0x17C8, prSpacingMark}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU - {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT - {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN - {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - {0x180E, 0x180E, prControl}, // Cf MONGOLIAN VOWEL SEPARATOR - {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR - {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA - {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - {0x1923, 0x1926, prSpacingMark}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU - {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O - {0x1929, 0x192B, prSpacingMark}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA - {0x1930, 0x1931, prSpacingMark}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA - {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA - {0x1933, 0x1938, prSpacingMark}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA - {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I - {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U - {0x1A19, 0x1A1A, prSpacingMark}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O - {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE - {0x1A55, 0x1A55, prSpacingMark}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA - {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA - {0x1A57, 0x1A57, prSpacingMark}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI - {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA - {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT - {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT - {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW - {0x1A6D, 0x1A72, prSpacingMark}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI - {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN - {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT - {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW - {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY - {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T - {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG - {0x1B04, 0x1B04, prSpacingMark}, // Mc BALINESE SIGN BISAH - {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN - {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG - {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA - {0x1B3B, 0x1B3B, prSpacingMark}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG - {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA - {0x1B3D, 0x1B41, prSpacingMark}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG - {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET - {0x1B43, 0x1B44, prSpacingMark}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG - {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG - {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR - {0x1B82, 0x1B82, prSpacingMark}, // Mc SUNDANESE SIGN PANGWISAD - {0x1BA1, 0x1BA1, prSpacingMark}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL - {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU - {0x1BA6, 0x1BA7, prSpacingMark}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG - {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG - {0x1BAA, 0x1BAA, prSpacingMark}, // Mc SUNDANESE SIGN PAMAAEH - {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA - {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI - {0x1BE7, 0x1BE7, prSpacingMark}, // Mc BATAK VOWEL SIGN E - {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE - {0x1BEA, 0x1BEC, prSpacingMark}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O - {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O - {0x1BEE, 0x1BEE, prSpacingMark}, // Mc BATAK VOWEL SIGN U - {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H - {0x1BF2, 0x1BF3, prSpacingMark}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN - {0x1C24, 0x1C2B, prSpacingMark}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU - {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T - {0x1C34, 0x1C35, prSpacingMark}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG - {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA - {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - {0x1CE1, 0x1CE1, prSpacingMark}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA - {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL - {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK - {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE - {0x1CF7, 0x1CF7, prSpacingMark}, // Mc VEDIC SIGN ATIKRAMA - {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE - {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - {0x200B, 0x200B, prControl}, // Cf ZERO WIDTH SPACE - {0x200C, 0x200C, prExtend}, // Cf ZERO WIDTH NON-JOINER - {0x200D, 0x200D, prZWJ}, // Cf ZERO WIDTH JOINER - {0x200E, 0x200F, prControl}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK - {0x2028, 0x2028, prControl}, // Zl LINE SEPARATOR - {0x2029, 0x2029, prControl}, // Zp PARAGRAPH SEPARATOR - {0x202A, 0x202E, prControl}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - {0x203C, 0x203C, prExtendedPictographic}, // E0.6 [1] (‼️) double exclamation mark - {0x2049, 0x2049, prExtendedPictographic}, // E0.6 [1] (⁉️) exclamation question mark - {0x2060, 0x2064, prControl}, // Cf [5] WORD JOINER..INVISIBLE PLUS - {0x2065, 0x2065, prControl}, // Cn <reserved-2065> - {0x2066, 0x206F, prControl}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES - {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE - {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH - {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE - {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE - {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE - {0x2122, 0x2122, prExtendedPictographic}, // E0.6 [1] (™️) trade mark - {0x2139, 0x2139, prExtendedPictographic}, // E0.6 [1] (ℹ️) information - {0x2194, 0x2199, prExtendedPictographic}, // E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow - {0x21A9, 0x21AA, prExtendedPictographic}, // E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right - {0x231A, 0x231B, prExtendedPictographic}, // E0.6 [2] (⌚..⌛) watch..hourglass done - {0x2328, 0x2328, prExtendedPictographic}, // E1.0 [1] (⌨️) keyboard - {0x2388, 0x2388, prExtendedPictographic}, // E0.0 [1] (⎈) HELM SYMBOL - {0x23CF, 0x23CF, prExtendedPictographic}, // E1.0 [1] (⏏️) eject button - {0x23E9, 0x23EC, prExtendedPictographic}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button - {0x23ED, 0x23EE, prExtendedPictographic}, // E0.7 [2] (⏭️..⏮️) next track button..last track button - {0x23EF, 0x23EF, prExtendedPictographic}, // E1.0 [1] (⏯️) play or pause button - {0x23F0, 0x23F0, prExtendedPictographic}, // E0.6 [1] (⏰) alarm clock - {0x23F1, 0x23F2, prExtendedPictographic}, // E1.0 [2] (⏱️..⏲️) stopwatch..timer clock - {0x23F3, 0x23F3, prExtendedPictographic}, // E0.6 [1] (⏳) hourglass not done - {0x23F8, 0x23FA, prExtendedPictographic}, // E0.7 [3] (⏸️..⏺️) pause button..record button - {0x24C2, 0x24C2, prExtendedPictographic}, // E0.6 [1] (Ⓜ️) circled M - {0x25AA, 0x25AB, prExtendedPictographic}, // E0.6 [2] (▪️..▫️) black small square..white small square - {0x25B6, 0x25B6, prExtendedPictographic}, // E0.6 [1] (▶️) play button - {0x25C0, 0x25C0, prExtendedPictographic}, // E0.6 [1] (◀️) reverse button - {0x25FB, 0x25FE, prExtendedPictographic}, // E0.6 [4] (◻️..◾) white medium square..black medium-small square - {0x2600, 0x2601, prExtendedPictographic}, // E0.6 [2] (☀️..☁️) sun..cloud - {0x2602, 0x2603, prExtendedPictographic}, // E0.7 [2] (☂️..☃️) umbrella..snowman - {0x2604, 0x2604, prExtendedPictographic}, // E1.0 [1] (☄️) comet - {0x2605, 0x2605, prExtendedPictographic}, // E0.0 [1] (★) BLACK STAR - {0x2607, 0x260D, prExtendedPictographic}, // E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION - {0x260E, 0x260E, prExtendedPictographic}, // E0.6 [1] (☎️) telephone - {0x260F, 0x2610, prExtendedPictographic}, // E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX - {0x2611, 0x2611, prExtendedPictographic}, // E0.6 [1] (☑️) check box with check - {0x2612, 0x2612, prExtendedPictographic}, // E0.0 [1] (☒) BALLOT BOX WITH X - {0x2614, 0x2615, prExtendedPictographic}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage - {0x2616, 0x2617, prExtendedPictographic}, // E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE - {0x2618, 0x2618, prExtendedPictographic}, // E1.0 [1] (☘️) shamrock - {0x2619, 0x261C, prExtendedPictographic}, // E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX - {0x261D, 0x261D, prExtendedPictographic}, // E0.6 [1] (☝️) index pointing up - {0x261E, 0x261F, prExtendedPictographic}, // E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX - {0x2620, 0x2620, prExtendedPictographic}, // E1.0 [1] (☠️) skull and crossbones - {0x2621, 0x2621, prExtendedPictographic}, // E0.0 [1] (☡) CAUTION SIGN - {0x2622, 0x2623, prExtendedPictographic}, // E1.0 [2] (☢️..☣️) radioactive..biohazard - {0x2624, 0x2625, prExtendedPictographic}, // E0.0 [2] (☤..☥) CADUCEUS..ANKH - {0x2626, 0x2626, prExtendedPictographic}, // E1.0 [1] (☦️) orthodox cross - {0x2627, 0x2629, prExtendedPictographic}, // E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM - {0x262A, 0x262A, prExtendedPictographic}, // E0.7 [1] (☪️) star and crescent - {0x262B, 0x262D, prExtendedPictographic}, // E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE - {0x262E, 0x262E, prExtendedPictographic}, // E1.0 [1] (☮️) peace symbol - {0x262F, 0x262F, prExtendedPictographic}, // E0.7 [1] (☯️) yin yang - {0x2630, 0x2637, prExtendedPictographic}, // E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH - {0x2638, 0x2639, prExtendedPictographic}, // E0.7 [2] (☸️..☹️) wheel of dharma..frowning face - {0x263A, 0x263A, prExtendedPictographic}, // E0.6 [1] (☺️) smiling face - {0x263B, 0x263F, prExtendedPictographic}, // E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY - {0x2640, 0x2640, prExtendedPictographic}, // E4.0 [1] (♀️) female sign - {0x2641, 0x2641, prExtendedPictographic}, // E0.0 [1] (♁) EARTH - {0x2642, 0x2642, prExtendedPictographic}, // E4.0 [1] (♂️) male sign - {0x2643, 0x2647, prExtendedPictographic}, // E0.0 [5] (♃..♇) JUPITER..PLUTO - {0x2648, 0x2653, prExtendedPictographic}, // E0.6 [12] (♈..♓) Aries..Pisces - {0x2654, 0x265E, prExtendedPictographic}, // E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT - {0x265F, 0x265F, prExtendedPictographic}, // E11.0 [1] (♟️) chess pawn - {0x2660, 0x2660, prExtendedPictographic}, // E0.6 [1] (♠️) spade suit - {0x2661, 0x2662, prExtendedPictographic}, // E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT - {0x2663, 0x2663, prExtendedPictographic}, // E0.6 [1] (♣️) club suit - {0x2664, 0x2664, prExtendedPictographic}, // E0.0 [1] (♤) WHITE SPADE SUIT - {0x2665, 0x2666, prExtendedPictographic}, // E0.6 [2] (♥️..♦️) heart suit..diamond suit - {0x2667, 0x2667, prExtendedPictographic}, // E0.0 [1] (♧) WHITE CLUB SUIT - {0x2668, 0x2668, prExtendedPictographic}, // E0.6 [1] (♨️) hot springs - {0x2669, 0x267A, prExtendedPictographic}, // E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS - {0x267B, 0x267B, prExtendedPictographic}, // E0.6 [1] (♻️) recycling symbol - {0x267C, 0x267D, prExtendedPictographic}, // E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL - {0x267E, 0x267E, prExtendedPictographic}, // E11.0 [1] (♾️) infinity - {0x267F, 0x267F, prExtendedPictographic}, // E0.6 [1] (♿) wheelchair symbol - {0x2680, 0x2685, prExtendedPictographic}, // E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 - {0x2690, 0x2691, prExtendedPictographic}, // E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG - {0x2692, 0x2692, prExtendedPictographic}, // E1.0 [1] (⚒️) hammer and pick - {0x2693, 0x2693, prExtendedPictographic}, // E0.6 [1] (⚓) anchor - {0x2694, 0x2694, prExtendedPictographic}, // E1.0 [1] (⚔️) crossed swords - {0x2695, 0x2695, prExtendedPictographic}, // E4.0 [1] (⚕️) medical symbol - {0x2696, 0x2697, prExtendedPictographic}, // E1.0 [2] (⚖️..⚗️) balance scale..alembic - {0x2698, 0x2698, prExtendedPictographic}, // E0.0 [1] (⚘) FLOWER - {0x2699, 0x2699, prExtendedPictographic}, // E1.0 [1] (⚙️) gear - {0x269A, 0x269A, prExtendedPictographic}, // E0.0 [1] (⚚) STAFF OF HERMES - {0x269B, 0x269C, prExtendedPictographic}, // E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis - {0x269D, 0x269F, prExtendedPictographic}, // E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT - {0x26A0, 0x26A1, prExtendedPictographic}, // E0.6 [2] (⚠️..⚡) warning..high voltage - {0x26A2, 0x26A6, prExtendedPictographic}, // E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN - {0x26A7, 0x26A7, prExtendedPictographic}, // E13.0 [1] (⚧️) transgender symbol - {0x26A8, 0x26A9, prExtendedPictographic}, // E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN - {0x26AA, 0x26AB, prExtendedPictographic}, // E0.6 [2] (⚪..⚫) white circle..black circle - {0x26AC, 0x26AF, prExtendedPictographic}, // E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL - {0x26B0, 0x26B1, prExtendedPictographic}, // E1.0 [2] (⚰️..⚱️) coffin..funeral urn - {0x26B2, 0x26BC, prExtendedPictographic}, // E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE - {0x26BD, 0x26BE, prExtendedPictographic}, // E0.6 [2] (⚽..⚾) soccer ball..baseball - {0x26BF, 0x26C3, prExtendedPictographic}, // E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING - {0x26C4, 0x26C5, prExtendedPictographic}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud - {0x26C6, 0x26C7, prExtendedPictographic}, // E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN - {0x26C8, 0x26C8, prExtendedPictographic}, // E0.7 [1] (⛈️) cloud with lightning and rain - {0x26C9, 0x26CD, prExtendedPictographic}, // E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR - {0x26CE, 0x26CE, prExtendedPictographic}, // E0.6 [1] (⛎) Ophiuchus - {0x26CF, 0x26CF, prExtendedPictographic}, // E0.7 [1] (⛏️) pick - {0x26D0, 0x26D0, prExtendedPictographic}, // E0.0 [1] (⛐) CAR SLIDING - {0x26D1, 0x26D1, prExtendedPictographic}, // E0.7 [1] (⛑️) rescue worker’s helmet - {0x26D2, 0x26D2, prExtendedPictographic}, // E0.0 [1] (⛒) CIRCLED CROSSING LANES - {0x26D3, 0x26D3, prExtendedPictographic}, // E0.7 [1] (⛓️) chains - {0x26D4, 0x26D4, prExtendedPictographic}, // E0.6 [1] (⛔) no entry - {0x26D5, 0x26E8, prExtendedPictographic}, // E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD - {0x26E9, 0x26E9, prExtendedPictographic}, // E0.7 [1] (⛩️) shinto shrine - {0x26EA, 0x26EA, prExtendedPictographic}, // E0.6 [1] (⛪) church - {0x26EB, 0x26EF, prExtendedPictographic}, // E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE - {0x26F0, 0x26F1, prExtendedPictographic}, // E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground - {0x26F2, 0x26F3, prExtendedPictographic}, // E0.6 [2] (⛲..⛳) fountain..flag in hole - {0x26F4, 0x26F4, prExtendedPictographic}, // E0.7 [1] (⛴️) ferry - {0x26F5, 0x26F5, prExtendedPictographic}, // E0.6 [1] (⛵) sailboat - {0x26F6, 0x26F6, prExtendedPictographic}, // E0.0 [1] (⛶) SQUARE FOUR CORNERS - {0x26F7, 0x26F9, prExtendedPictographic}, // E0.7 [3] (⛷️..⛹️) skier..person bouncing ball - {0x26FA, 0x26FA, prExtendedPictographic}, // E0.6 [1] (⛺) tent - {0x26FB, 0x26FC, prExtendedPictographic}, // E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL - {0x26FD, 0x26FD, prExtendedPictographic}, // E0.6 [1] (⛽) fuel pump - {0x26FE, 0x2701, prExtendedPictographic}, // E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS - {0x2702, 0x2702, prExtendedPictographic}, // E0.6 [1] (✂️) scissors - {0x2703, 0x2704, prExtendedPictographic}, // E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS - {0x2705, 0x2705, prExtendedPictographic}, // E0.6 [1] (✅) check mark button - {0x2708, 0x270C, prExtendedPictographic}, // E0.6 [5] (✈️..✌️) airplane..victory hand - {0x270D, 0x270D, prExtendedPictographic}, // E0.7 [1] (✍️) writing hand - {0x270E, 0x270E, prExtendedPictographic}, // E0.0 [1] (✎) LOWER RIGHT PENCIL - {0x270F, 0x270F, prExtendedPictographic}, // E0.6 [1] (✏️) pencil - {0x2710, 0x2711, prExtendedPictographic}, // E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB - {0x2712, 0x2712, prExtendedPictographic}, // E0.6 [1] (✒️) black nib - {0x2714, 0x2714, prExtendedPictographic}, // E0.6 [1] (✔️) check mark - {0x2716, 0x2716, prExtendedPictographic}, // E0.6 [1] (✖️) multiply - {0x271D, 0x271D, prExtendedPictographic}, // E0.7 [1] (✝️) latin cross - {0x2721, 0x2721, prExtendedPictographic}, // E0.7 [1] (✡️) star of David - {0x2728, 0x2728, prExtendedPictographic}, // E0.6 [1] (✨) sparkles - {0x2733, 0x2734, prExtendedPictographic}, // E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star - {0x2744, 0x2744, prExtendedPictographic}, // E0.6 [1] (❄️) snowflake - {0x2747, 0x2747, prExtendedPictographic}, // E0.6 [1] (❇️) sparkle - {0x274C, 0x274C, prExtendedPictographic}, // E0.6 [1] (❌) cross mark - {0x274E, 0x274E, prExtendedPictographic}, // E0.6 [1] (❎) cross mark button - {0x2753, 0x2755, prExtendedPictographic}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark - {0x2757, 0x2757, prExtendedPictographic}, // E0.6 [1] (❗) red exclamation mark - {0x2763, 0x2763, prExtendedPictographic}, // E1.0 [1] (❣️) heart exclamation - {0x2764, 0x2764, prExtendedPictographic}, // E0.6 [1] (❤️) red heart - {0x2765, 0x2767, prExtendedPictographic}, // E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET - {0x2795, 0x2797, prExtendedPictographic}, // E0.6 [3] (➕..➗) plus..divide - {0x27A1, 0x27A1, prExtendedPictographic}, // E0.6 [1] (➡️) right arrow - {0x27B0, 0x27B0, prExtendedPictographic}, // E0.6 [1] (➰) curly loop - {0x27BF, 0x27BF, prExtendedPictographic}, // E1.0 [1] (➿) double curly loop - {0x2934, 0x2935, prExtendedPictographic}, // E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down - {0x2B05, 0x2B07, prExtendedPictographic}, // E0.6 [3] (⬅️..⬇️) left arrow..down arrow - {0x2B1B, 0x2B1C, prExtendedPictographic}, // E0.6 [2] (⬛..⬜) black large square..white large square - {0x2B50, 0x2B50, prExtendedPictographic}, // E0.6 [1] (⭐) star - {0x2B55, 0x2B55, prExtendedPictographic}, // E0.6 [1] (⭕) hollow red circle - {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS - {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER - {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS - {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK - {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK - {0x3030, 0x3030, prExtendedPictographic}, // E0.6 [1] (〰️) wavy dash - {0x303D, 0x303D, prExtendedPictographic}, // E0.6 [1] (〽️) part alternation mark - {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x3297, 0x3297, prExtendedPictographic}, // E0.6 [1] (㊗️) Japanese “congratulations” button - {0x3299, 0x3299, prExtendedPictographic}, // E0.6 [1] (㊙️) Japanese “secret” button - {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET - {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN - {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK - {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E - {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS - {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA - {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA - {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA - {0xA823, 0xA824, prSpacingMark}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I - {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E - {0xA827, 0xA827, prSpacingMark}, // Mc SYLOTI NAGRI VOWEL SIGN OO - {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA - {0xA880, 0xA881, prSpacingMark}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - {0xA8B4, 0xA8C3, prSpacingMark}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU - {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY - {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R - {0xA952, 0xA953, prSpacingMark}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA - {0xA960, 0xA97C, prL}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH - {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR - {0xA983, 0xA983, prSpacingMark}, // Mc JAVANESE SIGN WIGNYAN - {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU - {0xA9B4, 0xA9B5, prSpacingMark}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG - {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT - {0xA9BA, 0xA9BB, prSpacingMark}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE - {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET - {0xA9BE, 0xA9C0, prSpacingMark}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON - {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW - {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE - {0xAA2F, 0xAA30, prSpacingMark}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI - {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE - {0xAA33, 0xAA34, prSpacingMark}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA - {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA - {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG - {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M - {0xAA4D, 0xAA4D, prSpacingMark}, // Mc CHAM CONSONANT SIGN FINAL H - {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 - {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG - {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U - {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA - {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK - {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO - {0xAAEB, 0xAAEB, prSpacingMark}, // Mc MEETEI MAYEK VOWEL SIGN II - {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI - {0xAAEE, 0xAAEF, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU - {0xAAF5, 0xAAF5, prSpacingMark}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA - {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA - {0xABE3, 0xABE4, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP - {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP - {0xABE6, 0xABE7, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP - {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP - {0xABE9, 0xABEA, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG - {0xABEC, 0xABEC, prSpacingMark}, // Mc MEETEI MAYEK LUM IYEK - {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK - {0xAC00, 0xAC00, prLV}, // Lo HANGUL SYLLABLE GA - {0xAC01, 0xAC1B, prLVT}, // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH - {0xAC1C, 0xAC1C, prLV}, // Lo HANGUL SYLLABLE GAE - {0xAC1D, 0xAC37, prLVT}, // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH - {0xAC38, 0xAC38, prLV}, // Lo HANGUL SYLLABLE GYA - {0xAC39, 0xAC53, prLVT}, // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH - {0xAC54, 0xAC54, prLV}, // Lo HANGUL SYLLABLE GYAE - {0xAC55, 0xAC6F, prLVT}, // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH - {0xAC70, 0xAC70, prLV}, // Lo HANGUL SYLLABLE GEO - {0xAC71, 0xAC8B, prLVT}, // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH - {0xAC8C, 0xAC8C, prLV}, // Lo HANGUL SYLLABLE GE - {0xAC8D, 0xACA7, prLVT}, // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH - {0xACA8, 0xACA8, prLV}, // Lo HANGUL SYLLABLE GYEO - {0xACA9, 0xACC3, prLVT}, // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH - {0xACC4, 0xACC4, prLV}, // Lo HANGUL SYLLABLE GYE - {0xACC5, 0xACDF, prLVT}, // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH - {0xACE0, 0xACE0, prLV}, // Lo HANGUL SYLLABLE GO - {0xACE1, 0xACFB, prLVT}, // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH - {0xACFC, 0xACFC, prLV}, // Lo HANGUL SYLLABLE GWA - {0xACFD, 0xAD17, prLVT}, // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH - {0xAD18, 0xAD18, prLV}, // Lo HANGUL SYLLABLE GWAE - {0xAD19, 0xAD33, prLVT}, // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH - {0xAD34, 0xAD34, prLV}, // Lo HANGUL SYLLABLE GOE - {0xAD35, 0xAD4F, prLVT}, // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH - {0xAD50, 0xAD50, prLV}, // Lo HANGUL SYLLABLE GYO - {0xAD51, 0xAD6B, prLVT}, // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH - {0xAD6C, 0xAD6C, prLV}, // Lo HANGUL SYLLABLE GU - {0xAD6D, 0xAD87, prLVT}, // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH - {0xAD88, 0xAD88, prLV}, // Lo HANGUL SYLLABLE GWEO - {0xAD89, 0xADA3, prLVT}, // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH - {0xADA4, 0xADA4, prLV}, // Lo HANGUL SYLLABLE GWE - {0xADA5, 0xADBF, prLVT}, // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH - {0xADC0, 0xADC0, prLV}, // Lo HANGUL SYLLABLE GWI - {0xADC1, 0xADDB, prLVT}, // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH - {0xADDC, 0xADDC, prLV}, // Lo HANGUL SYLLABLE GYU - {0xADDD, 0xADF7, prLVT}, // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH - {0xADF8, 0xADF8, prLV}, // Lo HANGUL SYLLABLE GEU - {0xADF9, 0xAE13, prLVT}, // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH - {0xAE14, 0xAE14, prLV}, // Lo HANGUL SYLLABLE GYI - {0xAE15, 0xAE2F, prLVT}, // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH - {0xAE30, 0xAE30, prLV}, // Lo HANGUL SYLLABLE GI - {0xAE31, 0xAE4B, prLVT}, // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH - {0xAE4C, 0xAE4C, prLV}, // Lo HANGUL SYLLABLE GGA - {0xAE4D, 0xAE67, prLVT}, // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH - {0xAE68, 0xAE68, prLV}, // Lo HANGUL SYLLABLE GGAE - {0xAE69, 0xAE83, prLVT}, // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH - {0xAE84, 0xAE84, prLV}, // Lo HANGUL SYLLABLE GGYA - {0xAE85, 0xAE9F, prLVT}, // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH - {0xAEA0, 0xAEA0, prLV}, // Lo HANGUL SYLLABLE GGYAE - {0xAEA1, 0xAEBB, prLVT}, // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH - {0xAEBC, 0xAEBC, prLV}, // Lo HANGUL SYLLABLE GGEO - {0xAEBD, 0xAED7, prLVT}, // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH - {0xAED8, 0xAED8, prLV}, // Lo HANGUL SYLLABLE GGE - {0xAED9, 0xAEF3, prLVT}, // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH - {0xAEF4, 0xAEF4, prLV}, // Lo HANGUL SYLLABLE GGYEO - {0xAEF5, 0xAF0F, prLVT}, // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH - {0xAF10, 0xAF10, prLV}, // Lo HANGUL SYLLABLE GGYE - {0xAF11, 0xAF2B, prLVT}, // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH - {0xAF2C, 0xAF2C, prLV}, // Lo HANGUL SYLLABLE GGO - {0xAF2D, 0xAF47, prLVT}, // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH - {0xAF48, 0xAF48, prLV}, // Lo HANGUL SYLLABLE GGWA - {0xAF49, 0xAF63, prLVT}, // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH - {0xAF64, 0xAF64, prLV}, // Lo HANGUL SYLLABLE GGWAE - {0xAF65, 0xAF7F, prLVT}, // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH - {0xAF80, 0xAF80, prLV}, // Lo HANGUL SYLLABLE GGOE - {0xAF81, 0xAF9B, prLVT}, // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH - {0xAF9C, 0xAF9C, prLV}, // Lo HANGUL SYLLABLE GGYO - {0xAF9D, 0xAFB7, prLVT}, // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH - {0xAFB8, 0xAFB8, prLV}, // Lo HANGUL SYLLABLE GGU - {0xAFB9, 0xAFD3, prLVT}, // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH - {0xAFD4, 0xAFD4, prLV}, // Lo HANGUL SYLLABLE GGWEO - {0xAFD5, 0xAFEF, prLVT}, // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH - {0xAFF0, 0xAFF0, prLV}, // Lo HANGUL SYLLABLE GGWE - {0xAFF1, 0xB00B, prLVT}, // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH - {0xB00C, 0xB00C, prLV}, // Lo HANGUL SYLLABLE GGWI - {0xB00D, 0xB027, prLVT}, // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH - {0xB028, 0xB028, prLV}, // Lo HANGUL SYLLABLE GGYU - {0xB029, 0xB043, prLVT}, // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH - {0xB044, 0xB044, prLV}, // Lo HANGUL SYLLABLE GGEU - {0xB045, 0xB05F, prLVT}, // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH - {0xB060, 0xB060, prLV}, // Lo HANGUL SYLLABLE GGYI - {0xB061, 0xB07B, prLVT}, // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH - {0xB07C, 0xB07C, prLV}, // Lo HANGUL SYLLABLE GGI - {0xB07D, 0xB097, prLVT}, // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH - {0xB098, 0xB098, prLV}, // Lo HANGUL SYLLABLE NA - {0xB099, 0xB0B3, prLVT}, // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH - {0xB0B4, 0xB0B4, prLV}, // Lo HANGUL SYLLABLE NAE - {0xB0B5, 0xB0CF, prLVT}, // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH - {0xB0D0, 0xB0D0, prLV}, // Lo HANGUL SYLLABLE NYA - {0xB0D1, 0xB0EB, prLVT}, // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH - {0xB0EC, 0xB0EC, prLV}, // Lo HANGUL SYLLABLE NYAE - {0xB0ED, 0xB107, prLVT}, // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH - {0xB108, 0xB108, prLV}, // Lo HANGUL SYLLABLE NEO - {0xB109, 0xB123, prLVT}, // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH - {0xB124, 0xB124, prLV}, // Lo HANGUL SYLLABLE NE - {0xB125, 0xB13F, prLVT}, // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH - {0xB140, 0xB140, prLV}, // Lo HANGUL SYLLABLE NYEO - {0xB141, 0xB15B, prLVT}, // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH - {0xB15C, 0xB15C, prLV}, // Lo HANGUL SYLLABLE NYE - {0xB15D, 0xB177, prLVT}, // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH - {0xB178, 0xB178, prLV}, // Lo HANGUL SYLLABLE NO - {0xB179, 0xB193, prLVT}, // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH - {0xB194, 0xB194, prLV}, // Lo HANGUL SYLLABLE NWA - {0xB195, 0xB1AF, prLVT}, // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH - {0xB1B0, 0xB1B0, prLV}, // Lo HANGUL SYLLABLE NWAE - {0xB1B1, 0xB1CB, prLVT}, // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH - {0xB1CC, 0xB1CC, prLV}, // Lo HANGUL SYLLABLE NOE - {0xB1CD, 0xB1E7, prLVT}, // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH - {0xB1E8, 0xB1E8, prLV}, // Lo HANGUL SYLLABLE NYO - {0xB1E9, 0xB203, prLVT}, // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH - {0xB204, 0xB204, prLV}, // Lo HANGUL SYLLABLE NU - {0xB205, 0xB21F, prLVT}, // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH - {0xB220, 0xB220, prLV}, // Lo HANGUL SYLLABLE NWEO - {0xB221, 0xB23B, prLVT}, // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH - {0xB23C, 0xB23C, prLV}, // Lo HANGUL SYLLABLE NWE - {0xB23D, 0xB257, prLVT}, // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH - {0xB258, 0xB258, prLV}, // Lo HANGUL SYLLABLE NWI - {0xB259, 0xB273, prLVT}, // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH - {0xB274, 0xB274, prLV}, // Lo HANGUL SYLLABLE NYU - {0xB275, 0xB28F, prLVT}, // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH - {0xB290, 0xB290, prLV}, // Lo HANGUL SYLLABLE NEU - {0xB291, 0xB2AB, prLVT}, // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH - {0xB2AC, 0xB2AC, prLV}, // Lo HANGUL SYLLABLE NYI - {0xB2AD, 0xB2C7, prLVT}, // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH - {0xB2C8, 0xB2C8, prLV}, // Lo HANGUL SYLLABLE NI - {0xB2C9, 0xB2E3, prLVT}, // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH - {0xB2E4, 0xB2E4, prLV}, // Lo HANGUL SYLLABLE DA - {0xB2E5, 0xB2FF, prLVT}, // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH - {0xB300, 0xB300, prLV}, // Lo HANGUL SYLLABLE DAE - {0xB301, 0xB31B, prLVT}, // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH - {0xB31C, 0xB31C, prLV}, // Lo HANGUL SYLLABLE DYA - {0xB31D, 0xB337, prLVT}, // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH - {0xB338, 0xB338, prLV}, // Lo HANGUL SYLLABLE DYAE - {0xB339, 0xB353, prLVT}, // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH - {0xB354, 0xB354, prLV}, // Lo HANGUL SYLLABLE DEO - {0xB355, 0xB36F, prLVT}, // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH - {0xB370, 0xB370, prLV}, // Lo HANGUL SYLLABLE DE - {0xB371, 0xB38B, prLVT}, // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH - {0xB38C, 0xB38C, prLV}, // Lo HANGUL SYLLABLE DYEO - {0xB38D, 0xB3A7, prLVT}, // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH - {0xB3A8, 0xB3A8, prLV}, // Lo HANGUL SYLLABLE DYE - {0xB3A9, 0xB3C3, prLVT}, // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH - {0xB3C4, 0xB3C4, prLV}, // Lo HANGUL SYLLABLE DO - {0xB3C5, 0xB3DF, prLVT}, // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH - {0xB3E0, 0xB3E0, prLV}, // Lo HANGUL SYLLABLE DWA - {0xB3E1, 0xB3FB, prLVT}, // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH - {0xB3FC, 0xB3FC, prLV}, // Lo HANGUL SYLLABLE DWAE - {0xB3FD, 0xB417, prLVT}, // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH - {0xB418, 0xB418, prLV}, // Lo HANGUL SYLLABLE DOE - {0xB419, 0xB433, prLVT}, // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH - {0xB434, 0xB434, prLV}, // Lo HANGUL SYLLABLE DYO - {0xB435, 0xB44F, prLVT}, // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH - {0xB450, 0xB450, prLV}, // Lo HANGUL SYLLABLE DU - {0xB451, 0xB46B, prLVT}, // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH - {0xB46C, 0xB46C, prLV}, // Lo HANGUL SYLLABLE DWEO - {0xB46D, 0xB487, prLVT}, // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH - {0xB488, 0xB488, prLV}, // Lo HANGUL SYLLABLE DWE - {0xB489, 0xB4A3, prLVT}, // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH - {0xB4A4, 0xB4A4, prLV}, // Lo HANGUL SYLLABLE DWI - {0xB4A5, 0xB4BF, prLVT}, // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH - {0xB4C0, 0xB4C0, prLV}, // Lo HANGUL SYLLABLE DYU - {0xB4C1, 0xB4DB, prLVT}, // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH - {0xB4DC, 0xB4DC, prLV}, // Lo HANGUL SYLLABLE DEU - {0xB4DD, 0xB4F7, prLVT}, // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH - {0xB4F8, 0xB4F8, prLV}, // Lo HANGUL SYLLABLE DYI - {0xB4F9, 0xB513, prLVT}, // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH - {0xB514, 0xB514, prLV}, // Lo HANGUL SYLLABLE DI - {0xB515, 0xB52F, prLVT}, // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH - {0xB530, 0xB530, prLV}, // Lo HANGUL SYLLABLE DDA - {0xB531, 0xB54B, prLVT}, // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH - {0xB54C, 0xB54C, prLV}, // Lo HANGUL SYLLABLE DDAE - {0xB54D, 0xB567, prLVT}, // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH - {0xB568, 0xB568, prLV}, // Lo HANGUL SYLLABLE DDYA - {0xB569, 0xB583, prLVT}, // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH - {0xB584, 0xB584, prLV}, // Lo HANGUL SYLLABLE DDYAE - {0xB585, 0xB59F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH - {0xB5A0, 0xB5A0, prLV}, // Lo HANGUL SYLLABLE DDEO - {0xB5A1, 0xB5BB, prLVT}, // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH - {0xB5BC, 0xB5BC, prLV}, // Lo HANGUL SYLLABLE DDE - {0xB5BD, 0xB5D7, prLVT}, // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH - {0xB5D8, 0xB5D8, prLV}, // Lo HANGUL SYLLABLE DDYEO - {0xB5D9, 0xB5F3, prLVT}, // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH - {0xB5F4, 0xB5F4, prLV}, // Lo HANGUL SYLLABLE DDYE - {0xB5F5, 0xB60F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH - {0xB610, 0xB610, prLV}, // Lo HANGUL SYLLABLE DDO - {0xB611, 0xB62B, prLVT}, // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH - {0xB62C, 0xB62C, prLV}, // Lo HANGUL SYLLABLE DDWA - {0xB62D, 0xB647, prLVT}, // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH - {0xB648, 0xB648, prLV}, // Lo HANGUL SYLLABLE DDWAE - {0xB649, 0xB663, prLVT}, // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH - {0xB664, 0xB664, prLV}, // Lo HANGUL SYLLABLE DDOE - {0xB665, 0xB67F, prLVT}, // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH - {0xB680, 0xB680, prLV}, // Lo HANGUL SYLLABLE DDYO - {0xB681, 0xB69B, prLVT}, // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH - {0xB69C, 0xB69C, prLV}, // Lo HANGUL SYLLABLE DDU - {0xB69D, 0xB6B7, prLVT}, // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH - {0xB6B8, 0xB6B8, prLV}, // Lo HANGUL SYLLABLE DDWEO - {0xB6B9, 0xB6D3, prLVT}, // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH - {0xB6D4, 0xB6D4, prLV}, // Lo HANGUL SYLLABLE DDWE - {0xB6D5, 0xB6EF, prLVT}, // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH - {0xB6F0, 0xB6F0, prLV}, // Lo HANGUL SYLLABLE DDWI - {0xB6F1, 0xB70B, prLVT}, // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH - {0xB70C, 0xB70C, prLV}, // Lo HANGUL SYLLABLE DDYU - {0xB70D, 0xB727, prLVT}, // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH - {0xB728, 0xB728, prLV}, // Lo HANGUL SYLLABLE DDEU - {0xB729, 0xB743, prLVT}, // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH - {0xB744, 0xB744, prLV}, // Lo HANGUL SYLLABLE DDYI - {0xB745, 0xB75F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH - {0xB760, 0xB760, prLV}, // Lo HANGUL SYLLABLE DDI - {0xB761, 0xB77B, prLVT}, // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH - {0xB77C, 0xB77C, prLV}, // Lo HANGUL SYLLABLE RA - {0xB77D, 0xB797, prLVT}, // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH - {0xB798, 0xB798, prLV}, // Lo HANGUL SYLLABLE RAE - {0xB799, 0xB7B3, prLVT}, // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH - {0xB7B4, 0xB7B4, prLV}, // Lo HANGUL SYLLABLE RYA - {0xB7B5, 0xB7CF, prLVT}, // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH - {0xB7D0, 0xB7D0, prLV}, // Lo HANGUL SYLLABLE RYAE - {0xB7D1, 0xB7EB, prLVT}, // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH - {0xB7EC, 0xB7EC, prLV}, // Lo HANGUL SYLLABLE REO - {0xB7ED, 0xB807, prLVT}, // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH - {0xB808, 0xB808, prLV}, // Lo HANGUL SYLLABLE RE - {0xB809, 0xB823, prLVT}, // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH - {0xB824, 0xB824, prLV}, // Lo HANGUL SYLLABLE RYEO - {0xB825, 0xB83F, prLVT}, // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH - {0xB840, 0xB840, prLV}, // Lo HANGUL SYLLABLE RYE - {0xB841, 0xB85B, prLVT}, // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH - {0xB85C, 0xB85C, prLV}, // Lo HANGUL SYLLABLE RO - {0xB85D, 0xB877, prLVT}, // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH - {0xB878, 0xB878, prLV}, // Lo HANGUL SYLLABLE RWA - {0xB879, 0xB893, prLVT}, // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH - {0xB894, 0xB894, prLV}, // Lo HANGUL SYLLABLE RWAE - {0xB895, 0xB8AF, prLVT}, // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH - {0xB8B0, 0xB8B0, prLV}, // Lo HANGUL SYLLABLE ROE - {0xB8B1, 0xB8CB, prLVT}, // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH - {0xB8CC, 0xB8CC, prLV}, // Lo HANGUL SYLLABLE RYO - {0xB8CD, 0xB8E7, prLVT}, // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH - {0xB8E8, 0xB8E8, prLV}, // Lo HANGUL SYLLABLE RU - {0xB8E9, 0xB903, prLVT}, // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH - {0xB904, 0xB904, prLV}, // Lo HANGUL SYLLABLE RWEO - {0xB905, 0xB91F, prLVT}, // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH - {0xB920, 0xB920, prLV}, // Lo HANGUL SYLLABLE RWE - {0xB921, 0xB93B, prLVT}, // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH - {0xB93C, 0xB93C, prLV}, // Lo HANGUL SYLLABLE RWI - {0xB93D, 0xB957, prLVT}, // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH - {0xB958, 0xB958, prLV}, // Lo HANGUL SYLLABLE RYU - {0xB959, 0xB973, prLVT}, // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH - {0xB974, 0xB974, prLV}, // Lo HANGUL SYLLABLE REU - {0xB975, 0xB98F, prLVT}, // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH - {0xB990, 0xB990, prLV}, // Lo HANGUL SYLLABLE RYI - {0xB991, 0xB9AB, prLVT}, // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH - {0xB9AC, 0xB9AC, prLV}, // Lo HANGUL SYLLABLE RI - {0xB9AD, 0xB9C7, prLVT}, // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH - {0xB9C8, 0xB9C8, prLV}, // Lo HANGUL SYLLABLE MA - {0xB9C9, 0xB9E3, prLVT}, // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH - {0xB9E4, 0xB9E4, prLV}, // Lo HANGUL SYLLABLE MAE - {0xB9E5, 0xB9FF, prLVT}, // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH - {0xBA00, 0xBA00, prLV}, // Lo HANGUL SYLLABLE MYA - {0xBA01, 0xBA1B, prLVT}, // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH - {0xBA1C, 0xBA1C, prLV}, // Lo HANGUL SYLLABLE MYAE - {0xBA1D, 0xBA37, prLVT}, // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH - {0xBA38, 0xBA38, prLV}, // Lo HANGUL SYLLABLE MEO - {0xBA39, 0xBA53, prLVT}, // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH - {0xBA54, 0xBA54, prLV}, // Lo HANGUL SYLLABLE ME - {0xBA55, 0xBA6F, prLVT}, // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH - {0xBA70, 0xBA70, prLV}, // Lo HANGUL SYLLABLE MYEO - {0xBA71, 0xBA8B, prLVT}, // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH - {0xBA8C, 0xBA8C, prLV}, // Lo HANGUL SYLLABLE MYE - {0xBA8D, 0xBAA7, prLVT}, // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH - {0xBAA8, 0xBAA8, prLV}, // Lo HANGUL SYLLABLE MO - {0xBAA9, 0xBAC3, prLVT}, // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH - {0xBAC4, 0xBAC4, prLV}, // Lo HANGUL SYLLABLE MWA - {0xBAC5, 0xBADF, prLVT}, // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH - {0xBAE0, 0xBAE0, prLV}, // Lo HANGUL SYLLABLE MWAE - {0xBAE1, 0xBAFB, prLVT}, // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH - {0xBAFC, 0xBAFC, prLV}, // Lo HANGUL SYLLABLE MOE - {0xBAFD, 0xBB17, prLVT}, // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH - {0xBB18, 0xBB18, prLV}, // Lo HANGUL SYLLABLE MYO - {0xBB19, 0xBB33, prLVT}, // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH - {0xBB34, 0xBB34, prLV}, // Lo HANGUL SYLLABLE MU - {0xBB35, 0xBB4F, prLVT}, // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH - {0xBB50, 0xBB50, prLV}, // Lo HANGUL SYLLABLE MWEO - {0xBB51, 0xBB6B, prLVT}, // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH - {0xBB6C, 0xBB6C, prLV}, // Lo HANGUL SYLLABLE MWE - {0xBB6D, 0xBB87, prLVT}, // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH - {0xBB88, 0xBB88, prLV}, // Lo HANGUL SYLLABLE MWI - {0xBB89, 0xBBA3, prLVT}, // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH - {0xBBA4, 0xBBA4, prLV}, // Lo HANGUL SYLLABLE MYU - {0xBBA5, 0xBBBF, prLVT}, // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH - {0xBBC0, 0xBBC0, prLV}, // Lo HANGUL SYLLABLE MEU - {0xBBC1, 0xBBDB, prLVT}, // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH - {0xBBDC, 0xBBDC, prLV}, // Lo HANGUL SYLLABLE MYI - {0xBBDD, 0xBBF7, prLVT}, // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH - {0xBBF8, 0xBBF8, prLV}, // Lo HANGUL SYLLABLE MI - {0xBBF9, 0xBC13, prLVT}, // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH - {0xBC14, 0xBC14, prLV}, // Lo HANGUL SYLLABLE BA - {0xBC15, 0xBC2F, prLVT}, // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH - {0xBC30, 0xBC30, prLV}, // Lo HANGUL SYLLABLE BAE - {0xBC31, 0xBC4B, prLVT}, // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH - {0xBC4C, 0xBC4C, prLV}, // Lo HANGUL SYLLABLE BYA - {0xBC4D, 0xBC67, prLVT}, // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH - {0xBC68, 0xBC68, prLV}, // Lo HANGUL SYLLABLE BYAE - {0xBC69, 0xBC83, prLVT}, // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH - {0xBC84, 0xBC84, prLV}, // Lo HANGUL SYLLABLE BEO - {0xBC85, 0xBC9F, prLVT}, // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH - {0xBCA0, 0xBCA0, prLV}, // Lo HANGUL SYLLABLE BE - {0xBCA1, 0xBCBB, prLVT}, // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH - {0xBCBC, 0xBCBC, prLV}, // Lo HANGUL SYLLABLE BYEO - {0xBCBD, 0xBCD7, prLVT}, // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH - {0xBCD8, 0xBCD8, prLV}, // Lo HANGUL SYLLABLE BYE - {0xBCD9, 0xBCF3, prLVT}, // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH - {0xBCF4, 0xBCF4, prLV}, // Lo HANGUL SYLLABLE BO - {0xBCF5, 0xBD0F, prLVT}, // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH - {0xBD10, 0xBD10, prLV}, // Lo HANGUL SYLLABLE BWA - {0xBD11, 0xBD2B, prLVT}, // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH - {0xBD2C, 0xBD2C, prLV}, // Lo HANGUL SYLLABLE BWAE - {0xBD2D, 0xBD47, prLVT}, // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH - {0xBD48, 0xBD48, prLV}, // Lo HANGUL SYLLABLE BOE - {0xBD49, 0xBD63, prLVT}, // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH - {0xBD64, 0xBD64, prLV}, // Lo HANGUL SYLLABLE BYO - {0xBD65, 0xBD7F, prLVT}, // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH - {0xBD80, 0xBD80, prLV}, // Lo HANGUL SYLLABLE BU - {0xBD81, 0xBD9B, prLVT}, // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH - {0xBD9C, 0xBD9C, prLV}, // Lo HANGUL SYLLABLE BWEO - {0xBD9D, 0xBDB7, prLVT}, // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH - {0xBDB8, 0xBDB8, prLV}, // Lo HANGUL SYLLABLE BWE - {0xBDB9, 0xBDD3, prLVT}, // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH - {0xBDD4, 0xBDD4, prLV}, // Lo HANGUL SYLLABLE BWI - {0xBDD5, 0xBDEF, prLVT}, // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH - {0xBDF0, 0xBDF0, prLV}, // Lo HANGUL SYLLABLE BYU - {0xBDF1, 0xBE0B, prLVT}, // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH - {0xBE0C, 0xBE0C, prLV}, // Lo HANGUL SYLLABLE BEU - {0xBE0D, 0xBE27, prLVT}, // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH - {0xBE28, 0xBE28, prLV}, // Lo HANGUL SYLLABLE BYI - {0xBE29, 0xBE43, prLVT}, // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH - {0xBE44, 0xBE44, prLV}, // Lo HANGUL SYLLABLE BI - {0xBE45, 0xBE5F, prLVT}, // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH - {0xBE60, 0xBE60, prLV}, // Lo HANGUL SYLLABLE BBA - {0xBE61, 0xBE7B, prLVT}, // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH - {0xBE7C, 0xBE7C, prLV}, // Lo HANGUL SYLLABLE BBAE - {0xBE7D, 0xBE97, prLVT}, // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH - {0xBE98, 0xBE98, prLV}, // Lo HANGUL SYLLABLE BBYA - {0xBE99, 0xBEB3, prLVT}, // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH - {0xBEB4, 0xBEB4, prLV}, // Lo HANGUL SYLLABLE BBYAE - {0xBEB5, 0xBECF, prLVT}, // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH - {0xBED0, 0xBED0, prLV}, // Lo HANGUL SYLLABLE BBEO - {0xBED1, 0xBEEB, prLVT}, // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH - {0xBEEC, 0xBEEC, prLV}, // Lo HANGUL SYLLABLE BBE - {0xBEED, 0xBF07, prLVT}, // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH - {0xBF08, 0xBF08, prLV}, // Lo HANGUL SYLLABLE BBYEO - {0xBF09, 0xBF23, prLVT}, // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH - {0xBF24, 0xBF24, prLV}, // Lo HANGUL SYLLABLE BBYE - {0xBF25, 0xBF3F, prLVT}, // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH - {0xBF40, 0xBF40, prLV}, // Lo HANGUL SYLLABLE BBO - {0xBF41, 0xBF5B, prLVT}, // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH - {0xBF5C, 0xBF5C, prLV}, // Lo HANGUL SYLLABLE BBWA - {0xBF5D, 0xBF77, prLVT}, // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH - {0xBF78, 0xBF78, prLV}, // Lo HANGUL SYLLABLE BBWAE - {0xBF79, 0xBF93, prLVT}, // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH - {0xBF94, 0xBF94, prLV}, // Lo HANGUL SYLLABLE BBOE - {0xBF95, 0xBFAF, prLVT}, // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH - {0xBFB0, 0xBFB0, prLV}, // Lo HANGUL SYLLABLE BBYO - {0xBFB1, 0xBFCB, prLVT}, // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH - {0xBFCC, 0xBFCC, prLV}, // Lo HANGUL SYLLABLE BBU - {0xBFCD, 0xBFE7, prLVT}, // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH - {0xBFE8, 0xBFE8, prLV}, // Lo HANGUL SYLLABLE BBWEO - {0xBFE9, 0xC003, prLVT}, // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH - {0xC004, 0xC004, prLV}, // Lo HANGUL SYLLABLE BBWE - {0xC005, 0xC01F, prLVT}, // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH - {0xC020, 0xC020, prLV}, // Lo HANGUL SYLLABLE BBWI - {0xC021, 0xC03B, prLVT}, // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH - {0xC03C, 0xC03C, prLV}, // Lo HANGUL SYLLABLE BBYU - {0xC03D, 0xC057, prLVT}, // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH - {0xC058, 0xC058, prLV}, // Lo HANGUL SYLLABLE BBEU - {0xC059, 0xC073, prLVT}, // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH - {0xC074, 0xC074, prLV}, // Lo HANGUL SYLLABLE BBYI - {0xC075, 0xC08F, prLVT}, // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH - {0xC090, 0xC090, prLV}, // Lo HANGUL SYLLABLE BBI - {0xC091, 0xC0AB, prLVT}, // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH - {0xC0AC, 0xC0AC, prLV}, // Lo HANGUL SYLLABLE SA - {0xC0AD, 0xC0C7, prLVT}, // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH - {0xC0C8, 0xC0C8, prLV}, // Lo HANGUL SYLLABLE SAE - {0xC0C9, 0xC0E3, prLVT}, // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH - {0xC0E4, 0xC0E4, prLV}, // Lo HANGUL SYLLABLE SYA - {0xC0E5, 0xC0FF, prLVT}, // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH - {0xC100, 0xC100, prLV}, // Lo HANGUL SYLLABLE SYAE - {0xC101, 0xC11B, prLVT}, // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH - {0xC11C, 0xC11C, prLV}, // Lo HANGUL SYLLABLE SEO - {0xC11D, 0xC137, prLVT}, // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH - {0xC138, 0xC138, prLV}, // Lo HANGUL SYLLABLE SE - {0xC139, 0xC153, prLVT}, // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH - {0xC154, 0xC154, prLV}, // Lo HANGUL SYLLABLE SYEO - {0xC155, 0xC16F, prLVT}, // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH - {0xC170, 0xC170, prLV}, // Lo HANGUL SYLLABLE SYE - {0xC171, 0xC18B, prLVT}, // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH - {0xC18C, 0xC18C, prLV}, // Lo HANGUL SYLLABLE SO - {0xC18D, 0xC1A7, prLVT}, // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH - {0xC1A8, 0xC1A8, prLV}, // Lo HANGUL SYLLABLE SWA - {0xC1A9, 0xC1C3, prLVT}, // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH - {0xC1C4, 0xC1C4, prLV}, // Lo HANGUL SYLLABLE SWAE - {0xC1C5, 0xC1DF, prLVT}, // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH - {0xC1E0, 0xC1E0, prLV}, // Lo HANGUL SYLLABLE SOE - {0xC1E1, 0xC1FB, prLVT}, // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH - {0xC1FC, 0xC1FC, prLV}, // Lo HANGUL SYLLABLE SYO - {0xC1FD, 0xC217, prLVT}, // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH - {0xC218, 0xC218, prLV}, // Lo HANGUL SYLLABLE SU - {0xC219, 0xC233, prLVT}, // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH - {0xC234, 0xC234, prLV}, // Lo HANGUL SYLLABLE SWEO - {0xC235, 0xC24F, prLVT}, // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH - {0xC250, 0xC250, prLV}, // Lo HANGUL SYLLABLE SWE - {0xC251, 0xC26B, prLVT}, // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH - {0xC26C, 0xC26C, prLV}, // Lo HANGUL SYLLABLE SWI - {0xC26D, 0xC287, prLVT}, // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH - {0xC288, 0xC288, prLV}, // Lo HANGUL SYLLABLE SYU - {0xC289, 0xC2A3, prLVT}, // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH - {0xC2A4, 0xC2A4, prLV}, // Lo HANGUL SYLLABLE SEU - {0xC2A5, 0xC2BF, prLVT}, // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH - {0xC2C0, 0xC2C0, prLV}, // Lo HANGUL SYLLABLE SYI - {0xC2C1, 0xC2DB, prLVT}, // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH - {0xC2DC, 0xC2DC, prLV}, // Lo HANGUL SYLLABLE SI - {0xC2DD, 0xC2F7, prLVT}, // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH - {0xC2F8, 0xC2F8, prLV}, // Lo HANGUL SYLLABLE SSA - {0xC2F9, 0xC313, prLVT}, // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH - {0xC314, 0xC314, prLV}, // Lo HANGUL SYLLABLE SSAE - {0xC315, 0xC32F, prLVT}, // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH - {0xC330, 0xC330, prLV}, // Lo HANGUL SYLLABLE SSYA - {0xC331, 0xC34B, prLVT}, // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH - {0xC34C, 0xC34C, prLV}, // Lo HANGUL SYLLABLE SSYAE - {0xC34D, 0xC367, prLVT}, // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH - {0xC368, 0xC368, prLV}, // Lo HANGUL SYLLABLE SSEO - {0xC369, 0xC383, prLVT}, // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH - {0xC384, 0xC384, prLV}, // Lo HANGUL SYLLABLE SSE - {0xC385, 0xC39F, prLVT}, // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH - {0xC3A0, 0xC3A0, prLV}, // Lo HANGUL SYLLABLE SSYEO - {0xC3A1, 0xC3BB, prLVT}, // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH - {0xC3BC, 0xC3BC, prLV}, // Lo HANGUL SYLLABLE SSYE - {0xC3BD, 0xC3D7, prLVT}, // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH - {0xC3D8, 0xC3D8, prLV}, // Lo HANGUL SYLLABLE SSO - {0xC3D9, 0xC3F3, prLVT}, // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH - {0xC3F4, 0xC3F4, prLV}, // Lo HANGUL SYLLABLE SSWA - {0xC3F5, 0xC40F, prLVT}, // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH - {0xC410, 0xC410, prLV}, // Lo HANGUL SYLLABLE SSWAE - {0xC411, 0xC42B, prLVT}, // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH - {0xC42C, 0xC42C, prLV}, // Lo HANGUL SYLLABLE SSOE - {0xC42D, 0xC447, prLVT}, // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH - {0xC448, 0xC448, prLV}, // Lo HANGUL SYLLABLE SSYO - {0xC449, 0xC463, prLVT}, // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH - {0xC464, 0xC464, prLV}, // Lo HANGUL SYLLABLE SSU - {0xC465, 0xC47F, prLVT}, // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH - {0xC480, 0xC480, prLV}, // Lo HANGUL SYLLABLE SSWEO - {0xC481, 0xC49B, prLVT}, // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH - {0xC49C, 0xC49C, prLV}, // Lo HANGUL SYLLABLE SSWE - {0xC49D, 0xC4B7, prLVT}, // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH - {0xC4B8, 0xC4B8, prLV}, // Lo HANGUL SYLLABLE SSWI - {0xC4B9, 0xC4D3, prLVT}, // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH - {0xC4D4, 0xC4D4, prLV}, // Lo HANGUL SYLLABLE SSYU - {0xC4D5, 0xC4EF, prLVT}, // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH - {0xC4F0, 0xC4F0, prLV}, // Lo HANGUL SYLLABLE SSEU - {0xC4F1, 0xC50B, prLVT}, // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH - {0xC50C, 0xC50C, prLV}, // Lo HANGUL SYLLABLE SSYI - {0xC50D, 0xC527, prLVT}, // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH - {0xC528, 0xC528, prLV}, // Lo HANGUL SYLLABLE SSI - {0xC529, 0xC543, prLVT}, // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH - {0xC544, 0xC544, prLV}, // Lo HANGUL SYLLABLE A - {0xC545, 0xC55F, prLVT}, // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH - {0xC560, 0xC560, prLV}, // Lo HANGUL SYLLABLE AE - {0xC561, 0xC57B, prLVT}, // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH - {0xC57C, 0xC57C, prLV}, // Lo HANGUL SYLLABLE YA - {0xC57D, 0xC597, prLVT}, // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH - {0xC598, 0xC598, prLV}, // Lo HANGUL SYLLABLE YAE - {0xC599, 0xC5B3, prLVT}, // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH - {0xC5B4, 0xC5B4, prLV}, // Lo HANGUL SYLLABLE EO - {0xC5B5, 0xC5CF, prLVT}, // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH - {0xC5D0, 0xC5D0, prLV}, // Lo HANGUL SYLLABLE E - {0xC5D1, 0xC5EB, prLVT}, // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH - {0xC5EC, 0xC5EC, prLV}, // Lo HANGUL SYLLABLE YEO - {0xC5ED, 0xC607, prLVT}, // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH - {0xC608, 0xC608, prLV}, // Lo HANGUL SYLLABLE YE - {0xC609, 0xC623, prLVT}, // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH - {0xC624, 0xC624, prLV}, // Lo HANGUL SYLLABLE O - {0xC625, 0xC63F, prLVT}, // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH - {0xC640, 0xC640, prLV}, // Lo HANGUL SYLLABLE WA - {0xC641, 0xC65B, prLVT}, // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH - {0xC65C, 0xC65C, prLV}, // Lo HANGUL SYLLABLE WAE - {0xC65D, 0xC677, prLVT}, // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH - {0xC678, 0xC678, prLV}, // Lo HANGUL SYLLABLE OE - {0xC679, 0xC693, prLVT}, // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH - {0xC694, 0xC694, prLV}, // Lo HANGUL SYLLABLE YO - {0xC695, 0xC6AF, prLVT}, // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH - {0xC6B0, 0xC6B0, prLV}, // Lo HANGUL SYLLABLE U - {0xC6B1, 0xC6CB, prLVT}, // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH - {0xC6CC, 0xC6CC, prLV}, // Lo HANGUL SYLLABLE WEO - {0xC6CD, 0xC6E7, prLVT}, // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH - {0xC6E8, 0xC6E8, prLV}, // Lo HANGUL SYLLABLE WE - {0xC6E9, 0xC703, prLVT}, // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH - {0xC704, 0xC704, prLV}, // Lo HANGUL SYLLABLE WI - {0xC705, 0xC71F, prLVT}, // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH - {0xC720, 0xC720, prLV}, // Lo HANGUL SYLLABLE YU - {0xC721, 0xC73B, prLVT}, // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH - {0xC73C, 0xC73C, prLV}, // Lo HANGUL SYLLABLE EU - {0xC73D, 0xC757, prLVT}, // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH - {0xC758, 0xC758, prLV}, // Lo HANGUL SYLLABLE YI - {0xC759, 0xC773, prLVT}, // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH - {0xC774, 0xC774, prLV}, // Lo HANGUL SYLLABLE I - {0xC775, 0xC78F, prLVT}, // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH - {0xC790, 0xC790, prLV}, // Lo HANGUL SYLLABLE JA - {0xC791, 0xC7AB, prLVT}, // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH - {0xC7AC, 0xC7AC, prLV}, // Lo HANGUL SYLLABLE JAE - {0xC7AD, 0xC7C7, prLVT}, // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH - {0xC7C8, 0xC7C8, prLV}, // Lo HANGUL SYLLABLE JYA - {0xC7C9, 0xC7E3, prLVT}, // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH - {0xC7E4, 0xC7E4, prLV}, // Lo HANGUL SYLLABLE JYAE - {0xC7E5, 0xC7FF, prLVT}, // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH - {0xC800, 0xC800, prLV}, // Lo HANGUL SYLLABLE JEO - {0xC801, 0xC81B, prLVT}, // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH - {0xC81C, 0xC81C, prLV}, // Lo HANGUL SYLLABLE JE - {0xC81D, 0xC837, prLVT}, // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH - {0xC838, 0xC838, prLV}, // Lo HANGUL SYLLABLE JYEO - {0xC839, 0xC853, prLVT}, // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH - {0xC854, 0xC854, prLV}, // Lo HANGUL SYLLABLE JYE - {0xC855, 0xC86F, prLVT}, // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH - {0xC870, 0xC870, prLV}, // Lo HANGUL SYLLABLE JO - {0xC871, 0xC88B, prLVT}, // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH - {0xC88C, 0xC88C, prLV}, // Lo HANGUL SYLLABLE JWA - {0xC88D, 0xC8A7, prLVT}, // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH - {0xC8A8, 0xC8A8, prLV}, // Lo HANGUL SYLLABLE JWAE - {0xC8A9, 0xC8C3, prLVT}, // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH - {0xC8C4, 0xC8C4, prLV}, // Lo HANGUL SYLLABLE JOE - {0xC8C5, 0xC8DF, prLVT}, // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH - {0xC8E0, 0xC8E0, prLV}, // Lo HANGUL SYLLABLE JYO - {0xC8E1, 0xC8FB, prLVT}, // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH - {0xC8FC, 0xC8FC, prLV}, // Lo HANGUL SYLLABLE JU - {0xC8FD, 0xC917, prLVT}, // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH - {0xC918, 0xC918, prLV}, // Lo HANGUL SYLLABLE JWEO - {0xC919, 0xC933, prLVT}, // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH - {0xC934, 0xC934, prLV}, // Lo HANGUL SYLLABLE JWE - {0xC935, 0xC94F, prLVT}, // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH - {0xC950, 0xC950, prLV}, // Lo HANGUL SYLLABLE JWI - {0xC951, 0xC96B, prLVT}, // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH - {0xC96C, 0xC96C, prLV}, // Lo HANGUL SYLLABLE JYU - {0xC96D, 0xC987, prLVT}, // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH - {0xC988, 0xC988, prLV}, // Lo HANGUL SYLLABLE JEU - {0xC989, 0xC9A3, prLVT}, // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH - {0xC9A4, 0xC9A4, prLV}, // Lo HANGUL SYLLABLE JYI - {0xC9A5, 0xC9BF, prLVT}, // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH - {0xC9C0, 0xC9C0, prLV}, // Lo HANGUL SYLLABLE JI - {0xC9C1, 0xC9DB, prLVT}, // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH - {0xC9DC, 0xC9DC, prLV}, // Lo HANGUL SYLLABLE JJA - {0xC9DD, 0xC9F7, prLVT}, // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH - {0xC9F8, 0xC9F8, prLV}, // Lo HANGUL SYLLABLE JJAE - {0xC9F9, 0xCA13, prLVT}, // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH - {0xCA14, 0xCA14, prLV}, // Lo HANGUL SYLLABLE JJYA - {0xCA15, 0xCA2F, prLVT}, // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH - {0xCA30, 0xCA30, prLV}, // Lo HANGUL SYLLABLE JJYAE - {0xCA31, 0xCA4B, prLVT}, // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH - {0xCA4C, 0xCA4C, prLV}, // Lo HANGUL SYLLABLE JJEO - {0xCA4D, 0xCA67, prLVT}, // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH - {0xCA68, 0xCA68, prLV}, // Lo HANGUL SYLLABLE JJE - {0xCA69, 0xCA83, prLVT}, // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH - {0xCA84, 0xCA84, prLV}, // Lo HANGUL SYLLABLE JJYEO - {0xCA85, 0xCA9F, prLVT}, // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH - {0xCAA0, 0xCAA0, prLV}, // Lo HANGUL SYLLABLE JJYE - {0xCAA1, 0xCABB, prLVT}, // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH - {0xCABC, 0xCABC, prLV}, // Lo HANGUL SYLLABLE JJO - {0xCABD, 0xCAD7, prLVT}, // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH - {0xCAD8, 0xCAD8, prLV}, // Lo HANGUL SYLLABLE JJWA - {0xCAD9, 0xCAF3, prLVT}, // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH - {0xCAF4, 0xCAF4, prLV}, // Lo HANGUL SYLLABLE JJWAE - {0xCAF5, 0xCB0F, prLVT}, // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH - {0xCB10, 0xCB10, prLV}, // Lo HANGUL SYLLABLE JJOE - {0xCB11, 0xCB2B, prLVT}, // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH - {0xCB2C, 0xCB2C, prLV}, // Lo HANGUL SYLLABLE JJYO - {0xCB2D, 0xCB47, prLVT}, // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH - {0xCB48, 0xCB48, prLV}, // Lo HANGUL SYLLABLE JJU - {0xCB49, 0xCB63, prLVT}, // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH - {0xCB64, 0xCB64, prLV}, // Lo HANGUL SYLLABLE JJWEO - {0xCB65, 0xCB7F, prLVT}, // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH - {0xCB80, 0xCB80, prLV}, // Lo HANGUL SYLLABLE JJWE - {0xCB81, 0xCB9B, prLVT}, // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH - {0xCB9C, 0xCB9C, prLV}, // Lo HANGUL SYLLABLE JJWI - {0xCB9D, 0xCBB7, prLVT}, // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH - {0xCBB8, 0xCBB8, prLV}, // Lo HANGUL SYLLABLE JJYU - {0xCBB9, 0xCBD3, prLVT}, // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH - {0xCBD4, 0xCBD4, prLV}, // Lo HANGUL SYLLABLE JJEU - {0xCBD5, 0xCBEF, prLVT}, // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH - {0xCBF0, 0xCBF0, prLV}, // Lo HANGUL SYLLABLE JJYI - {0xCBF1, 0xCC0B, prLVT}, // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH - {0xCC0C, 0xCC0C, prLV}, // Lo HANGUL SYLLABLE JJI - {0xCC0D, 0xCC27, prLVT}, // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH - {0xCC28, 0xCC28, prLV}, // Lo HANGUL SYLLABLE CA - {0xCC29, 0xCC43, prLVT}, // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH - {0xCC44, 0xCC44, prLV}, // Lo HANGUL SYLLABLE CAE - {0xCC45, 0xCC5F, prLVT}, // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH - {0xCC60, 0xCC60, prLV}, // Lo HANGUL SYLLABLE CYA - {0xCC61, 0xCC7B, prLVT}, // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH - {0xCC7C, 0xCC7C, prLV}, // Lo HANGUL SYLLABLE CYAE - {0xCC7D, 0xCC97, prLVT}, // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH - {0xCC98, 0xCC98, prLV}, // Lo HANGUL SYLLABLE CEO - {0xCC99, 0xCCB3, prLVT}, // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH - {0xCCB4, 0xCCB4, prLV}, // Lo HANGUL SYLLABLE CE - {0xCCB5, 0xCCCF, prLVT}, // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH - {0xCCD0, 0xCCD0, prLV}, // Lo HANGUL SYLLABLE CYEO - {0xCCD1, 0xCCEB, prLVT}, // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH - {0xCCEC, 0xCCEC, prLV}, // Lo HANGUL SYLLABLE CYE - {0xCCED, 0xCD07, prLVT}, // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH - {0xCD08, 0xCD08, prLV}, // Lo HANGUL SYLLABLE CO - {0xCD09, 0xCD23, prLVT}, // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH - {0xCD24, 0xCD24, prLV}, // Lo HANGUL SYLLABLE CWA - {0xCD25, 0xCD3F, prLVT}, // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH - {0xCD40, 0xCD40, prLV}, // Lo HANGUL SYLLABLE CWAE - {0xCD41, 0xCD5B, prLVT}, // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH - {0xCD5C, 0xCD5C, prLV}, // Lo HANGUL SYLLABLE COE - {0xCD5D, 0xCD77, prLVT}, // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH - {0xCD78, 0xCD78, prLV}, // Lo HANGUL SYLLABLE CYO - {0xCD79, 0xCD93, prLVT}, // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH - {0xCD94, 0xCD94, prLV}, // Lo HANGUL SYLLABLE CU - {0xCD95, 0xCDAF, prLVT}, // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH - {0xCDB0, 0xCDB0, prLV}, // Lo HANGUL SYLLABLE CWEO - {0xCDB1, 0xCDCB, prLVT}, // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH - {0xCDCC, 0xCDCC, prLV}, // Lo HANGUL SYLLABLE CWE - {0xCDCD, 0xCDE7, prLVT}, // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH - {0xCDE8, 0xCDE8, prLV}, // Lo HANGUL SYLLABLE CWI - {0xCDE9, 0xCE03, prLVT}, // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH - {0xCE04, 0xCE04, prLV}, // Lo HANGUL SYLLABLE CYU - {0xCE05, 0xCE1F, prLVT}, // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH - {0xCE20, 0xCE20, prLV}, // Lo HANGUL SYLLABLE CEU - {0xCE21, 0xCE3B, prLVT}, // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH - {0xCE3C, 0xCE3C, prLV}, // Lo HANGUL SYLLABLE CYI - {0xCE3D, 0xCE57, prLVT}, // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH - {0xCE58, 0xCE58, prLV}, // Lo HANGUL SYLLABLE CI - {0xCE59, 0xCE73, prLVT}, // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH - {0xCE74, 0xCE74, prLV}, // Lo HANGUL SYLLABLE KA - {0xCE75, 0xCE8F, prLVT}, // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH - {0xCE90, 0xCE90, prLV}, // Lo HANGUL SYLLABLE KAE - {0xCE91, 0xCEAB, prLVT}, // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH - {0xCEAC, 0xCEAC, prLV}, // Lo HANGUL SYLLABLE KYA - {0xCEAD, 0xCEC7, prLVT}, // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH - {0xCEC8, 0xCEC8, prLV}, // Lo HANGUL SYLLABLE KYAE - {0xCEC9, 0xCEE3, prLVT}, // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH - {0xCEE4, 0xCEE4, prLV}, // Lo HANGUL SYLLABLE KEO - {0xCEE5, 0xCEFF, prLVT}, // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH - {0xCF00, 0xCF00, prLV}, // Lo HANGUL SYLLABLE KE - {0xCF01, 0xCF1B, prLVT}, // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH - {0xCF1C, 0xCF1C, prLV}, // Lo HANGUL SYLLABLE KYEO - {0xCF1D, 0xCF37, prLVT}, // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH - {0xCF38, 0xCF38, prLV}, // Lo HANGUL SYLLABLE KYE - {0xCF39, 0xCF53, prLVT}, // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH - {0xCF54, 0xCF54, prLV}, // Lo HANGUL SYLLABLE KO - {0xCF55, 0xCF6F, prLVT}, // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH - {0xCF70, 0xCF70, prLV}, // Lo HANGUL SYLLABLE KWA - {0xCF71, 0xCF8B, prLVT}, // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH - {0xCF8C, 0xCF8C, prLV}, // Lo HANGUL SYLLABLE KWAE - {0xCF8D, 0xCFA7, prLVT}, // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH - {0xCFA8, 0xCFA8, prLV}, // Lo HANGUL SYLLABLE KOE - {0xCFA9, 0xCFC3, prLVT}, // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH - {0xCFC4, 0xCFC4, prLV}, // Lo HANGUL SYLLABLE KYO - {0xCFC5, 0xCFDF, prLVT}, // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH - {0xCFE0, 0xCFE0, prLV}, // Lo HANGUL SYLLABLE KU - {0xCFE1, 0xCFFB, prLVT}, // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH - {0xCFFC, 0xCFFC, prLV}, // Lo HANGUL SYLLABLE KWEO - {0xCFFD, 0xD017, prLVT}, // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH - {0xD018, 0xD018, prLV}, // Lo HANGUL SYLLABLE KWE - {0xD019, 0xD033, prLVT}, // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH - {0xD034, 0xD034, prLV}, // Lo HANGUL SYLLABLE KWI - {0xD035, 0xD04F, prLVT}, // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH - {0xD050, 0xD050, prLV}, // Lo HANGUL SYLLABLE KYU - {0xD051, 0xD06B, prLVT}, // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH - {0xD06C, 0xD06C, prLV}, // Lo HANGUL SYLLABLE KEU - {0xD06D, 0xD087, prLVT}, // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH - {0xD088, 0xD088, prLV}, // Lo HANGUL SYLLABLE KYI - {0xD089, 0xD0A3, prLVT}, // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH - {0xD0A4, 0xD0A4, prLV}, // Lo HANGUL SYLLABLE KI - {0xD0A5, 0xD0BF, prLVT}, // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH - {0xD0C0, 0xD0C0, prLV}, // Lo HANGUL SYLLABLE TA - {0xD0C1, 0xD0DB, prLVT}, // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH - {0xD0DC, 0xD0DC, prLV}, // Lo HANGUL SYLLABLE TAE - {0xD0DD, 0xD0F7, prLVT}, // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH - {0xD0F8, 0xD0F8, prLV}, // Lo HANGUL SYLLABLE TYA - {0xD0F9, 0xD113, prLVT}, // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH - {0xD114, 0xD114, prLV}, // Lo HANGUL SYLLABLE TYAE - {0xD115, 0xD12F, prLVT}, // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH - {0xD130, 0xD130, prLV}, // Lo HANGUL SYLLABLE TEO - {0xD131, 0xD14B, prLVT}, // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH - {0xD14C, 0xD14C, prLV}, // Lo HANGUL SYLLABLE TE - {0xD14D, 0xD167, prLVT}, // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH - {0xD168, 0xD168, prLV}, // Lo HANGUL SYLLABLE TYEO - {0xD169, 0xD183, prLVT}, // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH - {0xD184, 0xD184, prLV}, // Lo HANGUL SYLLABLE TYE - {0xD185, 0xD19F, prLVT}, // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH - {0xD1A0, 0xD1A0, prLV}, // Lo HANGUL SYLLABLE TO - {0xD1A1, 0xD1BB, prLVT}, // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH - {0xD1BC, 0xD1BC, prLV}, // Lo HANGUL SYLLABLE TWA - {0xD1BD, 0xD1D7, prLVT}, // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH - {0xD1D8, 0xD1D8, prLV}, // Lo HANGUL SYLLABLE TWAE - {0xD1D9, 0xD1F3, prLVT}, // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH - {0xD1F4, 0xD1F4, prLV}, // Lo HANGUL SYLLABLE TOE - {0xD1F5, 0xD20F, prLVT}, // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH - {0xD210, 0xD210, prLV}, // Lo HANGUL SYLLABLE TYO - {0xD211, 0xD22B, prLVT}, // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH - {0xD22C, 0xD22C, prLV}, // Lo HANGUL SYLLABLE TU - {0xD22D, 0xD247, prLVT}, // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH - {0xD248, 0xD248, prLV}, // Lo HANGUL SYLLABLE TWEO - {0xD249, 0xD263, prLVT}, // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH - {0xD264, 0xD264, prLV}, // Lo HANGUL SYLLABLE TWE - {0xD265, 0xD27F, prLVT}, // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH - {0xD280, 0xD280, prLV}, // Lo HANGUL SYLLABLE TWI - {0xD281, 0xD29B, prLVT}, // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH - {0xD29C, 0xD29C, prLV}, // Lo HANGUL SYLLABLE TYU - {0xD29D, 0xD2B7, prLVT}, // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH - {0xD2B8, 0xD2B8, prLV}, // Lo HANGUL SYLLABLE TEU - {0xD2B9, 0xD2D3, prLVT}, // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH - {0xD2D4, 0xD2D4, prLV}, // Lo HANGUL SYLLABLE TYI - {0xD2D5, 0xD2EF, prLVT}, // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH - {0xD2F0, 0xD2F0, prLV}, // Lo HANGUL SYLLABLE TI - {0xD2F1, 0xD30B, prLVT}, // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH - {0xD30C, 0xD30C, prLV}, // Lo HANGUL SYLLABLE PA - {0xD30D, 0xD327, prLVT}, // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH - {0xD328, 0xD328, prLV}, // Lo HANGUL SYLLABLE PAE - {0xD329, 0xD343, prLVT}, // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH - {0xD344, 0xD344, prLV}, // Lo HANGUL SYLLABLE PYA - {0xD345, 0xD35F, prLVT}, // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH - {0xD360, 0xD360, prLV}, // Lo HANGUL SYLLABLE PYAE - {0xD361, 0xD37B, prLVT}, // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH - {0xD37C, 0xD37C, prLV}, // Lo HANGUL SYLLABLE PEO - {0xD37D, 0xD397, prLVT}, // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH - {0xD398, 0xD398, prLV}, // Lo HANGUL SYLLABLE PE - {0xD399, 0xD3B3, prLVT}, // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH - {0xD3B4, 0xD3B4, prLV}, // Lo HANGUL SYLLABLE PYEO - {0xD3B5, 0xD3CF, prLVT}, // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH - {0xD3D0, 0xD3D0, prLV}, // Lo HANGUL SYLLABLE PYE - {0xD3D1, 0xD3EB, prLVT}, // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH - {0xD3EC, 0xD3EC, prLV}, // Lo HANGUL SYLLABLE PO - {0xD3ED, 0xD407, prLVT}, // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH - {0xD408, 0xD408, prLV}, // Lo HANGUL SYLLABLE PWA - {0xD409, 0xD423, prLVT}, // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH - {0xD424, 0xD424, prLV}, // Lo HANGUL SYLLABLE PWAE - {0xD425, 0xD43F, prLVT}, // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH - {0xD440, 0xD440, prLV}, // Lo HANGUL SYLLABLE POE - {0xD441, 0xD45B, prLVT}, // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH - {0xD45C, 0xD45C, prLV}, // Lo HANGUL SYLLABLE PYO - {0xD45D, 0xD477, prLVT}, // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH - {0xD478, 0xD478, prLV}, // Lo HANGUL SYLLABLE PU - {0xD479, 0xD493, prLVT}, // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH - {0xD494, 0xD494, prLV}, // Lo HANGUL SYLLABLE PWEO - {0xD495, 0xD4AF, prLVT}, // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH - {0xD4B0, 0xD4B0, prLV}, // Lo HANGUL SYLLABLE PWE - {0xD4B1, 0xD4CB, prLVT}, // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH - {0xD4CC, 0xD4CC, prLV}, // Lo HANGUL SYLLABLE PWI - {0xD4CD, 0xD4E7, prLVT}, // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH - {0xD4E8, 0xD4E8, prLV}, // Lo HANGUL SYLLABLE PYU - {0xD4E9, 0xD503, prLVT}, // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH - {0xD504, 0xD504, prLV}, // Lo HANGUL SYLLABLE PEU - {0xD505, 0xD51F, prLVT}, // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH - {0xD520, 0xD520, prLV}, // Lo HANGUL SYLLABLE PYI - {0xD521, 0xD53B, prLVT}, // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH - {0xD53C, 0xD53C, prLV}, // Lo HANGUL SYLLABLE PI - {0xD53D, 0xD557, prLVT}, // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH - {0xD558, 0xD558, prLV}, // Lo HANGUL SYLLABLE HA - {0xD559, 0xD573, prLVT}, // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH - {0xD574, 0xD574, prLV}, // Lo HANGUL SYLLABLE HAE - {0xD575, 0xD58F, prLVT}, // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH - {0xD590, 0xD590, prLV}, // Lo HANGUL SYLLABLE HYA - {0xD591, 0xD5AB, prLVT}, // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH - {0xD5AC, 0xD5AC, prLV}, // Lo HANGUL SYLLABLE HYAE - {0xD5AD, 0xD5C7, prLVT}, // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH - {0xD5C8, 0xD5C8, prLV}, // Lo HANGUL SYLLABLE HEO - {0xD5C9, 0xD5E3, prLVT}, // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH - {0xD5E4, 0xD5E4, prLV}, // Lo HANGUL SYLLABLE HE - {0xD5E5, 0xD5FF, prLVT}, // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH - {0xD600, 0xD600, prLV}, // Lo HANGUL SYLLABLE HYEO - {0xD601, 0xD61B, prLVT}, // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH - {0xD61C, 0xD61C, prLV}, // Lo HANGUL SYLLABLE HYE - {0xD61D, 0xD637, prLVT}, // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH - {0xD638, 0xD638, prLV}, // Lo HANGUL SYLLABLE HO - {0xD639, 0xD653, prLVT}, // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH - {0xD654, 0xD654, prLV}, // Lo HANGUL SYLLABLE HWA - {0xD655, 0xD66F, prLVT}, // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH - {0xD670, 0xD670, prLV}, // Lo HANGUL SYLLABLE HWAE - {0xD671, 0xD68B, prLVT}, // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH - {0xD68C, 0xD68C, prLV}, // Lo HANGUL SYLLABLE HOE - {0xD68D, 0xD6A7, prLVT}, // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH - {0xD6A8, 0xD6A8, prLV}, // Lo HANGUL SYLLABLE HYO - {0xD6A9, 0xD6C3, prLVT}, // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH - {0xD6C4, 0xD6C4, prLV}, // Lo HANGUL SYLLABLE HU - {0xD6C5, 0xD6DF, prLVT}, // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH - {0xD6E0, 0xD6E0, prLV}, // Lo HANGUL SYLLABLE HWEO - {0xD6E1, 0xD6FB, prLVT}, // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH - {0xD6FC, 0xD6FC, prLV}, // Lo HANGUL SYLLABLE HWE - {0xD6FD, 0xD717, prLVT}, // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH - {0xD718, 0xD718, prLV}, // Lo HANGUL SYLLABLE HWI - {0xD719, 0xD733, prLVT}, // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH - {0xD734, 0xD734, prLV}, // Lo HANGUL SYLLABLE HYU - {0xD735, 0xD74F, prLVT}, // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH - {0xD750, 0xD750, prLV}, // Lo HANGUL SYLLABLE HEU - {0xD751, 0xD76B, prLVT}, // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH - {0xD76C, 0xD76C, prLV}, // Lo HANGUL SYLLABLE HYI - {0xD76D, 0xD787, prLVT}, // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH - {0xD788, 0xD788, prLV}, // Lo HANGUL SYLLABLE HI - {0xD789, 0xD7A3, prLVT}, // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH - {0xD7B0, 0xD7C6, prV}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E - {0xD7CB, 0xD7FB, prT}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH - {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA - {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 - {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF - {0xFEFF, 0xFEFF, prControl}, // Cf ZERO WIDTH NO-BREAK SPACE - {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - {0xFFF0, 0xFFF8, prControl}, // Cn [9] <reserved-FFF0>..<reserved-FFF8> - {0xFFF9, 0xFFFB, prControl}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR - {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE - {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK - {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII - {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R - {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O - {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW - {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA - {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW - {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI - {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK - {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA - {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW - {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW - {0x11000, 0x11000, prSpacingMark}, // Mc BRAHMI SIGN CANDRABINDU - {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA - {0x11002, 0x11002, prSpacingMark}, // Mc BRAHMI SIGN VISARGA - {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA - {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA - {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O - {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA - {0x11082, 0x11082, prSpacingMark}, // Mc KAITHI SIGN VISARGA - {0x110B0, 0x110B2, prSpacingMark}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II - {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI - {0x110B7, 0x110B8, prSpacingMark}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU - {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA - {0x110BD, 0x110BD, prPrepend}, // Cf KAITHI NUMBER SIGN - {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R - {0x110CD, 0x110CD, prPrepend}, // Cf KAITHI NUMBER SIGN ABOVE - {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA - {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU - {0x1112C, 0x1112C, prSpacingMark}, // Mc CHAKMA VOWEL SIGN E - {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA - {0x11145, 0x11146, prSpacingMark}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI - {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA - {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA - {0x11182, 0x11182, prSpacingMark}, // Mc SHARADA SIGN VISARGA - {0x111B3, 0x111B5, prSpacingMark}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II - {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O - {0x111BF, 0x111C0, prSpacingMark}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA - {0x111C2, 0x111C3, prPrepend}, // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA - {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK - {0x111CE, 0x111CE, prSpacingMark}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E - {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU - {0x1122C, 0x1122E, prSpacingMark}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II - {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - {0x11232, 0x11233, prSpacingMark}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA - {0x11235, 0x11235, prSpacingMark}, // Mc KHOJKI SIGN VIRAMA - {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA - {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN - {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R - {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA - {0x112E0, 0x112E2, prSpacingMark}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II - {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU - {0x11302, 0x11303, prSpacingMark}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA - {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA - {0x1133E, 0x1133E, prExtend}, // Mc GRANTHA VOWEL SIGN AA - {0x1133F, 0x1133F, prSpacingMark}, // Mc GRANTHA VOWEL SIGN I - {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II - {0x11341, 0x11344, prSpacingMark}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR - {0x11347, 0x11348, prSpacingMark}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI - {0x1134B, 0x1134D, prSpacingMark}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA - {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK - {0x11362, 0x11363, prSpacingMark}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA - {0x11435, 0x11437, prSpacingMark}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II - {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI - {0x11440, 0x11441, prSpacingMark}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU - {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA - {0x11445, 0x11445, prSpacingMark}, // Mc NEWA SIGN VISARGA - {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA - {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK - {0x114B0, 0x114B0, prExtend}, // Mc TIRHUTA VOWEL SIGN AA - {0x114B1, 0x114B2, prSpacingMark}, // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II - {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - {0x114B9, 0x114B9, prSpacingMark}, // Mc TIRHUTA VOWEL SIGN E - {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E - {0x114BB, 0x114BC, prSpacingMark}, // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O - {0x114BD, 0x114BD, prExtend}, // Mc TIRHUTA VOWEL SIGN SHORT O - {0x114BE, 0x114BE, prSpacingMark}, // Mc TIRHUTA VOWEL SIGN AU - {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA - {0x114C1, 0x114C1, prSpacingMark}, // Mc TIRHUTA SIGN VISARGA - {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA - {0x115AF, 0x115AF, prExtend}, // Mc SIDDHAM VOWEL SIGN AA - {0x115B0, 0x115B1, prSpacingMark}, // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II - {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR - {0x115B8, 0x115BB, prSpacingMark}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU - {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA - {0x115BE, 0x115BE, prSpacingMark}, // Mc SIDDHAM SIGN VISARGA - {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA - {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU - {0x11630, 0x11632, prSpacingMark}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II - {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI - {0x1163B, 0x1163C, prSpacingMark}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU - {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA - {0x1163E, 0x1163E, prSpacingMark}, // Mc MODI SIGN VISARGA - {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA - {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA - {0x116AC, 0x116AC, prSpacingMark}, // Mc TAKRI SIGN VISARGA - {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA - {0x116AE, 0x116AF, prSpacingMark}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II - {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU - {0x116B6, 0x116B6, prSpacingMark}, // Mc TAKRI SIGN VIRAMA - {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA - {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - {0x11726, 0x11726, prSpacingMark}, // Mc AHOM VOWEL SIGN E - {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER - {0x1182C, 0x1182E, prSpacingMark}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II - {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA - {0x11838, 0x11838, prSpacingMark}, // Mc DOGRA SIGN VISARGA - {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA - {0x11930, 0x11930, prExtend}, // Mc DIVES AKURU VOWEL SIGN AA - {0x11931, 0x11935, prSpacingMark}, // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E - {0x11937, 0x11938, prSpacingMark}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O - {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU - {0x1193D, 0x1193D, prSpacingMark}, // Mc DIVES AKURU SIGN HALANTA - {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA - {0x1193F, 0x1193F, prPrepend}, // Lo DIVES AKURU PREFIXED NASAL SIGN - {0x11940, 0x11940, prSpacingMark}, // Mc DIVES AKURU MEDIAL YA - {0x11941, 0x11941, prPrepend}, // Lo DIVES AKURU INITIAL RA - {0x11942, 0x11942, prSpacingMark}, // Mc DIVES AKURU MEDIAL RA - {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA - {0x119D1, 0x119D3, prSpacingMark}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II - {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR - {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI - {0x119DC, 0x119DF, prSpacingMark}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA - {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA - {0x119E4, 0x119E4, prSpacingMark}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E - {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK - {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA - {0x11A39, 0x11A39, prSpacingMark}, // Mc ZANABAZAR SQUARE SIGN VISARGA - {0x11A3A, 0x11A3A, prPrepend}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA - {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA - {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER - {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE - {0x11A57, 0x11A58, prSpacingMark}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU - {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK - {0x11A84, 0x11A89, prPrepend}, // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA - {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA - {0x11A97, 0x11A97, prSpacingMark}, // Mc SOYOMBO SIGN VISARGA - {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER - {0x11C2F, 0x11C2F, prSpacingMark}, // Mc BHAIKSUKI VOWEL SIGN AA - {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L - {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA - {0x11C3E, 0x11C3E, prSpacingMark}, // Mc BHAIKSUKI SIGN VISARGA - {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA - {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA - {0x11CA9, 0x11CA9, prSpacingMark}, // Mc MARCHEN SUBJOINED LETTER YA - {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA - {0x11CB1, 0x11CB1, prSpacingMark}, // Mc MARCHEN VOWEL SIGN I - {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E - {0x11CB4, 0x11CB4, prSpacingMark}, // Mc MARCHEN VOWEL SIGN O - {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R - {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E - {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O - {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA - {0x11D46, 0x11D46, prPrepend}, // Lo MASARAM GONDI REPHA - {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA - {0x11D8A, 0x11D8E, prSpacingMark}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU - {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI - {0x11D93, 0x11D94, prSpacingMark}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU - {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA - {0x11D96, 0x11D96, prSpacingMark}, // Mc GUNJALA GONDI SIGN VISARGA - {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA - {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U - {0x11EF5, 0x11EF6, prSpacingMark}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O - {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA - {0x11F02, 0x11F02, prPrepend}, // Lo KAWI SIGN REPHA - {0x11F03, 0x11F03, prSpacingMark}, // Mc KAWI SIGN VISARGA - {0x11F34, 0x11F35, prSpacingMark}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA - {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R - {0x11F3E, 0x11F3F, prSpacingMark}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI - {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU - {0x11F41, 0x11F41, prSpacingMark}, // Mc KAWI SIGN KILLER - {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER - {0x13430, 0x1343F, prControl}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE - {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY - {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED - {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR - {0x16F51, 0x16F87, prSpacingMark}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI - {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER - {0x16FF0, 0x16FF1, prSpacingMark}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY - {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - {0x1BCA0, 0x1BCA3, prControl}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT - {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG - {0x1D165, 0x1D165, prExtend}, // Mc MUSICAL SYMBOL COMBINING STEM - {0x1D166, 0x1D166, prSpacingMark}, // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM - {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 - {0x1D16D, 0x1D16D, prSpacingMark}, // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT - {0x1D16E, 0x1D172, prExtend}, // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 - {0x1D173, 0x1D17A, prControl}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE - {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE - {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE - {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME - {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN - {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT - {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS - {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK - {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 - {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE - {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU - {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI - {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS - {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D - {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE - {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI - {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH - {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS - {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - {0x1F000, 0x1F003, prExtendedPictographic}, // E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND - {0x1F004, 0x1F004, prExtendedPictographic}, // E0.6 [1] (🀄) mahjong red dragon - {0x1F005, 0x1F0CE, prExtendedPictographic}, // E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS - {0x1F0CF, 0x1F0CF, prExtendedPictographic}, // E0.6 [1] (🃏) joker - {0x1F0D0, 0x1F0FF, prExtendedPictographic}, // E0.0 [48] (🃐..🃿) <reserved-1F0D0>..<reserved-1F0FF> - {0x1F10D, 0x1F10F, prExtendedPictographic}, // E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH - {0x1F12F, 0x1F12F, prExtendedPictographic}, // E0.0 [1] (🄯) COPYLEFT SYMBOL - {0x1F16C, 0x1F16F, prExtendedPictographic}, // E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE - {0x1F170, 0x1F171, prExtendedPictographic}, // E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) - {0x1F17E, 0x1F17F, prExtendedPictographic}, // E0.6 [2] (🅾️..🅿️) O button (blood type)..P button - {0x1F18E, 0x1F18E, prExtendedPictographic}, // E0.6 [1] (🆎) AB button (blood type) - {0x1F191, 0x1F19A, prExtendedPictographic}, // E0.6 [10] (🆑..🆚) CL button..VS button - {0x1F1AD, 0x1F1E5, prExtendedPictographic}, // E0.0 [57] (🆭..🇥) MASK WORK SYMBOL..<reserved-1F1E5> - {0x1F1E6, 0x1F1FF, prRegionalIndicator}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z - {0x1F201, 0x1F202, prExtendedPictographic}, // E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button - {0x1F203, 0x1F20F, prExtendedPictographic}, // E0.0 [13] (🈃..🈏) <reserved-1F203>..<reserved-1F20F> - {0x1F21A, 0x1F21A, prExtendedPictographic}, // E0.6 [1] (🈚) Japanese “free of charge” button - {0x1F22F, 0x1F22F, prExtendedPictographic}, // E0.6 [1] (🈯) Japanese “reserved” button - {0x1F232, 0x1F23A, prExtendedPictographic}, // E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button - {0x1F23C, 0x1F23F, prExtendedPictographic}, // E0.0 [4] (🈼..🈿) <reserved-1F23C>..<reserved-1F23F> - {0x1F249, 0x1F24F, prExtendedPictographic}, // E0.0 [7] (🉉..🉏) <reserved-1F249>..<reserved-1F24F> - {0x1F250, 0x1F251, prExtendedPictographic}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button - {0x1F252, 0x1F2FF, prExtendedPictographic}, // E0.0 [174] (🉒..🋿) <reserved-1F252>..<reserved-1F2FF> - {0x1F300, 0x1F30C, prExtendedPictographic}, // E0.6 [13] (🌀..🌌) cyclone..milky way - {0x1F30D, 0x1F30E, prExtendedPictographic}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas - {0x1F30F, 0x1F30F, prExtendedPictographic}, // E0.6 [1] (🌏) globe showing Asia-Australia - {0x1F310, 0x1F310, prExtendedPictographic}, // E1.0 [1] (🌐) globe with meridians - {0x1F311, 0x1F311, prExtendedPictographic}, // E0.6 [1] (🌑) new moon - {0x1F312, 0x1F312, prExtendedPictographic}, // E1.0 [1] (🌒) waxing crescent moon - {0x1F313, 0x1F315, prExtendedPictographic}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon - {0x1F316, 0x1F318, prExtendedPictographic}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon - {0x1F319, 0x1F319, prExtendedPictographic}, // E0.6 [1] (🌙) crescent moon - {0x1F31A, 0x1F31A, prExtendedPictographic}, // E1.0 [1] (🌚) new moon face - {0x1F31B, 0x1F31B, prExtendedPictographic}, // E0.6 [1] (🌛) first quarter moon face - {0x1F31C, 0x1F31C, prExtendedPictographic}, // E0.7 [1] (🌜) last quarter moon face - {0x1F31D, 0x1F31E, prExtendedPictographic}, // E1.0 [2] (🌝..🌞) full moon face..sun with face - {0x1F31F, 0x1F320, prExtendedPictographic}, // E0.6 [2] (🌟..🌠) glowing star..shooting star - {0x1F321, 0x1F321, prExtendedPictographic}, // E0.7 [1] (🌡️) thermometer - {0x1F322, 0x1F323, prExtendedPictographic}, // E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN - {0x1F324, 0x1F32C, prExtendedPictographic}, // E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face - {0x1F32D, 0x1F32F, prExtendedPictographic}, // E1.0 [3] (🌭..🌯) hot dog..burrito - {0x1F330, 0x1F331, prExtendedPictographic}, // E0.6 [2] (🌰..🌱) chestnut..seedling - {0x1F332, 0x1F333, prExtendedPictographic}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree - {0x1F334, 0x1F335, prExtendedPictographic}, // E0.6 [2] (🌴..🌵) palm tree..cactus - {0x1F336, 0x1F336, prExtendedPictographic}, // E0.7 [1] (🌶️) hot pepper - {0x1F337, 0x1F34A, prExtendedPictographic}, // E0.6 [20] (🌷..🍊) tulip..tangerine - {0x1F34B, 0x1F34B, prExtendedPictographic}, // E1.0 [1] (🍋) lemon - {0x1F34C, 0x1F34F, prExtendedPictographic}, // E0.6 [4] (🍌..🍏) banana..green apple - {0x1F350, 0x1F350, prExtendedPictographic}, // E1.0 [1] (🍐) pear - {0x1F351, 0x1F37B, prExtendedPictographic}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs - {0x1F37C, 0x1F37C, prExtendedPictographic}, // E1.0 [1] (🍼) baby bottle - {0x1F37D, 0x1F37D, prExtendedPictographic}, // E0.7 [1] (🍽️) fork and knife with plate - {0x1F37E, 0x1F37F, prExtendedPictographic}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn - {0x1F380, 0x1F393, prExtendedPictographic}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap - {0x1F394, 0x1F395, prExtendedPictographic}, // E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS - {0x1F396, 0x1F397, prExtendedPictographic}, // E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon - {0x1F398, 0x1F398, prExtendedPictographic}, // E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS - {0x1F399, 0x1F39B, prExtendedPictographic}, // E0.7 [3] (🎙️..🎛️) studio microphone..control knobs - {0x1F39C, 0x1F39D, prExtendedPictographic}, // E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES - {0x1F39E, 0x1F39F, prExtendedPictographic}, // E0.7 [2] (🎞️..🎟️) film frames..admission tickets - {0x1F3A0, 0x1F3C4, prExtendedPictographic}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing - {0x1F3C5, 0x1F3C5, prExtendedPictographic}, // E1.0 [1] (🏅) sports medal - {0x1F3C6, 0x1F3C6, prExtendedPictographic}, // E0.6 [1] (🏆) trophy - {0x1F3C7, 0x1F3C7, prExtendedPictographic}, // E1.0 [1] (🏇) horse racing - {0x1F3C8, 0x1F3C8, prExtendedPictographic}, // E0.6 [1] (🏈) american football - {0x1F3C9, 0x1F3C9, prExtendedPictographic}, // E1.0 [1] (🏉) rugby football - {0x1F3CA, 0x1F3CA, prExtendedPictographic}, // E0.6 [1] (🏊) person swimming - {0x1F3CB, 0x1F3CE, prExtendedPictographic}, // E0.7 [4] (🏋️..🏎️) person lifting weights..racing car - {0x1F3CF, 0x1F3D3, prExtendedPictographic}, // E1.0 [5] (🏏..🏓) cricket game..ping pong - {0x1F3D4, 0x1F3DF, prExtendedPictographic}, // E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium - {0x1F3E0, 0x1F3E3, prExtendedPictographic}, // E0.6 [4] (🏠..🏣) house..Japanese post office - {0x1F3E4, 0x1F3E4, prExtendedPictographic}, // E1.0 [1] (🏤) post office - {0x1F3E5, 0x1F3F0, prExtendedPictographic}, // E0.6 [12] (🏥..🏰) hospital..castle - {0x1F3F1, 0x1F3F2, prExtendedPictographic}, // E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT - {0x1F3F3, 0x1F3F3, prExtendedPictographic}, // E0.7 [1] (🏳️) white flag - {0x1F3F4, 0x1F3F4, prExtendedPictographic}, // E1.0 [1] (🏴) black flag - {0x1F3F5, 0x1F3F5, prExtendedPictographic}, // E0.7 [1] (🏵️) rosette - {0x1F3F6, 0x1F3F6, prExtendedPictographic}, // E0.0 [1] (🏶) BLACK ROSETTE - {0x1F3F7, 0x1F3F7, prExtendedPictographic}, // E0.7 [1] (🏷️) label - {0x1F3F8, 0x1F3FA, prExtendedPictographic}, // E1.0 [3] (🏸..🏺) badminton..amphora - {0x1F3FB, 0x1F3FF, prExtend}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 - {0x1F400, 0x1F407, prExtendedPictographic}, // E1.0 [8] (🐀..🐇) rat..rabbit - {0x1F408, 0x1F408, prExtendedPictographic}, // E0.7 [1] (🐈) cat - {0x1F409, 0x1F40B, prExtendedPictographic}, // E1.0 [3] (🐉..🐋) dragon..whale - {0x1F40C, 0x1F40E, prExtendedPictographic}, // E0.6 [3] (🐌..🐎) snail..horse - {0x1F40F, 0x1F410, prExtendedPictographic}, // E1.0 [2] (🐏..🐐) ram..goat - {0x1F411, 0x1F412, prExtendedPictographic}, // E0.6 [2] (🐑..🐒) ewe..monkey - {0x1F413, 0x1F413, prExtendedPictographic}, // E1.0 [1] (🐓) rooster - {0x1F414, 0x1F414, prExtendedPictographic}, // E0.6 [1] (🐔) chicken - {0x1F415, 0x1F415, prExtendedPictographic}, // E0.7 [1] (🐕) dog - {0x1F416, 0x1F416, prExtendedPictographic}, // E1.0 [1] (🐖) pig - {0x1F417, 0x1F429, prExtendedPictographic}, // E0.6 [19] (🐗..🐩) boar..poodle - {0x1F42A, 0x1F42A, prExtendedPictographic}, // E1.0 [1] (🐪) camel - {0x1F42B, 0x1F43E, prExtendedPictographic}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints - {0x1F43F, 0x1F43F, prExtendedPictographic}, // E0.7 [1] (🐿️) chipmunk - {0x1F440, 0x1F440, prExtendedPictographic}, // E0.6 [1] (👀) eyes - {0x1F441, 0x1F441, prExtendedPictographic}, // E0.7 [1] (👁️) eye - {0x1F442, 0x1F464, prExtendedPictographic}, // E0.6 [35] (👂..👤) ear..bust in silhouette - {0x1F465, 0x1F465, prExtendedPictographic}, // E1.0 [1] (👥) busts in silhouette - {0x1F466, 0x1F46B, prExtendedPictographic}, // E0.6 [6] (👦..👫) boy..woman and man holding hands - {0x1F46C, 0x1F46D, prExtendedPictographic}, // E1.0 [2] (👬..👭) men holding hands..women holding hands - {0x1F46E, 0x1F4AC, prExtendedPictographic}, // E0.6 [63] (👮..💬) police officer..speech balloon - {0x1F4AD, 0x1F4AD, prExtendedPictographic}, // E1.0 [1] (💭) thought balloon - {0x1F4AE, 0x1F4B5, prExtendedPictographic}, // E0.6 [8] (💮..💵) white flower..dollar banknote - {0x1F4B6, 0x1F4B7, prExtendedPictographic}, // E1.0 [2] (💶..💷) euro banknote..pound banknote - {0x1F4B8, 0x1F4EB, prExtendedPictographic}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag - {0x1F4EC, 0x1F4ED, prExtendedPictographic}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag - {0x1F4EE, 0x1F4EE, prExtendedPictographic}, // E0.6 [1] (📮) postbox - {0x1F4EF, 0x1F4EF, prExtendedPictographic}, // E1.0 [1] (📯) postal horn - {0x1F4F0, 0x1F4F4, prExtendedPictographic}, // E0.6 [5] (📰..📴) newspaper..mobile phone off - {0x1F4F5, 0x1F4F5, prExtendedPictographic}, // E1.0 [1] (📵) no mobile phones - {0x1F4F6, 0x1F4F7, prExtendedPictographic}, // E0.6 [2] (📶..📷) antenna bars..camera - {0x1F4F8, 0x1F4F8, prExtendedPictographic}, // E1.0 [1] (📸) camera with flash - {0x1F4F9, 0x1F4FC, prExtendedPictographic}, // E0.6 [4] (📹..📼) video camera..videocassette - {0x1F4FD, 0x1F4FD, prExtendedPictographic}, // E0.7 [1] (📽️) film projector - {0x1F4FE, 0x1F4FE, prExtendedPictographic}, // E0.0 [1] (📾) PORTABLE STEREO - {0x1F4FF, 0x1F502, prExtendedPictographic}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button - {0x1F503, 0x1F503, prExtendedPictographic}, // E0.6 [1] (🔃) clockwise vertical arrows - {0x1F504, 0x1F507, prExtendedPictographic}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker - {0x1F508, 0x1F508, prExtendedPictographic}, // E0.7 [1] (🔈) speaker low volume - {0x1F509, 0x1F509, prExtendedPictographic}, // E1.0 [1] (🔉) speaker medium volume - {0x1F50A, 0x1F514, prExtendedPictographic}, // E0.6 [11] (🔊..🔔) speaker high volume..bell - {0x1F515, 0x1F515, prExtendedPictographic}, // E1.0 [1] (🔕) bell with slash - {0x1F516, 0x1F52B, prExtendedPictographic}, // E0.6 [22] (🔖..🔫) bookmark..water pistol - {0x1F52C, 0x1F52D, prExtendedPictographic}, // E1.0 [2] (🔬..🔭) microscope..telescope - {0x1F52E, 0x1F53D, prExtendedPictographic}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button - {0x1F546, 0x1F548, prExtendedPictographic}, // E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS - {0x1F549, 0x1F54A, prExtendedPictographic}, // E0.7 [2] (🕉️..🕊️) om..dove - {0x1F54B, 0x1F54E, prExtendedPictographic}, // E1.0 [4] (🕋..🕎) kaaba..menorah - {0x1F54F, 0x1F54F, prExtendedPictographic}, // E0.0 [1] (🕏) BOWL OF HYGIEIA - {0x1F550, 0x1F55B, prExtendedPictographic}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock - {0x1F55C, 0x1F567, prExtendedPictographic}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty - {0x1F568, 0x1F56E, prExtendedPictographic}, // E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK - {0x1F56F, 0x1F570, prExtendedPictographic}, // E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock - {0x1F571, 0x1F572, prExtendedPictographic}, // E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY - {0x1F573, 0x1F579, prExtendedPictographic}, // E0.7 [7] (🕳️..🕹️) hole..joystick - {0x1F57A, 0x1F57A, prExtendedPictographic}, // E3.0 [1] (🕺) man dancing - {0x1F57B, 0x1F586, prExtendedPictographic}, // E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE - {0x1F587, 0x1F587, prExtendedPictographic}, // E0.7 [1] (🖇️) linked paperclips - {0x1F588, 0x1F589, prExtendedPictographic}, // E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL - {0x1F58A, 0x1F58D, prExtendedPictographic}, // E0.7 [4] (🖊️..🖍️) pen..crayon - {0x1F58E, 0x1F58F, prExtendedPictographic}, // E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN - {0x1F590, 0x1F590, prExtendedPictographic}, // E0.7 [1] (🖐️) hand with fingers splayed - {0x1F591, 0x1F594, prExtendedPictographic}, // E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND - {0x1F595, 0x1F596, prExtendedPictographic}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute - {0x1F597, 0x1F5A3, prExtendedPictographic}, // E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX - {0x1F5A4, 0x1F5A4, prExtendedPictographic}, // E3.0 [1] (🖤) black heart - {0x1F5A5, 0x1F5A5, prExtendedPictographic}, // E0.7 [1] (🖥️) desktop computer - {0x1F5A6, 0x1F5A7, prExtendedPictographic}, // E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS - {0x1F5A8, 0x1F5A8, prExtendedPictographic}, // E0.7 [1] (🖨️) printer - {0x1F5A9, 0x1F5B0, prExtendedPictographic}, // E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE - {0x1F5B1, 0x1F5B2, prExtendedPictographic}, // E0.7 [2] (🖱️..🖲️) computer mouse..trackball - {0x1F5B3, 0x1F5BB, prExtendedPictographic}, // E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE - {0x1F5BC, 0x1F5BC, prExtendedPictographic}, // E0.7 [1] (🖼️) framed picture - {0x1F5BD, 0x1F5C1, prExtendedPictographic}, // E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER - {0x1F5C2, 0x1F5C4, prExtendedPictographic}, // E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet - {0x1F5C5, 0x1F5D0, prExtendedPictographic}, // E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES - {0x1F5D1, 0x1F5D3, prExtendedPictographic}, // E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar - {0x1F5D4, 0x1F5DB, prExtendedPictographic}, // E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL - {0x1F5DC, 0x1F5DE, prExtendedPictographic}, // E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper - {0x1F5DF, 0x1F5E0, prExtendedPictographic}, // E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART - {0x1F5E1, 0x1F5E1, prExtendedPictographic}, // E0.7 [1] (🗡️) dagger - {0x1F5E2, 0x1F5E2, prExtendedPictographic}, // E0.0 [1] (🗢) LIPS - {0x1F5E3, 0x1F5E3, prExtendedPictographic}, // E0.7 [1] (🗣️) speaking head - {0x1F5E4, 0x1F5E7, prExtendedPictographic}, // E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT - {0x1F5E8, 0x1F5E8, prExtendedPictographic}, // E2.0 [1] (🗨️) left speech bubble - {0x1F5E9, 0x1F5EE, prExtendedPictographic}, // E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE - {0x1F5EF, 0x1F5EF, prExtendedPictographic}, // E0.7 [1] (🗯️) right anger bubble - {0x1F5F0, 0x1F5F2, prExtendedPictographic}, // E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD - {0x1F5F3, 0x1F5F3, prExtendedPictographic}, // E0.7 [1] (🗳️) ballot box with ballot - {0x1F5F4, 0x1F5F9, prExtendedPictographic}, // E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK - {0x1F5FA, 0x1F5FA, prExtendedPictographic}, // E0.7 [1] (🗺️) world map - {0x1F5FB, 0x1F5FF, prExtendedPictographic}, // E0.6 [5] (🗻..🗿) mount fuji..moai - {0x1F600, 0x1F600, prExtendedPictographic}, // E1.0 [1] (😀) grinning face - {0x1F601, 0x1F606, prExtendedPictographic}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face - {0x1F607, 0x1F608, prExtendedPictographic}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns - {0x1F609, 0x1F60D, prExtendedPictographic}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes - {0x1F60E, 0x1F60E, prExtendedPictographic}, // E1.0 [1] (😎) smiling face with sunglasses - {0x1F60F, 0x1F60F, prExtendedPictographic}, // E0.6 [1] (😏) smirking face - {0x1F610, 0x1F610, prExtendedPictographic}, // E0.7 [1] (😐) neutral face - {0x1F611, 0x1F611, prExtendedPictographic}, // E1.0 [1] (😑) expressionless face - {0x1F612, 0x1F614, prExtendedPictographic}, // E0.6 [3] (😒..😔) unamused face..pensive face - {0x1F615, 0x1F615, prExtendedPictographic}, // E1.0 [1] (😕) confused face - {0x1F616, 0x1F616, prExtendedPictographic}, // E0.6 [1] (😖) confounded face - {0x1F617, 0x1F617, prExtendedPictographic}, // E1.0 [1] (😗) kissing face - {0x1F618, 0x1F618, prExtendedPictographic}, // E0.6 [1] (😘) face blowing a kiss - {0x1F619, 0x1F619, prExtendedPictographic}, // E1.0 [1] (😙) kissing face with smiling eyes - {0x1F61A, 0x1F61A, prExtendedPictographic}, // E0.6 [1] (😚) kissing face with closed eyes - {0x1F61B, 0x1F61B, prExtendedPictographic}, // E1.0 [1] (😛) face with tongue - {0x1F61C, 0x1F61E, prExtendedPictographic}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face - {0x1F61F, 0x1F61F, prExtendedPictographic}, // E1.0 [1] (😟) worried face - {0x1F620, 0x1F625, prExtendedPictographic}, // E0.6 [6] (😠..😥) angry face..sad but relieved face - {0x1F626, 0x1F627, prExtendedPictographic}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face - {0x1F628, 0x1F62B, prExtendedPictographic}, // E0.6 [4] (😨..😫) fearful face..tired face - {0x1F62C, 0x1F62C, prExtendedPictographic}, // E1.0 [1] (😬) grimacing face - {0x1F62D, 0x1F62D, prExtendedPictographic}, // E0.6 [1] (😭) loudly crying face - {0x1F62E, 0x1F62F, prExtendedPictographic}, // E1.0 [2] (😮..😯) face with open mouth..hushed face - {0x1F630, 0x1F633, prExtendedPictographic}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face - {0x1F634, 0x1F634, prExtendedPictographic}, // E1.0 [1] (😴) sleeping face - {0x1F635, 0x1F635, prExtendedPictographic}, // E0.6 [1] (😵) face with crossed-out eyes - {0x1F636, 0x1F636, prExtendedPictographic}, // E1.0 [1] (😶) face without mouth - {0x1F637, 0x1F640, prExtendedPictographic}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat - {0x1F641, 0x1F644, prExtendedPictographic}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes - {0x1F645, 0x1F64F, prExtendedPictographic}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands - {0x1F680, 0x1F680, prExtendedPictographic}, // E0.6 [1] (🚀) rocket - {0x1F681, 0x1F682, prExtendedPictographic}, // E1.0 [2] (🚁..🚂) helicopter..locomotive - {0x1F683, 0x1F685, prExtendedPictographic}, // E0.6 [3] (🚃..🚅) railway car..bullet train - {0x1F686, 0x1F686, prExtendedPictographic}, // E1.0 [1] (🚆) train - {0x1F687, 0x1F687, prExtendedPictographic}, // E0.6 [1] (🚇) metro - {0x1F688, 0x1F688, prExtendedPictographic}, // E1.0 [1] (🚈) light rail - {0x1F689, 0x1F689, prExtendedPictographic}, // E0.6 [1] (🚉) station - {0x1F68A, 0x1F68B, prExtendedPictographic}, // E1.0 [2] (🚊..🚋) tram..tram car - {0x1F68C, 0x1F68C, prExtendedPictographic}, // E0.6 [1] (🚌) bus - {0x1F68D, 0x1F68D, prExtendedPictographic}, // E0.7 [1] (🚍) oncoming bus - {0x1F68E, 0x1F68E, prExtendedPictographic}, // E1.0 [1] (🚎) trolleybus - {0x1F68F, 0x1F68F, prExtendedPictographic}, // E0.6 [1] (🚏) bus stop - {0x1F690, 0x1F690, prExtendedPictographic}, // E1.0 [1] (🚐) minibus - {0x1F691, 0x1F693, prExtendedPictographic}, // E0.6 [3] (🚑..🚓) ambulance..police car - {0x1F694, 0x1F694, prExtendedPictographic}, // E0.7 [1] (🚔) oncoming police car - {0x1F695, 0x1F695, prExtendedPictographic}, // E0.6 [1] (🚕) taxi - {0x1F696, 0x1F696, prExtendedPictographic}, // E1.0 [1] (🚖) oncoming taxi - {0x1F697, 0x1F697, prExtendedPictographic}, // E0.6 [1] (🚗) automobile - {0x1F698, 0x1F698, prExtendedPictographic}, // E0.7 [1] (🚘) oncoming automobile - {0x1F699, 0x1F69A, prExtendedPictographic}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck - {0x1F69B, 0x1F6A1, prExtendedPictographic}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway - {0x1F6A2, 0x1F6A2, prExtendedPictographic}, // E0.6 [1] (🚢) ship - {0x1F6A3, 0x1F6A3, prExtendedPictographic}, // E1.0 [1] (🚣) person rowing boat - {0x1F6A4, 0x1F6A5, prExtendedPictographic}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light - {0x1F6A6, 0x1F6A6, prExtendedPictographic}, // E1.0 [1] (🚦) vertical traffic light - {0x1F6A7, 0x1F6AD, prExtendedPictographic}, // E0.6 [7] (🚧..🚭) construction..no smoking - {0x1F6AE, 0x1F6B1, prExtendedPictographic}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water - {0x1F6B2, 0x1F6B2, prExtendedPictographic}, // E0.6 [1] (🚲) bicycle - {0x1F6B3, 0x1F6B5, prExtendedPictographic}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking - {0x1F6B6, 0x1F6B6, prExtendedPictographic}, // E0.6 [1] (🚶) person walking - {0x1F6B7, 0x1F6B8, prExtendedPictographic}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing - {0x1F6B9, 0x1F6BE, prExtendedPictographic}, // E0.6 [6] (🚹..🚾) men’s room..water closet - {0x1F6BF, 0x1F6BF, prExtendedPictographic}, // E1.0 [1] (🚿) shower - {0x1F6C0, 0x1F6C0, prExtendedPictographic}, // E0.6 [1] (🛀) person taking bath - {0x1F6C1, 0x1F6C5, prExtendedPictographic}, // E1.0 [5] (🛁..🛅) bathtub..left luggage - {0x1F6C6, 0x1F6CA, prExtendedPictographic}, // E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL - {0x1F6CB, 0x1F6CB, prExtendedPictographic}, // E0.7 [1] (🛋️) couch and lamp - {0x1F6CC, 0x1F6CC, prExtendedPictographic}, // E1.0 [1] (🛌) person in bed - {0x1F6CD, 0x1F6CF, prExtendedPictographic}, // E0.7 [3] (🛍️..🛏️) shopping bags..bed - {0x1F6D0, 0x1F6D0, prExtendedPictographic}, // E1.0 [1] (🛐) place of worship - {0x1F6D1, 0x1F6D2, prExtendedPictographic}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart - {0x1F6D3, 0x1F6D4, prExtendedPictographic}, // E0.0 [2] (🛓..🛔) STUPA..PAGODA - {0x1F6D5, 0x1F6D5, prExtendedPictographic}, // E12.0 [1] (🛕) hindu temple - {0x1F6D6, 0x1F6D7, prExtendedPictographic}, // E13.0 [2] (🛖..🛗) hut..elevator - {0x1F6D8, 0x1F6DB, prExtendedPictographic}, // E0.0 [4] (🛘..🛛) <reserved-1F6D8>..<reserved-1F6DB> - {0x1F6DC, 0x1F6DC, prExtendedPictographic}, // E15.0 [1] (🛜) wireless - {0x1F6DD, 0x1F6DF, prExtendedPictographic}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy - {0x1F6E0, 0x1F6E5, prExtendedPictographic}, // E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat - {0x1F6E6, 0x1F6E8, prExtendedPictographic}, // E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE - {0x1F6E9, 0x1F6E9, prExtendedPictographic}, // E0.7 [1] (🛩️) small airplane - {0x1F6EA, 0x1F6EA, prExtendedPictographic}, // E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE - {0x1F6EB, 0x1F6EC, prExtendedPictographic}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival - {0x1F6ED, 0x1F6EF, prExtendedPictographic}, // E0.0 [3] (🛭..🛯) <reserved-1F6ED>..<reserved-1F6EF> - {0x1F6F0, 0x1F6F0, prExtendedPictographic}, // E0.7 [1] (🛰️) satellite - {0x1F6F1, 0x1F6F2, prExtendedPictographic}, // E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE - {0x1F6F3, 0x1F6F3, prExtendedPictographic}, // E0.7 [1] (🛳️) passenger ship - {0x1F6F4, 0x1F6F6, prExtendedPictographic}, // E3.0 [3] (🛴..🛶) kick scooter..canoe - {0x1F6F7, 0x1F6F8, prExtendedPictographic}, // E5.0 [2] (🛷..🛸) sled..flying saucer - {0x1F6F9, 0x1F6F9, prExtendedPictographic}, // E11.0 [1] (🛹) skateboard - {0x1F6FA, 0x1F6FA, prExtendedPictographic}, // E12.0 [1] (🛺) auto rickshaw - {0x1F6FB, 0x1F6FC, prExtendedPictographic}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate - {0x1F6FD, 0x1F6FF, prExtendedPictographic}, // E0.0 [3] (🛽..🛿) <reserved-1F6FD>..<reserved-1F6FF> - {0x1F774, 0x1F77F, prExtendedPictographic}, // E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS - {0x1F7D5, 0x1F7DF, prExtendedPictographic}, // E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<reserved-1F7DF> - {0x1F7E0, 0x1F7EB, prExtendedPictographic}, // E12.0 [12] (🟠..🟫) orange circle..brown square - {0x1F7EC, 0x1F7EF, prExtendedPictographic}, // E0.0 [4] (🟬..🟯) <reserved-1F7EC>..<reserved-1F7EF> - {0x1F7F0, 0x1F7F0, prExtendedPictographic}, // E14.0 [1] (🟰) heavy equals sign - {0x1F7F1, 0x1F7FF, prExtendedPictographic}, // E0.0 [15] (🟱..🟿) <reserved-1F7F1>..<reserved-1F7FF> - {0x1F80C, 0x1F80F, prExtendedPictographic}, // E0.0 [4] (🠌..🠏) <reserved-1F80C>..<reserved-1F80F> - {0x1F848, 0x1F84F, prExtendedPictographic}, // E0.0 [8] (🡈..🡏) <reserved-1F848>..<reserved-1F84F> - {0x1F85A, 0x1F85F, prExtendedPictographic}, // E0.0 [6] (🡚..🡟) <reserved-1F85A>..<reserved-1F85F> - {0x1F888, 0x1F88F, prExtendedPictographic}, // E0.0 [8] (🢈..🢏) <reserved-1F888>..<reserved-1F88F> - {0x1F8AE, 0x1F8FF, prExtendedPictographic}, // E0.0 [82] (🢮..🣿) <reserved-1F8AE>..<reserved-1F8FF> - {0x1F90C, 0x1F90C, prExtendedPictographic}, // E13.0 [1] (🤌) pinched fingers - {0x1F90D, 0x1F90F, prExtendedPictographic}, // E12.0 [3] (🤍..🤏) white heart..pinching hand - {0x1F910, 0x1F918, prExtendedPictographic}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns - {0x1F919, 0x1F91E, prExtendedPictographic}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers - {0x1F91F, 0x1F91F, prExtendedPictographic}, // E5.0 [1] (🤟) love-you gesture - {0x1F920, 0x1F927, prExtendedPictographic}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face - {0x1F928, 0x1F92F, prExtendedPictographic}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head - {0x1F930, 0x1F930, prExtendedPictographic}, // E3.0 [1] (🤰) pregnant woman - {0x1F931, 0x1F932, prExtendedPictographic}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together - {0x1F933, 0x1F93A, prExtendedPictographic}, // E3.0 [8] (🤳..🤺) selfie..person fencing - {0x1F93C, 0x1F93E, prExtendedPictographic}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball - {0x1F93F, 0x1F93F, prExtendedPictographic}, // E12.0 [1] (🤿) diving mask - {0x1F940, 0x1F945, prExtendedPictographic}, // E3.0 [6] (🥀..🥅) wilted flower..goal net - {0x1F947, 0x1F94B, prExtendedPictographic}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform - {0x1F94C, 0x1F94C, prExtendedPictographic}, // E5.0 [1] (🥌) curling stone - {0x1F94D, 0x1F94F, prExtendedPictographic}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc - {0x1F950, 0x1F95E, prExtendedPictographic}, // E3.0 [15] (🥐..🥞) croissant..pancakes - {0x1F95F, 0x1F96B, prExtendedPictographic}, // E5.0 [13] (🥟..🥫) dumpling..canned food - {0x1F96C, 0x1F970, prExtendedPictographic}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts - {0x1F971, 0x1F971, prExtendedPictographic}, // E12.0 [1] (🥱) yawning face - {0x1F972, 0x1F972, prExtendedPictographic}, // E13.0 [1] (🥲) smiling face with tear - {0x1F973, 0x1F976, prExtendedPictographic}, // E11.0 [4] (🥳..🥶) partying face..cold face - {0x1F977, 0x1F978, prExtendedPictographic}, // E13.0 [2] (🥷..🥸) ninja..disguised face - {0x1F979, 0x1F979, prExtendedPictographic}, // E14.0 [1] (🥹) face holding back tears - {0x1F97A, 0x1F97A, prExtendedPictographic}, // E11.0 [1] (🥺) pleading face - {0x1F97B, 0x1F97B, prExtendedPictographic}, // E12.0 [1] (🥻) sari - {0x1F97C, 0x1F97F, prExtendedPictographic}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe - {0x1F980, 0x1F984, prExtendedPictographic}, // E1.0 [5] (🦀..🦄) crab..unicorn - {0x1F985, 0x1F991, prExtendedPictographic}, // E3.0 [13] (🦅..🦑) eagle..squid - {0x1F992, 0x1F997, prExtendedPictographic}, // E5.0 [6] (🦒..🦗) giraffe..cricket - {0x1F998, 0x1F9A2, prExtendedPictographic}, // E11.0 [11] (🦘..🦢) kangaroo..swan - {0x1F9A3, 0x1F9A4, prExtendedPictographic}, // E13.0 [2] (🦣..🦤) mammoth..dodo - {0x1F9A5, 0x1F9AA, prExtendedPictographic}, // E12.0 [6] (🦥..🦪) sloth..oyster - {0x1F9AB, 0x1F9AD, prExtendedPictographic}, // E13.0 [3] (🦫..🦭) beaver..seal - {0x1F9AE, 0x1F9AF, prExtendedPictographic}, // E12.0 [2] (🦮..🦯) guide dog..white cane - {0x1F9B0, 0x1F9B9, prExtendedPictographic}, // E11.0 [10] (🦰..🦹) red hair..supervillain - {0x1F9BA, 0x1F9BF, prExtendedPictographic}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg - {0x1F9C0, 0x1F9C0, prExtendedPictographic}, // E1.0 [1] (🧀) cheese wedge - {0x1F9C1, 0x1F9C2, prExtendedPictographic}, // E11.0 [2] (🧁..🧂) cupcake..salt - {0x1F9C3, 0x1F9CA, prExtendedPictographic}, // E12.0 [8] (🧃..🧊) beverage box..ice - {0x1F9CB, 0x1F9CB, prExtendedPictographic}, // E13.0 [1] (🧋) bubble tea - {0x1F9CC, 0x1F9CC, prExtendedPictographic}, // E14.0 [1] (🧌) troll - {0x1F9CD, 0x1F9CF, prExtendedPictographic}, // E12.0 [3] (🧍..🧏) person standing..deaf person - {0x1F9D0, 0x1F9E6, prExtendedPictographic}, // E5.0 [23] (🧐..🧦) face with monocle..socks - {0x1F9E7, 0x1F9FF, prExtendedPictographic}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet - {0x1FA00, 0x1FA6F, prExtendedPictographic}, // E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING..<reserved-1FA6F> - {0x1FA70, 0x1FA73, prExtendedPictographic}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts - {0x1FA74, 0x1FA74, prExtendedPictographic}, // E13.0 [1] (🩴) thong sandal - {0x1FA75, 0x1FA77, prExtendedPictographic}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart - {0x1FA78, 0x1FA7A, prExtendedPictographic}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope - {0x1FA7B, 0x1FA7C, prExtendedPictographic}, // E14.0 [2] (🩻..🩼) x-ray..crutch - {0x1FA7D, 0x1FA7F, prExtendedPictographic}, // E0.0 [3] (🩽..🩿) <reserved-1FA7D>..<reserved-1FA7F> - {0x1FA80, 0x1FA82, prExtendedPictographic}, // E12.0 [3] (🪀..🪂) yo-yo..parachute - {0x1FA83, 0x1FA86, prExtendedPictographic}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls - {0x1FA87, 0x1FA88, prExtendedPictographic}, // E15.0 [2] (🪇..🪈) maracas..flute - {0x1FA89, 0x1FA8F, prExtendedPictographic}, // E0.0 [7] (🪉..🪏) <reserved-1FA89>..<reserved-1FA8F> - {0x1FA90, 0x1FA95, prExtendedPictographic}, // E12.0 [6] (🪐..🪕) ringed planet..banjo - {0x1FA96, 0x1FAA8, prExtendedPictographic}, // E13.0 [19] (🪖..🪨) military helmet..rock - {0x1FAA9, 0x1FAAC, prExtendedPictographic}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa - {0x1FAAD, 0x1FAAF, prExtendedPictographic}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda - {0x1FAB0, 0x1FAB6, prExtendedPictographic}, // E13.0 [7] (🪰..🪶) fly..feather - {0x1FAB7, 0x1FABA, prExtendedPictographic}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs - {0x1FABB, 0x1FABD, prExtendedPictographic}, // E15.0 [3] (🪻..🪽) hyacinth..wing - {0x1FABE, 0x1FABE, prExtendedPictographic}, // E0.0 [1] (🪾) <reserved-1FABE> - {0x1FABF, 0x1FABF, prExtendedPictographic}, // E15.0 [1] (🪿) goose - {0x1FAC0, 0x1FAC2, prExtendedPictographic}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging - {0x1FAC3, 0x1FAC5, prExtendedPictographic}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown - {0x1FAC6, 0x1FACD, prExtendedPictographic}, // E0.0 [8] (🫆..🫍) <reserved-1FAC6>..<reserved-1FACD> - {0x1FACE, 0x1FACF, prExtendedPictographic}, // E15.0 [2] (🫎..🫏) moose..donkey - {0x1FAD0, 0x1FAD6, prExtendedPictographic}, // E13.0 [7] (🫐..🫖) blueberries..teapot - {0x1FAD7, 0x1FAD9, prExtendedPictographic}, // E14.0 [3] (🫗..🫙) pouring liquid..jar - {0x1FADA, 0x1FADB, prExtendedPictographic}, // E15.0 [2] (🫚..🫛) ginger root..pea pod - {0x1FADC, 0x1FADF, prExtendedPictographic}, // E0.0 [4] (🫜..🫟) <reserved-1FADC>..<reserved-1FADF> - {0x1FAE0, 0x1FAE7, prExtendedPictographic}, // E14.0 [8] (🫠..🫧) melting face..bubbles - {0x1FAE8, 0x1FAE8, prExtendedPictographic}, // E15.0 [1] (🫨) shaking face - {0x1FAE9, 0x1FAEF, prExtendedPictographic}, // E0.0 [7] (🫩..🫯) <reserved-1FAE9>..<reserved-1FAEF> - {0x1FAF0, 0x1FAF6, prExtendedPictographic}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands - {0x1FAF7, 0x1FAF8, prExtendedPictographic}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand - {0x1FAF9, 0x1FAFF, prExtendedPictographic}, // E0.0 [7] (🫹..🫿) <reserved-1FAF9>..<reserved-1FAFF> - {0x1FC00, 0x1FFFD, prExtendedPictographic}, // E0.0[1022] (🰀..🿽) <reserved-1FC00>..<reserved-1FFFD> - {0xE0000, 0xE0000, prControl}, // Cn <reserved-E0000> - {0xE0001, 0xE0001, prControl}, // Cf LANGUAGE TAG - {0xE0002, 0xE001F, prControl}, // Cn [30] <reserved-E0002>..<reserved-E001F> - {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG - {0xE0080, 0xE00FF, prControl}, // Cn [128] <reserved-E0080>..<reserved-E00FF> - {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - {0xE01F0, 0xE0FFF, prControl}, // Cn [3600] <reserved-E01F0>..<reserved-E0FFF> -} diff --git a/vendor/github.com/rivo/uniseg/graphemerules.go b/vendor/github.com/rivo/uniseg/graphemerules.go deleted file mode 100644 index 5d399d2..0000000 --- a/vendor/github.com/rivo/uniseg/graphemerules.go +++ /dev/null @@ -1,176 +0,0 @@ -package uniseg - -// The states of the grapheme cluster parser. -const ( - grAny = iota - grCR - grControlLF - grL - grLVV - grLVTT - grPrepend - grExtendedPictographic - grExtendedPictographicZWJ - grRIOdd - grRIEven -) - -// The grapheme cluster parser's breaking instructions. -const ( - grNoBoundary = iota - grBoundary -) - -// grTransitions implements the grapheme cluster parser's state transitions. -// Maps state and property to a new state, a breaking instruction, and rule -// number. The breaking instruction always refers to the boundary between the -// last and next code point. Returns negative values if no transition is found. -// -// This function is used as follows: -// -// 1. Find specific state + specific property. Stop if found. -// 2. Find specific state + any property. -// 3. Find any state + specific property. -// 4. If only (2) or (3) (but not both) was found, stop. -// 5. If both (2) and (3) were found, use state from (3) and breaking instruction -// from the transition with the lower rule number, prefer (3) if rule numbers -// are equal. Stop. -// 6. Assume grAny and grBoundary. -// -// Unicode version 15.0.0. -func grTransitions(state, prop int) (newState int, newProp int, boundary int) { - // It turns out that using a big switch statement is much faster than using - // a map. - - switch uint64(state) | uint64(prop)<<32 { - // GB5 - case grAny | prCR<<32: - return grCR, grBoundary, 50 - case grAny | prLF<<32: - return grControlLF, grBoundary, 50 - case grAny | prControl<<32: - return grControlLF, grBoundary, 50 - - // GB4 - case grCR | prAny<<32: - return grAny, grBoundary, 40 - case grControlLF | prAny<<32: - return grAny, grBoundary, 40 - - // GB3 - case grCR | prLF<<32: - return grControlLF, grNoBoundary, 30 - - // GB6 - case grAny | prL<<32: - return grL, grBoundary, 9990 - case grL | prL<<32: - return grL, grNoBoundary, 60 - case grL | prV<<32: - return grLVV, grNoBoundary, 60 - case grL | prLV<<32: - return grLVV, grNoBoundary, 60 - case grL | prLVT<<32: - return grLVTT, grNoBoundary, 60 - - // GB7 - case grAny | prLV<<32: - return grLVV, grBoundary, 9990 - case grAny | prV<<32: - return grLVV, grBoundary, 9990 - case grLVV | prV<<32: - return grLVV, grNoBoundary, 70 - case grLVV | prT<<32: - return grLVTT, grNoBoundary, 70 - - // GB8 - case grAny | prLVT<<32: - return grLVTT, grBoundary, 9990 - case grAny | prT<<32: - return grLVTT, grBoundary, 9990 - case grLVTT | prT<<32: - return grLVTT, grNoBoundary, 80 - - // GB9 - case grAny | prExtend<<32: - return grAny, grNoBoundary, 90 - case grAny | prZWJ<<32: - return grAny, grNoBoundary, 90 - - // GB9a - case grAny | prSpacingMark<<32: - return grAny, grNoBoundary, 91 - - // GB9b - case grAny | prPrepend<<32: - return grPrepend, grBoundary, 9990 - case grPrepend | prAny<<32: - return grAny, grNoBoundary, 92 - - // GB11 - case grAny | prExtendedPictographic<<32: - return grExtendedPictographic, grBoundary, 9990 - case grExtendedPictographic | prExtend<<32: - return grExtendedPictographic, grNoBoundary, 110 - case grExtendedPictographic | prZWJ<<32: - return grExtendedPictographicZWJ, grNoBoundary, 110 - case grExtendedPictographicZWJ | prExtendedPictographic<<32: - return grExtendedPictographic, grNoBoundary, 110 - - // GB12 / GB13 - case grAny | prRegionalIndicator<<32: - return grRIOdd, grBoundary, 9990 - case grRIOdd | prRegionalIndicator<<32: - return grRIEven, grNoBoundary, 120 - case grRIEven | prRegionalIndicator<<32: - return grRIOdd, grBoundary, 120 - default: - return -1, -1, -1 - } -} - -// transitionGraphemeState determines the new state of the grapheme cluster -// parser given the current state and the next code point. It also returns the -// code point's grapheme property (the value mapped by the [graphemeCodePoints] -// table) and whether a cluster boundary was detected. -func transitionGraphemeState(state int, r rune) (newState, prop int, boundary bool) { - // Determine the property of the next character. - prop = propertyGraphemes(r) - - // Find the applicable transition. - nextState, nextProp, _ := grTransitions(state, prop) - if nextState >= 0 { - // We have a specific transition. We'll use it. - return nextState, prop, nextProp == grBoundary - } - - // No specific transition found. Try the less specific ones. - anyPropState, anyPropProp, anyPropRule := grTransitions(state, prAny) - anyStateState, anyStateProp, anyStateRule := grTransitions(grAny, prop) - if anyPropState >= 0 && anyStateState >= 0 { - // Both apply. We'll use a mix (see comments for grTransitions). - newState = anyStateState - boundary = anyStateProp == grBoundary - if anyPropRule < anyStateRule { - boundary = anyPropProp == grBoundary - } - return - } - - if anyPropState >= 0 { - // We only have a specific state. - return anyPropState, prop, anyPropProp == grBoundary - // This branch will probably never be reached because okAnyState will - // always be true given the current transition map. But we keep it here - // for future modifications to the transition map where this may not be - // true anymore. - } - - if anyStateState >= 0 { - // We only have a specific property. - return anyStateState, prop, anyStateProp == grBoundary - } - - // No known transition. GB999: Any ÷ Any. - return grAny, prop, true -} diff --git a/vendor/github.com/rivo/uniseg/line.go b/vendor/github.com/rivo/uniseg/line.go deleted file mode 100644 index 7a46318..0000000 --- a/vendor/github.com/rivo/uniseg/line.go +++ /dev/null @@ -1,134 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// FirstLineSegment returns the prefix of the given byte slice after which a -// decision to break the string over to the next line can or must be made, -// according to the rules of [Unicode Standard Annex #14]. This is used to -// implement line breaking. -// -// Line breaking, also known as word wrapping, is the process of breaking a -// section of text into lines such that it will fit in the available width of a -// page, window or other display area. -// -// The returned "segment" may not be broken into smaller parts, unless no other -// breaking opportunities present themselves, in which case you may break by -// grapheme clusters (using the [FirstGraphemeCluster] function to determine the -// grapheme clusters). -// -// The "mustBreak" flag indicates whether you MUST break the line after the -// given segment (true), for example after newline characters, or you MAY break -// the line after the given segment (false). -// -// This function can be called continuously to extract all non-breaking sub-sets -// from a byte slice, as illustrated in the example below. -// -// If you don't know the current state, for example when calling the function -// for the first time, you must pass -1. For consecutive calls, pass the state -// and rest slice returned by the previous call. -// -// The "rest" slice is the sub-slice of the original byte slice "b" starting -// after the last byte of the identified line segment. If the length of the -// "rest" slice is 0, the entire byte slice "b" has been processed. The -// "segment" byte slice is the sub-slice of the input slice containing the -// identified line segment. -// -// Given an empty byte slice "b", the function returns nil values. -// -// Note that in accordance with [UAX #14 LB3], the final segment will end with -// "mustBreak" set to true. You can choose to ignore this by checking if the -// length of the "rest" slice is 0 and calling [HasTrailingLineBreak] or -// [HasTrailingLineBreakInString] on the last rune. -// -// Note also that this algorithm may break within grapheme clusters. This is -// addressed in Section 8.2 Example 6 of UAX #14. To avoid this, you can use -// the [Step] function instead. -// -// [Unicode Standard Annex #14]: https://www.unicode.org/reports/tr14/ -// [UAX #14 LB3]: https://www.unicode.org/reports/tr14/#Algorithm -func FirstLineSegment(b []byte, state int) (segment, rest []byte, mustBreak bool, newState int) { - // An empty byte slice returns nothing. - if len(b) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRune(b) - if len(b) <= length { // If we're already past the end, there is nothing else to parse. - return b, nil, true, lbAny // LB3. - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionLineBreakState(state, r, b[length:], "") - } - - // Transition until we find a boundary. - var boundary int - for { - r, l := utf8.DecodeRune(b[length:]) - state, boundary = transitionLineBreakState(state, r, b[length+l:], "") - - if boundary != LineDontBreak { - return b[:length], b[length:], boundary == LineMustBreak, state - } - - length += l - if len(b) <= length { - return b, nil, true, lbAny // LB3 - } - } -} - -// FirstLineSegmentInString is like [FirstLineSegment] but its input and outputs -// are strings. -func FirstLineSegmentInString(str string, state int) (segment, rest string, mustBreak bool, newState int) { - // An empty byte slice returns nothing. - if len(str) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRuneInString(str) - if len(str) <= length { // If we're already past the end, there is nothing else to parse. - return str, "", true, lbAny // LB3. - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionLineBreakState(state, r, nil, str[length:]) - } - - // Transition until we find a boundary. - var boundary int - for { - r, l := utf8.DecodeRuneInString(str[length:]) - state, boundary = transitionLineBreakState(state, r, nil, str[length+l:]) - - if boundary != LineDontBreak { - return str[:length], str[length:], boundary == LineMustBreak, state - } - - length += l - if len(str) <= length { - return str, "", true, lbAny // LB3. - } - } -} - -// HasTrailingLineBreak returns true if the last rune in the given byte slice is -// one of the hard line break code points defined in LB4 and LB5 of [UAX #14]. -// -// [UAX #14]: https://www.unicode.org/reports/tr14/#Algorithm -func HasTrailingLineBreak(b []byte) bool { - r, _ := utf8.DecodeLastRune(b) - property, _ := propertyLineBreak(r) - return property == prBK || property == prCR || property == prLF || property == prNL -} - -// HasTrailingLineBreakInString is like [HasTrailingLineBreak] but for a string. -func HasTrailingLineBreakInString(str string) bool { - r, _ := utf8.DecodeLastRuneInString(str) - property, _ := propertyLineBreak(r) - return property == prBK || property == prCR || property == prLF || property == prNL -} diff --git a/vendor/github.com/rivo/uniseg/lineproperties.go b/vendor/github.com/rivo/uniseg/lineproperties.go deleted file mode 100644 index ac7fac4..0000000 --- a/vendor/github.com/rivo/uniseg/lineproperties.go +++ /dev/null @@ -1,3554 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// lineBreakCodePoints are taken from -// https://www.unicode.org/Public/15.0.0/ucd/LineBreak.txt -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var lineBreakCodePoints = [][4]int{ - {0x0000, 0x0008, prCM, gcCc}, // [9] <control-0000>..<control-0008> - {0x0009, 0x0009, prBA, gcCc}, // <control-0009> - {0x000A, 0x000A, prLF, gcCc}, // <control-000A> - {0x000B, 0x000C, prBK, gcCc}, // [2] <control-000B>..<control-000C> - {0x000D, 0x000D, prCR, gcCc}, // <control-000D> - {0x000E, 0x001F, prCM, gcCc}, // [18] <control-000E>..<control-001F> - {0x0020, 0x0020, prSP, gcZs}, // SPACE - {0x0021, 0x0021, prEX, gcPo}, // EXCLAMATION MARK - {0x0022, 0x0022, prQU, gcPo}, // QUOTATION MARK - {0x0023, 0x0023, prAL, gcPo}, // NUMBER SIGN - {0x0024, 0x0024, prPR, gcSc}, // DOLLAR SIGN - {0x0025, 0x0025, prPO, gcPo}, // PERCENT SIGN - {0x0026, 0x0026, prAL, gcPo}, // AMPERSAND - {0x0027, 0x0027, prQU, gcPo}, // APOSTROPHE - {0x0028, 0x0028, prOP, gcPs}, // LEFT PARENTHESIS - {0x0029, 0x0029, prCP, gcPe}, // RIGHT PARENTHESIS - {0x002A, 0x002A, prAL, gcPo}, // ASTERISK - {0x002B, 0x002B, prPR, gcSm}, // PLUS SIGN - {0x002C, 0x002C, prIS, gcPo}, // COMMA - {0x002D, 0x002D, prHY, gcPd}, // HYPHEN-MINUS - {0x002E, 0x002E, prIS, gcPo}, // FULL STOP - {0x002F, 0x002F, prSY, gcPo}, // SOLIDUS - {0x0030, 0x0039, prNU, gcNd}, // [10] DIGIT ZERO..DIGIT NINE - {0x003A, 0x003B, prIS, gcPo}, // [2] COLON..SEMICOLON - {0x003C, 0x003E, prAL, gcSm}, // [3] LESS-THAN SIGN..GREATER-THAN SIGN - {0x003F, 0x003F, prEX, gcPo}, // QUESTION MARK - {0x0040, 0x0040, prAL, gcPo}, // COMMERCIAL AT - {0x0041, 0x005A, prAL, gcLu}, // [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z - {0x005B, 0x005B, prOP, gcPs}, // LEFT SQUARE BRACKET - {0x005C, 0x005C, prPR, gcPo}, // REVERSE SOLIDUS - {0x005D, 0x005D, prCP, gcPe}, // RIGHT SQUARE BRACKET - {0x005E, 0x005E, prAL, gcSk}, // CIRCUMFLEX ACCENT - {0x005F, 0x005F, prAL, gcPc}, // LOW LINE - {0x0060, 0x0060, prAL, gcSk}, // GRAVE ACCENT - {0x0061, 0x007A, prAL, gcLl}, // [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z - {0x007B, 0x007B, prOP, gcPs}, // LEFT CURLY BRACKET - {0x007C, 0x007C, prBA, gcSm}, // VERTICAL LINE - {0x007D, 0x007D, prCL, gcPe}, // RIGHT CURLY BRACKET - {0x007E, 0x007E, prAL, gcSm}, // TILDE - {0x007F, 0x007F, prCM, gcCc}, // <control-007F> - {0x0080, 0x0084, prCM, gcCc}, // [5] <control-0080>..<control-0084> - {0x0085, 0x0085, prNL, gcCc}, // <control-0085> - {0x0086, 0x009F, prCM, gcCc}, // [26] <control-0086>..<control-009F> - {0x00A0, 0x00A0, prGL, gcZs}, // NO-BREAK SPACE - {0x00A1, 0x00A1, prOP, gcPo}, // INVERTED EXCLAMATION MARK - {0x00A2, 0x00A2, prPO, gcSc}, // CENT SIGN - {0x00A3, 0x00A5, prPR, gcSc}, // [3] POUND SIGN..YEN SIGN - {0x00A6, 0x00A6, prAL, gcSo}, // BROKEN BAR - {0x00A7, 0x00A7, prAI, gcPo}, // SECTION SIGN - {0x00A8, 0x00A8, prAI, gcSk}, // DIAERESIS - {0x00A9, 0x00A9, prAL, gcSo}, // COPYRIGHT SIGN - {0x00AA, 0x00AA, prAI, gcLo}, // FEMININE ORDINAL INDICATOR - {0x00AB, 0x00AB, prQU, gcPi}, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00AC, 0x00AC, prAL, gcSm}, // NOT SIGN - {0x00AD, 0x00AD, prBA, gcCf}, // SOFT HYPHEN - {0x00AE, 0x00AE, prAL, gcSo}, // REGISTERED SIGN - {0x00AF, 0x00AF, prAL, gcSk}, // MACRON - {0x00B0, 0x00B0, prPO, gcSo}, // DEGREE SIGN - {0x00B1, 0x00B1, prPR, gcSm}, // PLUS-MINUS SIGN - {0x00B2, 0x00B3, prAI, gcNo}, // [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE - {0x00B4, 0x00B4, prBB, gcSk}, // ACUTE ACCENT - {0x00B5, 0x00B5, prAL, gcLl}, // MICRO SIGN - {0x00B6, 0x00B7, prAI, gcPo}, // [2] PILCROW SIGN..MIDDLE DOT - {0x00B8, 0x00B8, prAI, gcSk}, // CEDILLA - {0x00B9, 0x00B9, prAI, gcNo}, // SUPERSCRIPT ONE - {0x00BA, 0x00BA, prAI, gcLo}, // MASCULINE ORDINAL INDICATOR - {0x00BB, 0x00BB, prQU, gcPf}, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00BC, 0x00BE, prAI, gcNo}, // [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS - {0x00BF, 0x00BF, prOP, gcPo}, // INVERTED QUESTION MARK - {0x00C0, 0x00D6, prAL, gcLu}, // [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS - {0x00D7, 0x00D7, prAI, gcSm}, // MULTIPLICATION SIGN - {0x00D8, 0x00F6, prAL, gcLC}, // [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS - {0x00F7, 0x00F7, prAI, gcSm}, // DIVISION SIGN - {0x00F8, 0x00FF, prAL, gcLl}, // [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS - {0x0100, 0x017F, prAL, gcLC}, // [128] LATIN CAPITAL LETTER A WITH MACRON..LATIN SMALL LETTER LONG S - {0x0180, 0x01BA, prAL, gcLC}, // [59] LATIN SMALL LETTER B WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL - {0x01BB, 0x01BB, prAL, gcLo}, // LATIN LETTER TWO WITH STROKE - {0x01BC, 0x01BF, prAL, gcLC}, // [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN - {0x01C0, 0x01C3, prAL, gcLo}, // [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK - {0x01C4, 0x024F, prAL, gcLC}, // [140] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER Y WITH STROKE - {0x0250, 0x0293, prAL, gcLl}, // [68] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER EZH WITH CURL - {0x0294, 0x0294, prAL, gcLo}, // LATIN LETTER GLOTTAL STOP - {0x0295, 0x02AF, prAL, gcLl}, // [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL - {0x02B0, 0x02C1, prAL, gcLm}, // [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP - {0x02C2, 0x02C5, prAL, gcSk}, // [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD - {0x02C6, 0x02C6, prAL, gcLm}, // MODIFIER LETTER CIRCUMFLEX ACCENT - {0x02C7, 0x02C7, prAI, gcLm}, // CARON - {0x02C8, 0x02C8, prBB, gcLm}, // MODIFIER LETTER VERTICAL LINE - {0x02C9, 0x02CB, prAI, gcLm}, // [3] MODIFIER LETTER MACRON..MODIFIER LETTER GRAVE ACCENT - {0x02CC, 0x02CC, prBB, gcLm}, // MODIFIER LETTER LOW VERTICAL LINE - {0x02CD, 0x02CD, prAI, gcLm}, // MODIFIER LETTER LOW MACRON - {0x02CE, 0x02CF, prAL, gcLm}, // [2] MODIFIER LETTER LOW GRAVE ACCENT..MODIFIER LETTER LOW ACUTE ACCENT - {0x02D0, 0x02D0, prAI, gcLm}, // MODIFIER LETTER TRIANGULAR COLON - {0x02D1, 0x02D1, prAL, gcLm}, // MODIFIER LETTER HALF TRIANGULAR COLON - {0x02D2, 0x02D7, prAL, gcSk}, // [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN - {0x02D8, 0x02DB, prAI, gcSk}, // [4] BREVE..OGONEK - {0x02DC, 0x02DC, prAL, gcSk}, // SMALL TILDE - {0x02DD, 0x02DD, prAI, gcSk}, // DOUBLE ACUTE ACCENT - {0x02DE, 0x02DE, prAL, gcSk}, // MODIFIER LETTER RHOTIC HOOK - {0x02DF, 0x02DF, prBB, gcSk}, // MODIFIER LETTER CROSS ACCENT - {0x02E0, 0x02E4, prAL, gcLm}, // [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP - {0x02E5, 0x02EB, prAL, gcSk}, // [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK - {0x02EC, 0x02EC, prAL, gcLm}, // MODIFIER LETTER VOICING - {0x02ED, 0x02ED, prAL, gcSk}, // MODIFIER LETTER UNASPIRATED - {0x02EE, 0x02EE, prAL, gcLm}, // MODIFIER LETTER DOUBLE APOSTROPHE - {0x02EF, 0x02FF, prAL, gcSk}, // [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW - {0x0300, 0x034E, prCM, gcMn}, // [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW - {0x034F, 0x034F, prGL, gcMn}, // COMBINING GRAPHEME JOINER - {0x0350, 0x035B, prCM, gcMn}, // [12] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING ZIGZAG ABOVE - {0x035C, 0x0362, prGL, gcMn}, // [7] COMBINING DOUBLE BREVE BELOW..COMBINING DOUBLE RIGHTWARDS ARROW BELOW - {0x0363, 0x036F, prCM, gcMn}, // [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X - {0x0370, 0x0373, prAL, gcLC}, // [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI - {0x0374, 0x0374, prAL, gcLm}, // GREEK NUMERAL SIGN - {0x0375, 0x0375, prAL, gcSk}, // GREEK LOWER NUMERAL SIGN - {0x0376, 0x0377, prAL, gcLC}, // [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA - {0x037A, 0x037A, prAL, gcLm}, // GREEK YPOGEGRAMMENI - {0x037B, 0x037D, prAL, gcLl}, // [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x037E, 0x037E, prIS, gcPo}, // GREEK QUESTION MARK - {0x037F, 0x037F, prAL, gcLu}, // GREEK CAPITAL LETTER YOT - {0x0384, 0x0385, prAL, gcSk}, // [2] GREEK TONOS..GREEK DIALYTIKA TONOS - {0x0386, 0x0386, prAL, gcLu}, // GREEK CAPITAL LETTER ALPHA WITH TONOS - {0x0387, 0x0387, prAL, gcPo}, // GREEK ANO TELEIA - {0x0388, 0x038A, prAL, gcLu}, // [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS - {0x038C, 0x038C, prAL, gcLu}, // GREEK CAPITAL LETTER OMICRON WITH TONOS - {0x038E, 0x03A1, prAL, gcLC}, // [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO - {0x03A3, 0x03F5, prAL, gcLC}, // [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL - {0x03F6, 0x03F6, prAL, gcSm}, // GREEK REVERSED LUNATE EPSILON SYMBOL - {0x03F7, 0x03FF, prAL, gcLC}, // [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x0400, 0x0481, prAL, gcLC}, // [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA - {0x0482, 0x0482, prAL, gcSo}, // CYRILLIC THOUSANDS SIGN - {0x0483, 0x0487, prCM, gcMn}, // [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE - {0x0488, 0x0489, prCM, gcMe}, // [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN - {0x048A, 0x04FF, prAL, gcLC}, // [118] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER HA WITH STROKE - {0x0500, 0x052F, prAL, gcLC}, // [48] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER EL WITH DESCENDER - {0x0531, 0x0556, prAL, gcLu}, // [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH - {0x0559, 0x0559, prAL, gcLm}, // ARMENIAN MODIFIER LETTER LEFT HALF RING - {0x055A, 0x055F, prAL, gcPo}, // [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK - {0x0560, 0x0588, prAL, gcLl}, // [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE - {0x0589, 0x0589, prIS, gcPo}, // ARMENIAN FULL STOP - {0x058A, 0x058A, prBA, gcPd}, // ARMENIAN HYPHEN - {0x058D, 0x058E, prAL, gcSo}, // [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN - {0x058F, 0x058F, prPR, gcSc}, // ARMENIAN DRAM SIGN - {0x0591, 0x05BD, prCM, gcMn}, // [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG - {0x05BE, 0x05BE, prBA, gcPd}, // HEBREW PUNCTUATION MAQAF - {0x05BF, 0x05BF, prCM, gcMn}, // HEBREW POINT RAFE - {0x05C0, 0x05C0, prAL, gcPo}, // HEBREW PUNCTUATION PASEQ - {0x05C1, 0x05C2, prCM, gcMn}, // [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT - {0x05C3, 0x05C3, prAL, gcPo}, // HEBREW PUNCTUATION SOF PASUQ - {0x05C4, 0x05C5, prCM, gcMn}, // [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT - {0x05C6, 0x05C6, prEX, gcPo}, // HEBREW PUNCTUATION NUN HAFUKHA - {0x05C7, 0x05C7, prCM, gcMn}, // HEBREW POINT QAMATS QATAN - {0x05D0, 0x05EA, prHL, gcLo}, // [27] HEBREW LETTER ALEF..HEBREW LETTER TAV - {0x05EF, 0x05F2, prHL, gcLo}, // [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD - {0x05F3, 0x05F4, prAL, gcPo}, // [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM - {0x0600, 0x0605, prAL, gcCf}, // [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE - {0x0606, 0x0608, prAL, gcSm}, // [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY - {0x0609, 0x060A, prPO, gcPo}, // [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN - {0x060B, 0x060B, prPO, gcSc}, // AFGHANI SIGN - {0x060C, 0x060D, prIS, gcPo}, // [2] ARABIC COMMA..ARABIC DATE SEPARATOR - {0x060E, 0x060F, prAL, gcSo}, // [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA - {0x0610, 0x061A, prCM, gcMn}, // [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA - {0x061B, 0x061B, prEX, gcPo}, // ARABIC SEMICOLON - {0x061C, 0x061C, prCM, gcCf}, // ARABIC LETTER MARK - {0x061D, 0x061F, prEX, gcPo}, // [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK - {0x0620, 0x063F, prAL, gcLo}, // [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE - {0x0640, 0x0640, prAL, gcLm}, // ARABIC TATWEEL - {0x0641, 0x064A, prAL, gcLo}, // [10] ARABIC LETTER FEH..ARABIC LETTER YEH - {0x064B, 0x065F, prCM, gcMn}, // [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW - {0x0660, 0x0669, prNU, gcNd}, // [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE - {0x066A, 0x066A, prPO, gcPo}, // ARABIC PERCENT SIGN - {0x066B, 0x066C, prNU, gcPo}, // [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR - {0x066D, 0x066D, prAL, gcPo}, // ARABIC FIVE POINTED STAR - {0x066E, 0x066F, prAL, gcLo}, // [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF - {0x0670, 0x0670, prCM, gcMn}, // ARABIC LETTER SUPERSCRIPT ALEF - {0x0671, 0x06D3, prAL, gcLo}, // [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE - {0x06D4, 0x06D4, prEX, gcPo}, // ARABIC FULL STOP - {0x06D5, 0x06D5, prAL, gcLo}, // ARABIC LETTER AE - {0x06D6, 0x06DC, prCM, gcMn}, // [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN - {0x06DD, 0x06DD, prAL, gcCf}, // ARABIC END OF AYAH - {0x06DE, 0x06DE, prAL, gcSo}, // ARABIC START OF RUB EL HIZB - {0x06DF, 0x06E4, prCM, gcMn}, // [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA - {0x06E5, 0x06E6, prAL, gcLm}, // [2] ARABIC SMALL WAW..ARABIC SMALL YEH - {0x06E7, 0x06E8, prCM, gcMn}, // [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON - {0x06E9, 0x06E9, prAL, gcSo}, // ARABIC PLACE OF SAJDAH - {0x06EA, 0x06ED, prCM, gcMn}, // [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM - {0x06EE, 0x06EF, prAL, gcLo}, // [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V - {0x06F0, 0x06F9, prNU, gcNd}, // [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE - {0x06FA, 0x06FC, prAL, gcLo}, // [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW - {0x06FD, 0x06FE, prAL, gcSo}, // [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN - {0x06FF, 0x06FF, prAL, gcLo}, // ARABIC LETTER HEH WITH INVERTED V - {0x0700, 0x070D, prAL, gcPo}, // [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS - {0x070F, 0x070F, prAL, gcCf}, // SYRIAC ABBREVIATION MARK - {0x0710, 0x0710, prAL, gcLo}, // SYRIAC LETTER ALAPH - {0x0711, 0x0711, prCM, gcMn}, // SYRIAC LETTER SUPERSCRIPT ALAPH - {0x0712, 0x072F, prAL, gcLo}, // [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH - {0x0730, 0x074A, prCM, gcMn}, // [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH - {0x074D, 0x074F, prAL, gcLo}, // [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE - {0x0750, 0x077F, prAL, gcLo}, // [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE - {0x0780, 0x07A5, prAL, gcLo}, // [38] THAANA LETTER HAA..THAANA LETTER WAAVU - {0x07A6, 0x07B0, prCM, gcMn}, // [11] THAANA ABAFILI..THAANA SUKUN - {0x07B1, 0x07B1, prAL, gcLo}, // THAANA LETTER NAA - {0x07C0, 0x07C9, prNU, gcNd}, // [10] NKO DIGIT ZERO..NKO DIGIT NINE - {0x07CA, 0x07EA, prAL, gcLo}, // [33] NKO LETTER A..NKO LETTER JONA RA - {0x07EB, 0x07F3, prCM, gcMn}, // [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE - {0x07F4, 0x07F5, prAL, gcLm}, // [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE - {0x07F6, 0x07F6, prAL, gcSo}, // NKO SYMBOL OO DENNEN - {0x07F7, 0x07F7, prAL, gcPo}, // NKO SYMBOL GBAKURUNEN - {0x07F8, 0x07F8, prIS, gcPo}, // NKO COMMA - {0x07F9, 0x07F9, prEX, gcPo}, // NKO EXCLAMATION MARK - {0x07FA, 0x07FA, prAL, gcLm}, // NKO LAJANYALAN - {0x07FD, 0x07FD, prCM, gcMn}, // NKO DANTAYALAN - {0x07FE, 0x07FF, prPR, gcSc}, // [2] NKO DOROME SIGN..NKO TAMAN SIGN - {0x0800, 0x0815, prAL, gcLo}, // [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF - {0x0816, 0x0819, prCM, gcMn}, // [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH - {0x081A, 0x081A, prAL, gcLm}, // SAMARITAN MODIFIER LETTER EPENTHETIC YUT - {0x081B, 0x0823, prCM, gcMn}, // [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A - {0x0824, 0x0824, prAL, gcLm}, // SAMARITAN MODIFIER LETTER SHORT A - {0x0825, 0x0827, prCM, gcMn}, // [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U - {0x0828, 0x0828, prAL, gcLm}, // SAMARITAN MODIFIER LETTER I - {0x0829, 0x082D, prCM, gcMn}, // [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - {0x0830, 0x083E, prAL, gcPo}, // [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU - {0x0840, 0x0858, prAL, gcLo}, // [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - {0x0859, 0x085B, prCM, gcMn}, // [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - {0x085E, 0x085E, prAL, gcPo}, // MANDAIC PUNCTUATION - {0x0860, 0x086A, prAL, gcLo}, // [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA - {0x0870, 0x0887, prAL, gcLo}, // [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT - {0x0888, 0x0888, prAL, gcSk}, // ARABIC RAISED ROUND DOT - {0x0889, 0x088E, prAL, gcLo}, // [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL - {0x0890, 0x0891, prAL, gcCf}, // [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE - {0x0898, 0x089F, prCM, gcMn}, // [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA - {0x08A0, 0x08C8, prAL, gcLo}, // [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF - {0x08C9, 0x08C9, prAL, gcLm}, // ARABIC SMALL FARSI YEH - {0x08CA, 0x08E1, prCM, gcMn}, // [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA - {0x08E2, 0x08E2, prAL, gcCf}, // ARABIC DISPUTED END OF AYAH - {0x08E3, 0x08FF, prCM, gcMn}, // [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA - {0x0900, 0x0902, prCM, gcMn}, // [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA - {0x0903, 0x0903, prCM, gcMc}, // DEVANAGARI SIGN VISARGA - {0x0904, 0x0939, prAL, gcLo}, // [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - {0x093A, 0x093A, prCM, gcMn}, // DEVANAGARI VOWEL SIGN OE - {0x093B, 0x093B, prCM, gcMc}, // DEVANAGARI VOWEL SIGN OOE - {0x093C, 0x093C, prCM, gcMn}, // DEVANAGARI SIGN NUKTA - {0x093D, 0x093D, prAL, gcLo}, // DEVANAGARI SIGN AVAGRAHA - {0x093E, 0x0940, prCM, gcMc}, // [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II - {0x0941, 0x0948, prCM, gcMn}, // [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI - {0x0949, 0x094C, prCM, gcMc}, // [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU - {0x094D, 0x094D, prCM, gcMn}, // DEVANAGARI SIGN VIRAMA - {0x094E, 0x094F, prCM, gcMc}, // [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW - {0x0950, 0x0950, prAL, gcLo}, // DEVANAGARI OM - {0x0951, 0x0957, prCM, gcMn}, // [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE - {0x0958, 0x0961, prAL, gcLo}, // [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL - {0x0962, 0x0963, prCM, gcMn}, // [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL - {0x0964, 0x0965, prBA, gcPo}, // [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA - {0x0966, 0x096F, prNU, gcNd}, // [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE - {0x0970, 0x0970, prAL, gcPo}, // DEVANAGARI ABBREVIATION SIGN - {0x0971, 0x0971, prAL, gcLm}, // DEVANAGARI SIGN HIGH SPACING DOT - {0x0972, 0x097F, prAL, gcLo}, // [14] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER BBA - {0x0980, 0x0980, prAL, gcLo}, // BENGALI ANJI - {0x0981, 0x0981, prCM, gcMn}, // BENGALI SIGN CANDRABINDU - {0x0982, 0x0983, prCM, gcMc}, // [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA - {0x0985, 0x098C, prAL, gcLo}, // [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L - {0x098F, 0x0990, prAL, gcLo}, // [2] BENGALI LETTER E..BENGALI LETTER AI - {0x0993, 0x09A8, prAL, gcLo}, // [22] BENGALI LETTER O..BENGALI LETTER NA - {0x09AA, 0x09B0, prAL, gcLo}, // [7] BENGALI LETTER PA..BENGALI LETTER RA - {0x09B2, 0x09B2, prAL, gcLo}, // BENGALI LETTER LA - {0x09B6, 0x09B9, prAL, gcLo}, // [4] BENGALI LETTER SHA..BENGALI LETTER HA - {0x09BC, 0x09BC, prCM, gcMn}, // BENGALI SIGN NUKTA - {0x09BD, 0x09BD, prAL, gcLo}, // BENGALI SIGN AVAGRAHA - {0x09BE, 0x09C0, prCM, gcMc}, // [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II - {0x09C1, 0x09C4, prCM, gcMn}, // [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR - {0x09C7, 0x09C8, prCM, gcMc}, // [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI - {0x09CB, 0x09CC, prCM, gcMc}, // [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU - {0x09CD, 0x09CD, prCM, gcMn}, // BENGALI SIGN VIRAMA - {0x09CE, 0x09CE, prAL, gcLo}, // BENGALI LETTER KHANDA TA - {0x09D7, 0x09D7, prCM, gcMc}, // BENGALI AU LENGTH MARK - {0x09DC, 0x09DD, prAL, gcLo}, // [2] BENGALI LETTER RRA..BENGALI LETTER RHA - {0x09DF, 0x09E1, prAL, gcLo}, // [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL - {0x09E2, 0x09E3, prCM, gcMn}, // [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL - {0x09E6, 0x09EF, prNU, gcNd}, // [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE - {0x09F0, 0x09F1, prAL, gcLo}, // [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL - {0x09F2, 0x09F3, prPO, gcSc}, // [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN - {0x09F4, 0x09F8, prAL, gcNo}, // [5] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR - {0x09F9, 0x09F9, prPO, gcNo}, // BENGALI CURRENCY DENOMINATOR SIXTEEN - {0x09FA, 0x09FA, prAL, gcSo}, // BENGALI ISSHAR - {0x09FB, 0x09FB, prPR, gcSc}, // BENGALI GANDA MARK - {0x09FC, 0x09FC, prAL, gcLo}, // BENGALI LETTER VEDIC ANUSVARA - {0x09FD, 0x09FD, prAL, gcPo}, // BENGALI ABBREVIATION SIGN - {0x09FE, 0x09FE, prCM, gcMn}, // BENGALI SANDHI MARK - {0x0A01, 0x0A02, prCM, gcMn}, // [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI - {0x0A03, 0x0A03, prCM, gcMc}, // GURMUKHI SIGN VISARGA - {0x0A05, 0x0A0A, prAL, gcLo}, // [6] GURMUKHI LETTER A..GURMUKHI LETTER UU - {0x0A0F, 0x0A10, prAL, gcLo}, // [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI - {0x0A13, 0x0A28, prAL, gcLo}, // [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA - {0x0A2A, 0x0A30, prAL, gcLo}, // [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA - {0x0A32, 0x0A33, prAL, gcLo}, // [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA - {0x0A35, 0x0A36, prAL, gcLo}, // [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA - {0x0A38, 0x0A39, prAL, gcLo}, // [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA - {0x0A3C, 0x0A3C, prCM, gcMn}, // GURMUKHI SIGN NUKTA - {0x0A3E, 0x0A40, prCM, gcMc}, // [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II - {0x0A41, 0x0A42, prCM, gcMn}, // [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU - {0x0A47, 0x0A48, prCM, gcMn}, // [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI - {0x0A4B, 0x0A4D, prCM, gcMn}, // [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA - {0x0A51, 0x0A51, prCM, gcMn}, // GURMUKHI SIGN UDAAT - {0x0A59, 0x0A5C, prAL, gcLo}, // [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA - {0x0A5E, 0x0A5E, prAL, gcLo}, // GURMUKHI LETTER FA - {0x0A66, 0x0A6F, prNU, gcNd}, // [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE - {0x0A70, 0x0A71, prCM, gcMn}, // [2] GURMUKHI TIPPI..GURMUKHI ADDAK - {0x0A72, 0x0A74, prAL, gcLo}, // [3] GURMUKHI IRI..GURMUKHI EK ONKAR - {0x0A75, 0x0A75, prCM, gcMn}, // GURMUKHI SIGN YAKASH - {0x0A76, 0x0A76, prAL, gcPo}, // GURMUKHI ABBREVIATION SIGN - {0x0A81, 0x0A82, prCM, gcMn}, // [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA - {0x0A83, 0x0A83, prCM, gcMc}, // GUJARATI SIGN VISARGA - {0x0A85, 0x0A8D, prAL, gcLo}, // [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E - {0x0A8F, 0x0A91, prAL, gcLo}, // [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O - {0x0A93, 0x0AA8, prAL, gcLo}, // [22] GUJARATI LETTER O..GUJARATI LETTER NA - {0x0AAA, 0x0AB0, prAL, gcLo}, // [7] GUJARATI LETTER PA..GUJARATI LETTER RA - {0x0AB2, 0x0AB3, prAL, gcLo}, // [2] GUJARATI LETTER LA..GUJARATI LETTER LLA - {0x0AB5, 0x0AB9, prAL, gcLo}, // [5] GUJARATI LETTER VA..GUJARATI LETTER HA - {0x0ABC, 0x0ABC, prCM, gcMn}, // GUJARATI SIGN NUKTA - {0x0ABD, 0x0ABD, prAL, gcLo}, // GUJARATI SIGN AVAGRAHA - {0x0ABE, 0x0AC0, prCM, gcMc}, // [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II - {0x0AC1, 0x0AC5, prCM, gcMn}, // [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E - {0x0AC7, 0x0AC8, prCM, gcMn}, // [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI - {0x0AC9, 0x0AC9, prCM, gcMc}, // GUJARATI VOWEL SIGN CANDRA O - {0x0ACB, 0x0ACC, prCM, gcMc}, // [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU - {0x0ACD, 0x0ACD, prCM, gcMn}, // GUJARATI SIGN VIRAMA - {0x0AD0, 0x0AD0, prAL, gcLo}, // GUJARATI OM - {0x0AE0, 0x0AE1, prAL, gcLo}, // [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL - {0x0AE2, 0x0AE3, prCM, gcMn}, // [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL - {0x0AE6, 0x0AEF, prNU, gcNd}, // [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE - {0x0AF0, 0x0AF0, prAL, gcPo}, // GUJARATI ABBREVIATION SIGN - {0x0AF1, 0x0AF1, prPR, gcSc}, // GUJARATI RUPEE SIGN - {0x0AF9, 0x0AF9, prAL, gcLo}, // GUJARATI LETTER ZHA - {0x0AFA, 0x0AFF, prCM, gcMn}, // [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE - {0x0B01, 0x0B01, prCM, gcMn}, // ORIYA SIGN CANDRABINDU - {0x0B02, 0x0B03, prCM, gcMc}, // [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA - {0x0B05, 0x0B0C, prAL, gcLo}, // [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L - {0x0B0F, 0x0B10, prAL, gcLo}, // [2] ORIYA LETTER E..ORIYA LETTER AI - {0x0B13, 0x0B28, prAL, gcLo}, // [22] ORIYA LETTER O..ORIYA LETTER NA - {0x0B2A, 0x0B30, prAL, gcLo}, // [7] ORIYA LETTER PA..ORIYA LETTER RA - {0x0B32, 0x0B33, prAL, gcLo}, // [2] ORIYA LETTER LA..ORIYA LETTER LLA - {0x0B35, 0x0B39, prAL, gcLo}, // [5] ORIYA LETTER VA..ORIYA LETTER HA - {0x0B3C, 0x0B3C, prCM, gcMn}, // ORIYA SIGN NUKTA - {0x0B3D, 0x0B3D, prAL, gcLo}, // ORIYA SIGN AVAGRAHA - {0x0B3E, 0x0B3E, prCM, gcMc}, // ORIYA VOWEL SIGN AA - {0x0B3F, 0x0B3F, prCM, gcMn}, // ORIYA VOWEL SIGN I - {0x0B40, 0x0B40, prCM, gcMc}, // ORIYA VOWEL SIGN II - {0x0B41, 0x0B44, prCM, gcMn}, // [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR - {0x0B47, 0x0B48, prCM, gcMc}, // [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI - {0x0B4B, 0x0B4C, prCM, gcMc}, // [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU - {0x0B4D, 0x0B4D, prCM, gcMn}, // ORIYA SIGN VIRAMA - {0x0B55, 0x0B56, prCM, gcMn}, // [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK - {0x0B57, 0x0B57, prCM, gcMc}, // ORIYA AU LENGTH MARK - {0x0B5C, 0x0B5D, prAL, gcLo}, // [2] ORIYA LETTER RRA..ORIYA LETTER RHA - {0x0B5F, 0x0B61, prAL, gcLo}, // [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL - {0x0B62, 0x0B63, prCM, gcMn}, // [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL - {0x0B66, 0x0B6F, prNU, gcNd}, // [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE - {0x0B70, 0x0B70, prAL, gcSo}, // ORIYA ISSHAR - {0x0B71, 0x0B71, prAL, gcLo}, // ORIYA LETTER WA - {0x0B72, 0x0B77, prAL, gcNo}, // [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS - {0x0B82, 0x0B82, prCM, gcMn}, // TAMIL SIGN ANUSVARA - {0x0B83, 0x0B83, prAL, gcLo}, // TAMIL SIGN VISARGA - {0x0B85, 0x0B8A, prAL, gcLo}, // [6] TAMIL LETTER A..TAMIL LETTER UU - {0x0B8E, 0x0B90, prAL, gcLo}, // [3] TAMIL LETTER E..TAMIL LETTER AI - {0x0B92, 0x0B95, prAL, gcLo}, // [4] TAMIL LETTER O..TAMIL LETTER KA - {0x0B99, 0x0B9A, prAL, gcLo}, // [2] TAMIL LETTER NGA..TAMIL LETTER CA - {0x0B9C, 0x0B9C, prAL, gcLo}, // TAMIL LETTER JA - {0x0B9E, 0x0B9F, prAL, gcLo}, // [2] TAMIL LETTER NYA..TAMIL LETTER TTA - {0x0BA3, 0x0BA4, prAL, gcLo}, // [2] TAMIL LETTER NNA..TAMIL LETTER TA - {0x0BA8, 0x0BAA, prAL, gcLo}, // [3] TAMIL LETTER NA..TAMIL LETTER PA - {0x0BAE, 0x0BB9, prAL, gcLo}, // [12] TAMIL LETTER MA..TAMIL LETTER HA - {0x0BBE, 0x0BBF, prCM, gcMc}, // [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I - {0x0BC0, 0x0BC0, prCM, gcMn}, // TAMIL VOWEL SIGN II - {0x0BC1, 0x0BC2, prCM, gcMc}, // [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU - {0x0BC6, 0x0BC8, prCM, gcMc}, // [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI - {0x0BCA, 0x0BCC, prCM, gcMc}, // [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU - {0x0BCD, 0x0BCD, prCM, gcMn}, // TAMIL SIGN VIRAMA - {0x0BD0, 0x0BD0, prAL, gcLo}, // TAMIL OM - {0x0BD7, 0x0BD7, prCM, gcMc}, // TAMIL AU LENGTH MARK - {0x0BE6, 0x0BEF, prNU, gcNd}, // [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE - {0x0BF0, 0x0BF2, prAL, gcNo}, // [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND - {0x0BF3, 0x0BF8, prAL, gcSo}, // [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN - {0x0BF9, 0x0BF9, prPR, gcSc}, // TAMIL RUPEE SIGN - {0x0BFA, 0x0BFA, prAL, gcSo}, // TAMIL NUMBER SIGN - {0x0C00, 0x0C00, prCM, gcMn}, // TELUGU SIGN COMBINING CANDRABINDU ABOVE - {0x0C01, 0x0C03, prCM, gcMc}, // [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA - {0x0C04, 0x0C04, prCM, gcMn}, // TELUGU SIGN COMBINING ANUSVARA ABOVE - {0x0C05, 0x0C0C, prAL, gcLo}, // [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L - {0x0C0E, 0x0C10, prAL, gcLo}, // [3] TELUGU LETTER E..TELUGU LETTER AI - {0x0C12, 0x0C28, prAL, gcLo}, // [23] TELUGU LETTER O..TELUGU LETTER NA - {0x0C2A, 0x0C39, prAL, gcLo}, // [16] TELUGU LETTER PA..TELUGU LETTER HA - {0x0C3C, 0x0C3C, prCM, gcMn}, // TELUGU SIGN NUKTA - {0x0C3D, 0x0C3D, prAL, gcLo}, // TELUGU SIGN AVAGRAHA - {0x0C3E, 0x0C40, prCM, gcMn}, // [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II - {0x0C41, 0x0C44, prCM, gcMc}, // [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR - {0x0C46, 0x0C48, prCM, gcMn}, // [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI - {0x0C4A, 0x0C4D, prCM, gcMn}, // [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA - {0x0C55, 0x0C56, prCM, gcMn}, // [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK - {0x0C58, 0x0C5A, prAL, gcLo}, // [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - {0x0C5D, 0x0C5D, prAL, gcLo}, // TELUGU LETTER NAKAARA POLLU - {0x0C60, 0x0C61, prAL, gcLo}, // [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - {0x0C62, 0x0C63, prCM, gcMn}, // [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - {0x0C66, 0x0C6F, prNU, gcNd}, // [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE - {0x0C77, 0x0C77, prBB, gcPo}, // TELUGU SIGN SIDDHAM - {0x0C78, 0x0C7E, prAL, gcNo}, // [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR - {0x0C7F, 0x0C7F, prAL, gcSo}, // TELUGU SIGN TUUMU - {0x0C80, 0x0C80, prAL, gcLo}, // KANNADA SIGN SPACING CANDRABINDU - {0x0C81, 0x0C81, prCM, gcMn}, // KANNADA SIGN CANDRABINDU - {0x0C82, 0x0C83, prCM, gcMc}, // [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - {0x0C84, 0x0C84, prBB, gcPo}, // KANNADA SIGN SIDDHAM - {0x0C85, 0x0C8C, prAL, gcLo}, // [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - {0x0C8E, 0x0C90, prAL, gcLo}, // [3] KANNADA LETTER E..KANNADA LETTER AI - {0x0C92, 0x0CA8, prAL, gcLo}, // [23] KANNADA LETTER O..KANNADA LETTER NA - {0x0CAA, 0x0CB3, prAL, gcLo}, // [10] KANNADA LETTER PA..KANNADA LETTER LLA - {0x0CB5, 0x0CB9, prAL, gcLo}, // [5] KANNADA LETTER VA..KANNADA LETTER HA - {0x0CBC, 0x0CBC, prCM, gcMn}, // KANNADA SIGN NUKTA - {0x0CBD, 0x0CBD, prAL, gcLo}, // KANNADA SIGN AVAGRAHA - {0x0CBE, 0x0CBE, prCM, gcMc}, // KANNADA VOWEL SIGN AA - {0x0CBF, 0x0CBF, prCM, gcMn}, // KANNADA VOWEL SIGN I - {0x0CC0, 0x0CC4, prCM, gcMc}, // [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR - {0x0CC6, 0x0CC6, prCM, gcMn}, // KANNADA VOWEL SIGN E - {0x0CC7, 0x0CC8, prCM, gcMc}, // [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI - {0x0CCA, 0x0CCB, prCM, gcMc}, // [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO - {0x0CCC, 0x0CCD, prCM, gcMn}, // [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA - {0x0CD5, 0x0CD6, prCM, gcMc}, // [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK - {0x0CDD, 0x0CDE, prAL, gcLo}, // [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA - {0x0CE0, 0x0CE1, prAL, gcLo}, // [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL - {0x0CE2, 0x0CE3, prCM, gcMn}, // [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL - {0x0CE6, 0x0CEF, prNU, gcNd}, // [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - {0x0CF1, 0x0CF2, prAL, gcLo}, // [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA - {0x0CF3, 0x0CF3, prCM, gcMc}, // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT - {0x0D00, 0x0D01, prCM, gcMn}, // [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU - {0x0D02, 0x0D03, prCM, gcMc}, // [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA - {0x0D04, 0x0D0C, prAL, gcLo}, // [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L - {0x0D0E, 0x0D10, prAL, gcLo}, // [3] MALAYALAM LETTER E..MALAYALAM LETTER AI - {0x0D12, 0x0D3A, prAL, gcLo}, // [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - {0x0D3B, 0x0D3C, prCM, gcMn}, // [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA - {0x0D3D, 0x0D3D, prAL, gcLo}, // MALAYALAM SIGN AVAGRAHA - {0x0D3E, 0x0D40, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II - {0x0D41, 0x0D44, prCM, gcMn}, // [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR - {0x0D46, 0x0D48, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - {0x0D4A, 0x0D4C, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - {0x0D4D, 0x0D4D, prCM, gcMn}, // MALAYALAM SIGN VIRAMA - {0x0D4E, 0x0D4E, prAL, gcLo}, // MALAYALAM LETTER DOT REPH - {0x0D4F, 0x0D4F, prAL, gcSo}, // MALAYALAM SIGN PARA - {0x0D54, 0x0D56, prAL, gcLo}, // [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - {0x0D57, 0x0D57, prCM, gcMc}, // MALAYALAM AU LENGTH MARK - {0x0D58, 0x0D5E, prAL, gcNo}, // [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH - {0x0D5F, 0x0D61, prAL, gcLo}, // [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - {0x0D62, 0x0D63, prCM, gcMn}, // [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL - {0x0D66, 0x0D6F, prNU, gcNd}, // [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE - {0x0D70, 0x0D78, prAL, gcNo}, // [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS - {0x0D79, 0x0D79, prPO, gcSo}, // MALAYALAM DATE MARK - {0x0D7A, 0x0D7F, prAL, gcLo}, // [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - {0x0D81, 0x0D81, prCM, gcMn}, // SINHALA SIGN CANDRABINDU - {0x0D82, 0x0D83, prCM, gcMc}, // [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA - {0x0D85, 0x0D96, prAL, gcLo}, // [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA - {0x0D9A, 0x0DB1, prAL, gcLo}, // [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA - {0x0DB3, 0x0DBB, prAL, gcLo}, // [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA - {0x0DBD, 0x0DBD, prAL, gcLo}, // SINHALA LETTER DANTAJA LAYANNA - {0x0DC0, 0x0DC6, prAL, gcLo}, // [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA - {0x0DCA, 0x0DCA, prCM, gcMn}, // SINHALA SIGN AL-LAKUNA - {0x0DCF, 0x0DD1, prCM, gcMc}, // [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA - {0x0DD2, 0x0DD4, prCM, gcMn}, // [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA - {0x0DD6, 0x0DD6, prCM, gcMn}, // SINHALA VOWEL SIGN DIGA PAA-PILLA - {0x0DD8, 0x0DDF, prCM, gcMc}, // [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA - {0x0DE6, 0x0DEF, prNU, gcNd}, // [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE - {0x0DF2, 0x0DF3, prCM, gcMc}, // [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA - {0x0DF4, 0x0DF4, prAL, gcPo}, // SINHALA PUNCTUATION KUNDDALIYA - {0x0E01, 0x0E30, prSA, gcLo}, // [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A - {0x0E31, 0x0E31, prSA, gcMn}, // THAI CHARACTER MAI HAN-AKAT - {0x0E32, 0x0E33, prSA, gcLo}, // [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM - {0x0E34, 0x0E3A, prSA, gcMn}, // [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU - {0x0E3F, 0x0E3F, prPR, gcSc}, // THAI CURRENCY SYMBOL BAHT - {0x0E40, 0x0E45, prSA, gcLo}, // [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO - {0x0E46, 0x0E46, prSA, gcLm}, // THAI CHARACTER MAIYAMOK - {0x0E47, 0x0E4E, prSA, gcMn}, // [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN - {0x0E4F, 0x0E4F, prAL, gcPo}, // THAI CHARACTER FONGMAN - {0x0E50, 0x0E59, prNU, gcNd}, // [10] THAI DIGIT ZERO..THAI DIGIT NINE - {0x0E5A, 0x0E5B, prBA, gcPo}, // [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT - {0x0E81, 0x0E82, prSA, gcLo}, // [2] LAO LETTER KO..LAO LETTER KHO SUNG - {0x0E84, 0x0E84, prSA, gcLo}, // LAO LETTER KHO TAM - {0x0E86, 0x0E8A, prSA, gcLo}, // [5] LAO LETTER PALI GHA..LAO LETTER SO TAM - {0x0E8C, 0x0EA3, prSA, gcLo}, // [24] LAO LETTER PALI JHA..LAO LETTER LO LING - {0x0EA5, 0x0EA5, prSA, gcLo}, // LAO LETTER LO LOOT - {0x0EA7, 0x0EB0, prSA, gcLo}, // [10] LAO LETTER WO..LAO VOWEL SIGN A - {0x0EB1, 0x0EB1, prSA, gcMn}, // LAO VOWEL SIGN MAI KAN - {0x0EB2, 0x0EB3, prSA, gcLo}, // [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM - {0x0EB4, 0x0EBC, prSA, gcMn}, // [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO - {0x0EBD, 0x0EBD, prSA, gcLo}, // LAO SEMIVOWEL SIGN NYO - {0x0EC0, 0x0EC4, prSA, gcLo}, // [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI - {0x0EC6, 0x0EC6, prSA, gcLm}, // LAO KO LA - {0x0EC8, 0x0ECE, prSA, gcMn}, // [7] LAO TONE MAI EK..LAO YAMAKKAN - {0x0ED0, 0x0ED9, prNU, gcNd}, // [10] LAO DIGIT ZERO..LAO DIGIT NINE - {0x0EDC, 0x0EDF, prSA, gcLo}, // [4] LAO HO NO..LAO LETTER KHMU NYO - {0x0F00, 0x0F00, prAL, gcLo}, // TIBETAN SYLLABLE OM - {0x0F01, 0x0F03, prBB, gcSo}, // [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA - {0x0F04, 0x0F04, prBB, gcPo}, // TIBETAN MARK INITIAL YIG MGO MDUN MA - {0x0F05, 0x0F05, prAL, gcPo}, // TIBETAN MARK CLOSING YIG MGO SGAB MA - {0x0F06, 0x0F07, prBB, gcPo}, // [2] TIBETAN MARK CARET YIG MGO PHUR SHAD MA..TIBETAN MARK YIG MGO TSHEG SHAD MA - {0x0F08, 0x0F08, prGL, gcPo}, // TIBETAN MARK SBRUL SHAD - {0x0F09, 0x0F0A, prBB, gcPo}, // [2] TIBETAN MARK BSKUR YIG MGO..TIBETAN MARK BKA- SHOG YIG MGO - {0x0F0B, 0x0F0B, prBA, gcPo}, // TIBETAN MARK INTERSYLLABIC TSHEG - {0x0F0C, 0x0F0C, prGL, gcPo}, // TIBETAN MARK DELIMITER TSHEG BSTAR - {0x0F0D, 0x0F11, prEX, gcPo}, // [5] TIBETAN MARK SHAD..TIBETAN MARK RIN CHEN SPUNGS SHAD - {0x0F12, 0x0F12, prGL, gcPo}, // TIBETAN MARK RGYA GRAM SHAD - {0x0F13, 0x0F13, prAL, gcSo}, // TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN - {0x0F14, 0x0F14, prEX, gcPo}, // TIBETAN MARK GTER TSHEG - {0x0F15, 0x0F17, prAL, gcSo}, // [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS - {0x0F18, 0x0F19, prCM, gcMn}, // [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS - {0x0F1A, 0x0F1F, prAL, gcSo}, // [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG - {0x0F20, 0x0F29, prNU, gcNd}, // [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE - {0x0F2A, 0x0F33, prAL, gcNo}, // [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO - {0x0F34, 0x0F34, prBA, gcSo}, // TIBETAN MARK BSDUS RTAGS - {0x0F35, 0x0F35, prCM, gcMn}, // TIBETAN MARK NGAS BZUNG NYI ZLA - {0x0F36, 0x0F36, prAL, gcSo}, // TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN - {0x0F37, 0x0F37, prCM, gcMn}, // TIBETAN MARK NGAS BZUNG SGOR RTAGS - {0x0F38, 0x0F38, prAL, gcSo}, // TIBETAN MARK CHE MGO - {0x0F39, 0x0F39, prCM, gcMn}, // TIBETAN MARK TSA -PHRU - {0x0F3A, 0x0F3A, prOP, gcPs}, // TIBETAN MARK GUG RTAGS GYON - {0x0F3B, 0x0F3B, prCL, gcPe}, // TIBETAN MARK GUG RTAGS GYAS - {0x0F3C, 0x0F3C, prOP, gcPs}, // TIBETAN MARK ANG KHANG GYON - {0x0F3D, 0x0F3D, prCL, gcPe}, // TIBETAN MARK ANG KHANG GYAS - {0x0F3E, 0x0F3F, prCM, gcMc}, // [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES - {0x0F40, 0x0F47, prAL, gcLo}, // [8] TIBETAN LETTER KA..TIBETAN LETTER JA - {0x0F49, 0x0F6C, prAL, gcLo}, // [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA - {0x0F71, 0x0F7E, prCM, gcMn}, // [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO - {0x0F7F, 0x0F7F, prBA, gcMc}, // TIBETAN SIGN RNAM BCAD - {0x0F80, 0x0F84, prCM, gcMn}, // [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA - {0x0F85, 0x0F85, prBA, gcPo}, // TIBETAN MARK PALUTA - {0x0F86, 0x0F87, prCM, gcMn}, // [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS - {0x0F88, 0x0F8C, prAL, gcLo}, // [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN - {0x0F8D, 0x0F97, prCM, gcMn}, // [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA - {0x0F99, 0x0FBC, prCM, gcMn}, // [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA - {0x0FBE, 0x0FBF, prBA, gcSo}, // [2] TIBETAN KU RU KHA..TIBETAN KU RU KHA BZHI MIG CAN - {0x0FC0, 0x0FC5, prAL, gcSo}, // [6] TIBETAN CANTILLATION SIGN HEAVY BEAT..TIBETAN SYMBOL RDO RJE - {0x0FC6, 0x0FC6, prCM, gcMn}, // TIBETAN SYMBOL PADMA GDAN - {0x0FC7, 0x0FCC, prAL, gcSo}, // [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL - {0x0FCE, 0x0FCF, prAL, gcSo}, // [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM - {0x0FD0, 0x0FD1, prBB, gcPo}, // [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN - {0x0FD2, 0x0FD2, prBA, gcPo}, // TIBETAN MARK NYIS TSHEG - {0x0FD3, 0x0FD3, prBB, gcPo}, // TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA - {0x0FD4, 0x0FD4, prAL, gcPo}, // TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA - {0x0FD5, 0x0FD8, prAL, gcSo}, // [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS - {0x0FD9, 0x0FDA, prGL, gcPo}, // [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS - {0x1000, 0x102A, prSA, gcLo}, // [43] MYANMAR LETTER KA..MYANMAR LETTER AU - {0x102B, 0x102C, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA - {0x102D, 0x1030, prSA, gcMn}, // [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU - {0x1031, 0x1031, prSA, gcMc}, // MYANMAR VOWEL SIGN E - {0x1032, 0x1037, prSA, gcMn}, // [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW - {0x1038, 0x1038, prSA, gcMc}, // MYANMAR SIGN VISARGA - {0x1039, 0x103A, prSA, gcMn}, // [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT - {0x103B, 0x103C, prSA, gcMc}, // [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA - {0x103D, 0x103E, prSA, gcMn}, // [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA - {0x103F, 0x103F, prSA, gcLo}, // MYANMAR LETTER GREAT SA - {0x1040, 0x1049, prNU, gcNd}, // [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE - {0x104A, 0x104B, prBA, gcPo}, // [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION - {0x104C, 0x104F, prAL, gcPo}, // [4] MYANMAR SYMBOL LOCATIVE..MYANMAR SYMBOL GENITIVE - {0x1050, 0x1055, prSA, gcLo}, // [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL - {0x1056, 0x1057, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR - {0x1058, 0x1059, prSA, gcMn}, // [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - {0x105A, 0x105D, prSA, gcLo}, // [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE - {0x105E, 0x1060, prSA, gcMn}, // [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA - {0x1061, 0x1061, prSA, gcLo}, // MYANMAR LETTER SGAW KAREN SHA - {0x1062, 0x1064, prSA, gcMc}, // [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO - {0x1065, 0x1066, prSA, gcLo}, // [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA - {0x1067, 0x106D, prSA, gcMc}, // [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 - {0x106E, 0x1070, prSA, gcLo}, // [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA - {0x1071, 0x1074, prSA, gcMn}, // [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE - {0x1075, 0x1081, prSA, gcLo}, // [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA - {0x1082, 0x1082, prSA, gcMn}, // MYANMAR CONSONANT SIGN SHAN MEDIAL WA - {0x1083, 0x1084, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E - {0x1085, 0x1086, prSA, gcMn}, // [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y - {0x1087, 0x108C, prSA, gcMc}, // [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 - {0x108D, 0x108D, prSA, gcMn}, // MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE - {0x108E, 0x108E, prSA, gcLo}, // MYANMAR LETTER RUMAI PALAUNG FA - {0x108F, 0x108F, prSA, gcMc}, // MYANMAR SIGN RUMAI PALAUNG TONE-5 - {0x1090, 0x1099, prNU, gcNd}, // [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE - {0x109A, 0x109C, prSA, gcMc}, // [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A - {0x109D, 0x109D, prSA, gcMn}, // MYANMAR VOWEL SIGN AITON AI - {0x109E, 0x109F, prSA, gcSo}, // [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION - {0x10A0, 0x10C5, prAL, gcLu}, // [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE - {0x10C7, 0x10C7, prAL, gcLu}, // GEORGIAN CAPITAL LETTER YN - {0x10CD, 0x10CD, prAL, gcLu}, // GEORGIAN CAPITAL LETTER AEN - {0x10D0, 0x10FA, prAL, gcLl}, // [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN - {0x10FB, 0x10FB, prAL, gcPo}, // GEORGIAN PARAGRAPH SEPARATOR - {0x10FC, 0x10FC, prAL, gcLm}, // MODIFIER LETTER GEORGIAN NAR - {0x10FD, 0x10FF, prAL, gcLl}, // [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN - {0x1100, 0x115F, prJL, gcLo}, // [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER - {0x1160, 0x11A7, prJV, gcLo}, // [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE - {0x11A8, 0x11FF, prJT, gcLo}, // [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN - {0x1200, 0x1248, prAL, gcLo}, // [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA - {0x124A, 0x124D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE - {0x1250, 0x1256, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO - {0x1258, 0x1258, prAL, gcLo}, // ETHIOPIC SYLLABLE QHWA - {0x125A, 0x125D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE - {0x1260, 0x1288, prAL, gcLo}, // [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA - {0x128A, 0x128D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE - {0x1290, 0x12B0, prAL, gcLo}, // [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA - {0x12B2, 0x12B5, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE - {0x12B8, 0x12BE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO - {0x12C0, 0x12C0, prAL, gcLo}, // ETHIOPIC SYLLABLE KXWA - {0x12C2, 0x12C5, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE - {0x12C8, 0x12D6, prAL, gcLo}, // [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O - {0x12D8, 0x1310, prAL, gcLo}, // [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA - {0x1312, 0x1315, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE - {0x1318, 0x135A, prAL, gcLo}, // [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA - {0x135D, 0x135F, prCM, gcMn}, // [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK - {0x1360, 0x1360, prAL, gcPo}, // ETHIOPIC SECTION MARK - {0x1361, 0x1361, prBA, gcPo}, // ETHIOPIC WORDSPACE - {0x1362, 0x1368, prAL, gcPo}, // [7] ETHIOPIC FULL STOP..ETHIOPIC PARAGRAPH SEPARATOR - {0x1369, 0x137C, prAL, gcNo}, // [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND - {0x1380, 0x138F, prAL, gcLo}, // [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE - {0x1390, 0x1399, prAL, gcSo}, // [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT - {0x13A0, 0x13F5, prAL, gcLu}, // [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - {0x13F8, 0x13FD, prAL, gcLl}, // [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV - {0x1400, 0x1400, prBA, gcPd}, // CANADIAN SYLLABICS HYPHEN - {0x1401, 0x166C, prAL, gcLo}, // [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA - {0x166D, 0x166D, prAL, gcSo}, // CANADIAN SYLLABICS CHI SIGN - {0x166E, 0x166E, prAL, gcPo}, // CANADIAN SYLLABICS FULL STOP - {0x166F, 0x167F, prAL, gcLo}, // [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W - {0x1680, 0x1680, prBA, gcZs}, // OGHAM SPACE MARK - {0x1681, 0x169A, prAL, gcLo}, // [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH - {0x169B, 0x169B, prOP, gcPs}, // OGHAM FEATHER MARK - {0x169C, 0x169C, prCL, gcPe}, // OGHAM REVERSED FEATHER MARK - {0x16A0, 0x16EA, prAL, gcLo}, // [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X - {0x16EB, 0x16ED, prBA, gcPo}, // [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION - {0x16EE, 0x16F0, prAL, gcNl}, // [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - {0x16F1, 0x16F8, prAL, gcLo}, // [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC - {0x1700, 0x1711, prAL, gcLo}, // [18] TAGALOG LETTER A..TAGALOG LETTER HA - {0x1712, 0x1714, prCM, gcMn}, // [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - {0x1715, 0x1715, prCM, gcMc}, // TAGALOG SIGN PAMUDPOD - {0x171F, 0x171F, prAL, gcLo}, // TAGALOG LETTER ARCHAIC RA - {0x1720, 0x1731, prAL, gcLo}, // [18] HANUNOO LETTER A..HANUNOO LETTER HA - {0x1732, 0x1733, prCM, gcMn}, // [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U - {0x1734, 0x1734, prCM, gcMc}, // HANUNOO SIGN PAMUDPOD - {0x1735, 0x1736, prBA, gcPo}, // [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION - {0x1740, 0x1751, prAL, gcLo}, // [18] BUHID LETTER A..BUHID LETTER HA - {0x1752, 0x1753, prCM, gcMn}, // [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - {0x1760, 0x176C, prAL, gcLo}, // [13] TAGBANWA LETTER A..TAGBANWA LETTER YA - {0x176E, 0x1770, prAL, gcLo}, // [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA - {0x1772, 0x1773, prCM, gcMn}, // [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - {0x1780, 0x17B3, prSA, gcLo}, // [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU - {0x17B4, 0x17B5, prSA, gcMn}, // [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA - {0x17B6, 0x17B6, prSA, gcMc}, // KHMER VOWEL SIGN AA - {0x17B7, 0x17BD, prSA, gcMn}, // [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA - {0x17BE, 0x17C5, prSA, gcMc}, // [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU - {0x17C6, 0x17C6, prSA, gcMn}, // KHMER SIGN NIKAHIT - {0x17C7, 0x17C8, prSA, gcMc}, // [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU - {0x17C9, 0x17D3, prSA, gcMn}, // [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT - {0x17D4, 0x17D5, prBA, gcPo}, // [2] KHMER SIGN KHAN..KHMER SIGN BARIYOOSAN - {0x17D6, 0x17D6, prNS, gcPo}, // KHMER SIGN CAMNUC PII KUUH - {0x17D7, 0x17D7, prSA, gcLm}, // KHMER SIGN LEK TOO - {0x17D8, 0x17D8, prBA, gcPo}, // KHMER SIGN BEYYAL - {0x17D9, 0x17D9, prAL, gcPo}, // KHMER SIGN PHNAEK MUAN - {0x17DA, 0x17DA, prBA, gcPo}, // KHMER SIGN KOOMUUT - {0x17DB, 0x17DB, prPR, gcSc}, // KHMER CURRENCY SYMBOL RIEL - {0x17DC, 0x17DC, prSA, gcLo}, // KHMER SIGN AVAKRAHASANYA - {0x17DD, 0x17DD, prSA, gcMn}, // KHMER SIGN ATTHACAN - {0x17E0, 0x17E9, prNU, gcNd}, // [10] KHMER DIGIT ZERO..KHMER DIGIT NINE - {0x17F0, 0x17F9, prAL, gcNo}, // [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON - {0x1800, 0x1801, prAL, gcPo}, // [2] MONGOLIAN BIRGA..MONGOLIAN ELLIPSIS - {0x1802, 0x1803, prEX, gcPo}, // [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP - {0x1804, 0x1805, prBA, gcPo}, // [2] MONGOLIAN COLON..MONGOLIAN FOUR DOTS - {0x1806, 0x1806, prBB, gcPd}, // MONGOLIAN TODO SOFT HYPHEN - {0x1807, 0x1807, prAL, gcPo}, // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER - {0x1808, 0x1809, prEX, gcPo}, // [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP - {0x180A, 0x180A, prAL, gcPo}, // MONGOLIAN NIRUGU - {0x180B, 0x180D, prCM, gcMn}, // [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - {0x180E, 0x180E, prGL, gcCf}, // MONGOLIAN VOWEL SEPARATOR - {0x180F, 0x180F, prCM, gcMn}, // MONGOLIAN FREE VARIATION SELECTOR FOUR - {0x1810, 0x1819, prNU, gcNd}, // [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE - {0x1820, 0x1842, prAL, gcLo}, // [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - {0x1843, 0x1843, prAL, gcLm}, // MONGOLIAN LETTER TODO LONG VOWEL SIGN - {0x1844, 0x1878, prAL, gcLo}, // [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS - {0x1880, 0x1884, prAL, gcLo}, // [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA - {0x1885, 0x1886, prCM, gcMn}, // [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - {0x1887, 0x18A8, prAL, gcLo}, // [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - {0x18A9, 0x18A9, prCM, gcMn}, // MONGOLIAN LETTER ALI GALI DAGALGA - {0x18AA, 0x18AA, prAL, gcLo}, // MONGOLIAN LETTER MANCHU ALI GALI LHA - {0x18B0, 0x18F5, prAL, gcLo}, // [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - {0x1900, 0x191E, prAL, gcLo}, // [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA - {0x1920, 0x1922, prCM, gcMn}, // [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - {0x1923, 0x1926, prCM, gcMc}, // [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU - {0x1927, 0x1928, prCM, gcMn}, // [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O - {0x1929, 0x192B, prCM, gcMc}, // [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA - {0x1930, 0x1931, prCM, gcMc}, // [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA - {0x1932, 0x1932, prCM, gcMn}, // LIMBU SMALL LETTER ANUSVARA - {0x1933, 0x1938, prCM, gcMc}, // [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA - {0x1939, 0x193B, prCM, gcMn}, // [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I - {0x1940, 0x1940, prAL, gcSo}, // LIMBU SIGN LOO - {0x1944, 0x1945, prEX, gcPo}, // [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK - {0x1946, 0x194F, prNU, gcNd}, // [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - {0x1950, 0x196D, prSA, gcLo}, // [30] TAI LE LETTER KA..TAI LE LETTER AI - {0x1970, 0x1974, prSA, gcLo}, // [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 - {0x1980, 0x19AB, prSA, gcLo}, // [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA - {0x19B0, 0x19C9, prSA, gcLo}, // [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 - {0x19D0, 0x19D9, prNU, gcNd}, // [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE - {0x19DA, 0x19DA, prSA, gcNo}, // NEW TAI LUE THAM DIGIT ONE - {0x19DE, 0x19DF, prSA, gcSo}, // [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV - {0x19E0, 0x19FF, prAL, gcSo}, // [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC - {0x1A00, 0x1A16, prAL, gcLo}, // [23] BUGINESE LETTER KA..BUGINESE LETTER HA - {0x1A17, 0x1A18, prCM, gcMn}, // [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U - {0x1A19, 0x1A1A, prCM, gcMc}, // [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O - {0x1A1B, 0x1A1B, prCM, gcMn}, // BUGINESE VOWEL SIGN AE - {0x1A1E, 0x1A1F, prAL, gcPo}, // [2] BUGINESE PALLAWA..BUGINESE END OF SECTION - {0x1A20, 0x1A54, prSA, gcLo}, // [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA - {0x1A55, 0x1A55, prSA, gcMc}, // TAI THAM CONSONANT SIGN MEDIAL RA - {0x1A56, 0x1A56, prSA, gcMn}, // TAI THAM CONSONANT SIGN MEDIAL LA - {0x1A57, 0x1A57, prSA, gcMc}, // TAI THAM CONSONANT SIGN LA TANG LAI - {0x1A58, 0x1A5E, prSA, gcMn}, // [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA - {0x1A60, 0x1A60, prSA, gcMn}, // TAI THAM SIGN SAKOT - {0x1A61, 0x1A61, prSA, gcMc}, // TAI THAM VOWEL SIGN A - {0x1A62, 0x1A62, prSA, gcMn}, // TAI THAM VOWEL SIGN MAI SAT - {0x1A63, 0x1A64, prSA, gcMc}, // [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA - {0x1A65, 0x1A6C, prSA, gcMn}, // [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW - {0x1A6D, 0x1A72, prSA, gcMc}, // [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI - {0x1A73, 0x1A7C, prSA, gcMn}, // [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN - {0x1A7F, 0x1A7F, prCM, gcMn}, // TAI THAM COMBINING CRYPTOGRAMMIC DOT - {0x1A80, 0x1A89, prNU, gcNd}, // [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE - {0x1A90, 0x1A99, prNU, gcNd}, // [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE - {0x1AA0, 0x1AA6, prSA, gcPo}, // [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA - {0x1AA7, 0x1AA7, prSA, gcLm}, // TAI THAM SIGN MAI YAMOK - {0x1AA8, 0x1AAD, prSA, gcPo}, // [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG - {0x1AB0, 0x1ABD, prCM, gcMn}, // [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW - {0x1ABE, 0x1ABE, prCM, gcMe}, // COMBINING PARENTHESES OVERLAY - {0x1ABF, 0x1ACE, prCM, gcMn}, // [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T - {0x1B00, 0x1B03, prCM, gcMn}, // [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG - {0x1B04, 0x1B04, prCM, gcMc}, // BALINESE SIGN BISAH - {0x1B05, 0x1B33, prAL, gcLo}, // [47] BALINESE LETTER AKARA..BALINESE LETTER HA - {0x1B34, 0x1B34, prCM, gcMn}, // BALINESE SIGN REREKAN - {0x1B35, 0x1B35, prCM, gcMc}, // BALINESE VOWEL SIGN TEDUNG - {0x1B36, 0x1B3A, prCM, gcMn}, // [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA - {0x1B3B, 0x1B3B, prCM, gcMc}, // BALINESE VOWEL SIGN RA REPA TEDUNG - {0x1B3C, 0x1B3C, prCM, gcMn}, // BALINESE VOWEL SIGN LA LENGA - {0x1B3D, 0x1B41, prCM, gcMc}, // [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG - {0x1B42, 0x1B42, prCM, gcMn}, // BALINESE VOWEL SIGN PEPET - {0x1B43, 0x1B44, prCM, gcMc}, // [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG - {0x1B45, 0x1B4C, prAL, gcLo}, // [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA - {0x1B50, 0x1B59, prNU, gcNd}, // [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE - {0x1B5A, 0x1B5B, prBA, gcPo}, // [2] BALINESE PANTI..BALINESE PAMADA - {0x1B5C, 0x1B5C, prAL, gcPo}, // BALINESE WINDU - {0x1B5D, 0x1B60, prBA, gcPo}, // [4] BALINESE CARIK PAMUNGKAH..BALINESE PAMENENG - {0x1B61, 0x1B6A, prAL, gcSo}, // [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE - {0x1B6B, 0x1B73, prCM, gcMn}, // [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG - {0x1B74, 0x1B7C, prAL, gcSo}, // [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING - {0x1B7D, 0x1B7E, prBA, gcPo}, // [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG - {0x1B80, 0x1B81, prCM, gcMn}, // [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR - {0x1B82, 0x1B82, prCM, gcMc}, // SUNDANESE SIGN PANGWISAD - {0x1B83, 0x1BA0, prAL, gcLo}, // [30] SUNDANESE LETTER A..SUNDANESE LETTER HA - {0x1BA1, 0x1BA1, prCM, gcMc}, // SUNDANESE CONSONANT SIGN PAMINGKAL - {0x1BA2, 0x1BA5, prCM, gcMn}, // [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU - {0x1BA6, 0x1BA7, prCM, gcMc}, // [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG - {0x1BA8, 0x1BA9, prCM, gcMn}, // [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG - {0x1BAA, 0x1BAA, prCM, gcMc}, // SUNDANESE SIGN PAMAAEH - {0x1BAB, 0x1BAD, prCM, gcMn}, // [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA - {0x1BAE, 0x1BAF, prAL, gcLo}, // [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA - {0x1BB0, 0x1BB9, prNU, gcNd}, // [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE - {0x1BBA, 0x1BBF, prAL, gcLo}, // [6] SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M - {0x1BC0, 0x1BE5, prAL, gcLo}, // [38] BATAK LETTER A..BATAK LETTER U - {0x1BE6, 0x1BE6, prCM, gcMn}, // BATAK SIGN TOMPI - {0x1BE7, 0x1BE7, prCM, gcMc}, // BATAK VOWEL SIGN E - {0x1BE8, 0x1BE9, prCM, gcMn}, // [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE - {0x1BEA, 0x1BEC, prCM, gcMc}, // [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O - {0x1BED, 0x1BED, prCM, gcMn}, // BATAK VOWEL SIGN KARO O - {0x1BEE, 0x1BEE, prCM, gcMc}, // BATAK VOWEL SIGN U - {0x1BEF, 0x1BF1, prCM, gcMn}, // [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H - {0x1BF2, 0x1BF3, prCM, gcMc}, // [2] BATAK PANGOLAT..BATAK PANONGONAN - {0x1BFC, 0x1BFF, prAL, gcPo}, // [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT - {0x1C00, 0x1C23, prAL, gcLo}, // [36] LEPCHA LETTER KA..LEPCHA LETTER A - {0x1C24, 0x1C2B, prCM, gcMc}, // [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU - {0x1C2C, 0x1C33, prCM, gcMn}, // [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T - {0x1C34, 0x1C35, prCM, gcMc}, // [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG - {0x1C36, 0x1C37, prCM, gcMn}, // [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA - {0x1C3B, 0x1C3F, prBA, gcPo}, // [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK - {0x1C40, 0x1C49, prNU, gcNd}, // [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE - {0x1C4D, 0x1C4F, prAL, gcLo}, // [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - {0x1C50, 0x1C59, prNU, gcNd}, // [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - {0x1C5A, 0x1C77, prAL, gcLo}, // [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - {0x1C78, 0x1C7D, prAL, gcLm}, // [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD - {0x1C7E, 0x1C7F, prBA, gcPo}, // [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD - {0x1C80, 0x1C88, prAL, gcLl}, // [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - {0x1C90, 0x1CBA, prAL, gcLu}, // [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN - {0x1CBD, 0x1CBF, prAL, gcLu}, // [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN - {0x1CC0, 0x1CC7, prAL, gcPo}, // [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA - {0x1CD0, 0x1CD2, prCM, gcMn}, // [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - {0x1CD3, 0x1CD3, prAL, gcPo}, // VEDIC SIGN NIHSHVASA - {0x1CD4, 0x1CE0, prCM, gcMn}, // [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - {0x1CE1, 0x1CE1, prCM, gcMc}, // VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA - {0x1CE2, 0x1CE8, prCM, gcMn}, // [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL - {0x1CE9, 0x1CEC, prAL, gcLo}, // [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - {0x1CED, 0x1CED, prCM, gcMn}, // VEDIC SIGN TIRYAK - {0x1CEE, 0x1CF3, prAL, gcLo}, // [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA - {0x1CF4, 0x1CF4, prCM, gcMn}, // VEDIC TONE CANDRA ABOVE - {0x1CF5, 0x1CF6, prAL, gcLo}, // [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA - {0x1CF7, 0x1CF7, prCM, gcMc}, // VEDIC SIGN ATIKRAMA - {0x1CF8, 0x1CF9, prCM, gcMn}, // [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE - {0x1CFA, 0x1CFA, prAL, gcLo}, // VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA - {0x1D00, 0x1D2B, prAL, gcLl}, // [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - {0x1D2C, 0x1D6A, prAL, gcLm}, // [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - {0x1D6B, 0x1D77, prAL, gcLl}, // [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G - {0x1D78, 0x1D78, prAL, gcLm}, // MODIFIER LETTER CYRILLIC EN - {0x1D79, 0x1D7F, prAL, gcLl}, // [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE - {0x1D80, 0x1D9A, prAL, gcLl}, // [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - {0x1D9B, 0x1DBF, prAL, gcLm}, // [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - {0x1DC0, 0x1DCC, prCM, gcMn}, // [13] COMBINING DOTTED GRAVE ACCENT..COMBINING MACRON-BREVE - {0x1DCD, 0x1DCD, prGL, gcMn}, // COMBINING DOUBLE CIRCUMFLEX ABOVE - {0x1DCE, 0x1DFB, prCM, gcMn}, // [46] COMBINING OGONEK ABOVE..COMBINING DELETION MARK - {0x1DFC, 0x1DFC, prGL, gcMn}, // COMBINING DOUBLE INVERTED BREVE BELOW - {0x1DFD, 0x1DFF, prCM, gcMn}, // [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - {0x1E00, 0x1EFF, prAL, gcLC}, // [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP - {0x1F00, 0x1F15, prAL, gcLC}, // [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - {0x1F18, 0x1F1D, prAL, gcLu}, // [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - {0x1F20, 0x1F45, prAL, gcLC}, // [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA - {0x1F48, 0x1F4D, prAL, gcLu}, // [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA - {0x1F50, 0x1F57, prAL, gcLl}, // [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI - {0x1F59, 0x1F59, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA - {0x1F5B, 0x1F5B, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA - {0x1F5D, 0x1F5D, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA - {0x1F5F, 0x1F7D, prAL, gcLC}, // [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA - {0x1F80, 0x1FB4, prAL, gcLC}, // [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI - {0x1FB6, 0x1FBC, prAL, gcLC}, // [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI - {0x1FBD, 0x1FBD, prAL, gcSk}, // GREEK KORONIS - {0x1FBE, 0x1FBE, prAL, gcLl}, // GREEK PROSGEGRAMMENI - {0x1FBF, 0x1FC1, prAL, gcSk}, // [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI - {0x1FC2, 0x1FC4, prAL, gcLl}, // [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI - {0x1FC6, 0x1FCC, prAL, gcLC}, // [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI - {0x1FCD, 0x1FCF, prAL, gcSk}, // [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI - {0x1FD0, 0x1FD3, prAL, gcLl}, // [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA - {0x1FD6, 0x1FDB, prAL, gcLC}, // [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA - {0x1FDD, 0x1FDF, prAL, gcSk}, // [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI - {0x1FE0, 0x1FEC, prAL, gcLC}, // [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA - {0x1FED, 0x1FEF, prAL, gcSk}, // [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA - {0x1FF2, 0x1FF4, prAL, gcLl}, // [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - {0x1FF6, 0x1FFC, prAL, gcLC}, // [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - {0x1FFD, 0x1FFD, prBB, gcSk}, // GREEK OXIA - {0x1FFE, 0x1FFE, prAL, gcSk}, // GREEK DASIA - {0x2000, 0x2006, prBA, gcZs}, // [7] EN QUAD..SIX-PER-EM SPACE - {0x2007, 0x2007, prGL, gcZs}, // FIGURE SPACE - {0x2008, 0x200A, prBA, gcZs}, // [3] PUNCTUATION SPACE..HAIR SPACE - {0x200B, 0x200B, prZW, gcCf}, // ZERO WIDTH SPACE - {0x200C, 0x200C, prCM, gcCf}, // ZERO WIDTH NON-JOINER - {0x200D, 0x200D, prZWJ, gcCf}, // ZERO WIDTH JOINER - {0x200E, 0x200F, prCM, gcCf}, // [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK - {0x2010, 0x2010, prBA, gcPd}, // HYPHEN - {0x2011, 0x2011, prGL, gcPd}, // NON-BREAKING HYPHEN - {0x2012, 0x2013, prBA, gcPd}, // [2] FIGURE DASH..EN DASH - {0x2014, 0x2014, prB2, gcPd}, // EM DASH - {0x2015, 0x2015, prAI, gcPd}, // HORIZONTAL BAR - {0x2016, 0x2016, prAI, gcPo}, // DOUBLE VERTICAL LINE - {0x2017, 0x2017, prAL, gcPo}, // DOUBLE LOW LINE - {0x2018, 0x2018, prQU, gcPi}, // LEFT SINGLE QUOTATION MARK - {0x2019, 0x2019, prQU, gcPf}, // RIGHT SINGLE QUOTATION MARK - {0x201A, 0x201A, prOP, gcPs}, // SINGLE LOW-9 QUOTATION MARK - {0x201B, 0x201C, prQU, gcPi}, // [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK - {0x201D, 0x201D, prQU, gcPf}, // RIGHT DOUBLE QUOTATION MARK - {0x201E, 0x201E, prOP, gcPs}, // DOUBLE LOW-9 QUOTATION MARK - {0x201F, 0x201F, prQU, gcPi}, // DOUBLE HIGH-REVERSED-9 QUOTATION MARK - {0x2020, 0x2021, prAI, gcPo}, // [2] DAGGER..DOUBLE DAGGER - {0x2022, 0x2023, prAL, gcPo}, // [2] BULLET..TRIANGULAR BULLET - {0x2024, 0x2026, prIN, gcPo}, // [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS - {0x2027, 0x2027, prBA, gcPo}, // HYPHENATION POINT - {0x2028, 0x2028, prBK, gcZl}, // LINE SEPARATOR - {0x2029, 0x2029, prBK, gcZp}, // PARAGRAPH SEPARATOR - {0x202A, 0x202E, prCM, gcCf}, // [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - {0x202F, 0x202F, prGL, gcZs}, // NARROW NO-BREAK SPACE - {0x2030, 0x2037, prPO, gcPo}, // [8] PER MILLE SIGN..REVERSED TRIPLE PRIME - {0x2038, 0x2038, prAL, gcPo}, // CARET - {0x2039, 0x2039, prQU, gcPi}, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK - {0x203A, 0x203A, prQU, gcPf}, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - {0x203B, 0x203B, prAI, gcPo}, // REFERENCE MARK - {0x203C, 0x203D, prNS, gcPo}, // [2] DOUBLE EXCLAMATION MARK..INTERROBANG - {0x203E, 0x203E, prAL, gcPo}, // OVERLINE - {0x203F, 0x2040, prAL, gcPc}, // [2] UNDERTIE..CHARACTER TIE - {0x2041, 0x2043, prAL, gcPo}, // [3] CARET INSERTION POINT..HYPHEN BULLET - {0x2044, 0x2044, prIS, gcSm}, // FRACTION SLASH - {0x2045, 0x2045, prOP, gcPs}, // LEFT SQUARE BRACKET WITH QUILL - {0x2046, 0x2046, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH QUILL - {0x2047, 0x2049, prNS, gcPo}, // [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK - {0x204A, 0x2051, prAL, gcPo}, // [8] TIRONIAN SIGN ET..TWO ASTERISKS ALIGNED VERTICALLY - {0x2052, 0x2052, prAL, gcSm}, // COMMERCIAL MINUS SIGN - {0x2053, 0x2053, prAL, gcPo}, // SWUNG DASH - {0x2054, 0x2054, prAL, gcPc}, // INVERTED UNDERTIE - {0x2055, 0x2055, prAL, gcPo}, // FLOWER PUNCTUATION MARK - {0x2056, 0x2056, prBA, gcPo}, // THREE DOT PUNCTUATION - {0x2057, 0x2057, prPO, gcPo}, // QUADRUPLE PRIME - {0x2058, 0x205B, prBA, gcPo}, // [4] FOUR DOT PUNCTUATION..FOUR DOT MARK - {0x205C, 0x205C, prAL, gcPo}, // DOTTED CROSS - {0x205D, 0x205E, prBA, gcPo}, // [2] TRICOLON..VERTICAL FOUR DOTS - {0x205F, 0x205F, prBA, gcZs}, // MEDIUM MATHEMATICAL SPACE - {0x2060, 0x2060, prWJ, gcCf}, // WORD JOINER - {0x2061, 0x2064, prAL, gcCf}, // [4] FUNCTION APPLICATION..INVISIBLE PLUS - {0x2066, 0x206F, prCM, gcCf}, // [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES - {0x2070, 0x2070, prAL, gcNo}, // SUPERSCRIPT ZERO - {0x2071, 0x2071, prAL, gcLm}, // SUPERSCRIPT LATIN SMALL LETTER I - {0x2074, 0x2074, prAI, gcNo}, // SUPERSCRIPT FOUR - {0x2075, 0x2079, prAL, gcNo}, // [5] SUPERSCRIPT FIVE..SUPERSCRIPT NINE - {0x207A, 0x207C, prAL, gcSm}, // [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN - {0x207D, 0x207D, prOP, gcPs}, // SUPERSCRIPT LEFT PARENTHESIS - {0x207E, 0x207E, prCL, gcPe}, // SUPERSCRIPT RIGHT PARENTHESIS - {0x207F, 0x207F, prAI, gcLm}, // SUPERSCRIPT LATIN SMALL LETTER N - {0x2080, 0x2080, prAL, gcNo}, // SUBSCRIPT ZERO - {0x2081, 0x2084, prAI, gcNo}, // [4] SUBSCRIPT ONE..SUBSCRIPT FOUR - {0x2085, 0x2089, prAL, gcNo}, // [5] SUBSCRIPT FIVE..SUBSCRIPT NINE - {0x208A, 0x208C, prAL, gcSm}, // [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN - {0x208D, 0x208D, prOP, gcPs}, // SUBSCRIPT LEFT PARENTHESIS - {0x208E, 0x208E, prCL, gcPe}, // SUBSCRIPT RIGHT PARENTHESIS - {0x2090, 0x209C, prAL, gcLm}, // [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T - {0x20A0, 0x20A6, prPR, gcSc}, // [7] EURO-CURRENCY SIGN..NAIRA SIGN - {0x20A7, 0x20A7, prPO, gcSc}, // PESETA SIGN - {0x20A8, 0x20B5, prPR, gcSc}, // [14] RUPEE SIGN..CEDI SIGN - {0x20B6, 0x20B6, prPO, gcSc}, // LIVRE TOURNOIS SIGN - {0x20B7, 0x20BA, prPR, gcSc}, // [4] SPESMILO SIGN..TURKISH LIRA SIGN - {0x20BB, 0x20BB, prPO, gcSc}, // NORDIC MARK SIGN - {0x20BC, 0x20BD, prPR, gcSc}, // [2] MANAT SIGN..RUBLE SIGN - {0x20BE, 0x20BE, prPO, gcSc}, // LARI SIGN - {0x20BF, 0x20BF, prPR, gcSc}, // BITCOIN SIGN - {0x20C0, 0x20C0, prPO, gcSc}, // SOM SIGN - {0x20C1, 0x20CF, prPR, gcCn}, // [15] <reserved-20C1>..<reserved-20CF> - {0x20D0, 0x20DC, prCM, gcMn}, // [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE - {0x20DD, 0x20E0, prCM, gcMe}, // [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH - {0x20E1, 0x20E1, prCM, gcMn}, // COMBINING LEFT RIGHT ARROW ABOVE - {0x20E2, 0x20E4, prCM, gcMe}, // [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE - {0x20E5, 0x20F0, prCM, gcMn}, // [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE - {0x2100, 0x2101, prAL, gcSo}, // [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT - {0x2102, 0x2102, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL C - {0x2103, 0x2103, prPO, gcSo}, // DEGREE CELSIUS - {0x2104, 0x2104, prAL, gcSo}, // CENTRE LINE SYMBOL - {0x2105, 0x2105, prAI, gcSo}, // CARE OF - {0x2106, 0x2106, prAL, gcSo}, // CADA UNA - {0x2107, 0x2107, prAL, gcLu}, // EULER CONSTANT - {0x2108, 0x2108, prAL, gcSo}, // SCRUPLE - {0x2109, 0x2109, prPO, gcSo}, // DEGREE FAHRENHEIT - {0x210A, 0x2112, prAL, gcLC}, // [9] SCRIPT SMALL G..SCRIPT CAPITAL L - {0x2113, 0x2113, prAI, gcLl}, // SCRIPT SMALL L - {0x2114, 0x2114, prAL, gcSo}, // L B BAR SYMBOL - {0x2115, 0x2115, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL N - {0x2116, 0x2116, prPR, gcSo}, // NUMERO SIGN - {0x2117, 0x2117, prAL, gcSo}, // SOUND RECORDING COPYRIGHT - {0x2118, 0x2118, prAL, gcSm}, // SCRIPT CAPITAL P - {0x2119, 0x211D, prAL, gcLu}, // [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R - {0x211E, 0x2120, prAL, gcSo}, // [3] PRESCRIPTION TAKE..SERVICE MARK - {0x2121, 0x2122, prAI, gcSo}, // [2] TELEPHONE SIGN..TRADE MARK SIGN - {0x2123, 0x2123, prAL, gcSo}, // VERSICLE - {0x2124, 0x2124, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL Z - {0x2125, 0x2125, prAL, gcSo}, // OUNCE SIGN - {0x2126, 0x2126, prAL, gcLu}, // OHM SIGN - {0x2127, 0x2127, prAL, gcSo}, // INVERTED OHM SIGN - {0x2128, 0x2128, prAL, gcLu}, // BLACK-LETTER CAPITAL Z - {0x2129, 0x2129, prAL, gcSo}, // TURNED GREEK SMALL LETTER IOTA - {0x212A, 0x212A, prAL, gcLu}, // KELVIN SIGN - {0x212B, 0x212B, prAI, gcLu}, // ANGSTROM SIGN - {0x212C, 0x212D, prAL, gcLu}, // [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C - {0x212E, 0x212E, prAL, gcSo}, // ESTIMATED SYMBOL - {0x212F, 0x2134, prAL, gcLC}, // [6] SCRIPT SMALL E..SCRIPT SMALL O - {0x2135, 0x2138, prAL, gcLo}, // [4] ALEF SYMBOL..DALET SYMBOL - {0x2139, 0x2139, prAL, gcLl}, // INFORMATION SOURCE - {0x213A, 0x213B, prAL, gcSo}, // [2] ROTATED CAPITAL Q..FACSIMILE SIGN - {0x213C, 0x213F, prAL, gcLC}, // [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI - {0x2140, 0x2144, prAL, gcSm}, // [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y - {0x2145, 0x2149, prAL, gcLC}, // [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J - {0x214A, 0x214A, prAL, gcSo}, // PROPERTY LINE - {0x214B, 0x214B, prAL, gcSm}, // TURNED AMPERSAND - {0x214C, 0x214D, prAL, gcSo}, // [2] PER SIGN..AKTIESELSKAB - {0x214E, 0x214E, prAL, gcLl}, // TURNED SMALL F - {0x214F, 0x214F, prAL, gcSo}, // SYMBOL FOR SAMARITAN SOURCE - {0x2150, 0x2153, prAL, gcNo}, // [4] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE THIRD - {0x2154, 0x2155, prAI, gcNo}, // [2] VULGAR FRACTION TWO THIRDS..VULGAR FRACTION ONE FIFTH - {0x2156, 0x215A, prAL, gcNo}, // [5] VULGAR FRACTION TWO FIFTHS..VULGAR FRACTION FIVE SIXTHS - {0x215B, 0x215B, prAI, gcNo}, // VULGAR FRACTION ONE EIGHTH - {0x215C, 0x215D, prAL, gcNo}, // [2] VULGAR FRACTION THREE EIGHTHS..VULGAR FRACTION FIVE EIGHTHS - {0x215E, 0x215E, prAI, gcNo}, // VULGAR FRACTION SEVEN EIGHTHS - {0x215F, 0x215F, prAL, gcNo}, // FRACTION NUMERATOR ONE - {0x2160, 0x216B, prAI, gcNl}, // [12] ROMAN NUMERAL ONE..ROMAN NUMERAL TWELVE - {0x216C, 0x216F, prAL, gcNl}, // [4] ROMAN NUMERAL FIFTY..ROMAN NUMERAL ONE THOUSAND - {0x2170, 0x2179, prAI, gcNl}, // [10] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL TEN - {0x217A, 0x2182, prAL, gcNl}, // [9] SMALL ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TEN THOUSAND - {0x2183, 0x2184, prAL, gcLC}, // [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C - {0x2185, 0x2188, prAL, gcNl}, // [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND - {0x2189, 0x2189, prAI, gcNo}, // VULGAR FRACTION ZERO THIRDS - {0x218A, 0x218B, prAL, gcSo}, // [2] TURNED DIGIT TWO..TURNED DIGIT THREE - {0x2190, 0x2194, prAI, gcSm}, // [5] LEFTWARDS ARROW..LEFT RIGHT ARROW - {0x2195, 0x2199, prAI, gcSo}, // [5] UP DOWN ARROW..SOUTH WEST ARROW - {0x219A, 0x219B, prAL, gcSm}, // [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE - {0x219C, 0x219F, prAL, gcSo}, // [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW - {0x21A0, 0x21A0, prAL, gcSm}, // RIGHTWARDS TWO HEADED ARROW - {0x21A1, 0x21A2, prAL, gcSo}, // [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL - {0x21A3, 0x21A3, prAL, gcSm}, // RIGHTWARDS ARROW WITH TAIL - {0x21A4, 0x21A5, prAL, gcSo}, // [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR - {0x21A6, 0x21A6, prAL, gcSm}, // RIGHTWARDS ARROW FROM BAR - {0x21A7, 0x21AD, prAL, gcSo}, // [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW - {0x21AE, 0x21AE, prAL, gcSm}, // LEFT RIGHT ARROW WITH STROKE - {0x21AF, 0x21CD, prAL, gcSo}, // [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE - {0x21CE, 0x21CF, prAL, gcSm}, // [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE - {0x21D0, 0x21D1, prAL, gcSo}, // [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW - {0x21D2, 0x21D2, prAI, gcSm}, // RIGHTWARDS DOUBLE ARROW - {0x21D3, 0x21D3, prAL, gcSo}, // DOWNWARDS DOUBLE ARROW - {0x21D4, 0x21D4, prAI, gcSm}, // LEFT RIGHT DOUBLE ARROW - {0x21D5, 0x21F3, prAL, gcSo}, // [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW - {0x21F4, 0x21FF, prAL, gcSm}, // [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW - {0x2200, 0x2200, prAI, gcSm}, // FOR ALL - {0x2201, 0x2201, prAL, gcSm}, // COMPLEMENT - {0x2202, 0x2203, prAI, gcSm}, // [2] PARTIAL DIFFERENTIAL..THERE EXISTS - {0x2204, 0x2206, prAL, gcSm}, // [3] THERE DOES NOT EXIST..INCREMENT - {0x2207, 0x2208, prAI, gcSm}, // [2] NABLA..ELEMENT OF - {0x2209, 0x220A, prAL, gcSm}, // [2] NOT AN ELEMENT OF..SMALL ELEMENT OF - {0x220B, 0x220B, prAI, gcSm}, // CONTAINS AS MEMBER - {0x220C, 0x220E, prAL, gcSm}, // [3] DOES NOT CONTAIN AS MEMBER..END OF PROOF - {0x220F, 0x220F, prAI, gcSm}, // N-ARY PRODUCT - {0x2210, 0x2210, prAL, gcSm}, // N-ARY COPRODUCT - {0x2211, 0x2211, prAI, gcSm}, // N-ARY SUMMATION - {0x2212, 0x2213, prPR, gcSm}, // [2] MINUS SIGN..MINUS-OR-PLUS SIGN - {0x2214, 0x2214, prAL, gcSm}, // DOT PLUS - {0x2215, 0x2215, prAI, gcSm}, // DIVISION SLASH - {0x2216, 0x2219, prAL, gcSm}, // [4] SET MINUS..BULLET OPERATOR - {0x221A, 0x221A, prAI, gcSm}, // SQUARE ROOT - {0x221B, 0x221C, prAL, gcSm}, // [2] CUBE ROOT..FOURTH ROOT - {0x221D, 0x2220, prAI, gcSm}, // [4] PROPORTIONAL TO..ANGLE - {0x2221, 0x2222, prAL, gcSm}, // [2] MEASURED ANGLE..SPHERICAL ANGLE - {0x2223, 0x2223, prAI, gcSm}, // DIVIDES - {0x2224, 0x2224, prAL, gcSm}, // DOES NOT DIVIDE - {0x2225, 0x2225, prAI, gcSm}, // PARALLEL TO - {0x2226, 0x2226, prAL, gcSm}, // NOT PARALLEL TO - {0x2227, 0x222C, prAI, gcSm}, // [6] LOGICAL AND..DOUBLE INTEGRAL - {0x222D, 0x222D, prAL, gcSm}, // TRIPLE INTEGRAL - {0x222E, 0x222E, prAI, gcSm}, // CONTOUR INTEGRAL - {0x222F, 0x2233, prAL, gcSm}, // [5] SURFACE INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL - {0x2234, 0x2237, prAI, gcSm}, // [4] THEREFORE..PROPORTION - {0x2238, 0x223B, prAL, gcSm}, // [4] DOT MINUS..HOMOTHETIC - {0x223C, 0x223D, prAI, gcSm}, // [2] TILDE OPERATOR..REVERSED TILDE - {0x223E, 0x2247, prAL, gcSm}, // [10] INVERTED LAZY S..NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO - {0x2248, 0x2248, prAI, gcSm}, // ALMOST EQUAL TO - {0x2249, 0x224B, prAL, gcSm}, // [3] NOT ALMOST EQUAL TO..TRIPLE TILDE - {0x224C, 0x224C, prAI, gcSm}, // ALL EQUAL TO - {0x224D, 0x2251, prAL, gcSm}, // [5] EQUIVALENT TO..GEOMETRICALLY EQUAL TO - {0x2252, 0x2252, prAI, gcSm}, // APPROXIMATELY EQUAL TO OR THE IMAGE OF - {0x2253, 0x225F, prAL, gcSm}, // [13] IMAGE OF OR APPROXIMATELY EQUAL TO..QUESTIONED EQUAL TO - {0x2260, 0x2261, prAI, gcSm}, // [2] NOT EQUAL TO..IDENTICAL TO - {0x2262, 0x2263, prAL, gcSm}, // [2] NOT IDENTICAL TO..STRICTLY EQUIVALENT TO - {0x2264, 0x2267, prAI, gcSm}, // [4] LESS-THAN OR EQUAL TO..GREATER-THAN OVER EQUAL TO - {0x2268, 0x2269, prAL, gcSm}, // [2] LESS-THAN BUT NOT EQUAL TO..GREATER-THAN BUT NOT EQUAL TO - {0x226A, 0x226B, prAI, gcSm}, // [2] MUCH LESS-THAN..MUCH GREATER-THAN - {0x226C, 0x226D, prAL, gcSm}, // [2] BETWEEN..NOT EQUIVALENT TO - {0x226E, 0x226F, prAI, gcSm}, // [2] NOT LESS-THAN..NOT GREATER-THAN - {0x2270, 0x2281, prAL, gcSm}, // [18] NEITHER LESS-THAN NOR EQUAL TO..DOES NOT SUCCEED - {0x2282, 0x2283, prAI, gcSm}, // [2] SUBSET OF..SUPERSET OF - {0x2284, 0x2285, prAL, gcSm}, // [2] NOT A SUBSET OF..NOT A SUPERSET OF - {0x2286, 0x2287, prAI, gcSm}, // [2] SUBSET OF OR EQUAL TO..SUPERSET OF OR EQUAL TO - {0x2288, 0x2294, prAL, gcSm}, // [13] NEITHER A SUBSET OF NOR EQUAL TO..SQUARE CUP - {0x2295, 0x2295, prAI, gcSm}, // CIRCLED PLUS - {0x2296, 0x2298, prAL, gcSm}, // [3] CIRCLED MINUS..CIRCLED DIVISION SLASH - {0x2299, 0x2299, prAI, gcSm}, // CIRCLED DOT OPERATOR - {0x229A, 0x22A4, prAL, gcSm}, // [11] CIRCLED RING OPERATOR..DOWN TACK - {0x22A5, 0x22A5, prAI, gcSm}, // UP TACK - {0x22A6, 0x22BE, prAL, gcSm}, // [25] ASSERTION..RIGHT ANGLE WITH ARC - {0x22BF, 0x22BF, prAI, gcSm}, // RIGHT TRIANGLE - {0x22C0, 0x22EE, prAL, gcSm}, // [47] N-ARY LOGICAL AND..VERTICAL ELLIPSIS - {0x22EF, 0x22EF, prIN, gcSm}, // MIDLINE HORIZONTAL ELLIPSIS - {0x22F0, 0x22FF, prAL, gcSm}, // [16] UP RIGHT DIAGONAL ELLIPSIS..Z NOTATION BAG MEMBERSHIP - {0x2300, 0x2307, prAL, gcSo}, // [8] DIAMETER SIGN..WAVY LINE - {0x2308, 0x2308, prOP, gcPs}, // LEFT CEILING - {0x2309, 0x2309, prCL, gcPe}, // RIGHT CEILING - {0x230A, 0x230A, prOP, gcPs}, // LEFT FLOOR - {0x230B, 0x230B, prCL, gcPe}, // RIGHT FLOOR - {0x230C, 0x2311, prAL, gcSo}, // [6] BOTTOM RIGHT CROP..SQUARE LOZENGE - {0x2312, 0x2312, prAI, gcSo}, // ARC - {0x2313, 0x2319, prAL, gcSo}, // [7] SEGMENT..TURNED NOT SIGN - {0x231A, 0x231B, prID, gcSo}, // [2] WATCH..HOURGLASS - {0x231C, 0x231F, prAL, gcSo}, // [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER - {0x2320, 0x2321, prAL, gcSm}, // [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL - {0x2322, 0x2328, prAL, gcSo}, // [7] FROWN..KEYBOARD - {0x2329, 0x2329, prOP, gcPs}, // LEFT-POINTING ANGLE BRACKET - {0x232A, 0x232A, prCL, gcPe}, // RIGHT-POINTING ANGLE BRACKET - {0x232B, 0x237B, prAL, gcSo}, // [81] ERASE TO THE LEFT..NOT CHECK MARK - {0x237C, 0x237C, prAL, gcSm}, // RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW - {0x237D, 0x239A, prAL, gcSo}, // [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL - {0x239B, 0x23B3, prAL, gcSm}, // [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM - {0x23B4, 0x23DB, prAL, gcSo}, // [40] TOP SQUARE BRACKET..FUSE - {0x23DC, 0x23E1, prAL, gcSm}, // [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET - {0x23E2, 0x23EF, prAL, gcSo}, // [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR - {0x23F0, 0x23F3, prID, gcSo}, // [4] ALARM CLOCK..HOURGLASS WITH FLOWING SAND - {0x23F4, 0x23FF, prAL, gcSo}, // [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL - {0x2400, 0x2426, prAL, gcSo}, // [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO - {0x2440, 0x244A, prAL, gcSo}, // [11] OCR HOOK..OCR DOUBLE BACKSLASH - {0x2460, 0x249B, prAI, gcNo}, // [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP - {0x249C, 0x24E9, prAI, gcSo}, // [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z - {0x24EA, 0x24FE, prAI, gcNo}, // [21] CIRCLED DIGIT ZERO..DOUBLE CIRCLED NUMBER TEN - {0x24FF, 0x24FF, prAL, gcNo}, // NEGATIVE CIRCLED DIGIT ZERO - {0x2500, 0x254B, prAI, gcSo}, // [76] BOX DRAWINGS LIGHT HORIZONTAL..BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL - {0x254C, 0x254F, prAL, gcSo}, // [4] BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL..BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL - {0x2550, 0x2574, prAI, gcSo}, // [37] BOX DRAWINGS DOUBLE HORIZONTAL..BOX DRAWINGS LIGHT LEFT - {0x2575, 0x257F, prAL, gcSo}, // [11] BOX DRAWINGS LIGHT UP..BOX DRAWINGS HEAVY UP AND LIGHT DOWN - {0x2580, 0x258F, prAI, gcSo}, // [16] UPPER HALF BLOCK..LEFT ONE EIGHTH BLOCK - {0x2590, 0x2591, prAL, gcSo}, // [2] RIGHT HALF BLOCK..LIGHT SHADE - {0x2592, 0x2595, prAI, gcSo}, // [4] MEDIUM SHADE..RIGHT ONE EIGHTH BLOCK - {0x2596, 0x259F, prAL, gcSo}, // [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT - {0x25A0, 0x25A1, prAI, gcSo}, // [2] BLACK SQUARE..WHITE SQUARE - {0x25A2, 0x25A2, prAL, gcSo}, // WHITE SQUARE WITH ROUNDED CORNERS - {0x25A3, 0x25A9, prAI, gcSo}, // [7] WHITE SQUARE CONTAINING BLACK SMALL SQUARE..SQUARE WITH DIAGONAL CROSSHATCH FILL - {0x25AA, 0x25B1, prAL, gcSo}, // [8] BLACK SMALL SQUARE..WHITE PARALLELOGRAM - {0x25B2, 0x25B3, prAI, gcSo}, // [2] BLACK UP-POINTING TRIANGLE..WHITE UP-POINTING TRIANGLE - {0x25B4, 0x25B5, prAL, gcSo}, // [2] BLACK UP-POINTING SMALL TRIANGLE..WHITE UP-POINTING SMALL TRIANGLE - {0x25B6, 0x25B6, prAI, gcSo}, // BLACK RIGHT-POINTING TRIANGLE - {0x25B7, 0x25B7, prAI, gcSm}, // WHITE RIGHT-POINTING TRIANGLE - {0x25B8, 0x25BB, prAL, gcSo}, // [4] BLACK RIGHT-POINTING SMALL TRIANGLE..WHITE RIGHT-POINTING POINTER - {0x25BC, 0x25BD, prAI, gcSo}, // [2] BLACK DOWN-POINTING TRIANGLE..WHITE DOWN-POINTING TRIANGLE - {0x25BE, 0x25BF, prAL, gcSo}, // [2] BLACK DOWN-POINTING SMALL TRIANGLE..WHITE DOWN-POINTING SMALL TRIANGLE - {0x25C0, 0x25C0, prAI, gcSo}, // BLACK LEFT-POINTING TRIANGLE - {0x25C1, 0x25C1, prAI, gcSm}, // WHITE LEFT-POINTING TRIANGLE - {0x25C2, 0x25C5, prAL, gcSo}, // [4] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE LEFT-POINTING POINTER - {0x25C6, 0x25C8, prAI, gcSo}, // [3] BLACK DIAMOND..WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND - {0x25C9, 0x25CA, prAL, gcSo}, // [2] FISHEYE..LOZENGE - {0x25CB, 0x25CB, prAI, gcSo}, // WHITE CIRCLE - {0x25CC, 0x25CD, prAL, gcSo}, // [2] DOTTED CIRCLE..CIRCLE WITH VERTICAL FILL - {0x25CE, 0x25D1, prAI, gcSo}, // [4] BULLSEYE..CIRCLE WITH RIGHT HALF BLACK - {0x25D2, 0x25E1, prAL, gcSo}, // [16] CIRCLE WITH LOWER HALF BLACK..LOWER HALF CIRCLE - {0x25E2, 0x25E5, prAI, gcSo}, // [4] BLACK LOWER RIGHT TRIANGLE..BLACK UPPER RIGHT TRIANGLE - {0x25E6, 0x25EE, prAL, gcSo}, // [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK - {0x25EF, 0x25EF, prAI, gcSo}, // LARGE CIRCLE - {0x25F0, 0x25F7, prAL, gcSo}, // [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT - {0x25F8, 0x25FF, prAL, gcSm}, // [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE - {0x2600, 0x2603, prID, gcSo}, // [4] BLACK SUN WITH RAYS..SNOWMAN - {0x2604, 0x2604, prAL, gcSo}, // COMET - {0x2605, 0x2606, prAI, gcSo}, // [2] BLACK STAR..WHITE STAR - {0x2607, 0x2608, prAL, gcSo}, // [2] LIGHTNING..THUNDERSTORM - {0x2609, 0x2609, prAI, gcSo}, // SUN - {0x260A, 0x260D, prAL, gcSo}, // [4] ASCENDING NODE..OPPOSITION - {0x260E, 0x260F, prAI, gcSo}, // [2] BLACK TELEPHONE..WHITE TELEPHONE - {0x2610, 0x2613, prAL, gcSo}, // [4] BALLOT BOX..SALTIRE - {0x2614, 0x2615, prID, gcSo}, // [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE - {0x2616, 0x2617, prAI, gcSo}, // [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE - {0x2618, 0x2618, prID, gcSo}, // SHAMROCK - {0x2619, 0x2619, prAL, gcSo}, // REVERSED ROTATED FLORAL HEART BULLET - {0x261A, 0x261C, prID, gcSo}, // [3] BLACK LEFT POINTING INDEX..WHITE LEFT POINTING INDEX - {0x261D, 0x261D, prEB, gcSo}, // WHITE UP POINTING INDEX - {0x261E, 0x261F, prID, gcSo}, // [2] WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX - {0x2620, 0x2638, prAL, gcSo}, // [25] SKULL AND CROSSBONES..WHEEL OF DHARMA - {0x2639, 0x263B, prID, gcSo}, // [3] WHITE FROWNING FACE..BLACK SMILING FACE - {0x263C, 0x263F, prAL, gcSo}, // [4] WHITE SUN WITH RAYS..MERCURY - {0x2640, 0x2640, prAI, gcSo}, // FEMALE SIGN - {0x2641, 0x2641, prAL, gcSo}, // EARTH - {0x2642, 0x2642, prAI, gcSo}, // MALE SIGN - {0x2643, 0x265F, prAL, gcSo}, // [29] JUPITER..BLACK CHESS PAWN - {0x2660, 0x2661, prAI, gcSo}, // [2] BLACK SPADE SUIT..WHITE HEART SUIT - {0x2662, 0x2662, prAL, gcSo}, // WHITE DIAMOND SUIT - {0x2663, 0x2665, prAI, gcSo}, // [3] BLACK CLUB SUIT..BLACK HEART SUIT - {0x2666, 0x2666, prAL, gcSo}, // BLACK DIAMOND SUIT - {0x2667, 0x2667, prAI, gcSo}, // WHITE CLUB SUIT - {0x2668, 0x2668, prID, gcSo}, // HOT SPRINGS - {0x2669, 0x266A, prAI, gcSo}, // [2] QUARTER NOTE..EIGHTH NOTE - {0x266B, 0x266B, prAL, gcSo}, // BEAMED EIGHTH NOTES - {0x266C, 0x266D, prAI, gcSo}, // [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN - {0x266E, 0x266E, prAL, gcSo}, // MUSIC NATURAL SIGN - {0x266F, 0x266F, prAI, gcSm}, // MUSIC SHARP SIGN - {0x2670, 0x267E, prAL, gcSo}, // [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN - {0x267F, 0x267F, prID, gcSo}, // WHEELCHAIR SYMBOL - {0x2680, 0x269D, prAL, gcSo}, // [30] DIE FACE-1..OUTLINED WHITE STAR - {0x269E, 0x269F, prAI, gcSo}, // [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT - {0x26A0, 0x26BC, prAL, gcSo}, // [29] WARNING SIGN..SESQUIQUADRATE - {0x26BD, 0x26C8, prID, gcSo}, // [12] SOCCER BALL..THUNDER CLOUD AND RAIN - {0x26C9, 0x26CC, prAI, gcSo}, // [4] TURNED WHITE SHOGI PIECE..CROSSING LANES - {0x26CD, 0x26CD, prID, gcSo}, // DISABLED CAR - {0x26CE, 0x26CE, prAL, gcSo}, // OPHIUCHUS - {0x26CF, 0x26D1, prID, gcSo}, // [3] PICK..HELMET WITH WHITE CROSS - {0x26D2, 0x26D2, prAI, gcSo}, // CIRCLED CROSSING LANES - {0x26D3, 0x26D4, prID, gcSo}, // [2] CHAINS..NO ENTRY - {0x26D5, 0x26D7, prAI, gcSo}, // [3] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..WHITE TWO-WAY LEFT WAY TRAFFIC - {0x26D8, 0x26D9, prID, gcSo}, // [2] BLACK LEFT LANE MERGE..WHITE LEFT LANE MERGE - {0x26DA, 0x26DB, prAI, gcSo}, // [2] DRIVE SLOW SIGN..HEAVY WHITE DOWN-POINTING TRIANGLE - {0x26DC, 0x26DC, prID, gcSo}, // LEFT CLOSED ENTRY - {0x26DD, 0x26DE, prAI, gcSo}, // [2] SQUARED SALTIRE..FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE - {0x26DF, 0x26E1, prID, gcSo}, // [3] BLACK TRUCK..RESTRICTED LEFT ENTRY-2 - {0x26E2, 0x26E2, prAL, gcSo}, // ASTRONOMICAL SYMBOL FOR URANUS - {0x26E3, 0x26E3, prAI, gcSo}, // HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE - {0x26E4, 0x26E7, prAL, gcSo}, // [4] PENTAGRAM..INVERTED PENTAGRAM - {0x26E8, 0x26E9, prAI, gcSo}, // [2] BLACK CROSS ON SHIELD..SHINTO SHRINE - {0x26EA, 0x26EA, prID, gcSo}, // CHURCH - {0x26EB, 0x26F0, prAI, gcSo}, // [6] CASTLE..MOUNTAIN - {0x26F1, 0x26F5, prID, gcSo}, // [5] UMBRELLA ON GROUND..SAILBOAT - {0x26F6, 0x26F6, prAI, gcSo}, // SQUARE FOUR CORNERS - {0x26F7, 0x26F8, prID, gcSo}, // [2] SKIER..ICE SKATE - {0x26F9, 0x26F9, prEB, gcSo}, // PERSON WITH BALL - {0x26FA, 0x26FA, prID, gcSo}, // TENT - {0x26FB, 0x26FC, prAI, gcSo}, // [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL - {0x26FD, 0x26FF, prID, gcSo}, // [3] FUEL PUMP..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE - {0x2700, 0x2704, prID, gcSo}, // [5] BLACK SAFETY SCISSORS..WHITE SCISSORS - {0x2705, 0x2707, prAL, gcSo}, // [3] WHITE HEAVY CHECK MARK..TAPE DRIVE - {0x2708, 0x2709, prID, gcSo}, // [2] AIRPLANE..ENVELOPE - {0x270A, 0x270D, prEB, gcSo}, // [4] RAISED FIST..WRITING HAND - {0x270E, 0x2756, prAL, gcSo}, // [73] LOWER RIGHT PENCIL..BLACK DIAMOND MINUS WHITE X - {0x2757, 0x2757, prAI, gcSo}, // HEAVY EXCLAMATION MARK SYMBOL - {0x2758, 0x275A, prAL, gcSo}, // [3] LIGHT VERTICAL BAR..HEAVY VERTICAL BAR - {0x275B, 0x2760, prQU, gcSo}, // [6] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - {0x2761, 0x2761, prAL, gcSo}, // CURVED STEM PARAGRAPH SIGN ORNAMENT - {0x2762, 0x2763, prEX, gcSo}, // [2] HEAVY EXCLAMATION MARK ORNAMENT..HEAVY HEART EXCLAMATION MARK ORNAMENT - {0x2764, 0x2764, prID, gcSo}, // HEAVY BLACK HEART - {0x2765, 0x2767, prAL, gcSo}, // [3] ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET - {0x2768, 0x2768, prOP, gcPs}, // MEDIUM LEFT PARENTHESIS ORNAMENT - {0x2769, 0x2769, prCL, gcPe}, // MEDIUM RIGHT PARENTHESIS ORNAMENT - {0x276A, 0x276A, prOP, gcPs}, // MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - {0x276B, 0x276B, prCL, gcPe}, // MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - {0x276C, 0x276C, prOP, gcPs}, // MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x276D, 0x276D, prCL, gcPe}, // MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x276E, 0x276E, prOP, gcPs}, // HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x276F, 0x276F, prCL, gcPe}, // HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x2770, 0x2770, prOP, gcPs}, // HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x2771, 0x2771, prCL, gcPe}, // HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x2772, 0x2772, prOP, gcPs}, // LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - {0x2773, 0x2773, prCL, gcPe}, // LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - {0x2774, 0x2774, prOP, gcPs}, // MEDIUM LEFT CURLY BRACKET ORNAMENT - {0x2775, 0x2775, prCL, gcPe}, // MEDIUM RIGHT CURLY BRACKET ORNAMENT - {0x2776, 0x2793, prAI, gcNo}, // [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN - {0x2794, 0x27BF, prAL, gcSo}, // [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP - {0x27C0, 0x27C4, prAL, gcSm}, // [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET - {0x27C5, 0x27C5, prOP, gcPs}, // LEFT S-SHAPED BAG DELIMITER - {0x27C6, 0x27C6, prCL, gcPe}, // RIGHT S-SHAPED BAG DELIMITER - {0x27C7, 0x27E5, prAL, gcSm}, // [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK - {0x27E6, 0x27E6, prOP, gcPs}, // MATHEMATICAL LEFT WHITE SQUARE BRACKET - {0x27E7, 0x27E7, prCL, gcPe}, // MATHEMATICAL RIGHT WHITE SQUARE BRACKET - {0x27E8, 0x27E8, prOP, gcPs}, // MATHEMATICAL LEFT ANGLE BRACKET - {0x27E9, 0x27E9, prCL, gcPe}, // MATHEMATICAL RIGHT ANGLE BRACKET - {0x27EA, 0x27EA, prOP, gcPs}, // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - {0x27EB, 0x27EB, prCL, gcPe}, // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - {0x27EC, 0x27EC, prOP, gcPs}, // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET - {0x27ED, 0x27ED, prCL, gcPe}, // MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET - {0x27EE, 0x27EE, prOP, gcPs}, // MATHEMATICAL LEFT FLATTENED PARENTHESIS - {0x27EF, 0x27EF, prCL, gcPe}, // MATHEMATICAL RIGHT FLATTENED PARENTHESIS - {0x27F0, 0x27FF, prAL, gcSm}, // [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW - {0x2800, 0x28FF, prAL, gcSo}, // [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 - {0x2900, 0x297F, prAL, gcSm}, // [128] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..DOWN FISH TAIL - {0x2980, 0x2982, prAL, gcSm}, // [3] TRIPLE VERTICAL BAR DELIMITER..Z NOTATION TYPE COLON - {0x2983, 0x2983, prOP, gcPs}, // LEFT WHITE CURLY BRACKET - {0x2984, 0x2984, prCL, gcPe}, // RIGHT WHITE CURLY BRACKET - {0x2985, 0x2985, prOP, gcPs}, // LEFT WHITE PARENTHESIS - {0x2986, 0x2986, prCL, gcPe}, // RIGHT WHITE PARENTHESIS - {0x2987, 0x2987, prOP, gcPs}, // Z NOTATION LEFT IMAGE BRACKET - {0x2988, 0x2988, prCL, gcPe}, // Z NOTATION RIGHT IMAGE BRACKET - {0x2989, 0x2989, prOP, gcPs}, // Z NOTATION LEFT BINDING BRACKET - {0x298A, 0x298A, prCL, gcPe}, // Z NOTATION RIGHT BINDING BRACKET - {0x298B, 0x298B, prOP, gcPs}, // LEFT SQUARE BRACKET WITH UNDERBAR - {0x298C, 0x298C, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH UNDERBAR - {0x298D, 0x298D, prOP, gcPs}, // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x298E, 0x298E, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x298F, 0x298F, prOP, gcPs}, // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x2990, 0x2990, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x2991, 0x2991, prOP, gcPs}, // LEFT ANGLE BRACKET WITH DOT - {0x2992, 0x2992, prCL, gcPe}, // RIGHT ANGLE BRACKET WITH DOT - {0x2993, 0x2993, prOP, gcPs}, // LEFT ARC LESS-THAN BRACKET - {0x2994, 0x2994, prCL, gcPe}, // RIGHT ARC GREATER-THAN BRACKET - {0x2995, 0x2995, prOP, gcPs}, // DOUBLE LEFT ARC GREATER-THAN BRACKET - {0x2996, 0x2996, prCL, gcPe}, // DOUBLE RIGHT ARC LESS-THAN BRACKET - {0x2997, 0x2997, prOP, gcPs}, // LEFT BLACK TORTOISE SHELL BRACKET - {0x2998, 0x2998, prCL, gcPe}, // RIGHT BLACK TORTOISE SHELL BRACKET - {0x2999, 0x29D7, prAL, gcSm}, // [63] DOTTED FENCE..BLACK HOURGLASS - {0x29D8, 0x29D8, prOP, gcPs}, // LEFT WIGGLY FENCE - {0x29D9, 0x29D9, prCL, gcPe}, // RIGHT WIGGLY FENCE - {0x29DA, 0x29DA, prOP, gcPs}, // LEFT DOUBLE WIGGLY FENCE - {0x29DB, 0x29DB, prCL, gcPe}, // RIGHT DOUBLE WIGGLY FENCE - {0x29DC, 0x29FB, prAL, gcSm}, // [32] INCOMPLETE INFINITY..TRIPLE PLUS - {0x29FC, 0x29FC, prOP, gcPs}, // LEFT-POINTING CURVED ANGLE BRACKET - {0x29FD, 0x29FD, prCL, gcPe}, // RIGHT-POINTING CURVED ANGLE BRACKET - {0x29FE, 0x29FF, prAL, gcSm}, // [2] TINY..MINY - {0x2A00, 0x2AFF, prAL, gcSm}, // [256] N-ARY CIRCLED DOT OPERATOR..N-ARY WHITE VERTICAL BAR - {0x2B00, 0x2B2F, prAL, gcSo}, // [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE - {0x2B30, 0x2B44, prAL, gcSm}, // [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET - {0x2B45, 0x2B46, prAL, gcSo}, // [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW - {0x2B47, 0x2B4C, prAL, gcSm}, // [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR - {0x2B4D, 0x2B54, prAL, gcSo}, // [8] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..WHITE RIGHT-POINTING PENTAGON - {0x2B55, 0x2B59, prAI, gcSo}, // [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE - {0x2B5A, 0x2B73, prAL, gcSo}, // [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR - {0x2B76, 0x2B95, prAL, gcSo}, // [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW - {0x2B97, 0x2BFF, prAL, gcSo}, // [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL - {0x2C00, 0x2C5F, prAL, gcLC}, // [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI - {0x2C60, 0x2C7B, prAL, gcLC}, // [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E - {0x2C7C, 0x2C7D, prAL, gcLm}, // [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V - {0x2C7E, 0x2C7F, prAL, gcLu}, // [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL - {0x2C80, 0x2CE4, prAL, gcLC}, // [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI - {0x2CE5, 0x2CEA, prAL, gcSo}, // [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA - {0x2CEB, 0x2CEE, prAL, gcLC}, // [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA - {0x2CEF, 0x2CF1, prCM, gcMn}, // [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS - {0x2CF2, 0x2CF3, prAL, gcLC}, // [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI - {0x2CF9, 0x2CF9, prEX, gcPo}, // COPTIC OLD NUBIAN FULL STOP - {0x2CFA, 0x2CFC, prBA, gcPo}, // [3] COPTIC OLD NUBIAN DIRECT QUESTION MARK..COPTIC OLD NUBIAN VERSE DIVIDER - {0x2CFD, 0x2CFD, prAL, gcNo}, // COPTIC FRACTION ONE HALF - {0x2CFE, 0x2CFE, prEX, gcPo}, // COPTIC FULL STOP - {0x2CFF, 0x2CFF, prBA, gcPo}, // COPTIC MORPHOLOGICAL DIVIDER - {0x2D00, 0x2D25, prAL, gcLl}, // [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - {0x2D27, 0x2D27, prAL, gcLl}, // GEORGIAN SMALL LETTER YN - {0x2D2D, 0x2D2D, prAL, gcLl}, // GEORGIAN SMALL LETTER AEN - {0x2D30, 0x2D67, prAL, gcLo}, // [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO - {0x2D6F, 0x2D6F, prAL, gcLm}, // TIFINAGH MODIFIER LETTER LABIALIZATION MARK - {0x2D70, 0x2D70, prBA, gcPo}, // TIFINAGH SEPARATOR MARK - {0x2D7F, 0x2D7F, prCM, gcMn}, // TIFINAGH CONSONANT JOINER - {0x2D80, 0x2D96, prAL, gcLo}, // [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE - {0x2DA0, 0x2DA6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO - {0x2DA8, 0x2DAE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO - {0x2DB0, 0x2DB6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO - {0x2DB8, 0x2DBE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO - {0x2DC0, 0x2DC6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO - {0x2DC8, 0x2DCE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO - {0x2DD0, 0x2DD6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO - {0x2DD8, 0x2DDE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - {0x2DE0, 0x2DFF, prCM, gcMn}, // [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS - {0x2E00, 0x2E01, prQU, gcPo}, // [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER - {0x2E02, 0x2E02, prQU, gcPi}, // LEFT SUBSTITUTION BRACKET - {0x2E03, 0x2E03, prQU, gcPf}, // RIGHT SUBSTITUTION BRACKET - {0x2E04, 0x2E04, prQU, gcPi}, // LEFT DOTTED SUBSTITUTION BRACKET - {0x2E05, 0x2E05, prQU, gcPf}, // RIGHT DOTTED SUBSTITUTION BRACKET - {0x2E06, 0x2E08, prQU, gcPo}, // [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER - {0x2E09, 0x2E09, prQU, gcPi}, // LEFT TRANSPOSITION BRACKET - {0x2E0A, 0x2E0A, prQU, gcPf}, // RIGHT TRANSPOSITION BRACKET - {0x2E0B, 0x2E0B, prQU, gcPo}, // RAISED SQUARE - {0x2E0C, 0x2E0C, prQU, gcPi}, // LEFT RAISED OMISSION BRACKET - {0x2E0D, 0x2E0D, prQU, gcPf}, // RIGHT RAISED OMISSION BRACKET - {0x2E0E, 0x2E15, prBA, gcPo}, // [8] EDITORIAL CORONIS..UPWARDS ANCORA - {0x2E16, 0x2E16, prAL, gcPo}, // DOTTED RIGHT-POINTING ANGLE - {0x2E17, 0x2E17, prBA, gcPd}, // DOUBLE OBLIQUE HYPHEN - {0x2E18, 0x2E18, prOP, gcPo}, // INVERTED INTERROBANG - {0x2E19, 0x2E19, prBA, gcPo}, // PALM BRANCH - {0x2E1A, 0x2E1A, prAL, gcPd}, // HYPHEN WITH DIAERESIS - {0x2E1B, 0x2E1B, prAL, gcPo}, // TILDE WITH RING ABOVE - {0x2E1C, 0x2E1C, prQU, gcPi}, // LEFT LOW PARAPHRASE BRACKET - {0x2E1D, 0x2E1D, prQU, gcPf}, // RIGHT LOW PARAPHRASE BRACKET - {0x2E1E, 0x2E1F, prAL, gcPo}, // [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW - {0x2E20, 0x2E20, prQU, gcPi}, // LEFT VERTICAL BAR WITH QUILL - {0x2E21, 0x2E21, prQU, gcPf}, // RIGHT VERTICAL BAR WITH QUILL - {0x2E22, 0x2E22, prOP, gcPs}, // TOP LEFT HALF BRACKET - {0x2E23, 0x2E23, prCL, gcPe}, // TOP RIGHT HALF BRACKET - {0x2E24, 0x2E24, prOP, gcPs}, // BOTTOM LEFT HALF BRACKET - {0x2E25, 0x2E25, prCL, gcPe}, // BOTTOM RIGHT HALF BRACKET - {0x2E26, 0x2E26, prOP, gcPs}, // LEFT SIDEWAYS U BRACKET - {0x2E27, 0x2E27, prCL, gcPe}, // RIGHT SIDEWAYS U BRACKET - {0x2E28, 0x2E28, prOP, gcPs}, // LEFT DOUBLE PARENTHESIS - {0x2E29, 0x2E29, prCL, gcPe}, // RIGHT DOUBLE PARENTHESIS - {0x2E2A, 0x2E2D, prBA, gcPo}, // [4] TWO DOTS OVER ONE DOT PUNCTUATION..FIVE DOT MARK - {0x2E2E, 0x2E2E, prEX, gcPo}, // REVERSED QUESTION MARK - {0x2E2F, 0x2E2F, prAL, gcLm}, // VERTICAL TILDE - {0x2E30, 0x2E31, prBA, gcPo}, // [2] RING POINT..WORD SEPARATOR MIDDLE DOT - {0x2E32, 0x2E32, prAL, gcPo}, // TURNED COMMA - {0x2E33, 0x2E34, prBA, gcPo}, // [2] RAISED DOT..RAISED COMMA - {0x2E35, 0x2E39, prAL, gcPo}, // [5] TURNED SEMICOLON..TOP HALF SECTION SIGN - {0x2E3A, 0x2E3B, prB2, gcPd}, // [2] TWO-EM DASH..THREE-EM DASH - {0x2E3C, 0x2E3E, prBA, gcPo}, // [3] STENOGRAPHIC FULL STOP..WIGGLY VERTICAL LINE - {0x2E3F, 0x2E3F, prAL, gcPo}, // CAPITULUM - {0x2E40, 0x2E40, prBA, gcPd}, // DOUBLE HYPHEN - {0x2E41, 0x2E41, prBA, gcPo}, // REVERSED COMMA - {0x2E42, 0x2E42, prOP, gcPs}, // DOUBLE LOW-REVERSED-9 QUOTATION MARK - {0x2E43, 0x2E4A, prBA, gcPo}, // [8] DASH WITH LEFT UPTURN..DOTTED SOLIDUS - {0x2E4B, 0x2E4B, prAL, gcPo}, // TRIPLE DAGGER - {0x2E4C, 0x2E4C, prBA, gcPo}, // MEDIEVAL COMMA - {0x2E4D, 0x2E4D, prAL, gcPo}, // PARAGRAPHUS MARK - {0x2E4E, 0x2E4F, prBA, gcPo}, // [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER - {0x2E50, 0x2E51, prAL, gcSo}, // [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR - {0x2E52, 0x2E52, prAL, gcPo}, // TIRONIAN SIGN CAPITAL ET - {0x2E53, 0x2E54, prEX, gcPo}, // [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK - {0x2E55, 0x2E55, prOP, gcPs}, // LEFT SQUARE BRACKET WITH STROKE - {0x2E56, 0x2E56, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH STROKE - {0x2E57, 0x2E57, prOP, gcPs}, // LEFT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E58, 0x2E58, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E59, 0x2E59, prOP, gcPs}, // TOP HALF LEFT PARENTHESIS - {0x2E5A, 0x2E5A, prCL, gcPe}, // TOP HALF RIGHT PARENTHESIS - {0x2E5B, 0x2E5B, prOP, gcPs}, // BOTTOM HALF LEFT PARENTHESIS - {0x2E5C, 0x2E5C, prCL, gcPe}, // BOTTOM HALF RIGHT PARENTHESIS - {0x2E5D, 0x2E5D, prBA, gcPd}, // OBLIQUE HYPHEN - {0x2E80, 0x2E99, prID, gcSo}, // [26] CJK RADICAL REPEAT..CJK RADICAL RAP - {0x2E9B, 0x2EF3, prID, gcSo}, // [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE - {0x2F00, 0x2FD5, prID, gcSo}, // [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE - {0x2FF0, 0x2FFB, prID, gcSo}, // [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID - {0x3000, 0x3000, prBA, gcZs}, // IDEOGRAPHIC SPACE - {0x3001, 0x3002, prCL, gcPo}, // [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP - {0x3003, 0x3003, prID, gcPo}, // DITTO MARK - {0x3004, 0x3004, prID, gcSo}, // JAPANESE INDUSTRIAL STANDARD SYMBOL - {0x3005, 0x3005, prNS, gcLm}, // IDEOGRAPHIC ITERATION MARK - {0x3006, 0x3006, prID, gcLo}, // IDEOGRAPHIC CLOSING MARK - {0x3007, 0x3007, prID, gcNl}, // IDEOGRAPHIC NUMBER ZERO - {0x3008, 0x3008, prOP, gcPs}, // LEFT ANGLE BRACKET - {0x3009, 0x3009, prCL, gcPe}, // RIGHT ANGLE BRACKET - {0x300A, 0x300A, prOP, gcPs}, // LEFT DOUBLE ANGLE BRACKET - {0x300B, 0x300B, prCL, gcPe}, // RIGHT DOUBLE ANGLE BRACKET - {0x300C, 0x300C, prOP, gcPs}, // LEFT CORNER BRACKET - {0x300D, 0x300D, prCL, gcPe}, // RIGHT CORNER BRACKET - {0x300E, 0x300E, prOP, gcPs}, // LEFT WHITE CORNER BRACKET - {0x300F, 0x300F, prCL, gcPe}, // RIGHT WHITE CORNER BRACKET - {0x3010, 0x3010, prOP, gcPs}, // LEFT BLACK LENTICULAR BRACKET - {0x3011, 0x3011, prCL, gcPe}, // RIGHT BLACK LENTICULAR BRACKET - {0x3012, 0x3013, prID, gcSo}, // [2] POSTAL MARK..GETA MARK - {0x3014, 0x3014, prOP, gcPs}, // LEFT TORTOISE SHELL BRACKET - {0x3015, 0x3015, prCL, gcPe}, // RIGHT TORTOISE SHELL BRACKET - {0x3016, 0x3016, prOP, gcPs}, // LEFT WHITE LENTICULAR BRACKET - {0x3017, 0x3017, prCL, gcPe}, // RIGHT WHITE LENTICULAR BRACKET - {0x3018, 0x3018, prOP, gcPs}, // LEFT WHITE TORTOISE SHELL BRACKET - {0x3019, 0x3019, prCL, gcPe}, // RIGHT WHITE TORTOISE SHELL BRACKET - {0x301A, 0x301A, prOP, gcPs}, // LEFT WHITE SQUARE BRACKET - {0x301B, 0x301B, prCL, gcPe}, // RIGHT WHITE SQUARE BRACKET - {0x301C, 0x301C, prNS, gcPd}, // WAVE DASH - {0x301D, 0x301D, prOP, gcPs}, // REVERSED DOUBLE PRIME QUOTATION MARK - {0x301E, 0x301F, prCL, gcPe}, // [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK - {0x3020, 0x3020, prID, gcSo}, // POSTAL MARK FACE - {0x3021, 0x3029, prID, gcNl}, // [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE - {0x302A, 0x302D, prCM, gcMn}, // [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK - {0x302E, 0x302F, prCM, gcMc}, // [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK - {0x3030, 0x3030, prID, gcPd}, // WAVY DASH - {0x3031, 0x3034, prID, gcLm}, // [4] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF - {0x3035, 0x3035, prCM, gcLm}, // VERTICAL KANA REPEAT MARK LOWER HALF - {0x3036, 0x3037, prID, gcSo}, // [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL - {0x3038, 0x303A, prID, gcNl}, // [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY - {0x303B, 0x303B, prNS, gcLm}, // VERTICAL IDEOGRAPHIC ITERATION MARK - {0x303C, 0x303C, prNS, gcLo}, // MASU MARK - {0x303D, 0x303D, prID, gcPo}, // PART ALTERNATION MARK - {0x303E, 0x303F, prID, gcSo}, // [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE - {0x3041, 0x3041, prCJ, gcLo}, // HIRAGANA LETTER SMALL A - {0x3042, 0x3042, prID, gcLo}, // HIRAGANA LETTER A - {0x3043, 0x3043, prCJ, gcLo}, // HIRAGANA LETTER SMALL I - {0x3044, 0x3044, prID, gcLo}, // HIRAGANA LETTER I - {0x3045, 0x3045, prCJ, gcLo}, // HIRAGANA LETTER SMALL U - {0x3046, 0x3046, prID, gcLo}, // HIRAGANA LETTER U - {0x3047, 0x3047, prCJ, gcLo}, // HIRAGANA LETTER SMALL E - {0x3048, 0x3048, prID, gcLo}, // HIRAGANA LETTER E - {0x3049, 0x3049, prCJ, gcLo}, // HIRAGANA LETTER SMALL O - {0x304A, 0x3062, prID, gcLo}, // [25] HIRAGANA LETTER O..HIRAGANA LETTER DI - {0x3063, 0x3063, prCJ, gcLo}, // HIRAGANA LETTER SMALL TU - {0x3064, 0x3082, prID, gcLo}, // [31] HIRAGANA LETTER TU..HIRAGANA LETTER MO - {0x3083, 0x3083, prCJ, gcLo}, // HIRAGANA LETTER SMALL YA - {0x3084, 0x3084, prID, gcLo}, // HIRAGANA LETTER YA - {0x3085, 0x3085, prCJ, gcLo}, // HIRAGANA LETTER SMALL YU - {0x3086, 0x3086, prID, gcLo}, // HIRAGANA LETTER YU - {0x3087, 0x3087, prCJ, gcLo}, // HIRAGANA LETTER SMALL YO - {0x3088, 0x308D, prID, gcLo}, // [6] HIRAGANA LETTER YO..HIRAGANA LETTER RO - {0x308E, 0x308E, prCJ, gcLo}, // HIRAGANA LETTER SMALL WA - {0x308F, 0x3094, prID, gcLo}, // [6] HIRAGANA LETTER WA..HIRAGANA LETTER VU - {0x3095, 0x3096, prCJ, gcLo}, // [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE - {0x3099, 0x309A, prCM, gcMn}, // [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309B, 0x309C, prNS, gcSk}, // [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309D, 0x309E, prNS, gcLm}, // [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK - {0x309F, 0x309F, prID, gcLo}, // HIRAGANA DIGRAPH YORI - {0x30A0, 0x30A0, prNS, gcPd}, // KATAKANA-HIRAGANA DOUBLE HYPHEN - {0x30A1, 0x30A1, prCJ, gcLo}, // KATAKANA LETTER SMALL A - {0x30A2, 0x30A2, prID, gcLo}, // KATAKANA LETTER A - {0x30A3, 0x30A3, prCJ, gcLo}, // KATAKANA LETTER SMALL I - {0x30A4, 0x30A4, prID, gcLo}, // KATAKANA LETTER I - {0x30A5, 0x30A5, prCJ, gcLo}, // KATAKANA LETTER SMALL U - {0x30A6, 0x30A6, prID, gcLo}, // KATAKANA LETTER U - {0x30A7, 0x30A7, prCJ, gcLo}, // KATAKANA LETTER SMALL E - {0x30A8, 0x30A8, prID, gcLo}, // KATAKANA LETTER E - {0x30A9, 0x30A9, prCJ, gcLo}, // KATAKANA LETTER SMALL O - {0x30AA, 0x30C2, prID, gcLo}, // [25] KATAKANA LETTER O..KATAKANA LETTER DI - {0x30C3, 0x30C3, prCJ, gcLo}, // KATAKANA LETTER SMALL TU - {0x30C4, 0x30E2, prID, gcLo}, // [31] KATAKANA LETTER TU..KATAKANA LETTER MO - {0x30E3, 0x30E3, prCJ, gcLo}, // KATAKANA LETTER SMALL YA - {0x30E4, 0x30E4, prID, gcLo}, // KATAKANA LETTER YA - {0x30E5, 0x30E5, prCJ, gcLo}, // KATAKANA LETTER SMALL YU - {0x30E6, 0x30E6, prID, gcLo}, // KATAKANA LETTER YU - {0x30E7, 0x30E7, prCJ, gcLo}, // KATAKANA LETTER SMALL YO - {0x30E8, 0x30ED, prID, gcLo}, // [6] KATAKANA LETTER YO..KATAKANA LETTER RO - {0x30EE, 0x30EE, prCJ, gcLo}, // KATAKANA LETTER SMALL WA - {0x30EF, 0x30F4, prID, gcLo}, // [6] KATAKANA LETTER WA..KATAKANA LETTER VU - {0x30F5, 0x30F6, prCJ, gcLo}, // [2] KATAKANA LETTER SMALL KA..KATAKANA LETTER SMALL KE - {0x30F7, 0x30FA, prID, gcLo}, // [4] KATAKANA LETTER VA..KATAKANA LETTER VO - {0x30FB, 0x30FB, prNS, gcPo}, // KATAKANA MIDDLE DOT - {0x30FC, 0x30FC, prCJ, gcLm}, // KATAKANA-HIRAGANA PROLONGED SOUND MARK - {0x30FD, 0x30FE, prNS, gcLm}, // [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK - {0x30FF, 0x30FF, prID, gcLo}, // KATAKANA DIGRAPH KOTO - {0x3105, 0x312F, prID, gcLo}, // [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN - {0x3131, 0x318E, prID, gcLo}, // [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE - {0x3190, 0x3191, prID, gcSo}, // [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK - {0x3192, 0x3195, prID, gcNo}, // [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK - {0x3196, 0x319F, prID, gcSo}, // [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK - {0x31A0, 0x31BF, prID, gcLo}, // [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH - {0x31C0, 0x31E3, prID, gcSo}, // [36] CJK STROKE T..CJK STROKE Q - {0x31F0, 0x31FF, prCJ, gcLo}, // [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO - {0x3200, 0x321E, prID, gcSo}, // [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU - {0x3220, 0x3229, prID, gcNo}, // [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN - {0x322A, 0x3247, prID, gcSo}, // [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO - {0x3248, 0x324F, prAI, gcNo}, // [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE - {0x3250, 0x3250, prID, gcSo}, // PARTNERSHIP SIGN - {0x3251, 0x325F, prID, gcNo}, // [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE - {0x3260, 0x327F, prID, gcSo}, // [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL - {0x3280, 0x3289, prID, gcNo}, // [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN - {0x328A, 0x32B0, prID, gcSo}, // [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT - {0x32B1, 0x32BF, prID, gcNo}, // [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY - {0x32C0, 0x32FF, prID, gcSo}, // [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA - {0x3300, 0x33FF, prID, gcSo}, // [256] SQUARE APAATO..SQUARE GAL - {0x3400, 0x4DBF, prID, gcLo}, // [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF - {0x4DC0, 0x4DFF, prAL, gcSo}, // [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION - {0x4E00, 0x9FFF, prID, gcLo}, // [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF - {0xA000, 0xA014, prID, gcLo}, // [21] YI SYLLABLE IT..YI SYLLABLE E - {0xA015, 0xA015, prNS, gcLm}, // YI SYLLABLE WU - {0xA016, 0xA48C, prID, gcLo}, // [1143] YI SYLLABLE BIT..YI SYLLABLE YYR - {0xA490, 0xA4C6, prID, gcSo}, // [55] YI RADICAL QOT..YI RADICAL KE - {0xA4D0, 0xA4F7, prAL, gcLo}, // [40] LISU LETTER BA..LISU LETTER OE - {0xA4F8, 0xA4FD, prAL, gcLm}, // [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU - {0xA4FE, 0xA4FF, prBA, gcPo}, // [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP - {0xA500, 0xA60B, prAL, gcLo}, // [268] VAI SYLLABLE EE..VAI SYLLABLE NG - {0xA60C, 0xA60C, prAL, gcLm}, // VAI SYLLABLE LENGTHENER - {0xA60D, 0xA60D, prBA, gcPo}, // VAI COMMA - {0xA60E, 0xA60E, prEX, gcPo}, // VAI FULL STOP - {0xA60F, 0xA60F, prBA, gcPo}, // VAI QUESTION MARK - {0xA610, 0xA61F, prAL, gcLo}, // [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG - {0xA620, 0xA629, prNU, gcNd}, // [10] VAI DIGIT ZERO..VAI DIGIT NINE - {0xA62A, 0xA62B, prAL, gcLo}, // [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO - {0xA640, 0xA66D, prAL, gcLC}, // [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O - {0xA66E, 0xA66E, prAL, gcLo}, // CYRILLIC LETTER MULTIOCULAR O - {0xA66F, 0xA66F, prCM, gcMn}, // COMBINING CYRILLIC VZMET - {0xA670, 0xA672, prCM, gcMe}, // [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN - {0xA673, 0xA673, prAL, gcPo}, // SLAVONIC ASTERISK - {0xA674, 0xA67D, prCM, gcMn}, // [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK - {0xA67E, 0xA67E, prAL, gcPo}, // CYRILLIC KAVYKA - {0xA67F, 0xA67F, prAL, gcLm}, // CYRILLIC PAYEROK - {0xA680, 0xA69B, prAL, gcLC}, // [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O - {0xA69C, 0xA69D, prAL, gcLm}, // [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN - {0xA69E, 0xA69F, prCM, gcMn}, // [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E - {0xA6A0, 0xA6E5, prAL, gcLo}, // [70] BAMUM LETTER A..BAMUM LETTER KI - {0xA6E6, 0xA6EF, prAL, gcNl}, // [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM - {0xA6F0, 0xA6F1, prCM, gcMn}, // [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS - {0xA6F2, 0xA6F2, prAL, gcPo}, // BAMUM NJAEMLI - {0xA6F3, 0xA6F7, prBA, gcPo}, // [5] BAMUM FULL STOP..BAMUM QUESTION MARK - {0xA700, 0xA716, prAL, gcSk}, // [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR - {0xA717, 0xA71F, prAL, gcLm}, // [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK - {0xA720, 0xA721, prAL, gcSk}, // [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE - {0xA722, 0xA76F, prAL, gcLC}, // [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON - {0xA770, 0xA770, prAL, gcLm}, // MODIFIER LETTER US - {0xA771, 0xA787, prAL, gcLC}, // [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T - {0xA788, 0xA788, prAL, gcLm}, // MODIFIER LETTER LOW CIRCUMFLEX ACCENT - {0xA789, 0xA78A, prAL, gcSk}, // [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN - {0xA78B, 0xA78E, prAL, gcLC}, // [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - {0xA78F, 0xA78F, prAL, gcLo}, // LATIN LETTER SINOLOGICAL DOT - {0xA790, 0xA7CA, prAL, gcLC}, // [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY - {0xA7D0, 0xA7D1, prAL, gcLC}, // [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G - {0xA7D3, 0xA7D3, prAL, gcLl}, // LATIN SMALL LETTER DOUBLE THORN - {0xA7D5, 0xA7D9, prAL, gcLC}, // [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S - {0xA7F2, 0xA7F4, prAL, gcLm}, // [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q - {0xA7F5, 0xA7F6, prAL, gcLC}, // [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H - {0xA7F7, 0xA7F7, prAL, gcLo}, // LATIN EPIGRAPHIC LETTER SIDEWAYS I - {0xA7F8, 0xA7F9, prAL, gcLm}, // [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE - {0xA7FA, 0xA7FA, prAL, gcLl}, // LATIN LETTER SMALL CAPITAL TURNED M - {0xA7FB, 0xA7FF, prAL, gcLo}, // [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M - {0xA800, 0xA801, prAL, gcLo}, // [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I - {0xA802, 0xA802, prCM, gcMn}, // SYLOTI NAGRI SIGN DVISVARA - {0xA803, 0xA805, prAL, gcLo}, // [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O - {0xA806, 0xA806, prCM, gcMn}, // SYLOTI NAGRI SIGN HASANTA - {0xA807, 0xA80A, prAL, gcLo}, // [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO - {0xA80B, 0xA80B, prCM, gcMn}, // SYLOTI NAGRI SIGN ANUSVARA - {0xA80C, 0xA822, prAL, gcLo}, // [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO - {0xA823, 0xA824, prCM, gcMc}, // [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I - {0xA825, 0xA826, prCM, gcMn}, // [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E - {0xA827, 0xA827, prCM, gcMc}, // SYLOTI NAGRI VOWEL SIGN OO - {0xA828, 0xA82B, prAL, gcSo}, // [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 - {0xA82C, 0xA82C, prCM, gcMn}, // SYLOTI NAGRI SIGN ALTERNATE HASANTA - {0xA830, 0xA835, prAL, gcNo}, // [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS - {0xA836, 0xA837, prAL, gcSo}, // [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK - {0xA838, 0xA838, prPO, gcSc}, // NORTH INDIC RUPEE MARK - {0xA839, 0xA839, prAL, gcSo}, // NORTH INDIC QUANTITY MARK - {0xA840, 0xA873, prAL, gcLo}, // [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU - {0xA874, 0xA875, prBB, gcPo}, // [2] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA DOUBLE HEAD MARK - {0xA876, 0xA877, prEX, gcPo}, // [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD - {0xA880, 0xA881, prCM, gcMc}, // [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - {0xA882, 0xA8B3, prAL, gcLo}, // [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - {0xA8B4, 0xA8C3, prCM, gcMc}, // [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU - {0xA8C4, 0xA8C5, prCM, gcMn}, // [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - {0xA8CE, 0xA8CF, prBA, gcPo}, // [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA - {0xA8D0, 0xA8D9, prNU, gcNd}, // [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - {0xA8E0, 0xA8F1, prCM, gcMn}, // [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - {0xA8F2, 0xA8F7, prAL, gcLo}, // [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA - {0xA8F8, 0xA8FA, prAL, gcPo}, // [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET - {0xA8FB, 0xA8FB, prAL, gcLo}, // DEVANAGARI HEADSTROKE - {0xA8FC, 0xA8FC, prBB, gcPo}, // DEVANAGARI SIGN SIDDHAM - {0xA8FD, 0xA8FE, prAL, gcLo}, // [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY - {0xA8FF, 0xA8FF, prCM, gcMn}, // DEVANAGARI VOWEL SIGN AY - {0xA900, 0xA909, prNU, gcNd}, // [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE - {0xA90A, 0xA925, prAL, gcLo}, // [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO - {0xA926, 0xA92D, prCM, gcMn}, // [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - {0xA92E, 0xA92F, prBA, gcPo}, // [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA - {0xA930, 0xA946, prAL, gcLo}, // [23] REJANG LETTER KA..REJANG LETTER A - {0xA947, 0xA951, prCM, gcMn}, // [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R - {0xA952, 0xA953, prCM, gcMc}, // [2] REJANG CONSONANT SIGN H..REJANG VIRAMA - {0xA95F, 0xA95F, prAL, gcPo}, // REJANG SECTION MARK - {0xA960, 0xA97C, prJL, gcLo}, // [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH - {0xA980, 0xA982, prCM, gcMn}, // [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR - {0xA983, 0xA983, prCM, gcMc}, // JAVANESE SIGN WIGNYAN - {0xA984, 0xA9B2, prAL, gcLo}, // [47] JAVANESE LETTER A..JAVANESE LETTER HA - {0xA9B3, 0xA9B3, prCM, gcMn}, // JAVANESE SIGN CECAK TELU - {0xA9B4, 0xA9B5, prCM, gcMc}, // [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG - {0xA9B6, 0xA9B9, prCM, gcMn}, // [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT - {0xA9BA, 0xA9BB, prCM, gcMc}, // [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE - {0xA9BC, 0xA9BD, prCM, gcMn}, // [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET - {0xA9BE, 0xA9C0, prCM, gcMc}, // [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON - {0xA9C1, 0xA9C6, prAL, gcPo}, // [6] JAVANESE LEFT RERENGGAN..JAVANESE PADA WINDU - {0xA9C7, 0xA9C9, prBA, gcPo}, // [3] JAVANESE PADA PANGKAT..JAVANESE PADA LUNGSI - {0xA9CA, 0xA9CD, prAL, gcPo}, // [4] JAVANESE PADA ADEG..JAVANESE TURNED PADA PISELEH - {0xA9CF, 0xA9CF, prAL, gcLm}, // JAVANESE PANGRANGKEP - {0xA9D0, 0xA9D9, prNU, gcNd}, // [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE - {0xA9DE, 0xA9DF, prAL, gcPo}, // [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN - {0xA9E0, 0xA9E4, prSA, gcLo}, // [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA - {0xA9E5, 0xA9E5, prSA, gcMn}, // MYANMAR SIGN SHAN SAW - {0xA9E6, 0xA9E6, prSA, gcLm}, // MYANMAR MODIFIER LETTER SHAN REDUPLICATION - {0xA9E7, 0xA9EF, prSA, gcLo}, // [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA - {0xA9F0, 0xA9F9, prNU, gcNd}, // [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE - {0xA9FA, 0xA9FE, prSA, gcLo}, // [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA - {0xAA00, 0xAA28, prAL, gcLo}, // [41] CHAM LETTER A..CHAM LETTER HA - {0xAA29, 0xAA2E, prCM, gcMn}, // [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE - {0xAA2F, 0xAA30, prCM, gcMc}, // [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI - {0xAA31, 0xAA32, prCM, gcMn}, // [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE - {0xAA33, 0xAA34, prCM, gcMc}, // [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA - {0xAA35, 0xAA36, prCM, gcMn}, // [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA - {0xAA40, 0xAA42, prAL, gcLo}, // [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG - {0xAA43, 0xAA43, prCM, gcMn}, // CHAM CONSONANT SIGN FINAL NG - {0xAA44, 0xAA4B, prAL, gcLo}, // [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS - {0xAA4C, 0xAA4C, prCM, gcMn}, // CHAM CONSONANT SIGN FINAL M - {0xAA4D, 0xAA4D, prCM, gcMc}, // CHAM CONSONANT SIGN FINAL H - {0xAA50, 0xAA59, prNU, gcNd}, // [10] CHAM DIGIT ZERO..CHAM DIGIT NINE - {0xAA5C, 0xAA5C, prAL, gcPo}, // CHAM PUNCTUATION SPIRAL - {0xAA5D, 0xAA5F, prBA, gcPo}, // [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA - {0xAA60, 0xAA6F, prSA, gcLo}, // [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA - {0xAA70, 0xAA70, prSA, gcLm}, // MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION - {0xAA71, 0xAA76, prSA, gcLo}, // [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM - {0xAA77, 0xAA79, prSA, gcSo}, // [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO - {0xAA7A, 0xAA7A, prSA, gcLo}, // MYANMAR LETTER AITON RA - {0xAA7B, 0xAA7B, prSA, gcMc}, // MYANMAR SIGN PAO KAREN TONE - {0xAA7C, 0xAA7C, prSA, gcMn}, // MYANMAR SIGN TAI LAING TONE-2 - {0xAA7D, 0xAA7D, prSA, gcMc}, // MYANMAR SIGN TAI LAING TONE-5 - {0xAA7E, 0xAA7F, prSA, gcLo}, // [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA - {0xAA80, 0xAAAF, prSA, gcLo}, // [48] TAI VIET LETTER LOW KO..TAI VIET LETTER HIGH O - {0xAAB0, 0xAAB0, prSA, gcMn}, // TAI VIET MAI KANG - {0xAAB1, 0xAAB1, prSA, gcLo}, // TAI VIET VOWEL AA - {0xAAB2, 0xAAB4, prSA, gcMn}, // [3] TAI VIET VOWEL I..TAI VIET VOWEL U - {0xAAB5, 0xAAB6, prSA, gcLo}, // [2] TAI VIET VOWEL E..TAI VIET VOWEL O - {0xAAB7, 0xAAB8, prSA, gcMn}, // [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA - {0xAAB9, 0xAABD, prSA, gcLo}, // [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN - {0xAABE, 0xAABF, prSA, gcMn}, // [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK - {0xAAC0, 0xAAC0, prSA, gcLo}, // TAI VIET TONE MAI NUENG - {0xAAC1, 0xAAC1, prSA, gcMn}, // TAI VIET TONE MAI THO - {0xAAC2, 0xAAC2, prSA, gcLo}, // TAI VIET TONE MAI SONG - {0xAADB, 0xAADC, prSA, gcLo}, // [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG - {0xAADD, 0xAADD, prSA, gcLm}, // TAI VIET SYMBOL SAM - {0xAADE, 0xAADF, prSA, gcPo}, // [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI - {0xAAE0, 0xAAEA, prAL, gcLo}, // [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA - {0xAAEB, 0xAAEB, prCM, gcMc}, // MEETEI MAYEK VOWEL SIGN II - {0xAAEC, 0xAAED, prCM, gcMn}, // [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI - {0xAAEE, 0xAAEF, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU - {0xAAF0, 0xAAF1, prBA, gcPo}, // [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM - {0xAAF2, 0xAAF2, prAL, gcLo}, // MEETEI MAYEK ANJI - {0xAAF3, 0xAAF4, prAL, gcLm}, // [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK - {0xAAF5, 0xAAF5, prCM, gcMc}, // MEETEI MAYEK VOWEL SIGN VISARGA - {0xAAF6, 0xAAF6, prCM, gcMn}, // MEETEI MAYEK VIRAMA - {0xAB01, 0xAB06, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO - {0xAB09, 0xAB0E, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO - {0xAB11, 0xAB16, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO - {0xAB20, 0xAB26, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO - {0xAB28, 0xAB2E, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO - {0xAB30, 0xAB5A, prAL, gcLl}, // [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG - {0xAB5B, 0xAB5B, prAL, gcSk}, // MODIFIER BREVE WITH INVERTED BREVE - {0xAB5C, 0xAB5F, prAL, gcLm}, // [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK - {0xAB60, 0xAB68, prAL, gcLl}, // [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE - {0xAB69, 0xAB69, prAL, gcLm}, // MODIFIER LETTER SMALL TURNED W - {0xAB6A, 0xAB6B, prAL, gcSk}, // [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK - {0xAB70, 0xABBF, prAL, gcLl}, // [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA - {0xABC0, 0xABE2, prAL, gcLo}, // [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM - {0xABE3, 0xABE4, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP - {0xABE5, 0xABE5, prCM, gcMn}, // MEETEI MAYEK VOWEL SIGN ANAP - {0xABE6, 0xABE7, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP - {0xABE8, 0xABE8, prCM, gcMn}, // MEETEI MAYEK VOWEL SIGN UNAP - {0xABE9, 0xABEA, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG - {0xABEB, 0xABEB, prBA, gcPo}, // MEETEI MAYEK CHEIKHEI - {0xABEC, 0xABEC, prCM, gcMc}, // MEETEI MAYEK LUM IYEK - {0xABED, 0xABED, prCM, gcMn}, // MEETEI MAYEK APUN IYEK - {0xABF0, 0xABF9, prNU, gcNd}, // [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE - {0xAC00, 0xAC00, prH2, gcLo}, // HANGUL SYLLABLE GA - {0xAC01, 0xAC1B, prH3, gcLo}, // [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH - {0xAC1C, 0xAC1C, prH2, gcLo}, // HANGUL SYLLABLE GAE - {0xAC1D, 0xAC37, prH3, gcLo}, // [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH - {0xAC38, 0xAC38, prH2, gcLo}, // HANGUL SYLLABLE GYA - {0xAC39, 0xAC53, prH3, gcLo}, // [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH - {0xAC54, 0xAC54, prH2, gcLo}, // HANGUL SYLLABLE GYAE - {0xAC55, 0xAC6F, prH3, gcLo}, // [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH - {0xAC70, 0xAC70, prH2, gcLo}, // HANGUL SYLLABLE GEO - {0xAC71, 0xAC8B, prH3, gcLo}, // [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH - {0xAC8C, 0xAC8C, prH2, gcLo}, // HANGUL SYLLABLE GE - {0xAC8D, 0xACA7, prH3, gcLo}, // [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH - {0xACA8, 0xACA8, prH2, gcLo}, // HANGUL SYLLABLE GYEO - {0xACA9, 0xACC3, prH3, gcLo}, // [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH - {0xACC4, 0xACC4, prH2, gcLo}, // HANGUL SYLLABLE GYE - {0xACC5, 0xACDF, prH3, gcLo}, // [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH - {0xACE0, 0xACE0, prH2, gcLo}, // HANGUL SYLLABLE GO - {0xACE1, 0xACFB, prH3, gcLo}, // [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH - {0xACFC, 0xACFC, prH2, gcLo}, // HANGUL SYLLABLE GWA - {0xACFD, 0xAD17, prH3, gcLo}, // [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH - {0xAD18, 0xAD18, prH2, gcLo}, // HANGUL SYLLABLE GWAE - {0xAD19, 0xAD33, prH3, gcLo}, // [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH - {0xAD34, 0xAD34, prH2, gcLo}, // HANGUL SYLLABLE GOE - {0xAD35, 0xAD4F, prH3, gcLo}, // [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH - {0xAD50, 0xAD50, prH2, gcLo}, // HANGUL SYLLABLE GYO - {0xAD51, 0xAD6B, prH3, gcLo}, // [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH - {0xAD6C, 0xAD6C, prH2, gcLo}, // HANGUL SYLLABLE GU - {0xAD6D, 0xAD87, prH3, gcLo}, // [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH - {0xAD88, 0xAD88, prH2, gcLo}, // HANGUL SYLLABLE GWEO - {0xAD89, 0xADA3, prH3, gcLo}, // [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH - {0xADA4, 0xADA4, prH2, gcLo}, // HANGUL SYLLABLE GWE - {0xADA5, 0xADBF, prH3, gcLo}, // [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH - {0xADC0, 0xADC0, prH2, gcLo}, // HANGUL SYLLABLE GWI - {0xADC1, 0xADDB, prH3, gcLo}, // [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH - {0xADDC, 0xADDC, prH2, gcLo}, // HANGUL SYLLABLE GYU - {0xADDD, 0xADF7, prH3, gcLo}, // [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH - {0xADF8, 0xADF8, prH2, gcLo}, // HANGUL SYLLABLE GEU - {0xADF9, 0xAE13, prH3, gcLo}, // [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH - {0xAE14, 0xAE14, prH2, gcLo}, // HANGUL SYLLABLE GYI - {0xAE15, 0xAE2F, prH3, gcLo}, // [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH - {0xAE30, 0xAE30, prH2, gcLo}, // HANGUL SYLLABLE GI - {0xAE31, 0xAE4B, prH3, gcLo}, // [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH - {0xAE4C, 0xAE4C, prH2, gcLo}, // HANGUL SYLLABLE GGA - {0xAE4D, 0xAE67, prH3, gcLo}, // [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH - {0xAE68, 0xAE68, prH2, gcLo}, // HANGUL SYLLABLE GGAE - {0xAE69, 0xAE83, prH3, gcLo}, // [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH - {0xAE84, 0xAE84, prH2, gcLo}, // HANGUL SYLLABLE GGYA - {0xAE85, 0xAE9F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH - {0xAEA0, 0xAEA0, prH2, gcLo}, // HANGUL SYLLABLE GGYAE - {0xAEA1, 0xAEBB, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH - {0xAEBC, 0xAEBC, prH2, gcLo}, // HANGUL SYLLABLE GGEO - {0xAEBD, 0xAED7, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH - {0xAED8, 0xAED8, prH2, gcLo}, // HANGUL SYLLABLE GGE - {0xAED9, 0xAEF3, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH - {0xAEF4, 0xAEF4, prH2, gcLo}, // HANGUL SYLLABLE GGYEO - {0xAEF5, 0xAF0F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH - {0xAF10, 0xAF10, prH2, gcLo}, // HANGUL SYLLABLE GGYE - {0xAF11, 0xAF2B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH - {0xAF2C, 0xAF2C, prH2, gcLo}, // HANGUL SYLLABLE GGO - {0xAF2D, 0xAF47, prH3, gcLo}, // [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH - {0xAF48, 0xAF48, prH2, gcLo}, // HANGUL SYLLABLE GGWA - {0xAF49, 0xAF63, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH - {0xAF64, 0xAF64, prH2, gcLo}, // HANGUL SYLLABLE GGWAE - {0xAF65, 0xAF7F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH - {0xAF80, 0xAF80, prH2, gcLo}, // HANGUL SYLLABLE GGOE - {0xAF81, 0xAF9B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH - {0xAF9C, 0xAF9C, prH2, gcLo}, // HANGUL SYLLABLE GGYO - {0xAF9D, 0xAFB7, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH - {0xAFB8, 0xAFB8, prH2, gcLo}, // HANGUL SYLLABLE GGU - {0xAFB9, 0xAFD3, prH3, gcLo}, // [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH - {0xAFD4, 0xAFD4, prH2, gcLo}, // HANGUL SYLLABLE GGWEO - {0xAFD5, 0xAFEF, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH - {0xAFF0, 0xAFF0, prH2, gcLo}, // HANGUL SYLLABLE GGWE - {0xAFF1, 0xB00B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH - {0xB00C, 0xB00C, prH2, gcLo}, // HANGUL SYLLABLE GGWI - {0xB00D, 0xB027, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH - {0xB028, 0xB028, prH2, gcLo}, // HANGUL SYLLABLE GGYU - {0xB029, 0xB043, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH - {0xB044, 0xB044, prH2, gcLo}, // HANGUL SYLLABLE GGEU - {0xB045, 0xB05F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH - {0xB060, 0xB060, prH2, gcLo}, // HANGUL SYLLABLE GGYI - {0xB061, 0xB07B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH - {0xB07C, 0xB07C, prH2, gcLo}, // HANGUL SYLLABLE GGI - {0xB07D, 0xB097, prH3, gcLo}, // [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH - {0xB098, 0xB098, prH2, gcLo}, // HANGUL SYLLABLE NA - {0xB099, 0xB0B3, prH3, gcLo}, // [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH - {0xB0B4, 0xB0B4, prH2, gcLo}, // HANGUL SYLLABLE NAE - {0xB0B5, 0xB0CF, prH3, gcLo}, // [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH - {0xB0D0, 0xB0D0, prH2, gcLo}, // HANGUL SYLLABLE NYA - {0xB0D1, 0xB0EB, prH3, gcLo}, // [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH - {0xB0EC, 0xB0EC, prH2, gcLo}, // HANGUL SYLLABLE NYAE - {0xB0ED, 0xB107, prH3, gcLo}, // [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH - {0xB108, 0xB108, prH2, gcLo}, // HANGUL SYLLABLE NEO - {0xB109, 0xB123, prH3, gcLo}, // [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH - {0xB124, 0xB124, prH2, gcLo}, // HANGUL SYLLABLE NE - {0xB125, 0xB13F, prH3, gcLo}, // [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH - {0xB140, 0xB140, prH2, gcLo}, // HANGUL SYLLABLE NYEO - {0xB141, 0xB15B, prH3, gcLo}, // [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH - {0xB15C, 0xB15C, prH2, gcLo}, // HANGUL SYLLABLE NYE - {0xB15D, 0xB177, prH3, gcLo}, // [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH - {0xB178, 0xB178, prH2, gcLo}, // HANGUL SYLLABLE NO - {0xB179, 0xB193, prH3, gcLo}, // [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH - {0xB194, 0xB194, prH2, gcLo}, // HANGUL SYLLABLE NWA - {0xB195, 0xB1AF, prH3, gcLo}, // [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH - {0xB1B0, 0xB1B0, prH2, gcLo}, // HANGUL SYLLABLE NWAE - {0xB1B1, 0xB1CB, prH3, gcLo}, // [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH - {0xB1CC, 0xB1CC, prH2, gcLo}, // HANGUL SYLLABLE NOE - {0xB1CD, 0xB1E7, prH3, gcLo}, // [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH - {0xB1E8, 0xB1E8, prH2, gcLo}, // HANGUL SYLLABLE NYO - {0xB1E9, 0xB203, prH3, gcLo}, // [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH - {0xB204, 0xB204, prH2, gcLo}, // HANGUL SYLLABLE NU - {0xB205, 0xB21F, prH3, gcLo}, // [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH - {0xB220, 0xB220, prH2, gcLo}, // HANGUL SYLLABLE NWEO - {0xB221, 0xB23B, prH3, gcLo}, // [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH - {0xB23C, 0xB23C, prH2, gcLo}, // HANGUL SYLLABLE NWE - {0xB23D, 0xB257, prH3, gcLo}, // [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH - {0xB258, 0xB258, prH2, gcLo}, // HANGUL SYLLABLE NWI - {0xB259, 0xB273, prH3, gcLo}, // [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH - {0xB274, 0xB274, prH2, gcLo}, // HANGUL SYLLABLE NYU - {0xB275, 0xB28F, prH3, gcLo}, // [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH - {0xB290, 0xB290, prH2, gcLo}, // HANGUL SYLLABLE NEU - {0xB291, 0xB2AB, prH3, gcLo}, // [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH - {0xB2AC, 0xB2AC, prH2, gcLo}, // HANGUL SYLLABLE NYI - {0xB2AD, 0xB2C7, prH3, gcLo}, // [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH - {0xB2C8, 0xB2C8, prH2, gcLo}, // HANGUL SYLLABLE NI - {0xB2C9, 0xB2E3, prH3, gcLo}, // [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH - {0xB2E4, 0xB2E4, prH2, gcLo}, // HANGUL SYLLABLE DA - {0xB2E5, 0xB2FF, prH3, gcLo}, // [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH - {0xB300, 0xB300, prH2, gcLo}, // HANGUL SYLLABLE DAE - {0xB301, 0xB31B, prH3, gcLo}, // [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH - {0xB31C, 0xB31C, prH2, gcLo}, // HANGUL SYLLABLE DYA - {0xB31D, 0xB337, prH3, gcLo}, // [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH - {0xB338, 0xB338, prH2, gcLo}, // HANGUL SYLLABLE DYAE - {0xB339, 0xB353, prH3, gcLo}, // [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH - {0xB354, 0xB354, prH2, gcLo}, // HANGUL SYLLABLE DEO - {0xB355, 0xB36F, prH3, gcLo}, // [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH - {0xB370, 0xB370, prH2, gcLo}, // HANGUL SYLLABLE DE - {0xB371, 0xB38B, prH3, gcLo}, // [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH - {0xB38C, 0xB38C, prH2, gcLo}, // HANGUL SYLLABLE DYEO - {0xB38D, 0xB3A7, prH3, gcLo}, // [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH - {0xB3A8, 0xB3A8, prH2, gcLo}, // HANGUL SYLLABLE DYE - {0xB3A9, 0xB3C3, prH3, gcLo}, // [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH - {0xB3C4, 0xB3C4, prH2, gcLo}, // HANGUL SYLLABLE DO - {0xB3C5, 0xB3DF, prH3, gcLo}, // [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH - {0xB3E0, 0xB3E0, prH2, gcLo}, // HANGUL SYLLABLE DWA - {0xB3E1, 0xB3FB, prH3, gcLo}, // [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH - {0xB3FC, 0xB3FC, prH2, gcLo}, // HANGUL SYLLABLE DWAE - {0xB3FD, 0xB417, prH3, gcLo}, // [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH - {0xB418, 0xB418, prH2, gcLo}, // HANGUL SYLLABLE DOE - {0xB419, 0xB433, prH3, gcLo}, // [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH - {0xB434, 0xB434, prH2, gcLo}, // HANGUL SYLLABLE DYO - {0xB435, 0xB44F, prH3, gcLo}, // [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH - {0xB450, 0xB450, prH2, gcLo}, // HANGUL SYLLABLE DU - {0xB451, 0xB46B, prH3, gcLo}, // [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH - {0xB46C, 0xB46C, prH2, gcLo}, // HANGUL SYLLABLE DWEO - {0xB46D, 0xB487, prH3, gcLo}, // [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH - {0xB488, 0xB488, prH2, gcLo}, // HANGUL SYLLABLE DWE - {0xB489, 0xB4A3, prH3, gcLo}, // [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH - {0xB4A4, 0xB4A4, prH2, gcLo}, // HANGUL SYLLABLE DWI - {0xB4A5, 0xB4BF, prH3, gcLo}, // [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH - {0xB4C0, 0xB4C0, prH2, gcLo}, // HANGUL SYLLABLE DYU - {0xB4C1, 0xB4DB, prH3, gcLo}, // [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH - {0xB4DC, 0xB4DC, prH2, gcLo}, // HANGUL SYLLABLE DEU - {0xB4DD, 0xB4F7, prH3, gcLo}, // [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH - {0xB4F8, 0xB4F8, prH2, gcLo}, // HANGUL SYLLABLE DYI - {0xB4F9, 0xB513, prH3, gcLo}, // [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH - {0xB514, 0xB514, prH2, gcLo}, // HANGUL SYLLABLE DI - {0xB515, 0xB52F, prH3, gcLo}, // [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH - {0xB530, 0xB530, prH2, gcLo}, // HANGUL SYLLABLE DDA - {0xB531, 0xB54B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH - {0xB54C, 0xB54C, prH2, gcLo}, // HANGUL SYLLABLE DDAE - {0xB54D, 0xB567, prH3, gcLo}, // [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH - {0xB568, 0xB568, prH2, gcLo}, // HANGUL SYLLABLE DDYA - {0xB569, 0xB583, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH - {0xB584, 0xB584, prH2, gcLo}, // HANGUL SYLLABLE DDYAE - {0xB585, 0xB59F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH - {0xB5A0, 0xB5A0, prH2, gcLo}, // HANGUL SYLLABLE DDEO - {0xB5A1, 0xB5BB, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH - {0xB5BC, 0xB5BC, prH2, gcLo}, // HANGUL SYLLABLE DDE - {0xB5BD, 0xB5D7, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH - {0xB5D8, 0xB5D8, prH2, gcLo}, // HANGUL SYLLABLE DDYEO - {0xB5D9, 0xB5F3, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH - {0xB5F4, 0xB5F4, prH2, gcLo}, // HANGUL SYLLABLE DDYE - {0xB5F5, 0xB60F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH - {0xB610, 0xB610, prH2, gcLo}, // HANGUL SYLLABLE DDO - {0xB611, 0xB62B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH - {0xB62C, 0xB62C, prH2, gcLo}, // HANGUL SYLLABLE DDWA - {0xB62D, 0xB647, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH - {0xB648, 0xB648, prH2, gcLo}, // HANGUL SYLLABLE DDWAE - {0xB649, 0xB663, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH - {0xB664, 0xB664, prH2, gcLo}, // HANGUL SYLLABLE DDOE - {0xB665, 0xB67F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH - {0xB680, 0xB680, prH2, gcLo}, // HANGUL SYLLABLE DDYO - {0xB681, 0xB69B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH - {0xB69C, 0xB69C, prH2, gcLo}, // HANGUL SYLLABLE DDU - {0xB69D, 0xB6B7, prH3, gcLo}, // [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH - {0xB6B8, 0xB6B8, prH2, gcLo}, // HANGUL SYLLABLE DDWEO - {0xB6B9, 0xB6D3, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH - {0xB6D4, 0xB6D4, prH2, gcLo}, // HANGUL SYLLABLE DDWE - {0xB6D5, 0xB6EF, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH - {0xB6F0, 0xB6F0, prH2, gcLo}, // HANGUL SYLLABLE DDWI - {0xB6F1, 0xB70B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH - {0xB70C, 0xB70C, prH2, gcLo}, // HANGUL SYLLABLE DDYU - {0xB70D, 0xB727, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH - {0xB728, 0xB728, prH2, gcLo}, // HANGUL SYLLABLE DDEU - {0xB729, 0xB743, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH - {0xB744, 0xB744, prH2, gcLo}, // HANGUL SYLLABLE DDYI - {0xB745, 0xB75F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH - {0xB760, 0xB760, prH2, gcLo}, // HANGUL SYLLABLE DDI - {0xB761, 0xB77B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH - {0xB77C, 0xB77C, prH2, gcLo}, // HANGUL SYLLABLE RA - {0xB77D, 0xB797, prH3, gcLo}, // [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH - {0xB798, 0xB798, prH2, gcLo}, // HANGUL SYLLABLE RAE - {0xB799, 0xB7B3, prH3, gcLo}, // [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH - {0xB7B4, 0xB7B4, prH2, gcLo}, // HANGUL SYLLABLE RYA - {0xB7B5, 0xB7CF, prH3, gcLo}, // [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH - {0xB7D0, 0xB7D0, prH2, gcLo}, // HANGUL SYLLABLE RYAE - {0xB7D1, 0xB7EB, prH3, gcLo}, // [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH - {0xB7EC, 0xB7EC, prH2, gcLo}, // HANGUL SYLLABLE REO - {0xB7ED, 0xB807, prH3, gcLo}, // [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH - {0xB808, 0xB808, prH2, gcLo}, // HANGUL SYLLABLE RE - {0xB809, 0xB823, prH3, gcLo}, // [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH - {0xB824, 0xB824, prH2, gcLo}, // HANGUL SYLLABLE RYEO - {0xB825, 0xB83F, prH3, gcLo}, // [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH - {0xB840, 0xB840, prH2, gcLo}, // HANGUL SYLLABLE RYE - {0xB841, 0xB85B, prH3, gcLo}, // [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH - {0xB85C, 0xB85C, prH2, gcLo}, // HANGUL SYLLABLE RO - {0xB85D, 0xB877, prH3, gcLo}, // [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH - {0xB878, 0xB878, prH2, gcLo}, // HANGUL SYLLABLE RWA - {0xB879, 0xB893, prH3, gcLo}, // [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH - {0xB894, 0xB894, prH2, gcLo}, // HANGUL SYLLABLE RWAE - {0xB895, 0xB8AF, prH3, gcLo}, // [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH - {0xB8B0, 0xB8B0, prH2, gcLo}, // HANGUL SYLLABLE ROE - {0xB8B1, 0xB8CB, prH3, gcLo}, // [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH - {0xB8CC, 0xB8CC, prH2, gcLo}, // HANGUL SYLLABLE RYO - {0xB8CD, 0xB8E7, prH3, gcLo}, // [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH - {0xB8E8, 0xB8E8, prH2, gcLo}, // HANGUL SYLLABLE RU - {0xB8E9, 0xB903, prH3, gcLo}, // [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH - {0xB904, 0xB904, prH2, gcLo}, // HANGUL SYLLABLE RWEO - {0xB905, 0xB91F, prH3, gcLo}, // [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH - {0xB920, 0xB920, prH2, gcLo}, // HANGUL SYLLABLE RWE - {0xB921, 0xB93B, prH3, gcLo}, // [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH - {0xB93C, 0xB93C, prH2, gcLo}, // HANGUL SYLLABLE RWI - {0xB93D, 0xB957, prH3, gcLo}, // [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH - {0xB958, 0xB958, prH2, gcLo}, // HANGUL SYLLABLE RYU - {0xB959, 0xB973, prH3, gcLo}, // [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH - {0xB974, 0xB974, prH2, gcLo}, // HANGUL SYLLABLE REU - {0xB975, 0xB98F, prH3, gcLo}, // [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH - {0xB990, 0xB990, prH2, gcLo}, // HANGUL SYLLABLE RYI - {0xB991, 0xB9AB, prH3, gcLo}, // [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH - {0xB9AC, 0xB9AC, prH2, gcLo}, // HANGUL SYLLABLE RI - {0xB9AD, 0xB9C7, prH3, gcLo}, // [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH - {0xB9C8, 0xB9C8, prH2, gcLo}, // HANGUL SYLLABLE MA - {0xB9C9, 0xB9E3, prH3, gcLo}, // [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH - {0xB9E4, 0xB9E4, prH2, gcLo}, // HANGUL SYLLABLE MAE - {0xB9E5, 0xB9FF, prH3, gcLo}, // [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH - {0xBA00, 0xBA00, prH2, gcLo}, // HANGUL SYLLABLE MYA - {0xBA01, 0xBA1B, prH3, gcLo}, // [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH - {0xBA1C, 0xBA1C, prH2, gcLo}, // HANGUL SYLLABLE MYAE - {0xBA1D, 0xBA37, prH3, gcLo}, // [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH - {0xBA38, 0xBA38, prH2, gcLo}, // HANGUL SYLLABLE MEO - {0xBA39, 0xBA53, prH3, gcLo}, // [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH - {0xBA54, 0xBA54, prH2, gcLo}, // HANGUL SYLLABLE ME - {0xBA55, 0xBA6F, prH3, gcLo}, // [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH - {0xBA70, 0xBA70, prH2, gcLo}, // HANGUL SYLLABLE MYEO - {0xBA71, 0xBA8B, prH3, gcLo}, // [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH - {0xBA8C, 0xBA8C, prH2, gcLo}, // HANGUL SYLLABLE MYE - {0xBA8D, 0xBAA7, prH3, gcLo}, // [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH - {0xBAA8, 0xBAA8, prH2, gcLo}, // HANGUL SYLLABLE MO - {0xBAA9, 0xBAC3, prH3, gcLo}, // [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH - {0xBAC4, 0xBAC4, prH2, gcLo}, // HANGUL SYLLABLE MWA - {0xBAC5, 0xBADF, prH3, gcLo}, // [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH - {0xBAE0, 0xBAE0, prH2, gcLo}, // HANGUL SYLLABLE MWAE - {0xBAE1, 0xBAFB, prH3, gcLo}, // [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH - {0xBAFC, 0xBAFC, prH2, gcLo}, // HANGUL SYLLABLE MOE - {0xBAFD, 0xBB17, prH3, gcLo}, // [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH - {0xBB18, 0xBB18, prH2, gcLo}, // HANGUL SYLLABLE MYO - {0xBB19, 0xBB33, prH3, gcLo}, // [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH - {0xBB34, 0xBB34, prH2, gcLo}, // HANGUL SYLLABLE MU - {0xBB35, 0xBB4F, prH3, gcLo}, // [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH - {0xBB50, 0xBB50, prH2, gcLo}, // HANGUL SYLLABLE MWEO - {0xBB51, 0xBB6B, prH3, gcLo}, // [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH - {0xBB6C, 0xBB6C, prH2, gcLo}, // HANGUL SYLLABLE MWE - {0xBB6D, 0xBB87, prH3, gcLo}, // [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH - {0xBB88, 0xBB88, prH2, gcLo}, // HANGUL SYLLABLE MWI - {0xBB89, 0xBBA3, prH3, gcLo}, // [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH - {0xBBA4, 0xBBA4, prH2, gcLo}, // HANGUL SYLLABLE MYU - {0xBBA5, 0xBBBF, prH3, gcLo}, // [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH - {0xBBC0, 0xBBC0, prH2, gcLo}, // HANGUL SYLLABLE MEU - {0xBBC1, 0xBBDB, prH3, gcLo}, // [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH - {0xBBDC, 0xBBDC, prH2, gcLo}, // HANGUL SYLLABLE MYI - {0xBBDD, 0xBBF7, prH3, gcLo}, // [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH - {0xBBF8, 0xBBF8, prH2, gcLo}, // HANGUL SYLLABLE MI - {0xBBF9, 0xBC13, prH3, gcLo}, // [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH - {0xBC14, 0xBC14, prH2, gcLo}, // HANGUL SYLLABLE BA - {0xBC15, 0xBC2F, prH3, gcLo}, // [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH - {0xBC30, 0xBC30, prH2, gcLo}, // HANGUL SYLLABLE BAE - {0xBC31, 0xBC4B, prH3, gcLo}, // [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH - {0xBC4C, 0xBC4C, prH2, gcLo}, // HANGUL SYLLABLE BYA - {0xBC4D, 0xBC67, prH3, gcLo}, // [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH - {0xBC68, 0xBC68, prH2, gcLo}, // HANGUL SYLLABLE BYAE - {0xBC69, 0xBC83, prH3, gcLo}, // [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH - {0xBC84, 0xBC84, prH2, gcLo}, // HANGUL SYLLABLE BEO - {0xBC85, 0xBC9F, prH3, gcLo}, // [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH - {0xBCA0, 0xBCA0, prH2, gcLo}, // HANGUL SYLLABLE BE - {0xBCA1, 0xBCBB, prH3, gcLo}, // [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH - {0xBCBC, 0xBCBC, prH2, gcLo}, // HANGUL SYLLABLE BYEO - {0xBCBD, 0xBCD7, prH3, gcLo}, // [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH - {0xBCD8, 0xBCD8, prH2, gcLo}, // HANGUL SYLLABLE BYE - {0xBCD9, 0xBCF3, prH3, gcLo}, // [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH - {0xBCF4, 0xBCF4, prH2, gcLo}, // HANGUL SYLLABLE BO - {0xBCF5, 0xBD0F, prH3, gcLo}, // [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH - {0xBD10, 0xBD10, prH2, gcLo}, // HANGUL SYLLABLE BWA - {0xBD11, 0xBD2B, prH3, gcLo}, // [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH - {0xBD2C, 0xBD2C, prH2, gcLo}, // HANGUL SYLLABLE BWAE - {0xBD2D, 0xBD47, prH3, gcLo}, // [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH - {0xBD48, 0xBD48, prH2, gcLo}, // HANGUL SYLLABLE BOE - {0xBD49, 0xBD63, prH3, gcLo}, // [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH - {0xBD64, 0xBD64, prH2, gcLo}, // HANGUL SYLLABLE BYO - {0xBD65, 0xBD7F, prH3, gcLo}, // [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH - {0xBD80, 0xBD80, prH2, gcLo}, // HANGUL SYLLABLE BU - {0xBD81, 0xBD9B, prH3, gcLo}, // [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH - {0xBD9C, 0xBD9C, prH2, gcLo}, // HANGUL SYLLABLE BWEO - {0xBD9D, 0xBDB7, prH3, gcLo}, // [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH - {0xBDB8, 0xBDB8, prH2, gcLo}, // HANGUL SYLLABLE BWE - {0xBDB9, 0xBDD3, prH3, gcLo}, // [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH - {0xBDD4, 0xBDD4, prH2, gcLo}, // HANGUL SYLLABLE BWI - {0xBDD5, 0xBDEF, prH3, gcLo}, // [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH - {0xBDF0, 0xBDF0, prH2, gcLo}, // HANGUL SYLLABLE BYU - {0xBDF1, 0xBE0B, prH3, gcLo}, // [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH - {0xBE0C, 0xBE0C, prH2, gcLo}, // HANGUL SYLLABLE BEU - {0xBE0D, 0xBE27, prH3, gcLo}, // [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH - {0xBE28, 0xBE28, prH2, gcLo}, // HANGUL SYLLABLE BYI - {0xBE29, 0xBE43, prH3, gcLo}, // [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH - {0xBE44, 0xBE44, prH2, gcLo}, // HANGUL SYLLABLE BI - {0xBE45, 0xBE5F, prH3, gcLo}, // [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH - {0xBE60, 0xBE60, prH2, gcLo}, // HANGUL SYLLABLE BBA - {0xBE61, 0xBE7B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH - {0xBE7C, 0xBE7C, prH2, gcLo}, // HANGUL SYLLABLE BBAE - {0xBE7D, 0xBE97, prH3, gcLo}, // [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH - {0xBE98, 0xBE98, prH2, gcLo}, // HANGUL SYLLABLE BBYA - {0xBE99, 0xBEB3, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH - {0xBEB4, 0xBEB4, prH2, gcLo}, // HANGUL SYLLABLE BBYAE - {0xBEB5, 0xBECF, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH - {0xBED0, 0xBED0, prH2, gcLo}, // HANGUL SYLLABLE BBEO - {0xBED1, 0xBEEB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH - {0xBEEC, 0xBEEC, prH2, gcLo}, // HANGUL SYLLABLE BBE - {0xBEED, 0xBF07, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH - {0xBF08, 0xBF08, prH2, gcLo}, // HANGUL SYLLABLE BBYEO - {0xBF09, 0xBF23, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH - {0xBF24, 0xBF24, prH2, gcLo}, // HANGUL SYLLABLE BBYE - {0xBF25, 0xBF3F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH - {0xBF40, 0xBF40, prH2, gcLo}, // HANGUL SYLLABLE BBO - {0xBF41, 0xBF5B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH - {0xBF5C, 0xBF5C, prH2, gcLo}, // HANGUL SYLLABLE BBWA - {0xBF5D, 0xBF77, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH - {0xBF78, 0xBF78, prH2, gcLo}, // HANGUL SYLLABLE BBWAE - {0xBF79, 0xBF93, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH - {0xBF94, 0xBF94, prH2, gcLo}, // HANGUL SYLLABLE BBOE - {0xBF95, 0xBFAF, prH3, gcLo}, // [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH - {0xBFB0, 0xBFB0, prH2, gcLo}, // HANGUL SYLLABLE BBYO - {0xBFB1, 0xBFCB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH - {0xBFCC, 0xBFCC, prH2, gcLo}, // HANGUL SYLLABLE BBU - {0xBFCD, 0xBFE7, prH3, gcLo}, // [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH - {0xBFE8, 0xBFE8, prH2, gcLo}, // HANGUL SYLLABLE BBWEO - {0xBFE9, 0xC003, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH - {0xC004, 0xC004, prH2, gcLo}, // HANGUL SYLLABLE BBWE - {0xC005, 0xC01F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH - {0xC020, 0xC020, prH2, gcLo}, // HANGUL SYLLABLE BBWI - {0xC021, 0xC03B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH - {0xC03C, 0xC03C, prH2, gcLo}, // HANGUL SYLLABLE BBYU - {0xC03D, 0xC057, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH - {0xC058, 0xC058, prH2, gcLo}, // HANGUL SYLLABLE BBEU - {0xC059, 0xC073, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH - {0xC074, 0xC074, prH2, gcLo}, // HANGUL SYLLABLE BBYI - {0xC075, 0xC08F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH - {0xC090, 0xC090, prH2, gcLo}, // HANGUL SYLLABLE BBI - {0xC091, 0xC0AB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH - {0xC0AC, 0xC0AC, prH2, gcLo}, // HANGUL SYLLABLE SA - {0xC0AD, 0xC0C7, prH3, gcLo}, // [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH - {0xC0C8, 0xC0C8, prH2, gcLo}, // HANGUL SYLLABLE SAE - {0xC0C9, 0xC0E3, prH3, gcLo}, // [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH - {0xC0E4, 0xC0E4, prH2, gcLo}, // HANGUL SYLLABLE SYA - {0xC0E5, 0xC0FF, prH3, gcLo}, // [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH - {0xC100, 0xC100, prH2, gcLo}, // HANGUL SYLLABLE SYAE - {0xC101, 0xC11B, prH3, gcLo}, // [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH - {0xC11C, 0xC11C, prH2, gcLo}, // HANGUL SYLLABLE SEO - {0xC11D, 0xC137, prH3, gcLo}, // [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH - {0xC138, 0xC138, prH2, gcLo}, // HANGUL SYLLABLE SE - {0xC139, 0xC153, prH3, gcLo}, // [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH - {0xC154, 0xC154, prH2, gcLo}, // HANGUL SYLLABLE SYEO - {0xC155, 0xC16F, prH3, gcLo}, // [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH - {0xC170, 0xC170, prH2, gcLo}, // HANGUL SYLLABLE SYE - {0xC171, 0xC18B, prH3, gcLo}, // [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH - {0xC18C, 0xC18C, prH2, gcLo}, // HANGUL SYLLABLE SO - {0xC18D, 0xC1A7, prH3, gcLo}, // [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH - {0xC1A8, 0xC1A8, prH2, gcLo}, // HANGUL SYLLABLE SWA - {0xC1A9, 0xC1C3, prH3, gcLo}, // [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH - {0xC1C4, 0xC1C4, prH2, gcLo}, // HANGUL SYLLABLE SWAE - {0xC1C5, 0xC1DF, prH3, gcLo}, // [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH - {0xC1E0, 0xC1E0, prH2, gcLo}, // HANGUL SYLLABLE SOE - {0xC1E1, 0xC1FB, prH3, gcLo}, // [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH - {0xC1FC, 0xC1FC, prH2, gcLo}, // HANGUL SYLLABLE SYO - {0xC1FD, 0xC217, prH3, gcLo}, // [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH - {0xC218, 0xC218, prH2, gcLo}, // HANGUL SYLLABLE SU - {0xC219, 0xC233, prH3, gcLo}, // [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH - {0xC234, 0xC234, prH2, gcLo}, // HANGUL SYLLABLE SWEO - {0xC235, 0xC24F, prH3, gcLo}, // [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH - {0xC250, 0xC250, prH2, gcLo}, // HANGUL SYLLABLE SWE - {0xC251, 0xC26B, prH3, gcLo}, // [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH - {0xC26C, 0xC26C, prH2, gcLo}, // HANGUL SYLLABLE SWI - {0xC26D, 0xC287, prH3, gcLo}, // [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH - {0xC288, 0xC288, prH2, gcLo}, // HANGUL SYLLABLE SYU - {0xC289, 0xC2A3, prH3, gcLo}, // [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH - {0xC2A4, 0xC2A4, prH2, gcLo}, // HANGUL SYLLABLE SEU - {0xC2A5, 0xC2BF, prH3, gcLo}, // [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH - {0xC2C0, 0xC2C0, prH2, gcLo}, // HANGUL SYLLABLE SYI - {0xC2C1, 0xC2DB, prH3, gcLo}, // [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH - {0xC2DC, 0xC2DC, prH2, gcLo}, // HANGUL SYLLABLE SI - {0xC2DD, 0xC2F7, prH3, gcLo}, // [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH - {0xC2F8, 0xC2F8, prH2, gcLo}, // HANGUL SYLLABLE SSA - {0xC2F9, 0xC313, prH3, gcLo}, // [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH - {0xC314, 0xC314, prH2, gcLo}, // HANGUL SYLLABLE SSAE - {0xC315, 0xC32F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH - {0xC330, 0xC330, prH2, gcLo}, // HANGUL SYLLABLE SSYA - {0xC331, 0xC34B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH - {0xC34C, 0xC34C, prH2, gcLo}, // HANGUL SYLLABLE SSYAE - {0xC34D, 0xC367, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH - {0xC368, 0xC368, prH2, gcLo}, // HANGUL SYLLABLE SSEO - {0xC369, 0xC383, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH - {0xC384, 0xC384, prH2, gcLo}, // HANGUL SYLLABLE SSE - {0xC385, 0xC39F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH - {0xC3A0, 0xC3A0, prH2, gcLo}, // HANGUL SYLLABLE SSYEO - {0xC3A1, 0xC3BB, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH - {0xC3BC, 0xC3BC, prH2, gcLo}, // HANGUL SYLLABLE SSYE - {0xC3BD, 0xC3D7, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH - {0xC3D8, 0xC3D8, prH2, gcLo}, // HANGUL SYLLABLE SSO - {0xC3D9, 0xC3F3, prH3, gcLo}, // [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH - {0xC3F4, 0xC3F4, prH2, gcLo}, // HANGUL SYLLABLE SSWA - {0xC3F5, 0xC40F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH - {0xC410, 0xC410, prH2, gcLo}, // HANGUL SYLLABLE SSWAE - {0xC411, 0xC42B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH - {0xC42C, 0xC42C, prH2, gcLo}, // HANGUL SYLLABLE SSOE - {0xC42D, 0xC447, prH3, gcLo}, // [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH - {0xC448, 0xC448, prH2, gcLo}, // HANGUL SYLLABLE SSYO - {0xC449, 0xC463, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH - {0xC464, 0xC464, prH2, gcLo}, // HANGUL SYLLABLE SSU - {0xC465, 0xC47F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH - {0xC480, 0xC480, prH2, gcLo}, // HANGUL SYLLABLE SSWEO - {0xC481, 0xC49B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH - {0xC49C, 0xC49C, prH2, gcLo}, // HANGUL SYLLABLE SSWE - {0xC49D, 0xC4B7, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH - {0xC4B8, 0xC4B8, prH2, gcLo}, // HANGUL SYLLABLE SSWI - {0xC4B9, 0xC4D3, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH - {0xC4D4, 0xC4D4, prH2, gcLo}, // HANGUL SYLLABLE SSYU - {0xC4D5, 0xC4EF, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH - {0xC4F0, 0xC4F0, prH2, gcLo}, // HANGUL SYLLABLE SSEU - {0xC4F1, 0xC50B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH - {0xC50C, 0xC50C, prH2, gcLo}, // HANGUL SYLLABLE SSYI - {0xC50D, 0xC527, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH - {0xC528, 0xC528, prH2, gcLo}, // HANGUL SYLLABLE SSI - {0xC529, 0xC543, prH3, gcLo}, // [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH - {0xC544, 0xC544, prH2, gcLo}, // HANGUL SYLLABLE A - {0xC545, 0xC55F, prH3, gcLo}, // [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH - {0xC560, 0xC560, prH2, gcLo}, // HANGUL SYLLABLE AE - {0xC561, 0xC57B, prH3, gcLo}, // [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH - {0xC57C, 0xC57C, prH2, gcLo}, // HANGUL SYLLABLE YA - {0xC57D, 0xC597, prH3, gcLo}, // [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH - {0xC598, 0xC598, prH2, gcLo}, // HANGUL SYLLABLE YAE - {0xC599, 0xC5B3, prH3, gcLo}, // [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH - {0xC5B4, 0xC5B4, prH2, gcLo}, // HANGUL SYLLABLE EO - {0xC5B5, 0xC5CF, prH3, gcLo}, // [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH - {0xC5D0, 0xC5D0, prH2, gcLo}, // HANGUL SYLLABLE E - {0xC5D1, 0xC5EB, prH3, gcLo}, // [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH - {0xC5EC, 0xC5EC, prH2, gcLo}, // HANGUL SYLLABLE YEO - {0xC5ED, 0xC607, prH3, gcLo}, // [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH - {0xC608, 0xC608, prH2, gcLo}, // HANGUL SYLLABLE YE - {0xC609, 0xC623, prH3, gcLo}, // [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH - {0xC624, 0xC624, prH2, gcLo}, // HANGUL SYLLABLE O - {0xC625, 0xC63F, prH3, gcLo}, // [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH - {0xC640, 0xC640, prH2, gcLo}, // HANGUL SYLLABLE WA - {0xC641, 0xC65B, prH3, gcLo}, // [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH - {0xC65C, 0xC65C, prH2, gcLo}, // HANGUL SYLLABLE WAE - {0xC65D, 0xC677, prH3, gcLo}, // [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH - {0xC678, 0xC678, prH2, gcLo}, // HANGUL SYLLABLE OE - {0xC679, 0xC693, prH3, gcLo}, // [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH - {0xC694, 0xC694, prH2, gcLo}, // HANGUL SYLLABLE YO - {0xC695, 0xC6AF, prH3, gcLo}, // [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH - {0xC6B0, 0xC6B0, prH2, gcLo}, // HANGUL SYLLABLE U - {0xC6B1, 0xC6CB, prH3, gcLo}, // [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH - {0xC6CC, 0xC6CC, prH2, gcLo}, // HANGUL SYLLABLE WEO - {0xC6CD, 0xC6E7, prH3, gcLo}, // [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH - {0xC6E8, 0xC6E8, prH2, gcLo}, // HANGUL SYLLABLE WE - {0xC6E9, 0xC703, prH3, gcLo}, // [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH - {0xC704, 0xC704, prH2, gcLo}, // HANGUL SYLLABLE WI - {0xC705, 0xC71F, prH3, gcLo}, // [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH - {0xC720, 0xC720, prH2, gcLo}, // HANGUL SYLLABLE YU - {0xC721, 0xC73B, prH3, gcLo}, // [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH - {0xC73C, 0xC73C, prH2, gcLo}, // HANGUL SYLLABLE EU - {0xC73D, 0xC757, prH3, gcLo}, // [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH - {0xC758, 0xC758, prH2, gcLo}, // HANGUL SYLLABLE YI - {0xC759, 0xC773, prH3, gcLo}, // [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH - {0xC774, 0xC774, prH2, gcLo}, // HANGUL SYLLABLE I - {0xC775, 0xC78F, prH3, gcLo}, // [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH - {0xC790, 0xC790, prH2, gcLo}, // HANGUL SYLLABLE JA - {0xC791, 0xC7AB, prH3, gcLo}, // [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH - {0xC7AC, 0xC7AC, prH2, gcLo}, // HANGUL SYLLABLE JAE - {0xC7AD, 0xC7C7, prH3, gcLo}, // [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH - {0xC7C8, 0xC7C8, prH2, gcLo}, // HANGUL SYLLABLE JYA - {0xC7C9, 0xC7E3, prH3, gcLo}, // [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH - {0xC7E4, 0xC7E4, prH2, gcLo}, // HANGUL SYLLABLE JYAE - {0xC7E5, 0xC7FF, prH3, gcLo}, // [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH - {0xC800, 0xC800, prH2, gcLo}, // HANGUL SYLLABLE JEO - {0xC801, 0xC81B, prH3, gcLo}, // [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH - {0xC81C, 0xC81C, prH2, gcLo}, // HANGUL SYLLABLE JE - {0xC81D, 0xC837, prH3, gcLo}, // [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH - {0xC838, 0xC838, prH2, gcLo}, // HANGUL SYLLABLE JYEO - {0xC839, 0xC853, prH3, gcLo}, // [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH - {0xC854, 0xC854, prH2, gcLo}, // HANGUL SYLLABLE JYE - {0xC855, 0xC86F, prH3, gcLo}, // [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH - {0xC870, 0xC870, prH2, gcLo}, // HANGUL SYLLABLE JO - {0xC871, 0xC88B, prH3, gcLo}, // [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH - {0xC88C, 0xC88C, prH2, gcLo}, // HANGUL SYLLABLE JWA - {0xC88D, 0xC8A7, prH3, gcLo}, // [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH - {0xC8A8, 0xC8A8, prH2, gcLo}, // HANGUL SYLLABLE JWAE - {0xC8A9, 0xC8C3, prH3, gcLo}, // [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH - {0xC8C4, 0xC8C4, prH2, gcLo}, // HANGUL SYLLABLE JOE - {0xC8C5, 0xC8DF, prH3, gcLo}, // [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH - {0xC8E0, 0xC8E0, prH2, gcLo}, // HANGUL SYLLABLE JYO - {0xC8E1, 0xC8FB, prH3, gcLo}, // [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH - {0xC8FC, 0xC8FC, prH2, gcLo}, // HANGUL SYLLABLE JU - {0xC8FD, 0xC917, prH3, gcLo}, // [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH - {0xC918, 0xC918, prH2, gcLo}, // HANGUL SYLLABLE JWEO - {0xC919, 0xC933, prH3, gcLo}, // [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH - {0xC934, 0xC934, prH2, gcLo}, // HANGUL SYLLABLE JWE - {0xC935, 0xC94F, prH3, gcLo}, // [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH - {0xC950, 0xC950, prH2, gcLo}, // HANGUL SYLLABLE JWI - {0xC951, 0xC96B, prH3, gcLo}, // [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH - {0xC96C, 0xC96C, prH2, gcLo}, // HANGUL SYLLABLE JYU - {0xC96D, 0xC987, prH3, gcLo}, // [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH - {0xC988, 0xC988, prH2, gcLo}, // HANGUL SYLLABLE JEU - {0xC989, 0xC9A3, prH3, gcLo}, // [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH - {0xC9A4, 0xC9A4, prH2, gcLo}, // HANGUL SYLLABLE JYI - {0xC9A5, 0xC9BF, prH3, gcLo}, // [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH - {0xC9C0, 0xC9C0, prH2, gcLo}, // HANGUL SYLLABLE JI - {0xC9C1, 0xC9DB, prH3, gcLo}, // [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH - {0xC9DC, 0xC9DC, prH2, gcLo}, // HANGUL SYLLABLE JJA - {0xC9DD, 0xC9F7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH - {0xC9F8, 0xC9F8, prH2, gcLo}, // HANGUL SYLLABLE JJAE - {0xC9F9, 0xCA13, prH3, gcLo}, // [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH - {0xCA14, 0xCA14, prH2, gcLo}, // HANGUL SYLLABLE JJYA - {0xCA15, 0xCA2F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH - {0xCA30, 0xCA30, prH2, gcLo}, // HANGUL SYLLABLE JJYAE - {0xCA31, 0xCA4B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH - {0xCA4C, 0xCA4C, prH2, gcLo}, // HANGUL SYLLABLE JJEO - {0xCA4D, 0xCA67, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH - {0xCA68, 0xCA68, prH2, gcLo}, // HANGUL SYLLABLE JJE - {0xCA69, 0xCA83, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH - {0xCA84, 0xCA84, prH2, gcLo}, // HANGUL SYLLABLE JJYEO - {0xCA85, 0xCA9F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH - {0xCAA0, 0xCAA0, prH2, gcLo}, // HANGUL SYLLABLE JJYE - {0xCAA1, 0xCABB, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH - {0xCABC, 0xCABC, prH2, gcLo}, // HANGUL SYLLABLE JJO - {0xCABD, 0xCAD7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH - {0xCAD8, 0xCAD8, prH2, gcLo}, // HANGUL SYLLABLE JJWA - {0xCAD9, 0xCAF3, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH - {0xCAF4, 0xCAF4, prH2, gcLo}, // HANGUL SYLLABLE JJWAE - {0xCAF5, 0xCB0F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH - {0xCB10, 0xCB10, prH2, gcLo}, // HANGUL SYLLABLE JJOE - {0xCB11, 0xCB2B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH - {0xCB2C, 0xCB2C, prH2, gcLo}, // HANGUL SYLLABLE JJYO - {0xCB2D, 0xCB47, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH - {0xCB48, 0xCB48, prH2, gcLo}, // HANGUL SYLLABLE JJU - {0xCB49, 0xCB63, prH3, gcLo}, // [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH - {0xCB64, 0xCB64, prH2, gcLo}, // HANGUL SYLLABLE JJWEO - {0xCB65, 0xCB7F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH - {0xCB80, 0xCB80, prH2, gcLo}, // HANGUL SYLLABLE JJWE - {0xCB81, 0xCB9B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH - {0xCB9C, 0xCB9C, prH2, gcLo}, // HANGUL SYLLABLE JJWI - {0xCB9D, 0xCBB7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH - {0xCBB8, 0xCBB8, prH2, gcLo}, // HANGUL SYLLABLE JJYU - {0xCBB9, 0xCBD3, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH - {0xCBD4, 0xCBD4, prH2, gcLo}, // HANGUL SYLLABLE JJEU - {0xCBD5, 0xCBEF, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH - {0xCBF0, 0xCBF0, prH2, gcLo}, // HANGUL SYLLABLE JJYI - {0xCBF1, 0xCC0B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH - {0xCC0C, 0xCC0C, prH2, gcLo}, // HANGUL SYLLABLE JJI - {0xCC0D, 0xCC27, prH3, gcLo}, // [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH - {0xCC28, 0xCC28, prH2, gcLo}, // HANGUL SYLLABLE CA - {0xCC29, 0xCC43, prH3, gcLo}, // [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH - {0xCC44, 0xCC44, prH2, gcLo}, // HANGUL SYLLABLE CAE - {0xCC45, 0xCC5F, prH3, gcLo}, // [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH - {0xCC60, 0xCC60, prH2, gcLo}, // HANGUL SYLLABLE CYA - {0xCC61, 0xCC7B, prH3, gcLo}, // [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH - {0xCC7C, 0xCC7C, prH2, gcLo}, // HANGUL SYLLABLE CYAE - {0xCC7D, 0xCC97, prH3, gcLo}, // [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH - {0xCC98, 0xCC98, prH2, gcLo}, // HANGUL SYLLABLE CEO - {0xCC99, 0xCCB3, prH3, gcLo}, // [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH - {0xCCB4, 0xCCB4, prH2, gcLo}, // HANGUL SYLLABLE CE - {0xCCB5, 0xCCCF, prH3, gcLo}, // [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH - {0xCCD0, 0xCCD0, prH2, gcLo}, // HANGUL SYLLABLE CYEO - {0xCCD1, 0xCCEB, prH3, gcLo}, // [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH - {0xCCEC, 0xCCEC, prH2, gcLo}, // HANGUL SYLLABLE CYE - {0xCCED, 0xCD07, prH3, gcLo}, // [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH - {0xCD08, 0xCD08, prH2, gcLo}, // HANGUL SYLLABLE CO - {0xCD09, 0xCD23, prH3, gcLo}, // [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH - {0xCD24, 0xCD24, prH2, gcLo}, // HANGUL SYLLABLE CWA - {0xCD25, 0xCD3F, prH3, gcLo}, // [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH - {0xCD40, 0xCD40, prH2, gcLo}, // HANGUL SYLLABLE CWAE - {0xCD41, 0xCD5B, prH3, gcLo}, // [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH - {0xCD5C, 0xCD5C, prH2, gcLo}, // HANGUL SYLLABLE COE - {0xCD5D, 0xCD77, prH3, gcLo}, // [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH - {0xCD78, 0xCD78, prH2, gcLo}, // HANGUL SYLLABLE CYO - {0xCD79, 0xCD93, prH3, gcLo}, // [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH - {0xCD94, 0xCD94, prH2, gcLo}, // HANGUL SYLLABLE CU - {0xCD95, 0xCDAF, prH3, gcLo}, // [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH - {0xCDB0, 0xCDB0, prH2, gcLo}, // HANGUL SYLLABLE CWEO - {0xCDB1, 0xCDCB, prH3, gcLo}, // [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH - {0xCDCC, 0xCDCC, prH2, gcLo}, // HANGUL SYLLABLE CWE - {0xCDCD, 0xCDE7, prH3, gcLo}, // [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH - {0xCDE8, 0xCDE8, prH2, gcLo}, // HANGUL SYLLABLE CWI - {0xCDE9, 0xCE03, prH3, gcLo}, // [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH - {0xCE04, 0xCE04, prH2, gcLo}, // HANGUL SYLLABLE CYU - {0xCE05, 0xCE1F, prH3, gcLo}, // [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH - {0xCE20, 0xCE20, prH2, gcLo}, // HANGUL SYLLABLE CEU - {0xCE21, 0xCE3B, prH3, gcLo}, // [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH - {0xCE3C, 0xCE3C, prH2, gcLo}, // HANGUL SYLLABLE CYI - {0xCE3D, 0xCE57, prH3, gcLo}, // [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH - {0xCE58, 0xCE58, prH2, gcLo}, // HANGUL SYLLABLE CI - {0xCE59, 0xCE73, prH3, gcLo}, // [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH - {0xCE74, 0xCE74, prH2, gcLo}, // HANGUL SYLLABLE KA - {0xCE75, 0xCE8F, prH3, gcLo}, // [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH - {0xCE90, 0xCE90, prH2, gcLo}, // HANGUL SYLLABLE KAE - {0xCE91, 0xCEAB, prH3, gcLo}, // [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH - {0xCEAC, 0xCEAC, prH2, gcLo}, // HANGUL SYLLABLE KYA - {0xCEAD, 0xCEC7, prH3, gcLo}, // [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH - {0xCEC8, 0xCEC8, prH2, gcLo}, // HANGUL SYLLABLE KYAE - {0xCEC9, 0xCEE3, prH3, gcLo}, // [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH - {0xCEE4, 0xCEE4, prH2, gcLo}, // HANGUL SYLLABLE KEO - {0xCEE5, 0xCEFF, prH3, gcLo}, // [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH - {0xCF00, 0xCF00, prH2, gcLo}, // HANGUL SYLLABLE KE - {0xCF01, 0xCF1B, prH3, gcLo}, // [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH - {0xCF1C, 0xCF1C, prH2, gcLo}, // HANGUL SYLLABLE KYEO - {0xCF1D, 0xCF37, prH3, gcLo}, // [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH - {0xCF38, 0xCF38, prH2, gcLo}, // HANGUL SYLLABLE KYE - {0xCF39, 0xCF53, prH3, gcLo}, // [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH - {0xCF54, 0xCF54, prH2, gcLo}, // HANGUL SYLLABLE KO - {0xCF55, 0xCF6F, prH3, gcLo}, // [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH - {0xCF70, 0xCF70, prH2, gcLo}, // HANGUL SYLLABLE KWA - {0xCF71, 0xCF8B, prH3, gcLo}, // [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH - {0xCF8C, 0xCF8C, prH2, gcLo}, // HANGUL SYLLABLE KWAE - {0xCF8D, 0xCFA7, prH3, gcLo}, // [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH - {0xCFA8, 0xCFA8, prH2, gcLo}, // HANGUL SYLLABLE KOE - {0xCFA9, 0xCFC3, prH3, gcLo}, // [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH - {0xCFC4, 0xCFC4, prH2, gcLo}, // HANGUL SYLLABLE KYO - {0xCFC5, 0xCFDF, prH3, gcLo}, // [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH - {0xCFE0, 0xCFE0, prH2, gcLo}, // HANGUL SYLLABLE KU - {0xCFE1, 0xCFFB, prH3, gcLo}, // [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH - {0xCFFC, 0xCFFC, prH2, gcLo}, // HANGUL SYLLABLE KWEO - {0xCFFD, 0xD017, prH3, gcLo}, // [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH - {0xD018, 0xD018, prH2, gcLo}, // HANGUL SYLLABLE KWE - {0xD019, 0xD033, prH3, gcLo}, // [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH - {0xD034, 0xD034, prH2, gcLo}, // HANGUL SYLLABLE KWI - {0xD035, 0xD04F, prH3, gcLo}, // [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH - {0xD050, 0xD050, prH2, gcLo}, // HANGUL SYLLABLE KYU - {0xD051, 0xD06B, prH3, gcLo}, // [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH - {0xD06C, 0xD06C, prH2, gcLo}, // HANGUL SYLLABLE KEU - {0xD06D, 0xD087, prH3, gcLo}, // [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH - {0xD088, 0xD088, prH2, gcLo}, // HANGUL SYLLABLE KYI - {0xD089, 0xD0A3, prH3, gcLo}, // [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH - {0xD0A4, 0xD0A4, prH2, gcLo}, // HANGUL SYLLABLE KI - {0xD0A5, 0xD0BF, prH3, gcLo}, // [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH - {0xD0C0, 0xD0C0, prH2, gcLo}, // HANGUL SYLLABLE TA - {0xD0C1, 0xD0DB, prH3, gcLo}, // [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH - {0xD0DC, 0xD0DC, prH2, gcLo}, // HANGUL SYLLABLE TAE - {0xD0DD, 0xD0F7, prH3, gcLo}, // [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH - {0xD0F8, 0xD0F8, prH2, gcLo}, // HANGUL SYLLABLE TYA - {0xD0F9, 0xD113, prH3, gcLo}, // [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH - {0xD114, 0xD114, prH2, gcLo}, // HANGUL SYLLABLE TYAE - {0xD115, 0xD12F, prH3, gcLo}, // [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH - {0xD130, 0xD130, prH2, gcLo}, // HANGUL SYLLABLE TEO - {0xD131, 0xD14B, prH3, gcLo}, // [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH - {0xD14C, 0xD14C, prH2, gcLo}, // HANGUL SYLLABLE TE - {0xD14D, 0xD167, prH3, gcLo}, // [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH - {0xD168, 0xD168, prH2, gcLo}, // HANGUL SYLLABLE TYEO - {0xD169, 0xD183, prH3, gcLo}, // [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH - {0xD184, 0xD184, prH2, gcLo}, // HANGUL SYLLABLE TYE - {0xD185, 0xD19F, prH3, gcLo}, // [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH - {0xD1A0, 0xD1A0, prH2, gcLo}, // HANGUL SYLLABLE TO - {0xD1A1, 0xD1BB, prH3, gcLo}, // [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH - {0xD1BC, 0xD1BC, prH2, gcLo}, // HANGUL SYLLABLE TWA - {0xD1BD, 0xD1D7, prH3, gcLo}, // [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH - {0xD1D8, 0xD1D8, prH2, gcLo}, // HANGUL SYLLABLE TWAE - {0xD1D9, 0xD1F3, prH3, gcLo}, // [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH - {0xD1F4, 0xD1F4, prH2, gcLo}, // HANGUL SYLLABLE TOE - {0xD1F5, 0xD20F, prH3, gcLo}, // [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH - {0xD210, 0xD210, prH2, gcLo}, // HANGUL SYLLABLE TYO - {0xD211, 0xD22B, prH3, gcLo}, // [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH - {0xD22C, 0xD22C, prH2, gcLo}, // HANGUL SYLLABLE TU - {0xD22D, 0xD247, prH3, gcLo}, // [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH - {0xD248, 0xD248, prH2, gcLo}, // HANGUL SYLLABLE TWEO - {0xD249, 0xD263, prH3, gcLo}, // [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH - {0xD264, 0xD264, prH2, gcLo}, // HANGUL SYLLABLE TWE - {0xD265, 0xD27F, prH3, gcLo}, // [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH - {0xD280, 0xD280, prH2, gcLo}, // HANGUL SYLLABLE TWI - {0xD281, 0xD29B, prH3, gcLo}, // [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH - {0xD29C, 0xD29C, prH2, gcLo}, // HANGUL SYLLABLE TYU - {0xD29D, 0xD2B7, prH3, gcLo}, // [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH - {0xD2B8, 0xD2B8, prH2, gcLo}, // HANGUL SYLLABLE TEU - {0xD2B9, 0xD2D3, prH3, gcLo}, // [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH - {0xD2D4, 0xD2D4, prH2, gcLo}, // HANGUL SYLLABLE TYI - {0xD2D5, 0xD2EF, prH3, gcLo}, // [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH - {0xD2F0, 0xD2F0, prH2, gcLo}, // HANGUL SYLLABLE TI - {0xD2F1, 0xD30B, prH3, gcLo}, // [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH - {0xD30C, 0xD30C, prH2, gcLo}, // HANGUL SYLLABLE PA - {0xD30D, 0xD327, prH3, gcLo}, // [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH - {0xD328, 0xD328, prH2, gcLo}, // HANGUL SYLLABLE PAE - {0xD329, 0xD343, prH3, gcLo}, // [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH - {0xD344, 0xD344, prH2, gcLo}, // HANGUL SYLLABLE PYA - {0xD345, 0xD35F, prH3, gcLo}, // [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH - {0xD360, 0xD360, prH2, gcLo}, // HANGUL SYLLABLE PYAE - {0xD361, 0xD37B, prH3, gcLo}, // [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH - {0xD37C, 0xD37C, prH2, gcLo}, // HANGUL SYLLABLE PEO - {0xD37D, 0xD397, prH3, gcLo}, // [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH - {0xD398, 0xD398, prH2, gcLo}, // HANGUL SYLLABLE PE - {0xD399, 0xD3B3, prH3, gcLo}, // [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH - {0xD3B4, 0xD3B4, prH2, gcLo}, // HANGUL SYLLABLE PYEO - {0xD3B5, 0xD3CF, prH3, gcLo}, // [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH - {0xD3D0, 0xD3D0, prH2, gcLo}, // HANGUL SYLLABLE PYE - {0xD3D1, 0xD3EB, prH3, gcLo}, // [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH - {0xD3EC, 0xD3EC, prH2, gcLo}, // HANGUL SYLLABLE PO - {0xD3ED, 0xD407, prH3, gcLo}, // [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH - {0xD408, 0xD408, prH2, gcLo}, // HANGUL SYLLABLE PWA - {0xD409, 0xD423, prH3, gcLo}, // [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH - {0xD424, 0xD424, prH2, gcLo}, // HANGUL SYLLABLE PWAE - {0xD425, 0xD43F, prH3, gcLo}, // [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH - {0xD440, 0xD440, prH2, gcLo}, // HANGUL SYLLABLE POE - {0xD441, 0xD45B, prH3, gcLo}, // [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH - {0xD45C, 0xD45C, prH2, gcLo}, // HANGUL SYLLABLE PYO - {0xD45D, 0xD477, prH3, gcLo}, // [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH - {0xD478, 0xD478, prH2, gcLo}, // HANGUL SYLLABLE PU - {0xD479, 0xD493, prH3, gcLo}, // [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH - {0xD494, 0xD494, prH2, gcLo}, // HANGUL SYLLABLE PWEO - {0xD495, 0xD4AF, prH3, gcLo}, // [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH - {0xD4B0, 0xD4B0, prH2, gcLo}, // HANGUL SYLLABLE PWE - {0xD4B1, 0xD4CB, prH3, gcLo}, // [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH - {0xD4CC, 0xD4CC, prH2, gcLo}, // HANGUL SYLLABLE PWI - {0xD4CD, 0xD4E7, prH3, gcLo}, // [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH - {0xD4E8, 0xD4E8, prH2, gcLo}, // HANGUL SYLLABLE PYU - {0xD4E9, 0xD503, prH3, gcLo}, // [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH - {0xD504, 0xD504, prH2, gcLo}, // HANGUL SYLLABLE PEU - {0xD505, 0xD51F, prH3, gcLo}, // [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH - {0xD520, 0xD520, prH2, gcLo}, // HANGUL SYLLABLE PYI - {0xD521, 0xD53B, prH3, gcLo}, // [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH - {0xD53C, 0xD53C, prH2, gcLo}, // HANGUL SYLLABLE PI - {0xD53D, 0xD557, prH3, gcLo}, // [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH - {0xD558, 0xD558, prH2, gcLo}, // HANGUL SYLLABLE HA - {0xD559, 0xD573, prH3, gcLo}, // [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH - {0xD574, 0xD574, prH2, gcLo}, // HANGUL SYLLABLE HAE - {0xD575, 0xD58F, prH3, gcLo}, // [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH - {0xD590, 0xD590, prH2, gcLo}, // HANGUL SYLLABLE HYA - {0xD591, 0xD5AB, prH3, gcLo}, // [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH - {0xD5AC, 0xD5AC, prH2, gcLo}, // HANGUL SYLLABLE HYAE - {0xD5AD, 0xD5C7, prH3, gcLo}, // [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH - {0xD5C8, 0xD5C8, prH2, gcLo}, // HANGUL SYLLABLE HEO - {0xD5C9, 0xD5E3, prH3, gcLo}, // [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH - {0xD5E4, 0xD5E4, prH2, gcLo}, // HANGUL SYLLABLE HE - {0xD5E5, 0xD5FF, prH3, gcLo}, // [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH - {0xD600, 0xD600, prH2, gcLo}, // HANGUL SYLLABLE HYEO - {0xD601, 0xD61B, prH3, gcLo}, // [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH - {0xD61C, 0xD61C, prH2, gcLo}, // HANGUL SYLLABLE HYE - {0xD61D, 0xD637, prH3, gcLo}, // [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH - {0xD638, 0xD638, prH2, gcLo}, // HANGUL SYLLABLE HO - {0xD639, 0xD653, prH3, gcLo}, // [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH - {0xD654, 0xD654, prH2, gcLo}, // HANGUL SYLLABLE HWA - {0xD655, 0xD66F, prH3, gcLo}, // [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH - {0xD670, 0xD670, prH2, gcLo}, // HANGUL SYLLABLE HWAE - {0xD671, 0xD68B, prH3, gcLo}, // [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH - {0xD68C, 0xD68C, prH2, gcLo}, // HANGUL SYLLABLE HOE - {0xD68D, 0xD6A7, prH3, gcLo}, // [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH - {0xD6A8, 0xD6A8, prH2, gcLo}, // HANGUL SYLLABLE HYO - {0xD6A9, 0xD6C3, prH3, gcLo}, // [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH - {0xD6C4, 0xD6C4, prH2, gcLo}, // HANGUL SYLLABLE HU - {0xD6C5, 0xD6DF, prH3, gcLo}, // [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH - {0xD6E0, 0xD6E0, prH2, gcLo}, // HANGUL SYLLABLE HWEO - {0xD6E1, 0xD6FB, prH3, gcLo}, // [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH - {0xD6FC, 0xD6FC, prH2, gcLo}, // HANGUL SYLLABLE HWE - {0xD6FD, 0xD717, prH3, gcLo}, // [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH - {0xD718, 0xD718, prH2, gcLo}, // HANGUL SYLLABLE HWI - {0xD719, 0xD733, prH3, gcLo}, // [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH - {0xD734, 0xD734, prH2, gcLo}, // HANGUL SYLLABLE HYU - {0xD735, 0xD74F, prH3, gcLo}, // [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH - {0xD750, 0xD750, prH2, gcLo}, // HANGUL SYLLABLE HEU - {0xD751, 0xD76B, prH3, gcLo}, // [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH - {0xD76C, 0xD76C, prH2, gcLo}, // HANGUL SYLLABLE HYI - {0xD76D, 0xD787, prH3, gcLo}, // [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH - {0xD788, 0xD788, prH2, gcLo}, // HANGUL SYLLABLE HI - {0xD789, 0xD7A3, prH3, gcLo}, // [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH - {0xD7B0, 0xD7C6, prJV, gcLo}, // [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E - {0xD7CB, 0xD7FB, prJT, gcLo}, // [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH - {0xD800, 0xDB7F, prSG, gcCs}, // [896] <surrogate-D800>..<surrogate-DB7F> - {0xDB80, 0xDBFF, prSG, gcCs}, // [128] <surrogate-DB80>..<surrogate-DBFF> - {0xDC00, 0xDFFF, prSG, gcCs}, // [1024] <surrogate-DC00>..<surrogate-DFFF> - {0xE000, 0xF8FF, prXX, gcCo}, // [6400] <private-use-E000>..<private-use-F8FF> - {0xF900, 0xFA6D, prID, gcLo}, // [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D - {0xFA6E, 0xFA6F, prID, gcCn}, // [2] <reserved-FA6E>..<reserved-FA6F> - {0xFA70, 0xFAD9, prID, gcLo}, // [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 - {0xFADA, 0xFAFF, prID, gcCn}, // [38] <reserved-FADA>..<reserved-FAFF> - {0xFB00, 0xFB06, prAL, gcLl}, // [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST - {0xFB13, 0xFB17, prAL, gcLl}, // [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - {0xFB1D, 0xFB1D, prHL, gcLo}, // HEBREW LETTER YOD WITH HIRIQ - {0xFB1E, 0xFB1E, prCM, gcMn}, // HEBREW POINT JUDEO-SPANISH VARIKA - {0xFB1F, 0xFB28, prHL, gcLo}, // [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV - {0xFB29, 0xFB29, prAL, gcSm}, // HEBREW LETTER ALTERNATIVE PLUS SIGN - {0xFB2A, 0xFB36, prHL, gcLo}, // [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH - {0xFB38, 0xFB3C, prHL, gcLo}, // [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH - {0xFB3E, 0xFB3E, prHL, gcLo}, // HEBREW LETTER MEM WITH DAGESH - {0xFB40, 0xFB41, prHL, gcLo}, // [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH - {0xFB43, 0xFB44, prHL, gcLo}, // [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH - {0xFB46, 0xFB4F, prHL, gcLo}, // [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED - {0xFB50, 0xFBB1, prAL, gcLo}, // [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM - {0xFBB2, 0xFBC2, prAL, gcSk}, // [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE - {0xFBD3, 0xFD3D, prAL, gcLo}, // [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM - {0xFD3E, 0xFD3E, prCL, gcPe}, // ORNATE LEFT PARENTHESIS - {0xFD3F, 0xFD3F, prOP, gcPs}, // ORNATE RIGHT PARENTHESIS - {0xFD40, 0xFD4F, prAL, gcSo}, // [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH - {0xFD50, 0xFD8F, prAL, gcLo}, // [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM - {0xFD92, 0xFDC7, prAL, gcLo}, // [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM - {0xFDCF, 0xFDCF, prAL, gcSo}, // ARABIC LIGATURE SALAAMUHU ALAYNAA - {0xFDF0, 0xFDFB, prAL, gcLo}, // [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU - {0xFDFC, 0xFDFC, prPO, gcSc}, // RIAL SIGN - {0xFDFD, 0xFDFF, prAL, gcSo}, // [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL - {0xFE00, 0xFE0F, prCM, gcMn}, // [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 - {0xFE10, 0xFE10, prIS, gcPo}, // PRESENTATION FORM FOR VERTICAL COMMA - {0xFE11, 0xFE12, prCL, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP - {0xFE13, 0xFE14, prIS, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION FORM FOR VERTICAL SEMICOLON - {0xFE15, 0xFE16, prEX, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK..PRESENTATION FORM FOR VERTICAL QUESTION MARK - {0xFE17, 0xFE17, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - {0xFE18, 0xFE18, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET - {0xFE19, 0xFE19, prIN, gcPo}, // PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS - {0xFE20, 0xFE2F, prCM, gcMn}, // [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF - {0xFE30, 0xFE30, prID, gcPo}, // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - {0xFE31, 0xFE32, prID, gcPd}, // [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH - {0xFE33, 0xFE34, prID, gcPc}, // [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - {0xFE35, 0xFE35, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - {0xFE36, 0xFE36, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - {0xFE37, 0xFE37, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - {0xFE38, 0xFE38, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - {0xFE39, 0xFE39, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - {0xFE3A, 0xFE3A, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - {0xFE3B, 0xFE3B, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - {0xFE3C, 0xFE3C, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - {0xFE3D, 0xFE3D, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - {0xFE3E, 0xFE3E, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - {0xFE3F, 0xFE3F, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - {0xFE40, 0xFE40, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - {0xFE41, 0xFE41, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - {0xFE42, 0xFE42, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - {0xFE43, 0xFE43, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - {0xFE44, 0xFE44, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - {0xFE45, 0xFE46, prID, gcPo}, // [2] SESAME DOT..WHITE SESAME DOT - {0xFE47, 0xFE47, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - {0xFE48, 0xFE48, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - {0xFE49, 0xFE4C, prID, gcPo}, // [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE - {0xFE4D, 0xFE4F, prID, gcPc}, // [3] DASHED LOW LINE..WAVY LOW LINE - {0xFE50, 0xFE50, prCL, gcPo}, // SMALL COMMA - {0xFE51, 0xFE51, prID, gcPo}, // SMALL IDEOGRAPHIC COMMA - {0xFE52, 0xFE52, prCL, gcPo}, // SMALL FULL STOP - {0xFE54, 0xFE55, prNS, gcPo}, // [2] SMALL SEMICOLON..SMALL COLON - {0xFE56, 0xFE57, prEX, gcPo}, // [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK - {0xFE58, 0xFE58, prID, gcPd}, // SMALL EM DASH - {0xFE59, 0xFE59, prOP, gcPs}, // SMALL LEFT PARENTHESIS - {0xFE5A, 0xFE5A, prCL, gcPe}, // SMALL RIGHT PARENTHESIS - {0xFE5B, 0xFE5B, prOP, gcPs}, // SMALL LEFT CURLY BRACKET - {0xFE5C, 0xFE5C, prCL, gcPe}, // SMALL RIGHT CURLY BRACKET - {0xFE5D, 0xFE5D, prOP, gcPs}, // SMALL LEFT TORTOISE SHELL BRACKET - {0xFE5E, 0xFE5E, prCL, gcPe}, // SMALL RIGHT TORTOISE SHELL BRACKET - {0xFE5F, 0xFE61, prID, gcPo}, // [3] SMALL NUMBER SIGN..SMALL ASTERISK - {0xFE62, 0xFE62, prID, gcSm}, // SMALL PLUS SIGN - {0xFE63, 0xFE63, prID, gcPd}, // SMALL HYPHEN-MINUS - {0xFE64, 0xFE66, prID, gcSm}, // [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN - {0xFE68, 0xFE68, prID, gcPo}, // SMALL REVERSE SOLIDUS - {0xFE69, 0xFE69, prPR, gcSc}, // SMALL DOLLAR SIGN - {0xFE6A, 0xFE6A, prPO, gcPo}, // SMALL PERCENT SIGN - {0xFE6B, 0xFE6B, prID, gcPo}, // SMALL COMMERCIAL AT - {0xFE70, 0xFE74, prAL, gcLo}, // [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM - {0xFE76, 0xFEFC, prAL, gcLo}, // [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - {0xFEFF, 0xFEFF, prWJ, gcCf}, // ZERO WIDTH NO-BREAK SPACE - {0xFF01, 0xFF01, prEX, gcPo}, // FULLWIDTH EXCLAMATION MARK - {0xFF02, 0xFF03, prID, gcPo}, // [2] FULLWIDTH QUOTATION MARK..FULLWIDTH NUMBER SIGN - {0xFF04, 0xFF04, prPR, gcSc}, // FULLWIDTH DOLLAR SIGN - {0xFF05, 0xFF05, prPO, gcPo}, // FULLWIDTH PERCENT SIGN - {0xFF06, 0xFF07, prID, gcPo}, // [2] FULLWIDTH AMPERSAND..FULLWIDTH APOSTROPHE - {0xFF08, 0xFF08, prOP, gcPs}, // FULLWIDTH LEFT PARENTHESIS - {0xFF09, 0xFF09, prCL, gcPe}, // FULLWIDTH RIGHT PARENTHESIS - {0xFF0A, 0xFF0A, prID, gcPo}, // FULLWIDTH ASTERISK - {0xFF0B, 0xFF0B, prID, gcSm}, // FULLWIDTH PLUS SIGN - {0xFF0C, 0xFF0C, prCL, gcPo}, // FULLWIDTH COMMA - {0xFF0D, 0xFF0D, prID, gcPd}, // FULLWIDTH HYPHEN-MINUS - {0xFF0E, 0xFF0E, prCL, gcPo}, // FULLWIDTH FULL STOP - {0xFF0F, 0xFF0F, prID, gcPo}, // FULLWIDTH SOLIDUS - {0xFF10, 0xFF19, prID, gcNd}, // [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE - {0xFF1A, 0xFF1B, prNS, gcPo}, // [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON - {0xFF1C, 0xFF1E, prID, gcSm}, // [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN - {0xFF1F, 0xFF1F, prEX, gcPo}, // FULLWIDTH QUESTION MARK - {0xFF20, 0xFF20, prID, gcPo}, // FULLWIDTH COMMERCIAL AT - {0xFF21, 0xFF3A, prID, gcLu}, // [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - {0xFF3B, 0xFF3B, prOP, gcPs}, // FULLWIDTH LEFT SQUARE BRACKET - {0xFF3C, 0xFF3C, prID, gcPo}, // FULLWIDTH REVERSE SOLIDUS - {0xFF3D, 0xFF3D, prCL, gcPe}, // FULLWIDTH RIGHT SQUARE BRACKET - {0xFF3E, 0xFF3E, prID, gcSk}, // FULLWIDTH CIRCUMFLEX ACCENT - {0xFF3F, 0xFF3F, prID, gcPc}, // FULLWIDTH LOW LINE - {0xFF40, 0xFF40, prID, gcSk}, // FULLWIDTH GRAVE ACCENT - {0xFF41, 0xFF5A, prID, gcLl}, // [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - {0xFF5B, 0xFF5B, prOP, gcPs}, // FULLWIDTH LEFT CURLY BRACKET - {0xFF5C, 0xFF5C, prID, gcSm}, // FULLWIDTH VERTICAL LINE - {0xFF5D, 0xFF5D, prCL, gcPe}, // FULLWIDTH RIGHT CURLY BRACKET - {0xFF5E, 0xFF5E, prID, gcSm}, // FULLWIDTH TILDE - {0xFF5F, 0xFF5F, prOP, gcPs}, // FULLWIDTH LEFT WHITE PARENTHESIS - {0xFF60, 0xFF60, prCL, gcPe}, // FULLWIDTH RIGHT WHITE PARENTHESIS - {0xFF61, 0xFF61, prCL, gcPo}, // HALFWIDTH IDEOGRAPHIC FULL STOP - {0xFF62, 0xFF62, prOP, gcPs}, // HALFWIDTH LEFT CORNER BRACKET - {0xFF63, 0xFF63, prCL, gcPe}, // HALFWIDTH RIGHT CORNER BRACKET - {0xFF64, 0xFF64, prCL, gcPo}, // HALFWIDTH IDEOGRAPHIC COMMA - {0xFF65, 0xFF65, prNS, gcPo}, // HALFWIDTH KATAKANA MIDDLE DOT - {0xFF66, 0xFF66, prID, gcLo}, // HALFWIDTH KATAKANA LETTER WO - {0xFF67, 0xFF6F, prCJ, gcLo}, // [9] HALFWIDTH KATAKANA LETTER SMALL A..HALFWIDTH KATAKANA LETTER SMALL TU - {0xFF70, 0xFF70, prCJ, gcLm}, // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - {0xFF71, 0xFF9D, prID, gcLo}, // [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - {0xFF9E, 0xFF9F, prNS, gcLm}, // [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - {0xFFA0, 0xFFBE, prID, gcLo}, // [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH - {0xFFC2, 0xFFC7, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E - {0xFFCA, 0xFFCF, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE - {0xFFD2, 0xFFD7, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU - {0xFFDA, 0xFFDC, prID, gcLo}, // [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - {0xFFE0, 0xFFE0, prPO, gcSc}, // FULLWIDTH CENT SIGN - {0xFFE1, 0xFFE1, prPR, gcSc}, // FULLWIDTH POUND SIGN - {0xFFE2, 0xFFE2, prID, gcSm}, // FULLWIDTH NOT SIGN - {0xFFE3, 0xFFE3, prID, gcSk}, // FULLWIDTH MACRON - {0xFFE4, 0xFFE4, prID, gcSo}, // FULLWIDTH BROKEN BAR - {0xFFE5, 0xFFE6, prPR, gcSc}, // [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN - {0xFFE8, 0xFFE8, prAL, gcSo}, // HALFWIDTH FORMS LIGHT VERTICAL - {0xFFE9, 0xFFEC, prAL, gcSm}, // [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW - {0xFFED, 0xFFEE, prAL, gcSo}, // [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE - {0xFFF9, 0xFFFB, prCM, gcCf}, // [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR - {0xFFFC, 0xFFFC, prCB, gcSo}, // OBJECT REPLACEMENT CHARACTER - {0xFFFD, 0xFFFD, prAI, gcSo}, // REPLACEMENT CHARACTER - {0x10000, 0x1000B, prAL, gcLo}, // [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE - {0x1000D, 0x10026, prAL, gcLo}, // [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO - {0x10028, 0x1003A, prAL, gcLo}, // [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO - {0x1003C, 0x1003D, prAL, gcLo}, // [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE - {0x1003F, 0x1004D, prAL, gcLo}, // [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO - {0x10050, 0x1005D, prAL, gcLo}, // [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 - {0x10080, 0x100FA, prAL, gcLo}, // [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - {0x10100, 0x10102, prBA, gcPo}, // [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK - {0x10107, 0x10133, prAL, gcNo}, // [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND - {0x10137, 0x1013F, prAL, gcSo}, // [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT - {0x10140, 0x10174, prAL, gcNl}, // [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS - {0x10175, 0x10178, prAL, gcNo}, // [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN - {0x10179, 0x10189, prAL, gcSo}, // [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN - {0x1018A, 0x1018B, prAL, gcNo}, // [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN - {0x1018C, 0x1018E, prAL, gcSo}, // [3] GREEK SINUSOID SIGN..NOMISMA SIGN - {0x10190, 0x1019C, prAL, gcSo}, // [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL - {0x101A0, 0x101A0, prAL, gcSo}, // GREEK SYMBOL TAU RHO - {0x101D0, 0x101FC, prAL, gcSo}, // [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND - {0x101FD, 0x101FD, prCM, gcMn}, // PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE - {0x10280, 0x1029C, prAL, gcLo}, // [29] LYCIAN LETTER A..LYCIAN LETTER X - {0x102A0, 0x102D0, prAL, gcLo}, // [49] CARIAN LETTER A..CARIAN LETTER UUU3 - {0x102E0, 0x102E0, prCM, gcMn}, // COPTIC EPACT THOUSANDS MARK - {0x102E1, 0x102FB, prAL, gcNo}, // [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED - {0x10300, 0x1031F, prAL, gcLo}, // [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS - {0x10320, 0x10323, prAL, gcNo}, // [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY - {0x1032D, 0x1032F, prAL, gcLo}, // [3] OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE - {0x10330, 0x10340, prAL, gcLo}, // [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA - {0x10341, 0x10341, prAL, gcNl}, // GOTHIC LETTER NINETY - {0x10342, 0x10349, prAL, gcLo}, // [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL - {0x1034A, 0x1034A, prAL, gcNl}, // GOTHIC LETTER NINE HUNDRED - {0x10350, 0x10375, prAL, gcLo}, // [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA - {0x10376, 0x1037A, prCM, gcMn}, // [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII - {0x10380, 0x1039D, prAL, gcLo}, // [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU - {0x1039F, 0x1039F, prBA, gcPo}, // UGARITIC WORD DIVIDER - {0x103A0, 0x103C3, prAL, gcLo}, // [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA - {0x103C8, 0x103CF, prAL, gcLo}, // [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH - {0x103D0, 0x103D0, prBA, gcPo}, // OLD PERSIAN WORD DIVIDER - {0x103D1, 0x103D5, prAL, gcNl}, // [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - {0x10400, 0x1044F, prAL, gcLC}, // [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - {0x10450, 0x1047F, prAL, gcLo}, // [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW - {0x10480, 0x1049D, prAL, gcLo}, // [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO - {0x104A0, 0x104A9, prNU, gcNd}, // [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - {0x104B0, 0x104D3, prAL, gcLu}, // [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - {0x104D8, 0x104FB, prAL, gcLl}, // [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - {0x10500, 0x10527, prAL, gcLo}, // [40] ELBASAN LETTER A..ELBASAN LETTER KHE - {0x10530, 0x10563, prAL, gcLo}, // [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - {0x1056F, 0x1056F, prAL, gcPo}, // CAUCASIAN ALBANIAN CITATION MARK - {0x10570, 0x1057A, prAL, gcLu}, // [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA - {0x1057C, 0x1058A, prAL, gcLu}, // [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE - {0x1058C, 0x10592, prAL, gcLu}, // [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE - {0x10594, 0x10595, prAL, gcLu}, // [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE - {0x10597, 0x105A1, prAL, gcLl}, // [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA - {0x105A3, 0x105B1, prAL, gcLl}, // [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE - {0x105B3, 0x105B9, prAL, gcLl}, // [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE - {0x105BB, 0x105BC, prAL, gcLl}, // [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE - {0x10600, 0x10736, prAL, gcLo}, // [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 - {0x10740, 0x10755, prAL, gcLo}, // [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE - {0x10760, 0x10767, prAL, gcLo}, // [8] LINEAR A SIGN A800..LINEAR A SIGN A807 - {0x10780, 0x10785, prAL, gcLm}, // [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK - {0x10787, 0x107B0, prAL, gcLm}, // [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK - {0x107B2, 0x107BA, prAL, gcLm}, // [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL - {0x10800, 0x10805, prAL, gcLo}, // [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA - {0x10808, 0x10808, prAL, gcLo}, // CYPRIOT SYLLABLE JO - {0x1080A, 0x10835, prAL, gcLo}, // [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO - {0x10837, 0x10838, prAL, gcLo}, // [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE - {0x1083C, 0x1083C, prAL, gcLo}, // CYPRIOT SYLLABLE ZA - {0x1083F, 0x1083F, prAL, gcLo}, // CYPRIOT SYLLABLE ZO - {0x10840, 0x10855, prAL, gcLo}, // [22] IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW - {0x10857, 0x10857, prBA, gcPo}, // IMPERIAL ARAMAIC SECTION SIGN - {0x10858, 0x1085F, prAL, gcNo}, // [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND - {0x10860, 0x10876, prAL, gcLo}, // [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW - {0x10877, 0x10878, prAL, gcSo}, // [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON - {0x10879, 0x1087F, prAL, gcNo}, // [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY - {0x10880, 0x1089E, prAL, gcLo}, // [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW - {0x108A7, 0x108AF, prAL, gcNo}, // [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED - {0x108E0, 0x108F2, prAL, gcLo}, // [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH - {0x108F4, 0x108F5, prAL, gcLo}, // [2] HATRAN LETTER SHIN..HATRAN LETTER TAW - {0x108FB, 0x108FF, prAL, gcNo}, // [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED - {0x10900, 0x10915, prAL, gcLo}, // [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU - {0x10916, 0x1091B, prAL, gcNo}, // [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE - {0x1091F, 0x1091F, prBA, gcPo}, // PHOENICIAN WORD SEPARATOR - {0x10920, 0x10939, prAL, gcLo}, // [26] LYDIAN LETTER A..LYDIAN LETTER C - {0x1093F, 0x1093F, prAL, gcPo}, // LYDIAN TRIANGULAR MARK - {0x10980, 0x1099F, prAL, gcLo}, // [32] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 - {0x109A0, 0x109B7, prAL, gcLo}, // [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA - {0x109BC, 0x109BD, prAL, gcNo}, // [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF - {0x109BE, 0x109BF, prAL, gcLo}, // [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN - {0x109C0, 0x109CF, prAL, gcNo}, // [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY - {0x109D2, 0x109FF, prAL, gcNo}, // [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS - {0x10A00, 0x10A00, prAL, gcLo}, // KHAROSHTHI LETTER A - {0x10A01, 0x10A03, prCM, gcMn}, // [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R - {0x10A05, 0x10A06, prCM, gcMn}, // [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O - {0x10A0C, 0x10A0F, prCM, gcMn}, // [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - {0x10A10, 0x10A13, prAL, gcLo}, // [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA - {0x10A15, 0x10A17, prAL, gcLo}, // [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA - {0x10A19, 0x10A35, prAL, gcLo}, // [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA - {0x10A38, 0x10A3A, prCM, gcMn}, // [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW - {0x10A3F, 0x10A3F, prCM, gcMn}, // KHAROSHTHI VIRAMA - {0x10A40, 0x10A48, prAL, gcNo}, // [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF - {0x10A50, 0x10A57, prBA, gcPo}, // [8] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION DOUBLE DANDA - {0x10A58, 0x10A58, prAL, gcPo}, // KHAROSHTHI PUNCTUATION LINES - {0x10A60, 0x10A7C, prAL, gcLo}, // [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH - {0x10A7D, 0x10A7E, prAL, gcNo}, // [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY - {0x10A7F, 0x10A7F, prAL, gcPo}, // OLD SOUTH ARABIAN NUMERIC INDICATOR - {0x10A80, 0x10A9C, prAL, gcLo}, // [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH - {0x10A9D, 0x10A9F, prAL, gcNo}, // [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY - {0x10AC0, 0x10AC7, prAL, gcLo}, // [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW - {0x10AC8, 0x10AC8, prAL, gcSo}, // MANICHAEAN SIGN UD - {0x10AC9, 0x10AE4, prAL, gcLo}, // [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW - {0x10AE5, 0x10AE6, prCM, gcMn}, // [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW - {0x10AEB, 0x10AEF, prAL, gcNo}, // [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED - {0x10AF0, 0x10AF5, prBA, gcPo}, // [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS - {0x10AF6, 0x10AF6, prIN, gcPo}, // MANICHAEAN PUNCTUATION LINE FILLER - {0x10B00, 0x10B35, prAL, gcLo}, // [54] AVESTAN LETTER A..AVESTAN LETTER HE - {0x10B39, 0x10B3F, prBA, gcPo}, // [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION - {0x10B40, 0x10B55, prAL, gcLo}, // [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW - {0x10B58, 0x10B5F, prAL, gcNo}, // [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND - {0x10B60, 0x10B72, prAL, gcLo}, // [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW - {0x10B78, 0x10B7F, prAL, gcNo}, // [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND - {0x10B80, 0x10B91, prAL, gcLo}, // [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW - {0x10B99, 0x10B9C, prAL, gcPo}, // [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT - {0x10BA9, 0x10BAF, prAL, gcNo}, // [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED - {0x10C00, 0x10C48, prAL, gcLo}, // [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH - {0x10C80, 0x10CB2, prAL, gcLu}, // [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - {0x10CC0, 0x10CF2, prAL, gcLl}, // [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - {0x10CFA, 0x10CFF, prAL, gcNo}, // [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND - {0x10D00, 0x10D23, prAL, gcLo}, // [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA - {0x10D24, 0x10D27, prCM, gcMn}, // [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI - {0x10D30, 0x10D39, prNU, gcNd}, // [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE - {0x10E60, 0x10E7E, prAL, gcNo}, // [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS - {0x10E80, 0x10EA9, prAL, gcLo}, // [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET - {0x10EAB, 0x10EAC, prCM, gcMn}, // [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK - {0x10EAD, 0x10EAD, prBA, gcPd}, // YEZIDI HYPHENATION MARK - {0x10EB0, 0x10EB1, prAL, gcLo}, // [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE - {0x10EFD, 0x10EFF, prCM, gcMn}, // [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA - {0x10F00, 0x10F1C, prAL, gcLo}, // [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL - {0x10F1D, 0x10F26, prAL, gcNo}, // [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF - {0x10F27, 0x10F27, prAL, gcLo}, // OLD SOGDIAN LIGATURE AYIN-DALETH - {0x10F30, 0x10F45, prAL, gcLo}, // [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN - {0x10F46, 0x10F50, prCM, gcMn}, // [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW - {0x10F51, 0x10F54, prAL, gcNo}, // [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED - {0x10F55, 0x10F59, prAL, gcPo}, // [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT - {0x10F70, 0x10F81, prAL, gcLo}, // [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH - {0x10F82, 0x10F85, prCM, gcMn}, // [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW - {0x10F86, 0x10F89, prAL, gcPo}, // [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS - {0x10FB0, 0x10FC4, prAL, gcLo}, // [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW - {0x10FC5, 0x10FCB, prAL, gcNo}, // [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED - {0x10FE0, 0x10FF6, prAL, gcLo}, // [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH - {0x11000, 0x11000, prCM, gcMc}, // BRAHMI SIGN CANDRABINDU - {0x11001, 0x11001, prCM, gcMn}, // BRAHMI SIGN ANUSVARA - {0x11002, 0x11002, prCM, gcMc}, // BRAHMI SIGN VISARGA - {0x11003, 0x11037, prAL, gcLo}, // [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA - {0x11038, 0x11046, prCM, gcMn}, // [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA - {0x11047, 0x11048, prBA, gcPo}, // [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA - {0x11049, 0x1104D, prAL, gcPo}, // [5] BRAHMI PUNCTUATION DOT..BRAHMI PUNCTUATION LOTUS - {0x11052, 0x11065, prAL, gcNo}, // [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND - {0x11066, 0x1106F, prNU, gcNd}, // [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE - {0x11070, 0x11070, prCM, gcMn}, // BRAHMI SIGN OLD TAMIL VIRAMA - {0x11071, 0x11072, prAL, gcLo}, // [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O - {0x11073, 0x11074, prCM, gcMn}, // [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O - {0x11075, 0x11075, prAL, gcLo}, // BRAHMI LETTER OLD TAMIL LLA - {0x1107F, 0x1107F, prCM, gcMn}, // BRAHMI NUMBER JOINER - {0x11080, 0x11081, prCM, gcMn}, // [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA - {0x11082, 0x11082, prCM, gcMc}, // KAITHI SIGN VISARGA - {0x11083, 0x110AF, prAL, gcLo}, // [45] KAITHI LETTER A..KAITHI LETTER HA - {0x110B0, 0x110B2, prCM, gcMc}, // [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II - {0x110B3, 0x110B6, prCM, gcMn}, // [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI - {0x110B7, 0x110B8, prCM, gcMc}, // [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU - {0x110B9, 0x110BA, prCM, gcMn}, // [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA - {0x110BB, 0x110BC, prAL, gcPo}, // [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN - {0x110BD, 0x110BD, prAL, gcCf}, // KAITHI NUMBER SIGN - {0x110BE, 0x110C1, prBA, gcPo}, // [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA - {0x110C2, 0x110C2, prCM, gcMn}, // KAITHI VOWEL SIGN VOCALIC R - {0x110CD, 0x110CD, prAL, gcCf}, // KAITHI NUMBER SIGN ABOVE - {0x110D0, 0x110E8, prAL, gcLo}, // [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE - {0x110F0, 0x110F9, prNU, gcNd}, // [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE - {0x11100, 0x11102, prCM, gcMn}, // [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA - {0x11103, 0x11126, prAL, gcLo}, // [36] CHAKMA LETTER AA..CHAKMA LETTER HAA - {0x11127, 0x1112B, prCM, gcMn}, // [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU - {0x1112C, 0x1112C, prCM, gcMc}, // CHAKMA VOWEL SIGN E - {0x1112D, 0x11134, prCM, gcMn}, // [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA - {0x11136, 0x1113F, prNU, gcNd}, // [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE - {0x11140, 0x11143, prBA, gcPo}, // [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK - {0x11144, 0x11144, prAL, gcLo}, // CHAKMA LETTER LHAA - {0x11145, 0x11146, prCM, gcMc}, // [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI - {0x11147, 0x11147, prAL, gcLo}, // CHAKMA LETTER VAA - {0x11150, 0x11172, prAL, gcLo}, // [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA - {0x11173, 0x11173, prCM, gcMn}, // MAHAJANI SIGN NUKTA - {0x11174, 0x11174, prAL, gcPo}, // MAHAJANI ABBREVIATION SIGN - {0x11175, 0x11175, prBB, gcPo}, // MAHAJANI SECTION MARK - {0x11176, 0x11176, prAL, gcLo}, // MAHAJANI LIGATURE SHRI - {0x11180, 0x11181, prCM, gcMn}, // [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA - {0x11182, 0x11182, prCM, gcMc}, // SHARADA SIGN VISARGA - {0x11183, 0x111B2, prAL, gcLo}, // [48] SHARADA LETTER A..SHARADA LETTER HA - {0x111B3, 0x111B5, prCM, gcMc}, // [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II - {0x111B6, 0x111BE, prCM, gcMn}, // [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O - {0x111BF, 0x111C0, prCM, gcMc}, // [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA - {0x111C1, 0x111C4, prAL, gcLo}, // [4] SHARADA SIGN AVAGRAHA..SHARADA OM - {0x111C5, 0x111C6, prBA, gcPo}, // [2] SHARADA DANDA..SHARADA DOUBLE DANDA - {0x111C7, 0x111C7, prAL, gcPo}, // SHARADA ABBREVIATION SIGN - {0x111C8, 0x111C8, prBA, gcPo}, // SHARADA SEPARATOR - {0x111C9, 0x111CC, prCM, gcMn}, // [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK - {0x111CD, 0x111CD, prAL, gcPo}, // SHARADA SUTRA MARK - {0x111CE, 0x111CE, prCM, gcMc}, // SHARADA VOWEL SIGN PRISHTHAMATRA E - {0x111CF, 0x111CF, prCM, gcMn}, // SHARADA SIGN INVERTED CANDRABINDU - {0x111D0, 0x111D9, prNU, gcNd}, // [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE - {0x111DA, 0x111DA, prAL, gcLo}, // SHARADA EKAM - {0x111DB, 0x111DB, prBB, gcPo}, // SHARADA SIGN SIDDHAM - {0x111DC, 0x111DC, prAL, gcLo}, // SHARADA HEADSTROKE - {0x111DD, 0x111DF, prBA, gcPo}, // [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 - {0x111E1, 0x111F4, prAL, gcNo}, // [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND - {0x11200, 0x11211, prAL, gcLo}, // [18] KHOJKI LETTER A..KHOJKI LETTER JJA - {0x11213, 0x1122B, prAL, gcLo}, // [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA - {0x1122C, 0x1122E, prCM, gcMc}, // [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II - {0x1122F, 0x11231, prCM, gcMn}, // [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - {0x11232, 0x11233, prCM, gcMc}, // [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - {0x11234, 0x11234, prCM, gcMn}, // KHOJKI SIGN ANUSVARA - {0x11235, 0x11235, prCM, gcMc}, // KHOJKI SIGN VIRAMA - {0x11236, 0x11237, prCM, gcMn}, // [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA - {0x11238, 0x11239, prBA, gcPo}, // [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA - {0x1123A, 0x1123A, prAL, gcPo}, // KHOJKI WORD SEPARATOR - {0x1123B, 0x1123C, prBA, gcPo}, // [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK - {0x1123D, 0x1123D, prAL, gcPo}, // KHOJKI ABBREVIATION SIGN - {0x1123E, 0x1123E, prCM, gcMn}, // KHOJKI SIGN SUKUN - {0x1123F, 0x11240, prAL, gcLo}, // [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I - {0x11241, 0x11241, prCM, gcMn}, // KHOJKI VOWEL SIGN VOCALIC R - {0x11280, 0x11286, prAL, gcLo}, // [7] MULTANI LETTER A..MULTANI LETTER GA - {0x11288, 0x11288, prAL, gcLo}, // MULTANI LETTER GHA - {0x1128A, 0x1128D, prAL, gcLo}, // [4] MULTANI LETTER CA..MULTANI LETTER JJA - {0x1128F, 0x1129D, prAL, gcLo}, // [15] MULTANI LETTER NYA..MULTANI LETTER BA - {0x1129F, 0x112A8, prAL, gcLo}, // [10] MULTANI LETTER BHA..MULTANI LETTER RHA - {0x112A9, 0x112A9, prBA, gcPo}, // MULTANI SECTION MARK - {0x112B0, 0x112DE, prAL, gcLo}, // [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA - {0x112DF, 0x112DF, prCM, gcMn}, // KHUDAWADI SIGN ANUSVARA - {0x112E0, 0x112E2, prCM, gcMc}, // [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II - {0x112E3, 0x112EA, prCM, gcMn}, // [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - {0x112F0, 0x112F9, prNU, gcNd}, // [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE - {0x11300, 0x11301, prCM, gcMn}, // [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU - {0x11302, 0x11303, prCM, gcMc}, // [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA - {0x11305, 0x1130C, prAL, gcLo}, // [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L - {0x1130F, 0x11310, prAL, gcLo}, // [2] GRANTHA LETTER EE..GRANTHA LETTER AI - {0x11313, 0x11328, prAL, gcLo}, // [22] GRANTHA LETTER OO..GRANTHA LETTER NA - {0x1132A, 0x11330, prAL, gcLo}, // [7] GRANTHA LETTER PA..GRANTHA LETTER RA - {0x11332, 0x11333, prAL, gcLo}, // [2] GRANTHA LETTER LA..GRANTHA LETTER LLA - {0x11335, 0x11339, prAL, gcLo}, // [5] GRANTHA LETTER VA..GRANTHA LETTER HA - {0x1133B, 0x1133C, prCM, gcMn}, // [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA - {0x1133D, 0x1133D, prAL, gcLo}, // GRANTHA SIGN AVAGRAHA - {0x1133E, 0x1133F, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I - {0x11340, 0x11340, prCM, gcMn}, // GRANTHA VOWEL SIGN II - {0x11341, 0x11344, prCM, gcMc}, // [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR - {0x11347, 0x11348, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI - {0x1134B, 0x1134D, prCM, gcMc}, // [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA - {0x11350, 0x11350, prAL, gcLo}, // GRANTHA OM - {0x11357, 0x11357, prCM, gcMc}, // GRANTHA AU LENGTH MARK - {0x1135D, 0x11361, prAL, gcLo}, // [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL - {0x11362, 0x11363, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - {0x11366, 0x1136C, prCM, gcMn}, // [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - {0x11370, 0x11374, prCM, gcMn}, // [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA - {0x11400, 0x11434, prAL, gcLo}, // [53] NEWA LETTER A..NEWA LETTER HA - {0x11435, 0x11437, prCM, gcMc}, // [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II - {0x11438, 0x1143F, prCM, gcMn}, // [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI - {0x11440, 0x11441, prCM, gcMc}, // [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU - {0x11442, 0x11444, prCM, gcMn}, // [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA - {0x11445, 0x11445, prCM, gcMc}, // NEWA SIGN VISARGA - {0x11446, 0x11446, prCM, gcMn}, // NEWA SIGN NUKTA - {0x11447, 0x1144A, prAL, gcLo}, // [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - {0x1144B, 0x1144E, prBA, gcPo}, // [4] NEWA DANDA..NEWA GAP FILLER - {0x1144F, 0x1144F, prAL, gcPo}, // NEWA ABBREVIATION SIGN - {0x11450, 0x11459, prNU, gcNd}, // [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - {0x1145A, 0x1145B, prBA, gcPo}, // [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK - {0x1145D, 0x1145D, prAL, gcPo}, // NEWA INSERTION SIGN - {0x1145E, 0x1145E, prCM, gcMn}, // NEWA SANDHI MARK - {0x1145F, 0x11461, prAL, gcLo}, // [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA - {0x11480, 0x114AF, prAL, gcLo}, // [48] TIRHUTA ANJI..TIRHUTA LETTER HA - {0x114B0, 0x114B2, prCM, gcMc}, // [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - {0x114B3, 0x114B8, prCM, gcMn}, // [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - {0x114B9, 0x114B9, prCM, gcMc}, // TIRHUTA VOWEL SIGN E - {0x114BA, 0x114BA, prCM, gcMn}, // TIRHUTA VOWEL SIGN SHORT E - {0x114BB, 0x114BE, prCM, gcMc}, // [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU - {0x114BF, 0x114C0, prCM, gcMn}, // [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA - {0x114C1, 0x114C1, prCM, gcMc}, // TIRHUTA SIGN VISARGA - {0x114C2, 0x114C3, prCM, gcMn}, // [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA - {0x114C4, 0x114C5, prAL, gcLo}, // [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - {0x114C6, 0x114C6, prAL, gcPo}, // TIRHUTA ABBREVIATION SIGN - {0x114C7, 0x114C7, prAL, gcLo}, // TIRHUTA OM - {0x114D0, 0x114D9, prNU, gcNd}, // [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE - {0x11580, 0x115AE, prAL, gcLo}, // [47] SIDDHAM LETTER A..SIDDHAM LETTER HA - {0x115AF, 0x115B1, prCM, gcMc}, // [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II - {0x115B2, 0x115B5, prCM, gcMn}, // [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR - {0x115B8, 0x115BB, prCM, gcMc}, // [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU - {0x115BC, 0x115BD, prCM, gcMn}, // [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA - {0x115BE, 0x115BE, prCM, gcMc}, // SIDDHAM SIGN VISARGA - {0x115BF, 0x115C0, prCM, gcMn}, // [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA - {0x115C1, 0x115C1, prBB, gcPo}, // SIDDHAM SIGN SIDDHAM - {0x115C2, 0x115C3, prBA, gcPo}, // [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA - {0x115C4, 0x115C5, prEX, gcPo}, // [2] SIDDHAM SEPARATOR DOT..SIDDHAM SEPARATOR BAR - {0x115C6, 0x115C8, prAL, gcPo}, // [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3 - {0x115C9, 0x115D7, prBA, gcPo}, // [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES - {0x115D8, 0x115DB, prAL, gcLo}, // [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U - {0x115DC, 0x115DD, prCM, gcMn}, // [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU - {0x11600, 0x1162F, prAL, gcLo}, // [48] MODI LETTER A..MODI LETTER LLA - {0x11630, 0x11632, prCM, gcMc}, // [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II - {0x11633, 0x1163A, prCM, gcMn}, // [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI - {0x1163B, 0x1163C, prCM, gcMc}, // [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU - {0x1163D, 0x1163D, prCM, gcMn}, // MODI SIGN ANUSVARA - {0x1163E, 0x1163E, prCM, gcMc}, // MODI SIGN VISARGA - {0x1163F, 0x11640, prCM, gcMn}, // [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA - {0x11641, 0x11642, prBA, gcPo}, // [2] MODI DANDA..MODI DOUBLE DANDA - {0x11643, 0x11643, prAL, gcPo}, // MODI ABBREVIATION SIGN - {0x11644, 0x11644, prAL, gcLo}, // MODI SIGN HUVA - {0x11650, 0x11659, prNU, gcNd}, // [10] MODI DIGIT ZERO..MODI DIGIT NINE - {0x11660, 0x1166C, prBB, gcPo}, // [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT - {0x11680, 0x116AA, prAL, gcLo}, // [43] TAKRI LETTER A..TAKRI LETTER RRA - {0x116AB, 0x116AB, prCM, gcMn}, // TAKRI SIGN ANUSVARA - {0x116AC, 0x116AC, prCM, gcMc}, // TAKRI SIGN VISARGA - {0x116AD, 0x116AD, prCM, gcMn}, // TAKRI VOWEL SIGN AA - {0x116AE, 0x116AF, prCM, gcMc}, // [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II - {0x116B0, 0x116B5, prCM, gcMn}, // [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU - {0x116B6, 0x116B6, prCM, gcMc}, // TAKRI SIGN VIRAMA - {0x116B7, 0x116B7, prCM, gcMn}, // TAKRI SIGN NUKTA - {0x116B8, 0x116B8, prAL, gcLo}, // TAKRI LETTER ARCHAIC KHA - {0x116B9, 0x116B9, prAL, gcPo}, // TAKRI ABBREVIATION SIGN - {0x116C0, 0x116C9, prNU, gcNd}, // [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE - {0x11700, 0x1171A, prSA, gcLo}, // [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA - {0x1171D, 0x1171F, prSA, gcMn}, // [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - {0x11720, 0x11721, prSA, gcMc}, // [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA - {0x11722, 0x11725, prSA, gcMn}, // [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - {0x11726, 0x11726, prSA, gcMc}, // AHOM VOWEL SIGN E - {0x11727, 0x1172B, prSA, gcMn}, // [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER - {0x11730, 0x11739, prNU, gcNd}, // [10] AHOM DIGIT ZERO..AHOM DIGIT NINE - {0x1173A, 0x1173B, prSA, gcNo}, // [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY - {0x1173C, 0x1173E, prBA, gcPo}, // [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI - {0x1173F, 0x1173F, prSA, gcSo}, // AHOM SYMBOL VI - {0x11740, 0x11746, prSA, gcLo}, // [7] AHOM LETTER CA..AHOM LETTER LLA - {0x11800, 0x1182B, prAL, gcLo}, // [44] DOGRA LETTER A..DOGRA LETTER RRA - {0x1182C, 0x1182E, prCM, gcMc}, // [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II - {0x1182F, 0x11837, prCM, gcMn}, // [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA - {0x11838, 0x11838, prCM, gcMc}, // DOGRA SIGN VISARGA - {0x11839, 0x1183A, prCM, gcMn}, // [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA - {0x1183B, 0x1183B, prAL, gcPo}, // DOGRA ABBREVIATION SIGN - {0x118A0, 0x118DF, prAL, gcLC}, // [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - {0x118E0, 0x118E9, prNU, gcNd}, // [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - {0x118EA, 0x118F2, prAL, gcNo}, // [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY - {0x118FF, 0x118FF, prAL, gcLo}, // WARANG CITI OM - {0x11900, 0x11906, prAL, gcLo}, // [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E - {0x11909, 0x11909, prAL, gcLo}, // DIVES AKURU LETTER O - {0x1190C, 0x11913, prAL, gcLo}, // [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA - {0x11915, 0x11916, prAL, gcLo}, // [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA - {0x11918, 0x1192F, prAL, gcLo}, // [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA - {0x11930, 0x11935, prCM, gcMc}, // [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E - {0x11937, 0x11938, prCM, gcMc}, // [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O - {0x1193B, 0x1193C, prCM, gcMn}, // [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU - {0x1193D, 0x1193D, prCM, gcMc}, // DIVES AKURU SIGN HALANTA - {0x1193E, 0x1193E, prCM, gcMn}, // DIVES AKURU VIRAMA - {0x1193F, 0x1193F, prAL, gcLo}, // DIVES AKURU PREFIXED NASAL SIGN - {0x11940, 0x11940, prCM, gcMc}, // DIVES AKURU MEDIAL YA - {0x11941, 0x11941, prAL, gcLo}, // DIVES AKURU INITIAL RA - {0x11942, 0x11942, prCM, gcMc}, // DIVES AKURU MEDIAL RA - {0x11943, 0x11943, prCM, gcMn}, // DIVES AKURU SIGN NUKTA - {0x11944, 0x11946, prBA, gcPo}, // [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK - {0x11950, 0x11959, prNU, gcNd}, // [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE - {0x119A0, 0x119A7, prAL, gcLo}, // [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR - {0x119AA, 0x119D0, prAL, gcLo}, // [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA - {0x119D1, 0x119D3, prCM, gcMc}, // [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II - {0x119D4, 0x119D7, prCM, gcMn}, // [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR - {0x119DA, 0x119DB, prCM, gcMn}, // [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI - {0x119DC, 0x119DF, prCM, gcMc}, // [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA - {0x119E0, 0x119E0, prCM, gcMn}, // NANDINAGARI SIGN VIRAMA - {0x119E1, 0x119E1, prAL, gcLo}, // NANDINAGARI SIGN AVAGRAHA - {0x119E2, 0x119E2, prBB, gcPo}, // NANDINAGARI SIGN SIDDHAM - {0x119E3, 0x119E3, prAL, gcLo}, // NANDINAGARI HEADSTROKE - {0x119E4, 0x119E4, prCM, gcMc}, // NANDINAGARI VOWEL SIGN PRISHTHAMATRA E - {0x11A00, 0x11A00, prAL, gcLo}, // ZANABAZAR SQUARE LETTER A - {0x11A01, 0x11A0A, prCM, gcMn}, // [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK - {0x11A0B, 0x11A32, prAL, gcLo}, // [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA - {0x11A33, 0x11A38, prCM, gcMn}, // [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA - {0x11A39, 0x11A39, prCM, gcMc}, // ZANABAZAR SQUARE SIGN VISARGA - {0x11A3A, 0x11A3A, prAL, gcLo}, // ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA - {0x11A3B, 0x11A3E, prCM, gcMn}, // [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA - {0x11A3F, 0x11A3F, prBB, gcPo}, // ZANABAZAR SQUARE INITIAL HEAD MARK - {0x11A40, 0x11A40, prAL, gcPo}, // ZANABAZAR SQUARE CLOSING HEAD MARK - {0x11A41, 0x11A44, prBA, gcPo}, // [4] ZANABAZAR SQUARE MARK TSHEG..ZANABAZAR SQUARE MARK LONG TSHEG - {0x11A45, 0x11A45, prBB, gcPo}, // ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK - {0x11A46, 0x11A46, prAL, gcPo}, // ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK - {0x11A47, 0x11A47, prCM, gcMn}, // ZANABAZAR SQUARE SUBJOINER - {0x11A50, 0x11A50, prAL, gcLo}, // SOYOMBO LETTER A - {0x11A51, 0x11A56, prCM, gcMn}, // [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE - {0x11A57, 0x11A58, prCM, gcMc}, // [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU - {0x11A59, 0x11A5B, prCM, gcMn}, // [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK - {0x11A5C, 0x11A89, prAL, gcLo}, // [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA - {0x11A8A, 0x11A96, prCM, gcMn}, // [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA - {0x11A97, 0x11A97, prCM, gcMc}, // SOYOMBO SIGN VISARGA - {0x11A98, 0x11A99, prCM, gcMn}, // [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER - {0x11A9A, 0x11A9C, prBA, gcPo}, // [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD - {0x11A9D, 0x11A9D, prAL, gcLo}, // SOYOMBO MARK PLUTA - {0x11A9E, 0x11AA0, prBB, gcPo}, // [3] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO HEAD MARK WITH MOON AND SUN - {0x11AA1, 0x11AA2, prBA, gcPo}, // [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 - {0x11AB0, 0x11ABF, prAL, gcLo}, // [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA - {0x11AC0, 0x11AF8, prAL, gcLo}, // [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL - {0x11B00, 0x11B09, prBB, gcPo}, // [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU - {0x11C00, 0x11C08, prAL, gcLo}, // [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L - {0x11C0A, 0x11C2E, prAL, gcLo}, // [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA - {0x11C2F, 0x11C2F, prCM, gcMc}, // BHAIKSUKI VOWEL SIGN AA - {0x11C30, 0x11C36, prCM, gcMn}, // [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L - {0x11C38, 0x11C3D, prCM, gcMn}, // [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA - {0x11C3E, 0x11C3E, prCM, gcMc}, // BHAIKSUKI SIGN VISARGA - {0x11C3F, 0x11C3F, prCM, gcMn}, // BHAIKSUKI SIGN VIRAMA - {0x11C40, 0x11C40, prAL, gcLo}, // BHAIKSUKI SIGN AVAGRAHA - {0x11C41, 0x11C45, prBA, gcPo}, // [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 - {0x11C50, 0x11C59, prNU, gcNd}, // [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE - {0x11C5A, 0x11C6C, prAL, gcNo}, // [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK - {0x11C70, 0x11C70, prBB, gcPo}, // MARCHEN HEAD MARK - {0x11C71, 0x11C71, prEX, gcPo}, // MARCHEN MARK SHAD - {0x11C72, 0x11C8F, prAL, gcLo}, // [30] MARCHEN LETTER KA..MARCHEN LETTER A - {0x11C92, 0x11CA7, prCM, gcMn}, // [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA - {0x11CA9, 0x11CA9, prCM, gcMc}, // MARCHEN SUBJOINED LETTER YA - {0x11CAA, 0x11CB0, prCM, gcMn}, // [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA - {0x11CB1, 0x11CB1, prCM, gcMc}, // MARCHEN VOWEL SIGN I - {0x11CB2, 0x11CB3, prCM, gcMn}, // [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E - {0x11CB4, 0x11CB4, prCM, gcMc}, // MARCHEN VOWEL SIGN O - {0x11CB5, 0x11CB6, prCM, gcMn}, // [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - {0x11D00, 0x11D06, prAL, gcLo}, // [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E - {0x11D08, 0x11D09, prAL, gcLo}, // [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O - {0x11D0B, 0x11D30, prAL, gcLo}, // [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA - {0x11D31, 0x11D36, prCM, gcMn}, // [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R - {0x11D3A, 0x11D3A, prCM, gcMn}, // MASARAM GONDI VOWEL SIGN E - {0x11D3C, 0x11D3D, prCM, gcMn}, // [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O - {0x11D3F, 0x11D45, prCM, gcMn}, // [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA - {0x11D46, 0x11D46, prAL, gcLo}, // MASARAM GONDI REPHA - {0x11D47, 0x11D47, prCM, gcMn}, // MASARAM GONDI RA-KARA - {0x11D50, 0x11D59, prNU, gcNd}, // [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE - {0x11D60, 0x11D65, prAL, gcLo}, // [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU - {0x11D67, 0x11D68, prAL, gcLo}, // [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI - {0x11D6A, 0x11D89, prAL, gcLo}, // [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA - {0x11D8A, 0x11D8E, prCM, gcMc}, // [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU - {0x11D90, 0x11D91, prCM, gcMn}, // [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI - {0x11D93, 0x11D94, prCM, gcMc}, // [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU - {0x11D95, 0x11D95, prCM, gcMn}, // GUNJALA GONDI SIGN ANUSVARA - {0x11D96, 0x11D96, prCM, gcMc}, // GUNJALA GONDI SIGN VISARGA - {0x11D97, 0x11D97, prCM, gcMn}, // GUNJALA GONDI VIRAMA - {0x11D98, 0x11D98, prAL, gcLo}, // GUNJALA GONDI OM - {0x11DA0, 0x11DA9, prNU, gcNd}, // [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE - {0x11EE0, 0x11EF2, prAL, gcLo}, // [19] MAKASAR LETTER KA..MAKASAR ANGKA - {0x11EF3, 0x11EF4, prCM, gcMn}, // [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U - {0x11EF5, 0x11EF6, prCM, gcMc}, // [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O - {0x11EF7, 0x11EF8, prAL, gcPo}, // [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION - {0x11F00, 0x11F01, prCM, gcMn}, // [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA - {0x11F02, 0x11F02, prAL, gcLo}, // KAWI SIGN REPHA - {0x11F03, 0x11F03, prCM, gcMc}, // KAWI SIGN VISARGA - {0x11F04, 0x11F10, prAL, gcLo}, // [13] KAWI LETTER A..KAWI LETTER O - {0x11F12, 0x11F33, prAL, gcLo}, // [34] KAWI LETTER KA..KAWI LETTER JNYA - {0x11F34, 0x11F35, prCM, gcMc}, // [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA - {0x11F36, 0x11F3A, prCM, gcMn}, // [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R - {0x11F3E, 0x11F3F, prCM, gcMc}, // [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI - {0x11F40, 0x11F40, prCM, gcMn}, // KAWI VOWEL SIGN EU - {0x11F41, 0x11F41, prCM, gcMc}, // KAWI SIGN KILLER - {0x11F42, 0x11F42, prCM, gcMn}, // KAWI CONJOINER - {0x11F43, 0x11F44, prBA, gcPo}, // [2] KAWI DANDA..KAWI DOUBLE DANDA - {0x11F45, 0x11F4F, prID, gcPo}, // [11] KAWI PUNCTUATION SECTION MARKER..KAWI PUNCTUATION CLOSING SPIRAL - {0x11F50, 0x11F59, prNU, gcNd}, // [10] KAWI DIGIT ZERO..KAWI DIGIT NINE - {0x11FB0, 0x11FB0, prAL, gcLo}, // LISU LETTER YHA - {0x11FC0, 0x11FD4, prAL, gcNo}, // [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH - {0x11FD5, 0x11FDC, prAL, gcSo}, // [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI - {0x11FDD, 0x11FE0, prPO, gcSc}, // [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN - {0x11FE1, 0x11FF1, prAL, gcSo}, // [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA - {0x11FFF, 0x11FFF, prBA, gcPo}, // TAMIL PUNCTUATION END OF TEXT - {0x12000, 0x12399, prAL, gcLo}, // [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - {0x12400, 0x1246E, prAL, gcNl}, // [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - {0x12470, 0x12474, prBA, gcPo}, // [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON - {0x12480, 0x12543, prAL, gcLo}, // [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU - {0x12F90, 0x12FF0, prAL, gcLo}, // [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 - {0x12FF1, 0x12FF2, prAL, gcPo}, // [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 - {0x13000, 0x13257, prAL, gcLo}, // [600] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH O006 - {0x13258, 0x1325A, prOP, gcLo}, // [3] EGYPTIAN HIEROGLYPH O006A..EGYPTIAN HIEROGLYPH O006C - {0x1325B, 0x1325D, prCL, gcLo}, // [3] EGYPTIAN HIEROGLYPH O006D..EGYPTIAN HIEROGLYPH O006F - {0x1325E, 0x13281, prAL, gcLo}, // [36] EGYPTIAN HIEROGLYPH O007..EGYPTIAN HIEROGLYPH O033 - {0x13282, 0x13282, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O033A - {0x13283, 0x13285, prAL, gcLo}, // [3] EGYPTIAN HIEROGLYPH O034..EGYPTIAN HIEROGLYPH O036 - {0x13286, 0x13286, prOP, gcLo}, // EGYPTIAN HIEROGLYPH O036A - {0x13287, 0x13287, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O036B - {0x13288, 0x13288, prOP, gcLo}, // EGYPTIAN HIEROGLYPH O036C - {0x13289, 0x13289, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O036D - {0x1328A, 0x13378, prAL, gcLo}, // [239] EGYPTIAN HIEROGLYPH O037..EGYPTIAN HIEROGLYPH V011 - {0x13379, 0x13379, prOP, gcLo}, // EGYPTIAN HIEROGLYPH V011A - {0x1337A, 0x1337B, prCL, gcLo}, // [2] EGYPTIAN HIEROGLYPH V011B..EGYPTIAN HIEROGLYPH V011C - {0x1337C, 0x1342F, prAL, gcLo}, // [180] EGYPTIAN HIEROGLYPH V012..EGYPTIAN HIEROGLYPH V011D - {0x13430, 0x13436, prGL, gcCf}, // [7] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH OVERLAY MIDDLE - {0x13437, 0x13437, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN SEGMENT - {0x13438, 0x13438, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END SEGMENT - {0x13439, 0x1343B, prGL, gcCf}, // [3] EGYPTIAN HIEROGLYPH INSERT AT MIDDLE..EGYPTIAN HIEROGLYPH INSERT AT BOTTOM - {0x1343C, 0x1343C, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE - {0x1343D, 0x1343D, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END ENCLOSURE - {0x1343E, 0x1343E, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE - {0x1343F, 0x1343F, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE - {0x13440, 0x13440, prCM, gcMn}, // EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY - {0x13441, 0x13446, prAL, gcLo}, // [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN - {0x13447, 0x13455, prCM, gcMn}, // [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED - {0x14400, 0x145CD, prAL, gcLo}, // [462] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A409 - {0x145CE, 0x145CE, prOP, gcLo}, // ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK - {0x145CF, 0x145CF, prCL, gcLo}, // ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK - {0x145D0, 0x14646, prAL, gcLo}, // [119] ANATOLIAN HIEROGLYPH A411..ANATOLIAN HIEROGLYPH A530 - {0x16800, 0x16A38, prAL, gcLo}, // [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ - {0x16A40, 0x16A5E, prAL, gcLo}, // [31] MRO LETTER TA..MRO LETTER TEK - {0x16A60, 0x16A69, prNU, gcNd}, // [10] MRO DIGIT ZERO..MRO DIGIT NINE - {0x16A6E, 0x16A6F, prBA, gcPo}, // [2] MRO DANDA..MRO DOUBLE DANDA - {0x16A70, 0x16ABE, prAL, gcLo}, // [79] TANGSA LETTER OZ..TANGSA LETTER ZA - {0x16AC0, 0x16AC9, prNU, gcNd}, // [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE - {0x16AD0, 0x16AED, prAL, gcLo}, // [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I - {0x16AF0, 0x16AF4, prCM, gcMn}, // [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - {0x16AF5, 0x16AF5, prBA, gcPo}, // BASSA VAH FULL STOP - {0x16B00, 0x16B2F, prAL, gcLo}, // [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU - {0x16B30, 0x16B36, prCM, gcMn}, // [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - {0x16B37, 0x16B39, prBA, gcPo}, // [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM - {0x16B3A, 0x16B3B, prAL, gcPo}, // [2] PAHAWH HMONG SIGN VOS THIAB..PAHAWH HMONG SIGN VOS FEEM - {0x16B3C, 0x16B3F, prAL, gcSo}, // [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB - {0x16B40, 0x16B43, prAL, gcLm}, // [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM - {0x16B44, 0x16B44, prBA, gcPo}, // PAHAWH HMONG SIGN XAUS - {0x16B45, 0x16B45, prAL, gcSo}, // PAHAWH HMONG SIGN CIM TSOV ROG - {0x16B50, 0x16B59, prNU, gcNd}, // [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE - {0x16B5B, 0x16B61, prAL, gcNo}, // [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS - {0x16B63, 0x16B77, prAL, gcLo}, // [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS - {0x16B7D, 0x16B8F, prAL, gcLo}, // [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ - {0x16E40, 0x16E7F, prAL, gcLC}, // [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y - {0x16E80, 0x16E96, prAL, gcNo}, // [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM - {0x16E97, 0x16E98, prBA, gcPo}, // [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP - {0x16E99, 0x16E9A, prAL, gcPo}, // [2] MEDEFAIDRIN SYMBOL AIVA..MEDEFAIDRIN EXCLAMATION OH - {0x16F00, 0x16F4A, prAL, gcLo}, // [75] MIAO LETTER PA..MIAO LETTER RTE - {0x16F4F, 0x16F4F, prCM, gcMn}, // MIAO SIGN CONSONANT MODIFIER BAR - {0x16F50, 0x16F50, prAL, gcLo}, // MIAO LETTER NASALIZATION - {0x16F51, 0x16F87, prCM, gcMc}, // [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI - {0x16F8F, 0x16F92, prCM, gcMn}, // [4] MIAO TONE RIGHT..MIAO TONE BELOW - {0x16F93, 0x16F9F, prAL, gcLm}, // [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 - {0x16FE0, 0x16FE1, prNS, gcLm}, // [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK - {0x16FE2, 0x16FE2, prNS, gcPo}, // OLD CHINESE HOOK MARK - {0x16FE3, 0x16FE3, prNS, gcLm}, // OLD CHINESE ITERATION MARK - {0x16FE4, 0x16FE4, prGL, gcMn}, // KHITAN SMALL SCRIPT FILLER - {0x16FF0, 0x16FF1, prCM, gcMc}, // [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY - {0x17000, 0x187F7, prID, gcLo}, // [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 - {0x18800, 0x18AFF, prID, gcLo}, // [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 - {0x18B00, 0x18CD5, prAL, gcLo}, // [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 - {0x18D00, 0x18D08, prID, gcLo}, // [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 - {0x1AFF0, 0x1AFF3, prAL, gcLm}, // [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 - {0x1AFF5, 0x1AFFB, prAL, gcLm}, // [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 - {0x1AFFD, 0x1AFFE, prAL, gcLm}, // [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 - {0x1B000, 0x1B0FF, prID, gcLo}, // [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 - {0x1B100, 0x1B122, prID, gcLo}, // [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU - {0x1B132, 0x1B132, prCJ, gcLo}, // HIRAGANA LETTER SMALL KO - {0x1B150, 0x1B152, prCJ, gcLo}, // [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO - {0x1B155, 0x1B155, prCJ, gcLo}, // KATAKANA LETTER SMALL KO - {0x1B164, 0x1B167, prCJ, gcLo}, // [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N - {0x1B170, 0x1B2FB, prID, gcLo}, // [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB - {0x1BC00, 0x1BC6A, prAL, gcLo}, // [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - {0x1BC70, 0x1BC7C, prAL, gcLo}, // [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK - {0x1BC80, 0x1BC88, prAL, gcLo}, // [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL - {0x1BC90, 0x1BC99, prAL, gcLo}, // [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW - {0x1BC9C, 0x1BC9C, prAL, gcSo}, // DUPLOYAN SIGN O WITH CROSS - {0x1BC9D, 0x1BC9E, prCM, gcMn}, // [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - {0x1BC9F, 0x1BC9F, prBA, gcPo}, // DUPLOYAN PUNCTUATION CHINOOK FULL STOP - {0x1BCA0, 0x1BCA3, prCM, gcCf}, // [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - {0x1CF00, 0x1CF2D, prCM, gcMn}, // [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT - {0x1CF30, 0x1CF46, prCM, gcMn}, // [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG - {0x1CF50, 0x1CFC3, prAL, gcSo}, // [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK - {0x1D000, 0x1D0F5, prAL, gcSo}, // [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO - {0x1D100, 0x1D126, prAL, gcSo}, // [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 - {0x1D129, 0x1D164, prAL, gcSo}, // [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE - {0x1D165, 0x1D166, prCM, gcMc}, // [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM - {0x1D167, 0x1D169, prCM, gcMn}, // [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 - {0x1D16A, 0x1D16C, prAL, gcSo}, // [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 - {0x1D16D, 0x1D172, prCM, gcMc}, // [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 - {0x1D173, 0x1D17A, prCM, gcCf}, // [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE - {0x1D17B, 0x1D182, prCM, gcMn}, // [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE - {0x1D183, 0x1D184, prAL, gcSo}, // [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN - {0x1D185, 0x1D18B, prCM, gcMn}, // [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE - {0x1D18C, 0x1D1A9, prAL, gcSo}, // [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH - {0x1D1AA, 0x1D1AD, prCM, gcMn}, // [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - {0x1D1AE, 0x1D1EA, prAL, gcSo}, // [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON - {0x1D200, 0x1D241, prAL, gcSo}, // [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 - {0x1D242, 0x1D244, prCM, gcMn}, // [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME - {0x1D245, 0x1D245, prAL, gcSo}, // GREEK MUSICAL LEIMMA - {0x1D2C0, 0x1D2D3, prAL, gcNo}, // [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN - {0x1D2E0, 0x1D2F3, prAL, gcNo}, // [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN - {0x1D300, 0x1D356, prAL, gcSo}, // [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING - {0x1D360, 0x1D378, prAL, gcNo}, // [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE - {0x1D400, 0x1D454, prAL, gcLC}, // [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G - {0x1D456, 0x1D49C, prAL, gcLC}, // [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A - {0x1D49E, 0x1D49F, prAL, gcLu}, // [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D - {0x1D4A2, 0x1D4A2, prAL, gcLu}, // MATHEMATICAL SCRIPT CAPITAL G - {0x1D4A5, 0x1D4A6, prAL, gcLu}, // [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K - {0x1D4A9, 0x1D4AC, prAL, gcLu}, // [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q - {0x1D4AE, 0x1D4B9, prAL, gcLC}, // [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D - {0x1D4BB, 0x1D4BB, prAL, gcLl}, // MATHEMATICAL SCRIPT SMALL F - {0x1D4BD, 0x1D4C3, prAL, gcLl}, // [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N - {0x1D4C5, 0x1D505, prAL, gcLC}, // [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B - {0x1D507, 0x1D50A, prAL, gcLu}, // [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G - {0x1D50D, 0x1D514, prAL, gcLu}, // [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q - {0x1D516, 0x1D51C, prAL, gcLu}, // [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y - {0x1D51E, 0x1D539, prAL, gcLC}, // [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B - {0x1D53B, 0x1D53E, prAL, gcLu}, // [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G - {0x1D540, 0x1D544, prAL, gcLu}, // [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M - {0x1D546, 0x1D546, prAL, gcLu}, // MATHEMATICAL DOUBLE-STRUCK CAPITAL O - {0x1D54A, 0x1D550, prAL, gcLu}, // [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y - {0x1D552, 0x1D6A5, prAL, gcLC}, // [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J - {0x1D6A8, 0x1D6C0, prAL, gcLu}, // [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA - {0x1D6C1, 0x1D6C1, prAL, gcSm}, // MATHEMATICAL BOLD NABLA - {0x1D6C2, 0x1D6DA, prAL, gcLl}, // [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA - {0x1D6DB, 0x1D6DB, prAL, gcSm}, // MATHEMATICAL BOLD PARTIAL DIFFERENTIAL - {0x1D6DC, 0x1D6FA, prAL, gcLC}, // [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA - {0x1D6FB, 0x1D6FB, prAL, gcSm}, // MATHEMATICAL ITALIC NABLA - {0x1D6FC, 0x1D714, prAL, gcLl}, // [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA - {0x1D715, 0x1D715, prAL, gcSm}, // MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL - {0x1D716, 0x1D734, prAL, gcLC}, // [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA - {0x1D735, 0x1D735, prAL, gcSm}, // MATHEMATICAL BOLD ITALIC NABLA - {0x1D736, 0x1D74E, prAL, gcLl}, // [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA - {0x1D74F, 0x1D74F, prAL, gcSm}, // MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL - {0x1D750, 0x1D76E, prAL, gcLC}, // [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - {0x1D76F, 0x1D76F, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD NABLA - {0x1D770, 0x1D788, prAL, gcLl}, // [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA - {0x1D789, 0x1D789, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL - {0x1D78A, 0x1D7A8, prAL, gcLC}, // [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - {0x1D7A9, 0x1D7A9, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA - {0x1D7AA, 0x1D7C2, prAL, gcLl}, // [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - {0x1D7C3, 0x1D7C3, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL - {0x1D7C4, 0x1D7CB, prAL, gcLC}, // [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA - {0x1D7CE, 0x1D7FF, prNU, gcNd}, // [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE - {0x1D800, 0x1D9FF, prAL, gcSo}, // [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD - {0x1DA00, 0x1DA36, prCM, gcMn}, // [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN - {0x1DA37, 0x1DA3A, prAL, gcSo}, // [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE - {0x1DA3B, 0x1DA6C, prCM, gcMn}, // [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT - {0x1DA6D, 0x1DA74, prAL, gcSo}, // [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING - {0x1DA75, 0x1DA75, prCM, gcMn}, // SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS - {0x1DA76, 0x1DA83, prAL, gcSo}, // [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH - {0x1DA84, 0x1DA84, prCM, gcMn}, // SIGNWRITING LOCATION HEAD NECK - {0x1DA85, 0x1DA86, prAL, gcSo}, // [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS - {0x1DA87, 0x1DA8A, prBA, gcPo}, // [4] SIGNWRITING COMMA..SIGNWRITING COLON - {0x1DA8B, 0x1DA8B, prAL, gcPo}, // SIGNWRITING PARENTHESIS - {0x1DA9B, 0x1DA9F, prCM, gcMn}, // [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - {0x1DAA1, 0x1DAAF, prCM, gcMn}, // [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 - {0x1DF00, 0x1DF09, prAL, gcLl}, // [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK - {0x1DF0A, 0x1DF0A, prAL, gcLo}, // LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK - {0x1DF0B, 0x1DF1E, prAL, gcLl}, // [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL - {0x1DF25, 0x1DF2A, prAL, gcLl}, // [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK - {0x1E000, 0x1E006, prCM, gcMn}, // [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE - {0x1E008, 0x1E018, prCM, gcMn}, // [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU - {0x1E01B, 0x1E021, prCM, gcMn}, // [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI - {0x1E023, 0x1E024, prCM, gcMn}, // [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS - {0x1E026, 0x1E02A, prCM, gcMn}, // [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - {0x1E030, 0x1E06D, prAL, gcLm}, // [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE - {0x1E08F, 0x1E08F, prCM, gcMn}, // COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - {0x1E100, 0x1E12C, prAL, gcLo}, // [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W - {0x1E130, 0x1E136, prCM, gcMn}, // [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D - {0x1E137, 0x1E13D, prAL, gcLm}, // [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER - {0x1E140, 0x1E149, prNU, gcNd}, // [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE - {0x1E14E, 0x1E14E, prAL, gcLo}, // NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ - {0x1E14F, 0x1E14F, prAL, gcSo}, // NYIAKENG PUACHUE HMONG CIRCLED CA - {0x1E290, 0x1E2AD, prAL, gcLo}, // [30] TOTO LETTER PA..TOTO LETTER A - {0x1E2AE, 0x1E2AE, prCM, gcMn}, // TOTO SIGN RISING TONE - {0x1E2C0, 0x1E2EB, prAL, gcLo}, // [44] WANCHO LETTER AA..WANCHO LETTER YIH - {0x1E2EC, 0x1E2EF, prCM, gcMn}, // [4] WANCHO TONE TUP..WANCHO TONE KOINI - {0x1E2F0, 0x1E2F9, prNU, gcNd}, // [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE - {0x1E2FF, 0x1E2FF, prPR, gcSc}, // WANCHO NGUN SIGN - {0x1E4D0, 0x1E4EA, prAL, gcLo}, // [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL - {0x1E4EB, 0x1E4EB, prAL, gcLm}, // NAG MUNDARI SIGN OJOD - {0x1E4EC, 0x1E4EF, prCM, gcMn}, // [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH - {0x1E4F0, 0x1E4F9, prNU, gcNd}, // [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE - {0x1E7E0, 0x1E7E6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO - {0x1E7E8, 0x1E7EB, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE - {0x1E7ED, 0x1E7EE, prAL, gcLo}, // [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE - {0x1E7F0, 0x1E7FE, prAL, gcLo}, // [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE - {0x1E800, 0x1E8C4, prAL, gcLo}, // [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - {0x1E8C7, 0x1E8CF, prAL, gcNo}, // [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE - {0x1E8D0, 0x1E8D6, prCM, gcMn}, // [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS - {0x1E900, 0x1E943, prAL, gcLC}, // [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - {0x1E944, 0x1E94A, prCM, gcMn}, // [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - {0x1E94B, 0x1E94B, prAL, gcLm}, // ADLAM NASALIZATION MARK - {0x1E950, 0x1E959, prNU, gcNd}, // [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - {0x1E95E, 0x1E95F, prOP, gcPo}, // [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK - {0x1EC71, 0x1ECAB, prAL, gcNo}, // [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE - {0x1ECAC, 0x1ECAC, prPO, gcSo}, // INDIC SIYAQ PLACEHOLDER - {0x1ECAD, 0x1ECAF, prAL, gcNo}, // [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS - {0x1ECB0, 0x1ECB0, prPO, gcSc}, // INDIC SIYAQ RUPEE MARK - {0x1ECB1, 0x1ECB4, prAL, gcNo}, // [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK - {0x1ED01, 0x1ED2D, prAL, gcNo}, // [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND - {0x1ED2E, 0x1ED2E, prAL, gcSo}, // OTTOMAN SIYAQ MARRATAN - {0x1ED2F, 0x1ED3D, prAL, gcNo}, // [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH - {0x1EE00, 0x1EE03, prAL, gcLo}, // [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - {0x1EE05, 0x1EE1F, prAL, gcLo}, // [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - {0x1EE21, 0x1EE22, prAL, gcLo}, // [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM - {0x1EE24, 0x1EE24, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL HEH - {0x1EE27, 0x1EE27, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL HAH - {0x1EE29, 0x1EE32, prAL, gcLo}, // [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF - {0x1EE34, 0x1EE37, prAL, gcLo}, // [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH - {0x1EE39, 0x1EE39, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL DAD - {0x1EE3B, 0x1EE3B, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL GHAIN - {0x1EE42, 0x1EE42, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED JEEM - {0x1EE47, 0x1EE47, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED HAH - {0x1EE49, 0x1EE49, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED YEH - {0x1EE4B, 0x1EE4B, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED LAM - {0x1EE4D, 0x1EE4F, prAL, gcLo}, // [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN - {0x1EE51, 0x1EE52, prAL, gcLo}, // [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF - {0x1EE54, 0x1EE54, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED SHEEN - {0x1EE57, 0x1EE57, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED KHAH - {0x1EE59, 0x1EE59, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DAD - {0x1EE5B, 0x1EE5B, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED GHAIN - {0x1EE5D, 0x1EE5D, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DOTLESS NOON - {0x1EE5F, 0x1EE5F, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DOTLESS QAF - {0x1EE61, 0x1EE62, prAL, gcLo}, // [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM - {0x1EE64, 0x1EE64, prAL, gcLo}, // ARABIC MATHEMATICAL STRETCHED HEH - {0x1EE67, 0x1EE6A, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF - {0x1EE6C, 0x1EE72, prAL, gcLo}, // [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF - {0x1EE74, 0x1EE77, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH - {0x1EE79, 0x1EE7C, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH - {0x1EE7E, 0x1EE7E, prAL, gcLo}, // ARABIC MATHEMATICAL STRETCHED DOTLESS FEH - {0x1EE80, 0x1EE89, prAL, gcLo}, // [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH - {0x1EE8B, 0x1EE9B, prAL, gcLo}, // [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN - {0x1EEA1, 0x1EEA3, prAL, gcLo}, // [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL - {0x1EEA5, 0x1EEA9, prAL, gcLo}, // [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH - {0x1EEAB, 0x1EEBB, prAL, gcLo}, // [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN - {0x1EEF0, 0x1EEF1, prAL, gcSm}, // [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL - {0x1F000, 0x1F02B, prID, gcSo}, // [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK - {0x1F02C, 0x1F02F, prID, gcCn}, // [4] <reserved-1F02C>..<reserved-1F02F> - {0x1F030, 0x1F093, prID, gcSo}, // [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 - {0x1F094, 0x1F09F, prID, gcCn}, // [12] <reserved-1F094>..<reserved-1F09F> - {0x1F0A0, 0x1F0AE, prID, gcSo}, // [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES - {0x1F0AF, 0x1F0B0, prID, gcCn}, // [2] <reserved-1F0AF>..<reserved-1F0B0> - {0x1F0B1, 0x1F0BF, prID, gcSo}, // [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER - {0x1F0C0, 0x1F0C0, prID, gcCn}, // <reserved-1F0C0> - {0x1F0C1, 0x1F0CF, prID, gcSo}, // [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER - {0x1F0D0, 0x1F0D0, prID, gcCn}, // <reserved-1F0D0> - {0x1F0D1, 0x1F0F5, prID, gcSo}, // [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 - {0x1F0F6, 0x1F0FF, prID, gcCn}, // [10] <reserved-1F0F6>..<reserved-1F0FF> - {0x1F100, 0x1F10C, prAI, gcNo}, // [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO - {0x1F10D, 0x1F10F, prID, gcSo}, // [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH - {0x1F110, 0x1F12D, prAI, gcSo}, // [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD - {0x1F12E, 0x1F12F, prAL, gcSo}, // [2] CIRCLED WZ..COPYLEFT SYMBOL - {0x1F130, 0x1F169, prAI, gcSo}, // [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - {0x1F16A, 0x1F16C, prAL, gcSo}, // [3] RAISED MC SIGN..RAISED MR SIGN - {0x1F16D, 0x1F16F, prID, gcSo}, // [3] CIRCLED CC..CIRCLED HUMAN FIGURE - {0x1F170, 0x1F1AC, prAI, gcSo}, // [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD - {0x1F1AD, 0x1F1AD, prID, gcSo}, // MASK WORK SYMBOL - {0x1F1AE, 0x1F1E5, prID, gcCn}, // [56] <reserved-1F1AE>..<reserved-1F1E5> - {0x1F1E6, 0x1F1FF, prRI, gcSo}, // [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z - {0x1F200, 0x1F202, prID, gcSo}, // [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA - {0x1F203, 0x1F20F, prID, gcCn}, // [13] <reserved-1F203>..<reserved-1F20F> - {0x1F210, 0x1F23B, prID, gcSo}, // [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D - {0x1F23C, 0x1F23F, prID, gcCn}, // [4] <reserved-1F23C>..<reserved-1F23F> - {0x1F240, 0x1F248, prID, gcSo}, // [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 - {0x1F249, 0x1F24F, prID, gcCn}, // [7] <reserved-1F249>..<reserved-1F24F> - {0x1F250, 0x1F251, prID, gcSo}, // [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT - {0x1F252, 0x1F25F, prID, gcCn}, // [14] <reserved-1F252>..<reserved-1F25F> - {0x1F260, 0x1F265, prID, gcSo}, // [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI - {0x1F266, 0x1F2FF, prID, gcCn}, // [154] <reserved-1F266>..<reserved-1F2FF> - {0x1F300, 0x1F384, prID, gcSo}, // [133] CYCLONE..CHRISTMAS TREE - {0x1F385, 0x1F385, prEB, gcSo}, // FATHER CHRISTMAS - {0x1F386, 0x1F39B, prID, gcSo}, // [22] FIREWORKS..CONTROL KNOBS - {0x1F39C, 0x1F39D, prAL, gcSo}, // [2] BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES - {0x1F39E, 0x1F3B4, prID, gcSo}, // [23] FILM FRAMES..FLOWER PLAYING CARDS - {0x1F3B5, 0x1F3B6, prAL, gcSo}, // [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES - {0x1F3B7, 0x1F3BB, prID, gcSo}, // [5] SAXOPHONE..VIOLIN - {0x1F3BC, 0x1F3BC, prAL, gcSo}, // MUSICAL SCORE - {0x1F3BD, 0x1F3C1, prID, gcSo}, // [5] RUNNING SHIRT WITH SASH..CHEQUERED FLAG - {0x1F3C2, 0x1F3C4, prEB, gcSo}, // [3] SNOWBOARDER..SURFER - {0x1F3C5, 0x1F3C6, prID, gcSo}, // [2] SPORTS MEDAL..TROPHY - {0x1F3C7, 0x1F3C7, prEB, gcSo}, // HORSE RACING - {0x1F3C8, 0x1F3C9, prID, gcSo}, // [2] AMERICAN FOOTBALL..RUGBY FOOTBALL - {0x1F3CA, 0x1F3CC, prEB, gcSo}, // [3] SWIMMER..GOLFER - {0x1F3CD, 0x1F3FA, prID, gcSo}, // [46] RACING MOTORCYCLE..AMPHORA - {0x1F3FB, 0x1F3FF, prEM, gcSk}, // [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 - {0x1F400, 0x1F441, prID, gcSo}, // [66] RAT..EYE - {0x1F442, 0x1F443, prEB, gcSo}, // [2] EAR..NOSE - {0x1F444, 0x1F445, prID, gcSo}, // [2] MOUTH..TONGUE - {0x1F446, 0x1F450, prEB, gcSo}, // [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN - {0x1F451, 0x1F465, prID, gcSo}, // [21] CROWN..BUSTS IN SILHOUETTE - {0x1F466, 0x1F478, prEB, gcSo}, // [19] BOY..PRINCESS - {0x1F479, 0x1F47B, prID, gcSo}, // [3] JAPANESE OGRE..GHOST - {0x1F47C, 0x1F47C, prEB, gcSo}, // BABY ANGEL - {0x1F47D, 0x1F480, prID, gcSo}, // [4] EXTRATERRESTRIAL ALIEN..SKULL - {0x1F481, 0x1F483, prEB, gcSo}, // [3] INFORMATION DESK PERSON..DANCER - {0x1F484, 0x1F484, prID, gcSo}, // LIPSTICK - {0x1F485, 0x1F487, prEB, gcSo}, // [3] NAIL POLISH..HAIRCUT - {0x1F488, 0x1F48E, prID, gcSo}, // [7] BARBER POLE..GEM STONE - {0x1F48F, 0x1F48F, prEB, gcSo}, // KISS - {0x1F490, 0x1F490, prID, gcSo}, // BOUQUET - {0x1F491, 0x1F491, prEB, gcSo}, // COUPLE WITH HEART - {0x1F492, 0x1F49F, prID, gcSo}, // [14] WEDDING..HEART DECORATION - {0x1F4A0, 0x1F4A0, prAL, gcSo}, // DIAMOND SHAPE WITH A DOT INSIDE - {0x1F4A1, 0x1F4A1, prID, gcSo}, // ELECTRIC LIGHT BULB - {0x1F4A2, 0x1F4A2, prAL, gcSo}, // ANGER SYMBOL - {0x1F4A3, 0x1F4A3, prID, gcSo}, // BOMB - {0x1F4A4, 0x1F4A4, prAL, gcSo}, // SLEEPING SYMBOL - {0x1F4A5, 0x1F4A9, prID, gcSo}, // [5] COLLISION SYMBOL..PILE OF POO - {0x1F4AA, 0x1F4AA, prEB, gcSo}, // FLEXED BICEPS - {0x1F4AB, 0x1F4AE, prID, gcSo}, // [4] DIZZY SYMBOL..WHITE FLOWER - {0x1F4AF, 0x1F4AF, prAL, gcSo}, // HUNDRED POINTS SYMBOL - {0x1F4B0, 0x1F4B0, prID, gcSo}, // MONEY BAG - {0x1F4B1, 0x1F4B2, prAL, gcSo}, // [2] CURRENCY EXCHANGE..HEAVY DOLLAR SIGN - {0x1F4B3, 0x1F4FF, prID, gcSo}, // [77] CREDIT CARD..PRAYER BEADS - {0x1F500, 0x1F506, prAL, gcSo}, // [7] TWISTED RIGHTWARDS ARROWS..HIGH BRIGHTNESS SYMBOL - {0x1F507, 0x1F516, prID, gcSo}, // [16] SPEAKER WITH CANCELLATION STROKE..BOOKMARK - {0x1F517, 0x1F524, prAL, gcSo}, // [14] LINK SYMBOL..INPUT SYMBOL FOR LATIN LETTERS - {0x1F525, 0x1F531, prID, gcSo}, // [13] FIRE..TRIDENT EMBLEM - {0x1F532, 0x1F549, prAL, gcSo}, // [24] BLACK SQUARE BUTTON..OM SYMBOL - {0x1F54A, 0x1F573, prID, gcSo}, // [42] DOVE OF PEACE..HOLE - {0x1F574, 0x1F575, prEB, gcSo}, // [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY - {0x1F576, 0x1F579, prID, gcSo}, // [4] DARK SUNGLASSES..JOYSTICK - {0x1F57A, 0x1F57A, prEB, gcSo}, // MAN DANCING - {0x1F57B, 0x1F58F, prID, gcSo}, // [21] LEFT HAND TELEPHONE RECEIVER..TURNED OK HAND SIGN - {0x1F590, 0x1F590, prEB, gcSo}, // RAISED HAND WITH FINGERS SPLAYED - {0x1F591, 0x1F594, prID, gcSo}, // [4] REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND - {0x1F595, 0x1F596, prEB, gcSo}, // [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS - {0x1F597, 0x1F5D3, prID, gcSo}, // [61] WHITE DOWN POINTING LEFT HAND INDEX..SPIRAL CALENDAR PAD - {0x1F5D4, 0x1F5DB, prAL, gcSo}, // [8] DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL - {0x1F5DC, 0x1F5F3, prID, gcSo}, // [24] COMPRESSION..BALLOT BOX WITH BALLOT - {0x1F5F4, 0x1F5F9, prAL, gcSo}, // [6] BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK - {0x1F5FA, 0x1F5FF, prID, gcSo}, // [6] WORLD MAP..MOYAI - {0x1F600, 0x1F644, prID, gcSo}, // [69] GRINNING FACE..FACE WITH ROLLING EYES - {0x1F645, 0x1F647, prEB, gcSo}, // [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY - {0x1F648, 0x1F64A, prID, gcSo}, // [3] SEE-NO-EVIL MONKEY..SPEAK-NO-EVIL MONKEY - {0x1F64B, 0x1F64F, prEB, gcSo}, // [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS - {0x1F650, 0x1F675, prAL, gcSo}, // [38] NORTH WEST POINTING LEAF..SWASH AMPERSAND ORNAMENT - {0x1F676, 0x1F678, prQU, gcSo}, // [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - {0x1F679, 0x1F67B, prNS, gcSo}, // [3] HEAVY INTERROBANG ORNAMENT..HEAVY SANS-SERIF INTERROBANG ORNAMENT - {0x1F67C, 0x1F67F, prAL, gcSo}, // [4] VERY HEAVY SOLIDUS..REVERSE CHECKER BOARD - {0x1F680, 0x1F6A2, prID, gcSo}, // [35] ROCKET..SHIP - {0x1F6A3, 0x1F6A3, prEB, gcSo}, // ROWBOAT - {0x1F6A4, 0x1F6B3, prID, gcSo}, // [16] SPEEDBOAT..NO BICYCLES - {0x1F6B4, 0x1F6B6, prEB, gcSo}, // [3] BICYCLIST..PEDESTRIAN - {0x1F6B7, 0x1F6BF, prID, gcSo}, // [9] NO PEDESTRIANS..SHOWER - {0x1F6C0, 0x1F6C0, prEB, gcSo}, // BATH - {0x1F6C1, 0x1F6CB, prID, gcSo}, // [11] BATHTUB..COUCH AND LAMP - {0x1F6CC, 0x1F6CC, prEB, gcSo}, // SLEEPING ACCOMMODATION - {0x1F6CD, 0x1F6D7, prID, gcSo}, // [11] SHOPPING BAGS..ELEVATOR - {0x1F6D8, 0x1F6DB, prID, gcCn}, // [4] <reserved-1F6D8>..<reserved-1F6DB> - {0x1F6DC, 0x1F6EC, prID, gcSo}, // [17] WIRELESS..AIRPLANE ARRIVING - {0x1F6ED, 0x1F6EF, prID, gcCn}, // [3] <reserved-1F6ED>..<reserved-1F6EF> - {0x1F6F0, 0x1F6FC, prID, gcSo}, // [13] SATELLITE..ROLLER SKATE - {0x1F6FD, 0x1F6FF, prID, gcCn}, // [3] <reserved-1F6FD>..<reserved-1F6FF> - {0x1F700, 0x1F773, prAL, gcSo}, // [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE - {0x1F774, 0x1F776, prID, gcSo}, // [3] LOT OF FORTUNE..LUNAR ECLIPSE - {0x1F777, 0x1F77A, prID, gcCn}, // [4] <reserved-1F777>..<reserved-1F77A> - {0x1F77B, 0x1F77F, prID, gcSo}, // [5] HAUMEA..ORCUS - {0x1F780, 0x1F7D4, prAL, gcSo}, // [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR - {0x1F7D5, 0x1F7D9, prID, gcSo}, // [5] CIRCLED TRIANGLE..NINE POINTED WHITE STAR - {0x1F7DA, 0x1F7DF, prID, gcCn}, // [6] <reserved-1F7DA>..<reserved-1F7DF> - {0x1F7E0, 0x1F7EB, prID, gcSo}, // [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE - {0x1F7EC, 0x1F7EF, prID, gcCn}, // [4] <reserved-1F7EC>..<reserved-1F7EF> - {0x1F7F0, 0x1F7F0, prID, gcSo}, // HEAVY EQUALS SIGN - {0x1F7F1, 0x1F7FF, prID, gcCn}, // [15] <reserved-1F7F1>..<reserved-1F7FF> - {0x1F800, 0x1F80B, prAL, gcSo}, // [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD - {0x1F80C, 0x1F80F, prID, gcCn}, // [4] <reserved-1F80C>..<reserved-1F80F> - {0x1F810, 0x1F847, prAL, gcSo}, // [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW - {0x1F848, 0x1F84F, prID, gcCn}, // [8] <reserved-1F848>..<reserved-1F84F> - {0x1F850, 0x1F859, prAL, gcSo}, // [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW - {0x1F85A, 0x1F85F, prID, gcCn}, // [6] <reserved-1F85A>..<reserved-1F85F> - {0x1F860, 0x1F887, prAL, gcSo}, // [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW - {0x1F888, 0x1F88F, prID, gcCn}, // [8] <reserved-1F888>..<reserved-1F88F> - {0x1F890, 0x1F8AD, prAL, gcSo}, // [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS - {0x1F8AE, 0x1F8AF, prID, gcCn}, // [2] <reserved-1F8AE>..<reserved-1F8AF> - {0x1F8B0, 0x1F8B1, prID, gcSo}, // [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST - {0x1F8B2, 0x1F8FF, prID, gcCn}, // [78] <reserved-1F8B2>..<reserved-1F8FF> - {0x1F900, 0x1F90B, prAL, gcSo}, // [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT - {0x1F90C, 0x1F90C, prEB, gcSo}, // PINCHED FINGERS - {0x1F90D, 0x1F90E, prID, gcSo}, // [2] WHITE HEART..BROWN HEART - {0x1F90F, 0x1F90F, prEB, gcSo}, // PINCHING HAND - {0x1F910, 0x1F917, prID, gcSo}, // [8] ZIPPER-MOUTH FACE..HUGGING FACE - {0x1F918, 0x1F91F, prEB, gcSo}, // [8] SIGN OF THE HORNS..I LOVE YOU HAND SIGN - {0x1F920, 0x1F925, prID, gcSo}, // [6] FACE WITH COWBOY HAT..LYING FACE - {0x1F926, 0x1F926, prEB, gcSo}, // FACE PALM - {0x1F927, 0x1F92F, prID, gcSo}, // [9] SNEEZING FACE..SHOCKED FACE WITH EXPLODING HEAD - {0x1F930, 0x1F939, prEB, gcSo}, // [10] PREGNANT WOMAN..JUGGLING - {0x1F93A, 0x1F93B, prID, gcSo}, // [2] FENCER..MODERN PENTATHLON - {0x1F93C, 0x1F93E, prEB, gcSo}, // [3] WRESTLERS..HANDBALL - {0x1F93F, 0x1F976, prID, gcSo}, // [56] DIVING MASK..FREEZING FACE - {0x1F977, 0x1F977, prEB, gcSo}, // NINJA - {0x1F978, 0x1F9B4, prID, gcSo}, // [61] DISGUISED FACE..BONE - {0x1F9B5, 0x1F9B6, prEB, gcSo}, // [2] LEG..FOOT - {0x1F9B7, 0x1F9B7, prID, gcSo}, // TOOTH - {0x1F9B8, 0x1F9B9, prEB, gcSo}, // [2] SUPERHERO..SUPERVILLAIN - {0x1F9BA, 0x1F9BA, prID, gcSo}, // SAFETY VEST - {0x1F9BB, 0x1F9BB, prEB, gcSo}, // EAR WITH HEARING AID - {0x1F9BC, 0x1F9CC, prID, gcSo}, // [17] MOTORIZED WHEELCHAIR..TROLL - {0x1F9CD, 0x1F9CF, prEB, gcSo}, // [3] STANDING PERSON..DEAF PERSON - {0x1F9D0, 0x1F9D0, prID, gcSo}, // FACE WITH MONOCLE - {0x1F9D1, 0x1F9DD, prEB, gcSo}, // [13] ADULT..ELF - {0x1F9DE, 0x1F9FF, prID, gcSo}, // [34] GENIE..NAZAR AMULET - {0x1FA00, 0x1FA53, prAL, gcSo}, // [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP - {0x1FA54, 0x1FA5F, prID, gcCn}, // [12] <reserved-1FA54>..<reserved-1FA5F> - {0x1FA60, 0x1FA6D, prID, gcSo}, // [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER - {0x1FA6E, 0x1FA6F, prID, gcCn}, // [2] <reserved-1FA6E>..<reserved-1FA6F> - {0x1FA70, 0x1FA7C, prID, gcSo}, // [13] BALLET SHOES..CRUTCH - {0x1FA7D, 0x1FA7F, prID, gcCn}, // [3] <reserved-1FA7D>..<reserved-1FA7F> - {0x1FA80, 0x1FA88, prID, gcSo}, // [9] YO-YO..FLUTE - {0x1FA89, 0x1FA8F, prID, gcCn}, // [7] <reserved-1FA89>..<reserved-1FA8F> - {0x1FA90, 0x1FABD, prID, gcSo}, // [46] RINGED PLANET..WING - {0x1FABE, 0x1FABE, prID, gcCn}, // <reserved-1FABE> - {0x1FABF, 0x1FAC2, prID, gcSo}, // [4] GOOSE..PEOPLE HUGGING - {0x1FAC3, 0x1FAC5, prEB, gcSo}, // [3] PREGNANT MAN..PERSON WITH CROWN - {0x1FAC6, 0x1FACD, prID, gcCn}, // [8] <reserved-1FAC6>..<reserved-1FACD> - {0x1FACE, 0x1FADB, prID, gcSo}, // [14] MOOSE..PEA POD - {0x1FADC, 0x1FADF, prID, gcCn}, // [4] <reserved-1FADC>..<reserved-1FADF> - {0x1FAE0, 0x1FAE8, prID, gcSo}, // [9] MELTING FACE..SHAKING FACE - {0x1FAE9, 0x1FAEF, prID, gcCn}, // [7] <reserved-1FAE9>..<reserved-1FAEF> - {0x1FAF0, 0x1FAF8, prEB, gcSo}, // [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND - {0x1FAF9, 0x1FAFF, prID, gcCn}, // [7] <reserved-1FAF9>..<reserved-1FAFF> - {0x1FB00, 0x1FB92, prAL, gcSo}, // [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK - {0x1FB94, 0x1FBCA, prAL, gcSo}, // [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON - {0x1FBF0, 0x1FBF9, prNU, gcNd}, // [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE - {0x1FC00, 0x1FFFD, prID, gcCn}, // [1022] <reserved-1FC00>..<reserved-1FFFD> - {0x20000, 0x2A6DF, prID, gcLo}, // [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF - {0x2A6E0, 0x2A6FF, prID, gcCn}, // [32] <reserved-2A6E0>..<reserved-2A6FF> - {0x2A700, 0x2B739, prID, gcLo}, // [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 - {0x2B73A, 0x2B73F, prID, gcCn}, // [6] <reserved-2B73A>..<reserved-2B73F> - {0x2B740, 0x2B81D, prID, gcLo}, // [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D - {0x2B81E, 0x2B81F, prID, gcCn}, // [2] <reserved-2B81E>..<reserved-2B81F> - {0x2B820, 0x2CEA1, prID, gcLo}, // [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - {0x2CEA2, 0x2CEAF, prID, gcCn}, // [14] <reserved-2CEA2>..<reserved-2CEAF> - {0x2CEB0, 0x2EBE0, prID, gcLo}, // [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 - {0x2EBE1, 0x2F7FF, prID, gcCn}, // [3103] <reserved-2EBE1>..<reserved-2F7FF> - {0x2F800, 0x2FA1D, prID, gcLo}, // [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - {0x2FA1E, 0x2FA1F, prID, gcCn}, // [2] <reserved-2FA1E>..<reserved-2FA1F> - {0x2FA20, 0x2FFFD, prID, gcCn}, // [1502] <reserved-2FA20>..<reserved-2FFFD> - {0x30000, 0x3134A, prID, gcLo}, // [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A - {0x3134B, 0x3134F, prID, gcCn}, // [5] <reserved-3134B>..<reserved-3134F> - {0x31350, 0x323AF, prID, gcLo}, // [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF - {0x323B0, 0x3FFFD, prID, gcCn}, // [56398] <reserved-323B0>..<reserved-3FFFD> - {0xE0001, 0xE0001, prCM, gcCf}, // LANGUAGE TAG - {0xE0020, 0xE007F, prCM, gcCf}, // [96] TAG SPACE..CANCEL TAG - {0xE0100, 0xE01EF, prCM, gcMn}, // [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - {0xF0000, 0xFFFFD, prXX, gcCo}, // [65534] <private-use-F0000>..<private-use-FFFFD> - {0x100000, 0x10FFFD, prXX, gcCo}, // [65534] <private-use-100000>..<private-use-10FFFD> -} diff --git a/vendor/github.com/rivo/uniseg/linerules.go b/vendor/github.com/rivo/uniseg/linerules.go deleted file mode 100644 index 7708ae0..0000000 --- a/vendor/github.com/rivo/uniseg/linerules.go +++ /dev/null @@ -1,626 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// The states of the line break parser. -const ( - lbAny = iota - lbBK - lbCR - lbLF - lbNL - lbSP - lbZW - lbWJ - lbGL - lbBA - lbHY - lbCL - lbCP - lbEX - lbIS - lbSY - lbOP - lbQU - lbQUSP - lbNS - lbCLCPSP - lbB2 - lbB2SP - lbCB - lbBB - lbLB21a - lbHL - lbAL - lbNU - lbPR - lbEB - lbIDEM - lbNUNU - lbNUSY - lbNUIS - lbNUCL - lbNUCP - lbPO - lbJL - lbJV - lbJT - lbH2 - lbH3 - lbOddRI - lbEvenRI - lbExtPicCn - lbZWJBit = 64 - lbCPeaFWHBit = 128 -) - -// These constants define whether a given text may be broken into the next line. -// If the break is optional (LineCanBreak), you may choose to break or not based -// on your own criteria, for example, if the text has reached the available -// width. -const ( - LineDontBreak = iota // You may not break the line here. - LineCanBreak // You may or may not break the line here. - LineMustBreak // You must break the line here. -) - -// lbTransitions implements the line break parser's state transitions. It's -// anologous to [grTransitions], see comments there for details. -// -// Unicode version 15.0.0. -func lbTransitions(state, prop int) (newState, lineBreak, rule int) { - switch uint64(state) | uint64(prop)<<32 { - // LB4. - case lbBK | prAny<<32: - return lbAny, LineMustBreak, 40 - - // LB5. - case lbCR | prLF<<32: - return lbLF, LineDontBreak, 50 - case lbCR | prAny<<32: - return lbAny, LineMustBreak, 50 - case lbLF | prAny<<32: - return lbAny, LineMustBreak, 50 - case lbNL | prAny<<32: - return lbAny, LineMustBreak, 50 - - // LB6. - case lbAny | prBK<<32: - return lbBK, LineDontBreak, 60 - case lbAny | prCR<<32: - return lbCR, LineDontBreak, 60 - case lbAny | prLF<<32: - return lbLF, LineDontBreak, 60 - case lbAny | prNL<<32: - return lbNL, LineDontBreak, 60 - - // LB7. - case lbAny | prSP<<32: - return lbSP, LineDontBreak, 70 - case lbAny | prZW<<32: - return lbZW, LineDontBreak, 70 - - // LB8. - case lbZW | prSP<<32: - return lbZW, LineDontBreak, 70 - case lbZW | prAny<<32: - return lbAny, LineCanBreak, 80 - - // LB11. - case lbAny | prWJ<<32: - return lbWJ, LineDontBreak, 110 - case lbWJ | prAny<<32: - return lbAny, LineDontBreak, 110 - - // LB12. - case lbAny | prGL<<32: - return lbGL, LineCanBreak, 310 - case lbGL | prAny<<32: - return lbAny, LineDontBreak, 120 - - // LB13 (simple transitions). - case lbAny | prCL<<32: - return lbCL, LineCanBreak, 310 - case lbAny | prCP<<32: - return lbCP, LineCanBreak, 310 - case lbAny | prEX<<32: - return lbEX, LineDontBreak, 130 - case lbAny | prIS<<32: - return lbIS, LineCanBreak, 310 - case lbAny | prSY<<32: - return lbSY, LineCanBreak, 310 - - // LB14. - case lbAny | prOP<<32: - return lbOP, LineCanBreak, 310 - case lbOP | prSP<<32: - return lbOP, LineDontBreak, 70 - case lbOP | prAny<<32: - return lbAny, LineDontBreak, 140 - - // LB15. - case lbQU | prSP<<32: - return lbQUSP, LineDontBreak, 70 - case lbQU | prOP<<32: - return lbOP, LineDontBreak, 150 - case lbQUSP | prOP<<32: - return lbOP, LineDontBreak, 150 - - // LB16. - case lbCL | prSP<<32: - return lbCLCPSP, LineDontBreak, 70 - case lbNUCL | prSP<<32: - return lbCLCPSP, LineDontBreak, 70 - case lbCP | prSP<<32: - return lbCLCPSP, LineDontBreak, 70 - case lbNUCP | prSP<<32: - return lbCLCPSP, LineDontBreak, 70 - case lbCL | prNS<<32: - return lbNS, LineDontBreak, 160 - case lbNUCL | prNS<<32: - return lbNS, LineDontBreak, 160 - case lbCP | prNS<<32: - return lbNS, LineDontBreak, 160 - case lbNUCP | prNS<<32: - return lbNS, LineDontBreak, 160 - case lbCLCPSP | prNS<<32: - return lbNS, LineDontBreak, 160 - - // LB17. - case lbAny | prB2<<32: - return lbB2, LineCanBreak, 310 - case lbB2 | prSP<<32: - return lbB2SP, LineDontBreak, 70 - case lbB2 | prB2<<32: - return lbB2, LineDontBreak, 170 - case lbB2SP | prB2<<32: - return lbB2, LineDontBreak, 170 - - // LB18. - case lbSP | prAny<<32: - return lbAny, LineCanBreak, 180 - case lbQUSP | prAny<<32: - return lbAny, LineCanBreak, 180 - case lbCLCPSP | prAny<<32: - return lbAny, LineCanBreak, 180 - case lbB2SP | prAny<<32: - return lbAny, LineCanBreak, 180 - - // LB19. - case lbAny | prQU<<32: - return lbQU, LineDontBreak, 190 - case lbQU | prAny<<32: - return lbAny, LineDontBreak, 190 - - // LB20. - case lbAny | prCB<<32: - return lbCB, LineCanBreak, 200 - case lbCB | prAny<<32: - return lbAny, LineCanBreak, 200 - - // LB21. - case lbAny | prBA<<32: - return lbBA, LineDontBreak, 210 - case lbAny | prHY<<32: - return lbHY, LineDontBreak, 210 - case lbAny | prNS<<32: - return lbNS, LineDontBreak, 210 - case lbAny | prBB<<32: - return lbBB, LineCanBreak, 310 - case lbBB | prAny<<32: - return lbAny, LineDontBreak, 210 - - // LB21a. - case lbAny | prHL<<32: - return lbHL, LineCanBreak, 310 - case lbHL | prHY<<32: - return lbLB21a, LineDontBreak, 210 - case lbHL | prBA<<32: - return lbLB21a, LineDontBreak, 210 - case lbLB21a | prAny<<32: - return lbAny, LineDontBreak, 211 - - // LB21b. - case lbSY | prHL<<32: - return lbHL, LineDontBreak, 212 - case lbNUSY | prHL<<32: - return lbHL, LineDontBreak, 212 - - // LB22. - case lbAny | prIN<<32: - return lbAny, LineDontBreak, 220 - - // LB23. - case lbAny | prAL<<32: - return lbAL, LineCanBreak, 310 - case lbAny | prNU<<32: - return lbNU, LineCanBreak, 310 - case lbAL | prNU<<32: - return lbNU, LineDontBreak, 230 - case lbHL | prNU<<32: - return lbNU, LineDontBreak, 230 - case lbNU | prAL<<32: - return lbAL, LineDontBreak, 230 - case lbNU | prHL<<32: - return lbHL, LineDontBreak, 230 - case lbNUNU | prAL<<32: - return lbAL, LineDontBreak, 230 - case lbNUNU | prHL<<32: - return lbHL, LineDontBreak, 230 - - // LB23a. - case lbAny | prPR<<32: - return lbPR, LineCanBreak, 310 - case lbAny | prID<<32: - return lbIDEM, LineCanBreak, 310 - case lbAny | prEB<<32: - return lbEB, LineCanBreak, 310 - case lbAny | prEM<<32: - return lbIDEM, LineCanBreak, 310 - case lbPR | prID<<32: - return lbIDEM, LineDontBreak, 231 - case lbPR | prEB<<32: - return lbEB, LineDontBreak, 231 - case lbPR | prEM<<32: - return lbIDEM, LineDontBreak, 231 - case lbIDEM | prPO<<32: - return lbPO, LineDontBreak, 231 - case lbEB | prPO<<32: - return lbPO, LineDontBreak, 231 - - // LB24. - case lbAny | prPO<<32: - return lbPO, LineCanBreak, 310 - case lbPR | prAL<<32: - return lbAL, LineDontBreak, 240 - case lbPR | prHL<<32: - return lbHL, LineDontBreak, 240 - case lbPO | prAL<<32: - return lbAL, LineDontBreak, 240 - case lbPO | prHL<<32: - return lbHL, LineDontBreak, 240 - case lbAL | prPR<<32: - return lbPR, LineDontBreak, 240 - case lbAL | prPO<<32: - return lbPO, LineDontBreak, 240 - case lbHL | prPR<<32: - return lbPR, LineDontBreak, 240 - case lbHL | prPO<<32: - return lbPO, LineDontBreak, 240 - - // LB25 (simple transitions). - case lbPR | prNU<<32: - return lbNU, LineDontBreak, 250 - case lbPO | prNU<<32: - return lbNU, LineDontBreak, 250 - case lbOP | prNU<<32: - return lbNU, LineDontBreak, 250 - case lbHY | prNU<<32: - return lbNU, LineDontBreak, 250 - case lbNU | prNU<<32: - return lbNUNU, LineDontBreak, 250 - case lbNU | prSY<<32: - return lbNUSY, LineDontBreak, 250 - case lbNU | prIS<<32: - return lbNUIS, LineDontBreak, 250 - case lbNUNU | prNU<<32: - return lbNUNU, LineDontBreak, 250 - case lbNUNU | prSY<<32: - return lbNUSY, LineDontBreak, 250 - case lbNUNU | prIS<<32: - return lbNUIS, LineDontBreak, 250 - case lbNUSY | prNU<<32: - return lbNUNU, LineDontBreak, 250 - case lbNUSY | prSY<<32: - return lbNUSY, LineDontBreak, 250 - case lbNUSY | prIS<<32: - return lbNUIS, LineDontBreak, 250 - case lbNUIS | prNU<<32: - return lbNUNU, LineDontBreak, 250 - case lbNUIS | prSY<<32: - return lbNUSY, LineDontBreak, 250 - case lbNUIS | prIS<<32: - return lbNUIS, LineDontBreak, 250 - case lbNU | prCL<<32: - return lbNUCL, LineDontBreak, 250 - case lbNU | prCP<<32: - return lbNUCP, LineDontBreak, 250 - case lbNUNU | prCL<<32: - return lbNUCL, LineDontBreak, 250 - case lbNUNU | prCP<<32: - return lbNUCP, LineDontBreak, 250 - case lbNUSY | prCL<<32: - return lbNUCL, LineDontBreak, 250 - case lbNUSY | prCP<<32: - return lbNUCP, LineDontBreak, 250 - case lbNUIS | prCL<<32: - return lbNUCL, LineDontBreak, 250 - case lbNUIS | prCP<<32: - return lbNUCP, LineDontBreak, 250 - case lbNU | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNUNU | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNUSY | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNUIS | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNUCL | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNUCP | prPO<<32: - return lbPO, LineDontBreak, 250 - case lbNU | prPR<<32: - return lbPR, LineDontBreak, 250 - case lbNUNU | prPR<<32: - return lbPR, LineDontBreak, 250 - case lbNUSY | prPR<<32: - return lbPR, LineDontBreak, 250 - case lbNUIS | prPR<<32: - return lbPR, LineDontBreak, 250 - case lbNUCL | prPR<<32: - return lbPR, LineDontBreak, 250 - case lbNUCP | prPR<<32: - return lbPR, LineDontBreak, 250 - - // LB26. - case lbAny | prJL<<32: - return lbJL, LineCanBreak, 310 - case lbAny | prJV<<32: - return lbJV, LineCanBreak, 310 - case lbAny | prJT<<32: - return lbJT, LineCanBreak, 310 - case lbAny | prH2<<32: - return lbH2, LineCanBreak, 310 - case lbAny | prH3<<32: - return lbH3, LineCanBreak, 310 - case lbJL | prJL<<32: - return lbJL, LineDontBreak, 260 - case lbJL | prJV<<32: - return lbJV, LineDontBreak, 260 - case lbJL | prH2<<32: - return lbH2, LineDontBreak, 260 - case lbJL | prH3<<32: - return lbH3, LineDontBreak, 260 - case lbJV | prJV<<32: - return lbJV, LineDontBreak, 260 - case lbJV | prJT<<32: - return lbJT, LineDontBreak, 260 - case lbH2 | prJV<<32: - return lbJV, LineDontBreak, 260 - case lbH2 | prJT<<32: - return lbJT, LineDontBreak, 260 - case lbJT | prJT<<32: - return lbJT, LineDontBreak, 260 - case lbH3 | prJT<<32: - return lbJT, LineDontBreak, 260 - - // LB27. - case lbJL | prPO<<32: - return lbPO, LineDontBreak, 270 - case lbJV | prPO<<32: - return lbPO, LineDontBreak, 270 - case lbJT | prPO<<32: - return lbPO, LineDontBreak, 270 - case lbH2 | prPO<<32: - return lbPO, LineDontBreak, 270 - case lbH3 | prPO<<32: - return lbPO, LineDontBreak, 270 - case lbPR | prJL<<32: - return lbJL, LineDontBreak, 270 - case lbPR | prJV<<32: - return lbJV, LineDontBreak, 270 - case lbPR | prJT<<32: - return lbJT, LineDontBreak, 270 - case lbPR | prH2<<32: - return lbH2, LineDontBreak, 270 - case lbPR | prH3<<32: - return lbH3, LineDontBreak, 270 - - // LB28. - case lbAL | prAL<<32: - return lbAL, LineDontBreak, 280 - case lbAL | prHL<<32: - return lbHL, LineDontBreak, 280 - case lbHL | prAL<<32: - return lbAL, LineDontBreak, 280 - case lbHL | prHL<<32: - return lbHL, LineDontBreak, 280 - - // LB29. - case lbIS | prAL<<32: - return lbAL, LineDontBreak, 290 - case lbIS | prHL<<32: - return lbHL, LineDontBreak, 290 - case lbNUIS | prAL<<32: - return lbAL, LineDontBreak, 290 - case lbNUIS | prHL<<32: - return lbHL, LineDontBreak, 290 - - default: - return -1, -1, -1 - } -} - -// transitionLineBreakState determines the new state of the line break parser -// given the current state and the next code point. It also returns the type of -// line break: LineDontBreak, LineCanBreak, or LineMustBreak. If more than one -// code point is needed to determine the new state, the byte slice or the string -// starting after rune "r" can be used (whichever is not nil or empty) for -// further lookups. -func transitionLineBreakState(state int, r rune, b []byte, str string) (newState int, lineBreak int) { - // Determine the property of the next character. - nextProperty, generalCategory := propertyLineBreak(r) - - // Prepare. - var forceNoBreak, isCPeaFWH bool - if state >= 0 && state&lbCPeaFWHBit != 0 { - isCPeaFWH = true // LB30: CP but ea is not F, W, or H. - state = state &^ lbCPeaFWHBit - } - if state >= 0 && state&lbZWJBit != 0 { - state = state &^ lbZWJBit // Extract zero-width joiner bit. - forceNoBreak = true // LB8a. - } - - defer func() { - // Transition into LB30. - if newState == lbCP || newState == lbNUCP { - ea := propertyEastAsianWidth(r) - if ea != prF && ea != prW && ea != prH { - newState |= lbCPeaFWHBit - } - } - - // Override break. - if forceNoBreak { - lineBreak = LineDontBreak - } - }() - - // LB1. - if nextProperty == prAI || nextProperty == prSG || nextProperty == prXX { - nextProperty = prAL - } else if nextProperty == prSA { - if generalCategory == gcMn || generalCategory == gcMc { - nextProperty = prCM - } else { - nextProperty = prAL - } - } else if nextProperty == prCJ { - nextProperty = prNS - } - - // Combining marks. - if nextProperty == prZWJ || nextProperty == prCM { - var bit int - if nextProperty == prZWJ { - bit = lbZWJBit - } - mustBreakState := state < 0 || state == lbBK || state == lbCR || state == lbLF || state == lbNL - if !mustBreakState && state != lbSP && state != lbZW && state != lbQUSP && state != lbCLCPSP && state != lbB2SP { - // LB9. - return state | bit, LineDontBreak - } else { - // LB10. - if mustBreakState { - return lbAL | bit, LineMustBreak - } - return lbAL | bit, LineCanBreak - } - } - - // Find the applicable transition in the table. - var rule int - newState, lineBreak, rule = lbTransitions(state, nextProperty) - if newState < 0 { - // No specific transition found. Try the less specific ones. - anyPropProp, anyPropLineBreak, anyPropRule := lbTransitions(state, prAny) - anyStateProp, anyStateLineBreak, anyStateRule := lbTransitions(lbAny, nextProperty) - if anyPropProp >= 0 && anyStateProp >= 0 { - // Both apply. We'll use a mix (see comments for grTransitions). - newState, lineBreak, rule = anyStateProp, anyStateLineBreak, anyStateRule - if anyPropRule < anyStateRule { - lineBreak, rule = anyPropLineBreak, anyPropRule - } - } else if anyPropProp >= 0 { - // We only have a specific state. - newState, lineBreak, rule = anyPropProp, anyPropLineBreak, anyPropRule - // This branch will probably never be reached because okAnyState will - // always be true given the current transition map. But we keep it here - // for future modifications to the transition map where this may not be - // true anymore. - } else if anyStateProp >= 0 { - // We only have a specific property. - newState, lineBreak, rule = anyStateProp, anyStateLineBreak, anyStateRule - } else { - // No known transition. LB31: ALL ÷ ALL. - newState, lineBreak, rule = lbAny, LineCanBreak, 310 - } - } - - // LB12a. - if rule > 121 && - nextProperty == prGL && - (state != lbSP && state != lbBA && state != lbHY && state != lbLB21a && state != lbQUSP && state != lbCLCPSP && state != lbB2SP) { - return lbGL, LineDontBreak - } - - // LB13. - if rule > 130 && state != lbNU && state != lbNUNU { - switch nextProperty { - case prCL: - return lbCL, LineDontBreak - case prCP: - return lbCP, LineDontBreak - case prIS: - return lbIS, LineDontBreak - case prSY: - return lbSY, LineDontBreak - } - } - - // LB25 (look ahead). - if rule > 250 && - (state == lbPR || state == lbPO) && - nextProperty == prOP || nextProperty == prHY { - var r rune - if b != nil { // Byte slice version. - r, _ = utf8.DecodeRune(b) - } else { // String version. - r, _ = utf8.DecodeRuneInString(str) - } - if r != utf8.RuneError { - pr, _ := propertyLineBreak(r) - if pr == prNU { - return lbNU, LineDontBreak - } - } - } - - // LB30 (part one). - if rule > 300 { - if (state == lbAL || state == lbHL || state == lbNU || state == lbNUNU) && nextProperty == prOP { - ea := propertyEastAsianWidth(r) - if ea != prF && ea != prW && ea != prH { - return lbOP, LineDontBreak - } - } else if isCPeaFWH { - switch nextProperty { - case prAL: - return lbAL, LineDontBreak - case prHL: - return lbHL, LineDontBreak - case prNU: - return lbNU, LineDontBreak - } - } - } - - // LB30a. - if newState == lbAny && nextProperty == prRI { - if state != lbOddRI && state != lbEvenRI { // Includes state == -1. - // Transition into the first RI. - return lbOddRI, lineBreak - } - if state == lbOddRI { - // Don't break pairs of Regional Indicators. - return lbEvenRI, LineDontBreak - } - return lbOddRI, lineBreak - } - - // LB30b. - if rule > 302 { - if nextProperty == prEM { - if state == lbEB || state == lbExtPicCn { - return prAny, LineDontBreak - } - } - graphemeProperty := propertyGraphemes(r) - if graphemeProperty == prExtendedPictographic && generalCategory == gcCn { - return lbExtPicCn, LineCanBreak - } - } - - return -} diff --git a/vendor/github.com/rivo/uniseg/properties.go b/vendor/github.com/rivo/uniseg/properties.go deleted file mode 100644 index 6290e68..0000000 --- a/vendor/github.com/rivo/uniseg/properties.go +++ /dev/null @@ -1,208 +0,0 @@ -package uniseg - -// The Unicode properties as used in the various parsers. Only the ones needed -// in the context of this package are included. -const ( - prXX = 0 // Same as prAny. - prAny = iota // prAny must be 0. - prPrepend // Grapheme properties must come first, to reduce the number of bits stored in the state vector. - prCR - prLF - prControl - prExtend - prRegionalIndicator - prSpacingMark - prL - prV - prT - prLV - prLVT - prZWJ - prExtendedPictographic - prNewline - prWSegSpace - prDoubleQuote - prSingleQuote - prMidNumLet - prNumeric - prMidLetter - prMidNum - prExtendNumLet - prALetter - prFormat - prHebrewLetter - prKatakana - prSp - prSTerm - prClose - prSContinue - prATerm - prUpper - prLower - prSep - prOLetter - prCM - prBA - prBK - prSP - prEX - prQU - prAL - prPR - prPO - prOP - prCP - prIS - prHY - prSY - prNU - prCL - prNL - prGL - prAI - prBB - prHL - prSA - prJL - prJV - prJT - prNS - prZW - prB2 - prIN - prWJ - prID - prEB - prCJ - prH2 - prH3 - prSG - prCB - prRI - prEM - prN - prNa - prA - prW - prH - prF - prEmojiPresentation -) - -// Unicode General Categories. Only the ones needed in the context of this -// package are included. -const ( - gcNone = iota // gcNone must be 0. - gcCc - gcZs - gcPo - gcSc - gcPs - gcPe - gcSm - gcPd - gcNd - gcLu - gcSk - gcPc - gcLl - gcSo - gcLo - gcPi - gcCf - gcNo - gcPf - gcLC - gcLm - gcMn - gcMe - gcMc - gcNl - gcZl - gcZp - gcCn - gcCs - gcCo -) - -// Special code points. -const ( - vs15 = 0xfe0e // Variation Selector-15 (text presentation) - vs16 = 0xfe0f // Variation Selector-16 (emoji presentation) -) - -// propertySearch performs a binary search on a property slice and returns the -// entry whose range (start = first array element, end = second array element) -// includes r, or an array of 0's if no such entry was found. -func propertySearch[E interface{ [3]int | [4]int }](dictionary []E, r rune) (result E) { - // Run a binary search. - from := 0 - to := len(dictionary) - for to > from { - middle := (from + to) / 2 - cpRange := dictionary[middle] - if int(r) < cpRange[0] { - to = middle - continue - } - if int(r) > cpRange[1] { - from = middle + 1 - continue - } - return cpRange - } - return -} - -// property returns the Unicode property value (see constants above) of the -// given code point. -func property(dictionary [][3]int, r rune) int { - return propertySearch(dictionary, r)[2] -} - -// propertyLineBreak returns the Unicode property value and General Category -// (see constants above) of the given code point, as listed in the line break -// code points table, while fast tracking ASCII digits and letters. -func propertyLineBreak(r rune) (property, generalCategory int) { - if r >= 'a' && r <= 'z' { - return prAL, gcLl - } - if r >= 'A' && r <= 'Z' { - return prAL, gcLu - } - if r >= '0' && r <= '9' { - return prNU, gcNd - } - entry := propertySearch(lineBreakCodePoints, r) - return entry[2], entry[3] -} - -// propertyGraphemes returns the Unicode grapheme cluster property value of the -// given code point while fast tracking ASCII characters. -func propertyGraphemes(r rune) int { - if r >= 0x20 && r <= 0x7e { - return prAny - } - if r == 0x0a { - return prLF - } - if r == 0x0d { - return prCR - } - if r >= 0 && r <= 0x1f || r == 0x7f { - return prControl - } - return property(graphemeCodePoints, r) -} - -// propertyEastAsianWidth returns the Unicode East Asian Width property value of -// the given code point while fast tracking ASCII characters. -func propertyEastAsianWidth(r rune) int { - if r >= 0x20 && r <= 0x7e { - return prNa - } - if r >= 0 && r <= 0x1f || r == 0x7f { - return prN - } - return property(eastAsianWidth, r) -} diff --git a/vendor/github.com/rivo/uniseg/sentence.go b/vendor/github.com/rivo/uniseg/sentence.go deleted file mode 100644 index adc2a35..0000000 --- a/vendor/github.com/rivo/uniseg/sentence.go +++ /dev/null @@ -1,90 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// FirstSentence returns the first sentence found in the given byte slice -// according to the rules of [Unicode Standard Annex #29, Sentence Boundaries]. -// This function can be called continuously to extract all sentences from a byte -// slice, as illustrated in the example below. -// -// If you don't know the current state, for example when calling the function -// for the first time, you must pass -1. For consecutive calls, pass the state -// and rest slice returned by the previous call. -// -// The "rest" slice is the sub-slice of the original byte slice "b" starting -// after the last byte of the identified sentence. If the length of the "rest" -// slice is 0, the entire byte slice "b" has been processed. The "sentence" byte -// slice is the sub-slice of the input slice containing the identified sentence. -// -// Given an empty byte slice "b", the function returns nil values. -// -// [Unicode Standard Annex #29, Sentence Boundaries]: http://unicode.org/reports/tr29/#Sentence_Boundaries -func FirstSentence(b []byte, state int) (sentence, rest []byte, newState int) { - // An empty byte slice returns nothing. - if len(b) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRune(b) - if len(b) <= length { // If we're already past the end, there is nothing else to parse. - return b, nil, sbAny - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionSentenceBreakState(state, r, b[length:], "") - } - - // Transition until we find a boundary. - var boundary bool - for { - r, l := utf8.DecodeRune(b[length:]) - state, boundary = transitionSentenceBreakState(state, r, b[length+l:], "") - - if boundary { - return b[:length], b[length:], state - } - - length += l - if len(b) <= length { - return b, nil, sbAny - } - } -} - -// FirstSentenceInString is like [FirstSentence] but its input and outputs are -// strings. -func FirstSentenceInString(str string, state int) (sentence, rest string, newState int) { - // An empty byte slice returns nothing. - if len(str) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRuneInString(str) - if len(str) <= length { // If we're already past the end, there is nothing else to parse. - return str, "", sbAny - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionSentenceBreakState(state, r, nil, str[length:]) - } - - // Transition until we find a boundary. - var boundary bool - for { - r, l := utf8.DecodeRuneInString(str[length:]) - state, boundary = transitionSentenceBreakState(state, r, nil, str[length+l:]) - - if boundary { - return str[:length], str[length:], state - } - - length += l - if len(str) <= length { - return str, "", sbAny - } - } -} diff --git a/vendor/github.com/rivo/uniseg/sentenceproperties.go b/vendor/github.com/rivo/uniseg/sentenceproperties.go deleted file mode 100644 index 67717ec..0000000 --- a/vendor/github.com/rivo/uniseg/sentenceproperties.go +++ /dev/null @@ -1,2845 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// sentenceBreakCodePoints are taken from -// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/SentenceBreakProperty.txt -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var sentenceBreakCodePoints = [][3]int{ - {0x0009, 0x0009, prSp}, // Cc <control-0009> - {0x000A, 0x000A, prLF}, // Cc <control-000A> - {0x000B, 0x000C, prSp}, // Cc [2] <control-000B>..<control-000C> - {0x000D, 0x000D, prCR}, // Cc <control-000D> - {0x0020, 0x0020, prSp}, // Zs SPACE - {0x0021, 0x0021, prSTerm}, // Po EXCLAMATION MARK - {0x0022, 0x0022, prClose}, // Po QUOTATION MARK - {0x0027, 0x0027, prClose}, // Po APOSTROPHE - {0x0028, 0x0028, prClose}, // Ps LEFT PARENTHESIS - {0x0029, 0x0029, prClose}, // Pe RIGHT PARENTHESIS - {0x002C, 0x002C, prSContinue}, // Po COMMA - {0x002D, 0x002D, prSContinue}, // Pd HYPHEN-MINUS - {0x002E, 0x002E, prATerm}, // Po FULL STOP - {0x0030, 0x0039, prNumeric}, // Nd [10] DIGIT ZERO..DIGIT NINE - {0x003A, 0x003A, prSContinue}, // Po COLON - {0x003F, 0x003F, prSTerm}, // Po QUESTION MARK - {0x0041, 0x005A, prUpper}, // L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z - {0x005B, 0x005B, prClose}, // Ps LEFT SQUARE BRACKET - {0x005D, 0x005D, prClose}, // Pe RIGHT SQUARE BRACKET - {0x0061, 0x007A, prLower}, // L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z - {0x007B, 0x007B, prClose}, // Ps LEFT CURLY BRACKET - {0x007D, 0x007D, prClose}, // Pe RIGHT CURLY BRACKET - {0x0085, 0x0085, prSep}, // Cc <control-0085> - {0x00A0, 0x00A0, prSp}, // Zs NO-BREAK SPACE - {0x00AA, 0x00AA, prLower}, // Lo FEMININE ORDINAL INDICATOR - {0x00AB, 0x00AB, prClose}, // Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00AD, 0x00AD, prFormat}, // Cf SOFT HYPHEN - {0x00B5, 0x00B5, prLower}, // L& MICRO SIGN - {0x00BA, 0x00BA, prLower}, // Lo MASCULINE ORDINAL INDICATOR - {0x00BB, 0x00BB, prClose}, // Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - {0x00C0, 0x00D6, prUpper}, // L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS - {0x00D8, 0x00DE, prUpper}, // L& [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN - {0x00DF, 0x00F6, prLower}, // L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS - {0x00F8, 0x00FF, prLower}, // L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS - {0x0100, 0x0100, prUpper}, // L& LATIN CAPITAL LETTER A WITH MACRON - {0x0101, 0x0101, prLower}, // L& LATIN SMALL LETTER A WITH MACRON - {0x0102, 0x0102, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE - {0x0103, 0x0103, prLower}, // L& LATIN SMALL LETTER A WITH BREVE - {0x0104, 0x0104, prUpper}, // L& LATIN CAPITAL LETTER A WITH OGONEK - {0x0105, 0x0105, prLower}, // L& LATIN SMALL LETTER A WITH OGONEK - {0x0106, 0x0106, prUpper}, // L& LATIN CAPITAL LETTER C WITH ACUTE - {0x0107, 0x0107, prLower}, // L& LATIN SMALL LETTER C WITH ACUTE - {0x0108, 0x0108, prUpper}, // L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX - {0x0109, 0x0109, prLower}, // L& LATIN SMALL LETTER C WITH CIRCUMFLEX - {0x010A, 0x010A, prUpper}, // L& LATIN CAPITAL LETTER C WITH DOT ABOVE - {0x010B, 0x010B, prLower}, // L& LATIN SMALL LETTER C WITH DOT ABOVE - {0x010C, 0x010C, prUpper}, // L& LATIN CAPITAL LETTER C WITH CARON - {0x010D, 0x010D, prLower}, // L& LATIN SMALL LETTER C WITH CARON - {0x010E, 0x010E, prUpper}, // L& LATIN CAPITAL LETTER D WITH CARON - {0x010F, 0x010F, prLower}, // L& LATIN SMALL LETTER D WITH CARON - {0x0110, 0x0110, prUpper}, // L& LATIN CAPITAL LETTER D WITH STROKE - {0x0111, 0x0111, prLower}, // L& LATIN SMALL LETTER D WITH STROKE - {0x0112, 0x0112, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON - {0x0113, 0x0113, prLower}, // L& LATIN SMALL LETTER E WITH MACRON - {0x0114, 0x0114, prUpper}, // L& LATIN CAPITAL LETTER E WITH BREVE - {0x0115, 0x0115, prLower}, // L& LATIN SMALL LETTER E WITH BREVE - {0x0116, 0x0116, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOT ABOVE - {0x0117, 0x0117, prLower}, // L& LATIN SMALL LETTER E WITH DOT ABOVE - {0x0118, 0x0118, prUpper}, // L& LATIN CAPITAL LETTER E WITH OGONEK - {0x0119, 0x0119, prLower}, // L& LATIN SMALL LETTER E WITH OGONEK - {0x011A, 0x011A, prUpper}, // L& LATIN CAPITAL LETTER E WITH CARON - {0x011B, 0x011B, prLower}, // L& LATIN SMALL LETTER E WITH CARON - {0x011C, 0x011C, prUpper}, // L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX - {0x011D, 0x011D, prLower}, // L& LATIN SMALL LETTER G WITH CIRCUMFLEX - {0x011E, 0x011E, prUpper}, // L& LATIN CAPITAL LETTER G WITH BREVE - {0x011F, 0x011F, prLower}, // L& LATIN SMALL LETTER G WITH BREVE - {0x0120, 0x0120, prUpper}, // L& LATIN CAPITAL LETTER G WITH DOT ABOVE - {0x0121, 0x0121, prLower}, // L& LATIN SMALL LETTER G WITH DOT ABOVE - {0x0122, 0x0122, prUpper}, // L& LATIN CAPITAL LETTER G WITH CEDILLA - {0x0123, 0x0123, prLower}, // L& LATIN SMALL LETTER G WITH CEDILLA - {0x0124, 0x0124, prUpper}, // L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX - {0x0125, 0x0125, prLower}, // L& LATIN SMALL LETTER H WITH CIRCUMFLEX - {0x0126, 0x0126, prUpper}, // L& LATIN CAPITAL LETTER H WITH STROKE - {0x0127, 0x0127, prLower}, // L& LATIN SMALL LETTER H WITH STROKE - {0x0128, 0x0128, prUpper}, // L& LATIN CAPITAL LETTER I WITH TILDE - {0x0129, 0x0129, prLower}, // L& LATIN SMALL LETTER I WITH TILDE - {0x012A, 0x012A, prUpper}, // L& LATIN CAPITAL LETTER I WITH MACRON - {0x012B, 0x012B, prLower}, // L& LATIN SMALL LETTER I WITH MACRON - {0x012C, 0x012C, prUpper}, // L& LATIN CAPITAL LETTER I WITH BREVE - {0x012D, 0x012D, prLower}, // L& LATIN SMALL LETTER I WITH BREVE - {0x012E, 0x012E, prUpper}, // L& LATIN CAPITAL LETTER I WITH OGONEK - {0x012F, 0x012F, prLower}, // L& LATIN SMALL LETTER I WITH OGONEK - {0x0130, 0x0130, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOT ABOVE - {0x0131, 0x0131, prLower}, // L& LATIN SMALL LETTER DOTLESS I - {0x0132, 0x0132, prUpper}, // L& LATIN CAPITAL LIGATURE IJ - {0x0133, 0x0133, prLower}, // L& LATIN SMALL LIGATURE IJ - {0x0134, 0x0134, prUpper}, // L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX - {0x0135, 0x0135, prLower}, // L& LATIN SMALL LETTER J WITH CIRCUMFLEX - {0x0136, 0x0136, prUpper}, // L& LATIN CAPITAL LETTER K WITH CEDILLA - {0x0137, 0x0138, prLower}, // L& [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA - {0x0139, 0x0139, prUpper}, // L& LATIN CAPITAL LETTER L WITH ACUTE - {0x013A, 0x013A, prLower}, // L& LATIN SMALL LETTER L WITH ACUTE - {0x013B, 0x013B, prUpper}, // L& LATIN CAPITAL LETTER L WITH CEDILLA - {0x013C, 0x013C, prLower}, // L& LATIN SMALL LETTER L WITH CEDILLA - {0x013D, 0x013D, prUpper}, // L& LATIN CAPITAL LETTER L WITH CARON - {0x013E, 0x013E, prLower}, // L& LATIN SMALL LETTER L WITH CARON - {0x013F, 0x013F, prUpper}, // L& LATIN CAPITAL LETTER L WITH MIDDLE DOT - {0x0140, 0x0140, prLower}, // L& LATIN SMALL LETTER L WITH MIDDLE DOT - {0x0141, 0x0141, prUpper}, // L& LATIN CAPITAL LETTER L WITH STROKE - {0x0142, 0x0142, prLower}, // L& LATIN SMALL LETTER L WITH STROKE - {0x0143, 0x0143, prUpper}, // L& LATIN CAPITAL LETTER N WITH ACUTE - {0x0144, 0x0144, prLower}, // L& LATIN SMALL LETTER N WITH ACUTE - {0x0145, 0x0145, prUpper}, // L& LATIN CAPITAL LETTER N WITH CEDILLA - {0x0146, 0x0146, prLower}, // L& LATIN SMALL LETTER N WITH CEDILLA - {0x0147, 0x0147, prUpper}, // L& LATIN CAPITAL LETTER N WITH CARON - {0x0148, 0x0149, prLower}, // L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - {0x014A, 0x014A, prUpper}, // L& LATIN CAPITAL LETTER ENG - {0x014B, 0x014B, prLower}, // L& LATIN SMALL LETTER ENG - {0x014C, 0x014C, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON - {0x014D, 0x014D, prLower}, // L& LATIN SMALL LETTER O WITH MACRON - {0x014E, 0x014E, prUpper}, // L& LATIN CAPITAL LETTER O WITH BREVE - {0x014F, 0x014F, prLower}, // L& LATIN SMALL LETTER O WITH BREVE - {0x0150, 0x0150, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE - {0x0151, 0x0151, prLower}, // L& LATIN SMALL LETTER O WITH DOUBLE ACUTE - {0x0152, 0x0152, prUpper}, // L& LATIN CAPITAL LIGATURE OE - {0x0153, 0x0153, prLower}, // L& LATIN SMALL LIGATURE OE - {0x0154, 0x0154, prUpper}, // L& LATIN CAPITAL LETTER R WITH ACUTE - {0x0155, 0x0155, prLower}, // L& LATIN SMALL LETTER R WITH ACUTE - {0x0156, 0x0156, prUpper}, // L& LATIN CAPITAL LETTER R WITH CEDILLA - {0x0157, 0x0157, prLower}, // L& LATIN SMALL LETTER R WITH CEDILLA - {0x0158, 0x0158, prUpper}, // L& LATIN CAPITAL LETTER R WITH CARON - {0x0159, 0x0159, prLower}, // L& LATIN SMALL LETTER R WITH CARON - {0x015A, 0x015A, prUpper}, // L& LATIN CAPITAL LETTER S WITH ACUTE - {0x015B, 0x015B, prLower}, // L& LATIN SMALL LETTER S WITH ACUTE - {0x015C, 0x015C, prUpper}, // L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX - {0x015D, 0x015D, prLower}, // L& LATIN SMALL LETTER S WITH CIRCUMFLEX - {0x015E, 0x015E, prUpper}, // L& LATIN CAPITAL LETTER S WITH CEDILLA - {0x015F, 0x015F, prLower}, // L& LATIN SMALL LETTER S WITH CEDILLA - {0x0160, 0x0160, prUpper}, // L& LATIN CAPITAL LETTER S WITH CARON - {0x0161, 0x0161, prLower}, // L& LATIN SMALL LETTER S WITH CARON - {0x0162, 0x0162, prUpper}, // L& LATIN CAPITAL LETTER T WITH CEDILLA - {0x0163, 0x0163, prLower}, // L& LATIN SMALL LETTER T WITH CEDILLA - {0x0164, 0x0164, prUpper}, // L& LATIN CAPITAL LETTER T WITH CARON - {0x0165, 0x0165, prLower}, // L& LATIN SMALL LETTER T WITH CARON - {0x0166, 0x0166, prUpper}, // L& LATIN CAPITAL LETTER T WITH STROKE - {0x0167, 0x0167, prLower}, // L& LATIN SMALL LETTER T WITH STROKE - {0x0168, 0x0168, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE - {0x0169, 0x0169, prLower}, // L& LATIN SMALL LETTER U WITH TILDE - {0x016A, 0x016A, prUpper}, // L& LATIN CAPITAL LETTER U WITH MACRON - {0x016B, 0x016B, prLower}, // L& LATIN SMALL LETTER U WITH MACRON - {0x016C, 0x016C, prUpper}, // L& LATIN CAPITAL LETTER U WITH BREVE - {0x016D, 0x016D, prLower}, // L& LATIN SMALL LETTER U WITH BREVE - {0x016E, 0x016E, prUpper}, // L& LATIN CAPITAL LETTER U WITH RING ABOVE - {0x016F, 0x016F, prLower}, // L& LATIN SMALL LETTER U WITH RING ABOVE - {0x0170, 0x0170, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE - {0x0171, 0x0171, prLower}, // L& LATIN SMALL LETTER U WITH DOUBLE ACUTE - {0x0172, 0x0172, prUpper}, // L& LATIN CAPITAL LETTER U WITH OGONEK - {0x0173, 0x0173, prLower}, // L& LATIN SMALL LETTER U WITH OGONEK - {0x0174, 0x0174, prUpper}, // L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX - {0x0175, 0x0175, prLower}, // L& LATIN SMALL LETTER W WITH CIRCUMFLEX - {0x0176, 0x0176, prUpper}, // L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX - {0x0177, 0x0177, prLower}, // L& LATIN SMALL LETTER Y WITH CIRCUMFLEX - {0x0178, 0x0179, prUpper}, // L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE - {0x017A, 0x017A, prLower}, // L& LATIN SMALL LETTER Z WITH ACUTE - {0x017B, 0x017B, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DOT ABOVE - {0x017C, 0x017C, prLower}, // L& LATIN SMALL LETTER Z WITH DOT ABOVE - {0x017D, 0x017D, prUpper}, // L& LATIN CAPITAL LETTER Z WITH CARON - {0x017E, 0x0180, prLower}, // L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE - {0x0181, 0x0182, prUpper}, // L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR - {0x0183, 0x0183, prLower}, // L& LATIN SMALL LETTER B WITH TOPBAR - {0x0184, 0x0184, prUpper}, // L& LATIN CAPITAL LETTER TONE SIX - {0x0185, 0x0185, prLower}, // L& LATIN SMALL LETTER TONE SIX - {0x0186, 0x0187, prUpper}, // L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK - {0x0188, 0x0188, prLower}, // L& LATIN SMALL LETTER C WITH HOOK - {0x0189, 0x018B, prUpper}, // L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR - {0x018C, 0x018D, prLower}, // L& [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA - {0x018E, 0x0191, prUpper}, // L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK - {0x0192, 0x0192, prLower}, // L& LATIN SMALL LETTER F WITH HOOK - {0x0193, 0x0194, prUpper}, // L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA - {0x0195, 0x0195, prLower}, // L& LATIN SMALL LETTER HV - {0x0196, 0x0198, prUpper}, // L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK - {0x0199, 0x019B, prLower}, // L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE - {0x019C, 0x019D, prUpper}, // L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK - {0x019E, 0x019E, prLower}, // L& LATIN SMALL LETTER N WITH LONG RIGHT LEG - {0x019F, 0x01A0, prUpper}, // L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN - {0x01A1, 0x01A1, prLower}, // L& LATIN SMALL LETTER O WITH HORN - {0x01A2, 0x01A2, prUpper}, // L& LATIN CAPITAL LETTER OI - {0x01A3, 0x01A3, prLower}, // L& LATIN SMALL LETTER OI - {0x01A4, 0x01A4, prUpper}, // L& LATIN CAPITAL LETTER P WITH HOOK - {0x01A5, 0x01A5, prLower}, // L& LATIN SMALL LETTER P WITH HOOK - {0x01A6, 0x01A7, prUpper}, // L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO - {0x01A8, 0x01A8, prLower}, // L& LATIN SMALL LETTER TONE TWO - {0x01A9, 0x01A9, prUpper}, // L& LATIN CAPITAL LETTER ESH - {0x01AA, 0x01AB, prLower}, // L& [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK - {0x01AC, 0x01AC, prUpper}, // L& LATIN CAPITAL LETTER T WITH HOOK - {0x01AD, 0x01AD, prLower}, // L& LATIN SMALL LETTER T WITH HOOK - {0x01AE, 0x01AF, prUpper}, // L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN - {0x01B0, 0x01B0, prLower}, // L& LATIN SMALL LETTER U WITH HORN - {0x01B1, 0x01B3, prUpper}, // L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK - {0x01B4, 0x01B4, prLower}, // L& LATIN SMALL LETTER Y WITH HOOK - {0x01B5, 0x01B5, prUpper}, // L& LATIN CAPITAL LETTER Z WITH STROKE - {0x01B6, 0x01B6, prLower}, // L& LATIN SMALL LETTER Z WITH STROKE - {0x01B7, 0x01B8, prUpper}, // L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED - {0x01B9, 0x01BA, prLower}, // L& [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL - {0x01BB, 0x01BB, prOLetter}, // Lo LATIN LETTER TWO WITH STROKE - {0x01BC, 0x01BC, prUpper}, // L& LATIN CAPITAL LETTER TONE FIVE - {0x01BD, 0x01BF, prLower}, // L& [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN - {0x01C0, 0x01C3, prOLetter}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK - {0x01C4, 0x01C5, prUpper}, // L& [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON - {0x01C6, 0x01C6, prLower}, // L& LATIN SMALL LETTER DZ WITH CARON - {0x01C7, 0x01C8, prUpper}, // L& [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J - {0x01C9, 0x01C9, prLower}, // L& LATIN SMALL LETTER LJ - {0x01CA, 0x01CB, prUpper}, // L& [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J - {0x01CC, 0x01CC, prLower}, // L& LATIN SMALL LETTER NJ - {0x01CD, 0x01CD, prUpper}, // L& LATIN CAPITAL LETTER A WITH CARON - {0x01CE, 0x01CE, prLower}, // L& LATIN SMALL LETTER A WITH CARON - {0x01CF, 0x01CF, prUpper}, // L& LATIN CAPITAL LETTER I WITH CARON - {0x01D0, 0x01D0, prLower}, // L& LATIN SMALL LETTER I WITH CARON - {0x01D1, 0x01D1, prUpper}, // L& LATIN CAPITAL LETTER O WITH CARON - {0x01D2, 0x01D2, prLower}, // L& LATIN SMALL LETTER O WITH CARON - {0x01D3, 0x01D3, prUpper}, // L& LATIN CAPITAL LETTER U WITH CARON - {0x01D4, 0x01D4, prLower}, // L& LATIN SMALL LETTER U WITH CARON - {0x01D5, 0x01D5, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON - {0x01D6, 0x01D6, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON - {0x01D7, 0x01D7, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE - {0x01D8, 0x01D8, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE - {0x01D9, 0x01D9, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON - {0x01DA, 0x01DA, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON - {0x01DB, 0x01DB, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE - {0x01DC, 0x01DD, prLower}, // L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E - {0x01DE, 0x01DE, prUpper}, // L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON - {0x01DF, 0x01DF, prLower}, // L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON - {0x01E0, 0x01E0, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON - {0x01E1, 0x01E1, prLower}, // L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON - {0x01E2, 0x01E2, prUpper}, // L& LATIN CAPITAL LETTER AE WITH MACRON - {0x01E3, 0x01E3, prLower}, // L& LATIN SMALL LETTER AE WITH MACRON - {0x01E4, 0x01E4, prUpper}, // L& LATIN CAPITAL LETTER G WITH STROKE - {0x01E5, 0x01E5, prLower}, // L& LATIN SMALL LETTER G WITH STROKE - {0x01E6, 0x01E6, prUpper}, // L& LATIN CAPITAL LETTER G WITH CARON - {0x01E7, 0x01E7, prLower}, // L& LATIN SMALL LETTER G WITH CARON - {0x01E8, 0x01E8, prUpper}, // L& LATIN CAPITAL LETTER K WITH CARON - {0x01E9, 0x01E9, prLower}, // L& LATIN SMALL LETTER K WITH CARON - {0x01EA, 0x01EA, prUpper}, // L& LATIN CAPITAL LETTER O WITH OGONEK - {0x01EB, 0x01EB, prLower}, // L& LATIN SMALL LETTER O WITH OGONEK - {0x01EC, 0x01EC, prUpper}, // L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON - {0x01ED, 0x01ED, prLower}, // L& LATIN SMALL LETTER O WITH OGONEK AND MACRON - {0x01EE, 0x01EE, prUpper}, // L& LATIN CAPITAL LETTER EZH WITH CARON - {0x01EF, 0x01F0, prLower}, // L& [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON - {0x01F1, 0x01F2, prUpper}, // L& [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z - {0x01F3, 0x01F3, prLower}, // L& LATIN SMALL LETTER DZ - {0x01F4, 0x01F4, prUpper}, // L& LATIN CAPITAL LETTER G WITH ACUTE - {0x01F5, 0x01F5, prLower}, // L& LATIN SMALL LETTER G WITH ACUTE - {0x01F6, 0x01F8, prUpper}, // L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE - {0x01F9, 0x01F9, prLower}, // L& LATIN SMALL LETTER N WITH GRAVE - {0x01FA, 0x01FA, prUpper}, // L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE - {0x01FB, 0x01FB, prLower}, // L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE - {0x01FC, 0x01FC, prUpper}, // L& LATIN CAPITAL LETTER AE WITH ACUTE - {0x01FD, 0x01FD, prLower}, // L& LATIN SMALL LETTER AE WITH ACUTE - {0x01FE, 0x01FE, prUpper}, // L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE - {0x01FF, 0x01FF, prLower}, // L& LATIN SMALL LETTER O WITH STROKE AND ACUTE - {0x0200, 0x0200, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE - {0x0201, 0x0201, prLower}, // L& LATIN SMALL LETTER A WITH DOUBLE GRAVE - {0x0202, 0x0202, prUpper}, // L& LATIN CAPITAL LETTER A WITH INVERTED BREVE - {0x0203, 0x0203, prLower}, // L& LATIN SMALL LETTER A WITH INVERTED BREVE - {0x0204, 0x0204, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE - {0x0205, 0x0205, prLower}, // L& LATIN SMALL LETTER E WITH DOUBLE GRAVE - {0x0206, 0x0206, prUpper}, // L& LATIN CAPITAL LETTER E WITH INVERTED BREVE - {0x0207, 0x0207, prLower}, // L& LATIN SMALL LETTER E WITH INVERTED BREVE - {0x0208, 0x0208, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE - {0x0209, 0x0209, prLower}, // L& LATIN SMALL LETTER I WITH DOUBLE GRAVE - {0x020A, 0x020A, prUpper}, // L& LATIN CAPITAL LETTER I WITH INVERTED BREVE - {0x020B, 0x020B, prLower}, // L& LATIN SMALL LETTER I WITH INVERTED BREVE - {0x020C, 0x020C, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE - {0x020D, 0x020D, prLower}, // L& LATIN SMALL LETTER O WITH DOUBLE GRAVE - {0x020E, 0x020E, prUpper}, // L& LATIN CAPITAL LETTER O WITH INVERTED BREVE - {0x020F, 0x020F, prLower}, // L& LATIN SMALL LETTER O WITH INVERTED BREVE - {0x0210, 0x0210, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE - {0x0211, 0x0211, prLower}, // L& LATIN SMALL LETTER R WITH DOUBLE GRAVE - {0x0212, 0x0212, prUpper}, // L& LATIN CAPITAL LETTER R WITH INVERTED BREVE - {0x0213, 0x0213, prLower}, // L& LATIN SMALL LETTER R WITH INVERTED BREVE - {0x0214, 0x0214, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE - {0x0215, 0x0215, prLower}, // L& LATIN SMALL LETTER U WITH DOUBLE GRAVE - {0x0216, 0x0216, prUpper}, // L& LATIN CAPITAL LETTER U WITH INVERTED BREVE - {0x0217, 0x0217, prLower}, // L& LATIN SMALL LETTER U WITH INVERTED BREVE - {0x0218, 0x0218, prUpper}, // L& LATIN CAPITAL LETTER S WITH COMMA BELOW - {0x0219, 0x0219, prLower}, // L& LATIN SMALL LETTER S WITH COMMA BELOW - {0x021A, 0x021A, prUpper}, // L& LATIN CAPITAL LETTER T WITH COMMA BELOW - {0x021B, 0x021B, prLower}, // L& LATIN SMALL LETTER T WITH COMMA BELOW - {0x021C, 0x021C, prUpper}, // L& LATIN CAPITAL LETTER YOGH - {0x021D, 0x021D, prLower}, // L& LATIN SMALL LETTER YOGH - {0x021E, 0x021E, prUpper}, // L& LATIN CAPITAL LETTER H WITH CARON - {0x021F, 0x021F, prLower}, // L& LATIN SMALL LETTER H WITH CARON - {0x0220, 0x0220, prUpper}, // L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG - {0x0221, 0x0221, prLower}, // L& LATIN SMALL LETTER D WITH CURL - {0x0222, 0x0222, prUpper}, // L& LATIN CAPITAL LETTER OU - {0x0223, 0x0223, prLower}, // L& LATIN SMALL LETTER OU - {0x0224, 0x0224, prUpper}, // L& LATIN CAPITAL LETTER Z WITH HOOK - {0x0225, 0x0225, prLower}, // L& LATIN SMALL LETTER Z WITH HOOK - {0x0226, 0x0226, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT ABOVE - {0x0227, 0x0227, prLower}, // L& LATIN SMALL LETTER A WITH DOT ABOVE - {0x0228, 0x0228, prUpper}, // L& LATIN CAPITAL LETTER E WITH CEDILLA - {0x0229, 0x0229, prLower}, // L& LATIN SMALL LETTER E WITH CEDILLA - {0x022A, 0x022A, prUpper}, // L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON - {0x022B, 0x022B, prLower}, // L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON - {0x022C, 0x022C, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON - {0x022D, 0x022D, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND MACRON - {0x022E, 0x022E, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT ABOVE - {0x022F, 0x022F, prLower}, // L& LATIN SMALL LETTER O WITH DOT ABOVE - {0x0230, 0x0230, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON - {0x0231, 0x0231, prLower}, // L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON - {0x0232, 0x0232, prUpper}, // L& LATIN CAPITAL LETTER Y WITH MACRON - {0x0233, 0x0239, prLower}, // L& [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH - {0x023A, 0x023B, prUpper}, // L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE - {0x023C, 0x023C, prLower}, // L& LATIN SMALL LETTER C WITH STROKE - {0x023D, 0x023E, prUpper}, // L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE - {0x023F, 0x0240, prLower}, // L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL - {0x0241, 0x0241, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL STOP - {0x0242, 0x0242, prLower}, // L& LATIN SMALL LETTER GLOTTAL STOP - {0x0243, 0x0246, prUpper}, // L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE - {0x0247, 0x0247, prLower}, // L& LATIN SMALL LETTER E WITH STROKE - {0x0248, 0x0248, prUpper}, // L& LATIN CAPITAL LETTER J WITH STROKE - {0x0249, 0x0249, prLower}, // L& LATIN SMALL LETTER J WITH STROKE - {0x024A, 0x024A, prUpper}, // L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL - {0x024B, 0x024B, prLower}, // L& LATIN SMALL LETTER Q WITH HOOK TAIL - {0x024C, 0x024C, prUpper}, // L& LATIN CAPITAL LETTER R WITH STROKE - {0x024D, 0x024D, prLower}, // L& LATIN SMALL LETTER R WITH STROKE - {0x024E, 0x024E, prUpper}, // L& LATIN CAPITAL LETTER Y WITH STROKE - {0x024F, 0x0293, prLower}, // L& [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL - {0x0294, 0x0294, prOLetter}, // Lo LATIN LETTER GLOTTAL STOP - {0x0295, 0x02AF, prLower}, // L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL - {0x02B0, 0x02B8, prLower}, // Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y - {0x02B9, 0x02BF, prOLetter}, // Lm [7] MODIFIER LETTER PRIME..MODIFIER LETTER LEFT HALF RING - {0x02C0, 0x02C1, prLower}, // Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP - {0x02C6, 0x02D1, prOLetter}, // Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON - {0x02E0, 0x02E4, prLower}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP - {0x02EC, 0x02EC, prOLetter}, // Lm MODIFIER LETTER VOICING - {0x02EE, 0x02EE, prOLetter}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE - {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X - {0x0370, 0x0370, prUpper}, // L& GREEK CAPITAL LETTER HETA - {0x0371, 0x0371, prLower}, // L& GREEK SMALL LETTER HETA - {0x0372, 0x0372, prUpper}, // L& GREEK CAPITAL LETTER ARCHAIC SAMPI - {0x0373, 0x0373, prLower}, // L& GREEK SMALL LETTER ARCHAIC SAMPI - {0x0374, 0x0374, prOLetter}, // Lm GREEK NUMERAL SIGN - {0x0376, 0x0376, prUpper}, // L& GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA - {0x0377, 0x0377, prLower}, // L& GREEK SMALL LETTER PAMPHYLIAN DIGAMMA - {0x037A, 0x037A, prLower}, // Lm GREEK YPOGEGRAMMENI - {0x037B, 0x037D, prLower}, // L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x037F, 0x037F, prUpper}, // L& GREEK CAPITAL LETTER YOT - {0x0386, 0x0386, prUpper}, // L& GREEK CAPITAL LETTER ALPHA WITH TONOS - {0x0388, 0x038A, prUpper}, // L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS - {0x038C, 0x038C, prUpper}, // L& GREEK CAPITAL LETTER OMICRON WITH TONOS - {0x038E, 0x038F, prUpper}, // L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS - {0x0390, 0x0390, prLower}, // L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS - {0x0391, 0x03A1, prUpper}, // L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO - {0x03A3, 0x03AB, prUpper}, // L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA - {0x03AC, 0x03CE, prLower}, // L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS - {0x03CF, 0x03CF, prUpper}, // L& GREEK CAPITAL KAI SYMBOL - {0x03D0, 0x03D1, prLower}, // L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL - {0x03D2, 0x03D4, prUpper}, // L& [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL - {0x03D5, 0x03D7, prLower}, // L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL - {0x03D8, 0x03D8, prUpper}, // L& GREEK LETTER ARCHAIC KOPPA - {0x03D9, 0x03D9, prLower}, // L& GREEK SMALL LETTER ARCHAIC KOPPA - {0x03DA, 0x03DA, prUpper}, // L& GREEK LETTER STIGMA - {0x03DB, 0x03DB, prLower}, // L& GREEK SMALL LETTER STIGMA - {0x03DC, 0x03DC, prUpper}, // L& GREEK LETTER DIGAMMA - {0x03DD, 0x03DD, prLower}, // L& GREEK SMALL LETTER DIGAMMA - {0x03DE, 0x03DE, prUpper}, // L& GREEK LETTER KOPPA - {0x03DF, 0x03DF, prLower}, // L& GREEK SMALL LETTER KOPPA - {0x03E0, 0x03E0, prUpper}, // L& GREEK LETTER SAMPI - {0x03E1, 0x03E1, prLower}, // L& GREEK SMALL LETTER SAMPI - {0x03E2, 0x03E2, prUpper}, // L& COPTIC CAPITAL LETTER SHEI - {0x03E3, 0x03E3, prLower}, // L& COPTIC SMALL LETTER SHEI - {0x03E4, 0x03E4, prUpper}, // L& COPTIC CAPITAL LETTER FEI - {0x03E5, 0x03E5, prLower}, // L& COPTIC SMALL LETTER FEI - {0x03E6, 0x03E6, prUpper}, // L& COPTIC CAPITAL LETTER KHEI - {0x03E7, 0x03E7, prLower}, // L& COPTIC SMALL LETTER KHEI - {0x03E8, 0x03E8, prUpper}, // L& COPTIC CAPITAL LETTER HORI - {0x03E9, 0x03E9, prLower}, // L& COPTIC SMALL LETTER HORI - {0x03EA, 0x03EA, prUpper}, // L& COPTIC CAPITAL LETTER GANGIA - {0x03EB, 0x03EB, prLower}, // L& COPTIC SMALL LETTER GANGIA - {0x03EC, 0x03EC, prUpper}, // L& COPTIC CAPITAL LETTER SHIMA - {0x03ED, 0x03ED, prLower}, // L& COPTIC SMALL LETTER SHIMA - {0x03EE, 0x03EE, prUpper}, // L& COPTIC CAPITAL LETTER DEI - {0x03EF, 0x03F3, prLower}, // L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT - {0x03F4, 0x03F4, prUpper}, // L& GREEK CAPITAL THETA SYMBOL - {0x03F5, 0x03F5, prLower}, // L& GREEK LUNATE EPSILON SYMBOL - {0x03F7, 0x03F7, prUpper}, // L& GREEK CAPITAL LETTER SHO - {0x03F8, 0x03F8, prLower}, // L& GREEK SMALL LETTER SHO - {0x03F9, 0x03FA, prUpper}, // L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN - {0x03FB, 0x03FC, prLower}, // L& [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL - {0x03FD, 0x042F, prUpper}, // L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA - {0x0430, 0x045F, prLower}, // L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE - {0x0460, 0x0460, prUpper}, // L& CYRILLIC CAPITAL LETTER OMEGA - {0x0461, 0x0461, prLower}, // L& CYRILLIC SMALL LETTER OMEGA - {0x0462, 0x0462, prUpper}, // L& CYRILLIC CAPITAL LETTER YAT - {0x0463, 0x0463, prLower}, // L& CYRILLIC SMALL LETTER YAT - {0x0464, 0x0464, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED E - {0x0465, 0x0465, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED E - {0x0466, 0x0466, prUpper}, // L& CYRILLIC CAPITAL LETTER LITTLE YUS - {0x0467, 0x0467, prLower}, // L& CYRILLIC SMALL LETTER LITTLE YUS - {0x0468, 0x0468, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS - {0x0469, 0x0469, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS - {0x046A, 0x046A, prUpper}, // L& CYRILLIC CAPITAL LETTER BIG YUS - {0x046B, 0x046B, prLower}, // L& CYRILLIC SMALL LETTER BIG YUS - {0x046C, 0x046C, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS - {0x046D, 0x046D, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS - {0x046E, 0x046E, prUpper}, // L& CYRILLIC CAPITAL LETTER KSI - {0x046F, 0x046F, prLower}, // L& CYRILLIC SMALL LETTER KSI - {0x0470, 0x0470, prUpper}, // L& CYRILLIC CAPITAL LETTER PSI - {0x0471, 0x0471, prLower}, // L& CYRILLIC SMALL LETTER PSI - {0x0472, 0x0472, prUpper}, // L& CYRILLIC CAPITAL LETTER FITA - {0x0473, 0x0473, prLower}, // L& CYRILLIC SMALL LETTER FITA - {0x0474, 0x0474, prUpper}, // L& CYRILLIC CAPITAL LETTER IZHITSA - {0x0475, 0x0475, prLower}, // L& CYRILLIC SMALL LETTER IZHITSA - {0x0476, 0x0476, prUpper}, // L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT - {0x0477, 0x0477, prLower}, // L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT - {0x0478, 0x0478, prUpper}, // L& CYRILLIC CAPITAL LETTER UK - {0x0479, 0x0479, prLower}, // L& CYRILLIC SMALL LETTER UK - {0x047A, 0x047A, prUpper}, // L& CYRILLIC CAPITAL LETTER ROUND OMEGA - {0x047B, 0x047B, prLower}, // L& CYRILLIC SMALL LETTER ROUND OMEGA - {0x047C, 0x047C, prUpper}, // L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO - {0x047D, 0x047D, prLower}, // L& CYRILLIC SMALL LETTER OMEGA WITH TITLO - {0x047E, 0x047E, prUpper}, // L& CYRILLIC CAPITAL LETTER OT - {0x047F, 0x047F, prLower}, // L& CYRILLIC SMALL LETTER OT - {0x0480, 0x0480, prUpper}, // L& CYRILLIC CAPITAL LETTER KOPPA - {0x0481, 0x0481, prLower}, // L& CYRILLIC SMALL LETTER KOPPA - {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE - {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN - {0x048A, 0x048A, prUpper}, // L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL - {0x048B, 0x048B, prLower}, // L& CYRILLIC SMALL LETTER SHORT I WITH TAIL - {0x048C, 0x048C, prUpper}, // L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN - {0x048D, 0x048D, prLower}, // L& CYRILLIC SMALL LETTER SEMISOFT SIGN - {0x048E, 0x048E, prUpper}, // L& CYRILLIC CAPITAL LETTER ER WITH TICK - {0x048F, 0x048F, prLower}, // L& CYRILLIC SMALL LETTER ER WITH TICK - {0x0490, 0x0490, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN - {0x0491, 0x0491, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH UPTURN - {0x0492, 0x0492, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH STROKE - {0x0493, 0x0493, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH STROKE - {0x0494, 0x0494, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK - {0x0495, 0x0495, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK - {0x0496, 0x0496, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER - {0x0497, 0x0497, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER - {0x0498, 0x0498, prUpper}, // L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER - {0x0499, 0x0499, prLower}, // L& CYRILLIC SMALL LETTER ZE WITH DESCENDER - {0x049A, 0x049A, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER - {0x049B, 0x049B, prLower}, // L& CYRILLIC SMALL LETTER KA WITH DESCENDER - {0x049C, 0x049C, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE - {0x049D, 0x049D, prLower}, // L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE - {0x049E, 0x049E, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH STROKE - {0x049F, 0x049F, prLower}, // L& CYRILLIC SMALL LETTER KA WITH STROKE - {0x04A0, 0x04A0, prUpper}, // L& CYRILLIC CAPITAL LETTER BASHKIR KA - {0x04A1, 0x04A1, prLower}, // L& CYRILLIC SMALL LETTER BASHKIR KA - {0x04A2, 0x04A2, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER - {0x04A3, 0x04A3, prLower}, // L& CYRILLIC SMALL LETTER EN WITH DESCENDER - {0x04A4, 0x04A4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE EN GHE - {0x04A5, 0x04A5, prLower}, // L& CYRILLIC SMALL LIGATURE EN GHE - {0x04A6, 0x04A6, prUpper}, // L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK - {0x04A7, 0x04A7, prLower}, // L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK - {0x04A8, 0x04A8, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN HA - {0x04A9, 0x04A9, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN HA - {0x04AA, 0x04AA, prUpper}, // L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER - {0x04AB, 0x04AB, prLower}, // L& CYRILLIC SMALL LETTER ES WITH DESCENDER - {0x04AC, 0x04AC, prUpper}, // L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER - {0x04AD, 0x04AD, prLower}, // L& CYRILLIC SMALL LETTER TE WITH DESCENDER - {0x04AE, 0x04AE, prUpper}, // L& CYRILLIC CAPITAL LETTER STRAIGHT U - {0x04AF, 0x04AF, prLower}, // L& CYRILLIC SMALL LETTER STRAIGHT U - {0x04B0, 0x04B0, prUpper}, // L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE - {0x04B1, 0x04B1, prLower}, // L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE - {0x04B2, 0x04B2, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER - {0x04B3, 0x04B3, prLower}, // L& CYRILLIC SMALL LETTER HA WITH DESCENDER - {0x04B4, 0x04B4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE TE TSE - {0x04B5, 0x04B5, prLower}, // L& CYRILLIC SMALL LIGATURE TE TSE - {0x04B6, 0x04B6, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER - {0x04B7, 0x04B7, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH DESCENDER - {0x04B8, 0x04B8, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE - {0x04B9, 0x04B9, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE - {0x04BA, 0x04BA, prUpper}, // L& CYRILLIC CAPITAL LETTER SHHA - {0x04BB, 0x04BB, prLower}, // L& CYRILLIC SMALL LETTER SHHA - {0x04BC, 0x04BC, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE - {0x04BD, 0x04BD, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN CHE - {0x04BE, 0x04BE, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER - {0x04BF, 0x04BF, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER - {0x04C0, 0x04C1, prUpper}, // L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE - {0x04C2, 0x04C2, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH BREVE - {0x04C3, 0x04C3, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH HOOK - {0x04C4, 0x04C4, prLower}, // L& CYRILLIC SMALL LETTER KA WITH HOOK - {0x04C5, 0x04C5, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH TAIL - {0x04C6, 0x04C6, prLower}, // L& CYRILLIC SMALL LETTER EL WITH TAIL - {0x04C7, 0x04C7, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH HOOK - {0x04C8, 0x04C8, prLower}, // L& CYRILLIC SMALL LETTER EN WITH HOOK - {0x04C9, 0x04C9, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH TAIL - {0x04CA, 0x04CA, prLower}, // L& CYRILLIC SMALL LETTER EN WITH TAIL - {0x04CB, 0x04CB, prUpper}, // L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE - {0x04CC, 0x04CC, prLower}, // L& CYRILLIC SMALL LETTER KHAKASSIAN CHE - {0x04CD, 0x04CD, prUpper}, // L& CYRILLIC CAPITAL LETTER EM WITH TAIL - {0x04CE, 0x04CF, prLower}, // L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA - {0x04D0, 0x04D0, prUpper}, // L& CYRILLIC CAPITAL LETTER A WITH BREVE - {0x04D1, 0x04D1, prLower}, // L& CYRILLIC SMALL LETTER A WITH BREVE - {0x04D2, 0x04D2, prUpper}, // L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS - {0x04D3, 0x04D3, prLower}, // L& CYRILLIC SMALL LETTER A WITH DIAERESIS - {0x04D4, 0x04D4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE A IE - {0x04D5, 0x04D5, prLower}, // L& CYRILLIC SMALL LIGATURE A IE - {0x04D6, 0x04D6, prUpper}, // L& CYRILLIC CAPITAL LETTER IE WITH BREVE - {0x04D7, 0x04D7, prLower}, // L& CYRILLIC SMALL LETTER IE WITH BREVE - {0x04D8, 0x04D8, prUpper}, // L& CYRILLIC CAPITAL LETTER SCHWA - {0x04D9, 0x04D9, prLower}, // L& CYRILLIC SMALL LETTER SCHWA - {0x04DA, 0x04DA, prUpper}, // L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS - {0x04DB, 0x04DB, prLower}, // L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS - {0x04DC, 0x04DC, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS - {0x04DD, 0x04DD, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS - {0x04DE, 0x04DE, prUpper}, // L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS - {0x04DF, 0x04DF, prLower}, // L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS - {0x04E0, 0x04E0, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE - {0x04E1, 0x04E1, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN DZE - {0x04E2, 0x04E2, prUpper}, // L& CYRILLIC CAPITAL LETTER I WITH MACRON - {0x04E3, 0x04E3, prLower}, // L& CYRILLIC SMALL LETTER I WITH MACRON - {0x04E4, 0x04E4, prUpper}, // L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS - {0x04E5, 0x04E5, prLower}, // L& CYRILLIC SMALL LETTER I WITH DIAERESIS - {0x04E6, 0x04E6, prUpper}, // L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS - {0x04E7, 0x04E7, prLower}, // L& CYRILLIC SMALL LETTER O WITH DIAERESIS - {0x04E8, 0x04E8, prUpper}, // L& CYRILLIC CAPITAL LETTER BARRED O - {0x04E9, 0x04E9, prLower}, // L& CYRILLIC SMALL LETTER BARRED O - {0x04EA, 0x04EA, prUpper}, // L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS - {0x04EB, 0x04EB, prLower}, // L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS - {0x04EC, 0x04EC, prUpper}, // L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS - {0x04ED, 0x04ED, prLower}, // L& CYRILLIC SMALL LETTER E WITH DIAERESIS - {0x04EE, 0x04EE, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH MACRON - {0x04EF, 0x04EF, prLower}, // L& CYRILLIC SMALL LETTER U WITH MACRON - {0x04F0, 0x04F0, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS - {0x04F1, 0x04F1, prLower}, // L& CYRILLIC SMALL LETTER U WITH DIAERESIS - {0x04F2, 0x04F2, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE - {0x04F3, 0x04F3, prLower}, // L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE - {0x04F4, 0x04F4, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS - {0x04F5, 0x04F5, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS - {0x04F6, 0x04F6, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER - {0x04F7, 0x04F7, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH DESCENDER - {0x04F8, 0x04F8, prUpper}, // L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS - {0x04F9, 0x04F9, prLower}, // L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS - {0x04FA, 0x04FA, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK - {0x04FB, 0x04FB, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK - {0x04FC, 0x04FC, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH HOOK - {0x04FD, 0x04FD, prLower}, // L& CYRILLIC SMALL LETTER HA WITH HOOK - {0x04FE, 0x04FE, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH STROKE - {0x04FF, 0x04FF, prLower}, // L& CYRILLIC SMALL LETTER HA WITH STROKE - {0x0500, 0x0500, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DE - {0x0501, 0x0501, prLower}, // L& CYRILLIC SMALL LETTER KOMI DE - {0x0502, 0x0502, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DJE - {0x0503, 0x0503, prLower}, // L& CYRILLIC SMALL LETTER KOMI DJE - {0x0504, 0x0504, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI ZJE - {0x0505, 0x0505, prLower}, // L& CYRILLIC SMALL LETTER KOMI ZJE - {0x0506, 0x0506, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DZJE - {0x0507, 0x0507, prLower}, // L& CYRILLIC SMALL LETTER KOMI DZJE - {0x0508, 0x0508, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI LJE - {0x0509, 0x0509, prLower}, // L& CYRILLIC SMALL LETTER KOMI LJE - {0x050A, 0x050A, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI NJE - {0x050B, 0x050B, prLower}, // L& CYRILLIC SMALL LETTER KOMI NJE - {0x050C, 0x050C, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI SJE - {0x050D, 0x050D, prLower}, // L& CYRILLIC SMALL LETTER KOMI SJE - {0x050E, 0x050E, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI TJE - {0x050F, 0x050F, prLower}, // L& CYRILLIC SMALL LETTER KOMI TJE - {0x0510, 0x0510, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED ZE - {0x0511, 0x0511, prLower}, // L& CYRILLIC SMALL LETTER REVERSED ZE - {0x0512, 0x0512, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH HOOK - {0x0513, 0x0513, prLower}, // L& CYRILLIC SMALL LETTER EL WITH HOOK - {0x0514, 0x0514, prUpper}, // L& CYRILLIC CAPITAL LETTER LHA - {0x0515, 0x0515, prLower}, // L& CYRILLIC SMALL LETTER LHA - {0x0516, 0x0516, prUpper}, // L& CYRILLIC CAPITAL LETTER RHA - {0x0517, 0x0517, prLower}, // L& CYRILLIC SMALL LETTER RHA - {0x0518, 0x0518, prUpper}, // L& CYRILLIC CAPITAL LETTER YAE - {0x0519, 0x0519, prLower}, // L& CYRILLIC SMALL LETTER YAE - {0x051A, 0x051A, prUpper}, // L& CYRILLIC CAPITAL LETTER QA - {0x051B, 0x051B, prLower}, // L& CYRILLIC SMALL LETTER QA - {0x051C, 0x051C, prUpper}, // L& CYRILLIC CAPITAL LETTER WE - {0x051D, 0x051D, prLower}, // L& CYRILLIC SMALL LETTER WE - {0x051E, 0x051E, prUpper}, // L& CYRILLIC CAPITAL LETTER ALEUT KA - {0x051F, 0x051F, prLower}, // L& CYRILLIC SMALL LETTER ALEUT KA - {0x0520, 0x0520, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK - {0x0521, 0x0521, prLower}, // L& CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK - {0x0522, 0x0522, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK - {0x0523, 0x0523, prLower}, // L& CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK - {0x0524, 0x0524, prUpper}, // L& CYRILLIC CAPITAL LETTER PE WITH DESCENDER - {0x0525, 0x0525, prLower}, // L& CYRILLIC SMALL LETTER PE WITH DESCENDER - {0x0526, 0x0526, prUpper}, // L& CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER - {0x0527, 0x0527, prLower}, // L& CYRILLIC SMALL LETTER SHHA WITH DESCENDER - {0x0528, 0x0528, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK - {0x0529, 0x0529, prLower}, // L& CYRILLIC SMALL LETTER EN WITH LEFT HOOK - {0x052A, 0x052A, prUpper}, // L& CYRILLIC CAPITAL LETTER DZZHE - {0x052B, 0x052B, prLower}, // L& CYRILLIC SMALL LETTER DZZHE - {0x052C, 0x052C, prUpper}, // L& CYRILLIC CAPITAL LETTER DCHE - {0x052D, 0x052D, prLower}, // L& CYRILLIC SMALL LETTER DCHE - {0x052E, 0x052E, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH DESCENDER - {0x052F, 0x052F, prLower}, // L& CYRILLIC SMALL LETTER EL WITH DESCENDER - {0x0531, 0x0556, prUpper}, // L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH - {0x0559, 0x0559, prOLetter}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING - {0x055D, 0x055D, prSContinue}, // Po ARMENIAN COMMA - {0x0560, 0x0588, prLower}, // L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE - {0x0589, 0x0589, prSTerm}, // Po ARMENIAN FULL STOP - {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG - {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE - {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT - {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT - {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN - {0x05D0, 0x05EA, prOLetter}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV - {0x05EF, 0x05F2, prOLetter}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD - {0x05F3, 0x05F3, prOLetter}, // Po HEBREW PUNCTUATION GERESH - {0x0600, 0x0605, prFormat}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE - {0x060C, 0x060D, prSContinue}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR - {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA - {0x061C, 0x061C, prFormat}, // Cf ARABIC LETTER MARK - {0x061D, 0x061F, prSTerm}, // Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK - {0x0620, 0x063F, prOLetter}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE - {0x0640, 0x0640, prOLetter}, // Lm ARABIC TATWEEL - {0x0641, 0x064A, prOLetter}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH - {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW - {0x0660, 0x0669, prNumeric}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE - {0x066B, 0x066C, prNumeric}, // Po [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR - {0x066E, 0x066F, prOLetter}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF - {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF - {0x0671, 0x06D3, prOLetter}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE - {0x06D4, 0x06D4, prSTerm}, // Po ARABIC FULL STOP - {0x06D5, 0x06D5, prOLetter}, // Lo ARABIC LETTER AE - {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN - {0x06DD, 0x06DD, prFormat}, // Cf ARABIC END OF AYAH - {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA - {0x06E5, 0x06E6, prOLetter}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH - {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON - {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM - {0x06EE, 0x06EF, prOLetter}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V - {0x06F0, 0x06F9, prNumeric}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE - {0x06FA, 0x06FC, prOLetter}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW - {0x06FF, 0x06FF, prOLetter}, // Lo ARABIC LETTER HEH WITH INVERTED V - {0x0700, 0x0702, prSTerm}, // Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP - {0x070F, 0x070F, prFormat}, // Cf SYRIAC ABBREVIATION MARK - {0x0710, 0x0710, prOLetter}, // Lo SYRIAC LETTER ALAPH - {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH - {0x0712, 0x072F, prOLetter}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH - {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH - {0x074D, 0x07A5, prOLetter}, // Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU - {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN - {0x07B1, 0x07B1, prOLetter}, // Lo THAANA LETTER NAA - {0x07C0, 0x07C9, prNumeric}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE - {0x07CA, 0x07EA, prOLetter}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA - {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE - {0x07F4, 0x07F5, prOLetter}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE - {0x07F8, 0x07F8, prSContinue}, // Po NKO COMMA - {0x07F9, 0x07F9, prSTerm}, // Po NKO EXCLAMATION MARK - {0x07FA, 0x07FA, prOLetter}, // Lm NKO LAJANYALAN - {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN - {0x0800, 0x0815, prOLetter}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF - {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH - {0x081A, 0x081A, prOLetter}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT - {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A - {0x0824, 0x0824, prOLetter}, // Lm SAMARITAN MODIFIER LETTER SHORT A - {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U - {0x0828, 0x0828, prOLetter}, // Lm SAMARITAN MODIFIER LETTER I - {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - {0x0837, 0x0837, prSTerm}, // Po SAMARITAN PUNCTUATION MELODIC QITSA - {0x0839, 0x0839, prSTerm}, // Po SAMARITAN PUNCTUATION QITSA - {0x083D, 0x083E, prSTerm}, // Po [2] SAMARITAN PUNCTUATION SOF MASHFAAT..SAMARITAN PUNCTUATION ANNAAU - {0x0840, 0x0858, prOLetter}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - {0x0860, 0x086A, prOLetter}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA - {0x0870, 0x0887, prOLetter}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT - {0x0889, 0x088E, prOLetter}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL - {0x0890, 0x0891, prFormat}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE - {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA - {0x08A0, 0x08C8, prOLetter}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF - {0x08C9, 0x08C9, prOLetter}, // Lm ARABIC SMALL FARSI YEH - {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA - {0x08E2, 0x08E2, prFormat}, // Cf ARABIC DISPUTED END OF AYAH - {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - {0x0903, 0x0903, prExtend}, // Mc DEVANAGARI SIGN VISARGA - {0x0904, 0x0939, prOLetter}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE - {0x093B, 0x093B, prExtend}, // Mc DEVANAGARI VOWEL SIGN OOE - {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA - {0x093D, 0x093D, prOLetter}, // Lo DEVANAGARI SIGN AVAGRAHA - {0x093E, 0x0940, prExtend}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II - {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI - {0x0949, 0x094C, prExtend}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU - {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA - {0x094E, 0x094F, prExtend}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW - {0x0950, 0x0950, prOLetter}, // Lo DEVANAGARI OM - {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE - {0x0958, 0x0961, prOLetter}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL - {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL - {0x0964, 0x0965, prSTerm}, // Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA - {0x0966, 0x096F, prNumeric}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE - {0x0971, 0x0971, prOLetter}, // Lm DEVANAGARI SIGN HIGH SPACING DOT - {0x0972, 0x0980, prOLetter}, // Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI - {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU - {0x0982, 0x0983, prExtend}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA - {0x0985, 0x098C, prOLetter}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L - {0x098F, 0x0990, prOLetter}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI - {0x0993, 0x09A8, prOLetter}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA - {0x09AA, 0x09B0, prOLetter}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA - {0x09B2, 0x09B2, prOLetter}, // Lo BENGALI LETTER LA - {0x09B6, 0x09B9, prOLetter}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA - {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA - {0x09BD, 0x09BD, prOLetter}, // Lo BENGALI SIGN AVAGRAHA - {0x09BE, 0x09C0, prExtend}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II - {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR - {0x09C7, 0x09C8, prExtend}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI - {0x09CB, 0x09CC, prExtend}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU - {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA - {0x09CE, 0x09CE, prOLetter}, // Lo BENGALI LETTER KHANDA TA - {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK - {0x09DC, 0x09DD, prOLetter}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA - {0x09DF, 0x09E1, prOLetter}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL - {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL - {0x09E6, 0x09EF, prNumeric}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE - {0x09F0, 0x09F1, prOLetter}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL - {0x09FC, 0x09FC, prOLetter}, // Lo BENGALI LETTER VEDIC ANUSVARA - {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK - {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI - {0x0A03, 0x0A03, prExtend}, // Mc GURMUKHI SIGN VISARGA - {0x0A05, 0x0A0A, prOLetter}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU - {0x0A0F, 0x0A10, prOLetter}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI - {0x0A13, 0x0A28, prOLetter}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA - {0x0A2A, 0x0A30, prOLetter}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA - {0x0A32, 0x0A33, prOLetter}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA - {0x0A35, 0x0A36, prOLetter}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA - {0x0A38, 0x0A39, prOLetter}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA - {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA - {0x0A3E, 0x0A40, prExtend}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II - {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU - {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI - {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA - {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT - {0x0A59, 0x0A5C, prOLetter}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA - {0x0A5E, 0x0A5E, prOLetter}, // Lo GURMUKHI LETTER FA - {0x0A66, 0x0A6F, prNumeric}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE - {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK - {0x0A72, 0x0A74, prOLetter}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR - {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH - {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA - {0x0A83, 0x0A83, prExtend}, // Mc GUJARATI SIGN VISARGA - {0x0A85, 0x0A8D, prOLetter}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E - {0x0A8F, 0x0A91, prOLetter}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O - {0x0A93, 0x0AA8, prOLetter}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA - {0x0AAA, 0x0AB0, prOLetter}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA - {0x0AB2, 0x0AB3, prOLetter}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA - {0x0AB5, 0x0AB9, prOLetter}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA - {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA - {0x0ABD, 0x0ABD, prOLetter}, // Lo GUJARATI SIGN AVAGRAHA - {0x0ABE, 0x0AC0, prExtend}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II - {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E - {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI - {0x0AC9, 0x0AC9, prExtend}, // Mc GUJARATI VOWEL SIGN CANDRA O - {0x0ACB, 0x0ACC, prExtend}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU - {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA - {0x0AD0, 0x0AD0, prOLetter}, // Lo GUJARATI OM - {0x0AE0, 0x0AE1, prOLetter}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL - {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL - {0x0AE6, 0x0AEF, prNumeric}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE - {0x0AF9, 0x0AF9, prOLetter}, // Lo GUJARATI LETTER ZHA - {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE - {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU - {0x0B02, 0x0B03, prExtend}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA - {0x0B05, 0x0B0C, prOLetter}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L - {0x0B0F, 0x0B10, prOLetter}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI - {0x0B13, 0x0B28, prOLetter}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA - {0x0B2A, 0x0B30, prOLetter}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA - {0x0B32, 0x0B33, prOLetter}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA - {0x0B35, 0x0B39, prOLetter}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA - {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA - {0x0B3D, 0x0B3D, prOLetter}, // Lo ORIYA SIGN AVAGRAHA - {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA - {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I - {0x0B40, 0x0B40, prExtend}, // Mc ORIYA VOWEL SIGN II - {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR - {0x0B47, 0x0B48, prExtend}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI - {0x0B4B, 0x0B4C, prExtend}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU - {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA - {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK - {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK - {0x0B5C, 0x0B5D, prOLetter}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA - {0x0B5F, 0x0B61, prOLetter}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL - {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL - {0x0B66, 0x0B6F, prNumeric}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE - {0x0B71, 0x0B71, prOLetter}, // Lo ORIYA LETTER WA - {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA - {0x0B83, 0x0B83, prOLetter}, // Lo TAMIL SIGN VISARGA - {0x0B85, 0x0B8A, prOLetter}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU - {0x0B8E, 0x0B90, prOLetter}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI - {0x0B92, 0x0B95, prOLetter}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA - {0x0B99, 0x0B9A, prOLetter}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA - {0x0B9C, 0x0B9C, prOLetter}, // Lo TAMIL LETTER JA - {0x0B9E, 0x0B9F, prOLetter}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA - {0x0BA3, 0x0BA4, prOLetter}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA - {0x0BA8, 0x0BAA, prOLetter}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA - {0x0BAE, 0x0BB9, prOLetter}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA - {0x0BBE, 0x0BBF, prExtend}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I - {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II - {0x0BC1, 0x0BC2, prExtend}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU - {0x0BC6, 0x0BC8, prExtend}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI - {0x0BCA, 0x0BCC, prExtend}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU - {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA - {0x0BD0, 0x0BD0, prOLetter}, // Lo TAMIL OM - {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK - {0x0BE6, 0x0BEF, prNumeric}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE - {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE - {0x0C01, 0x0C03, prExtend}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA - {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE - {0x0C05, 0x0C0C, prOLetter}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L - {0x0C0E, 0x0C10, prOLetter}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI - {0x0C12, 0x0C28, prOLetter}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA - {0x0C2A, 0x0C39, prOLetter}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA - {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA - {0x0C3D, 0x0C3D, prOLetter}, // Lo TELUGU SIGN AVAGRAHA - {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II - {0x0C41, 0x0C44, prExtend}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR - {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI - {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA - {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK - {0x0C58, 0x0C5A, prOLetter}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - {0x0C5D, 0x0C5D, prOLetter}, // Lo TELUGU LETTER NAKAARA POLLU - {0x0C60, 0x0C61, prOLetter}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - {0x0C66, 0x0C6F, prNumeric}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE - {0x0C80, 0x0C80, prOLetter}, // Lo KANNADA SIGN SPACING CANDRABINDU - {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU - {0x0C82, 0x0C83, prExtend}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - {0x0C85, 0x0C8C, prOLetter}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - {0x0C8E, 0x0C90, prOLetter}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI - {0x0C92, 0x0CA8, prOLetter}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA - {0x0CAA, 0x0CB3, prOLetter}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA - {0x0CB5, 0x0CB9, prOLetter}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA - {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA - {0x0CBD, 0x0CBD, prOLetter}, // Lo KANNADA SIGN AVAGRAHA - {0x0CBE, 0x0CBE, prExtend}, // Mc KANNADA VOWEL SIGN AA - {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I - {0x0CC0, 0x0CC4, prExtend}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR - {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E - {0x0CC7, 0x0CC8, prExtend}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI - {0x0CCA, 0x0CCB, prExtend}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO - {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA - {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK - {0x0CDD, 0x0CDE, prOLetter}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA - {0x0CE0, 0x0CE1, prOLetter}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL - {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL - {0x0CE6, 0x0CEF, prNumeric}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - {0x0CF1, 0x0CF2, prOLetter}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA - {0x0CF3, 0x0CF3, prExtend}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT - {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU - {0x0D02, 0x0D03, prExtend}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA - {0x0D04, 0x0D0C, prOLetter}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L - {0x0D0E, 0x0D10, prOLetter}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI - {0x0D12, 0x0D3A, prOLetter}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA - {0x0D3D, 0x0D3D, prOLetter}, // Lo MALAYALAM SIGN AVAGRAHA - {0x0D3E, 0x0D40, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II - {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR - {0x0D46, 0x0D48, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - {0x0D4A, 0x0D4C, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA - {0x0D4E, 0x0D4E, prOLetter}, // Lo MALAYALAM LETTER DOT REPH - {0x0D54, 0x0D56, prOLetter}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK - {0x0D5F, 0x0D61, prOLetter}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL - {0x0D66, 0x0D6F, prNumeric}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE - {0x0D7A, 0x0D7F, prOLetter}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU - {0x0D82, 0x0D83, prExtend}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA - {0x0D85, 0x0D96, prOLetter}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA - {0x0D9A, 0x0DB1, prOLetter}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA - {0x0DB3, 0x0DBB, prOLetter}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA - {0x0DBD, 0x0DBD, prOLetter}, // Lo SINHALA LETTER DANTAJA LAYANNA - {0x0DC0, 0x0DC6, prOLetter}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA - {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA - {0x0DCF, 0x0DD1, prExtend}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA - {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA - {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA - {0x0DD8, 0x0DDF, prExtend}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA - {0x0DE6, 0x0DEF, prNumeric}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE - {0x0DF2, 0x0DF3, prExtend}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA - {0x0E01, 0x0E30, prOLetter}, // Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A - {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT - {0x0E32, 0x0E33, prOLetter}, // Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM - {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU - {0x0E40, 0x0E45, prOLetter}, // Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO - {0x0E46, 0x0E46, prOLetter}, // Lm THAI CHARACTER MAIYAMOK - {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN - {0x0E50, 0x0E59, prNumeric}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE - {0x0E81, 0x0E82, prOLetter}, // Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG - {0x0E84, 0x0E84, prOLetter}, // Lo LAO LETTER KHO TAM - {0x0E86, 0x0E8A, prOLetter}, // Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM - {0x0E8C, 0x0EA3, prOLetter}, // Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING - {0x0EA5, 0x0EA5, prOLetter}, // Lo LAO LETTER LO LOOT - {0x0EA7, 0x0EB0, prOLetter}, // Lo [10] LAO LETTER WO..LAO VOWEL SIGN A - {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN - {0x0EB2, 0x0EB3, prOLetter}, // Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM - {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO - {0x0EBD, 0x0EBD, prOLetter}, // Lo LAO SEMIVOWEL SIGN NYO - {0x0EC0, 0x0EC4, prOLetter}, // Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI - {0x0EC6, 0x0EC6, prOLetter}, // Lm LAO KO LA - {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN - {0x0ED0, 0x0ED9, prNumeric}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE - {0x0EDC, 0x0EDF, prOLetter}, // Lo [4] LAO HO NO..LAO LETTER KHMU NYO - {0x0F00, 0x0F00, prOLetter}, // Lo TIBETAN SYLLABLE OM - {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS - {0x0F20, 0x0F29, prNumeric}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE - {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA - {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS - {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU - {0x0F3A, 0x0F3A, prClose}, // Ps TIBETAN MARK GUG RTAGS GYON - {0x0F3B, 0x0F3B, prClose}, // Pe TIBETAN MARK GUG RTAGS GYAS - {0x0F3C, 0x0F3C, prClose}, // Ps TIBETAN MARK ANG KHANG GYON - {0x0F3D, 0x0F3D, prClose}, // Pe TIBETAN MARK ANG KHANG GYAS - {0x0F3E, 0x0F3F, prExtend}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES - {0x0F40, 0x0F47, prOLetter}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA - {0x0F49, 0x0F6C, prOLetter}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA - {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO - {0x0F7F, 0x0F7F, prExtend}, // Mc TIBETAN SIGN RNAM BCAD - {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA - {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS - {0x0F88, 0x0F8C, prOLetter}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN - {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA - {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA - {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN - {0x1000, 0x102A, prOLetter}, // Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU - {0x102B, 0x102C, prExtend}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA - {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU - {0x1031, 0x1031, prExtend}, // Mc MYANMAR VOWEL SIGN E - {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW - {0x1038, 0x1038, prExtend}, // Mc MYANMAR SIGN VISARGA - {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT - {0x103B, 0x103C, prExtend}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA - {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA - {0x103F, 0x103F, prOLetter}, // Lo MYANMAR LETTER GREAT SA - {0x1040, 0x1049, prNumeric}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE - {0x104A, 0x104B, prSTerm}, // Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION - {0x1050, 0x1055, prOLetter}, // Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL - {0x1056, 0x1057, prExtend}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR - {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - {0x105A, 0x105D, prOLetter}, // Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE - {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA - {0x1061, 0x1061, prOLetter}, // Lo MYANMAR LETTER SGAW KAREN SHA - {0x1062, 0x1064, prExtend}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO - {0x1065, 0x1066, prOLetter}, // Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA - {0x1067, 0x106D, prExtend}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 - {0x106E, 0x1070, prOLetter}, // Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA - {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE - {0x1075, 0x1081, prOLetter}, // Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA - {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA - {0x1083, 0x1084, prExtend}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E - {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y - {0x1087, 0x108C, prExtend}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 - {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE - {0x108E, 0x108E, prOLetter}, // Lo MYANMAR LETTER RUMAI PALAUNG FA - {0x108F, 0x108F, prExtend}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 - {0x1090, 0x1099, prNumeric}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE - {0x109A, 0x109C, prExtend}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A - {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI - {0x10A0, 0x10C5, prUpper}, // L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE - {0x10C7, 0x10C7, prUpper}, // L& GEORGIAN CAPITAL LETTER YN - {0x10CD, 0x10CD, prUpper}, // L& GEORGIAN CAPITAL LETTER AEN - {0x10D0, 0x10FA, prOLetter}, // L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN - {0x10FC, 0x10FC, prLower}, // Lm MODIFIER LETTER GEORGIAN NAR - {0x10FD, 0x10FF, prOLetter}, // L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN - {0x1100, 0x1248, prOLetter}, // Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA - {0x124A, 0x124D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE - {0x1250, 0x1256, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO - {0x1258, 0x1258, prOLetter}, // Lo ETHIOPIC SYLLABLE QHWA - {0x125A, 0x125D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE - {0x1260, 0x1288, prOLetter}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA - {0x128A, 0x128D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE - {0x1290, 0x12B0, prOLetter}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA - {0x12B2, 0x12B5, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE - {0x12B8, 0x12BE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO - {0x12C0, 0x12C0, prOLetter}, // Lo ETHIOPIC SYLLABLE KXWA - {0x12C2, 0x12C5, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE - {0x12C8, 0x12D6, prOLetter}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O - {0x12D8, 0x1310, prOLetter}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA - {0x1312, 0x1315, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE - {0x1318, 0x135A, prOLetter}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA - {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK - {0x1362, 0x1362, prSTerm}, // Po ETHIOPIC FULL STOP - {0x1367, 0x1368, prSTerm}, // Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR - {0x1380, 0x138F, prOLetter}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE - {0x13A0, 0x13F5, prUpper}, // L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - {0x13F8, 0x13FD, prLower}, // L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV - {0x1401, 0x166C, prOLetter}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA - {0x166E, 0x166E, prSTerm}, // Po CANADIAN SYLLABICS FULL STOP - {0x166F, 0x167F, prOLetter}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W - {0x1680, 0x1680, prSp}, // Zs OGHAM SPACE MARK - {0x1681, 0x169A, prOLetter}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH - {0x169B, 0x169B, prClose}, // Ps OGHAM FEATHER MARK - {0x169C, 0x169C, prClose}, // Pe OGHAM REVERSED FEATHER MARK - {0x16A0, 0x16EA, prOLetter}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X - {0x16EE, 0x16F0, prOLetter}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - {0x16F1, 0x16F8, prOLetter}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC - {0x1700, 0x1711, prOLetter}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA - {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - {0x1715, 0x1715, prExtend}, // Mc TAGALOG SIGN PAMUDPOD - {0x171F, 0x1731, prOLetter}, // Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA - {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U - {0x1734, 0x1734, prExtend}, // Mc HANUNOO SIGN PAMUDPOD - {0x1735, 0x1736, prSTerm}, // Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION - {0x1740, 0x1751, prOLetter}, // Lo [18] BUHID LETTER A..BUHID LETTER HA - {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - {0x1760, 0x176C, prOLetter}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA - {0x176E, 0x1770, prOLetter}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA - {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - {0x1780, 0x17B3, prOLetter}, // Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU - {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA - {0x17B6, 0x17B6, prExtend}, // Mc KHMER VOWEL SIGN AA - {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA - {0x17BE, 0x17C5, prExtend}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU - {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT - {0x17C7, 0x17C8, prExtend}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU - {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT - {0x17D7, 0x17D7, prOLetter}, // Lm KHMER SIGN LEK TOO - {0x17DC, 0x17DC, prOLetter}, // Lo KHMER SIGN AVAKRAHASANYA - {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN - {0x17E0, 0x17E9, prNumeric}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE - {0x1802, 0x1802, prSContinue}, // Po MONGOLIAN COMMA - {0x1803, 0x1803, prSTerm}, // Po MONGOLIAN FULL STOP - {0x1808, 0x1808, prSContinue}, // Po MONGOLIAN MANCHU COMMA - {0x1809, 0x1809, prSTerm}, // Po MONGOLIAN MANCHU FULL STOP - {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - {0x180E, 0x180E, prFormat}, // Cf MONGOLIAN VOWEL SEPARATOR - {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR - {0x1810, 0x1819, prNumeric}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE - {0x1820, 0x1842, prOLetter}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - {0x1843, 0x1843, prOLetter}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - {0x1844, 0x1878, prOLetter}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS - {0x1880, 0x1884, prOLetter}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA - {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - {0x1887, 0x18A8, prOLetter}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA - {0x18AA, 0x18AA, prOLetter}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - {0x18B0, 0x18F5, prOLetter}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - {0x1900, 0x191E, prOLetter}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA - {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - {0x1923, 0x1926, prExtend}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU - {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O - {0x1929, 0x192B, prExtend}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA - {0x1930, 0x1931, prExtend}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA - {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA - {0x1933, 0x1938, prExtend}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA - {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I - {0x1944, 0x1945, prSTerm}, // Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK - {0x1946, 0x194F, prNumeric}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - {0x1950, 0x196D, prOLetter}, // Lo [30] TAI LE LETTER KA..TAI LE LETTER AI - {0x1970, 0x1974, prOLetter}, // Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 - {0x1980, 0x19AB, prOLetter}, // Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA - {0x19B0, 0x19C9, prOLetter}, // Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 - {0x19D0, 0x19D9, prNumeric}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE - {0x1A00, 0x1A16, prOLetter}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA - {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U - {0x1A19, 0x1A1A, prExtend}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O - {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE - {0x1A20, 0x1A54, prOLetter}, // Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA - {0x1A55, 0x1A55, prExtend}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA - {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA - {0x1A57, 0x1A57, prExtend}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI - {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA - {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT - {0x1A61, 0x1A61, prExtend}, // Mc TAI THAM VOWEL SIGN A - {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT - {0x1A63, 0x1A64, prExtend}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA - {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW - {0x1A6D, 0x1A72, prExtend}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI - {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN - {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT - {0x1A80, 0x1A89, prNumeric}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE - {0x1A90, 0x1A99, prNumeric}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE - {0x1AA7, 0x1AA7, prOLetter}, // Lm TAI THAM SIGN MAI YAMOK - {0x1AA8, 0x1AAB, prSTerm}, // Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU - {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW - {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY - {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T - {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG - {0x1B04, 0x1B04, prExtend}, // Mc BALINESE SIGN BISAH - {0x1B05, 0x1B33, prOLetter}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA - {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN - {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG - {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA - {0x1B3B, 0x1B3B, prExtend}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG - {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA - {0x1B3D, 0x1B41, prExtend}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG - {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET - {0x1B43, 0x1B44, prExtend}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG - {0x1B45, 0x1B4C, prOLetter}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA - {0x1B50, 0x1B59, prNumeric}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE - {0x1B5A, 0x1B5B, prSTerm}, // Po [2] BALINESE PANTI..BALINESE PAMADA - {0x1B5E, 0x1B5F, prSTerm}, // Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN - {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG - {0x1B7D, 0x1B7E, prSTerm}, // Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG - {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR - {0x1B82, 0x1B82, prExtend}, // Mc SUNDANESE SIGN PANGWISAD - {0x1B83, 0x1BA0, prOLetter}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA - {0x1BA1, 0x1BA1, prExtend}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL - {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU - {0x1BA6, 0x1BA7, prExtend}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG - {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG - {0x1BAA, 0x1BAA, prExtend}, // Mc SUNDANESE SIGN PAMAAEH - {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA - {0x1BAE, 0x1BAF, prOLetter}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA - {0x1BB0, 0x1BB9, prNumeric}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE - {0x1BBA, 0x1BE5, prOLetter}, // Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U - {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI - {0x1BE7, 0x1BE7, prExtend}, // Mc BATAK VOWEL SIGN E - {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE - {0x1BEA, 0x1BEC, prExtend}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O - {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O - {0x1BEE, 0x1BEE, prExtend}, // Mc BATAK VOWEL SIGN U - {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H - {0x1BF2, 0x1BF3, prExtend}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN - {0x1C00, 0x1C23, prOLetter}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A - {0x1C24, 0x1C2B, prExtend}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU - {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T - {0x1C34, 0x1C35, prExtend}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG - {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA - {0x1C3B, 0x1C3C, prSTerm}, // Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL - {0x1C40, 0x1C49, prNumeric}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE - {0x1C4D, 0x1C4F, prOLetter}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - {0x1C50, 0x1C59, prNumeric}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - {0x1C5A, 0x1C77, prOLetter}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - {0x1C78, 0x1C7D, prOLetter}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD - {0x1C7E, 0x1C7F, prSTerm}, // Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD - {0x1C80, 0x1C88, prLower}, // L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - {0x1C90, 0x1CBA, prOLetter}, // L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN - {0x1CBD, 0x1CBF, prOLetter}, // L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN - {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - {0x1CE1, 0x1CE1, prExtend}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA - {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL - {0x1CE9, 0x1CEC, prOLetter}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK - {0x1CEE, 0x1CF3, prOLetter}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA - {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE - {0x1CF5, 0x1CF6, prOLetter}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA - {0x1CF7, 0x1CF7, prExtend}, // Mc VEDIC SIGN ATIKRAMA - {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE - {0x1CFA, 0x1CFA, prOLetter}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA - {0x1D00, 0x1D2B, prLower}, // L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - {0x1D2C, 0x1D6A, prLower}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - {0x1D6B, 0x1D77, prLower}, // L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G - {0x1D78, 0x1D78, prLower}, // Lm MODIFIER LETTER CYRILLIC EN - {0x1D79, 0x1D9A, prLower}, // L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - {0x1D9B, 0x1DBF, prLower}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - {0x1E00, 0x1E00, prUpper}, // L& LATIN CAPITAL LETTER A WITH RING BELOW - {0x1E01, 0x1E01, prLower}, // L& LATIN SMALL LETTER A WITH RING BELOW - {0x1E02, 0x1E02, prUpper}, // L& LATIN CAPITAL LETTER B WITH DOT ABOVE - {0x1E03, 0x1E03, prLower}, // L& LATIN SMALL LETTER B WITH DOT ABOVE - {0x1E04, 0x1E04, prUpper}, // L& LATIN CAPITAL LETTER B WITH DOT BELOW - {0x1E05, 0x1E05, prLower}, // L& LATIN SMALL LETTER B WITH DOT BELOW - {0x1E06, 0x1E06, prUpper}, // L& LATIN CAPITAL LETTER B WITH LINE BELOW - {0x1E07, 0x1E07, prLower}, // L& LATIN SMALL LETTER B WITH LINE BELOW - {0x1E08, 0x1E08, prUpper}, // L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE - {0x1E09, 0x1E09, prLower}, // L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE - {0x1E0A, 0x1E0A, prUpper}, // L& LATIN CAPITAL LETTER D WITH DOT ABOVE - {0x1E0B, 0x1E0B, prLower}, // L& LATIN SMALL LETTER D WITH DOT ABOVE - {0x1E0C, 0x1E0C, prUpper}, // L& LATIN CAPITAL LETTER D WITH DOT BELOW - {0x1E0D, 0x1E0D, prLower}, // L& LATIN SMALL LETTER D WITH DOT BELOW - {0x1E0E, 0x1E0E, prUpper}, // L& LATIN CAPITAL LETTER D WITH LINE BELOW - {0x1E0F, 0x1E0F, prLower}, // L& LATIN SMALL LETTER D WITH LINE BELOW - {0x1E10, 0x1E10, prUpper}, // L& LATIN CAPITAL LETTER D WITH CEDILLA - {0x1E11, 0x1E11, prLower}, // L& LATIN SMALL LETTER D WITH CEDILLA - {0x1E12, 0x1E12, prUpper}, // L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW - {0x1E13, 0x1E13, prLower}, // L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW - {0x1E14, 0x1E14, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE - {0x1E15, 0x1E15, prLower}, // L& LATIN SMALL LETTER E WITH MACRON AND GRAVE - {0x1E16, 0x1E16, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE - {0x1E17, 0x1E17, prLower}, // L& LATIN SMALL LETTER E WITH MACRON AND ACUTE - {0x1E18, 0x1E18, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW - {0x1E19, 0x1E19, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW - {0x1E1A, 0x1E1A, prUpper}, // L& LATIN CAPITAL LETTER E WITH TILDE BELOW - {0x1E1B, 0x1E1B, prLower}, // L& LATIN SMALL LETTER E WITH TILDE BELOW - {0x1E1C, 0x1E1C, prUpper}, // L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE - {0x1E1D, 0x1E1D, prLower}, // L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE - {0x1E1E, 0x1E1E, prUpper}, // L& LATIN CAPITAL LETTER F WITH DOT ABOVE - {0x1E1F, 0x1E1F, prLower}, // L& LATIN SMALL LETTER F WITH DOT ABOVE - {0x1E20, 0x1E20, prUpper}, // L& LATIN CAPITAL LETTER G WITH MACRON - {0x1E21, 0x1E21, prLower}, // L& LATIN SMALL LETTER G WITH MACRON - {0x1E22, 0x1E22, prUpper}, // L& LATIN CAPITAL LETTER H WITH DOT ABOVE - {0x1E23, 0x1E23, prLower}, // L& LATIN SMALL LETTER H WITH DOT ABOVE - {0x1E24, 0x1E24, prUpper}, // L& LATIN CAPITAL LETTER H WITH DOT BELOW - {0x1E25, 0x1E25, prLower}, // L& LATIN SMALL LETTER H WITH DOT BELOW - {0x1E26, 0x1E26, prUpper}, // L& LATIN CAPITAL LETTER H WITH DIAERESIS - {0x1E27, 0x1E27, prLower}, // L& LATIN SMALL LETTER H WITH DIAERESIS - {0x1E28, 0x1E28, prUpper}, // L& LATIN CAPITAL LETTER H WITH CEDILLA - {0x1E29, 0x1E29, prLower}, // L& LATIN SMALL LETTER H WITH CEDILLA - {0x1E2A, 0x1E2A, prUpper}, // L& LATIN CAPITAL LETTER H WITH BREVE BELOW - {0x1E2B, 0x1E2B, prLower}, // L& LATIN SMALL LETTER H WITH BREVE BELOW - {0x1E2C, 0x1E2C, prUpper}, // L& LATIN CAPITAL LETTER I WITH TILDE BELOW - {0x1E2D, 0x1E2D, prLower}, // L& LATIN SMALL LETTER I WITH TILDE BELOW - {0x1E2E, 0x1E2E, prUpper}, // L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE - {0x1E2F, 0x1E2F, prLower}, // L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE - {0x1E30, 0x1E30, prUpper}, // L& LATIN CAPITAL LETTER K WITH ACUTE - {0x1E31, 0x1E31, prLower}, // L& LATIN SMALL LETTER K WITH ACUTE - {0x1E32, 0x1E32, prUpper}, // L& LATIN CAPITAL LETTER K WITH DOT BELOW - {0x1E33, 0x1E33, prLower}, // L& LATIN SMALL LETTER K WITH DOT BELOW - {0x1E34, 0x1E34, prUpper}, // L& LATIN CAPITAL LETTER K WITH LINE BELOW - {0x1E35, 0x1E35, prLower}, // L& LATIN SMALL LETTER K WITH LINE BELOW - {0x1E36, 0x1E36, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOT BELOW - {0x1E37, 0x1E37, prLower}, // L& LATIN SMALL LETTER L WITH DOT BELOW - {0x1E38, 0x1E38, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON - {0x1E39, 0x1E39, prLower}, // L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON - {0x1E3A, 0x1E3A, prUpper}, // L& LATIN CAPITAL LETTER L WITH LINE BELOW - {0x1E3B, 0x1E3B, prLower}, // L& LATIN SMALL LETTER L WITH LINE BELOW - {0x1E3C, 0x1E3C, prUpper}, // L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW - {0x1E3D, 0x1E3D, prLower}, // L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW - {0x1E3E, 0x1E3E, prUpper}, // L& LATIN CAPITAL LETTER M WITH ACUTE - {0x1E3F, 0x1E3F, prLower}, // L& LATIN SMALL LETTER M WITH ACUTE - {0x1E40, 0x1E40, prUpper}, // L& LATIN CAPITAL LETTER M WITH DOT ABOVE - {0x1E41, 0x1E41, prLower}, // L& LATIN SMALL LETTER M WITH DOT ABOVE - {0x1E42, 0x1E42, prUpper}, // L& LATIN CAPITAL LETTER M WITH DOT BELOW - {0x1E43, 0x1E43, prLower}, // L& LATIN SMALL LETTER M WITH DOT BELOW - {0x1E44, 0x1E44, prUpper}, // L& LATIN CAPITAL LETTER N WITH DOT ABOVE - {0x1E45, 0x1E45, prLower}, // L& LATIN SMALL LETTER N WITH DOT ABOVE - {0x1E46, 0x1E46, prUpper}, // L& LATIN CAPITAL LETTER N WITH DOT BELOW - {0x1E47, 0x1E47, prLower}, // L& LATIN SMALL LETTER N WITH DOT BELOW - {0x1E48, 0x1E48, prUpper}, // L& LATIN CAPITAL LETTER N WITH LINE BELOW - {0x1E49, 0x1E49, prLower}, // L& LATIN SMALL LETTER N WITH LINE BELOW - {0x1E4A, 0x1E4A, prUpper}, // L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW - {0x1E4B, 0x1E4B, prLower}, // L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW - {0x1E4C, 0x1E4C, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE - {0x1E4D, 0x1E4D, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND ACUTE - {0x1E4E, 0x1E4E, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS - {0x1E4F, 0x1E4F, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS - {0x1E50, 0x1E50, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE - {0x1E51, 0x1E51, prLower}, // L& LATIN SMALL LETTER O WITH MACRON AND GRAVE - {0x1E52, 0x1E52, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE - {0x1E53, 0x1E53, prLower}, // L& LATIN SMALL LETTER O WITH MACRON AND ACUTE - {0x1E54, 0x1E54, prUpper}, // L& LATIN CAPITAL LETTER P WITH ACUTE - {0x1E55, 0x1E55, prLower}, // L& LATIN SMALL LETTER P WITH ACUTE - {0x1E56, 0x1E56, prUpper}, // L& LATIN CAPITAL LETTER P WITH DOT ABOVE - {0x1E57, 0x1E57, prLower}, // L& LATIN SMALL LETTER P WITH DOT ABOVE - {0x1E58, 0x1E58, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT ABOVE - {0x1E59, 0x1E59, prLower}, // L& LATIN SMALL LETTER R WITH DOT ABOVE - {0x1E5A, 0x1E5A, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT BELOW - {0x1E5B, 0x1E5B, prLower}, // L& LATIN SMALL LETTER R WITH DOT BELOW - {0x1E5C, 0x1E5C, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON - {0x1E5D, 0x1E5D, prLower}, // L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON - {0x1E5E, 0x1E5E, prUpper}, // L& LATIN CAPITAL LETTER R WITH LINE BELOW - {0x1E5F, 0x1E5F, prLower}, // L& LATIN SMALL LETTER R WITH LINE BELOW - {0x1E60, 0x1E60, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT ABOVE - {0x1E61, 0x1E61, prLower}, // L& LATIN SMALL LETTER S WITH DOT ABOVE - {0x1E62, 0x1E62, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT BELOW - {0x1E63, 0x1E63, prLower}, // L& LATIN SMALL LETTER S WITH DOT BELOW - {0x1E64, 0x1E64, prUpper}, // L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE - {0x1E65, 0x1E65, prLower}, // L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE - {0x1E66, 0x1E66, prUpper}, // L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE - {0x1E67, 0x1E67, prLower}, // L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE - {0x1E68, 0x1E68, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE - {0x1E69, 0x1E69, prLower}, // L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE - {0x1E6A, 0x1E6A, prUpper}, // L& LATIN CAPITAL LETTER T WITH DOT ABOVE - {0x1E6B, 0x1E6B, prLower}, // L& LATIN SMALL LETTER T WITH DOT ABOVE - {0x1E6C, 0x1E6C, prUpper}, // L& LATIN CAPITAL LETTER T WITH DOT BELOW - {0x1E6D, 0x1E6D, prLower}, // L& LATIN SMALL LETTER T WITH DOT BELOW - {0x1E6E, 0x1E6E, prUpper}, // L& LATIN CAPITAL LETTER T WITH LINE BELOW - {0x1E6F, 0x1E6F, prLower}, // L& LATIN SMALL LETTER T WITH LINE BELOW - {0x1E70, 0x1E70, prUpper}, // L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW - {0x1E71, 0x1E71, prLower}, // L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW - {0x1E72, 0x1E72, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW - {0x1E73, 0x1E73, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS BELOW - {0x1E74, 0x1E74, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE BELOW - {0x1E75, 0x1E75, prLower}, // L& LATIN SMALL LETTER U WITH TILDE BELOW - {0x1E76, 0x1E76, prUpper}, // L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW - {0x1E77, 0x1E77, prLower}, // L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW - {0x1E78, 0x1E78, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE - {0x1E79, 0x1E79, prLower}, // L& LATIN SMALL LETTER U WITH TILDE AND ACUTE - {0x1E7A, 0x1E7A, prUpper}, // L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS - {0x1E7B, 0x1E7B, prLower}, // L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS - {0x1E7C, 0x1E7C, prUpper}, // L& LATIN CAPITAL LETTER V WITH TILDE - {0x1E7D, 0x1E7D, prLower}, // L& LATIN SMALL LETTER V WITH TILDE - {0x1E7E, 0x1E7E, prUpper}, // L& LATIN CAPITAL LETTER V WITH DOT BELOW - {0x1E7F, 0x1E7F, prLower}, // L& LATIN SMALL LETTER V WITH DOT BELOW - {0x1E80, 0x1E80, prUpper}, // L& LATIN CAPITAL LETTER W WITH GRAVE - {0x1E81, 0x1E81, prLower}, // L& LATIN SMALL LETTER W WITH GRAVE - {0x1E82, 0x1E82, prUpper}, // L& LATIN CAPITAL LETTER W WITH ACUTE - {0x1E83, 0x1E83, prLower}, // L& LATIN SMALL LETTER W WITH ACUTE - {0x1E84, 0x1E84, prUpper}, // L& LATIN CAPITAL LETTER W WITH DIAERESIS - {0x1E85, 0x1E85, prLower}, // L& LATIN SMALL LETTER W WITH DIAERESIS - {0x1E86, 0x1E86, prUpper}, // L& LATIN CAPITAL LETTER W WITH DOT ABOVE - {0x1E87, 0x1E87, prLower}, // L& LATIN SMALL LETTER W WITH DOT ABOVE - {0x1E88, 0x1E88, prUpper}, // L& LATIN CAPITAL LETTER W WITH DOT BELOW - {0x1E89, 0x1E89, prLower}, // L& LATIN SMALL LETTER W WITH DOT BELOW - {0x1E8A, 0x1E8A, prUpper}, // L& LATIN CAPITAL LETTER X WITH DOT ABOVE - {0x1E8B, 0x1E8B, prLower}, // L& LATIN SMALL LETTER X WITH DOT ABOVE - {0x1E8C, 0x1E8C, prUpper}, // L& LATIN CAPITAL LETTER X WITH DIAERESIS - {0x1E8D, 0x1E8D, prLower}, // L& LATIN SMALL LETTER X WITH DIAERESIS - {0x1E8E, 0x1E8E, prUpper}, // L& LATIN CAPITAL LETTER Y WITH DOT ABOVE - {0x1E8F, 0x1E8F, prLower}, // L& LATIN SMALL LETTER Y WITH DOT ABOVE - {0x1E90, 0x1E90, prUpper}, // L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX - {0x1E91, 0x1E91, prLower}, // L& LATIN SMALL LETTER Z WITH CIRCUMFLEX - {0x1E92, 0x1E92, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DOT BELOW - {0x1E93, 0x1E93, prLower}, // L& LATIN SMALL LETTER Z WITH DOT BELOW - {0x1E94, 0x1E94, prUpper}, // L& LATIN CAPITAL LETTER Z WITH LINE BELOW - {0x1E95, 0x1E9D, prLower}, // L& [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE - {0x1E9E, 0x1E9E, prUpper}, // L& LATIN CAPITAL LETTER SHARP S - {0x1E9F, 0x1E9F, prLower}, // L& LATIN SMALL LETTER DELTA - {0x1EA0, 0x1EA0, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT BELOW - {0x1EA1, 0x1EA1, prLower}, // L& LATIN SMALL LETTER A WITH DOT BELOW - {0x1EA2, 0x1EA2, prUpper}, // L& LATIN CAPITAL LETTER A WITH HOOK ABOVE - {0x1EA3, 0x1EA3, prLower}, // L& LATIN SMALL LETTER A WITH HOOK ABOVE - {0x1EA4, 0x1EA4, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE - {0x1EA5, 0x1EA5, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE - {0x1EA6, 0x1EA6, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE - {0x1EA7, 0x1EA7, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE - {0x1EA8, 0x1EA8, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE - {0x1EA9, 0x1EA9, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE - {0x1EAA, 0x1EAA, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE - {0x1EAB, 0x1EAB, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE - {0x1EAC, 0x1EAC, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW - {0x1EAD, 0x1EAD, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW - {0x1EAE, 0x1EAE, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE - {0x1EAF, 0x1EAF, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND ACUTE - {0x1EB0, 0x1EB0, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE - {0x1EB1, 0x1EB1, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND GRAVE - {0x1EB2, 0x1EB2, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE - {0x1EB3, 0x1EB3, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE - {0x1EB4, 0x1EB4, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE - {0x1EB5, 0x1EB5, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND TILDE - {0x1EB6, 0x1EB6, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW - {0x1EB7, 0x1EB7, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW - {0x1EB8, 0x1EB8, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOT BELOW - {0x1EB9, 0x1EB9, prLower}, // L& LATIN SMALL LETTER E WITH DOT BELOW - {0x1EBA, 0x1EBA, prUpper}, // L& LATIN CAPITAL LETTER E WITH HOOK ABOVE - {0x1EBB, 0x1EBB, prLower}, // L& LATIN SMALL LETTER E WITH HOOK ABOVE - {0x1EBC, 0x1EBC, prUpper}, // L& LATIN CAPITAL LETTER E WITH TILDE - {0x1EBD, 0x1EBD, prLower}, // L& LATIN SMALL LETTER E WITH TILDE - {0x1EBE, 0x1EBE, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE - {0x1EBF, 0x1EBF, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE - {0x1EC0, 0x1EC0, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE - {0x1EC1, 0x1EC1, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE - {0x1EC2, 0x1EC2, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE - {0x1EC3, 0x1EC3, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE - {0x1EC4, 0x1EC4, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE - {0x1EC5, 0x1EC5, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE - {0x1EC6, 0x1EC6, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW - {0x1EC7, 0x1EC7, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW - {0x1EC8, 0x1EC8, prUpper}, // L& LATIN CAPITAL LETTER I WITH HOOK ABOVE - {0x1EC9, 0x1EC9, prLower}, // L& LATIN SMALL LETTER I WITH HOOK ABOVE - {0x1ECA, 0x1ECA, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOT BELOW - {0x1ECB, 0x1ECB, prLower}, // L& LATIN SMALL LETTER I WITH DOT BELOW - {0x1ECC, 0x1ECC, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT BELOW - {0x1ECD, 0x1ECD, prLower}, // L& LATIN SMALL LETTER O WITH DOT BELOW - {0x1ECE, 0x1ECE, prUpper}, // L& LATIN CAPITAL LETTER O WITH HOOK ABOVE - {0x1ECF, 0x1ECF, prLower}, // L& LATIN SMALL LETTER O WITH HOOK ABOVE - {0x1ED0, 0x1ED0, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE - {0x1ED1, 0x1ED1, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE - {0x1ED2, 0x1ED2, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE - {0x1ED3, 0x1ED3, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE - {0x1ED4, 0x1ED4, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE - {0x1ED5, 0x1ED5, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE - {0x1ED6, 0x1ED6, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE - {0x1ED7, 0x1ED7, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE - {0x1ED8, 0x1ED8, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW - {0x1ED9, 0x1ED9, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW - {0x1EDA, 0x1EDA, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE - {0x1EDB, 0x1EDB, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND ACUTE - {0x1EDC, 0x1EDC, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE - {0x1EDD, 0x1EDD, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND GRAVE - {0x1EDE, 0x1EDE, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE - {0x1EDF, 0x1EDF, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE - {0x1EE0, 0x1EE0, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND TILDE - {0x1EE1, 0x1EE1, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND TILDE - {0x1EE2, 0x1EE2, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW - {0x1EE3, 0x1EE3, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW - {0x1EE4, 0x1EE4, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOT BELOW - {0x1EE5, 0x1EE5, prLower}, // L& LATIN SMALL LETTER U WITH DOT BELOW - {0x1EE6, 0x1EE6, prUpper}, // L& LATIN CAPITAL LETTER U WITH HOOK ABOVE - {0x1EE7, 0x1EE7, prLower}, // L& LATIN SMALL LETTER U WITH HOOK ABOVE - {0x1EE8, 0x1EE8, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE - {0x1EE9, 0x1EE9, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND ACUTE - {0x1EEA, 0x1EEA, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE - {0x1EEB, 0x1EEB, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND GRAVE - {0x1EEC, 0x1EEC, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE - {0x1EED, 0x1EED, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE - {0x1EEE, 0x1EEE, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND TILDE - {0x1EEF, 0x1EEF, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND TILDE - {0x1EF0, 0x1EF0, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW - {0x1EF1, 0x1EF1, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW - {0x1EF2, 0x1EF2, prUpper}, // L& LATIN CAPITAL LETTER Y WITH GRAVE - {0x1EF3, 0x1EF3, prLower}, // L& LATIN SMALL LETTER Y WITH GRAVE - {0x1EF4, 0x1EF4, prUpper}, // L& LATIN CAPITAL LETTER Y WITH DOT BELOW - {0x1EF5, 0x1EF5, prLower}, // L& LATIN SMALL LETTER Y WITH DOT BELOW - {0x1EF6, 0x1EF6, prUpper}, // L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE - {0x1EF7, 0x1EF7, prLower}, // L& LATIN SMALL LETTER Y WITH HOOK ABOVE - {0x1EF8, 0x1EF8, prUpper}, // L& LATIN CAPITAL LETTER Y WITH TILDE - {0x1EF9, 0x1EF9, prLower}, // L& LATIN SMALL LETTER Y WITH TILDE - {0x1EFA, 0x1EFA, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE-WELSH LL - {0x1EFB, 0x1EFB, prLower}, // L& LATIN SMALL LETTER MIDDLE-WELSH LL - {0x1EFC, 0x1EFC, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE-WELSH V - {0x1EFD, 0x1EFD, prLower}, // L& LATIN SMALL LETTER MIDDLE-WELSH V - {0x1EFE, 0x1EFE, prUpper}, // L& LATIN CAPITAL LETTER Y WITH LOOP - {0x1EFF, 0x1F07, prLower}, // L& [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI - {0x1F08, 0x1F0F, prUpper}, // L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI - {0x1F10, 0x1F15, prLower}, // L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - {0x1F18, 0x1F1D, prUpper}, // L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - {0x1F20, 0x1F27, prLower}, // L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI - {0x1F28, 0x1F2F, prUpper}, // L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI - {0x1F30, 0x1F37, prLower}, // L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI - {0x1F38, 0x1F3F, prUpper}, // L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI - {0x1F40, 0x1F45, prLower}, // L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA - {0x1F48, 0x1F4D, prUpper}, // L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA - {0x1F50, 0x1F57, prLower}, // L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI - {0x1F59, 0x1F59, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA - {0x1F5B, 0x1F5B, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA - {0x1F5D, 0x1F5D, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA - {0x1F5F, 0x1F5F, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI - {0x1F60, 0x1F67, prLower}, // L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI - {0x1F68, 0x1F6F, prUpper}, // L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI - {0x1F70, 0x1F7D, prLower}, // L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA - {0x1F80, 0x1F87, prLower}, // L& [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - {0x1F88, 0x1F8F, prUpper}, // L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - {0x1F90, 0x1F97, prLower}, // L& [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - {0x1F98, 0x1F9F, prUpper}, // L& [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - {0x1FA0, 0x1FA7, prLower}, // L& [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - {0x1FA8, 0x1FAF, prUpper}, // L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - {0x1FB0, 0x1FB4, prLower}, // L& [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI - {0x1FB6, 0x1FB7, prLower}, // L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI - {0x1FB8, 0x1FBC, prUpper}, // L& [5] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI - {0x1FBE, 0x1FBE, prLower}, // L& GREEK PROSGEGRAMMENI - {0x1FC2, 0x1FC4, prLower}, // L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI - {0x1FC6, 0x1FC7, prLower}, // L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI - {0x1FC8, 0x1FCC, prUpper}, // L& [5] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI - {0x1FD0, 0x1FD3, prLower}, // L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA - {0x1FD6, 0x1FD7, prLower}, // L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI - {0x1FD8, 0x1FDB, prUpper}, // L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA - {0x1FE0, 0x1FE7, prLower}, // L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI - {0x1FE8, 0x1FEC, prUpper}, // L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA - {0x1FF2, 0x1FF4, prLower}, // L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - {0x1FF6, 0x1FF7, prLower}, // L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI - {0x1FF8, 0x1FFC, prUpper}, // L& [5] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - {0x2000, 0x200A, prSp}, // Zs [11] EN QUAD..HAIR SPACE - {0x200B, 0x200B, prFormat}, // Cf ZERO WIDTH SPACE - {0x200C, 0x200D, prExtend}, // Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER - {0x200E, 0x200F, prFormat}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK - {0x2013, 0x2014, prSContinue}, // Pd [2] EN DASH..EM DASH - {0x2018, 0x2018, prClose}, // Pi LEFT SINGLE QUOTATION MARK - {0x2019, 0x2019, prClose}, // Pf RIGHT SINGLE QUOTATION MARK - {0x201A, 0x201A, prClose}, // Ps SINGLE LOW-9 QUOTATION MARK - {0x201B, 0x201C, prClose}, // Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK - {0x201D, 0x201D, prClose}, // Pf RIGHT DOUBLE QUOTATION MARK - {0x201E, 0x201E, prClose}, // Ps DOUBLE LOW-9 QUOTATION MARK - {0x201F, 0x201F, prClose}, // Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK - {0x2024, 0x2024, prATerm}, // Po ONE DOT LEADER - {0x2028, 0x2028, prSep}, // Zl LINE SEPARATOR - {0x2029, 0x2029, prSep}, // Zp PARAGRAPH SEPARATOR - {0x202A, 0x202E, prFormat}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - {0x202F, 0x202F, prSp}, // Zs NARROW NO-BREAK SPACE - {0x2039, 0x2039, prClose}, // Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK - {0x203A, 0x203A, prClose}, // Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - {0x203C, 0x203D, prSTerm}, // Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG - {0x2045, 0x2045, prClose}, // Ps LEFT SQUARE BRACKET WITH QUILL - {0x2046, 0x2046, prClose}, // Pe RIGHT SQUARE BRACKET WITH QUILL - {0x2047, 0x2049, prSTerm}, // Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK - {0x205F, 0x205F, prSp}, // Zs MEDIUM MATHEMATICAL SPACE - {0x2060, 0x2064, prFormat}, // Cf [5] WORD JOINER..INVISIBLE PLUS - {0x2066, 0x206F, prFormat}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES - {0x2071, 0x2071, prLower}, // Lm SUPERSCRIPT LATIN SMALL LETTER I - {0x207D, 0x207D, prClose}, // Ps SUPERSCRIPT LEFT PARENTHESIS - {0x207E, 0x207E, prClose}, // Pe SUPERSCRIPT RIGHT PARENTHESIS - {0x207F, 0x207F, prLower}, // Lm SUPERSCRIPT LATIN SMALL LETTER N - {0x208D, 0x208D, prClose}, // Ps SUBSCRIPT LEFT PARENTHESIS - {0x208E, 0x208E, prClose}, // Pe SUBSCRIPT RIGHT PARENTHESIS - {0x2090, 0x209C, prLower}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T - {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE - {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH - {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE - {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE - {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE - {0x2102, 0x2102, prUpper}, // L& DOUBLE-STRUCK CAPITAL C - {0x2107, 0x2107, prUpper}, // L& EULER CONSTANT - {0x210A, 0x210A, prLower}, // L& SCRIPT SMALL G - {0x210B, 0x210D, prUpper}, // L& [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H - {0x210E, 0x210F, prLower}, // L& [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI - {0x2110, 0x2112, prUpper}, // L& [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L - {0x2113, 0x2113, prLower}, // L& SCRIPT SMALL L - {0x2115, 0x2115, prUpper}, // L& DOUBLE-STRUCK CAPITAL N - {0x2119, 0x211D, prUpper}, // L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R - {0x2124, 0x2124, prUpper}, // L& DOUBLE-STRUCK CAPITAL Z - {0x2126, 0x2126, prUpper}, // L& OHM SIGN - {0x2128, 0x2128, prUpper}, // L& BLACK-LETTER CAPITAL Z - {0x212A, 0x212D, prUpper}, // L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C - {0x212F, 0x212F, prLower}, // L& SCRIPT SMALL E - {0x2130, 0x2133, prUpper}, // L& [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M - {0x2134, 0x2134, prLower}, // L& SCRIPT SMALL O - {0x2135, 0x2138, prOLetter}, // Lo [4] ALEF SYMBOL..DALET SYMBOL - {0x2139, 0x2139, prLower}, // L& INFORMATION SOURCE - {0x213C, 0x213D, prLower}, // L& [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA - {0x213E, 0x213F, prUpper}, // L& [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI - {0x2145, 0x2145, prUpper}, // L& DOUBLE-STRUCK ITALIC CAPITAL D - {0x2146, 0x2149, prLower}, // L& [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J - {0x214E, 0x214E, prLower}, // L& TURNED SMALL F - {0x2160, 0x216F, prUpper}, // Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND - {0x2170, 0x217F, prLower}, // Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND - {0x2180, 0x2182, prOLetter}, // Nl [3] ROMAN NUMERAL ONE THOUSAND C D..ROMAN NUMERAL TEN THOUSAND - {0x2183, 0x2183, prUpper}, // L& ROMAN NUMERAL REVERSED ONE HUNDRED - {0x2184, 0x2184, prLower}, // L& LATIN SMALL LETTER REVERSED C - {0x2185, 0x2188, prOLetter}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND - {0x2308, 0x2308, prClose}, // Ps LEFT CEILING - {0x2309, 0x2309, prClose}, // Pe RIGHT CEILING - {0x230A, 0x230A, prClose}, // Ps LEFT FLOOR - {0x230B, 0x230B, prClose}, // Pe RIGHT FLOOR - {0x2329, 0x2329, prClose}, // Ps LEFT-POINTING ANGLE BRACKET - {0x232A, 0x232A, prClose}, // Pe RIGHT-POINTING ANGLE BRACKET - {0x24B6, 0x24CF, prUpper}, // So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z - {0x24D0, 0x24E9, prLower}, // So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z - {0x275B, 0x2760, prClose}, // So [6] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - {0x2768, 0x2768, prClose}, // Ps MEDIUM LEFT PARENTHESIS ORNAMENT - {0x2769, 0x2769, prClose}, // Pe MEDIUM RIGHT PARENTHESIS ORNAMENT - {0x276A, 0x276A, prClose}, // Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - {0x276B, 0x276B, prClose}, // Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - {0x276C, 0x276C, prClose}, // Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x276D, 0x276D, prClose}, // Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x276E, 0x276E, prClose}, // Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x276F, 0x276F, prClose}, // Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - {0x2770, 0x2770, prClose}, // Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - {0x2771, 0x2771, prClose}, // Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - {0x2772, 0x2772, prClose}, // Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - {0x2773, 0x2773, prClose}, // Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - {0x2774, 0x2774, prClose}, // Ps MEDIUM LEFT CURLY BRACKET ORNAMENT - {0x2775, 0x2775, prClose}, // Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT - {0x27C5, 0x27C5, prClose}, // Ps LEFT S-SHAPED BAG DELIMITER - {0x27C6, 0x27C6, prClose}, // Pe RIGHT S-SHAPED BAG DELIMITER - {0x27E6, 0x27E6, prClose}, // Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET - {0x27E7, 0x27E7, prClose}, // Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET - {0x27E8, 0x27E8, prClose}, // Ps MATHEMATICAL LEFT ANGLE BRACKET - {0x27E9, 0x27E9, prClose}, // Pe MATHEMATICAL RIGHT ANGLE BRACKET - {0x27EA, 0x27EA, prClose}, // Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - {0x27EB, 0x27EB, prClose}, // Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - {0x27EC, 0x27EC, prClose}, // Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET - {0x27ED, 0x27ED, prClose}, // Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET - {0x27EE, 0x27EE, prClose}, // Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS - {0x27EF, 0x27EF, prClose}, // Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS - {0x2983, 0x2983, prClose}, // Ps LEFT WHITE CURLY BRACKET - {0x2984, 0x2984, prClose}, // Pe RIGHT WHITE CURLY BRACKET - {0x2985, 0x2985, prClose}, // Ps LEFT WHITE PARENTHESIS - {0x2986, 0x2986, prClose}, // Pe RIGHT WHITE PARENTHESIS - {0x2987, 0x2987, prClose}, // Ps Z NOTATION LEFT IMAGE BRACKET - {0x2988, 0x2988, prClose}, // Pe Z NOTATION RIGHT IMAGE BRACKET - {0x2989, 0x2989, prClose}, // Ps Z NOTATION LEFT BINDING BRACKET - {0x298A, 0x298A, prClose}, // Pe Z NOTATION RIGHT BINDING BRACKET - {0x298B, 0x298B, prClose}, // Ps LEFT SQUARE BRACKET WITH UNDERBAR - {0x298C, 0x298C, prClose}, // Pe RIGHT SQUARE BRACKET WITH UNDERBAR - {0x298D, 0x298D, prClose}, // Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x298E, 0x298E, prClose}, // Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x298F, 0x298F, prClose}, // Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - {0x2990, 0x2990, prClose}, // Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER - {0x2991, 0x2991, prClose}, // Ps LEFT ANGLE BRACKET WITH DOT - {0x2992, 0x2992, prClose}, // Pe RIGHT ANGLE BRACKET WITH DOT - {0x2993, 0x2993, prClose}, // Ps LEFT ARC LESS-THAN BRACKET - {0x2994, 0x2994, prClose}, // Pe RIGHT ARC GREATER-THAN BRACKET - {0x2995, 0x2995, prClose}, // Ps DOUBLE LEFT ARC GREATER-THAN BRACKET - {0x2996, 0x2996, prClose}, // Pe DOUBLE RIGHT ARC LESS-THAN BRACKET - {0x2997, 0x2997, prClose}, // Ps LEFT BLACK TORTOISE SHELL BRACKET - {0x2998, 0x2998, prClose}, // Pe RIGHT BLACK TORTOISE SHELL BRACKET - {0x29D8, 0x29D8, prClose}, // Ps LEFT WIGGLY FENCE - {0x29D9, 0x29D9, prClose}, // Pe RIGHT WIGGLY FENCE - {0x29DA, 0x29DA, prClose}, // Ps LEFT DOUBLE WIGGLY FENCE - {0x29DB, 0x29DB, prClose}, // Pe RIGHT DOUBLE WIGGLY FENCE - {0x29FC, 0x29FC, prClose}, // Ps LEFT-POINTING CURVED ANGLE BRACKET - {0x29FD, 0x29FD, prClose}, // Pe RIGHT-POINTING CURVED ANGLE BRACKET - {0x2C00, 0x2C2F, prUpper}, // L& [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI - {0x2C30, 0x2C5F, prLower}, // L& [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI - {0x2C60, 0x2C60, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOUBLE BAR - {0x2C61, 0x2C61, prLower}, // L& LATIN SMALL LETTER L WITH DOUBLE BAR - {0x2C62, 0x2C64, prUpper}, // L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL - {0x2C65, 0x2C66, prLower}, // L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE - {0x2C67, 0x2C67, prUpper}, // L& LATIN CAPITAL LETTER H WITH DESCENDER - {0x2C68, 0x2C68, prLower}, // L& LATIN SMALL LETTER H WITH DESCENDER - {0x2C69, 0x2C69, prUpper}, // L& LATIN CAPITAL LETTER K WITH DESCENDER - {0x2C6A, 0x2C6A, prLower}, // L& LATIN SMALL LETTER K WITH DESCENDER - {0x2C6B, 0x2C6B, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DESCENDER - {0x2C6C, 0x2C6C, prLower}, // L& LATIN SMALL LETTER Z WITH DESCENDER - {0x2C6D, 0x2C70, prUpper}, // L& [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA - {0x2C71, 0x2C71, prLower}, // L& LATIN SMALL LETTER V WITH RIGHT HOOK - {0x2C72, 0x2C72, prUpper}, // L& LATIN CAPITAL LETTER W WITH HOOK - {0x2C73, 0x2C74, prLower}, // L& [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL - {0x2C75, 0x2C75, prUpper}, // L& LATIN CAPITAL LETTER HALF H - {0x2C76, 0x2C7B, prLower}, // L& [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E - {0x2C7C, 0x2C7D, prLower}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V - {0x2C7E, 0x2C80, prUpper}, // L& [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA - {0x2C81, 0x2C81, prLower}, // L& COPTIC SMALL LETTER ALFA - {0x2C82, 0x2C82, prUpper}, // L& COPTIC CAPITAL LETTER VIDA - {0x2C83, 0x2C83, prLower}, // L& COPTIC SMALL LETTER VIDA - {0x2C84, 0x2C84, prUpper}, // L& COPTIC CAPITAL LETTER GAMMA - {0x2C85, 0x2C85, prLower}, // L& COPTIC SMALL LETTER GAMMA - {0x2C86, 0x2C86, prUpper}, // L& COPTIC CAPITAL LETTER DALDA - {0x2C87, 0x2C87, prLower}, // L& COPTIC SMALL LETTER DALDA - {0x2C88, 0x2C88, prUpper}, // L& COPTIC CAPITAL LETTER EIE - {0x2C89, 0x2C89, prLower}, // L& COPTIC SMALL LETTER EIE - {0x2C8A, 0x2C8A, prUpper}, // L& COPTIC CAPITAL LETTER SOU - {0x2C8B, 0x2C8B, prLower}, // L& COPTIC SMALL LETTER SOU - {0x2C8C, 0x2C8C, prUpper}, // L& COPTIC CAPITAL LETTER ZATA - {0x2C8D, 0x2C8D, prLower}, // L& COPTIC SMALL LETTER ZATA - {0x2C8E, 0x2C8E, prUpper}, // L& COPTIC CAPITAL LETTER HATE - {0x2C8F, 0x2C8F, prLower}, // L& COPTIC SMALL LETTER HATE - {0x2C90, 0x2C90, prUpper}, // L& COPTIC CAPITAL LETTER THETHE - {0x2C91, 0x2C91, prLower}, // L& COPTIC SMALL LETTER THETHE - {0x2C92, 0x2C92, prUpper}, // L& COPTIC CAPITAL LETTER IAUDA - {0x2C93, 0x2C93, prLower}, // L& COPTIC SMALL LETTER IAUDA - {0x2C94, 0x2C94, prUpper}, // L& COPTIC CAPITAL LETTER KAPA - {0x2C95, 0x2C95, prLower}, // L& COPTIC SMALL LETTER KAPA - {0x2C96, 0x2C96, prUpper}, // L& COPTIC CAPITAL LETTER LAULA - {0x2C97, 0x2C97, prLower}, // L& COPTIC SMALL LETTER LAULA - {0x2C98, 0x2C98, prUpper}, // L& COPTIC CAPITAL LETTER MI - {0x2C99, 0x2C99, prLower}, // L& COPTIC SMALL LETTER MI - {0x2C9A, 0x2C9A, prUpper}, // L& COPTIC CAPITAL LETTER NI - {0x2C9B, 0x2C9B, prLower}, // L& COPTIC SMALL LETTER NI - {0x2C9C, 0x2C9C, prUpper}, // L& COPTIC CAPITAL LETTER KSI - {0x2C9D, 0x2C9D, prLower}, // L& COPTIC SMALL LETTER KSI - {0x2C9E, 0x2C9E, prUpper}, // L& COPTIC CAPITAL LETTER O - {0x2C9F, 0x2C9F, prLower}, // L& COPTIC SMALL LETTER O - {0x2CA0, 0x2CA0, prUpper}, // L& COPTIC CAPITAL LETTER PI - {0x2CA1, 0x2CA1, prLower}, // L& COPTIC SMALL LETTER PI - {0x2CA2, 0x2CA2, prUpper}, // L& COPTIC CAPITAL LETTER RO - {0x2CA3, 0x2CA3, prLower}, // L& COPTIC SMALL LETTER RO - {0x2CA4, 0x2CA4, prUpper}, // L& COPTIC CAPITAL LETTER SIMA - {0x2CA5, 0x2CA5, prLower}, // L& COPTIC SMALL LETTER SIMA - {0x2CA6, 0x2CA6, prUpper}, // L& COPTIC CAPITAL LETTER TAU - {0x2CA7, 0x2CA7, prLower}, // L& COPTIC SMALL LETTER TAU - {0x2CA8, 0x2CA8, prUpper}, // L& COPTIC CAPITAL LETTER UA - {0x2CA9, 0x2CA9, prLower}, // L& COPTIC SMALL LETTER UA - {0x2CAA, 0x2CAA, prUpper}, // L& COPTIC CAPITAL LETTER FI - {0x2CAB, 0x2CAB, prLower}, // L& COPTIC SMALL LETTER FI - {0x2CAC, 0x2CAC, prUpper}, // L& COPTIC CAPITAL LETTER KHI - {0x2CAD, 0x2CAD, prLower}, // L& COPTIC SMALL LETTER KHI - {0x2CAE, 0x2CAE, prUpper}, // L& COPTIC CAPITAL LETTER PSI - {0x2CAF, 0x2CAF, prLower}, // L& COPTIC SMALL LETTER PSI - {0x2CB0, 0x2CB0, prUpper}, // L& COPTIC CAPITAL LETTER OOU - {0x2CB1, 0x2CB1, prLower}, // L& COPTIC SMALL LETTER OOU - {0x2CB2, 0x2CB2, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P ALEF - {0x2CB3, 0x2CB3, prLower}, // L& COPTIC SMALL LETTER DIALECT-P ALEF - {0x2CB4, 0x2CB4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC AIN - {0x2CB5, 0x2CB5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC AIN - {0x2CB6, 0x2CB6, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE - {0x2CB7, 0x2CB7, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE - {0x2CB8, 0x2CB8, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P KAPA - {0x2CB9, 0x2CB9, prLower}, // L& COPTIC SMALL LETTER DIALECT-P KAPA - {0x2CBA, 0x2CBA, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P NI - {0x2CBB, 0x2CBB, prLower}, // L& COPTIC SMALL LETTER DIALECT-P NI - {0x2CBC, 0x2CBC, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI - {0x2CBD, 0x2CBD, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI - {0x2CBE, 0x2CBE, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC OOU - {0x2CBF, 0x2CBF, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC OOU - {0x2CC0, 0x2CC0, prUpper}, // L& COPTIC CAPITAL LETTER SAMPI - {0x2CC1, 0x2CC1, prLower}, // L& COPTIC SMALL LETTER SAMPI - {0x2CC2, 0x2CC2, prUpper}, // L& COPTIC CAPITAL LETTER CROSSED SHEI - {0x2CC3, 0x2CC3, prLower}, // L& COPTIC SMALL LETTER CROSSED SHEI - {0x2CC4, 0x2CC4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC SHEI - {0x2CC5, 0x2CC5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC SHEI - {0x2CC6, 0x2CC6, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC ESH - {0x2CC7, 0x2CC7, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC ESH - {0x2CC8, 0x2CC8, prUpper}, // L& COPTIC CAPITAL LETTER AKHMIMIC KHEI - {0x2CC9, 0x2CC9, prLower}, // L& COPTIC SMALL LETTER AKHMIMIC KHEI - {0x2CCA, 0x2CCA, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P HORI - {0x2CCB, 0x2CCB, prLower}, // L& COPTIC SMALL LETTER DIALECT-P HORI - {0x2CCC, 0x2CCC, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HORI - {0x2CCD, 0x2CCD, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HORI - {0x2CCE, 0x2CCE, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HA - {0x2CCF, 0x2CCF, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HA - {0x2CD0, 0x2CD0, prUpper}, // L& COPTIC CAPITAL LETTER L-SHAPED HA - {0x2CD1, 0x2CD1, prLower}, // L& COPTIC SMALL LETTER L-SHAPED HA - {0x2CD2, 0x2CD2, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HEI - {0x2CD3, 0x2CD3, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HEI - {0x2CD4, 0x2CD4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HAT - {0x2CD5, 0x2CD5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HAT - {0x2CD6, 0x2CD6, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA - {0x2CD7, 0x2CD7, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC GANGIA - {0x2CD8, 0x2CD8, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC DJA - {0x2CD9, 0x2CD9, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC DJA - {0x2CDA, 0x2CDA, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA - {0x2CDB, 0x2CDB, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC SHIMA - {0x2CDC, 0x2CDC, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA - {0x2CDD, 0x2CDD, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN SHIMA - {0x2CDE, 0x2CDE, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN NGI - {0x2CDF, 0x2CDF, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN NGI - {0x2CE0, 0x2CE0, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN NYI - {0x2CE1, 0x2CE1, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN NYI - {0x2CE2, 0x2CE2, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN WAU - {0x2CE3, 0x2CE4, prLower}, // L& [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI - {0x2CEB, 0x2CEB, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI - {0x2CEC, 0x2CEC, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI - {0x2CED, 0x2CED, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA - {0x2CEE, 0x2CEE, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA - {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS - {0x2CF2, 0x2CF2, prUpper}, // L& COPTIC CAPITAL LETTER BOHAIRIC KHEI - {0x2CF3, 0x2CF3, prLower}, // L& COPTIC SMALL LETTER BOHAIRIC KHEI - {0x2D00, 0x2D25, prLower}, // L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - {0x2D27, 0x2D27, prLower}, // L& GEORGIAN SMALL LETTER YN - {0x2D2D, 0x2D2D, prLower}, // L& GEORGIAN SMALL LETTER AEN - {0x2D30, 0x2D67, prOLetter}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO - {0x2D6F, 0x2D6F, prOLetter}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK - {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER - {0x2D80, 0x2D96, prOLetter}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE - {0x2DA0, 0x2DA6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO - {0x2DA8, 0x2DAE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO - {0x2DB0, 0x2DB6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO - {0x2DB8, 0x2DBE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO - {0x2DC0, 0x2DC6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO - {0x2DC8, 0x2DCE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO - {0x2DD0, 0x2DD6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO - {0x2DD8, 0x2DDE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS - {0x2E00, 0x2E01, prClose}, // Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER - {0x2E02, 0x2E02, prClose}, // Pi LEFT SUBSTITUTION BRACKET - {0x2E03, 0x2E03, prClose}, // Pf RIGHT SUBSTITUTION BRACKET - {0x2E04, 0x2E04, prClose}, // Pi LEFT DOTTED SUBSTITUTION BRACKET - {0x2E05, 0x2E05, prClose}, // Pf RIGHT DOTTED SUBSTITUTION BRACKET - {0x2E06, 0x2E08, prClose}, // Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER - {0x2E09, 0x2E09, prClose}, // Pi LEFT TRANSPOSITION BRACKET - {0x2E0A, 0x2E0A, prClose}, // Pf RIGHT TRANSPOSITION BRACKET - {0x2E0B, 0x2E0B, prClose}, // Po RAISED SQUARE - {0x2E0C, 0x2E0C, prClose}, // Pi LEFT RAISED OMISSION BRACKET - {0x2E0D, 0x2E0D, prClose}, // Pf RIGHT RAISED OMISSION BRACKET - {0x2E1C, 0x2E1C, prClose}, // Pi LEFT LOW PARAPHRASE BRACKET - {0x2E1D, 0x2E1D, prClose}, // Pf RIGHT LOW PARAPHRASE BRACKET - {0x2E20, 0x2E20, prClose}, // Pi LEFT VERTICAL BAR WITH QUILL - {0x2E21, 0x2E21, prClose}, // Pf RIGHT VERTICAL BAR WITH QUILL - {0x2E22, 0x2E22, prClose}, // Ps TOP LEFT HALF BRACKET - {0x2E23, 0x2E23, prClose}, // Pe TOP RIGHT HALF BRACKET - {0x2E24, 0x2E24, prClose}, // Ps BOTTOM LEFT HALF BRACKET - {0x2E25, 0x2E25, prClose}, // Pe BOTTOM RIGHT HALF BRACKET - {0x2E26, 0x2E26, prClose}, // Ps LEFT SIDEWAYS U BRACKET - {0x2E27, 0x2E27, prClose}, // Pe RIGHT SIDEWAYS U BRACKET - {0x2E28, 0x2E28, prClose}, // Ps LEFT DOUBLE PARENTHESIS - {0x2E29, 0x2E29, prClose}, // Pe RIGHT DOUBLE PARENTHESIS - {0x2E2E, 0x2E2E, prSTerm}, // Po REVERSED QUESTION MARK - {0x2E2F, 0x2E2F, prOLetter}, // Lm VERTICAL TILDE - {0x2E3C, 0x2E3C, prSTerm}, // Po STENOGRAPHIC FULL STOP - {0x2E42, 0x2E42, prClose}, // Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK - {0x2E53, 0x2E54, prSTerm}, // Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK - {0x2E55, 0x2E55, prClose}, // Ps LEFT SQUARE BRACKET WITH STROKE - {0x2E56, 0x2E56, prClose}, // Pe RIGHT SQUARE BRACKET WITH STROKE - {0x2E57, 0x2E57, prClose}, // Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E58, 0x2E58, prClose}, // Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE - {0x2E59, 0x2E59, prClose}, // Ps TOP HALF LEFT PARENTHESIS - {0x2E5A, 0x2E5A, prClose}, // Pe TOP HALF RIGHT PARENTHESIS - {0x2E5B, 0x2E5B, prClose}, // Ps BOTTOM HALF LEFT PARENTHESIS - {0x2E5C, 0x2E5C, prClose}, // Pe BOTTOM HALF RIGHT PARENTHESIS - {0x3000, 0x3000, prSp}, // Zs IDEOGRAPHIC SPACE - {0x3001, 0x3001, prSContinue}, // Po IDEOGRAPHIC COMMA - {0x3002, 0x3002, prSTerm}, // Po IDEOGRAPHIC FULL STOP - {0x3005, 0x3005, prOLetter}, // Lm IDEOGRAPHIC ITERATION MARK - {0x3006, 0x3006, prOLetter}, // Lo IDEOGRAPHIC CLOSING MARK - {0x3007, 0x3007, prOLetter}, // Nl IDEOGRAPHIC NUMBER ZERO - {0x3008, 0x3008, prClose}, // Ps LEFT ANGLE BRACKET - {0x3009, 0x3009, prClose}, // Pe RIGHT ANGLE BRACKET - {0x300A, 0x300A, prClose}, // Ps LEFT DOUBLE ANGLE BRACKET - {0x300B, 0x300B, prClose}, // Pe RIGHT DOUBLE ANGLE BRACKET - {0x300C, 0x300C, prClose}, // Ps LEFT CORNER BRACKET - {0x300D, 0x300D, prClose}, // Pe RIGHT CORNER BRACKET - {0x300E, 0x300E, prClose}, // Ps LEFT WHITE CORNER BRACKET - {0x300F, 0x300F, prClose}, // Pe RIGHT WHITE CORNER BRACKET - {0x3010, 0x3010, prClose}, // Ps LEFT BLACK LENTICULAR BRACKET - {0x3011, 0x3011, prClose}, // Pe RIGHT BLACK LENTICULAR BRACKET - {0x3014, 0x3014, prClose}, // Ps LEFT TORTOISE SHELL BRACKET - {0x3015, 0x3015, prClose}, // Pe RIGHT TORTOISE SHELL BRACKET - {0x3016, 0x3016, prClose}, // Ps LEFT WHITE LENTICULAR BRACKET - {0x3017, 0x3017, prClose}, // Pe RIGHT WHITE LENTICULAR BRACKET - {0x3018, 0x3018, prClose}, // Ps LEFT WHITE TORTOISE SHELL BRACKET - {0x3019, 0x3019, prClose}, // Pe RIGHT WHITE TORTOISE SHELL BRACKET - {0x301A, 0x301A, prClose}, // Ps LEFT WHITE SQUARE BRACKET - {0x301B, 0x301B, prClose}, // Pe RIGHT WHITE SQUARE BRACKET - {0x301D, 0x301D, prClose}, // Ps REVERSED DOUBLE PRIME QUOTATION MARK - {0x301E, 0x301F, prClose}, // Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK - {0x3021, 0x3029, prOLetter}, // Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE - {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK - {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK - {0x3031, 0x3035, prOLetter}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF - {0x3038, 0x303A, prOLetter}, // Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY - {0x303B, 0x303B, prOLetter}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK - {0x303C, 0x303C, prOLetter}, // Lo MASU MARK - {0x3041, 0x3096, prOLetter}, // Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE - {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309D, 0x309E, prOLetter}, // Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK - {0x309F, 0x309F, prOLetter}, // Lo HIRAGANA DIGRAPH YORI - {0x30A1, 0x30FA, prOLetter}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO - {0x30FC, 0x30FE, prOLetter}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK - {0x30FF, 0x30FF, prOLetter}, // Lo KATAKANA DIGRAPH KOTO - {0x3105, 0x312F, prOLetter}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN - {0x3131, 0x318E, prOLetter}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE - {0x31A0, 0x31BF, prOLetter}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH - {0x31F0, 0x31FF, prOLetter}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO - {0x3400, 0x4DBF, prOLetter}, // Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF - {0x4E00, 0xA014, prOLetter}, // Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E - {0xA015, 0xA015, prOLetter}, // Lm YI SYLLABLE WU - {0xA016, 0xA48C, prOLetter}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR - {0xA4D0, 0xA4F7, prOLetter}, // Lo [40] LISU LETTER BA..LISU LETTER OE - {0xA4F8, 0xA4FD, prOLetter}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU - {0xA4FF, 0xA4FF, prSTerm}, // Po LISU PUNCTUATION FULL STOP - {0xA500, 0xA60B, prOLetter}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG - {0xA60C, 0xA60C, prOLetter}, // Lm VAI SYLLABLE LENGTHENER - {0xA60E, 0xA60F, prSTerm}, // Po [2] VAI FULL STOP..VAI QUESTION MARK - {0xA610, 0xA61F, prOLetter}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG - {0xA620, 0xA629, prNumeric}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE - {0xA62A, 0xA62B, prOLetter}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO - {0xA640, 0xA640, prUpper}, // L& CYRILLIC CAPITAL LETTER ZEMLYA - {0xA641, 0xA641, prLower}, // L& CYRILLIC SMALL LETTER ZEMLYA - {0xA642, 0xA642, prUpper}, // L& CYRILLIC CAPITAL LETTER DZELO - {0xA643, 0xA643, prLower}, // L& CYRILLIC SMALL LETTER DZELO - {0xA644, 0xA644, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED DZE - {0xA645, 0xA645, prLower}, // L& CYRILLIC SMALL LETTER REVERSED DZE - {0xA646, 0xA646, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTA - {0xA647, 0xA647, prLower}, // L& CYRILLIC SMALL LETTER IOTA - {0xA648, 0xA648, prUpper}, // L& CYRILLIC CAPITAL LETTER DJERV - {0xA649, 0xA649, prLower}, // L& CYRILLIC SMALL LETTER DJERV - {0xA64A, 0xA64A, prUpper}, // L& CYRILLIC CAPITAL LETTER MONOGRAPH UK - {0xA64B, 0xA64B, prLower}, // L& CYRILLIC SMALL LETTER MONOGRAPH UK - {0xA64C, 0xA64C, prUpper}, // L& CYRILLIC CAPITAL LETTER BROAD OMEGA - {0xA64D, 0xA64D, prLower}, // L& CYRILLIC SMALL LETTER BROAD OMEGA - {0xA64E, 0xA64E, prUpper}, // L& CYRILLIC CAPITAL LETTER NEUTRAL YER - {0xA64F, 0xA64F, prLower}, // L& CYRILLIC SMALL LETTER NEUTRAL YER - {0xA650, 0xA650, prUpper}, // L& CYRILLIC CAPITAL LETTER YERU WITH BACK YER - {0xA651, 0xA651, prLower}, // L& CYRILLIC SMALL LETTER YERU WITH BACK YER - {0xA652, 0xA652, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED YAT - {0xA653, 0xA653, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED YAT - {0xA654, 0xA654, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED YU - {0xA655, 0xA655, prLower}, // L& CYRILLIC SMALL LETTER REVERSED YU - {0xA656, 0xA656, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED A - {0xA657, 0xA657, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED A - {0xA658, 0xA658, prUpper}, // L& CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS - {0xA659, 0xA659, prLower}, // L& CYRILLIC SMALL LETTER CLOSED LITTLE YUS - {0xA65A, 0xA65A, prUpper}, // L& CYRILLIC CAPITAL LETTER BLENDED YUS - {0xA65B, 0xA65B, prLower}, // L& CYRILLIC SMALL LETTER BLENDED YUS - {0xA65C, 0xA65C, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS - {0xA65D, 0xA65D, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS - {0xA65E, 0xA65E, prUpper}, // L& CYRILLIC CAPITAL LETTER YN - {0xA65F, 0xA65F, prLower}, // L& CYRILLIC SMALL LETTER YN - {0xA660, 0xA660, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED TSE - {0xA661, 0xA661, prLower}, // L& CYRILLIC SMALL LETTER REVERSED TSE - {0xA662, 0xA662, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT DE - {0xA663, 0xA663, prLower}, // L& CYRILLIC SMALL LETTER SOFT DE - {0xA664, 0xA664, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT EL - {0xA665, 0xA665, prLower}, // L& CYRILLIC SMALL LETTER SOFT EL - {0xA666, 0xA666, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT EM - {0xA667, 0xA667, prLower}, // L& CYRILLIC SMALL LETTER SOFT EM - {0xA668, 0xA668, prUpper}, // L& CYRILLIC CAPITAL LETTER MONOCULAR O - {0xA669, 0xA669, prLower}, // L& CYRILLIC SMALL LETTER MONOCULAR O - {0xA66A, 0xA66A, prUpper}, // L& CYRILLIC CAPITAL LETTER BINOCULAR O - {0xA66B, 0xA66B, prLower}, // L& CYRILLIC SMALL LETTER BINOCULAR O - {0xA66C, 0xA66C, prUpper}, // L& CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O - {0xA66D, 0xA66D, prLower}, // L& CYRILLIC SMALL LETTER DOUBLE MONOCULAR O - {0xA66E, 0xA66E, prOLetter}, // Lo CYRILLIC LETTER MULTIOCULAR O - {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET - {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN - {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK - {0xA67F, 0xA67F, prOLetter}, // Lm CYRILLIC PAYEROK - {0xA680, 0xA680, prUpper}, // L& CYRILLIC CAPITAL LETTER DWE - {0xA681, 0xA681, prLower}, // L& CYRILLIC SMALL LETTER DWE - {0xA682, 0xA682, prUpper}, // L& CYRILLIC CAPITAL LETTER DZWE - {0xA683, 0xA683, prLower}, // L& CYRILLIC SMALL LETTER DZWE - {0xA684, 0xA684, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHWE - {0xA685, 0xA685, prLower}, // L& CYRILLIC SMALL LETTER ZHWE - {0xA686, 0xA686, prUpper}, // L& CYRILLIC CAPITAL LETTER CCHE - {0xA687, 0xA687, prLower}, // L& CYRILLIC SMALL LETTER CCHE - {0xA688, 0xA688, prUpper}, // L& CYRILLIC CAPITAL LETTER DZZE - {0xA689, 0xA689, prLower}, // L& CYRILLIC SMALL LETTER DZZE - {0xA68A, 0xA68A, prUpper}, // L& CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK - {0xA68B, 0xA68B, prLower}, // L& CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK - {0xA68C, 0xA68C, prUpper}, // L& CYRILLIC CAPITAL LETTER TWE - {0xA68D, 0xA68D, prLower}, // L& CYRILLIC SMALL LETTER TWE - {0xA68E, 0xA68E, prUpper}, // L& CYRILLIC CAPITAL LETTER TSWE - {0xA68F, 0xA68F, prLower}, // L& CYRILLIC SMALL LETTER TSWE - {0xA690, 0xA690, prUpper}, // L& CYRILLIC CAPITAL LETTER TSSE - {0xA691, 0xA691, prLower}, // L& CYRILLIC SMALL LETTER TSSE - {0xA692, 0xA692, prUpper}, // L& CYRILLIC CAPITAL LETTER TCHE - {0xA693, 0xA693, prLower}, // L& CYRILLIC SMALL LETTER TCHE - {0xA694, 0xA694, prUpper}, // L& CYRILLIC CAPITAL LETTER HWE - {0xA695, 0xA695, prLower}, // L& CYRILLIC SMALL LETTER HWE - {0xA696, 0xA696, prUpper}, // L& CYRILLIC CAPITAL LETTER SHWE - {0xA697, 0xA697, prLower}, // L& CYRILLIC SMALL LETTER SHWE - {0xA698, 0xA698, prUpper}, // L& CYRILLIC CAPITAL LETTER DOUBLE O - {0xA699, 0xA699, prLower}, // L& CYRILLIC SMALL LETTER DOUBLE O - {0xA69A, 0xA69A, prUpper}, // L& CYRILLIC CAPITAL LETTER CROSSED O - {0xA69B, 0xA69B, prLower}, // L& CYRILLIC SMALL LETTER CROSSED O - {0xA69C, 0xA69D, prLower}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN - {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E - {0xA6A0, 0xA6E5, prOLetter}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI - {0xA6E6, 0xA6EF, prOLetter}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM - {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS - {0xA6F3, 0xA6F3, prSTerm}, // Po BAMUM FULL STOP - {0xA6F7, 0xA6F7, prSTerm}, // Po BAMUM QUESTION MARK - {0xA717, 0xA71F, prOLetter}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK - {0xA722, 0xA722, prUpper}, // L& LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF - {0xA723, 0xA723, prLower}, // L& LATIN SMALL LETTER EGYPTOLOGICAL ALEF - {0xA724, 0xA724, prUpper}, // L& LATIN CAPITAL LETTER EGYPTOLOGICAL AIN - {0xA725, 0xA725, prLower}, // L& LATIN SMALL LETTER EGYPTOLOGICAL AIN - {0xA726, 0xA726, prUpper}, // L& LATIN CAPITAL LETTER HENG - {0xA727, 0xA727, prLower}, // L& LATIN SMALL LETTER HENG - {0xA728, 0xA728, prUpper}, // L& LATIN CAPITAL LETTER TZ - {0xA729, 0xA729, prLower}, // L& LATIN SMALL LETTER TZ - {0xA72A, 0xA72A, prUpper}, // L& LATIN CAPITAL LETTER TRESILLO - {0xA72B, 0xA72B, prLower}, // L& LATIN SMALL LETTER TRESILLO - {0xA72C, 0xA72C, prUpper}, // L& LATIN CAPITAL LETTER CUATRILLO - {0xA72D, 0xA72D, prLower}, // L& LATIN SMALL LETTER CUATRILLO - {0xA72E, 0xA72E, prUpper}, // L& LATIN CAPITAL LETTER CUATRILLO WITH COMMA - {0xA72F, 0xA731, prLower}, // L& [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S - {0xA732, 0xA732, prUpper}, // L& LATIN CAPITAL LETTER AA - {0xA733, 0xA733, prLower}, // L& LATIN SMALL LETTER AA - {0xA734, 0xA734, prUpper}, // L& LATIN CAPITAL LETTER AO - {0xA735, 0xA735, prLower}, // L& LATIN SMALL LETTER AO - {0xA736, 0xA736, prUpper}, // L& LATIN CAPITAL LETTER AU - {0xA737, 0xA737, prLower}, // L& LATIN SMALL LETTER AU - {0xA738, 0xA738, prUpper}, // L& LATIN CAPITAL LETTER AV - {0xA739, 0xA739, prLower}, // L& LATIN SMALL LETTER AV - {0xA73A, 0xA73A, prUpper}, // L& LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR - {0xA73B, 0xA73B, prLower}, // L& LATIN SMALL LETTER AV WITH HORIZONTAL BAR - {0xA73C, 0xA73C, prUpper}, // L& LATIN CAPITAL LETTER AY - {0xA73D, 0xA73D, prLower}, // L& LATIN SMALL LETTER AY - {0xA73E, 0xA73E, prUpper}, // L& LATIN CAPITAL LETTER REVERSED C WITH DOT - {0xA73F, 0xA73F, prLower}, // L& LATIN SMALL LETTER REVERSED C WITH DOT - {0xA740, 0xA740, prUpper}, // L& LATIN CAPITAL LETTER K WITH STROKE - {0xA741, 0xA741, prLower}, // L& LATIN SMALL LETTER K WITH STROKE - {0xA742, 0xA742, prUpper}, // L& LATIN CAPITAL LETTER K WITH DIAGONAL STROKE - {0xA743, 0xA743, prLower}, // L& LATIN SMALL LETTER K WITH DIAGONAL STROKE - {0xA744, 0xA744, prUpper}, // L& LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE - {0xA745, 0xA745, prLower}, // L& LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE - {0xA746, 0xA746, prUpper}, // L& LATIN CAPITAL LETTER BROKEN L - {0xA747, 0xA747, prLower}, // L& LATIN SMALL LETTER BROKEN L - {0xA748, 0xA748, prUpper}, // L& LATIN CAPITAL LETTER L WITH HIGH STROKE - {0xA749, 0xA749, prLower}, // L& LATIN SMALL LETTER L WITH HIGH STROKE - {0xA74A, 0xA74A, prUpper}, // L& LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY - {0xA74B, 0xA74B, prLower}, // L& LATIN SMALL LETTER O WITH LONG STROKE OVERLAY - {0xA74C, 0xA74C, prUpper}, // L& LATIN CAPITAL LETTER O WITH LOOP - {0xA74D, 0xA74D, prLower}, // L& LATIN SMALL LETTER O WITH LOOP - {0xA74E, 0xA74E, prUpper}, // L& LATIN CAPITAL LETTER OO - {0xA74F, 0xA74F, prLower}, // L& LATIN SMALL LETTER OO - {0xA750, 0xA750, prUpper}, // L& LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER - {0xA751, 0xA751, prLower}, // L& LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER - {0xA752, 0xA752, prUpper}, // L& LATIN CAPITAL LETTER P WITH FLOURISH - {0xA753, 0xA753, prLower}, // L& LATIN SMALL LETTER P WITH FLOURISH - {0xA754, 0xA754, prUpper}, // L& LATIN CAPITAL LETTER P WITH SQUIRREL TAIL - {0xA755, 0xA755, prLower}, // L& LATIN SMALL LETTER P WITH SQUIRREL TAIL - {0xA756, 0xA756, prUpper}, // L& LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER - {0xA757, 0xA757, prLower}, // L& LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER - {0xA758, 0xA758, prUpper}, // L& LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE - {0xA759, 0xA759, prLower}, // L& LATIN SMALL LETTER Q WITH DIAGONAL STROKE - {0xA75A, 0xA75A, prUpper}, // L& LATIN CAPITAL LETTER R ROTUNDA - {0xA75B, 0xA75B, prLower}, // L& LATIN SMALL LETTER R ROTUNDA - {0xA75C, 0xA75C, prUpper}, // L& LATIN CAPITAL LETTER RUM ROTUNDA - {0xA75D, 0xA75D, prLower}, // L& LATIN SMALL LETTER RUM ROTUNDA - {0xA75E, 0xA75E, prUpper}, // L& LATIN CAPITAL LETTER V WITH DIAGONAL STROKE - {0xA75F, 0xA75F, prLower}, // L& LATIN SMALL LETTER V WITH DIAGONAL STROKE - {0xA760, 0xA760, prUpper}, // L& LATIN CAPITAL LETTER VY - {0xA761, 0xA761, prLower}, // L& LATIN SMALL LETTER VY - {0xA762, 0xA762, prUpper}, // L& LATIN CAPITAL LETTER VISIGOTHIC Z - {0xA763, 0xA763, prLower}, // L& LATIN SMALL LETTER VISIGOTHIC Z - {0xA764, 0xA764, prUpper}, // L& LATIN CAPITAL LETTER THORN WITH STROKE - {0xA765, 0xA765, prLower}, // L& LATIN SMALL LETTER THORN WITH STROKE - {0xA766, 0xA766, prUpper}, // L& LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER - {0xA767, 0xA767, prLower}, // L& LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER - {0xA768, 0xA768, prUpper}, // L& LATIN CAPITAL LETTER VEND - {0xA769, 0xA769, prLower}, // L& LATIN SMALL LETTER VEND - {0xA76A, 0xA76A, prUpper}, // L& LATIN CAPITAL LETTER ET - {0xA76B, 0xA76B, prLower}, // L& LATIN SMALL LETTER ET - {0xA76C, 0xA76C, prUpper}, // L& LATIN CAPITAL LETTER IS - {0xA76D, 0xA76D, prLower}, // L& LATIN SMALL LETTER IS - {0xA76E, 0xA76E, prUpper}, // L& LATIN CAPITAL LETTER CON - {0xA76F, 0xA76F, prLower}, // L& LATIN SMALL LETTER CON - {0xA770, 0xA770, prLower}, // Lm MODIFIER LETTER US - {0xA771, 0xA778, prLower}, // L& [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM - {0xA779, 0xA779, prUpper}, // L& LATIN CAPITAL LETTER INSULAR D - {0xA77A, 0xA77A, prLower}, // L& LATIN SMALL LETTER INSULAR D - {0xA77B, 0xA77B, prUpper}, // L& LATIN CAPITAL LETTER INSULAR F - {0xA77C, 0xA77C, prLower}, // L& LATIN SMALL LETTER INSULAR F - {0xA77D, 0xA77E, prUpper}, // L& [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G - {0xA77F, 0xA77F, prLower}, // L& LATIN SMALL LETTER TURNED INSULAR G - {0xA780, 0xA780, prUpper}, // L& LATIN CAPITAL LETTER TURNED L - {0xA781, 0xA781, prLower}, // L& LATIN SMALL LETTER TURNED L - {0xA782, 0xA782, prUpper}, // L& LATIN CAPITAL LETTER INSULAR R - {0xA783, 0xA783, prLower}, // L& LATIN SMALL LETTER INSULAR R - {0xA784, 0xA784, prUpper}, // L& LATIN CAPITAL LETTER INSULAR S - {0xA785, 0xA785, prLower}, // L& LATIN SMALL LETTER INSULAR S - {0xA786, 0xA786, prUpper}, // L& LATIN CAPITAL LETTER INSULAR T - {0xA787, 0xA787, prLower}, // L& LATIN SMALL LETTER INSULAR T - {0xA788, 0xA788, prOLetter}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - {0xA78B, 0xA78B, prUpper}, // L& LATIN CAPITAL LETTER SALTILLO - {0xA78C, 0xA78C, prLower}, // L& LATIN SMALL LETTER SALTILLO - {0xA78D, 0xA78D, prUpper}, // L& LATIN CAPITAL LETTER TURNED H - {0xA78E, 0xA78E, prLower}, // L& LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - {0xA78F, 0xA78F, prOLetter}, // Lo LATIN LETTER SINOLOGICAL DOT - {0xA790, 0xA790, prUpper}, // L& LATIN CAPITAL LETTER N WITH DESCENDER - {0xA791, 0xA791, prLower}, // L& LATIN SMALL LETTER N WITH DESCENDER - {0xA792, 0xA792, prUpper}, // L& LATIN CAPITAL LETTER C WITH BAR - {0xA793, 0xA795, prLower}, // L& [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK - {0xA796, 0xA796, prUpper}, // L& LATIN CAPITAL LETTER B WITH FLOURISH - {0xA797, 0xA797, prLower}, // L& LATIN SMALL LETTER B WITH FLOURISH - {0xA798, 0xA798, prUpper}, // L& LATIN CAPITAL LETTER F WITH STROKE - {0xA799, 0xA799, prLower}, // L& LATIN SMALL LETTER F WITH STROKE - {0xA79A, 0xA79A, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK AE - {0xA79B, 0xA79B, prLower}, // L& LATIN SMALL LETTER VOLAPUK AE - {0xA79C, 0xA79C, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK OE - {0xA79D, 0xA79D, prLower}, // L& LATIN SMALL LETTER VOLAPUK OE - {0xA79E, 0xA79E, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK UE - {0xA79F, 0xA79F, prLower}, // L& LATIN SMALL LETTER VOLAPUK UE - {0xA7A0, 0xA7A0, prUpper}, // L& LATIN CAPITAL LETTER G WITH OBLIQUE STROKE - {0xA7A1, 0xA7A1, prLower}, // L& LATIN SMALL LETTER G WITH OBLIQUE STROKE - {0xA7A2, 0xA7A2, prUpper}, // L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE - {0xA7A3, 0xA7A3, prLower}, // L& LATIN SMALL LETTER K WITH OBLIQUE STROKE - {0xA7A4, 0xA7A4, prUpper}, // L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE - {0xA7A5, 0xA7A5, prLower}, // L& LATIN SMALL LETTER N WITH OBLIQUE STROKE - {0xA7A6, 0xA7A6, prUpper}, // L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE - {0xA7A7, 0xA7A7, prLower}, // L& LATIN SMALL LETTER R WITH OBLIQUE STROKE - {0xA7A8, 0xA7A8, prUpper}, // L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE - {0xA7A9, 0xA7A9, prLower}, // L& LATIN SMALL LETTER S WITH OBLIQUE STROKE - {0xA7AA, 0xA7AE, prUpper}, // L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I - {0xA7AF, 0xA7AF, prLower}, // L& LATIN LETTER SMALL CAPITAL Q - {0xA7B0, 0xA7B4, prUpper}, // L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA - {0xA7B5, 0xA7B5, prLower}, // L& LATIN SMALL LETTER BETA - {0xA7B6, 0xA7B6, prUpper}, // L& LATIN CAPITAL LETTER OMEGA - {0xA7B7, 0xA7B7, prLower}, // L& LATIN SMALL LETTER OMEGA - {0xA7B8, 0xA7B8, prUpper}, // L& LATIN CAPITAL LETTER U WITH STROKE - {0xA7B9, 0xA7B9, prLower}, // L& LATIN SMALL LETTER U WITH STROKE - {0xA7BA, 0xA7BA, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL A - {0xA7BB, 0xA7BB, prLower}, // L& LATIN SMALL LETTER GLOTTAL A - {0xA7BC, 0xA7BC, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL I - {0xA7BD, 0xA7BD, prLower}, // L& LATIN SMALL LETTER GLOTTAL I - {0xA7BE, 0xA7BE, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL U - {0xA7BF, 0xA7BF, prLower}, // L& LATIN SMALL LETTER GLOTTAL U - {0xA7C0, 0xA7C0, prUpper}, // L& LATIN CAPITAL LETTER OLD POLISH O - {0xA7C1, 0xA7C1, prLower}, // L& LATIN SMALL LETTER OLD POLISH O - {0xA7C2, 0xA7C2, prUpper}, // L& LATIN CAPITAL LETTER ANGLICANA W - {0xA7C3, 0xA7C3, prLower}, // L& LATIN SMALL LETTER ANGLICANA W - {0xA7C4, 0xA7C7, prUpper}, // L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY - {0xA7C8, 0xA7C8, prLower}, // L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY - {0xA7C9, 0xA7C9, prUpper}, // L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY - {0xA7CA, 0xA7CA, prLower}, // L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY - {0xA7D0, 0xA7D0, prUpper}, // L& LATIN CAPITAL LETTER CLOSED INSULAR G - {0xA7D1, 0xA7D1, prLower}, // L& LATIN SMALL LETTER CLOSED INSULAR G - {0xA7D3, 0xA7D3, prLower}, // L& LATIN SMALL LETTER DOUBLE THORN - {0xA7D5, 0xA7D5, prLower}, // L& LATIN SMALL LETTER DOUBLE WYNN - {0xA7D6, 0xA7D6, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE SCOTS S - {0xA7D7, 0xA7D7, prLower}, // L& LATIN SMALL LETTER MIDDLE SCOTS S - {0xA7D8, 0xA7D8, prUpper}, // L& LATIN CAPITAL LETTER SIGMOID S - {0xA7D9, 0xA7D9, prLower}, // L& LATIN SMALL LETTER SIGMOID S - {0xA7F2, 0xA7F4, prLower}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q - {0xA7F5, 0xA7F5, prUpper}, // L& LATIN CAPITAL LETTER REVERSED HALF H - {0xA7F6, 0xA7F6, prLower}, // L& LATIN SMALL LETTER REVERSED HALF H - {0xA7F7, 0xA7F7, prOLetter}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - {0xA7F8, 0xA7F9, prLower}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE - {0xA7FA, 0xA7FA, prLower}, // L& LATIN LETTER SMALL CAPITAL TURNED M - {0xA7FB, 0xA801, prOLetter}, // Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I - {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA - {0xA803, 0xA805, prOLetter}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O - {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA - {0xA807, 0xA80A, prOLetter}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO - {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA - {0xA80C, 0xA822, prOLetter}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO - {0xA823, 0xA824, prExtend}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I - {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E - {0xA827, 0xA827, prExtend}, // Mc SYLOTI NAGRI VOWEL SIGN OO - {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA - {0xA840, 0xA873, prOLetter}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU - {0xA876, 0xA877, prSTerm}, // Po [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD - {0xA880, 0xA881, prExtend}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - {0xA882, 0xA8B3, prOLetter}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - {0xA8B4, 0xA8C3, prExtend}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU - {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - {0xA8CE, 0xA8CF, prSTerm}, // Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA - {0xA8D0, 0xA8D9, prNumeric}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - {0xA8F2, 0xA8F7, prOLetter}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA - {0xA8FB, 0xA8FB, prOLetter}, // Lo DEVANAGARI HEADSTROKE - {0xA8FD, 0xA8FE, prOLetter}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY - {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY - {0xA900, 0xA909, prNumeric}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE - {0xA90A, 0xA925, prOLetter}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO - {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - {0xA92F, 0xA92F, prSTerm}, // Po KAYAH LI SIGN SHYA - {0xA930, 0xA946, prOLetter}, // Lo [23] REJANG LETTER KA..REJANG LETTER A - {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R - {0xA952, 0xA953, prExtend}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA - {0xA960, 0xA97C, prOLetter}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH - {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR - {0xA983, 0xA983, prExtend}, // Mc JAVANESE SIGN WIGNYAN - {0xA984, 0xA9B2, prOLetter}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA - {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU - {0xA9B4, 0xA9B5, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG - {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT - {0xA9BA, 0xA9BB, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE - {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET - {0xA9BE, 0xA9C0, prExtend}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON - {0xA9C8, 0xA9C9, prSTerm}, // Po [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI - {0xA9CF, 0xA9CF, prOLetter}, // Lm JAVANESE PANGRANGKEP - {0xA9D0, 0xA9D9, prNumeric}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE - {0xA9E0, 0xA9E4, prOLetter}, // Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA - {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW - {0xA9E6, 0xA9E6, prOLetter}, // Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION - {0xA9E7, 0xA9EF, prOLetter}, // Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA - {0xA9F0, 0xA9F9, prNumeric}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE - {0xA9FA, 0xA9FE, prOLetter}, // Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA - {0xAA00, 0xAA28, prOLetter}, // Lo [41] CHAM LETTER A..CHAM LETTER HA - {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE - {0xAA2F, 0xAA30, prExtend}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI - {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE - {0xAA33, 0xAA34, prExtend}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA - {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA - {0xAA40, 0xAA42, prOLetter}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG - {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG - {0xAA44, 0xAA4B, prOLetter}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS - {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M - {0xAA4D, 0xAA4D, prExtend}, // Mc CHAM CONSONANT SIGN FINAL H - {0xAA50, 0xAA59, prNumeric}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE - {0xAA5D, 0xAA5F, prSTerm}, // Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA - {0xAA60, 0xAA6F, prOLetter}, // Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA - {0xAA70, 0xAA70, prOLetter}, // Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION - {0xAA71, 0xAA76, prOLetter}, // Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM - {0xAA7A, 0xAA7A, prOLetter}, // Lo MYANMAR LETTER AITON RA - {0xAA7B, 0xAA7B, prExtend}, // Mc MYANMAR SIGN PAO KAREN TONE - {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 - {0xAA7D, 0xAA7D, prExtend}, // Mc MYANMAR SIGN TAI LAING TONE-5 - {0xAA7E, 0xAAAF, prOLetter}, // Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O - {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG - {0xAAB1, 0xAAB1, prOLetter}, // Lo TAI VIET VOWEL AA - {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U - {0xAAB5, 0xAAB6, prOLetter}, // Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O - {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA - {0xAAB9, 0xAABD, prOLetter}, // Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN - {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK - {0xAAC0, 0xAAC0, prOLetter}, // Lo TAI VIET TONE MAI NUENG - {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO - {0xAAC2, 0xAAC2, prOLetter}, // Lo TAI VIET TONE MAI SONG - {0xAADB, 0xAADC, prOLetter}, // Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG - {0xAADD, 0xAADD, prOLetter}, // Lm TAI VIET SYMBOL SAM - {0xAAE0, 0xAAEA, prOLetter}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA - {0xAAEB, 0xAAEB, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN II - {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI - {0xAAEE, 0xAAEF, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU - {0xAAF0, 0xAAF1, prSTerm}, // Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM - {0xAAF2, 0xAAF2, prOLetter}, // Lo MEETEI MAYEK ANJI - {0xAAF3, 0xAAF4, prOLetter}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK - {0xAAF5, 0xAAF5, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA - {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA - {0xAB01, 0xAB06, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO - {0xAB09, 0xAB0E, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO - {0xAB11, 0xAB16, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO - {0xAB20, 0xAB26, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO - {0xAB28, 0xAB2E, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO - {0xAB30, 0xAB5A, prLower}, // L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG - {0xAB5C, 0xAB5F, prLower}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK - {0xAB60, 0xAB68, prLower}, // L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE - {0xAB69, 0xAB69, prLower}, // Lm MODIFIER LETTER SMALL TURNED W - {0xAB70, 0xABBF, prLower}, // L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA - {0xABC0, 0xABE2, prOLetter}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM - {0xABE3, 0xABE4, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP - {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP - {0xABE6, 0xABE7, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP - {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP - {0xABE9, 0xABEA, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG - {0xABEB, 0xABEB, prSTerm}, // Po MEETEI MAYEK CHEIKHEI - {0xABEC, 0xABEC, prExtend}, // Mc MEETEI MAYEK LUM IYEK - {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK - {0xABF0, 0xABF9, prNumeric}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE - {0xAC00, 0xD7A3, prOLetter}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH - {0xD7B0, 0xD7C6, prOLetter}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E - {0xD7CB, 0xD7FB, prOLetter}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH - {0xF900, 0xFA6D, prOLetter}, // Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D - {0xFA70, 0xFAD9, prOLetter}, // Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 - {0xFB00, 0xFB06, prLower}, // L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST - {0xFB13, 0xFB17, prLower}, // L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - {0xFB1D, 0xFB1D, prOLetter}, // Lo HEBREW LETTER YOD WITH HIRIQ - {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA - {0xFB1F, 0xFB28, prOLetter}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV - {0xFB2A, 0xFB36, prOLetter}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH - {0xFB38, 0xFB3C, prOLetter}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH - {0xFB3E, 0xFB3E, prOLetter}, // Lo HEBREW LETTER MEM WITH DAGESH - {0xFB40, 0xFB41, prOLetter}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH - {0xFB43, 0xFB44, prOLetter}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH - {0xFB46, 0xFBB1, prOLetter}, // Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM - {0xFBD3, 0xFD3D, prOLetter}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM - {0xFD3E, 0xFD3E, prClose}, // Pe ORNATE LEFT PARENTHESIS - {0xFD3F, 0xFD3F, prClose}, // Ps ORNATE RIGHT PARENTHESIS - {0xFD50, 0xFD8F, prOLetter}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM - {0xFD92, 0xFDC7, prOLetter}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM - {0xFDF0, 0xFDFB, prOLetter}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU - {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 - {0xFE10, 0xFE11, prSContinue}, // Po [2] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA - {0xFE13, 0xFE13, prSContinue}, // Po PRESENTATION FORM FOR VERTICAL COLON - {0xFE17, 0xFE17, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - {0xFE18, 0xFE18, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET - {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF - {0xFE31, 0xFE32, prSContinue}, // Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH - {0xFE35, 0xFE35, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - {0xFE36, 0xFE36, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - {0xFE37, 0xFE37, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - {0xFE38, 0xFE38, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - {0xFE39, 0xFE39, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - {0xFE3A, 0xFE3A, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - {0xFE3B, 0xFE3B, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - {0xFE3C, 0xFE3C, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - {0xFE3D, 0xFE3D, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - {0xFE3E, 0xFE3E, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - {0xFE3F, 0xFE3F, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - {0xFE40, 0xFE40, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - {0xFE41, 0xFE41, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - {0xFE42, 0xFE42, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - {0xFE43, 0xFE43, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - {0xFE44, 0xFE44, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - {0xFE47, 0xFE47, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - {0xFE48, 0xFE48, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - {0xFE50, 0xFE51, prSContinue}, // Po [2] SMALL COMMA..SMALL IDEOGRAPHIC COMMA - {0xFE52, 0xFE52, prATerm}, // Po SMALL FULL STOP - {0xFE55, 0xFE55, prSContinue}, // Po SMALL COLON - {0xFE56, 0xFE57, prSTerm}, // Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK - {0xFE58, 0xFE58, prSContinue}, // Pd SMALL EM DASH - {0xFE59, 0xFE59, prClose}, // Ps SMALL LEFT PARENTHESIS - {0xFE5A, 0xFE5A, prClose}, // Pe SMALL RIGHT PARENTHESIS - {0xFE5B, 0xFE5B, prClose}, // Ps SMALL LEFT CURLY BRACKET - {0xFE5C, 0xFE5C, prClose}, // Pe SMALL RIGHT CURLY BRACKET - {0xFE5D, 0xFE5D, prClose}, // Ps SMALL LEFT TORTOISE SHELL BRACKET - {0xFE5E, 0xFE5E, prClose}, // Pe SMALL RIGHT TORTOISE SHELL BRACKET - {0xFE63, 0xFE63, prSContinue}, // Pd SMALL HYPHEN-MINUS - {0xFE70, 0xFE74, prOLetter}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM - {0xFE76, 0xFEFC, prOLetter}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - {0xFEFF, 0xFEFF, prFormat}, // Cf ZERO WIDTH NO-BREAK SPACE - {0xFF01, 0xFF01, prSTerm}, // Po FULLWIDTH EXCLAMATION MARK - {0xFF08, 0xFF08, prClose}, // Ps FULLWIDTH LEFT PARENTHESIS - {0xFF09, 0xFF09, prClose}, // Pe FULLWIDTH RIGHT PARENTHESIS - {0xFF0C, 0xFF0C, prSContinue}, // Po FULLWIDTH COMMA - {0xFF0D, 0xFF0D, prSContinue}, // Pd FULLWIDTH HYPHEN-MINUS - {0xFF0E, 0xFF0E, prATerm}, // Po FULLWIDTH FULL STOP - {0xFF10, 0xFF19, prNumeric}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE - {0xFF1A, 0xFF1A, prSContinue}, // Po FULLWIDTH COLON - {0xFF1F, 0xFF1F, prSTerm}, // Po FULLWIDTH QUESTION MARK - {0xFF21, 0xFF3A, prUpper}, // L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - {0xFF3B, 0xFF3B, prClose}, // Ps FULLWIDTH LEFT SQUARE BRACKET - {0xFF3D, 0xFF3D, prClose}, // Pe FULLWIDTH RIGHT SQUARE BRACKET - {0xFF41, 0xFF5A, prLower}, // L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - {0xFF5B, 0xFF5B, prClose}, // Ps FULLWIDTH LEFT CURLY BRACKET - {0xFF5D, 0xFF5D, prClose}, // Pe FULLWIDTH RIGHT CURLY BRACKET - {0xFF5F, 0xFF5F, prClose}, // Ps FULLWIDTH LEFT WHITE PARENTHESIS - {0xFF60, 0xFF60, prClose}, // Pe FULLWIDTH RIGHT WHITE PARENTHESIS - {0xFF61, 0xFF61, prSTerm}, // Po HALFWIDTH IDEOGRAPHIC FULL STOP - {0xFF62, 0xFF62, prClose}, // Ps HALFWIDTH LEFT CORNER BRACKET - {0xFF63, 0xFF63, prClose}, // Pe HALFWIDTH RIGHT CORNER BRACKET - {0xFF64, 0xFF64, prSContinue}, // Po HALFWIDTH IDEOGRAPHIC COMMA - {0xFF66, 0xFF6F, prOLetter}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU - {0xFF70, 0xFF70, prOLetter}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - {0xFF71, 0xFF9D, prOLetter}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - {0xFFA0, 0xFFBE, prOLetter}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH - {0xFFC2, 0xFFC7, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E - {0xFFCA, 0xFFCF, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE - {0xFFD2, 0xFFD7, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU - {0xFFDA, 0xFFDC, prOLetter}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - {0xFFF9, 0xFFFB, prFormat}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR - {0x10000, 0x1000B, prOLetter}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE - {0x1000D, 0x10026, prOLetter}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO - {0x10028, 0x1003A, prOLetter}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO - {0x1003C, 0x1003D, prOLetter}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE - {0x1003F, 0x1004D, prOLetter}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO - {0x10050, 0x1005D, prOLetter}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 - {0x10080, 0x100FA, prOLetter}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - {0x10140, 0x10174, prOLetter}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS - {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE - {0x10280, 0x1029C, prOLetter}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X - {0x102A0, 0x102D0, prOLetter}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 - {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK - {0x10300, 0x1031F, prOLetter}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS - {0x1032D, 0x10340, prOLetter}, // Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA - {0x10341, 0x10341, prOLetter}, // Nl GOTHIC LETTER NINETY - {0x10342, 0x10349, prOLetter}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL - {0x1034A, 0x1034A, prOLetter}, // Nl GOTHIC LETTER NINE HUNDRED - {0x10350, 0x10375, prOLetter}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA - {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII - {0x10380, 0x1039D, prOLetter}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU - {0x103A0, 0x103C3, prOLetter}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA - {0x103C8, 0x103CF, prOLetter}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH - {0x103D1, 0x103D5, prOLetter}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - {0x10400, 0x10427, prUpper}, // L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW - {0x10428, 0x1044F, prLower}, // L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW - {0x10450, 0x1049D, prOLetter}, // Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO - {0x104A0, 0x104A9, prNumeric}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - {0x104B0, 0x104D3, prUpper}, // L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - {0x104D8, 0x104FB, prLower}, // L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - {0x10500, 0x10527, prOLetter}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - {0x10530, 0x10563, prOLetter}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - {0x10570, 0x1057A, prUpper}, // L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA - {0x1057C, 0x1058A, prUpper}, // L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE - {0x1058C, 0x10592, prUpper}, // L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE - {0x10594, 0x10595, prUpper}, // L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE - {0x10597, 0x105A1, prLower}, // L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA - {0x105A3, 0x105B1, prLower}, // L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE - {0x105B3, 0x105B9, prLower}, // L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE - {0x105BB, 0x105BC, prLower}, // L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE - {0x10600, 0x10736, prOLetter}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 - {0x10740, 0x10755, prOLetter}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE - {0x10760, 0x10767, prOLetter}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 - {0x10780, 0x10780, prLower}, // Lm MODIFIER LETTER SMALL CAPITAL AA - {0x10781, 0x10782, prOLetter}, // Lm [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON - {0x10783, 0x10785, prLower}, // Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK - {0x10787, 0x107B0, prLower}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK - {0x107B2, 0x107BA, prLower}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL - {0x10800, 0x10805, prOLetter}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA - {0x10808, 0x10808, prOLetter}, // Lo CYPRIOT SYLLABLE JO - {0x1080A, 0x10835, prOLetter}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO - {0x10837, 0x10838, prOLetter}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE - {0x1083C, 0x1083C, prOLetter}, // Lo CYPRIOT SYLLABLE ZA - {0x1083F, 0x10855, prOLetter}, // Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW - {0x10860, 0x10876, prOLetter}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW - {0x10880, 0x1089E, prOLetter}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW - {0x108E0, 0x108F2, prOLetter}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH - {0x108F4, 0x108F5, prOLetter}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW - {0x10900, 0x10915, prOLetter}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU - {0x10920, 0x10939, prOLetter}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C - {0x10980, 0x109B7, prOLetter}, // Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA - {0x109BE, 0x109BF, prOLetter}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN - {0x10A00, 0x10A00, prOLetter}, // Lo KHAROSHTHI LETTER A - {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R - {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O - {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - {0x10A10, 0x10A13, prOLetter}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA - {0x10A15, 0x10A17, prOLetter}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA - {0x10A19, 0x10A35, prOLetter}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA - {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW - {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA - {0x10A56, 0x10A57, prSTerm}, // Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA - {0x10A60, 0x10A7C, prOLetter}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH - {0x10A80, 0x10A9C, prOLetter}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH - {0x10AC0, 0x10AC7, prOLetter}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW - {0x10AC9, 0x10AE4, prOLetter}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW - {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW - {0x10B00, 0x10B35, prOLetter}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE - {0x10B40, 0x10B55, prOLetter}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW - {0x10B60, 0x10B72, prOLetter}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW - {0x10B80, 0x10B91, prOLetter}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW - {0x10C00, 0x10C48, prOLetter}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH - {0x10C80, 0x10CB2, prUpper}, // L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - {0x10CC0, 0x10CF2, prLower}, // L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - {0x10D00, 0x10D23, prOLetter}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA - {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI - {0x10D30, 0x10D39, prNumeric}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE - {0x10E80, 0x10EA9, prOLetter}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET - {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK - {0x10EB0, 0x10EB1, prOLetter}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE - {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA - {0x10F00, 0x10F1C, prOLetter}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL - {0x10F27, 0x10F27, prOLetter}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH - {0x10F30, 0x10F45, prOLetter}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN - {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW - {0x10F55, 0x10F59, prSTerm}, // Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT - {0x10F70, 0x10F81, prOLetter}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH - {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW - {0x10F86, 0x10F89, prSTerm}, // Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS - {0x10FB0, 0x10FC4, prOLetter}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW - {0x10FE0, 0x10FF6, prOLetter}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH - {0x11000, 0x11000, prExtend}, // Mc BRAHMI SIGN CANDRABINDU - {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA - {0x11002, 0x11002, prExtend}, // Mc BRAHMI SIGN VISARGA - {0x11003, 0x11037, prOLetter}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA - {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA - {0x11047, 0x11048, prSTerm}, // Po [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA - {0x11066, 0x1106F, prNumeric}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE - {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA - {0x11071, 0x11072, prOLetter}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O - {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O - {0x11075, 0x11075, prOLetter}, // Lo BRAHMI LETTER OLD TAMIL LLA - {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA - {0x11082, 0x11082, prExtend}, // Mc KAITHI SIGN VISARGA - {0x11083, 0x110AF, prOLetter}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA - {0x110B0, 0x110B2, prExtend}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II - {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI - {0x110B7, 0x110B8, prExtend}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU - {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA - {0x110BD, 0x110BD, prFormat}, // Cf KAITHI NUMBER SIGN - {0x110BE, 0x110C1, prSTerm}, // Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA - {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R - {0x110CD, 0x110CD, prFormat}, // Cf KAITHI NUMBER SIGN ABOVE - {0x110D0, 0x110E8, prOLetter}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE - {0x110F0, 0x110F9, prNumeric}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE - {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA - {0x11103, 0x11126, prOLetter}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA - {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU - {0x1112C, 0x1112C, prExtend}, // Mc CHAKMA VOWEL SIGN E - {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA - {0x11136, 0x1113F, prNumeric}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE - {0x11141, 0x11143, prSTerm}, // Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK - {0x11144, 0x11144, prOLetter}, // Lo CHAKMA LETTER LHAA - {0x11145, 0x11146, prExtend}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI - {0x11147, 0x11147, prOLetter}, // Lo CHAKMA LETTER VAA - {0x11150, 0x11172, prOLetter}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA - {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA - {0x11176, 0x11176, prOLetter}, // Lo MAHAJANI LIGATURE SHRI - {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA - {0x11182, 0x11182, prExtend}, // Mc SHARADA SIGN VISARGA - {0x11183, 0x111B2, prOLetter}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA - {0x111B3, 0x111B5, prExtend}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II - {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O - {0x111BF, 0x111C0, prExtend}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA - {0x111C1, 0x111C4, prOLetter}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM - {0x111C5, 0x111C6, prSTerm}, // Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA - {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK - {0x111CD, 0x111CD, prSTerm}, // Po SHARADA SUTRA MARK - {0x111CE, 0x111CE, prExtend}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E - {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU - {0x111D0, 0x111D9, prNumeric}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE - {0x111DA, 0x111DA, prOLetter}, // Lo SHARADA EKAM - {0x111DC, 0x111DC, prOLetter}, // Lo SHARADA HEADSTROKE - {0x111DE, 0x111DF, prSTerm}, // Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 - {0x11200, 0x11211, prOLetter}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA - {0x11213, 0x1122B, prOLetter}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA - {0x1122C, 0x1122E, prExtend}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II - {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - {0x11232, 0x11233, prExtend}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA - {0x11235, 0x11235, prExtend}, // Mc KHOJKI SIGN VIRAMA - {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA - {0x11238, 0x11239, prSTerm}, // Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA - {0x1123B, 0x1123C, prSTerm}, // Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK - {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN - {0x1123F, 0x11240, prOLetter}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I - {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R - {0x11280, 0x11286, prOLetter}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA - {0x11288, 0x11288, prOLetter}, // Lo MULTANI LETTER GHA - {0x1128A, 0x1128D, prOLetter}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA - {0x1128F, 0x1129D, prOLetter}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA - {0x1129F, 0x112A8, prOLetter}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA - {0x112A9, 0x112A9, prSTerm}, // Po MULTANI SECTION MARK - {0x112B0, 0x112DE, prOLetter}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA - {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA - {0x112E0, 0x112E2, prExtend}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II - {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - {0x112F0, 0x112F9, prNumeric}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE - {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU - {0x11302, 0x11303, prExtend}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA - {0x11305, 0x1130C, prOLetter}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L - {0x1130F, 0x11310, prOLetter}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI - {0x11313, 0x11328, prOLetter}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA - {0x1132A, 0x11330, prOLetter}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA - {0x11332, 0x11333, prOLetter}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA - {0x11335, 0x11339, prOLetter}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA - {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA - {0x1133D, 0x1133D, prOLetter}, // Lo GRANTHA SIGN AVAGRAHA - {0x1133E, 0x1133F, prExtend}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I - {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II - {0x11341, 0x11344, prExtend}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR - {0x11347, 0x11348, prExtend}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI - {0x1134B, 0x1134D, prExtend}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA - {0x11350, 0x11350, prOLetter}, // Lo GRANTHA OM - {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK - {0x1135D, 0x11361, prOLetter}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL - {0x11362, 0x11363, prExtend}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA - {0x11400, 0x11434, prOLetter}, // Lo [53] NEWA LETTER A..NEWA LETTER HA - {0x11435, 0x11437, prExtend}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II - {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI - {0x11440, 0x11441, prExtend}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU - {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA - {0x11445, 0x11445, prExtend}, // Mc NEWA SIGN VISARGA - {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA - {0x11447, 0x1144A, prOLetter}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - {0x1144B, 0x1144C, prSTerm}, // Po [2] NEWA DANDA..NEWA DOUBLE DANDA - {0x11450, 0x11459, prNumeric}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK - {0x1145F, 0x11461, prOLetter}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA - {0x11480, 0x114AF, prOLetter}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - {0x114B0, 0x114B2, prExtend}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - {0x114B9, 0x114B9, prExtend}, // Mc TIRHUTA VOWEL SIGN E - {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E - {0x114BB, 0x114BE, prExtend}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU - {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA - {0x114C1, 0x114C1, prExtend}, // Mc TIRHUTA SIGN VISARGA - {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA - {0x114C4, 0x114C5, prOLetter}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - {0x114C7, 0x114C7, prOLetter}, // Lo TIRHUTA OM - {0x114D0, 0x114D9, prNumeric}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE - {0x11580, 0x115AE, prOLetter}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA - {0x115AF, 0x115B1, prExtend}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II - {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR - {0x115B8, 0x115BB, prExtend}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU - {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA - {0x115BE, 0x115BE, prExtend}, // Mc SIDDHAM SIGN VISARGA - {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA - {0x115C2, 0x115C3, prSTerm}, // Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA - {0x115C9, 0x115D7, prSTerm}, // Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES - {0x115D8, 0x115DB, prOLetter}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U - {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU - {0x11600, 0x1162F, prOLetter}, // Lo [48] MODI LETTER A..MODI LETTER LLA - {0x11630, 0x11632, prExtend}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II - {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI - {0x1163B, 0x1163C, prExtend}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU - {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA - {0x1163E, 0x1163E, prExtend}, // Mc MODI SIGN VISARGA - {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA - {0x11641, 0x11642, prSTerm}, // Po [2] MODI DANDA..MODI DOUBLE DANDA - {0x11644, 0x11644, prOLetter}, // Lo MODI SIGN HUVA - {0x11650, 0x11659, prNumeric}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE - {0x11680, 0x116AA, prOLetter}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA - {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA - {0x116AC, 0x116AC, prExtend}, // Mc TAKRI SIGN VISARGA - {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA - {0x116AE, 0x116AF, prExtend}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II - {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU - {0x116B6, 0x116B6, prExtend}, // Mc TAKRI SIGN VIRAMA - {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA - {0x116B8, 0x116B8, prOLetter}, // Lo TAKRI LETTER ARCHAIC KHA - {0x116C0, 0x116C9, prNumeric}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE - {0x11700, 0x1171A, prOLetter}, // Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA - {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - {0x11720, 0x11721, prExtend}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA - {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - {0x11726, 0x11726, prExtend}, // Mc AHOM VOWEL SIGN E - {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER - {0x11730, 0x11739, prNumeric}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE - {0x1173C, 0x1173E, prSTerm}, // Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI - {0x11740, 0x11746, prOLetter}, // Lo [7] AHOM LETTER CA..AHOM LETTER LLA - {0x11800, 0x1182B, prOLetter}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA - {0x1182C, 0x1182E, prExtend}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II - {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA - {0x11838, 0x11838, prExtend}, // Mc DOGRA SIGN VISARGA - {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA - {0x118A0, 0x118BF, prUpper}, // L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO - {0x118C0, 0x118DF, prLower}, // L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - {0x118E0, 0x118E9, prNumeric}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - {0x118FF, 0x11906, prOLetter}, // Lo [8] WARANG CITI OM..DIVES AKURU LETTER E - {0x11909, 0x11909, prOLetter}, // Lo DIVES AKURU LETTER O - {0x1190C, 0x11913, prOLetter}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA - {0x11915, 0x11916, prOLetter}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA - {0x11918, 0x1192F, prOLetter}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA - {0x11930, 0x11935, prExtend}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E - {0x11937, 0x11938, prExtend}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O - {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU - {0x1193D, 0x1193D, prExtend}, // Mc DIVES AKURU SIGN HALANTA - {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA - {0x1193F, 0x1193F, prOLetter}, // Lo DIVES AKURU PREFIXED NASAL SIGN - {0x11940, 0x11940, prExtend}, // Mc DIVES AKURU MEDIAL YA - {0x11941, 0x11941, prOLetter}, // Lo DIVES AKURU INITIAL RA - {0x11942, 0x11942, prExtend}, // Mc DIVES AKURU MEDIAL RA - {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA - {0x11944, 0x11944, prSTerm}, // Po DIVES AKURU DOUBLE DANDA - {0x11946, 0x11946, prSTerm}, // Po DIVES AKURU END OF TEXT MARK - {0x11950, 0x11959, prNumeric}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE - {0x119A0, 0x119A7, prOLetter}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR - {0x119AA, 0x119D0, prOLetter}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA - {0x119D1, 0x119D3, prExtend}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II - {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR - {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI - {0x119DC, 0x119DF, prExtend}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA - {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA - {0x119E1, 0x119E1, prOLetter}, // Lo NANDINAGARI SIGN AVAGRAHA - {0x119E3, 0x119E3, prOLetter}, // Lo NANDINAGARI HEADSTROKE - {0x119E4, 0x119E4, prExtend}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E - {0x11A00, 0x11A00, prOLetter}, // Lo ZANABAZAR SQUARE LETTER A - {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK - {0x11A0B, 0x11A32, prOLetter}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA - {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA - {0x11A39, 0x11A39, prExtend}, // Mc ZANABAZAR SQUARE SIGN VISARGA - {0x11A3A, 0x11A3A, prOLetter}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA - {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA - {0x11A42, 0x11A43, prSTerm}, // Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD - {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER - {0x11A50, 0x11A50, prOLetter}, // Lo SOYOMBO LETTER A - {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE - {0x11A57, 0x11A58, prExtend}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU - {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK - {0x11A5C, 0x11A89, prOLetter}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA - {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA - {0x11A97, 0x11A97, prExtend}, // Mc SOYOMBO SIGN VISARGA - {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER - {0x11A9B, 0x11A9C, prSTerm}, // Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD - {0x11A9D, 0x11A9D, prOLetter}, // Lo SOYOMBO MARK PLUTA - {0x11AB0, 0x11AF8, prOLetter}, // Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL - {0x11C00, 0x11C08, prOLetter}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L - {0x11C0A, 0x11C2E, prOLetter}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA - {0x11C2F, 0x11C2F, prExtend}, // Mc BHAIKSUKI VOWEL SIGN AA - {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L - {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA - {0x11C3E, 0x11C3E, prExtend}, // Mc BHAIKSUKI SIGN VISARGA - {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA - {0x11C40, 0x11C40, prOLetter}, // Lo BHAIKSUKI SIGN AVAGRAHA - {0x11C41, 0x11C42, prSTerm}, // Po [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA - {0x11C50, 0x11C59, prNumeric}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE - {0x11C72, 0x11C8F, prOLetter}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A - {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA - {0x11CA9, 0x11CA9, prExtend}, // Mc MARCHEN SUBJOINED LETTER YA - {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA - {0x11CB1, 0x11CB1, prExtend}, // Mc MARCHEN VOWEL SIGN I - {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E - {0x11CB4, 0x11CB4, prExtend}, // Mc MARCHEN VOWEL SIGN O - {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - {0x11D00, 0x11D06, prOLetter}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E - {0x11D08, 0x11D09, prOLetter}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O - {0x11D0B, 0x11D30, prOLetter}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA - {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R - {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E - {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O - {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA - {0x11D46, 0x11D46, prOLetter}, // Lo MASARAM GONDI REPHA - {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA - {0x11D50, 0x11D59, prNumeric}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE - {0x11D60, 0x11D65, prOLetter}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU - {0x11D67, 0x11D68, prOLetter}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI - {0x11D6A, 0x11D89, prOLetter}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA - {0x11D8A, 0x11D8E, prExtend}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU - {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI - {0x11D93, 0x11D94, prExtend}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU - {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA - {0x11D96, 0x11D96, prExtend}, // Mc GUNJALA GONDI SIGN VISARGA - {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA - {0x11D98, 0x11D98, prOLetter}, // Lo GUNJALA GONDI OM - {0x11DA0, 0x11DA9, prNumeric}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE - {0x11EE0, 0x11EF2, prOLetter}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA - {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U - {0x11EF5, 0x11EF6, prExtend}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O - {0x11EF7, 0x11EF8, prSTerm}, // Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION - {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA - {0x11F02, 0x11F02, prOLetter}, // Lo KAWI SIGN REPHA - {0x11F03, 0x11F03, prExtend}, // Mc KAWI SIGN VISARGA - {0x11F04, 0x11F10, prOLetter}, // Lo [13] KAWI LETTER A..KAWI LETTER O - {0x11F12, 0x11F33, prOLetter}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA - {0x11F34, 0x11F35, prExtend}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA - {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R - {0x11F3E, 0x11F3F, prExtend}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI - {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU - {0x11F41, 0x11F41, prExtend}, // Mc KAWI SIGN KILLER - {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER - {0x11F43, 0x11F44, prSTerm}, // Po [2] KAWI DANDA..KAWI DOUBLE DANDA - {0x11F50, 0x11F59, prNumeric}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE - {0x11FB0, 0x11FB0, prOLetter}, // Lo LISU LETTER YHA - {0x12000, 0x12399, prOLetter}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - {0x12400, 0x1246E, prOLetter}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - {0x12480, 0x12543, prOLetter}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU - {0x12F90, 0x12FF0, prOLetter}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 - {0x13000, 0x1342F, prOLetter}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D - {0x13430, 0x1343F, prFormat}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE - {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY - {0x13441, 0x13446, prOLetter}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN - {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED - {0x14400, 0x14646, prOLetter}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 - {0x16800, 0x16A38, prOLetter}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ - {0x16A40, 0x16A5E, prOLetter}, // Lo [31] MRO LETTER TA..MRO LETTER TEK - {0x16A60, 0x16A69, prNumeric}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE - {0x16A6E, 0x16A6F, prSTerm}, // Po [2] MRO DANDA..MRO DOUBLE DANDA - {0x16A70, 0x16ABE, prOLetter}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA - {0x16AC0, 0x16AC9, prNumeric}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE - {0x16AD0, 0x16AED, prOLetter}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I - {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - {0x16AF5, 0x16AF5, prSTerm}, // Po BASSA VAH FULL STOP - {0x16B00, 0x16B2F, prOLetter}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU - {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - {0x16B37, 0x16B38, prSTerm}, // Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB - {0x16B40, 0x16B43, prOLetter}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM - {0x16B44, 0x16B44, prSTerm}, // Po PAHAWH HMONG SIGN XAUS - {0x16B50, 0x16B59, prNumeric}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE - {0x16B63, 0x16B77, prOLetter}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS - {0x16B7D, 0x16B8F, prOLetter}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ - {0x16E40, 0x16E5F, prUpper}, // L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y - {0x16E60, 0x16E7F, prLower}, // L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y - {0x16E98, 0x16E98, prSTerm}, // Po MEDEFAIDRIN FULL STOP - {0x16F00, 0x16F4A, prOLetter}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE - {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR - {0x16F50, 0x16F50, prOLetter}, // Lo MIAO LETTER NASALIZATION - {0x16F51, 0x16F87, prExtend}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI - {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - {0x16F93, 0x16F9F, prOLetter}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 - {0x16FE0, 0x16FE1, prOLetter}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK - {0x16FE3, 0x16FE3, prOLetter}, // Lm OLD CHINESE ITERATION MARK - {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER - {0x16FF0, 0x16FF1, prExtend}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY - {0x17000, 0x187F7, prOLetter}, // Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 - {0x18800, 0x18CD5, prOLetter}, // Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 - {0x18D00, 0x18D08, prOLetter}, // Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 - {0x1AFF0, 0x1AFF3, prOLetter}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 - {0x1AFF5, 0x1AFFB, prOLetter}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 - {0x1AFFD, 0x1AFFE, prOLetter}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 - {0x1B000, 0x1B122, prOLetter}, // Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU - {0x1B132, 0x1B132, prOLetter}, // Lo HIRAGANA LETTER SMALL KO - {0x1B150, 0x1B152, prOLetter}, // Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO - {0x1B155, 0x1B155, prOLetter}, // Lo KATAKANA LETTER SMALL KO - {0x1B164, 0x1B167, prOLetter}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N - {0x1B170, 0x1B2FB, prOLetter}, // Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB - {0x1BC00, 0x1BC6A, prOLetter}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - {0x1BC70, 0x1BC7C, prOLetter}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK - {0x1BC80, 0x1BC88, prOLetter}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL - {0x1BC90, 0x1BC99, prOLetter}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW - {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - {0x1BC9F, 0x1BC9F, prSTerm}, // Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP - {0x1BCA0, 0x1BCA3, prFormat}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT - {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG - {0x1D165, 0x1D166, prExtend}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM - {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 - {0x1D16D, 0x1D172, prExtend}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 - {0x1D173, 0x1D17A, prFormat}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE - {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE - {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE - {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME - {0x1D400, 0x1D419, prUpper}, // L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z - {0x1D41A, 0x1D433, prLower}, // L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z - {0x1D434, 0x1D44D, prUpper}, // L& [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z - {0x1D44E, 0x1D454, prLower}, // L& [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G - {0x1D456, 0x1D467, prLower}, // L& [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z - {0x1D468, 0x1D481, prUpper}, // L& [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z - {0x1D482, 0x1D49B, prLower}, // L& [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z - {0x1D49C, 0x1D49C, prUpper}, // L& MATHEMATICAL SCRIPT CAPITAL A - {0x1D49E, 0x1D49F, prUpper}, // L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D - {0x1D4A2, 0x1D4A2, prUpper}, // L& MATHEMATICAL SCRIPT CAPITAL G - {0x1D4A5, 0x1D4A6, prUpper}, // L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K - {0x1D4A9, 0x1D4AC, prUpper}, // L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q - {0x1D4AE, 0x1D4B5, prUpper}, // L& [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z - {0x1D4B6, 0x1D4B9, prLower}, // L& [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D - {0x1D4BB, 0x1D4BB, prLower}, // L& MATHEMATICAL SCRIPT SMALL F - {0x1D4BD, 0x1D4C3, prLower}, // L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N - {0x1D4C5, 0x1D4CF, prLower}, // L& [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z - {0x1D4D0, 0x1D4E9, prUpper}, // L& [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z - {0x1D4EA, 0x1D503, prLower}, // L& [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z - {0x1D504, 0x1D505, prUpper}, // L& [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B - {0x1D507, 0x1D50A, prUpper}, // L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G - {0x1D50D, 0x1D514, prUpper}, // L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q - {0x1D516, 0x1D51C, prUpper}, // L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y - {0x1D51E, 0x1D537, prLower}, // L& [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z - {0x1D538, 0x1D539, prUpper}, // L& [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B - {0x1D53B, 0x1D53E, prUpper}, // L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G - {0x1D540, 0x1D544, prUpper}, // L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M - {0x1D546, 0x1D546, prUpper}, // L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O - {0x1D54A, 0x1D550, prUpper}, // L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y - {0x1D552, 0x1D56B, prLower}, // L& [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z - {0x1D56C, 0x1D585, prUpper}, // L& [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z - {0x1D586, 0x1D59F, prLower}, // L& [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z - {0x1D5A0, 0x1D5B9, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z - {0x1D5BA, 0x1D5D3, prLower}, // L& [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z - {0x1D5D4, 0x1D5ED, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z - {0x1D5EE, 0x1D607, prLower}, // L& [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z - {0x1D608, 0x1D621, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z - {0x1D622, 0x1D63B, prLower}, // L& [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z - {0x1D63C, 0x1D655, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z - {0x1D656, 0x1D66F, prLower}, // L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z - {0x1D670, 0x1D689, prUpper}, // L& [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z - {0x1D68A, 0x1D6A5, prLower}, // L& [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J - {0x1D6A8, 0x1D6C0, prUpper}, // L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA - {0x1D6C2, 0x1D6DA, prLower}, // L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA - {0x1D6DC, 0x1D6E1, prLower}, // L& [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL - {0x1D6E2, 0x1D6FA, prUpper}, // L& [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA - {0x1D6FC, 0x1D714, prLower}, // L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA - {0x1D716, 0x1D71B, prLower}, // L& [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL - {0x1D71C, 0x1D734, prUpper}, // L& [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA - {0x1D736, 0x1D74E, prLower}, // L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA - {0x1D750, 0x1D755, prLower}, // L& [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL - {0x1D756, 0x1D76E, prUpper}, // L& [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - {0x1D770, 0x1D788, prLower}, // L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA - {0x1D78A, 0x1D78F, prLower}, // L& [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL - {0x1D790, 0x1D7A8, prUpper}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - {0x1D7AA, 0x1D7C2, prLower}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - {0x1D7C4, 0x1D7C9, prLower}, // L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL - {0x1D7CA, 0x1D7CA, prUpper}, // L& MATHEMATICAL BOLD CAPITAL DIGAMMA - {0x1D7CB, 0x1D7CB, prLower}, // L& MATHEMATICAL BOLD SMALL DIGAMMA - {0x1D7CE, 0x1D7FF, prNumeric}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE - {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN - {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT - {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS - {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK - {0x1DA88, 0x1DA88, prSTerm}, // Po SIGNWRITING FULL STOP - {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 - {0x1DF00, 0x1DF09, prLower}, // L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK - {0x1DF0A, 0x1DF0A, prOLetter}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK - {0x1DF0B, 0x1DF1E, prLower}, // L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL - {0x1DF25, 0x1DF2A, prLower}, // L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK - {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE - {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU - {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI - {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS - {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - {0x1E030, 0x1E06D, prLower}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE - {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - {0x1E100, 0x1E12C, prOLetter}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W - {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D - {0x1E137, 0x1E13D, prOLetter}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER - {0x1E140, 0x1E149, prNumeric}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE - {0x1E14E, 0x1E14E, prOLetter}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ - {0x1E290, 0x1E2AD, prOLetter}, // Lo [30] TOTO LETTER PA..TOTO LETTER A - {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE - {0x1E2C0, 0x1E2EB, prOLetter}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH - {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI - {0x1E2F0, 0x1E2F9, prNumeric}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE - {0x1E4D0, 0x1E4EA, prOLetter}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL - {0x1E4EB, 0x1E4EB, prOLetter}, // Lm NAG MUNDARI SIGN OJOD - {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH - {0x1E4F0, 0x1E4F9, prNumeric}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE - {0x1E7E0, 0x1E7E6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO - {0x1E7E8, 0x1E7EB, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE - {0x1E7ED, 0x1E7EE, prOLetter}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE - {0x1E7F0, 0x1E7FE, prOLetter}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE - {0x1E800, 0x1E8C4, prOLetter}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS - {0x1E900, 0x1E921, prUpper}, // L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA - {0x1E922, 0x1E943, prLower}, // L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA - {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - {0x1E94B, 0x1E94B, prOLetter}, // Lm ADLAM NASALIZATION MARK - {0x1E950, 0x1E959, prNumeric}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - {0x1EE00, 0x1EE03, prOLetter}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - {0x1EE05, 0x1EE1F, prOLetter}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - {0x1EE21, 0x1EE22, prOLetter}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM - {0x1EE24, 0x1EE24, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL HEH - {0x1EE27, 0x1EE27, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL HAH - {0x1EE29, 0x1EE32, prOLetter}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF - {0x1EE34, 0x1EE37, prOLetter}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH - {0x1EE39, 0x1EE39, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL DAD - {0x1EE3B, 0x1EE3B, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN - {0x1EE42, 0x1EE42, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED JEEM - {0x1EE47, 0x1EE47, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED HAH - {0x1EE49, 0x1EE49, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED YEH - {0x1EE4B, 0x1EE4B, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED LAM - {0x1EE4D, 0x1EE4F, prOLetter}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN - {0x1EE51, 0x1EE52, prOLetter}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF - {0x1EE54, 0x1EE54, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED SHEEN - {0x1EE57, 0x1EE57, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED KHAH - {0x1EE59, 0x1EE59, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DAD - {0x1EE5B, 0x1EE5B, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED GHAIN - {0x1EE5D, 0x1EE5D, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON - {0x1EE5F, 0x1EE5F, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF - {0x1EE61, 0x1EE62, prOLetter}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM - {0x1EE64, 0x1EE64, prOLetter}, // Lo ARABIC MATHEMATICAL STRETCHED HEH - {0x1EE67, 0x1EE6A, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF - {0x1EE6C, 0x1EE72, prOLetter}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF - {0x1EE74, 0x1EE77, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH - {0x1EE79, 0x1EE7C, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH - {0x1EE7E, 0x1EE7E, prOLetter}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH - {0x1EE80, 0x1EE89, prOLetter}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH - {0x1EE8B, 0x1EE9B, prOLetter}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN - {0x1EEA1, 0x1EEA3, prOLetter}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL - {0x1EEA5, 0x1EEA9, prOLetter}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH - {0x1EEAB, 0x1EEBB, prOLetter}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN - {0x1F130, 0x1F149, prUpper}, // So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z - {0x1F150, 0x1F169, prUpper}, // So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - {0x1F170, 0x1F189, prUpper}, // So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - {0x1F676, 0x1F678, prClose}, // So [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - {0x1FBF0, 0x1FBF9, prNumeric}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE - {0x20000, 0x2A6DF, prOLetter}, // Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF - {0x2A700, 0x2B739, prOLetter}, // Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 - {0x2B740, 0x2B81D, prOLetter}, // Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D - {0x2B820, 0x2CEA1, prOLetter}, // Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - {0x2CEB0, 0x2EBE0, prOLetter}, // Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 - {0x2F800, 0x2FA1D, prOLetter}, // Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - {0x30000, 0x3134A, prOLetter}, // Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A - {0x31350, 0x323AF, prOLetter}, // Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF - {0xE0001, 0xE0001, prFormat}, // Cf LANGUAGE TAG - {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG - {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -} diff --git a/vendor/github.com/rivo/uniseg/sentencerules.go b/vendor/github.com/rivo/uniseg/sentencerules.go deleted file mode 100644 index 0b29c7b..0000000 --- a/vendor/github.com/rivo/uniseg/sentencerules.go +++ /dev/null @@ -1,276 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// The states of the sentence break parser. -const ( - sbAny = iota - sbCR - sbParaSep - sbATerm - sbUpper - sbLower - sbSB7 - sbSB8Close - sbSB8Sp - sbSTerm - sbSB8aClose - sbSB8aSp -) - -// sbTransitions implements the sentence break parser's state transitions. It's -// anologous to [grTransitions], see comments there for details. -// -// Unicode version 15.0.0. -func sbTransitions(state, prop int) (newState int, sentenceBreak bool, rule int) { - switch uint64(state) | uint64(prop)<<32 { - // SB3. - case sbAny | prCR<<32: - return sbCR, false, 9990 - case sbCR | prLF<<32: - return sbParaSep, false, 30 - - // SB4. - case sbAny | prSep<<32: - return sbParaSep, false, 9990 - case sbAny | prLF<<32: - return sbParaSep, false, 9990 - case sbParaSep | prAny<<32: - return sbAny, true, 40 - case sbCR | prAny<<32: - return sbAny, true, 40 - - // SB6. - case sbAny | prATerm<<32: - return sbATerm, false, 9990 - case sbATerm | prNumeric<<32: - return sbAny, false, 60 - case sbSB7 | prNumeric<<32: - return sbAny, false, 60 // Because ATerm also appears in SB7. - - // SB7. - case sbAny | prUpper<<32: - return sbUpper, false, 9990 - case sbAny | prLower<<32: - return sbLower, false, 9990 - case sbUpper | prATerm<<32: - return sbSB7, false, 70 - case sbLower | prATerm<<32: - return sbSB7, false, 70 - case sbSB7 | prUpper<<32: - return sbUpper, false, 70 - - // SB8a. - case sbAny | prSTerm<<32: - return sbSTerm, false, 9990 - case sbATerm | prSContinue<<32: - return sbAny, false, 81 - case sbATerm | prATerm<<32: - return sbATerm, false, 81 - case sbATerm | prSTerm<<32: - return sbSTerm, false, 81 - case sbSB7 | prSContinue<<32: - return sbAny, false, 81 - case sbSB7 | prATerm<<32: - return sbATerm, false, 81 - case sbSB7 | prSTerm<<32: - return sbSTerm, false, 81 - case sbSB8Close | prSContinue<<32: - return sbAny, false, 81 - case sbSB8Close | prATerm<<32: - return sbATerm, false, 81 - case sbSB8Close | prSTerm<<32: - return sbSTerm, false, 81 - case sbSB8Sp | prSContinue<<32: - return sbAny, false, 81 - case sbSB8Sp | prATerm<<32: - return sbATerm, false, 81 - case sbSB8Sp | prSTerm<<32: - return sbSTerm, false, 81 - case sbSTerm | prSContinue<<32: - return sbAny, false, 81 - case sbSTerm | prATerm<<32: - return sbATerm, false, 81 - case sbSTerm | prSTerm<<32: - return sbSTerm, false, 81 - case sbSB8aClose | prSContinue<<32: - return sbAny, false, 81 - case sbSB8aClose | prATerm<<32: - return sbATerm, false, 81 - case sbSB8aClose | prSTerm<<32: - return sbSTerm, false, 81 - case sbSB8aSp | prSContinue<<32: - return sbAny, false, 81 - case sbSB8aSp | prATerm<<32: - return sbATerm, false, 81 - case sbSB8aSp | prSTerm<<32: - return sbSTerm, false, 81 - - // SB9. - case sbATerm | prClose<<32: - return sbSB8Close, false, 90 - case sbSB7 | prClose<<32: - return sbSB8Close, false, 90 - case sbSB8Close | prClose<<32: - return sbSB8Close, false, 90 - case sbATerm | prSp<<32: - return sbSB8Sp, false, 90 - case sbSB7 | prSp<<32: - return sbSB8Sp, false, 90 - case sbSB8Close | prSp<<32: - return sbSB8Sp, false, 90 - case sbSTerm | prClose<<32: - return sbSB8aClose, false, 90 - case sbSB8aClose | prClose<<32: - return sbSB8aClose, false, 90 - case sbSTerm | prSp<<32: - return sbSB8aSp, false, 90 - case sbSB8aClose | prSp<<32: - return sbSB8aSp, false, 90 - case sbATerm | prSep<<32: - return sbParaSep, false, 90 - case sbATerm | prCR<<32: - return sbParaSep, false, 90 - case sbATerm | prLF<<32: - return sbParaSep, false, 90 - case sbSB7 | prSep<<32: - return sbParaSep, false, 90 - case sbSB7 | prCR<<32: - return sbParaSep, false, 90 - case sbSB7 | prLF<<32: - return sbParaSep, false, 90 - case sbSB8Close | prSep<<32: - return sbParaSep, false, 90 - case sbSB8Close | prCR<<32: - return sbParaSep, false, 90 - case sbSB8Close | prLF<<32: - return sbParaSep, false, 90 - case sbSTerm | prSep<<32: - return sbParaSep, false, 90 - case sbSTerm | prCR<<32: - return sbParaSep, false, 90 - case sbSTerm | prLF<<32: - return sbParaSep, false, 90 - case sbSB8aClose | prSep<<32: - return sbParaSep, false, 90 - case sbSB8aClose | prCR<<32: - return sbParaSep, false, 90 - case sbSB8aClose | prLF<<32: - return sbParaSep, false, 90 - - // SB10. - case sbSB8Sp | prSp<<32: - return sbSB8Sp, false, 100 - case sbSB8aSp | prSp<<32: - return sbSB8aSp, false, 100 - case sbSB8Sp | prSep<<32: - return sbParaSep, false, 100 - case sbSB8Sp | prCR<<32: - return sbParaSep, false, 100 - case sbSB8Sp | prLF<<32: - return sbParaSep, false, 100 - - // SB11. - case sbATerm | prAny<<32: - return sbAny, true, 110 - case sbSB7 | prAny<<32: - return sbAny, true, 110 - case sbSB8Close | prAny<<32: - return sbAny, true, 110 - case sbSB8Sp | prAny<<32: - return sbAny, true, 110 - case sbSTerm | prAny<<32: - return sbAny, true, 110 - case sbSB8aClose | prAny<<32: - return sbAny, true, 110 - case sbSB8aSp | prAny<<32: - return sbAny, true, 110 - // We'll always break after ParaSep due to SB4. - - default: - return -1, false, -1 - } -} - -// transitionSentenceBreakState determines the new state of the sentence break -// parser given the current state and the next code point. It also returns -// whether a sentence boundary was detected. If more than one code point is -// needed to determine the new state, the byte slice or the string starting -// after rune "r" can be used (whichever is not nil or empty) for further -// lookups. -func transitionSentenceBreakState(state int, r rune, b []byte, str string) (newState int, sentenceBreak bool) { - // Determine the property of the next character. - nextProperty := property(sentenceBreakCodePoints, r) - - // SB5 (Replacing Ignore Rules). - if nextProperty == prExtend || nextProperty == prFormat { - if state == sbParaSep || state == sbCR { - return sbAny, true // Make sure we don't apply SB5 to SB3 or SB4. - } - if state < 0 { - return sbAny, true // SB1. - } - return state, false - } - - // Find the applicable transition in the table. - var rule int - newState, sentenceBreak, rule = sbTransitions(state, nextProperty) - if newState < 0 { - // No specific transition found. Try the less specific ones. - anyPropState, anyPropProp, anyPropRule := sbTransitions(state, prAny) - anyStateState, anyStateProp, anyStateRule := sbTransitions(sbAny, nextProperty) - if anyPropState >= 0 && anyStateState >= 0 { - // Both apply. We'll use a mix (see comments for grTransitions). - newState, sentenceBreak, rule = anyStateState, anyStateProp, anyStateRule - if anyPropRule < anyStateRule { - sentenceBreak, rule = anyPropProp, anyPropRule - } - } else if anyPropState >= 0 { - // We only have a specific state. - newState, sentenceBreak, rule = anyPropState, anyPropProp, anyPropRule - // This branch will probably never be reached because okAnyState will - // always be true given the current transition map. But we keep it here - // for future modifications to the transition map where this may not be - // true anymore. - } else if anyStateState >= 0 { - // We only have a specific property. - newState, sentenceBreak, rule = anyStateState, anyStateProp, anyStateRule - } else { - // No known transition. SB999: Any × Any. - newState, sentenceBreak, rule = sbAny, false, 9990 - } - } - - // SB8. - if rule > 80 && (state == sbATerm || state == sbSB8Close || state == sbSB8Sp || state == sbSB7) { - // Check the right side of the rule. - var length int - for nextProperty != prOLetter && - nextProperty != prUpper && - nextProperty != prLower && - nextProperty != prSep && - nextProperty != prCR && - nextProperty != prLF && - nextProperty != prATerm && - nextProperty != prSTerm { - // Move on to the next rune. - if b != nil { // Byte slice version. - r, length = utf8.DecodeRune(b) - b = b[length:] - } else { // String version. - r, length = utf8.DecodeRuneInString(str) - str = str[length:] - } - if r == utf8.RuneError { - break - } - nextProperty = property(sentenceBreakCodePoints, r) - } - if nextProperty == prLower { - return sbLower, false - } - } - - return -} diff --git a/vendor/github.com/rivo/uniseg/step.go b/vendor/github.com/rivo/uniseg/step.go deleted file mode 100644 index 9b72c5e..0000000 --- a/vendor/github.com/rivo/uniseg/step.go +++ /dev/null @@ -1,242 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// The bit masks used to extract boundary information returned by [Step]. -const ( - MaskLine = 3 - MaskWord = 4 - MaskSentence = 8 -) - -// The number of bits to shift the boundary information returned by [Step] to -// obtain the monospace width of the grapheme cluster. -const ShiftWidth = 4 - -// The bit positions by which boundary flags are shifted by the [Step] function. -// These must correspond to the Mask constants. -const ( - shiftWord = 2 - shiftSentence = 3 - // shiftwWidth is ShiftWidth above. No mask as these are always the remaining bits. -) - -// The bit positions by which states are shifted by the [Step] function. These -// values must ensure state values defined for each of the boundary algorithms -// don't overlap (and that they all still fit in a single int). These must -// correspond to the Mask constants. -const ( - shiftWordState = 4 - shiftSentenceState = 9 - shiftLineState = 13 - shiftPropState = 21 // No mask as these are always the remaining bits. -) - -// The bit mask used to extract the state returned by the [Step] function, after -// shifting. These values must correspond to the shift constants. -const ( - maskGraphemeState = 0xf - maskWordState = 0x1f - maskSentenceState = 0xf - maskLineState = 0xff -) - -// Step returns the first grapheme cluster (user-perceived character) found in -// the given byte slice. It also returns information about the boundary between -// that grapheme cluster and the one following it as well as the monospace width -// of the grapheme cluster. There are three types of boundary information: word -// boundaries, sentence boundaries, and line breaks. This function is therefore -// a combination of [FirstGraphemeCluster], [FirstWord], [FirstSentence], and -// [FirstLineSegment]. -// -// The "boundaries" return value can be evaluated as follows: -// -// - boundaries&MaskWord != 0: The boundary is a word boundary. -// - boundaries&MaskWord == 0: The boundary is not a word boundary. -// - boundaries&MaskSentence != 0: The boundary is a sentence boundary. -// - boundaries&MaskSentence == 0: The boundary is not a sentence boundary. -// - boundaries&MaskLine == LineDontBreak: You must not break the line at the -// boundary. -// - boundaries&MaskLine == LineMustBreak: You must break the line at the -// boundary. -// - boundaries&MaskLine == LineCanBreak: You may or may not break the line at -// the boundary. -// - boundaries >> ShiftWidth: The width of the grapheme cluster for most -// monospace fonts where a value of 1 represents one character cell. -// -// This function can be called continuously to extract all grapheme clusters -// from a byte slice, as illustrated in the examples below. -// -// If you don't know which state to pass, for example when calling the function -// for the first time, you must pass -1. For consecutive calls, pass the state -// and rest slice returned by the previous call. -// -// The "rest" slice is the sub-slice of the original byte slice "b" starting -// after the last byte of the identified grapheme cluster. If the length of the -// "rest" slice is 0, the entire byte slice "b" has been processed. The -// "cluster" byte slice is the sub-slice of the input slice containing the -// first identified grapheme cluster. -// -// Given an empty byte slice "b", the function returns nil values. -// -// While slightly less convenient than using the Graphemes class, this function -// has much better performance and makes no allocations. It lends itself well to -// large byte slices. -// -// Note that in accordance with [UAX #14 LB3], the final segment will end with -// a mandatory line break (boundaries&MaskLine == LineMustBreak). You can choose -// to ignore this by checking if the length of the "rest" slice is 0 and calling -// [HasTrailingLineBreak] or [HasTrailingLineBreakInString] on the last rune. -// -// [UAX #14 LB3]: https://www.unicode.org/reports/tr14/#Algorithm -func Step(b []byte, state int) (cluster, rest []byte, boundaries int, newState int) { - // An empty byte slice returns nothing. - if len(b) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRune(b) - if len(b) <= length { // If we're already past the end, there is nothing else to parse. - var prop int - if state < 0 { - prop = propertyGraphemes(r) - } else { - prop = state >> shiftPropState - } - return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) - } - - // If we don't know the state, determine it now. - var graphemeState, wordState, sentenceState, lineState, firstProp int - remainder := b[length:] - if state < 0 { - graphemeState, firstProp, _ = transitionGraphemeState(state, r) - wordState, _ = transitionWordBreakState(state, r, remainder, "") - sentenceState, _ = transitionSentenceBreakState(state, r, remainder, "") - lineState, _ = transitionLineBreakState(state, r, remainder, "") - } else { - graphemeState = state & maskGraphemeState - wordState = (state >> shiftWordState) & maskWordState - sentenceState = (state >> shiftSentenceState) & maskSentenceState - lineState = (state >> shiftLineState) & maskLineState - firstProp = state >> shiftPropState - } - - // Transition until we find a grapheme cluster boundary. - width := runeWidth(r, firstProp) - for { - var ( - graphemeBoundary, wordBoundary, sentenceBoundary bool - lineBreak, prop int - ) - - r, l := utf8.DecodeRune(remainder) - remainder = b[length+l:] - - graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) - wordState, wordBoundary = transitionWordBreakState(wordState, r, remainder, "") - sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, remainder, "") - lineState, lineBreak = transitionLineBreakState(lineState, r, remainder, "") - - if graphemeBoundary { - boundary := lineBreak | (width << ShiftWidth) - if wordBoundary { - boundary |= 1 << shiftWord - } - if sentenceBoundary { - boundary |= 1 << shiftSentence - } - return b[:length], b[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) - } - - if firstProp == prExtendedPictographic { - if r == vs15 { - width = 1 - } else if r == vs16 { - width = 2 - } - } else if firstProp != prRegionalIndicator && firstProp != prL { - width += runeWidth(r, prop) - } - - length += l - if len(b) <= length { - return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) - } - } -} - -// StepString is like [Step] but its input and outputs are strings. -func StepString(str string, state int) (cluster, rest string, boundaries int, newState int) { - // An empty byte slice returns nothing. - if len(str) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRuneInString(str) - if len(str) <= length { // If we're already past the end, there is nothing else to parse. - prop := propertyGraphemes(r) - return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) - } - - // If we don't know the state, determine it now. - var graphemeState, wordState, sentenceState, lineState, firstProp int - remainder := str[length:] - if state < 0 { - graphemeState, firstProp, _ = transitionGraphemeState(state, r) - wordState, _ = transitionWordBreakState(state, r, nil, remainder) - sentenceState, _ = transitionSentenceBreakState(state, r, nil, remainder) - lineState, _ = transitionLineBreakState(state, r, nil, remainder) - } else { - graphemeState = state & maskGraphemeState - wordState = (state >> shiftWordState) & maskWordState - sentenceState = (state >> shiftSentenceState) & maskSentenceState - lineState = (state >> shiftLineState) & maskLineState - firstProp = state >> shiftPropState - } - - // Transition until we find a grapheme cluster boundary. - width := runeWidth(r, firstProp) - for { - var ( - graphemeBoundary, wordBoundary, sentenceBoundary bool - lineBreak, prop int - ) - - r, l := utf8.DecodeRuneInString(remainder) - remainder = str[length+l:] - - graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) - wordState, wordBoundary = transitionWordBreakState(wordState, r, nil, remainder) - sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, nil, remainder) - lineState, lineBreak = transitionLineBreakState(lineState, r, nil, remainder) - - if graphemeBoundary { - boundary := lineBreak | (width << ShiftWidth) - if wordBoundary { - boundary |= 1 << shiftWord - } - if sentenceBoundary { - boundary |= 1 << shiftSentence - } - return str[:length], str[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) - } - - if firstProp == prExtendedPictographic { - if r == vs15 { - width = 1 - } else if r == vs16 { - width = 2 - } - } else if firstProp != prRegionalIndicator && firstProp != prL { - width += runeWidth(r, prop) - } - - length += l - if len(str) <= length { - return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) - } - } -} diff --git a/vendor/github.com/rivo/uniseg/width.go b/vendor/github.com/rivo/uniseg/width.go deleted file mode 100644 index 975a9f1..0000000 --- a/vendor/github.com/rivo/uniseg/width.go +++ /dev/null @@ -1,61 +0,0 @@ -package uniseg - -// EastAsianAmbiguousWidth specifies the monospace width for East Asian -// characters classified as Ambiguous. The default is 1 but some rare fonts -// render them with a width of 2. -var EastAsianAmbiguousWidth = 1 - -// runeWidth returns the monospace width for the given rune. The provided -// grapheme property is a value mapped by the [graphemeCodePoints] table. -// -// Every rune has a width of 1, except for runes with the following properties -// (evaluated in this order): -// -// - Control, CR, LF, Extend, ZWJ: Width of 0 -// - \u2e3a, TWO-EM DASH: Width of 3 -// - \u2e3b, THREE-EM DASH: Width of 4 -// - East-Asian width Fullwidth and Wide: Width of 2 (Ambiguous and Neutral -// have a width of 1) -// - Regional Indicator: Width of 2 -// - Extended Pictographic: Width of 2, unless Emoji Presentation is "No". -func runeWidth(r rune, graphemeProperty int) int { - switch graphemeProperty { - case prControl, prCR, prLF, prExtend, prZWJ: - return 0 - case prRegionalIndicator: - return 2 - case prExtendedPictographic: - if property(emojiPresentation, r) == prEmojiPresentation { - return 2 - } - return 1 - } - - switch r { - case 0x2e3a: - return 3 - case 0x2e3b: - return 4 - } - - switch propertyEastAsianWidth(r) { - case prW, prF: - return 2 - case prA: - return EastAsianAmbiguousWidth - } - - return 1 -} - -// StringWidth returns the monospace width for the given string, that is, the -// number of same-size cells to be occupied by the string. -func StringWidth(s string) (width int) { - state := -1 - for len(s) > 0 { - var w int - _, s, w, state = FirstGraphemeClusterInString(s, state) - width += w - } - return -} diff --git a/vendor/github.com/rivo/uniseg/word.go b/vendor/github.com/rivo/uniseg/word.go deleted file mode 100644 index 34fba7f..0000000 --- a/vendor/github.com/rivo/uniseg/word.go +++ /dev/null @@ -1,89 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// FirstWord returns the first word found in the given byte slice according to -// the rules of [Unicode Standard Annex #29, Word Boundaries]. This function can -// be called continuously to extract all words from a byte slice, as illustrated -// in the example below. -// -// If you don't know the current state, for example when calling the function -// for the first time, you must pass -1. For consecutive calls, pass the state -// and rest slice returned by the previous call. -// -// The "rest" slice is the sub-slice of the original byte slice "b" starting -// after the last byte of the identified word. If the length of the "rest" slice -// is 0, the entire byte slice "b" has been processed. The "word" byte slice is -// the sub-slice of the input slice containing the identified word. -// -// Given an empty byte slice "b", the function returns nil values. -// -// [Unicode Standard Annex #29, Word Boundaries]: http://unicode.org/reports/tr29/#Word_Boundaries -func FirstWord(b []byte, state int) (word, rest []byte, newState int) { - // An empty byte slice returns nothing. - if len(b) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRune(b) - if len(b) <= length { // If we're already past the end, there is nothing else to parse. - return b, nil, wbAny - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionWordBreakState(state, r, b[length:], "") - } - - // Transition until we find a boundary. - var boundary bool - for { - r, l := utf8.DecodeRune(b[length:]) - state, boundary = transitionWordBreakState(state, r, b[length+l:], "") - - if boundary { - return b[:length], b[length:], state - } - - length += l - if len(b) <= length { - return b, nil, wbAny - } - } -} - -// FirstWordInString is like [FirstWord] but its input and outputs are strings. -func FirstWordInString(str string, state int) (word, rest string, newState int) { - // An empty byte slice returns nothing. - if len(str) == 0 { - return - } - - // Extract the first rune. - r, length := utf8.DecodeRuneInString(str) - if len(str) <= length { // If we're already past the end, there is nothing else to parse. - return str, "", wbAny - } - - // If we don't know the state, determine it now. - if state < 0 { - state, _ = transitionWordBreakState(state, r, nil, str[length:]) - } - - // Transition until we find a boundary. - var boundary bool - for { - r, l := utf8.DecodeRuneInString(str[length:]) - state, boundary = transitionWordBreakState(state, r, nil, str[length+l:]) - - if boundary { - return str[:length], str[length:], state - } - - length += l - if len(str) <= length { - return str, "", wbAny - } - } -} diff --git a/vendor/github.com/rivo/uniseg/wordproperties.go b/vendor/github.com/rivo/uniseg/wordproperties.go deleted file mode 100644 index 277ca10..0000000 --- a/vendor/github.com/rivo/uniseg/wordproperties.go +++ /dev/null @@ -1,1883 +0,0 @@ -// Code generated via go generate from gen_properties.go. DO NOT EDIT. - -package uniseg - -// workBreakCodePoints are taken from -// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/WordBreakProperty.txt -// and -// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt -// ("Extended_Pictographic" only) -// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode -// license agreement. -var workBreakCodePoints = [][3]int{ - {0x000A, 0x000A, prLF}, // Cc <control-000A> - {0x000B, 0x000C, prNewline}, // Cc [2] <control-000B>..<control-000C> - {0x000D, 0x000D, prCR}, // Cc <control-000D> - {0x0020, 0x0020, prWSegSpace}, // Zs SPACE - {0x0022, 0x0022, prDoubleQuote}, // Po QUOTATION MARK - {0x0027, 0x0027, prSingleQuote}, // Po APOSTROPHE - {0x002C, 0x002C, prMidNum}, // Po COMMA - {0x002E, 0x002E, prMidNumLet}, // Po FULL STOP - {0x0030, 0x0039, prNumeric}, // Nd [10] DIGIT ZERO..DIGIT NINE - {0x003A, 0x003A, prMidLetter}, // Po COLON - {0x003B, 0x003B, prMidNum}, // Po SEMICOLON - {0x0041, 0x005A, prALetter}, // L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z - {0x005F, 0x005F, prExtendNumLet}, // Pc LOW LINE - {0x0061, 0x007A, prALetter}, // L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z - {0x0085, 0x0085, prNewline}, // Cc <control-0085> - {0x00A9, 0x00A9, prExtendedPictographic}, // E0.6 [1] (©️) copyright - {0x00AA, 0x00AA, prALetter}, // Lo FEMININE ORDINAL INDICATOR - {0x00AD, 0x00AD, prFormat}, // Cf SOFT HYPHEN - {0x00AE, 0x00AE, prExtendedPictographic}, // E0.6 [1] (®️) registered - {0x00B5, 0x00B5, prALetter}, // L& MICRO SIGN - {0x00B7, 0x00B7, prMidLetter}, // Po MIDDLE DOT - {0x00BA, 0x00BA, prALetter}, // Lo MASCULINE ORDINAL INDICATOR - {0x00C0, 0x00D6, prALetter}, // L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS - {0x00D8, 0x00F6, prALetter}, // L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS - {0x00F8, 0x01BA, prALetter}, // L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL - {0x01BB, 0x01BB, prALetter}, // Lo LATIN LETTER TWO WITH STROKE - {0x01BC, 0x01BF, prALetter}, // L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN - {0x01C0, 0x01C3, prALetter}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK - {0x01C4, 0x0293, prALetter}, // L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL - {0x0294, 0x0294, prALetter}, // Lo LATIN LETTER GLOTTAL STOP - {0x0295, 0x02AF, prALetter}, // L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL - {0x02B0, 0x02C1, prALetter}, // Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP - {0x02C2, 0x02C5, prALetter}, // Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD - {0x02C6, 0x02D1, prALetter}, // Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON - {0x02D2, 0x02D7, prALetter}, // Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN - {0x02DE, 0x02DF, prALetter}, // Sk [2] MODIFIER LETTER RHOTIC HOOK..MODIFIER LETTER CROSS ACCENT - {0x02E0, 0x02E4, prALetter}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP - {0x02E5, 0x02EB, prALetter}, // Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK - {0x02EC, 0x02EC, prALetter}, // Lm MODIFIER LETTER VOICING - {0x02ED, 0x02ED, prALetter}, // Sk MODIFIER LETTER UNASPIRATED - {0x02EE, 0x02EE, prALetter}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE - {0x02EF, 0x02FF, prALetter}, // Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW - {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X - {0x0370, 0x0373, prALetter}, // L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI - {0x0374, 0x0374, prALetter}, // Lm GREEK NUMERAL SIGN - {0x0376, 0x0377, prALetter}, // L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA - {0x037A, 0x037A, prALetter}, // Lm GREEK YPOGEGRAMMENI - {0x037B, 0x037D, prALetter}, // L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL - {0x037E, 0x037E, prMidNum}, // Po GREEK QUESTION MARK - {0x037F, 0x037F, prALetter}, // L& GREEK CAPITAL LETTER YOT - {0x0386, 0x0386, prALetter}, // L& GREEK CAPITAL LETTER ALPHA WITH TONOS - {0x0387, 0x0387, prMidLetter}, // Po GREEK ANO TELEIA - {0x0388, 0x038A, prALetter}, // L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS - {0x038C, 0x038C, prALetter}, // L& GREEK CAPITAL LETTER OMICRON WITH TONOS - {0x038E, 0x03A1, prALetter}, // L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO - {0x03A3, 0x03F5, prALetter}, // L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL - {0x03F7, 0x0481, prALetter}, // L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA - {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE - {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN - {0x048A, 0x052F, prALetter}, // L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER - {0x0531, 0x0556, prALetter}, // L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH - {0x0559, 0x0559, prALetter}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING - {0x055A, 0x055C, prALetter}, // Po [3] ARMENIAN APOSTROPHE..ARMENIAN EXCLAMATION MARK - {0x055E, 0x055E, prALetter}, // Po ARMENIAN QUESTION MARK - {0x055F, 0x055F, prMidLetter}, // Po ARMENIAN ABBREVIATION MARK - {0x0560, 0x0588, prALetter}, // L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE - {0x0589, 0x0589, prMidNum}, // Po ARMENIAN FULL STOP - {0x058A, 0x058A, prALetter}, // Pd ARMENIAN HYPHEN - {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG - {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE - {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT - {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT - {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN - {0x05D0, 0x05EA, prHebrewLetter}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV - {0x05EF, 0x05F2, prHebrewLetter}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD - {0x05F3, 0x05F3, prALetter}, // Po HEBREW PUNCTUATION GERESH - {0x05F4, 0x05F4, prMidLetter}, // Po HEBREW PUNCTUATION GERSHAYIM - {0x0600, 0x0605, prFormat}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE - {0x060C, 0x060D, prMidNum}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR - {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA - {0x061C, 0x061C, prFormat}, // Cf ARABIC LETTER MARK - {0x0620, 0x063F, prALetter}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE - {0x0640, 0x0640, prALetter}, // Lm ARABIC TATWEEL - {0x0641, 0x064A, prALetter}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH - {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW - {0x0660, 0x0669, prNumeric}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE - {0x066B, 0x066B, prNumeric}, // Po ARABIC DECIMAL SEPARATOR - {0x066C, 0x066C, prMidNum}, // Po ARABIC THOUSANDS SEPARATOR - {0x066E, 0x066F, prALetter}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF - {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF - {0x0671, 0x06D3, prALetter}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE - {0x06D5, 0x06D5, prALetter}, // Lo ARABIC LETTER AE - {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN - {0x06DD, 0x06DD, prFormat}, // Cf ARABIC END OF AYAH - {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA - {0x06E5, 0x06E6, prALetter}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH - {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON - {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM - {0x06EE, 0x06EF, prALetter}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V - {0x06F0, 0x06F9, prNumeric}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE - {0x06FA, 0x06FC, prALetter}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW - {0x06FF, 0x06FF, prALetter}, // Lo ARABIC LETTER HEH WITH INVERTED V - {0x070F, 0x070F, prFormat}, // Cf SYRIAC ABBREVIATION MARK - {0x0710, 0x0710, prALetter}, // Lo SYRIAC LETTER ALAPH - {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH - {0x0712, 0x072F, prALetter}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH - {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH - {0x074D, 0x07A5, prALetter}, // Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU - {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN - {0x07B1, 0x07B1, prALetter}, // Lo THAANA LETTER NAA - {0x07C0, 0x07C9, prNumeric}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE - {0x07CA, 0x07EA, prALetter}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA - {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE - {0x07F4, 0x07F5, prALetter}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE - {0x07F8, 0x07F8, prMidNum}, // Po NKO COMMA - {0x07FA, 0x07FA, prALetter}, // Lm NKO LAJANYALAN - {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN - {0x0800, 0x0815, prALetter}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF - {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH - {0x081A, 0x081A, prALetter}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT - {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A - {0x0824, 0x0824, prALetter}, // Lm SAMARITAN MODIFIER LETTER SHORT A - {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U - {0x0828, 0x0828, prALetter}, // Lm SAMARITAN MODIFIER LETTER I - {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - {0x0840, 0x0858, prALetter}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - {0x0860, 0x086A, prALetter}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA - {0x0870, 0x0887, prALetter}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT - {0x0889, 0x088E, prALetter}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL - {0x0890, 0x0891, prFormat}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE - {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA - {0x08A0, 0x08C8, prALetter}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF - {0x08C9, 0x08C9, prALetter}, // Lm ARABIC SMALL FARSI YEH - {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA - {0x08E2, 0x08E2, prFormat}, // Cf ARABIC DISPUTED END OF AYAH - {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - {0x0903, 0x0903, prExtend}, // Mc DEVANAGARI SIGN VISARGA - {0x0904, 0x0939, prALetter}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE - {0x093B, 0x093B, prExtend}, // Mc DEVANAGARI VOWEL SIGN OOE - {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA - {0x093D, 0x093D, prALetter}, // Lo DEVANAGARI SIGN AVAGRAHA - {0x093E, 0x0940, prExtend}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II - {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI - {0x0949, 0x094C, prExtend}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU - {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA - {0x094E, 0x094F, prExtend}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW - {0x0950, 0x0950, prALetter}, // Lo DEVANAGARI OM - {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE - {0x0958, 0x0961, prALetter}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL - {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL - {0x0966, 0x096F, prNumeric}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE - {0x0971, 0x0971, prALetter}, // Lm DEVANAGARI SIGN HIGH SPACING DOT - {0x0972, 0x0980, prALetter}, // Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI - {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU - {0x0982, 0x0983, prExtend}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA - {0x0985, 0x098C, prALetter}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L - {0x098F, 0x0990, prALetter}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI - {0x0993, 0x09A8, prALetter}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA - {0x09AA, 0x09B0, prALetter}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA - {0x09B2, 0x09B2, prALetter}, // Lo BENGALI LETTER LA - {0x09B6, 0x09B9, prALetter}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA - {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA - {0x09BD, 0x09BD, prALetter}, // Lo BENGALI SIGN AVAGRAHA - {0x09BE, 0x09C0, prExtend}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II - {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR - {0x09C7, 0x09C8, prExtend}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI - {0x09CB, 0x09CC, prExtend}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU - {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA - {0x09CE, 0x09CE, prALetter}, // Lo BENGALI LETTER KHANDA TA - {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK - {0x09DC, 0x09DD, prALetter}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA - {0x09DF, 0x09E1, prALetter}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL - {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL - {0x09E6, 0x09EF, prNumeric}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE - {0x09F0, 0x09F1, prALetter}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL - {0x09FC, 0x09FC, prALetter}, // Lo BENGALI LETTER VEDIC ANUSVARA - {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK - {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI - {0x0A03, 0x0A03, prExtend}, // Mc GURMUKHI SIGN VISARGA - {0x0A05, 0x0A0A, prALetter}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU - {0x0A0F, 0x0A10, prALetter}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI - {0x0A13, 0x0A28, prALetter}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA - {0x0A2A, 0x0A30, prALetter}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA - {0x0A32, 0x0A33, prALetter}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA - {0x0A35, 0x0A36, prALetter}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA - {0x0A38, 0x0A39, prALetter}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA - {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA - {0x0A3E, 0x0A40, prExtend}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II - {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU - {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI - {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA - {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT - {0x0A59, 0x0A5C, prALetter}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA - {0x0A5E, 0x0A5E, prALetter}, // Lo GURMUKHI LETTER FA - {0x0A66, 0x0A6F, prNumeric}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE - {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK - {0x0A72, 0x0A74, prALetter}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR - {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH - {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA - {0x0A83, 0x0A83, prExtend}, // Mc GUJARATI SIGN VISARGA - {0x0A85, 0x0A8D, prALetter}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E - {0x0A8F, 0x0A91, prALetter}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O - {0x0A93, 0x0AA8, prALetter}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA - {0x0AAA, 0x0AB0, prALetter}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA - {0x0AB2, 0x0AB3, prALetter}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA - {0x0AB5, 0x0AB9, prALetter}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA - {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA - {0x0ABD, 0x0ABD, prALetter}, // Lo GUJARATI SIGN AVAGRAHA - {0x0ABE, 0x0AC0, prExtend}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II - {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E - {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI - {0x0AC9, 0x0AC9, prExtend}, // Mc GUJARATI VOWEL SIGN CANDRA O - {0x0ACB, 0x0ACC, prExtend}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU - {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA - {0x0AD0, 0x0AD0, prALetter}, // Lo GUJARATI OM - {0x0AE0, 0x0AE1, prALetter}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL - {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL - {0x0AE6, 0x0AEF, prNumeric}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE - {0x0AF9, 0x0AF9, prALetter}, // Lo GUJARATI LETTER ZHA - {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE - {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU - {0x0B02, 0x0B03, prExtend}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA - {0x0B05, 0x0B0C, prALetter}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L - {0x0B0F, 0x0B10, prALetter}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI - {0x0B13, 0x0B28, prALetter}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA - {0x0B2A, 0x0B30, prALetter}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA - {0x0B32, 0x0B33, prALetter}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA - {0x0B35, 0x0B39, prALetter}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA - {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA - {0x0B3D, 0x0B3D, prALetter}, // Lo ORIYA SIGN AVAGRAHA - {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA - {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I - {0x0B40, 0x0B40, prExtend}, // Mc ORIYA VOWEL SIGN II - {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR - {0x0B47, 0x0B48, prExtend}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI - {0x0B4B, 0x0B4C, prExtend}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU - {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA - {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK - {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK - {0x0B5C, 0x0B5D, prALetter}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA - {0x0B5F, 0x0B61, prALetter}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL - {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL - {0x0B66, 0x0B6F, prNumeric}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE - {0x0B71, 0x0B71, prALetter}, // Lo ORIYA LETTER WA - {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA - {0x0B83, 0x0B83, prALetter}, // Lo TAMIL SIGN VISARGA - {0x0B85, 0x0B8A, prALetter}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU - {0x0B8E, 0x0B90, prALetter}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI - {0x0B92, 0x0B95, prALetter}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA - {0x0B99, 0x0B9A, prALetter}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA - {0x0B9C, 0x0B9C, prALetter}, // Lo TAMIL LETTER JA - {0x0B9E, 0x0B9F, prALetter}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA - {0x0BA3, 0x0BA4, prALetter}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA - {0x0BA8, 0x0BAA, prALetter}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA - {0x0BAE, 0x0BB9, prALetter}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA - {0x0BBE, 0x0BBF, prExtend}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I - {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II - {0x0BC1, 0x0BC2, prExtend}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU - {0x0BC6, 0x0BC8, prExtend}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI - {0x0BCA, 0x0BCC, prExtend}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU - {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA - {0x0BD0, 0x0BD0, prALetter}, // Lo TAMIL OM - {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK - {0x0BE6, 0x0BEF, prNumeric}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE - {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE - {0x0C01, 0x0C03, prExtend}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA - {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE - {0x0C05, 0x0C0C, prALetter}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L - {0x0C0E, 0x0C10, prALetter}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI - {0x0C12, 0x0C28, prALetter}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA - {0x0C2A, 0x0C39, prALetter}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA - {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA - {0x0C3D, 0x0C3D, prALetter}, // Lo TELUGU SIGN AVAGRAHA - {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II - {0x0C41, 0x0C44, prExtend}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR - {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI - {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA - {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK - {0x0C58, 0x0C5A, prALetter}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - {0x0C5D, 0x0C5D, prALetter}, // Lo TELUGU LETTER NAKAARA POLLU - {0x0C60, 0x0C61, prALetter}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - {0x0C66, 0x0C6F, prNumeric}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE - {0x0C80, 0x0C80, prALetter}, // Lo KANNADA SIGN SPACING CANDRABINDU - {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU - {0x0C82, 0x0C83, prExtend}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - {0x0C85, 0x0C8C, prALetter}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - {0x0C8E, 0x0C90, prALetter}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI - {0x0C92, 0x0CA8, prALetter}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA - {0x0CAA, 0x0CB3, prALetter}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA - {0x0CB5, 0x0CB9, prALetter}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA - {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA - {0x0CBD, 0x0CBD, prALetter}, // Lo KANNADA SIGN AVAGRAHA - {0x0CBE, 0x0CBE, prExtend}, // Mc KANNADA VOWEL SIGN AA - {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I - {0x0CC0, 0x0CC4, prExtend}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR - {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E - {0x0CC7, 0x0CC8, prExtend}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI - {0x0CCA, 0x0CCB, prExtend}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO - {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA - {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK - {0x0CDD, 0x0CDE, prALetter}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA - {0x0CE0, 0x0CE1, prALetter}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL - {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL - {0x0CE6, 0x0CEF, prNumeric}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - {0x0CF1, 0x0CF2, prALetter}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA - {0x0CF3, 0x0CF3, prExtend}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT - {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU - {0x0D02, 0x0D03, prExtend}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA - {0x0D04, 0x0D0C, prALetter}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L - {0x0D0E, 0x0D10, prALetter}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI - {0x0D12, 0x0D3A, prALetter}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA - {0x0D3D, 0x0D3D, prALetter}, // Lo MALAYALAM SIGN AVAGRAHA - {0x0D3E, 0x0D40, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II - {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR - {0x0D46, 0x0D48, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - {0x0D4A, 0x0D4C, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA - {0x0D4E, 0x0D4E, prALetter}, // Lo MALAYALAM LETTER DOT REPH - {0x0D54, 0x0D56, prALetter}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK - {0x0D5F, 0x0D61, prALetter}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL - {0x0D66, 0x0D6F, prNumeric}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE - {0x0D7A, 0x0D7F, prALetter}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU - {0x0D82, 0x0D83, prExtend}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA - {0x0D85, 0x0D96, prALetter}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA - {0x0D9A, 0x0DB1, prALetter}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA - {0x0DB3, 0x0DBB, prALetter}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA - {0x0DBD, 0x0DBD, prALetter}, // Lo SINHALA LETTER DANTAJA LAYANNA - {0x0DC0, 0x0DC6, prALetter}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA - {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA - {0x0DCF, 0x0DD1, prExtend}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA - {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA - {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA - {0x0DD8, 0x0DDF, prExtend}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA - {0x0DE6, 0x0DEF, prNumeric}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE - {0x0DF2, 0x0DF3, prExtend}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA - {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT - {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU - {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN - {0x0E50, 0x0E59, prNumeric}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE - {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN - {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO - {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN - {0x0ED0, 0x0ED9, prNumeric}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE - {0x0F00, 0x0F00, prALetter}, // Lo TIBETAN SYLLABLE OM - {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS - {0x0F20, 0x0F29, prNumeric}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE - {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA - {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS - {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU - {0x0F3E, 0x0F3F, prExtend}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES - {0x0F40, 0x0F47, prALetter}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA - {0x0F49, 0x0F6C, prALetter}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA - {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO - {0x0F7F, 0x0F7F, prExtend}, // Mc TIBETAN SIGN RNAM BCAD - {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA - {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS - {0x0F88, 0x0F8C, prALetter}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN - {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA - {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA - {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN - {0x102B, 0x102C, prExtend}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA - {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU - {0x1031, 0x1031, prExtend}, // Mc MYANMAR VOWEL SIGN E - {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW - {0x1038, 0x1038, prExtend}, // Mc MYANMAR SIGN VISARGA - {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT - {0x103B, 0x103C, prExtend}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA - {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA - {0x1040, 0x1049, prNumeric}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE - {0x1056, 0x1057, prExtend}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR - {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA - {0x1062, 0x1064, prExtend}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO - {0x1067, 0x106D, prExtend}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 - {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE - {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA - {0x1083, 0x1084, prExtend}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E - {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y - {0x1087, 0x108C, prExtend}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 - {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE - {0x108F, 0x108F, prExtend}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 - {0x1090, 0x1099, prNumeric}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE - {0x109A, 0x109C, prExtend}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A - {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI - {0x10A0, 0x10C5, prALetter}, // L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE - {0x10C7, 0x10C7, prALetter}, // L& GEORGIAN CAPITAL LETTER YN - {0x10CD, 0x10CD, prALetter}, // L& GEORGIAN CAPITAL LETTER AEN - {0x10D0, 0x10FA, prALetter}, // L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN - {0x10FC, 0x10FC, prALetter}, // Lm MODIFIER LETTER GEORGIAN NAR - {0x10FD, 0x10FF, prALetter}, // L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN - {0x1100, 0x1248, prALetter}, // Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA - {0x124A, 0x124D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE - {0x1250, 0x1256, prALetter}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO - {0x1258, 0x1258, prALetter}, // Lo ETHIOPIC SYLLABLE QHWA - {0x125A, 0x125D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE - {0x1260, 0x1288, prALetter}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA - {0x128A, 0x128D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE - {0x1290, 0x12B0, prALetter}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA - {0x12B2, 0x12B5, prALetter}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE - {0x12B8, 0x12BE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO - {0x12C0, 0x12C0, prALetter}, // Lo ETHIOPIC SYLLABLE KXWA - {0x12C2, 0x12C5, prALetter}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE - {0x12C8, 0x12D6, prALetter}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O - {0x12D8, 0x1310, prALetter}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA - {0x1312, 0x1315, prALetter}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE - {0x1318, 0x135A, prALetter}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA - {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK - {0x1380, 0x138F, prALetter}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE - {0x13A0, 0x13F5, prALetter}, // L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - {0x13F8, 0x13FD, prALetter}, // L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV - {0x1401, 0x166C, prALetter}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA - {0x166F, 0x167F, prALetter}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W - {0x1680, 0x1680, prWSegSpace}, // Zs OGHAM SPACE MARK - {0x1681, 0x169A, prALetter}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH - {0x16A0, 0x16EA, prALetter}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X - {0x16EE, 0x16F0, prALetter}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - {0x16F1, 0x16F8, prALetter}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC - {0x1700, 0x1711, prALetter}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA - {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - {0x1715, 0x1715, prExtend}, // Mc TAGALOG SIGN PAMUDPOD - {0x171F, 0x1731, prALetter}, // Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA - {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U - {0x1734, 0x1734, prExtend}, // Mc HANUNOO SIGN PAMUDPOD - {0x1740, 0x1751, prALetter}, // Lo [18] BUHID LETTER A..BUHID LETTER HA - {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - {0x1760, 0x176C, prALetter}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA - {0x176E, 0x1770, prALetter}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA - {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA - {0x17B6, 0x17B6, prExtend}, // Mc KHMER VOWEL SIGN AA - {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA - {0x17BE, 0x17C5, prExtend}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU - {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT - {0x17C7, 0x17C8, prExtend}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU - {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT - {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN - {0x17E0, 0x17E9, prNumeric}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE - {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - {0x180E, 0x180E, prFormat}, // Cf MONGOLIAN VOWEL SEPARATOR - {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR - {0x1810, 0x1819, prNumeric}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE - {0x1820, 0x1842, prALetter}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - {0x1843, 0x1843, prALetter}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - {0x1844, 0x1878, prALetter}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS - {0x1880, 0x1884, prALetter}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA - {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - {0x1887, 0x18A8, prALetter}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA - {0x18AA, 0x18AA, prALetter}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - {0x18B0, 0x18F5, prALetter}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - {0x1900, 0x191E, prALetter}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA - {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - {0x1923, 0x1926, prExtend}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU - {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O - {0x1929, 0x192B, prExtend}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA - {0x1930, 0x1931, prExtend}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA - {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA - {0x1933, 0x1938, prExtend}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA - {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I - {0x1946, 0x194F, prNumeric}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - {0x19D0, 0x19D9, prNumeric}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE - {0x1A00, 0x1A16, prALetter}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA - {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U - {0x1A19, 0x1A1A, prExtend}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O - {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE - {0x1A55, 0x1A55, prExtend}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA - {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA - {0x1A57, 0x1A57, prExtend}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI - {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA - {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT - {0x1A61, 0x1A61, prExtend}, // Mc TAI THAM VOWEL SIGN A - {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT - {0x1A63, 0x1A64, prExtend}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA - {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW - {0x1A6D, 0x1A72, prExtend}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI - {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN - {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT - {0x1A80, 0x1A89, prNumeric}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE - {0x1A90, 0x1A99, prNumeric}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE - {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW - {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY - {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T - {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG - {0x1B04, 0x1B04, prExtend}, // Mc BALINESE SIGN BISAH - {0x1B05, 0x1B33, prALetter}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA - {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN - {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG - {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA - {0x1B3B, 0x1B3B, prExtend}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG - {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA - {0x1B3D, 0x1B41, prExtend}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG - {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET - {0x1B43, 0x1B44, prExtend}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG - {0x1B45, 0x1B4C, prALetter}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA - {0x1B50, 0x1B59, prNumeric}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE - {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG - {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR - {0x1B82, 0x1B82, prExtend}, // Mc SUNDANESE SIGN PANGWISAD - {0x1B83, 0x1BA0, prALetter}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA - {0x1BA1, 0x1BA1, prExtend}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL - {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU - {0x1BA6, 0x1BA7, prExtend}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG - {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG - {0x1BAA, 0x1BAA, prExtend}, // Mc SUNDANESE SIGN PAMAAEH - {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA - {0x1BAE, 0x1BAF, prALetter}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA - {0x1BB0, 0x1BB9, prNumeric}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE - {0x1BBA, 0x1BE5, prALetter}, // Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U - {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI - {0x1BE7, 0x1BE7, prExtend}, // Mc BATAK VOWEL SIGN E - {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE - {0x1BEA, 0x1BEC, prExtend}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O - {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O - {0x1BEE, 0x1BEE, prExtend}, // Mc BATAK VOWEL SIGN U - {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H - {0x1BF2, 0x1BF3, prExtend}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN - {0x1C00, 0x1C23, prALetter}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A - {0x1C24, 0x1C2B, prExtend}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU - {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T - {0x1C34, 0x1C35, prExtend}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG - {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA - {0x1C40, 0x1C49, prNumeric}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE - {0x1C4D, 0x1C4F, prALetter}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - {0x1C50, 0x1C59, prNumeric}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - {0x1C5A, 0x1C77, prALetter}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - {0x1C78, 0x1C7D, prALetter}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD - {0x1C80, 0x1C88, prALetter}, // L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - {0x1C90, 0x1CBA, prALetter}, // L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN - {0x1CBD, 0x1CBF, prALetter}, // L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN - {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - {0x1CE1, 0x1CE1, prExtend}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA - {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL - {0x1CE9, 0x1CEC, prALetter}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK - {0x1CEE, 0x1CF3, prALetter}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA - {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE - {0x1CF5, 0x1CF6, prALetter}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA - {0x1CF7, 0x1CF7, prExtend}, // Mc VEDIC SIGN ATIKRAMA - {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE - {0x1CFA, 0x1CFA, prALetter}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA - {0x1D00, 0x1D2B, prALetter}, // L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - {0x1D2C, 0x1D6A, prALetter}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - {0x1D6B, 0x1D77, prALetter}, // L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G - {0x1D78, 0x1D78, prALetter}, // Lm MODIFIER LETTER CYRILLIC EN - {0x1D79, 0x1D9A, prALetter}, // L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - {0x1D9B, 0x1DBF, prALetter}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - {0x1E00, 0x1F15, prALetter}, // L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - {0x1F18, 0x1F1D, prALetter}, // L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - {0x1F20, 0x1F45, prALetter}, // L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA - {0x1F48, 0x1F4D, prALetter}, // L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA - {0x1F50, 0x1F57, prALetter}, // L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI - {0x1F59, 0x1F59, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA - {0x1F5B, 0x1F5B, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA - {0x1F5D, 0x1F5D, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA - {0x1F5F, 0x1F7D, prALetter}, // L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA - {0x1F80, 0x1FB4, prALetter}, // L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI - {0x1FB6, 0x1FBC, prALetter}, // L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI - {0x1FBE, 0x1FBE, prALetter}, // L& GREEK PROSGEGRAMMENI - {0x1FC2, 0x1FC4, prALetter}, // L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI - {0x1FC6, 0x1FCC, prALetter}, // L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI - {0x1FD0, 0x1FD3, prALetter}, // L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA - {0x1FD6, 0x1FDB, prALetter}, // L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA - {0x1FE0, 0x1FEC, prALetter}, // L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA - {0x1FF2, 0x1FF4, prALetter}, // L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - {0x1FF6, 0x1FFC, prALetter}, // L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - {0x2000, 0x2006, prWSegSpace}, // Zs [7] EN QUAD..SIX-PER-EM SPACE - {0x2008, 0x200A, prWSegSpace}, // Zs [3] PUNCTUATION SPACE..HAIR SPACE - {0x200C, 0x200C, prExtend}, // Cf ZERO WIDTH NON-JOINER - {0x200D, 0x200D, prZWJ}, // Cf ZERO WIDTH JOINER - {0x200E, 0x200F, prFormat}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK - {0x2018, 0x2018, prMidNumLet}, // Pi LEFT SINGLE QUOTATION MARK - {0x2019, 0x2019, prMidNumLet}, // Pf RIGHT SINGLE QUOTATION MARK - {0x2024, 0x2024, prMidNumLet}, // Po ONE DOT LEADER - {0x2027, 0x2027, prMidLetter}, // Po HYPHENATION POINT - {0x2028, 0x2028, prNewline}, // Zl LINE SEPARATOR - {0x2029, 0x2029, prNewline}, // Zp PARAGRAPH SEPARATOR - {0x202A, 0x202E, prFormat}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - {0x202F, 0x202F, prExtendNumLet}, // Zs NARROW NO-BREAK SPACE - {0x203C, 0x203C, prExtendedPictographic}, // E0.6 [1] (‼️) double exclamation mark - {0x203F, 0x2040, prExtendNumLet}, // Pc [2] UNDERTIE..CHARACTER TIE - {0x2044, 0x2044, prMidNum}, // Sm FRACTION SLASH - {0x2049, 0x2049, prExtendedPictographic}, // E0.6 [1] (⁉️) exclamation question mark - {0x2054, 0x2054, prExtendNumLet}, // Pc INVERTED UNDERTIE - {0x205F, 0x205F, prWSegSpace}, // Zs MEDIUM MATHEMATICAL SPACE - {0x2060, 0x2064, prFormat}, // Cf [5] WORD JOINER..INVISIBLE PLUS - {0x2066, 0x206F, prFormat}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES - {0x2071, 0x2071, prALetter}, // Lm SUPERSCRIPT LATIN SMALL LETTER I - {0x207F, 0x207F, prALetter}, // Lm SUPERSCRIPT LATIN SMALL LETTER N - {0x2090, 0x209C, prALetter}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T - {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE - {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH - {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE - {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE - {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE - {0x2102, 0x2102, prALetter}, // L& DOUBLE-STRUCK CAPITAL C - {0x2107, 0x2107, prALetter}, // L& EULER CONSTANT - {0x210A, 0x2113, prALetter}, // L& [10] SCRIPT SMALL G..SCRIPT SMALL L - {0x2115, 0x2115, prALetter}, // L& DOUBLE-STRUCK CAPITAL N - {0x2119, 0x211D, prALetter}, // L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R - {0x2122, 0x2122, prExtendedPictographic}, // E0.6 [1] (™️) trade mark - {0x2124, 0x2124, prALetter}, // L& DOUBLE-STRUCK CAPITAL Z - {0x2126, 0x2126, prALetter}, // L& OHM SIGN - {0x2128, 0x2128, prALetter}, // L& BLACK-LETTER CAPITAL Z - {0x212A, 0x212D, prALetter}, // L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C - {0x212F, 0x2134, prALetter}, // L& [6] SCRIPT SMALL E..SCRIPT SMALL O - {0x2135, 0x2138, prALetter}, // Lo [4] ALEF SYMBOL..DALET SYMBOL - {0x2139, 0x2139, prExtendedPictographic}, // E0.6 [1] (ℹ️) information - {0x2139, 0x2139, prALetter}, // L& INFORMATION SOURCE - {0x213C, 0x213F, prALetter}, // L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI - {0x2145, 0x2149, prALetter}, // L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J - {0x214E, 0x214E, prALetter}, // L& TURNED SMALL F - {0x2160, 0x2182, prALetter}, // Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND - {0x2183, 0x2184, prALetter}, // L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C - {0x2185, 0x2188, prALetter}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND - {0x2194, 0x2199, prExtendedPictographic}, // E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow - {0x21A9, 0x21AA, prExtendedPictographic}, // E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right - {0x231A, 0x231B, prExtendedPictographic}, // E0.6 [2] (⌚..⌛) watch..hourglass done - {0x2328, 0x2328, prExtendedPictographic}, // E1.0 [1] (⌨️) keyboard - {0x2388, 0x2388, prExtendedPictographic}, // E0.0 [1] (⎈) HELM SYMBOL - {0x23CF, 0x23CF, prExtendedPictographic}, // E1.0 [1] (⏏️) eject button - {0x23E9, 0x23EC, prExtendedPictographic}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button - {0x23ED, 0x23EE, prExtendedPictographic}, // E0.7 [2] (⏭️..⏮️) next track button..last track button - {0x23EF, 0x23EF, prExtendedPictographic}, // E1.0 [1] (⏯️) play or pause button - {0x23F0, 0x23F0, prExtendedPictographic}, // E0.6 [1] (⏰) alarm clock - {0x23F1, 0x23F2, prExtendedPictographic}, // E1.0 [2] (⏱️..⏲️) stopwatch..timer clock - {0x23F3, 0x23F3, prExtendedPictographic}, // E0.6 [1] (⏳) hourglass not done - {0x23F8, 0x23FA, prExtendedPictographic}, // E0.7 [3] (⏸️..⏺️) pause button..record button - {0x24B6, 0x24E9, prALetter}, // So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z - {0x24C2, 0x24C2, prExtendedPictographic}, // E0.6 [1] (Ⓜ️) circled M - {0x25AA, 0x25AB, prExtendedPictographic}, // E0.6 [2] (▪️..▫️) black small square..white small square - {0x25B6, 0x25B6, prExtendedPictographic}, // E0.6 [1] (▶️) play button - {0x25C0, 0x25C0, prExtendedPictographic}, // E0.6 [1] (◀️) reverse button - {0x25FB, 0x25FE, prExtendedPictographic}, // E0.6 [4] (◻️..◾) white medium square..black medium-small square - {0x2600, 0x2601, prExtendedPictographic}, // E0.6 [2] (☀️..☁️) sun..cloud - {0x2602, 0x2603, prExtendedPictographic}, // E0.7 [2] (☂️..☃️) umbrella..snowman - {0x2604, 0x2604, prExtendedPictographic}, // E1.0 [1] (☄️) comet - {0x2605, 0x2605, prExtendedPictographic}, // E0.0 [1] (★) BLACK STAR - {0x2607, 0x260D, prExtendedPictographic}, // E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION - {0x260E, 0x260E, prExtendedPictographic}, // E0.6 [1] (☎️) telephone - {0x260F, 0x2610, prExtendedPictographic}, // E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX - {0x2611, 0x2611, prExtendedPictographic}, // E0.6 [1] (☑️) check box with check - {0x2612, 0x2612, prExtendedPictographic}, // E0.0 [1] (☒) BALLOT BOX WITH X - {0x2614, 0x2615, prExtendedPictographic}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage - {0x2616, 0x2617, prExtendedPictographic}, // E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE - {0x2618, 0x2618, prExtendedPictographic}, // E1.0 [1] (☘️) shamrock - {0x2619, 0x261C, prExtendedPictographic}, // E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX - {0x261D, 0x261D, prExtendedPictographic}, // E0.6 [1] (☝️) index pointing up - {0x261E, 0x261F, prExtendedPictographic}, // E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX - {0x2620, 0x2620, prExtendedPictographic}, // E1.0 [1] (☠️) skull and crossbones - {0x2621, 0x2621, prExtendedPictographic}, // E0.0 [1] (☡) CAUTION SIGN - {0x2622, 0x2623, prExtendedPictographic}, // E1.0 [2] (☢️..☣️) radioactive..biohazard - {0x2624, 0x2625, prExtendedPictographic}, // E0.0 [2] (☤..☥) CADUCEUS..ANKH - {0x2626, 0x2626, prExtendedPictographic}, // E1.0 [1] (☦️) orthodox cross - {0x2627, 0x2629, prExtendedPictographic}, // E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM - {0x262A, 0x262A, prExtendedPictographic}, // E0.7 [1] (☪️) star and crescent - {0x262B, 0x262D, prExtendedPictographic}, // E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE - {0x262E, 0x262E, prExtendedPictographic}, // E1.0 [1] (☮️) peace symbol - {0x262F, 0x262F, prExtendedPictographic}, // E0.7 [1] (☯️) yin yang - {0x2630, 0x2637, prExtendedPictographic}, // E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH - {0x2638, 0x2639, prExtendedPictographic}, // E0.7 [2] (☸️..☹️) wheel of dharma..frowning face - {0x263A, 0x263A, prExtendedPictographic}, // E0.6 [1] (☺️) smiling face - {0x263B, 0x263F, prExtendedPictographic}, // E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY - {0x2640, 0x2640, prExtendedPictographic}, // E4.0 [1] (♀️) female sign - {0x2641, 0x2641, prExtendedPictographic}, // E0.0 [1] (♁) EARTH - {0x2642, 0x2642, prExtendedPictographic}, // E4.0 [1] (♂️) male sign - {0x2643, 0x2647, prExtendedPictographic}, // E0.0 [5] (♃..♇) JUPITER..PLUTO - {0x2648, 0x2653, prExtendedPictographic}, // E0.6 [12] (♈..♓) Aries..Pisces - {0x2654, 0x265E, prExtendedPictographic}, // E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT - {0x265F, 0x265F, prExtendedPictographic}, // E11.0 [1] (♟️) chess pawn - {0x2660, 0x2660, prExtendedPictographic}, // E0.6 [1] (♠️) spade suit - {0x2661, 0x2662, prExtendedPictographic}, // E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT - {0x2663, 0x2663, prExtendedPictographic}, // E0.6 [1] (♣️) club suit - {0x2664, 0x2664, prExtendedPictographic}, // E0.0 [1] (♤) WHITE SPADE SUIT - {0x2665, 0x2666, prExtendedPictographic}, // E0.6 [2] (♥️..♦️) heart suit..diamond suit - {0x2667, 0x2667, prExtendedPictographic}, // E0.0 [1] (♧) WHITE CLUB SUIT - {0x2668, 0x2668, prExtendedPictographic}, // E0.6 [1] (♨️) hot springs - {0x2669, 0x267A, prExtendedPictographic}, // E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS - {0x267B, 0x267B, prExtendedPictographic}, // E0.6 [1] (♻️) recycling symbol - {0x267C, 0x267D, prExtendedPictographic}, // E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL - {0x267E, 0x267E, prExtendedPictographic}, // E11.0 [1] (♾️) infinity - {0x267F, 0x267F, prExtendedPictographic}, // E0.6 [1] (♿) wheelchair symbol - {0x2680, 0x2685, prExtendedPictographic}, // E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 - {0x2690, 0x2691, prExtendedPictographic}, // E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG - {0x2692, 0x2692, prExtendedPictographic}, // E1.0 [1] (⚒️) hammer and pick - {0x2693, 0x2693, prExtendedPictographic}, // E0.6 [1] (⚓) anchor - {0x2694, 0x2694, prExtendedPictographic}, // E1.0 [1] (⚔️) crossed swords - {0x2695, 0x2695, prExtendedPictographic}, // E4.0 [1] (⚕️) medical symbol - {0x2696, 0x2697, prExtendedPictographic}, // E1.0 [2] (⚖️..⚗️) balance scale..alembic - {0x2698, 0x2698, prExtendedPictographic}, // E0.0 [1] (⚘) FLOWER - {0x2699, 0x2699, prExtendedPictographic}, // E1.0 [1] (⚙️) gear - {0x269A, 0x269A, prExtendedPictographic}, // E0.0 [1] (⚚) STAFF OF HERMES - {0x269B, 0x269C, prExtendedPictographic}, // E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis - {0x269D, 0x269F, prExtendedPictographic}, // E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT - {0x26A0, 0x26A1, prExtendedPictographic}, // E0.6 [2] (⚠️..⚡) warning..high voltage - {0x26A2, 0x26A6, prExtendedPictographic}, // E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN - {0x26A7, 0x26A7, prExtendedPictographic}, // E13.0 [1] (⚧️) transgender symbol - {0x26A8, 0x26A9, prExtendedPictographic}, // E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN - {0x26AA, 0x26AB, prExtendedPictographic}, // E0.6 [2] (⚪..⚫) white circle..black circle - {0x26AC, 0x26AF, prExtendedPictographic}, // E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL - {0x26B0, 0x26B1, prExtendedPictographic}, // E1.0 [2] (⚰️..⚱️) coffin..funeral urn - {0x26B2, 0x26BC, prExtendedPictographic}, // E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE - {0x26BD, 0x26BE, prExtendedPictographic}, // E0.6 [2] (⚽..⚾) soccer ball..baseball - {0x26BF, 0x26C3, prExtendedPictographic}, // E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING - {0x26C4, 0x26C5, prExtendedPictographic}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud - {0x26C6, 0x26C7, prExtendedPictographic}, // E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN - {0x26C8, 0x26C8, prExtendedPictographic}, // E0.7 [1] (⛈️) cloud with lightning and rain - {0x26C9, 0x26CD, prExtendedPictographic}, // E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR - {0x26CE, 0x26CE, prExtendedPictographic}, // E0.6 [1] (⛎) Ophiuchus - {0x26CF, 0x26CF, prExtendedPictographic}, // E0.7 [1] (⛏️) pick - {0x26D0, 0x26D0, prExtendedPictographic}, // E0.0 [1] (⛐) CAR SLIDING - {0x26D1, 0x26D1, prExtendedPictographic}, // E0.7 [1] (⛑️) rescue worker’s helmet - {0x26D2, 0x26D2, prExtendedPictographic}, // E0.0 [1] (⛒) CIRCLED CROSSING LANES - {0x26D3, 0x26D3, prExtendedPictographic}, // E0.7 [1] (⛓️) chains - {0x26D4, 0x26D4, prExtendedPictographic}, // E0.6 [1] (⛔) no entry - {0x26D5, 0x26E8, prExtendedPictographic}, // E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD - {0x26E9, 0x26E9, prExtendedPictographic}, // E0.7 [1] (⛩️) shinto shrine - {0x26EA, 0x26EA, prExtendedPictographic}, // E0.6 [1] (⛪) church - {0x26EB, 0x26EF, prExtendedPictographic}, // E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE - {0x26F0, 0x26F1, prExtendedPictographic}, // E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground - {0x26F2, 0x26F3, prExtendedPictographic}, // E0.6 [2] (⛲..⛳) fountain..flag in hole - {0x26F4, 0x26F4, prExtendedPictographic}, // E0.7 [1] (⛴️) ferry - {0x26F5, 0x26F5, prExtendedPictographic}, // E0.6 [1] (⛵) sailboat - {0x26F6, 0x26F6, prExtendedPictographic}, // E0.0 [1] (⛶) SQUARE FOUR CORNERS - {0x26F7, 0x26F9, prExtendedPictographic}, // E0.7 [3] (⛷️..⛹️) skier..person bouncing ball - {0x26FA, 0x26FA, prExtendedPictographic}, // E0.6 [1] (⛺) tent - {0x26FB, 0x26FC, prExtendedPictographic}, // E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL - {0x26FD, 0x26FD, prExtendedPictographic}, // E0.6 [1] (⛽) fuel pump - {0x26FE, 0x2701, prExtendedPictographic}, // E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS - {0x2702, 0x2702, prExtendedPictographic}, // E0.6 [1] (✂️) scissors - {0x2703, 0x2704, prExtendedPictographic}, // E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS - {0x2705, 0x2705, prExtendedPictographic}, // E0.6 [1] (✅) check mark button - {0x2708, 0x270C, prExtendedPictographic}, // E0.6 [5] (✈️..✌️) airplane..victory hand - {0x270D, 0x270D, prExtendedPictographic}, // E0.7 [1] (✍️) writing hand - {0x270E, 0x270E, prExtendedPictographic}, // E0.0 [1] (✎) LOWER RIGHT PENCIL - {0x270F, 0x270F, prExtendedPictographic}, // E0.6 [1] (✏️) pencil - {0x2710, 0x2711, prExtendedPictographic}, // E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB - {0x2712, 0x2712, prExtendedPictographic}, // E0.6 [1] (✒️) black nib - {0x2714, 0x2714, prExtendedPictographic}, // E0.6 [1] (✔️) check mark - {0x2716, 0x2716, prExtendedPictographic}, // E0.6 [1] (✖️) multiply - {0x271D, 0x271D, prExtendedPictographic}, // E0.7 [1] (✝️) latin cross - {0x2721, 0x2721, prExtendedPictographic}, // E0.7 [1] (✡️) star of David - {0x2728, 0x2728, prExtendedPictographic}, // E0.6 [1] (✨) sparkles - {0x2733, 0x2734, prExtendedPictographic}, // E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star - {0x2744, 0x2744, prExtendedPictographic}, // E0.6 [1] (❄️) snowflake - {0x2747, 0x2747, prExtendedPictographic}, // E0.6 [1] (❇️) sparkle - {0x274C, 0x274C, prExtendedPictographic}, // E0.6 [1] (❌) cross mark - {0x274E, 0x274E, prExtendedPictographic}, // E0.6 [1] (❎) cross mark button - {0x2753, 0x2755, prExtendedPictographic}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark - {0x2757, 0x2757, prExtendedPictographic}, // E0.6 [1] (❗) red exclamation mark - {0x2763, 0x2763, prExtendedPictographic}, // E1.0 [1] (❣️) heart exclamation - {0x2764, 0x2764, prExtendedPictographic}, // E0.6 [1] (❤️) red heart - {0x2765, 0x2767, prExtendedPictographic}, // E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET - {0x2795, 0x2797, prExtendedPictographic}, // E0.6 [3] (➕..➗) plus..divide - {0x27A1, 0x27A1, prExtendedPictographic}, // E0.6 [1] (➡️) right arrow - {0x27B0, 0x27B0, prExtendedPictographic}, // E0.6 [1] (➰) curly loop - {0x27BF, 0x27BF, prExtendedPictographic}, // E1.0 [1] (➿) double curly loop - {0x2934, 0x2935, prExtendedPictographic}, // E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down - {0x2B05, 0x2B07, prExtendedPictographic}, // E0.6 [3] (⬅️..⬇️) left arrow..down arrow - {0x2B1B, 0x2B1C, prExtendedPictographic}, // E0.6 [2] (⬛..⬜) black large square..white large square - {0x2B50, 0x2B50, prExtendedPictographic}, // E0.6 [1] (⭐) star - {0x2B55, 0x2B55, prExtendedPictographic}, // E0.6 [1] (⭕) hollow red circle - {0x2C00, 0x2C7B, prALetter}, // L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E - {0x2C7C, 0x2C7D, prALetter}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V - {0x2C7E, 0x2CE4, prALetter}, // L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI - {0x2CEB, 0x2CEE, prALetter}, // L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA - {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS - {0x2CF2, 0x2CF3, prALetter}, // L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI - {0x2D00, 0x2D25, prALetter}, // L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - {0x2D27, 0x2D27, prALetter}, // L& GEORGIAN SMALL LETTER YN - {0x2D2D, 0x2D2D, prALetter}, // L& GEORGIAN SMALL LETTER AEN - {0x2D30, 0x2D67, prALetter}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO - {0x2D6F, 0x2D6F, prALetter}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK - {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER - {0x2D80, 0x2D96, prALetter}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE - {0x2DA0, 0x2DA6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO - {0x2DA8, 0x2DAE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO - {0x2DB0, 0x2DB6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO - {0x2DB8, 0x2DBE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO - {0x2DC0, 0x2DC6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO - {0x2DC8, 0x2DCE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO - {0x2DD0, 0x2DD6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO - {0x2DD8, 0x2DDE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS - {0x2E2F, 0x2E2F, prALetter}, // Lm VERTICAL TILDE - {0x3000, 0x3000, prWSegSpace}, // Zs IDEOGRAPHIC SPACE - {0x3005, 0x3005, prALetter}, // Lm IDEOGRAPHIC ITERATION MARK - {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK - {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK - {0x3030, 0x3030, prExtendedPictographic}, // E0.6 [1] (〰️) wavy dash - {0x3031, 0x3035, prKatakana}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF - {0x303B, 0x303B, prALetter}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK - {0x303C, 0x303C, prALetter}, // Lo MASU MARK - {0x303D, 0x303D, prExtendedPictographic}, // E0.6 [1] (〽️) part alternation mark - {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x309B, 0x309C, prKatakana}, // Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - {0x30A0, 0x30A0, prKatakana}, // Pd KATAKANA-HIRAGANA DOUBLE HYPHEN - {0x30A1, 0x30FA, prKatakana}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO - {0x30FC, 0x30FE, prKatakana}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK - {0x30FF, 0x30FF, prKatakana}, // Lo KATAKANA DIGRAPH KOTO - {0x3105, 0x312F, prALetter}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN - {0x3131, 0x318E, prALetter}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE - {0x31A0, 0x31BF, prALetter}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH - {0x31F0, 0x31FF, prKatakana}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO - {0x3297, 0x3297, prExtendedPictographic}, // E0.6 [1] (㊗️) Japanese “congratulations” button - {0x3299, 0x3299, prExtendedPictographic}, // E0.6 [1] (㊙️) Japanese “secret” button - {0x32D0, 0x32FE, prKatakana}, // So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO - {0x3300, 0x3357, prKatakana}, // So [88] SQUARE APAATO..SQUARE WATTO - {0xA000, 0xA014, prALetter}, // Lo [21] YI SYLLABLE IT..YI SYLLABLE E - {0xA015, 0xA015, prALetter}, // Lm YI SYLLABLE WU - {0xA016, 0xA48C, prALetter}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR - {0xA4D0, 0xA4F7, prALetter}, // Lo [40] LISU LETTER BA..LISU LETTER OE - {0xA4F8, 0xA4FD, prALetter}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU - {0xA500, 0xA60B, prALetter}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG - {0xA60C, 0xA60C, prALetter}, // Lm VAI SYLLABLE LENGTHENER - {0xA610, 0xA61F, prALetter}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG - {0xA620, 0xA629, prNumeric}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE - {0xA62A, 0xA62B, prALetter}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO - {0xA640, 0xA66D, prALetter}, // L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O - {0xA66E, 0xA66E, prALetter}, // Lo CYRILLIC LETTER MULTIOCULAR O - {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET - {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN - {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK - {0xA67F, 0xA67F, prALetter}, // Lm CYRILLIC PAYEROK - {0xA680, 0xA69B, prALetter}, // L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O - {0xA69C, 0xA69D, prALetter}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN - {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E - {0xA6A0, 0xA6E5, prALetter}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI - {0xA6E6, 0xA6EF, prALetter}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM - {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS - {0xA708, 0xA716, prALetter}, // Sk [15] MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR - {0xA717, 0xA71F, prALetter}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK - {0xA720, 0xA721, prALetter}, // Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE - {0xA722, 0xA76F, prALetter}, // L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON - {0xA770, 0xA770, prALetter}, // Lm MODIFIER LETTER US - {0xA771, 0xA787, prALetter}, // L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T - {0xA788, 0xA788, prALetter}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - {0xA789, 0xA78A, prALetter}, // Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN - {0xA78B, 0xA78E, prALetter}, // L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - {0xA78F, 0xA78F, prALetter}, // Lo LATIN LETTER SINOLOGICAL DOT - {0xA790, 0xA7CA, prALetter}, // L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY - {0xA7D0, 0xA7D1, prALetter}, // L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G - {0xA7D3, 0xA7D3, prALetter}, // L& LATIN SMALL LETTER DOUBLE THORN - {0xA7D5, 0xA7D9, prALetter}, // L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S - {0xA7F2, 0xA7F4, prALetter}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q - {0xA7F5, 0xA7F6, prALetter}, // L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H - {0xA7F7, 0xA7F7, prALetter}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - {0xA7F8, 0xA7F9, prALetter}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE - {0xA7FA, 0xA7FA, prALetter}, // L& LATIN LETTER SMALL CAPITAL TURNED M - {0xA7FB, 0xA801, prALetter}, // Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I - {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA - {0xA803, 0xA805, prALetter}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O - {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA - {0xA807, 0xA80A, prALetter}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO - {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA - {0xA80C, 0xA822, prALetter}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO - {0xA823, 0xA824, prExtend}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I - {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E - {0xA827, 0xA827, prExtend}, // Mc SYLOTI NAGRI VOWEL SIGN OO - {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA - {0xA840, 0xA873, prALetter}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU - {0xA880, 0xA881, prExtend}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - {0xA882, 0xA8B3, prALetter}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - {0xA8B4, 0xA8C3, prExtend}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU - {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - {0xA8D0, 0xA8D9, prNumeric}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - {0xA8F2, 0xA8F7, prALetter}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA - {0xA8FB, 0xA8FB, prALetter}, // Lo DEVANAGARI HEADSTROKE - {0xA8FD, 0xA8FE, prALetter}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY - {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY - {0xA900, 0xA909, prNumeric}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE - {0xA90A, 0xA925, prALetter}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO - {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - {0xA930, 0xA946, prALetter}, // Lo [23] REJANG LETTER KA..REJANG LETTER A - {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R - {0xA952, 0xA953, prExtend}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA - {0xA960, 0xA97C, prALetter}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH - {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR - {0xA983, 0xA983, prExtend}, // Mc JAVANESE SIGN WIGNYAN - {0xA984, 0xA9B2, prALetter}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA - {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU - {0xA9B4, 0xA9B5, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG - {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT - {0xA9BA, 0xA9BB, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE - {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET - {0xA9BE, 0xA9C0, prExtend}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON - {0xA9CF, 0xA9CF, prALetter}, // Lm JAVANESE PANGRANGKEP - {0xA9D0, 0xA9D9, prNumeric}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE - {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW - {0xA9F0, 0xA9F9, prNumeric}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE - {0xAA00, 0xAA28, prALetter}, // Lo [41] CHAM LETTER A..CHAM LETTER HA - {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE - {0xAA2F, 0xAA30, prExtend}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI - {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE - {0xAA33, 0xAA34, prExtend}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA - {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA - {0xAA40, 0xAA42, prALetter}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG - {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG - {0xAA44, 0xAA4B, prALetter}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS - {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M - {0xAA4D, 0xAA4D, prExtend}, // Mc CHAM CONSONANT SIGN FINAL H - {0xAA50, 0xAA59, prNumeric}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE - {0xAA7B, 0xAA7B, prExtend}, // Mc MYANMAR SIGN PAO KAREN TONE - {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 - {0xAA7D, 0xAA7D, prExtend}, // Mc MYANMAR SIGN TAI LAING TONE-5 - {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG - {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U - {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA - {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK - {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO - {0xAAE0, 0xAAEA, prALetter}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA - {0xAAEB, 0xAAEB, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN II - {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI - {0xAAEE, 0xAAEF, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU - {0xAAF2, 0xAAF2, prALetter}, // Lo MEETEI MAYEK ANJI - {0xAAF3, 0xAAF4, prALetter}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK - {0xAAF5, 0xAAF5, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA - {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA - {0xAB01, 0xAB06, prALetter}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO - {0xAB09, 0xAB0E, prALetter}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO - {0xAB11, 0xAB16, prALetter}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO - {0xAB20, 0xAB26, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO - {0xAB28, 0xAB2E, prALetter}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO - {0xAB30, 0xAB5A, prALetter}, // L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG - {0xAB5B, 0xAB5B, prALetter}, // Sk MODIFIER BREVE WITH INVERTED BREVE - {0xAB5C, 0xAB5F, prALetter}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK - {0xAB60, 0xAB68, prALetter}, // L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE - {0xAB69, 0xAB69, prALetter}, // Lm MODIFIER LETTER SMALL TURNED W - {0xAB70, 0xABBF, prALetter}, // L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA - {0xABC0, 0xABE2, prALetter}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM - {0xABE3, 0xABE4, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP - {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP - {0xABE6, 0xABE7, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP - {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP - {0xABE9, 0xABEA, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG - {0xABEC, 0xABEC, prExtend}, // Mc MEETEI MAYEK LUM IYEK - {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK - {0xABF0, 0xABF9, prNumeric}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE - {0xAC00, 0xD7A3, prALetter}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH - {0xD7B0, 0xD7C6, prALetter}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E - {0xD7CB, 0xD7FB, prALetter}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH - {0xFB00, 0xFB06, prALetter}, // L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST - {0xFB13, 0xFB17, prALetter}, // L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - {0xFB1D, 0xFB1D, prHebrewLetter}, // Lo HEBREW LETTER YOD WITH HIRIQ - {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA - {0xFB1F, 0xFB28, prHebrewLetter}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV - {0xFB2A, 0xFB36, prHebrewLetter}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH - {0xFB38, 0xFB3C, prHebrewLetter}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH - {0xFB3E, 0xFB3E, prHebrewLetter}, // Lo HEBREW LETTER MEM WITH DAGESH - {0xFB40, 0xFB41, prHebrewLetter}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH - {0xFB43, 0xFB44, prHebrewLetter}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH - {0xFB46, 0xFB4F, prHebrewLetter}, // Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED - {0xFB50, 0xFBB1, prALetter}, // Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM - {0xFBD3, 0xFD3D, prALetter}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM - {0xFD50, 0xFD8F, prALetter}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM - {0xFD92, 0xFDC7, prALetter}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM - {0xFDF0, 0xFDFB, prALetter}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU - {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 - {0xFE10, 0xFE10, prMidNum}, // Po PRESENTATION FORM FOR VERTICAL COMMA - {0xFE13, 0xFE13, prMidLetter}, // Po PRESENTATION FORM FOR VERTICAL COLON - {0xFE14, 0xFE14, prMidNum}, // Po PRESENTATION FORM FOR VERTICAL SEMICOLON - {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF - {0xFE33, 0xFE34, prExtendNumLet}, // Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - {0xFE4D, 0xFE4F, prExtendNumLet}, // Pc [3] DASHED LOW LINE..WAVY LOW LINE - {0xFE50, 0xFE50, prMidNum}, // Po SMALL COMMA - {0xFE52, 0xFE52, prMidNumLet}, // Po SMALL FULL STOP - {0xFE54, 0xFE54, prMidNum}, // Po SMALL SEMICOLON - {0xFE55, 0xFE55, prMidLetter}, // Po SMALL COLON - {0xFE70, 0xFE74, prALetter}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM - {0xFE76, 0xFEFC, prALetter}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - {0xFEFF, 0xFEFF, prFormat}, // Cf ZERO WIDTH NO-BREAK SPACE - {0xFF07, 0xFF07, prMidNumLet}, // Po FULLWIDTH APOSTROPHE - {0xFF0C, 0xFF0C, prMidNum}, // Po FULLWIDTH COMMA - {0xFF0E, 0xFF0E, prMidNumLet}, // Po FULLWIDTH FULL STOP - {0xFF10, 0xFF19, prNumeric}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE - {0xFF1A, 0xFF1A, prMidLetter}, // Po FULLWIDTH COLON - {0xFF1B, 0xFF1B, prMidNum}, // Po FULLWIDTH SEMICOLON - {0xFF21, 0xFF3A, prALetter}, // L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - {0xFF3F, 0xFF3F, prExtendNumLet}, // Pc FULLWIDTH LOW LINE - {0xFF41, 0xFF5A, prALetter}, // L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - {0xFF66, 0xFF6F, prKatakana}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU - {0xFF70, 0xFF70, prKatakana}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - {0xFF71, 0xFF9D, prKatakana}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK - {0xFFA0, 0xFFBE, prALetter}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH - {0xFFC2, 0xFFC7, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E - {0xFFCA, 0xFFCF, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE - {0xFFD2, 0xFFD7, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU - {0xFFDA, 0xFFDC, prALetter}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - {0xFFF9, 0xFFFB, prFormat}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR - {0x10000, 0x1000B, prALetter}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE - {0x1000D, 0x10026, prALetter}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO - {0x10028, 0x1003A, prALetter}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO - {0x1003C, 0x1003D, prALetter}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE - {0x1003F, 0x1004D, prALetter}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO - {0x10050, 0x1005D, prALetter}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 - {0x10080, 0x100FA, prALetter}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - {0x10140, 0x10174, prALetter}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS - {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE - {0x10280, 0x1029C, prALetter}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X - {0x102A0, 0x102D0, prALetter}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 - {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK - {0x10300, 0x1031F, prALetter}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS - {0x1032D, 0x10340, prALetter}, // Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA - {0x10341, 0x10341, prALetter}, // Nl GOTHIC LETTER NINETY - {0x10342, 0x10349, prALetter}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL - {0x1034A, 0x1034A, prALetter}, // Nl GOTHIC LETTER NINE HUNDRED - {0x10350, 0x10375, prALetter}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA - {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII - {0x10380, 0x1039D, prALetter}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU - {0x103A0, 0x103C3, prALetter}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA - {0x103C8, 0x103CF, prALetter}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH - {0x103D1, 0x103D5, prALetter}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - {0x10400, 0x1044F, prALetter}, // L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - {0x10450, 0x1049D, prALetter}, // Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO - {0x104A0, 0x104A9, prNumeric}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - {0x104B0, 0x104D3, prALetter}, // L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - {0x104D8, 0x104FB, prALetter}, // L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - {0x10500, 0x10527, prALetter}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - {0x10530, 0x10563, prALetter}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - {0x10570, 0x1057A, prALetter}, // L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA - {0x1057C, 0x1058A, prALetter}, // L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE - {0x1058C, 0x10592, prALetter}, // L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE - {0x10594, 0x10595, prALetter}, // L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE - {0x10597, 0x105A1, prALetter}, // L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA - {0x105A3, 0x105B1, prALetter}, // L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE - {0x105B3, 0x105B9, prALetter}, // L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE - {0x105BB, 0x105BC, prALetter}, // L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE - {0x10600, 0x10736, prALetter}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 - {0x10740, 0x10755, prALetter}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE - {0x10760, 0x10767, prALetter}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 - {0x10780, 0x10785, prALetter}, // Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK - {0x10787, 0x107B0, prALetter}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK - {0x107B2, 0x107BA, prALetter}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL - {0x10800, 0x10805, prALetter}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA - {0x10808, 0x10808, prALetter}, // Lo CYPRIOT SYLLABLE JO - {0x1080A, 0x10835, prALetter}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO - {0x10837, 0x10838, prALetter}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE - {0x1083C, 0x1083C, prALetter}, // Lo CYPRIOT SYLLABLE ZA - {0x1083F, 0x10855, prALetter}, // Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW - {0x10860, 0x10876, prALetter}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW - {0x10880, 0x1089E, prALetter}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW - {0x108E0, 0x108F2, prALetter}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH - {0x108F4, 0x108F5, prALetter}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW - {0x10900, 0x10915, prALetter}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU - {0x10920, 0x10939, prALetter}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C - {0x10980, 0x109B7, prALetter}, // Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA - {0x109BE, 0x109BF, prALetter}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN - {0x10A00, 0x10A00, prALetter}, // Lo KHAROSHTHI LETTER A - {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R - {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O - {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - {0x10A10, 0x10A13, prALetter}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA - {0x10A15, 0x10A17, prALetter}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA - {0x10A19, 0x10A35, prALetter}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA - {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW - {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA - {0x10A60, 0x10A7C, prALetter}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH - {0x10A80, 0x10A9C, prALetter}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH - {0x10AC0, 0x10AC7, prALetter}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW - {0x10AC9, 0x10AE4, prALetter}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW - {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW - {0x10B00, 0x10B35, prALetter}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE - {0x10B40, 0x10B55, prALetter}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW - {0x10B60, 0x10B72, prALetter}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW - {0x10B80, 0x10B91, prALetter}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW - {0x10C00, 0x10C48, prALetter}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH - {0x10C80, 0x10CB2, prALetter}, // L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - {0x10CC0, 0x10CF2, prALetter}, // L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - {0x10D00, 0x10D23, prALetter}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA - {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI - {0x10D30, 0x10D39, prNumeric}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE - {0x10E80, 0x10EA9, prALetter}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET - {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK - {0x10EB0, 0x10EB1, prALetter}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE - {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA - {0x10F00, 0x10F1C, prALetter}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL - {0x10F27, 0x10F27, prALetter}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH - {0x10F30, 0x10F45, prALetter}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN - {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW - {0x10F70, 0x10F81, prALetter}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH - {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW - {0x10FB0, 0x10FC4, prALetter}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW - {0x10FE0, 0x10FF6, prALetter}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH - {0x11000, 0x11000, prExtend}, // Mc BRAHMI SIGN CANDRABINDU - {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA - {0x11002, 0x11002, prExtend}, // Mc BRAHMI SIGN VISARGA - {0x11003, 0x11037, prALetter}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA - {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA - {0x11066, 0x1106F, prNumeric}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE - {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA - {0x11071, 0x11072, prALetter}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O - {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O - {0x11075, 0x11075, prALetter}, // Lo BRAHMI LETTER OLD TAMIL LLA - {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA - {0x11082, 0x11082, prExtend}, // Mc KAITHI SIGN VISARGA - {0x11083, 0x110AF, prALetter}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA - {0x110B0, 0x110B2, prExtend}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II - {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI - {0x110B7, 0x110B8, prExtend}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU - {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA - {0x110BD, 0x110BD, prFormat}, // Cf KAITHI NUMBER SIGN - {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R - {0x110CD, 0x110CD, prFormat}, // Cf KAITHI NUMBER SIGN ABOVE - {0x110D0, 0x110E8, prALetter}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE - {0x110F0, 0x110F9, prNumeric}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE - {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA - {0x11103, 0x11126, prALetter}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA - {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU - {0x1112C, 0x1112C, prExtend}, // Mc CHAKMA VOWEL SIGN E - {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA - {0x11136, 0x1113F, prNumeric}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE - {0x11144, 0x11144, prALetter}, // Lo CHAKMA LETTER LHAA - {0x11145, 0x11146, prExtend}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI - {0x11147, 0x11147, prALetter}, // Lo CHAKMA LETTER VAA - {0x11150, 0x11172, prALetter}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA - {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA - {0x11176, 0x11176, prALetter}, // Lo MAHAJANI LIGATURE SHRI - {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA - {0x11182, 0x11182, prExtend}, // Mc SHARADA SIGN VISARGA - {0x11183, 0x111B2, prALetter}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA - {0x111B3, 0x111B5, prExtend}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II - {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O - {0x111BF, 0x111C0, prExtend}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA - {0x111C1, 0x111C4, prALetter}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM - {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK - {0x111CE, 0x111CE, prExtend}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E - {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU - {0x111D0, 0x111D9, prNumeric}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE - {0x111DA, 0x111DA, prALetter}, // Lo SHARADA EKAM - {0x111DC, 0x111DC, prALetter}, // Lo SHARADA HEADSTROKE - {0x11200, 0x11211, prALetter}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA - {0x11213, 0x1122B, prALetter}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA - {0x1122C, 0x1122E, prExtend}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II - {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - {0x11232, 0x11233, prExtend}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA - {0x11235, 0x11235, prExtend}, // Mc KHOJKI SIGN VIRAMA - {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA - {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN - {0x1123F, 0x11240, prALetter}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I - {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R - {0x11280, 0x11286, prALetter}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA - {0x11288, 0x11288, prALetter}, // Lo MULTANI LETTER GHA - {0x1128A, 0x1128D, prALetter}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA - {0x1128F, 0x1129D, prALetter}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA - {0x1129F, 0x112A8, prALetter}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA - {0x112B0, 0x112DE, prALetter}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA - {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA - {0x112E0, 0x112E2, prExtend}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II - {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - {0x112F0, 0x112F9, prNumeric}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE - {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU - {0x11302, 0x11303, prExtend}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA - {0x11305, 0x1130C, prALetter}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L - {0x1130F, 0x11310, prALetter}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI - {0x11313, 0x11328, prALetter}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA - {0x1132A, 0x11330, prALetter}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA - {0x11332, 0x11333, prALetter}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA - {0x11335, 0x11339, prALetter}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA - {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA - {0x1133D, 0x1133D, prALetter}, // Lo GRANTHA SIGN AVAGRAHA - {0x1133E, 0x1133F, prExtend}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I - {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II - {0x11341, 0x11344, prExtend}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR - {0x11347, 0x11348, prExtend}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI - {0x1134B, 0x1134D, prExtend}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA - {0x11350, 0x11350, prALetter}, // Lo GRANTHA OM - {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK - {0x1135D, 0x11361, prALetter}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL - {0x11362, 0x11363, prExtend}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA - {0x11400, 0x11434, prALetter}, // Lo [53] NEWA LETTER A..NEWA LETTER HA - {0x11435, 0x11437, prExtend}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II - {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI - {0x11440, 0x11441, prExtend}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU - {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA - {0x11445, 0x11445, prExtend}, // Mc NEWA SIGN VISARGA - {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA - {0x11447, 0x1144A, prALetter}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - {0x11450, 0x11459, prNumeric}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK - {0x1145F, 0x11461, prALetter}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA - {0x11480, 0x114AF, prALetter}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - {0x114B0, 0x114B2, prExtend}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - {0x114B9, 0x114B9, prExtend}, // Mc TIRHUTA VOWEL SIGN E - {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E - {0x114BB, 0x114BE, prExtend}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU - {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA - {0x114C1, 0x114C1, prExtend}, // Mc TIRHUTA SIGN VISARGA - {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA - {0x114C4, 0x114C5, prALetter}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - {0x114C7, 0x114C7, prALetter}, // Lo TIRHUTA OM - {0x114D0, 0x114D9, prNumeric}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE - {0x11580, 0x115AE, prALetter}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA - {0x115AF, 0x115B1, prExtend}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II - {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR - {0x115B8, 0x115BB, prExtend}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU - {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA - {0x115BE, 0x115BE, prExtend}, // Mc SIDDHAM SIGN VISARGA - {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA - {0x115D8, 0x115DB, prALetter}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U - {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU - {0x11600, 0x1162F, prALetter}, // Lo [48] MODI LETTER A..MODI LETTER LLA - {0x11630, 0x11632, prExtend}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II - {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI - {0x1163B, 0x1163C, prExtend}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU - {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA - {0x1163E, 0x1163E, prExtend}, // Mc MODI SIGN VISARGA - {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA - {0x11644, 0x11644, prALetter}, // Lo MODI SIGN HUVA - {0x11650, 0x11659, prNumeric}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE - {0x11680, 0x116AA, prALetter}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA - {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA - {0x116AC, 0x116AC, prExtend}, // Mc TAKRI SIGN VISARGA - {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA - {0x116AE, 0x116AF, prExtend}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II - {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU - {0x116B6, 0x116B6, prExtend}, // Mc TAKRI SIGN VIRAMA - {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA - {0x116B8, 0x116B8, prALetter}, // Lo TAKRI LETTER ARCHAIC KHA - {0x116C0, 0x116C9, prNumeric}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE - {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - {0x11720, 0x11721, prExtend}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA - {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - {0x11726, 0x11726, prExtend}, // Mc AHOM VOWEL SIGN E - {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER - {0x11730, 0x11739, prNumeric}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE - {0x11800, 0x1182B, prALetter}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA - {0x1182C, 0x1182E, prExtend}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II - {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA - {0x11838, 0x11838, prExtend}, // Mc DOGRA SIGN VISARGA - {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA - {0x118A0, 0x118DF, prALetter}, // L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - {0x118E0, 0x118E9, prNumeric}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - {0x118FF, 0x11906, prALetter}, // Lo [8] WARANG CITI OM..DIVES AKURU LETTER E - {0x11909, 0x11909, prALetter}, // Lo DIVES AKURU LETTER O - {0x1190C, 0x11913, prALetter}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA - {0x11915, 0x11916, prALetter}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA - {0x11918, 0x1192F, prALetter}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA - {0x11930, 0x11935, prExtend}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E - {0x11937, 0x11938, prExtend}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O - {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU - {0x1193D, 0x1193D, prExtend}, // Mc DIVES AKURU SIGN HALANTA - {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA - {0x1193F, 0x1193F, prALetter}, // Lo DIVES AKURU PREFIXED NASAL SIGN - {0x11940, 0x11940, prExtend}, // Mc DIVES AKURU MEDIAL YA - {0x11941, 0x11941, prALetter}, // Lo DIVES AKURU INITIAL RA - {0x11942, 0x11942, prExtend}, // Mc DIVES AKURU MEDIAL RA - {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA - {0x11950, 0x11959, prNumeric}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE - {0x119A0, 0x119A7, prALetter}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR - {0x119AA, 0x119D0, prALetter}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA - {0x119D1, 0x119D3, prExtend}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II - {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR - {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI - {0x119DC, 0x119DF, prExtend}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA - {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA - {0x119E1, 0x119E1, prALetter}, // Lo NANDINAGARI SIGN AVAGRAHA - {0x119E3, 0x119E3, prALetter}, // Lo NANDINAGARI HEADSTROKE - {0x119E4, 0x119E4, prExtend}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E - {0x11A00, 0x11A00, prALetter}, // Lo ZANABAZAR SQUARE LETTER A - {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK - {0x11A0B, 0x11A32, prALetter}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA - {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA - {0x11A39, 0x11A39, prExtend}, // Mc ZANABAZAR SQUARE SIGN VISARGA - {0x11A3A, 0x11A3A, prALetter}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA - {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA - {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER - {0x11A50, 0x11A50, prALetter}, // Lo SOYOMBO LETTER A - {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE - {0x11A57, 0x11A58, prExtend}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU - {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK - {0x11A5C, 0x11A89, prALetter}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA - {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA - {0x11A97, 0x11A97, prExtend}, // Mc SOYOMBO SIGN VISARGA - {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER - {0x11A9D, 0x11A9D, prALetter}, // Lo SOYOMBO MARK PLUTA - {0x11AB0, 0x11AF8, prALetter}, // Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL - {0x11C00, 0x11C08, prALetter}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L - {0x11C0A, 0x11C2E, prALetter}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA - {0x11C2F, 0x11C2F, prExtend}, // Mc BHAIKSUKI VOWEL SIGN AA - {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L - {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA - {0x11C3E, 0x11C3E, prExtend}, // Mc BHAIKSUKI SIGN VISARGA - {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA - {0x11C40, 0x11C40, prALetter}, // Lo BHAIKSUKI SIGN AVAGRAHA - {0x11C50, 0x11C59, prNumeric}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE - {0x11C72, 0x11C8F, prALetter}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A - {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA - {0x11CA9, 0x11CA9, prExtend}, // Mc MARCHEN SUBJOINED LETTER YA - {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA - {0x11CB1, 0x11CB1, prExtend}, // Mc MARCHEN VOWEL SIGN I - {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E - {0x11CB4, 0x11CB4, prExtend}, // Mc MARCHEN VOWEL SIGN O - {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - {0x11D00, 0x11D06, prALetter}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E - {0x11D08, 0x11D09, prALetter}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O - {0x11D0B, 0x11D30, prALetter}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA - {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R - {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E - {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O - {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA - {0x11D46, 0x11D46, prALetter}, // Lo MASARAM GONDI REPHA - {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA - {0x11D50, 0x11D59, prNumeric}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE - {0x11D60, 0x11D65, prALetter}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU - {0x11D67, 0x11D68, prALetter}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI - {0x11D6A, 0x11D89, prALetter}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA - {0x11D8A, 0x11D8E, prExtend}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU - {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI - {0x11D93, 0x11D94, prExtend}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU - {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA - {0x11D96, 0x11D96, prExtend}, // Mc GUNJALA GONDI SIGN VISARGA - {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA - {0x11D98, 0x11D98, prALetter}, // Lo GUNJALA GONDI OM - {0x11DA0, 0x11DA9, prNumeric}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE - {0x11EE0, 0x11EF2, prALetter}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA - {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U - {0x11EF5, 0x11EF6, prExtend}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O - {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA - {0x11F02, 0x11F02, prALetter}, // Lo KAWI SIGN REPHA - {0x11F03, 0x11F03, prExtend}, // Mc KAWI SIGN VISARGA - {0x11F04, 0x11F10, prALetter}, // Lo [13] KAWI LETTER A..KAWI LETTER O - {0x11F12, 0x11F33, prALetter}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA - {0x11F34, 0x11F35, prExtend}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA - {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R - {0x11F3E, 0x11F3F, prExtend}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI - {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU - {0x11F41, 0x11F41, prExtend}, // Mc KAWI SIGN KILLER - {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER - {0x11F50, 0x11F59, prNumeric}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE - {0x11FB0, 0x11FB0, prALetter}, // Lo LISU LETTER YHA - {0x12000, 0x12399, prALetter}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - {0x12400, 0x1246E, prALetter}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - {0x12480, 0x12543, prALetter}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU - {0x12F90, 0x12FF0, prALetter}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 - {0x13000, 0x1342F, prALetter}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D - {0x13430, 0x1343F, prFormat}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE - {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY - {0x13441, 0x13446, prALetter}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN - {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED - {0x14400, 0x14646, prALetter}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 - {0x16800, 0x16A38, prALetter}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ - {0x16A40, 0x16A5E, prALetter}, // Lo [31] MRO LETTER TA..MRO LETTER TEK - {0x16A60, 0x16A69, prNumeric}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE - {0x16A70, 0x16ABE, prALetter}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA - {0x16AC0, 0x16AC9, prNumeric}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE - {0x16AD0, 0x16AED, prALetter}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I - {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - {0x16B00, 0x16B2F, prALetter}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU - {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - {0x16B40, 0x16B43, prALetter}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM - {0x16B50, 0x16B59, prNumeric}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE - {0x16B63, 0x16B77, prALetter}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS - {0x16B7D, 0x16B8F, prALetter}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ - {0x16E40, 0x16E7F, prALetter}, // L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y - {0x16F00, 0x16F4A, prALetter}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE - {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR - {0x16F50, 0x16F50, prALetter}, // Lo MIAO LETTER NASALIZATION - {0x16F51, 0x16F87, prExtend}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI - {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - {0x16F93, 0x16F9F, prALetter}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 - {0x16FE0, 0x16FE1, prALetter}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK - {0x16FE3, 0x16FE3, prALetter}, // Lm OLD CHINESE ITERATION MARK - {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER - {0x16FF0, 0x16FF1, prExtend}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY - {0x1AFF0, 0x1AFF3, prKatakana}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 - {0x1AFF5, 0x1AFFB, prKatakana}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 - {0x1AFFD, 0x1AFFE, prKatakana}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 - {0x1B000, 0x1B000, prKatakana}, // Lo KATAKANA LETTER ARCHAIC E - {0x1B120, 0x1B122, prKatakana}, // Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU - {0x1B155, 0x1B155, prKatakana}, // Lo KATAKANA LETTER SMALL KO - {0x1B164, 0x1B167, prKatakana}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N - {0x1BC00, 0x1BC6A, prALetter}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - {0x1BC70, 0x1BC7C, prALetter}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK - {0x1BC80, 0x1BC88, prALetter}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL - {0x1BC90, 0x1BC99, prALetter}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW - {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - {0x1BCA0, 0x1BCA3, prFormat}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT - {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG - {0x1D165, 0x1D166, prExtend}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM - {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 - {0x1D16D, 0x1D172, prExtend}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 - {0x1D173, 0x1D17A, prFormat}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE - {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE - {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE - {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME - {0x1D400, 0x1D454, prALetter}, // L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G - {0x1D456, 0x1D49C, prALetter}, // L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A - {0x1D49E, 0x1D49F, prALetter}, // L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D - {0x1D4A2, 0x1D4A2, prALetter}, // L& MATHEMATICAL SCRIPT CAPITAL G - {0x1D4A5, 0x1D4A6, prALetter}, // L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K - {0x1D4A9, 0x1D4AC, prALetter}, // L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q - {0x1D4AE, 0x1D4B9, prALetter}, // L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D - {0x1D4BB, 0x1D4BB, prALetter}, // L& MATHEMATICAL SCRIPT SMALL F - {0x1D4BD, 0x1D4C3, prALetter}, // L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N - {0x1D4C5, 0x1D505, prALetter}, // L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B - {0x1D507, 0x1D50A, prALetter}, // L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G - {0x1D50D, 0x1D514, prALetter}, // L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q - {0x1D516, 0x1D51C, prALetter}, // L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y - {0x1D51E, 0x1D539, prALetter}, // L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B - {0x1D53B, 0x1D53E, prALetter}, // L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G - {0x1D540, 0x1D544, prALetter}, // L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M - {0x1D546, 0x1D546, prALetter}, // L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O - {0x1D54A, 0x1D550, prALetter}, // L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y - {0x1D552, 0x1D6A5, prALetter}, // L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J - {0x1D6A8, 0x1D6C0, prALetter}, // L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA - {0x1D6C2, 0x1D6DA, prALetter}, // L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA - {0x1D6DC, 0x1D6FA, prALetter}, // L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA - {0x1D6FC, 0x1D714, prALetter}, // L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA - {0x1D716, 0x1D734, prALetter}, // L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA - {0x1D736, 0x1D74E, prALetter}, // L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA - {0x1D750, 0x1D76E, prALetter}, // L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - {0x1D770, 0x1D788, prALetter}, // L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA - {0x1D78A, 0x1D7A8, prALetter}, // L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - {0x1D7AA, 0x1D7C2, prALetter}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - {0x1D7C4, 0x1D7CB, prALetter}, // L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA - {0x1D7CE, 0x1D7FF, prNumeric}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE - {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN - {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT - {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS - {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK - {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 - {0x1DF00, 0x1DF09, prALetter}, // L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK - {0x1DF0A, 0x1DF0A, prALetter}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK - {0x1DF0B, 0x1DF1E, prALetter}, // L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL - {0x1DF25, 0x1DF2A, prALetter}, // L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK - {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE - {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU - {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI - {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS - {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - {0x1E030, 0x1E06D, prALetter}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE - {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - {0x1E100, 0x1E12C, prALetter}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W - {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D - {0x1E137, 0x1E13D, prALetter}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER - {0x1E140, 0x1E149, prNumeric}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE - {0x1E14E, 0x1E14E, prALetter}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ - {0x1E290, 0x1E2AD, prALetter}, // Lo [30] TOTO LETTER PA..TOTO LETTER A - {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE - {0x1E2C0, 0x1E2EB, prALetter}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH - {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI - {0x1E2F0, 0x1E2F9, prNumeric}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE - {0x1E4D0, 0x1E4EA, prALetter}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL - {0x1E4EB, 0x1E4EB, prALetter}, // Lm NAG MUNDARI SIGN OJOD - {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH - {0x1E4F0, 0x1E4F9, prNumeric}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE - {0x1E7E0, 0x1E7E6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO - {0x1E7E8, 0x1E7EB, prALetter}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE - {0x1E7ED, 0x1E7EE, prALetter}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE - {0x1E7F0, 0x1E7FE, prALetter}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE - {0x1E800, 0x1E8C4, prALetter}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS - {0x1E900, 0x1E943, prALetter}, // L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - {0x1E94B, 0x1E94B, prALetter}, // Lm ADLAM NASALIZATION MARK - {0x1E950, 0x1E959, prNumeric}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - {0x1EE00, 0x1EE03, prALetter}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - {0x1EE05, 0x1EE1F, prALetter}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - {0x1EE21, 0x1EE22, prALetter}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM - {0x1EE24, 0x1EE24, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL HEH - {0x1EE27, 0x1EE27, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL HAH - {0x1EE29, 0x1EE32, prALetter}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF - {0x1EE34, 0x1EE37, prALetter}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH - {0x1EE39, 0x1EE39, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL DAD - {0x1EE3B, 0x1EE3B, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN - {0x1EE42, 0x1EE42, prALetter}, // Lo ARABIC MATHEMATICAL TAILED JEEM - {0x1EE47, 0x1EE47, prALetter}, // Lo ARABIC MATHEMATICAL TAILED HAH - {0x1EE49, 0x1EE49, prALetter}, // Lo ARABIC MATHEMATICAL TAILED YEH - {0x1EE4B, 0x1EE4B, prALetter}, // Lo ARABIC MATHEMATICAL TAILED LAM - {0x1EE4D, 0x1EE4F, prALetter}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN - {0x1EE51, 0x1EE52, prALetter}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF - {0x1EE54, 0x1EE54, prALetter}, // Lo ARABIC MATHEMATICAL TAILED SHEEN - {0x1EE57, 0x1EE57, prALetter}, // Lo ARABIC MATHEMATICAL TAILED KHAH - {0x1EE59, 0x1EE59, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DAD - {0x1EE5B, 0x1EE5B, prALetter}, // Lo ARABIC MATHEMATICAL TAILED GHAIN - {0x1EE5D, 0x1EE5D, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON - {0x1EE5F, 0x1EE5F, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF - {0x1EE61, 0x1EE62, prALetter}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM - {0x1EE64, 0x1EE64, prALetter}, // Lo ARABIC MATHEMATICAL STRETCHED HEH - {0x1EE67, 0x1EE6A, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF - {0x1EE6C, 0x1EE72, prALetter}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF - {0x1EE74, 0x1EE77, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH - {0x1EE79, 0x1EE7C, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH - {0x1EE7E, 0x1EE7E, prALetter}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH - {0x1EE80, 0x1EE89, prALetter}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH - {0x1EE8B, 0x1EE9B, prALetter}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN - {0x1EEA1, 0x1EEA3, prALetter}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL - {0x1EEA5, 0x1EEA9, prALetter}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH - {0x1EEAB, 0x1EEBB, prALetter}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN - {0x1F000, 0x1F003, prExtendedPictographic}, // E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND - {0x1F004, 0x1F004, prExtendedPictographic}, // E0.6 [1] (🀄) mahjong red dragon - {0x1F005, 0x1F0CE, prExtendedPictographic}, // E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS - {0x1F0CF, 0x1F0CF, prExtendedPictographic}, // E0.6 [1] (🃏) joker - {0x1F0D0, 0x1F0FF, prExtendedPictographic}, // E0.0 [48] (🃐..🃿) <reserved-1F0D0>..<reserved-1F0FF> - {0x1F10D, 0x1F10F, prExtendedPictographic}, // E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH - {0x1F12F, 0x1F12F, prExtendedPictographic}, // E0.0 [1] (🄯) COPYLEFT SYMBOL - {0x1F130, 0x1F149, prALetter}, // So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z - {0x1F150, 0x1F169, prALetter}, // So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - {0x1F16C, 0x1F16F, prExtendedPictographic}, // E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE - {0x1F170, 0x1F189, prALetter}, // So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - {0x1F170, 0x1F171, prExtendedPictographic}, // E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) - {0x1F17E, 0x1F17F, prExtendedPictographic}, // E0.6 [2] (🅾️..🅿️) O button (blood type)..P button - {0x1F18E, 0x1F18E, prExtendedPictographic}, // E0.6 [1] (🆎) AB button (blood type) - {0x1F191, 0x1F19A, prExtendedPictographic}, // E0.6 [10] (🆑..🆚) CL button..VS button - {0x1F1AD, 0x1F1E5, prExtendedPictographic}, // E0.0 [57] (🆭..🇥) MASK WORK SYMBOL..<reserved-1F1E5> - {0x1F1E6, 0x1F1FF, prRegionalIndicator}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z - {0x1F201, 0x1F202, prExtendedPictographic}, // E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button - {0x1F203, 0x1F20F, prExtendedPictographic}, // E0.0 [13] (🈃..🈏) <reserved-1F203>..<reserved-1F20F> - {0x1F21A, 0x1F21A, prExtendedPictographic}, // E0.6 [1] (🈚) Japanese “free of charge” button - {0x1F22F, 0x1F22F, prExtendedPictographic}, // E0.6 [1] (🈯) Japanese “reserved” button - {0x1F232, 0x1F23A, prExtendedPictographic}, // E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button - {0x1F23C, 0x1F23F, prExtendedPictographic}, // E0.0 [4] (🈼..🈿) <reserved-1F23C>..<reserved-1F23F> - {0x1F249, 0x1F24F, prExtendedPictographic}, // E0.0 [7] (🉉..🉏) <reserved-1F249>..<reserved-1F24F> - {0x1F250, 0x1F251, prExtendedPictographic}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button - {0x1F252, 0x1F2FF, prExtendedPictographic}, // E0.0 [174] (🉒..🋿) <reserved-1F252>..<reserved-1F2FF> - {0x1F300, 0x1F30C, prExtendedPictographic}, // E0.6 [13] (🌀..🌌) cyclone..milky way - {0x1F30D, 0x1F30E, prExtendedPictographic}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas - {0x1F30F, 0x1F30F, prExtendedPictographic}, // E0.6 [1] (🌏) globe showing Asia-Australia - {0x1F310, 0x1F310, prExtendedPictographic}, // E1.0 [1] (🌐) globe with meridians - {0x1F311, 0x1F311, prExtendedPictographic}, // E0.6 [1] (🌑) new moon - {0x1F312, 0x1F312, prExtendedPictographic}, // E1.0 [1] (🌒) waxing crescent moon - {0x1F313, 0x1F315, prExtendedPictographic}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon - {0x1F316, 0x1F318, prExtendedPictographic}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon - {0x1F319, 0x1F319, prExtendedPictographic}, // E0.6 [1] (🌙) crescent moon - {0x1F31A, 0x1F31A, prExtendedPictographic}, // E1.0 [1] (🌚) new moon face - {0x1F31B, 0x1F31B, prExtendedPictographic}, // E0.6 [1] (🌛) first quarter moon face - {0x1F31C, 0x1F31C, prExtendedPictographic}, // E0.7 [1] (🌜) last quarter moon face - {0x1F31D, 0x1F31E, prExtendedPictographic}, // E1.0 [2] (🌝..🌞) full moon face..sun with face - {0x1F31F, 0x1F320, prExtendedPictographic}, // E0.6 [2] (🌟..🌠) glowing star..shooting star - {0x1F321, 0x1F321, prExtendedPictographic}, // E0.7 [1] (🌡️) thermometer - {0x1F322, 0x1F323, prExtendedPictographic}, // E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN - {0x1F324, 0x1F32C, prExtendedPictographic}, // E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face - {0x1F32D, 0x1F32F, prExtendedPictographic}, // E1.0 [3] (🌭..🌯) hot dog..burrito - {0x1F330, 0x1F331, prExtendedPictographic}, // E0.6 [2] (🌰..🌱) chestnut..seedling - {0x1F332, 0x1F333, prExtendedPictographic}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree - {0x1F334, 0x1F335, prExtendedPictographic}, // E0.6 [2] (🌴..🌵) palm tree..cactus - {0x1F336, 0x1F336, prExtendedPictographic}, // E0.7 [1] (🌶️) hot pepper - {0x1F337, 0x1F34A, prExtendedPictographic}, // E0.6 [20] (🌷..🍊) tulip..tangerine - {0x1F34B, 0x1F34B, prExtendedPictographic}, // E1.0 [1] (🍋) lemon - {0x1F34C, 0x1F34F, prExtendedPictographic}, // E0.6 [4] (🍌..🍏) banana..green apple - {0x1F350, 0x1F350, prExtendedPictographic}, // E1.0 [1] (🍐) pear - {0x1F351, 0x1F37B, prExtendedPictographic}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs - {0x1F37C, 0x1F37C, prExtendedPictographic}, // E1.0 [1] (🍼) baby bottle - {0x1F37D, 0x1F37D, prExtendedPictographic}, // E0.7 [1] (🍽️) fork and knife with plate - {0x1F37E, 0x1F37F, prExtendedPictographic}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn - {0x1F380, 0x1F393, prExtendedPictographic}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap - {0x1F394, 0x1F395, prExtendedPictographic}, // E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS - {0x1F396, 0x1F397, prExtendedPictographic}, // E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon - {0x1F398, 0x1F398, prExtendedPictographic}, // E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS - {0x1F399, 0x1F39B, prExtendedPictographic}, // E0.7 [3] (🎙️..🎛️) studio microphone..control knobs - {0x1F39C, 0x1F39D, prExtendedPictographic}, // E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES - {0x1F39E, 0x1F39F, prExtendedPictographic}, // E0.7 [2] (🎞️..🎟️) film frames..admission tickets - {0x1F3A0, 0x1F3C4, prExtendedPictographic}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing - {0x1F3C5, 0x1F3C5, prExtendedPictographic}, // E1.0 [1] (🏅) sports medal - {0x1F3C6, 0x1F3C6, prExtendedPictographic}, // E0.6 [1] (🏆) trophy - {0x1F3C7, 0x1F3C7, prExtendedPictographic}, // E1.0 [1] (🏇) horse racing - {0x1F3C8, 0x1F3C8, prExtendedPictographic}, // E0.6 [1] (🏈) american football - {0x1F3C9, 0x1F3C9, prExtendedPictographic}, // E1.0 [1] (🏉) rugby football - {0x1F3CA, 0x1F3CA, prExtendedPictographic}, // E0.6 [1] (🏊) person swimming - {0x1F3CB, 0x1F3CE, prExtendedPictographic}, // E0.7 [4] (🏋️..🏎️) person lifting weights..racing car - {0x1F3CF, 0x1F3D3, prExtendedPictographic}, // E1.0 [5] (🏏..🏓) cricket game..ping pong - {0x1F3D4, 0x1F3DF, prExtendedPictographic}, // E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium - {0x1F3E0, 0x1F3E3, prExtendedPictographic}, // E0.6 [4] (🏠..🏣) house..Japanese post office - {0x1F3E4, 0x1F3E4, prExtendedPictographic}, // E1.0 [1] (🏤) post office - {0x1F3E5, 0x1F3F0, prExtendedPictographic}, // E0.6 [12] (🏥..🏰) hospital..castle - {0x1F3F1, 0x1F3F2, prExtendedPictographic}, // E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT - {0x1F3F3, 0x1F3F3, prExtendedPictographic}, // E0.7 [1] (🏳️) white flag - {0x1F3F4, 0x1F3F4, prExtendedPictographic}, // E1.0 [1] (🏴) black flag - {0x1F3F5, 0x1F3F5, prExtendedPictographic}, // E0.7 [1] (🏵️) rosette - {0x1F3F6, 0x1F3F6, prExtendedPictographic}, // E0.0 [1] (🏶) BLACK ROSETTE - {0x1F3F7, 0x1F3F7, prExtendedPictographic}, // E0.7 [1] (🏷️) label - {0x1F3F8, 0x1F3FA, prExtendedPictographic}, // E1.0 [3] (🏸..🏺) badminton..amphora - {0x1F3FB, 0x1F3FF, prExtend}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 - {0x1F400, 0x1F407, prExtendedPictographic}, // E1.0 [8] (🐀..🐇) rat..rabbit - {0x1F408, 0x1F408, prExtendedPictographic}, // E0.7 [1] (🐈) cat - {0x1F409, 0x1F40B, prExtendedPictographic}, // E1.0 [3] (🐉..🐋) dragon..whale - {0x1F40C, 0x1F40E, prExtendedPictographic}, // E0.6 [3] (🐌..🐎) snail..horse - {0x1F40F, 0x1F410, prExtendedPictographic}, // E1.0 [2] (🐏..🐐) ram..goat - {0x1F411, 0x1F412, prExtendedPictographic}, // E0.6 [2] (🐑..🐒) ewe..monkey - {0x1F413, 0x1F413, prExtendedPictographic}, // E1.0 [1] (🐓) rooster - {0x1F414, 0x1F414, prExtendedPictographic}, // E0.6 [1] (🐔) chicken - {0x1F415, 0x1F415, prExtendedPictographic}, // E0.7 [1] (🐕) dog - {0x1F416, 0x1F416, prExtendedPictographic}, // E1.0 [1] (🐖) pig - {0x1F417, 0x1F429, prExtendedPictographic}, // E0.6 [19] (🐗..🐩) boar..poodle - {0x1F42A, 0x1F42A, prExtendedPictographic}, // E1.0 [1] (🐪) camel - {0x1F42B, 0x1F43E, prExtendedPictographic}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints - {0x1F43F, 0x1F43F, prExtendedPictographic}, // E0.7 [1] (🐿️) chipmunk - {0x1F440, 0x1F440, prExtendedPictographic}, // E0.6 [1] (👀) eyes - {0x1F441, 0x1F441, prExtendedPictographic}, // E0.7 [1] (👁️) eye - {0x1F442, 0x1F464, prExtendedPictographic}, // E0.6 [35] (👂..👤) ear..bust in silhouette - {0x1F465, 0x1F465, prExtendedPictographic}, // E1.0 [1] (👥) busts in silhouette - {0x1F466, 0x1F46B, prExtendedPictographic}, // E0.6 [6] (👦..👫) boy..woman and man holding hands - {0x1F46C, 0x1F46D, prExtendedPictographic}, // E1.0 [2] (👬..👭) men holding hands..women holding hands - {0x1F46E, 0x1F4AC, prExtendedPictographic}, // E0.6 [63] (👮..💬) police officer..speech balloon - {0x1F4AD, 0x1F4AD, prExtendedPictographic}, // E1.0 [1] (💭) thought balloon - {0x1F4AE, 0x1F4B5, prExtendedPictographic}, // E0.6 [8] (💮..💵) white flower..dollar banknote - {0x1F4B6, 0x1F4B7, prExtendedPictographic}, // E1.0 [2] (💶..💷) euro banknote..pound banknote - {0x1F4B8, 0x1F4EB, prExtendedPictographic}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag - {0x1F4EC, 0x1F4ED, prExtendedPictographic}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag - {0x1F4EE, 0x1F4EE, prExtendedPictographic}, // E0.6 [1] (📮) postbox - {0x1F4EF, 0x1F4EF, prExtendedPictographic}, // E1.0 [1] (📯) postal horn - {0x1F4F0, 0x1F4F4, prExtendedPictographic}, // E0.6 [5] (📰..📴) newspaper..mobile phone off - {0x1F4F5, 0x1F4F5, prExtendedPictographic}, // E1.0 [1] (📵) no mobile phones - {0x1F4F6, 0x1F4F7, prExtendedPictographic}, // E0.6 [2] (📶..📷) antenna bars..camera - {0x1F4F8, 0x1F4F8, prExtendedPictographic}, // E1.0 [1] (📸) camera with flash - {0x1F4F9, 0x1F4FC, prExtendedPictographic}, // E0.6 [4] (📹..📼) video camera..videocassette - {0x1F4FD, 0x1F4FD, prExtendedPictographic}, // E0.7 [1] (📽️) film projector - {0x1F4FE, 0x1F4FE, prExtendedPictographic}, // E0.0 [1] (📾) PORTABLE STEREO - {0x1F4FF, 0x1F502, prExtendedPictographic}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button - {0x1F503, 0x1F503, prExtendedPictographic}, // E0.6 [1] (🔃) clockwise vertical arrows - {0x1F504, 0x1F507, prExtendedPictographic}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker - {0x1F508, 0x1F508, prExtendedPictographic}, // E0.7 [1] (🔈) speaker low volume - {0x1F509, 0x1F509, prExtendedPictographic}, // E1.0 [1] (🔉) speaker medium volume - {0x1F50A, 0x1F514, prExtendedPictographic}, // E0.6 [11] (🔊..🔔) speaker high volume..bell - {0x1F515, 0x1F515, prExtendedPictographic}, // E1.0 [1] (🔕) bell with slash - {0x1F516, 0x1F52B, prExtendedPictographic}, // E0.6 [22] (🔖..🔫) bookmark..water pistol - {0x1F52C, 0x1F52D, prExtendedPictographic}, // E1.0 [2] (🔬..🔭) microscope..telescope - {0x1F52E, 0x1F53D, prExtendedPictographic}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button - {0x1F546, 0x1F548, prExtendedPictographic}, // E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS - {0x1F549, 0x1F54A, prExtendedPictographic}, // E0.7 [2] (🕉️..🕊️) om..dove - {0x1F54B, 0x1F54E, prExtendedPictographic}, // E1.0 [4] (🕋..🕎) kaaba..menorah - {0x1F54F, 0x1F54F, prExtendedPictographic}, // E0.0 [1] (🕏) BOWL OF HYGIEIA - {0x1F550, 0x1F55B, prExtendedPictographic}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock - {0x1F55C, 0x1F567, prExtendedPictographic}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty - {0x1F568, 0x1F56E, prExtendedPictographic}, // E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK - {0x1F56F, 0x1F570, prExtendedPictographic}, // E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock - {0x1F571, 0x1F572, prExtendedPictographic}, // E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY - {0x1F573, 0x1F579, prExtendedPictographic}, // E0.7 [7] (🕳️..🕹️) hole..joystick - {0x1F57A, 0x1F57A, prExtendedPictographic}, // E3.0 [1] (🕺) man dancing - {0x1F57B, 0x1F586, prExtendedPictographic}, // E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE - {0x1F587, 0x1F587, prExtendedPictographic}, // E0.7 [1] (🖇️) linked paperclips - {0x1F588, 0x1F589, prExtendedPictographic}, // E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL - {0x1F58A, 0x1F58D, prExtendedPictographic}, // E0.7 [4] (🖊️..🖍️) pen..crayon - {0x1F58E, 0x1F58F, prExtendedPictographic}, // E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN - {0x1F590, 0x1F590, prExtendedPictographic}, // E0.7 [1] (🖐️) hand with fingers splayed - {0x1F591, 0x1F594, prExtendedPictographic}, // E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND - {0x1F595, 0x1F596, prExtendedPictographic}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute - {0x1F597, 0x1F5A3, prExtendedPictographic}, // E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX - {0x1F5A4, 0x1F5A4, prExtendedPictographic}, // E3.0 [1] (🖤) black heart - {0x1F5A5, 0x1F5A5, prExtendedPictographic}, // E0.7 [1] (🖥️) desktop computer - {0x1F5A6, 0x1F5A7, prExtendedPictographic}, // E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS - {0x1F5A8, 0x1F5A8, prExtendedPictographic}, // E0.7 [1] (🖨️) printer - {0x1F5A9, 0x1F5B0, prExtendedPictographic}, // E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE - {0x1F5B1, 0x1F5B2, prExtendedPictographic}, // E0.7 [2] (🖱️..🖲️) computer mouse..trackball - {0x1F5B3, 0x1F5BB, prExtendedPictographic}, // E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE - {0x1F5BC, 0x1F5BC, prExtendedPictographic}, // E0.7 [1] (🖼️) framed picture - {0x1F5BD, 0x1F5C1, prExtendedPictographic}, // E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER - {0x1F5C2, 0x1F5C4, prExtendedPictographic}, // E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet - {0x1F5C5, 0x1F5D0, prExtendedPictographic}, // E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES - {0x1F5D1, 0x1F5D3, prExtendedPictographic}, // E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar - {0x1F5D4, 0x1F5DB, prExtendedPictographic}, // E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL - {0x1F5DC, 0x1F5DE, prExtendedPictographic}, // E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper - {0x1F5DF, 0x1F5E0, prExtendedPictographic}, // E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART - {0x1F5E1, 0x1F5E1, prExtendedPictographic}, // E0.7 [1] (🗡️) dagger - {0x1F5E2, 0x1F5E2, prExtendedPictographic}, // E0.0 [1] (🗢) LIPS - {0x1F5E3, 0x1F5E3, prExtendedPictographic}, // E0.7 [1] (🗣️) speaking head - {0x1F5E4, 0x1F5E7, prExtendedPictographic}, // E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT - {0x1F5E8, 0x1F5E8, prExtendedPictographic}, // E2.0 [1] (🗨️) left speech bubble - {0x1F5E9, 0x1F5EE, prExtendedPictographic}, // E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE - {0x1F5EF, 0x1F5EF, prExtendedPictographic}, // E0.7 [1] (🗯️) right anger bubble - {0x1F5F0, 0x1F5F2, prExtendedPictographic}, // E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD - {0x1F5F3, 0x1F5F3, prExtendedPictographic}, // E0.7 [1] (🗳️) ballot box with ballot - {0x1F5F4, 0x1F5F9, prExtendedPictographic}, // E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK - {0x1F5FA, 0x1F5FA, prExtendedPictographic}, // E0.7 [1] (🗺️) world map - {0x1F5FB, 0x1F5FF, prExtendedPictographic}, // E0.6 [5] (🗻..🗿) mount fuji..moai - {0x1F600, 0x1F600, prExtendedPictographic}, // E1.0 [1] (😀) grinning face - {0x1F601, 0x1F606, prExtendedPictographic}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face - {0x1F607, 0x1F608, prExtendedPictographic}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns - {0x1F609, 0x1F60D, prExtendedPictographic}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes - {0x1F60E, 0x1F60E, prExtendedPictographic}, // E1.0 [1] (😎) smiling face with sunglasses - {0x1F60F, 0x1F60F, prExtendedPictographic}, // E0.6 [1] (😏) smirking face - {0x1F610, 0x1F610, prExtendedPictographic}, // E0.7 [1] (😐) neutral face - {0x1F611, 0x1F611, prExtendedPictographic}, // E1.0 [1] (😑) expressionless face - {0x1F612, 0x1F614, prExtendedPictographic}, // E0.6 [3] (😒..😔) unamused face..pensive face - {0x1F615, 0x1F615, prExtendedPictographic}, // E1.0 [1] (😕) confused face - {0x1F616, 0x1F616, prExtendedPictographic}, // E0.6 [1] (😖) confounded face - {0x1F617, 0x1F617, prExtendedPictographic}, // E1.0 [1] (😗) kissing face - {0x1F618, 0x1F618, prExtendedPictographic}, // E0.6 [1] (😘) face blowing a kiss - {0x1F619, 0x1F619, prExtendedPictographic}, // E1.0 [1] (😙) kissing face with smiling eyes - {0x1F61A, 0x1F61A, prExtendedPictographic}, // E0.6 [1] (😚) kissing face with closed eyes - {0x1F61B, 0x1F61B, prExtendedPictographic}, // E1.0 [1] (😛) face with tongue - {0x1F61C, 0x1F61E, prExtendedPictographic}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face - {0x1F61F, 0x1F61F, prExtendedPictographic}, // E1.0 [1] (😟) worried face - {0x1F620, 0x1F625, prExtendedPictographic}, // E0.6 [6] (😠..😥) angry face..sad but relieved face - {0x1F626, 0x1F627, prExtendedPictographic}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face - {0x1F628, 0x1F62B, prExtendedPictographic}, // E0.6 [4] (😨..😫) fearful face..tired face - {0x1F62C, 0x1F62C, prExtendedPictographic}, // E1.0 [1] (😬) grimacing face - {0x1F62D, 0x1F62D, prExtendedPictographic}, // E0.6 [1] (😭) loudly crying face - {0x1F62E, 0x1F62F, prExtendedPictographic}, // E1.0 [2] (😮..😯) face with open mouth..hushed face - {0x1F630, 0x1F633, prExtendedPictographic}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face - {0x1F634, 0x1F634, prExtendedPictographic}, // E1.0 [1] (😴) sleeping face - {0x1F635, 0x1F635, prExtendedPictographic}, // E0.6 [1] (😵) face with crossed-out eyes - {0x1F636, 0x1F636, prExtendedPictographic}, // E1.0 [1] (😶) face without mouth - {0x1F637, 0x1F640, prExtendedPictographic}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat - {0x1F641, 0x1F644, prExtendedPictographic}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes - {0x1F645, 0x1F64F, prExtendedPictographic}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands - {0x1F680, 0x1F680, prExtendedPictographic}, // E0.6 [1] (🚀) rocket - {0x1F681, 0x1F682, prExtendedPictographic}, // E1.0 [2] (🚁..🚂) helicopter..locomotive - {0x1F683, 0x1F685, prExtendedPictographic}, // E0.6 [3] (🚃..🚅) railway car..bullet train - {0x1F686, 0x1F686, prExtendedPictographic}, // E1.0 [1] (🚆) train - {0x1F687, 0x1F687, prExtendedPictographic}, // E0.6 [1] (🚇) metro - {0x1F688, 0x1F688, prExtendedPictographic}, // E1.0 [1] (🚈) light rail - {0x1F689, 0x1F689, prExtendedPictographic}, // E0.6 [1] (🚉) station - {0x1F68A, 0x1F68B, prExtendedPictographic}, // E1.0 [2] (🚊..🚋) tram..tram car - {0x1F68C, 0x1F68C, prExtendedPictographic}, // E0.6 [1] (🚌) bus - {0x1F68D, 0x1F68D, prExtendedPictographic}, // E0.7 [1] (🚍) oncoming bus - {0x1F68E, 0x1F68E, prExtendedPictographic}, // E1.0 [1] (🚎) trolleybus - {0x1F68F, 0x1F68F, prExtendedPictographic}, // E0.6 [1] (🚏) bus stop - {0x1F690, 0x1F690, prExtendedPictographic}, // E1.0 [1] (🚐) minibus - {0x1F691, 0x1F693, prExtendedPictographic}, // E0.6 [3] (🚑..🚓) ambulance..police car - {0x1F694, 0x1F694, prExtendedPictographic}, // E0.7 [1] (🚔) oncoming police car - {0x1F695, 0x1F695, prExtendedPictographic}, // E0.6 [1] (🚕) taxi - {0x1F696, 0x1F696, prExtendedPictographic}, // E1.0 [1] (🚖) oncoming taxi - {0x1F697, 0x1F697, prExtendedPictographic}, // E0.6 [1] (🚗) automobile - {0x1F698, 0x1F698, prExtendedPictographic}, // E0.7 [1] (🚘) oncoming automobile - {0x1F699, 0x1F69A, prExtendedPictographic}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck - {0x1F69B, 0x1F6A1, prExtendedPictographic}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway - {0x1F6A2, 0x1F6A2, prExtendedPictographic}, // E0.6 [1] (🚢) ship - {0x1F6A3, 0x1F6A3, prExtendedPictographic}, // E1.0 [1] (🚣) person rowing boat - {0x1F6A4, 0x1F6A5, prExtendedPictographic}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light - {0x1F6A6, 0x1F6A6, prExtendedPictographic}, // E1.0 [1] (🚦) vertical traffic light - {0x1F6A7, 0x1F6AD, prExtendedPictographic}, // E0.6 [7] (🚧..🚭) construction..no smoking - {0x1F6AE, 0x1F6B1, prExtendedPictographic}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water - {0x1F6B2, 0x1F6B2, prExtendedPictographic}, // E0.6 [1] (🚲) bicycle - {0x1F6B3, 0x1F6B5, prExtendedPictographic}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking - {0x1F6B6, 0x1F6B6, prExtendedPictographic}, // E0.6 [1] (🚶) person walking - {0x1F6B7, 0x1F6B8, prExtendedPictographic}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing - {0x1F6B9, 0x1F6BE, prExtendedPictographic}, // E0.6 [6] (🚹..🚾) men’s room..water closet - {0x1F6BF, 0x1F6BF, prExtendedPictographic}, // E1.0 [1] (🚿) shower - {0x1F6C0, 0x1F6C0, prExtendedPictographic}, // E0.6 [1] (🛀) person taking bath - {0x1F6C1, 0x1F6C5, prExtendedPictographic}, // E1.0 [5] (🛁..🛅) bathtub..left luggage - {0x1F6C6, 0x1F6CA, prExtendedPictographic}, // E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL - {0x1F6CB, 0x1F6CB, prExtendedPictographic}, // E0.7 [1] (🛋️) couch and lamp - {0x1F6CC, 0x1F6CC, prExtendedPictographic}, // E1.0 [1] (🛌) person in bed - {0x1F6CD, 0x1F6CF, prExtendedPictographic}, // E0.7 [3] (🛍️..🛏️) shopping bags..bed - {0x1F6D0, 0x1F6D0, prExtendedPictographic}, // E1.0 [1] (🛐) place of worship - {0x1F6D1, 0x1F6D2, prExtendedPictographic}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart - {0x1F6D3, 0x1F6D4, prExtendedPictographic}, // E0.0 [2] (🛓..🛔) STUPA..PAGODA - {0x1F6D5, 0x1F6D5, prExtendedPictographic}, // E12.0 [1] (🛕) hindu temple - {0x1F6D6, 0x1F6D7, prExtendedPictographic}, // E13.0 [2] (🛖..🛗) hut..elevator - {0x1F6D8, 0x1F6DB, prExtendedPictographic}, // E0.0 [4] (🛘..🛛) <reserved-1F6D8>..<reserved-1F6DB> - {0x1F6DC, 0x1F6DC, prExtendedPictographic}, // E15.0 [1] (🛜) wireless - {0x1F6DD, 0x1F6DF, prExtendedPictographic}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy - {0x1F6E0, 0x1F6E5, prExtendedPictographic}, // E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat - {0x1F6E6, 0x1F6E8, prExtendedPictographic}, // E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE - {0x1F6E9, 0x1F6E9, prExtendedPictographic}, // E0.7 [1] (🛩️) small airplane - {0x1F6EA, 0x1F6EA, prExtendedPictographic}, // E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE - {0x1F6EB, 0x1F6EC, prExtendedPictographic}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival - {0x1F6ED, 0x1F6EF, prExtendedPictographic}, // E0.0 [3] (🛭..🛯) <reserved-1F6ED>..<reserved-1F6EF> - {0x1F6F0, 0x1F6F0, prExtendedPictographic}, // E0.7 [1] (🛰️) satellite - {0x1F6F1, 0x1F6F2, prExtendedPictographic}, // E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE - {0x1F6F3, 0x1F6F3, prExtendedPictographic}, // E0.7 [1] (🛳️) passenger ship - {0x1F6F4, 0x1F6F6, prExtendedPictographic}, // E3.0 [3] (🛴..🛶) kick scooter..canoe - {0x1F6F7, 0x1F6F8, prExtendedPictographic}, // E5.0 [2] (🛷..🛸) sled..flying saucer - {0x1F6F9, 0x1F6F9, prExtendedPictographic}, // E11.0 [1] (🛹) skateboard - {0x1F6FA, 0x1F6FA, prExtendedPictographic}, // E12.0 [1] (🛺) auto rickshaw - {0x1F6FB, 0x1F6FC, prExtendedPictographic}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate - {0x1F6FD, 0x1F6FF, prExtendedPictographic}, // E0.0 [3] (🛽..🛿) <reserved-1F6FD>..<reserved-1F6FF> - {0x1F774, 0x1F77F, prExtendedPictographic}, // E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS - {0x1F7D5, 0x1F7DF, prExtendedPictographic}, // E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<reserved-1F7DF> - {0x1F7E0, 0x1F7EB, prExtendedPictographic}, // E12.0 [12] (🟠..🟫) orange circle..brown square - {0x1F7EC, 0x1F7EF, prExtendedPictographic}, // E0.0 [4] (🟬..🟯) <reserved-1F7EC>..<reserved-1F7EF> - {0x1F7F0, 0x1F7F0, prExtendedPictographic}, // E14.0 [1] (🟰) heavy equals sign - {0x1F7F1, 0x1F7FF, prExtendedPictographic}, // E0.0 [15] (🟱..🟿) <reserved-1F7F1>..<reserved-1F7FF> - {0x1F80C, 0x1F80F, prExtendedPictographic}, // E0.0 [4] (🠌..🠏) <reserved-1F80C>..<reserved-1F80F> - {0x1F848, 0x1F84F, prExtendedPictographic}, // E0.0 [8] (🡈..🡏) <reserved-1F848>..<reserved-1F84F> - {0x1F85A, 0x1F85F, prExtendedPictographic}, // E0.0 [6] (🡚..🡟) <reserved-1F85A>..<reserved-1F85F> - {0x1F888, 0x1F88F, prExtendedPictographic}, // E0.0 [8] (🢈..🢏) <reserved-1F888>..<reserved-1F88F> - {0x1F8AE, 0x1F8FF, prExtendedPictographic}, // E0.0 [82] (🢮..🣿) <reserved-1F8AE>..<reserved-1F8FF> - {0x1F90C, 0x1F90C, prExtendedPictographic}, // E13.0 [1] (🤌) pinched fingers - {0x1F90D, 0x1F90F, prExtendedPictographic}, // E12.0 [3] (🤍..🤏) white heart..pinching hand - {0x1F910, 0x1F918, prExtendedPictographic}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns - {0x1F919, 0x1F91E, prExtendedPictographic}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers - {0x1F91F, 0x1F91F, prExtendedPictographic}, // E5.0 [1] (🤟) love-you gesture - {0x1F920, 0x1F927, prExtendedPictographic}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face - {0x1F928, 0x1F92F, prExtendedPictographic}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head - {0x1F930, 0x1F930, prExtendedPictographic}, // E3.0 [1] (🤰) pregnant woman - {0x1F931, 0x1F932, prExtendedPictographic}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together - {0x1F933, 0x1F93A, prExtendedPictographic}, // E3.0 [8] (🤳..🤺) selfie..person fencing - {0x1F93C, 0x1F93E, prExtendedPictographic}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball - {0x1F93F, 0x1F93F, prExtendedPictographic}, // E12.0 [1] (🤿) diving mask - {0x1F940, 0x1F945, prExtendedPictographic}, // E3.0 [6] (🥀..🥅) wilted flower..goal net - {0x1F947, 0x1F94B, prExtendedPictographic}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform - {0x1F94C, 0x1F94C, prExtendedPictographic}, // E5.0 [1] (🥌) curling stone - {0x1F94D, 0x1F94F, prExtendedPictographic}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc - {0x1F950, 0x1F95E, prExtendedPictographic}, // E3.0 [15] (🥐..🥞) croissant..pancakes - {0x1F95F, 0x1F96B, prExtendedPictographic}, // E5.0 [13] (🥟..🥫) dumpling..canned food - {0x1F96C, 0x1F970, prExtendedPictographic}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts - {0x1F971, 0x1F971, prExtendedPictographic}, // E12.0 [1] (🥱) yawning face - {0x1F972, 0x1F972, prExtendedPictographic}, // E13.0 [1] (🥲) smiling face with tear - {0x1F973, 0x1F976, prExtendedPictographic}, // E11.0 [4] (🥳..🥶) partying face..cold face - {0x1F977, 0x1F978, prExtendedPictographic}, // E13.0 [2] (🥷..🥸) ninja..disguised face - {0x1F979, 0x1F979, prExtendedPictographic}, // E14.0 [1] (🥹) face holding back tears - {0x1F97A, 0x1F97A, prExtendedPictographic}, // E11.0 [1] (🥺) pleading face - {0x1F97B, 0x1F97B, prExtendedPictographic}, // E12.0 [1] (🥻) sari - {0x1F97C, 0x1F97F, prExtendedPictographic}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe - {0x1F980, 0x1F984, prExtendedPictographic}, // E1.0 [5] (🦀..🦄) crab..unicorn - {0x1F985, 0x1F991, prExtendedPictographic}, // E3.0 [13] (🦅..🦑) eagle..squid - {0x1F992, 0x1F997, prExtendedPictographic}, // E5.0 [6] (🦒..🦗) giraffe..cricket - {0x1F998, 0x1F9A2, prExtendedPictographic}, // E11.0 [11] (🦘..🦢) kangaroo..swan - {0x1F9A3, 0x1F9A4, prExtendedPictographic}, // E13.0 [2] (🦣..🦤) mammoth..dodo - {0x1F9A5, 0x1F9AA, prExtendedPictographic}, // E12.0 [6] (🦥..🦪) sloth..oyster - {0x1F9AB, 0x1F9AD, prExtendedPictographic}, // E13.0 [3] (🦫..🦭) beaver..seal - {0x1F9AE, 0x1F9AF, prExtendedPictographic}, // E12.0 [2] (🦮..🦯) guide dog..white cane - {0x1F9B0, 0x1F9B9, prExtendedPictographic}, // E11.0 [10] (🦰..🦹) red hair..supervillain - {0x1F9BA, 0x1F9BF, prExtendedPictographic}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg - {0x1F9C0, 0x1F9C0, prExtendedPictographic}, // E1.0 [1] (🧀) cheese wedge - {0x1F9C1, 0x1F9C2, prExtendedPictographic}, // E11.0 [2] (🧁..🧂) cupcake..salt - {0x1F9C3, 0x1F9CA, prExtendedPictographic}, // E12.0 [8] (🧃..🧊) beverage box..ice - {0x1F9CB, 0x1F9CB, prExtendedPictographic}, // E13.0 [1] (🧋) bubble tea - {0x1F9CC, 0x1F9CC, prExtendedPictographic}, // E14.0 [1] (🧌) troll - {0x1F9CD, 0x1F9CF, prExtendedPictographic}, // E12.0 [3] (🧍..🧏) person standing..deaf person - {0x1F9D0, 0x1F9E6, prExtendedPictographic}, // E5.0 [23] (🧐..🧦) face with monocle..socks - {0x1F9E7, 0x1F9FF, prExtendedPictographic}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet - {0x1FA00, 0x1FA6F, prExtendedPictographic}, // E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING..<reserved-1FA6F> - {0x1FA70, 0x1FA73, prExtendedPictographic}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts - {0x1FA74, 0x1FA74, prExtendedPictographic}, // E13.0 [1] (🩴) thong sandal - {0x1FA75, 0x1FA77, prExtendedPictographic}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart - {0x1FA78, 0x1FA7A, prExtendedPictographic}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope - {0x1FA7B, 0x1FA7C, prExtendedPictographic}, // E14.0 [2] (🩻..🩼) x-ray..crutch - {0x1FA7D, 0x1FA7F, prExtendedPictographic}, // E0.0 [3] (🩽..🩿) <reserved-1FA7D>..<reserved-1FA7F> - {0x1FA80, 0x1FA82, prExtendedPictographic}, // E12.0 [3] (🪀..🪂) yo-yo..parachute - {0x1FA83, 0x1FA86, prExtendedPictographic}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls - {0x1FA87, 0x1FA88, prExtendedPictographic}, // E15.0 [2] (🪇..🪈) maracas..flute - {0x1FA89, 0x1FA8F, prExtendedPictographic}, // E0.0 [7] (🪉..🪏) <reserved-1FA89>..<reserved-1FA8F> - {0x1FA90, 0x1FA95, prExtendedPictographic}, // E12.0 [6] (🪐..🪕) ringed planet..banjo - {0x1FA96, 0x1FAA8, prExtendedPictographic}, // E13.0 [19] (🪖..🪨) military helmet..rock - {0x1FAA9, 0x1FAAC, prExtendedPictographic}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa - {0x1FAAD, 0x1FAAF, prExtendedPictographic}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda - {0x1FAB0, 0x1FAB6, prExtendedPictographic}, // E13.0 [7] (🪰..🪶) fly..feather - {0x1FAB7, 0x1FABA, prExtendedPictographic}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs - {0x1FABB, 0x1FABD, prExtendedPictographic}, // E15.0 [3] (🪻..🪽) hyacinth..wing - {0x1FABE, 0x1FABE, prExtendedPictographic}, // E0.0 [1] (🪾) <reserved-1FABE> - {0x1FABF, 0x1FABF, prExtendedPictographic}, // E15.0 [1] (🪿) goose - {0x1FAC0, 0x1FAC2, prExtendedPictographic}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging - {0x1FAC3, 0x1FAC5, prExtendedPictographic}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown - {0x1FAC6, 0x1FACD, prExtendedPictographic}, // E0.0 [8] (🫆..🫍) <reserved-1FAC6>..<reserved-1FACD> - {0x1FACE, 0x1FACF, prExtendedPictographic}, // E15.0 [2] (🫎..🫏) moose..donkey - {0x1FAD0, 0x1FAD6, prExtendedPictographic}, // E13.0 [7] (🫐..🫖) blueberries..teapot - {0x1FAD7, 0x1FAD9, prExtendedPictographic}, // E14.0 [3] (🫗..🫙) pouring liquid..jar - {0x1FADA, 0x1FADB, prExtendedPictographic}, // E15.0 [2] (🫚..🫛) ginger root..pea pod - {0x1FADC, 0x1FADF, prExtendedPictographic}, // E0.0 [4] (🫜..🫟) <reserved-1FADC>..<reserved-1FADF> - {0x1FAE0, 0x1FAE7, prExtendedPictographic}, // E14.0 [8] (🫠..🫧) melting face..bubbles - {0x1FAE8, 0x1FAE8, prExtendedPictographic}, // E15.0 [1] (🫨) shaking face - {0x1FAE9, 0x1FAEF, prExtendedPictographic}, // E0.0 [7] (🫩..🫯) <reserved-1FAE9>..<reserved-1FAEF> - {0x1FAF0, 0x1FAF6, prExtendedPictographic}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands - {0x1FAF7, 0x1FAF8, prExtendedPictographic}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand - {0x1FAF9, 0x1FAFF, prExtendedPictographic}, // E0.0 [7] (🫹..🫿) <reserved-1FAF9>..<reserved-1FAFF> - {0x1FBF0, 0x1FBF9, prNumeric}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE - {0x1FC00, 0x1FFFD, prExtendedPictographic}, // E0.0[1022] (🰀..🿽) <reserved-1FC00>..<reserved-1FFFD> - {0xE0001, 0xE0001, prFormat}, // Cf LANGUAGE TAG - {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG - {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -} diff --git a/vendor/github.com/rivo/uniseg/wordrules.go b/vendor/github.com/rivo/uniseg/wordrules.go deleted file mode 100644 index 57a8c68..0000000 --- a/vendor/github.com/rivo/uniseg/wordrules.go +++ /dev/null @@ -1,282 +0,0 @@ -package uniseg - -import "unicode/utf8" - -// The states of the word break parser. -const ( - wbAny = iota - wbCR - wbLF - wbNewline - wbWSegSpace - wbHebrewLetter - wbALetter - wbWB7 - wbWB7c - wbNumeric - wbWB11 - wbKatakana - wbExtendNumLet - wbOddRI - wbEvenRI - wbZWJBit = 16 // This bit is set for any states followed by at least one zero-width joiner (see WB4 and WB3c). -) - -// wbTransitions implements the word break parser's state transitions. It's -// anologous to [grTransitions], see comments there for details. -// -// Unicode version 15.0.0. -func wbTransitions(state, prop int) (newState int, wordBreak bool, rule int) { - switch uint64(state) | uint64(prop)<<32 { - // WB3b. - case wbAny | prNewline<<32: - return wbNewline, true, 32 - case wbAny | prCR<<32: - return wbCR, true, 32 - case wbAny | prLF<<32: - return wbLF, true, 32 - - // WB3a. - case wbNewline | prAny<<32: - return wbAny, true, 31 - case wbCR | prAny<<32: - return wbAny, true, 31 - case wbLF | prAny<<32: - return wbAny, true, 31 - - // WB3. - case wbCR | prLF<<32: - return wbLF, false, 30 - - // WB3d. - case wbAny | prWSegSpace<<32: - return wbWSegSpace, true, 9990 - case wbWSegSpace | prWSegSpace<<32: - return wbWSegSpace, false, 34 - - // WB5. - case wbAny | prALetter<<32: - return wbALetter, true, 9990 - case wbAny | prHebrewLetter<<32: - return wbHebrewLetter, true, 9990 - case wbALetter | prALetter<<32: - return wbALetter, false, 50 - case wbALetter | prHebrewLetter<<32: - return wbHebrewLetter, false, 50 - case wbHebrewLetter | prALetter<<32: - return wbALetter, false, 50 - case wbHebrewLetter | prHebrewLetter<<32: - return wbHebrewLetter, false, 50 - - // WB7. Transitions to wbWB7 handled by transitionWordBreakState(). - case wbWB7 | prALetter<<32: - return wbALetter, false, 70 - case wbWB7 | prHebrewLetter<<32: - return wbHebrewLetter, false, 70 - - // WB7a. - case wbHebrewLetter | prSingleQuote<<32: - return wbAny, false, 71 - - // WB7c. Transitions to wbWB7c handled by transitionWordBreakState(). - case wbWB7c | prHebrewLetter<<32: - return wbHebrewLetter, false, 73 - - // WB8. - case wbAny | prNumeric<<32: - return wbNumeric, true, 9990 - case wbNumeric | prNumeric<<32: - return wbNumeric, false, 80 - - // WB9. - case wbALetter | prNumeric<<32: - return wbNumeric, false, 90 - case wbHebrewLetter | prNumeric<<32: - return wbNumeric, false, 90 - - // WB10. - case wbNumeric | prALetter<<32: - return wbALetter, false, 100 - case wbNumeric | prHebrewLetter<<32: - return wbHebrewLetter, false, 100 - - // WB11. Transitions to wbWB11 handled by transitionWordBreakState(). - case wbWB11 | prNumeric<<32: - return wbNumeric, false, 110 - - // WB13. - case wbAny | prKatakana<<32: - return wbKatakana, true, 9990 - case wbKatakana | prKatakana<<32: - return wbKatakana, false, 130 - - // WB13a. - case wbAny | prExtendNumLet<<32: - return wbExtendNumLet, true, 9990 - case wbALetter | prExtendNumLet<<32: - return wbExtendNumLet, false, 131 - case wbHebrewLetter | prExtendNumLet<<32: - return wbExtendNumLet, false, 131 - case wbNumeric | prExtendNumLet<<32: - return wbExtendNumLet, false, 131 - case wbKatakana | prExtendNumLet<<32: - return wbExtendNumLet, false, 131 - case wbExtendNumLet | prExtendNumLet<<32: - return wbExtendNumLet, false, 131 - - // WB13b. - case wbExtendNumLet | prALetter<<32: - return wbALetter, false, 132 - case wbExtendNumLet | prHebrewLetter<<32: - return wbHebrewLetter, false, 132 - case wbExtendNumLet | prNumeric<<32: - return wbNumeric, false, 132 - case wbExtendNumLet | prKatakana<<32: - return wbKatakana, false, 132 - - default: - return -1, false, -1 - } -} - -// transitionWordBreakState determines the new state of the word break parser -// given the current state and the next code point. It also returns whether a -// word boundary was detected. If more than one code point is needed to -// determine the new state, the byte slice or the string starting after rune "r" -// can be used (whichever is not nil or empty) for further lookups. -func transitionWordBreakState(state int, r rune, b []byte, str string) (newState int, wordBreak bool) { - // Determine the property of the next character. - nextProperty := property(workBreakCodePoints, r) - - // "Replacing Ignore Rules". - if nextProperty == prZWJ { - // WB4 (for zero-width joiners). - if state == wbNewline || state == wbCR || state == wbLF { - return wbAny | wbZWJBit, true // Make sure we don't apply WB4 to WB3a. - } - if state < 0 { - return wbAny | wbZWJBit, false - } - return state | wbZWJBit, false - } else if nextProperty == prExtend || nextProperty == prFormat { - // WB4 (for Extend and Format). - if state == wbNewline || state == wbCR || state == wbLF { - return wbAny, true // Make sure we don't apply WB4 to WB3a. - } - if state == wbWSegSpace || state == wbAny|wbZWJBit { - return wbAny, false // We don't break but this is also not WB3d or WB3c. - } - if state < 0 { - return wbAny, false - } - return state, false - } else if nextProperty == prExtendedPictographic && state >= 0 && state&wbZWJBit != 0 { - // WB3c. - return wbAny, false - } - if state >= 0 { - state = state &^ wbZWJBit - } - - // Find the applicable transition in the table. - var rule int - newState, wordBreak, rule = wbTransitions(state, nextProperty) - if newState < 0 { - // No specific transition found. Try the less specific ones. - anyPropState, anyPropWordBreak, anyPropRule := wbTransitions(state, prAny) - anyStateState, anyStateWordBreak, anyStateRule := wbTransitions(wbAny, nextProperty) - if anyPropState >= 0 && anyStateState >= 0 { - // Both apply. We'll use a mix (see comments for grTransitions). - newState, wordBreak, rule = anyStateState, anyStateWordBreak, anyStateRule - if anyPropRule < anyStateRule { - wordBreak, rule = anyPropWordBreak, anyPropRule - } - } else if anyPropState >= 0 { - // We only have a specific state. - newState, wordBreak, rule = anyPropState, anyPropWordBreak, anyPropRule - // This branch will probably never be reached because okAnyState will - // always be true given the current transition map. But we keep it here - // for future modifications to the transition map where this may not be - // true anymore. - } else if anyStateState >= 0 { - // We only have a specific property. - newState, wordBreak, rule = anyStateState, anyStateWordBreak, anyStateRule - } else { - // No known transition. WB999: Any ÷ Any. - newState, wordBreak, rule = wbAny, true, 9990 - } - } - - // For those rules that need to look up runes further in the string, we - // determine the property after nextProperty, skipping over Format, Extend, - // and ZWJ (according to WB4). It's -1 if not needed, if such a rune cannot - // be determined (because the text ends or the rune is faulty). - farProperty := -1 - if rule > 60 && - (state == wbALetter || state == wbHebrewLetter || state == wbNumeric) && - (nextProperty == prMidLetter || nextProperty == prMidNumLet || nextProperty == prSingleQuote || // WB6. - nextProperty == prDoubleQuote || // WB7b. - nextProperty == prMidNum) { // WB12. - for { - var ( - r rune - length int - ) - if b != nil { // Byte slice version. - r, length = utf8.DecodeRune(b) - b = b[length:] - } else { // String version. - r, length = utf8.DecodeRuneInString(str) - str = str[length:] - } - if r == utf8.RuneError { - break - } - prop := property(workBreakCodePoints, r) - if prop == prExtend || prop == prFormat || prop == prZWJ { - continue - } - farProperty = prop - break - } - } - - // WB6. - if rule > 60 && - (state == wbALetter || state == wbHebrewLetter) && - (nextProperty == prMidLetter || nextProperty == prMidNumLet || nextProperty == prSingleQuote) && - (farProperty == prALetter || farProperty == prHebrewLetter) { - return wbWB7, false - } - - // WB7b. - if rule > 72 && - state == wbHebrewLetter && - nextProperty == prDoubleQuote && - farProperty == prHebrewLetter { - return wbWB7c, false - } - - // WB12. - if rule > 120 && - state == wbNumeric && - (nextProperty == prMidNum || nextProperty == prMidNumLet || nextProperty == prSingleQuote) && - farProperty == prNumeric { - return wbWB11, false - } - - // WB15 and WB16. - if newState == wbAny && nextProperty == prRegionalIndicator { - if state != wbOddRI && state != wbEvenRI { // Includes state == -1. - // Transition into the first RI. - return wbOddRI, true - } - if state == wbOddRI { - // Don't break pairs of Regional Indicators. - return wbEvenRI, false - } - return wbOddRI, true // We can break after a pair. - } - - return -} diff --git a/vendor/github.com/ssor/bom/.travis.yml b/vendor/github.com/ssor/bom/.travis.yml deleted file mode 100644 index 6c7f48e..0000000 --- a/vendor/github.com/ssor/bom/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go -go: - - tip - - 1.8 - - 1.7 - - 1.6 - - 1.5 - - 1.4 - - 1.3 - - 1.2 -notifications: - email: - on_success: change - on_failure: always diff --git a/vendor/github.com/ssor/bom/LICENSE b/vendor/github.com/ssor/bom/LICENSE deleted file mode 100644 index 374f685..0000000 --- a/vendor/github.com/ssor/bom/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Asher - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/ssor/bom/README.md b/vendor/github.com/ssor/bom/README.md deleted file mode 100644 index 2dcc289..0000000 --- a/vendor/github.com/ssor/bom/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# bom -small tools for cleaning bom from byte array or reader - - -## Installation - -```sh -$ go get github.com/ssor/bom -``` - -## How to Use - - -``` - bs := []byte{bom0, bom1, bom2, 0x11} - result := CleanBom(bs) -``` - -``` - bs := []byte{bom0, bom1, bom2, 0x11} - result := NewReaderWithoutBom(bytes.NewReader(bs)) - -``` \ No newline at end of file diff --git a/vendor/github.com/ssor/bom/bom.go b/vendor/github.com/ssor/bom/bom.go deleted file mode 100644 index 582657f..0000000 --- a/vendor/github.com/ssor/bom/bom.go +++ /dev/null @@ -1,33 +0,0 @@ -package bom - -import ( - "bytes" - "io" -) - -const ( - bom0 = 0xef - bom1 = 0xbb - bom2 = 0xbf -) - -// CleanBom returns b with the 3 byte BOM stripped off the front if it is present. -// If the BOM is not present, then b is returned. -func CleanBom(b []byte) []byte { - if len(b) >= 3 && - b[0] == bom0 && - b[1] == bom1 && - b[2] == bom2 { - return b[3:] - } - return b -} - -// NewReaderWithoutBom returns an io.Reader that will skip over initial UTF-8 byte order marks. -func NewReaderWithoutBom(r io.Reader) (io.Reader, error) { - bs, err := io.ReadAll(r) - if err != nil { - return nil, err - } - return bytes.NewReader(CleanBom(bs)), nil -} diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE deleted file mode 100644 index 2a7cf70..0000000 --- a/vendor/golang.org/x/net/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright 2009 The Go Authors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/net/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/html/atom/atom.go b/vendor/golang.org/x/net/html/atom/atom.go deleted file mode 100644 index cd0a8ac..0000000 --- a/vendor/golang.org/x/net/html/atom/atom.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package atom provides integer codes (also known as atoms) for a fixed set of -// frequently occurring HTML strings: tag names and attribute keys such as "p" -// and "id". -// -// Sharing an atom's name between all elements with the same tag can result in -// fewer string allocations when tokenizing and parsing HTML. Integer -// comparisons are also generally faster than string comparisons. -// -// The value of an atom's particular code is not guaranteed to stay the same -// between versions of this package. Neither is any ordering guaranteed: -// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to -// be dense. The only guarantees are that e.g. looking up "div" will yield -// atom.Div, calling atom.Div.String will return "div", and atom.Div != 0. -package atom // import "golang.org/x/net/html/atom" - -// Atom is an integer code for a string. The zero value maps to "". -type Atom uint32 - -// String returns the atom's name. -func (a Atom) String() string { - start := uint32(a >> 8) - n := uint32(a & 0xff) - if start+n > uint32(len(atomText)) { - return "" - } - return atomText[start : start+n] -} - -func (a Atom) string() string { - return atomText[a>>8 : a>>8+a&0xff] -} - -// fnv computes the FNV hash with an arbitrary starting value h. -func fnv(h uint32, s []byte) uint32 { - for i := range s { - h ^= uint32(s[i]) - h *= 16777619 - } - return h -} - -func match(s string, t []byte) bool { - for i, c := range t { - if s[i] != c { - return false - } - } - return true -} - -// Lookup returns the atom whose name is s. It returns zero if there is no -// such atom. The lookup is case sensitive. -func Lookup(s []byte) Atom { - if len(s) == 0 || len(s) > maxAtomLen { - return 0 - } - h := fnv(hash0, s) - if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { - return a - } - if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { - return a - } - return 0 -} - -// String returns a string whose contents are equal to s. In that sense, it is -// equivalent to string(s) but may be more efficient. -func String(s []byte) string { - if a := Lookup(s); a != 0 { - return a.String() - } - return string(s) -} diff --git a/vendor/golang.org/x/net/html/atom/table.go b/vendor/golang.org/x/net/html/atom/table.go deleted file mode 100644 index 2a93886..0000000 --- a/vendor/golang.org/x/net/html/atom/table.go +++ /dev/null @@ -1,783 +0,0 @@ -// Code generated by go generate gen.go; DO NOT EDIT. - -//go:generate go run gen.go - -package atom - -const ( - A Atom = 0x1 - Abbr Atom = 0x4 - Accept Atom = 0x1a06 - AcceptCharset Atom = 0x1a0e - Accesskey Atom = 0x2c09 - Acronym Atom = 0xaa07 - Action Atom = 0x27206 - Address Atom = 0x6f307 - Align Atom = 0xb105 - Allowfullscreen Atom = 0x2080f - Allowpaymentrequest Atom = 0xc113 - Allowusermedia Atom = 0xdd0e - Alt Atom = 0xf303 - Annotation Atom = 0x1c90a - AnnotationXml Atom = 0x1c90e - Applet Atom = 0x31906 - Area Atom = 0x35604 - Article Atom = 0x3fc07 - As Atom = 0x3c02 - Aside Atom = 0x10705 - Async Atom = 0xff05 - Audio Atom = 0x11505 - Autocomplete Atom = 0x2780c - Autofocus Atom = 0x12109 - Autoplay Atom = 0x13c08 - B Atom = 0x101 - Base Atom = 0x3b04 - Basefont Atom = 0x3b08 - Bdi Atom = 0xba03 - Bdo Atom = 0x14b03 - Bgsound Atom = 0x15e07 - Big Atom = 0x17003 - Blink Atom = 0x17305 - Blockquote Atom = 0x1870a - Body Atom = 0x2804 - Br Atom = 0x202 - Button Atom = 0x19106 - Canvas Atom = 0x10306 - Caption Atom = 0x23107 - Center Atom = 0x22006 - Challenge Atom = 0x29b09 - Charset Atom = 0x2107 - Checked Atom = 0x47907 - Cite Atom = 0x19c04 - Class Atom = 0x56405 - Code Atom = 0x5c504 - Col Atom = 0x1ab03 - Colgroup Atom = 0x1ab08 - Color Atom = 0x1bf05 - Cols Atom = 0x1c404 - Colspan Atom = 0x1c407 - Command Atom = 0x1d707 - Content Atom = 0x58b07 - Contenteditable Atom = 0x58b0f - Contextmenu Atom = 0x3800b - Controls Atom = 0x1de08 - Coords Atom = 0x1ea06 - Crossorigin Atom = 0x1fb0b - Data Atom = 0x4a504 - Datalist Atom = 0x4a508 - Datetime Atom = 0x2b808 - Dd Atom = 0x2d702 - Default Atom = 0x10a07 - Defer Atom = 0x5c705 - Del Atom = 0x45203 - Desc Atom = 0x56104 - Details Atom = 0x7207 - Dfn Atom = 0x8703 - Dialog Atom = 0xbb06 - Dir Atom = 0x9303 - Dirname Atom = 0x9307 - Disabled Atom = 0x16408 - Div Atom = 0x16b03 - Dl Atom = 0x5e602 - Download Atom = 0x46308 - Draggable Atom = 0x17a09 - Dropzone Atom = 0x40508 - Dt Atom = 0x64b02 - Em Atom = 0x6e02 - Embed Atom = 0x6e05 - Enctype Atom = 0x28d07 - Face Atom = 0x21e04 - Fieldset Atom = 0x22608 - Figcaption Atom = 0x22e0a - Figure Atom = 0x24806 - Font Atom = 0x3f04 - Footer Atom = 0xf606 - For Atom = 0x25403 - ForeignObject Atom = 0x2540d - Foreignobject Atom = 0x2610d - Form Atom = 0x26e04 - Formaction Atom = 0x26e0a - Formenctype Atom = 0x2890b - Formmethod Atom = 0x2a40a - Formnovalidate Atom = 0x2ae0e - Formtarget Atom = 0x2c00a - Frame Atom = 0x8b05 - Frameset Atom = 0x8b08 - H1 Atom = 0x15c02 - H2 Atom = 0x2de02 - H3 Atom = 0x30d02 - H4 Atom = 0x34502 - H5 Atom = 0x34f02 - H6 Atom = 0x64d02 - Head Atom = 0x33104 - Header Atom = 0x33106 - Headers Atom = 0x33107 - Height Atom = 0x5206 - Hgroup Atom = 0x2ca06 - Hidden Atom = 0x2d506 - High Atom = 0x2db04 - Hr Atom = 0x15702 - Href Atom = 0x2e004 - Hreflang Atom = 0x2e008 - Html Atom = 0x5604 - HttpEquiv Atom = 0x2e80a - I Atom = 0x601 - Icon Atom = 0x58a04 - Id Atom = 0x10902 - Iframe Atom = 0x2fc06 - Image Atom = 0x30205 - Img Atom = 0x30703 - Input Atom = 0x44b05 - Inputmode Atom = 0x44b09 - Ins Atom = 0x20403 - Integrity Atom = 0x23f09 - Is Atom = 0x16502 - Isindex Atom = 0x30f07 - Ismap Atom = 0x31605 - Itemid Atom = 0x38b06 - Itemprop Atom = 0x19d08 - Itemref Atom = 0x3cd07 - Itemscope Atom = 0x67109 - Itemtype Atom = 0x31f08 - Kbd Atom = 0xb903 - Keygen Atom = 0x3206 - Keytype Atom = 0xd607 - Kind Atom = 0x17704 - Label Atom = 0x5905 - Lang Atom = 0x2e404 - Legend Atom = 0x18106 - Li Atom = 0xb202 - Link Atom = 0x17404 - List Atom = 0x4a904 - Listing Atom = 0x4a907 - Loop Atom = 0x5d04 - Low Atom = 0xc303 - Main Atom = 0x1004 - Malignmark Atom = 0xb00a - Manifest Atom = 0x6d708 - Map Atom = 0x31803 - Mark Atom = 0xb604 - Marquee Atom = 0x32707 - Math Atom = 0x32e04 - Max Atom = 0x33d03 - Maxlength Atom = 0x33d09 - Media Atom = 0xe605 - Mediagroup Atom = 0xe60a - Menu Atom = 0x38704 - Menuitem Atom = 0x38708 - Meta Atom = 0x4b804 - Meter Atom = 0x9805 - Method Atom = 0x2a806 - Mglyph Atom = 0x30806 - Mi Atom = 0x34702 - Min Atom = 0x34703 - Minlength Atom = 0x34709 - Mn Atom = 0x2b102 - Mo Atom = 0xa402 - Ms Atom = 0x67402 - Mtext Atom = 0x35105 - Multiple Atom = 0x35f08 - Muted Atom = 0x36705 - Name Atom = 0x9604 - Nav Atom = 0x1303 - Nobr Atom = 0x3704 - Noembed Atom = 0x6c07 - Noframes Atom = 0x8908 - Nomodule Atom = 0xa208 - Nonce Atom = 0x1a605 - Noscript Atom = 0x21608 - Novalidate Atom = 0x2b20a - Object Atom = 0x26806 - Ol Atom = 0x13702 - Onabort Atom = 0x19507 - Onafterprint Atom = 0x2360c - Onautocomplete Atom = 0x2760e - Onautocompleteerror Atom = 0x27613 - Onauxclick Atom = 0x61f0a - Onbeforeprint Atom = 0x69e0d - Onbeforeunload Atom = 0x6e70e - Onblur Atom = 0x56d06 - Oncancel Atom = 0x11908 - Oncanplay Atom = 0x14d09 - Oncanplaythrough Atom = 0x14d10 - Onchange Atom = 0x41b08 - Onclick Atom = 0x2f507 - Onclose Atom = 0x36c07 - Oncontextmenu Atom = 0x37e0d - Oncopy Atom = 0x39106 - Oncuechange Atom = 0x3970b - Oncut Atom = 0x3a205 - Ondblclick Atom = 0x3a70a - Ondrag Atom = 0x3b106 - Ondragend Atom = 0x3b109 - Ondragenter Atom = 0x3ba0b - Ondragexit Atom = 0x3c50a - Ondragleave Atom = 0x3df0b - Ondragover Atom = 0x3ea0a - Ondragstart Atom = 0x3f40b - Ondrop Atom = 0x40306 - Ondurationchange Atom = 0x41310 - Onemptied Atom = 0x40a09 - Onended Atom = 0x42307 - Onerror Atom = 0x42a07 - Onfocus Atom = 0x43107 - Onhashchange Atom = 0x43d0c - Oninput Atom = 0x44907 - Oninvalid Atom = 0x45509 - Onkeydown Atom = 0x45e09 - Onkeypress Atom = 0x46b0a - Onkeyup Atom = 0x48007 - Onlanguagechange Atom = 0x48d10 - Onload Atom = 0x49d06 - Onloadeddata Atom = 0x49d0c - Onloadedmetadata Atom = 0x4b010 - Onloadend Atom = 0x4c609 - Onloadstart Atom = 0x4cf0b - Onmessage Atom = 0x4da09 - Onmessageerror Atom = 0x4da0e - Onmousedown Atom = 0x4e80b - Onmouseenter Atom = 0x4f30c - Onmouseleave Atom = 0x4ff0c - Onmousemove Atom = 0x50b0b - Onmouseout Atom = 0x5160a - Onmouseover Atom = 0x5230b - Onmouseup Atom = 0x52e09 - Onmousewheel Atom = 0x53c0c - Onoffline Atom = 0x54809 - Ononline Atom = 0x55108 - Onpagehide Atom = 0x5590a - Onpageshow Atom = 0x5730a - Onpaste Atom = 0x57f07 - Onpause Atom = 0x59a07 - Onplay Atom = 0x5a406 - Onplaying Atom = 0x5a409 - Onpopstate Atom = 0x5ad0a - Onprogress Atom = 0x5b70a - Onratechange Atom = 0x5cc0c - Onrejectionhandled Atom = 0x5d812 - Onreset Atom = 0x5ea07 - Onresize Atom = 0x5f108 - Onscroll Atom = 0x60008 - Onsecuritypolicyviolation Atom = 0x60819 - Onseeked Atom = 0x62908 - Onseeking Atom = 0x63109 - Onselect Atom = 0x63a08 - Onshow Atom = 0x64406 - Onsort Atom = 0x64f06 - Onstalled Atom = 0x65909 - Onstorage Atom = 0x66209 - Onsubmit Atom = 0x66b08 - Onsuspend Atom = 0x67b09 - Ontimeupdate Atom = 0x400c - Ontoggle Atom = 0x68408 - Onunhandledrejection Atom = 0x68c14 - Onunload Atom = 0x6ab08 - Onvolumechange Atom = 0x6b30e - Onwaiting Atom = 0x6c109 - Onwheel Atom = 0x6ca07 - Open Atom = 0x1a304 - Optgroup Atom = 0x5f08 - Optimum Atom = 0x6d107 - Option Atom = 0x6e306 - Output Atom = 0x51d06 - P Atom = 0xc01 - Param Atom = 0xc05 - Pattern Atom = 0x6607 - Picture Atom = 0x7b07 - Ping Atom = 0xef04 - Placeholder Atom = 0x1310b - Plaintext Atom = 0x1b209 - Playsinline Atom = 0x1400b - Poster Atom = 0x2cf06 - Pre Atom = 0x47003 - Preload Atom = 0x48607 - Progress Atom = 0x5b908 - Prompt Atom = 0x53606 - Public Atom = 0x58606 - Q Atom = 0xcf01 - Radiogroup Atom = 0x30a - Rb Atom = 0x3a02 - Readonly Atom = 0x35708 - Referrerpolicy Atom = 0x3d10e - Rel Atom = 0x48703 - Required Atom = 0x24c08 - Reversed Atom = 0x8008 - Rows Atom = 0x9c04 - Rowspan Atom = 0x9c07 - Rp Atom = 0x23c02 - Rt Atom = 0x19a02 - Rtc Atom = 0x19a03 - Ruby Atom = 0xfb04 - S Atom = 0x2501 - Samp Atom = 0x7804 - Sandbox Atom = 0x12907 - Scope Atom = 0x67505 - Scoped Atom = 0x67506 - Script Atom = 0x21806 - Seamless Atom = 0x37108 - Section Atom = 0x56807 - Select Atom = 0x63c06 - Selected Atom = 0x63c08 - Shape Atom = 0x1e505 - Size Atom = 0x5f504 - Sizes Atom = 0x5f505 - Slot Atom = 0x1ef04 - Small Atom = 0x20605 - Sortable Atom = 0x65108 - Sorted Atom = 0x33706 - Source Atom = 0x37806 - Spacer Atom = 0x43706 - Span Atom = 0x9f04 - Spellcheck Atom = 0x4740a - Src Atom = 0x5c003 - Srcdoc Atom = 0x5c006 - Srclang Atom = 0x5f907 - Srcset Atom = 0x6f906 - Start Atom = 0x3fa05 - Step Atom = 0x58304 - Strike Atom = 0xd206 - Strong Atom = 0x6dd06 - Style Atom = 0x6ff05 - Sub Atom = 0x66d03 - Summary Atom = 0x70407 - Sup Atom = 0x70b03 - Svg Atom = 0x70e03 - System Atom = 0x71106 - Tabindex Atom = 0x4be08 - Table Atom = 0x59505 - Target Atom = 0x2c406 - Tbody Atom = 0x2705 - Td Atom = 0x9202 - Template Atom = 0x71408 - Textarea Atom = 0x35208 - Tfoot Atom = 0xf505 - Th Atom = 0x15602 - Thead Atom = 0x33005 - Time Atom = 0x4204 - Title Atom = 0x11005 - Tr Atom = 0xcc02 - Track Atom = 0x1ba05 - Translate Atom = 0x1f209 - Tt Atom = 0x6802 - Type Atom = 0xd904 - Typemustmatch Atom = 0x2900d - U Atom = 0xb01 - Ul Atom = 0xa702 - Updateviacache Atom = 0x460e - Usemap Atom = 0x59e06 - Value Atom = 0x1505 - Var Atom = 0x16d03 - Video Atom = 0x2f105 - Wbr Atom = 0x57c03 - Width Atom = 0x64905 - Workertype Atom = 0x71c0a - Wrap Atom = 0x72604 - Xmp Atom = 0x12f03 -) - -const hash0 = 0x81cdf10e - -const maxAtomLen = 25 - -var table = [1 << 9]Atom{ - 0x1: 0xe60a, // mediagroup - 0x2: 0x2e404, // lang - 0x4: 0x2c09, // accesskey - 0x5: 0x8b08, // frameset - 0x7: 0x63a08, // onselect - 0x8: 0x71106, // system - 0xa: 0x64905, // width - 0xc: 0x2890b, // formenctype - 0xd: 0x13702, // ol - 0xe: 0x3970b, // oncuechange - 0x10: 0x14b03, // bdo - 0x11: 0x11505, // audio - 0x12: 0x17a09, // draggable - 0x14: 0x2f105, // video - 0x15: 0x2b102, // mn - 0x16: 0x38704, // menu - 0x17: 0x2cf06, // poster - 0x19: 0xf606, // footer - 0x1a: 0x2a806, // method - 0x1b: 0x2b808, // datetime - 0x1c: 0x19507, // onabort - 0x1d: 0x460e, // updateviacache - 0x1e: 0xff05, // async - 0x1f: 0x49d06, // onload - 0x21: 0x11908, // oncancel - 0x22: 0x62908, // onseeked - 0x23: 0x30205, // image - 0x24: 0x5d812, // onrejectionhandled - 0x26: 0x17404, // link - 0x27: 0x51d06, // output - 0x28: 0x33104, // head - 0x29: 0x4ff0c, // onmouseleave - 0x2a: 0x57f07, // onpaste - 0x2b: 0x5a409, // onplaying - 0x2c: 0x1c407, // colspan - 0x2f: 0x1bf05, // color - 0x30: 0x5f504, // size - 0x31: 0x2e80a, // http-equiv - 0x33: 0x601, // i - 0x34: 0x5590a, // onpagehide - 0x35: 0x68c14, // onunhandledrejection - 0x37: 0x42a07, // onerror - 0x3a: 0x3b08, // basefont - 0x3f: 0x1303, // nav - 0x40: 0x17704, // kind - 0x41: 0x35708, // readonly - 0x42: 0x30806, // mglyph - 0x44: 0xb202, // li - 0x46: 0x2d506, // hidden - 0x47: 0x70e03, // svg - 0x48: 0x58304, // step - 0x49: 0x23f09, // integrity - 0x4a: 0x58606, // public - 0x4c: 0x1ab03, // col - 0x4d: 0x1870a, // blockquote - 0x4e: 0x34f02, // h5 - 0x50: 0x5b908, // progress - 0x51: 0x5f505, // sizes - 0x52: 0x34502, // h4 - 0x56: 0x33005, // thead - 0x57: 0xd607, // keytype - 0x58: 0x5b70a, // onprogress - 0x59: 0x44b09, // inputmode - 0x5a: 0x3b109, // ondragend - 0x5d: 0x3a205, // oncut - 0x5e: 0x43706, // spacer - 0x5f: 0x1ab08, // colgroup - 0x62: 0x16502, // is - 0x65: 0x3c02, // as - 0x66: 0x54809, // onoffline - 0x67: 0x33706, // sorted - 0x69: 0x48d10, // onlanguagechange - 0x6c: 0x43d0c, // onhashchange - 0x6d: 0x9604, // name - 0x6e: 0xf505, // tfoot - 0x6f: 0x56104, // desc - 0x70: 0x33d03, // max - 0x72: 0x1ea06, // coords - 0x73: 0x30d02, // h3 - 0x74: 0x6e70e, // onbeforeunload - 0x75: 0x9c04, // rows - 0x76: 0x63c06, // select - 0x77: 0x9805, // meter - 0x78: 0x38b06, // itemid - 0x79: 0x53c0c, // onmousewheel - 0x7a: 0x5c006, // srcdoc - 0x7d: 0x1ba05, // track - 0x7f: 0x31f08, // itemtype - 0x82: 0xa402, // mo - 0x83: 0x41b08, // onchange - 0x84: 0x33107, // headers - 0x85: 0x5cc0c, // onratechange - 0x86: 0x60819, // onsecuritypolicyviolation - 0x88: 0x4a508, // datalist - 0x89: 0x4e80b, // onmousedown - 0x8a: 0x1ef04, // slot - 0x8b: 0x4b010, // onloadedmetadata - 0x8c: 0x1a06, // accept - 0x8d: 0x26806, // object - 0x91: 0x6b30e, // onvolumechange - 0x92: 0x2107, // charset - 0x93: 0x27613, // onautocompleteerror - 0x94: 0xc113, // allowpaymentrequest - 0x95: 0x2804, // body - 0x96: 0x10a07, // default - 0x97: 0x63c08, // selected - 0x98: 0x21e04, // face - 0x99: 0x1e505, // shape - 0x9b: 0x68408, // ontoggle - 0x9e: 0x64b02, // dt - 0x9f: 0xb604, // mark - 0xa1: 0xb01, // u - 0xa4: 0x6ab08, // onunload - 0xa5: 0x5d04, // loop - 0xa6: 0x16408, // disabled - 0xaa: 0x42307, // onended - 0xab: 0xb00a, // malignmark - 0xad: 0x67b09, // onsuspend - 0xae: 0x35105, // mtext - 0xaf: 0x64f06, // onsort - 0xb0: 0x19d08, // itemprop - 0xb3: 0x67109, // itemscope - 0xb4: 0x17305, // blink - 0xb6: 0x3b106, // ondrag - 0xb7: 0xa702, // ul - 0xb8: 0x26e04, // form - 0xb9: 0x12907, // sandbox - 0xba: 0x8b05, // frame - 0xbb: 0x1505, // value - 0xbc: 0x66209, // onstorage - 0xbf: 0xaa07, // acronym - 0xc0: 0x19a02, // rt - 0xc2: 0x202, // br - 0xc3: 0x22608, // fieldset - 0xc4: 0x2900d, // typemustmatch - 0xc5: 0xa208, // nomodule - 0xc6: 0x6c07, // noembed - 0xc7: 0x69e0d, // onbeforeprint - 0xc8: 0x19106, // button - 0xc9: 0x2f507, // onclick - 0xca: 0x70407, // summary - 0xcd: 0xfb04, // ruby - 0xce: 0x56405, // class - 0xcf: 0x3f40b, // ondragstart - 0xd0: 0x23107, // caption - 0xd4: 0xdd0e, // allowusermedia - 0xd5: 0x4cf0b, // onloadstart - 0xd9: 0x16b03, // div - 0xda: 0x4a904, // list - 0xdb: 0x32e04, // math - 0xdc: 0x44b05, // input - 0xdf: 0x3ea0a, // ondragover - 0xe0: 0x2de02, // h2 - 0xe2: 0x1b209, // plaintext - 0xe4: 0x4f30c, // onmouseenter - 0xe7: 0x47907, // checked - 0xe8: 0x47003, // pre - 0xea: 0x35f08, // multiple - 0xeb: 0xba03, // bdi - 0xec: 0x33d09, // maxlength - 0xed: 0xcf01, // q - 0xee: 0x61f0a, // onauxclick - 0xf0: 0x57c03, // wbr - 0xf2: 0x3b04, // base - 0xf3: 0x6e306, // option - 0xf5: 0x41310, // ondurationchange - 0xf7: 0x8908, // noframes - 0xf9: 0x40508, // dropzone - 0xfb: 0x67505, // scope - 0xfc: 0x8008, // reversed - 0xfd: 0x3ba0b, // ondragenter - 0xfe: 0x3fa05, // start - 0xff: 0x12f03, // xmp - 0x100: 0x5f907, // srclang - 0x101: 0x30703, // img - 0x104: 0x101, // b - 0x105: 0x25403, // for - 0x106: 0x10705, // aside - 0x107: 0x44907, // oninput - 0x108: 0x35604, // area - 0x109: 0x2a40a, // formmethod - 0x10a: 0x72604, // wrap - 0x10c: 0x23c02, // rp - 0x10d: 0x46b0a, // onkeypress - 0x10e: 0x6802, // tt - 0x110: 0x34702, // mi - 0x111: 0x36705, // muted - 0x112: 0xf303, // alt - 0x113: 0x5c504, // code - 0x114: 0x6e02, // em - 0x115: 0x3c50a, // ondragexit - 0x117: 0x9f04, // span - 0x119: 0x6d708, // manifest - 0x11a: 0x38708, // menuitem - 0x11b: 0x58b07, // content - 0x11d: 0x6c109, // onwaiting - 0x11f: 0x4c609, // onloadend - 0x121: 0x37e0d, // oncontextmenu - 0x123: 0x56d06, // onblur - 0x124: 0x3fc07, // article - 0x125: 0x9303, // dir - 0x126: 0xef04, // ping - 0x127: 0x24c08, // required - 0x128: 0x45509, // oninvalid - 0x129: 0xb105, // align - 0x12b: 0x58a04, // icon - 0x12c: 0x64d02, // h6 - 0x12d: 0x1c404, // cols - 0x12e: 0x22e0a, // figcaption - 0x12f: 0x45e09, // onkeydown - 0x130: 0x66b08, // onsubmit - 0x131: 0x14d09, // oncanplay - 0x132: 0x70b03, // sup - 0x133: 0xc01, // p - 0x135: 0x40a09, // onemptied - 0x136: 0x39106, // oncopy - 0x137: 0x19c04, // cite - 0x138: 0x3a70a, // ondblclick - 0x13a: 0x50b0b, // onmousemove - 0x13c: 0x66d03, // sub - 0x13d: 0x48703, // rel - 0x13e: 0x5f08, // optgroup - 0x142: 0x9c07, // rowspan - 0x143: 0x37806, // source - 0x144: 0x21608, // noscript - 0x145: 0x1a304, // open - 0x146: 0x20403, // ins - 0x147: 0x2540d, // foreignObject - 0x148: 0x5ad0a, // onpopstate - 0x14a: 0x28d07, // enctype - 0x14b: 0x2760e, // onautocomplete - 0x14c: 0x35208, // textarea - 0x14e: 0x2780c, // autocomplete - 0x14f: 0x15702, // hr - 0x150: 0x1de08, // controls - 0x151: 0x10902, // id - 0x153: 0x2360c, // onafterprint - 0x155: 0x2610d, // foreignobject - 0x156: 0x32707, // marquee - 0x157: 0x59a07, // onpause - 0x158: 0x5e602, // dl - 0x159: 0x5206, // height - 0x15a: 0x34703, // min - 0x15b: 0x9307, // dirname - 0x15c: 0x1f209, // translate - 0x15d: 0x5604, // html - 0x15e: 0x34709, // minlength - 0x15f: 0x48607, // preload - 0x160: 0x71408, // template - 0x161: 0x3df0b, // ondragleave - 0x162: 0x3a02, // rb - 0x164: 0x5c003, // src - 0x165: 0x6dd06, // strong - 0x167: 0x7804, // samp - 0x168: 0x6f307, // address - 0x169: 0x55108, // ononline - 0x16b: 0x1310b, // placeholder - 0x16c: 0x2c406, // target - 0x16d: 0x20605, // small - 0x16e: 0x6ca07, // onwheel - 0x16f: 0x1c90a, // annotation - 0x170: 0x4740a, // spellcheck - 0x171: 0x7207, // details - 0x172: 0x10306, // canvas - 0x173: 0x12109, // autofocus - 0x174: 0xc05, // param - 0x176: 0x46308, // download - 0x177: 0x45203, // del - 0x178: 0x36c07, // onclose - 0x179: 0xb903, // kbd - 0x17a: 0x31906, // applet - 0x17b: 0x2e004, // href - 0x17c: 0x5f108, // onresize - 0x17e: 0x49d0c, // onloadeddata - 0x180: 0xcc02, // tr - 0x181: 0x2c00a, // formtarget - 0x182: 0x11005, // title - 0x183: 0x6ff05, // style - 0x184: 0xd206, // strike - 0x185: 0x59e06, // usemap - 0x186: 0x2fc06, // iframe - 0x187: 0x1004, // main - 0x189: 0x7b07, // picture - 0x18c: 0x31605, // ismap - 0x18e: 0x4a504, // data - 0x18f: 0x5905, // label - 0x191: 0x3d10e, // referrerpolicy - 0x192: 0x15602, // th - 0x194: 0x53606, // prompt - 0x195: 0x56807, // section - 0x197: 0x6d107, // optimum - 0x198: 0x2db04, // high - 0x199: 0x15c02, // h1 - 0x19a: 0x65909, // onstalled - 0x19b: 0x16d03, // var - 0x19c: 0x4204, // time - 0x19e: 0x67402, // ms - 0x19f: 0x33106, // header - 0x1a0: 0x4da09, // onmessage - 0x1a1: 0x1a605, // nonce - 0x1a2: 0x26e0a, // formaction - 0x1a3: 0x22006, // center - 0x1a4: 0x3704, // nobr - 0x1a5: 0x59505, // table - 0x1a6: 0x4a907, // listing - 0x1a7: 0x18106, // legend - 0x1a9: 0x29b09, // challenge - 0x1aa: 0x24806, // figure - 0x1ab: 0xe605, // media - 0x1ae: 0xd904, // type - 0x1af: 0x3f04, // font - 0x1b0: 0x4da0e, // onmessageerror - 0x1b1: 0x37108, // seamless - 0x1b2: 0x8703, // dfn - 0x1b3: 0x5c705, // defer - 0x1b4: 0xc303, // low - 0x1b5: 0x19a03, // rtc - 0x1b6: 0x5230b, // onmouseover - 0x1b7: 0x2b20a, // novalidate - 0x1b8: 0x71c0a, // workertype - 0x1ba: 0x3cd07, // itemref - 0x1bd: 0x1, // a - 0x1be: 0x31803, // map - 0x1bf: 0x400c, // ontimeupdate - 0x1c0: 0x15e07, // bgsound - 0x1c1: 0x3206, // keygen - 0x1c2: 0x2705, // tbody - 0x1c5: 0x64406, // onshow - 0x1c7: 0x2501, // s - 0x1c8: 0x6607, // pattern - 0x1cc: 0x14d10, // oncanplaythrough - 0x1ce: 0x2d702, // dd - 0x1cf: 0x6f906, // srcset - 0x1d0: 0x17003, // big - 0x1d2: 0x65108, // sortable - 0x1d3: 0x48007, // onkeyup - 0x1d5: 0x5a406, // onplay - 0x1d7: 0x4b804, // meta - 0x1d8: 0x40306, // ondrop - 0x1da: 0x60008, // onscroll - 0x1db: 0x1fb0b, // crossorigin - 0x1dc: 0x5730a, // onpageshow - 0x1dd: 0x4, // abbr - 0x1de: 0x9202, // td - 0x1df: 0x58b0f, // contenteditable - 0x1e0: 0x27206, // action - 0x1e1: 0x1400b, // playsinline - 0x1e2: 0x43107, // onfocus - 0x1e3: 0x2e008, // hreflang - 0x1e5: 0x5160a, // onmouseout - 0x1e6: 0x5ea07, // onreset - 0x1e7: 0x13c08, // autoplay - 0x1e8: 0x63109, // onseeking - 0x1ea: 0x67506, // scoped - 0x1ec: 0x30a, // radiogroup - 0x1ee: 0x3800b, // contextmenu - 0x1ef: 0x52e09, // onmouseup - 0x1f1: 0x2ca06, // hgroup - 0x1f2: 0x2080f, // allowfullscreen - 0x1f3: 0x4be08, // tabindex - 0x1f6: 0x30f07, // isindex - 0x1f7: 0x1a0e, // accept-charset - 0x1f8: 0x2ae0e, // formnovalidate - 0x1fb: 0x1c90e, // annotation-xml - 0x1fc: 0x6e05, // embed - 0x1fd: 0x21806, // script - 0x1fe: 0xbb06, // dialog - 0x1ff: 0x1d707, // command -} - -const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb" + - "asefontimeupdateviacacheightmlabelooptgroupatternoembedetail" + - "sampictureversedfnoframesetdirnameterowspanomoduleacronymali" + - "gnmarkbdialogallowpaymentrequestrikeytypeallowusermediagroup" + - "ingaltfooterubyasyncanvasidefaultitleaudioncancelautofocusan" + - "dboxmplaceholderautoplaysinlinebdoncanplaythrough1bgsoundisa" + - "bledivarbigblinkindraggablegendblockquotebuttonabortcitempro" + - "penoncecolgrouplaintextrackcolorcolspannotation-xmlcommandco" + - "ntrolshapecoordslotranslatecrossoriginsmallowfullscreenoscri" + - "ptfacenterfieldsetfigcaptionafterprintegrityfigurequiredfore" + - "ignObjectforeignobjectformactionautocompleteerrorformenctype" + - "mustmatchallengeformmethodformnovalidatetimeformtargethgroup" + - "osterhiddenhigh2hreflanghttp-equivideonclickiframeimageimgly" + - "ph3isindexismappletitemtypemarqueematheadersortedmaxlength4m" + - "inlength5mtextareadonlymultiplemutedoncloseamlessourceoncont" + - "extmenuitemidoncopyoncuechangeoncutondblclickondragendondrag" + - "enterondragexitemreferrerpolicyondragleaveondragoverondragst" + - "articleondropzonemptiedondurationchangeonendedonerroronfocus" + - "paceronhashchangeoninputmodeloninvalidonkeydownloadonkeypres" + - "spellcheckedonkeyupreloadonlanguagechangeonloadeddatalisting" + - "onloadedmetadatabindexonloadendonloadstartonmessageerroronmo" + - "usedownonmouseenteronmouseleaveonmousemoveonmouseoutputonmou" + - "seoveronmouseupromptonmousewheelonofflineononlineonpagehides" + - "classectionbluronpageshowbronpastepublicontenteditableonpaus" + - "emaponplayingonpopstateonprogressrcdocodeferonratechangeonre" + - "jectionhandledonresetonresizesrclangonscrollonsecuritypolicy" + - "violationauxclickonseekedonseekingonselectedonshowidth6onsor" + - "tableonstalledonstorageonsubmitemscopedonsuspendontoggleonun" + - "handledrejectionbeforeprintonunloadonvolumechangeonwaitingon" + - "wheeloptimumanifestrongoptionbeforeunloaddressrcsetstylesumm" + - "arysupsvgsystemplateworkertypewrap" diff --git a/vendor/golang.org/x/net/html/charset/charset.go b/vendor/golang.org/x/net/html/charset/charset.go deleted file mode 100644 index 13bed15..0000000 --- a/vendor/golang.org/x/net/html/charset/charset.go +++ /dev/null @@ -1,257 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package charset provides common text encodings for HTML documents. -// -// The mapping from encoding labels to encodings is defined at -// https://encoding.spec.whatwg.org/. -package charset // import "golang.org/x/net/html/charset" - -import ( - "bytes" - "fmt" - "io" - "mime" - "strings" - "unicode/utf8" - - "golang.org/x/net/html" - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/htmlindex" - "golang.org/x/text/transform" -) - -// Lookup returns the encoding with the specified label, and its canonical -// name. It returns nil and the empty string if label is not one of the -// standard encodings for HTML. Matching is case-insensitive and ignores -// leading and trailing whitespace. Encoders will use HTML escape sequences for -// runes that are not supported by the character set. -func Lookup(label string) (e encoding.Encoding, name string) { - e, err := htmlindex.Get(label) - if err != nil { - return nil, "" - } - name, _ = htmlindex.Name(e) - return &htmlEncoding{e}, name -} - -type htmlEncoding struct{ encoding.Encoding } - -func (h *htmlEncoding) NewEncoder() *encoding.Encoder { - // HTML requires a non-terminating legacy encoder. We use HTML escapes to - // substitute unsupported code points. - return encoding.HTMLEscapeUnsupported(h.Encoding.NewEncoder()) -} - -// DetermineEncoding determines the encoding of an HTML document by examining -// up to the first 1024 bytes of content and the declared Content-Type. -// -// See http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding -func DetermineEncoding(content []byte, contentType string) (e encoding.Encoding, name string, certain bool) { - if len(content) > 1024 { - content = content[:1024] - } - - for _, b := range boms { - if bytes.HasPrefix(content, b.bom) { - e, name = Lookup(b.enc) - return e, name, true - } - } - - if _, params, err := mime.ParseMediaType(contentType); err == nil { - if cs, ok := params["charset"]; ok { - if e, name = Lookup(cs); e != nil { - return e, name, true - } - } - } - - if len(content) > 0 { - e, name = prescan(content) - if e != nil { - return e, name, false - } - } - - // Try to detect UTF-8. - // First eliminate any partial rune at the end. - for i := len(content) - 1; i >= 0 && i > len(content)-4; i-- { - b := content[i] - if b < 0x80 { - break - } - if utf8.RuneStart(b) { - content = content[:i] - break - } - } - hasHighBit := false - for _, c := range content { - if c >= 0x80 { - hasHighBit = true - break - } - } - if hasHighBit && utf8.Valid(content) { - return encoding.Nop, "utf-8", false - } - - // TODO: change default depending on user's locale? - return charmap.Windows1252, "windows-1252", false -} - -// NewReader returns an io.Reader that converts the content of r to UTF-8. -// It calls DetermineEncoding to find out what r's encoding is. -func NewReader(r io.Reader, contentType string) (io.Reader, error) { - preview := make([]byte, 1024) - n, err := io.ReadFull(r, preview) - switch { - case err == io.ErrUnexpectedEOF: - preview = preview[:n] - r = bytes.NewReader(preview) - case err != nil: - return nil, err - default: - r = io.MultiReader(bytes.NewReader(preview), r) - } - - if e, _, _ := DetermineEncoding(preview, contentType); e != encoding.Nop { - r = transform.NewReader(r, e.NewDecoder()) - } - return r, nil -} - -// NewReaderLabel returns a reader that converts from the specified charset to -// UTF-8. It uses Lookup to find the encoding that corresponds to label, and -// returns an error if Lookup returns nil. It is suitable for use as -// encoding/xml.Decoder's CharsetReader function. -func NewReaderLabel(label string, input io.Reader) (io.Reader, error) { - e, _ := Lookup(label) - if e == nil { - return nil, fmt.Errorf("unsupported charset: %q", label) - } - return transform.NewReader(input, e.NewDecoder()), nil -} - -func prescan(content []byte) (e encoding.Encoding, name string) { - z := html.NewTokenizer(bytes.NewReader(content)) - for { - switch z.Next() { - case html.ErrorToken: - return nil, "" - - case html.StartTagToken, html.SelfClosingTagToken: - tagName, hasAttr := z.TagName() - if !bytes.Equal(tagName, []byte("meta")) { - continue - } - attrList := make(map[string]bool) - gotPragma := false - - const ( - dontKnow = iota - doNeedPragma - doNotNeedPragma - ) - needPragma := dontKnow - - name = "" - e = nil - for hasAttr { - var key, val []byte - key, val, hasAttr = z.TagAttr() - ks := string(key) - if attrList[ks] { - continue - } - attrList[ks] = true - for i, c := range val { - if 'A' <= c && c <= 'Z' { - val[i] = c + 0x20 - } - } - - switch ks { - case "http-equiv": - if bytes.Equal(val, []byte("content-type")) { - gotPragma = true - } - - case "content": - if e == nil { - name = fromMetaElement(string(val)) - if name != "" { - e, name = Lookup(name) - if e != nil { - needPragma = doNeedPragma - } - } - } - - case "charset": - e, name = Lookup(string(val)) - needPragma = doNotNeedPragma - } - } - - if needPragma == dontKnow || needPragma == doNeedPragma && !gotPragma { - continue - } - - if strings.HasPrefix(name, "utf-16") { - name = "utf-8" - e = encoding.Nop - } - - if e != nil { - return e, name - } - } - } -} - -func fromMetaElement(s string) string { - for s != "" { - csLoc := strings.Index(s, "charset") - if csLoc == -1 { - return "" - } - s = s[csLoc+len("charset"):] - s = strings.TrimLeft(s, " \t\n\f\r") - if !strings.HasPrefix(s, "=") { - continue - } - s = s[1:] - s = strings.TrimLeft(s, " \t\n\f\r") - if s == "" { - return "" - } - if q := s[0]; q == '"' || q == '\'' { - s = s[1:] - closeQuote := strings.IndexRune(s, rune(q)) - if closeQuote == -1 { - return "" - } - return s[:closeQuote] - } - - end := strings.IndexAny(s, "; \t\n\f\r") - if end == -1 { - end = len(s) - } - return s[:end] - } - return "" -} - -var boms = []struct { - bom []byte - enc string -}{ - {[]byte{0xfe, 0xff}, "utf-16be"}, - {[]byte{0xff, 0xfe}, "utf-16le"}, - {[]byte{0xef, 0xbb, 0xbf}, "utf-8"}, -} diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go deleted file mode 100644 index ff7acf2..0000000 --- a/vendor/golang.org/x/net/html/const.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -// Section 12.2.4.2 of the HTML5 specification says "The following elements -// have varying levels of special parsing rules". -// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements -var isSpecialElementMap = map[string]bool{ - "address": true, - "applet": true, - "area": true, - "article": true, - "aside": true, - "base": true, - "basefont": true, - "bgsound": true, - "blockquote": true, - "body": true, - "br": true, - "button": true, - "caption": true, - "center": true, - "col": true, - "colgroup": true, - "dd": true, - "details": true, - "dir": true, - "div": true, - "dl": true, - "dt": true, - "embed": true, - "fieldset": true, - "figcaption": true, - "figure": true, - "footer": true, - "form": true, - "frame": true, - "frameset": true, - "h1": true, - "h2": true, - "h3": true, - "h4": true, - "h5": true, - "h6": true, - "head": true, - "header": true, - "hgroup": true, - "hr": true, - "html": true, - "iframe": true, - "img": true, - "input": true, - "keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility. - "li": true, - "link": true, - "listing": true, - "main": true, - "marquee": true, - "menu": true, - "meta": true, - "nav": true, - "noembed": true, - "noframes": true, - "noscript": true, - "object": true, - "ol": true, - "p": true, - "param": true, - "plaintext": true, - "pre": true, - "script": true, - "section": true, - "select": true, - "source": true, - "style": true, - "summary": true, - "table": true, - "tbody": true, - "td": true, - "template": true, - "textarea": true, - "tfoot": true, - "th": true, - "thead": true, - "title": true, - "tr": true, - "track": true, - "ul": true, - "wbr": true, - "xmp": true, -} - -func isSpecialElement(element *Node) bool { - switch element.Namespace { - case "", "html": - return isSpecialElementMap[element.Data] - case "math": - switch element.Data { - case "mi", "mo", "mn", "ms", "mtext", "annotation-xml": - return true - } - case "svg": - switch element.Data { - case "foreignObject", "desc", "title": - return true - } - } - return false -} diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go deleted file mode 100644 index 3a7e5ab..0000000 --- a/vendor/golang.org/x/net/html/doc.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package html implements an HTML5-compliant tokenizer and parser. - -Tokenization is done by creating a Tokenizer for an io.Reader r. It is the -caller's responsibility to ensure that r provides UTF-8 encoded HTML. - - z := html.NewTokenizer(r) - -Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(), -which parses the next token and returns its type, or an error: - - for { - tt := z.Next() - if tt == html.ErrorToken { - // ... - return ... - } - // Process the current token. - } - -There are two APIs for retrieving the current token. The high-level API is to -call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs -allow optionally calling Raw after Next but before Token, Text, TagName, or -TagAttr. In EBNF notation, the valid call sequence per token is: - - Next {Raw} [ Token | Text | TagName {TagAttr} ] - -Token returns an independent data structure that completely describes a token. -Entities (such as "&lt;") are unescaped, tag names and attribute keys are -lower-cased, and attributes are collected into a []Attribute. For example: - - for { - if z.Next() == html.ErrorToken { - // Returning io.EOF indicates success. - return z.Err() - } - emitToken(z.Token()) - } - -The low-level API performs fewer allocations and copies, but the contents of -the []byte values returned by Text, TagName and TagAttr may change on the next -call to Next. For example, to extract an HTML page's anchor text: - - depth := 0 - for { - tt := z.Next() - switch tt { - case html.ErrorToken: - return z.Err() - case html.TextToken: - if depth > 0 { - // emitBytes should copy the []byte it receives, - // if it doesn't process it immediately. - emitBytes(z.Text()) - } - case html.StartTagToken, html.EndTagToken: - tn, _ := z.TagName() - if len(tn) == 1 && tn[0] == 'a' { - if tt == html.StartTagToken { - depth++ - } else { - depth-- - } - } - } - } - -Parsing is done by calling Parse with an io.Reader, which returns the root of -the parse tree (the document element) as a *Node. It is the caller's -responsibility to ensure that the Reader provides UTF-8 encoded HTML. For -example, to process each anchor node in depth-first order: - - doc, err := html.Parse(r) - if err != nil { - // ... - } - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.ElementNode && n.Data == "a" { - // Do something with n... - } - for c := n.FirstChild; c != nil; c = c.NextSibling { - f(c) - } - } - f(doc) - -The relevant specifications include: -https://html.spec.whatwg.org/multipage/syntax.html and -https://html.spec.whatwg.org/multipage/syntax.html#tokenization - -# Security Considerations - -Care should be taken when parsing and interpreting HTML, whether full documents -or fragments, within the framework of the HTML specification, especially with -regard to untrusted inputs. - -This package provides both a tokenizer and a parser, which implement the -tokenization, and tokenization and tree construction stages of the WHATWG HTML -parsing specification respectively. While the tokenizer parses and normalizes -individual HTML tokens, only the parser constructs the DOM tree from the -tokenized HTML, as described in the tree construction stage of the -specification, dynamically modifying or extending the document's DOM tree. - -If your use case requires semantically well-formed HTML documents, as defined by -the WHATWG specification, the parser should be used rather than the tokenizer. - -In security contexts, if trust decisions are being made using the tokenized or -parsed content, the input must be re-serialized (for instance by using Render or -Token.String) in order for those trust decisions to hold, as the process of -tokenization or parsing may alter the content. -*/ -package html // import "golang.org/x/net/html" - -// The tokenization algorithm implemented by this package is not a line-by-line -// transliteration of the relatively verbose state-machine in the WHATWG -// specification. A more direct approach is used instead, where the program -// counter implies the state, such as whether it is tokenizing a tag or a text -// node. Specification compliance is verified by checking expected and actual -// outputs over a test suite rather than aiming for algorithmic fidelity. - -// TODO(nigeltao): Does a DOM API belong in this package or a separate one? -// TODO(nigeltao): How does parsing interact with a JavaScript engine? diff --git a/vendor/golang.org/x/net/html/doctype.go b/vendor/golang.org/x/net/html/doctype.go deleted file mode 100644 index c484e5a..0000000 --- a/vendor/golang.org/x/net/html/doctype.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "strings" -) - -// parseDoctype parses the data from a DoctypeToken into a name, -// public identifier, and system identifier. It returns a Node whose Type -// is DoctypeNode, whose Data is the name, and which has attributes -// named "system" and "public" for the two identifiers if they were present. -// quirks is whether the document should be parsed in "quirks mode". -func parseDoctype(s string) (n *Node, quirks bool) { - n = &Node{Type: DoctypeNode} - - // Find the name. - space := strings.IndexAny(s, whitespace) - if space == -1 { - space = len(s) - } - n.Data = s[:space] - // The comparison to "html" is case-sensitive. - if n.Data != "html" { - quirks = true - } - n.Data = strings.ToLower(n.Data) - s = strings.TrimLeft(s[space:], whitespace) - - if len(s) < 6 { - // It can't start with "PUBLIC" or "SYSTEM". - // Ignore the rest of the string. - return n, quirks || s != "" - } - - key := strings.ToLower(s[:6]) - s = s[6:] - for key == "public" || key == "system" { - s = strings.TrimLeft(s, whitespace) - if s == "" { - break - } - quote := s[0] - if quote != '"' && quote != '\'' { - break - } - s = s[1:] - q := strings.IndexRune(s, rune(quote)) - var id string - if q == -1 { - id = s - s = "" - } else { - id = s[:q] - s = s[q+1:] - } - n.Attr = append(n.Attr, Attribute{Key: key, Val: id}) - if key == "public" { - key = "system" - } else { - key = "" - } - } - - if key != "" || s != "" { - quirks = true - } else if len(n.Attr) > 0 { - if n.Attr[0].Key == "public" { - public := strings.ToLower(n.Attr[0].Val) - switch public { - case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html": - quirks = true - default: - for _, q := range quirkyIDs { - if strings.HasPrefix(public, q) { - quirks = true - break - } - } - } - // The following two public IDs only cause quirks mode if there is no system ID. - if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") || - strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) { - quirks = true - } - } - if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" && - strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" { - quirks = true - } - } - - return n, quirks -} - -// quirkyIDs is a list of public doctype identifiers that cause a document -// to be interpreted in quirks mode. The identifiers should be in lower case. -var quirkyIDs = []string{ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//", -} diff --git a/vendor/golang.org/x/net/html/entity.go b/vendor/golang.org/x/net/html/entity.go deleted file mode 100644 index b628880..0000000 --- a/vendor/golang.org/x/net/html/entity.go +++ /dev/null @@ -1,2253 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -// All entities that do not end with ';' are 6 or fewer bytes long. -const longestEntityWithoutSemicolon = 6 - -// entity is a map from HTML entity names to their values. The semicolon matters: -// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references -// lists both "amp" and "amp;" as two separate entries. -// -// Note that the HTML5 list is larger than the HTML4 list at -// http://www.w3.org/TR/html4/sgml/entities.html -var entity = map[string]rune{ - "AElig;": '\U000000C6', - "AMP;": '\U00000026', - "Aacute;": '\U000000C1', - "Abreve;": '\U00000102', - "Acirc;": '\U000000C2', - "Acy;": '\U00000410', - "Afr;": '\U0001D504', - "Agrave;": '\U000000C0', - "Alpha;": '\U00000391', - "Amacr;": '\U00000100', - "And;": '\U00002A53', - "Aogon;": '\U00000104', - "Aopf;": '\U0001D538', - "ApplyFunction;": '\U00002061', - "Aring;": '\U000000C5', - "Ascr;": '\U0001D49C', - "Assign;": '\U00002254', - "Atilde;": '\U000000C3', - "Auml;": '\U000000C4', - "Backslash;": '\U00002216', - "Barv;": '\U00002AE7', - "Barwed;": '\U00002306', - "Bcy;": '\U00000411', - "Because;": '\U00002235', - "Bernoullis;": '\U0000212C', - "Beta;": '\U00000392', - "Bfr;": '\U0001D505', - "Bopf;": '\U0001D539', - "Breve;": '\U000002D8', - "Bscr;": '\U0000212C', - "Bumpeq;": '\U0000224E', - "CHcy;": '\U00000427', - "COPY;": '\U000000A9', - "Cacute;": '\U00000106', - "Cap;": '\U000022D2', - "CapitalDifferentialD;": '\U00002145', - "Cayleys;": '\U0000212D', - "Ccaron;": '\U0000010C', - "Ccedil;": '\U000000C7', - "Ccirc;": '\U00000108', - "Cconint;": '\U00002230', - "Cdot;": '\U0000010A', - "Cedilla;": '\U000000B8', - "CenterDot;": '\U000000B7', - "Cfr;": '\U0000212D', - "Chi;": '\U000003A7', - "CircleDot;": '\U00002299', - "CircleMinus;": '\U00002296', - "CirclePlus;": '\U00002295', - "CircleTimes;": '\U00002297', - "ClockwiseContourIntegral;": '\U00002232', - "CloseCurlyDoubleQuote;": '\U0000201D', - "CloseCurlyQuote;": '\U00002019', - "Colon;": '\U00002237', - "Colone;": '\U00002A74', - "Congruent;": '\U00002261', - "Conint;": '\U0000222F', - "ContourIntegral;": '\U0000222E', - "Copf;": '\U00002102', - "Coproduct;": '\U00002210', - "CounterClockwiseContourIntegral;": '\U00002233', - "Cross;": '\U00002A2F', - "Cscr;": '\U0001D49E', - "Cup;": '\U000022D3', - "CupCap;": '\U0000224D', - "DD;": '\U00002145', - "DDotrahd;": '\U00002911', - "DJcy;": '\U00000402', - "DScy;": '\U00000405', - "DZcy;": '\U0000040F', - "Dagger;": '\U00002021', - "Darr;": '\U000021A1', - "Dashv;": '\U00002AE4', - "Dcaron;": '\U0000010E', - "Dcy;": '\U00000414', - "Del;": '\U00002207', - "Delta;": '\U00000394', - "Dfr;": '\U0001D507', - "DiacriticalAcute;": '\U000000B4', - "DiacriticalDot;": '\U000002D9', - "DiacriticalDoubleAcute;": '\U000002DD', - "DiacriticalGrave;": '\U00000060', - "DiacriticalTilde;": '\U000002DC', - "Diamond;": '\U000022C4', - "DifferentialD;": '\U00002146', - "Dopf;": '\U0001D53B', - "Dot;": '\U000000A8', - "DotDot;": '\U000020DC', - "DotEqual;": '\U00002250', - "DoubleContourIntegral;": '\U0000222F', - "DoubleDot;": '\U000000A8', - "DoubleDownArrow;": '\U000021D3', - "DoubleLeftArrow;": '\U000021D0', - "DoubleLeftRightArrow;": '\U000021D4', - "DoubleLeftTee;": '\U00002AE4', - "DoubleLongLeftArrow;": '\U000027F8', - "DoubleLongLeftRightArrow;": '\U000027FA', - "DoubleLongRightArrow;": '\U000027F9', - "DoubleRightArrow;": '\U000021D2', - "DoubleRightTee;": '\U000022A8', - "DoubleUpArrow;": '\U000021D1', - "DoubleUpDownArrow;": '\U000021D5', - "DoubleVerticalBar;": '\U00002225', - "DownArrow;": '\U00002193', - "DownArrowBar;": '\U00002913', - "DownArrowUpArrow;": '\U000021F5', - "DownBreve;": '\U00000311', - "DownLeftRightVector;": '\U00002950', - "DownLeftTeeVector;": '\U0000295E', - "DownLeftVector;": '\U000021BD', - "DownLeftVectorBar;": '\U00002956', - "DownRightTeeVector;": '\U0000295F', - "DownRightVector;": '\U000021C1', - "DownRightVectorBar;": '\U00002957', - "DownTee;": '\U000022A4', - "DownTeeArrow;": '\U000021A7', - "Downarrow;": '\U000021D3', - "Dscr;": '\U0001D49F', - "Dstrok;": '\U00000110', - "ENG;": '\U0000014A', - "ETH;": '\U000000D0', - "Eacute;": '\U000000C9', - "Ecaron;": '\U0000011A', - "Ecirc;": '\U000000CA', - "Ecy;": '\U0000042D', - "Edot;": '\U00000116', - "Efr;": '\U0001D508', - "Egrave;": '\U000000C8', - "Element;": '\U00002208', - "Emacr;": '\U00000112', - "EmptySmallSquare;": '\U000025FB', - "EmptyVerySmallSquare;": '\U000025AB', - "Eogon;": '\U00000118', - "Eopf;": '\U0001D53C', - "Epsilon;": '\U00000395', - "Equal;": '\U00002A75', - "EqualTilde;": '\U00002242', - "Equilibrium;": '\U000021CC', - "Escr;": '\U00002130', - "Esim;": '\U00002A73', - "Eta;": '\U00000397', - "Euml;": '\U000000CB', - "Exists;": '\U00002203', - "ExponentialE;": '\U00002147', - "Fcy;": '\U00000424', - "Ffr;": '\U0001D509', - "FilledSmallSquare;": '\U000025FC', - "FilledVerySmallSquare;": '\U000025AA', - "Fopf;": '\U0001D53D', - "ForAll;": '\U00002200', - "Fouriertrf;": '\U00002131', - "Fscr;": '\U00002131', - "GJcy;": '\U00000403', - "GT;": '\U0000003E', - "Gamma;": '\U00000393', - "Gammad;": '\U000003DC', - "Gbreve;": '\U0000011E', - "Gcedil;": '\U00000122', - "Gcirc;": '\U0000011C', - "Gcy;": '\U00000413', - "Gdot;": '\U00000120', - "Gfr;": '\U0001D50A', - "Gg;": '\U000022D9', - "Gopf;": '\U0001D53E', - "GreaterEqual;": '\U00002265', - "GreaterEqualLess;": '\U000022DB', - "GreaterFullEqual;": '\U00002267', - "GreaterGreater;": '\U00002AA2', - "GreaterLess;": '\U00002277', - "GreaterSlantEqual;": '\U00002A7E', - "GreaterTilde;": '\U00002273', - "Gscr;": '\U0001D4A2', - "Gt;": '\U0000226B', - "HARDcy;": '\U0000042A', - "Hacek;": '\U000002C7', - "Hat;": '\U0000005E', - "Hcirc;": '\U00000124', - "Hfr;": '\U0000210C', - "HilbertSpace;": '\U0000210B', - "Hopf;": '\U0000210D', - "HorizontalLine;": '\U00002500', - "Hscr;": '\U0000210B', - "Hstrok;": '\U00000126', - "HumpDownHump;": '\U0000224E', - "HumpEqual;": '\U0000224F', - "IEcy;": '\U00000415', - "IJlig;": '\U00000132', - "IOcy;": '\U00000401', - "Iacute;": '\U000000CD', - "Icirc;": '\U000000CE', - "Icy;": '\U00000418', - "Idot;": '\U00000130', - "Ifr;": '\U00002111', - "Igrave;": '\U000000CC', - "Im;": '\U00002111', - "Imacr;": '\U0000012A', - "ImaginaryI;": '\U00002148', - "Implies;": '\U000021D2', - "Int;": '\U0000222C', - "Integral;": '\U0000222B', - "Intersection;": '\U000022C2', - "InvisibleComma;": '\U00002063', - "InvisibleTimes;": '\U00002062', - "Iogon;": '\U0000012E', - "Iopf;": '\U0001D540', - "Iota;": '\U00000399', - "Iscr;": '\U00002110', - "Itilde;": '\U00000128', - "Iukcy;": '\U00000406', - "Iuml;": '\U000000CF', - "Jcirc;": '\U00000134', - "Jcy;": '\U00000419', - "Jfr;": '\U0001D50D', - "Jopf;": '\U0001D541', - "Jscr;": '\U0001D4A5', - "Jsercy;": '\U00000408', - "Jukcy;": '\U00000404', - "KHcy;": '\U00000425', - "KJcy;": '\U0000040C', - "Kappa;": '\U0000039A', - "Kcedil;": '\U00000136', - "Kcy;": '\U0000041A', - "Kfr;": '\U0001D50E', - "Kopf;": '\U0001D542', - "Kscr;": '\U0001D4A6', - "LJcy;": '\U00000409', - "LT;": '\U0000003C', - "Lacute;": '\U00000139', - "Lambda;": '\U0000039B', - "Lang;": '\U000027EA', - "Laplacetrf;": '\U00002112', - "Larr;": '\U0000219E', - "Lcaron;": '\U0000013D', - "Lcedil;": '\U0000013B', - "Lcy;": '\U0000041B', - "LeftAngleBracket;": '\U000027E8', - "LeftArrow;": '\U00002190', - "LeftArrowBar;": '\U000021E4', - "LeftArrowRightArrow;": '\U000021C6', - "LeftCeiling;": '\U00002308', - "LeftDoubleBracket;": '\U000027E6', - "LeftDownTeeVector;": '\U00002961', - "LeftDownVector;": '\U000021C3', - "LeftDownVectorBar;": '\U00002959', - "LeftFloor;": '\U0000230A', - "LeftRightArrow;": '\U00002194', - "LeftRightVector;": '\U0000294E', - "LeftTee;": '\U000022A3', - "LeftTeeArrow;": '\U000021A4', - "LeftTeeVector;": '\U0000295A', - "LeftTriangle;": '\U000022B2', - "LeftTriangleBar;": '\U000029CF', - "LeftTriangleEqual;": '\U000022B4', - "LeftUpDownVector;": '\U00002951', - "LeftUpTeeVector;": '\U00002960', - "LeftUpVector;": '\U000021BF', - "LeftUpVectorBar;": '\U00002958', - "LeftVector;": '\U000021BC', - "LeftVectorBar;": '\U00002952', - "Leftarrow;": '\U000021D0', - "Leftrightarrow;": '\U000021D4', - "LessEqualGreater;": '\U000022DA', - "LessFullEqual;": '\U00002266', - "LessGreater;": '\U00002276', - "LessLess;": '\U00002AA1', - "LessSlantEqual;": '\U00002A7D', - "LessTilde;": '\U00002272', - "Lfr;": '\U0001D50F', - "Ll;": '\U000022D8', - "Lleftarrow;": '\U000021DA', - "Lmidot;": '\U0000013F', - "LongLeftArrow;": '\U000027F5', - "LongLeftRightArrow;": '\U000027F7', - "LongRightArrow;": '\U000027F6', - "Longleftarrow;": '\U000027F8', - "Longleftrightarrow;": '\U000027FA', - "Longrightarrow;": '\U000027F9', - "Lopf;": '\U0001D543', - "LowerLeftArrow;": '\U00002199', - "LowerRightArrow;": '\U00002198', - "Lscr;": '\U00002112', - "Lsh;": '\U000021B0', - "Lstrok;": '\U00000141', - "Lt;": '\U0000226A', - "Map;": '\U00002905', - "Mcy;": '\U0000041C', - "MediumSpace;": '\U0000205F', - "Mellintrf;": '\U00002133', - "Mfr;": '\U0001D510', - "MinusPlus;": '\U00002213', - "Mopf;": '\U0001D544', - "Mscr;": '\U00002133', - "Mu;": '\U0000039C', - "NJcy;": '\U0000040A', - "Nacute;": '\U00000143', - "Ncaron;": '\U00000147', - "Ncedil;": '\U00000145', - "Ncy;": '\U0000041D', - "NegativeMediumSpace;": '\U0000200B', - "NegativeThickSpace;": '\U0000200B', - "NegativeThinSpace;": '\U0000200B', - "NegativeVeryThinSpace;": '\U0000200B', - "NestedGreaterGreater;": '\U0000226B', - "NestedLessLess;": '\U0000226A', - "NewLine;": '\U0000000A', - "Nfr;": '\U0001D511', - "NoBreak;": '\U00002060', - "NonBreakingSpace;": '\U000000A0', - "Nopf;": '\U00002115', - "Not;": '\U00002AEC', - "NotCongruent;": '\U00002262', - "NotCupCap;": '\U0000226D', - "NotDoubleVerticalBar;": '\U00002226', - "NotElement;": '\U00002209', - "NotEqual;": '\U00002260', - "NotExists;": '\U00002204', - "NotGreater;": '\U0000226F', - "NotGreaterEqual;": '\U00002271', - "NotGreaterLess;": '\U00002279', - "NotGreaterTilde;": '\U00002275', - "NotLeftTriangle;": '\U000022EA', - "NotLeftTriangleEqual;": '\U000022EC', - "NotLess;": '\U0000226E', - "NotLessEqual;": '\U00002270', - "NotLessGreater;": '\U00002278', - "NotLessTilde;": '\U00002274', - "NotPrecedes;": '\U00002280', - "NotPrecedesSlantEqual;": '\U000022E0', - "NotReverseElement;": '\U0000220C', - "NotRightTriangle;": '\U000022EB', - "NotRightTriangleEqual;": '\U000022ED', - "NotSquareSubsetEqual;": '\U000022E2', - "NotSquareSupersetEqual;": '\U000022E3', - "NotSubsetEqual;": '\U00002288', - "NotSucceeds;": '\U00002281', - "NotSucceedsSlantEqual;": '\U000022E1', - "NotSupersetEqual;": '\U00002289', - "NotTilde;": '\U00002241', - "NotTildeEqual;": '\U00002244', - "NotTildeFullEqual;": '\U00002247', - "NotTildeTilde;": '\U00002249', - "NotVerticalBar;": '\U00002224', - "Nscr;": '\U0001D4A9', - "Ntilde;": '\U000000D1', - "Nu;": '\U0000039D', - "OElig;": '\U00000152', - "Oacute;": '\U000000D3', - "Ocirc;": '\U000000D4', - "Ocy;": '\U0000041E', - "Odblac;": '\U00000150', - "Ofr;": '\U0001D512', - "Ograve;": '\U000000D2', - "Omacr;": '\U0000014C', - "Omega;": '\U000003A9', - "Omicron;": '\U0000039F', - "Oopf;": '\U0001D546', - "OpenCurlyDoubleQuote;": '\U0000201C', - "OpenCurlyQuote;": '\U00002018', - "Or;": '\U00002A54', - "Oscr;": '\U0001D4AA', - "Oslash;": '\U000000D8', - "Otilde;": '\U000000D5', - "Otimes;": '\U00002A37', - "Ouml;": '\U000000D6', - "OverBar;": '\U0000203E', - "OverBrace;": '\U000023DE', - "OverBracket;": '\U000023B4', - "OverParenthesis;": '\U000023DC', - "PartialD;": '\U00002202', - "Pcy;": '\U0000041F', - "Pfr;": '\U0001D513', - "Phi;": '\U000003A6', - "Pi;": '\U000003A0', - "PlusMinus;": '\U000000B1', - "Poincareplane;": '\U0000210C', - "Popf;": '\U00002119', - "Pr;": '\U00002ABB', - "Precedes;": '\U0000227A', - "PrecedesEqual;": '\U00002AAF', - "PrecedesSlantEqual;": '\U0000227C', - "PrecedesTilde;": '\U0000227E', - "Prime;": '\U00002033', - "Product;": '\U0000220F', - "Proportion;": '\U00002237', - "Proportional;": '\U0000221D', - "Pscr;": '\U0001D4AB', - "Psi;": '\U000003A8', - "QUOT;": '\U00000022', - "Qfr;": '\U0001D514', - "Qopf;": '\U0000211A', - "Qscr;": '\U0001D4AC', - "RBarr;": '\U00002910', - "REG;": '\U000000AE', - "Racute;": '\U00000154', - "Rang;": '\U000027EB', - "Rarr;": '\U000021A0', - "Rarrtl;": '\U00002916', - "Rcaron;": '\U00000158', - "Rcedil;": '\U00000156', - "Rcy;": '\U00000420', - "Re;": '\U0000211C', - "ReverseElement;": '\U0000220B', - "ReverseEquilibrium;": '\U000021CB', - "ReverseUpEquilibrium;": '\U0000296F', - "Rfr;": '\U0000211C', - "Rho;": '\U000003A1', - "RightAngleBracket;": '\U000027E9', - "RightArrow;": '\U00002192', - "RightArrowBar;": '\U000021E5', - "RightArrowLeftArrow;": '\U000021C4', - "RightCeiling;": '\U00002309', - "RightDoubleBracket;": '\U000027E7', - "RightDownTeeVector;": '\U0000295D', - "RightDownVector;": '\U000021C2', - "RightDownVectorBar;": '\U00002955', - "RightFloor;": '\U0000230B', - "RightTee;": '\U000022A2', - "RightTeeArrow;": '\U000021A6', - "RightTeeVector;": '\U0000295B', - "RightTriangle;": '\U000022B3', - "RightTriangleBar;": '\U000029D0', - "RightTriangleEqual;": '\U000022B5', - "RightUpDownVector;": '\U0000294F', - "RightUpTeeVector;": '\U0000295C', - "RightUpVector;": '\U000021BE', - "RightUpVectorBar;": '\U00002954', - "RightVector;": '\U000021C0', - "RightVectorBar;": '\U00002953', - "Rightarrow;": '\U000021D2', - "Ropf;": '\U0000211D', - "RoundImplies;": '\U00002970', - "Rrightarrow;": '\U000021DB', - "Rscr;": '\U0000211B', - "Rsh;": '\U000021B1', - "RuleDelayed;": '\U000029F4', - "SHCHcy;": '\U00000429', - "SHcy;": '\U00000428', - "SOFTcy;": '\U0000042C', - "Sacute;": '\U0000015A', - "Sc;": '\U00002ABC', - "Scaron;": '\U00000160', - "Scedil;": '\U0000015E', - "Scirc;": '\U0000015C', - "Scy;": '\U00000421', - "Sfr;": '\U0001D516', - "ShortDownArrow;": '\U00002193', - "ShortLeftArrow;": '\U00002190', - "ShortRightArrow;": '\U00002192', - "ShortUpArrow;": '\U00002191', - "Sigma;": '\U000003A3', - "SmallCircle;": '\U00002218', - "Sopf;": '\U0001D54A', - "Sqrt;": '\U0000221A', - "Square;": '\U000025A1', - "SquareIntersection;": '\U00002293', - "SquareSubset;": '\U0000228F', - "SquareSubsetEqual;": '\U00002291', - "SquareSuperset;": '\U00002290', - "SquareSupersetEqual;": '\U00002292', - "SquareUnion;": '\U00002294', - "Sscr;": '\U0001D4AE', - "Star;": '\U000022C6', - "Sub;": '\U000022D0', - "Subset;": '\U000022D0', - "SubsetEqual;": '\U00002286', - "Succeeds;": '\U0000227B', - "SucceedsEqual;": '\U00002AB0', - "SucceedsSlantEqual;": '\U0000227D', - "SucceedsTilde;": '\U0000227F', - "SuchThat;": '\U0000220B', - "Sum;": '\U00002211', - "Sup;": '\U000022D1', - "Superset;": '\U00002283', - "SupersetEqual;": '\U00002287', - "Supset;": '\U000022D1', - "THORN;": '\U000000DE', - "TRADE;": '\U00002122', - "TSHcy;": '\U0000040B', - "TScy;": '\U00000426', - "Tab;": '\U00000009', - "Tau;": '\U000003A4', - "Tcaron;": '\U00000164', - "Tcedil;": '\U00000162', - "Tcy;": '\U00000422', - "Tfr;": '\U0001D517', - "Therefore;": '\U00002234', - "Theta;": '\U00000398', - "ThinSpace;": '\U00002009', - "Tilde;": '\U0000223C', - "TildeEqual;": '\U00002243', - "TildeFullEqual;": '\U00002245', - "TildeTilde;": '\U00002248', - "Topf;": '\U0001D54B', - "TripleDot;": '\U000020DB', - "Tscr;": '\U0001D4AF', - "Tstrok;": '\U00000166', - "Uacute;": '\U000000DA', - "Uarr;": '\U0000219F', - "Uarrocir;": '\U00002949', - "Ubrcy;": '\U0000040E', - "Ubreve;": '\U0000016C', - "Ucirc;": '\U000000DB', - "Ucy;": '\U00000423', - "Udblac;": '\U00000170', - "Ufr;": '\U0001D518', - "Ugrave;": '\U000000D9', - "Umacr;": '\U0000016A', - "UnderBar;": '\U0000005F', - "UnderBrace;": '\U000023DF', - "UnderBracket;": '\U000023B5', - "UnderParenthesis;": '\U000023DD', - "Union;": '\U000022C3', - "UnionPlus;": '\U0000228E', - "Uogon;": '\U00000172', - "Uopf;": '\U0001D54C', - "UpArrow;": '\U00002191', - "UpArrowBar;": '\U00002912', - "UpArrowDownArrow;": '\U000021C5', - "UpDownArrow;": '\U00002195', - "UpEquilibrium;": '\U0000296E', - "UpTee;": '\U000022A5', - "UpTeeArrow;": '\U000021A5', - "Uparrow;": '\U000021D1', - "Updownarrow;": '\U000021D5', - "UpperLeftArrow;": '\U00002196', - "UpperRightArrow;": '\U00002197', - "Upsi;": '\U000003D2', - "Upsilon;": '\U000003A5', - "Uring;": '\U0000016E', - "Uscr;": '\U0001D4B0', - "Utilde;": '\U00000168', - "Uuml;": '\U000000DC', - "VDash;": '\U000022AB', - "Vbar;": '\U00002AEB', - "Vcy;": '\U00000412', - "Vdash;": '\U000022A9', - "Vdashl;": '\U00002AE6', - "Vee;": '\U000022C1', - "Verbar;": '\U00002016', - "Vert;": '\U00002016', - "VerticalBar;": '\U00002223', - "VerticalLine;": '\U0000007C', - "VerticalSeparator;": '\U00002758', - "VerticalTilde;": '\U00002240', - "VeryThinSpace;": '\U0000200A', - "Vfr;": '\U0001D519', - "Vopf;": '\U0001D54D', - "Vscr;": '\U0001D4B1', - "Vvdash;": '\U000022AA', - "Wcirc;": '\U00000174', - "Wedge;": '\U000022C0', - "Wfr;": '\U0001D51A', - "Wopf;": '\U0001D54E', - "Wscr;": '\U0001D4B2', - "Xfr;": '\U0001D51B', - "Xi;": '\U0000039E', - "Xopf;": '\U0001D54F', - "Xscr;": '\U0001D4B3', - "YAcy;": '\U0000042F', - "YIcy;": '\U00000407', - "YUcy;": '\U0000042E', - "Yacute;": '\U000000DD', - "Ycirc;": '\U00000176', - "Ycy;": '\U0000042B', - "Yfr;": '\U0001D51C', - "Yopf;": '\U0001D550', - "Yscr;": '\U0001D4B4', - "Yuml;": '\U00000178', - "ZHcy;": '\U00000416', - "Zacute;": '\U00000179', - "Zcaron;": '\U0000017D', - "Zcy;": '\U00000417', - "Zdot;": '\U0000017B', - "ZeroWidthSpace;": '\U0000200B', - "Zeta;": '\U00000396', - "Zfr;": '\U00002128', - "Zopf;": '\U00002124', - "Zscr;": '\U0001D4B5', - "aacute;": '\U000000E1', - "abreve;": '\U00000103', - "ac;": '\U0000223E', - "acd;": '\U0000223F', - "acirc;": '\U000000E2', - "acute;": '\U000000B4', - "acy;": '\U00000430', - "aelig;": '\U000000E6', - "af;": '\U00002061', - "afr;": '\U0001D51E', - "agrave;": '\U000000E0', - "alefsym;": '\U00002135', - "aleph;": '\U00002135', - "alpha;": '\U000003B1', - "amacr;": '\U00000101', - "amalg;": '\U00002A3F', - "amp;": '\U00000026', - "and;": '\U00002227', - "andand;": '\U00002A55', - "andd;": '\U00002A5C', - "andslope;": '\U00002A58', - "andv;": '\U00002A5A', - "ang;": '\U00002220', - "ange;": '\U000029A4', - "angle;": '\U00002220', - "angmsd;": '\U00002221', - "angmsdaa;": '\U000029A8', - "angmsdab;": '\U000029A9', - "angmsdac;": '\U000029AA', - "angmsdad;": '\U000029AB', - "angmsdae;": '\U000029AC', - "angmsdaf;": '\U000029AD', - "angmsdag;": '\U000029AE', - "angmsdah;": '\U000029AF', - "angrt;": '\U0000221F', - "angrtvb;": '\U000022BE', - "angrtvbd;": '\U0000299D', - "angsph;": '\U00002222', - "angst;": '\U000000C5', - "angzarr;": '\U0000237C', - "aogon;": '\U00000105', - "aopf;": '\U0001D552', - "ap;": '\U00002248', - "apE;": '\U00002A70', - "apacir;": '\U00002A6F', - "ape;": '\U0000224A', - "apid;": '\U0000224B', - "apos;": '\U00000027', - "approx;": '\U00002248', - "approxeq;": '\U0000224A', - "aring;": '\U000000E5', - "ascr;": '\U0001D4B6', - "ast;": '\U0000002A', - "asymp;": '\U00002248', - "asympeq;": '\U0000224D', - "atilde;": '\U000000E3', - "auml;": '\U000000E4', - "awconint;": '\U00002233', - "awint;": '\U00002A11', - "bNot;": '\U00002AED', - "backcong;": '\U0000224C', - "backepsilon;": '\U000003F6', - "backprime;": '\U00002035', - "backsim;": '\U0000223D', - "backsimeq;": '\U000022CD', - "barvee;": '\U000022BD', - "barwed;": '\U00002305', - "barwedge;": '\U00002305', - "bbrk;": '\U000023B5', - "bbrktbrk;": '\U000023B6', - "bcong;": '\U0000224C', - "bcy;": '\U00000431', - "bdquo;": '\U0000201E', - "becaus;": '\U00002235', - "because;": '\U00002235', - "bemptyv;": '\U000029B0', - "bepsi;": '\U000003F6', - "bernou;": '\U0000212C', - "beta;": '\U000003B2', - "beth;": '\U00002136', - "between;": '\U0000226C', - "bfr;": '\U0001D51F', - "bigcap;": '\U000022C2', - "bigcirc;": '\U000025EF', - "bigcup;": '\U000022C3', - "bigodot;": '\U00002A00', - "bigoplus;": '\U00002A01', - "bigotimes;": '\U00002A02', - "bigsqcup;": '\U00002A06', - "bigstar;": '\U00002605', - "bigtriangledown;": '\U000025BD', - "bigtriangleup;": '\U000025B3', - "biguplus;": '\U00002A04', - "bigvee;": '\U000022C1', - "bigwedge;": '\U000022C0', - "bkarow;": '\U0000290D', - "blacklozenge;": '\U000029EB', - "blacksquare;": '\U000025AA', - "blacktriangle;": '\U000025B4', - "blacktriangledown;": '\U000025BE', - "blacktriangleleft;": '\U000025C2', - "blacktriangleright;": '\U000025B8', - "blank;": '\U00002423', - "blk12;": '\U00002592', - "blk14;": '\U00002591', - "blk34;": '\U00002593', - "block;": '\U00002588', - "bnot;": '\U00002310', - "bopf;": '\U0001D553', - "bot;": '\U000022A5', - "bottom;": '\U000022A5', - "bowtie;": '\U000022C8', - "boxDL;": '\U00002557', - "boxDR;": '\U00002554', - "boxDl;": '\U00002556', - "boxDr;": '\U00002553', - "boxH;": '\U00002550', - "boxHD;": '\U00002566', - "boxHU;": '\U00002569', - "boxHd;": '\U00002564', - "boxHu;": '\U00002567', - "boxUL;": '\U0000255D', - "boxUR;": '\U0000255A', - "boxUl;": '\U0000255C', - "boxUr;": '\U00002559', - "boxV;": '\U00002551', - "boxVH;": '\U0000256C', - "boxVL;": '\U00002563', - "boxVR;": '\U00002560', - "boxVh;": '\U0000256B', - "boxVl;": '\U00002562', - "boxVr;": '\U0000255F', - "boxbox;": '\U000029C9', - "boxdL;": '\U00002555', - "boxdR;": '\U00002552', - "boxdl;": '\U00002510', - "boxdr;": '\U0000250C', - "boxh;": '\U00002500', - "boxhD;": '\U00002565', - "boxhU;": '\U00002568', - "boxhd;": '\U0000252C', - "boxhu;": '\U00002534', - "boxminus;": '\U0000229F', - "boxplus;": '\U0000229E', - "boxtimes;": '\U000022A0', - "boxuL;": '\U0000255B', - "boxuR;": '\U00002558', - "boxul;": '\U00002518', - "boxur;": '\U00002514', - "boxv;": '\U00002502', - "boxvH;": '\U0000256A', - "boxvL;": '\U00002561', - "boxvR;": '\U0000255E', - "boxvh;": '\U0000253C', - "boxvl;": '\U00002524', - "boxvr;": '\U0000251C', - "bprime;": '\U00002035', - "breve;": '\U000002D8', - "brvbar;": '\U000000A6', - "bscr;": '\U0001D4B7', - "bsemi;": '\U0000204F', - "bsim;": '\U0000223D', - "bsime;": '\U000022CD', - "bsol;": '\U0000005C', - "bsolb;": '\U000029C5', - "bsolhsub;": '\U000027C8', - "bull;": '\U00002022', - "bullet;": '\U00002022', - "bump;": '\U0000224E', - "bumpE;": '\U00002AAE', - "bumpe;": '\U0000224F', - "bumpeq;": '\U0000224F', - "cacute;": '\U00000107', - "cap;": '\U00002229', - "capand;": '\U00002A44', - "capbrcup;": '\U00002A49', - "capcap;": '\U00002A4B', - "capcup;": '\U00002A47', - "capdot;": '\U00002A40', - "caret;": '\U00002041', - "caron;": '\U000002C7', - "ccaps;": '\U00002A4D', - "ccaron;": '\U0000010D', - "ccedil;": '\U000000E7', - "ccirc;": '\U00000109', - "ccups;": '\U00002A4C', - "ccupssm;": '\U00002A50', - "cdot;": '\U0000010B', - "cedil;": '\U000000B8', - "cemptyv;": '\U000029B2', - "cent;": '\U000000A2', - "centerdot;": '\U000000B7', - "cfr;": '\U0001D520', - "chcy;": '\U00000447', - "check;": '\U00002713', - "checkmark;": '\U00002713', - "chi;": '\U000003C7', - "cir;": '\U000025CB', - "cirE;": '\U000029C3', - "circ;": '\U000002C6', - "circeq;": '\U00002257', - "circlearrowleft;": '\U000021BA', - "circlearrowright;": '\U000021BB', - "circledR;": '\U000000AE', - "circledS;": '\U000024C8', - "circledast;": '\U0000229B', - "circledcirc;": '\U0000229A', - "circleddash;": '\U0000229D', - "cire;": '\U00002257', - "cirfnint;": '\U00002A10', - "cirmid;": '\U00002AEF', - "cirscir;": '\U000029C2', - "clubs;": '\U00002663', - "clubsuit;": '\U00002663', - "colon;": '\U0000003A', - "colone;": '\U00002254', - "coloneq;": '\U00002254', - "comma;": '\U0000002C', - "commat;": '\U00000040', - "comp;": '\U00002201', - "compfn;": '\U00002218', - "complement;": '\U00002201', - "complexes;": '\U00002102', - "cong;": '\U00002245', - "congdot;": '\U00002A6D', - "conint;": '\U0000222E', - "copf;": '\U0001D554', - "coprod;": '\U00002210', - "copy;": '\U000000A9', - "copysr;": '\U00002117', - "crarr;": '\U000021B5', - "cross;": '\U00002717', - "cscr;": '\U0001D4B8', - "csub;": '\U00002ACF', - "csube;": '\U00002AD1', - "csup;": '\U00002AD0', - "csupe;": '\U00002AD2', - "ctdot;": '\U000022EF', - "cudarrl;": '\U00002938', - "cudarrr;": '\U00002935', - "cuepr;": '\U000022DE', - "cuesc;": '\U000022DF', - "cularr;": '\U000021B6', - "cularrp;": '\U0000293D', - "cup;": '\U0000222A', - "cupbrcap;": '\U00002A48', - "cupcap;": '\U00002A46', - "cupcup;": '\U00002A4A', - "cupdot;": '\U0000228D', - "cupor;": '\U00002A45', - "curarr;": '\U000021B7', - "curarrm;": '\U0000293C', - "curlyeqprec;": '\U000022DE', - "curlyeqsucc;": '\U000022DF', - "curlyvee;": '\U000022CE', - "curlywedge;": '\U000022CF', - "curren;": '\U000000A4', - "curvearrowleft;": '\U000021B6', - "curvearrowright;": '\U000021B7', - "cuvee;": '\U000022CE', - "cuwed;": '\U000022CF', - "cwconint;": '\U00002232', - "cwint;": '\U00002231', - "cylcty;": '\U0000232D', - "dArr;": '\U000021D3', - "dHar;": '\U00002965', - "dagger;": '\U00002020', - "daleth;": '\U00002138', - "darr;": '\U00002193', - "dash;": '\U00002010', - "dashv;": '\U000022A3', - "dbkarow;": '\U0000290F', - "dblac;": '\U000002DD', - "dcaron;": '\U0000010F', - "dcy;": '\U00000434', - "dd;": '\U00002146', - "ddagger;": '\U00002021', - "ddarr;": '\U000021CA', - "ddotseq;": '\U00002A77', - "deg;": '\U000000B0', - "delta;": '\U000003B4', - "demptyv;": '\U000029B1', - "dfisht;": '\U0000297F', - "dfr;": '\U0001D521', - "dharl;": '\U000021C3', - "dharr;": '\U000021C2', - "diam;": '\U000022C4', - "diamond;": '\U000022C4', - "diamondsuit;": '\U00002666', - "diams;": '\U00002666', - "die;": '\U000000A8', - "digamma;": '\U000003DD', - "disin;": '\U000022F2', - "div;": '\U000000F7', - "divide;": '\U000000F7', - "divideontimes;": '\U000022C7', - "divonx;": '\U000022C7', - "djcy;": '\U00000452', - "dlcorn;": '\U0000231E', - "dlcrop;": '\U0000230D', - "dollar;": '\U00000024', - "dopf;": '\U0001D555', - "dot;": '\U000002D9', - "doteq;": '\U00002250', - "doteqdot;": '\U00002251', - "dotminus;": '\U00002238', - "dotplus;": '\U00002214', - "dotsquare;": '\U000022A1', - "doublebarwedge;": '\U00002306', - "downarrow;": '\U00002193', - "downdownarrows;": '\U000021CA', - "downharpoonleft;": '\U000021C3', - "downharpoonright;": '\U000021C2', - "drbkarow;": '\U00002910', - "drcorn;": '\U0000231F', - "drcrop;": '\U0000230C', - "dscr;": '\U0001D4B9', - "dscy;": '\U00000455', - "dsol;": '\U000029F6', - "dstrok;": '\U00000111', - "dtdot;": '\U000022F1', - "dtri;": '\U000025BF', - "dtrif;": '\U000025BE', - "duarr;": '\U000021F5', - "duhar;": '\U0000296F', - "dwangle;": '\U000029A6', - "dzcy;": '\U0000045F', - "dzigrarr;": '\U000027FF', - "eDDot;": '\U00002A77', - "eDot;": '\U00002251', - "eacute;": '\U000000E9', - "easter;": '\U00002A6E', - "ecaron;": '\U0000011B', - "ecir;": '\U00002256', - "ecirc;": '\U000000EA', - "ecolon;": '\U00002255', - "ecy;": '\U0000044D', - "edot;": '\U00000117', - "ee;": '\U00002147', - "efDot;": '\U00002252', - "efr;": '\U0001D522', - "eg;": '\U00002A9A', - "egrave;": '\U000000E8', - "egs;": '\U00002A96', - "egsdot;": '\U00002A98', - "el;": '\U00002A99', - "elinters;": '\U000023E7', - "ell;": '\U00002113', - "els;": '\U00002A95', - "elsdot;": '\U00002A97', - "emacr;": '\U00000113', - "empty;": '\U00002205', - "emptyset;": '\U00002205', - "emptyv;": '\U00002205', - "emsp;": '\U00002003', - "emsp13;": '\U00002004', - "emsp14;": '\U00002005', - "eng;": '\U0000014B', - "ensp;": '\U00002002', - "eogon;": '\U00000119', - "eopf;": '\U0001D556', - "epar;": '\U000022D5', - "eparsl;": '\U000029E3', - "eplus;": '\U00002A71', - "epsi;": '\U000003B5', - "epsilon;": '\U000003B5', - "epsiv;": '\U000003F5', - "eqcirc;": '\U00002256', - "eqcolon;": '\U00002255', - "eqsim;": '\U00002242', - "eqslantgtr;": '\U00002A96', - "eqslantless;": '\U00002A95', - "equals;": '\U0000003D', - "equest;": '\U0000225F', - "equiv;": '\U00002261', - "equivDD;": '\U00002A78', - "eqvparsl;": '\U000029E5', - "erDot;": '\U00002253', - "erarr;": '\U00002971', - "escr;": '\U0000212F', - "esdot;": '\U00002250', - "esim;": '\U00002242', - "eta;": '\U000003B7', - "eth;": '\U000000F0', - "euml;": '\U000000EB', - "euro;": '\U000020AC', - "excl;": '\U00000021', - "exist;": '\U00002203', - "expectation;": '\U00002130', - "exponentiale;": '\U00002147', - "fallingdotseq;": '\U00002252', - "fcy;": '\U00000444', - "female;": '\U00002640', - "ffilig;": '\U0000FB03', - "fflig;": '\U0000FB00', - "ffllig;": '\U0000FB04', - "ffr;": '\U0001D523', - "filig;": '\U0000FB01', - "flat;": '\U0000266D', - "fllig;": '\U0000FB02', - "fltns;": '\U000025B1', - "fnof;": '\U00000192', - "fopf;": '\U0001D557', - "forall;": '\U00002200', - "fork;": '\U000022D4', - "forkv;": '\U00002AD9', - "fpartint;": '\U00002A0D', - "frac12;": '\U000000BD', - "frac13;": '\U00002153', - "frac14;": '\U000000BC', - "frac15;": '\U00002155', - "frac16;": '\U00002159', - "frac18;": '\U0000215B', - "frac23;": '\U00002154', - "frac25;": '\U00002156', - "frac34;": '\U000000BE', - "frac35;": '\U00002157', - "frac38;": '\U0000215C', - "frac45;": '\U00002158', - "frac56;": '\U0000215A', - "frac58;": '\U0000215D', - "frac78;": '\U0000215E', - "frasl;": '\U00002044', - "frown;": '\U00002322', - "fscr;": '\U0001D4BB', - "gE;": '\U00002267', - "gEl;": '\U00002A8C', - "gacute;": '\U000001F5', - "gamma;": '\U000003B3', - "gammad;": '\U000003DD', - "gap;": '\U00002A86', - "gbreve;": '\U0000011F', - "gcirc;": '\U0000011D', - "gcy;": '\U00000433', - "gdot;": '\U00000121', - "ge;": '\U00002265', - "gel;": '\U000022DB', - "geq;": '\U00002265', - "geqq;": '\U00002267', - "geqslant;": '\U00002A7E', - "ges;": '\U00002A7E', - "gescc;": '\U00002AA9', - "gesdot;": '\U00002A80', - "gesdoto;": '\U00002A82', - "gesdotol;": '\U00002A84', - "gesles;": '\U00002A94', - "gfr;": '\U0001D524', - "gg;": '\U0000226B', - "ggg;": '\U000022D9', - "gimel;": '\U00002137', - "gjcy;": '\U00000453', - "gl;": '\U00002277', - "glE;": '\U00002A92', - "gla;": '\U00002AA5', - "glj;": '\U00002AA4', - "gnE;": '\U00002269', - "gnap;": '\U00002A8A', - "gnapprox;": '\U00002A8A', - "gne;": '\U00002A88', - "gneq;": '\U00002A88', - "gneqq;": '\U00002269', - "gnsim;": '\U000022E7', - "gopf;": '\U0001D558', - "grave;": '\U00000060', - "gscr;": '\U0000210A', - "gsim;": '\U00002273', - "gsime;": '\U00002A8E', - "gsiml;": '\U00002A90', - "gt;": '\U0000003E', - "gtcc;": '\U00002AA7', - "gtcir;": '\U00002A7A', - "gtdot;": '\U000022D7', - "gtlPar;": '\U00002995', - "gtquest;": '\U00002A7C', - "gtrapprox;": '\U00002A86', - "gtrarr;": '\U00002978', - "gtrdot;": '\U000022D7', - "gtreqless;": '\U000022DB', - "gtreqqless;": '\U00002A8C', - "gtrless;": '\U00002277', - "gtrsim;": '\U00002273', - "hArr;": '\U000021D4', - "hairsp;": '\U0000200A', - "half;": '\U000000BD', - "hamilt;": '\U0000210B', - "hardcy;": '\U0000044A', - "harr;": '\U00002194', - "harrcir;": '\U00002948', - "harrw;": '\U000021AD', - "hbar;": '\U0000210F', - "hcirc;": '\U00000125', - "hearts;": '\U00002665', - "heartsuit;": '\U00002665', - "hellip;": '\U00002026', - "hercon;": '\U000022B9', - "hfr;": '\U0001D525', - "hksearow;": '\U00002925', - "hkswarow;": '\U00002926', - "hoarr;": '\U000021FF', - "homtht;": '\U0000223B', - "hookleftarrow;": '\U000021A9', - "hookrightarrow;": '\U000021AA', - "hopf;": '\U0001D559', - "horbar;": '\U00002015', - "hscr;": '\U0001D4BD', - "hslash;": '\U0000210F', - "hstrok;": '\U00000127', - "hybull;": '\U00002043', - "hyphen;": '\U00002010', - "iacute;": '\U000000ED', - "ic;": '\U00002063', - "icirc;": '\U000000EE', - "icy;": '\U00000438', - "iecy;": '\U00000435', - "iexcl;": '\U000000A1', - "iff;": '\U000021D4', - "ifr;": '\U0001D526', - "igrave;": '\U000000EC', - "ii;": '\U00002148', - "iiiint;": '\U00002A0C', - "iiint;": '\U0000222D', - "iinfin;": '\U000029DC', - "iiota;": '\U00002129', - "ijlig;": '\U00000133', - "imacr;": '\U0000012B', - "image;": '\U00002111', - "imagline;": '\U00002110', - "imagpart;": '\U00002111', - "imath;": '\U00000131', - "imof;": '\U000022B7', - "imped;": '\U000001B5', - "in;": '\U00002208', - "incare;": '\U00002105', - "infin;": '\U0000221E', - "infintie;": '\U000029DD', - "inodot;": '\U00000131', - "int;": '\U0000222B', - "intcal;": '\U000022BA', - "integers;": '\U00002124', - "intercal;": '\U000022BA', - "intlarhk;": '\U00002A17', - "intprod;": '\U00002A3C', - "iocy;": '\U00000451', - "iogon;": '\U0000012F', - "iopf;": '\U0001D55A', - "iota;": '\U000003B9', - "iprod;": '\U00002A3C', - "iquest;": '\U000000BF', - "iscr;": '\U0001D4BE', - "isin;": '\U00002208', - "isinE;": '\U000022F9', - "isindot;": '\U000022F5', - "isins;": '\U000022F4', - "isinsv;": '\U000022F3', - "isinv;": '\U00002208', - "it;": '\U00002062', - "itilde;": '\U00000129', - "iukcy;": '\U00000456', - "iuml;": '\U000000EF', - "jcirc;": '\U00000135', - "jcy;": '\U00000439', - "jfr;": '\U0001D527', - "jmath;": '\U00000237', - "jopf;": '\U0001D55B', - "jscr;": '\U0001D4BF', - "jsercy;": '\U00000458', - "jukcy;": '\U00000454', - "kappa;": '\U000003BA', - "kappav;": '\U000003F0', - "kcedil;": '\U00000137', - "kcy;": '\U0000043A', - "kfr;": '\U0001D528', - "kgreen;": '\U00000138', - "khcy;": '\U00000445', - "kjcy;": '\U0000045C', - "kopf;": '\U0001D55C', - "kscr;": '\U0001D4C0', - "lAarr;": '\U000021DA', - "lArr;": '\U000021D0', - "lAtail;": '\U0000291B', - "lBarr;": '\U0000290E', - "lE;": '\U00002266', - "lEg;": '\U00002A8B', - "lHar;": '\U00002962', - "lacute;": '\U0000013A', - "laemptyv;": '\U000029B4', - "lagran;": '\U00002112', - "lambda;": '\U000003BB', - "lang;": '\U000027E8', - "langd;": '\U00002991', - "langle;": '\U000027E8', - "lap;": '\U00002A85', - "laquo;": '\U000000AB', - "larr;": '\U00002190', - "larrb;": '\U000021E4', - "larrbfs;": '\U0000291F', - "larrfs;": '\U0000291D', - "larrhk;": '\U000021A9', - "larrlp;": '\U000021AB', - "larrpl;": '\U00002939', - "larrsim;": '\U00002973', - "larrtl;": '\U000021A2', - "lat;": '\U00002AAB', - "latail;": '\U00002919', - "late;": '\U00002AAD', - "lbarr;": '\U0000290C', - "lbbrk;": '\U00002772', - "lbrace;": '\U0000007B', - "lbrack;": '\U0000005B', - "lbrke;": '\U0000298B', - "lbrksld;": '\U0000298F', - "lbrkslu;": '\U0000298D', - "lcaron;": '\U0000013E', - "lcedil;": '\U0000013C', - "lceil;": '\U00002308', - "lcub;": '\U0000007B', - "lcy;": '\U0000043B', - "ldca;": '\U00002936', - "ldquo;": '\U0000201C', - "ldquor;": '\U0000201E', - "ldrdhar;": '\U00002967', - "ldrushar;": '\U0000294B', - "ldsh;": '\U000021B2', - "le;": '\U00002264', - "leftarrow;": '\U00002190', - "leftarrowtail;": '\U000021A2', - "leftharpoondown;": '\U000021BD', - "leftharpoonup;": '\U000021BC', - "leftleftarrows;": '\U000021C7', - "leftrightarrow;": '\U00002194', - "leftrightarrows;": '\U000021C6', - "leftrightharpoons;": '\U000021CB', - "leftrightsquigarrow;": '\U000021AD', - "leftthreetimes;": '\U000022CB', - "leg;": '\U000022DA', - "leq;": '\U00002264', - "leqq;": '\U00002266', - "leqslant;": '\U00002A7D', - "les;": '\U00002A7D', - "lescc;": '\U00002AA8', - "lesdot;": '\U00002A7F', - "lesdoto;": '\U00002A81', - "lesdotor;": '\U00002A83', - "lesges;": '\U00002A93', - "lessapprox;": '\U00002A85', - "lessdot;": '\U000022D6', - "lesseqgtr;": '\U000022DA', - "lesseqqgtr;": '\U00002A8B', - "lessgtr;": '\U00002276', - "lesssim;": '\U00002272', - "lfisht;": '\U0000297C', - "lfloor;": '\U0000230A', - "lfr;": '\U0001D529', - "lg;": '\U00002276', - "lgE;": '\U00002A91', - "lhard;": '\U000021BD', - "lharu;": '\U000021BC', - "lharul;": '\U0000296A', - "lhblk;": '\U00002584', - "ljcy;": '\U00000459', - "ll;": '\U0000226A', - "llarr;": '\U000021C7', - "llcorner;": '\U0000231E', - "llhard;": '\U0000296B', - "lltri;": '\U000025FA', - "lmidot;": '\U00000140', - "lmoust;": '\U000023B0', - "lmoustache;": '\U000023B0', - "lnE;": '\U00002268', - "lnap;": '\U00002A89', - "lnapprox;": '\U00002A89', - "lne;": '\U00002A87', - "lneq;": '\U00002A87', - "lneqq;": '\U00002268', - "lnsim;": '\U000022E6', - "loang;": '\U000027EC', - "loarr;": '\U000021FD', - "lobrk;": '\U000027E6', - "longleftarrow;": '\U000027F5', - "longleftrightarrow;": '\U000027F7', - "longmapsto;": '\U000027FC', - "longrightarrow;": '\U000027F6', - "looparrowleft;": '\U000021AB', - "looparrowright;": '\U000021AC', - "lopar;": '\U00002985', - "lopf;": '\U0001D55D', - "loplus;": '\U00002A2D', - "lotimes;": '\U00002A34', - "lowast;": '\U00002217', - "lowbar;": '\U0000005F', - "loz;": '\U000025CA', - "lozenge;": '\U000025CA', - "lozf;": '\U000029EB', - "lpar;": '\U00000028', - "lparlt;": '\U00002993', - "lrarr;": '\U000021C6', - "lrcorner;": '\U0000231F', - "lrhar;": '\U000021CB', - "lrhard;": '\U0000296D', - "lrm;": '\U0000200E', - "lrtri;": '\U000022BF', - "lsaquo;": '\U00002039', - "lscr;": '\U0001D4C1', - "lsh;": '\U000021B0', - "lsim;": '\U00002272', - "lsime;": '\U00002A8D', - "lsimg;": '\U00002A8F', - "lsqb;": '\U0000005B', - "lsquo;": '\U00002018', - "lsquor;": '\U0000201A', - "lstrok;": '\U00000142', - "lt;": '\U0000003C', - "ltcc;": '\U00002AA6', - "ltcir;": '\U00002A79', - "ltdot;": '\U000022D6', - "lthree;": '\U000022CB', - "ltimes;": '\U000022C9', - "ltlarr;": '\U00002976', - "ltquest;": '\U00002A7B', - "ltrPar;": '\U00002996', - "ltri;": '\U000025C3', - "ltrie;": '\U000022B4', - "ltrif;": '\U000025C2', - "lurdshar;": '\U0000294A', - "luruhar;": '\U00002966', - "mDDot;": '\U0000223A', - "macr;": '\U000000AF', - "male;": '\U00002642', - "malt;": '\U00002720', - "maltese;": '\U00002720', - "map;": '\U000021A6', - "mapsto;": '\U000021A6', - "mapstodown;": '\U000021A7', - "mapstoleft;": '\U000021A4', - "mapstoup;": '\U000021A5', - "marker;": '\U000025AE', - "mcomma;": '\U00002A29', - "mcy;": '\U0000043C', - "mdash;": '\U00002014', - "measuredangle;": '\U00002221', - "mfr;": '\U0001D52A', - "mho;": '\U00002127', - "micro;": '\U000000B5', - "mid;": '\U00002223', - "midast;": '\U0000002A', - "midcir;": '\U00002AF0', - "middot;": '\U000000B7', - "minus;": '\U00002212', - "minusb;": '\U0000229F', - "minusd;": '\U00002238', - "minusdu;": '\U00002A2A', - "mlcp;": '\U00002ADB', - "mldr;": '\U00002026', - "mnplus;": '\U00002213', - "models;": '\U000022A7', - "mopf;": '\U0001D55E', - "mp;": '\U00002213', - "mscr;": '\U0001D4C2', - "mstpos;": '\U0000223E', - "mu;": '\U000003BC', - "multimap;": '\U000022B8', - "mumap;": '\U000022B8', - "nLeftarrow;": '\U000021CD', - "nLeftrightarrow;": '\U000021CE', - "nRightarrow;": '\U000021CF', - "nVDash;": '\U000022AF', - "nVdash;": '\U000022AE', - "nabla;": '\U00002207', - "nacute;": '\U00000144', - "nap;": '\U00002249', - "napos;": '\U00000149', - "napprox;": '\U00002249', - "natur;": '\U0000266E', - "natural;": '\U0000266E', - "naturals;": '\U00002115', - "nbsp;": '\U000000A0', - "ncap;": '\U00002A43', - "ncaron;": '\U00000148', - "ncedil;": '\U00000146', - "ncong;": '\U00002247', - "ncup;": '\U00002A42', - "ncy;": '\U0000043D', - "ndash;": '\U00002013', - "ne;": '\U00002260', - "neArr;": '\U000021D7', - "nearhk;": '\U00002924', - "nearr;": '\U00002197', - "nearrow;": '\U00002197', - "nequiv;": '\U00002262', - "nesear;": '\U00002928', - "nexist;": '\U00002204', - "nexists;": '\U00002204', - "nfr;": '\U0001D52B', - "nge;": '\U00002271', - "ngeq;": '\U00002271', - "ngsim;": '\U00002275', - "ngt;": '\U0000226F', - "ngtr;": '\U0000226F', - "nhArr;": '\U000021CE', - "nharr;": '\U000021AE', - "nhpar;": '\U00002AF2', - "ni;": '\U0000220B', - "nis;": '\U000022FC', - "nisd;": '\U000022FA', - "niv;": '\U0000220B', - "njcy;": '\U0000045A', - "nlArr;": '\U000021CD', - "nlarr;": '\U0000219A', - "nldr;": '\U00002025', - "nle;": '\U00002270', - "nleftarrow;": '\U0000219A', - "nleftrightarrow;": '\U000021AE', - "nleq;": '\U00002270', - "nless;": '\U0000226E', - "nlsim;": '\U00002274', - "nlt;": '\U0000226E', - "nltri;": '\U000022EA', - "nltrie;": '\U000022EC', - "nmid;": '\U00002224', - "nopf;": '\U0001D55F', - "not;": '\U000000AC', - "notin;": '\U00002209', - "notinva;": '\U00002209', - "notinvb;": '\U000022F7', - "notinvc;": '\U000022F6', - "notni;": '\U0000220C', - "notniva;": '\U0000220C', - "notnivb;": '\U000022FE', - "notnivc;": '\U000022FD', - "npar;": '\U00002226', - "nparallel;": '\U00002226', - "npolint;": '\U00002A14', - "npr;": '\U00002280', - "nprcue;": '\U000022E0', - "nprec;": '\U00002280', - "nrArr;": '\U000021CF', - "nrarr;": '\U0000219B', - "nrightarrow;": '\U0000219B', - "nrtri;": '\U000022EB', - "nrtrie;": '\U000022ED', - "nsc;": '\U00002281', - "nsccue;": '\U000022E1', - "nscr;": '\U0001D4C3', - "nshortmid;": '\U00002224', - "nshortparallel;": '\U00002226', - "nsim;": '\U00002241', - "nsime;": '\U00002244', - "nsimeq;": '\U00002244', - "nsmid;": '\U00002224', - "nspar;": '\U00002226', - "nsqsube;": '\U000022E2', - "nsqsupe;": '\U000022E3', - "nsub;": '\U00002284', - "nsube;": '\U00002288', - "nsubseteq;": '\U00002288', - "nsucc;": '\U00002281', - "nsup;": '\U00002285', - "nsupe;": '\U00002289', - "nsupseteq;": '\U00002289', - "ntgl;": '\U00002279', - "ntilde;": '\U000000F1', - "ntlg;": '\U00002278', - "ntriangleleft;": '\U000022EA', - "ntrianglelefteq;": '\U000022EC', - "ntriangleright;": '\U000022EB', - "ntrianglerighteq;": '\U000022ED', - "nu;": '\U000003BD', - "num;": '\U00000023', - "numero;": '\U00002116', - "numsp;": '\U00002007', - "nvDash;": '\U000022AD', - "nvHarr;": '\U00002904', - "nvdash;": '\U000022AC', - "nvinfin;": '\U000029DE', - "nvlArr;": '\U00002902', - "nvrArr;": '\U00002903', - "nwArr;": '\U000021D6', - "nwarhk;": '\U00002923', - "nwarr;": '\U00002196', - "nwarrow;": '\U00002196', - "nwnear;": '\U00002927', - "oS;": '\U000024C8', - "oacute;": '\U000000F3', - "oast;": '\U0000229B', - "ocir;": '\U0000229A', - "ocirc;": '\U000000F4', - "ocy;": '\U0000043E', - "odash;": '\U0000229D', - "odblac;": '\U00000151', - "odiv;": '\U00002A38', - "odot;": '\U00002299', - "odsold;": '\U000029BC', - "oelig;": '\U00000153', - "ofcir;": '\U000029BF', - "ofr;": '\U0001D52C', - "ogon;": '\U000002DB', - "ograve;": '\U000000F2', - "ogt;": '\U000029C1', - "ohbar;": '\U000029B5', - "ohm;": '\U000003A9', - "oint;": '\U0000222E', - "olarr;": '\U000021BA', - "olcir;": '\U000029BE', - "olcross;": '\U000029BB', - "oline;": '\U0000203E', - "olt;": '\U000029C0', - "omacr;": '\U0000014D', - "omega;": '\U000003C9', - "omicron;": '\U000003BF', - "omid;": '\U000029B6', - "ominus;": '\U00002296', - "oopf;": '\U0001D560', - "opar;": '\U000029B7', - "operp;": '\U000029B9', - "oplus;": '\U00002295', - "or;": '\U00002228', - "orarr;": '\U000021BB', - "ord;": '\U00002A5D', - "order;": '\U00002134', - "orderof;": '\U00002134', - "ordf;": '\U000000AA', - "ordm;": '\U000000BA', - "origof;": '\U000022B6', - "oror;": '\U00002A56', - "orslope;": '\U00002A57', - "orv;": '\U00002A5B', - "oscr;": '\U00002134', - "oslash;": '\U000000F8', - "osol;": '\U00002298', - "otilde;": '\U000000F5', - "otimes;": '\U00002297', - "otimesas;": '\U00002A36', - "ouml;": '\U000000F6', - "ovbar;": '\U0000233D', - "par;": '\U00002225', - "para;": '\U000000B6', - "parallel;": '\U00002225', - "parsim;": '\U00002AF3', - "parsl;": '\U00002AFD', - "part;": '\U00002202', - "pcy;": '\U0000043F', - "percnt;": '\U00000025', - "period;": '\U0000002E', - "permil;": '\U00002030', - "perp;": '\U000022A5', - "pertenk;": '\U00002031', - "pfr;": '\U0001D52D', - "phi;": '\U000003C6', - "phiv;": '\U000003D5', - "phmmat;": '\U00002133', - "phone;": '\U0000260E', - "pi;": '\U000003C0', - "pitchfork;": '\U000022D4', - "piv;": '\U000003D6', - "planck;": '\U0000210F', - "planckh;": '\U0000210E', - "plankv;": '\U0000210F', - "plus;": '\U0000002B', - "plusacir;": '\U00002A23', - "plusb;": '\U0000229E', - "pluscir;": '\U00002A22', - "plusdo;": '\U00002214', - "plusdu;": '\U00002A25', - "pluse;": '\U00002A72', - "plusmn;": '\U000000B1', - "plussim;": '\U00002A26', - "plustwo;": '\U00002A27', - "pm;": '\U000000B1', - "pointint;": '\U00002A15', - "popf;": '\U0001D561', - "pound;": '\U000000A3', - "pr;": '\U0000227A', - "prE;": '\U00002AB3', - "prap;": '\U00002AB7', - "prcue;": '\U0000227C', - "pre;": '\U00002AAF', - "prec;": '\U0000227A', - "precapprox;": '\U00002AB7', - "preccurlyeq;": '\U0000227C', - "preceq;": '\U00002AAF', - "precnapprox;": '\U00002AB9', - "precneqq;": '\U00002AB5', - "precnsim;": '\U000022E8', - "precsim;": '\U0000227E', - "prime;": '\U00002032', - "primes;": '\U00002119', - "prnE;": '\U00002AB5', - "prnap;": '\U00002AB9', - "prnsim;": '\U000022E8', - "prod;": '\U0000220F', - "profalar;": '\U0000232E', - "profline;": '\U00002312', - "profsurf;": '\U00002313', - "prop;": '\U0000221D', - "propto;": '\U0000221D', - "prsim;": '\U0000227E', - "prurel;": '\U000022B0', - "pscr;": '\U0001D4C5', - "psi;": '\U000003C8', - "puncsp;": '\U00002008', - "qfr;": '\U0001D52E', - "qint;": '\U00002A0C', - "qopf;": '\U0001D562', - "qprime;": '\U00002057', - "qscr;": '\U0001D4C6', - "quaternions;": '\U0000210D', - "quatint;": '\U00002A16', - "quest;": '\U0000003F', - "questeq;": '\U0000225F', - "quot;": '\U00000022', - "rAarr;": '\U000021DB', - "rArr;": '\U000021D2', - "rAtail;": '\U0000291C', - "rBarr;": '\U0000290F', - "rHar;": '\U00002964', - "racute;": '\U00000155', - "radic;": '\U0000221A', - "raemptyv;": '\U000029B3', - "rang;": '\U000027E9', - "rangd;": '\U00002992', - "range;": '\U000029A5', - "rangle;": '\U000027E9', - "raquo;": '\U000000BB', - "rarr;": '\U00002192', - "rarrap;": '\U00002975', - "rarrb;": '\U000021E5', - "rarrbfs;": '\U00002920', - "rarrc;": '\U00002933', - "rarrfs;": '\U0000291E', - "rarrhk;": '\U000021AA', - "rarrlp;": '\U000021AC', - "rarrpl;": '\U00002945', - "rarrsim;": '\U00002974', - "rarrtl;": '\U000021A3', - "rarrw;": '\U0000219D', - "ratail;": '\U0000291A', - "ratio;": '\U00002236', - "rationals;": '\U0000211A', - "rbarr;": '\U0000290D', - "rbbrk;": '\U00002773', - "rbrace;": '\U0000007D', - "rbrack;": '\U0000005D', - "rbrke;": '\U0000298C', - "rbrksld;": '\U0000298E', - "rbrkslu;": '\U00002990', - "rcaron;": '\U00000159', - "rcedil;": '\U00000157', - "rceil;": '\U00002309', - "rcub;": '\U0000007D', - "rcy;": '\U00000440', - "rdca;": '\U00002937', - "rdldhar;": '\U00002969', - "rdquo;": '\U0000201D', - "rdquor;": '\U0000201D', - "rdsh;": '\U000021B3', - "real;": '\U0000211C', - "realine;": '\U0000211B', - "realpart;": '\U0000211C', - "reals;": '\U0000211D', - "rect;": '\U000025AD', - "reg;": '\U000000AE', - "rfisht;": '\U0000297D', - "rfloor;": '\U0000230B', - "rfr;": '\U0001D52F', - "rhard;": '\U000021C1', - "rharu;": '\U000021C0', - "rharul;": '\U0000296C', - "rho;": '\U000003C1', - "rhov;": '\U000003F1', - "rightarrow;": '\U00002192', - "rightarrowtail;": '\U000021A3', - "rightharpoondown;": '\U000021C1', - "rightharpoonup;": '\U000021C0', - "rightleftarrows;": '\U000021C4', - "rightleftharpoons;": '\U000021CC', - "rightrightarrows;": '\U000021C9', - "rightsquigarrow;": '\U0000219D', - "rightthreetimes;": '\U000022CC', - "ring;": '\U000002DA', - "risingdotseq;": '\U00002253', - "rlarr;": '\U000021C4', - "rlhar;": '\U000021CC', - "rlm;": '\U0000200F', - "rmoust;": '\U000023B1', - "rmoustache;": '\U000023B1', - "rnmid;": '\U00002AEE', - "roang;": '\U000027ED', - "roarr;": '\U000021FE', - "robrk;": '\U000027E7', - "ropar;": '\U00002986', - "ropf;": '\U0001D563', - "roplus;": '\U00002A2E', - "rotimes;": '\U00002A35', - "rpar;": '\U00000029', - "rpargt;": '\U00002994', - "rppolint;": '\U00002A12', - "rrarr;": '\U000021C9', - "rsaquo;": '\U0000203A', - "rscr;": '\U0001D4C7', - "rsh;": '\U000021B1', - "rsqb;": '\U0000005D', - "rsquo;": '\U00002019', - "rsquor;": '\U00002019', - "rthree;": '\U000022CC', - "rtimes;": '\U000022CA', - "rtri;": '\U000025B9', - "rtrie;": '\U000022B5', - "rtrif;": '\U000025B8', - "rtriltri;": '\U000029CE', - "ruluhar;": '\U00002968', - "rx;": '\U0000211E', - "sacute;": '\U0000015B', - "sbquo;": '\U0000201A', - "sc;": '\U0000227B', - "scE;": '\U00002AB4', - "scap;": '\U00002AB8', - "scaron;": '\U00000161', - "sccue;": '\U0000227D', - "sce;": '\U00002AB0', - "scedil;": '\U0000015F', - "scirc;": '\U0000015D', - "scnE;": '\U00002AB6', - "scnap;": '\U00002ABA', - "scnsim;": '\U000022E9', - "scpolint;": '\U00002A13', - "scsim;": '\U0000227F', - "scy;": '\U00000441', - "sdot;": '\U000022C5', - "sdotb;": '\U000022A1', - "sdote;": '\U00002A66', - "seArr;": '\U000021D8', - "searhk;": '\U00002925', - "searr;": '\U00002198', - "searrow;": '\U00002198', - "sect;": '\U000000A7', - "semi;": '\U0000003B', - "seswar;": '\U00002929', - "setminus;": '\U00002216', - "setmn;": '\U00002216', - "sext;": '\U00002736', - "sfr;": '\U0001D530', - "sfrown;": '\U00002322', - "sharp;": '\U0000266F', - "shchcy;": '\U00000449', - "shcy;": '\U00000448', - "shortmid;": '\U00002223', - "shortparallel;": '\U00002225', - "shy;": '\U000000AD', - "sigma;": '\U000003C3', - "sigmaf;": '\U000003C2', - "sigmav;": '\U000003C2', - "sim;": '\U0000223C', - "simdot;": '\U00002A6A', - "sime;": '\U00002243', - "simeq;": '\U00002243', - "simg;": '\U00002A9E', - "simgE;": '\U00002AA0', - "siml;": '\U00002A9D', - "simlE;": '\U00002A9F', - "simne;": '\U00002246', - "simplus;": '\U00002A24', - "simrarr;": '\U00002972', - "slarr;": '\U00002190', - "smallsetminus;": '\U00002216', - "smashp;": '\U00002A33', - "smeparsl;": '\U000029E4', - "smid;": '\U00002223', - "smile;": '\U00002323', - "smt;": '\U00002AAA', - "smte;": '\U00002AAC', - "softcy;": '\U0000044C', - "sol;": '\U0000002F', - "solb;": '\U000029C4', - "solbar;": '\U0000233F', - "sopf;": '\U0001D564', - "spades;": '\U00002660', - "spadesuit;": '\U00002660', - "spar;": '\U00002225', - "sqcap;": '\U00002293', - "sqcup;": '\U00002294', - "sqsub;": '\U0000228F', - "sqsube;": '\U00002291', - "sqsubset;": '\U0000228F', - "sqsubseteq;": '\U00002291', - "sqsup;": '\U00002290', - "sqsupe;": '\U00002292', - "sqsupset;": '\U00002290', - "sqsupseteq;": '\U00002292', - "squ;": '\U000025A1', - "square;": '\U000025A1', - "squarf;": '\U000025AA', - "squf;": '\U000025AA', - "srarr;": '\U00002192', - "sscr;": '\U0001D4C8', - "ssetmn;": '\U00002216', - "ssmile;": '\U00002323', - "sstarf;": '\U000022C6', - "star;": '\U00002606', - "starf;": '\U00002605', - "straightepsilon;": '\U000003F5', - "straightphi;": '\U000003D5', - "strns;": '\U000000AF', - "sub;": '\U00002282', - "subE;": '\U00002AC5', - "subdot;": '\U00002ABD', - "sube;": '\U00002286', - "subedot;": '\U00002AC3', - "submult;": '\U00002AC1', - "subnE;": '\U00002ACB', - "subne;": '\U0000228A', - "subplus;": '\U00002ABF', - "subrarr;": '\U00002979', - "subset;": '\U00002282', - "subseteq;": '\U00002286', - "subseteqq;": '\U00002AC5', - "subsetneq;": '\U0000228A', - "subsetneqq;": '\U00002ACB', - "subsim;": '\U00002AC7', - "subsub;": '\U00002AD5', - "subsup;": '\U00002AD3', - "succ;": '\U0000227B', - "succapprox;": '\U00002AB8', - "succcurlyeq;": '\U0000227D', - "succeq;": '\U00002AB0', - "succnapprox;": '\U00002ABA', - "succneqq;": '\U00002AB6', - "succnsim;": '\U000022E9', - "succsim;": '\U0000227F', - "sum;": '\U00002211', - "sung;": '\U0000266A', - "sup;": '\U00002283', - "sup1;": '\U000000B9', - "sup2;": '\U000000B2', - "sup3;": '\U000000B3', - "supE;": '\U00002AC6', - "supdot;": '\U00002ABE', - "supdsub;": '\U00002AD8', - "supe;": '\U00002287', - "supedot;": '\U00002AC4', - "suphsol;": '\U000027C9', - "suphsub;": '\U00002AD7', - "suplarr;": '\U0000297B', - "supmult;": '\U00002AC2', - "supnE;": '\U00002ACC', - "supne;": '\U0000228B', - "supplus;": '\U00002AC0', - "supset;": '\U00002283', - "supseteq;": '\U00002287', - "supseteqq;": '\U00002AC6', - "supsetneq;": '\U0000228B', - "supsetneqq;": '\U00002ACC', - "supsim;": '\U00002AC8', - "supsub;": '\U00002AD4', - "supsup;": '\U00002AD6', - "swArr;": '\U000021D9', - "swarhk;": '\U00002926', - "swarr;": '\U00002199', - "swarrow;": '\U00002199', - "swnwar;": '\U0000292A', - "szlig;": '\U000000DF', - "target;": '\U00002316', - "tau;": '\U000003C4', - "tbrk;": '\U000023B4', - "tcaron;": '\U00000165', - "tcedil;": '\U00000163', - "tcy;": '\U00000442', - "tdot;": '\U000020DB', - "telrec;": '\U00002315', - "tfr;": '\U0001D531', - "there4;": '\U00002234', - "therefore;": '\U00002234', - "theta;": '\U000003B8', - "thetasym;": '\U000003D1', - "thetav;": '\U000003D1', - "thickapprox;": '\U00002248', - "thicksim;": '\U0000223C', - "thinsp;": '\U00002009', - "thkap;": '\U00002248', - "thksim;": '\U0000223C', - "thorn;": '\U000000FE', - "tilde;": '\U000002DC', - "times;": '\U000000D7', - "timesb;": '\U000022A0', - "timesbar;": '\U00002A31', - "timesd;": '\U00002A30', - "tint;": '\U0000222D', - "toea;": '\U00002928', - "top;": '\U000022A4', - "topbot;": '\U00002336', - "topcir;": '\U00002AF1', - "topf;": '\U0001D565', - "topfork;": '\U00002ADA', - "tosa;": '\U00002929', - "tprime;": '\U00002034', - "trade;": '\U00002122', - "triangle;": '\U000025B5', - "triangledown;": '\U000025BF', - "triangleleft;": '\U000025C3', - "trianglelefteq;": '\U000022B4', - "triangleq;": '\U0000225C', - "triangleright;": '\U000025B9', - "trianglerighteq;": '\U000022B5', - "tridot;": '\U000025EC', - "trie;": '\U0000225C', - "triminus;": '\U00002A3A', - "triplus;": '\U00002A39', - "trisb;": '\U000029CD', - "tritime;": '\U00002A3B', - "trpezium;": '\U000023E2', - "tscr;": '\U0001D4C9', - "tscy;": '\U00000446', - "tshcy;": '\U0000045B', - "tstrok;": '\U00000167', - "twixt;": '\U0000226C', - "twoheadleftarrow;": '\U0000219E', - "twoheadrightarrow;": '\U000021A0', - "uArr;": '\U000021D1', - "uHar;": '\U00002963', - "uacute;": '\U000000FA', - "uarr;": '\U00002191', - "ubrcy;": '\U0000045E', - "ubreve;": '\U0000016D', - "ucirc;": '\U000000FB', - "ucy;": '\U00000443', - "udarr;": '\U000021C5', - "udblac;": '\U00000171', - "udhar;": '\U0000296E', - "ufisht;": '\U0000297E', - "ufr;": '\U0001D532', - "ugrave;": '\U000000F9', - "uharl;": '\U000021BF', - "uharr;": '\U000021BE', - "uhblk;": '\U00002580', - "ulcorn;": '\U0000231C', - "ulcorner;": '\U0000231C', - "ulcrop;": '\U0000230F', - "ultri;": '\U000025F8', - "umacr;": '\U0000016B', - "uml;": '\U000000A8', - "uogon;": '\U00000173', - "uopf;": '\U0001D566', - "uparrow;": '\U00002191', - "updownarrow;": '\U00002195', - "upharpoonleft;": '\U000021BF', - "upharpoonright;": '\U000021BE', - "uplus;": '\U0000228E', - "upsi;": '\U000003C5', - "upsih;": '\U000003D2', - "upsilon;": '\U000003C5', - "upuparrows;": '\U000021C8', - "urcorn;": '\U0000231D', - "urcorner;": '\U0000231D', - "urcrop;": '\U0000230E', - "uring;": '\U0000016F', - "urtri;": '\U000025F9', - "uscr;": '\U0001D4CA', - "utdot;": '\U000022F0', - "utilde;": '\U00000169', - "utri;": '\U000025B5', - "utrif;": '\U000025B4', - "uuarr;": '\U000021C8', - "uuml;": '\U000000FC', - "uwangle;": '\U000029A7', - "vArr;": '\U000021D5', - "vBar;": '\U00002AE8', - "vBarv;": '\U00002AE9', - "vDash;": '\U000022A8', - "vangrt;": '\U0000299C', - "varepsilon;": '\U000003F5', - "varkappa;": '\U000003F0', - "varnothing;": '\U00002205', - "varphi;": '\U000003D5', - "varpi;": '\U000003D6', - "varpropto;": '\U0000221D', - "varr;": '\U00002195', - "varrho;": '\U000003F1', - "varsigma;": '\U000003C2', - "vartheta;": '\U000003D1', - "vartriangleleft;": '\U000022B2', - "vartriangleright;": '\U000022B3', - "vcy;": '\U00000432', - "vdash;": '\U000022A2', - "vee;": '\U00002228', - "veebar;": '\U000022BB', - "veeeq;": '\U0000225A', - "vellip;": '\U000022EE', - "verbar;": '\U0000007C', - "vert;": '\U0000007C', - "vfr;": '\U0001D533', - "vltri;": '\U000022B2', - "vopf;": '\U0001D567', - "vprop;": '\U0000221D', - "vrtri;": '\U000022B3', - "vscr;": '\U0001D4CB', - "vzigzag;": '\U0000299A', - "wcirc;": '\U00000175', - "wedbar;": '\U00002A5F', - "wedge;": '\U00002227', - "wedgeq;": '\U00002259', - "weierp;": '\U00002118', - "wfr;": '\U0001D534', - "wopf;": '\U0001D568', - "wp;": '\U00002118', - "wr;": '\U00002240', - "wreath;": '\U00002240', - "wscr;": '\U0001D4CC', - "xcap;": '\U000022C2', - "xcirc;": '\U000025EF', - "xcup;": '\U000022C3', - "xdtri;": '\U000025BD', - "xfr;": '\U0001D535', - "xhArr;": '\U000027FA', - "xharr;": '\U000027F7', - "xi;": '\U000003BE', - "xlArr;": '\U000027F8', - "xlarr;": '\U000027F5', - "xmap;": '\U000027FC', - "xnis;": '\U000022FB', - "xodot;": '\U00002A00', - "xopf;": '\U0001D569', - "xoplus;": '\U00002A01', - "xotime;": '\U00002A02', - "xrArr;": '\U000027F9', - "xrarr;": '\U000027F6', - "xscr;": '\U0001D4CD', - "xsqcup;": '\U00002A06', - "xuplus;": '\U00002A04', - "xutri;": '\U000025B3', - "xvee;": '\U000022C1', - "xwedge;": '\U000022C0', - "yacute;": '\U000000FD', - "yacy;": '\U0000044F', - "ycirc;": '\U00000177', - "ycy;": '\U0000044B', - "yen;": '\U000000A5', - "yfr;": '\U0001D536', - "yicy;": '\U00000457', - "yopf;": '\U0001D56A', - "yscr;": '\U0001D4CE', - "yucy;": '\U0000044E', - "yuml;": '\U000000FF', - "zacute;": '\U0000017A', - "zcaron;": '\U0000017E', - "zcy;": '\U00000437', - "zdot;": '\U0000017C', - "zeetrf;": '\U00002128', - "zeta;": '\U000003B6', - "zfr;": '\U0001D537', - "zhcy;": '\U00000436', - "zigrarr;": '\U000021DD', - "zopf;": '\U0001D56B', - "zscr;": '\U0001D4CF', - "zwj;": '\U0000200D', - "zwnj;": '\U0000200C', - "AElig": '\U000000C6', - "AMP": '\U00000026', - "Aacute": '\U000000C1', - "Acirc": '\U000000C2', - "Agrave": '\U000000C0', - "Aring": '\U000000C5', - "Atilde": '\U000000C3', - "Auml": '\U000000C4', - "COPY": '\U000000A9', - "Ccedil": '\U000000C7', - "ETH": '\U000000D0', - "Eacute": '\U000000C9', - "Ecirc": '\U000000CA', - "Egrave": '\U000000C8', - "Euml": '\U000000CB', - "GT": '\U0000003E', - "Iacute": '\U000000CD', - "Icirc": '\U000000CE', - "Igrave": '\U000000CC', - "Iuml": '\U000000CF', - "LT": '\U0000003C', - "Ntilde": '\U000000D1', - "Oacute": '\U000000D3', - "Ocirc": '\U000000D4', - "Ograve": '\U000000D2', - "Oslash": '\U000000D8', - "Otilde": '\U000000D5', - "Ouml": '\U000000D6', - "QUOT": '\U00000022', - "REG": '\U000000AE', - "THORN": '\U000000DE', - "Uacute": '\U000000DA', - "Ucirc": '\U000000DB', - "Ugrave": '\U000000D9', - "Uuml": '\U000000DC', - "Yacute": '\U000000DD', - "aacute": '\U000000E1', - "acirc": '\U000000E2', - "acute": '\U000000B4', - "aelig": '\U000000E6', - "agrave": '\U000000E0', - "amp": '\U00000026', - "aring": '\U000000E5', - "atilde": '\U000000E3', - "auml": '\U000000E4', - "brvbar": '\U000000A6', - "ccedil": '\U000000E7', - "cedil": '\U000000B8', - "cent": '\U000000A2', - "copy": '\U000000A9', - "curren": '\U000000A4', - "deg": '\U000000B0', - "divide": '\U000000F7', - "eacute": '\U000000E9', - "ecirc": '\U000000EA', - "egrave": '\U000000E8', - "eth": '\U000000F0', - "euml": '\U000000EB', - "frac12": '\U000000BD', - "frac14": '\U000000BC', - "frac34": '\U000000BE', - "gt": '\U0000003E', - "iacute": '\U000000ED', - "icirc": '\U000000EE', - "iexcl": '\U000000A1', - "igrave": '\U000000EC', - "iquest": '\U000000BF', - "iuml": '\U000000EF', - "laquo": '\U000000AB', - "lt": '\U0000003C', - "macr": '\U000000AF', - "micro": '\U000000B5', - "middot": '\U000000B7', - "nbsp": '\U000000A0', - "not": '\U000000AC', - "ntilde": '\U000000F1', - "oacute": '\U000000F3', - "ocirc": '\U000000F4', - "ograve": '\U000000F2', - "ordf": '\U000000AA', - "ordm": '\U000000BA', - "oslash": '\U000000F8', - "otilde": '\U000000F5', - "ouml": '\U000000F6', - "para": '\U000000B6', - "plusmn": '\U000000B1', - "pound": '\U000000A3', - "quot": '\U00000022', - "raquo": '\U000000BB', - "reg": '\U000000AE', - "sect": '\U000000A7', - "shy": '\U000000AD', - "sup1": '\U000000B9', - "sup2": '\U000000B2', - "sup3": '\U000000B3', - "szlig": '\U000000DF', - "thorn": '\U000000FE', - "times": '\U000000D7', - "uacute": '\U000000FA', - "ucirc": '\U000000FB', - "ugrave": '\U000000F9', - "uml": '\U000000A8', - "uuml": '\U000000FC', - "yacute": '\U000000FD', - "yen": '\U000000A5', - "yuml": '\U000000FF', -} - -// HTML entities that are two unicode codepoints. -var entity2 = map[string][2]rune{ - // TODO(nigeltao): Handle replacements that are wider than their names. - // "nLt;": {'\u226A', '\u20D2'}, - // "nGt;": {'\u226B', '\u20D2'}, - "NotEqualTilde;": {'\u2242', '\u0338'}, - "NotGreaterFullEqual;": {'\u2267', '\u0338'}, - "NotGreaterGreater;": {'\u226B', '\u0338'}, - "NotGreaterSlantEqual;": {'\u2A7E', '\u0338'}, - "NotHumpDownHump;": {'\u224E', '\u0338'}, - "NotHumpEqual;": {'\u224F', '\u0338'}, - "NotLeftTriangleBar;": {'\u29CF', '\u0338'}, - "NotLessLess;": {'\u226A', '\u0338'}, - "NotLessSlantEqual;": {'\u2A7D', '\u0338'}, - "NotNestedGreaterGreater;": {'\u2AA2', '\u0338'}, - "NotNestedLessLess;": {'\u2AA1', '\u0338'}, - "NotPrecedesEqual;": {'\u2AAF', '\u0338'}, - "NotRightTriangleBar;": {'\u29D0', '\u0338'}, - "NotSquareSubset;": {'\u228F', '\u0338'}, - "NotSquareSuperset;": {'\u2290', '\u0338'}, - "NotSubset;": {'\u2282', '\u20D2'}, - "NotSucceedsEqual;": {'\u2AB0', '\u0338'}, - "NotSucceedsTilde;": {'\u227F', '\u0338'}, - "NotSuperset;": {'\u2283', '\u20D2'}, - "ThickSpace;": {'\u205F', '\u200A'}, - "acE;": {'\u223E', '\u0333'}, - "bne;": {'\u003D', '\u20E5'}, - "bnequiv;": {'\u2261', '\u20E5'}, - "caps;": {'\u2229', '\uFE00'}, - "cups;": {'\u222A', '\uFE00'}, - "fjlig;": {'\u0066', '\u006A'}, - "gesl;": {'\u22DB', '\uFE00'}, - "gvertneqq;": {'\u2269', '\uFE00'}, - "gvnE;": {'\u2269', '\uFE00'}, - "lates;": {'\u2AAD', '\uFE00'}, - "lesg;": {'\u22DA', '\uFE00'}, - "lvertneqq;": {'\u2268', '\uFE00'}, - "lvnE;": {'\u2268', '\uFE00'}, - "nGg;": {'\u22D9', '\u0338'}, - "nGtv;": {'\u226B', '\u0338'}, - "nLl;": {'\u22D8', '\u0338'}, - "nLtv;": {'\u226A', '\u0338'}, - "nang;": {'\u2220', '\u20D2'}, - "napE;": {'\u2A70', '\u0338'}, - "napid;": {'\u224B', '\u0338'}, - "nbump;": {'\u224E', '\u0338'}, - "nbumpe;": {'\u224F', '\u0338'}, - "ncongdot;": {'\u2A6D', '\u0338'}, - "nedot;": {'\u2250', '\u0338'}, - "nesim;": {'\u2242', '\u0338'}, - "ngE;": {'\u2267', '\u0338'}, - "ngeqq;": {'\u2267', '\u0338'}, - "ngeqslant;": {'\u2A7E', '\u0338'}, - "nges;": {'\u2A7E', '\u0338'}, - "nlE;": {'\u2266', '\u0338'}, - "nleqq;": {'\u2266', '\u0338'}, - "nleqslant;": {'\u2A7D', '\u0338'}, - "nles;": {'\u2A7D', '\u0338'}, - "notinE;": {'\u22F9', '\u0338'}, - "notindot;": {'\u22F5', '\u0338'}, - "nparsl;": {'\u2AFD', '\u20E5'}, - "npart;": {'\u2202', '\u0338'}, - "npre;": {'\u2AAF', '\u0338'}, - "npreceq;": {'\u2AAF', '\u0338'}, - "nrarrc;": {'\u2933', '\u0338'}, - "nrarrw;": {'\u219D', '\u0338'}, - "nsce;": {'\u2AB0', '\u0338'}, - "nsubE;": {'\u2AC5', '\u0338'}, - "nsubset;": {'\u2282', '\u20D2'}, - "nsubseteqq;": {'\u2AC5', '\u0338'}, - "nsucceq;": {'\u2AB0', '\u0338'}, - "nsupE;": {'\u2AC6', '\u0338'}, - "nsupset;": {'\u2283', '\u20D2'}, - "nsupseteqq;": {'\u2AC6', '\u0338'}, - "nvap;": {'\u224D', '\u20D2'}, - "nvge;": {'\u2265', '\u20D2'}, - "nvgt;": {'\u003E', '\u20D2'}, - "nvle;": {'\u2264', '\u20D2'}, - "nvlt;": {'\u003C', '\u20D2'}, - "nvltrie;": {'\u22B4', '\u20D2'}, - "nvrtrie;": {'\u22B5', '\u20D2'}, - "nvsim;": {'\u223C', '\u20D2'}, - "race;": {'\u223D', '\u0331'}, - "smtes;": {'\u2AAC', '\uFE00'}, - "sqcaps;": {'\u2293', '\uFE00'}, - "sqcups;": {'\u2294', '\uFE00'}, - "varsubsetneq;": {'\u228A', '\uFE00'}, - "varsubsetneqq;": {'\u2ACB', '\uFE00'}, - "varsupsetneq;": {'\u228B', '\uFE00'}, - "varsupsetneqq;": {'\u2ACC', '\uFE00'}, - "vnsub;": {'\u2282', '\u20D2'}, - "vnsup;": {'\u2283', '\u20D2'}, - "vsubnE;": {'\u2ACB', '\uFE00'}, - "vsubne;": {'\u228A', '\uFE00'}, - "vsupnE;": {'\u2ACC', '\uFE00'}, - "vsupne;": {'\u228B', '\uFE00'}, -} diff --git a/vendor/golang.org/x/net/html/escape.go b/vendor/golang.org/x/net/html/escape.go deleted file mode 100644 index 04c6bec..0000000 --- a/vendor/golang.org/x/net/html/escape.go +++ /dev/null @@ -1,339 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "strings" - "unicode/utf8" -) - -// These replacements permit compatibility with old numeric entities that -// assumed Windows-1252 encoding. -// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference -var replacementTable = [...]rune{ - '\u20AC', // First entry is what 0x80 should be replaced with. - '\u0081', - '\u201A', - '\u0192', - '\u201E', - '\u2026', - '\u2020', - '\u2021', - '\u02C6', - '\u2030', - '\u0160', - '\u2039', - '\u0152', - '\u008D', - '\u017D', - '\u008F', - '\u0090', - '\u2018', - '\u2019', - '\u201C', - '\u201D', - '\u2022', - '\u2013', - '\u2014', - '\u02DC', - '\u2122', - '\u0161', - '\u203A', - '\u0153', - '\u009D', - '\u017E', - '\u0178', // Last entry is 0x9F. - // 0x00->'\uFFFD' is handled programmatically. - // 0x0D->'\u000D' is a no-op. -} - -// unescapeEntity reads an entity like "&lt;" from b[src:] and writes the -// corresponding "<" to b[dst:], returning the incremented dst and src cursors. -// Precondition: b[src] == '&' && dst <= src. -// attribute should be true if parsing an attribute value. -func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) { - // https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference - - // i starts at 1 because we already know that s[0] == '&'. - i, s := 1, b[src:] - - if len(s) <= 1 { - b[dst] = b[src] - return dst + 1, src + 1 - } - - if s[i] == '#' { - if len(s) <= 3 { // We need to have at least "&#.". - b[dst] = b[src] - return dst + 1, src + 1 - } - i++ - c := s[i] - hex := false - if c == 'x' || c == 'X' { - hex = true - i++ - } - - x := '\x00' - for i < len(s) { - c = s[i] - i++ - if hex { - if '0' <= c && c <= '9' { - x = 16*x + rune(c) - '0' - continue - } else if 'a' <= c && c <= 'f' { - x = 16*x + rune(c) - 'a' + 10 - continue - } else if 'A' <= c && c <= 'F' { - x = 16*x + rune(c) - 'A' + 10 - continue - } - } else if '0' <= c && c <= '9' { - x = 10*x + rune(c) - '0' - continue - } - if c != ';' { - i-- - } - break - } - - if i <= 3 { // No characters matched. - b[dst] = b[src] - return dst + 1, src + 1 - } - - if 0x80 <= x && x <= 0x9F { - // Replace characters from Windows-1252 with UTF-8 equivalents. - x = replacementTable[x-0x80] - } else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF { - // Replace invalid characters with the replacement character. - x = '\uFFFD' - } - - return dst + utf8.EncodeRune(b[dst:], x), src + i - } - - // Consume the maximum number of characters possible, with the - // consumed characters matching one of the named references. - - for i < len(s) { - c := s[i] - i++ - // Lower-cased characters are more common in entities, so we check for them first. - if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { - continue - } - if c != ';' { - i-- - } - break - } - - entityName := string(s[1:i]) - if entityName == "" { - // No-op. - } else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' { - // No-op. - } else if x := entity[entityName]; x != 0 { - return dst + utf8.EncodeRune(b[dst:], x), src + i - } else if x := entity2[entityName]; x[0] != 0 { - dst1 := dst + utf8.EncodeRune(b[dst:], x[0]) - return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i - } else if !attribute { - maxLen := len(entityName) - 1 - if maxLen > longestEntityWithoutSemicolon { - maxLen = longestEntityWithoutSemicolon - } - for j := maxLen; j > 1; j-- { - if x := entity[entityName[:j]]; x != 0 { - return dst + utf8.EncodeRune(b[dst:], x), src + j + 1 - } - } - } - - dst1, src1 = dst+i, src+i - copy(b[dst:dst1], b[src:src1]) - return dst1, src1 -} - -// unescape unescapes b's entities in-place, so that "a&lt;b" becomes "a<b". -// attribute should be true if parsing an attribute value. -func unescape(b []byte, attribute bool) []byte { - for i, c := range b { - if c == '&' { - dst, src := unescapeEntity(b, i, i, attribute) - for src < len(b) { - c := b[src] - if c == '&' { - dst, src = unescapeEntity(b, dst, src, attribute) - } else { - b[dst] = c - dst, src = dst+1, src+1 - } - } - return b[0:dst] - } - } - return b -} - -// lower lower-cases the A-Z bytes in b in-place, so that "aBc" becomes "abc". -func lower(b []byte) []byte { - for i, c := range b { - if 'A' <= c && c <= 'Z' { - b[i] = c + 'a' - 'A' - } - } - return b -} - -// escapeComment is like func escape but escapes its input bytes less often. -// Per https://github.com/golang/go/issues/58246 some HTML comments are (1) -// meaningful and (2) contain angle brackets that we'd like to avoid escaping -// unless we have to. -// -// "We have to" includes the '&' byte, since that introduces other escapes. -// -// It also includes those bytes (not including EOF) that would otherwise end -// the comment. Per the summary table at the bottom of comment_test.go, this is -// the '>' byte that, per above, we'd like to avoid escaping unless we have to. -// -// Studying the summary table (and T actions in its '>' column) closely, we -// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the -// start of the comment data. State 52 is after a '!'. The other three states -// are after a '-'. -// -// Our algorithm is thus to escape every '&' and to escape '>' if and only if: -// - The '>' is after a '!' or '-' (in the unescaped data) or -// - The '>' is at the start of the comment data (after the opening "<!--"). -func escapeComment(w writer, s string) error { - // When modifying this function, consider manually increasing the - // maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more. - // That increase should only be temporary, not committed, as it - // exponentially affects the test running time. - - if len(s) == 0 { - return nil - } - - // Loop: - // - Grow j such that s[i:j] does not need escaping. - // - If s[j] does need escaping, output s[i:j] and an escaped s[j], - // resetting i and j to point past that s[j] byte. - i := 0 - for j := 0; j < len(s); j++ { - escaped := "" - switch s[j] { - case '&': - escaped = "&amp;" - - case '>': - if j > 0 { - if prev := s[j-1]; (prev != '!') && (prev != '-') { - continue - } - } - escaped = "&gt;" - - default: - continue - } - - if i < j { - if _, err := w.WriteString(s[i:j]); err != nil { - return err - } - } - if _, err := w.WriteString(escaped); err != nil { - return err - } - i = j + 1 - } - - if i < len(s) { - if _, err := w.WriteString(s[i:]); err != nil { - return err - } - } - return nil -} - -// escapeCommentString is to EscapeString as escapeComment is to escape. -func escapeCommentString(s string) string { - if strings.IndexAny(s, "&>") == -1 { - return s - } - var buf bytes.Buffer - escapeComment(&buf, s) - return buf.String() -} - -const escapedChars = "&'<>\"\r" - -func escape(w writer, s string) error { - i := strings.IndexAny(s, escapedChars) - for i != -1 { - if _, err := w.WriteString(s[:i]); err != nil { - return err - } - var esc string - switch s[i] { - case '&': - esc = "&amp;" - case '\'': - // "&#39;" is shorter than "&apos;" and apos was not in HTML until HTML5. - esc = "&#39;" - case '<': - esc = "&lt;" - case '>': - esc = "&gt;" - case '"': - // "&#34;" is shorter than "&quot;". - esc = "&#34;" - case '\r': - esc = "&#13;" - default: - panic("unrecognized escape character") - } - s = s[i+1:] - if _, err := w.WriteString(esc); err != nil { - return err - } - i = strings.IndexAny(s, escapedChars) - } - _, err := w.WriteString(s) - return err -} - -// EscapeString escapes special characters like "<" to become "&lt;". It -// escapes only five such characters: <, >, &, ' and ". -// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't -// always true. -func EscapeString(s string) string { - if strings.IndexAny(s, escapedChars) == -1 { - return s - } - var buf bytes.Buffer - escape(&buf, s) - return buf.String() -} - -// UnescapeString unescapes entities like "&lt;" to become "<". It unescapes a -// larger range of entities than EscapeString escapes. For example, "&aacute;" -// unescapes to "á", as does "&#225;" and "&xE1;". -// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't -// always true. -func UnescapeString(s string) string { - for _, c := range s { - if c == '&' { - return string(unescape([]byte(s), false)) - } - } - return s -} diff --git a/vendor/golang.org/x/net/html/foreign.go b/vendor/golang.org/x/net/html/foreign.go deleted file mode 100644 index 9da9e9d..0000000 --- a/vendor/golang.org/x/net/html/foreign.go +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "strings" -) - -func adjustAttributeNames(aa []Attribute, nameMap map[string]string) { - for i := range aa { - if newName, ok := nameMap[aa[i].Key]; ok { - aa[i].Key = newName - } - } -} - -func adjustForeignAttributes(aa []Attribute) { - for i, a := range aa { - if a.Key == "" || a.Key[0] != 'x' { - continue - } - switch a.Key { - case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show", - "xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink": - j := strings.Index(a.Key, ":") - aa[i].Namespace = a.Key[:j] - aa[i].Key = a.Key[j+1:] - } - } -} - -func htmlIntegrationPoint(n *Node) bool { - if n.Type != ElementNode { - return false - } - switch n.Namespace { - case "math": - if n.Data == "annotation-xml" { - for _, a := range n.Attr { - if a.Key == "encoding" { - val := strings.ToLower(a.Val) - if val == "text/html" || val == "application/xhtml+xml" { - return true - } - } - } - } - case "svg": - switch n.Data { - case "desc", "foreignObject", "title": - return true - } - } - return false -} - -func mathMLTextIntegrationPoint(n *Node) bool { - if n.Namespace != "math" { - return false - } - switch n.Data { - case "mi", "mo", "mn", "ms", "mtext": - return true - } - return false -} - -// Section 12.2.6.5. -var breakout = map[string]bool{ - "b": true, - "big": true, - "blockquote": true, - "body": true, - "br": true, - "center": true, - "code": true, - "dd": true, - "div": true, - "dl": true, - "dt": true, - "em": true, - "embed": true, - "h1": true, - "h2": true, - "h3": true, - "h4": true, - "h5": true, - "h6": true, - "head": true, - "hr": true, - "i": true, - "img": true, - "li": true, - "listing": true, - "menu": true, - "meta": true, - "nobr": true, - "ol": true, - "p": true, - "pre": true, - "ruby": true, - "s": true, - "small": true, - "span": true, - "strong": true, - "strike": true, - "sub": true, - "sup": true, - "table": true, - "tt": true, - "u": true, - "ul": true, - "var": true, -} - -// Section 12.2.6.5. -var svgTagNameAdjustments = map[string]string{ - "altglyph": "altGlyph", - "altglyphdef": "altGlyphDef", - "altglyphitem": "altGlyphItem", - "animatecolor": "animateColor", - "animatemotion": "animateMotion", - "animatetransform": "animateTransform", - "clippath": "clipPath", - "feblend": "feBlend", - "fecolormatrix": "feColorMatrix", - "fecomponenttransfer": "feComponentTransfer", - "fecomposite": "feComposite", - "feconvolvematrix": "feConvolveMatrix", - "fediffuselighting": "feDiffuseLighting", - "fedisplacementmap": "feDisplacementMap", - "fedistantlight": "feDistantLight", - "feflood": "feFlood", - "fefunca": "feFuncA", - "fefuncb": "feFuncB", - "fefuncg": "feFuncG", - "fefuncr": "feFuncR", - "fegaussianblur": "feGaussianBlur", - "feimage": "feImage", - "femerge": "feMerge", - "femergenode": "feMergeNode", - "femorphology": "feMorphology", - "feoffset": "feOffset", - "fepointlight": "fePointLight", - "fespecularlighting": "feSpecularLighting", - "fespotlight": "feSpotLight", - "fetile": "feTile", - "feturbulence": "feTurbulence", - "foreignobject": "foreignObject", - "glyphref": "glyphRef", - "lineargradient": "linearGradient", - "radialgradient": "radialGradient", - "textpath": "textPath", -} - -// Section 12.2.6.1 -var mathMLAttributeAdjustments = map[string]string{ - "definitionurl": "definitionURL", -} - -var svgAttributeAdjustments = map[string]string{ - "attributename": "attributeName", - "attributetype": "attributeType", - "basefrequency": "baseFrequency", - "baseprofile": "baseProfile", - "calcmode": "calcMode", - "clippathunits": "clipPathUnits", - "diffuseconstant": "diffuseConstant", - "edgemode": "edgeMode", - "filterunits": "filterUnits", - "glyphref": "glyphRef", - "gradienttransform": "gradientTransform", - "gradientunits": "gradientUnits", - "kernelmatrix": "kernelMatrix", - "kernelunitlength": "kernelUnitLength", - "keypoints": "keyPoints", - "keysplines": "keySplines", - "keytimes": "keyTimes", - "lengthadjust": "lengthAdjust", - "limitingconeangle": "limitingConeAngle", - "markerheight": "markerHeight", - "markerunits": "markerUnits", - "markerwidth": "markerWidth", - "maskcontentunits": "maskContentUnits", - "maskunits": "maskUnits", - "numoctaves": "numOctaves", - "pathlength": "pathLength", - "patterncontentunits": "patternContentUnits", - "patterntransform": "patternTransform", - "patternunits": "patternUnits", - "pointsatx": "pointsAtX", - "pointsaty": "pointsAtY", - "pointsatz": "pointsAtZ", - "preservealpha": "preserveAlpha", - "preserveaspectratio": "preserveAspectRatio", - "primitiveunits": "primitiveUnits", - "refx": "refX", - "refy": "refY", - "repeatcount": "repeatCount", - "repeatdur": "repeatDur", - "requiredextensions": "requiredExtensions", - "requiredfeatures": "requiredFeatures", - "specularconstant": "specularConstant", - "specularexponent": "specularExponent", - "spreadmethod": "spreadMethod", - "startoffset": "startOffset", - "stddeviation": "stdDeviation", - "stitchtiles": "stitchTiles", - "surfacescale": "surfaceScale", - "systemlanguage": "systemLanguage", - "tablevalues": "tableValues", - "targetx": "targetX", - "targety": "targetY", - "textlength": "textLength", - "viewbox": "viewBox", - "viewtarget": "viewTarget", - "xchannelselector": "xChannelSelector", - "ychannelselector": "yChannelSelector", - "zoomandpan": "zoomAndPan", -} diff --git a/vendor/golang.org/x/net/html/node.go b/vendor/golang.org/x/net/html/node.go deleted file mode 100644 index 1350eef..0000000 --- a/vendor/golang.org/x/net/html/node.go +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "golang.org/x/net/html/atom" -) - -// A NodeType is the type of a Node. -type NodeType uint32 - -const ( - ErrorNode NodeType = iota - TextNode - DocumentNode - ElementNode - CommentNode - DoctypeNode - // RawNode nodes are not returned by the parser, but can be part of the - // Node tree passed to func Render to insert raw HTML (without escaping). - // If so, this package makes no guarantee that the rendered HTML is secure - // (from e.g. Cross Site Scripting attacks) or well-formed. - RawNode - scopeMarkerNode -) - -// Section 12.2.4.3 says "The markers are inserted when entering applet, -// object, marquee, template, td, th, and caption elements, and are used -// to prevent formatting from "leaking" into applet, object, marquee, -// template, td, th, and caption elements". -var scopeMarker = Node{Type: scopeMarkerNode} - -// A Node consists of a NodeType and some Data (tag name for element nodes, -// content for text) and are part of a tree of Nodes. Element nodes may also -// have a Namespace and contain a slice of Attributes. Data is unescaped, so -// that it looks like "a<b" rather than "a&lt;b". For element nodes, DataAtom -// is the atom for Data, or zero if Data is not a known tag name. -// -// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace. -// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and -// "svg" is short for "http://www.w3.org/2000/svg". -type Node struct { - Parent, FirstChild, LastChild, PrevSibling, NextSibling *Node - - Type NodeType - DataAtom atom.Atom - Data string - Namespace string - Attr []Attribute -} - -// InsertBefore inserts newChild as a child of n, immediately before oldChild -// in the sequence of n's children. oldChild may be nil, in which case newChild -// is appended to the end of n's children. -// -// It will panic if newChild already has a parent or siblings. -func (n *Node) InsertBefore(newChild, oldChild *Node) { - if newChild.Parent != nil || newChild.PrevSibling != nil || newChild.NextSibling != nil { - panic("html: InsertBefore called for an attached child Node") - } - var prev, next *Node - if oldChild != nil { - prev, next = oldChild.PrevSibling, oldChild - } else { - prev = n.LastChild - } - if prev != nil { - prev.NextSibling = newChild - } else { - n.FirstChild = newChild - } - if next != nil { - next.PrevSibling = newChild - } else { - n.LastChild = newChild - } - newChild.Parent = n - newChild.PrevSibling = prev - newChild.NextSibling = next -} - -// AppendChild adds a node c as a child of n. -// -// It will panic if c already has a parent or siblings. -func (n *Node) AppendChild(c *Node) { - if c.Parent != nil || c.PrevSibling != nil || c.NextSibling != nil { - panic("html: AppendChild called for an attached child Node") - } - last := n.LastChild - if last != nil { - last.NextSibling = c - } else { - n.FirstChild = c - } - n.LastChild = c - c.Parent = n - c.PrevSibling = last -} - -// RemoveChild removes a node c that is a child of n. Afterwards, c will have -// no parent and no siblings. -// -// It will panic if c's parent is not n. -func (n *Node) RemoveChild(c *Node) { - if c.Parent != n { - panic("html: RemoveChild called for a non-child Node") - } - if n.FirstChild == c { - n.FirstChild = c.NextSibling - } - if c.NextSibling != nil { - c.NextSibling.PrevSibling = c.PrevSibling - } - if n.LastChild == c { - n.LastChild = c.PrevSibling - } - if c.PrevSibling != nil { - c.PrevSibling.NextSibling = c.NextSibling - } - c.Parent = nil - c.PrevSibling = nil - c.NextSibling = nil -} - -// reparentChildren reparents all of src's child nodes to dst. -func reparentChildren(dst, src *Node) { - for { - child := src.FirstChild - if child == nil { - break - } - src.RemoveChild(child) - dst.AppendChild(child) - } -} - -// clone returns a new node with the same type, data and attributes. -// The clone has no parent, no siblings and no children. -func (n *Node) clone() *Node { - m := &Node{ - Type: n.Type, - DataAtom: n.DataAtom, - Data: n.Data, - Attr: make([]Attribute, len(n.Attr)), - } - copy(m.Attr, n.Attr) - return m -} - -// nodeStack is a stack of nodes. -type nodeStack []*Node - -// pop pops the stack. It will panic if s is empty. -func (s *nodeStack) pop() *Node { - i := len(*s) - n := (*s)[i-1] - *s = (*s)[:i-1] - return n -} - -// top returns the most recently pushed node, or nil if s is empty. -func (s *nodeStack) top() *Node { - if i := len(*s); i > 0 { - return (*s)[i-1] - } - return nil -} - -// index returns the index of the top-most occurrence of n in the stack, or -1 -// if n is not present. -func (s *nodeStack) index(n *Node) int { - for i := len(*s) - 1; i >= 0; i-- { - if (*s)[i] == n { - return i - } - } - return -1 -} - -// contains returns whether a is within s. -func (s *nodeStack) contains(a atom.Atom) bool { - for _, n := range *s { - if n.DataAtom == a && n.Namespace == "" { - return true - } - } - return false -} - -// insert inserts a node at the given index. -func (s *nodeStack) insert(i int, n *Node) { - (*s) = append(*s, nil) - copy((*s)[i+1:], (*s)[i:]) - (*s)[i] = n -} - -// remove removes a node from the stack. It is a no-op if n is not present. -func (s *nodeStack) remove(n *Node) { - i := s.index(n) - if i == -1 { - return - } - copy((*s)[i:], (*s)[i+1:]) - j := len(*s) - 1 - (*s)[j] = nil - *s = (*s)[:j] -} - -type insertionModeStack []insertionMode - -func (s *insertionModeStack) pop() (im insertionMode) { - i := len(*s) - im = (*s)[i-1] - *s = (*s)[:i-1] - return im -} - -func (s *insertionModeStack) top() insertionMode { - if i := len(*s); i > 0 { - return (*s)[i-1] - } - return nil -} diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go deleted file mode 100644 index 46a89ed..0000000 --- a/vendor/golang.org/x/net/html/parse.go +++ /dev/null @@ -1,2460 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "errors" - "fmt" - "io" - "strings" - - a "golang.org/x/net/html/atom" -) - -// A parser implements the HTML5 parsing algorithm: -// https://html.spec.whatwg.org/multipage/syntax.html#tree-construction -type parser struct { - // tokenizer provides the tokens for the parser. - tokenizer *Tokenizer - // tok is the most recently read token. - tok Token - // Self-closing tags like <hr/> are treated as start tags, except that - // hasSelfClosingToken is set while they are being processed. - hasSelfClosingToken bool - // doc is the document root element. - doc *Node - // The stack of open elements (section 12.2.4.2) and active formatting - // elements (section 12.2.4.3). - oe, afe nodeStack - // Element pointers (section 12.2.4.4). - head, form *Node - // Other parsing state flags (section 12.2.4.5). - scripting, framesetOK bool - // The stack of template insertion modes - templateStack insertionModeStack - // im is the current insertion mode. - im insertionMode - // originalIM is the insertion mode to go back to after completing a text - // or inTableText insertion mode. - originalIM insertionMode - // fosterParenting is whether new elements should be inserted according to - // the foster parenting rules (section 12.2.6.1). - fosterParenting bool - // quirks is whether the parser is operating in "quirks mode." - quirks bool - // fragment is whether the parser is parsing an HTML fragment. - fragment bool - // context is the context element when parsing an HTML fragment - // (section 12.4). - context *Node -} - -func (p *parser) top() *Node { - if n := p.oe.top(); n != nil { - return n - } - return p.doc -} - -// Stop tags for use in popUntil. These come from section 12.2.4.2. -var ( - defaultScopeStopTags = map[string][]a.Atom{ - "": {a.Applet, a.Caption, a.Html, a.Table, a.Td, a.Th, a.Marquee, a.Object, a.Template}, - "math": {a.AnnotationXml, a.Mi, a.Mn, a.Mo, a.Ms, a.Mtext}, - "svg": {a.Desc, a.ForeignObject, a.Title}, - } -) - -type scope int - -const ( - defaultScope scope = iota - listItemScope - buttonScope - tableScope - tableRowScope - tableBodyScope - selectScope -) - -// popUntil pops the stack of open elements at the highest element whose tag -// is in matchTags, provided there is no higher element in the scope's stop -// tags (as defined in section 12.2.4.2). It returns whether or not there was -// such an element. If there was not, popUntil leaves the stack unchanged. -// -// For example, the set of stop tags for table scope is: "html", "table". If -// the stack was: -// ["html", "body", "font", "table", "b", "i", "u"] -// then popUntil(tableScope, "font") would return false, but -// popUntil(tableScope, "i") would return true and the stack would become: -// ["html", "body", "font", "table", "b"] -// -// If an element's tag is in both the stop tags and matchTags, then the stack -// will be popped and the function returns true (provided, of course, there was -// no higher element in the stack that was also in the stop tags). For example, -// popUntil(tableScope, "table") returns true and leaves: -// ["html", "body", "font"] -func (p *parser) popUntil(s scope, matchTags ...a.Atom) bool { - if i := p.indexOfElementInScope(s, matchTags...); i != -1 { - p.oe = p.oe[:i] - return true - } - return false -} - -// indexOfElementInScope returns the index in p.oe of the highest element whose -// tag is in matchTags that is in scope. If no matching element is in scope, it -// returns -1. -func (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) int { - for i := len(p.oe) - 1; i >= 0; i-- { - tagAtom := p.oe[i].DataAtom - if p.oe[i].Namespace == "" { - for _, t := range matchTags { - if t == tagAtom { - return i - } - } - switch s { - case defaultScope: - // No-op. - case listItemScope: - if tagAtom == a.Ol || tagAtom == a.Ul { - return -1 - } - case buttonScope: - if tagAtom == a.Button { - return -1 - } - case tableScope: - if tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template { - return -1 - } - case selectScope: - if tagAtom != a.Optgroup && tagAtom != a.Option { - return -1 - } - default: - panic("unreachable") - } - } - switch s { - case defaultScope, listItemScope, buttonScope: - for _, t := range defaultScopeStopTags[p.oe[i].Namespace] { - if t == tagAtom { - return -1 - } - } - } - } - return -1 -} - -// elementInScope is like popUntil, except that it doesn't modify the stack of -// open elements. -func (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool { - return p.indexOfElementInScope(s, matchTags...) != -1 -} - -// clearStackToContext pops elements off the stack of open elements until a -// scope-defined element is found. -func (p *parser) clearStackToContext(s scope) { - for i := len(p.oe) - 1; i >= 0; i-- { - tagAtom := p.oe[i].DataAtom - switch s { - case tableScope: - if tagAtom == a.Html || tagAtom == a.Table || tagAtom == a.Template { - p.oe = p.oe[:i+1] - return - } - case tableRowScope: - if tagAtom == a.Html || tagAtom == a.Tr || tagAtom == a.Template { - p.oe = p.oe[:i+1] - return - } - case tableBodyScope: - if tagAtom == a.Html || tagAtom == a.Tbody || tagAtom == a.Tfoot || tagAtom == a.Thead || tagAtom == a.Template { - p.oe = p.oe[:i+1] - return - } - default: - panic("unreachable") - } - } -} - -// parseGenericRawTextElement implements the generic raw text element parsing -// algorithm defined in 12.2.6.2. -// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text -// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part -// officially, need to make tokenizer consider both states. -func (p *parser) parseGenericRawTextElement() { - p.addElement() - p.originalIM = p.im - p.im = textIM -} - -// generateImpliedEndTags pops nodes off the stack of open elements as long as -// the top node has a tag name of dd, dt, li, optgroup, option, p, rb, rp, rt or rtc. -// If exceptions are specified, nodes with that name will not be popped off. -func (p *parser) generateImpliedEndTags(exceptions ...string) { - var i int -loop: - for i = len(p.oe) - 1; i >= 0; i-- { - n := p.oe[i] - if n.Type != ElementNode { - break - } - switch n.DataAtom { - case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc: - for _, except := range exceptions { - if n.Data == except { - break loop - } - } - continue - } - break - } - - p.oe = p.oe[:i+1] -} - -// addChild adds a child node n to the top element, and pushes n onto the stack -// of open elements if it is an element node. -func (p *parser) addChild(n *Node) { - if p.shouldFosterParent() { - p.fosterParent(n) - } else { - p.top().AppendChild(n) - } - - if n.Type == ElementNode { - p.oe = append(p.oe, n) - } -} - -// shouldFosterParent returns whether the next node to be added should be -// foster parented. -func (p *parser) shouldFosterParent() bool { - if p.fosterParenting { - switch p.top().DataAtom { - case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: - return true - } - } - return false -} - -// fosterParent adds a child node according to the foster parenting rules. -// Section 12.2.6.1, "foster parenting". -func (p *parser) fosterParent(n *Node) { - var table, parent, prev, template *Node - var i int - for i = len(p.oe) - 1; i >= 0; i-- { - if p.oe[i].DataAtom == a.Table { - table = p.oe[i] - break - } - } - - var j int - for j = len(p.oe) - 1; j >= 0; j-- { - if p.oe[j].DataAtom == a.Template { - template = p.oe[j] - break - } - } - - if template != nil && (table == nil || j > i) { - template.AppendChild(n) - return - } - - if table == nil { - // The foster parent is the html element. - parent = p.oe[0] - } else { - parent = table.Parent - } - if parent == nil { - parent = p.oe[i-1] - } - - if table != nil { - prev = table.PrevSibling - } else { - prev = parent.LastChild - } - if prev != nil && prev.Type == TextNode && n.Type == TextNode { - prev.Data += n.Data - return - } - - parent.InsertBefore(n, table) -} - -// addText adds text to the preceding node if it is a text node, or else it -// calls addChild with a new text node. -func (p *parser) addText(text string) { - if text == "" { - return - } - - if p.shouldFosterParent() { - p.fosterParent(&Node{ - Type: TextNode, - Data: text, - }) - return - } - - t := p.top() - if n := t.LastChild; n != nil && n.Type == TextNode { - n.Data += text - return - } - p.addChild(&Node{ - Type: TextNode, - Data: text, - }) -} - -// addElement adds a child element based on the current token. -func (p *parser) addElement() { - p.addChild(&Node{ - Type: ElementNode, - DataAtom: p.tok.DataAtom, - Data: p.tok.Data, - Attr: p.tok.Attr, - }) -} - -// Section 12.2.4.3. -func (p *parser) addFormattingElement() { - tagAtom, attr := p.tok.DataAtom, p.tok.Attr - p.addElement() - - // Implement the Noah's Ark clause, but with three per family instead of two. - identicalElements := 0 -findIdenticalElements: - for i := len(p.afe) - 1; i >= 0; i-- { - n := p.afe[i] - if n.Type == scopeMarkerNode { - break - } - if n.Type != ElementNode { - continue - } - if n.Namespace != "" { - continue - } - if n.DataAtom != tagAtom { - continue - } - if len(n.Attr) != len(attr) { - continue - } - compareAttributes: - for _, t0 := range n.Attr { - for _, t1 := range attr { - if t0.Key == t1.Key && t0.Namespace == t1.Namespace && t0.Val == t1.Val { - // Found a match for this attribute, continue with the next attribute. - continue compareAttributes - } - } - // If we get here, there is no attribute that matches a. - // Therefore the element is not identical to the new one. - continue findIdenticalElements - } - - identicalElements++ - if identicalElements >= 3 { - p.afe.remove(n) - } - } - - p.afe = append(p.afe, p.top()) -} - -// Section 12.2.4.3. -func (p *parser) clearActiveFormattingElements() { - for { - if n := p.afe.pop(); len(p.afe) == 0 || n.Type == scopeMarkerNode { - return - } - } -} - -// Section 12.2.4.3. -func (p *parser) reconstructActiveFormattingElements() { - n := p.afe.top() - if n == nil { - return - } - if n.Type == scopeMarkerNode || p.oe.index(n) != -1 { - return - } - i := len(p.afe) - 1 - for n.Type != scopeMarkerNode && p.oe.index(n) == -1 { - if i == 0 { - i = -1 - break - } - i-- - n = p.afe[i] - } - for { - i++ - clone := p.afe[i].clone() - p.addChild(clone) - p.afe[i] = clone - if i == len(p.afe)-1 { - break - } - } -} - -// Section 12.2.5. -func (p *parser) acknowledgeSelfClosingTag() { - p.hasSelfClosingToken = false -} - -// An insertion mode (section 12.2.4.1) is the state transition function from -// a particular state in the HTML5 parser's state machine. It updates the -// parser's fields depending on parser.tok (where ErrorToken means EOF). -// It returns whether the token was consumed. -type insertionMode func(*parser) bool - -// setOriginalIM sets the insertion mode to return to after completing a text or -// inTableText insertion mode. -// Section 12.2.4.1, "using the rules for". -func (p *parser) setOriginalIM() { - if p.originalIM != nil { - panic("html: bad parser state: originalIM was set twice") - } - p.originalIM = p.im -} - -// Section 12.2.4.1, "reset the insertion mode". -func (p *parser) resetInsertionMode() { - for i := len(p.oe) - 1; i >= 0; i-- { - n := p.oe[i] - last := i == 0 - if last && p.context != nil { - n = p.context - } - - switch n.DataAtom { - case a.Select: - if !last { - for ancestor, first := n, p.oe[0]; ancestor != first; { - ancestor = p.oe[p.oe.index(ancestor)-1] - switch ancestor.DataAtom { - case a.Template: - p.im = inSelectIM - return - case a.Table: - p.im = inSelectInTableIM - return - } - } - } - p.im = inSelectIM - case a.Td, a.Th: - // TODO: remove this divergence from the HTML5 spec. - // - // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 - p.im = inCellIM - case a.Tr: - p.im = inRowIM - case a.Tbody, a.Thead, a.Tfoot: - p.im = inTableBodyIM - case a.Caption: - p.im = inCaptionIM - case a.Colgroup: - p.im = inColumnGroupIM - case a.Table: - p.im = inTableIM - case a.Template: - // TODO: remove this divergence from the HTML5 spec. - if n.Namespace != "" { - continue - } - p.im = p.templateStack.top() - case a.Head: - // TODO: remove this divergence from the HTML5 spec. - // - // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 - p.im = inHeadIM - case a.Body: - p.im = inBodyIM - case a.Frameset: - p.im = inFramesetIM - case a.Html: - if p.head == nil { - p.im = beforeHeadIM - } else { - p.im = afterHeadIM - } - default: - if last { - p.im = inBodyIM - return - } - continue - } - return - } -} - -const whitespace = " \t\r\n\f" - -// Section 12.2.6.4.1. -func initialIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - case CommentToken: - p.doc.AppendChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - n, quirks := parseDoctype(p.tok.Data) - p.doc.AppendChild(n) - p.quirks = quirks - p.im = beforeHTMLIM - return true - } - p.quirks = true - p.im = beforeHTMLIM - return false -} - -// Section 12.2.6.4.2. -func beforeHTMLIM(p *parser) bool { - switch p.tok.Type { - case DoctypeToken: - // Ignore the token. - return true - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - case StartTagToken: - if p.tok.DataAtom == a.Html { - p.addElement() - p.im = beforeHeadIM - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Head, a.Body, a.Html, a.Br: - p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) - return false - default: - // Ignore the token. - return true - } - case CommentToken: - p.doc.AppendChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - p.parseImpliedToken(StartTagToken, a.Html, a.Html.String()) - return false -} - -// Section 12.2.6.4.3. -func beforeHeadIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace) - if len(p.tok.Data) == 0 { - // It was all whitespace, so ignore it. - return true - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Head: - p.addElement() - p.head = p.top() - p.im = inHeadIM - return true - case a.Html: - return inBodyIM(p) - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Head, a.Body, a.Html, a.Br: - p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) - return false - default: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - // Ignore the token. - return true - } - - p.parseImpliedToken(StartTagToken, a.Head, a.Head.String()) - return false -} - -// Section 12.2.6.4.4. -func inHeadIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) < len(p.tok.Data) { - // Add the initial whitespace to the current node. - p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) - if s == "" { - return true - } - p.tok.Data = s - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta: - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - return true - case a.Noscript: - if p.scripting { - p.parseGenericRawTextElement() - return true - } - p.addElement() - p.im = inHeadNoscriptIM - // Don't let the tokenizer go into raw text mode when scripting is disabled. - p.tokenizer.NextIsNotRawText() - return true - case a.Script, a.Title: - p.addElement() - p.setOriginalIM() - p.im = textIM - return true - case a.Noframes, a.Style: - p.parseGenericRawTextElement() - return true - case a.Head: - // Ignore the token. - return true - case a.Template: - // TODO: remove this divergence from the HTML5 spec. - // - // We don't handle all of the corner cases when mixing foreign - // content (i.e. <math> or <svg>) with <template>. Without this - // early return, we can get into an infinite loop, possibly because - // of the "TODO... further divergence" a little below. - // - // As a workaround, if we are mixing foreign content and templates, - // just ignore the rest of the HTML. Foreign content is rare and a - // relatively old HTML feature. Templates are also rare and a - // relatively new HTML feature. Their combination is very rare. - for _, e := range p.oe { - if e.Namespace != "" { - p.im = ignoreTheRemainingTokens - return true - } - } - - p.addElement() - p.afe = append(p.afe, &scopeMarker) - p.framesetOK = false - p.im = inTemplateIM - p.templateStack = append(p.templateStack, inTemplateIM) - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Head: - p.oe.pop() - p.im = afterHeadIM - return true - case a.Body, a.Html, a.Br: - p.parseImpliedToken(EndTagToken, a.Head, a.Head.String()) - return false - case a.Template: - if !p.oe.contains(a.Template) { - return true - } - // TODO: remove this further divergence from the HTML5 spec. - // - // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 - p.generateImpliedEndTags() - for i := len(p.oe) - 1; i >= 0; i-- { - if n := p.oe[i]; n.Namespace == "" && n.DataAtom == a.Template { - p.oe = p.oe[:i] - break - } - } - p.clearActiveFormattingElements() - p.templateStack.pop() - p.resetInsertionMode() - return true - default: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - // Ignore the token. - return true - } - - p.parseImpliedToken(EndTagToken, a.Head, a.Head.String()) - return false -} - -// Section 12.2.6.4.5. -func inHeadNoscriptIM(p *parser) bool { - switch p.tok.Type { - case DoctypeToken: - // Ignore the token. - return true - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Style: - return inHeadIM(p) - case a.Head: - // Ignore the token. - return true - case a.Noscript: - // Don't let the tokenizer go into raw text mode even when a <noscript> - // tag is in "in head noscript" insertion mode. - p.tokenizer.NextIsNotRawText() - // Ignore the token. - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Noscript, a.Br: - default: - // Ignore the token. - return true - } - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) == 0 { - // It was all whitespace. - return inHeadIM(p) - } - case CommentToken: - return inHeadIM(p) - } - p.oe.pop() - if p.top().DataAtom != a.Head { - panic("html: the new current node will be a head element.") - } - p.im = inHeadIM - if p.tok.DataAtom == a.Noscript { - return true - } - return false -} - -// Section 12.2.6.4.6. -func afterHeadIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) < len(p.tok.Data) { - // Add the initial whitespace to the current node. - p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) - if s == "" { - return true - } - p.tok.Data = s - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Body: - p.addElement() - p.framesetOK = false - p.im = inBodyIM - return true - case a.Frameset: - p.addElement() - p.im = inFramesetIM - return true - case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title: - p.oe = append(p.oe, p.head) - defer p.oe.remove(p.head) - return inHeadIM(p) - case a.Head: - // Ignore the token. - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Body, a.Html, a.Br: - // Drop down to creating an implied <body> tag. - case a.Template: - return inHeadIM(p) - default: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - // Ignore the token. - return true - } - - p.parseImpliedToken(StartTagToken, a.Body, a.Body.String()) - p.framesetOK = true - return false -} - -// copyAttributes copies attributes of src not found on dst to dst. -func copyAttributes(dst *Node, src Token) { - if len(src.Attr) == 0 { - return - } - attr := map[string]string{} - for _, t := range dst.Attr { - attr[t.Key] = t.Val - } - for _, t := range src.Attr { - if _, ok := attr[t.Key]; !ok { - dst.Attr = append(dst.Attr, t) - attr[t.Key] = t.Val - } - } -} - -// Section 12.2.6.4.7. -func inBodyIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - d := p.tok.Data - switch n := p.oe.top(); n.DataAtom { - case a.Pre, a.Listing: - if n.FirstChild == nil { - // Ignore a newline at the start of a <pre> block. - if d != "" && d[0] == '\r' { - d = d[1:] - } - if d != "" && d[0] == '\n' { - d = d[1:] - } - } - } - d = strings.Replace(d, "\x00", "", -1) - if d == "" { - return true - } - p.reconstructActiveFormattingElements() - p.addText(d) - if p.framesetOK && strings.TrimLeft(d, whitespace) != "" { - // There were non-whitespace characters inserted. - p.framesetOK = false - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - if p.oe.contains(a.Template) { - return true - } - copyAttributes(p.oe[0], p.tok) - case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title: - return inHeadIM(p) - case a.Body: - if p.oe.contains(a.Template) { - return true - } - if len(p.oe) >= 2 { - body := p.oe[1] - if body.Type == ElementNode && body.DataAtom == a.Body { - p.framesetOK = false - copyAttributes(body, p.tok) - } - } - case a.Frameset: - if !p.framesetOK || len(p.oe) < 2 || p.oe[1].DataAtom != a.Body { - // Ignore the token. - return true - } - body := p.oe[1] - if body.Parent != nil { - body.Parent.RemoveChild(body) - } - p.oe = p.oe[:1] - p.addElement() - p.im = inFramesetIM - return true - case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul: - p.popUntil(buttonScope, a.P) - p.addElement() - case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6: - p.popUntil(buttonScope, a.P) - switch n := p.top(); n.DataAtom { - case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6: - p.oe.pop() - } - p.addElement() - case a.Pre, a.Listing: - p.popUntil(buttonScope, a.P) - p.addElement() - // The newline, if any, will be dealt with by the TextToken case. - p.framesetOK = false - case a.Form: - if p.form != nil && !p.oe.contains(a.Template) { - // Ignore the token - return true - } - p.popUntil(buttonScope, a.P) - p.addElement() - if !p.oe.contains(a.Template) { - p.form = p.top() - } - case a.Li: - p.framesetOK = false - for i := len(p.oe) - 1; i >= 0; i-- { - node := p.oe[i] - switch node.DataAtom { - case a.Li: - p.oe = p.oe[:i] - case a.Address, a.Div, a.P: - continue - default: - if !isSpecialElement(node) { - continue - } - } - break - } - p.popUntil(buttonScope, a.P) - p.addElement() - case a.Dd, a.Dt: - p.framesetOK = false - for i := len(p.oe) - 1; i >= 0; i-- { - node := p.oe[i] - switch node.DataAtom { - case a.Dd, a.Dt: - p.oe = p.oe[:i] - case a.Address, a.Div, a.P: - continue - default: - if !isSpecialElement(node) { - continue - } - } - break - } - p.popUntil(buttonScope, a.P) - p.addElement() - case a.Plaintext: - p.popUntil(buttonScope, a.P) - p.addElement() - case a.Button: - p.popUntil(defaultScope, a.Button) - p.reconstructActiveFormattingElements() - p.addElement() - p.framesetOK = false - case a.A: - for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- { - if n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A { - p.inBodyEndTagFormatting(a.A, "a") - p.oe.remove(n) - p.afe.remove(n) - break - } - } - p.reconstructActiveFormattingElements() - p.addFormattingElement() - case a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U: - p.reconstructActiveFormattingElements() - p.addFormattingElement() - case a.Nobr: - p.reconstructActiveFormattingElements() - if p.elementInScope(defaultScope, a.Nobr) { - p.inBodyEndTagFormatting(a.Nobr, "nobr") - p.reconstructActiveFormattingElements() - } - p.addFormattingElement() - case a.Applet, a.Marquee, a.Object: - p.reconstructActiveFormattingElements() - p.addElement() - p.afe = append(p.afe, &scopeMarker) - p.framesetOK = false - case a.Table: - if !p.quirks { - p.popUntil(buttonScope, a.P) - } - p.addElement() - p.framesetOK = false - p.im = inTableIM - return true - case a.Area, a.Br, a.Embed, a.Img, a.Input, a.Keygen, a.Wbr: - p.reconstructActiveFormattingElements() - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - if p.tok.DataAtom == a.Input { - for _, t := range p.tok.Attr { - if t.Key == "type" { - if strings.ToLower(t.Val) == "hidden" { - // Skip setting framesetOK = false - return true - } - } - } - } - p.framesetOK = false - case a.Param, a.Source, a.Track: - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - case a.Hr: - p.popUntil(buttonScope, a.P) - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - p.framesetOK = false - case a.Image: - p.tok.DataAtom = a.Img - p.tok.Data = a.Img.String() - return false - case a.Textarea: - p.addElement() - p.setOriginalIM() - p.framesetOK = false - p.im = textIM - case a.Xmp: - p.popUntil(buttonScope, a.P) - p.reconstructActiveFormattingElements() - p.framesetOK = false - p.parseGenericRawTextElement() - case a.Iframe: - p.framesetOK = false - p.parseGenericRawTextElement() - case a.Noembed: - p.parseGenericRawTextElement() - case a.Noscript: - if p.scripting { - p.parseGenericRawTextElement() - return true - } - p.reconstructActiveFormattingElements() - p.addElement() - // Don't let the tokenizer go into raw text mode when scripting is disabled. - p.tokenizer.NextIsNotRawText() - case a.Select: - p.reconstructActiveFormattingElements() - p.addElement() - p.framesetOK = false - p.im = inSelectIM - return true - case a.Optgroup, a.Option: - if p.top().DataAtom == a.Option { - p.oe.pop() - } - p.reconstructActiveFormattingElements() - p.addElement() - case a.Rb, a.Rtc: - if p.elementInScope(defaultScope, a.Ruby) { - p.generateImpliedEndTags() - } - p.addElement() - case a.Rp, a.Rt: - if p.elementInScope(defaultScope, a.Ruby) { - p.generateImpliedEndTags("rtc") - } - p.addElement() - case a.Math, a.Svg: - p.reconstructActiveFormattingElements() - if p.tok.DataAtom == a.Math { - adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments) - } else { - adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments) - } - adjustForeignAttributes(p.tok.Attr) - p.addElement() - p.top().Namespace = p.tok.Data - if p.hasSelfClosingToken { - p.oe.pop() - p.acknowledgeSelfClosingTag() - } - return true - case a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: - // Ignore the token. - default: - p.reconstructActiveFormattingElements() - p.addElement() - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Body: - if p.elementInScope(defaultScope, a.Body) { - p.im = afterBodyIM - } - case a.Html: - if p.elementInScope(defaultScope, a.Body) { - p.parseImpliedToken(EndTagToken, a.Body, a.Body.String()) - return false - } - return true - case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul: - p.popUntil(defaultScope, p.tok.DataAtom) - case a.Form: - if p.oe.contains(a.Template) { - i := p.indexOfElementInScope(defaultScope, a.Form) - if i == -1 { - // Ignore the token. - return true - } - p.generateImpliedEndTags() - if p.oe[i].DataAtom != a.Form { - // Ignore the token. - return true - } - p.popUntil(defaultScope, a.Form) - } else { - node := p.form - p.form = nil - i := p.indexOfElementInScope(defaultScope, a.Form) - if node == nil || i == -1 || p.oe[i] != node { - // Ignore the token. - return true - } - p.generateImpliedEndTags() - p.oe.remove(node) - } - case a.P: - if !p.elementInScope(buttonScope, a.P) { - p.parseImpliedToken(StartTagToken, a.P, a.P.String()) - } - p.popUntil(buttonScope, a.P) - case a.Li: - p.popUntil(listItemScope, a.Li) - case a.Dd, a.Dt: - p.popUntil(defaultScope, p.tok.DataAtom) - case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6: - p.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6) - case a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U: - p.inBodyEndTagFormatting(p.tok.DataAtom, p.tok.Data) - case a.Applet, a.Marquee, a.Object: - if p.popUntil(defaultScope, p.tok.DataAtom) { - p.clearActiveFormattingElements() - } - case a.Br: - p.tok.Type = StartTagToken - return false - case a.Template: - return inHeadIM(p) - default: - p.inBodyEndTagOther(p.tok.DataAtom, p.tok.Data) - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case ErrorToken: - // TODO: remove this divergence from the HTML5 spec. - if len(p.templateStack) > 0 { - p.im = inTemplateIM - return false - } - for _, e := range p.oe { - switch e.DataAtom { - case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th, - a.Thead, a.Tr, a.Body, a.Html: - default: - return true - } - } - } - - return true -} - -func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { - // This is the "adoption agency" algorithm, described at - // https://html.spec.whatwg.org/multipage/syntax.html#adoptionAgency - - // TODO: this is a fairly literal line-by-line translation of that algorithm. - // Once the code successfully parses the comprehensive test suite, we should - // refactor this code to be more idiomatic. - - // Steps 1-2 - if current := p.oe.top(); current.Data == tagName && p.afe.index(current) == -1 { - p.oe.pop() - return - } - - // Steps 3-5. The outer loop. - for i := 0; i < 8; i++ { - // Step 6. Find the formatting element. - var formattingElement *Node - for j := len(p.afe) - 1; j >= 0; j-- { - if p.afe[j].Type == scopeMarkerNode { - break - } - if p.afe[j].DataAtom == tagAtom { - formattingElement = p.afe[j] - break - } - } - if formattingElement == nil { - p.inBodyEndTagOther(tagAtom, tagName) - return - } - - // Step 7. Ignore the tag if formatting element is not in the stack of open elements. - feIndex := p.oe.index(formattingElement) - if feIndex == -1 { - p.afe.remove(formattingElement) - return - } - // Step 8. Ignore the tag if formatting element is not in the scope. - if !p.elementInScope(defaultScope, tagAtom) { - // Ignore the tag. - return - } - - // Step 9. This step is omitted because it's just a parse error but no need to return. - - // Steps 10-11. Find the furthest block. - var furthestBlock *Node - for _, e := range p.oe[feIndex:] { - if isSpecialElement(e) { - furthestBlock = e - break - } - } - if furthestBlock == nil { - e := p.oe.pop() - for e != formattingElement { - e = p.oe.pop() - } - p.afe.remove(e) - return - } - - // Steps 12-13. Find the common ancestor and bookmark node. - commonAncestor := p.oe[feIndex-1] - bookmark := p.afe.index(formattingElement) - - // Step 14. The inner loop. Find the lastNode to reparent. - lastNode := furthestBlock - node := furthestBlock - x := p.oe.index(node) - // Step 14.1. - j := 0 - for { - // Step 14.2. - j++ - // Step. 14.3. - x-- - node = p.oe[x] - // Step 14.4. Go to the next step if node is formatting element. - if node == formattingElement { - break - } - // Step 14.5. Remove node from the list of active formatting elements if - // inner loop counter is greater than three and node is in the list of - // active formatting elements. - if ni := p.afe.index(node); j > 3 && ni > -1 { - p.afe.remove(node) - // If any element of the list of active formatting elements is removed, - // we need to take care whether bookmark should be decremented or not. - // This is because the value of bookmark may exceed the size of the - // list by removing elements from the list. - if ni <= bookmark { - bookmark-- - } - continue - } - // Step 14.6. Continue the next inner loop if node is not in the list of - // active formatting elements. - if p.afe.index(node) == -1 { - p.oe.remove(node) - continue - } - // Step 14.7. - clone := node.clone() - p.afe[p.afe.index(node)] = clone - p.oe[p.oe.index(node)] = clone - node = clone - // Step 14.8. - if lastNode == furthestBlock { - bookmark = p.afe.index(node) + 1 - } - // Step 14.9. - if lastNode.Parent != nil { - lastNode.Parent.RemoveChild(lastNode) - } - node.AppendChild(lastNode) - // Step 14.10. - lastNode = node - } - - // Step 15. Reparent lastNode to the common ancestor, - // or for misnested table nodes, to the foster parent. - if lastNode.Parent != nil { - lastNode.Parent.RemoveChild(lastNode) - } - switch commonAncestor.DataAtom { - case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: - p.fosterParent(lastNode) - default: - commonAncestor.AppendChild(lastNode) - } - - // Steps 16-18. Reparent nodes from the furthest block's children - // to a clone of the formatting element. - clone := formattingElement.clone() - reparentChildren(clone, furthestBlock) - furthestBlock.AppendChild(clone) - - // Step 19. Fix up the list of active formatting elements. - if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark { - // Move the bookmark with the rest of the list. - bookmark-- - } - p.afe.remove(formattingElement) - p.afe.insert(bookmark, clone) - - // Step 20. Fix up the stack of open elements. - p.oe.remove(formattingElement) - p.oe.insert(p.oe.index(furthestBlock)+1, clone) - } -} - -// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM. -// "Any other end tag" handling from 12.2.6.5 The rules for parsing tokens in foreign content -// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inforeign -func (p *parser) inBodyEndTagOther(tagAtom a.Atom, tagName string) { - for i := len(p.oe) - 1; i >= 0; i-- { - // Two element nodes have the same tag if they have the same Data (a - // string-typed field). As an optimization, for common HTML tags, each - // Data string is assigned a unique, non-zero DataAtom (a uint32-typed - // field), since integer comparison is faster than string comparison. - // Uncommon (custom) tags get a zero DataAtom. - // - // The if condition here is equivalent to (p.oe[i].Data == tagName). - if (p.oe[i].DataAtom == tagAtom) && - ((tagAtom != 0) || (p.oe[i].Data == tagName)) { - p.oe = p.oe[:i] - break - } - if isSpecialElement(p.oe[i]) { - break - } - } -} - -// Section 12.2.6.4.8. -func textIM(p *parser) bool { - switch p.tok.Type { - case ErrorToken: - p.oe.pop() - case TextToken: - d := p.tok.Data - if n := p.oe.top(); n.DataAtom == a.Textarea && n.FirstChild == nil { - // Ignore a newline at the start of a <textarea> block. - if d != "" && d[0] == '\r' { - d = d[1:] - } - if d != "" && d[0] == '\n' { - d = d[1:] - } - } - if d == "" { - return true - } - p.addText(d) - return true - case EndTagToken: - p.oe.pop() - } - p.im = p.originalIM - p.originalIM = nil - return p.tok.Type == EndTagToken -} - -// Section 12.2.6.4.9. -func inTableIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.tok.Data = strings.Replace(p.tok.Data, "\x00", "", -1) - switch p.oe.top().DataAtom { - case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: - if strings.Trim(p.tok.Data, whitespace) == "" { - p.addText(p.tok.Data) - return true - } - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Caption: - p.clearStackToContext(tableScope) - p.afe = append(p.afe, &scopeMarker) - p.addElement() - p.im = inCaptionIM - return true - case a.Colgroup: - p.clearStackToContext(tableScope) - p.addElement() - p.im = inColumnGroupIM - return true - case a.Col: - p.parseImpliedToken(StartTagToken, a.Colgroup, a.Colgroup.String()) - return false - case a.Tbody, a.Tfoot, a.Thead: - p.clearStackToContext(tableScope) - p.addElement() - p.im = inTableBodyIM - return true - case a.Td, a.Th, a.Tr: - p.parseImpliedToken(StartTagToken, a.Tbody, a.Tbody.String()) - return false - case a.Table: - if p.popUntil(tableScope, a.Table) { - p.resetInsertionMode() - return false - } - // Ignore the token. - return true - case a.Style, a.Script, a.Template: - return inHeadIM(p) - case a.Input: - for _, t := range p.tok.Attr { - if t.Key == "type" && strings.ToLower(t.Val) == "hidden" { - p.addElement() - p.oe.pop() - return true - } - } - // Otherwise drop down to the default action. - case a.Form: - if p.oe.contains(a.Template) || p.form != nil { - // Ignore the token. - return true - } - p.addElement() - p.form = p.oe.pop() - case a.Select: - p.reconstructActiveFormattingElements() - switch p.top().DataAtom { - case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: - p.fosterParenting = true - } - p.addElement() - p.fosterParenting = false - p.framesetOK = false - p.im = inSelectInTableIM - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Table: - if p.popUntil(tableScope, a.Table) { - p.resetInsertionMode() - return true - } - // Ignore the token. - return true - case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: - // Ignore the token. - return true - case a.Template: - return inHeadIM(p) - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - // Ignore the token. - return true - case ErrorToken: - return inBodyIM(p) - } - - p.fosterParenting = true - defer func() { p.fosterParenting = false }() - - return inBodyIM(p) -} - -// Section 12.2.6.4.11. -func inCaptionIM(p *parser) bool { - switch p.tok.Type { - case StartTagToken: - switch p.tok.DataAtom { - case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Thead, a.Tr: - if !p.popUntil(tableScope, a.Caption) { - // Ignore the token. - return true - } - p.clearActiveFormattingElements() - p.im = inTableIM - return false - case a.Select: - p.reconstructActiveFormattingElements() - p.addElement() - p.framesetOK = false - p.im = inSelectInTableIM - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Caption: - if p.popUntil(tableScope, a.Caption) { - p.clearActiveFormattingElements() - p.im = inTableIM - } - return true - case a.Table: - if !p.popUntil(tableScope, a.Caption) { - // Ignore the token. - return true - } - p.clearActiveFormattingElements() - p.im = inTableIM - return false - case a.Body, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: - // Ignore the token. - return true - } - } - return inBodyIM(p) -} - -// Section 12.2.6.4.12. -func inColumnGroupIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) < len(p.tok.Data) { - // Add the initial whitespace to the current node. - p.addText(p.tok.Data[:len(p.tok.Data)-len(s)]) - if s == "" { - return true - } - p.tok.Data = s - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - // Ignore the token. - return true - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Col: - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - return true - case a.Template: - return inHeadIM(p) - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Colgroup: - if p.oe.top().DataAtom == a.Colgroup { - p.oe.pop() - p.im = inTableIM - } - return true - case a.Col: - // Ignore the token. - return true - case a.Template: - return inHeadIM(p) - } - case ErrorToken: - return inBodyIM(p) - } - if p.oe.top().DataAtom != a.Colgroup { - return true - } - p.oe.pop() - p.im = inTableIM - return false -} - -// Section 12.2.6.4.13. -func inTableBodyIM(p *parser) bool { - switch p.tok.Type { - case StartTagToken: - switch p.tok.DataAtom { - case a.Tr: - p.clearStackToContext(tableBodyScope) - p.addElement() - p.im = inRowIM - return true - case a.Td, a.Th: - p.parseImpliedToken(StartTagToken, a.Tr, a.Tr.String()) - return false - case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead: - if p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) { - p.im = inTableIM - return false - } - // Ignore the token. - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Tbody, a.Tfoot, a.Thead: - if p.elementInScope(tableScope, p.tok.DataAtom) { - p.clearStackToContext(tableBodyScope) - p.oe.pop() - p.im = inTableIM - } - return true - case a.Table: - if p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) { - p.im = inTableIM - return false - } - // Ignore the token. - return true - case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th, a.Tr: - // Ignore the token. - return true - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - - return inTableIM(p) -} - -// Section 12.2.6.4.14. -func inRowIM(p *parser) bool { - switch p.tok.Type { - case StartTagToken: - switch p.tok.DataAtom { - case a.Td, a.Th: - p.clearStackToContext(tableRowScope) - p.addElement() - p.afe = append(p.afe, &scopeMarker) - p.im = inCellIM - return true - case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead, a.Tr: - if p.popUntil(tableScope, a.Tr) { - p.im = inTableBodyIM - return false - } - // Ignore the token. - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Tr: - if p.popUntil(tableScope, a.Tr) { - p.im = inTableBodyIM - return true - } - // Ignore the token. - return true - case a.Table: - if p.popUntil(tableScope, a.Tr) { - p.im = inTableBodyIM - return false - } - // Ignore the token. - return true - case a.Tbody, a.Tfoot, a.Thead: - if p.elementInScope(tableScope, p.tok.DataAtom) { - p.parseImpliedToken(EndTagToken, a.Tr, a.Tr.String()) - return false - } - // Ignore the token. - return true - case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th: - // Ignore the token. - return true - } - } - - return inTableIM(p) -} - -// Section 12.2.6.4.15. -func inCellIM(p *parser) bool { - switch p.tok.Type { - case StartTagToken: - switch p.tok.DataAtom { - case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: - if p.popUntil(tableScope, a.Td, a.Th) { - // Close the cell and reprocess. - p.clearActiveFormattingElements() - p.im = inRowIM - return false - } - // Ignore the token. - return true - case a.Select: - p.reconstructActiveFormattingElements() - p.addElement() - p.framesetOK = false - p.im = inSelectInTableIM - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Td, a.Th: - if !p.popUntil(tableScope, p.tok.DataAtom) { - // Ignore the token. - return true - } - p.clearActiveFormattingElements() - p.im = inRowIM - return true - case a.Body, a.Caption, a.Col, a.Colgroup, a.Html: - // Ignore the token. - return true - case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr: - if !p.elementInScope(tableScope, p.tok.DataAtom) { - // Ignore the token. - return true - } - // Close the cell and reprocess. - if p.popUntil(tableScope, a.Td, a.Th) { - p.clearActiveFormattingElements() - } - p.im = inRowIM - return false - } - } - return inBodyIM(p) -} - -// Section 12.2.6.4.16. -func inSelectIM(p *parser) bool { - switch p.tok.Type { - case TextToken: - p.addText(strings.Replace(p.tok.Data, "\x00", "", -1)) - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Option: - if p.top().DataAtom == a.Option { - p.oe.pop() - } - p.addElement() - case a.Optgroup: - if p.top().DataAtom == a.Option { - p.oe.pop() - } - if p.top().DataAtom == a.Optgroup { - p.oe.pop() - } - p.addElement() - case a.Select: - if !p.popUntil(selectScope, a.Select) { - // Ignore the token. - return true - } - p.resetInsertionMode() - case a.Input, a.Keygen, a.Textarea: - if p.elementInScope(selectScope, a.Select) { - p.parseImpliedToken(EndTagToken, a.Select, a.Select.String()) - return false - } - // In order to properly ignore <textarea>, we need to change the tokenizer mode. - p.tokenizer.NextIsNotRawText() - // Ignore the token. - return true - case a.Script, a.Template: - return inHeadIM(p) - case a.Iframe, a.Noembed, a.Noframes, a.Noscript, a.Plaintext, a.Style, a.Title, a.Xmp: - // Don't let the tokenizer go into raw text mode when there are raw tags - // to be ignored. These tags should be ignored from the tokenizer - // properly. - p.tokenizer.NextIsNotRawText() - // Ignore the token. - return true - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Option: - if p.top().DataAtom == a.Option { - p.oe.pop() - } - case a.Optgroup: - i := len(p.oe) - 1 - if p.oe[i].DataAtom == a.Option { - i-- - } - if p.oe[i].DataAtom == a.Optgroup { - p.oe = p.oe[:i] - } - case a.Select: - if !p.popUntil(selectScope, a.Select) { - // Ignore the token. - return true - } - p.resetInsertionMode() - case a.Template: - return inHeadIM(p) - } - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case DoctypeToken: - // Ignore the token. - return true - case ErrorToken: - return inBodyIM(p) - } - - return true -} - -// Section 12.2.6.4.17. -func inSelectInTableIM(p *parser) bool { - switch p.tok.Type { - case StartTagToken, EndTagToken: - switch p.tok.DataAtom { - case a.Caption, a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr, a.Td, a.Th: - if p.tok.Type == EndTagToken && !p.elementInScope(tableScope, p.tok.DataAtom) { - // Ignore the token. - return true - } - // This is like p.popUntil(selectScope, a.Select), but it also - // matches <math select>, not just <select>. Matching the MathML - // tag is arguably incorrect (conceptually), but it mimics what - // Chromium does. - for i := len(p.oe) - 1; i >= 0; i-- { - if n := p.oe[i]; n.DataAtom == a.Select { - p.oe = p.oe[:i] - break - } - } - p.resetInsertionMode() - return false - } - } - return inSelectIM(p) -} - -// Section 12.2.6.4.18. -func inTemplateIM(p *parser) bool { - switch p.tok.Type { - case TextToken, CommentToken, DoctypeToken: - return inBodyIM(p) - case StartTagToken: - switch p.tok.DataAtom { - case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title: - return inHeadIM(p) - case a.Caption, a.Colgroup, a.Tbody, a.Tfoot, a.Thead: - p.templateStack.pop() - p.templateStack = append(p.templateStack, inTableIM) - p.im = inTableIM - return false - case a.Col: - p.templateStack.pop() - p.templateStack = append(p.templateStack, inColumnGroupIM) - p.im = inColumnGroupIM - return false - case a.Tr: - p.templateStack.pop() - p.templateStack = append(p.templateStack, inTableBodyIM) - p.im = inTableBodyIM - return false - case a.Td, a.Th: - p.templateStack.pop() - p.templateStack = append(p.templateStack, inRowIM) - p.im = inRowIM - return false - default: - p.templateStack.pop() - p.templateStack = append(p.templateStack, inBodyIM) - p.im = inBodyIM - return false - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Template: - return inHeadIM(p) - default: - // Ignore the token. - return true - } - case ErrorToken: - if !p.oe.contains(a.Template) { - // Ignore the token. - return true - } - // TODO: remove this divergence from the HTML5 spec. - // - // See https://bugs.chromium.org/p/chromium/issues/detail?id=829668 - p.generateImpliedEndTags() - for i := len(p.oe) - 1; i >= 0; i-- { - if n := p.oe[i]; n.Namespace == "" && n.DataAtom == a.Template { - p.oe = p.oe[:i] - break - } - } - p.clearActiveFormattingElements() - p.templateStack.pop() - p.resetInsertionMode() - return false - } - return false -} - -// Section 12.2.6.4.19. -func afterBodyIM(p *parser) bool { - switch p.tok.Type { - case ErrorToken: - // Stop parsing. - return true - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) == 0 { - // It was all whitespace. - return inBodyIM(p) - } - case StartTagToken: - if p.tok.DataAtom == a.Html { - return inBodyIM(p) - } - case EndTagToken: - if p.tok.DataAtom == a.Html { - if !p.fragment { - p.im = afterAfterBodyIM - } - return true - } - case CommentToken: - // The comment is attached to the <html> element. - if len(p.oe) < 1 || p.oe[0].DataAtom != a.Html { - panic("html: bad parser state: <html> element not found, in the after-body insertion mode") - } - p.oe[0].AppendChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - } - p.im = inBodyIM - return false -} - -// Section 12.2.6.4.20. -func inFramesetIM(p *parser) bool { - switch p.tok.Type { - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case TextToken: - // Ignore all text but whitespace. - s := strings.Map(func(c rune) rune { - switch c { - case ' ', '\t', '\n', '\f', '\r': - return c - } - return -1 - }, p.tok.Data) - if s != "" { - p.addText(s) - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Frameset: - p.addElement() - case a.Frame: - p.addElement() - p.oe.pop() - p.acknowledgeSelfClosingTag() - case a.Noframes: - return inHeadIM(p) - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Frameset: - if p.oe.top().DataAtom != a.Html { - p.oe.pop() - if p.oe.top().DataAtom != a.Frameset { - p.im = afterFramesetIM - return true - } - } - } - default: - // Ignore the token. - } - return true -} - -// Section 12.2.6.4.21. -func afterFramesetIM(p *parser) bool { - switch p.tok.Type { - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case TextToken: - // Ignore all text but whitespace. - s := strings.Map(func(c rune) rune { - switch c { - case ' ', '\t', '\n', '\f', '\r': - return c - } - return -1 - }, p.tok.Data) - if s != "" { - p.addText(s) - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Noframes: - return inHeadIM(p) - } - case EndTagToken: - switch p.tok.DataAtom { - case a.Html: - p.im = afterAfterFramesetIM - return true - } - default: - // Ignore the token. - } - return true -} - -// Section 12.2.6.4.22. -func afterAfterBodyIM(p *parser) bool { - switch p.tok.Type { - case ErrorToken: - // Stop parsing. - return true - case TextToken: - s := strings.TrimLeft(p.tok.Data, whitespace) - if len(s) == 0 { - // It was all whitespace. - return inBodyIM(p) - } - case StartTagToken: - if p.tok.DataAtom == a.Html { - return inBodyIM(p) - } - case CommentToken: - p.doc.AppendChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - return true - case DoctypeToken: - return inBodyIM(p) - } - p.im = inBodyIM - return false -} - -// Section 12.2.6.4.23. -func afterAfterFramesetIM(p *parser) bool { - switch p.tok.Type { - case CommentToken: - p.doc.AppendChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case TextToken: - // Ignore all text but whitespace. - s := strings.Map(func(c rune) rune { - switch c { - case ' ', '\t', '\n', '\f', '\r': - return c - } - return -1 - }, p.tok.Data) - if s != "" { - p.tok.Data = s - return inBodyIM(p) - } - case StartTagToken: - switch p.tok.DataAtom { - case a.Html: - return inBodyIM(p) - case a.Noframes: - return inHeadIM(p) - } - case DoctypeToken: - return inBodyIM(p) - default: - // Ignore the token. - } - return true -} - -func ignoreTheRemainingTokens(p *parser) bool { - return true -} - -const whitespaceOrNUL = whitespace + "\x00" - -// Section 12.2.6.5 -func parseForeignContent(p *parser) bool { - switch p.tok.Type { - case TextToken: - if p.framesetOK { - p.framesetOK = strings.TrimLeft(p.tok.Data, whitespaceOrNUL) == "" - } - p.tok.Data = strings.Replace(p.tok.Data, "\x00", "\ufffd", -1) - p.addText(p.tok.Data) - case CommentToken: - p.addChild(&Node{ - Type: CommentNode, - Data: p.tok.Data, - }) - case StartTagToken: - if !p.fragment { - b := breakout[p.tok.Data] - if p.tok.DataAtom == a.Font { - loop: - for _, attr := range p.tok.Attr { - switch attr.Key { - case "color", "face", "size": - b = true - break loop - } - } - } - if b { - for i := len(p.oe) - 1; i >= 0; i-- { - n := p.oe[i] - if n.Namespace == "" || htmlIntegrationPoint(n) || mathMLTextIntegrationPoint(n) { - p.oe = p.oe[:i+1] - break - } - } - return false - } - } - current := p.adjustedCurrentNode() - switch current.Namespace { - case "math": - adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments) - case "svg": - // Adjust SVG tag names. The tokenizer lower-cases tag names, but - // SVG wants e.g. "foreignObject" with a capital second "O". - if x := svgTagNameAdjustments[p.tok.Data]; x != "" { - p.tok.DataAtom = a.Lookup([]byte(x)) - p.tok.Data = x - } - adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments) - default: - panic("html: bad parser state: unexpected namespace") - } - adjustForeignAttributes(p.tok.Attr) - namespace := current.Namespace - p.addElement() - p.top().Namespace = namespace - if namespace != "" { - // Don't let the tokenizer go into raw text mode in foreign content - // (e.g. in an SVG <title> tag). - p.tokenizer.NextIsNotRawText() - } - if p.hasSelfClosingToken { - p.oe.pop() - p.acknowledgeSelfClosingTag() - } - case EndTagToken: - for i := len(p.oe) - 1; i >= 0; i-- { - if p.oe[i].Namespace == "" { - return p.im(p) - } - if strings.EqualFold(p.oe[i].Data, p.tok.Data) { - p.oe = p.oe[:i] - break - } - } - return true - default: - // Ignore the token. - } - return true -} - -// Section 12.2.4.2. -func (p *parser) adjustedCurrentNode() *Node { - if len(p.oe) == 1 && p.fragment && p.context != nil { - return p.context - } - return p.oe.top() -} - -// Section 12.2.6. -func (p *parser) inForeignContent() bool { - if len(p.oe) == 0 { - return false - } - n := p.adjustedCurrentNode() - if n.Namespace == "" { - return false - } - if mathMLTextIntegrationPoint(n) { - if p.tok.Type == StartTagToken && p.tok.DataAtom != a.Mglyph && p.tok.DataAtom != a.Malignmark { - return false - } - if p.tok.Type == TextToken { - return false - } - } - if n.Namespace == "math" && n.DataAtom == a.AnnotationXml && p.tok.Type == StartTagToken && p.tok.DataAtom == a.Svg { - return false - } - if htmlIntegrationPoint(n) && (p.tok.Type == StartTagToken || p.tok.Type == TextToken) { - return false - } - if p.tok.Type == ErrorToken { - return false - } - return true -} - -// parseImpliedToken parses a token as though it had appeared in the parser's -// input. -func (p *parser) parseImpliedToken(t TokenType, dataAtom a.Atom, data string) { - realToken, selfClosing := p.tok, p.hasSelfClosingToken - p.tok = Token{ - Type: t, - DataAtom: dataAtom, - Data: data, - } - p.hasSelfClosingToken = false - p.parseCurrentToken() - p.tok, p.hasSelfClosingToken = realToken, selfClosing -} - -// parseCurrentToken runs the current token through the parsing routines -// until it is consumed. -func (p *parser) parseCurrentToken() { - if p.tok.Type == SelfClosingTagToken { - p.hasSelfClosingToken = true - p.tok.Type = StartTagToken - } - - consumed := false - for !consumed { - if p.inForeignContent() { - consumed = parseForeignContent(p) - } else { - consumed = p.im(p) - } - } - - if p.hasSelfClosingToken { - // This is a parse error, but ignore it. - p.hasSelfClosingToken = false - } -} - -func (p *parser) parse() error { - // Iterate until EOF. Any other error will cause an early return. - var err error - for err != io.EOF { - // CDATA sections are allowed only in foreign content. - n := p.oe.top() - p.tokenizer.AllowCDATA(n != nil && n.Namespace != "") - // Read and parse the next token. - p.tokenizer.Next() - p.tok = p.tokenizer.Token() - if p.tok.Type == ErrorToken { - err = p.tokenizer.Err() - if err != nil && err != io.EOF { - return err - } - } - p.parseCurrentToken() - } - return nil -} - -// Parse returns the parse tree for the HTML from the given Reader. -// -// It implements the HTML5 parsing algorithm -// (https://html.spec.whatwg.org/multipage/syntax.html#tree-construction), -// which is very complicated. The resultant tree can contain implicitly created -// nodes that have no explicit <tag> listed in r's data, and nodes' parents can -// differ from the nesting implied by a naive processing of start and end -// <tag>s. Conversely, explicit <tag>s in r's data can be silently dropped, -// with no corresponding node in the resulting tree. -// -// The input is assumed to be UTF-8 encoded. -func Parse(r io.Reader) (*Node, error) { - return ParseWithOptions(r) -} - -// ParseFragment parses a fragment of HTML and returns the nodes that were -// found. If the fragment is the InnerHTML for an existing element, pass that -// element in context. -// -// It has the same intricacies as Parse. -func ParseFragment(r io.Reader, context *Node) ([]*Node, error) { - return ParseFragmentWithOptions(r, context) -} - -// ParseOption configures a parser. -type ParseOption func(p *parser) - -// ParseOptionEnableScripting configures the scripting flag. -// https://html.spec.whatwg.org/multipage/webappapis.html#enabling-and-disabling-scripting -// -// By default, scripting is enabled. -func ParseOptionEnableScripting(enable bool) ParseOption { - return func(p *parser) { - p.scripting = enable - } -} - -// ParseWithOptions is like Parse, with options. -func ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) { - p := &parser{ - tokenizer: NewTokenizer(r), - doc: &Node{ - Type: DocumentNode, - }, - scripting: true, - framesetOK: true, - im: initialIM, - } - - for _, f := range opts { - f(p) - } - - if err := p.parse(); err != nil { - return nil, err - } - return p.doc, nil -} - -// ParseFragmentWithOptions is like ParseFragment, with options. -func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) ([]*Node, error) { - contextTag := "" - if context != nil { - if context.Type != ElementNode { - return nil, errors.New("html: ParseFragment of non-element Node") - } - // The next check isn't just context.DataAtom.String() == context.Data because - // it is valid to pass an element whose tag isn't a known atom. For example, - // DataAtom == 0 and Data = "tagfromthefuture" is perfectly consistent. - if context.DataAtom != a.Lookup([]byte(context.Data)) { - return nil, fmt.Errorf("html: inconsistent Node: DataAtom=%q, Data=%q", context.DataAtom, context.Data) - } - contextTag = context.DataAtom.String() - } - p := &parser{ - doc: &Node{ - Type: DocumentNode, - }, - scripting: true, - fragment: true, - context: context, - } - if context != nil && context.Namespace != "" { - p.tokenizer = NewTokenizer(r) - } else { - p.tokenizer = NewTokenizerFragment(r, contextTag) - } - - for _, f := range opts { - f(p) - } - - root := &Node{ - Type: ElementNode, - DataAtom: a.Html, - Data: a.Html.String(), - } - p.doc.AppendChild(root) - p.oe = nodeStack{root} - if context != nil && context.DataAtom == a.Template { - p.templateStack = append(p.templateStack, inTemplateIM) - } - p.resetInsertionMode() - - for n := context; n != nil; n = n.Parent { - if n.Type == ElementNode && n.DataAtom == a.Form { - p.form = n - break - } - } - - if err := p.parse(); err != nil { - return nil, err - } - - parent := p.doc - if context != nil { - parent = root - } - - var result []*Node - for c := parent.FirstChild; c != nil; { - next := c.NextSibling - parent.RemoveChild(c) - result = append(result, c) - c = next - } - return result, nil -} diff --git a/vendor/golang.org/x/net/html/render.go b/vendor/golang.org/x/net/html/render.go deleted file mode 100644 index e8c1233..0000000 --- a/vendor/golang.org/x/net/html/render.go +++ /dev/null @@ -1,293 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bufio" - "errors" - "fmt" - "io" - "strings" -) - -type writer interface { - io.Writer - io.ByteWriter - WriteString(string) (int, error) -} - -// Render renders the parse tree n to the given writer. -// -// Rendering is done on a 'best effort' basis: calling Parse on the output of -// Render will always result in something similar to the original tree, but it -// is not necessarily an exact clone unless the original tree was 'well-formed'. -// 'Well-formed' is not easily specified; the HTML5 specification is -// complicated. -// -// Calling Parse on arbitrary input typically results in a 'well-formed' parse -// tree. However, it is possible for Parse to yield a 'badly-formed' parse tree. -// For example, in a 'well-formed' parse tree, no <a> element is a child of -// another <a> element: parsing "<a><a>" results in two sibling elements. -// Similarly, in a 'well-formed' parse tree, no <a> element is a child of a -// <table> element: parsing "<p><table><a>" results in a <p> with two sibling -// children; the <a> is reparented to the <table>'s parent. However, calling -// Parse on "<a><table><a>" does not return an error, but the result has an <a> -// element with an <a> child, and is therefore not 'well-formed'. -// -// Programmatically constructed trees are typically also 'well-formed', but it -// is possible to construct a tree that looks innocuous but, when rendered and -// re-parsed, results in a different tree. A simple example is that a solitary -// text node would become a tree containing <html>, <head> and <body> elements. -// Another example is that the programmatic equivalent of "a<head>b</head>c" -// becomes "<html><head><head/><body>abc</body></html>". -func Render(w io.Writer, n *Node) error { - if x, ok := w.(writer); ok { - return render(x, n) - } - buf := bufio.NewWriter(w) - if err := render(buf, n); err != nil { - return err - } - return buf.Flush() -} - -// plaintextAbort is returned from render1 when a <plaintext> element -// has been rendered. No more end tags should be rendered after that. -var plaintextAbort = errors.New("html: internal error (plaintext abort)") - -func render(w writer, n *Node) error { - err := render1(w, n) - if err == plaintextAbort { - err = nil - } - return err -} - -func render1(w writer, n *Node) error { - // Render non-element nodes; these are the easy cases. - switch n.Type { - case ErrorNode: - return errors.New("html: cannot render an ErrorNode node") - case TextNode: - return escape(w, n.Data) - case DocumentNode: - for c := n.FirstChild; c != nil; c = c.NextSibling { - if err := render1(w, c); err != nil { - return err - } - } - return nil - case ElementNode: - // No-op. - case CommentNode: - if _, err := w.WriteString("<!--"); err != nil { - return err - } - if err := escapeComment(w, n.Data); err != nil { - return err - } - if _, err := w.WriteString("-->"); err != nil { - return err - } - return nil - case DoctypeNode: - if _, err := w.WriteString("<!DOCTYPE "); err != nil { - return err - } - if err := escape(w, n.Data); err != nil { - return err - } - if n.Attr != nil { - var p, s string - for _, a := range n.Attr { - switch a.Key { - case "public": - p = a.Val - case "system": - s = a.Val - } - } - if p != "" { - if _, err := w.WriteString(" PUBLIC "); err != nil { - return err - } - if err := writeQuoted(w, p); err != nil { - return err - } - if s != "" { - if err := w.WriteByte(' '); err != nil { - return err - } - if err := writeQuoted(w, s); err != nil { - return err - } - } - } else if s != "" { - if _, err := w.WriteString(" SYSTEM "); err != nil { - return err - } - if err := writeQuoted(w, s); err != nil { - return err - } - } - } - return w.WriteByte('>') - case RawNode: - _, err := w.WriteString(n.Data) - return err - default: - return errors.New("html: unknown node type") - } - - // Render the <xxx> opening tag. - if err := w.WriteByte('<'); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - for _, a := range n.Attr { - if err := w.WriteByte(' '); err != nil { - return err - } - if a.Namespace != "" { - if _, err := w.WriteString(a.Namespace); err != nil { - return err - } - if err := w.WriteByte(':'); err != nil { - return err - } - } - if _, err := w.WriteString(a.Key); err != nil { - return err - } - if _, err := w.WriteString(`="`); err != nil { - return err - } - if err := escape(w, a.Val); err != nil { - return err - } - if err := w.WriteByte('"'); err != nil { - return err - } - } - if voidElements[n.Data] { - if n.FirstChild != nil { - return fmt.Errorf("html: void element <%s> has child nodes", n.Data) - } - _, err := w.WriteString("/>") - return err - } - if err := w.WriteByte('>'); err != nil { - return err - } - - // Add initial newline where there is danger of a newline beging ignored. - if c := n.FirstChild; c != nil && c.Type == TextNode && strings.HasPrefix(c.Data, "\n") { - switch n.Data { - case "pre", "listing", "textarea": - if err := w.WriteByte('\n'); err != nil { - return err - } - } - } - - // Render any child nodes - if childTextNodesAreLiteral(n) { - for c := n.FirstChild; c != nil; c = c.NextSibling { - if c.Type == TextNode { - if _, err := w.WriteString(c.Data); err != nil { - return err - } - } else { - if err := render1(w, c); err != nil { - return err - } - } - } - if n.Data == "plaintext" { - // Don't render anything else. <plaintext> must be the - // last element in the file, with no closing tag. - return plaintextAbort - } - } else { - for c := n.FirstChild; c != nil; c = c.NextSibling { - if err := render1(w, c); err != nil { - return err - } - } - } - - // Render the </xxx> closing tag. - if _, err := w.WriteString("</"); err != nil { - return err - } - if _, err := w.WriteString(n.Data); err != nil { - return err - } - return w.WriteByte('>') -} - -func childTextNodesAreLiteral(n *Node) bool { - // Per WHATWG HTML 13.3, if the parent of the current node is a style, - // script, xmp, iframe, noembed, noframes, or plaintext element, and the - // current node is a text node, append the value of the node's data - // literally. The specification is not explicit about it, but we only - // enforce this if we are in the HTML namespace (i.e. when the namespace is - // ""). - // NOTE: we also always include noscript elements, although the - // specification states that they should only be rendered as such if - // scripting is enabled for the node (which is not something we track). - if n.Namespace != "" { - return false - } - switch n.Data { - case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "xmp": - return true - default: - return false - } -} - -// writeQuoted writes s to w surrounded by quotes. Normally it will use double -// quotes, but if s contains a double quote, it will use single quotes. -// It is used for writing the identifiers in a doctype declaration. -// In valid HTML, they can't contain both types of quotes. -func writeQuoted(w writer, s string) error { - var q byte = '"' - if strings.Contains(s, `"`) { - q = '\'' - } - if err := w.WriteByte(q); err != nil { - return err - } - if _, err := w.WriteString(s); err != nil { - return err - } - if err := w.WriteByte(q); err != nil { - return err - } - return nil -} - -// Section 12.1.2, "Elements", gives this list of void elements. Void elements -// are those that can't have any contents. -var voidElements = map[string]bool{ - "area": true, - "base": true, - "br": true, - "col": true, - "embed": true, - "hr": true, - "img": true, - "input": true, - "keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility. - "link": true, - "meta": true, - "param": true, - "source": true, - "track": true, - "wbr": true, -} diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go deleted file mode 100644 index 3c57880..0000000 --- a/vendor/golang.org/x/net/html/token.go +++ /dev/null @@ -1,1272 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "errors" - "io" - "strconv" - "strings" - - "golang.org/x/net/html/atom" -) - -// A TokenType is the type of a Token. -type TokenType uint32 - -const ( - // ErrorToken means that an error occurred during tokenization. - ErrorToken TokenType = iota - // TextToken means a text node. - TextToken - // A StartTagToken looks like <a>. - StartTagToken - // An EndTagToken looks like </a>. - EndTagToken - // A SelfClosingTagToken tag looks like <br/>. - SelfClosingTagToken - // A CommentToken looks like <!--x-->. - CommentToken - // A DoctypeToken looks like <!DOCTYPE x> - DoctypeToken -) - -// ErrBufferExceeded means that the buffering limit was exceeded. -var ErrBufferExceeded = errors.New("max buffer exceeded") - -// String returns a string representation of the TokenType. -func (t TokenType) String() string { - switch t { - case ErrorToken: - return "Error" - case TextToken: - return "Text" - case StartTagToken: - return "StartTag" - case EndTagToken: - return "EndTag" - case SelfClosingTagToken: - return "SelfClosingTag" - case CommentToken: - return "Comment" - case DoctypeToken: - return "Doctype" - } - return "Invalid(" + strconv.Itoa(int(t)) + ")" -} - -// An Attribute is an attribute namespace-key-value triple. Namespace is -// non-empty for foreign attributes like xlink, Key is alphabetic (and hence -// does not contain escapable characters like '&', '<' or '>'), and Val is -// unescaped (it looks like "a<b" rather than "a&lt;b"). -// -// Namespace is only used by the parser, not the tokenizer. -type Attribute struct { - Namespace, Key, Val string -} - -// A Token consists of a TokenType and some Data (tag name for start and end -// tags, content for text, comments and doctypes). A tag Token may also contain -// a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b" -// rather than "a&lt;b"). For tag Tokens, DataAtom is the atom for Data, or -// zero if Data is not a known tag name. -type Token struct { - Type TokenType - DataAtom atom.Atom - Data string - Attr []Attribute -} - -// tagString returns a string representation of a tag Token's Data and Attr. -func (t Token) tagString() string { - if len(t.Attr) == 0 { - return t.Data - } - buf := bytes.NewBufferString(t.Data) - for _, a := range t.Attr { - buf.WriteByte(' ') - buf.WriteString(a.Key) - buf.WriteString(`="`) - escape(buf, a.Val) - buf.WriteByte('"') - } - return buf.String() -} - -// String returns a string representation of the Token. -func (t Token) String() string { - switch t.Type { - case ErrorToken: - return "" - case TextToken: - return EscapeString(t.Data) - case StartTagToken: - return "<" + t.tagString() + ">" - case EndTagToken: - return "</" + t.tagString() + ">" - case SelfClosingTagToken: - return "<" + t.tagString() + "/>" - case CommentToken: - return "<!--" + escapeCommentString(t.Data) + "-->" - case DoctypeToken: - return "<!DOCTYPE " + EscapeString(t.Data) + ">" - } - return "Invalid(" + strconv.Itoa(int(t.Type)) + ")" -} - -// span is a range of bytes in a Tokenizer's buffer. The start is inclusive, -// the end is exclusive. -type span struct { - start, end int -} - -// A Tokenizer returns a stream of HTML Tokens. -type Tokenizer struct { - // r is the source of the HTML text. - r io.Reader - // tt is the TokenType of the current token. - tt TokenType - // err is the first error encountered during tokenization. It is possible - // for tt != Error && err != nil to hold: this means that Next returned a - // valid token but the subsequent Next call will return an error token. - // For example, if the HTML text input was just "plain", then the first - // Next call would set z.err to io.EOF but return a TextToken, and all - // subsequent Next calls would return an ErrorToken. - // err is never reset. Once it becomes non-nil, it stays non-nil. - err error - // readErr is the error returned by the io.Reader r. It is separate from - // err because it is valid for an io.Reader to return (n int, err1 error) - // such that n > 0 && err1 != nil, and callers should always process the - // n > 0 bytes before considering the error err1. - readErr error - // buf[raw.start:raw.end] holds the raw bytes of the current token. - // buf[raw.end:] is buffered input that will yield future tokens. - raw span - buf []byte - // maxBuf limits the data buffered in buf. A value of 0 means unlimited. - maxBuf int - // buf[data.start:data.end] holds the raw bytes of the current token's data: - // a text token's text, a tag token's tag name, etc. - data span - // pendingAttr is the attribute key and value currently being tokenized. - // When complete, pendingAttr is pushed onto attr. nAttrReturned is - // incremented on each call to TagAttr. - pendingAttr [2]span - attr [][2]span - nAttrReturned int - // rawTag is the "script" in "</script>" that closes the next token. If - // non-empty, the subsequent call to Next will return a raw or RCDATA text - // token: one that treats "<p>" as text instead of an element. - // rawTag's contents are lower-cased. - rawTag string - // textIsRaw is whether the current text token's data is not escaped. - textIsRaw bool - // convertNUL is whether NUL bytes in the current token's data should - // be converted into \ufffd replacement characters. - convertNUL bool - // allowCDATA is whether CDATA sections are allowed in the current context. - allowCDATA bool -} - -// AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as -// the text "foo". The default value is false, which means to recognize it as -// a bogus comment "<!-- [CDATA[foo]] -->" instead. -// -// Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and -// only if tokenizing foreign content, such as MathML and SVG. However, -// tracking foreign-contentness is difficult to do purely in the tokenizer, -// as opposed to the parser, due to HTML integration points: an <svg> element -// can contain a <foreignObject> that is foreign-to-SVG but not foreign-to- -// HTML. For strict compliance with the HTML5 tokenization algorithm, it is the -// responsibility of the user of a tokenizer to call AllowCDATA as appropriate. -// In practice, if using the tokenizer without caring whether MathML or SVG -// CDATA is text or comments, such as tokenizing HTML to find all the anchor -// text, it is acceptable to ignore this responsibility. -func (z *Tokenizer) AllowCDATA(allowCDATA bool) { - z.allowCDATA = allowCDATA -} - -// NextIsNotRawText instructs the tokenizer that the next token should not be -// considered as 'raw text'. Some elements, such as script and title elements, -// normally require the next token after the opening tag to be 'raw text' that -// has no child elements. For example, tokenizing "<title>a<b>c</b>d</title>" -// yields a start tag token for "<title>", a text token for "a<b>c</b>d", and -// an end tag token for "</title>". There are no distinct start tag or end tag -// tokens for the "<b>" and "</b>". -// -// This tokenizer implementation will generally look for raw text at the right -// times. Strictly speaking, an HTML5 compliant tokenizer should not look for -// raw text if in foreign content: <title> generally needs raw text, but a -// <title> inside an <svg> does not. Another example is that a <textarea> -// generally needs raw text, but a <textarea> is not allowed as an immediate -// child of a <select>; in normal parsing, a <textarea> implies </select>, but -// one cannot close the implicit element when parsing a <select>'s InnerHTML. -// Similarly to AllowCDATA, tracking the correct moment to override raw-text- -// ness is difficult to do purely in the tokenizer, as opposed to the parser. -// For strict compliance with the HTML5 tokenization algorithm, it is the -// responsibility of the user of a tokenizer to call NextIsNotRawText as -// appropriate. In practice, like AllowCDATA, it is acceptable to ignore this -// responsibility for basic usage. -// -// Note that this 'raw text' concept is different from the one offered by the -// Tokenizer.Raw method. -func (z *Tokenizer) NextIsNotRawText() { - z.rawTag = "" -} - -// Err returns the error associated with the most recent ErrorToken token. -// This is typically io.EOF, meaning the end of tokenization. -func (z *Tokenizer) Err() error { - if z.tt != ErrorToken { - return nil - } - return z.err -} - -// readByte returns the next byte from the input stream, doing a buffered read -// from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte -// slice that holds all the bytes read so far for the current token. -// It sets z.err if the underlying reader returns an error. -// Pre-condition: z.err == nil. -func (z *Tokenizer) readByte() byte { - if z.raw.end >= len(z.buf) { - // Our buffer is exhausted and we have to read from z.r. Check if the - // previous read resulted in an error. - if z.readErr != nil { - z.err = z.readErr - return 0 - } - // We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length - // z.raw.end - z.raw.start is more than half the capacity of z.buf, then we - // allocate a new buffer before the copy. - c := cap(z.buf) - d := z.raw.end - z.raw.start - var buf1 []byte - if 2*d > c { - buf1 = make([]byte, d, 2*c) - } else { - buf1 = z.buf[:d] - } - copy(buf1, z.buf[z.raw.start:z.raw.end]) - if x := z.raw.start; x != 0 { - // Adjust the data/attr spans to refer to the same contents after the copy. - z.data.start -= x - z.data.end -= x - z.pendingAttr[0].start -= x - z.pendingAttr[0].end -= x - z.pendingAttr[1].start -= x - z.pendingAttr[1].end -= x - for i := range z.attr { - z.attr[i][0].start -= x - z.attr[i][0].end -= x - z.attr[i][1].start -= x - z.attr[i][1].end -= x - } - } - z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d] - // Now that we have copied the live bytes to the start of the buffer, - // we read from z.r into the remainder. - var n int - n, z.readErr = readAtLeastOneByte(z.r, buf1[d:cap(buf1)]) - if n == 0 { - z.err = z.readErr - return 0 - } - z.buf = buf1[:d+n] - } - x := z.buf[z.raw.end] - z.raw.end++ - if z.maxBuf > 0 && z.raw.end-z.raw.start >= z.maxBuf { - z.err = ErrBufferExceeded - return 0 - } - return x -} - -// Buffered returns a slice containing data buffered but not yet tokenized. -func (z *Tokenizer) Buffered() []byte { - return z.buf[z.raw.end:] -} - -// readAtLeastOneByte wraps an io.Reader so that reading cannot return (0, nil). -// It returns io.ErrNoProgress if the underlying r.Read method returns (0, nil) -// too many times in succession. -func readAtLeastOneByte(r io.Reader, b []byte) (int, error) { - for i := 0; i < 100; i++ { - if n, err := r.Read(b); n != 0 || err != nil { - return n, err - } - } - return 0, io.ErrNoProgress -} - -// skipWhiteSpace skips past any white space. -func (z *Tokenizer) skipWhiteSpace() { - if z.err != nil { - return - } - for { - c := z.readByte() - if z.err != nil { - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - // No-op. - default: - z.raw.end-- - return - } - } -} - -// readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and -// is typically something like "script" or "textarea". -func (z *Tokenizer) readRawOrRCDATA() { - if z.rawTag == "script" { - z.readScript() - z.textIsRaw = true - z.rawTag = "" - return - } -loop: - for { - c := z.readByte() - if z.err != nil { - break loop - } - if c != '<' { - continue loop - } - c = z.readByte() - if z.err != nil { - break loop - } - if c != '/' { - z.raw.end-- - continue loop - } - if z.readRawEndTag() || z.err != nil { - break loop - } - } - z.data.end = z.raw.end - // A textarea's or title's RCDATA can contain escaped entities. - z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title" - z.rawTag = "" -} - -// readRawEndTag attempts to read a tag like "</foo>", where "foo" is z.rawTag. -// If it succeeds, it backs up the input position to reconsume the tag and -// returns true. Otherwise it returns false. The opening "</" has already been -// consumed. -func (z *Tokenizer) readRawEndTag() bool { - for i := 0; i < len(z.rawTag); i++ { - c := z.readByte() - if z.err != nil { - return false - } - if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') { - z.raw.end-- - return false - } - } - c := z.readByte() - if z.err != nil { - return false - } - switch c { - case ' ', '\n', '\r', '\t', '\f', '/', '>': - // The 3 is 2 for the leading "</" plus 1 for the trailing character c. - z.raw.end -= 3 + len(z.rawTag) - return true - } - z.raw.end-- - return false -} - -// readScript reads until the next </script> tag, following the byzantine -// rules for escaping/hiding the closing tag. -func (z *Tokenizer) readScript() { - defer func() { - z.data.end = z.raw.end - }() - var c byte - -scriptData: - c = z.readByte() - if z.err != nil { - return - } - if c == '<' { - goto scriptDataLessThanSign - } - goto scriptData - -scriptDataLessThanSign: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '/': - goto scriptDataEndTagOpen - case '!': - goto scriptDataEscapeStart - } - z.raw.end-- - goto scriptData - -scriptDataEndTagOpen: - if z.readRawEndTag() || z.err != nil { - return - } - goto scriptData - -scriptDataEscapeStart: - c = z.readByte() - if z.err != nil { - return - } - if c == '-' { - goto scriptDataEscapeStartDash - } - z.raw.end-- - goto scriptData - -scriptDataEscapeStartDash: - c = z.readByte() - if z.err != nil { - return - } - if c == '-' { - goto scriptDataEscapedDashDash - } - z.raw.end-- - goto scriptData - -scriptDataEscaped: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataEscapedDash - case '<': - goto scriptDataEscapedLessThanSign - } - goto scriptDataEscaped - -scriptDataEscapedDash: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataEscapedDashDash - case '<': - goto scriptDataEscapedLessThanSign - } - goto scriptDataEscaped - -scriptDataEscapedDashDash: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataEscapedDashDash - case '<': - goto scriptDataEscapedLessThanSign - case '>': - goto scriptData - } - goto scriptDataEscaped - -scriptDataEscapedLessThanSign: - c = z.readByte() - if z.err != nil { - return - } - if c == '/' { - goto scriptDataEscapedEndTagOpen - } - if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' { - goto scriptDataDoubleEscapeStart - } - z.raw.end-- - goto scriptData - -scriptDataEscapedEndTagOpen: - if z.readRawEndTag() || z.err != nil { - return - } - goto scriptDataEscaped - -scriptDataDoubleEscapeStart: - z.raw.end-- - for i := 0; i < len("script"); i++ { - c = z.readByte() - if z.err != nil { - return - } - if c != "script"[i] && c != "SCRIPT"[i] { - z.raw.end-- - goto scriptDataEscaped - } - } - c = z.readByte() - if z.err != nil { - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f', '/', '>': - goto scriptDataDoubleEscaped - } - z.raw.end-- - goto scriptDataEscaped - -scriptDataDoubleEscaped: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataDoubleEscapedDash - case '<': - goto scriptDataDoubleEscapedLessThanSign - } - goto scriptDataDoubleEscaped - -scriptDataDoubleEscapedDash: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataDoubleEscapedDashDash - case '<': - goto scriptDataDoubleEscapedLessThanSign - } - goto scriptDataDoubleEscaped - -scriptDataDoubleEscapedDashDash: - c = z.readByte() - if z.err != nil { - return - } - switch c { - case '-': - goto scriptDataDoubleEscapedDashDash - case '<': - goto scriptDataDoubleEscapedLessThanSign - case '>': - goto scriptData - } - goto scriptDataDoubleEscaped - -scriptDataDoubleEscapedLessThanSign: - c = z.readByte() - if z.err != nil { - return - } - if c == '/' { - goto scriptDataDoubleEscapeEnd - } - z.raw.end-- - goto scriptDataDoubleEscaped - -scriptDataDoubleEscapeEnd: - if z.readRawEndTag() { - z.raw.end += len("</script>") - goto scriptDataEscaped - } - if z.err != nil { - return - } - goto scriptDataDoubleEscaped -} - -// readComment reads the next comment token starting with "<!--". The opening -// "<!--" has already been consumed. -func (z *Tokenizer) readComment() { - // When modifying this function, consider manually increasing the - // maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more. - // That increase should only be temporary, not committed, as it - // exponentially affects the test running time. - - z.data.start = z.raw.end - defer func() { - if z.data.end < z.data.start { - // It's a comment with no data, like <!-->. - z.data.end = z.data.start - } - }() - - var dashCount int - beginning := true - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.calculateAbruptCommentDataEnd() - return - } - switch c { - case '-': - dashCount++ - continue - case '>': - if dashCount >= 2 || beginning { - z.data.end = z.raw.end - len("-->") - return - } - case '!': - if dashCount >= 2 { - c = z.readByte() - if z.err != nil { - z.data.end = z.calculateAbruptCommentDataEnd() - return - } else if c == '>' { - z.data.end = z.raw.end - len("--!>") - return - } else if c == '-' { - dashCount = 1 - beginning = false - continue - } - } - } - dashCount = 0 - beginning = false - } -} - -func (z *Tokenizer) calculateAbruptCommentDataEnd() int { - raw := z.Raw() - const prefixLen = len("<!--") - if len(raw) >= prefixLen { - raw = raw[prefixLen:] - if hasSuffix(raw, "--!") { - return z.raw.end - 3 - } else if hasSuffix(raw, "--") { - return z.raw.end - 2 - } else if hasSuffix(raw, "-") { - return z.raw.end - 1 - } - } - return z.raw.end -} - -func hasSuffix(b []byte, suffix string) bool { - if len(b) < len(suffix) { - return false - } - b = b[len(b)-len(suffix):] - for i := range b { - if b[i] != suffix[i] { - return false - } - } - return true -} - -// readUntilCloseAngle reads until the next ">". -func (z *Tokenizer) readUntilCloseAngle() { - z.data.start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return - } - if c == '>' { - z.data.end = z.raw.end - len(">") - return - } - } -} - -// readMarkupDeclaration reads the next token starting with "<!". It might be -// a "<!--comment-->", a "<!DOCTYPE foo>", a "<![CDATA[section]]>" or -// "<!a bogus comment". The opening "<!" has already been consumed. -func (z *Tokenizer) readMarkupDeclaration() TokenType { - z.data.start = z.raw.end - var c [2]byte - for i := 0; i < 2; i++ { - c[i] = z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return CommentToken - } - } - if c[0] == '-' && c[1] == '-' { - z.readComment() - return CommentToken - } - z.raw.end -= 2 - if z.readDoctype() { - return DoctypeToken - } - if z.allowCDATA && z.readCDATA() { - z.convertNUL = true - return TextToken - } - // It's a bogus comment. - z.readUntilCloseAngle() - return CommentToken -} - -// readDoctype attempts to read a doctype declaration and returns true if -// successful. The opening "<!" has already been consumed. -func (z *Tokenizer) readDoctype() bool { - const s = "DOCTYPE" - for i := 0; i < len(s); i++ { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return false - } - if c != s[i] && c != s[i]+('a'-'A') { - // Back up to read the fragment of "DOCTYPE" again. - z.raw.end = z.data.start - return false - } - } - if z.skipWhiteSpace(); z.err != nil { - z.data.start = z.raw.end - z.data.end = z.raw.end - return true - } - z.readUntilCloseAngle() - return true -} - -// readCDATA attempts to read a CDATA section and returns true if -// successful. The opening "<!" has already been consumed. -func (z *Tokenizer) readCDATA() bool { - const s = "[CDATA[" - for i := 0; i < len(s); i++ { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return false - } - if c != s[i] { - // Back up to read the fragment of "[CDATA[" again. - z.raw.end = z.data.start - return false - } - } - z.data.start = z.raw.end - brackets := 0 - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return true - } - switch c { - case ']': - brackets++ - case '>': - if brackets >= 2 { - z.data.end = z.raw.end - len("]]>") - return true - } - brackets = 0 - default: - brackets = 0 - } - } -} - -// startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end] -// case-insensitively matches any element of ss. -func (z *Tokenizer) startTagIn(ss ...string) bool { -loop: - for _, s := range ss { - if z.data.end-z.data.start != len(s) { - continue loop - } - for i := 0; i < len(s); i++ { - c := z.buf[z.data.start+i] - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - if c != s[i] { - continue loop - } - } - return true - } - return false -} - -// readStartTag reads the next start tag token. The opening "<a" has already -// been consumed, where 'a' means anything in [A-Za-z]. -func (z *Tokenizer) readStartTag() TokenType { - z.readTag(true) - if z.err != nil { - return ErrorToken - } - // Several tags flag the tokenizer's next token as raw. - c, raw := z.buf[z.data.start], false - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - switch c { - case 'i': - raw = z.startTagIn("iframe") - case 'n': - raw = z.startTagIn("noembed", "noframes", "noscript") - case 'p': - raw = z.startTagIn("plaintext") - case 's': - raw = z.startTagIn("script", "style") - case 't': - raw = z.startTagIn("textarea", "title") - case 'x': - raw = z.startTagIn("xmp") - } - if raw { - z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end])) - } - // Look for a self-closing token like "<br/>". - if z.err == nil && z.buf[z.raw.end-2] == '/' { - return SelfClosingTagToken - } - return StartTagToken -} - -// readTag reads the next tag token and its attributes. If saveAttr, those -// attributes are saved in z.attr, otherwise z.attr is set to an empty slice. -// The opening "<a" or "</a" has already been consumed, where 'a' means anything -// in [A-Za-z]. -func (z *Tokenizer) readTag(saveAttr bool) { - z.attr = z.attr[:0] - z.nAttrReturned = 0 - // Read the tag name and attribute key/value pairs. - z.readTagName() - if z.skipWhiteSpace(); z.err != nil { - return - } - for { - c := z.readByte() - if z.err != nil || c == '>' { - break - } - z.raw.end-- - z.readTagAttrKey() - z.readTagAttrVal() - // Save pendingAttr if saveAttr and that attribute has a non-empty key. - if saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end { - z.attr = append(z.attr, z.pendingAttr) - } - if z.skipWhiteSpace(); z.err != nil { - break - } - } -} - -// readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end) -// is positioned such that the first byte of the tag name (the "d" in "<div") -// has already been consumed. -func (z *Tokenizer) readTagName() { - z.data.start = z.raw.end - 1 - for { - c := z.readByte() - if z.err != nil { - z.data.end = z.raw.end - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - z.data.end = z.raw.end - 1 - return - case '/', '>': - z.raw.end-- - z.data.end = z.raw.end - return - } - } -} - -// readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>". -// Precondition: z.err == nil. -func (z *Tokenizer) readTagAttrKey() { - z.pendingAttr[0].start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[0].end = z.raw.end - return - } - switch c { - case '=': - if z.pendingAttr[0].start+1 == z.raw.end { - // WHATWG 13.2.5.32, if we see an equals sign before the attribute name - // begins, we treat it as a character in the attribute name and continue. - continue - } - fallthrough - case ' ', '\n', '\r', '\t', '\f', '/', '>': - // WHATWG 13.2.5.33 Attribute name state - // We need to reconsume the char in the after attribute name state to support the / character - z.raw.end-- - z.pendingAttr[0].end = z.raw.end - return - } - } -} - -// readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>". -func (z *Tokenizer) readTagAttrVal() { - z.pendingAttr[1].start = z.raw.end - z.pendingAttr[1].end = z.raw.end - if z.skipWhiteSpace(); z.err != nil { - return - } - c := z.readByte() - if z.err != nil { - return - } - if c == '/' { - // WHATWG 13.2.5.34 After attribute name state - // U+002F SOLIDUS (/) - Switch to the self-closing start tag state. - return - } - if c != '=' { - z.raw.end-- - return - } - if z.skipWhiteSpace(); z.err != nil { - return - } - quote := z.readByte() - if z.err != nil { - return - } - switch quote { - case '>': - z.raw.end-- - return - - case '\'', '"': - z.pendingAttr[1].start = z.raw.end - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[1].end = z.raw.end - return - } - if c == quote { - z.pendingAttr[1].end = z.raw.end - 1 - return - } - } - - default: - z.pendingAttr[1].start = z.raw.end - 1 - for { - c := z.readByte() - if z.err != nil { - z.pendingAttr[1].end = z.raw.end - return - } - switch c { - case ' ', '\n', '\r', '\t', '\f': - z.pendingAttr[1].end = z.raw.end - 1 - return - case '>': - z.raw.end-- - z.pendingAttr[1].end = z.raw.end - return - } - } - } -} - -// Next scans the next token and returns its type. -func (z *Tokenizer) Next() TokenType { - z.raw.start = z.raw.end - z.data.start = z.raw.end - z.data.end = z.raw.end - if z.err != nil { - z.tt = ErrorToken - return z.tt - } - if z.rawTag != "" { - if z.rawTag == "plaintext" { - // Read everything up to EOF. - for z.err == nil { - z.readByte() - } - z.data.end = z.raw.end - z.textIsRaw = true - } else { - z.readRawOrRCDATA() - } - if z.data.end > z.data.start { - z.tt = TextToken - z.convertNUL = true - return z.tt - } - } - z.textIsRaw = false - z.convertNUL = false - -loop: - for { - c := z.readByte() - if z.err != nil { - break loop - } - if c != '<' { - continue loop - } - - // Check if the '<' we have just read is part of a tag, comment - // or doctype. If not, it's part of the accumulated text token. - c = z.readByte() - if z.err != nil { - break loop - } - var tokenType TokenType - switch { - case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z': - tokenType = StartTagToken - case c == '/': - tokenType = EndTagToken - case c == '!' || c == '?': - // We use CommentToken to mean any of "<!--actual comments-->", - // "<!DOCTYPE declarations>" and "<?xml processing instructions?>". - tokenType = CommentToken - default: - // Reconsume the current character. - z.raw.end-- - continue - } - - // We have a non-text token, but we might have accumulated some text - // before that. If so, we return the text first, and return the non- - // text token on the subsequent call to Next. - if x := z.raw.end - len("<a"); z.raw.start < x { - z.raw.end = x - z.data.end = x - z.tt = TextToken - return z.tt - } - switch tokenType { - case StartTagToken: - z.tt = z.readStartTag() - return z.tt - case EndTagToken: - c = z.readByte() - if z.err != nil { - break loop - } - if c == '>' { - // "</>" does not generate a token at all. Generate an empty comment - // to allow passthrough clients to pick up the data using Raw. - // Reset the tokenizer state and start again. - z.tt = CommentToken - return z.tt - } - if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' { - z.readTag(false) - if z.err != nil { - z.tt = ErrorToken - } else { - z.tt = EndTagToken - } - return z.tt - } - z.raw.end-- - z.readUntilCloseAngle() - z.tt = CommentToken - return z.tt - case CommentToken: - if c == '!' { - z.tt = z.readMarkupDeclaration() - return z.tt - } - z.raw.end-- - z.readUntilCloseAngle() - z.tt = CommentToken - return z.tt - } - } - if z.raw.start < z.raw.end { - z.data.end = z.raw.end - z.tt = TextToken - return z.tt - } - z.tt = ErrorToken - return z.tt -} - -// Raw returns the unmodified text of the current token. Calling Next, Token, -// Text, TagName or TagAttr may change the contents of the returned slice. -// -// The token stream's raw bytes partition the byte stream (up until an -// ErrorToken). There are no overlaps or gaps between two consecutive token's -// raw bytes. One implication is that the byte offset of the current token is -// the sum of the lengths of all previous tokens' raw bytes. -func (z *Tokenizer) Raw() []byte { - return z.buf[z.raw.start:z.raw.end] -} - -// convertNewlines converts "\r" and "\r\n" in s to "\n". -// The conversion happens in place, but the resulting slice may be shorter. -func convertNewlines(s []byte) []byte { - for i, c := range s { - if c != '\r' { - continue - } - - src := i + 1 - if src >= len(s) || s[src] != '\n' { - s[i] = '\n' - continue - } - - dst := i - for src < len(s) { - if s[src] == '\r' { - if src+1 < len(s) && s[src+1] == '\n' { - src++ - } - s[dst] = '\n' - } else { - s[dst] = s[src] - } - src++ - dst++ - } - return s[:dst] - } - return s -} - -var ( - nul = []byte("\x00") - replacement = []byte("\ufffd") -) - -// Text returns the unescaped text of a text, comment or doctype token. The -// contents of the returned slice may change on the next call to Next. -func (z *Tokenizer) Text() []byte { - switch z.tt { - case TextToken, CommentToken, DoctypeToken: - s := z.buf[z.data.start:z.data.end] - z.data.start = z.raw.end - z.data.end = z.raw.end - s = convertNewlines(s) - if (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) { - s = bytes.Replace(s, nul, replacement, -1) - } - if !z.textIsRaw { - s = unescape(s, false) - } - return s - } - return nil -} - -// TagName returns the lower-cased name of a tag token (the `img` out of -// `<IMG SRC="foo">`) and whether the tag has attributes. -// The contents of the returned slice may change on the next call to Next. -func (z *Tokenizer) TagName() (name []byte, hasAttr bool) { - if z.data.start < z.data.end { - switch z.tt { - case StartTagToken, EndTagToken, SelfClosingTagToken: - s := z.buf[z.data.start:z.data.end] - z.data.start = z.raw.end - z.data.end = z.raw.end - return lower(s), z.nAttrReturned < len(z.attr) - } - } - return nil, false -} - -// TagAttr returns the lower-cased key and unescaped value of the next unparsed -// attribute for the current tag token and whether there are more attributes. -// The contents of the returned slices may change on the next call to Next. -func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) { - if z.nAttrReturned < len(z.attr) { - switch z.tt { - case StartTagToken, SelfClosingTagToken: - x := z.attr[z.nAttrReturned] - z.nAttrReturned++ - key = z.buf[x[0].start:x[0].end] - val = z.buf[x[1].start:x[1].end] - return lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr) - } - } - return nil, nil, false -} - -// Token returns the current Token. The result's Data and Attr values remain -// valid after subsequent Next calls. -func (z *Tokenizer) Token() Token { - t := Token{Type: z.tt} - switch z.tt { - case TextToken, CommentToken, DoctypeToken: - t.Data = string(z.Text()) - case StartTagToken, SelfClosingTagToken, EndTagToken: - name, moreAttr := z.TagName() - for moreAttr { - var key, val []byte - key, val, moreAttr = z.TagAttr() - t.Attr = append(t.Attr, Attribute{"", atom.String(key), string(val)}) - } - if a := atom.Lookup(name); a != 0 { - t.DataAtom, t.Data = a, a.String() - } else { - t.DataAtom, t.Data = 0, string(name) - } - } - return t -} - -// SetMaxBuf sets a limit on the amount of data buffered during tokenization. -// A value of 0 means unlimited. -func (z *Tokenizer) SetMaxBuf(n int) { - z.maxBuf = n -} - -// NewTokenizer returns a new HTML Tokenizer for the given Reader. -// The input is assumed to be UTF-8 encoded. -func NewTokenizer(r io.Reader) *Tokenizer { - return NewTokenizerFragment(r, "") -} - -// NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for -// tokenizing an existing element's InnerHTML fragment. contextTag is that -// element's tag, such as "div" or "iframe". -// -// For example, how the InnerHTML "a<b" is tokenized depends on whether it is -// for a <p> tag or a <script> tag. -// -// The input is assumed to be UTF-8 encoded. -func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer { - z := &Tokenizer{ - r: r, - buf: make([]byte, 0, 4096), - } - if contextTag != "" { - switch s := strings.ToLower(contextTag); s { - case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp": - z.rawTag = s - } - } - return z -} diff --git a/vendor/golang.org/x/net/publicsuffix/data/children b/vendor/golang.org/x/net/publicsuffix/data/children deleted file mode 100644 index 08261bffd196fd6942b4cebb5ff06e0ffe53808d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2976 zcmWO8`9qWS9{_Nl=d<VYyypYx*HD2R$LE2KERVqQzETl=2C0a^6dN1h1)7?PnYR); zAj7n62y6^dD^Qda?<|4gvvGrffg8j7D(^h<>kqI0;nk~GuU>uM@qcI1JG0(VzeBB> z_6N0UM-8>A@-p>RrAY0X)<o&jKcF(JhEmx$l={AE6qSP~QhU<FsobzgDmOiq%B@;X z6@;yz3eq=FX1tLyhi#|K={u-moK6*o>8av$LqKtrG2viXZot8+JnGl50;&X;1(bx9 zQ%BN&qmERar^@gJsx0ghbv&$+IuT~4D#F^SiYg~{Cd@^h3%eh1F8yi1xvFQ>dHkHJ zPJcmJt9_}<EKk|1gQ+HVB-K1!NwrkZrW|Yxjizs=k=32<ozaK>U-)3UpLH7T2?FgI zK8yCum`(SGIrM;xx%2?5iuTHwPs^+t+85Rm-|#frKVu#7w{E2aU>h9}zMT%t*r5ru z=8&N9JtQb&Fa3dapJp%|q(2NlM2A2L2?@87kc=7<V!cd4!$lIBVJD&1T6zT3(IYbI z=@HgO@<~P$8JW>aMum5g(HTy9wDkr(25you8MnyTj63vL>jN?_;~_oH`iP7Ve@st+ zr}RX4LC>_lrUmJTL@E7<C}#{O%9@W!gfx_%Q!|2&k_vRx3?&`4GlGt)iKHubeoj|h z?k1HpU8GX%PpY_qq)O*SsyQE0Ees;nqKsHYKT^Z-q(&D=YD75^IRz1gkBBG^AvSIp zvFU~rn;1guLMW-#eL`x*F{DlyOX_svNxd+E)axdb2JSP`AWS8V+%(cCgp)>b25I61 z(kv)Rvu-wN;pUJQVJ>OaMUz%hMXm_*$rW8ZY2y}>HbG6=#01hVXi2*+iF9zu<SMtA zToqEtRWX(P#jPNn!k45|w}y0aUz08&ja<{MBiF=@#35`V4&4^w<hBy0u$?%?9i&_L z9qAT#5tpDNE?pMgqst~eVh*`3>><~6d&y01AGs;)CpX1Ba*Hb<w{#|QODrU}1q->u z9UymvL*$Nln7+&XLf_T>O701zn)_TCxvwjy{}E4+$6_^k!qt%{LOppRHjt-66M3p@ zAy36t@=Ulwp6S}jGqHm_=dRMvg}=y4u9LhJZjqO|+vKHqhknJ~C9i~g<dyC|c_ls| zuepchwfHxA!#$?o2v6uY;#2xR-E;aa_Y(CIUn5$H5VA>;#MTEfneQRU9Dt;5gqJD< zQEyui&nZ9Txy&KFo7+$%vkm8c-PR)C%rxX{`-b;(ThIF`zvcZhHy}UTMkIIJ#LJa> zB+oP;xy^`zZMkT$n+1K8c?b=2JBEfS&uWKdo<pH-=TWHA#)oFwQK+pJeX6WOpJukB zQML{=+RcT=*m}@dx4USp@*WzmypJYkKIJFc{zH@8-tv<odZ9^n3QcxLXmW%EO|dil zRQEpo)U3W}s=XhY9`POux69D%2p-M0PeXIur=uu)IEs$=97ShEqj~muC^lj~Qn@Ff z`B{t6f{5j4q5Deog*^?a-8Ugk)@GELwF@Oj<e=m%14^+Q(ekY0Xl2A{v@)v_t#+?M zYa?uEQ$#1)YJY>ad2nc3q#N4q;f~Th`l9bVywFaML1<@oAlmC8N5;sx$e6tZ{hGa$ zFY!3WmqeEHCE366CABB`Qje2-X=DXontci#jXcdC&Ay0^*8YLYJpSa%A}{gBA}jf0 zwKe?lNRdCDZRg89YWecWdcHin0iEz@L=};3=yar0Lb7iMlKNeNd|zE4KPxkk-<>51 z+?_3v@6M4V)*B@&8}>-j8mc85XS*bs4gX4V=7dW2^_w9%&=@N@mh+S3Y`@Er%6@-K z#3)b6gQg*pmr-XJ_PyH-*F1>voI8y1@|?}cJk?C#k6$GPHs>S-dG1LHn)@R&#B(nb z(p=7r`B7v(^Sr~%><`SWmS9G^cM7wle|FN6=ptrS%K>Ihv>3EzZws@re=D=K<pr~I z9>?ry4Ps35K4*$sw=fk0a)T=NIf5!$yMs;*a3!6Z*OPQ=-*x7~yc<mAfHzF-Ku@OS z$|$B|U<`9BW-)X3Co}WUPo>O@D^)@N#<(zb<vM2CSnSp|FxlNJ6!(c8f&1vk<9_-H z*fVw}_R`PB-g*sw-zymteG2BicHzLbOdQm<2P@isk_USg;K6zm9^Cdb{xJ3z{E@x{ z4~;#Bhqj%<!}MqHu(tC!RDS`7w$<WKyz1~seKQ{A)rCjt9e7MzHy-bG7f;YX!4ukE z;)$`Z@Fe{kEX2`RFbt6k?L)EBdl**64abp&kMS(S7(6HLGaMB+1J5-?;ArnTI67`F zj&6^}F@_i%YgmY5+cj8a(Bg&OOR>5=4Qt}I;Y7nuoNUO!OWTcjS==x3Wrh;@vi4G( z5_bgeZ7-AW^NEq~Q^jJvDo(C9CSZMs1{+jbxzQ&{p6jz%o@-2z?^i9y`;9B*`#V<2 z^Hr<m`5o)z1*-M(0^<g`$!DY7q}q&4#w~JF$5w3i*(Nu4Y{!MF@36(V6I(j6ak1)q z{Iib%|ExNMOF9nYqpFi^vg#t6oM&K@JB^A(vRrmi{C>rvygYVMXTD-_UIDwfvyfdP zvnZCt7qLt74k(t&irJ;{huEcghZW26erA_-ma-|bBWz0iQ8p#7Op(%gj7^mtXH(<L z+0?w>*woGwiskVq+2whs*yWw4*%h)giWTu^*%f)`6kp2DE53~Xon0ln$gY-I*|jno zyEgtWc3oa4`%U}}_M5!h?E3gS?E1X>tUmsMLZ6?YF!*W|hJ}d=Lw*u#^i5_Db}d#M z$}dnH>MB$m_O&PuFDz0V&Og8&?kZ+~%|FPNb{%7n_?}_Qe9y9FU6<J7UDa&4Zyj5{ zu%0c?Z(u8Y8`+*N2m7dC5BuoaW%ltGBKxGk&OW);$iDDvVqX<F6tAv5VBZuxgkFBn z;N5tDR#PDHmjYJz1y=11tVsr}!xuP{AGoQ9f`{Yd;6DCi!P|dau(vu9yiG~qV@eM8 zaV!OydKvinuYmynZ-J<{18>?1ydxU|)!##)=?9RTav(%)3=T2XK#1cqjBtoB($o|@ z%G3p;)!i`0|2j-i-+~FIe_^8IB}{g_g(+qhrZ_!ds<{t@nft*Erw`0DD<H-^7-F0Y zAuiwxh)YNWl`{$E2P}j6&J<W+UI7c7s~|pMHN>0OK)my7PzS69t#dOZ27C|60lQ&| zSq~}B;^5SP<B*zA4yn%HV0FStSZ%h$YG*Bc6;KCh3H7kf>4XjDo3O$83^qHT!#;vQ zuZe|xk^rXev|zJlTd=usN3gj&9SXa@gCdO%P89wCCp8^VK{}zL+X1HvU2s}+1J01! zaHjhnoGp9^=QNMtJb4;?Uh@JjkbmJq_iOmQ@GV^AX}IW;z#kSC{?zt{OT0T=a`lBu z%X?6z9RSt5H&nX@fz{#%HCh5TJ_u~C;b6CfLap{wsN+XNoogJ_YbQbjKN%WaQ=!o^ z9h$T=p_z|>X4foeu|z?ub{<^e<KT*G0km1ZfOcL3?XE=V&@O_j{1Uk8N`b#DE1*-m z3cC0;(B(>lYnJuk&~5~WWeYg9TcO*v16;fgdiYGZ!S99}T0Pv=8sM&_1n#*?rM)c2 zrF0Q3rF(iyQ6eWrMeb6j$3u#H21+6EeW|o3K*}X5r0zXKq<sQMO8XX#llJZT?1TP^ WQ>6WiqNQGm^Q7L12~wY;r2hjALVp1O diff --git a/vendor/golang.org/x/net/publicsuffix/data/nodes b/vendor/golang.org/x/net/publicsuffix/data/nodes deleted file mode 100644 index 1dae6ede8f292889cb4252aa473312fea1bac46a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46610 zcmaf*b)1#e_W$?kNoIy-2m?_O6)Zwjp7Wf}IcLsvASM<fimeFKGlXKdqJrIujne@` zDF$|4JFj)k-+S%h>v;X%`~Cg1UVHCVpS5;A`+3e$DplxF$`ke~<zHwM;#8{i{syIr z4(XuUQ>RpAr%S2WEosVT%r}*7N30Q%5BeZw8-;9A%2-sZly|o-Wj9haN+o7c4W@j` z-ufohs(Wn85j+Z0{<rFtqitzBr4Z)JKKCo9u?Hf>XXB$VuUk1=XP8Qbe-L~3gT;Gb z8m6wI<oVRAT*fdfrF(jma!&+g*-&73*7f4@m`;d=wt{~&C|7GXR>~KO$n+ege9N{d z6^I~Gb+1FI)NNf##n+%~)I!Qz14<<ge0cBbP-(_#?UdHrl!{DlQE9Dvf+ch&YROSG zN>#tsr!tHj%$xJD7h5YX$HOgM*r_tzZxN+265WEQ>?*T$B65Kzy(%kwJB(nkMP;>S zV&3;6NsL?-R5`8FFlszSM82JNrRF+y343LKP%7U5Dx=0L#D~ix8`aR($!Pem^{8RS zv6%O+v#DXN`&nuGtzHc`3`(&XXcX^{Mj+xs<a)vnUWs|5vlAkH9=j(*BF<P2d65(s zof(8Y-2~&2CN=!kybKWh4uZLp8q^5mWE>UE>>&K{WTX0!I-so}%A#2|W!;f(RU=x5 z;<xM{U4(T7m;=oqsB|~dJ=ahT7E-O+11v^Ktr`_!2#k7hWV;$|R@4wyMS~jMsxVOX zMm<I+fUmmSPR5H+OBNAF_4gfWjBkxcjcJ|TPVcX#&AmE8Y?naXK7`#jri1DnugW*V z7<G4n&)w6Z^4l8G2pyB5#u~R#^1T7b>U~=1qvtU1{!-+=$AD??5Yox`TLn@x3oK?n z=*`L9WOrdLr4+d`H+877?Xxgt&gvz$Ye=H`0r@k(_d|XlYo6Vk)cCeJRyD!=)ucMI zOHJq)*{gQ*{2>}MaanMZV1CA`cI%klu68$0u2Fk<W@6Msp7&^-PpQy~%hdM(GHwD| z;+Q%z^cLQXr!bJ%7gU~?u@WCgHVSG5!BIFjk78bW-}NvA)>BQL3D-XxIsa^e@y{l< z<ePPB&k`$^eG?%5Qz3ys10``8%oC7Xn=l{6QD|NVopLK8#jkd#iN^dIwU@UWeExRq zc?669&Q7&g`(i77{szL;%W3lw%p_x+3BD__?B0Uksx1L5R{+Qu=Vhqu+l8*Qnb{1- z<XY^Noa<Ek7<<<cLIDw#wsb31F&d4O1p}#lQA_Ph)jiWLBu(wpnpUIsHRht>*$ZLg zThxlbN2Em7gOdHyAlEjjeOu?&t3%p;K`j(;sYBgsO?7D7L+xrt>!Nm0mDj6T{XM7^ zXJDoLHoO^&deq@Y2N4xqEY*%)wa7CEq@G|S<Yd~4?UJS?PDq20t}Mvw(g9XPyc6gx z@5COpsB>?Cdk+?Jbby(1op9@M<gM=^FCV(-fHOPPndUl){B2>pEml6?1o;&apQ|2{ zQ47h!kuS@o&TL&`rIZ_1XQfi6I;-;yt6J>cSfdtq<ViO2&?p?*sm^h~O*Qaj7s*~g zFd?ghQk&%O!A`p8A?$^=;L?4C2Q2M%lqx#Zc}4{D?)f4&ACbbZd`d;<QHo9?#qkf& zEjzE5T-^jCltCimwOENCOfaGS>ePjO`!%SGjEIdMd;k(%fN;f&b?RdG_e2!?#7|-` zXV#Wo3#0lTA%9@h^dsy(#Z*ho4y#(y<~3>i!=^4VexT%;ib&{{2HKuOE_M#ystYKU zj0(c-153%64n+EhvM`7b-@Z=54^s-<Ex~NVRGYG@rJ)Xljh}34nK7ME&0-JLo9orG zo?AOqO>b4Ysx=<2QFZP@{DzkxY?}BDkHS=PK5&!s=^lT31V^uQ;kUC{SzCu9TzoWK z<50V*H!L;Go_QYC5Pr5>HMFu=s@RiFs?k`7T;S#m)nxqUQO(Ai-PqfLT0tv5%C?cA zvYEtI@LmSwIf5=}@-iXb2&v}RWk2#svJF`*!)B*y32%TK-Vng(bV$KAGz#7Yb8%)9 z!ZKKWr@K^3`>7!C?MGXr0ukQ>LLLRZ@7aJ_5k9$@((`qY_vsnmmjLp8E7flsA^)m{ z{Nhq8T1T16+U;m3{KJ3|eFm<74s!m4l&X6mCwkOM^H8ER?-#jqK^i>OPBzX8Qk7lJ zUsn&@v1mj#fHdiAq3W$wD_cKC&GQW+ftP?0%;<n*B3HDbk1;ey4D3x?NOn#?9jd~+ zW7!=8eYnC8$S3h;gs|fK8adzB$i)(Piy!U8XsnKOvL2}561ahT2*KP94c{885W8CC z&a6?ZI`_4yOAT8MZL4dsXG6`f0i*nx2E3J9)unA^?Qmyzs>@oxv#Qm`9#o6(2TSq& z4&=VWNBJM!YIUmv%SAu<$W=F{{5Jry`e#JU3K+$|bx8>|PX;hj(`@Q;<4jD2pA2CB zI~cz2NJQA(Nv@u-Vdb+Xb$Ndm)o7QXZ|MNgD-bi@p{_`LZIVu=&=sxyl!}f@V`)y& zmsPm{uYLtog=M&`DhsG9ecP$JeeLSXu2*Z+RYr9U+y~L{#$hCGs-q;r-m8c_T<fKD zo~f?t_{2(V$59R6;(~1MVZ{D{aP>Zf;EBNSM1tyS|14bkXVJBhB-}_bmi>N8=8pgm zTn*Rv1HBrJW4@Br;_9AlSdPhd>~3pU*LXgl8a~X4-wy>9<4;xekd5ekA+>;vUM2=^ zlG5EEjXn`n*R(!Yr>^zS$EfEtOnFYjTXX}}!c%=z%?@>Kdp4mKulB0zjOjJ%y0!)F z_&vi9$ScLl+Xx$Bf+=4PTw_fw<7K-|U2h!Pu5M@zfU5KXiQ`ZkNDp<W8;!fI>Lz23 ziJYtv#vCub@KL9bjp}B@jyKP>B76&LyV=yMZr&sl+puHVeOm|4&m|(?=gn{#led@) zX)~XQF<6H+kk}=e>Xz1g{Kl)B)ZOhxR&|e|@D}!Vse4*8FdrD-gS}U=SN2tty4P^g zW=ykV<s(cL|3nT-dO;PMSF7%CJ+hs2&aA_4h69pIyrI<|O2cZEb#p$JWBF3u%cdSM zauN2+fD3KIN^pn`-8CKRfv!8PV7`-{i5-Py_bDLtzw1KeF+WLM;8mLqg|6pRHp5Up zXHheJDU3U6)s}ckyRvrKtZGZ^R7Aqp0kZr&0QoM!uTg=cz;;OJ;{e|7?o?Y%R_d*t zJ4_b0Qo6A~R+`xS2DQ!eJup0Skc-{rQQKONs!`iZAFHMM2AJa|>1z9yM@{vDcN>np z+q%>X-Dg|Xi>+^Bs)T8vN<U&9_bsc3Tb-_UxF--yxeUyh*$CVZab)I#s^Ul|W9VfU zp;~M(=5(u<+<jK{Qd>?9Q;h+l=BAO(L=zg7*$Df-25Dd%Fha{=B*%Ky%ZBV~@p*L^ z{n?Juxtpa#?|VySj4yyuxCJ%$-r{JHm)Nf9Q7`wOgRtjEhkC`mFCyii`PC~O-w}~J z2WUZgaPsX1!?#yG_BP|(xVT=uYIr&rJ|ztpt?Z(EGO=t7$EY`eMx-!Hy}CKCM(s2V zNb4}58N;w=4D+hj+_F){yiNFcu@lP&`_*f08%*`OQCFj0Z<Q$&xU(B?@>t-0&rjr) zI5K{=sW-w!VS3f=fP9D}Pa0fLS_r?F6P9sYFV(d&+Lt-07NXJFjlI<4LG`9Fr$)Wm znul}mYaQzCg5SVgcrZT7S7V@XCRmID3>e3F)Z2X#7^c~)-tl~o0pEdEtlWl1#l}9W zbp%r&<G$c+J0SN4OX#%>_0Ee9Q@!i{5{<}GM9SyzJk#2VOF!%ByKRYf^`4P1)qCB4 zpyvMrknRVu5^6*^qK_$yI>09f|I|97jLYdi{sVFawjjg-!+TL3!Y?qm3J$Reaj5r= zB7Bron(F<Ip;q;Q5d^O3wW$w!H^T^S#(aU_qdsiQhEZ@K_F}W^)j!-kPyeH>*Q!2B zO*7R;t+Q&>$C2kv^>J&U27GU$W;FTLCjrSuC8sY{HI<UT*`q#fGcjdYFz=mjQ=gfO zz~a4=UN9HA)Q`Tc(jUJ;3hF)T$F2258T(ihda&Y)di9gB93RH=TJ=+_4J&5677<pi zf3;>%H98PZ-Ox#fhDt|eLp*-M_gv>!Kbuag`nmNs<igj%NM>J-(Z$`U{fw2w10ap> z*+uSGv|BRWo7&;NLNIO~wN&J6k0rD9+#2%o&kjqLN49A9>2S-xPNQq1_=xMH_)x4A z4`q?5I*?v4N7PxejXZ>71zncxwvCwbthN#KS9Fx==&%fFcYq)whedO39az3;u;c`9 za9VP@?xd}}B>=HwD)JE;$q5J>C)g|_Ua;3%Mj9j9EhAe$BIwYtbW;2ZVHJ<C6O25z z%pLEuj50=afpjkq+$OtaRBMzFJfC|kqs>#=ad}F&vbJ|xEu-825JoP+c;u|?`2oM) zS=jR$`1Kl@mNAKuMCmo1n3{->@M^zh%(mT{DE(Fo<4WLquk57yI^5`40ZV?o%wfsj zT3urq>ps?M8D~BNme>lf5JqA$1<2s;otAN}$5<`ngEGs4c_1y_6OqL6^;9RhEaSIb zi_zjTyJdn=1jw?(n5zl7J}I~ak;I)2%Y^obIQQb$>&>L?NlJ;QH$gTaXGYlR5`Dy$ z*v3Fgyoqq)&5f4bTKzSa-91xG%kG^wc3AdErei*tUTfK-+iSJ#Sv0Ag>L{F>MMR$1 ziMR5L8VK-)ddr@zV-a?H>Zm@0c|VVH%DlH5xw-U~_Z=HizKP4gtqg|phtLhQ`h;Mr z{1Gox<I`U9+yRzg5mpL5Y((uoxP?z)C7$2HxOyK(QR_y_ME}oDeEf_Le?6qIA4Xw6 zi3mJIfO9Ri42$DyEfd?Ww^{Zw4mVNjcUtz^G8>l(5lP;Sfyf7T%Oqncz<n8=mc5Oa zkPAG5Na0(ZmVMjXIxLgj{Z_*22Yqy9gJp8-&~}9PrlUO0P9Z=`Mj-Cp?JVYE+5Iz7 zy5*k6+yiLl9$a=s$`J{02vmuyKx)WCjpuYUJpG-P{fvAu+5_g)CpOD|t+gg1wTPr* zw0TAodFYS;rC(M+e)ogrU?<5rr_nN{<cc24l=j(n%l>U!+bste6ET%6!CQHgmpDFe zK)9|6dk<4h%t9?Z%3(P$xCd>;yAx{p2z-?1YXY?Lr5%<7yY6qdOf@nvHCKgz_PPV| zW+%x$qMq)lMJ{q40fug_w@foGw-ejkUfRyUTjVJ(WJj-MTI(1LL{CFF+181-A6=G% zj8ou-=9!j*T1Ue*J|Ift18KX+2HXSdEeE^hTv8y9!=@~Z@h)5j_JPrUo|W)7c3KWG zEQnMeN|fG3ewL+vGG6*S5mhY5QEZOGa>(XmSpbTUu><#R%$pZr-u+XD<xuxeUBt03 z=G}g{#$h$&WrNLfXzQ37%VEX>T$V5Jv0gnx=NZ3Y&vPf^D*PPwQU+;C88}L0)0TRp z(Q;VNOiU#cL|*bOr1U#<&0idr>BjDWH14P;gv-F^KFe>J-uEb3b4M^5>~2J@vB5IK zeU}xDSBazK^DfJbZ4*t)OwW(#dPg)^W^M}hSY~;WR6`5NRpK%y_Uh_zKAn=!fK+;! z#QuA_0RAXd<5)s9j<s86wOw07>gsDPha1Bv#r|Ql9NuOSbo_d+Wp?Vf46t0%f$)`t zn!LhK>6A{(?Dj>X7BekJ7$;FOAHtr0DR4_>3FezI5H!#T?v1y&>@Mc91Z|jImLpno z(J1L|!17h7nTNFt>9!ncPPJN&Y###G`*N4%DEG%!%TcXM+AVWlt98)b(=iYj*<~>T z7uKRXl3)^}#K#?Q{rA-)Qs>3g$$%_8#A`8H(-|EpIUyGw11e*BFWLAMuJ6;3kV0ns z30Nt5(_=APhgh+<7^Ee`K~=T@wd5j)#bbU9qa@#E@wEP7TD<MQwOf1vCm_pvaakF) zS$u7)YAk+ZKiZ5A;`Lp>5qynUF)oJ0SY$%2V@%759ru`)`EB2sFmf=ON-;p<cY?X_ zfuQB2f;Bakla1l+z<3VlRlfo^a3rMUuqY#JN{8j-o^MRcDegmXl>CtVC2vE{d>kLa z72V9E4{`24t^-CJZAnRSa%UY@Zh;Z}jZ*S60!)6r(Q-=rg}_MUW1x_WC{>t4Fok37 zkZ}kXjz_rs0H@_tqZg#rcOzF2CW(oa-E@zf^b1x7aQ-T4=BqH={Z!rkabkPYPidON za%$TW7*!D=Mi&gH*K(RiKfC;^2lFHCmeab<2ar!LNBvCz4^MGH4g^N@WYh|0)-prQ zm6UjJQogMS`$vPN`giOVUQlaU;Bk<!!iR~s@DUGbI@Sw04iV4sm`dE<fTKOI;=T$W zo<d03{7h2f6LM_}bLRdC-j)ctp0%?uwwx|&hLM;^DfvY|9k7^EX;X`3!E2{y(dRd2 zAou<d$Uiqhen2=iY&B%mM#wnYQhUNp9f!Ttd~{Q%keAc~Or_2VLoV;PoSwP`E2%q! zkO%u9&q(#T7D#I*<egQJFOrPTB@EW0r7((Guv~N<PnAV?ZiGB?HRMTzi(W^!=xrgt zQ7s;q4v7j$W<x5MLzW4nN!nI{rT97w6hDea@rE#@PeitFf_zA_i@(K3@y`j!AE=c~ zAn1~P5GhGTAghS2MABJu6~d*KO^~btNNy%%H1<j-g1Pk2bj#_l93^eW7Kr4&bg{@? zBW>4hg51~wc^~1jNifRhMIpxtIT?+zMQn>@i=}kIHpr5#kQ%8j7m-yYr|fbLq-D3| zK^}-h9*qc*(s~hodKF|tE~I@Jq<cGL6Ty^i83K7>1?0^uAfJfHcT)XP$gfx_&)NdX z17!KAOvv6aD$;>lksXEP3K<6Q3OB+P-ZV(0S;(c36E;~ERxHY()Q|<ak?L!=2={in zyW(DqRy@5C@?045yj0&3^Pi+cK0~B(0xm1(2ss|4mFGktlJTklZB?N@NQ^$JmiIl? zbFP5|${?49AZrk=e&kBX6KGUFCn9Y^I;7f1CaX7-i0W52LOu{HpF!s4qgK*WYdNDh zjmc#0#ypRVk$Lod07lGjIiqbRQ!Q13bN>^}vV=S-xvyi=B^J9Zi;OzB(YHG+i(03e z#32uqad~P>9)_^-nay(M)(orVEceDb=FFxZ%UK<>YhZMAC^amB%fPLa<Q8n;u}?qf z_~bx8{s(ciz82y6Sho1mC@sR<e-bvcZA^nwrbfv}DOSCsnwjE$G-7d*Q@RpV<;Puy zkD+wDZx0ymdkN5Y93<2frfQ(!&LT=<5((3<@`@J2(65O+mv|T;U-+;rZ(9oP-VE?7 z84M-ovD~D-A(QT32-?%$0(mt9^7=;F9E~iSb%=QX1vey*c*cd4!W}`fF)N+wH9*t1 z)8QE_vB#bCz`e4*O-}s)g6K1-CBErItshfGTg3cZ3=n-27~YhLseJ*iFQWV}1n8(2 zP^*3e=OI}X%(scxvwjo6<*D3T478%}LJY3wF%>vV4BP_Om^cF6j4tHldBN+2Tlj1X zr5;QfMRZEC1mFb=FrW{(#w(cDCq{j^3tdE2AGhMQAWdaBF(8|8>^iF6FLCbM+P`Zt z*F#{i_Xj&(ce3W{Ha!INh!|}1Md^=$Q8FA<17kym)Sx|mi7;q%aQJ8|)iS&-_tlXc zd9t>J$gZ}RaRZSLATSwqzKJqeT|yiXFWaJZmE6f#?c`w8a)d`MCqr2soyxj2Lil5@ zAh9EC%Mn>ePdh%u(b!{1M5Z0$H2Prt)C8l8l#HB#sWBI0U|6(HSsM<dWcfZ0pdMC+ zw43@=y0xuCrPm&b<(ws9rScNZFs|ys!2Yz^Ps6B^+w<&?9h7VqrE>43L*>nFMysSm zzsAyeDf^O8_3Y6%l>^r-HGX<ku9*jOReUl=-7+P0*4$^4oKT23jL&f7FY>}IgzJt$ zw7r}g8xcN|F=VMFXxlNOJH1|I>#6Hl<5Ai2+HOdAk90MpWnoCEjPsd785d{oN^$0M z_}~-_`srCX8r80HQui=ybMM7o;q78i7JxA$?aEqPXp(Gu&92g_>D@$Wt7S}bX3f?8 z>uIl3c@p$cjZdzCRYZK~D9u-G_^?}d^|||OlN=0{HhGA1--#*r`5vm1sfyp+7Z#Ij z4b5>7a@w1`bIoi2)6{=8;GIqC{wr6*Ra`46rxm|SUO*|i!?Vb%3VXLy$573(T7gR@ zmDU&>=mTNN)wAwUeVH`am&Tr0G3B9uU<Ul3lSIh_uSK3FY;tWg;7yj?|L9UCj-E3C zdC<`ZX3NDJ5&oa$dSvYA7u3jJk8~rwYOOEsWiI3~#+AIx86jU!=<abJy$rRh8N0@M zH)L%aWGlq%leT+lbFZZ8Zl)9nKnxk^hJuW^5$6N3r7fe)DqM?jM@h*hZJAP4Qq5_T zk`RYfvzI|EQnFegBPh9TQdP@@(IyNbY0{QsfjFgf>@rA(RMXoa|DMyo<o@4NCxdz* zVRl&_^qjGJnK-tun11%j8B7Ry5$U{uggGyPkv*%9QVYX7=W`#WCn2`xTBXLx<GP~& zhJ2O7dm$!CvNQtv2qG1)kl2Bg{E0xnEiE~=Yu6H~2Tl2F0TyYw2pz=iJ`VF-q=5AO zdbaXTM10pXasF$R>Q5hoV{*`5Y7N0?eDaNr(%*h0KOnZEL$R!ldJhJ8<yeMAd0P)y zii7Nf$C3zb&nR*crL0_4%}orPJy|0LhkSA!<_8wCL&NM$vYJ)yhk1=4)=q}Z3sKYK z)O~#eY3g9Jj&H+!LJra1CA5{aq2XRja@-GL#hgvazfT4wc?vXSdG*N?OZi!t*WX&X zx&2k)Q#$~82VDPWRE=zt-7iAcqK&L@#-6okT#bnS#K=rYNk(k(T%vT3a1hbSwE21< z^2N+Ra*S}T#0%!K6Foq)u})S^rW*VX=f+auzGoxK^E%YHf&4jxyH<H`3taE79r#_0 zuumR+z2&r-heM(=PWAhJ_e0VqS53Q8Y=g0!s<9WPXfGsCPt}tSahF4UrIHe(4icq5 z^m}6enId-p`3ubHfFx@fO$Nfohme8|5O-Mzz#9T;T)S*1-bu8Te*`fqZCGid&3`(i z@D{RB+Dco=(~`PTwT$9bwQ9U?HEr$}J+wI>)%O!>v;mhzGYBvx`>MARKt?ti^5S7& zFvLIUrcG|`-PtyTO&{K5y)t4w%G$ObVN+ixIBD~4f#|ztJxa=JG3t+DzHEOOresYo zpq}5U8va^F&d-#R`7pTPr0p<D1@EBYz0rfq03f+zB&?kTV-BV2evYniZwH3Q%DD3E z$uRRwV-+aLZ^Fu}sD<W1l4EU*&KpJ70wb}h15?M!#E}~t_d|$yhQKx6rDPrfHy|0; zo3$RS?sagvHNeytFp|G|Nr{ZzvRkO?MIr04jTn$cT7RIYhpn+E<_*INxd?_QB30Rn z40+Ht<gJl@Q=?yf1UH+sjesHNA!S728kbYmx6X#VS2GSZA#%HF94|yR7DL}&PHYFR z-%51}B_%M_Fse#sj}jQHxe$S26Bq+KqQFoB!}h(j1+AQd1cnkAc7dS;h7uS`F29w) zPy#~<3?(r1{-y+m5*QYNp#;W%U)-Ds|5t8ixETX_{SzX?XZKb;USzZn`=xK!aLl<; z=FI6eyE@=+_R{Cs;QqOrDtV4F4sKW0WfsPZ-rtNTF|Rvsz?<CS7<shmBZ<FRs>^Gz z;<WDCCX9Tl`iNtkE2VrBA{p{-l+x&SNK3ogv-@oZh$W4x-jBx0qA=!m)|{NrK|lKN zP52nW*tK8LtR`;$2tavt4Tw14>b+Z|()<3uAN_X0eZNOds_%5Ez5Ue;Lgzob@g~Q- ztaEsP(ddWIYgE=Nifh&0`ukILb+c0G=h(p~W5bwK2l;c0F-+R@qGfFcsUDrlVubaH zR^CAlWYQ{$7~F8nW`a4@#pOWTyxRZi1u;5!B$iENvUi<JSucMKVU=<sHzK4azj#wX z?N=uI%(#SC?brVYQ#Wl$n%aNZMU9l?bdz;X8jl4FHz{k~&=$4-RSBSFjqg(j<jQ+? zdwP#LpkuFqI?(%ihqA6H%23v;H=>)~oT(0}l)D1wMI<(NTs<RnWIE38@j~Pfn8%gg zl$e4s{;OIwrTvbMfs#`7glhSiD3#nm4v_in|5M_`c;JqeAvHCS@~de(rME22Hg%Bq z({6RJ|2hK9SV7y6u9Zr;<n5A6c3nF!TBbIf>QU1~SgEyG9)1PumHiDO%DEkAIp;Y* zDu;6WjUDQsW&cSIk%Rxn&}wR&iP4C4*Pzw|PICH}{?$WjV5Qc*e<2YWvmw^2GSp#u z;&?Y=U|`=GWwMrJ*6bRI@=c8LS3ul)jE{p6{?^36yOfMfD{9*y#`tztvkxc@e};$A z*svOA#W5yoS3x}2!O$lPd6m3tUN%vRd4wT16Ui)7%}562IYrhI_tthw@=nA&50S(~ z+Kk*9$RCtSdTG;_h5C-H;=&dVG5gSFWI)Qe_&sdr!e%wSXjYgY?Tu=B>scm)P>u!z z9RNd(4zFVQlTYyG${p>n$v!nxXTvVfACirkm%hv$kMGOQUD+5sBMqP1%sBm_dskSw zyU}^hyJ~mE_UGfZwdNEUvX{-u+3BUH<)brw_8C}s<Pl0ite0QlVKg1h`_P6K<i@<! z3FB&pg}Mu*ifkNyLsvGK<!Cy=&hVLFr<(KQMpp0g)oOM*@v3q6QdOVeWBA9tSh<I% z-m&XmRL5NYL;yyPN!v9<H0G`-aIfcL%Xuvf%ekx@BW~p6Hu4eHrg76TZ{J54@_3jQ zgIMkesAH{uxYlDB=+<YLYSvkxA3B+J%|4IGB%?`LOw??fAo+58IpWqF+Ux~n_ed!{ zB=NFF9NXVRlvzDNb(~s4pAWe`td4v6h88g1iCTsOl5;pASbNFAn57`dxxWeB_aT;j zq$ES$V%bXSZrIGS{{0IC{XzutFRWOuC74m)BIn%hf?P`5$f?UAC;0GtKnNli=b4!j zOivmI{{w(A=6r-Ro<exk_q64AGC;=HlAQ6&(Y1XAvA-(hJ!Y-LOUV&tvOD*PK*o~@ z*X$S>&)Ep$yiD3g!f^3&?fB8_5{$J9)GY6ih}_p8_8c^<JLwNumX7bf1GtXbUP9fr z2?VW|0eAN;>V&cr$${hf<-}G%TYeMC&O9CSV~-Kc%QArW4H3C+0CU<tjgSL~BTYU5 zNb?CfR>(<0PH%*q6M$SSrDalTazUDVAeTyYwN!5vvR0}O_duSI>T`{dR%vUOYOj>! z@+@tOkQasQ=z+Z42zf)uyF&iqVpUcFh)qbYRP%ZuyGv;wDaq%u=`$K3vjULWQZ<Fd zr7hJ1sgP==lunS+DFM>-03D?s43fkH8P7wiXv?~k<fMJNnwfG7lQYMKNLCm9p?Aq~ zpO8e=&omfTktCgc&2-AEbc##XFm)1gSr?JXtlCQ<&Gdd2-{qdL^FH2hWn9{;P7K_H z^Q@-|=*9&M<>7n`aANyd3=I9aPe?yq8;CQ7@>b9(YqrvFr(nft0iWwoEW1ttnrjg~ z?ds&dJw2WAl0I3;%MpB>RLu5d!QS|n!&GZ1W!%XC$@p>;e)F-Hbrd0F$$fj)&IF_6 zHZW%&j)4(%ILe>aLUnEy<f<Kz9eB(B4a-BufO*K_*^uBC$g+M&vykgDiK7ACQKi@$ z@(SjM{EA%8*c^h%#8lpiabmj~Q+WqOAx%Ay^AO2<eFeJr<T6gHR$?H(k>Pj{)%>-L z#C*B?&-wws)@i+jaHtr460UO9P`b5G&6g9v{LVFWRQ8dqog)t+iPjuQ_Vr!J@%@_0 zc3^7EzYuYJL^kXTTGUB_KEJXy_Qljmo5yZfC%Y4N@U8We=a(`taAHiI{NhUD$hit# z>jTTxDYhZ#x}q%WV{az0IhW-@uAwbw9l_+R2Vc&!bgk<~G%VIlM7}rK$elv?xq?cc zs&bDCs8hDNV^n2L%q?cDsUOjG<kJi4Sxl+hOm%AHk4@^-?rtuAhgZ=b!{oEo^hqKo zSIQ&DNo-MIjP>I(Gf1AD7vWNUB-uTPVKL?l0$jFN5cHi6a*&U1-b6&QS0ou54+b#x zeFk!Bg*q)E&)8#kW~tK}yhCs~sRKr(lU&J;ohNHkUYvb!^(pk$_!BYe<g=Ltp}k3% zRaS=Ff1oz*Jwg8x8fs`e1_I6Wpg+VYKAkSJUjxz!X<Lz#Taruzjm+1u?3#!@m%I!c zQ^^XPx0!K}_i`H3Z<ZL4VPXGAA8@mmL&n2!)Hi`(3?-KhHJ5`pT$9MNx|~whsW{47 z*aDF!syw;87`l?`kU!AKd7s=n`d6z3y-8r?C5UL`7n{`S)n0_1kCQ*^%VNGE1Vdi$ z<<!xQqvdVnup_AE#x7N-x8K)`H#y;@|F)Tu+yvV0f#mUS$GWsPOD&9*U~dfX92WLf zi(e-Qa^+4x_oo2K9)rE{^^l=UGt?PFYc8eKfb*fvaEIQu3f*C*I^*U^be`=50Lk+Q zSJ^f-yKU)4b!708bahlWui1>&x3?&B<A+<6*S&v+^1BaTrGoCNA$%}+A(wk{bg|xe zAD`6A(Ix6`iK=*&w?!4aadw#BYdw~(QWdt4DmK=IRB7n?3>?Yv(s@5~RlUs^w{Xr? zmRZ{&m5dzA1<XcEGjP?Tz|FT3f?5k1^E!#h-^uD@A4}DCbQWW+kJJr2D+<}s&$zl` z3}nYnR+<q)9vDuF`ypdotTbbzS28wM7pbz&aUoT4T}HF2>NvVj&3%ze-g&8)n$;2I zyu~|W=b7}IMP4S3u3<Jx>ByZhjw=7(45ezft2v@JN7RhMFunTkx;kFBh`2?>)FOjN z?EfI_5n<1NfZ-JwK7rwTK^*;`R{SCy5aECp{tu3VA`%jj(0>yNi%3L7BL9DvQ4x-b zaP0pt92emN5&m1k66G)wJO4LBCp#%>g`!sY-!P{{q)0@H{{JwFMYu$SOaA}Dr6OD= z!hgeDUJj#tCya{1|1tzL`bv?j6uGMZQ?6R%szq+Dmis?@`e+e8T7>_GO1qr56YeqP z|C?)FD!1LX@_J^)ba}lpk~^~65j@Ra7LKqK?Cnw3>o(WYHjQbJo>9j<a<D8p<=wkt zQBWBy3d+Kwpe!s3%EF?cEG!Dj!YZH?b6@2%_c=R4>`Xc}hDpcN?PKb0%x2ay^VBeA zp32JOX=3ymcFD2wa546Cyx9+;lrA4|<$p;j?FBog9-@?)Mai`qE3VZ{`|Q0Mgn&Rm zTCZ>SAeR^5IYrhDwZ;mOOIfX^AFp${d*B9$Wi#z@Nd5whx|aH>R<oE7kx$WchjtUk zx1uZ8{<eGSD9P&!+jitEJH&@PscXyDX;M7}E7nK{Rw^M@xu6>-x3Fn^2(Ik%q^a~7 zZW}Ih-V_9K%_r9cyB-y|cGz|M!Se^7PoZI+YNh0ms=P+fFRK1_kEE|t2k(*e1JPeZ z7UCmf1)6?_{R`vIn<q;@BKiqDQ(l$n`xki!bhZ{Y<aDjM`eSqbh&<>`zcJR=q~?$s z^5RQVXKz28tw_l$mw_ip31-;W?dqJ4%;oA_k9==tDey7EB%O+1<((@(`cuwh$<_E4 z58VI#M)5E2d-Q{ylIu3xoR~VVb3U1LuIg6jTlVu|Z!`yC`$@D}Z`=sEp$YOSRom5! z({XZC8-5uP4NbAnIM0NUwi_KPk1f{b3n^tD03+u>#^lhoo$CC$ljG`w;HwO3*W(Ph z{B4Mgdxz4<6P@VhQq6h<Zq~F-v>im`S@KXb?kv2i*XYo^eWM`w1uR(~(WY;~^hq#l zD#B?`)0T4<TqUQGoEG5btZ0CI!*-{Sbap=@+kOm(lOc~e)P)6K_5)W2@Q4yLY(L^{ z)LTW6FA;HW4P!J6$*PVqlg~~E!6p#o?ciuIaseNYj6DA(U}Ta%P4rtRDP7Pihh9Bc z_0$-#)5e6|O2QmRFf44#>V&MoGB3TA^F)@1r40c}Ke2(Q@&3cQEQi%%Sx%F>XzN`- z(=WaCZRp_pZf#zl6LU^uSPW5_+@LXMAiYG%Yi;YLN4Qv8?qUAcoY<)@zI;6)j4vT2 zmg8|GFO~l?t{h*2MW@O6UM+njuO$C6#^pYCaIoqZGK1WIzXbe?Tx=(5`U+$~L*GTp zfYaAcdM*qa^_^uycyEZzfTfo|;b6s_P1Vs#!UnyWa&bB6Qs2`UUA5dn{rUPr8`a;x z=(#G>s>U}1wY+JhQ(plmF7v3`)<3Z%r^3~MJonoE$CTVvc?%%M8TNr()eUMyudCgq zp=a{nUmL%I6+LU6&!nmPK{X9r=lRczBQ2-Tf9k)!pZ=S9eJiAIw)G|8sCSmD#*IJ9 zXukoZGQ0;~7F&Ah>CrrSHMPpu`BuikK=>n$=my_+#Fldl4AsS?D}SDnU|t@)aiv<` zEnh!bG8tTaeu#*l5ut&Pe4B}FmGxBbWdpl`UTEdYaWDj(PTf8KDMNa#`%AC>xr)jc zBznXu%YjV4)Lo2ceT!Z33Yfk5{sEBm3@Hvg$e@l-<?(CC)ZKQClJt9-$=O|yf>wFJ z8ji-8G4+r?uTKg#$lA1uNvAKr-8U0k#R|^Ap&)Z+uzM08;C$Fm7%=~6A-3bmZelHd z^&;(=Le^Z30^`<>U4voFWbeNXR+%_D{K0{qbfKZI<cA&(SKWffpWMsFT<K$JNyp`1 zlJlpPzwbT5(A$aoLC>z8Nl)y-8~*`le`eP@oemv%Gw|o&|Jy{=yR*X#NiPtf+Ormo zf1kSkKS;!%m<I;>-{1~%_0!$B4?@y!sA)NUrKh3k387zS{w+=a>BUl&oE`>lX8(*x zuP^!okiQ50?~B%mZ-_%r$-f~D+(i;?*V+hmnCGuy*_L$gx_T~p2=pZtto$XXGAr~= zbeS{4oY{?GG4O$-TufIiAz@V|2v_|~wc3J4_0!1B9Ys~muh|v;VB~)b+E%rkaVnoc zjoh69?0TAABcr90eNgWChssZhb7beV$j4Aa&SbC-y&gI1+UCE;X8Q)=;6CKa_>}I} zi--I}$-tZR!M+^)v`OE4>$#w_tC!Nj9t{1#?9uD9p0$D7$d&$ag8OJ3mCN0=POSf9 zT<U*T(EnGU`y+W+Bf1Mgs(*W}fBCF`i|jeAYgb=-E16}LGEGxW#9OjI4E?2DK|SX6 zkWa`PlhS`Q;4Qy)mvjA7gV=tZymLrG^ps3FvEq4}<mj)w|2%?S-zp1Kfqa3Tb}qy< z70miLC>?NvF^itj@#@oI;(V;=Pa^-kzqhWwhoE(odb;Q}Ld@T&E$g;I*}U{tq|au9 z`O|80qonNL(p$MlZA1>;o3ySTj)TJbb*nMN3WARzdUhxG#d1o1^-<Oe(t-Iq!=#iA z(HlW^jEMB&tG(&J-Z18)p?3(k+{Wwv(B5>%8}&69m7jwc*TU6f(im!DMa}|-jXdkH zye|P<&(MLHCkJ73Azfz3Z*z@2(IAPt@;4Wx1G{b~Tz*UigZ+2l^GE$oME{szAU3&} zai0Y-<YGoWiIw3W@Xhh?Ke%ET+~2G>_Ax_WqEm9OU`FYamh(JNWp1Et<jiz7x%Zf0 z8FN=Mdv4`iH)2`_j2b}dkAAE-F|PD=*0|Tu&|m%-^3;*<@UmA_HgIm*%tM#6wSir2 zVZXYy@G&N$MlkY4O2d{$)UDlVjcScQtwpVQV<%%sxtOM7&Iw|92EA%?a0xR)F194a zw}sl8XuGPOJ};*<atw*E_jb|N)W|_(YB%S<J2t7?c0NXI8FH2FlznE@eIUq`mp<uJ zv#@*$>6E#DyKg8+^-0j)i8plv*L*F@(aoOSq;9`@2A0*Kwd#&gJNHOSIdoXB{*16{ z@~}7VQx2}VFZ8NAYOZmpwf2qVIgh`}P__d}XKrDpTKmTD+(Fg!(oxy(lPft-Dw}+U zlXWr(a^(eW!w&Gtr<3bSu7i<gxYS)8t;9BD9<gOi2UYI47Ik;YnZ20bwwVy-B4;@U zdx}lOdeaNQ9XKvr<=`yZhh^QD@>*=*iFDuthG~q5frmmnCC8mss&Z4QukS3mKAex? z0k!_MTFmovsdcSfx7}$R=2Ulf^3%M#Dg!Qrmw-xNdj736SRE@rtLH2}&}Dzw#Rtdp zz=kUa8$EmUgwS6@4o+CTPz-)`ucx1$Wsbvup{JEr8~AzqpZk{jka4ACU2{H9S6I&R zGE=(ffa-Z<QvXp@;12R<$k!d7Mf69glrbK9qM0@uZH2GVwI#Q3k>@!RQh5QNW_!+k z5w1KD7_z(?r!f~oNzpxttm&^*^dCEwR?(OGkDV$PceAM0GI5Ms5H4E>7DG;bMsp45 zdxMk=ycvcQxsSF=iCbdd%fKyJ!@;ZaA||Y_m98kAwvml*1L!N30la)W;ipE5DTRTm z8!_PaQPLT5Hwxo6NR_)0;U`cle}dafbG1VVv(dbTQ<^Dn9?dO?nC~)>+;cFX|7IxV zZvgJs0805UBl4MIPZqr38G`vHGU@+<QgS*YQU8aKM=q<wzoHRQJPHN_%(CQT+?6Ju z+{Wf`3~~i0FzI{~z*2f}fV18Y3=mHgm-@4wKsww&7U?wPRebz<Qm6mCNB<ws;2P`k zk{s{x7#R42o9{sHb6`|2xyIAz`VOIc^gq?4TygsH=<HoX#s2}-@^`70@a+O05#ijs z0(+iFJN9N#^&L%yeDg8yYpkJ7j^e&|srthNIPf1Nog^pVS^>$}gq4p?N;`=>@Fuwm zyn89+Lk3OYQx@95S7amb&moW>gz+;70>AAbLsmvp(6y4`a~g>VFZE!`hRfo+7)_=7 z`>8tGN$1G~I50K(apYOu#4^&0NOJvZ$kSxkx{<M~|0}{+Dv8LzihG=klDzq;x(V~8 zRaDCk=;c#^r$}tYj|{1bAM26JLBv>S#fSWozc|A|)oYTMQZf{q5+Gq;Hqz#xEik2y zl6*^NB%Aq^>Czx2Zs?W%VZSM_Jxw`c$5MbaC-%TSu7eQvb<+FuVvysQ2Eox(^%p|k z?iwj!ApA=K<PVZla<q%KDYTVM=n?{4ccPuP1Z_TE?JM_Kj}Skj<c)eJ$@`lbP0wE? zRXQd94*eT{pBok<XvN!R)CNuzff^Qo2QU!lOOtyymrF3W!7bgNHvK75C@SGQkSm-= z*1YSZkf)Z@CKp@&WE!OttdJ2@O<A)GLx3zil2FUHplcrKgZn8W=1qtg(HdS+$q-Fk z0II~r;7c5huqhk3{w^&z52L=1Ntmylk~s}jMa|^EogmNp=hVgs6E*qvsG=8B`b)OZ z9ysDh&s2So=ryDydJTXQKVvzm7nwa^1m$7WyBsz5=5~a~*1%m!vi<L^gnYII;BSM< zcn~#1@*I1TI4W<FloTL5__drlk(m-J0G}yeA?a&Ax4eAz|4JtZe*%4I0;KrL0MMQR ziy@~fbCeD89tbK<lQw@Ba-LpF7Py74B0TWT-C^Qwj1YGpZFgDO{Z=+nwIb)a2rGX1 zU5s%ERqqr1kf)h`!O?<+8GoPoYb|Q}T(<;~_#|P}0L`fBLHOeuO6eve?53Bnw^)|f z^HY?B_>M=U<ZxzGuqXjJp5YTbpXDnkU%LjsWMYTp2W6pRghP+R4IfThxP&<!mS22@ z<(FLHt#Bj5hC(ic5xtM`9POi8Ixdg!f8R>}GKWBRLpb&+2I5I{3rx5L(Ok%*Igoy; ziNh0gR0Sa<HUrJQ#s&J_386ZN?ny2TkW(G%!9*03|I`V{rBgz_Ye`%v6XKFAG;*wv zQzKw5VE-uTg~WbfASF&Cb><|-Wb!OBnL3o^+IJ-5AovlZJ#-?ain~Bxb}!Yk*QmxP zlF4LoH&)JU2jm*Cn5)RRF`TOLmW_^o$_b2*KpOM{Bfgfw;5`jeGO>XW4nZS%1EVf^ zOBM*^bA;sk#Npm%LcX;^?v&E&kkkhwnFb!_bkPDS-FOA$_CkE@pj7-WIjvkpimQ$v z4LP+GaxQPvs;=fYXH~ZddEgaD*C@!260$aio~hmwd)52B0GUcPeO`^auYGNux?g`m zrytD+4kB`nu%2E+O5~bKpEm}N8v6Y5w>u+!Oi}NnHt_h6s!<O{4z5=Zwoa|*kac*y zdMGu6<cv8x$m%@<GV}=YVk;(B>JS)u+qOJHH(I{2<J^v4t6U9PPYZFze76>|C&KpA zdpYlpV+f?lryH63cBzLpABdWj6R67c3z-f#F9TuA0@SQqnXo#n>~)P8*gFW>+6`%h z;RsN5K8l>>3QB1UJIPBB#?TH#^zFWS7_Mu)Q$1YrxDUA~R$SAg=$6~iJrd_mk6j3H zIM4OM-Lg?V-1m}CJrerVr5@>--=`i8tb*YPhMCjPf=|tCz`X2lqZ=_`$ksNVQ|_Z( zQdRR2$!H;%jJ8Yw$xn4Hn?0a9A4ggH_|#*Oy+i7;{wauLok&~WqHgtg^p!64_$$-F zm$u!h)*Jg0k+sF4*1yKjeN_H!AQ->6Sv?V1>r_v4oe@$`7H1=(E^ARwZdsa!c>{ZC zXCpV});jf6<iW6ds_%+U^>pzGUFzvATpFt(7j>y;<UfB@@E0o&fUhxe?47Jv{KlVG zLhqxih6nIF5_`7wopg7TUp>>FK@x||Z&1%h`O*Ee?RUdX>p(c`^g22;Bb`u}cc|xL zw|A@O-q@>2ZIFLoQ6ts`)Q0ZY>(ujxg$%i(eX7-)=z-Bj{xah@8uzpvQ+Ich`)}>4 zwf|PTYAZjzQMGM3*~PO}6a=z)wd;Q#vAlra(GLd+bt>kEmSe^8Il*Mf$FH_KC^_Ch zEmI!#bH65Qx!+<S_q$$FGP#2!?ncS}s&vH{EF%^<363vxfFR*i?R`G4>M*`=sg4(4 zXK9%*!LPakao`TU11q-Q8Oru+ovLf&hz8YdPN-Min_7BQPvlsPX6#Rf(idVXZvpu1 zX;{v3!N|UZ>}EbvM|RJ|l>K&x>Urtj9@QIsJEVHIPWOT8>?YM$Fs4!UZJG#h`}tkC z{I(u)hM=#aWR>f-{AS`E`4ZKfeTX;jQ@`36kO$fHy}H%L?q~7q_(uS_0ByF}_*KV( zYHk*bmZv41)odeH{9_}KN(N@=h~=y$Us5fUPv#2WMx*eTO_1MVq<E90Quz$|l-y*c zCb5d9>ZR>6+KOs3SjhHS1)0H?P%Q7Gii=<rFGQsH%m`!&r1aEHkVP9IOJI~PL!`7; zstuIN52USPPedvTF;!8L33*b;`?OW=j$Gx$5M)vd<Z!B0bKzFo;8we+Ru5YaIfv?8 zep$RJ^mCKiw6UO1^+$)KtNv{^QZoKnCyTl1U?63CSoCEMR(VKbbOlLFwD{QgWXXt} z)I{kqsu3A=<|AY>YQ=Bd1}VPQ1>p&o4_zBUzXPtZ1EZds{A>iW{}#HvY%G%-sOn?h z&@Og^$7qZEf=J|h)J%qt@<tI3ZMOmZe1roJ*Hc|hn_q4SJePyT*bU&pKKdgv!v)-B z-Bj<PR|D(lMspbW3J<cwJsTgfZ3xHv0{9(9u1q=RC4WOh|8YY^j%B64;K-20JUr5m zw;P+p0Bwn%$zS*_gd?voO1x_v1bs7AV=|?P3k1e~Kr0)MkI19wMg&zX<^=9)>;*<3 zTyk;)2)@R7Y>SAzhlcw>xJHO56Tf1r$PPaDu?Tx_O=k?rc49t`T4)Z{a4x#hBVCxf z1V?_^<3nHcG7d7)C}{Fw>iaMn>rsnb4+-aE-p{|DD)V8~Qe|*`|AbN80V6raPj+Rc z37>#pb3+%xS74=(d9Dh6?*^5;?sCh&i-j$M;CQOxhs4LxO^A$y=#KZ?if-gPA!CCi zVj(Vr`52A8=qIc_sHQwr{lCJET`5*r|5R{zH^CeTqr8)n9s;Gmw!oN8wV;W3Jr5vU z_&RO=*NHb#3nRv2sfzDr^$ES$NUpx3ExrWju~<D}MWi|$;lk74hSp&qGDX_t9c1ZD zFCq_hV($~M6h8~YBVWn}Mo=}T^)Qf@B3E^n3wsCP*K<8*kdhGu9b4}}*MlQNo}+v( zVcz_f&MR4lZg3WkV)99(IRvArJWNG;fKfIMZg^|}K$~iTVFEI8D8zqACg`^lOwoM+ z3e})iC=;i0!A2MnGy-S1V6e^d7sn9)w7y+w@`g6!t*{HSxPv}=3K&7zr%MA6Jq<jM zVIcW{pFxuWv`D=J%#UNQVt*JVPf;p9k+7;S0N+3-%Tr9KUqsGAEm%V}o{>ffA0Xm; z2z<s_y|~;0+~o08J$GZd=pss~8~t#DFiKx?q9$*pBhS+24RsUN^AMwqYVv+e#ZJLW zL0J<Wx`L|vV;Dw;k8#jIDf%j<YPLnDDZ!ZkBx|0h>Iwe@JEqzkwB6;wie#v?7%Sdb z1Hj)RB}osZ$la(JZt@a0=#Rv?-2`(MjOY|Ekq_@d_#;2MpNU)<sjKwB2yI3#d?uw- zUm8Y7lI(&adN4YfG(`gpIO9@ugI7Ai{9q^D!?8z&4?;K`$6ojm4Ct(d-=XAwlD48x z8-Q_g3%YVvslFKWrSead!NX{)mc2Ie6^zJbSSdZJpH8W*$6Gel<gpkijX5#!qzgb{ zA3mOdTaXGdL_a3{*hScLzuX9sArRluMX3Ybf=t>XU*ah86l$?Wb=Z>?v;1aE8M1Cf zr$b8Dpb?a#S~L@4HV{$KWOSo%QZ-gkG6E!9AMTPpm<s=BCt<R@hBE@>%GyKf?(*X3 zbDn41Dcba44L!>N(%6A;XiXDomoLeyR$#PPR$I>oG(z<th`0IS=Fk>(b~DzRSZ&=Q z2aKmtGxx_)d^b8k2V<NksIm}_2^RC8V&zuaDyGmTTbnAC)z&YsaE$LLRoz7hq00an zl#dVnoi0X19c|@td{n&Lh2L2OZG4GvIIA8qEP%^lK@xTWT)j4#)xEg9eIv>Fno_a{ zd&ar=Ej<x6L*9+K{g6ljQTo46$J<-}UAd3$1}crY$eD(L&zSb1cLm1#B3Dma`MNr= zycERwC(QtQ2N=E`fDEhxLFiu?h#Z7kq=_fUvPOsGB?}l2QSwzv$L|4*WS<=aQA&Cv zHNGbYaVxqdOBuV-G9NH5L!@*+yp<k<qrfXTPd!X9@wQ%cEs)UN^^j|53*8OKz<reb z@=DDpM#KAqlfg9~60E~f@suvQ``AwMys?22XIs?7%7+mWwhy{`rj&QX@RbMXc-hL0 z>mg<gHKW*x?j~U9$>f!+g{M+2{k(x;b|j_n*$kx6T`(f+RzmKTM7)oIiUS()u@y$e zWaPZEBUaxL+%^9EYw#A5za&mx2zvKD$ocnY(pBu;#4>X3CM@4CmKzWW^*HH;7h#01 z#;ETCG$NB?ke^XAzd<B+GUnqkO5sV!#m_}IUXPFX6+Kv%jlSf0bmK$Qu(Aew-Z%R3 zy9kYfj38|;+Je`k;r)qT&`Y0h9wG&2Kw|49C6B`Of8CATb&yCpj*8ppE%RD}Hf|%Q zdeoIH!IArPAEW7fh<TkK13eBbZ>JjH&qe8?K61L!OR1%c-oLsYIekKToNDNibmH(K z7xrN}u?%R*dkE0|C@vFnMHsjr;D-EW-tPic=?S<DXJ9mTikKfA0%T_v<gFm-JO_K# zJ9-eYV#QO6M)(03!NvGZ9uL0wC21ho2YbOo(e-Y}UT9Ao6?{asAP9oUMBpapb|ZIZ z6MoOYN_7DxgJ(Kbya4l2JEkfQL@s<HYLRO(8j`zVcRq~BVM4Bxgni|t?J=f?QJzjI z*o|%%-t=Y|p3{Ze_vpG$#fNt#Y9(^g(r23JY}z6}13dC+5J&5f(}O1Y0BU;UD=5Ud zDeqTHa+hP}aeAg&{(eL+!-2`@nipfVbX61CxZaKr*`tc*H)AvlEAh#2%WrmqFAHw; zRt9FY6K|$Gw#24mz}?`&Ko}C7Nkr}^8sR1>nMq6;Q;1EU*P{P&FopI3WcUXkVXehS zG>&kh1!&Ru3P=g&OQ+LjoYjHwexOP|gb!ac8s_;J4c`x-k^>;-R{=1`7#4azFE8+d z`S?ySe-1Rgs>HT~)O&#FJ_m`&YF2R|e)aJq8DX7tKR`9mA4ctzJ`&rBfyn;248Pk; z+e?_&Cv*33Cor5K2;GDEVz~?{?*VCQCUVhm190Uqrq}k$S$=?@3!p%052ltmATkGo zhhZSL1p`I%)3AIWy87RKOY}i=1b*G?5s8n3Q8I~=k<o=Ixgbe-G2r_R61Kq&8&1gg za6`8@;pl`QF!m)Fy`QJb5Q&c`K+hv-1T7s^conE3=OXOCErXOC+=%(hU_?r2^M2h4 zLw4BsH9>^sC{#3+Qe*;h?j+vyiMHGZg4jZYi%)YA(W1?8cZwAcgUfdja{j_JtXRER znN3w6Sju1SLF9IpD)*scU@;=T76;t@dlBx%TTm`4JbR;2EyJSpaQY)@QVPpsQ0497 zqrM5uzxs%1Bf9Ygl+0-il|U<iJdbo?^bC5&Ee{RxOw>YGAQ!8}ig5thh)ae_PHG|T z<#65d9ej8gA;dnwO3{HqIb@*`>H|<&KBROqM!gS$#W>3cLz11$Y5=4YA5jxVX;%-> z4nf#B00TuA_A;m)0la<7lW=?!_S|=)Tety+u>oPDfE%0m;yRqmAPhM%>Z`zBq!$r= z#Bq<3(wi_U`iLziyJ_1@`(KGMwU)@2gJodb`7MfNIlKoCqs`b4wZyqWI*L1^fekmF zi@kycIP$LO##>by2HF5rl9f)|=CFhcDt)3&4in(7Ix%$_Bs#GH-F+b?*<K-Zw<&k< z?uL4}+abn5a4YIC8Xnq+smI}lhLPA*38s?Ow1xAQGgJ0<5q=I>%&%z+Zs?}-R`gPO zpZQj0Qk|PaM+HB?=)mKMtV5CUXc%YPAT>m3lp&{cRdG!Qj^v~j>c>DdeG{lo#IGUW z`@{~gQ`#Swp@vRMQz6NDQYyt|>@Y~xbA(?Y2hGAa0i+)W;;sTf_T#sp1mT!mOed@0 zMjpm*WFq*go&{gQACRi&X!Cx9H}5x?GA2_kz8aCr1(fvq7ke5x_c%lfd(yzNF+hN` z>KHyV@LMV;(8T=>xZDE`&xersQz2Z+;cnoWvy*E4IX~v*5vAf6C;40IW1OB&sXC4+ zy^Wds05?3Iwpbx;#_qLL55h`f_a@XP^kC%xpoNd38hM@<0OdEgAa@Ro$Zp+~WaPw` z0<!cDpheo?h8|>+=o^AaHI~cm5c4@gh%Lr)j9V~{Zw`$5y`*G+;eOGG%Ti{1M1DpV znUA;7I{X%1=@)MRH<sYYysLryU4lj^4HA(xJAM+FjjRqPQy1oa>(Pk5iAFSvmB^1_ za@vI>J-qcZi7^!f?)%fx^`(LIqyVWq4z<GPH{wHXIg=CM243k!?ovwCYZ39hhxuqu z1I};3a_Cp&BC9ERZlR<{wxJIvt{`12pIydJ0<-SWNX$h#_YaW`IZ=e>)I;R7S-l-% z&a1<+k5X7xbmLe`CF>z`cW*#Mo|B^y5a^xG9MwnGhT}JIBIW}plI(~aY>H*CO^!#S zR4xGrmapR-aDO5PzCSYP^9NYNf)Dv|z6uiG;Us9eiIE#zPB#!w2@HLZE0RN7lutoa zWDW@Qwpe~T!2O#Wh<801_k4(OB%j#yZH3zpS6^9#uR%8%0blZML;?pjqt>5=503yp z7)I$gPEcJ88JMf`1mxcY7JW!4ewvamiLQAUDJhu(alhsTxI7S*JV8XI0l1}d=JLpK zHF+=2gSR6W{sczsY%IIwWkkVHxKWw9#iz7@^vfV)NcK>D*$_w&TZ}gnD)}I4#RoRP z-Iq46oF{{8R=|~qM}46du5;{KR6PN(6l8VcqYy{Yk*wYc<pS>W=$dupx%376nqSc7 znGmA$cE_IHLv`or<5tBagyT!n7`u}DxC2vuxeE%*&<lG(@2R%Snph9M*TlR$;zfMe z^B>K031*`a8jeUzUZr?1q>}^78ezoIFb>8*G!tlrz2v@ncK}642h{UjV<=hj(9QcC zdn4lL4pnI6^`blUND$;j05trce(vutgrPqaHsm)Ku{+Qx$m#+{e-mUCSc<+yPOq4u zuTU$pFlbUaQF`!492F$c2(L{eLpDmWLtP+Ez$kS3$e#?P5;=^S=V3Ikg0{d4>;=YP zUat&g<1y;n-ART{YrxU_eUNK05RxaQR4&{?c@l}rm&;YtXseV9m&p1cmR(>8f6zcC zuOv<WThNWn@JhzvCLa#K-HUkRGpWWer4+qY<bJ8AREC;S3S9T^L>_fG2tgjh-FL$% zKDiewU*R%x1UV@91ebAnDPYPG!hKp3)hU2X)Wh{Pp;1)t2Sy17N}~uTucTAtt%nNT z1o2#shVD?$2c1N8a~;sq(T%*@4WNSpr0#w@rmmuDRAV44-58alvwsS5#dBR4sKHd! zjU(Sx4lKWpQGHL7nnzpF*R(}$LBpsZ?Gc%8(LIKMbe}YYzX_7gxe*vgiAWPjy(_>H z-IH-;PQiR=8wT`-8$YoNwUcR!RDv||2Yv&?F%X&2jiU>&9QTXbewd2f?ZnD<bSo-R zE8o<E#-{?U3Q{2_sMs@bjg<^meRCJ-ry5#9Sg~8v2vwG<$cGH6$UnK0i4NTgk>j*} z1kg*QKGJy}=|iNf8B^b5G;&S=k%*7H<YTJhEOB&OHa>QyBO=>-T$TcF8r9MeKC0wE zuRAI=11piM;p&ULz!*E#j~Gq*i6HW^pLpBQ@cr6=#uqRmN8+Q>gMsn|WJ5m-`BQKc zzXx$N3U1^CLP%C(v~U8tr6cGCk4;2mX$if6T<mce;c;o8igZCLAijrtDapN0nXI<@ zc}8D4mCh24AO>O=!icU4VDwm)Irqa@)+@C~Zoosl<Qmvg6Lkdbzn5y%C1f<+?R^x> z#-%ul)HWd}J5#6*m!WPfhhK3(-hdnaC)LO(L?U|%_bxxBWpqWPYa3SNHNwCi^_Gu_ z-V4GgC5ie;GbGiD&7vm9nb0yA;W<r^*8voDz%XUkjV%F7JZL9>FTst57()dI;a8t1 z+)p5)?}Fk#!A;6Tbu2B744sH`{}c6Cc@F0VS(HL{Ou5&0VNWj8t7^JIFsTQSvMNWT zPUK`b>b`WJN-2DAFMWAGfZ}pWtEdHr`OhHL4IAmG$LKsyfrGXU=tky4+>09s^#d<P z7uMslH2_0C5{rKmP@U0VyHscY?`Y`X8EP_kGEY71Bg*Y~i@Y61x7JTdI>kM-i?FIu zi!BC$zP>B?7~t{G!56u;iD2sRQ6`tI;X-=Q{VH;W)36uLM$P=P4`CT_{+kgo3(znQ zsv}JoBck7kxnJqR)GytT6)R}lmr~Uff(g#XK=|4q&Se}#_VDk@y}1OrkOeDoxy}zB zj!2{hRLOG?so0Om6StzP?=4F2#Z-9|uJ-^mQa=2KmUyx3r!BM;K%o^_34MWD!AwZ$ zbQcEfV2-S4A<wf|aw{g(Q+kA<oIHkjL!aTYJdRw&KFwg3lYX@x0^u$!k4G*3GjhHM z;p!Xa(zSi8S8`ohzR^h{p6`Wh$AG@_aX-+AH(9ewM|LwJ{8$<2!8_6rDYUbwF78C+ z;2yYgB~Xw6b9o=Jl{_cj&Vu1T7%M41!d_V;3J!o<egUQO3$n2M2_YC6A?!VaDSZa^ zUH~A^^A5t2ZPxr8;egl+FY@E<YkU;ni{-LrbR!L*O5RIbWE>^WBbe96%b1*1%KH(C zJ&u)v>VERqjTOJbo_;XVGbOMRzxqfQ{FmrH0G9CQ<VD^^tCFF95WL`ov=N~9;UJ}L z>6Bzq2o8s#FPzJ*IM++F`7F@%HEuZKpmZE^g$@!Hz60}-r&mI@a4{WC=V<C)50-*+ zVff$Z1-(4ol^%}|zcYip$O>F!^Aq5^STTZPxxE<#&r4V`_+#?MI6eoYrR(7OFT|8y zseKnw3dk0nYT@y#;2cEsnKd+}n_+Q0R*D<}jON*}x6}z1xz8@$w~4T3z=+DNLC{UL zY%GAhFQ67HP6z#5KpI~FEjiLfY;s!Had;m?&O87{?0gKA7Gtz9(FF`SuayQi0fQI% z1MjHf{m2=O7}bve1NYvt?Syke7&yf%1k2tq-U7!XS1<xB@d`@OL)lKMmXjg(FdrIk z`ib%q5iUeHT8<C>wl6Z;&JgH8BQg<@xqE=Ba1)mGMM^=i3!_1zEc+6<<Z%4zH9Ovr zw#%>QN<{SVi5w4CA5yFKcha^75wo7KQkMwQ%j<-IFHr%b_?dKE{(?)rDi`fWPwVTz z@Z$eh+<8aWRUM7~oZHo9$-NM;1DN(`rnhtZy^^l3bk&;!#>Di11EGZ`S<S{aCX`Uj z3nauboft4JL6)rIZhA17mSB3Z4Gv&1-*4s$A9G*wt(EuI`rbdY&N+Mb?3vlKXYaGi zY!du;LR5cqb)Q1jrZ7A&fPjXJ)1joQq{IvP(#_<EUk!gc*%kcDYAR3snvRg;lX-32 zABIXd#z2vO)8H0T%Ma$sno8d4SR77AGE1U!03~??&|89r;^K44N5f?DG9RgVP$_w< z8$|>=kmFmZls(*z!j2&!{uHnJb5Z|p3>4|Hn-4?s$eS2V$vZ14_l^OS?S#|#=a4Vm zn{vzhV54#g^wh$lV=#fzN1)fx8KI1R9|>pi6c-=X^cp~$P*B=*-G_rDs3*LJ<`RDv zKb|b^Ldp%~NXjpTe<?ZYK7@^g^e&0n9q{rYc%_K}C{Kq2wZDeH4?%u2d9A(h0%c>t z)9DypDl3ukeelsRT>TN0()ZD+?374P63OPTbv+mMl2^7i>5&fI-l}K1bPJDeB-PMd z=`CMjbda&ZjCd04Ls<gI*edUk4S(rqYI3B*J`HGZPRl&MH6;jnozd(=eEUpNIxd|Y z;?h%jT96)^)KhusGbZ29L+$rCG5KTBfqg2^F3sMjpCN)0(14TH(UhT^;#A(y1JqV@ zVGLzYMw7ZPt$8WmS_ZwmnyrZSrzlUNztE*TReg_kOU9BTdTKYRP9zU~Ktlag45?*s zkh=7GF`rs;s2o<zA*8@dE4!?fC)xL^YERwohNyH;hE$aIcfy}2N5!&6v>~eKB^?D+ zb^>N@0{mCsB!?XFf1y-n{4?sUI6#r6Oc4?(YR}TNpgj)$*p$oKj2GLUi;#oU7l!Xh z*tMBVpLnp5)!=rEkdbPf<e>1dj}1*%2iXio3vhH#$Lb2ba5ZK!jBE8&??9ayWdy$@ zRnL;8Ll_oAK<hkE-Zrck-T7$k=OnM3Fv|G{2^m!OuoBwGu-OXF_Cdux6k&_i2C_1) zsp&9|B8NoMPM0B(wA1ybD0+4zL-!fHC`!f&JUsxGmP7bco6Jz6Mi4NLr#`eXX<IO4 zkG1lra%h81pQ{uqdc4W8s*4SJXNyXZ_l>NDQlWo`XE{`CxTf;z2zAof*I?OEu|)Uv z<Zxe4s{58wz@2LVcjo{&&t$k|H|_-aMN$6T742|vl+@dAoXj(P3#sC6Qe6WijDOq3 zKDT~SwE`v{;$f4W%=@T4>!Cjl>rikf4Q$LCF}jpTLdF{_PZox9f`H@z<WEE6<CbG8 z#>Q0u>1#D)yb7qg%22UZfPDblKGLhY%0Sk*5E+|kZ4}!}**2ukNOh$;@NGwHnJrXW zqn#sN6{2VJ?AGBbOWVtj+l=QEvK0)Wh~0VLwRze7EnVm7eZIR}o^3DcbCe;ysNQzc zw)0hFyV<M4^k%*cMWoO6{kY92Lm8yBaVmjKCU*;%KGVOuZP{lT_YhFDro3dZp`vO$ zX{~Ns_nA#?77fChg^F#n(9@5Wi*G8g_JeZaVEWvwtt%B(F9}QUYM1^^?$P;R#X2q= z4DWz7&vp!0fwn=lun7{&(Yc`<%l-;5W~*52`yB%4^2hC*D}WvL<Hu90<Hs}IQG8ID z076mtree>&sZ7M@J)Di_$|l=HLSKE<SDc`r@2)dGzWomcpd8MK%+o!GGUO7ef^%sB zYEr(NA>bZ@o(6ezcq24tKLw?uI&R^q=<E_UoXRE`_v&urlcW)bfDt!7xpqBmdeoPt zaNkUuE_&R@6rudK6x_Am_%!!YvgIv=4T&D&SYU#u0UgzOc-lM^+0cc&+W;Dw(Q!vV z8#Q-E*)uC!X*2+%#$GIvzdNtB5^yPnkLyA&Bj1Ceg6C-v1<x~DGQFUf-bKcz1M;Vy z`!MoK{KU_a8wZTfZ}{^NobH8&yd#8337zQqIYRpmgMhD|B7IA|fNi|G?{WaFL3Aat z!g8)gB@++8d5oXNx7^t<o(>H7TZo$H_2N*(Hqv2AZa_+nRWefc;d!2fsK)x!Kz<tg zPJOHyNA1}QAW*O$T;;v#GqzSqn7W+5Ah}~&2dVQwDY!8TkRP3bN3sB`V}K7k0pF5Z zIJq65!RZM9kM78($60fhlfzwx?#-=nV_VAA#;XqzM*SX?BH2S<_-76sXau<8uUGRb zao;55+qTWu%rmxE%1&PA*CmM72^Edzoc~Y+MI7fr{Cm3qi^!%S-+ZO;qJiE#Q`ST3 z*lfzZ8csEMN@1nf*uHu09Oyj<DLvskA_?OjR#v{KJgystp5|%pN{Tc%9r9&a5WQ#= zWF05^-gQB0(SY&g4f5kI9(~8n3G^(1)IQd$7Tv26(2)BL47uOHkoyf>heA2~ZgMzh zMbW8jZE_ytB~_v^8FJ&m*h^4^`JImn7#RbM79gWE?=#?KzuRVfCdWlTPrNGR<wgY0 z?dU+C$T<8ecw5)x!lXAvollZk9OqP&?RkpV(XWu;W(vvCF^hw@zqyhkCE$iJu}7** zg7+9Q^3dNP2@jPH3?nEz^hk$O1}whKeMs~jc*U;^&sRZeP61^Uj+;Zdzm7sh{J2vV z@WzftlN!cW9iyJsw#U?gf5M-|*v!zd>Uy_CIz+;Sea6?eD|LSgDP#8`Z_7Yo8vj5& zraD2}$2xvImP+@M|HA33-%Uq!*zHf%^V@FN?sd~=>#wBVlwQ%6AEYe4ryYfftM|;J z?dQ!KKoPWn;g}{wui0rWq!CA!4Kc7@PL-7}1|>YE)7aT_MX&K~OBV^L8%jX=jH=KR zwEi=(;+Cb9(Rd{}QlIe}lu7qczK4H0*_IOebqJ?_0134oz6GObGWIPXc(#}SvhN4! zA^Ol--GLB@k0+rj&<~K=#@Lro4qnYud0w1vmy=rZH1zzFIsw%*9RDv!Xn409hGYN~ zIWGqHhvF21_hTw8=kTp!EL0j#YzIYVfD+3<ZhQ_9%Av?ql!S_p0QKV5<2TYs;zJ(( z&xM}#AR<@~^5j3Pi@(`N$x(BXBp9ND6X4!D2~z$A?qQ9$e1kAGhmy_zDc`E^%0iA; z!Hd1R2CgP#1CDApzU}devfmsuzDrd?xnYMFHoC}RT`_mqF#VgzQSul$!nX<sr(u81 z9rJnm<66MGJe4+up?5?-JePDbevt`?D$!(Y9to*mKshin$kV<<{0^VQYs=|T`4*$J zMZ($xyhdfBEPfHGp<ONkUPRcN*V^j`D02P=N^1bGZeJ)j-qlW#UWkT&)rr<#a`Gf| zxnY?Zi^xu_(&L4zlSybemxAhLJ~2{^Fp&cw8j&fLNPWBUUGKC2<X?m5$i<L~w3014 zbr2v6P|-Shy_js#9=M84YzIstHGV#+@k`t&XG#<>mAvJnP<wcwgun93DKc>cL@P`P z_&0k1N01QPNw!Flm(*u)s^P2Ps^P?bBr^Hda2>2Q+ztr!LA3f;9c24x5WFvtqvj(x zsQHK@>nliYTHlSH%PA;$eLFe!4MAQ^Ad<I^8k8X44Kjm~I&%Oe1}VIxo5D+O0i{&* zS9(_`uM$)tS}+$pnUqM}6Q+(%Bu7hv)Y1ZSlpa?`DtjDuHN6inrKd^W(?BjgN2J`= zkG#zSPJ{8X)8`tydM5Q6-^-o%gjWQ)!6~(n9734dKAPlPa9WWsmiVv_#*gbVzJK+v ztH`?qiOL?L@Uk8#m-WU08{nX9Bjm#iJv_YxN-X7tp`*aFnt1X{Z8epKOrzy2a#YIL zCz0PpeFUR`O&uVwSVfWJ!AtdLqu5J^sB=+qOFdL7oqUUL_L1#Q*e$yWP=V7osy@ns z^8GntVdSW~94e8cp^|u;hMoBII>1&`m-vF$^2IU0{}yl;0+uf!Z~4+V;66~wAC%We zAR6$Y&e+coCVDqSW8d<WI0Ysfq$M|0`%vuSQW%=eYg8gDL=E!RO4nw+Fb7`7LZxN~ zIsCH*c>2l>for>9?PQk#=tc7(5d8_+qT)pZzk*7llBeiF;OQaiRGe%rUkQrrRZE1R z9J-IZfv3VyIcor2jf|48lBZDBJUG3d*Vr;pN@OB0cs2>8ecd3JqrXJF9m;w5gR+?& z)YjpGH(O9%hF--1<h3q?@%S_bEZS?7Z;JD69RwPlCp8!v1Y|>{?5FLfvHDb6d@|n) zC_qig$;g)c>40eli*Q=WCdlhwhn}uZJPXm(Phq3>)CfeQXuRabRj~FRg$JLB!QWyM zs>DPin|z@B77c~RQd;mDQY{JY95Ub_yc3>7`wa1PQI~1<%6$p`eL!wJISVQ>>0Uk) zb_2aJ(-Dn9uX+IGlpKK^f$M0~wfpj|((N-HJudRb&Y5F6^@@wytr64N6Kq8r*RF=1 zEXV|IrJyR=_7TeSz}ox{Qa|IV`6*Zn&75Pp0&A(6z-0rd?#xcp_4*+&StqyBHAv+J zk3{Hr0+i^zF?4Vw6;N^OD!?5+z@2cVf7^lM(O>*4w2=xROz<HJD);we-gzL`9R#wq zekI_6IOV2DsF&WQa#bflM*1xU<cJkfc*|6XwsZm_vi1~9hE2Eib%26igh0HEZ{g7( zSC+a#QJ?)uJCt|9q%}7}j(JcC%6dikgfOCRfqddgo-85n?}u`9?-F#{5fwnq1fw1p zuU!RK@Aad)-XV}z<4aO!K{?jsCdYAurn_eh8c!|q(kdpCqegZXmi+|~{^bBvK9Ov_ z6jZk#D0Tbg@%oP-@~(hDOBIC&4}_P7Z~6fTfgC!fg9@D`$kNG$#|f!@+o^Nek5u_a z1oO`8MDh&~NZtcp;uQ3p2!WTl13bU%ZmW?suaa}A^T^*~sC^NX%OAsKB(EWFas)*t zC-W_N7&$6r&tgR=ZhG`$<=A<U3NAr)wX&X)kUFn8e-NTeqL9Cv*W_LhP41OMlk$&~ z6w9{$)-M3O+BtEa?jI1qYuyeKg6p9dtnc94<ssC0i5LDZ88SW3N8qLE=V8DHoz&$R z$cLRP1q_+qz_l=0B4dlNuv;qIovJqq`NDS7+nbMNH_s+-?3;E(&Gn(by`!d2&%Gxv zaKl=JB7>VEi0~o>ReA-Kz*^&6K<Yh8tC8+K@IG2=-T;-*NxWL4!K+x^LAf$@ABdr$ z)ct^{UkWNjtavbD`g-KRdEliebvcdF{D;G-Usf8TOQF(IgOt|!VU*bFqM+qN&|3_F zinZjZ-V9!FwHxH~Ljn*hK9+J@?)N}+B84}6=`pif7RBJX15%Z9X=;^=sK&}$V7&6y zxS93JS~zH#jY;`s;9qk(rPWuKKwf-e?0d+k#zH<NtMygAYXNfqYSnt;0aU%R4m@80 zAcs@p)rC}O^+?W|SC5tR=aUkEDOhavehUBxl>-hh1DpVrY72!`%T*ZFRm?b4&ya+( z3gO@gUTaRFjG8dyYvS^BIY<0!=0U1v0HQT(;jd;rRB9yjea**ZfX@K6C%*s)vm>B3 zE}()OwY9l`j&8tx^7<f0*=t{eUhUtD0bjs<?LVPX`^^TxuK5_8Yazf_0VrAz2*G$= z`SpPFCH2yLz!ld4u1CtcKOsWhLz22|5nwq~>YkQ_K|x+Euj>WnWkJ~l8+Bh5qGAVS z)Mpg{a#3CVKI;K;r$zmt0*=fBoCJY-OI|~gBZk82%Mqr&3U=!o1T>SaVFHvJjzaAX z$ISzroDc9*WJ6q1E7zFW4YdRXXgD<im_?A4Mh{Po$Gikc%2Pc|HqL;T#_N-S8zInm z>wLgNl>kv}<2C^@|I+vs<u(cTO`a5B)H=Y_T)@GgG#v`PrXwWv=yE{ib$}W{X@L8t z>5_LAl$*|mwWbTO*rsb<0L+tYHwgHxQ2CvtKDYt!XCd&I<ak0}pOM!U0#*s$S^*N> zsp&<;Z~8<MJ{Pc^s%ZMB<k%^^d|yT5^deSsHm}Y3WoGv4BNy;Awg52UWx(OoLUR@L znj4dVQz6>S1eDRdH5c$j9^jt|T1s{~U^I9w$5K$s3Fy8>E_G;`j_zB|mxK!i<!1SI z8)dZIN#2$>P+iM=6yCCRBuy>cI}9vSTAsY_@pK+dGQ5z6*zz0b?SU)_`kFYC)ac%T zJyP$6iY8ROfnsa_mb+)Fji;3DSNlmLAZcFvn?BhE>621c*6i6@dzRDw{nuIDQHv2e z`&l0|6Mx3J<y?jjV}{hs?U6|Yz2Gh&UT-+Y8&8qra6F-Voq(mhMy0>B|JjwOzYSNa z)1M7tq)g8N2t9jFK_`uM<sxIISEo*MFZP-F-ru>I?%1aj0@-*+ouu^2#HF`;F3|^W z3o$40LKc6On_KzmUyyAUHh$bcjHgqWljh@D&1csmU=#LN{CiBm`C^AzxWNdUBT^s1 z+N7f(uVL@T-JQ+6%IuBgIFNeNB@KH*Qg4Z|FNo0z$x(;EmAMgT&eWt?q~XcDlcA?m zj*jy-nnl<AF@R#*(CPSP6|6L5UuPDFQ`qjftI@dkG8pnbG01`aLsl_^v3-CFkY9cK z-VxWP=nu1vzs6|f-VsCBNnGz!xE&AK-GnK-pFmVk^#%w`16d~;b1qy1f77YtymPNZ zYnSJc5Q55>J1KX3ybB$?4I8=dtOa}kO0G21+|TDTuW}f8dIg6@($<+u4U{*2ODUXQ z6G3&SkauMH8lGOp>FeE@>1oIogfZrIz|a$@Q>P)lMbJx6InJQ)q9>3oKM9r5pHZP^ z5TKKa<By<lolmsyjBuDpB++V(QT4*#wt42LhD)F_ZW*eZa397n;>zyf$-)V*LsTQc z>7q~Z*Ey87REi9HNno<jC|n6w=G7RmE@C>z2F(#K91PESI>X0Yy<u#Ds39TMjD6<- za^#!Fo0I>AVu@B}$QprbK%OMZmtJJ#9MQ_tn*d!%bM!e7Mi#@2N93Cc(1^H(1lrPD zXB>HaOHUt19ei6Vz{NMmFC?49zcRdl^qQOm!7?ODl_|z${uSVoz*B|<o+@?&(zo?V zoJxl*kr+<CIpnXyxSJ=vZ`SjQh(CjGP6@g+?v@~_$MclF>tjkUPZI6O7%M=+4A~3y zM3ym&d(Ly1Bg-XPqcOS79LcLb0q$v~qBfxHz&KLV3rjy<xUpms+FrG^r};Dp^tg>a ztWy?p$3I8~c;`@;`H%86=^=P7{Gc7q9(SXS00yUVi8EH>bW+jwNH%%f`>2<)U)32| zGOcN6v)6=mebAim!cLFr2SoxC*?GflaGEaiaS{TLwE^bx&3}%(%G6|r%hkzDy{9!& zK&mm?3EqiqP`-ioVYMQv_1S8=a+#<odWF|!C+ZA6!?)%Ou=eIFd2PNYdzhDKBjz1l zmc?jTX8oe=r0Nu~GFiWvSO1$Nl*><px49e?F~^3RJbb%}a*J{lbfC^0z=SSxSZ-1S zEo5sJ2NipI(45dK!qoVqB$!Ux;Ei#(YDFa~VEriSt+}F%POc~nYga?c{|3nZ?SRli zs6+!@3~P7bj1mt(+4AwNW@aa&S0BQp&O^3TF7#4Y@|vx!aUFTfZ+64MB`cwl8=>4I zVXb*H2`wq|T3<u7c_Z}dWh`&*jDcLhtK(PT1@4AkID!&GvI90e8_K~7ax}>3-?a&e zG=6N2{EP;&0f`j@;LQm#E|Do#oeij&2?x3wX}ySVQj@a2flBZlD5tKXjLNsjTUFwr zpcBa!nCC?=^23(4wZ9C)>GLQowKq}*x5I|URSUJwfrBilRK5aAYT*#S4`+#Dp9Qbt zf==4?*es|#5Bb8oB7D2g1p)tRp58*#icbV@I|+%4DJ_`fTglU;YUtgn+hM5ULZ}2j zMg&KQ)Y_NBh(Ep!4sL+d#K{oQz{_Pfkx+5~$nkOg(3?r#{EBvRoJMumiuu$OQorRV z0+O$FQN|JQT=N)2NA-}c=GD32-5}=pDBr3|eK3Aa2lep*^nwdYFzOd6LpL0x?>qhw z#_P7Ysmr|}UwR`?M#~WY8uH87ytW&n`2!3(Zh}<gHY%n06zGNSC0ptWkW*KX&H5g^ zpv(aj{RvH`WXnzHud66mW)@v%bfE)T>!{w@4?Q2q8s4&TFT}Sd;<+@&U}6i%sTV0c zvDA%}%P6gU8QGF8i0>Z)FV@ipa*}L;Eq&m<OF}>_Hab5@f`rj4Squk_N9${VZ`G|r zuZ^dNSHi}&K3Ee|)_8M)UA$T`Nj1r9Y0S9qVBEieY~fvyvg#ekmLNy?d0yj>y7;E+ z$y-P$dCN({fdX!vgNC}mOWZEtU0y5RAt53`Ga@^KARin;!23u@t#JW1pvk~4s04O- zhFylYlvKBmY`W;JjzWEyy%ayO1Lde&&+vrS63Vb0p5K6!y)LB9KnHgfPf&PO3gohm zK3eU;;Ay~iOTOtaPe)|Y*?s0u%D$mK^seN{N2L12@o3j!9fjIQPUF?~#TlIXXOJ4a zst?&7&&4x@v7t<4>0wni`@W9Q9V>^~D9>#l9v!MSG=7+F<+8V9d7ecWC7Q8|!R|>^ z@_$vhqGW0)Pb8A@hMhy*jrMe-4umyb&r>xiitXy{<-N3nlF7of_c=;*AdNkJf4t1A z_)l%4jH9u&f(NL5hePx%>vRw`_g&XVbIvdU%SE=dFn{Q!C-LyAM2(MWZ-(TZDC^T% zGa$;qVpxRYM4!3eOXXfZ$uPioF16s54#=^YZw~2GoNv>db+D7$2pjobpyVA(g0W-3 z++Vl<j9U=KFvTltWb^#@!1FZpnfovN67CBlRFttH1j?iEqQf4aoXl}A5h{~mciaK^ zM8~Q=b85rZwUA#*g0F-eBfgji_$Ee=vkei7enR+RU7)?Tj{7hc4s>zN7T<KKmJ56O zxmI?NO=t5T>4Ngl$m?c&<>=mq(C(#tOYcI`Yd!Zz!1Mq}f2NM0G&Ru-+sLp<dt{`_ z4&4E#>HS=yzo@7#!_YGb*lksf24$NEtDf~|Dg#;j?u;UJ(~9R2oVg`S-DweImAg92 zF<h&G0XGS<|4(bxDO=Yp2O}uUlpJGt3NJwI^)I>P37#zto}448GSYItI>3<b+w0_Y z1wQudLHyNW1-PX$jKOk)QgaYhYvo-#+zDGI-<p~jzgQ0Q2g@GiHxJox5M?wUkAYZH z)4IFOlBIpiTp`E+?Qtww>9;%r<bEM5+XQ5-K!m-?rUA3<MyGl<7W@8BWtX)P3vQxF zB=w<Hk-e3Qw`<k-1{5mKJalOB5Xj?r)tzU?6BJ}P$(D{;Eq+{EvR+)`y#>kBZF(P+ zGw$Qg;nXa)yE|@s9A0F<V>;fy=OUhp??ZnY@85g@@l}L^H?g`L>3_{9J21x!i2i-O zjITyCu=QZkdCuW7GVH)M8ohueLlL@lP0cYK;QzLj!{XcKXvzPFO~rvDbKJNJE74mB z3NNOPir$8yj9x?amytJZ?Yk!og6n8oT2S)1EU5TVldbHDhd^0bt5}ML!iQo=>gL?b z!JF{QF5JzrWE&@oKI)*19tI*s2bW@h=b~bdc%(_Qu=XM+PwKv$vbyBGp44I&1k`D{ z4f(S!L(k)$Awiv%@4G>=<$D-GiRa3_8v%_A_~!ZpMNarIil;dv4v?9}{010O=QdW> zaGmeN#t)7RHJwG_>b@qu)y~sgrXtjbnVpn2{%yV$o<SMKF88qenv@sAK->dV_w-fN z??f+!uf`*dJp|hr@k;@_om){hRMgh&ickNxh>Hx#I3isYKXx*<o>j#;zs#ZH#no%) zpx^Y@SN}c@4+&~HdWVN@Zqe>ZjA4&#=|0re$~XD@RHJc-9J+%}`xGrBZ7RF%KutjN zDyQ~t5xWnyrc;n|6%*gCzglUreoRHb*|KH)BU+0^8{NSlRMNz&`pMw_5KaD?YP2pA z6#2dO-HuAMNNpNAtYz07DF05AzNIUNa~R!D^Ax?_x=_ya`}U>=<&Mbo{nO(X&{65k ziJ4FBr=zU@w2i)d6v!yY^lKS=+{v(ela8{h7fd7`Acu;InoR$SfMb|(<yo)l@XHqD z;3PnLyP|A;)@oEWX(zJB?$6zt%oy=#ky<Gc*`}-ef^>4vt{yE?2Z3Q3_`427bvke6 z+kXxwFRQ+KytwFenuc=V-{~?#DrNO&pr{E%WpPqji~b3o?P^r=#@9|dDw)&Li&dtN z#6=e9C~~*istwtfim3NdD*x(WgQ~<WKmEomEVf)W<Ap}jR;%Ujq$v()lzox$QE+eh zK+)*#_OL7+*!_FVyQ+$+b*%=)`g<=L|B(5*)Z7L9@i5e2O9tOmK$XpqxuC!_faPjs z=+cF#p=n9*oP2APkyib^*h|9VDG@2-^%X>o{J{k;JLZ!2Xvr(nMTu_`Fz!KX);$6K zV!rGJ`PG#??GzL-INi@x_Iv0BCxsC~rj=sfh2U9cl#)BTpeNRDy^hbZ9Aryg3SMKF zYE-rRXYj4!oK8qdC*08APmaq4$jq2Eo^PeMqoLRobQLi9mJ|n-4u5?uMEzgzt>PgH zG79LJE0@7brToMNt{@>*45{Fq6xp;zs`feL4Ibx%zb66u7ZZ}B0qQr>o!4$VO}iT@ zQvHjvtA{5P8J}oIdIWhy9EM!Mb~Dy1qte{vypDS9X8i8U#k9+PSP7Z%ChG<hPhe$5 zFI%zut=KDlW?U)j{`>Ne#JumIetn{*tV=2kN3S?RV=Z#18`ewJ;na+V76I1nT0K0@ z@peY(l%5EivCwZ3UoYlzz6tk51|Ypp@G2J;aaa&umZQ4dYf-EY?uu`rk8-f@0MI62 z4mEpxDR~<cW{H&>FiU!h9cC%_IhdtAQvzn0b)ds6>ydd(e!9#AZrx1uJQXm@{cb={ zsY6T@Qrt>nCM_8cg;RZIvS%JSn8h|LtT<d{`v+0ZZJlOCPfM#=Y2`S~%AWmt%@ijT z%v8@(hgoI0S`n}lZD_EahD+y|RXz6v%<9m_UbDJqGgQpIO3fN8uhp!zP670c2$*%+ zLonty>sD0sn)QUuH|u+14zqzs_+|s%%xtup0%l{688DlyNv&qnilYK%bGS>m+Jqv) z`v%SC-kVy@mSDWsY*|s+YfiTg0`!dOHGgKwKl_ONP-4zSo#xMas$0!di5qX8+S3*= zPxEgel?i9_v=#3=%o&lt_L?(#j_);3Cla}N`idi4&6x!GHfQ!6&}*I%c&ODpW7W?C z=Fj8jv>I5VfPPe`_r(4Ge|6sH#IDBo{ok<mKQ4k<(_^ddXsWS#O$YwKiwOU{CL`jX z6{Y2}Ag*t78_uW?tJ4)MyFUEV8vPH061f={{@)Y*&r|=$6^015!v15^`?u`=+l2p@ z(*Co&dkSODvPV@-rG2z+nG&%7Ix;-Jo#2@pKtp?u$jmd_r_e$(2pIAYt1~R&LCE6{ zhqL)-I){5_oo3OYv-Z>Wu*W84k0--tlFi;;tp=CgV=c=`HhEQv&2D;#E!TF1kE2Ts zAB%&k$)yF974n)e=^?@|)2TPL)6XQFc;%W)u>0s$m~v%noKzXGq_y#+n}TFtU%70G zQytVE>|rqR!XR^k%XzAmAE)UKUQ-uRP<jkf+ks-GA1rx?ggTjkt?vLt&!91tyxI>b z*~1d3Cx@;H*T|-yvUQy#OhYzXFM9b`&Ba3$xdPUz<aa3`BcACFa>Qh|wyq@tm6-#O zpTReK#At2jTf#xPl_!f>OJFGU4+w;_06LVcyfzE*?-3LUc2ao~ua#C8Ovd?^kS%G} z8J!Tll5g>qbd@35iItl99A2d_7b;EN6n;A8R$fgf966oT%HPKrmYq%EdK00p?5XPX z1fy!m`0)>~E)(fEQU7-2)iL*+LHgCNp{#jzsGHWVD7J7!2ZhV1O2uj%MTMqht+J{O zCTpLQr%U0bYB^$6Uj?X{(#4qTOa<_ql3|`+Gicu{n7&Q$DZ2c?F?oR53n6eA+aPNH z2>JTjwGg;;4TX<{tKteqD8)A+bg}FoA1P&w?iMf)%46gl^Oz|D{ulIgIo&P$7|l;t zF&@1M*>oB8N6iXhe%vJ8Qe|q-(TA}dtJrDIR=c+q5u6jn7n`Dp-FbEWO@HUC>>#O+ zw+*W)eXL5RFw>_3bXHe}_G<EWi?Ye9CEAo#*#U9?S~D_zXBc14VQ$1vb*EdNG<!9E I%|?#@0(Zjr82|tP diff --git a/vendor/golang.org/x/net/publicsuffix/data/text b/vendor/golang.org/x/net/publicsuffix/data/text deleted file mode 100644 index 7e51641..0000000 --- a/vendor/golang.org/x/net/publicsuffix/data/text +++ /dev/null @@ -1 +0,0 @@ -birkenesoddtangentinglogoweirbitbucketrzynishikatakayamatta-varjjatjomembersaltdalovepopartysfjordiskussionsbereichatinhlfanishikatsuragitappassenger-associationishikawazukamiokameokamakurazakitaurayasudabitternidisrechtrainingloomy-routerbjarkoybjerkreimdbalsan-suedtirololitapunkapsienamsskoganeibmdeveloperauniteroirmemorialombardiadempresashibetsukumiyamagasakinderoyonagunicloudevelopmentaxiijimarriottayninhaccanthobby-siteval-d-aosta-valleyoriikaracolognebinatsukigataiwanumatajimidsundgcahcesuolocustomer-ocimperiautoscanalytics-gatewayonagoyaveroykenflfanpachihayaakasakawaiishopitsitemasekd1kappenginedre-eikerimo-siemenscaledekaascolipicenoboribetsucks3-eu-west-3utilities-16-balestrandabergentappsseekloges3-eu-west-123paginawebcamauction-acornfshostrodawaraktyubinskaunicommbank123kotisivultrobjectselinogradimo-i-rana4u2-localhostrolekanieruchomoscientistordal-o-g-i-nikolaevents3-ap-northeast-2-ddnsking123homepagefrontappchizip61123saitamakawababia-goracleaningheannakadomarineat-urlimanowarudakuneustarostwodzislawdev-myqnapcloudcontrolledgesuite-stagingdyniamusementdllclstagehirnikonantomobelementorayokosukanoyakumoliserniaurland-4-salernord-aurdalipaywhirlimiteddnslivelanddnss3-ap-south-123siteweberlevagangaviikanonji234lima-cityeats3-ap-southeast-123webseiteambulancechireadmyblogspotaribeiraogakicks-assurfakefurniturealmpmninoheguribigawaurskog-holandinggfarsundds3-ap-southeast-20001wwwedeployokote123hjemmesidealerdalaheadjuegoshikibichuobiraustevollimombetsupplyokoze164-balena-devices3-ca-central-123websiteleaf-south-12hparliamentatsunobninsk8s3-eu-central-1337bjugnishimerablackfridaynightjxn--11b4c3ditchyouripatriabloombergretaijindustriesteinkjerbloxcmsaludivtasvuodnakaiwanairlinekobayashimodatecnologiablushakotanishinomiyashironomniwebview-assetsalvadorbmoattachmentsamegawabmsamnangerbmwellbeingzonebnrweatherchannelsdvrdnsamparalleluxenishinoomotegotsukishiwadavvenjargamvikarpaczest-a-la-maisondre-landivttasvuotnakamai-stagingloppennebomlocalzonebonavstackartuzybondigitaloceanspacesamsclubartowest1-usamsunglugsmall-webspacebookonlineboomlaakesvuemielecceboschristmasakilatiron-riopretoeidsvollovesickaruizawabostik-serverrankoshigayachtsandvikcoromantovalle-d-aostakinouebostonakijinsekikogentlentapisa-geekarumaifmemsetkmaxxn--12c1fe0bradescotksatmpaviancapitalonebouncemerckmsdscloudiybounty-fullensakerrypropertiesangovtoyosatoyokawaboutiquebecologialaichaugiangmbhartiengiangminakamichiharaboutireservdrangedalpusercontentoyotapfizerboyfriendoftheinternetflixn--12cfi8ixb8lublindesnesanjosoyrovnoticiasannanishinoshimattelemarkasaokamikitayamatsurinfinitigopocznore-og-uvdalucaniabozen-sudtiroluccanva-appstmnishiokoppegardray-dnsupdaterbozen-suedtirolukowesteuropencraftoyotomiyazakinsurealtypeformesswithdnsannohekinanporovigonohejinternationaluroybplacedogawarabikomaezakirunordkappgfoggiabrandrayddns5ybrasiliadboxoslockerbresciaogashimadachicappadovaapstemp-dnswatchest-mon-blogueurodirumagazinebrindisiciliabroadwaybroke-itvedestrandraydnsanokashibatakashimashikiyosatokigawabrokerbrothermesserlifestylebtimnetzpisdnpharmaciensantamariakebrowsersafetymarketingmodumetacentrumeteorappharmacymruovatlassian-dev-builderschaefflerbrumunddalutskashiharabrusselsantoandreclaimsanukintlon-2bryanskiptveterinaireadthedocsaobernardovre-eikerbrynebwestus2bzhitomirbzzwhitesnowflakecommunity-prochowicecomodalenissandoycompanyaarphdfcbankasumigaurawa-mazowszexn--1ck2e1bambinagisobetsuldalpha-myqnapcloudaccess3-us-east-2ixboxeroxfinityolasiteastus2comparemarkerryhotelsaves-the-whalessandria-trani-barletta-andriatranibarlettaandriacomsecaasnesoddeno-stagingrondarcondoshifteditorxn--1ctwolominamatarnobrzegrongrossetouchijiwadedyn-berlincolnissayokoshibahikariyaltakazakinzais-a-bookkeepermarshallstatebankasuyalibabahccavuotnagaraholtaleniwaizumiotsurugashimaintenanceomutazasavonarviikaminoyamaxunispaceconferenceconstructionflashdrivefsncf-ipfsaxoconsuladobeio-static-accesscamdvrcampaniaconsultantranoyconsultingroundhandlingroznysaitohnoshookuwanakayamangyshlakdnepropetrovskanlandyndns-freeboxostrowwlkpmgrphilipsyno-dschokokekscholarshipschoolbusinessebycontactivetrailcontagematsubaravendbambleborkdalvdalcest-le-patron-rancherkasydneyukuhashimokawavoues3-sa-east-1contractorskenissedalcookingruecoolblogdnsfor-better-thanhhoarairforcentralus-1cooperativano-frankivskodjeephonefosschoolsztynsetransiphotographysiocoproductionschulplattforminamiechizenisshingucciprianiigatairaumalatvuopmicrolightinguidefinimaringatlancastercorsicafjschulservercosenzakopanecosidnshome-webservercellikescandypopensocialcouchpotatofrieschwarzgwangjuh-ohtawaramotoineppueblockbusternopilawacouncilcouponscrapper-sitecozoravennaharimalborkaszubytemarketscrappinguitarscrysecretrosnubananarepublic-inquiryurihonjoyenthickaragandaxarnetbankanzakiwielunnerepairbusanagochigasakishimabarakawaharaolbia-tempio-olbiatempioolbialowiezachpomorskiengiangjesdalolipopmcdirepbodyn53cqcxn--1lqs03niyodogawacrankyotobetsumidaknongujaratmallcrdyndns-homednscwhminamifuranocreditcardyndns-iphutholdingservehttpbincheonl-ams-1creditunionionjukujitawaravpagecremonashorokanaiecrewhoswholidaycricketnedalcrimeast-kazakhstanangercrotonecrowniphuyencrsvp4cruiseservehumourcuisinellair-traffic-controllagdenesnaaseinet-freakserveircasertainaircraftingvolloansnasaarlanduponthewifidelitypedreamhostersaotomeldaluxurycuneocupcakecuritibacgiangiangryggeecurvalled-aostargets-itranslatedyndns-mailcutegirlfriendyndns-office-on-the-webhoptogurafedoraprojectransurlfeirafembetsukuis-a-bruinsfanfermodenakasatsunairportrapaniizaferraraferraris-a-bulls-fanferrerotikagoshimalopolskanittedalfetsundyndns-wikimobetsumitakagildeskaliszkolamericanfamilydservemp3fgunmaniwamannorth-kazakhstanfhvalerfilegear-augustowiiheyakagefilegear-deatnuniversitysvardofilegear-gbizfilegear-iefilegear-jpmorgangwonporterfilegear-sg-1filminamiizukamiminefinalchikugokasellfyis-a-candidatefinancefinnoyfirebaseappiemontefirenetlifylkesbiblackbaudcdn-edgestackhero-networkinggroupowiathletajimabaria-vungtaudiopsysharpigboatshawilliamhillfirenzefirestonefireweblikes-piedmontravelersinsurancefirmdalegalleryfishingoldpoint2thisamitsukefitjarfitnessettsurugiminamimakis-a-catererfjalerfkatsushikabeebyteappilottonsberguovdageaidnunjargausdalflekkefjordyndns-workservep2phxn--1lqs71dyndns-remotewdyndns-picserveminecraftransporteflesbergushikamifuranorthflankatsuyamashikokuchuoflickragerokunohealthcareershellflierneflirfloginlinefloppythonanywherealtorfloraflorencefloripalmasfjordenfloristanohatajiris-a-celticsfanfloromskogxn--2m4a15eflowershimokitayamafltravinhlonganflynnhosting-clusterfncashgabadaddjabbottoyourafndyndns1fnwkzfolldalfoolfor-ourfor-somegurownproviderfor-theaterfordebianforexrotheworkpccwinbar0emmafann-arborlandd-dnsiskinkyowariasahikawarszawashtenawsmppl-wawsglobalacceleratorahimeshimakanegasakievennodebalancern4t3l3p0rtatarantours3-ap-northeast-123minsidaarborteaches-yogano-ipifony-123miwebaccelastx4432-b-datacenterprisesakijobservableusercontentateshinanomachintaifun-dnsdojournalistoloseyouriparisor-fronavuotnarashinoharaetnabudejjunipereggio-emilia-romagnaroyboltateyamajureggiocalabriakrehamnayoro0o0forgotdnshimonitayanagithubpreviewsaikisarazure-mobileirfjordynnservepicservequakeforli-cesena-forlicesenaforlillehammerfeste-ipimientaketomisatoolshimonosekikawaforsalegoismailillesandefjordynservebbservesarcasmileforsandasuolodingenfortalfortefosneshimosuwalkis-a-chefashionstorebaseljordyndns-serverisignfotrdynulvikatowicefoxn--2scrj9casinordlandurbanamexnetgamersapporomurafozfr-1fr-par-1fr-par-2franamizuhoboleslawiecommerce-shoppingyeongnamdinhachijohanamakisofukushimaoris-a-conservativegarsheiheijis-a-cparachutingfredrikstadynv6freedesktopazimuthaibinhphuocelotenkawakayamagnetcieszynh-servebeero-stageiseiroumugifuchungbukharag-cloud-championshiphoplixn--30rr7yfreemyiphosteurovisionredumbrellangevagrigentobishimadridvagsoygardenebakkeshibechambagricoharugbydgoszczecin-berlindasdaburfreesitefreetlshimotsukefreisennankokubunjis-a-cubicle-slavellinodeobjectshimotsumafrenchkisshikindleikangerfreseniushinichinanfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfroganshinjotelulubin-vpncateringebunkyonanaoshimamateramockashiwarafrognfrolandynvpnpluservicesevastopolitiendafrom-akamaized-stagingfrom-alfrom-arfrom-azurewebsiteshikagamiishibuyabukihokuizumobaragusabaerobaticketshinjukuleuvenicefrom-campobassociatest-iserveblogsytenrissadistdlibestadultrentin-sudtirolfrom-coachaseljeducationcillahppiacenzaganfrom-ctrentin-sued-tirolfrom-dcatfooddagestangefrom-decagliarikuzentakataikillfrom-flapymntrentin-suedtirolfrom-gap-east-1from-higashiagatsumagoianiafrom-iafrom-idyroyrvikingulenfrom-ilfrom-in-the-bandairtelebitbridgestonemurorangecloudplatform0from-kshinkamigototalfrom-kyfrom-langsonyantakahamalselveruminamiminowafrom-malvikaufentigerfrom-mdfrom-mein-vigorlicefrom-mifunefrom-mnfrom-modshinshinotsurgeryfrom-mshinshirofrom-mtnfrom-ncatholicurus-4from-ndfrom-nefrom-nhs-heilbronnoysundfrom-njshintokushimafrom-nminamioguni5from-nvalledaostargithubusercontentrentino-a-adigefrom-nycaxiaskvollpagesardegnarutolgaulardalvivanovoldafrom-ohdancefrom-okegawassamukawataris-a-democratrentino-aadigefrom-orfrom-panasonichernovtsykkylvenneslaskerrylogisticsardiniafrom-pratohmamurogawatsonrenderfrom-ris-a-designerimarugame-hostyhostingfrom-schmidtre-gauldalfrom-sdfrom-tnfrom-txn--32vp30hachinoheavyfrom-utsiracusagaeroclubmedecin-addrammenuorodoyerfrom-val-daostavalleyfrom-vtrentino-alto-adigefrom-wafrom-wiardwebthingsjcbnpparibashkiriafrom-wvallee-aosteroyfrom-wyfrosinonefrostabackplaneapplebesbyengerdalp1froyal-commissionfruskydivingfujiiderafujikawaguchikonefujiminokamoenairtrafficplexus-2fujinomiyadapliefujiokazakinkobearalvahkikonaibetsubame-south-1fujisatoshoeshintomikasaharafujisawafujishiroishidakabiratoridediboxn--3bst00minamisanrikubetsupportrentino-altoadigefujitsuruokakamigaharafujiyoshidappnodearthainguyenfukayabeardubaikawagoefukuchiyamadatsunanjoburgfukudomigawafukuis-a-doctorfukumitsubishigakirkeneshinyoshitomiokamisatokamachippubetsuikitchenfukuokakegawafukuroishikariwakunigamigrationfukusakirovogradoyfukuyamagatakaharunusualpersonfunabashiriuchinadattorelayfunagatakahashimamakiryuohkurafunahashikamiamakusatsumasendaisenergyeongginowaniihamatamakinoharafundfunkfeuerfuoiskujukuriyamandalfuosskoczowindowskrakowinefurubirafurudonordreisa-hockeynutwentertainmentrentino-s-tirolfurukawajimangolffanshiojirishirifujiedafusoctrangfussagamiharafutabayamaguchinomihachimanagementrentino-stirolfutboldlygoingnowhere-for-more-og-romsdalfuttsurutashinais-a-financialadvisor-aurdalfuturecmshioyamelhushirahamatonbetsurnadalfuturehostingfuturemailingfvghakuis-a-gurunzenhakusandnessjoenhaldenhalfmoonscalebookinghostedpictetrentino-sud-tirolhalsakakinokiaham-radio-opinbar1hamburghammarfeastasiahamurakamigoris-a-hard-workershiraokamisunagawahanamigawahanawahandavvesiidanangodaddyn-o-saurealestatefarmerseinehandcrafteducatorprojectrentino-sudtirolhangglidinghangoutrentino-sued-tirolhannannestadhannosegawahanoipinkazohanyuzenhappouzshiratakahagianghasamap-northeast-3hasaminami-alpshishikuis-a-hunterhashbanghasudazaifudaigodogadobeioruntimedio-campidano-mediocampidanomediohasura-appinokokamikoaniikappudopaashisogndalhasvikazteleportrentino-suedtirolhatogayahoooshikamagayaitakamoriokakudamatsuehatoyamazakitahiroshimarcheapartmentshisuifuettertdasnetzhatsukaichikaiseiyoichipshitaramahattfjelldalhayashimamotobusells-for-lesshizukuishimoichilloutsystemscloudsitehazuminobushibukawahelplfinancialhelsinkitakamiizumisanofidonnakamurataitogliattinnhemneshizuokamitondabayashiogamagoriziahemsedalhepforgeblockshoujis-a-knightpointtokaizukamaishikshacknetrentinoa-adigehetemlbfanhigashichichibuzentsujiiehigashihiroshimanehigashiizumozakitakatakanabeautychyattorneyagawakkanaioirasebastopoleangaviikadenagahamaroyhigashikagawahigashikagurasoedahigashikawakitaaikitakyushunantankazunovecorebungoonow-dnshowahigashikurumeinforumzhigashimatsushimarnardalhigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycleshowtimeloyhigashinarusells-for-uhigashinehigashiomitamanoshiroomghigashiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiyoshikawaminamiaikitamihamadahigashitsunospamproxyhigashiurausukitamotosunnydayhigashiyamatokoriyamanashiibaclieu-1higashiyodogawahigashiyoshinogaris-a-landscaperspectakasakitanakagusukumoldeliveryhippyhiraizumisatohokkaidontexistmein-iservschulecznakaniikawatanagurahirakatashinagawahiranais-a-lawyerhirarahiratsukaeruhirayaizuwakamatsubushikusakadogawahitachiomiyaginozawaonsensiositehitachiotaketakaokalmykiahitraeumtgeradegreehjartdalhjelmelandholyhomegoodshwinnersiiitesilkddiamondsimple-urlhomeipioneerhomelinkyard-cloudjiffyresdalhomelinuxn--3ds443ghomeofficehomesecuritymacaparecidahomesecuritypchiryukyuragiizehomesenseeringhomeskleppippugliahomeunixn--3e0b707ehondahonjyoitakarazukaluganskfh-muensterhornindalhorsells-itrentinoaadigehortendofinternet-dnsimplesitehospitalhotelwithflightsirdalhotmailhoyangerhoylandetakasagooglecodespotrentinoalto-adigehungyenhurdalhurumajis-a-liberalhyllestadhyogoris-a-libertarianhyugawarahyundaiwafuneis-very-evillasalleitungsenis-very-goodyearis-very-niceis-very-sweetpepperugiais-with-thebandoomdnstraceisk01isk02jenv-arubacninhbinhdinhktistoryjeonnamegawajetztrentinostiroljevnakerjewelryjgorajlljls-sto1jls-sto2jls-sto3jmpixolinodeusercontentrentinosud-tiroljnjcloud-ver-jpchitosetogitsuliguriajoyokaichibahcavuotnagaivuotnagaokakyotambabymilk3jozis-a-musicianjpnjprsolarvikhersonlanxessolundbeckhmelnitskiyamasoykosaigawakosakaerodromegalloabatobamaceratachikawafaicloudineencoreapigeekoseis-a-painterhostsolutionslupskhakassiakosheroykoshimizumakis-a-patsfankoshughesomakosugekotohiradomainstitutekotourakouhokumakogenkounosupersalevangerkouyamasudakouzushimatrixn--3pxu8khplaystation-cloudyclusterkozagawakozakis-a-personaltrainerkozowiosomnarviklabudhabikinokawachinaganoharamcocottekpnkppspbarcelonagawakepnord-odalwaysdatabaseballangenkainanaejrietisalatinabenogiehtavuoatnaamesjevuemielnombrendlyngen-rootaruibxos3-us-gov-west-1krasnikahokutokonamegatakatoris-a-photographerokussldkrasnodarkredstonekrelliankristiansandcatsoowitdkmpspawnextdirectrentinosudtirolkristiansundkrodsheradkrokstadelvaldaostavangerkropyvnytskyis-a-playershiftcryptonomichinomiyakekryminamiyamashirokawanabelaudnedalnkumamotoyamatsumaebashimofusakatakatsukis-a-republicanonoichinosekigaharakumanowtvaokumatorinokumejimatsumotofukekumenanyokkaichirurgiens-dentistes-en-francekundenkunisakis-a-rockstarachowicekunitachiaraisaijolsterkunitomigusukukis-a-socialistgstagekunneppubtlsopotrentinosued-tirolkuokgroupizzakurgankurobegetmyipirangalluplidlugolekagaminorddalkurogimimozaokinawashirosatochiokinoshimagentositempurlkuroisodegaurakuromatsunais-a-soxfankuronkurotakikawasakis-a-studentalkushirogawakustanais-a-teacherkassyncloudkusuppliesor-odalkutchanelkutnokuzumakis-a-techietipslzkvafjordkvalsundkvamsterdamnserverbaniakvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspdnsor-varangermishimatsusakahogirlymisugitokorozawamitakeharamitourismartlabelingmitoyoakemiuramiyazurecontainerdpoliticaobangmiyotamatsukuris-an-actormjondalenmonzabrianzaramonzaebrianzamonzaedellabrianzamordoviamorenapolicemoriyamatsuuramoriyoshiminamiashigaramormonstermoroyamatsuzakis-an-actressmushcdn77-sslingmortgagemoscowithgoogleapiszmoseushimogosenmosjoenmoskenesorreisahayakawakamiichikawamisatottoris-an-anarchistjordalshalsenmossortlandmosviknx-serversusakiyosupabaseminemotegit-reposoruminanomoviemovimientokyotangotembaixadattowebhareidsbergmozilla-iotrentinosuedtirolmtranbytomaridagawalmartrentinsud-tirolmuikaminokawanishiaizubangemukoelnmunakatanemuosattemupkomatsushimassa-carrara-massacarraramassabuzzmurmanskomforbar2murotorcraftranakatombetsumy-gatewaymusashinodesakegawamuseumincomcastoripressorfoldmusicapetownnews-stagingmutsuzawamy-vigormy-wanggoupilemyactivedirectorymyamazeplaymyasustor-elvdalmycdmycloudnsoundcastorjdevcloudfunctionsokndalmydattolocalcertificationmyddnsgeekgalaxymydissentrentinsudtirolmydobissmarterthanyoumydrobofageometre-experts-comptablesowamydspectruminisitemyeffectrentinsued-tirolmyfastly-edgekey-stagingmyfirewalledreplittlestargardmyforuminterecifedextraspace-to-rentalstomakomaibaramyfritzmyftpaccesspeedpartnermyhome-servermyjinomykolaivencloud66mymailermymediapchoseikarugalsacemyokohamamatsudamypeplatformsharis-an-artistockholmestrandmypetsphinxn--41amyphotoshibajddarvodkafjordvaporcloudmypictureshinomypsxn--42c2d9amysecuritycamerakermyshopblockspjelkavikommunalforbundmyshopifymyspreadshopselectrentinsuedtirolmytabitordermythic-beastspydebergmytis-a-anarchistg-buildermytuleap-partnersquaresindevicenzamyvnchoshichikashukudoyamakeuppermywirecipescaracallypoivronpokerpokrovskommunepolkowicepoltavalle-aostavernpomorzeszowithyoutuberspacekitagawaponpesaro-urbino-pesarourbinopesaromasvuotnaritakurashikis-bykleclerchitachinakagawaltervistaipeigersundynamic-dnsarlpordenonepornporsangerporsangugeporsgrunnanpoznanpraxihuanprdprgmrprimetelprincipeprivatelinkomonowruzhgorodeoprivatizehealthinsuranceprofesionalprogressivegasrlpromonza-e-della-brianzaptokuyamatsushigepropertysnesrvarggatrevisogneprotectionprotonetroandindependent-inquest-a-la-masionprudentialpruszkowiwatsukiyonotaireserve-onlineprvcyonabarumbriaprzeworskogpunyufuelpupulawypussycatanzarowixsitepvhachirogatakahatakaishimojis-a-geekautokeinotteroypvtrogstadpwchowderpzqhadanorthwesternmutualqldqotoyohashimotoshimaqponiatowadaqslgbtroitskomorotsukagawaqualifioapplatter-applatterplcube-serverquangngais-certifiedugit-pagespeedmobilizeroticaltanissettailscaleforcequangninhthuanquangtritonoshonais-foundationquickconnectromsakuragawaquicksytestreamlitapplumbingouvaresearchitectesrhtrentoyonakagyokutoyakomakizunokunimimatakasugais-an-engineeringquipelementstrippertuscanytushungrytuvalle-daostamayukis-into-animeiwamizawatuxfamilytuyenquangbinhthuantwmailvestnesuzukis-gonevestre-slidreggio-calabriavestre-totennishiawakuravestvagoyvevelstadvibo-valentiaavibovalentiavideovinhphuchromedicinagatorogerssarufutsunomiyawakasaikaitakokonoevinnicarbonia-iglesias-carboniaiglesiascarboniavinnytsiavipsinaapplurinacionalvirginanmokurennebuvirtual-userveexchangevirtualservervirtualuserveftpodhalevisakurais-into-carsnoasakuholeckodairaviterboliviajessheimmobilienvivianvivoryvixn--45br5cylvlaanderennesoyvladikavkazimierz-dolnyvladimirvlogintoyonezawavmintsorocabalashovhachiojiyahikobierzycevologdanskoninjambylvolvolkswagencyouvolyngdalvoorlopervossevangenvotevotingvotoyonovps-hostrowiechungnamdalseidfjordynathomebuiltwithdarkhangelskypecorittogojomeetoystre-slidrettozawawmemergencyahabackdropalermochizukikirarahkkeravjuwmflabsvalbardunloppadualstackomvuxn--3hcrj9chonanbuskerudynamisches-dnsarpsborgripeeweeklylotterywoodsidellogliastradingworse-thanhphohochiminhadselbuyshouseshirakolobrzegersundongthapmircloudletshiranukamishihorowowloclawekonskowolawawpdevcloudwpenginepoweredwphostedmailwpmucdnipropetrovskygearappodlasiellaknoluoktagajobojis-an-entertainerwpmudevcdnaccessojamparaglidingwritesthisblogoipodzonewroclawmcloudwsseoullensvanguardianwtcp4wtfastlylbanzaicloudappspotagereporthruherecreationinomiyakonojorpelandigickarasjohkameyamatotakadawuozuerichardlillywzmiuwajimaxn--4it797konsulatrobeepsondriobranconagareyamaizuruhrxn--4pvxs4allxn--54b7fta0ccistrondheimpertrixcdn77-secureadymadealstahaugesunderxn--55qw42gxn--55qx5dxn--5dbhl8dxn--5js045dxn--5rtp49citadelhichisochimkentozsdell-ogliastraderxn--5rtq34kontuminamiuonumatsunoxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264citicarrdrobakamaiorigin-stagingmxn--12co0c3b4evalleaostaobaomoriguchiharaffleentrycloudflare-ipfstcgroupaaskimitsubatamibulsan-suedtirolkuszczytnoopscbgrimstadrrxn--80aaa0cvacationsvchoyodobashichinohealth-carereforminamidaitomanaustdalxn--80adxhksveioxn--80ao21axn--80aqecdr1axn--80asehdbarclaycards3-us-west-1xn--80aswgxn--80aukraanghkeliwebpaaskoyabeagleboardxn--8dbq2axn--8ltr62konyvelohmusashimurayamassivegridxn--8pvr4uxn--8y0a063axn--90a1affinitylotterybnikeisencowayxn--90a3academiamicable-modemoneyxn--90aeroportsinfolionetworkangerxn--90aishobaraxn--90amckinseyxn--90azhytomyrxn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byanagawaxn--asky-iraxn--aurskog-hland-jnbarclays3-us-west-2xn--avery-yuasakurastoragexn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbsvelvikongsbergxn--bck1b9a5dre4civilaviationfabricafederation-webredirectmediatechnologyeongbukashiwazakiyosembokutamamuraxn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyanaizuxn--bjddar-ptarumizusawaxn--blt-elabcienciamallamaceiobbcn-north-1xn--bmlo-graingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpagesquare7xn--brum-voagatrustkanazawaxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarefootballooningjovikarasjoketokashikiyokawaraxn--c1avgxn--c2br7gxn--c3s14misakis-a-therapistoiaxn--cck2b3baremetalombardyn-vpndns3-website-ap-northeast-1xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-into-cartoonsokamitsuexn--ciqpnxn--clchc0ea0b2g2a9gcdxn--czr694bargainstantcloudfrontdoorestauranthuathienhuebinordre-landiherokuapparochernigovernmentjeldsundiscordsays3-website-ap-southeast-1xn--czrs0trvaroyxn--czru2dxn--czrw28barrel-of-knowledgeapplinziitatebayashijonawatebizenakanojoetsumomodellinglassnillfjordiscordsezgoraxn--d1acj3barrell-of-knowledgecomputermezproxyzgorzeleccoffeedbackanagawarmiastalowa-wolayangroupars3-website-ap-southeast-2xn--d1alfaststacksevenassigdalxn--d1atrysiljanxn--d5qv7z876clanbibaiduckdnsaseboknowsitallxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koobindalxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e1a4cldmail-boxaxn--eckvdtc9dxn--efvn9svn-repostuff-4-salexn--efvy88haebaruericssongdalenviknaklodzkochikushinonsenasakuchinotsuchiurakawaxn--ehqz56nxn--elqq16hagakhanhhoabinhduongxn--eveni-0qa01gaxn--f6qx53axn--fct429kooris-a-nascarfanxn--fhbeiarnxn--finny-yuaxn--fiq228c5hsbcleverappsassarinuyamashinazawaxn--fiq64barsycenterprisecloudcontrolappgafanquangnamasteigenoamishirasatochigifts3-website-eu-west-1xn--fiqs8swidnicaravanylvenetogakushimotoganexn--fiqz9swidnikitagatakkomaganexn--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbsswiebodzindependent-commissionxn--forlcesena-c8axn--fpcrj9c3dxn--frde-granexn--frna-woaxn--frya-hraxn--fzc2c9e2clickrisinglesjaguarxn--fzys8d69uvgmailxn--g2xx48clinicasacampinagrandebungotakadaemongolianishitosashimizunaminamiawajikintuitoyotsukaidownloadrudtvsaogoncapooguyxn--gckr3f0fastvps-serveronakanotoddenxn--gecrj9cliniquedaklakasamatsudoesntexisteingeekasserversicherungroks-theatrentin-sud-tirolxn--ggaviika-8ya47hagebostadxn--gildeskl-g0axn--givuotna-8yandexcloudxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-into-gamessinamsosnowieconomiasadojin-dslattuminamitanexn--gmqw5axn--gnstigbestellen-zvbrplsbxn--45brj9churcharterxn--gnstigliefern-wobihirosakikamijimayfirstorfjordxn--h-2failxn--h1ahnxn--h1alizxn--h2breg3eveneswinoujsciencexn--h2brj9c8clothingdustdatadetectrani-andria-barletta-trani-andriaxn--h3cuzk1dienbienxn--hbmer-xqaxn--hcesuolo-7ya35barsyonlinehimejiiyamanouchikujoinvilleirvikarasuyamashikemrevistathellequipmentjmaxxxjavald-aostatics3-website-sa-east-1xn--hebda8basicserversejny-2xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-s4accident-prevention-k3swisstufftoread-booksnestudioxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyaotsusonoxn--io0a7is-leetrentinoaltoadigexn--j1adpohlxn--j1aefauskedsmokorsetagayaseralingenovaraxn--j1ael8basilicataniaxn--j1amhaibarakisosakitahatakamatsukawaxn--j6w193gxn--jlq480n2rgxn--jlster-byasakaiminatoyookananiimiharuxn--jrpeland-54axn--jvr189misasaguris-an-accountantsmolaquilaocais-a-linux-useranishiaritabashikaoizumizakitashiobaraxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--45q11circlerkstagentsasayamaxn--koluokta-7ya57haiduongxn--kprw13dxn--kpry57dxn--kput3is-lostre-toteneis-a-llamarumorimachidaxn--krager-gyasugitlabbvieeexn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49jdfastly-terrariuminamiiseharaxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyasuokanmakiwakuratexn--kvnangen-k0axn--l-1fairwindsynology-diskstationxn--l1accentureklamborghinikkofuefukihabororosynology-dsuzakadnsaliastudynaliastrynxn--laheadju-7yatominamibosoftwarendalenugxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52basketballfinanzjaworznoticeableksvikaratsuginamikatagamilanotogawaxn--lesund-huaxn--lgbbat1ad8jejuxn--lgrd-poacctulaspeziaxn--lhppi-xqaxn--linds-pramericanexpresservegame-serverxn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liacn-northwest-1xn--lten-granvindafjordxn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesxn--mgb9awbfbsbxn--1qqw23axn--mgba3a3ejtunesuzukamogawaxn--mgba3a4f16axn--mgba3a4fra1-deloittexn--mgba7c0bbn0axn--mgbaakc7dvfsxn--mgbaam7a8haiphongonnakatsugawaxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjordiscountry-snowplowiczeladzlgleezeu-2xn--mgbai9azgqp6jelasticbeanstalkharkovalleeaostexn--mgbayh7gparasitexn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskopervikhmelnytskyivalleedaostexn--mgbqly7c0a67fbcngroks-thisayamanobeatsaudaxn--mgbqly7cvafricargoboavistanbulsan-sudtirolxn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhauspostman-echofunatoriginstances3-website-us-east-1xn--mgbx4cd0abkhaziaxn--mix082fbx-osewienxn--mix891fbxosexyxn--mjndalen-64axn--mk0axindependent-inquiryxn--mk1bu44cnpyatigorskjervoyagexn--mkru45is-not-certifiedxn--mlatvuopmi-s4axn--mli-tlavagiskexn--mlselv-iuaxn--moreke-juaxn--mori-qsakuratanxn--mosjen-eyatsukannamihokksundxn--mot-tlavangenxn--mre-og-romsdal-qqbuservecounterstrikexn--msy-ula0hair-surveillancexn--mtta-vrjjat-k7aflakstadaokayamazonaws-cloud9guacuiababybluebiteckidsmynasushiobaracingrok-freeddnsfreebox-osascoli-picenogatabuseating-organicbcgjerdrumcprequalifymelbourneasypanelblagrarq-authgear-stagingjerstadeltaishinomakilovecollegefantasyleaguenoharauthgearappspacehosted-by-previderehabmereitattoolforgerockyombolzano-altoadigeorgeorgiauthordalandroideporteatonamidorivnebetsukubankanumazuryomitanocparmautocodebergamoarekembuchikumagayagawafflecelloisirs3-external-180reggioemiliaromagnarusawaustrheimbalsan-sudtirolivingitpagexlivornobserveregruhostingivestbyglandroverhalladeskjakamaiedge-stagingivingjemnes3-eu-west-2038xn--muost-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--4dbgdty6ciscofreakamaihd-stagingriwataraindroppdalxn--nit225koryokamikawanehonbetsuwanouchikuhokuryugasakis-a-nursellsyourhomeftpiwatexn--nmesjevuemie-tcbalatinord-frontierxn--nnx388axn--nodessakurawebsozais-savedxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1achernivtsicilynxn--4dbrk0cexn--o3cw4hakatanortonkotsunndalxn--o3cyx2axn--od0algardxn--od0aq3beneventodayusuharaxn--ogbpf8fldrvelvetromsohuissier-justicexn--oppegrd-ixaxn--ostery-fyatsushiroxn--osyro-wuaxn--otu796dxn--p1acfedjeezxn--p1ais-slickharkivallee-d-aostexn--pgbs0dhlx3xn--porsgu-sta26fedorainfraclouderaxn--pssu33lxn--pssy2uxn--q7ce6axn--q9jyb4cnsauheradyndns-at-homedepotenzamamicrosoftbankasukabedzin-brbalsfjordietgoryoshiokanravocats3-fips-us-gov-west-1xn--qcka1pmcpenzapposxn--qqqt11misconfusedxn--qxa6axn--qxamunexus-3xn--rady-iraxn--rdal-poaxn--rde-ulazioxn--rdy-0nabaris-uberleetrentinos-tirolxn--rennesy-v1axn--rhkkervju-01afedorapeoplefrakkestadyndns-webhostingujogaszxn--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa-5naturalxn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byawaraxn--rny31hakodatexn--rovu88bentleyusuitatamotorsitestinglitchernihivgubs3-website-us-west-1xn--rros-graphicsxn--rskog-uuaxn--rst-0naturbruksgymnxn--rsta-framercanvasxn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byawatahamaxn--s-1faitheshopwarezzoxn--s9brj9cntraniandriabarlettatraniandriaxn--sandnessjen-ogbentrendhostingliwiceu-3xn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgne-graphoxn--4gbriminiserverxn--skierv-utazurestaticappspaceusercontentunkongsvingerxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5navigationxn--slt-elabogadobeaemcloud-fr1xn--smla-hraxn--smna-gratangenxn--snase-nraxn--sndre-land-0cbeppublishproxyuufcfanirasakindependent-panelomonza-brianzaporizhzhedmarkarelianceu-4xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbeskidyn-ip24xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bloggerxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbestbuyshoparenagasakikuchikuseihicampinashikiminohostfoldnavyuzawaxn--stre-toten-zcbetainaboxfuselfipartindependent-reviewegroweibolognagasukeu-north-1xn--t60b56axn--tckweddingxn--tiq49xqyjelenia-goraxn--tjme-hraxn--tn0agrocerydxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-rzbhzc66xn--trentin-sdtirol-7vbialystokkeymachineu-south-1xn--trentino-sd-tirol-c3bielawakuyachimataharanzanishiazaindielddanuorrindigenamerikawauevje-og-hornnes3-website-us-west-2xn--trentino-sdtirol-szbiella-speziaxn--trentinosd-tirol-rzbieszczadygeyachiyodaeguamfamscompute-1xn--trentinosdtirol-7vbievat-band-campaignieznoorstaplesakyotanabellunordeste-idclkarlsoyxn--trentinsd-tirol-6vbifukagawalbrzycharitydalomzaporizhzhiaxn--trentinsdtirol-nsbigv-infolkebiblegnicalvinklein-butterhcloudiscoursesalangenishigotpantheonsitexn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atventuresinstagingxn--uc0ay4axn--uist22hakonexn--uisz3gxn--unjrga-rtashkenturindalxn--unup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbturystykaneyamazoexn--valle-d-aoste-ehboehringerikexn--valleaoste-e7axn--valledaoste-ebbvadsoccertmgreaterxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctb-hostingxn--vermgensberatung-pwbiharstadotsubetsugarulezajskiervaksdalondonetskarmoyxn--vestvgy-ixa6oxn--vg-yiabruzzombieidskogasawarackmazerbaijan-mayenbaidarmeniaxn--vgan-qoaxn--vgsy-qoa0jellybeanxn--vgu402coguchikuzenishiwakinvestmentsaveincloudyndns-at-workisboringsakershusrcfdyndns-blogsitexn--vhquvestfoldxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bihoronobeokagakikugawalesundiscoverdalondrinaplesknsalon-1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1communexn--wgbl6axn--xhq521bikedaejeonbuk0xn--xkc2al3hye2axn--xkc2dl3a5ee0hakubackyardshiraois-a-greenxn--y9a3aquarelleasingxn--yer-znavois-very-badxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--4it168dxn--ystre-slidre-ujbiofficialorenskoglobodoes-itcouldbeworldishangrilamdongnairkitapps-audibleasecuritytacticsxn--0trq7p7nnishiharaxn--zbx025dxn--zf0ao64axn--zf0avxlxn--zfr164bipartsaloonishiizunazukindustriaxnbayernxz \ No newline at end of file diff --git a/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/golang.org/x/net/publicsuffix/list.go deleted file mode 100644 index d56e9e7..0000000 --- a/vendor/golang.org/x/net/publicsuffix/list.go +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go - -// Package publicsuffix provides a public suffix list based on data from -// https://publicsuffix.org/ -// -// A public suffix is one under which Internet users can directly register -// names. It is related to, but different from, a TLD (top level domain). -// -// "com" is a TLD (top level domain). Top level means it has no dots. -// -// "com" is also a public suffix. Amazon and Google have registered different -// siblings under that domain: "amazon.com" and "google.com". -// -// "au" is another TLD, again because it has no dots. But it's not "amazon.au". -// Instead, it's "amazon.com.au". -// -// "com.au" isn't an actual TLD, because it's not at the top level (it has -// dots). But it is an eTLD (effective TLD), because that's the branching point -// for domain name registrars. -// -// Another name for "an eTLD" is "a public suffix". Often, what's more of -// interest is the eTLD+1, or one more label than the public suffix. For -// example, browsers partition read/write access to HTTP cookies according to -// the eTLD+1. Web pages served from "amazon.com.au" can't read cookies from -// "google.com.au", but web pages served from "maps.google.com" can share -// cookies from "www.google.com", so you don't have to sign into Google Maps -// separately from signing into Google Web Search. Note that all four of those -// domains have 3 labels and 2 dots. The first two domains are each an eTLD+1, -// the last two are not (but share the same eTLD+1: "google.com"). -// -// All of these domains have the same eTLD+1: -// - "www.books.amazon.co.uk" -// - "books.amazon.co.uk" -// - "amazon.co.uk" -// -// Specifically, the eTLD+1 is "amazon.co.uk", because the eTLD is "co.uk". -// -// There is no closed form algorithm to calculate the eTLD of a domain. -// Instead, the calculation is data driven. This package provides a -// pre-compiled snapshot of Mozilla's PSL (Public Suffix List) data at -// https://publicsuffix.org/ -package publicsuffix // import "golang.org/x/net/publicsuffix" - -// TODO: specify case sensitivity and leading/trailing dot behavior for -// func PublicSuffix and func EffectiveTLDPlusOne. - -import ( - "fmt" - "net/http/cookiejar" - "strings" -) - -// List implements the cookiejar.PublicSuffixList interface by calling the -// PublicSuffix function. -var List cookiejar.PublicSuffixList = list{} - -type list struct{} - -func (list) PublicSuffix(domain string) string { - ps, _ := PublicSuffix(domain) - return ps -} - -func (list) String() string { - return version -} - -// PublicSuffix returns the public suffix of the domain using a copy of the -// publicsuffix.org database compiled into the library. -// -// icann is whether the public suffix is managed by the Internet Corporation -// for Assigned Names and Numbers. If not, the public suffix is either a -// privately managed domain (and in practice, not a top level domain) or an -// unmanaged top level domain (and not explicitly mentioned in the -// publicsuffix.org list). For example, "foo.org" and "foo.co.uk" are ICANN -// domains, "foo.dyndns.org" and "foo.blogspot.co.uk" are private domains and -// "cromulent" is an unmanaged top level domain. -// -// Use cases for distinguishing ICANN domains like "foo.com" from private -// domains like "foo.appspot.com" can be found at -// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases -func PublicSuffix(domain string) (publicSuffix string, icann bool) { - lo, hi := uint32(0), uint32(numTLD) - s, suffix, icannNode, wildcard := domain, len(domain), false, false -loop: - for { - dot := strings.LastIndex(s, ".") - if wildcard { - icann = icannNode - suffix = 1 + dot - } - if lo == hi { - break - } - f := find(s[1+dot:], lo, hi) - if f == notFound { - break - } - - u := uint32(nodes.get(f) >> (nodesBitsTextOffset + nodesBitsTextLength)) - icannNode = u&(1<<nodesBitsICANN-1) != 0 - u >>= nodesBitsICANN - u = children.get(u & (1<<nodesBitsChildren - 1)) - lo = u & (1<<childrenBitsLo - 1) - u >>= childrenBitsLo - hi = u & (1<<childrenBitsHi - 1) - u >>= childrenBitsHi - switch u & (1<<childrenBitsNodeType - 1) { - case nodeTypeNormal: - suffix = 1 + dot - case nodeTypeException: - suffix = 1 + len(s) - break loop - } - u >>= childrenBitsNodeType - wildcard = u&(1<<childrenBitsWildcard-1) != 0 - if !wildcard { - icann = icannNode - } - - if dot == -1 { - break - } - s = s[:dot] - } - if suffix == len(domain) { - // If no rules match, the prevailing rule is "*". - return domain[1+strings.LastIndex(domain, "."):], icann - } - return domain[suffix:], icann -} - -const notFound uint32 = 1<<32 - 1 - -// find returns the index of the node in the range [lo, hi) whose label equals -// label, or notFound if there is no such node. The range is assumed to be in -// strictly increasing node label order. -func find(label string, lo, hi uint32) uint32 { - for lo < hi { - mid := lo + (hi-lo)/2 - s := nodeLabel(mid) - if s < label { - lo = mid + 1 - } else if s == label { - return mid - } else { - hi = mid - } - } - return notFound -} - -// nodeLabel returns the label for the i'th node. -func nodeLabel(i uint32) string { - x := nodes.get(i) - length := x & (1<<nodesBitsTextLength - 1) - x >>= nodesBitsTextLength - offset := x & (1<<nodesBitsTextOffset - 1) - return text[offset : offset+length] -} - -// EffectiveTLDPlusOne returns the effective top level domain plus one more -// label. For example, the eTLD+1 for "foo.bar.golang.org" is "golang.org". -func EffectiveTLDPlusOne(domain string) (string, error) { - if strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") || strings.Contains(domain, "..") { - return "", fmt.Errorf("publicsuffix: empty label in domain %q", domain) - } - - suffix, _ := PublicSuffix(domain) - if len(domain) <= len(suffix) { - return "", fmt.Errorf("publicsuffix: cannot derive eTLD+1 for domain %q", domain) - } - i := len(domain) - len(suffix) - 1 - if domain[i] != '.' { - return "", fmt.Errorf("publicsuffix: invalid public suffix %q for domain %q", suffix, domain) - } - return domain[1+strings.LastIndex(domain[:i], "."):], nil -} - -type uint32String string - -func (u uint32String) get(i uint32) uint32 { - off := i * 4 - return (uint32(u[off])<<24 | - uint32(u[off+1])<<16 | - uint32(u[off+2])<<8 | - uint32(u[off+3])) -} - -type uint40String string - -func (u uint40String) get(i uint32) uint64 { - off := uint64(i * (nodesBits / 8)) - return uint64(u[off])<<32 | - uint64(u[off+1])<<24 | - uint64(u[off+2])<<16 | - uint64(u[off+3])<<8 | - uint64(u[off+4]) -} diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go deleted file mode 100644 index 78d400f..0000000 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ /dev/null @@ -1,70 +0,0 @@ -// generated by go run gen.go; DO NOT EDIT - -package publicsuffix - -import _ "embed" - -const version = "publicsuffix.org's public_suffix_list.dat, git revision 63cbc63d470d7b52c35266aa96c4c98c96ec499c (2023-08-03T10:01:25Z)" - -const ( - nodesBits = 40 - nodesBitsChildren = 10 - nodesBitsICANN = 1 - nodesBitsTextOffset = 16 - nodesBitsTextLength = 6 - - childrenBitsWildcard = 1 - childrenBitsNodeType = 2 - childrenBitsHi = 14 - childrenBitsLo = 14 -) - -const ( - nodeTypeNormal = 0 - nodeTypeException = 1 - nodeTypeParentOnly = 2 -) - -// numTLD is the number of top level domains. -const numTLD = 1474 - -// text is the combined text of all labels. -// -//go:embed data/text -var text string - -// nodes is the list of nodes. Each node is represented as a 40-bit integer, -// which encodes the node's children, wildcard bit and node type (as an index -// into the children array), ICANN bit and text. -// -// The layout within the node, from MSB to LSB, is: -// -// [ 7 bits] unused -// [10 bits] children index -// [ 1 bits] ICANN bit -// [16 bits] text index -// [ 6 bits] text length -// -//go:embed data/nodes -var nodes uint40String - -// children is the list of nodes' children, the parent's wildcard bit and the -// parent's node type. If a node has no children then their children index -// will be in the range [0, 6), depending on the wildcard bit and node type. -// -// The layout within the uint32, from MSB to LSB, is: -// -// [ 1 bits] unused -// [ 1 bits] wildcard bit -// [ 2 bits] node type -// [14 bits] high nodes index (exclusive) of children -// [14 bits] low nodes index (inclusive) of children -// -//go:embed data/children -var children uint32String - -// max children 743 (capacity 1023) -// max text offset 30876 (capacity 65535) -// max text length 31 (capacity 63) -// max hi 9322 (capacity 16383) -// max lo 9317 (capacity 16383) diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE deleted file mode 100644 index 2a7cf70..0000000 --- a/vendor/golang.org/x/text/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright 2009 The Go Authors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/text/PATENTS b/vendor/golang.org/x/text/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/text/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap.go b/vendor/golang.org/x/text/encoding/charmap/charmap.go deleted file mode 100644 index e89ff07..0000000 --- a/vendor/golang.org/x/text/encoding/charmap/charmap.go +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run maketables.go - -// Package charmap provides simple character encodings such as IBM Code Page 437 -// and Windows 1252. -package charmap // import "golang.org/x/text/encoding/charmap" - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// These encodings vary only in the way clients should interpret them. Their -// coded character set is identical and a single implementation can be shared. -var ( - // ISO8859_6E is the ISO 8859-6E encoding. - ISO8859_6E encoding.Encoding = &iso8859_6E - - // ISO8859_6I is the ISO 8859-6I encoding. - ISO8859_6I encoding.Encoding = &iso8859_6I - - // ISO8859_8E is the ISO 8859-8E encoding. - ISO8859_8E encoding.Encoding = &iso8859_8E - - // ISO8859_8I is the ISO 8859-8I encoding. - ISO8859_8I encoding.Encoding = &iso8859_8I - - iso8859_6E = internal.Encoding{ - Encoding: ISO8859_6, - Name: "ISO-8859-6E", - MIB: identifier.ISO88596E, - } - - iso8859_6I = internal.Encoding{ - Encoding: ISO8859_6, - Name: "ISO-8859-6I", - MIB: identifier.ISO88596I, - } - - iso8859_8E = internal.Encoding{ - Encoding: ISO8859_8, - Name: "ISO-8859-8E", - MIB: identifier.ISO88598E, - } - - iso8859_8I = internal.Encoding{ - Encoding: ISO8859_8, - Name: "ISO-8859-8I", - MIB: identifier.ISO88598I, - } -) - -// All is a list of all defined encodings in this package. -var All []encoding.Encoding = listAll - -// TODO: implement these encodings, in order of importance. -// ASCII, ISO8859_1: Rather common. Close to Windows 1252. -// ISO8859_9: Close to Windows 1254. - -// utf8Enc holds a rune's UTF-8 encoding in data[:len]. -type utf8Enc struct { - len uint8 - data [3]byte -} - -// Charmap is an 8-bit character set encoding. -type Charmap struct { - // name is the encoding's name. - name string - // mib is the encoding type of this encoder. - mib identifier.MIB - // asciiSuperset states whether the encoding is a superset of ASCII. - asciiSuperset bool - // low is the lower bound of the encoded byte for a non-ASCII rune. If - // Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00. - low uint8 - // replacement is the encoded replacement character. - replacement byte - // decode is the map from encoded byte to UTF-8. - decode [256]utf8Enc - // encoding is the map from runes to encoded bytes. Each entry is a - // uint32: the high 8 bits are the encoded byte and the low 24 bits are - // the rune. The table entries are sorted by ascending rune. - encode [256]uint32 -} - -// NewDecoder implements the encoding.Encoding interface. -func (m *Charmap) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}} -} - -// NewEncoder implements the encoding.Encoding interface. -func (m *Charmap) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}} -} - -// String returns the Charmap's name. -func (m *Charmap) String() string { - return m.name -} - -// ID implements an internal interface. -func (m *Charmap) ID() (mib identifier.MIB, other string) { - return m.mib, "" -} - -// charmapDecoder implements transform.Transformer by decoding to UTF-8. -type charmapDecoder struct { - transform.NopResetter - charmap *Charmap -} - -func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for i, c := range src { - if m.charmap.asciiSuperset && c < utf8.RuneSelf { - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = c - nDst++ - nSrc = i + 1 - continue - } - - decode := &m.charmap.decode[c] - n := int(decode.len) - if nDst+n > len(dst) { - err = transform.ErrShortDst - break - } - // It's 15% faster to avoid calling copy for these tiny slices. - for j := 0; j < n; j++ { - dst[nDst] = decode.data[j] - nDst++ - } - nSrc = i + 1 - } - return nDst, nSrc, err -} - -// DecodeByte returns the Charmap's rune decoding of the byte b. -func (m *Charmap) DecodeByte(b byte) rune { - switch x := &m.decode[b]; x.len { - case 1: - return rune(x.data[0]) - case 2: - return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f) - default: - return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f) - } -} - -// charmapEncoder implements transform.Transformer by encoding from UTF-8. -type charmapEncoder struct { - transform.NopResetter - charmap *Charmap -} - -func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for nSrc < len(src) { - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - if m.charmap.asciiSuperset { - nSrc++ - dst[nDst] = uint8(r) - nDst++ - continue - } - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - } else { - err = internal.RepertoireError(m.charmap.replacement) - } - break - } - } - - // Binary search in [low, high) for that rune in the m.charmap.encode table. - for low, high := int(m.charmap.low), 0x100; ; { - if low >= high { - err = internal.RepertoireError(m.charmap.replacement) - break loop - } - mid := (low + high) / 2 - got := m.charmap.encode[mid] - gotRune := rune(got & (1<<24 - 1)) - if gotRune < r { - low = mid + 1 - } else if gotRune > r { - high = mid - } else { - dst[nDst] = byte(got >> 24) - nDst++ - break - } - } - nSrc += size - } - return nDst, nSrc, err -} - -// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether -// r is in the Charmap's repertoire. If not, b is set to the Charmap's -// replacement byte. This is often the ASCII substitute character '\x1a'. -func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) { - if r < utf8.RuneSelf && m.asciiSuperset { - return byte(r), true - } - for low, high := int(m.low), 0x100; ; { - if low >= high { - return m.replacement, false - } - mid := (low + high) / 2 - got := m.encode[mid] - gotRune := rune(got & (1<<24 - 1)) - if gotRune < r { - low = mid + 1 - } else if gotRune > r { - high = mid - } else { - return byte(got >> 24), true - } - } -} diff --git a/vendor/golang.org/x/text/encoding/charmap/tables.go b/vendor/golang.org/x/text/encoding/charmap/tables.go deleted file mode 100644 index cf7281e..0000000 --- a/vendor/golang.org/x/text/encoding/charmap/tables.go +++ /dev/null @@ -1,7410 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package charmap - -import ( - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" -) - -// CodePage037 is the IBM Code Page 037 encoding. -var CodePage037 *Charmap = &codePage037 - -var codePage037 = Charmap{ - name: "IBM Code Page 037", - mib: identifier.IBM037, - asciiSuperset: false, - low: 0x00, - replacement: 0x3f, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, - {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, - {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, - {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, - {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, - {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, - {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, - {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, - {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, - {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, - {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, - {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, - {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, - {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, - {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, - {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, - {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, - {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, - {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, - {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, - {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, - {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, - {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, - {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, - 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, - 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, - 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, - 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, - 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, - 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, - 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, - 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, - 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, - 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, - 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, - 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, - 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, - 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, - 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, - 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, - 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, - 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, - 0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, - 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, - 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, - 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, - 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, - 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, - 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, - 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, - 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, - 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, - 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, - }, -} - -// CodePage437 is the IBM Code Page 437 encoding. -var CodePage437 *Charmap = &codePage437 - -var codePage437 = Charmap{ - name: "IBM Code Page 437", - mib: identifier.PC8CodePage437, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, - {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, - {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, - {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, - {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, - 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, - 0xab0000bd, 0xa80000bf, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, - 0x990000d6, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, - 0x910000e6, 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, - 0x8c0000ee, 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, - 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, - 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, - 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, - 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage850 is the IBM Code Page 850 encoding. -var CodePage850 *Charmap = &codePage850 - -var codePage850 = Charmap{ - name: "IBM Code Page 850", - mib: identifier.PC850Multilingual, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, - {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, - {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, - {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, - {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, - 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, - 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, - 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, - 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, - 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, - 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, - 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, - 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, - 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, - 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, - 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, - 0xd5000131, 0x9f000192, 0xf2002017, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, - 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, - 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, - 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage852 is the IBM Code Page 852 encoding. -var CodePage852 *Charmap = &codePage852 - -var codePage852 = Charmap{ - name: "IBM Code Page 852", - mib: identifier.PCp852, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc5, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc5, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, - {2, [3]byte{0xc4, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, - {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, - {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, - {2, [3]byte{0xc5, 0xa5, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbe, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x9f, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x9a, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {2, [3]byte{0xc4, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, - {2, [3]byte{0xc4, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x8f, 0x00}}, {2, [3]byte{0xc5, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, - {2, [3]byte{0xc4, 0x9b, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc5, 0xa2, 0x00}}, - {2, [3]byte{0xc5, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc5, 0x84, 0x00}}, {2, [3]byte{0xc5, 0x88, 0x00}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, - {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, - {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, - {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, - {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, - {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x99, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xcf0000a4, 0xf50000a7, 0xf90000a8, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xf80000b0, - 0xef0000b4, 0xf70000b8, 0xaf0000bb, 0xb50000c1, 0xb60000c2, 0x8e0000c4, 0x800000c7, 0x900000c9, - 0xd30000cb, 0xd60000cd, 0xd70000ce, 0xe00000d3, 0xe20000d4, 0x990000d6, 0x9e0000d7, 0xe90000da, - 0x9a0000dc, 0xed0000dd, 0xe10000df, 0xa00000e1, 0x830000e2, 0x840000e4, 0x870000e7, 0x820000e9, - 0x890000eb, 0xa10000ed, 0x8c0000ee, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0xa30000fa, - 0x810000fc, 0xec0000fd, 0xc6000102, 0xc7000103, 0xa4000104, 0xa5000105, 0x8f000106, 0x86000107, - 0xac00010c, 0x9f00010d, 0xd200010e, 0xd400010f, 0xd1000110, 0xd0000111, 0xa8000118, 0xa9000119, - 0xb700011a, 0xd800011b, 0x91000139, 0x9200013a, 0x9500013d, 0x9600013e, 0x9d000141, 0x88000142, - 0xe3000143, 0xe4000144, 0xd5000147, 0xe5000148, 0x8a000150, 0x8b000151, 0xe8000154, 0xea000155, - 0xfc000158, 0xfd000159, 0x9700015a, 0x9800015b, 0xb800015e, 0xad00015f, 0xe6000160, 0xe7000161, - 0xdd000162, 0xee000163, 0x9b000164, 0x9c000165, 0xde00016e, 0x8500016f, 0xeb000170, 0xfb000171, - 0x8d000179, 0xab00017a, 0xbd00017b, 0xbe00017c, 0xa600017d, 0xa700017e, 0xf30002c7, 0xf40002d8, - 0xfa0002d9, 0xf20002db, 0xf10002dd, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, - 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, - 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, - 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage855 is the IBM Code Page 855 encoding. -var CodePage855 *Charmap = &codePage855 - -var codePage855 = Charmap{ - name: "IBM Code Page 855", - mib: identifier.IBM855, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x82, 0x00}}, - {2, [3]byte{0xd1, 0x93, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x84, 0x00}}, - {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, - {2, [3]byte{0xd1, 0x97, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, - {2, [3]byte{0xd1, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x8a, 0x00}}, - {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, - {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, - {2, [3]byte{0xd1, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xae, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, - {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0x94, 0x00}}, - {2, [3]byte{0xd0, 0xb5, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xa4, 0x00}}, - {2, [3]byte{0xd0, 0xb3, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, - {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, - {2, [3]byte{0xd0, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd1, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xd0, 0xaf, 0x00}}, {2, [3]byte{0xd1, 0x80, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd0, 0xa1, 0x00}}, {2, [3]byte{0xd1, 0x82, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd0, 0xa3, 0x00}}, {2, [3]byte{0xd0, 0xb6, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x8c, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd0, 0xab, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd0, 0xa9, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xcf0000a4, 0xfd0000a7, 0xae0000ab, 0xf00000ad, 0xaf0000bb, 0x85000401, 0x81000402, - 0x83000403, 0x87000404, 0x89000405, 0x8b000406, 0x8d000407, 0x8f000408, 0x91000409, 0x9300040a, - 0x9500040b, 0x9700040c, 0x9900040e, 0x9b00040f, 0xa1000410, 0xa3000411, 0xec000412, 0xad000413, - 0xa7000414, 0xa9000415, 0xea000416, 0xf4000417, 0xb8000418, 0xbe000419, 0xc700041a, 0xd100041b, - 0xd300041c, 0xd500041d, 0xd700041e, 0xdd00041f, 0xe2000420, 0xe4000421, 0xe6000422, 0xe8000423, - 0xab000424, 0xb6000425, 0xa5000426, 0xfc000427, 0xf6000428, 0xfa000429, 0x9f00042a, 0xf200042b, - 0xee00042c, 0xf800042d, 0x9d00042e, 0xe000042f, 0xa0000430, 0xa2000431, 0xeb000432, 0xac000433, - 0xa6000434, 0xa8000435, 0xe9000436, 0xf3000437, 0xb7000438, 0xbd000439, 0xc600043a, 0xd000043b, - 0xd200043c, 0xd400043d, 0xd600043e, 0xd800043f, 0xe1000440, 0xe3000441, 0xe5000442, 0xe7000443, - 0xaa000444, 0xb5000445, 0xa4000446, 0xfb000447, 0xf5000448, 0xf9000449, 0x9e00044a, 0xf100044b, - 0xed00044c, 0xf700044d, 0x9c00044e, 0xde00044f, 0x84000451, 0x80000452, 0x82000453, 0x86000454, - 0x88000455, 0x8a000456, 0x8c000457, 0x8e000458, 0x90000459, 0x9200045a, 0x9400045b, 0x9600045c, - 0x9800045e, 0x9a00045f, 0xef002116, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, - 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, - 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, - 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage858 is the Windows Code Page 858 encoding. -var CodePage858 *Charmap = &codePage858 - -var codePage858 = Charmap{ - name: "Windows Code Page 858", - mib: identifier.IBM00858, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, - {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, - {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, - {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, - {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, - {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, - 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, - 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, - 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, - 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, - 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, - 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, - 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, - 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, - 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, - 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, - 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, - 0x9f000192, 0xf2002017, 0xd50020ac, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, - 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, - 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, - 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage860 is the IBM Code Page 860 encoding. -var CodePage860 *Charmap = &codePage860 - -var codePage860 = Charmap{ - name: "IBM Code Page 860", - mib: identifier.IBM860, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x8a, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, - {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, - {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, - {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, - {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, - 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, - 0xa80000bf, 0x910000c0, 0x860000c1, 0x8f0000c2, 0x8e0000c3, 0x800000c7, 0x920000c8, 0x900000c9, - 0x890000ca, 0x980000cc, 0x8b0000cd, 0xa50000d1, 0xa90000d2, 0x9f0000d3, 0x8c0000d4, 0x990000d5, - 0x9d0000d9, 0x960000da, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e3, - 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x8d0000ec, 0xa10000ed, 0xa40000f1, 0x950000f2, - 0xa20000f3, 0x930000f4, 0x940000f5, 0xf60000f7, 0x970000f9, 0xa30000fa, 0x810000fc, 0xe2000393, - 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, - 0xe50003c3, 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, - 0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xf4002320, 0xf5002321, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage862 is the IBM Code Page 862 encoding. -var CodePage862 *Charmap = &codePage862 - -var codePage862 = Charmap{ - name: "IBM Code Page 862", - mib: identifier.PC862LatinHebrew, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, - {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, - {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, - {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, - {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, - {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, - {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, - {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, - {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, - {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, - {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, - {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, - {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, - {2, [3]byte{0xd7, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, - {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, - {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, - {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, - {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, - 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, - 0xab0000bd, 0xa80000bf, 0xa50000d1, 0xe10000df, 0xa00000e1, 0xa10000ed, 0xa40000f1, 0xa20000f3, - 0xf60000f7, 0xa30000fa, 0x9f000192, 0xe2000393, 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, - 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xed0003c6, 0x800005d0, - 0x810005d1, 0x820005d2, 0x830005d3, 0x840005d4, 0x850005d5, 0x860005d6, 0x870005d7, 0x880005d8, - 0x890005d9, 0x8a0005da, 0x8b0005db, 0x8c0005dc, 0x8d0005dd, 0x8e0005de, 0x8f0005df, 0x900005e0, - 0x910005e1, 0x920005e2, 0x930005e3, 0x940005e4, 0x950005e5, 0x960005e6, 0x970005e7, 0x980005e8, - 0x990005e9, 0x9a0005ea, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, - 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage863 is the IBM Code Page 863 encoding. -var CodePage863 *Charmap = &codePage863 - -var codePage863 = Charmap{ - name: "IBM Code Page 863", - mib: identifier.IBM863, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x97}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, - {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, - {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, - {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, - {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0x9b0000a2, 0x9c0000a3, 0x980000a4, 0xa00000a6, 0x8f0000a7, 0xa40000a8, 0xae0000ab, - 0xaa0000ac, 0xa70000af, 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xa60000b3, 0xa10000b4, 0xe60000b5, - 0x860000b6, 0xfa0000b7, 0xa50000b8, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xad0000be, 0x8e0000c0, - 0x840000c2, 0x800000c7, 0x910000c8, 0x900000c9, 0x920000ca, 0x940000cb, 0xa80000ce, 0x950000cf, - 0x990000d4, 0x9d0000d9, 0x9e0000db, 0x9a0000dc, 0xe10000df, 0x850000e0, 0x830000e2, 0x870000e7, - 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8c0000ee, 0x8b0000ef, 0xa20000f3, 0x930000f4, - 0xf60000f7, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x9f000192, 0xe2000393, 0xe9000398, - 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, - 0xe70003c4, 0xed0003c6, 0x8d002017, 0xfc00207f, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, - 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage865 is the IBM Code Page 865 encoding. -var CodePage865 *Charmap = &codePage865 - -var codePage865 = Charmap{ - name: "IBM Code Page 865", - mib: identifier.IBM865, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, - {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, - {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, - {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, - {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xad0000a1, 0x9c0000a3, 0xaf0000a4, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, - 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xac0000bc, 0xab0000bd, 0xa80000bf, - 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, 0x990000d6, 0x9d0000d8, - 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, 0x910000e6, - 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, - 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0x9b0000f8, - 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, - 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, - 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, - 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage866 is the IBM Code Page 866 encoding. -var CodePage866 *Charmap = &codePage866 - -var codePage866 = Charmap{ - name: "IBM Code Page 866", - mib: identifier.IBM866, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, - {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, - {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, - {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, - {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, - {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, - {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, - {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, - {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e, - 0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417, - 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, - 0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427, - 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, - 0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437, - 0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f, - 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447, - 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f, - 0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500, - 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, - 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, - 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, - 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, - 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, - 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, - }, -} - -// CodePage1047 is the IBM Code Page 1047 encoding. -var CodePage1047 *Charmap = &codePage1047 - -var codePage1047 = Charmap{ - name: "IBM Code Page 1047", - mib: identifier.IBM1047, - asciiSuperset: false, - low: 0x00, - replacement: 0x3f, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, - {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, - {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, - {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, - {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, - {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}}, - {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, - {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, - {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, - {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, - {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, - {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, - {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, - {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, - {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, - {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, - {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, - {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, - {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, - {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, - {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, - {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, - {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, - {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, - 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, - 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, - 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, - 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, - 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, - 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, - 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, - 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, - 0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f, - 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, - 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, - 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, - 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, - 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, - 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, - 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, - 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, - 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, - 0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, - 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, - 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, - 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, - 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, - 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, - 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df, - 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, - 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, - 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, - 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, - }, -} - -// CodePage1140 is the IBM Code Page 1140 encoding. -var CodePage1140 *Charmap = &codePage1140 - -var codePage1140 = Charmap{ - name: "IBM Code Page 1140", - mib: identifier.IBM01140, - asciiSuperset: false, - low: 0x00, - replacement: 0x3f, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, - {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, - {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, - {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, - {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, - {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, - {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, - {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, - {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, - {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, - {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, - {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, - {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, - {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, - {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, - {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, - {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, - {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, - {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, - {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, - {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, - {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, - {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, - {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, - {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, - {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, - 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, - 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, - 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, - 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, - 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, - 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, - 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, - 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, - 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, - 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, - 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, - 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, - 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, - 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, - 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, - 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, - 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, - 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8, - 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0, - 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8, - 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0, - 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8, - 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0, - 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8, - 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0, - 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8, - 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0, - 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8, - 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac, - }, -} - -// ISO8859_1 is the ISO 8859-1 encoding. -var ISO8859_1 *Charmap = &iso8859_1 - -var iso8859_1 = Charmap{ - name: "ISO 8859-1", - mib: identifier.ISOLatin1, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, - {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, - {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, - {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, - {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, - {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, - {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, - {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, - {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, - {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, - 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, - 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, - 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, - 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, - 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, - 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, - 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, - 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, - 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, - 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, - }, -} - -// ISO8859_2 is the ISO 8859-2 encoding. -var ISO8859_2 *Charmap = &iso8859_2 - -var iso8859_2 = Charmap{ - name: "ISO 8859-2", - mib: identifier.ISOLatin2, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, - {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, - {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, - {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xbe, 0x00}}, - {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, - {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, - {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, - {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, - {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, - {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, - {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb40000b4, 0xb80000b8, - 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, - 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, - 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, - 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, 0xfd0000fd, 0xc3000102, - 0xe3000103, 0xa1000104, 0xb1000105, 0xc6000106, 0xe6000107, 0xc800010c, 0xe800010d, 0xcf00010e, - 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, 0xec00011b, 0xc5000139, - 0xe500013a, 0xa500013d, 0xb500013e, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, 0xd2000147, - 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, 0xf8000159, 0xa600015a, - 0xb600015b, 0xaa00015e, 0xba00015f, 0xa9000160, 0xb9000161, 0xde000162, 0xfe000163, 0xab000164, - 0xbb000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0xac000179, 0xbc00017a, 0xaf00017b, - 0xbf00017c, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xa20002d8, 0xff0002d9, 0xb20002db, 0xbd0002dd, - 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, - 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, - 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, - 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, - }, -} - -// ISO8859_3 is the ISO 8859-3 encoding. -var ISO8859_3 *Charmap = &iso8859_3 - -var iso8859_3 = Charmap{ - name: "ISO 8859-3", - mib: identifier.ISOLatin3, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa6, 0x00}}, - {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc4, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc4, 0x9e, 0x00}}, - {2, [3]byte{0xc4, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc4, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, - {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc4, 0x9f, 0x00}}, - {2, [3]byte{0xc4, 0xb5, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x8a, 0x00}}, - {2, [3]byte{0xc4, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc4, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc4, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xac, 0x00}}, - {2, [3]byte{0xc5, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc4, 0x9d, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xad, 0x00}}, - {2, [3]byte{0xc5, 0x9d, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb20000b2, - 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb70000b7, 0xb80000b8, 0xbd0000bd, 0xc00000c0, 0xc10000c1, - 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, - 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, - 0xd70000d7, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, - 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, - 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf60000f6, - 0xf70000f7, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc6000108, 0xe6000109, 0xc500010a, - 0xe500010b, 0xd800011c, 0xf800011d, 0xab00011e, 0xbb00011f, 0xd5000120, 0xf5000121, 0xa6000124, - 0xb6000125, 0xa1000126, 0xb1000127, 0xa9000130, 0xb9000131, 0xac000134, 0xbc000135, 0xde00015c, - 0xfe00015d, 0xaa00015e, 0xba00015f, 0xdd00016c, 0xfd00016d, 0xaf00017b, 0xbf00017c, 0xa20002d8, - 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, - 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, - 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, - 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, - 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, - }, -} - -// ISO8859_4 is the ISO 8859-4 encoding. -var ISO8859_4 *Charmap = &iso8859_4 - -var iso8859_4 = Charmap{ - name: "ISO 8859-4", - mib: identifier.ISOLatin4, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, - {2, [3]byte{0xc4, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0x96, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, - {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, - {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, - {2, [3]byte{0xc5, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x97, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, - {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, - {2, [3]byte{0xc5, 0xa7, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0xaa, 0x00}}, - {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, - {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, - {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0xab, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, - {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xaf0000af, 0xb00000b0, 0xb40000b4, - 0xb80000b8, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, - 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, - 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, - 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xf40000f4, 0xf50000f5, - 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc0000100, 0xe0000101, - 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, 0xd0000110, 0xf0000111, 0xaa000112, 0xba000113, - 0xcc000116, 0xec000117, 0xca000118, 0xea000119, 0xab000122, 0xbb000123, 0xa5000128, 0xb5000129, - 0xcf00012a, 0xef00012b, 0xc700012e, 0xe700012f, 0xd3000136, 0xf3000137, 0xa2000138, 0xa600013b, - 0xb600013c, 0xd1000145, 0xf1000146, 0xbd00014a, 0xbf00014b, 0xd200014c, 0xf200014d, 0xa3000156, - 0xb3000157, 0xa9000160, 0xb9000161, 0xac000166, 0xbc000167, 0xdd000168, 0xfd000169, 0xde00016a, - 0xfe00016b, 0xd9000172, 0xf9000173, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xff0002d9, 0xb20002db, - 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, - 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, - 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, - 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, - }, -} - -// ISO8859_5 is the ISO 8859-5 encoding. -var ISO8859_5 *Charmap = &iso8859_5 - -var iso8859_5 = Charmap{ - name: "ISO 8859-5", - mib: identifier.ISOLatinCyrillic, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, - {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, - {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, - {2, [3]byte{0xd0, 0x88, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, - {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, - {2, [3]byte{0xd0, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, - {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, - {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd1, 0x91, 0x00}}, - {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, - {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, - {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, - {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9b, 0x00}}, - {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xfd0000a7, 0xad0000ad, 0xa1000401, 0xa2000402, 0xa3000403, 0xa4000404, 0xa5000405, - 0xa6000406, 0xa7000407, 0xa8000408, 0xa9000409, 0xaa00040a, 0xab00040b, 0xac00040c, 0xae00040e, - 0xaf00040f, 0xb0000410, 0xb1000411, 0xb2000412, 0xb3000413, 0xb4000414, 0xb5000415, 0xb6000416, - 0xb7000417, 0xb8000418, 0xb9000419, 0xba00041a, 0xbb00041b, 0xbc00041c, 0xbd00041d, 0xbe00041e, - 0xbf00041f, 0xc0000420, 0xc1000421, 0xc2000422, 0xc3000423, 0xc4000424, 0xc5000425, 0xc6000426, - 0xc7000427, 0xc8000428, 0xc9000429, 0xca00042a, 0xcb00042b, 0xcc00042c, 0xcd00042d, 0xce00042e, - 0xcf00042f, 0xd0000430, 0xd1000431, 0xd2000432, 0xd3000433, 0xd4000434, 0xd5000435, 0xd6000436, - 0xd7000437, 0xd8000438, 0xd9000439, 0xda00043a, 0xdb00043b, 0xdc00043c, 0xdd00043d, 0xde00043e, - 0xdf00043f, 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, - 0xe7000447, 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, - 0xef00044f, 0xf1000451, 0xf2000452, 0xf3000453, 0xf4000454, 0xf5000455, 0xf6000456, 0xf7000457, - 0xf8000458, 0xf9000459, 0xfa00045a, 0xfb00045b, 0xfc00045c, 0xfe00045e, 0xff00045f, 0xf0002116, - 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, - 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, - 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, - 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, - }, -} - -// ISO8859_6 is the ISO 8859-6 encoding. -var ISO8859_6 *Charmap = &iso8859_6 - -var iso8859_6 = Charmap{ - name: "ISO 8859-6", - mib: identifier.ISOLatinArabic, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xd8, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9b, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, - {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, - {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, - {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, - {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, - {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, - {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, - {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, - {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, - {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, - {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, - {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xd8, 0xb7, 0x00}}, - {2, [3]byte{0xd8, 0xb8, 0x00}}, {2, [3]byte{0xd8, 0xb9, 0x00}}, - {2, [3]byte{0xd8, 0xba, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, - {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, - {2, [3]byte{0xd9, 0x84, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, - {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, - {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xd9, 0x89, 0x00}}, - {2, [3]byte{0xd9, 0x8a, 0x00}}, {2, [3]byte{0xd9, 0x8b, 0x00}}, - {2, [3]byte{0xd9, 0x8c, 0x00}}, {2, [3]byte{0xd9, 0x8d, 0x00}}, - {2, [3]byte{0xd9, 0x8e, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, - {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xd9, 0x91, 0x00}}, - {2, [3]byte{0xd9, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa40000a4, 0xad0000ad, 0xac00060c, 0xbb00061b, 0xbf00061f, 0xc1000621, 0xc2000622, - 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, - 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, - 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, 0xd7000637, 0xd8000638, 0xd9000639, 0xda00063a, - 0xe0000640, 0xe1000641, 0xe2000642, 0xe3000643, 0xe4000644, 0xe5000645, 0xe6000646, 0xe7000647, - 0xe8000648, 0xe9000649, 0xea00064a, 0xeb00064b, 0xec00064c, 0xed00064d, 0xee00064e, 0xef00064f, - 0xf0000650, 0xf1000651, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, - }, -} - -// ISO8859_7 is the ISO 8859-7 encoding. -var ISO8859_7 *Charmap = &iso8859_7 - -var iso8859_7 = Charmap{ - name: "ISO 8859-7", - mib: identifier.ISOLatinGreek, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x82, 0xaf}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xcd, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x95}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, - {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, - {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, - {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, - {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, - {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, - {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, - {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, - {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, - {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, - {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, - {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, - {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, - {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, - {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, - {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, - {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, - {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, - {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, - {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, - {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, - {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, - {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, - {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, - {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, - {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, - {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, - {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, - {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, - {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, - {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa30000a3, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, - 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, - 0xaa00037a, 0xb4000384, 0xb5000385, 0xb6000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, - 0xbe00038e, 0xbf00038f, 0xc0000390, 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, - 0xc6000396, 0xc7000397, 0xc8000398, 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, - 0xce00039e, 0xcf00039f, 0xd00003a0, 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, - 0xd70003a7, 0xd80003a8, 0xd90003a9, 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, - 0xdf0003af, 0xe00003b0, 0xe10003b1, 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, - 0xe70003b7, 0xe80003b8, 0xe90003b9, 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, - 0xef0003bf, 0xf00003c0, 0xf10003c1, 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, - 0xf70003c7, 0xf80003c8, 0xf90003c9, 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, - 0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, - 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, - 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, - 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, - 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, - }, -} - -// ISO8859_8 is the ISO 8859-8 encoding. -var ISO8859_8 *Charmap = &iso8859_8 - -var iso8859_8 = Charmap{ - name: "ISO 8859-8", - mib: identifier.ISOLatinHebrew, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x97}}, - {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, - {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, - {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, - {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, - {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, - {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, - {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, - {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, - {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, - {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, - {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, - {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, - {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, - {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, - {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, - 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, - 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, - 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xaa0000d7, 0xba0000f7, 0xe00005d0, 0xe10005d1, - 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, - 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, - 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, - 0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, - }, -} - -// ISO8859_9 is the ISO 8859-9 encoding. -var ISO8859_9 *Charmap = &iso8859_9 - -var iso8859_9 = Charmap{ - name: "ISO 8859-9", - mib: identifier.ISOLatin5, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, - {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, - {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, - {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, - {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, - {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, - {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, - {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, - {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, - {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, - {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, - {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, - {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, - {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, - {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, - {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, - 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, - 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, - 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, - 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, - 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, - 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, - 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, - 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, - 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, - 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f, - }, -} - -// ISO8859_10 is the ISO 8859-10 encoding. -var ISO8859_10 *Charmap = &iso8859_10 - -var iso8859_10 = Charmap{ - name: "ISO 8859-10", - mib: identifier.ISOLatin6, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, - {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, - {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, - {2, [3]byte{0xc4, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa6, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, - {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, - {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x91, 0x00}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0xa7, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, - {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, - {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, - {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0xb8, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa70000a7, 0xad0000ad, 0xb00000b0, 0xb70000b7, 0xc10000c1, 0xc20000c2, 0xc30000c3, - 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd00000d0, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xda0000da, 0xdb0000db, - 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, - 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf00000f0, - 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, - 0xfd0000fd, 0xfe0000fe, 0xc0000100, 0xe0000101, 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, - 0xa9000110, 0xb9000111, 0xa2000112, 0xb2000113, 0xcc000116, 0xec000117, 0xca000118, 0xea000119, - 0xa3000122, 0xb3000123, 0xa5000128, 0xb5000129, 0xa400012a, 0xb400012b, 0xc700012e, 0xe700012f, - 0xa6000136, 0xb6000137, 0xff000138, 0xa800013b, 0xb800013c, 0xd1000145, 0xf1000146, 0xaf00014a, - 0xbf00014b, 0xd200014c, 0xf200014d, 0xaa000160, 0xba000161, 0xab000166, 0xbb000167, 0xd7000168, - 0xf7000169, 0xae00016a, 0xbe00016b, 0xd9000172, 0xf9000173, 0xac00017d, 0xbc00017e, 0xbd002015, - 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, - 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, - 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, - 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, - }, -} - -// ISO8859_13 is the ISO 8859-13 encoding. -var ISO8859_13 *Charmap = &iso8859_13 - -var iso8859_13 = Charmap{ - name: "ISO 8859-13", - mib: identifier.ISO885913, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9c}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, - {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, - {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, - {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, - {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, - {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, - {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, - {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x99}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, - 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb50000b5, - 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, - 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, - 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, - 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, - 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, - 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, - 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, - 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, - 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, - 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, 0xff002019, 0xb400201c, 0xa100201d, 0xa500201e, - 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, - 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, - 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, - 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, - }, -} - -// ISO8859_14 is the ISO 8859-14 encoding. -var ISO8859_14 *Charmap = &iso8859_14 - -var iso8859_14 = Charmap{ - name: "ISO 8859-14", - mib: identifier.ISO885914, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe1, 0xb8, 0x82}}, - {3, [3]byte{0xe1, 0xb8, 0x83}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc4, 0x8a, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, - {3, [3]byte{0xe1, 0xb8, 0x8a}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {3, [3]byte{0xe1, 0xba, 0x80}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {3, [3]byte{0xe1, 0xba, 0x82}}, {3, [3]byte{0xe1, 0xb8, 0x8b}}, - {3, [3]byte{0xe1, 0xbb, 0xb2}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, - {3, [3]byte{0xe1, 0xb8, 0x9e}}, {3, [3]byte{0xe1, 0xb8, 0x9f}}, - {2, [3]byte{0xc4, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, - {3, [3]byte{0xe1, 0xb9, 0x80}}, {3, [3]byte{0xe1, 0xb9, 0x81}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0x96}}, - {3, [3]byte{0xe1, 0xba, 0x81}}, {3, [3]byte{0xe1, 0xb9, 0x97}}, - {3, [3]byte{0xe1, 0xba, 0x83}}, {3, [3]byte{0xe1, 0xb9, 0xa0}}, - {3, [3]byte{0xe1, 0xbb, 0xb3}}, {3, [3]byte{0xe1, 0xba, 0x84}}, - {3, [3]byte{0xe1, 0xba, 0x85}}, {3, [3]byte{0xe1, 0xb9, 0xa1}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc5, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xaa}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc5, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc5, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xab}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc5, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa30000a3, 0xa70000a7, 0xa90000a9, 0xad0000ad, 0xae0000ae, 0xb60000b6, 0xc00000c0, - 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, - 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, - 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xd90000d9, 0xda0000da, - 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, - 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, - 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, - 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, - 0xff0000ff, 0xa400010a, 0xa500010b, 0xb2000120, 0xb3000121, 0xd0000174, 0xf0000175, 0xde000176, - 0xfe000177, 0xaf000178, 0xa1001e02, 0xa2001e03, 0xa6001e0a, 0xab001e0b, 0xb0001e1e, 0xb1001e1f, - 0xb4001e40, 0xb5001e41, 0xb7001e56, 0xb9001e57, 0xbb001e60, 0xbf001e61, 0xd7001e6a, 0xf7001e6b, - 0xa8001e80, 0xb8001e81, 0xaa001e82, 0xba001e83, 0xbd001e84, 0xbe001e85, 0xac001ef2, 0xbc001ef3, - 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, - 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, - 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, - 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, - }, -} - -// ISO8859_15 is the ISO 8859-15 encoding. -var ISO8859_15 *Charmap = &iso8859_15 - -var iso8859_15 = Charmap{ - name: "ISO 8859-15", - mib: identifier.ISO885915, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, - {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa70000a7, 0xa90000a9, 0xaa0000aa, - 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, - 0xb30000b3, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, - 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, - 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, - 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, - 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, - 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, - 0xbc000152, 0xbd000153, 0xa6000160, 0xa8000161, 0xbe000178, 0xb400017d, 0xb800017e, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - }, -} - -// ISO8859_16 is the ISO 8859-16 encoding. -var ISO8859_16 *Charmap = &iso8859_16 - -var iso8859_16 = Charmap{ - name: "ISO 8859-16", - mib: identifier.ISO885916, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, - {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc8, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, - {2, [3]byte{0xc8, 0x99, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, - {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, - {2, [3]byte{0xc5, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0x98, 0x00}}, - {2, [3]byte{0xc8, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0x9b, 0x00}}, - {2, [3]byte{0xc5, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, - {2, [3]byte{0xc8, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb60000b6, - 0xb70000b7, 0xbb0000bb, 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, - 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe60000e6, 0xe70000e7, 0xe80000e8, - 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf20000f2, - 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xff0000ff, - 0xc3000102, 0xe3000103, 0xa1000104, 0xa2000105, 0xc5000106, 0xe5000107, 0xb200010c, 0xb900010d, - 0xd0000110, 0xf0000111, 0xdd000118, 0xfd000119, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, - 0xd5000150, 0xf5000151, 0xbc000152, 0xbd000153, 0xd700015a, 0xf700015b, 0xa6000160, 0xa8000161, - 0xd8000170, 0xf8000171, 0xbe000178, 0xac000179, 0xae00017a, 0xaf00017b, 0xbf00017c, 0xb400017d, - 0xb800017e, 0xaa000218, 0xba000219, 0xde00021a, 0xfe00021b, 0xb500201d, 0xa500201e, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, - }, -} - -// KOI8R is the KOI8-R encoding. -var KOI8R *Charmap = &koi8R - -var koi8R = Charmap{ - name: "KOI8-R", - mib: identifier.KOI8R, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, - {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0x96}}, - {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, - {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, - {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, - {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, - {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {3, [3]byte{0xe2, 0x95, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa5}}, - {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x95, 0xab}}, - {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, - {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, - {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, - {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, - {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, - {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, - {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, - {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, - {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, - {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, - {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, - {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, - {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xe1000410, - 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, - 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, - 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, - 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, - 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, - 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, - 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, - 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, - 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, 0x9b002321, 0x80002500, - 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, 0x87002524, 0x8800252c, - 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa4002553, 0xa5002554, 0xa6002555, - 0xa7002556, 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xad00255c, 0xae00255d, - 0xaf00255e, 0xb000255f, 0xb1002560, 0xb2002561, 0xb4002562, 0xb5002563, 0xb6002564, 0xb7002565, - 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0xbd00256b, 0xbe00256c, 0x8b002580, - 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, - }, -} - -// KOI8U is the KOI8-U encoding. -var KOI8U *Charmap = &koi8U - -var koi8U = Charmap{ - name: "KOI8-U", - mib: identifier.KOI8U, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, - {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, - {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, - {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, - {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, - {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, - {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, - {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, - {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, - {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, - {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, - {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, - {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, - {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, - {2, [3]byte{0xd1, 0x94, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x94}}, - {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, - {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, - {3, [3]byte{0xe2, 0x95, 0x9b}}, {2, [3]byte{0xd2, 0x91, 0x00}}, - {2, [3]byte{0xd1, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, - {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, - {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, - {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, - {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, - {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, - {3, [3]byte{0xe2, 0x95, 0xaa}}, {2, [3]byte{0xd2, 0x90, 0x00}}, - {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, - {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, - {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, - {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, - {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, - {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, - {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, - {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, - {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, - {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, - {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, - {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, - {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xb4000404, - 0xb6000406, 0xb7000407, 0xbe00040e, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, - 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, - 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, - 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, - 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, - 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, - 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, - 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, - 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xae00045e, - 0xbd000490, 0xad000491, 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, - 0x9b002321, 0x80002500, 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, - 0x87002524, 0x8800252c, 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554, - 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xaf00255e, 0xb000255f, 0xb1002560, - 0xb2002561, 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0x8b002580, - 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, - }, -} - -// Macintosh is the Macintosh encoding. -var Macintosh *Charmap = &macintosh - -var macintosh = Charmap{ - name: "Macintosh", - mib: identifier.Macintosh, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x91, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa8, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, - {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x82}}, {3, [3]byte{0xe2, 0x88, 0x91}}, - {3, [3]byte{0xe2, 0x88, 0x8f}}, {2, [3]byte{0xcf, 0x80, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0xab}}, {2, [3]byte{0xc2, 0xaa, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, - {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, - {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x97, 0x8a}}, - {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, - {3, [3]byte{0xe2, 0x81, 0x84}}, {3, [3]byte{0xe2, 0x82, 0xac}}, - {3, [3]byte{0xe2, 0x80, 0xb9}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {3, [3]byte{0xef, 0xac, 0x81}}, {3, [3]byte{0xef, 0xac, 0x82}}, - {3, [3]byte{0xe2, 0x80, 0xa1}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, - {3, [3]byte{0xe2, 0x80, 0xb0}}, {2, [3]byte{0xc3, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, - {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, - {2, [3]byte{0xc3, 0x8f, 0x00}}, {2, [3]byte{0xc3, 0x8c, 0x00}}, - {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, - {3, [3]byte{0xef, 0xa3, 0xbf}}, {2, [3]byte{0xc3, 0x92, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x99, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {2, [3]byte{0xcb, 0x9c, 0x00}}, - {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xcb, 0x98, 0x00}}, - {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xcb, 0x9a, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xca0000a0, 0xc10000a1, 0xa20000a2, 0xa30000a3, 0xb40000a5, 0xa40000a7, 0xac0000a8, 0xa90000a9, - 0xbb0000aa, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xf80000af, 0xa10000b0, 0xb10000b1, 0xab0000b4, - 0xb50000b5, 0xa60000b6, 0xe10000b7, 0xfc0000b8, 0xbc0000ba, 0xc80000bb, 0xc00000bf, 0xcb0000c0, - 0xe70000c1, 0xe50000c2, 0xcc0000c3, 0x800000c4, 0x810000c5, 0xae0000c6, 0x820000c7, 0xe90000c8, - 0x830000c9, 0xe60000ca, 0xe80000cb, 0xed0000cc, 0xea0000cd, 0xeb0000ce, 0xec0000cf, 0x840000d1, - 0xf10000d2, 0xee0000d3, 0xef0000d4, 0xcd0000d5, 0x850000d6, 0xaf0000d8, 0xf40000d9, 0xf20000da, - 0xf30000db, 0x860000dc, 0xa70000df, 0x880000e0, 0x870000e1, 0x890000e2, 0x8b0000e3, 0x8a0000e4, - 0x8c0000e5, 0xbe0000e6, 0x8d0000e7, 0x8f0000e8, 0x8e0000e9, 0x900000ea, 0x910000eb, 0x930000ec, - 0x920000ed, 0x940000ee, 0x950000ef, 0x960000f1, 0x980000f2, 0x970000f3, 0x990000f4, 0x9b0000f5, - 0x9a0000f6, 0xd60000f7, 0xbf0000f8, 0x9d0000f9, 0x9c0000fa, 0x9e0000fb, 0x9f0000fc, 0xd80000ff, - 0xf5000131, 0xce000152, 0xcf000153, 0xd9000178, 0xc4000192, 0xf60002c6, 0xff0002c7, 0xf90002d8, - 0xfa0002d9, 0xfb0002da, 0xfe0002db, 0xf70002dc, 0xfd0002dd, 0xbd0003a9, 0xb90003c0, 0xd0002013, - 0xd1002014, 0xd4002018, 0xd5002019, 0xe200201a, 0xd200201c, 0xd300201d, 0xe300201e, 0xa0002020, - 0xe0002021, 0xa5002022, 0xc9002026, 0xe4002030, 0xdc002039, 0xdd00203a, 0xda002044, 0xdb0020ac, - 0xaa002122, 0xb6002202, 0xc6002206, 0xb800220f, 0xb7002211, 0xc300221a, 0xb000221e, 0xba00222b, - 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, 0xd70025ca, 0xf000f8ff, 0xde00fb01, 0xdf00fb02, - }, -} - -// MacintoshCyrillic is the Macintosh Cyrillic encoding. -var MacintoshCyrillic *Charmap = &macintoshCyrillic - -var macintoshCyrillic = Charmap{ - name: "Macintosh Cyrillic", - mib: identifier.MacintoshCyrillic, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, - {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, - {2, [3]byte{0xd2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xd0, 0x82, 0x00}}, - {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, - {2, [3]byte{0xd0, 0x83, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, - {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, - {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, - {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x89, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x9a, 0x00}}, - {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, - {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, - {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, - {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, - {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, - {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, - {2, [3]byte{0xd0, 0x8f, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, - {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd0, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xca0000a0, 0xa30000a3, 0xa40000a7, 0xa90000a9, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xa10000b0, - 0xb10000b1, 0xb50000b5, 0xa60000b6, 0xc80000bb, 0xd60000f7, 0xc4000192, 0xdd000401, 0xab000402, - 0xae000403, 0xb8000404, 0xc1000405, 0xa7000406, 0xba000407, 0xb7000408, 0xbc000409, 0xbe00040a, - 0xcb00040b, 0xcd00040c, 0xd800040e, 0xda00040f, 0x80000410, 0x81000411, 0x82000412, 0x83000413, - 0x84000414, 0x85000415, 0x86000416, 0x87000417, 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, - 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, 0x90000420, 0x91000421, 0x92000422, 0x93000423, - 0x94000424, 0x95000425, 0x96000426, 0x97000427, 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, - 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, 0xe0000430, 0xe1000431, 0xe2000432, 0xe3000433, - 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, 0xeb00043b, - 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, 0xf3000443, - 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, 0xfb00044b, - 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xdf00044f, 0xde000451, 0xac000452, 0xaf000453, 0xb9000454, - 0xcf000455, 0xb4000456, 0xbb000457, 0xc0000458, 0xbd000459, 0xbf00045a, 0xcc00045b, 0xce00045c, - 0xd900045e, 0xdb00045f, 0xa2000490, 0xb6000491, 0xd0002013, 0xd1002014, 0xd4002018, 0xd5002019, - 0xd200201c, 0xd300201d, 0xd700201e, 0xa0002020, 0xa5002022, 0xc9002026, 0xff0020ac, 0xdc002116, - 0xaa002122, 0xc6002206, 0xc300221a, 0xb000221e, 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, - }, -} - -// Windows874 is the Windows 874 encoding. -var Windows874 *Charmap = &windows874 - -var windows874 = Charmap{ - name: "Windows 874", - mib: identifier.Windows874, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe0, 0xb8, 0x81}}, - {3, [3]byte{0xe0, 0xb8, 0x82}}, {3, [3]byte{0xe0, 0xb8, 0x83}}, - {3, [3]byte{0xe0, 0xb8, 0x84}}, {3, [3]byte{0xe0, 0xb8, 0x85}}, - {3, [3]byte{0xe0, 0xb8, 0x86}}, {3, [3]byte{0xe0, 0xb8, 0x87}}, - {3, [3]byte{0xe0, 0xb8, 0x88}}, {3, [3]byte{0xe0, 0xb8, 0x89}}, - {3, [3]byte{0xe0, 0xb8, 0x8a}}, {3, [3]byte{0xe0, 0xb8, 0x8b}}, - {3, [3]byte{0xe0, 0xb8, 0x8c}}, {3, [3]byte{0xe0, 0xb8, 0x8d}}, - {3, [3]byte{0xe0, 0xb8, 0x8e}}, {3, [3]byte{0xe0, 0xb8, 0x8f}}, - {3, [3]byte{0xe0, 0xb8, 0x90}}, {3, [3]byte{0xe0, 0xb8, 0x91}}, - {3, [3]byte{0xe0, 0xb8, 0x92}}, {3, [3]byte{0xe0, 0xb8, 0x93}}, - {3, [3]byte{0xe0, 0xb8, 0x94}}, {3, [3]byte{0xe0, 0xb8, 0x95}}, - {3, [3]byte{0xe0, 0xb8, 0x96}}, {3, [3]byte{0xe0, 0xb8, 0x97}}, - {3, [3]byte{0xe0, 0xb8, 0x98}}, {3, [3]byte{0xe0, 0xb8, 0x99}}, - {3, [3]byte{0xe0, 0xb8, 0x9a}}, {3, [3]byte{0xe0, 0xb8, 0x9b}}, - {3, [3]byte{0xe0, 0xb8, 0x9c}}, {3, [3]byte{0xe0, 0xb8, 0x9d}}, - {3, [3]byte{0xe0, 0xb8, 0x9e}}, {3, [3]byte{0xe0, 0xb8, 0x9f}}, - {3, [3]byte{0xe0, 0xb8, 0xa0}}, {3, [3]byte{0xe0, 0xb8, 0xa1}}, - {3, [3]byte{0xe0, 0xb8, 0xa2}}, {3, [3]byte{0xe0, 0xb8, 0xa3}}, - {3, [3]byte{0xe0, 0xb8, 0xa4}}, {3, [3]byte{0xe0, 0xb8, 0xa5}}, - {3, [3]byte{0xe0, 0xb8, 0xa6}}, {3, [3]byte{0xe0, 0xb8, 0xa7}}, - {3, [3]byte{0xe0, 0xb8, 0xa8}}, {3, [3]byte{0xe0, 0xb8, 0xa9}}, - {3, [3]byte{0xe0, 0xb8, 0xaa}}, {3, [3]byte{0xe0, 0xb8, 0xab}}, - {3, [3]byte{0xe0, 0xb8, 0xac}}, {3, [3]byte{0xe0, 0xb8, 0xad}}, - {3, [3]byte{0xe0, 0xb8, 0xae}}, {3, [3]byte{0xe0, 0xb8, 0xaf}}, - {3, [3]byte{0xe0, 0xb8, 0xb0}}, {3, [3]byte{0xe0, 0xb8, 0xb1}}, - {3, [3]byte{0xe0, 0xb8, 0xb2}}, {3, [3]byte{0xe0, 0xb8, 0xb3}}, - {3, [3]byte{0xe0, 0xb8, 0xb4}}, {3, [3]byte{0xe0, 0xb8, 0xb5}}, - {3, [3]byte{0xe0, 0xb8, 0xb6}}, {3, [3]byte{0xe0, 0xb8, 0xb7}}, - {3, [3]byte{0xe0, 0xb8, 0xb8}}, {3, [3]byte{0xe0, 0xb8, 0xb9}}, - {3, [3]byte{0xe0, 0xb8, 0xba}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe0, 0xb8, 0xbf}}, - {3, [3]byte{0xe0, 0xb9, 0x80}}, {3, [3]byte{0xe0, 0xb9, 0x81}}, - {3, [3]byte{0xe0, 0xb9, 0x82}}, {3, [3]byte{0xe0, 0xb9, 0x83}}, - {3, [3]byte{0xe0, 0xb9, 0x84}}, {3, [3]byte{0xe0, 0xb9, 0x85}}, - {3, [3]byte{0xe0, 0xb9, 0x86}}, {3, [3]byte{0xe0, 0xb9, 0x87}}, - {3, [3]byte{0xe0, 0xb9, 0x88}}, {3, [3]byte{0xe0, 0xb9, 0x89}}, - {3, [3]byte{0xe0, 0xb9, 0x8a}}, {3, [3]byte{0xe0, 0xb9, 0x8b}}, - {3, [3]byte{0xe0, 0xb9, 0x8c}}, {3, [3]byte{0xe0, 0xb9, 0x8d}}, - {3, [3]byte{0xe0, 0xb9, 0x8e}}, {3, [3]byte{0xe0, 0xb9, 0x8f}}, - {3, [3]byte{0xe0, 0xb9, 0x90}}, {3, [3]byte{0xe0, 0xb9, 0x91}}, - {3, [3]byte{0xe0, 0xb9, 0x92}}, {3, [3]byte{0xe0, 0xb9, 0x93}}, - {3, [3]byte{0xe0, 0xb9, 0x94}}, {3, [3]byte{0xe0, 0xb9, 0x95}}, - {3, [3]byte{0xe0, 0xb9, 0x96}}, {3, [3]byte{0xe0, 0xb9, 0x97}}, - {3, [3]byte{0xe0, 0xb9, 0x98}}, {3, [3]byte{0xe0, 0xb9, 0x99}}, - {3, [3]byte{0xe0, 0xb9, 0x9a}}, {3, [3]byte{0xe0, 0xb9, 0x9b}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa1000e01, 0xa2000e02, 0xa3000e03, 0xa4000e04, 0xa5000e05, 0xa6000e06, 0xa7000e07, - 0xa8000e08, 0xa9000e09, 0xaa000e0a, 0xab000e0b, 0xac000e0c, 0xad000e0d, 0xae000e0e, 0xaf000e0f, - 0xb0000e10, 0xb1000e11, 0xb2000e12, 0xb3000e13, 0xb4000e14, 0xb5000e15, 0xb6000e16, 0xb7000e17, - 0xb8000e18, 0xb9000e19, 0xba000e1a, 0xbb000e1b, 0xbc000e1c, 0xbd000e1d, 0xbe000e1e, 0xbf000e1f, - 0xc0000e20, 0xc1000e21, 0xc2000e22, 0xc3000e23, 0xc4000e24, 0xc5000e25, 0xc6000e26, 0xc7000e27, - 0xc8000e28, 0xc9000e29, 0xca000e2a, 0xcb000e2b, 0xcc000e2c, 0xcd000e2d, 0xce000e2e, 0xcf000e2f, - 0xd0000e30, 0xd1000e31, 0xd2000e32, 0xd3000e33, 0xd4000e34, 0xd5000e35, 0xd6000e36, 0xd7000e37, - 0xd8000e38, 0xd9000e39, 0xda000e3a, 0xdf000e3f, 0xe0000e40, 0xe1000e41, 0xe2000e42, 0xe3000e43, - 0xe4000e44, 0xe5000e45, 0xe6000e46, 0xe7000e47, 0xe8000e48, 0xe9000e49, 0xea000e4a, 0xeb000e4b, - 0xec000e4c, 0xed000e4d, 0xee000e4e, 0xef000e4f, 0xf0000e50, 0xf1000e51, 0xf2000e52, 0xf3000e53, - 0xf4000e54, 0xf5000e55, 0xf6000e56, 0xf7000e57, 0xf8000e58, 0xf9000e59, 0xfa000e5a, 0xfb000e5b, - 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x9300201c, 0x9400201d, 0x95002022, 0x85002026, - 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, - 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, - 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, - 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, - }, -} - -// Windows1250 is the Windows 1250 encoding. -var Windows1250 *Charmap = &windows1250 - -var windows1250 = Charmap{ - name: "Windows 1250", - mib: identifier.Windows1250, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, - {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, - {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc4, 0xbd, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, - {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, - {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, - {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, - {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, - {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, - 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xbb0000bb, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, - 0xcd0000cd, 0xce0000ce, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, - 0xdd0000dd, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, - 0xed0000ed, 0xee0000ee, 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, - 0xfd0000fd, 0xc3000102, 0xe3000103, 0xa5000104, 0xb9000105, 0xc6000106, 0xe6000107, 0xc800010c, - 0xe800010d, 0xcf00010e, 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, - 0xec00011b, 0xc5000139, 0xe500013a, 0xbc00013d, 0xbe00013e, 0xa3000141, 0xb3000142, 0xd1000143, - 0xf1000144, 0xd2000147, 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, - 0xf8000159, 0x8c00015a, 0x9c00015b, 0xaa00015e, 0xba00015f, 0x8a000160, 0x9a000161, 0xde000162, - 0xfe000163, 0x8d000164, 0x9d000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0x8f000179, - 0x9f00017a, 0xaf00017b, 0xbf00017c, 0x8e00017d, 0x9e00017e, 0xa10002c7, 0xa20002d8, 0xff0002d9, - 0xb20002db, 0xbd0002dd, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, - 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, - 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1251 is the Windows 1251 encoding. -var Windows1251 *Charmap = &windows1251 - -var windows1251 = Charmap{ - name: "Windows 1251", - mib: identifier.Windows1251, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xd1, 0x93, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {2, [3]byte{0xd0, 0x89, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, - {2, [3]byte{0xd0, 0x8b, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, - {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {2, [3]byte{0xd1, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9c, 0x00}}, - {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, - {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xd2, 0x90, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x96, 0x00}}, - {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xd1, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, - {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, - {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, - {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, - {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, - {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, - {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, - {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, - {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, - {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, - {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, - {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, - {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, - {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, - {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, - {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, - {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, - {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, - {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, - {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, - {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, - {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, - {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, - {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, - {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, - {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, - {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, - {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, - {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, - {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, - {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, - {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, - {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, - 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xa8000401, - 0x80000402, 0x81000403, 0xaa000404, 0xbd000405, 0xb2000406, 0xaf000407, 0xa3000408, 0x8a000409, - 0x8c00040a, 0x8e00040b, 0x8d00040c, 0xa100040e, 0x8f00040f, 0xc0000410, 0xc1000411, 0xc2000412, - 0xc3000413, 0xc4000414, 0xc5000415, 0xc6000416, 0xc7000417, 0xc8000418, 0xc9000419, 0xca00041a, - 0xcb00041b, 0xcc00041c, 0xcd00041d, 0xce00041e, 0xcf00041f, 0xd0000420, 0xd1000421, 0xd2000422, - 0xd3000423, 0xd4000424, 0xd5000425, 0xd6000426, 0xd7000427, 0xd8000428, 0xd9000429, 0xda00042a, - 0xdb00042b, 0xdc00042c, 0xdd00042d, 0xde00042e, 0xdf00042f, 0xe0000430, 0xe1000431, 0xe2000432, - 0xe3000433, 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, - 0xeb00043b, 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, - 0xf3000443, 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, - 0xfb00044b, 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xff00044f, 0xb8000451, 0x90000452, 0x83000453, - 0xba000454, 0xbe000455, 0xb3000456, 0xbf000457, 0xbc000458, 0x9a000459, 0x9c00045a, 0x9e00045b, - 0x9d00045c, 0xa200045e, 0x9f00045f, 0xa5000490, 0xb4000491, 0x96002013, 0x97002014, 0x91002018, - 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, - 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x99002122, - }, -} - -// Windows1252 is the Windows 1252 encoding. -var Windows1252 *Charmap = &windows1252 - -var windows1252 = Charmap{ - name: "Windows 1252", - mib: identifier.Windows1252, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, - {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, - {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, - 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, - 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, - 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, - 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, - 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, - 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, - 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, - 0x8c000152, 0x9c000153, 0x8a000160, 0x9a000161, 0x9f000178, 0x8e00017d, 0x9e00017e, 0x83000192, - 0x880002c6, 0x980002dc, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, - 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, - 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1253 is the Windows 1253 encoding. -var Windows1253 *Charmap = &windows1253 - -var windows1253 = Charmap{ - name: "Windows 1253", - mib: identifier.Windows1253, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, - {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, - {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, - {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, - {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, - {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, - {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, - {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, - {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, - {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, - {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, - {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, - {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, - {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, - {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, - {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, - {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, - {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, - {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, - {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, - {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, - {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, - {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, - {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, - {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, - {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, - {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, - {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, - {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, - {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, - {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, - {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, - {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, - {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, - 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, - 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, 0x83000192, 0xb4000384, 0xa1000385, - 0xa2000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, 0xbe00038e, 0xbf00038f, 0xc0000390, - 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, 0xc6000396, 0xc7000397, 0xc8000398, - 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, 0xce00039e, 0xcf00039f, 0xd00003a0, - 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, 0xd70003a7, 0xd80003a8, 0xd90003a9, - 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, 0xdf0003af, 0xe00003b0, 0xe10003b1, - 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, 0xe70003b7, 0xe80003b8, 0xe90003b9, - 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, 0xef0003bf, 0xf00003c0, 0xf10003c1, - 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, 0xf70003c7, 0xf80003c8, 0xf90003c9, - 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, 0x96002013, 0x97002014, 0xaf002015, - 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, - 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1254 is the Windows 1254 encoding. -var Windows1254 *Charmap = &windows1254 - -var windows1254 = Charmap{ - name: "Windows 1254", - mib: identifier.Windows1254, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, - {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, - {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, - 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, - 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, - 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, - 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, - 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, - 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, - 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, - 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, - 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0x8c000152, 0x9c000153, - 0xde00015e, 0xfe00015f, 0x8a000160, 0x9a000161, 0x9f000178, 0x83000192, 0x880002c6, 0x980002dc, - 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, - 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1255 is the Windows 1255 encoding. -var Windows1255 *Charmap = &windows1255 - -var windows1255 = Charmap{ - name: "Windows 1255", - mib: identifier.Windows1255, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xaa}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xd6, 0xb0, 0x00}}, {2, [3]byte{0xd6, 0xb1, 0x00}}, - {2, [3]byte{0xd6, 0xb2, 0x00}}, {2, [3]byte{0xd6, 0xb3, 0x00}}, - {2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}}, - {2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}}, - {2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}}, - {2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}}, - {2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}}, - {2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}}, - {2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}}, - {2, [3]byte{0xd7, 0x82, 0x00}}, {2, [3]byte{0xd7, 0x83, 0x00}}, - {2, [3]byte{0xd7, 0xb0, 0x00}}, {2, [3]byte{0xd7, 0xb1, 0x00}}, - {2, [3]byte{0xd7, 0xb2, 0x00}}, {2, [3]byte{0xd7, 0xb3, 0x00}}, - {2, [3]byte{0xd7, 0xb4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, - {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, - {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, - {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, - {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, - {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, - {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, - {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, - {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, - {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, - {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, - {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, - {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, - {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, - {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, - 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, - 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, - 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192, - 0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5, - 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, - 0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, - 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, - 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, - 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, - 0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, - 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, - 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, - 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1256 is the Windows 1256 encoding. -var Windows1256 *Charmap = &windows1256 - -var windows1256 = Charmap{ - name: "Windows 1256", - mib: identifier.Windows1256, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xd9, 0xbe, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {2, [3]byte{0xd9, 0xb9, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xda, 0x86, 0x00}}, - {2, [3]byte{0xda, 0x98, 0x00}}, {2, [3]byte{0xda, 0x88, 0x00}}, - {2, [3]byte{0xda, 0xaf, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {2, [3]byte{0xda, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {2, [3]byte{0xda, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8c}}, - {3, [3]byte{0xe2, 0x80, 0x8d}}, {2, [3]byte{0xda, 0xba, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd8, 0x8c, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xda, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xd8, 0x9b, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, - {2, [3]byte{0xdb, 0x81, 0x00}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, - {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, - {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, - {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, - {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, - {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, - {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, - {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, - {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, - {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, - {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, - {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xd8, 0xb7, 0x00}}, {2, [3]byte{0xd8, 0xb8, 0x00}}, - {2, [3]byte{0xd8, 0xb9, 0x00}}, {2, [3]byte{0xd8, 0xba, 0x00}}, - {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, - {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xd9, 0x84, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, - {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, - {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xd9, 0x89, 0x00}}, {2, [3]byte{0xd9, 0x8a, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xd9, 0x8b, 0x00}}, {2, [3]byte{0xd9, 0x8c, 0x00}}, - {2, [3]byte{0xd9, 0x8d, 0x00}}, {2, [3]byte{0xd9, 0x8e, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, - {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xd9, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xd9, 0x92, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, - {3, [3]byte{0xe2, 0x80, 0x8f}}, {2, [3]byte{0xdb, 0x92, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, - 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, - 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, - 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xd70000d7, 0xe00000e0, 0xe20000e2, 0xe70000e7, - 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xee0000ee, 0xef0000ef, 0xf40000f4, 0xf70000f7, - 0xf90000f9, 0xfb0000fb, 0xfc0000fc, 0x8c000152, 0x9c000153, 0x83000192, 0x880002c6, 0xa100060c, - 0xba00061b, 0xbf00061f, 0xc1000621, 0xc2000622, 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, - 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, - 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, - 0xd8000637, 0xd9000638, 0xda000639, 0xdb00063a, 0xdc000640, 0xdd000641, 0xde000642, 0xdf000643, - 0xe1000644, 0xe3000645, 0xe4000646, 0xe5000647, 0xe6000648, 0xec000649, 0xed00064a, 0xf000064b, - 0xf100064c, 0xf200064d, 0xf300064e, 0xf500064f, 0xf6000650, 0xf8000651, 0xfa000652, 0x8a000679, - 0x8100067e, 0x8d000686, 0x8f000688, 0x9a000691, 0x8e000698, 0x980006a9, 0x900006af, 0x9f0006ba, - 0xaa0006be, 0xc00006c1, 0xff0006d2, 0x9d00200c, 0x9e00200d, 0xfd00200e, 0xfe00200f, 0x96002013, - 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, - 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, - }, -} - -// Windows1257 is the Windows 1257 encoding. -var Windows1257 *Charmap = &windows1257 - -var windows1257 = Charmap{ - name: "Windows 1257", - mib: identifier.Windows1257, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, - {2, [3]byte{0xcb, 0x87, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xcb, 0x9b, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, - {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, - {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, - {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, - {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, - {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, - {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, - {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, - {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, - {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, - {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, - {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, - {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, - {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, - {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0x8d0000a8, 0xa90000a9, - 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0x9d0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, - 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0x8f0000b8, 0xb90000b9, 0xbb0000bb, - 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, - 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, - 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, - 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, - 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, - 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, - 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, - 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, - 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, - 0x8e0002c7, 0xff0002d9, 0x9e0002db, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, - 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, - 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// Windows1258 is the Windows 1258 encoding. -var Windows1258 *Charmap = &windows1258 - -var windows1258 = Charmap{ - name: "Windows 1258", - mib: identifier.Windows1258, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, - {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, - {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, - {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, - {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, - {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, - {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, - {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, - {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, - {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, - {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, - {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, - {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, - {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, - {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, - {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, - {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, - {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, - {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, - {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, - {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, - {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, - {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, - {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, - {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, - {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, - {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, - {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, - {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, - {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, - {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, - {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, - {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, - {2, [3]byte{0xcc, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, - {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, - {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, - {2, [3]byte{0xcc, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, - {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc6, 0xa0, 0x00}}, - {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, - {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, - {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, - {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc6, 0xaf, 0x00}}, - {2, [3]byte{0xcc, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, - {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, - {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, - {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, - {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, - {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, - {2, [3]byte{0xcc, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, - {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, - {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, - {2, [3]byte{0xcc, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, - {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc6, 0xa1, 0x00}}, - {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, - {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, - {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, - {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc6, 0xb0, 0x00}}, - {3, [3]byte{0xe2, 0x82, 0xab}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, - 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, - 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, - 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, - 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, - 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd30000d3, - 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, - 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, - 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, - 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, - 0xfc0000fc, 0xff0000ff, 0xc3000102, 0xe3000103, 0xd0000110, 0xf0000111, 0x8c000152, 0x9c000153, - 0x9f000178, 0x83000192, 0xd50001a0, 0xf50001a1, 0xdd0001af, 0xfd0001b0, 0x880002c6, 0x980002dc, - 0xcc000300, 0xec000301, 0xde000303, 0xd2000309, 0xf2000323, 0x96002013, 0x97002014, 0x91002018, - 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, - 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x99002122, - 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, - }, -} - -// XUserDefined is the X-User-Defined encoding. -// -// It is defined at http://encoding.spec.whatwg.org/#x-user-defined -var XUserDefined *Charmap = &xUserDefined - -var xUserDefined = Charmap{ - name: "X-User-Defined", - mib: identifier.XUserDefined, - asciiSuperset: true, - low: 0x80, - replacement: 0x1a, - decode: [256]utf8Enc{ - {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, - {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, - {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, - {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, - {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, - {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, - {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, - {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, - {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, - {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, - {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, - {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, - {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, - {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, - {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, - {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, - {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, - {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, - {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, - {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, - {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, - {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, - {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, - {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, - {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, - {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, - {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, - {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, - {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, - {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, - {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, - {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, - {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, - {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, - {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, - {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, - {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, - {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, - {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, - {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, - {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, - {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, - {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, - {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, - {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, - {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, - {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, - {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, - {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, - {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, - {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, - {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, - {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, - {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, - {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, - {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, - {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, - {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, - {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, - {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, - {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, - {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, - {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, - {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, - {3, [3]byte{0xef, 0x9e, 0x80}}, {3, [3]byte{0xef, 0x9e, 0x81}}, - {3, [3]byte{0xef, 0x9e, 0x82}}, {3, [3]byte{0xef, 0x9e, 0x83}}, - {3, [3]byte{0xef, 0x9e, 0x84}}, {3, [3]byte{0xef, 0x9e, 0x85}}, - {3, [3]byte{0xef, 0x9e, 0x86}}, {3, [3]byte{0xef, 0x9e, 0x87}}, - {3, [3]byte{0xef, 0x9e, 0x88}}, {3, [3]byte{0xef, 0x9e, 0x89}}, - {3, [3]byte{0xef, 0x9e, 0x8a}}, {3, [3]byte{0xef, 0x9e, 0x8b}}, - {3, [3]byte{0xef, 0x9e, 0x8c}}, {3, [3]byte{0xef, 0x9e, 0x8d}}, - {3, [3]byte{0xef, 0x9e, 0x8e}}, {3, [3]byte{0xef, 0x9e, 0x8f}}, - {3, [3]byte{0xef, 0x9e, 0x90}}, {3, [3]byte{0xef, 0x9e, 0x91}}, - {3, [3]byte{0xef, 0x9e, 0x92}}, {3, [3]byte{0xef, 0x9e, 0x93}}, - {3, [3]byte{0xef, 0x9e, 0x94}}, {3, [3]byte{0xef, 0x9e, 0x95}}, - {3, [3]byte{0xef, 0x9e, 0x96}}, {3, [3]byte{0xef, 0x9e, 0x97}}, - {3, [3]byte{0xef, 0x9e, 0x98}}, {3, [3]byte{0xef, 0x9e, 0x99}}, - {3, [3]byte{0xef, 0x9e, 0x9a}}, {3, [3]byte{0xef, 0x9e, 0x9b}}, - {3, [3]byte{0xef, 0x9e, 0x9c}}, {3, [3]byte{0xef, 0x9e, 0x9d}}, - {3, [3]byte{0xef, 0x9e, 0x9e}}, {3, [3]byte{0xef, 0x9e, 0x9f}}, - {3, [3]byte{0xef, 0x9e, 0xa0}}, {3, [3]byte{0xef, 0x9e, 0xa1}}, - {3, [3]byte{0xef, 0x9e, 0xa2}}, {3, [3]byte{0xef, 0x9e, 0xa3}}, - {3, [3]byte{0xef, 0x9e, 0xa4}}, {3, [3]byte{0xef, 0x9e, 0xa5}}, - {3, [3]byte{0xef, 0x9e, 0xa6}}, {3, [3]byte{0xef, 0x9e, 0xa7}}, - {3, [3]byte{0xef, 0x9e, 0xa8}}, {3, [3]byte{0xef, 0x9e, 0xa9}}, - {3, [3]byte{0xef, 0x9e, 0xaa}}, {3, [3]byte{0xef, 0x9e, 0xab}}, - {3, [3]byte{0xef, 0x9e, 0xac}}, {3, [3]byte{0xef, 0x9e, 0xad}}, - {3, [3]byte{0xef, 0x9e, 0xae}}, {3, [3]byte{0xef, 0x9e, 0xaf}}, - {3, [3]byte{0xef, 0x9e, 0xb0}}, {3, [3]byte{0xef, 0x9e, 0xb1}}, - {3, [3]byte{0xef, 0x9e, 0xb2}}, {3, [3]byte{0xef, 0x9e, 0xb3}}, - {3, [3]byte{0xef, 0x9e, 0xb4}}, {3, [3]byte{0xef, 0x9e, 0xb5}}, - {3, [3]byte{0xef, 0x9e, 0xb6}}, {3, [3]byte{0xef, 0x9e, 0xb7}}, - {3, [3]byte{0xef, 0x9e, 0xb8}}, {3, [3]byte{0xef, 0x9e, 0xb9}}, - {3, [3]byte{0xef, 0x9e, 0xba}}, {3, [3]byte{0xef, 0x9e, 0xbb}}, - {3, [3]byte{0xef, 0x9e, 0xbc}}, {3, [3]byte{0xef, 0x9e, 0xbd}}, - {3, [3]byte{0xef, 0x9e, 0xbe}}, {3, [3]byte{0xef, 0x9e, 0xbf}}, - {3, [3]byte{0xef, 0x9f, 0x80}}, {3, [3]byte{0xef, 0x9f, 0x81}}, - {3, [3]byte{0xef, 0x9f, 0x82}}, {3, [3]byte{0xef, 0x9f, 0x83}}, - {3, [3]byte{0xef, 0x9f, 0x84}}, {3, [3]byte{0xef, 0x9f, 0x85}}, - {3, [3]byte{0xef, 0x9f, 0x86}}, {3, [3]byte{0xef, 0x9f, 0x87}}, - {3, [3]byte{0xef, 0x9f, 0x88}}, {3, [3]byte{0xef, 0x9f, 0x89}}, - {3, [3]byte{0xef, 0x9f, 0x8a}}, {3, [3]byte{0xef, 0x9f, 0x8b}}, - {3, [3]byte{0xef, 0x9f, 0x8c}}, {3, [3]byte{0xef, 0x9f, 0x8d}}, - {3, [3]byte{0xef, 0x9f, 0x8e}}, {3, [3]byte{0xef, 0x9f, 0x8f}}, - {3, [3]byte{0xef, 0x9f, 0x90}}, {3, [3]byte{0xef, 0x9f, 0x91}}, - {3, [3]byte{0xef, 0x9f, 0x92}}, {3, [3]byte{0xef, 0x9f, 0x93}}, - {3, [3]byte{0xef, 0x9f, 0x94}}, {3, [3]byte{0xef, 0x9f, 0x95}}, - {3, [3]byte{0xef, 0x9f, 0x96}}, {3, [3]byte{0xef, 0x9f, 0x97}}, - {3, [3]byte{0xef, 0x9f, 0x98}}, {3, [3]byte{0xef, 0x9f, 0x99}}, - {3, [3]byte{0xef, 0x9f, 0x9a}}, {3, [3]byte{0xef, 0x9f, 0x9b}}, - {3, [3]byte{0xef, 0x9f, 0x9c}}, {3, [3]byte{0xef, 0x9f, 0x9d}}, - {3, [3]byte{0xef, 0x9f, 0x9e}}, {3, [3]byte{0xef, 0x9f, 0x9f}}, - {3, [3]byte{0xef, 0x9f, 0xa0}}, {3, [3]byte{0xef, 0x9f, 0xa1}}, - {3, [3]byte{0xef, 0x9f, 0xa2}}, {3, [3]byte{0xef, 0x9f, 0xa3}}, - {3, [3]byte{0xef, 0x9f, 0xa4}}, {3, [3]byte{0xef, 0x9f, 0xa5}}, - {3, [3]byte{0xef, 0x9f, 0xa6}}, {3, [3]byte{0xef, 0x9f, 0xa7}}, - {3, [3]byte{0xef, 0x9f, 0xa8}}, {3, [3]byte{0xef, 0x9f, 0xa9}}, - {3, [3]byte{0xef, 0x9f, 0xaa}}, {3, [3]byte{0xef, 0x9f, 0xab}}, - {3, [3]byte{0xef, 0x9f, 0xac}}, {3, [3]byte{0xef, 0x9f, 0xad}}, - {3, [3]byte{0xef, 0x9f, 0xae}}, {3, [3]byte{0xef, 0x9f, 0xaf}}, - {3, [3]byte{0xef, 0x9f, 0xb0}}, {3, [3]byte{0xef, 0x9f, 0xb1}}, - {3, [3]byte{0xef, 0x9f, 0xb2}}, {3, [3]byte{0xef, 0x9f, 0xb3}}, - {3, [3]byte{0xef, 0x9f, 0xb4}}, {3, [3]byte{0xef, 0x9f, 0xb5}}, - {3, [3]byte{0xef, 0x9f, 0xb6}}, {3, [3]byte{0xef, 0x9f, 0xb7}}, - {3, [3]byte{0xef, 0x9f, 0xb8}}, {3, [3]byte{0xef, 0x9f, 0xb9}}, - {3, [3]byte{0xef, 0x9f, 0xba}}, {3, [3]byte{0xef, 0x9f, 0xbb}}, - {3, [3]byte{0xef, 0x9f, 0xbc}}, {3, [3]byte{0xef, 0x9f, 0xbd}}, - {3, [3]byte{0xef, 0x9f, 0xbe}}, {3, [3]byte{0xef, 0x9f, 0xbf}}, - }, - encode: [256]uint32{ - 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, - 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, - 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, - 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, - 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, - 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, - 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, - 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, - 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, - 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, - 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, - 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, - 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, - 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, - 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, - 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, - 0x8000f780, 0x8100f781, 0x8200f782, 0x8300f783, 0x8400f784, 0x8500f785, 0x8600f786, 0x8700f787, - 0x8800f788, 0x8900f789, 0x8a00f78a, 0x8b00f78b, 0x8c00f78c, 0x8d00f78d, 0x8e00f78e, 0x8f00f78f, - 0x9000f790, 0x9100f791, 0x9200f792, 0x9300f793, 0x9400f794, 0x9500f795, 0x9600f796, 0x9700f797, - 0x9800f798, 0x9900f799, 0x9a00f79a, 0x9b00f79b, 0x9c00f79c, 0x9d00f79d, 0x9e00f79e, 0x9f00f79f, - 0xa000f7a0, 0xa100f7a1, 0xa200f7a2, 0xa300f7a3, 0xa400f7a4, 0xa500f7a5, 0xa600f7a6, 0xa700f7a7, - 0xa800f7a8, 0xa900f7a9, 0xaa00f7aa, 0xab00f7ab, 0xac00f7ac, 0xad00f7ad, 0xae00f7ae, 0xaf00f7af, - 0xb000f7b0, 0xb100f7b1, 0xb200f7b2, 0xb300f7b3, 0xb400f7b4, 0xb500f7b5, 0xb600f7b6, 0xb700f7b7, - 0xb800f7b8, 0xb900f7b9, 0xba00f7ba, 0xbb00f7bb, 0xbc00f7bc, 0xbd00f7bd, 0xbe00f7be, 0xbf00f7bf, - 0xc000f7c0, 0xc100f7c1, 0xc200f7c2, 0xc300f7c3, 0xc400f7c4, 0xc500f7c5, 0xc600f7c6, 0xc700f7c7, - 0xc800f7c8, 0xc900f7c9, 0xca00f7ca, 0xcb00f7cb, 0xcc00f7cc, 0xcd00f7cd, 0xce00f7ce, 0xcf00f7cf, - 0xd000f7d0, 0xd100f7d1, 0xd200f7d2, 0xd300f7d3, 0xd400f7d4, 0xd500f7d5, 0xd600f7d6, 0xd700f7d7, - 0xd800f7d8, 0xd900f7d9, 0xda00f7da, 0xdb00f7db, 0xdc00f7dc, 0xdd00f7dd, 0xde00f7de, 0xdf00f7df, - 0xe000f7e0, 0xe100f7e1, 0xe200f7e2, 0xe300f7e3, 0xe400f7e4, 0xe500f7e5, 0xe600f7e6, 0xe700f7e7, - 0xe800f7e8, 0xe900f7e9, 0xea00f7ea, 0xeb00f7eb, 0xec00f7ec, 0xed00f7ed, 0xee00f7ee, 0xef00f7ef, - 0xf000f7f0, 0xf100f7f1, 0xf200f7f2, 0xf300f7f3, 0xf400f7f4, 0xf500f7f5, 0xf600f7f6, 0xf700f7f7, - 0xf800f7f8, 0xf900f7f9, 0xfa00f7fa, 0xfb00f7fb, 0xfc00f7fc, 0xfd00f7fd, 0xfe00f7fe, 0xff00f7ff, - }, -} -var listAll = []encoding.Encoding{ - CodePage037, - CodePage437, - CodePage850, - CodePage852, - CodePage855, - CodePage858, - CodePage860, - CodePage862, - CodePage863, - CodePage865, - CodePage866, - CodePage1047, - CodePage1140, - ISO8859_1, - ISO8859_2, - ISO8859_3, - ISO8859_4, - ISO8859_5, - ISO8859_6, - ISO8859_6E, - ISO8859_6I, - ISO8859_7, - ISO8859_8, - ISO8859_8E, - ISO8859_8I, - ISO8859_9, - ISO8859_10, - ISO8859_13, - ISO8859_14, - ISO8859_15, - ISO8859_16, - KOI8R, - KOI8U, - Macintosh, - MacintoshCyrillic, - Windows874, - Windows1250, - Windows1251, - Windows1252, - Windows1253, - Windows1254, - Windows1255, - Windows1256, - Windows1257, - Windows1258, - XUserDefined, -} - -// Total table size 87024 bytes (84KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/encoding/encoding.go b/vendor/golang.org/x/text/encoding/encoding.go deleted file mode 100644 index a0bd7cd..0000000 --- a/vendor/golang.org/x/text/encoding/encoding.go +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package encoding defines an interface for character encodings, such as Shift -// JIS and Windows 1252, that can convert to and from UTF-8. -// -// Encoding implementations are provided in other packages, such as -// golang.org/x/text/encoding/charmap and -// golang.org/x/text/encoding/japanese. -package encoding // import "golang.org/x/text/encoding" - -import ( - "errors" - "io" - "strconv" - "unicode/utf8" - - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// TODO: -// - There seems to be some inconsistency in when decoders return errors -// and when not. Also documentation seems to suggest they shouldn't return -// errors at all (except for UTF-16). -// - Encoders seem to rely on or at least benefit from the input being in NFC -// normal form. Perhaps add an example how users could prepare their output. - -// Encoding is a character set encoding that can be transformed to and from -// UTF-8. -type Encoding interface { - // NewDecoder returns a Decoder. - NewDecoder() *Decoder - - // NewEncoder returns an Encoder. - NewEncoder() *Encoder -} - -// A Decoder converts bytes to UTF-8. It implements transform.Transformer. -// -// Transforming source bytes that are not of that encoding will not result in an -// error per se. Each byte that cannot be transcoded will be represented in the -// output by the UTF-8 encoding of '\uFFFD', the replacement rune. -type Decoder struct { - transform.Transformer - - // This forces external creators of Decoders to use names in struct - // initializers, allowing for future extendibility without having to break - // code. - _ struct{} -} - -// Bytes converts the given encoded bytes to UTF-8. It returns the converted -// bytes or nil, err if any error occurred. -func (d *Decoder) Bytes(b []byte) ([]byte, error) { - b, _, err := transform.Bytes(d, b) - if err != nil { - return nil, err - } - return b, nil -} - -// String converts the given encoded string to UTF-8. It returns the converted -// string or "", err if any error occurred. -func (d *Decoder) String(s string) (string, error) { - s, _, err := transform.String(d, s) - if err != nil { - return "", err - } - return s, nil -} - -// Reader wraps another Reader to decode its bytes. -// -// The Decoder may not be used for any other operation as long as the returned -// Reader is in use. -func (d *Decoder) Reader(r io.Reader) io.Reader { - return transform.NewReader(r, d) -} - -// An Encoder converts bytes from UTF-8. It implements transform.Transformer. -// -// Each rune that cannot be transcoded will result in an error. In this case, -// the transform will consume all source byte up to, not including the offending -// rune. Transforming source bytes that are not valid UTF-8 will be replaced by -// `\uFFFD`. To return early with an error instead, use transform.Chain to -// preprocess the data with a UTF8Validator. -type Encoder struct { - transform.Transformer - - // This forces external creators of Encoders to use names in struct - // initializers, allowing for future extendibility without having to break - // code. - _ struct{} -} - -// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if -// any error occurred. -func (e *Encoder) Bytes(b []byte) ([]byte, error) { - b, _, err := transform.Bytes(e, b) - if err != nil { - return nil, err - } - return b, nil -} - -// String converts a string from UTF-8. It returns the converted string or -// "", err if any error occurred. -func (e *Encoder) String(s string) (string, error) { - s, _, err := transform.String(e, s) - if err != nil { - return "", err - } - return s, nil -} - -// Writer wraps another Writer to encode its UTF-8 output. -// -// The Encoder may not be used for any other operation as long as the returned -// Writer is in use. -func (e *Encoder) Writer(w io.Writer) io.Writer { - return transform.NewWriter(w, e) -} - -// ASCIISub is the ASCII substitute character, as recommended by -// https://unicode.org/reports/tr36/#Text_Comparison -const ASCIISub = '\x1a' - -// Nop is the nop encoding. Its transformed bytes are the same as the source -// bytes; it does not replace invalid UTF-8 sequences. -var Nop Encoding = nop{} - -type nop struct{} - -func (nop) NewDecoder() *Decoder { - return &Decoder{Transformer: transform.Nop} -} -func (nop) NewEncoder() *Encoder { - return &Encoder{Transformer: transform.Nop} -} - -// Replacement is the replacement encoding. Decoding from the replacement -// encoding yields a single '\uFFFD' replacement rune. Encoding from UTF-8 to -// the replacement encoding yields the same as the source bytes except that -// invalid UTF-8 is converted to '\uFFFD'. -// -// It is defined at http://encoding.spec.whatwg.org/#replacement -var Replacement Encoding = replacement{} - -type replacement struct{} - -func (replacement) NewDecoder() *Decoder { - return &Decoder{Transformer: replacementDecoder{}} -} - -func (replacement) NewEncoder() *Encoder { - return &Encoder{Transformer: replacementEncoder{}} -} - -func (replacement) ID() (mib identifier.MIB, other string) { - return identifier.Replacement, "" -} - -type replacementDecoder struct{ transform.NopResetter } - -func (replacementDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if len(dst) < 3 { - return 0, 0, transform.ErrShortDst - } - if atEOF { - const fffd = "\ufffd" - dst[0] = fffd[0] - dst[1] = fffd[1] - dst[2] = fffd[2] - nDst = 3 - } - return nDst, len(src), nil -} - -type replacementEncoder struct{ transform.NopResetter } - -func (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - r = '\ufffd' - } - } - - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -// HTMLEscapeUnsupported wraps encoders to replace source runes outside the -// repertoire of the destination encoding with HTML escape sequences. -// -// This wrapper exists to comply to URL and HTML forms requiring a -// non-terminating legacy encoder. The produced sequences may lead to data -// loss as they are indistinguishable from legitimate input. To avoid this -// issue, use UTF-8 encodings whenever possible. -func HTMLEscapeUnsupported(e *Encoder) *Encoder { - return &Encoder{Transformer: &errorHandler{e, errorToHTML}} -} - -// ReplaceUnsupported wraps encoders to replace source runes outside the -// repertoire of the destination encoding with an encoding-specific -// replacement. -// -// This wrapper is only provided for backwards compatibility and legacy -// handling. Its use is strongly discouraged. Use UTF-8 whenever possible. -func ReplaceUnsupported(e *Encoder) *Encoder { - return &Encoder{Transformer: &errorHandler{e, errorToReplacement}} -} - -type errorHandler struct { - *Encoder - handler func(dst []byte, r rune, err repertoireError) (n int, ok bool) -} - -// TODO: consider making this error public in some form. -type repertoireError interface { - Replacement() byte -} - -func (h errorHandler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - nDst, nSrc, err = h.Transformer.Transform(dst, src, atEOF) - for err != nil { - rerr, ok := err.(repertoireError) - if !ok { - return nDst, nSrc, err - } - r, sz := utf8.DecodeRune(src[nSrc:]) - n, ok := h.handler(dst[nDst:], r, rerr) - if !ok { - return nDst, nSrc, transform.ErrShortDst - } - err = nil - nDst += n - if nSrc += sz; nSrc < len(src) { - var dn, sn int - dn, sn, err = h.Transformer.Transform(dst[nDst:], src[nSrc:], atEOF) - nDst += dn - nSrc += sn - } - } - return nDst, nSrc, err -} - -func errorToHTML(dst []byte, r rune, err repertoireError) (n int, ok bool) { - buf := [8]byte{} - b := strconv.AppendUint(buf[:0], uint64(r), 10) - if n = len(b) + len("&#;"); n >= len(dst) { - return 0, false - } - dst[0] = '&' - dst[1] = '#' - dst[copy(dst[2:], b)+2] = ';' - return n, true -} - -func errorToReplacement(dst []byte, r rune, err repertoireError) (n int, ok bool) { - if len(dst) == 0 { - return 0, false - } - dst[0] = err.Replacement() - return 1, true -} - -// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8. -var ErrInvalidUTF8 = errors.New("encoding: invalid UTF-8") - -// UTF8Validator is a transformer that returns ErrInvalidUTF8 on the first -// input byte that is not valid UTF-8. -var UTF8Validator transform.Transformer = utf8Validator{} - -type utf8Validator struct{ transform.NopResetter } - -func (utf8Validator) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := len(src) - if n > len(dst) { - n = len(dst) - } - for i := 0; i < n; { - if c := src[i]; c < utf8.RuneSelf { - dst[i] = c - i++ - continue - } - _, size := utf8.DecodeRune(src[i:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - err = ErrInvalidUTF8 - if !atEOF && !utf8.FullRune(src[i:]) { - err = transform.ErrShortSrc - } - return i, i, err - } - if i+size > len(dst) { - return i, i, transform.ErrShortDst - } - for ; size > 0; size-- { - dst[i] = src[i] - i++ - } - } - if len(src) > len(dst) { - err = transform.ErrShortDst - } - return n, n, err -} diff --git a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go b/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go deleted file mode 100644 index bdc7d15..0000000 --- a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go - -// Package htmlindex maps character set encoding names to Encodings as -// recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding. -package htmlindex - -// TODO: perhaps have a "bare" version of the index (used by this package) that -// is not pre-loaded with all encodings. Global variables in encodings prevent -// the linker from being able to purge unneeded tables. This means that -// referencing all encodings, as this package does for the default index, links -// in all encodings unconditionally. -// -// This issue can be solved by either solving the linking issue (see -// https://github.com/golang/go/issues/6330) or refactoring the encoding tables -// (e.g. moving the tables to internal packages that do not use global -// variables). - -// TODO: allow canonicalizing names - -import ( - "errors" - "strings" - "sync" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/language" -) - -var ( - errInvalidName = errors.New("htmlindex: invalid encoding name") - errUnknown = errors.New("htmlindex: unknown Encoding") - errUnsupported = errors.New("htmlindex: this encoding is not supported") -) - -var ( - matcherOnce sync.Once - matcher language.Matcher -) - -// LanguageDefault returns the canonical name of the default encoding for a -// given language. -func LanguageDefault(tag language.Tag) string { - matcherOnce.Do(func() { - tags := []language.Tag{} - for _, t := range strings.Split(locales, " ") { - tags = append(tags, language.MustParse(t)) - } - matcher = language.NewMatcher(tags, language.PreferSameScript(true)) - }) - _, i, _ := matcher.Match(tag) - return canonical[localeMap[i]] // Default is Windows-1252. -} - -// Get returns an Encoding for one of the names listed in -// http://www.w3.org/TR/encoding using the Default Index. Matching is case- -// insensitive. -func Get(name string) (encoding.Encoding, error) { - x, ok := nameMap[strings.ToLower(strings.TrimSpace(name))] - if !ok { - return nil, errInvalidName - } - return encodings[x], nil -} - -// Name reports the canonical name of the given Encoding. It will return -// an error if e is not associated with a supported encoding scheme. -func Name(e encoding.Encoding) (string, error) { - id, ok := e.(identifier.Interface) - if !ok { - return "", errUnknown - } - mib, _ := id.ID() - if mib == 0 { - return "", errUnknown - } - v, ok := mibMap[mib] - if !ok { - return "", errUnsupported - } - return canonical[v], nil -} diff --git a/vendor/golang.org/x/text/encoding/htmlindex/map.go b/vendor/golang.org/x/text/encoding/htmlindex/map.go deleted file mode 100644 index c614390..0000000 --- a/vendor/golang.org/x/text/encoding/htmlindex/map.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package htmlindex - -import ( - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/encoding/japanese" - "golang.org/x/text/encoding/korean" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/encoding/traditionalchinese" - "golang.org/x/text/encoding/unicode" -) - -// mibMap maps a MIB identifier to an htmlEncoding index. -var mibMap = map[identifier.MIB]htmlEncoding{ - identifier.UTF8: utf8, - identifier.UTF16BE: utf16be, - identifier.UTF16LE: utf16le, - identifier.IBM866: ibm866, - identifier.ISOLatin2: iso8859_2, - identifier.ISOLatin3: iso8859_3, - identifier.ISOLatin4: iso8859_4, - identifier.ISOLatinCyrillic: iso8859_5, - identifier.ISOLatinArabic: iso8859_6, - identifier.ISOLatinGreek: iso8859_7, - identifier.ISOLatinHebrew: iso8859_8, - identifier.ISO88598I: iso8859_8I, - identifier.ISOLatin6: iso8859_10, - identifier.ISO885913: iso8859_13, - identifier.ISO885914: iso8859_14, - identifier.ISO885915: iso8859_15, - identifier.ISO885916: iso8859_16, - identifier.KOI8R: koi8r, - identifier.KOI8U: koi8u, - identifier.Macintosh: macintosh, - identifier.MacintoshCyrillic: macintoshCyrillic, - identifier.Windows874: windows874, - identifier.Windows1250: windows1250, - identifier.Windows1251: windows1251, - identifier.Windows1252: windows1252, - identifier.Windows1253: windows1253, - identifier.Windows1254: windows1254, - identifier.Windows1255: windows1255, - identifier.Windows1256: windows1256, - identifier.Windows1257: windows1257, - identifier.Windows1258: windows1258, - identifier.XUserDefined: xUserDefined, - identifier.GBK: gbk, - identifier.GB18030: gb18030, - identifier.Big5: big5, - identifier.EUCPkdFmtJapanese: eucjp, - identifier.ISO2022JP: iso2022jp, - identifier.ShiftJIS: shiftJIS, - identifier.EUCKR: euckr, - identifier.Replacement: replacement, -} - -// encodings maps the internal htmlEncoding to an Encoding. -// TODO: consider using a reusable index in encoding/internal. -var encodings = [numEncodings]encoding.Encoding{ - utf8: unicode.UTF8, - ibm866: charmap.CodePage866, - iso8859_2: charmap.ISO8859_2, - iso8859_3: charmap.ISO8859_3, - iso8859_4: charmap.ISO8859_4, - iso8859_5: charmap.ISO8859_5, - iso8859_6: charmap.ISO8859_6, - iso8859_7: charmap.ISO8859_7, - iso8859_8: charmap.ISO8859_8, - iso8859_8I: charmap.ISO8859_8I, - iso8859_10: charmap.ISO8859_10, - iso8859_13: charmap.ISO8859_13, - iso8859_14: charmap.ISO8859_14, - iso8859_15: charmap.ISO8859_15, - iso8859_16: charmap.ISO8859_16, - koi8r: charmap.KOI8R, - koi8u: charmap.KOI8U, - macintosh: charmap.Macintosh, - windows874: charmap.Windows874, - windows1250: charmap.Windows1250, - windows1251: charmap.Windows1251, - windows1252: charmap.Windows1252, - windows1253: charmap.Windows1253, - windows1254: charmap.Windows1254, - windows1255: charmap.Windows1255, - windows1256: charmap.Windows1256, - windows1257: charmap.Windows1257, - windows1258: charmap.Windows1258, - macintoshCyrillic: charmap.MacintoshCyrillic, - gbk: simplifiedchinese.GBK, - gb18030: simplifiedchinese.GB18030, - big5: traditionalchinese.Big5, - eucjp: japanese.EUCJP, - iso2022jp: japanese.ISO2022JP, - shiftJIS: japanese.ShiftJIS, - euckr: korean.EUCKR, - replacement: encoding.Replacement, - utf16be: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), - utf16le: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), - xUserDefined: charmap.XUserDefined, -} diff --git a/vendor/golang.org/x/text/encoding/htmlindex/tables.go b/vendor/golang.org/x/text/encoding/htmlindex/tables.go deleted file mode 100644 index 9e6daa8..0000000 --- a/vendor/golang.org/x/text/encoding/htmlindex/tables.go +++ /dev/null @@ -1,362 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package htmlindex - -type htmlEncoding byte - -const ( - utf8 htmlEncoding = iota - ibm866 - iso8859_2 - iso8859_3 - iso8859_4 - iso8859_5 - iso8859_6 - iso8859_7 - iso8859_8 - iso8859_8I - iso8859_10 - iso8859_13 - iso8859_14 - iso8859_15 - iso8859_16 - koi8r - koi8u - macintosh - windows874 - windows1250 - windows1251 - windows1252 - windows1253 - windows1254 - windows1255 - windows1256 - windows1257 - windows1258 - macintoshCyrillic - gbk - gb18030 - big5 - eucjp - iso2022jp - shiftJIS - euckr - replacement - utf16be - utf16le - xUserDefined - numEncodings -) - -var canonical = [numEncodings]string{ - "utf-8", - "ibm866", - "iso-8859-2", - "iso-8859-3", - "iso-8859-4", - "iso-8859-5", - "iso-8859-6", - "iso-8859-7", - "iso-8859-8", - "iso-8859-8-i", - "iso-8859-10", - "iso-8859-13", - "iso-8859-14", - "iso-8859-15", - "iso-8859-16", - "koi8-r", - "koi8-u", - "macintosh", - "windows-874", - "windows-1250", - "windows-1251", - "windows-1252", - "windows-1253", - "windows-1254", - "windows-1255", - "windows-1256", - "windows-1257", - "windows-1258", - "x-mac-cyrillic", - "gbk", - "gb18030", - "big5", - "euc-jp", - "iso-2022-jp", - "shift_jis", - "euc-kr", - "replacement", - "utf-16be", - "utf-16le", - "x-user-defined", -} - -var nameMap = map[string]htmlEncoding{ - "unicode-1-1-utf-8": utf8, - "unicode11utf8": utf8, - "unicode20utf8": utf8, - "utf-8": utf8, - "utf8": utf8, - "x-unicode20utf8": utf8, - "866": ibm866, - "cp866": ibm866, - "csibm866": ibm866, - "ibm866": ibm866, - "csisolatin2": iso8859_2, - "iso-8859-2": iso8859_2, - "iso-ir-101": iso8859_2, - "iso8859-2": iso8859_2, - "iso88592": iso8859_2, - "iso_8859-2": iso8859_2, - "iso_8859-2:1987": iso8859_2, - "l2": iso8859_2, - "latin2": iso8859_2, - "csisolatin3": iso8859_3, - "iso-8859-3": iso8859_3, - "iso-ir-109": iso8859_3, - "iso8859-3": iso8859_3, - "iso88593": iso8859_3, - "iso_8859-3": iso8859_3, - "iso_8859-3:1988": iso8859_3, - "l3": iso8859_3, - "latin3": iso8859_3, - "csisolatin4": iso8859_4, - "iso-8859-4": iso8859_4, - "iso-ir-110": iso8859_4, - "iso8859-4": iso8859_4, - "iso88594": iso8859_4, - "iso_8859-4": iso8859_4, - "iso_8859-4:1988": iso8859_4, - "l4": iso8859_4, - "latin4": iso8859_4, - "csisolatincyrillic": iso8859_5, - "cyrillic": iso8859_5, - "iso-8859-5": iso8859_5, - "iso-ir-144": iso8859_5, - "iso8859-5": iso8859_5, - "iso88595": iso8859_5, - "iso_8859-5": iso8859_5, - "iso_8859-5:1988": iso8859_5, - "arabic": iso8859_6, - "asmo-708": iso8859_6, - "csiso88596e": iso8859_6, - "csiso88596i": iso8859_6, - "csisolatinarabic": iso8859_6, - "ecma-114": iso8859_6, - "iso-8859-6": iso8859_6, - "iso-8859-6-e": iso8859_6, - "iso-8859-6-i": iso8859_6, - "iso-ir-127": iso8859_6, - "iso8859-6": iso8859_6, - "iso88596": iso8859_6, - "iso_8859-6": iso8859_6, - "iso_8859-6:1987": iso8859_6, - "csisolatingreek": iso8859_7, - "ecma-118": iso8859_7, - "elot_928": iso8859_7, - "greek": iso8859_7, - "greek8": iso8859_7, - "iso-8859-7": iso8859_7, - "iso-ir-126": iso8859_7, - "iso8859-7": iso8859_7, - "iso88597": iso8859_7, - "iso_8859-7": iso8859_7, - "iso_8859-7:1987": iso8859_7, - "sun_eu_greek": iso8859_7, - "csiso88598e": iso8859_8, - "csisolatinhebrew": iso8859_8, - "hebrew": iso8859_8, - "iso-8859-8": iso8859_8, - "iso-8859-8-e": iso8859_8, - "iso-ir-138": iso8859_8, - "iso8859-8": iso8859_8, - "iso88598": iso8859_8, - "iso_8859-8": iso8859_8, - "iso_8859-8:1988": iso8859_8, - "visual": iso8859_8, - "csiso88598i": iso8859_8I, - "iso-8859-8-i": iso8859_8I, - "logical": iso8859_8I, - "csisolatin6": iso8859_10, - "iso-8859-10": iso8859_10, - "iso-ir-157": iso8859_10, - "iso8859-10": iso8859_10, - "iso885910": iso8859_10, - "l6": iso8859_10, - "latin6": iso8859_10, - "iso-8859-13": iso8859_13, - "iso8859-13": iso8859_13, - "iso885913": iso8859_13, - "iso-8859-14": iso8859_14, - "iso8859-14": iso8859_14, - "iso885914": iso8859_14, - "csisolatin9": iso8859_15, - "iso-8859-15": iso8859_15, - "iso8859-15": iso8859_15, - "iso885915": iso8859_15, - "iso_8859-15": iso8859_15, - "l9": iso8859_15, - "iso-8859-16": iso8859_16, - "cskoi8r": koi8r, - "koi": koi8r, - "koi8": koi8r, - "koi8-r": koi8r, - "koi8_r": koi8r, - "koi8-ru": koi8u, - "koi8-u": koi8u, - "csmacintosh": macintosh, - "mac": macintosh, - "macintosh": macintosh, - "x-mac-roman": macintosh, - "dos-874": windows874, - "iso-8859-11": windows874, - "iso8859-11": windows874, - "iso885911": windows874, - "tis-620": windows874, - "windows-874": windows874, - "cp1250": windows1250, - "windows-1250": windows1250, - "x-cp1250": windows1250, - "cp1251": windows1251, - "windows-1251": windows1251, - "x-cp1251": windows1251, - "ansi_x3.4-1968": windows1252, - "ascii": windows1252, - "cp1252": windows1252, - "cp819": windows1252, - "csisolatin1": windows1252, - "ibm819": windows1252, - "iso-8859-1": windows1252, - "iso-ir-100": windows1252, - "iso8859-1": windows1252, - "iso88591": windows1252, - "iso_8859-1": windows1252, - "iso_8859-1:1987": windows1252, - "l1": windows1252, - "latin1": windows1252, - "us-ascii": windows1252, - "windows-1252": windows1252, - "x-cp1252": windows1252, - "cp1253": windows1253, - "windows-1253": windows1253, - "x-cp1253": windows1253, - "cp1254": windows1254, - "csisolatin5": windows1254, - "iso-8859-9": windows1254, - "iso-ir-148": windows1254, - "iso8859-9": windows1254, - "iso88599": windows1254, - "iso_8859-9": windows1254, - "iso_8859-9:1989": windows1254, - "l5": windows1254, - "latin5": windows1254, - "windows-1254": windows1254, - "x-cp1254": windows1254, - "cp1255": windows1255, - "windows-1255": windows1255, - "x-cp1255": windows1255, - "cp1256": windows1256, - "windows-1256": windows1256, - "x-cp1256": windows1256, - "cp1257": windows1257, - "windows-1257": windows1257, - "x-cp1257": windows1257, - "cp1258": windows1258, - "windows-1258": windows1258, - "x-cp1258": windows1258, - "x-mac-cyrillic": macintoshCyrillic, - "x-mac-ukrainian": macintoshCyrillic, - "chinese": gbk, - "csgb2312": gbk, - "csiso58gb231280": gbk, - "gb2312": gbk, - "gb_2312": gbk, - "gb_2312-80": gbk, - "gbk": gbk, - "iso-ir-58": gbk, - "x-gbk": gbk, - "gb18030": gb18030, - "big5": big5, - "big5-hkscs": big5, - "cn-big5": big5, - "csbig5": big5, - "x-x-big5": big5, - "cseucpkdfmtjapanese": eucjp, - "euc-jp": eucjp, - "x-euc-jp": eucjp, - "csiso2022jp": iso2022jp, - "iso-2022-jp": iso2022jp, - "csshiftjis": shiftJIS, - "ms932": shiftJIS, - "ms_kanji": shiftJIS, - "shift-jis": shiftJIS, - "shift_jis": shiftJIS, - "sjis": shiftJIS, - "windows-31j": shiftJIS, - "x-sjis": shiftJIS, - "cseuckr": euckr, - "csksc56011987": euckr, - "euc-kr": euckr, - "iso-ir-149": euckr, - "korean": euckr, - "ks_c_5601-1987": euckr, - "ks_c_5601-1989": euckr, - "ksc5601": euckr, - "ksc_5601": euckr, - "windows-949": euckr, - "csiso2022kr": replacement, - "hz-gb-2312": replacement, - "iso-2022-cn": replacement, - "iso-2022-cn-ext": replacement, - "iso-2022-kr": replacement, - "replacement": replacement, - "unicodefffe": utf16be, - "utf-16be": utf16be, - "csunicode": utf16le, - "iso-10646-ucs-2": utf16le, - "ucs-2": utf16le, - "unicode": utf16le, - "unicodefeff": utf16le, - "utf-16": utf16le, - "utf-16le": utf16le, - "x-user-defined": xUserDefined, -} - -var localeMap = []htmlEncoding{ - windows1252, // und_Latn - windows1256, // ar - windows1251, // ba - windows1251, // be - windows1251, // bg - windows1250, // cs - iso8859_7, // el - windows1257, // et - windows1256, // fa - windows1255, // he - windows1250, // hr - iso8859_2, // hu - shiftJIS, // ja - windows1251, // kk - euckr, // ko - windows1254, // ku - windows1251, // ky - windows1257, // lt - windows1257, // lv - windows1251, // mk - iso8859_2, // pl - windows1251, // ru - windows1251, // sah - windows1250, // sk - iso8859_2, // sl - windows1251, // sr - windows1251, // tg - windows874, // th - windows1254, // tr - windows1251, // tt - windows1251, // uk - windows1258, // vi - gb18030, // zh-hans - big5, // zh-hant -} - -const locales = "und_Latn ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant" diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go deleted file mode 100644 index 5c9b85c..0000000 --- a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go - -// Package identifier defines the contract between implementations of Encoding -// and Index by defining identifiers that uniquely identify standardized coded -// character sets (CCS) and character encoding schemes (CES), which we will -// together refer to as encodings, for which Encoding implementations provide -// converters to and from UTF-8. This package is typically only of concern to -// implementers of Indexes and Encodings. -// -// One part of the identifier is the MIB code, which is defined by IANA and -// uniquely identifies a CCS or CES. Each code is associated with data that -// references authorities, official documentation as well as aliases and MIME -// names. -// -// Not all CESs are covered by the IANA registry. The "other" string that is -// returned by ID can be used to identify other character sets or versions of -// existing ones. -// -// It is recommended that each package that provides a set of Encodings provide -// the All and Common variables to reference all supported encodings and -// commonly used subset. This allows Index implementations to include all -// available encodings without explicitly referencing or knowing about them. -package identifier - -// Note: this package is internal, but could be made public if there is a need -// for writing third-party Indexes and Encodings. - -// References: -// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt -// - http://www.iana.org/assignments/character-sets/character-sets.xhtml -// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib -// - http://www.ietf.org/rfc/rfc2978.txt -// - https://www.unicode.org/reports/tr22/ -// - http://www.w3.org/TR/encoding/ -// - https://encoding.spec.whatwg.org/ -// - https://encoding.spec.whatwg.org/encodings.json -// - https://tools.ietf.org/html/rfc6657#section-5 - -// Interface can be implemented by Encodings to define the CCS or CES for which -// it implements conversions. -type Interface interface { - // ID returns an encoding identifier. Exactly one of the mib and other - // values should be non-zero. - // - // In the usual case it is only necessary to indicate the MIB code. The - // other string can be used to specify encodings for which there is no MIB, - // such as "x-mac-dingbat". - // - // The other string may only contain the characters a-z, A-Z, 0-9, - and _. - ID() (mib MIB, other string) - - // NOTE: the restrictions on the encoding are to allow extending the syntax - // with additional information such as versions, vendors and other variants. -} - -// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds -// some identifiers for some encodings that are not covered by the IANA -// standard. -// -// See http://www.iana.org/assignments/ianacharset-mib. -type MIB uint16 - -// These additional MIB types are not defined in IANA. They are added because -// they are common and defined within the text repo. -const ( - // Unofficial marks the start of encodings not registered by IANA. - Unofficial MIB = 10000 + iota - - // Replacement is the WhatWG replacement encoding. - Replacement - - // XUserDefined is the code for x-user-defined. - XUserDefined - - // MacintoshCyrillic is the code for x-mac-cyrillic. - MacintoshCyrillic -) diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go deleted file mode 100644 index 351fb86..0000000 --- a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +++ /dev/null @@ -1,1627 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package identifier - -const ( - // ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII). - // - // ANSI X3.4-1986 - // Reference: RFC2046 - ASCII MIB = 3 - - // ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin1 MIB = 4 - - // ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin2 MIB = 5 - - // ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin3 MIB = 6 - - // ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin4 MIB = 7 - - // ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinCyrillic MIB = 8 - - // ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinArabic MIB = 9 - - // ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1947 - // Reference: RFC1345 - ISOLatinGreek MIB = 10 - - // ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatinHebrew MIB = 11 - - // ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin5 MIB = 12 - - // ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOLatin6 MIB = 13 - - // ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add. - // - // ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983 - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISOTextComm MIB = 14 - - // HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201. - // - // JIS X 0201-1976. One byte only, this is equivalent to - // JIS/Roman (similar to ASCII) plus eight-bit half-width - // Katakana - // Reference: RFC1345 - HalfWidthKatakana MIB = 15 - - // JISEncoding is the MIB identifier with IANA name JIS_Encoding. - // - // JIS X 0202-1991. Uses ISO 2022 escape sequences to - // shift code sets as documented in JIS X 0202-1991. - JISEncoding MIB = 16 - - // ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS). - // - // This charset is an extension of csHalfWidthKatakana by - // adding graphic characters in JIS X 0208. The CCS's are - // JIS X0201:1997 and JIS X0208:1997. The - // complete definition is shown in Appendix 1 of JIS - // X0208:1997. - // This charset can be used for the top-level media type "text". - ShiftJIS MIB = 17 - - // EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP). - // - // Standardized by OSF, UNIX International, and UNIX Systems - // Laboratories Pacific. Uses ISO 2022 rules to select - // code set 0: US-ASCII (a single 7-bit byte set) - // code set 1: JIS X0208-1990 (a double 8-bit byte set) - // restricted to A0-FF in both bytes - // code set 2: Half Width Katakana (a single 7-bit byte set) - // requiring SS2 as the character prefix - // code set 3: JIS X0212-1990 (a double 7-bit byte set) - // restricted to A0-FF in both bytes - // requiring SS3 as the character prefix - EUCPkdFmtJapanese MIB = 18 - - // EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese. - // - // Used in Japan. Each character is 2 octets. - // code set 0: US-ASCII (a single 7-bit byte set) - // 1st byte = 00 - // 2nd byte = 20-7E - // code set 1: JIS X0208-1990 (a double 7-bit byte set) - // restricted to A0-FF in both bytes - // code set 2: Half Width Katakana (a single 7-bit byte set) - // 1st byte = 00 - // 2nd byte = A0-FF - // code set 3: JIS X0212-1990 (a double 7-bit byte set) - // restricted to A0-FF in - // the first byte - // and 21-7E in the second byte - EUCFixWidJapanese MIB = 19 - - // ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO4UnitedKingdom MIB = 20 - - // ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO11SwedishForNames MIB = 21 - - // ISO15Italian is the MIB identifier with IANA name IT. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO15Italian MIB = 22 - - // ISO17Spanish is the MIB identifier with IANA name ES. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO17Spanish MIB = 23 - - // ISO21German is the MIB identifier with IANA name DIN_66003. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO21German MIB = 24 - - // ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO60Norwegian1 MIB = 25 - - // ISO69French is the MIB identifier with IANA name NF_Z_62-010. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO69French MIB = 26 - - // ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1. - // - // Universal Transfer Format (1), this is the multibyte - // encoding, that subsets ASCII-7. It does not have byte - // ordering issues. - ISO10646UTF1 MIB = 27 - - // ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO646basic1983 MIB = 28 - - // INVARIANT is the MIB identifier with IANA name INVARIANT. - // - // Reference: RFC1345 - INVARIANT MIB = 29 - - // ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO2IntlRefVersion MIB = 30 - - // NATSSEFI is the MIB identifier with IANA name NATS-SEFI. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSSEFI MIB = 31 - - // NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSSEFIADD MIB = 32 - - // NATSDANO is the MIB identifier with IANA name NATS-DANO. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSDANO MIB = 33 - - // NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - NATSDANOADD MIB = 34 - - // ISO10Swedish is the MIB identifier with IANA name SEN_850200_B. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO10Swedish MIB = 35 - - // KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - KSC56011987 MIB = 36 - - // ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR). - // - // rfc1557 (see also KS_C_5601-1987) - // Reference: RFC1557 - ISO2022KR MIB = 37 - - // EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR). - // - // rfc1557 (see also KS_C_5861-1992) - // Reference: RFC1557 - EUCKR MIB = 38 - - // ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP). - // - // rfc1468 (see also rfc2237 ) - // Reference: RFC1468 - ISO2022JP MIB = 39 - - // ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2). - // - // rfc1554 - // Reference: RFC1554 - ISO2022JP2 MIB = 40 - - // ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO13JISC6220jp MIB = 41 - - // ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO14JISC6220ro MIB = 42 - - // ISO16Portuguese is the MIB identifier with IANA name PT. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO16Portuguese MIB = 43 - - // ISO18Greek7Old is the MIB identifier with IANA name greek7-old. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO18Greek7Old MIB = 44 - - // ISO19LatinGreek is the MIB identifier with IANA name latin-greek. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO19LatinGreek MIB = 45 - - // ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973). - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO25French MIB = 46 - - // ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO27LatinGreek1 MIB = 47 - - // ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO5427Cyrillic MIB = 48 - - // ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO42JISC62261978 MIB = 49 - - // ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO47BSViewdata MIB = 50 - - // ISO49INIS is the MIB identifier with IANA name INIS. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO49INIS MIB = 51 - - // ISO50INIS8 is the MIB identifier with IANA name INIS-8. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO50INIS8 MIB = 52 - - // ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO51INISCyrillic MIB = 53 - - // ISO54271981 is the MIB identifier with IANA name ISO_5427:1981. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO54271981 MIB = 54 - - // ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO5428Greek MIB = 55 - - // ISO57GB1988 is the MIB identifier with IANA name GB_1988-80. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO57GB1988 MIB = 56 - - // ISO58GB231280 is the MIB identifier with IANA name GB_2312-80. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO58GB231280 MIB = 57 - - // ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO61Norwegian2 MIB = 58 - - // ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO70VideotexSupp1 MIB = 59 - - // ISO84Portuguese2 is the MIB identifier with IANA name PT2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO84Portuguese2 MIB = 60 - - // ISO85Spanish2 is the MIB identifier with IANA name ES2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO85Spanish2 MIB = 61 - - // ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO86Hungarian MIB = 62 - - // ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO87JISX0208 MIB = 63 - - // ISO88Greek7 is the MIB identifier with IANA name greek7. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO88Greek7 MIB = 64 - - // ISO89ASMO449 is the MIB identifier with IANA name ASMO_449. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO89ASMO449 MIB = 65 - - // ISO90 is the MIB identifier with IANA name iso-ir-90. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO90 MIB = 66 - - // ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO91JISC62291984a MIB = 67 - - // ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO92JISC62991984b MIB = 68 - - // ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO93JIS62291984badd MIB = 69 - - // ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO94JIS62291984hand MIB = 70 - - // ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO95JIS62291984handadd MIB = 71 - - // ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO96JISC62291984kana MIB = 72 - - // ISO2033 is the MIB identifier with IANA name ISO_2033-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO2033 MIB = 73 - - // ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO99NAPLPS MIB = 74 - - // ISO102T617bit is the MIB identifier with IANA name T.61-7bit. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO102T617bit MIB = 75 - - // ISO103T618bit is the MIB identifier with IANA name T.61-8bit. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO103T618bit MIB = 76 - - // ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic. - // - // ISO registry - ISO111ECMACyrillic MIB = 77 - - // ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO121Canadian1 MIB = 78 - - // ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO122Canadian2 MIB = 79 - - // ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO123CSAZ24341985gr MIB = 80 - - // ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E). - // - // rfc1556 - // Reference: RFC1556 - ISO88596E MIB = 81 - - // ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I). - // - // rfc1556 - // Reference: RFC1556 - ISO88596I MIB = 82 - - // ISO128T101G2 is the MIB identifier with IANA name T.101-G2. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO128T101G2 MIB = 83 - - // ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E). - // - // rfc1556 - // Reference: RFC1556 - ISO88598E MIB = 84 - - // ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I). - // - // rfc1556 - // Reference: RFC1556 - ISO88598I MIB = 85 - - // ISO139CSN369103 is the MIB identifier with IANA name CSN_369103. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO139CSN369103 MIB = 86 - - // ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO141JUSIB1002 MIB = 87 - - // ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO143IECP271 MIB = 88 - - // ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO146Serbian MIB = 89 - - // ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO147Macedonian MIB = 90 - - // ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO150GreekCCITT MIB = 91 - - // ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO151Cuba MIB = 92 - - // ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO6937Add MIB = 93 - - // ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO153GOST1976874 MIB = 94 - - // ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO8859Supp MIB = 95 - - // ISO10367Box is the MIB identifier with IANA name ISO_10367-box. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO10367Box MIB = 96 - - // ISO158Lap is the MIB identifier with IANA name latin-lap. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO158Lap MIB = 97 - - // ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990. - // - // ISO-IR: International Register of Escape Sequences - // Note: The current registration authority is IPSJ/ITSCJ, Japan. - // Reference: RFC1345 - ISO159JISX02121990 MIB = 98 - - // ISO646Danish is the MIB identifier with IANA name DS_2089. - // - // Danish Standard, DS 2089, February 1974 - // Reference: RFC1345 - ISO646Danish MIB = 99 - - // USDK is the MIB identifier with IANA name us-dk. - // - // Reference: RFC1345 - USDK MIB = 100 - - // DKUS is the MIB identifier with IANA name dk-us. - // - // Reference: RFC1345 - DKUS MIB = 101 - - // KSC5636 is the MIB identifier with IANA name KSC5636. - // - // Reference: RFC1345 - KSC5636 MIB = 102 - - // Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7. - // - // rfc1642 - // Reference: RFC1642 - Unicode11UTF7 MIB = 103 - - // ISO2022CN is the MIB identifier with IANA name ISO-2022-CN. - // - // rfc1922 - // Reference: RFC1922 - ISO2022CN MIB = 104 - - // ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT. - // - // rfc1922 - // Reference: RFC1922 - ISO2022CNEXT MIB = 105 - - // UTF8 is the MIB identifier with IANA name UTF-8. - // - // rfc3629 - // Reference: RFC3629 - UTF8 MIB = 106 - - // ISO885913 is the MIB identifier with IANA name ISO-8859-13. - // - // ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-13 https://www.iana.org/assignments/charset-reg/ISO-8859-13 - ISO885913 MIB = 109 - - // ISO885914 is the MIB identifier with IANA name ISO-8859-14. - // - // ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-14 - ISO885914 MIB = 110 - - // ISO885915 is the MIB identifier with IANA name ISO-8859-15. - // - // ISO - // Please see: https://www.iana.org/assignments/charset-reg/ISO-8859-15 - ISO885915 MIB = 111 - - // ISO885916 is the MIB identifier with IANA name ISO-8859-16. - // - // ISO - ISO885916 MIB = 112 - - // GBK is the MIB identifier with IANA name GBK. - // - // Chinese IT Standardization Technical Committee - // Please see: https://www.iana.org/assignments/charset-reg/GBK - GBK MIB = 113 - - // GB18030 is the MIB identifier with IANA name GB18030. - // - // Chinese IT Standardization Technical Committee - // Please see: https://www.iana.org/assignments/charset-reg/GB18030 - GB18030 MIB = 114 - - // OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15 - OSDEBCDICDF0415 MIB = 115 - - // OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV - OSDEBCDICDF03IRV MIB = 116 - - // OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1. - // - // Fujitsu-Siemens standard mainframe EBCDIC encoding - // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1 - OSDEBCDICDF041 MIB = 117 - - // ISO115481 is the MIB identifier with IANA name ISO-11548-1. - // - // See https://www.iana.org/assignments/charset-reg/ISO-11548-1 - ISO115481 MIB = 118 - - // KZ1048 is the MIB identifier with IANA name KZ-1048. - // - // See https://www.iana.org/assignments/charset-reg/KZ-1048 - KZ1048 MIB = 119 - - // Unicode is the MIB identifier with IANA name ISO-10646-UCS-2. - // - // the 2-octet Basic Multilingual Plane, aka Unicode - // this needs to specify network byte order: the standard - // does not specify (it is a 16-bit integer space) - Unicode MIB = 1000 - - // UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4. - // - // the full code space. (same comment about byte order, - // these are 31-bit numbers. - UCS4 MIB = 1001 - - // UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic. - // - // ASCII subset of Unicode. Basic Latin = collection 1 - // See ISO 10646, Appendix A - UnicodeASCII MIB = 1002 - - // UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1. - // - // ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 - // Supplement = collections 1 and 2. See ISO 10646, - // Appendix A. See rfc1815 . - UnicodeLatin1 MIB = 1003 - - // UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1. - // - // ISO 10646 Japanese, see rfc1815 . - UnicodeJapanese MIB = 1004 - - // UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261. - // - // IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261 - UnicodeIBM1261 MIB = 1005 - - // UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268. - // - // IBM Latin-4 Extended Presentation Set, GCSGID: 1268 - UnicodeIBM1268 MIB = 1006 - - // UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276. - // - // IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276 - UnicodeIBM1276 MIB = 1007 - - // UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264. - // - // IBM Arabic Presentation Set, GCSGID: 1264 - UnicodeIBM1264 MIB = 1008 - - // UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265. - // - // IBM Hebrew Presentation Set, GCSGID: 1265 - UnicodeIBM1265 MIB = 1009 - - // Unicode11 is the MIB identifier with IANA name UNICODE-1-1. - // - // rfc1641 - // Reference: RFC1641 - Unicode11 MIB = 1010 - - // SCSU is the MIB identifier with IANA name SCSU. - // - // SCSU See https://www.iana.org/assignments/charset-reg/SCSU - SCSU MIB = 1011 - - // UTF7 is the MIB identifier with IANA name UTF-7. - // - // rfc2152 - // Reference: RFC2152 - UTF7 MIB = 1012 - - // UTF16BE is the MIB identifier with IANA name UTF-16BE. - // - // rfc2781 - // Reference: RFC2781 - UTF16BE MIB = 1013 - - // UTF16LE is the MIB identifier with IANA name UTF-16LE. - // - // rfc2781 - // Reference: RFC2781 - UTF16LE MIB = 1014 - - // UTF16 is the MIB identifier with IANA name UTF-16. - // - // rfc2781 - // Reference: RFC2781 - UTF16 MIB = 1015 - - // CESU8 is the MIB identifier with IANA name CESU-8. - // - // https://www.unicode.org/reports/tr26 - CESU8 MIB = 1016 - - // UTF32 is the MIB identifier with IANA name UTF-32. - // - // https://www.unicode.org/reports/tr19/ - UTF32 MIB = 1017 - - // UTF32BE is the MIB identifier with IANA name UTF-32BE. - // - // https://www.unicode.org/reports/tr19/ - UTF32BE MIB = 1018 - - // UTF32LE is the MIB identifier with IANA name UTF-32LE. - // - // https://www.unicode.org/reports/tr19/ - UTF32LE MIB = 1019 - - // BOCU1 is the MIB identifier with IANA name BOCU-1. - // - // https://www.unicode.org/notes/tn6/ - BOCU1 MIB = 1020 - - // UTF7IMAP is the MIB identifier with IANA name UTF-7-IMAP. - // - // Note: This charset is used to encode Unicode in IMAP mailbox names; - // see section 5.1.3 of rfc3501 . It should never be used - // outside this context. A name has been assigned so that charset processing - // implementations can refer to it in a consistent way. - UTF7IMAP MIB = 1021 - - // Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1. - // - // Extended ISO 8859-1 Latin-1 for Windows 3.0. - // PCL Symbol Set id: 9U - Windows30Latin1 MIB = 2000 - - // Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1. - // - // Extended ISO 8859-1 Latin-1 for Windows 3.1. - // PCL Symbol Set id: 19U - Windows31Latin1 MIB = 2001 - - // Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2. - // - // Extended ISO 8859-2. Latin-2 for Windows 3.1. - // PCL Symbol Set id: 9E - Windows31Latin2 MIB = 2002 - - // Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5. - // - // Extended ISO 8859-9. Latin-5 for Windows 3.1 - // PCL Symbol Set id: 5T - Windows31Latin5 MIB = 2003 - - // HPRoman8 is the MIB identifier with IANA name hp-roman8. - // - // LaserJet IIP Printer User's Manual, - // HP part no 33471-90901, Hewlet-Packard, June 1989. - // Reference: RFC1345 - HPRoman8 MIB = 2004 - - // AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding. - // - // PostScript Language Reference Manual - // PCL Symbol Set id: 10J - AdobeStandardEncoding MIB = 2005 - - // VenturaUS is the MIB identifier with IANA name Ventura-US. - // - // Ventura US. ASCII plus characters typically used in - // publishing, like pilcrow, copyright, registered, trade mark, - // section, dagger, and double dagger in the range A0 (hex) - // to FF (hex). - // PCL Symbol Set id: 14J - VenturaUS MIB = 2006 - - // VenturaInternational is the MIB identifier with IANA name Ventura-International. - // - // Ventura International. ASCII plus coded characters similar - // to Roman8. - // PCL Symbol Set id: 13J - VenturaInternational MIB = 2007 - - // DECMCS is the MIB identifier with IANA name DEC-MCS. - // - // VAX/VMS User's Manual, - // Order Number: AI-Y517A-TE, April 1986. - // Reference: RFC1345 - DECMCS MIB = 2008 - - // PC850Multilingual is the MIB identifier with IANA name IBM850. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC850Multilingual MIB = 2009 - - // PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian. - // - // PC Danish Norwegian - // 8-bit PC set for Danish Norwegian - // PCL Symbol Set id: 11U - PC8DanishNorwegian MIB = 2012 - - // PC862LatinHebrew is the MIB identifier with IANA name IBM862. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC862LatinHebrew MIB = 2013 - - // PC8Turkish is the MIB identifier with IANA name PC8-Turkish. - // - // PC Latin Turkish. PCL Symbol Set id: 9T - PC8Turkish MIB = 2014 - - // IBMSymbols is the MIB identifier with IANA name IBM-Symbols. - // - // Presentation Set, CPGID: 259 - IBMSymbols MIB = 2015 - - // IBMThai is the MIB identifier with IANA name IBM-Thai. - // - // Presentation Set, CPGID: 838 - IBMThai MIB = 2016 - - // HPLegal is the MIB identifier with IANA name HP-Legal. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 1U - HPLegal MIB = 2017 - - // HPPiFont is the MIB identifier with IANA name HP-Pi-font. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 15U - HPPiFont MIB = 2018 - - // HPMath8 is the MIB identifier with IANA name HP-Math8. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 8M - HPMath8 MIB = 2019 - - // HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding. - // - // PostScript Language Reference Manual - // PCL Symbol Set id: 5M - HPPSMath MIB = 2020 - - // HPDesktop is the MIB identifier with IANA name HP-DeskTop. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 7J - HPDesktop MIB = 2021 - - // VenturaMath is the MIB identifier with IANA name Ventura-Math. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 6M - VenturaMath MIB = 2022 - - // MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing. - // - // PCL 5 Comparison Guide, Hewlett-Packard, - // HP part number 5961-0510, October 1992 - // PCL Symbol Set id: 6J - MicrosoftPublishing MIB = 2023 - - // Windows31J is the MIB identifier with IANA name Windows-31J. - // - // Windows Japanese. A further extension of Shift_JIS - // to include NEC special characters (Row 13), NEC - // selection of IBM extensions (Rows 89 to 92), and IBM - // extensions (Rows 115 to 119). The CCS's are - // JIS X0201:1997, JIS X0208:1997, and these extensions. - // This charset can be used for the top-level media type "text", - // but it is of limited or specialized use (see rfc2278 ). - // PCL Symbol Set id: 19K - Windows31J MIB = 2024 - - // GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312). - // - // Chinese for People's Republic of China (PRC) mixed one byte, - // two byte set: - // 20-7E = one byte ASCII - // A1-FE = two byte PRC Kanji - // See GB 2312-80 - // PCL Symbol Set Id: 18C - GB2312 MIB = 2025 - - // Big5 is the MIB identifier with IANA name Big5 (MIME: Big5). - // - // Chinese for Taiwan Multi-byte set. - // PCL Symbol Set Id: 18T - Big5 MIB = 2026 - - // Macintosh is the MIB identifier with IANA name macintosh. - // - // The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991 - // Reference: RFC1345 - Macintosh MIB = 2027 - - // IBM037 is the MIB identifier with IANA name IBM037. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM037 MIB = 2028 - - // IBM038 is the MIB identifier with IANA name IBM038. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM038 MIB = 2029 - - // IBM273 is the MIB identifier with IANA name IBM273. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM273 MIB = 2030 - - // IBM274 is the MIB identifier with IANA name IBM274. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM274 MIB = 2031 - - // IBM275 is the MIB identifier with IANA name IBM275. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM275 MIB = 2032 - - // IBM277 is the MIB identifier with IANA name IBM277. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM277 MIB = 2033 - - // IBM278 is the MIB identifier with IANA name IBM278. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM278 MIB = 2034 - - // IBM280 is the MIB identifier with IANA name IBM280. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM280 MIB = 2035 - - // IBM281 is the MIB identifier with IANA name IBM281. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM281 MIB = 2036 - - // IBM284 is the MIB identifier with IANA name IBM284. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM284 MIB = 2037 - - // IBM285 is the MIB identifier with IANA name IBM285. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM285 MIB = 2038 - - // IBM290 is the MIB identifier with IANA name IBM290. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM290 MIB = 2039 - - // IBM297 is the MIB identifier with IANA name IBM297. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM297 MIB = 2040 - - // IBM420 is the MIB identifier with IANA name IBM420. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990, - // IBM NLS RM p 11-11 - // Reference: RFC1345 - IBM420 MIB = 2041 - - // IBM423 is the MIB identifier with IANA name IBM423. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM423 MIB = 2042 - - // IBM424 is the MIB identifier with IANA name IBM424. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM424 MIB = 2043 - - // PC8CodePage437 is the MIB identifier with IANA name IBM437. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PC8CodePage437 MIB = 2011 - - // IBM500 is the MIB identifier with IANA name IBM500. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM500 MIB = 2044 - - // IBM851 is the MIB identifier with IANA name IBM851. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM851 MIB = 2045 - - // PCp852 is the MIB identifier with IANA name IBM852. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - PCp852 MIB = 2010 - - // IBM855 is the MIB identifier with IANA name IBM855. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM855 MIB = 2046 - - // IBM857 is the MIB identifier with IANA name IBM857. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM857 MIB = 2047 - - // IBM860 is the MIB identifier with IANA name IBM860. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM860 MIB = 2048 - - // IBM861 is the MIB identifier with IANA name IBM861. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM861 MIB = 2049 - - // IBM863 is the MIB identifier with IANA name IBM863. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM863 MIB = 2050 - - // IBM864 is the MIB identifier with IANA name IBM864. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM864 MIB = 2051 - - // IBM865 is the MIB identifier with IANA name IBM865. - // - // IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) - // Reference: RFC1345 - IBM865 MIB = 2052 - - // IBM868 is the MIB identifier with IANA name IBM868. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM868 MIB = 2053 - - // IBM869 is the MIB identifier with IANA name IBM869. - // - // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 - // Reference: RFC1345 - IBM869 MIB = 2054 - - // IBM870 is the MIB identifier with IANA name IBM870. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM870 MIB = 2055 - - // IBM871 is the MIB identifier with IANA name IBM871. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM871 MIB = 2056 - - // IBM880 is the MIB identifier with IANA name IBM880. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM880 MIB = 2057 - - // IBM891 is the MIB identifier with IANA name IBM891. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM891 MIB = 2058 - - // IBM903 is the MIB identifier with IANA name IBM903. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM903 MIB = 2059 - - // IBBM904 is the MIB identifier with IANA name IBM904. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBBM904 MIB = 2060 - - // IBM905 is the MIB identifier with IANA name IBM905. - // - // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 - // Reference: RFC1345 - IBM905 MIB = 2061 - - // IBM918 is the MIB identifier with IANA name IBM918. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM918 MIB = 2062 - - // IBM1026 is the MIB identifier with IANA name IBM1026. - // - // IBM NLS RM Vol2 SE09-8002-01, March 1990 - // Reference: RFC1345 - IBM1026 MIB = 2063 - - // IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - IBMEBCDICATDE MIB = 2064 - - // EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICATDEA MIB = 2065 - - // EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICCAFR MIB = 2066 - - // EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICDKNO MIB = 2067 - - // EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICDKNOA MIB = 2068 - - // EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFISE MIB = 2069 - - // EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFISEA MIB = 2070 - - // EBCDICFR is the MIB identifier with IANA name EBCDIC-FR. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICFR MIB = 2071 - - // EBCDICIT is the MIB identifier with IANA name EBCDIC-IT. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICIT MIB = 2072 - - // EBCDICPT is the MIB identifier with IANA name EBCDIC-PT. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICPT MIB = 2073 - - // EBCDICES is the MIB identifier with IANA name EBCDIC-ES. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICES MIB = 2074 - - // EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICESA MIB = 2075 - - // EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICESS MIB = 2076 - - // EBCDICUK is the MIB identifier with IANA name EBCDIC-UK. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICUK MIB = 2077 - - // EBCDICUS is the MIB identifier with IANA name EBCDIC-US. - // - // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 - // Reference: RFC1345 - EBCDICUS MIB = 2078 - - // Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT. - // - // Reference: RFC1428 - Unknown8BiT MIB = 2079 - - // Mnemonic is the MIB identifier with IANA name MNEMONIC. - // - // rfc1345 , also known as "mnemonic+ascii+38" - // Reference: RFC1345 - Mnemonic MIB = 2080 - - // Mnem is the MIB identifier with IANA name MNEM. - // - // rfc1345 , also known as "mnemonic+ascii+8200" - // Reference: RFC1345 - Mnem MIB = 2081 - - // VISCII is the MIB identifier with IANA name VISCII. - // - // rfc1456 - // Reference: RFC1456 - VISCII MIB = 2082 - - // VIQR is the MIB identifier with IANA name VIQR. - // - // rfc1456 - // Reference: RFC1456 - VIQR MIB = 2083 - - // KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R). - // - // rfc1489 , based on GOST-19768-74, ISO-6937/8, - // INIS-Cyrillic, ISO-5427. - // Reference: RFC1489 - KOI8R MIB = 2084 - - // HZGB2312 is the MIB identifier with IANA name HZ-GB-2312. - // - // rfc1842 , rfc1843 rfc1843 rfc1842 - HZGB2312 MIB = 2085 - - // IBM866 is the MIB identifier with IANA name IBM866. - // - // IBM NLDG Volume 2 (SE09-8002-03) August 1994 - IBM866 MIB = 2086 - - // PC775Baltic is the MIB identifier with IANA name IBM775. - // - // HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996 - PC775Baltic MIB = 2087 - - // KOI8U is the MIB identifier with IANA name KOI8-U. - // - // rfc2319 - // Reference: RFC2319 - KOI8U MIB = 2088 - - // IBM00858 is the MIB identifier with IANA name IBM00858. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM00858 - IBM00858 MIB = 2089 - - // IBM00924 is the MIB identifier with IANA name IBM00924. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM00924 - IBM00924 MIB = 2090 - - // IBM01140 is the MIB identifier with IANA name IBM01140. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01140 - IBM01140 MIB = 2091 - - // IBM01141 is the MIB identifier with IANA name IBM01141. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01141 - IBM01141 MIB = 2092 - - // IBM01142 is the MIB identifier with IANA name IBM01142. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01142 - IBM01142 MIB = 2093 - - // IBM01143 is the MIB identifier with IANA name IBM01143. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01143 - IBM01143 MIB = 2094 - - // IBM01144 is the MIB identifier with IANA name IBM01144. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01144 - IBM01144 MIB = 2095 - - // IBM01145 is the MIB identifier with IANA name IBM01145. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01145 - IBM01145 MIB = 2096 - - // IBM01146 is the MIB identifier with IANA name IBM01146. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01146 - IBM01146 MIB = 2097 - - // IBM01147 is the MIB identifier with IANA name IBM01147. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01147 - IBM01147 MIB = 2098 - - // IBM01148 is the MIB identifier with IANA name IBM01148. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01148 - IBM01148 MIB = 2099 - - // IBM01149 is the MIB identifier with IANA name IBM01149. - // - // IBM See https://www.iana.org/assignments/charset-reg/IBM01149 - IBM01149 MIB = 2100 - - // Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS. - // - // See https://www.iana.org/assignments/charset-reg/Big5-HKSCS - Big5HKSCS MIB = 2101 - - // IBM1047 is the MIB identifier with IANA name IBM1047. - // - // IBM1047 (EBCDIC Latin 1/Open Systems) https://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf - IBM1047 MIB = 2102 - - // PTCP154 is the MIB identifier with IANA name PTCP154. - // - // See https://www.iana.org/assignments/charset-reg/PTCP154 - PTCP154 MIB = 2103 - - // Amiga1251 is the MIB identifier with IANA name Amiga-1251. - // - // See https://www.amiga.ultranet.ru/Amiga-1251.html - Amiga1251 MIB = 2104 - - // KOI7switched is the MIB identifier with IANA name KOI7-switched. - // - // See https://www.iana.org/assignments/charset-reg/KOI7-switched - KOI7switched MIB = 2105 - - // BRF is the MIB identifier with IANA name BRF. - // - // See https://www.iana.org/assignments/charset-reg/BRF - BRF MIB = 2106 - - // TSCII is the MIB identifier with IANA name TSCII. - // - // See https://www.iana.org/assignments/charset-reg/TSCII - TSCII MIB = 2107 - - // CP51932 is the MIB identifier with IANA name CP51932. - // - // See https://www.iana.org/assignments/charset-reg/CP51932 - CP51932 MIB = 2108 - - // Windows874 is the MIB identifier with IANA name windows-874. - // - // See https://www.iana.org/assignments/charset-reg/windows-874 - Windows874 MIB = 2109 - - // Windows1250 is the MIB identifier with IANA name windows-1250. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1250 - Windows1250 MIB = 2250 - - // Windows1251 is the MIB identifier with IANA name windows-1251. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1251 - Windows1251 MIB = 2251 - - // Windows1252 is the MIB identifier with IANA name windows-1252. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1252 - Windows1252 MIB = 2252 - - // Windows1253 is the MIB identifier with IANA name windows-1253. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1253 - Windows1253 MIB = 2253 - - // Windows1254 is the MIB identifier with IANA name windows-1254. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1254 - Windows1254 MIB = 2254 - - // Windows1255 is the MIB identifier with IANA name windows-1255. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1255 - Windows1255 MIB = 2255 - - // Windows1256 is the MIB identifier with IANA name windows-1256. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1256 - Windows1256 MIB = 2256 - - // Windows1257 is the MIB identifier with IANA name windows-1257. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1257 - Windows1257 MIB = 2257 - - // Windows1258 is the MIB identifier with IANA name windows-1258. - // - // Microsoft https://www.iana.org/assignments/charset-reg/windows-1258 - Windows1258 MIB = 2258 - - // TIS620 is the MIB identifier with IANA name TIS-620. - // - // Thai Industrial Standards Institute (TISI) - TIS620 MIB = 2259 - - // CP50220 is the MIB identifier with IANA name CP50220. - // - // See https://www.iana.org/assignments/charset-reg/CP50220 - CP50220 MIB = 2260 -) diff --git a/vendor/golang.org/x/text/encoding/internal/internal.go b/vendor/golang.org/x/text/encoding/internal/internal.go deleted file mode 100644 index 413e6fc..0000000 --- a/vendor/golang.org/x/text/encoding/internal/internal.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package internal contains code that is shared among encoding implementations. -package internal - -import ( - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// Encoding is an implementation of the Encoding interface that adds the String -// and ID methods to an existing encoding. -type Encoding struct { - encoding.Encoding - Name string - MIB identifier.MIB -} - -// _ verifies that Encoding implements identifier.Interface. -var _ identifier.Interface = (*Encoding)(nil) - -func (e *Encoding) String() string { - return e.Name -} - -func (e *Encoding) ID() (mib identifier.MIB, other string) { - return e.MIB, "" -} - -// SimpleEncoding is an Encoding that combines two Transformers. -type SimpleEncoding struct { - Decoder transform.Transformer - Encoder transform.Transformer -} - -func (e *SimpleEncoding) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: e.Decoder} -} - -func (e *SimpleEncoding) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{Transformer: e.Encoder} -} - -// FuncEncoding is an Encoding that combines two functions returning a new -// Transformer. -type FuncEncoding struct { - Decoder func() transform.Transformer - Encoder func() transform.Transformer -} - -func (e FuncEncoding) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: e.Decoder()} -} - -func (e FuncEncoding) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{Transformer: e.Encoder()} -} - -// A RepertoireError indicates a rune is not in the repertoire of a destination -// encoding. It is associated with an encoding-specific suggested replacement -// byte. -type RepertoireError byte - -// Error implements the error interface. -func (r RepertoireError) Error() string { - return "encoding: rune not supported by encoding." -} - -// Replacement returns the replacement string associated with this error. -func (r RepertoireError) Replacement() byte { return byte(r) } - -var ErrASCIIReplacement = RepertoireError(encoding.ASCIISub) diff --git a/vendor/golang.org/x/text/encoding/japanese/all.go b/vendor/golang.org/x/text/encoding/japanese/all.go deleted file mode 100644 index 6cfa8de..0000000 --- a/vendor/golang.org/x/text/encoding/japanese/all.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package japanese - -import ( - "golang.org/x/text/encoding" -) - -// All is a list of all defined encodings in this package. -var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS} diff --git a/vendor/golang.org/x/text/encoding/japanese/eucjp.go b/vendor/golang.org/x/text/encoding/japanese/eucjp.go deleted file mode 100644 index 79313fa..0000000 --- a/vendor/golang.org/x/text/encoding/japanese/eucjp.go +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package japanese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// EUCJP is the EUC-JP encoding. -var EUCJP encoding.Encoding = &eucJP - -var eucJP = internal.Encoding{ - &internal.SimpleEncoding{eucJPDecoder{}, eucJPEncoder{}}, - "EUC-JP", - identifier.EUCPkdFmtJapanese, -} - -type eucJPDecoder struct{ transform.NopResetter } - -// See https://encoding.spec.whatwg.org/#euc-jp-decoder. -func (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - case c0 == 0x8e: - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - break - } - c1 := src[nSrc+1] - switch { - case c1 < 0xa1: - r, size = utf8.RuneError, 1 - case c1 > 0xdf: - r, size = utf8.RuneError, 2 - if c1 == 0xff { - size = 1 - } - default: - r, size = rune(c1)+(0xff61-0xa1), 2 - } - case c0 == 0x8f: - if nSrc+2 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - if p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe { - size = 2 - } - break - } - c1 := src[nSrc+1] - if c1 < 0xa1 || 0xfe < c1 { - r, size = utf8.RuneError, 1 - break - } - c2 := src[nSrc+2] - if c2 < 0xa1 || 0xfe < c2 { - r, size = utf8.RuneError, 2 - break - } - r, size = utf8.RuneError, 3 - if i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) { - r = rune(jis0212Decode[i]) - if r == 0 { - r = utf8.RuneError - } - } - - case 0xa1 <= c0 && c0 <= 0xfe: - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - break - } - c1 := src[nSrc+1] - if c1 < 0xa1 || 0xfe < c1 { - r, size = utf8.RuneError, 1 - break - } - r, size = utf8.RuneError, 2 - if i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) { - r = rune(jis0208Decode[i]) - if r == 0 { - r = utf8.RuneError - } - } - - default: - r, size = utf8.RuneError, 1 - } - - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type eucJPEncoder struct{ transform.NopResetter } - -func (eucJPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r != 0 { - goto write2or3 - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r != 0 { - goto write2or3 - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r != 0 { - goto write2or3 - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r != 0 { - goto write2or3 - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r != 0 { - goto write2or3 - } - case encode5Low <= r && r < encode5High: - if 0xff61 <= r && r < 0xffa0 { - goto write2 - } - if r = rune(encode5[r-encode5Low]); r != 0 { - goto write2or3 - } - } - err = internal.ErrASCIIReplacement - break - } - - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - write2or3: - if r>>tableShift == jis0208 { - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - } else { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = 0x8f - nDst++ - } - dst[nDst+0] = 0xa1 + uint8(r>>codeShift)&codeMask - dst[nDst+1] = 0xa1 + uint8(r)&codeMask - nDst += 2 - continue - - write2: - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = 0x8e - dst[nDst+1] = uint8(r - (0xff61 - 0xa1)) - nDst += 2 - continue - } - return nDst, nSrc, err -} - -func init() { - // Check that the hard-coded encode switch covers all tables. - if numEncodeTables != 6 { - panic("bad numEncodeTables") - } -} diff --git a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go deleted file mode 100644 index 613226d..0000000 --- a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package japanese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// ISO2022JP is the ISO-2022-JP encoding. -var ISO2022JP encoding.Encoding = &iso2022JP - -var iso2022JP = internal.Encoding{ - internal.FuncEncoding{iso2022JPNewDecoder, iso2022JPNewEncoder}, - "ISO-2022-JP", - identifier.ISO2022JP, -} - -func iso2022JPNewDecoder() transform.Transformer { - return new(iso2022JPDecoder) -} - -func iso2022JPNewEncoder() transform.Transformer { - return new(iso2022JPEncoder) -} - -const ( - asciiState = iota - katakanaState - jis0208State - jis0212State -) - -const asciiEsc = 0x1b - -type iso2022JPDecoder int - -func (d *iso2022JPDecoder) Reset() { - *d = asciiState -} - -func (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - c0 := src[nSrc] - if c0 >= utf8.RuneSelf { - r, size = '\ufffd', 1 - goto write - } - - if c0 == asciiEsc { - if nSrc+2 >= len(src) { - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - // TODO: is it correct to only skip 1?? - r, size = '\ufffd', 1 - goto write - } - size = 3 - c1 := src[nSrc+1] - c2 := src[nSrc+2] - switch { - case c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42} - *d = jis0208State - continue - case c1 == '$' && c2 == '(': // 0x24 0x28 - if nSrc+3 >= len(src) { - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - r, size = '\ufffd', 1 - goto write - } - size = 4 - if src[nSrc+3] == 'D' { - *d = jis0212State - continue - } - case c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A} - *d = asciiState - continue - case c1 == '(' && c2 == 'I': // 0x28 0x49 - *d = katakanaState - continue - } - r, size = '\ufffd', 1 - goto write - } - - switch *d { - case asciiState: - r, size = rune(c0), 1 - - case katakanaState: - if c0 < 0x21 || 0x60 <= c0 { - r, size = '\ufffd', 1 - goto write - } - r, size = rune(c0)+(0xff61-0x21), 1 - - default: - if c0 == 0x0a { - *d = asciiState - r, size = rune(c0), 1 - goto write - } - if nSrc+1 >= len(src) { - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - r, size = '\ufffd', 1 - goto write - } - size = 2 - c1 := src[nSrc+1] - i := int(c0-0x21)*94 + int(c1-0x21) - if *d == jis0208State && i < len(jis0208Decode) { - r = rune(jis0208Decode[i]) - } else if *d == jis0212State && i < len(jis0212Decode) { - r = rune(jis0212Decode[i]) - } else { - r = '\ufffd' - goto write - } - if r == 0 { - r = '\ufffd' - } - } - - write: - if nDst+utf8.RuneLen(r) > len(dst) { - return nDst, nSrc, transform.ErrShortDst - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type iso2022JPEncoder int - -func (e *iso2022JPEncoder) Reset() { - *e = asciiState -} - -func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - // - // http://encoding.spec.whatwg.org/#iso-2022-jp says that "the index jis0212 - // is not used by the iso-2022-jp encoder due to lack of widespread support". - // - // TODO: do we have to special-case U+00A5 and U+203E, as per - // http://encoding.spec.whatwg.org/#iso-2022-jp - // Doing so would mean that "\u00a5" would not be preserved - // after an encode-decode round trip. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { - goto writeJIS - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { - goto writeJIS - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { - goto writeJIS - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { - goto writeJIS - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { - goto writeJIS - } - case encode5Low <= r && r < encode5High: - if 0xff61 <= r && r < 0xffa0 { - goto writeKatakana - } - if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { - goto writeJIS - } - } - - // Switch back to ASCII state in case of error so that an ASCII - // replacement character can be written in the correct state. - if *e != asciiState { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - *e = asciiState - dst[nDst+0] = asciiEsc - dst[nDst+1] = '(' - dst[nDst+2] = 'B' - nDst += 3 - } - err = internal.ErrASCIIReplacement - break - } - - if *e != asciiState { - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - *e = asciiState - dst[nDst+0] = asciiEsc - dst[nDst+1] = '(' - dst[nDst+2] = 'B' - nDst += 3 - } else if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - writeJIS: - if *e != jis0208State { - if nDst+5 > len(dst) { - err = transform.ErrShortDst - break - } - *e = jis0208State - dst[nDst+0] = asciiEsc - dst[nDst+1] = '$' - dst[nDst+2] = 'B' - nDst += 3 - } else if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = 0x21 + uint8(r>>codeShift)&codeMask - dst[nDst+1] = 0x21 + uint8(r)&codeMask - nDst += 2 - continue - - writeKatakana: - if *e != katakanaState { - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - *e = katakanaState - dst[nDst+0] = asciiEsc - dst[nDst+1] = '(' - dst[nDst+2] = 'I' - nDst += 3 - } else if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r - (0xff61 - 0x21)) - nDst++ - continue - } - if atEOF && err == nil && *e != asciiState { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - } else { - *e = asciiState - dst[nDst+0] = asciiEsc - dst[nDst+1] = '(' - dst[nDst+2] = 'B' - nDst += 3 - } - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go deleted file mode 100644 index 16fd8a6..0000000 --- a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package japanese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// ShiftJIS is the Shift JIS encoding, also known as Code Page 932 and -// Windows-31J. -var ShiftJIS encoding.Encoding = &shiftJIS - -var shiftJIS = internal.Encoding{ - &internal.SimpleEncoding{shiftJISDecoder{}, shiftJISEncoder{}}, - "Shift JIS", - identifier.ShiftJIS, -} - -type shiftJISDecoder struct{ transform.NopResetter } - -func (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - case 0xa1 <= c0 && c0 < 0xe0: - r, size = rune(c0)+(0xff61-0xa1), 1 - - case (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xfd): - if c0 <= 0x9f { - c0 -= 0x70 - } else { - c0 -= 0xb0 - } - c0 = 2*c0 - 0x21 - - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = '\ufffd', 1 - goto write - } - c1 := src[nSrc+1] - switch { - case c1 < 0x40: - r, size = '\ufffd', 1 // c1 is ASCII so output on next round - goto write - case c1 < 0x7f: - c0-- - c1 -= 0x40 - case c1 == 0x7f: - r, size = '\ufffd', 1 // c1 is ASCII so output on next round - goto write - case c1 < 0x9f: - c0-- - c1 -= 0x41 - case c1 < 0xfd: - c1 -= 0x9f - default: - r, size = '\ufffd', 2 - goto write - } - r, size = '\ufffd', 2 - if i := int(c0)*94 + int(c1); i < len(jis0208Decode) { - r = rune(jis0208Decode[i]) - if r == 0 { - r = '\ufffd' - } - } - - case c0 == 0x80: - r, size = 0x80, 1 - - default: - r, size = '\ufffd', 1 - } - write: - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type shiftJISEncoder struct{ transform.NopResetter } - -func (shiftJISEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break loop - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { - goto write2 - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { - goto write2 - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { - goto write2 - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { - goto write2 - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { - goto write2 - } - case encode5Low <= r && r < encode5High: - if 0xff61 <= r && r < 0xffa0 { - r -= 0xff61 - 0xa1 - goto write1 - } - if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { - goto write2 - } - } - err = internal.ErrASCIIReplacement - break - } - - write1: - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - write2: - j1 := uint8(r>>codeShift) & codeMask - j2 := uint8(r) & codeMask - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break loop - } - if j1 <= 61 { - dst[nDst+0] = 129 + j1/2 - } else { - dst[nDst+0] = 193 + j1/2 - } - if j1&1 == 0 { - dst[nDst+1] = j2 + j2/63 + 64 - } else { - dst[nDst+1] = j2 + 159 - } - nDst += 2 - continue - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/encoding/japanese/tables.go b/vendor/golang.org/x/text/encoding/japanese/tables.go deleted file mode 100644 index 8717b79..0000000 --- a/vendor/golang.org/x/text/encoding/japanese/tables.go +++ /dev/null @@ -1,26971 +0,0 @@ -// generated by go run maketables.go; DO NOT EDIT - -// Package japanese provides Japanese encodings such as EUC-JP and Shift JIS. -package japanese // import "golang.org/x/text/encoding/japanese" - -// jis0208Decode is the decoding table from JIS 0208 code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-jis0208.txt -var jis0208Decode = [...]uint16{ - 0: 0x3000, - 1: 0x3001, - 2: 0x3002, - 3: 0xFF0C, - 4: 0xFF0E, - 5: 0x30FB, - 6: 0xFF1A, - 7: 0xFF1B, - 8: 0xFF1F, - 9: 0xFF01, - 10: 0x309B, - 11: 0x309C, - 12: 0x00B4, - 13: 0xFF40, - 14: 0x00A8, - 15: 0xFF3E, - 16: 0xFFE3, - 17: 0xFF3F, - 18: 0x30FD, - 19: 0x30FE, - 20: 0x309D, - 21: 0x309E, - 22: 0x3003, - 23: 0x4EDD, - 24: 0x3005, - 25: 0x3006, - 26: 0x3007, - 27: 0x30FC, - 28: 0x2015, - 29: 0x2010, - 30: 0xFF0F, - 31: 0xFF3C, - 32: 0xFF5E, - 33: 0x2225, - 34: 0xFF5C, - 35: 0x2026, - 36: 0x2025, - 37: 0x2018, - 38: 0x2019, - 39: 0x201C, - 40: 0x201D, - 41: 0xFF08, - 42: 0xFF09, - 43: 0x3014, - 44: 0x3015, - 45: 0xFF3B, - 46: 0xFF3D, - 47: 0xFF5B, - 48: 0xFF5D, - 49: 0x3008, - 50: 0x3009, - 51: 0x300A, - 52: 0x300B, - 53: 0x300C, - 54: 0x300D, - 55: 0x300E, - 56: 0x300F, - 57: 0x3010, - 58: 0x3011, - 59: 0xFF0B, - 60: 0xFF0D, - 61: 0x00B1, - 62: 0x00D7, - 63: 0x00F7, - 64: 0xFF1D, - 65: 0x2260, - 66: 0xFF1C, - 67: 0xFF1E, - 68: 0x2266, - 69: 0x2267, - 70: 0x221E, - 71: 0x2234, - 72: 0x2642, - 73: 0x2640, - 74: 0x00B0, - 75: 0x2032, - 76: 0x2033, - 77: 0x2103, - 78: 0xFFE5, - 79: 0xFF04, - 80: 0xFFE0, - 81: 0xFFE1, - 82: 0xFF05, - 83: 0xFF03, - 84: 0xFF06, - 85: 0xFF0A, - 86: 0xFF20, - 87: 0x00A7, - 88: 0x2606, - 89: 0x2605, - 90: 0x25CB, - 91: 0x25CF, - 92: 0x25CE, - 93: 0x25C7, - 94: 0x25C6, - 95: 0x25A1, - 96: 0x25A0, - 97: 0x25B3, - 98: 0x25B2, - 99: 0x25BD, - 100: 0x25BC, - 101: 0x203B, - 102: 0x3012, - 103: 0x2192, - 104: 0x2190, - 105: 0x2191, - 106: 0x2193, - 107: 0x3013, - 119: 0x2208, - 120: 0x220B, - 121: 0x2286, - 122: 0x2287, - 123: 0x2282, - 124: 0x2283, - 125: 0x222A, - 126: 0x2229, - 135: 0x2227, - 136: 0x2228, - 137: 0xFFE2, - 138: 0x21D2, - 139: 0x21D4, - 140: 0x2200, - 141: 0x2203, - 153: 0x2220, - 154: 0x22A5, - 155: 0x2312, - 156: 0x2202, - 157: 0x2207, - 158: 0x2261, - 159: 0x2252, - 160: 0x226A, - 161: 0x226B, - 162: 0x221A, - 163: 0x223D, - 164: 0x221D, - 165: 0x2235, - 166: 0x222B, - 167: 0x222C, - 175: 0x212B, - 176: 0x2030, - 177: 0x266F, - 178: 0x266D, - 179: 0x266A, - 180: 0x2020, - 181: 0x2021, - 182: 0x00B6, - 187: 0x25EF, - 203: 0xFF10, - 204: 0xFF11, - 205: 0xFF12, - 206: 0xFF13, - 207: 0xFF14, - 208: 0xFF15, - 209: 0xFF16, - 210: 0xFF17, - 211: 0xFF18, - 212: 0xFF19, - 220: 0xFF21, - 221: 0xFF22, - 222: 0xFF23, - 223: 0xFF24, - 224: 0xFF25, - 225: 0xFF26, - 226: 0xFF27, - 227: 0xFF28, - 228: 0xFF29, - 229: 0xFF2A, - 230: 0xFF2B, - 231: 0xFF2C, - 232: 0xFF2D, - 233: 0xFF2E, - 234: 0xFF2F, - 235: 0xFF30, - 236: 0xFF31, - 237: 0xFF32, - 238: 0xFF33, - 239: 0xFF34, - 240: 0xFF35, - 241: 0xFF36, - 242: 0xFF37, - 243: 0xFF38, - 244: 0xFF39, - 245: 0xFF3A, - 252: 0xFF41, - 253: 0xFF42, - 254: 0xFF43, - 255: 0xFF44, - 256: 0xFF45, - 257: 0xFF46, - 258: 0xFF47, - 259: 0xFF48, - 260: 0xFF49, - 261: 0xFF4A, - 262: 0xFF4B, - 263: 0xFF4C, - 264: 0xFF4D, - 265: 0xFF4E, - 266: 0xFF4F, - 267: 0xFF50, - 268: 0xFF51, - 269: 0xFF52, - 270: 0xFF53, - 271: 0xFF54, - 272: 0xFF55, - 273: 0xFF56, - 274: 0xFF57, - 275: 0xFF58, - 276: 0xFF59, - 277: 0xFF5A, - 282: 0x3041, - 283: 0x3042, - 284: 0x3043, - 285: 0x3044, - 286: 0x3045, - 287: 0x3046, - 288: 0x3047, - 289: 0x3048, - 290: 0x3049, - 291: 0x304A, - 292: 0x304B, - 293: 0x304C, - 294: 0x304D, - 295: 0x304E, - 296: 0x304F, - 297: 0x3050, - 298: 0x3051, - 299: 0x3052, - 300: 0x3053, - 301: 0x3054, - 302: 0x3055, - 303: 0x3056, - 304: 0x3057, - 305: 0x3058, - 306: 0x3059, - 307: 0x305A, - 308: 0x305B, - 309: 0x305C, - 310: 0x305D, - 311: 0x305E, - 312: 0x305F, - 313: 0x3060, - 314: 0x3061, - 315: 0x3062, - 316: 0x3063, - 317: 0x3064, - 318: 0x3065, - 319: 0x3066, - 320: 0x3067, - 321: 0x3068, - 322: 0x3069, - 323: 0x306A, - 324: 0x306B, - 325: 0x306C, - 326: 0x306D, - 327: 0x306E, - 328: 0x306F, - 329: 0x3070, - 330: 0x3071, - 331: 0x3072, - 332: 0x3073, - 333: 0x3074, - 334: 0x3075, - 335: 0x3076, - 336: 0x3077, - 337: 0x3078, - 338: 0x3079, - 339: 0x307A, - 340: 0x307B, - 341: 0x307C, - 342: 0x307D, - 343: 0x307E, - 344: 0x307F, - 345: 0x3080, - 346: 0x3081, - 347: 0x3082, - 348: 0x3083, - 349: 0x3084, - 350: 0x3085, - 351: 0x3086, - 352: 0x3087, - 353: 0x3088, - 354: 0x3089, - 355: 0x308A, - 356: 0x308B, - 357: 0x308C, - 358: 0x308D, - 359: 0x308E, - 360: 0x308F, - 361: 0x3090, - 362: 0x3091, - 363: 0x3092, - 364: 0x3093, - 376: 0x30A1, - 377: 0x30A2, - 378: 0x30A3, - 379: 0x30A4, - 380: 0x30A5, - 381: 0x30A6, - 382: 0x30A7, - 383: 0x30A8, - 384: 0x30A9, - 385: 0x30AA, - 386: 0x30AB, - 387: 0x30AC, - 388: 0x30AD, - 389: 0x30AE, - 390: 0x30AF, - 391: 0x30B0, - 392: 0x30B1, - 393: 0x30B2, - 394: 0x30B3, - 395: 0x30B4, - 396: 0x30B5, - 397: 0x30B6, - 398: 0x30B7, - 399: 0x30B8, - 400: 0x30B9, - 401: 0x30BA, - 402: 0x30BB, - 403: 0x30BC, - 404: 0x30BD, - 405: 0x30BE, - 406: 0x30BF, - 407: 0x30C0, - 408: 0x30C1, - 409: 0x30C2, - 410: 0x30C3, - 411: 0x30C4, - 412: 0x30C5, - 413: 0x30C6, - 414: 0x30C7, - 415: 0x30C8, - 416: 0x30C9, - 417: 0x30CA, - 418: 0x30CB, - 419: 0x30CC, - 420: 0x30CD, - 421: 0x30CE, - 422: 0x30CF, - 423: 0x30D0, - 424: 0x30D1, - 425: 0x30D2, - 426: 0x30D3, - 427: 0x30D4, - 428: 0x30D5, - 429: 0x30D6, - 430: 0x30D7, - 431: 0x30D8, - 432: 0x30D9, - 433: 0x30DA, - 434: 0x30DB, - 435: 0x30DC, - 436: 0x30DD, - 437: 0x30DE, - 438: 0x30DF, - 439: 0x30E0, - 440: 0x30E1, - 441: 0x30E2, - 442: 0x30E3, - 443: 0x30E4, - 444: 0x30E5, - 445: 0x30E6, - 446: 0x30E7, - 447: 0x30E8, - 448: 0x30E9, - 449: 0x30EA, - 450: 0x30EB, - 451: 0x30EC, - 452: 0x30ED, - 453: 0x30EE, - 454: 0x30EF, - 455: 0x30F0, - 456: 0x30F1, - 457: 0x30F2, - 458: 0x30F3, - 459: 0x30F4, - 460: 0x30F5, - 461: 0x30F6, - 470: 0x0391, - 471: 0x0392, - 472: 0x0393, - 473: 0x0394, - 474: 0x0395, - 475: 0x0396, - 476: 0x0397, - 477: 0x0398, - 478: 0x0399, - 479: 0x039A, - 480: 0x039B, - 481: 0x039C, - 482: 0x039D, - 483: 0x039E, - 484: 0x039F, - 485: 0x03A0, - 486: 0x03A1, - 487: 0x03A3, - 488: 0x03A4, - 489: 0x03A5, - 490: 0x03A6, - 491: 0x03A7, - 492: 0x03A8, - 493: 0x03A9, - 502: 0x03B1, - 503: 0x03B2, - 504: 0x03B3, - 505: 0x03B4, - 506: 0x03B5, - 507: 0x03B6, - 508: 0x03B7, - 509: 0x03B8, - 510: 0x03B9, - 511: 0x03BA, - 512: 0x03BB, - 513: 0x03BC, - 514: 0x03BD, - 515: 0x03BE, - 516: 0x03BF, - 517: 0x03C0, - 518: 0x03C1, - 519: 0x03C3, - 520: 0x03C4, - 521: 0x03C5, - 522: 0x03C6, - 523: 0x03C7, - 524: 0x03C8, - 525: 0x03C9, - 564: 0x0410, - 565: 0x0411, - 566: 0x0412, - 567: 0x0413, - 568: 0x0414, - 569: 0x0415, - 570: 0x0401, - 571: 0x0416, - 572: 0x0417, - 573: 0x0418, - 574: 0x0419, - 575: 0x041A, - 576: 0x041B, - 577: 0x041C, - 578: 0x041D, - 579: 0x041E, - 580: 0x041F, - 581: 0x0420, - 582: 0x0421, - 583: 0x0422, - 584: 0x0423, - 585: 0x0424, - 586: 0x0425, - 587: 0x0426, - 588: 0x0427, - 589: 0x0428, - 590: 0x0429, - 591: 0x042A, - 592: 0x042B, - 593: 0x042C, - 594: 0x042D, - 595: 0x042E, - 596: 0x042F, - 612: 0x0430, - 613: 0x0431, - 614: 0x0432, - 615: 0x0433, - 616: 0x0434, - 617: 0x0435, - 618: 0x0451, - 619: 0x0436, - 620: 0x0437, - 621: 0x0438, - 622: 0x0439, - 623: 0x043A, - 624: 0x043B, - 625: 0x043C, - 626: 0x043D, - 627: 0x043E, - 628: 0x043F, - 629: 0x0440, - 630: 0x0441, - 631: 0x0442, - 632: 0x0443, - 633: 0x0444, - 634: 0x0445, - 635: 0x0446, - 636: 0x0447, - 637: 0x0448, - 638: 0x0449, - 639: 0x044A, - 640: 0x044B, - 641: 0x044C, - 642: 0x044D, - 643: 0x044E, - 644: 0x044F, - 658: 0x2500, - 659: 0x2502, - 660: 0x250C, - 661: 0x2510, - 662: 0x2518, - 663: 0x2514, - 664: 0x251C, - 665: 0x252C, - 666: 0x2524, - 667: 0x2534, - 668: 0x253C, - 669: 0x2501, - 670: 0x2503, - 671: 0x250F, - 672: 0x2513, - 673: 0x251B, - 674: 0x2517, - 675: 0x2523, - 676: 0x2533, - 677: 0x252B, - 678: 0x253B, - 679: 0x254B, - 680: 0x2520, - 681: 0x252F, - 682: 0x2528, - 683: 0x2537, - 684: 0x253F, - 685: 0x251D, - 686: 0x2530, - 687: 0x2525, - 688: 0x2538, - 689: 0x2542, - 1128: 0x2460, - 1129: 0x2461, - 1130: 0x2462, - 1131: 0x2463, - 1132: 0x2464, - 1133: 0x2465, - 1134: 0x2466, - 1135: 0x2467, - 1136: 0x2468, - 1137: 0x2469, - 1138: 0x246A, - 1139: 0x246B, - 1140: 0x246C, - 1141: 0x246D, - 1142: 0x246E, - 1143: 0x246F, - 1144: 0x2470, - 1145: 0x2471, - 1146: 0x2472, - 1147: 0x2473, - 1148: 0x2160, - 1149: 0x2161, - 1150: 0x2162, - 1151: 0x2163, - 1152: 0x2164, - 1153: 0x2165, - 1154: 0x2166, - 1155: 0x2167, - 1156: 0x2168, - 1157: 0x2169, - 1159: 0x3349, - 1160: 0x3314, - 1161: 0x3322, - 1162: 0x334D, - 1163: 0x3318, - 1164: 0x3327, - 1165: 0x3303, - 1166: 0x3336, - 1167: 0x3351, - 1168: 0x3357, - 1169: 0x330D, - 1170: 0x3326, - 1171: 0x3323, - 1172: 0x332B, - 1173: 0x334A, - 1174: 0x333B, - 1175: 0x339C, - 1176: 0x339D, - 1177: 0x339E, - 1178: 0x338E, - 1179: 0x338F, - 1180: 0x33C4, - 1181: 0x33A1, - 1190: 0x337B, - 1191: 0x301D, - 1192: 0x301F, - 1193: 0x2116, - 1194: 0x33CD, - 1195: 0x2121, - 1196: 0x32A4, - 1197: 0x32A5, - 1198: 0x32A6, - 1199: 0x32A7, - 1200: 0x32A8, - 1201: 0x3231, - 1202: 0x3232, - 1203: 0x3239, - 1204: 0x337E, - 1205: 0x337D, - 1206: 0x337C, - 1207: 0x2252, - 1208: 0x2261, - 1209: 0x222B, - 1210: 0x222E, - 1211: 0x2211, - 1212: 0x221A, - 1213: 0x22A5, - 1214: 0x2220, - 1215: 0x221F, - 1216: 0x22BF, - 1217: 0x2235, - 1218: 0x2229, - 1219: 0x222A, - 1410: 0x4E9C, - 1411: 0x5516, - 1412: 0x5A03, - 1413: 0x963F, - 1414: 0x54C0, - 1415: 0x611B, - 1416: 0x6328, - 1417: 0x59F6, - 1418: 0x9022, - 1419: 0x8475, - 1420: 0x831C, - 1421: 0x7A50, - 1422: 0x60AA, - 1423: 0x63E1, - 1424: 0x6E25, - 1425: 0x65ED, - 1426: 0x8466, - 1427: 0x82A6, - 1428: 0x9BF5, - 1429: 0x6893, - 1430: 0x5727, - 1431: 0x65A1, - 1432: 0x6271, - 1433: 0x5B9B, - 1434: 0x59D0, - 1435: 0x867B, - 1436: 0x98F4, - 1437: 0x7D62, - 1438: 0x7DBE, - 1439: 0x9B8E, - 1440: 0x6216, - 1441: 0x7C9F, - 1442: 0x88B7, - 1443: 0x5B89, - 1444: 0x5EB5, - 1445: 0x6309, - 1446: 0x6697, - 1447: 0x6848, - 1448: 0x95C7, - 1449: 0x978D, - 1450: 0x674F, - 1451: 0x4EE5, - 1452: 0x4F0A, - 1453: 0x4F4D, - 1454: 0x4F9D, - 1455: 0x5049, - 1456: 0x56F2, - 1457: 0x5937, - 1458: 0x59D4, - 1459: 0x5A01, - 1460: 0x5C09, - 1461: 0x60DF, - 1462: 0x610F, - 1463: 0x6170, - 1464: 0x6613, - 1465: 0x6905, - 1466: 0x70BA, - 1467: 0x754F, - 1468: 0x7570, - 1469: 0x79FB, - 1470: 0x7DAD, - 1471: 0x7DEF, - 1472: 0x80C3, - 1473: 0x840E, - 1474: 0x8863, - 1475: 0x8B02, - 1476: 0x9055, - 1477: 0x907A, - 1478: 0x533B, - 1479: 0x4E95, - 1480: 0x4EA5, - 1481: 0x57DF, - 1482: 0x80B2, - 1483: 0x90C1, - 1484: 0x78EF, - 1485: 0x4E00, - 1486: 0x58F1, - 1487: 0x6EA2, - 1488: 0x9038, - 1489: 0x7A32, - 1490: 0x8328, - 1491: 0x828B, - 1492: 0x9C2F, - 1493: 0x5141, - 1494: 0x5370, - 1495: 0x54BD, - 1496: 0x54E1, - 1497: 0x56E0, - 1498: 0x59FB, - 1499: 0x5F15, - 1500: 0x98F2, - 1501: 0x6DEB, - 1502: 0x80E4, - 1503: 0x852D, - 1504: 0x9662, - 1505: 0x9670, - 1506: 0x96A0, - 1507: 0x97FB, - 1508: 0x540B, - 1509: 0x53F3, - 1510: 0x5B87, - 1511: 0x70CF, - 1512: 0x7FBD, - 1513: 0x8FC2, - 1514: 0x96E8, - 1515: 0x536F, - 1516: 0x9D5C, - 1517: 0x7ABA, - 1518: 0x4E11, - 1519: 0x7893, - 1520: 0x81FC, - 1521: 0x6E26, - 1522: 0x5618, - 1523: 0x5504, - 1524: 0x6B1D, - 1525: 0x851A, - 1526: 0x9C3B, - 1527: 0x59E5, - 1528: 0x53A9, - 1529: 0x6D66, - 1530: 0x74DC, - 1531: 0x958F, - 1532: 0x5642, - 1533: 0x4E91, - 1534: 0x904B, - 1535: 0x96F2, - 1536: 0x834F, - 1537: 0x990C, - 1538: 0x53E1, - 1539: 0x55B6, - 1540: 0x5B30, - 1541: 0x5F71, - 1542: 0x6620, - 1543: 0x66F3, - 1544: 0x6804, - 1545: 0x6C38, - 1546: 0x6CF3, - 1547: 0x6D29, - 1548: 0x745B, - 1549: 0x76C8, - 1550: 0x7A4E, - 1551: 0x9834, - 1552: 0x82F1, - 1553: 0x885B, - 1554: 0x8A60, - 1555: 0x92ED, - 1556: 0x6DB2, - 1557: 0x75AB, - 1558: 0x76CA, - 1559: 0x99C5, - 1560: 0x60A6, - 1561: 0x8B01, - 1562: 0x8D8A, - 1563: 0x95B2, - 1564: 0x698E, - 1565: 0x53AD, - 1566: 0x5186, - 1567: 0x5712, - 1568: 0x5830, - 1569: 0x5944, - 1570: 0x5BB4, - 1571: 0x5EF6, - 1572: 0x6028, - 1573: 0x63A9, - 1574: 0x63F4, - 1575: 0x6CBF, - 1576: 0x6F14, - 1577: 0x708E, - 1578: 0x7114, - 1579: 0x7159, - 1580: 0x71D5, - 1581: 0x733F, - 1582: 0x7E01, - 1583: 0x8276, - 1584: 0x82D1, - 1585: 0x8597, - 1586: 0x9060, - 1587: 0x925B, - 1588: 0x9D1B, - 1589: 0x5869, - 1590: 0x65BC, - 1591: 0x6C5A, - 1592: 0x7525, - 1593: 0x51F9, - 1594: 0x592E, - 1595: 0x5965, - 1596: 0x5F80, - 1597: 0x5FDC, - 1598: 0x62BC, - 1599: 0x65FA, - 1600: 0x6A2A, - 1601: 0x6B27, - 1602: 0x6BB4, - 1603: 0x738B, - 1604: 0x7FC1, - 1605: 0x8956, - 1606: 0x9D2C, - 1607: 0x9D0E, - 1608: 0x9EC4, - 1609: 0x5CA1, - 1610: 0x6C96, - 1611: 0x837B, - 1612: 0x5104, - 1613: 0x5C4B, - 1614: 0x61B6, - 1615: 0x81C6, - 1616: 0x6876, - 1617: 0x7261, - 1618: 0x4E59, - 1619: 0x4FFA, - 1620: 0x5378, - 1621: 0x6069, - 1622: 0x6E29, - 1623: 0x7A4F, - 1624: 0x97F3, - 1625: 0x4E0B, - 1626: 0x5316, - 1627: 0x4EEE, - 1628: 0x4F55, - 1629: 0x4F3D, - 1630: 0x4FA1, - 1631: 0x4F73, - 1632: 0x52A0, - 1633: 0x53EF, - 1634: 0x5609, - 1635: 0x590F, - 1636: 0x5AC1, - 1637: 0x5BB6, - 1638: 0x5BE1, - 1639: 0x79D1, - 1640: 0x6687, - 1641: 0x679C, - 1642: 0x67B6, - 1643: 0x6B4C, - 1644: 0x6CB3, - 1645: 0x706B, - 1646: 0x73C2, - 1647: 0x798D, - 1648: 0x79BE, - 1649: 0x7A3C, - 1650: 0x7B87, - 1651: 0x82B1, - 1652: 0x82DB, - 1653: 0x8304, - 1654: 0x8377, - 1655: 0x83EF, - 1656: 0x83D3, - 1657: 0x8766, - 1658: 0x8AB2, - 1659: 0x5629, - 1660: 0x8CA8, - 1661: 0x8FE6, - 1662: 0x904E, - 1663: 0x971E, - 1664: 0x868A, - 1665: 0x4FC4, - 1666: 0x5CE8, - 1667: 0x6211, - 1668: 0x7259, - 1669: 0x753B, - 1670: 0x81E5, - 1671: 0x82BD, - 1672: 0x86FE, - 1673: 0x8CC0, - 1674: 0x96C5, - 1675: 0x9913, - 1676: 0x99D5, - 1677: 0x4ECB, - 1678: 0x4F1A, - 1679: 0x89E3, - 1680: 0x56DE, - 1681: 0x584A, - 1682: 0x58CA, - 1683: 0x5EFB, - 1684: 0x5FEB, - 1685: 0x602A, - 1686: 0x6094, - 1687: 0x6062, - 1688: 0x61D0, - 1689: 0x6212, - 1690: 0x62D0, - 1691: 0x6539, - 1692: 0x9B41, - 1693: 0x6666, - 1694: 0x68B0, - 1695: 0x6D77, - 1696: 0x7070, - 1697: 0x754C, - 1698: 0x7686, - 1699: 0x7D75, - 1700: 0x82A5, - 1701: 0x87F9, - 1702: 0x958B, - 1703: 0x968E, - 1704: 0x8C9D, - 1705: 0x51F1, - 1706: 0x52BE, - 1707: 0x5916, - 1708: 0x54B3, - 1709: 0x5BB3, - 1710: 0x5D16, - 1711: 0x6168, - 1712: 0x6982, - 1713: 0x6DAF, - 1714: 0x788D, - 1715: 0x84CB, - 1716: 0x8857, - 1717: 0x8A72, - 1718: 0x93A7, - 1719: 0x9AB8, - 1720: 0x6D6C, - 1721: 0x99A8, - 1722: 0x86D9, - 1723: 0x57A3, - 1724: 0x67FF, - 1725: 0x86CE, - 1726: 0x920E, - 1727: 0x5283, - 1728: 0x5687, - 1729: 0x5404, - 1730: 0x5ED3, - 1731: 0x62E1, - 1732: 0x64B9, - 1733: 0x683C, - 1734: 0x6838, - 1735: 0x6BBB, - 1736: 0x7372, - 1737: 0x78BA, - 1738: 0x7A6B, - 1739: 0x899A, - 1740: 0x89D2, - 1741: 0x8D6B, - 1742: 0x8F03, - 1743: 0x90ED, - 1744: 0x95A3, - 1745: 0x9694, - 1746: 0x9769, - 1747: 0x5B66, - 1748: 0x5CB3, - 1749: 0x697D, - 1750: 0x984D, - 1751: 0x984E, - 1752: 0x639B, - 1753: 0x7B20, - 1754: 0x6A2B, - 1755: 0x6A7F, - 1756: 0x68B6, - 1757: 0x9C0D, - 1758: 0x6F5F, - 1759: 0x5272, - 1760: 0x559D, - 1761: 0x6070, - 1762: 0x62EC, - 1763: 0x6D3B, - 1764: 0x6E07, - 1765: 0x6ED1, - 1766: 0x845B, - 1767: 0x8910, - 1768: 0x8F44, - 1769: 0x4E14, - 1770: 0x9C39, - 1771: 0x53F6, - 1772: 0x691B, - 1773: 0x6A3A, - 1774: 0x9784, - 1775: 0x682A, - 1776: 0x515C, - 1777: 0x7AC3, - 1778: 0x84B2, - 1779: 0x91DC, - 1780: 0x938C, - 1781: 0x565B, - 1782: 0x9D28, - 1783: 0x6822, - 1784: 0x8305, - 1785: 0x8431, - 1786: 0x7CA5, - 1787: 0x5208, - 1788: 0x82C5, - 1789: 0x74E6, - 1790: 0x4E7E, - 1791: 0x4F83, - 1792: 0x51A0, - 1793: 0x5BD2, - 1794: 0x520A, - 1795: 0x52D8, - 1796: 0x52E7, - 1797: 0x5DFB, - 1798: 0x559A, - 1799: 0x582A, - 1800: 0x59E6, - 1801: 0x5B8C, - 1802: 0x5B98, - 1803: 0x5BDB, - 1804: 0x5E72, - 1805: 0x5E79, - 1806: 0x60A3, - 1807: 0x611F, - 1808: 0x6163, - 1809: 0x61BE, - 1810: 0x63DB, - 1811: 0x6562, - 1812: 0x67D1, - 1813: 0x6853, - 1814: 0x68FA, - 1815: 0x6B3E, - 1816: 0x6B53, - 1817: 0x6C57, - 1818: 0x6F22, - 1819: 0x6F97, - 1820: 0x6F45, - 1821: 0x74B0, - 1822: 0x7518, - 1823: 0x76E3, - 1824: 0x770B, - 1825: 0x7AFF, - 1826: 0x7BA1, - 1827: 0x7C21, - 1828: 0x7DE9, - 1829: 0x7F36, - 1830: 0x7FF0, - 1831: 0x809D, - 1832: 0x8266, - 1833: 0x839E, - 1834: 0x89B3, - 1835: 0x8ACC, - 1836: 0x8CAB, - 1837: 0x9084, - 1838: 0x9451, - 1839: 0x9593, - 1840: 0x9591, - 1841: 0x95A2, - 1842: 0x9665, - 1843: 0x97D3, - 1844: 0x9928, - 1845: 0x8218, - 1846: 0x4E38, - 1847: 0x542B, - 1848: 0x5CB8, - 1849: 0x5DCC, - 1850: 0x73A9, - 1851: 0x764C, - 1852: 0x773C, - 1853: 0x5CA9, - 1854: 0x7FEB, - 1855: 0x8D0B, - 1856: 0x96C1, - 1857: 0x9811, - 1858: 0x9854, - 1859: 0x9858, - 1860: 0x4F01, - 1861: 0x4F0E, - 1862: 0x5371, - 1863: 0x559C, - 1864: 0x5668, - 1865: 0x57FA, - 1866: 0x5947, - 1867: 0x5B09, - 1868: 0x5BC4, - 1869: 0x5C90, - 1870: 0x5E0C, - 1871: 0x5E7E, - 1872: 0x5FCC, - 1873: 0x63EE, - 1874: 0x673A, - 1875: 0x65D7, - 1876: 0x65E2, - 1877: 0x671F, - 1878: 0x68CB, - 1879: 0x68C4, - 1880: 0x6A5F, - 1881: 0x5E30, - 1882: 0x6BC5, - 1883: 0x6C17, - 1884: 0x6C7D, - 1885: 0x757F, - 1886: 0x7948, - 1887: 0x5B63, - 1888: 0x7A00, - 1889: 0x7D00, - 1890: 0x5FBD, - 1891: 0x898F, - 1892: 0x8A18, - 1893: 0x8CB4, - 1894: 0x8D77, - 1895: 0x8ECC, - 1896: 0x8F1D, - 1897: 0x98E2, - 1898: 0x9A0E, - 1899: 0x9B3C, - 1900: 0x4E80, - 1901: 0x507D, - 1902: 0x5100, - 1903: 0x5993, - 1904: 0x5B9C, - 1905: 0x622F, - 1906: 0x6280, - 1907: 0x64EC, - 1908: 0x6B3A, - 1909: 0x72A0, - 1910: 0x7591, - 1911: 0x7947, - 1912: 0x7FA9, - 1913: 0x87FB, - 1914: 0x8ABC, - 1915: 0x8B70, - 1916: 0x63AC, - 1917: 0x83CA, - 1918: 0x97A0, - 1919: 0x5409, - 1920: 0x5403, - 1921: 0x55AB, - 1922: 0x6854, - 1923: 0x6A58, - 1924: 0x8A70, - 1925: 0x7827, - 1926: 0x6775, - 1927: 0x9ECD, - 1928: 0x5374, - 1929: 0x5BA2, - 1930: 0x811A, - 1931: 0x8650, - 1932: 0x9006, - 1933: 0x4E18, - 1934: 0x4E45, - 1935: 0x4EC7, - 1936: 0x4F11, - 1937: 0x53CA, - 1938: 0x5438, - 1939: 0x5BAE, - 1940: 0x5F13, - 1941: 0x6025, - 1942: 0x6551, - 1943: 0x673D, - 1944: 0x6C42, - 1945: 0x6C72, - 1946: 0x6CE3, - 1947: 0x7078, - 1948: 0x7403, - 1949: 0x7A76, - 1950: 0x7AAE, - 1951: 0x7B08, - 1952: 0x7D1A, - 1953: 0x7CFE, - 1954: 0x7D66, - 1955: 0x65E7, - 1956: 0x725B, - 1957: 0x53BB, - 1958: 0x5C45, - 1959: 0x5DE8, - 1960: 0x62D2, - 1961: 0x62E0, - 1962: 0x6319, - 1963: 0x6E20, - 1964: 0x865A, - 1965: 0x8A31, - 1966: 0x8DDD, - 1967: 0x92F8, - 1968: 0x6F01, - 1969: 0x79A6, - 1970: 0x9B5A, - 1971: 0x4EA8, - 1972: 0x4EAB, - 1973: 0x4EAC, - 1974: 0x4F9B, - 1975: 0x4FA0, - 1976: 0x50D1, - 1977: 0x5147, - 1978: 0x7AF6, - 1979: 0x5171, - 1980: 0x51F6, - 1981: 0x5354, - 1982: 0x5321, - 1983: 0x537F, - 1984: 0x53EB, - 1985: 0x55AC, - 1986: 0x5883, - 1987: 0x5CE1, - 1988: 0x5F37, - 1989: 0x5F4A, - 1990: 0x602F, - 1991: 0x6050, - 1992: 0x606D, - 1993: 0x631F, - 1994: 0x6559, - 1995: 0x6A4B, - 1996: 0x6CC1, - 1997: 0x72C2, - 1998: 0x72ED, - 1999: 0x77EF, - 2000: 0x80F8, - 2001: 0x8105, - 2002: 0x8208, - 2003: 0x854E, - 2004: 0x90F7, - 2005: 0x93E1, - 2006: 0x97FF, - 2007: 0x9957, - 2008: 0x9A5A, - 2009: 0x4EF0, - 2010: 0x51DD, - 2011: 0x5C2D, - 2012: 0x6681, - 2013: 0x696D, - 2014: 0x5C40, - 2015: 0x66F2, - 2016: 0x6975, - 2017: 0x7389, - 2018: 0x6850, - 2019: 0x7C81, - 2020: 0x50C5, - 2021: 0x52E4, - 2022: 0x5747, - 2023: 0x5DFE, - 2024: 0x9326, - 2025: 0x65A4, - 2026: 0x6B23, - 2027: 0x6B3D, - 2028: 0x7434, - 2029: 0x7981, - 2030: 0x79BD, - 2031: 0x7B4B, - 2032: 0x7DCA, - 2033: 0x82B9, - 2034: 0x83CC, - 2035: 0x887F, - 2036: 0x895F, - 2037: 0x8B39, - 2038: 0x8FD1, - 2039: 0x91D1, - 2040: 0x541F, - 2041: 0x9280, - 2042: 0x4E5D, - 2043: 0x5036, - 2044: 0x53E5, - 2045: 0x533A, - 2046: 0x72D7, - 2047: 0x7396, - 2048: 0x77E9, - 2049: 0x82E6, - 2050: 0x8EAF, - 2051: 0x99C6, - 2052: 0x99C8, - 2053: 0x99D2, - 2054: 0x5177, - 2055: 0x611A, - 2056: 0x865E, - 2057: 0x55B0, - 2058: 0x7A7A, - 2059: 0x5076, - 2060: 0x5BD3, - 2061: 0x9047, - 2062: 0x9685, - 2063: 0x4E32, - 2064: 0x6ADB, - 2065: 0x91E7, - 2066: 0x5C51, - 2067: 0x5C48, - 2068: 0x6398, - 2069: 0x7A9F, - 2070: 0x6C93, - 2071: 0x9774, - 2072: 0x8F61, - 2073: 0x7AAA, - 2074: 0x718A, - 2075: 0x9688, - 2076: 0x7C82, - 2077: 0x6817, - 2078: 0x7E70, - 2079: 0x6851, - 2080: 0x936C, - 2081: 0x52F2, - 2082: 0x541B, - 2083: 0x85AB, - 2084: 0x8A13, - 2085: 0x7FA4, - 2086: 0x8ECD, - 2087: 0x90E1, - 2088: 0x5366, - 2089: 0x8888, - 2090: 0x7941, - 2091: 0x4FC2, - 2092: 0x50BE, - 2093: 0x5211, - 2094: 0x5144, - 2095: 0x5553, - 2096: 0x572D, - 2097: 0x73EA, - 2098: 0x578B, - 2099: 0x5951, - 2100: 0x5F62, - 2101: 0x5F84, - 2102: 0x6075, - 2103: 0x6176, - 2104: 0x6167, - 2105: 0x61A9, - 2106: 0x63B2, - 2107: 0x643A, - 2108: 0x656C, - 2109: 0x666F, - 2110: 0x6842, - 2111: 0x6E13, - 2112: 0x7566, - 2113: 0x7A3D, - 2114: 0x7CFB, - 2115: 0x7D4C, - 2116: 0x7D99, - 2117: 0x7E4B, - 2118: 0x7F6B, - 2119: 0x830E, - 2120: 0x834A, - 2121: 0x86CD, - 2122: 0x8A08, - 2123: 0x8A63, - 2124: 0x8B66, - 2125: 0x8EFD, - 2126: 0x981A, - 2127: 0x9D8F, - 2128: 0x82B8, - 2129: 0x8FCE, - 2130: 0x9BE8, - 2131: 0x5287, - 2132: 0x621F, - 2133: 0x6483, - 2134: 0x6FC0, - 2135: 0x9699, - 2136: 0x6841, - 2137: 0x5091, - 2138: 0x6B20, - 2139: 0x6C7A, - 2140: 0x6F54, - 2141: 0x7A74, - 2142: 0x7D50, - 2143: 0x8840, - 2144: 0x8A23, - 2145: 0x6708, - 2146: 0x4EF6, - 2147: 0x5039, - 2148: 0x5026, - 2149: 0x5065, - 2150: 0x517C, - 2151: 0x5238, - 2152: 0x5263, - 2153: 0x55A7, - 2154: 0x570F, - 2155: 0x5805, - 2156: 0x5ACC, - 2157: 0x5EFA, - 2158: 0x61B2, - 2159: 0x61F8, - 2160: 0x62F3, - 2161: 0x6372, - 2162: 0x691C, - 2163: 0x6A29, - 2164: 0x727D, - 2165: 0x72AC, - 2166: 0x732E, - 2167: 0x7814, - 2168: 0x786F, - 2169: 0x7D79, - 2170: 0x770C, - 2171: 0x80A9, - 2172: 0x898B, - 2173: 0x8B19, - 2174: 0x8CE2, - 2175: 0x8ED2, - 2176: 0x9063, - 2177: 0x9375, - 2178: 0x967A, - 2179: 0x9855, - 2180: 0x9A13, - 2181: 0x9E78, - 2182: 0x5143, - 2183: 0x539F, - 2184: 0x53B3, - 2185: 0x5E7B, - 2186: 0x5F26, - 2187: 0x6E1B, - 2188: 0x6E90, - 2189: 0x7384, - 2190: 0x73FE, - 2191: 0x7D43, - 2192: 0x8237, - 2193: 0x8A00, - 2194: 0x8AFA, - 2195: 0x9650, - 2196: 0x4E4E, - 2197: 0x500B, - 2198: 0x53E4, - 2199: 0x547C, - 2200: 0x56FA, - 2201: 0x59D1, - 2202: 0x5B64, - 2203: 0x5DF1, - 2204: 0x5EAB, - 2205: 0x5F27, - 2206: 0x6238, - 2207: 0x6545, - 2208: 0x67AF, - 2209: 0x6E56, - 2210: 0x72D0, - 2211: 0x7CCA, - 2212: 0x88B4, - 2213: 0x80A1, - 2214: 0x80E1, - 2215: 0x83F0, - 2216: 0x864E, - 2217: 0x8A87, - 2218: 0x8DE8, - 2219: 0x9237, - 2220: 0x96C7, - 2221: 0x9867, - 2222: 0x9F13, - 2223: 0x4E94, - 2224: 0x4E92, - 2225: 0x4F0D, - 2226: 0x5348, - 2227: 0x5449, - 2228: 0x543E, - 2229: 0x5A2F, - 2230: 0x5F8C, - 2231: 0x5FA1, - 2232: 0x609F, - 2233: 0x68A7, - 2234: 0x6A8E, - 2235: 0x745A, - 2236: 0x7881, - 2237: 0x8A9E, - 2238: 0x8AA4, - 2239: 0x8B77, - 2240: 0x9190, - 2241: 0x4E5E, - 2242: 0x9BC9, - 2243: 0x4EA4, - 2244: 0x4F7C, - 2245: 0x4FAF, - 2246: 0x5019, - 2247: 0x5016, - 2248: 0x5149, - 2249: 0x516C, - 2250: 0x529F, - 2251: 0x52B9, - 2252: 0x52FE, - 2253: 0x539A, - 2254: 0x53E3, - 2255: 0x5411, - 2256: 0x540E, - 2257: 0x5589, - 2258: 0x5751, - 2259: 0x57A2, - 2260: 0x597D, - 2261: 0x5B54, - 2262: 0x5B5D, - 2263: 0x5B8F, - 2264: 0x5DE5, - 2265: 0x5DE7, - 2266: 0x5DF7, - 2267: 0x5E78, - 2268: 0x5E83, - 2269: 0x5E9A, - 2270: 0x5EB7, - 2271: 0x5F18, - 2272: 0x6052, - 2273: 0x614C, - 2274: 0x6297, - 2275: 0x62D8, - 2276: 0x63A7, - 2277: 0x653B, - 2278: 0x6602, - 2279: 0x6643, - 2280: 0x66F4, - 2281: 0x676D, - 2282: 0x6821, - 2283: 0x6897, - 2284: 0x69CB, - 2285: 0x6C5F, - 2286: 0x6D2A, - 2287: 0x6D69, - 2288: 0x6E2F, - 2289: 0x6E9D, - 2290: 0x7532, - 2291: 0x7687, - 2292: 0x786C, - 2293: 0x7A3F, - 2294: 0x7CE0, - 2295: 0x7D05, - 2296: 0x7D18, - 2297: 0x7D5E, - 2298: 0x7DB1, - 2299: 0x8015, - 2300: 0x8003, - 2301: 0x80AF, - 2302: 0x80B1, - 2303: 0x8154, - 2304: 0x818F, - 2305: 0x822A, - 2306: 0x8352, - 2307: 0x884C, - 2308: 0x8861, - 2309: 0x8B1B, - 2310: 0x8CA2, - 2311: 0x8CFC, - 2312: 0x90CA, - 2313: 0x9175, - 2314: 0x9271, - 2315: 0x783F, - 2316: 0x92FC, - 2317: 0x95A4, - 2318: 0x964D, - 2319: 0x9805, - 2320: 0x9999, - 2321: 0x9AD8, - 2322: 0x9D3B, - 2323: 0x525B, - 2324: 0x52AB, - 2325: 0x53F7, - 2326: 0x5408, - 2327: 0x58D5, - 2328: 0x62F7, - 2329: 0x6FE0, - 2330: 0x8C6A, - 2331: 0x8F5F, - 2332: 0x9EB9, - 2333: 0x514B, - 2334: 0x523B, - 2335: 0x544A, - 2336: 0x56FD, - 2337: 0x7A40, - 2338: 0x9177, - 2339: 0x9D60, - 2340: 0x9ED2, - 2341: 0x7344, - 2342: 0x6F09, - 2343: 0x8170, - 2344: 0x7511, - 2345: 0x5FFD, - 2346: 0x60DA, - 2347: 0x9AA8, - 2348: 0x72DB, - 2349: 0x8FBC, - 2350: 0x6B64, - 2351: 0x9803, - 2352: 0x4ECA, - 2353: 0x56F0, - 2354: 0x5764, - 2355: 0x58BE, - 2356: 0x5A5A, - 2357: 0x6068, - 2358: 0x61C7, - 2359: 0x660F, - 2360: 0x6606, - 2361: 0x6839, - 2362: 0x68B1, - 2363: 0x6DF7, - 2364: 0x75D5, - 2365: 0x7D3A, - 2366: 0x826E, - 2367: 0x9B42, - 2368: 0x4E9B, - 2369: 0x4F50, - 2370: 0x53C9, - 2371: 0x5506, - 2372: 0x5D6F, - 2373: 0x5DE6, - 2374: 0x5DEE, - 2375: 0x67FB, - 2376: 0x6C99, - 2377: 0x7473, - 2378: 0x7802, - 2379: 0x8A50, - 2380: 0x9396, - 2381: 0x88DF, - 2382: 0x5750, - 2383: 0x5EA7, - 2384: 0x632B, - 2385: 0x50B5, - 2386: 0x50AC, - 2387: 0x518D, - 2388: 0x6700, - 2389: 0x54C9, - 2390: 0x585E, - 2391: 0x59BB, - 2392: 0x5BB0, - 2393: 0x5F69, - 2394: 0x624D, - 2395: 0x63A1, - 2396: 0x683D, - 2397: 0x6B73, - 2398: 0x6E08, - 2399: 0x707D, - 2400: 0x91C7, - 2401: 0x7280, - 2402: 0x7815, - 2403: 0x7826, - 2404: 0x796D, - 2405: 0x658E, - 2406: 0x7D30, - 2407: 0x83DC, - 2408: 0x88C1, - 2409: 0x8F09, - 2410: 0x969B, - 2411: 0x5264, - 2412: 0x5728, - 2413: 0x6750, - 2414: 0x7F6A, - 2415: 0x8CA1, - 2416: 0x51B4, - 2417: 0x5742, - 2418: 0x962A, - 2419: 0x583A, - 2420: 0x698A, - 2421: 0x80B4, - 2422: 0x54B2, - 2423: 0x5D0E, - 2424: 0x57FC, - 2425: 0x7895, - 2426: 0x9DFA, - 2427: 0x4F5C, - 2428: 0x524A, - 2429: 0x548B, - 2430: 0x643E, - 2431: 0x6628, - 2432: 0x6714, - 2433: 0x67F5, - 2434: 0x7A84, - 2435: 0x7B56, - 2436: 0x7D22, - 2437: 0x932F, - 2438: 0x685C, - 2439: 0x9BAD, - 2440: 0x7B39, - 2441: 0x5319, - 2442: 0x518A, - 2443: 0x5237, - 2444: 0x5BDF, - 2445: 0x62F6, - 2446: 0x64AE, - 2447: 0x64E6, - 2448: 0x672D, - 2449: 0x6BBA, - 2450: 0x85A9, - 2451: 0x96D1, - 2452: 0x7690, - 2453: 0x9BD6, - 2454: 0x634C, - 2455: 0x9306, - 2456: 0x9BAB, - 2457: 0x76BF, - 2458: 0x6652, - 2459: 0x4E09, - 2460: 0x5098, - 2461: 0x53C2, - 2462: 0x5C71, - 2463: 0x60E8, - 2464: 0x6492, - 2465: 0x6563, - 2466: 0x685F, - 2467: 0x71E6, - 2468: 0x73CA, - 2469: 0x7523, - 2470: 0x7B97, - 2471: 0x7E82, - 2472: 0x8695, - 2473: 0x8B83, - 2474: 0x8CDB, - 2475: 0x9178, - 2476: 0x9910, - 2477: 0x65AC, - 2478: 0x66AB, - 2479: 0x6B8B, - 2480: 0x4ED5, - 2481: 0x4ED4, - 2482: 0x4F3A, - 2483: 0x4F7F, - 2484: 0x523A, - 2485: 0x53F8, - 2486: 0x53F2, - 2487: 0x55E3, - 2488: 0x56DB, - 2489: 0x58EB, - 2490: 0x59CB, - 2491: 0x59C9, - 2492: 0x59FF, - 2493: 0x5B50, - 2494: 0x5C4D, - 2495: 0x5E02, - 2496: 0x5E2B, - 2497: 0x5FD7, - 2498: 0x601D, - 2499: 0x6307, - 2500: 0x652F, - 2501: 0x5B5C, - 2502: 0x65AF, - 2503: 0x65BD, - 2504: 0x65E8, - 2505: 0x679D, - 2506: 0x6B62, - 2507: 0x6B7B, - 2508: 0x6C0F, - 2509: 0x7345, - 2510: 0x7949, - 2511: 0x79C1, - 2512: 0x7CF8, - 2513: 0x7D19, - 2514: 0x7D2B, - 2515: 0x80A2, - 2516: 0x8102, - 2517: 0x81F3, - 2518: 0x8996, - 2519: 0x8A5E, - 2520: 0x8A69, - 2521: 0x8A66, - 2522: 0x8A8C, - 2523: 0x8AEE, - 2524: 0x8CC7, - 2525: 0x8CDC, - 2526: 0x96CC, - 2527: 0x98FC, - 2528: 0x6B6F, - 2529: 0x4E8B, - 2530: 0x4F3C, - 2531: 0x4F8D, - 2532: 0x5150, - 2533: 0x5B57, - 2534: 0x5BFA, - 2535: 0x6148, - 2536: 0x6301, - 2537: 0x6642, - 2538: 0x6B21, - 2539: 0x6ECB, - 2540: 0x6CBB, - 2541: 0x723E, - 2542: 0x74BD, - 2543: 0x75D4, - 2544: 0x78C1, - 2545: 0x793A, - 2546: 0x800C, - 2547: 0x8033, - 2548: 0x81EA, - 2549: 0x8494, - 2550: 0x8F9E, - 2551: 0x6C50, - 2552: 0x9E7F, - 2553: 0x5F0F, - 2554: 0x8B58, - 2555: 0x9D2B, - 2556: 0x7AFA, - 2557: 0x8EF8, - 2558: 0x5B8D, - 2559: 0x96EB, - 2560: 0x4E03, - 2561: 0x53F1, - 2562: 0x57F7, - 2563: 0x5931, - 2564: 0x5AC9, - 2565: 0x5BA4, - 2566: 0x6089, - 2567: 0x6E7F, - 2568: 0x6F06, - 2569: 0x75BE, - 2570: 0x8CEA, - 2571: 0x5B9F, - 2572: 0x8500, - 2573: 0x7BE0, - 2574: 0x5072, - 2575: 0x67F4, - 2576: 0x829D, - 2577: 0x5C61, - 2578: 0x854A, - 2579: 0x7E1E, - 2580: 0x820E, - 2581: 0x5199, - 2582: 0x5C04, - 2583: 0x6368, - 2584: 0x8D66, - 2585: 0x659C, - 2586: 0x716E, - 2587: 0x793E, - 2588: 0x7D17, - 2589: 0x8005, - 2590: 0x8B1D, - 2591: 0x8ECA, - 2592: 0x906E, - 2593: 0x86C7, - 2594: 0x90AA, - 2595: 0x501F, - 2596: 0x52FA, - 2597: 0x5C3A, - 2598: 0x6753, - 2599: 0x707C, - 2600: 0x7235, - 2601: 0x914C, - 2602: 0x91C8, - 2603: 0x932B, - 2604: 0x82E5, - 2605: 0x5BC2, - 2606: 0x5F31, - 2607: 0x60F9, - 2608: 0x4E3B, - 2609: 0x53D6, - 2610: 0x5B88, - 2611: 0x624B, - 2612: 0x6731, - 2613: 0x6B8A, - 2614: 0x72E9, - 2615: 0x73E0, - 2616: 0x7A2E, - 2617: 0x816B, - 2618: 0x8DA3, - 2619: 0x9152, - 2620: 0x9996, - 2621: 0x5112, - 2622: 0x53D7, - 2623: 0x546A, - 2624: 0x5BFF, - 2625: 0x6388, - 2626: 0x6A39, - 2627: 0x7DAC, - 2628: 0x9700, - 2629: 0x56DA, - 2630: 0x53CE, - 2631: 0x5468, - 2632: 0x5B97, - 2633: 0x5C31, - 2634: 0x5DDE, - 2635: 0x4FEE, - 2636: 0x6101, - 2637: 0x62FE, - 2638: 0x6D32, - 2639: 0x79C0, - 2640: 0x79CB, - 2641: 0x7D42, - 2642: 0x7E4D, - 2643: 0x7FD2, - 2644: 0x81ED, - 2645: 0x821F, - 2646: 0x8490, - 2647: 0x8846, - 2648: 0x8972, - 2649: 0x8B90, - 2650: 0x8E74, - 2651: 0x8F2F, - 2652: 0x9031, - 2653: 0x914B, - 2654: 0x916C, - 2655: 0x96C6, - 2656: 0x919C, - 2657: 0x4EC0, - 2658: 0x4F4F, - 2659: 0x5145, - 2660: 0x5341, - 2661: 0x5F93, - 2662: 0x620E, - 2663: 0x67D4, - 2664: 0x6C41, - 2665: 0x6E0B, - 2666: 0x7363, - 2667: 0x7E26, - 2668: 0x91CD, - 2669: 0x9283, - 2670: 0x53D4, - 2671: 0x5919, - 2672: 0x5BBF, - 2673: 0x6DD1, - 2674: 0x795D, - 2675: 0x7E2E, - 2676: 0x7C9B, - 2677: 0x587E, - 2678: 0x719F, - 2679: 0x51FA, - 2680: 0x8853, - 2681: 0x8FF0, - 2682: 0x4FCA, - 2683: 0x5CFB, - 2684: 0x6625, - 2685: 0x77AC, - 2686: 0x7AE3, - 2687: 0x821C, - 2688: 0x99FF, - 2689: 0x51C6, - 2690: 0x5FAA, - 2691: 0x65EC, - 2692: 0x696F, - 2693: 0x6B89, - 2694: 0x6DF3, - 2695: 0x6E96, - 2696: 0x6F64, - 2697: 0x76FE, - 2698: 0x7D14, - 2699: 0x5DE1, - 2700: 0x9075, - 2701: 0x9187, - 2702: 0x9806, - 2703: 0x51E6, - 2704: 0x521D, - 2705: 0x6240, - 2706: 0x6691, - 2707: 0x66D9, - 2708: 0x6E1A, - 2709: 0x5EB6, - 2710: 0x7DD2, - 2711: 0x7F72, - 2712: 0x66F8, - 2713: 0x85AF, - 2714: 0x85F7, - 2715: 0x8AF8, - 2716: 0x52A9, - 2717: 0x53D9, - 2718: 0x5973, - 2719: 0x5E8F, - 2720: 0x5F90, - 2721: 0x6055, - 2722: 0x92E4, - 2723: 0x9664, - 2724: 0x50B7, - 2725: 0x511F, - 2726: 0x52DD, - 2727: 0x5320, - 2728: 0x5347, - 2729: 0x53EC, - 2730: 0x54E8, - 2731: 0x5546, - 2732: 0x5531, - 2733: 0x5617, - 2734: 0x5968, - 2735: 0x59BE, - 2736: 0x5A3C, - 2737: 0x5BB5, - 2738: 0x5C06, - 2739: 0x5C0F, - 2740: 0x5C11, - 2741: 0x5C1A, - 2742: 0x5E84, - 2743: 0x5E8A, - 2744: 0x5EE0, - 2745: 0x5F70, - 2746: 0x627F, - 2747: 0x6284, - 2748: 0x62DB, - 2749: 0x638C, - 2750: 0x6377, - 2751: 0x6607, - 2752: 0x660C, - 2753: 0x662D, - 2754: 0x6676, - 2755: 0x677E, - 2756: 0x68A2, - 2757: 0x6A1F, - 2758: 0x6A35, - 2759: 0x6CBC, - 2760: 0x6D88, - 2761: 0x6E09, - 2762: 0x6E58, - 2763: 0x713C, - 2764: 0x7126, - 2765: 0x7167, - 2766: 0x75C7, - 2767: 0x7701, - 2768: 0x785D, - 2769: 0x7901, - 2770: 0x7965, - 2771: 0x79F0, - 2772: 0x7AE0, - 2773: 0x7B11, - 2774: 0x7CA7, - 2775: 0x7D39, - 2776: 0x8096, - 2777: 0x83D6, - 2778: 0x848B, - 2779: 0x8549, - 2780: 0x885D, - 2781: 0x88F3, - 2782: 0x8A1F, - 2783: 0x8A3C, - 2784: 0x8A54, - 2785: 0x8A73, - 2786: 0x8C61, - 2787: 0x8CDE, - 2788: 0x91A4, - 2789: 0x9266, - 2790: 0x937E, - 2791: 0x9418, - 2792: 0x969C, - 2793: 0x9798, - 2794: 0x4E0A, - 2795: 0x4E08, - 2796: 0x4E1E, - 2797: 0x4E57, - 2798: 0x5197, - 2799: 0x5270, - 2800: 0x57CE, - 2801: 0x5834, - 2802: 0x58CC, - 2803: 0x5B22, - 2804: 0x5E38, - 2805: 0x60C5, - 2806: 0x64FE, - 2807: 0x6761, - 2808: 0x6756, - 2809: 0x6D44, - 2810: 0x72B6, - 2811: 0x7573, - 2812: 0x7A63, - 2813: 0x84B8, - 2814: 0x8B72, - 2815: 0x91B8, - 2816: 0x9320, - 2817: 0x5631, - 2818: 0x57F4, - 2819: 0x98FE, - 2820: 0x62ED, - 2821: 0x690D, - 2822: 0x6B96, - 2823: 0x71ED, - 2824: 0x7E54, - 2825: 0x8077, - 2826: 0x8272, - 2827: 0x89E6, - 2828: 0x98DF, - 2829: 0x8755, - 2830: 0x8FB1, - 2831: 0x5C3B, - 2832: 0x4F38, - 2833: 0x4FE1, - 2834: 0x4FB5, - 2835: 0x5507, - 2836: 0x5A20, - 2837: 0x5BDD, - 2838: 0x5BE9, - 2839: 0x5FC3, - 2840: 0x614E, - 2841: 0x632F, - 2842: 0x65B0, - 2843: 0x664B, - 2844: 0x68EE, - 2845: 0x699B, - 2846: 0x6D78, - 2847: 0x6DF1, - 2848: 0x7533, - 2849: 0x75B9, - 2850: 0x771F, - 2851: 0x795E, - 2852: 0x79E6, - 2853: 0x7D33, - 2854: 0x81E3, - 2855: 0x82AF, - 2856: 0x85AA, - 2857: 0x89AA, - 2858: 0x8A3A, - 2859: 0x8EAB, - 2860: 0x8F9B, - 2861: 0x9032, - 2862: 0x91DD, - 2863: 0x9707, - 2864: 0x4EBA, - 2865: 0x4EC1, - 2866: 0x5203, - 2867: 0x5875, - 2868: 0x58EC, - 2869: 0x5C0B, - 2870: 0x751A, - 2871: 0x5C3D, - 2872: 0x814E, - 2873: 0x8A0A, - 2874: 0x8FC5, - 2875: 0x9663, - 2876: 0x976D, - 2877: 0x7B25, - 2878: 0x8ACF, - 2879: 0x9808, - 2880: 0x9162, - 2881: 0x56F3, - 2882: 0x53A8, - 2883: 0x9017, - 2884: 0x5439, - 2885: 0x5782, - 2886: 0x5E25, - 2887: 0x63A8, - 2888: 0x6C34, - 2889: 0x708A, - 2890: 0x7761, - 2891: 0x7C8B, - 2892: 0x7FE0, - 2893: 0x8870, - 2894: 0x9042, - 2895: 0x9154, - 2896: 0x9310, - 2897: 0x9318, - 2898: 0x968F, - 2899: 0x745E, - 2900: 0x9AC4, - 2901: 0x5D07, - 2902: 0x5D69, - 2903: 0x6570, - 2904: 0x67A2, - 2905: 0x8DA8, - 2906: 0x96DB, - 2907: 0x636E, - 2908: 0x6749, - 2909: 0x6919, - 2910: 0x83C5, - 2911: 0x9817, - 2912: 0x96C0, - 2913: 0x88FE, - 2914: 0x6F84, - 2915: 0x647A, - 2916: 0x5BF8, - 2917: 0x4E16, - 2918: 0x702C, - 2919: 0x755D, - 2920: 0x662F, - 2921: 0x51C4, - 2922: 0x5236, - 2923: 0x52E2, - 2924: 0x59D3, - 2925: 0x5F81, - 2926: 0x6027, - 2927: 0x6210, - 2928: 0x653F, - 2929: 0x6574, - 2930: 0x661F, - 2931: 0x6674, - 2932: 0x68F2, - 2933: 0x6816, - 2934: 0x6B63, - 2935: 0x6E05, - 2936: 0x7272, - 2937: 0x751F, - 2938: 0x76DB, - 2939: 0x7CBE, - 2940: 0x8056, - 2941: 0x58F0, - 2942: 0x88FD, - 2943: 0x897F, - 2944: 0x8AA0, - 2945: 0x8A93, - 2946: 0x8ACB, - 2947: 0x901D, - 2948: 0x9192, - 2949: 0x9752, - 2950: 0x9759, - 2951: 0x6589, - 2952: 0x7A0E, - 2953: 0x8106, - 2954: 0x96BB, - 2955: 0x5E2D, - 2956: 0x60DC, - 2957: 0x621A, - 2958: 0x65A5, - 2959: 0x6614, - 2960: 0x6790, - 2961: 0x77F3, - 2962: 0x7A4D, - 2963: 0x7C4D, - 2964: 0x7E3E, - 2965: 0x810A, - 2966: 0x8CAC, - 2967: 0x8D64, - 2968: 0x8DE1, - 2969: 0x8E5F, - 2970: 0x78A9, - 2971: 0x5207, - 2972: 0x62D9, - 2973: 0x63A5, - 2974: 0x6442, - 2975: 0x6298, - 2976: 0x8A2D, - 2977: 0x7A83, - 2978: 0x7BC0, - 2979: 0x8AAC, - 2980: 0x96EA, - 2981: 0x7D76, - 2982: 0x820C, - 2983: 0x8749, - 2984: 0x4ED9, - 2985: 0x5148, - 2986: 0x5343, - 2987: 0x5360, - 2988: 0x5BA3, - 2989: 0x5C02, - 2990: 0x5C16, - 2991: 0x5DDD, - 2992: 0x6226, - 2993: 0x6247, - 2994: 0x64B0, - 2995: 0x6813, - 2996: 0x6834, - 2997: 0x6CC9, - 2998: 0x6D45, - 2999: 0x6D17, - 3000: 0x67D3, - 3001: 0x6F5C, - 3002: 0x714E, - 3003: 0x717D, - 3004: 0x65CB, - 3005: 0x7A7F, - 3006: 0x7BAD, - 3007: 0x7DDA, - 3008: 0x7E4A, - 3009: 0x7FA8, - 3010: 0x817A, - 3011: 0x821B, - 3012: 0x8239, - 3013: 0x85A6, - 3014: 0x8A6E, - 3015: 0x8CCE, - 3016: 0x8DF5, - 3017: 0x9078, - 3018: 0x9077, - 3019: 0x92AD, - 3020: 0x9291, - 3021: 0x9583, - 3022: 0x9BAE, - 3023: 0x524D, - 3024: 0x5584, - 3025: 0x6F38, - 3026: 0x7136, - 3027: 0x5168, - 3028: 0x7985, - 3029: 0x7E55, - 3030: 0x81B3, - 3031: 0x7CCE, - 3032: 0x564C, - 3033: 0x5851, - 3034: 0x5CA8, - 3035: 0x63AA, - 3036: 0x66FE, - 3037: 0x66FD, - 3038: 0x695A, - 3039: 0x72D9, - 3040: 0x758F, - 3041: 0x758E, - 3042: 0x790E, - 3043: 0x7956, - 3044: 0x79DF, - 3045: 0x7C97, - 3046: 0x7D20, - 3047: 0x7D44, - 3048: 0x8607, - 3049: 0x8A34, - 3050: 0x963B, - 3051: 0x9061, - 3052: 0x9F20, - 3053: 0x50E7, - 3054: 0x5275, - 3055: 0x53CC, - 3056: 0x53E2, - 3057: 0x5009, - 3058: 0x55AA, - 3059: 0x58EE, - 3060: 0x594F, - 3061: 0x723D, - 3062: 0x5B8B, - 3063: 0x5C64, - 3064: 0x531D, - 3065: 0x60E3, - 3066: 0x60F3, - 3067: 0x635C, - 3068: 0x6383, - 3069: 0x633F, - 3070: 0x63BB, - 3071: 0x64CD, - 3072: 0x65E9, - 3073: 0x66F9, - 3074: 0x5DE3, - 3075: 0x69CD, - 3076: 0x69FD, - 3077: 0x6F15, - 3078: 0x71E5, - 3079: 0x4E89, - 3080: 0x75E9, - 3081: 0x76F8, - 3082: 0x7A93, - 3083: 0x7CDF, - 3084: 0x7DCF, - 3085: 0x7D9C, - 3086: 0x8061, - 3087: 0x8349, - 3088: 0x8358, - 3089: 0x846C, - 3090: 0x84BC, - 3091: 0x85FB, - 3092: 0x88C5, - 3093: 0x8D70, - 3094: 0x9001, - 3095: 0x906D, - 3096: 0x9397, - 3097: 0x971C, - 3098: 0x9A12, - 3099: 0x50CF, - 3100: 0x5897, - 3101: 0x618E, - 3102: 0x81D3, - 3103: 0x8535, - 3104: 0x8D08, - 3105: 0x9020, - 3106: 0x4FC3, - 3107: 0x5074, - 3108: 0x5247, - 3109: 0x5373, - 3110: 0x606F, - 3111: 0x6349, - 3112: 0x675F, - 3113: 0x6E2C, - 3114: 0x8DB3, - 3115: 0x901F, - 3116: 0x4FD7, - 3117: 0x5C5E, - 3118: 0x8CCA, - 3119: 0x65CF, - 3120: 0x7D9A, - 3121: 0x5352, - 3122: 0x8896, - 3123: 0x5176, - 3124: 0x63C3, - 3125: 0x5B58, - 3126: 0x5B6B, - 3127: 0x5C0A, - 3128: 0x640D, - 3129: 0x6751, - 3130: 0x905C, - 3131: 0x4ED6, - 3132: 0x591A, - 3133: 0x592A, - 3134: 0x6C70, - 3135: 0x8A51, - 3136: 0x553E, - 3137: 0x5815, - 3138: 0x59A5, - 3139: 0x60F0, - 3140: 0x6253, - 3141: 0x67C1, - 3142: 0x8235, - 3143: 0x6955, - 3144: 0x9640, - 3145: 0x99C4, - 3146: 0x9A28, - 3147: 0x4F53, - 3148: 0x5806, - 3149: 0x5BFE, - 3150: 0x8010, - 3151: 0x5CB1, - 3152: 0x5E2F, - 3153: 0x5F85, - 3154: 0x6020, - 3155: 0x614B, - 3156: 0x6234, - 3157: 0x66FF, - 3158: 0x6CF0, - 3159: 0x6EDE, - 3160: 0x80CE, - 3161: 0x817F, - 3162: 0x82D4, - 3163: 0x888B, - 3164: 0x8CB8, - 3165: 0x9000, - 3166: 0x902E, - 3167: 0x968A, - 3168: 0x9EDB, - 3169: 0x9BDB, - 3170: 0x4EE3, - 3171: 0x53F0, - 3172: 0x5927, - 3173: 0x7B2C, - 3174: 0x918D, - 3175: 0x984C, - 3176: 0x9DF9, - 3177: 0x6EDD, - 3178: 0x7027, - 3179: 0x5353, - 3180: 0x5544, - 3181: 0x5B85, - 3182: 0x6258, - 3183: 0x629E, - 3184: 0x62D3, - 3185: 0x6CA2, - 3186: 0x6FEF, - 3187: 0x7422, - 3188: 0x8A17, - 3189: 0x9438, - 3190: 0x6FC1, - 3191: 0x8AFE, - 3192: 0x8338, - 3193: 0x51E7, - 3194: 0x86F8, - 3195: 0x53EA, - 3196: 0x53E9, - 3197: 0x4F46, - 3198: 0x9054, - 3199: 0x8FB0, - 3200: 0x596A, - 3201: 0x8131, - 3202: 0x5DFD, - 3203: 0x7AEA, - 3204: 0x8FBF, - 3205: 0x68DA, - 3206: 0x8C37, - 3207: 0x72F8, - 3208: 0x9C48, - 3209: 0x6A3D, - 3210: 0x8AB0, - 3211: 0x4E39, - 3212: 0x5358, - 3213: 0x5606, - 3214: 0x5766, - 3215: 0x62C5, - 3216: 0x63A2, - 3217: 0x65E6, - 3218: 0x6B4E, - 3219: 0x6DE1, - 3220: 0x6E5B, - 3221: 0x70AD, - 3222: 0x77ED, - 3223: 0x7AEF, - 3224: 0x7BAA, - 3225: 0x7DBB, - 3226: 0x803D, - 3227: 0x80C6, - 3228: 0x86CB, - 3229: 0x8A95, - 3230: 0x935B, - 3231: 0x56E3, - 3232: 0x58C7, - 3233: 0x5F3E, - 3234: 0x65AD, - 3235: 0x6696, - 3236: 0x6A80, - 3237: 0x6BB5, - 3238: 0x7537, - 3239: 0x8AC7, - 3240: 0x5024, - 3241: 0x77E5, - 3242: 0x5730, - 3243: 0x5F1B, - 3244: 0x6065, - 3245: 0x667A, - 3246: 0x6C60, - 3247: 0x75F4, - 3248: 0x7A1A, - 3249: 0x7F6E, - 3250: 0x81F4, - 3251: 0x8718, - 3252: 0x9045, - 3253: 0x99B3, - 3254: 0x7BC9, - 3255: 0x755C, - 3256: 0x7AF9, - 3257: 0x7B51, - 3258: 0x84C4, - 3259: 0x9010, - 3260: 0x79E9, - 3261: 0x7A92, - 3262: 0x8336, - 3263: 0x5AE1, - 3264: 0x7740, - 3265: 0x4E2D, - 3266: 0x4EF2, - 3267: 0x5B99, - 3268: 0x5FE0, - 3269: 0x62BD, - 3270: 0x663C, - 3271: 0x67F1, - 3272: 0x6CE8, - 3273: 0x866B, - 3274: 0x8877, - 3275: 0x8A3B, - 3276: 0x914E, - 3277: 0x92F3, - 3278: 0x99D0, - 3279: 0x6A17, - 3280: 0x7026, - 3281: 0x732A, - 3282: 0x82E7, - 3283: 0x8457, - 3284: 0x8CAF, - 3285: 0x4E01, - 3286: 0x5146, - 3287: 0x51CB, - 3288: 0x558B, - 3289: 0x5BF5, - 3290: 0x5E16, - 3291: 0x5E33, - 3292: 0x5E81, - 3293: 0x5F14, - 3294: 0x5F35, - 3295: 0x5F6B, - 3296: 0x5FB4, - 3297: 0x61F2, - 3298: 0x6311, - 3299: 0x66A2, - 3300: 0x671D, - 3301: 0x6F6E, - 3302: 0x7252, - 3303: 0x753A, - 3304: 0x773A, - 3305: 0x8074, - 3306: 0x8139, - 3307: 0x8178, - 3308: 0x8776, - 3309: 0x8ABF, - 3310: 0x8ADC, - 3311: 0x8D85, - 3312: 0x8DF3, - 3313: 0x929A, - 3314: 0x9577, - 3315: 0x9802, - 3316: 0x9CE5, - 3317: 0x52C5, - 3318: 0x6357, - 3319: 0x76F4, - 3320: 0x6715, - 3321: 0x6C88, - 3322: 0x73CD, - 3323: 0x8CC3, - 3324: 0x93AE, - 3325: 0x9673, - 3326: 0x6D25, - 3327: 0x589C, - 3328: 0x690E, - 3329: 0x69CC, - 3330: 0x8FFD, - 3331: 0x939A, - 3332: 0x75DB, - 3333: 0x901A, - 3334: 0x585A, - 3335: 0x6802, - 3336: 0x63B4, - 3337: 0x69FB, - 3338: 0x4F43, - 3339: 0x6F2C, - 3340: 0x67D8, - 3341: 0x8FBB, - 3342: 0x8526, - 3343: 0x7DB4, - 3344: 0x9354, - 3345: 0x693F, - 3346: 0x6F70, - 3347: 0x576A, - 3348: 0x58F7, - 3349: 0x5B2C, - 3350: 0x7D2C, - 3351: 0x722A, - 3352: 0x540A, - 3353: 0x91E3, - 3354: 0x9DB4, - 3355: 0x4EAD, - 3356: 0x4F4E, - 3357: 0x505C, - 3358: 0x5075, - 3359: 0x5243, - 3360: 0x8C9E, - 3361: 0x5448, - 3362: 0x5824, - 3363: 0x5B9A, - 3364: 0x5E1D, - 3365: 0x5E95, - 3366: 0x5EAD, - 3367: 0x5EF7, - 3368: 0x5F1F, - 3369: 0x608C, - 3370: 0x62B5, - 3371: 0x633A, - 3372: 0x63D0, - 3373: 0x68AF, - 3374: 0x6C40, - 3375: 0x7887, - 3376: 0x798E, - 3377: 0x7A0B, - 3378: 0x7DE0, - 3379: 0x8247, - 3380: 0x8A02, - 3381: 0x8AE6, - 3382: 0x8E44, - 3383: 0x9013, - 3384: 0x90B8, - 3385: 0x912D, - 3386: 0x91D8, - 3387: 0x9F0E, - 3388: 0x6CE5, - 3389: 0x6458, - 3390: 0x64E2, - 3391: 0x6575, - 3392: 0x6EF4, - 3393: 0x7684, - 3394: 0x7B1B, - 3395: 0x9069, - 3396: 0x93D1, - 3397: 0x6EBA, - 3398: 0x54F2, - 3399: 0x5FB9, - 3400: 0x64A4, - 3401: 0x8F4D, - 3402: 0x8FED, - 3403: 0x9244, - 3404: 0x5178, - 3405: 0x586B, - 3406: 0x5929, - 3407: 0x5C55, - 3408: 0x5E97, - 3409: 0x6DFB, - 3410: 0x7E8F, - 3411: 0x751C, - 3412: 0x8CBC, - 3413: 0x8EE2, - 3414: 0x985B, - 3415: 0x70B9, - 3416: 0x4F1D, - 3417: 0x6BBF, - 3418: 0x6FB1, - 3419: 0x7530, - 3420: 0x96FB, - 3421: 0x514E, - 3422: 0x5410, - 3423: 0x5835, - 3424: 0x5857, - 3425: 0x59AC, - 3426: 0x5C60, - 3427: 0x5F92, - 3428: 0x6597, - 3429: 0x675C, - 3430: 0x6E21, - 3431: 0x767B, - 3432: 0x83DF, - 3433: 0x8CED, - 3434: 0x9014, - 3435: 0x90FD, - 3436: 0x934D, - 3437: 0x7825, - 3438: 0x783A, - 3439: 0x52AA, - 3440: 0x5EA6, - 3441: 0x571F, - 3442: 0x5974, - 3443: 0x6012, - 3444: 0x5012, - 3445: 0x515A, - 3446: 0x51AC, - 3447: 0x51CD, - 3448: 0x5200, - 3449: 0x5510, - 3450: 0x5854, - 3451: 0x5858, - 3452: 0x5957, - 3453: 0x5B95, - 3454: 0x5CF6, - 3455: 0x5D8B, - 3456: 0x60BC, - 3457: 0x6295, - 3458: 0x642D, - 3459: 0x6771, - 3460: 0x6843, - 3461: 0x68BC, - 3462: 0x68DF, - 3463: 0x76D7, - 3464: 0x6DD8, - 3465: 0x6E6F, - 3466: 0x6D9B, - 3467: 0x706F, - 3468: 0x71C8, - 3469: 0x5F53, - 3470: 0x75D8, - 3471: 0x7977, - 3472: 0x7B49, - 3473: 0x7B54, - 3474: 0x7B52, - 3475: 0x7CD6, - 3476: 0x7D71, - 3477: 0x5230, - 3478: 0x8463, - 3479: 0x8569, - 3480: 0x85E4, - 3481: 0x8A0E, - 3482: 0x8B04, - 3483: 0x8C46, - 3484: 0x8E0F, - 3485: 0x9003, - 3486: 0x900F, - 3487: 0x9419, - 3488: 0x9676, - 3489: 0x982D, - 3490: 0x9A30, - 3491: 0x95D8, - 3492: 0x50CD, - 3493: 0x52D5, - 3494: 0x540C, - 3495: 0x5802, - 3496: 0x5C0E, - 3497: 0x61A7, - 3498: 0x649E, - 3499: 0x6D1E, - 3500: 0x77B3, - 3501: 0x7AE5, - 3502: 0x80F4, - 3503: 0x8404, - 3504: 0x9053, - 3505: 0x9285, - 3506: 0x5CE0, - 3507: 0x9D07, - 3508: 0x533F, - 3509: 0x5F97, - 3510: 0x5FB3, - 3511: 0x6D9C, - 3512: 0x7279, - 3513: 0x7763, - 3514: 0x79BF, - 3515: 0x7BE4, - 3516: 0x6BD2, - 3517: 0x72EC, - 3518: 0x8AAD, - 3519: 0x6803, - 3520: 0x6A61, - 3521: 0x51F8, - 3522: 0x7A81, - 3523: 0x6934, - 3524: 0x5C4A, - 3525: 0x9CF6, - 3526: 0x82EB, - 3527: 0x5BC5, - 3528: 0x9149, - 3529: 0x701E, - 3530: 0x5678, - 3531: 0x5C6F, - 3532: 0x60C7, - 3533: 0x6566, - 3534: 0x6C8C, - 3535: 0x8C5A, - 3536: 0x9041, - 3537: 0x9813, - 3538: 0x5451, - 3539: 0x66C7, - 3540: 0x920D, - 3541: 0x5948, - 3542: 0x90A3, - 3543: 0x5185, - 3544: 0x4E4D, - 3545: 0x51EA, - 3546: 0x8599, - 3547: 0x8B0E, - 3548: 0x7058, - 3549: 0x637A, - 3550: 0x934B, - 3551: 0x6962, - 3552: 0x99B4, - 3553: 0x7E04, - 3554: 0x7577, - 3555: 0x5357, - 3556: 0x6960, - 3557: 0x8EDF, - 3558: 0x96E3, - 3559: 0x6C5D, - 3560: 0x4E8C, - 3561: 0x5C3C, - 3562: 0x5F10, - 3563: 0x8FE9, - 3564: 0x5302, - 3565: 0x8CD1, - 3566: 0x8089, - 3567: 0x8679, - 3568: 0x5EFF, - 3569: 0x65E5, - 3570: 0x4E73, - 3571: 0x5165, - 3572: 0x5982, - 3573: 0x5C3F, - 3574: 0x97EE, - 3575: 0x4EFB, - 3576: 0x598A, - 3577: 0x5FCD, - 3578: 0x8A8D, - 3579: 0x6FE1, - 3580: 0x79B0, - 3581: 0x7962, - 3582: 0x5BE7, - 3583: 0x8471, - 3584: 0x732B, - 3585: 0x71B1, - 3586: 0x5E74, - 3587: 0x5FF5, - 3588: 0x637B, - 3589: 0x649A, - 3590: 0x71C3, - 3591: 0x7C98, - 3592: 0x4E43, - 3593: 0x5EFC, - 3594: 0x4E4B, - 3595: 0x57DC, - 3596: 0x56A2, - 3597: 0x60A9, - 3598: 0x6FC3, - 3599: 0x7D0D, - 3600: 0x80FD, - 3601: 0x8133, - 3602: 0x81BF, - 3603: 0x8FB2, - 3604: 0x8997, - 3605: 0x86A4, - 3606: 0x5DF4, - 3607: 0x628A, - 3608: 0x64AD, - 3609: 0x8987, - 3610: 0x6777, - 3611: 0x6CE2, - 3612: 0x6D3E, - 3613: 0x7436, - 3614: 0x7834, - 3615: 0x5A46, - 3616: 0x7F75, - 3617: 0x82AD, - 3618: 0x99AC, - 3619: 0x4FF3, - 3620: 0x5EC3, - 3621: 0x62DD, - 3622: 0x6392, - 3623: 0x6557, - 3624: 0x676F, - 3625: 0x76C3, - 3626: 0x724C, - 3627: 0x80CC, - 3628: 0x80BA, - 3629: 0x8F29, - 3630: 0x914D, - 3631: 0x500D, - 3632: 0x57F9, - 3633: 0x5A92, - 3634: 0x6885, - 3635: 0x6973, - 3636: 0x7164, - 3637: 0x72FD, - 3638: 0x8CB7, - 3639: 0x58F2, - 3640: 0x8CE0, - 3641: 0x966A, - 3642: 0x9019, - 3643: 0x877F, - 3644: 0x79E4, - 3645: 0x77E7, - 3646: 0x8429, - 3647: 0x4F2F, - 3648: 0x5265, - 3649: 0x535A, - 3650: 0x62CD, - 3651: 0x67CF, - 3652: 0x6CCA, - 3653: 0x767D, - 3654: 0x7B94, - 3655: 0x7C95, - 3656: 0x8236, - 3657: 0x8584, - 3658: 0x8FEB, - 3659: 0x66DD, - 3660: 0x6F20, - 3661: 0x7206, - 3662: 0x7E1B, - 3663: 0x83AB, - 3664: 0x99C1, - 3665: 0x9EA6, - 3666: 0x51FD, - 3667: 0x7BB1, - 3668: 0x7872, - 3669: 0x7BB8, - 3670: 0x8087, - 3671: 0x7B48, - 3672: 0x6AE8, - 3673: 0x5E61, - 3674: 0x808C, - 3675: 0x7551, - 3676: 0x7560, - 3677: 0x516B, - 3678: 0x9262, - 3679: 0x6E8C, - 3680: 0x767A, - 3681: 0x9197, - 3682: 0x9AEA, - 3683: 0x4F10, - 3684: 0x7F70, - 3685: 0x629C, - 3686: 0x7B4F, - 3687: 0x95A5, - 3688: 0x9CE9, - 3689: 0x567A, - 3690: 0x5859, - 3691: 0x86E4, - 3692: 0x96BC, - 3693: 0x4F34, - 3694: 0x5224, - 3695: 0x534A, - 3696: 0x53CD, - 3697: 0x53DB, - 3698: 0x5E06, - 3699: 0x642C, - 3700: 0x6591, - 3701: 0x677F, - 3702: 0x6C3E, - 3703: 0x6C4E, - 3704: 0x7248, - 3705: 0x72AF, - 3706: 0x73ED, - 3707: 0x7554, - 3708: 0x7E41, - 3709: 0x822C, - 3710: 0x85E9, - 3711: 0x8CA9, - 3712: 0x7BC4, - 3713: 0x91C6, - 3714: 0x7169, - 3715: 0x9812, - 3716: 0x98EF, - 3717: 0x633D, - 3718: 0x6669, - 3719: 0x756A, - 3720: 0x76E4, - 3721: 0x78D0, - 3722: 0x8543, - 3723: 0x86EE, - 3724: 0x532A, - 3725: 0x5351, - 3726: 0x5426, - 3727: 0x5983, - 3728: 0x5E87, - 3729: 0x5F7C, - 3730: 0x60B2, - 3731: 0x6249, - 3732: 0x6279, - 3733: 0x62AB, - 3734: 0x6590, - 3735: 0x6BD4, - 3736: 0x6CCC, - 3737: 0x75B2, - 3738: 0x76AE, - 3739: 0x7891, - 3740: 0x79D8, - 3741: 0x7DCB, - 3742: 0x7F77, - 3743: 0x80A5, - 3744: 0x88AB, - 3745: 0x8AB9, - 3746: 0x8CBB, - 3747: 0x907F, - 3748: 0x975E, - 3749: 0x98DB, - 3750: 0x6A0B, - 3751: 0x7C38, - 3752: 0x5099, - 3753: 0x5C3E, - 3754: 0x5FAE, - 3755: 0x6787, - 3756: 0x6BD8, - 3757: 0x7435, - 3758: 0x7709, - 3759: 0x7F8E, - 3760: 0x9F3B, - 3761: 0x67CA, - 3762: 0x7A17, - 3763: 0x5339, - 3764: 0x758B, - 3765: 0x9AED, - 3766: 0x5F66, - 3767: 0x819D, - 3768: 0x83F1, - 3769: 0x8098, - 3770: 0x5F3C, - 3771: 0x5FC5, - 3772: 0x7562, - 3773: 0x7B46, - 3774: 0x903C, - 3775: 0x6867, - 3776: 0x59EB, - 3777: 0x5A9B, - 3778: 0x7D10, - 3779: 0x767E, - 3780: 0x8B2C, - 3781: 0x4FF5, - 3782: 0x5F6A, - 3783: 0x6A19, - 3784: 0x6C37, - 3785: 0x6F02, - 3786: 0x74E2, - 3787: 0x7968, - 3788: 0x8868, - 3789: 0x8A55, - 3790: 0x8C79, - 3791: 0x5EDF, - 3792: 0x63CF, - 3793: 0x75C5, - 3794: 0x79D2, - 3795: 0x82D7, - 3796: 0x9328, - 3797: 0x92F2, - 3798: 0x849C, - 3799: 0x86ED, - 3800: 0x9C2D, - 3801: 0x54C1, - 3802: 0x5F6C, - 3803: 0x658C, - 3804: 0x6D5C, - 3805: 0x7015, - 3806: 0x8CA7, - 3807: 0x8CD3, - 3808: 0x983B, - 3809: 0x654F, - 3810: 0x74F6, - 3811: 0x4E0D, - 3812: 0x4ED8, - 3813: 0x57E0, - 3814: 0x592B, - 3815: 0x5A66, - 3816: 0x5BCC, - 3817: 0x51A8, - 3818: 0x5E03, - 3819: 0x5E9C, - 3820: 0x6016, - 3821: 0x6276, - 3822: 0x6577, - 3823: 0x65A7, - 3824: 0x666E, - 3825: 0x6D6E, - 3826: 0x7236, - 3827: 0x7B26, - 3828: 0x8150, - 3829: 0x819A, - 3830: 0x8299, - 3831: 0x8B5C, - 3832: 0x8CA0, - 3833: 0x8CE6, - 3834: 0x8D74, - 3835: 0x961C, - 3836: 0x9644, - 3837: 0x4FAE, - 3838: 0x64AB, - 3839: 0x6B66, - 3840: 0x821E, - 3841: 0x8461, - 3842: 0x856A, - 3843: 0x90E8, - 3844: 0x5C01, - 3845: 0x6953, - 3846: 0x98A8, - 3847: 0x847A, - 3848: 0x8557, - 3849: 0x4F0F, - 3850: 0x526F, - 3851: 0x5FA9, - 3852: 0x5E45, - 3853: 0x670D, - 3854: 0x798F, - 3855: 0x8179, - 3856: 0x8907, - 3857: 0x8986, - 3858: 0x6DF5, - 3859: 0x5F17, - 3860: 0x6255, - 3861: 0x6CB8, - 3862: 0x4ECF, - 3863: 0x7269, - 3864: 0x9B92, - 3865: 0x5206, - 3866: 0x543B, - 3867: 0x5674, - 3868: 0x58B3, - 3869: 0x61A4, - 3870: 0x626E, - 3871: 0x711A, - 3872: 0x596E, - 3873: 0x7C89, - 3874: 0x7CDE, - 3875: 0x7D1B, - 3876: 0x96F0, - 3877: 0x6587, - 3878: 0x805E, - 3879: 0x4E19, - 3880: 0x4F75, - 3881: 0x5175, - 3882: 0x5840, - 3883: 0x5E63, - 3884: 0x5E73, - 3885: 0x5F0A, - 3886: 0x67C4, - 3887: 0x4E26, - 3888: 0x853D, - 3889: 0x9589, - 3890: 0x965B, - 3891: 0x7C73, - 3892: 0x9801, - 3893: 0x50FB, - 3894: 0x58C1, - 3895: 0x7656, - 3896: 0x78A7, - 3897: 0x5225, - 3898: 0x77A5, - 3899: 0x8511, - 3900: 0x7B86, - 3901: 0x504F, - 3902: 0x5909, - 3903: 0x7247, - 3904: 0x7BC7, - 3905: 0x7DE8, - 3906: 0x8FBA, - 3907: 0x8FD4, - 3908: 0x904D, - 3909: 0x4FBF, - 3910: 0x52C9, - 3911: 0x5A29, - 3912: 0x5F01, - 3913: 0x97AD, - 3914: 0x4FDD, - 3915: 0x8217, - 3916: 0x92EA, - 3917: 0x5703, - 3918: 0x6355, - 3919: 0x6B69, - 3920: 0x752B, - 3921: 0x88DC, - 3922: 0x8F14, - 3923: 0x7A42, - 3924: 0x52DF, - 3925: 0x5893, - 3926: 0x6155, - 3927: 0x620A, - 3928: 0x66AE, - 3929: 0x6BCD, - 3930: 0x7C3F, - 3931: 0x83E9, - 3932: 0x5023, - 3933: 0x4FF8, - 3934: 0x5305, - 3935: 0x5446, - 3936: 0x5831, - 3937: 0x5949, - 3938: 0x5B9D, - 3939: 0x5CF0, - 3940: 0x5CEF, - 3941: 0x5D29, - 3942: 0x5E96, - 3943: 0x62B1, - 3944: 0x6367, - 3945: 0x653E, - 3946: 0x65B9, - 3947: 0x670B, - 3948: 0x6CD5, - 3949: 0x6CE1, - 3950: 0x70F9, - 3951: 0x7832, - 3952: 0x7E2B, - 3953: 0x80DE, - 3954: 0x82B3, - 3955: 0x840C, - 3956: 0x84EC, - 3957: 0x8702, - 3958: 0x8912, - 3959: 0x8A2A, - 3960: 0x8C4A, - 3961: 0x90A6, - 3962: 0x92D2, - 3963: 0x98FD, - 3964: 0x9CF3, - 3965: 0x9D6C, - 3966: 0x4E4F, - 3967: 0x4EA1, - 3968: 0x508D, - 3969: 0x5256, - 3970: 0x574A, - 3971: 0x59A8, - 3972: 0x5E3D, - 3973: 0x5FD8, - 3974: 0x5FD9, - 3975: 0x623F, - 3976: 0x66B4, - 3977: 0x671B, - 3978: 0x67D0, - 3979: 0x68D2, - 3980: 0x5192, - 3981: 0x7D21, - 3982: 0x80AA, - 3983: 0x81A8, - 3984: 0x8B00, - 3985: 0x8C8C, - 3986: 0x8CBF, - 3987: 0x927E, - 3988: 0x9632, - 3989: 0x5420, - 3990: 0x982C, - 3991: 0x5317, - 3992: 0x50D5, - 3993: 0x535C, - 3994: 0x58A8, - 3995: 0x64B2, - 3996: 0x6734, - 3997: 0x7267, - 3998: 0x7766, - 3999: 0x7A46, - 4000: 0x91E6, - 4001: 0x52C3, - 4002: 0x6CA1, - 4003: 0x6B86, - 4004: 0x5800, - 4005: 0x5E4C, - 4006: 0x5954, - 4007: 0x672C, - 4008: 0x7FFB, - 4009: 0x51E1, - 4010: 0x76C6, - 4011: 0x6469, - 4012: 0x78E8, - 4013: 0x9B54, - 4014: 0x9EBB, - 4015: 0x57CB, - 4016: 0x59B9, - 4017: 0x6627, - 4018: 0x679A, - 4019: 0x6BCE, - 4020: 0x54E9, - 4021: 0x69D9, - 4022: 0x5E55, - 4023: 0x819C, - 4024: 0x6795, - 4025: 0x9BAA, - 4026: 0x67FE, - 4027: 0x9C52, - 4028: 0x685D, - 4029: 0x4EA6, - 4030: 0x4FE3, - 4031: 0x53C8, - 4032: 0x62B9, - 4033: 0x672B, - 4034: 0x6CAB, - 4035: 0x8FC4, - 4036: 0x4FAD, - 4037: 0x7E6D, - 4038: 0x9EBF, - 4039: 0x4E07, - 4040: 0x6162, - 4041: 0x6E80, - 4042: 0x6F2B, - 4043: 0x8513, - 4044: 0x5473, - 4045: 0x672A, - 4046: 0x9B45, - 4047: 0x5DF3, - 4048: 0x7B95, - 4049: 0x5CAC, - 4050: 0x5BC6, - 4051: 0x871C, - 4052: 0x6E4A, - 4053: 0x84D1, - 4054: 0x7A14, - 4055: 0x8108, - 4056: 0x5999, - 4057: 0x7C8D, - 4058: 0x6C11, - 4059: 0x7720, - 4060: 0x52D9, - 4061: 0x5922, - 4062: 0x7121, - 4063: 0x725F, - 4064: 0x77DB, - 4065: 0x9727, - 4066: 0x9D61, - 4067: 0x690B, - 4068: 0x5A7F, - 4069: 0x5A18, - 4070: 0x51A5, - 4071: 0x540D, - 4072: 0x547D, - 4073: 0x660E, - 4074: 0x76DF, - 4075: 0x8FF7, - 4076: 0x9298, - 4077: 0x9CF4, - 4078: 0x59EA, - 4079: 0x725D, - 4080: 0x6EC5, - 4081: 0x514D, - 4082: 0x68C9, - 4083: 0x7DBF, - 4084: 0x7DEC, - 4085: 0x9762, - 4086: 0x9EBA, - 4087: 0x6478, - 4088: 0x6A21, - 4089: 0x8302, - 4090: 0x5984, - 4091: 0x5B5F, - 4092: 0x6BDB, - 4093: 0x731B, - 4094: 0x76F2, - 4095: 0x7DB2, - 4096: 0x8017, - 4097: 0x8499, - 4098: 0x5132, - 4099: 0x6728, - 4100: 0x9ED9, - 4101: 0x76EE, - 4102: 0x6762, - 4103: 0x52FF, - 4104: 0x9905, - 4105: 0x5C24, - 4106: 0x623B, - 4107: 0x7C7E, - 4108: 0x8CB0, - 4109: 0x554F, - 4110: 0x60B6, - 4111: 0x7D0B, - 4112: 0x9580, - 4113: 0x5301, - 4114: 0x4E5F, - 4115: 0x51B6, - 4116: 0x591C, - 4117: 0x723A, - 4118: 0x8036, - 4119: 0x91CE, - 4120: 0x5F25, - 4121: 0x77E2, - 4122: 0x5384, - 4123: 0x5F79, - 4124: 0x7D04, - 4125: 0x85AC, - 4126: 0x8A33, - 4127: 0x8E8D, - 4128: 0x9756, - 4129: 0x67F3, - 4130: 0x85AE, - 4131: 0x9453, - 4132: 0x6109, - 4133: 0x6108, - 4134: 0x6CB9, - 4135: 0x7652, - 4136: 0x8AED, - 4137: 0x8F38, - 4138: 0x552F, - 4139: 0x4F51, - 4140: 0x512A, - 4141: 0x52C7, - 4142: 0x53CB, - 4143: 0x5BA5, - 4144: 0x5E7D, - 4145: 0x60A0, - 4146: 0x6182, - 4147: 0x63D6, - 4148: 0x6709, - 4149: 0x67DA, - 4150: 0x6E67, - 4151: 0x6D8C, - 4152: 0x7336, - 4153: 0x7337, - 4154: 0x7531, - 4155: 0x7950, - 4156: 0x88D5, - 4157: 0x8A98, - 4158: 0x904A, - 4159: 0x9091, - 4160: 0x90F5, - 4161: 0x96C4, - 4162: 0x878D, - 4163: 0x5915, - 4164: 0x4E88, - 4165: 0x4F59, - 4166: 0x4E0E, - 4167: 0x8A89, - 4168: 0x8F3F, - 4169: 0x9810, - 4170: 0x50AD, - 4171: 0x5E7C, - 4172: 0x5996, - 4173: 0x5BB9, - 4174: 0x5EB8, - 4175: 0x63DA, - 4176: 0x63FA, - 4177: 0x64C1, - 4178: 0x66DC, - 4179: 0x694A, - 4180: 0x69D8, - 4181: 0x6D0B, - 4182: 0x6EB6, - 4183: 0x7194, - 4184: 0x7528, - 4185: 0x7AAF, - 4186: 0x7F8A, - 4187: 0x8000, - 4188: 0x8449, - 4189: 0x84C9, - 4190: 0x8981, - 4191: 0x8B21, - 4192: 0x8E0A, - 4193: 0x9065, - 4194: 0x967D, - 4195: 0x990A, - 4196: 0x617E, - 4197: 0x6291, - 4198: 0x6B32, - 4199: 0x6C83, - 4200: 0x6D74, - 4201: 0x7FCC, - 4202: 0x7FFC, - 4203: 0x6DC0, - 4204: 0x7F85, - 4205: 0x87BA, - 4206: 0x88F8, - 4207: 0x6765, - 4208: 0x83B1, - 4209: 0x983C, - 4210: 0x96F7, - 4211: 0x6D1B, - 4212: 0x7D61, - 4213: 0x843D, - 4214: 0x916A, - 4215: 0x4E71, - 4216: 0x5375, - 4217: 0x5D50, - 4218: 0x6B04, - 4219: 0x6FEB, - 4220: 0x85CD, - 4221: 0x862D, - 4222: 0x89A7, - 4223: 0x5229, - 4224: 0x540F, - 4225: 0x5C65, - 4226: 0x674E, - 4227: 0x68A8, - 4228: 0x7406, - 4229: 0x7483, - 4230: 0x75E2, - 4231: 0x88CF, - 4232: 0x88E1, - 4233: 0x91CC, - 4234: 0x96E2, - 4235: 0x9678, - 4236: 0x5F8B, - 4237: 0x7387, - 4238: 0x7ACB, - 4239: 0x844E, - 4240: 0x63A0, - 4241: 0x7565, - 4242: 0x5289, - 4243: 0x6D41, - 4244: 0x6E9C, - 4245: 0x7409, - 4246: 0x7559, - 4247: 0x786B, - 4248: 0x7C92, - 4249: 0x9686, - 4250: 0x7ADC, - 4251: 0x9F8D, - 4252: 0x4FB6, - 4253: 0x616E, - 4254: 0x65C5, - 4255: 0x865C, - 4256: 0x4E86, - 4257: 0x4EAE, - 4258: 0x50DA, - 4259: 0x4E21, - 4260: 0x51CC, - 4261: 0x5BEE, - 4262: 0x6599, - 4263: 0x6881, - 4264: 0x6DBC, - 4265: 0x731F, - 4266: 0x7642, - 4267: 0x77AD, - 4268: 0x7A1C, - 4269: 0x7CE7, - 4270: 0x826F, - 4271: 0x8AD2, - 4272: 0x907C, - 4273: 0x91CF, - 4274: 0x9675, - 4275: 0x9818, - 4276: 0x529B, - 4277: 0x7DD1, - 4278: 0x502B, - 4279: 0x5398, - 4280: 0x6797, - 4281: 0x6DCB, - 4282: 0x71D0, - 4283: 0x7433, - 4284: 0x81E8, - 4285: 0x8F2A, - 4286: 0x96A3, - 4287: 0x9C57, - 4288: 0x9E9F, - 4289: 0x7460, - 4290: 0x5841, - 4291: 0x6D99, - 4292: 0x7D2F, - 4293: 0x985E, - 4294: 0x4EE4, - 4295: 0x4F36, - 4296: 0x4F8B, - 4297: 0x51B7, - 4298: 0x52B1, - 4299: 0x5DBA, - 4300: 0x601C, - 4301: 0x73B2, - 4302: 0x793C, - 4303: 0x82D3, - 4304: 0x9234, - 4305: 0x96B7, - 4306: 0x96F6, - 4307: 0x970A, - 4308: 0x9E97, - 4309: 0x9F62, - 4310: 0x66A6, - 4311: 0x6B74, - 4312: 0x5217, - 4313: 0x52A3, - 4314: 0x70C8, - 4315: 0x88C2, - 4316: 0x5EC9, - 4317: 0x604B, - 4318: 0x6190, - 4319: 0x6F23, - 4320: 0x7149, - 4321: 0x7C3E, - 4322: 0x7DF4, - 4323: 0x806F, - 4324: 0x84EE, - 4325: 0x9023, - 4326: 0x932C, - 4327: 0x5442, - 4328: 0x9B6F, - 4329: 0x6AD3, - 4330: 0x7089, - 4331: 0x8CC2, - 4332: 0x8DEF, - 4333: 0x9732, - 4334: 0x52B4, - 4335: 0x5A41, - 4336: 0x5ECA, - 4337: 0x5F04, - 4338: 0x6717, - 4339: 0x697C, - 4340: 0x6994, - 4341: 0x6D6A, - 4342: 0x6F0F, - 4343: 0x7262, - 4344: 0x72FC, - 4345: 0x7BED, - 4346: 0x8001, - 4347: 0x807E, - 4348: 0x874B, - 4349: 0x90CE, - 4350: 0x516D, - 4351: 0x9E93, - 4352: 0x7984, - 4353: 0x808B, - 4354: 0x9332, - 4355: 0x8AD6, - 4356: 0x502D, - 4357: 0x548C, - 4358: 0x8A71, - 4359: 0x6B6A, - 4360: 0x8CC4, - 4361: 0x8107, - 4362: 0x60D1, - 4363: 0x67A0, - 4364: 0x9DF2, - 4365: 0x4E99, - 4366: 0x4E98, - 4367: 0x9C10, - 4368: 0x8A6B, - 4369: 0x85C1, - 4370: 0x8568, - 4371: 0x6900, - 4372: 0x6E7E, - 4373: 0x7897, - 4374: 0x8155, - 4418: 0x5F0C, - 4419: 0x4E10, - 4420: 0x4E15, - 4421: 0x4E2A, - 4422: 0x4E31, - 4423: 0x4E36, - 4424: 0x4E3C, - 4425: 0x4E3F, - 4426: 0x4E42, - 4427: 0x4E56, - 4428: 0x4E58, - 4429: 0x4E82, - 4430: 0x4E85, - 4431: 0x8C6B, - 4432: 0x4E8A, - 4433: 0x8212, - 4434: 0x5F0D, - 4435: 0x4E8E, - 4436: 0x4E9E, - 4437: 0x4E9F, - 4438: 0x4EA0, - 4439: 0x4EA2, - 4440: 0x4EB0, - 4441: 0x4EB3, - 4442: 0x4EB6, - 4443: 0x4ECE, - 4444: 0x4ECD, - 4445: 0x4EC4, - 4446: 0x4EC6, - 4447: 0x4EC2, - 4448: 0x4ED7, - 4449: 0x4EDE, - 4450: 0x4EED, - 4451: 0x4EDF, - 4452: 0x4EF7, - 4453: 0x4F09, - 4454: 0x4F5A, - 4455: 0x4F30, - 4456: 0x4F5B, - 4457: 0x4F5D, - 4458: 0x4F57, - 4459: 0x4F47, - 4460: 0x4F76, - 4461: 0x4F88, - 4462: 0x4F8F, - 4463: 0x4F98, - 4464: 0x4F7B, - 4465: 0x4F69, - 4466: 0x4F70, - 4467: 0x4F91, - 4468: 0x4F6F, - 4469: 0x4F86, - 4470: 0x4F96, - 4471: 0x5118, - 4472: 0x4FD4, - 4473: 0x4FDF, - 4474: 0x4FCE, - 4475: 0x4FD8, - 4476: 0x4FDB, - 4477: 0x4FD1, - 4478: 0x4FDA, - 4479: 0x4FD0, - 4480: 0x4FE4, - 4481: 0x4FE5, - 4482: 0x501A, - 4483: 0x5028, - 4484: 0x5014, - 4485: 0x502A, - 4486: 0x5025, - 4487: 0x5005, - 4488: 0x4F1C, - 4489: 0x4FF6, - 4490: 0x5021, - 4491: 0x5029, - 4492: 0x502C, - 4493: 0x4FFE, - 4494: 0x4FEF, - 4495: 0x5011, - 4496: 0x5006, - 4497: 0x5043, - 4498: 0x5047, - 4499: 0x6703, - 4500: 0x5055, - 4501: 0x5050, - 4502: 0x5048, - 4503: 0x505A, - 4504: 0x5056, - 4505: 0x506C, - 4506: 0x5078, - 4507: 0x5080, - 4508: 0x509A, - 4509: 0x5085, - 4510: 0x50B4, - 4511: 0x50B2, - 4512: 0x50C9, - 4513: 0x50CA, - 4514: 0x50B3, - 4515: 0x50C2, - 4516: 0x50D6, - 4517: 0x50DE, - 4518: 0x50E5, - 4519: 0x50ED, - 4520: 0x50E3, - 4521: 0x50EE, - 4522: 0x50F9, - 4523: 0x50F5, - 4524: 0x5109, - 4525: 0x5101, - 4526: 0x5102, - 4527: 0x5116, - 4528: 0x5115, - 4529: 0x5114, - 4530: 0x511A, - 4531: 0x5121, - 4532: 0x513A, - 4533: 0x5137, - 4534: 0x513C, - 4535: 0x513B, - 4536: 0x513F, - 4537: 0x5140, - 4538: 0x5152, - 4539: 0x514C, - 4540: 0x5154, - 4541: 0x5162, - 4542: 0x7AF8, - 4543: 0x5169, - 4544: 0x516A, - 4545: 0x516E, - 4546: 0x5180, - 4547: 0x5182, - 4548: 0x56D8, - 4549: 0x518C, - 4550: 0x5189, - 4551: 0x518F, - 4552: 0x5191, - 4553: 0x5193, - 4554: 0x5195, - 4555: 0x5196, - 4556: 0x51A4, - 4557: 0x51A6, - 4558: 0x51A2, - 4559: 0x51A9, - 4560: 0x51AA, - 4561: 0x51AB, - 4562: 0x51B3, - 4563: 0x51B1, - 4564: 0x51B2, - 4565: 0x51B0, - 4566: 0x51B5, - 4567: 0x51BD, - 4568: 0x51C5, - 4569: 0x51C9, - 4570: 0x51DB, - 4571: 0x51E0, - 4572: 0x8655, - 4573: 0x51E9, - 4574: 0x51ED, - 4575: 0x51F0, - 4576: 0x51F5, - 4577: 0x51FE, - 4578: 0x5204, - 4579: 0x520B, - 4580: 0x5214, - 4581: 0x520E, - 4582: 0x5227, - 4583: 0x522A, - 4584: 0x522E, - 4585: 0x5233, - 4586: 0x5239, - 4587: 0x524F, - 4588: 0x5244, - 4589: 0x524B, - 4590: 0x524C, - 4591: 0x525E, - 4592: 0x5254, - 4593: 0x526A, - 4594: 0x5274, - 4595: 0x5269, - 4596: 0x5273, - 4597: 0x527F, - 4598: 0x527D, - 4599: 0x528D, - 4600: 0x5294, - 4601: 0x5292, - 4602: 0x5271, - 4603: 0x5288, - 4604: 0x5291, - 4605: 0x8FA8, - 4606: 0x8FA7, - 4607: 0x52AC, - 4608: 0x52AD, - 4609: 0x52BC, - 4610: 0x52B5, - 4611: 0x52C1, - 4612: 0x52CD, - 4613: 0x52D7, - 4614: 0x52DE, - 4615: 0x52E3, - 4616: 0x52E6, - 4617: 0x98ED, - 4618: 0x52E0, - 4619: 0x52F3, - 4620: 0x52F5, - 4621: 0x52F8, - 4622: 0x52F9, - 4623: 0x5306, - 4624: 0x5308, - 4625: 0x7538, - 4626: 0x530D, - 4627: 0x5310, - 4628: 0x530F, - 4629: 0x5315, - 4630: 0x531A, - 4631: 0x5323, - 4632: 0x532F, - 4633: 0x5331, - 4634: 0x5333, - 4635: 0x5338, - 4636: 0x5340, - 4637: 0x5346, - 4638: 0x5345, - 4639: 0x4E17, - 4640: 0x5349, - 4641: 0x534D, - 4642: 0x51D6, - 4643: 0x535E, - 4644: 0x5369, - 4645: 0x536E, - 4646: 0x5918, - 4647: 0x537B, - 4648: 0x5377, - 4649: 0x5382, - 4650: 0x5396, - 4651: 0x53A0, - 4652: 0x53A6, - 4653: 0x53A5, - 4654: 0x53AE, - 4655: 0x53B0, - 4656: 0x53B6, - 4657: 0x53C3, - 4658: 0x7C12, - 4659: 0x96D9, - 4660: 0x53DF, - 4661: 0x66FC, - 4662: 0x71EE, - 4663: 0x53EE, - 4664: 0x53E8, - 4665: 0x53ED, - 4666: 0x53FA, - 4667: 0x5401, - 4668: 0x543D, - 4669: 0x5440, - 4670: 0x542C, - 4671: 0x542D, - 4672: 0x543C, - 4673: 0x542E, - 4674: 0x5436, - 4675: 0x5429, - 4676: 0x541D, - 4677: 0x544E, - 4678: 0x548F, - 4679: 0x5475, - 4680: 0x548E, - 4681: 0x545F, - 4682: 0x5471, - 4683: 0x5477, - 4684: 0x5470, - 4685: 0x5492, - 4686: 0x547B, - 4687: 0x5480, - 4688: 0x5476, - 4689: 0x5484, - 4690: 0x5490, - 4691: 0x5486, - 4692: 0x54C7, - 4693: 0x54A2, - 4694: 0x54B8, - 4695: 0x54A5, - 4696: 0x54AC, - 4697: 0x54C4, - 4698: 0x54C8, - 4699: 0x54A8, - 4700: 0x54AB, - 4701: 0x54C2, - 4702: 0x54A4, - 4703: 0x54BE, - 4704: 0x54BC, - 4705: 0x54D8, - 4706: 0x54E5, - 4707: 0x54E6, - 4708: 0x550F, - 4709: 0x5514, - 4710: 0x54FD, - 4711: 0x54EE, - 4712: 0x54ED, - 4713: 0x54FA, - 4714: 0x54E2, - 4715: 0x5539, - 4716: 0x5540, - 4717: 0x5563, - 4718: 0x554C, - 4719: 0x552E, - 4720: 0x555C, - 4721: 0x5545, - 4722: 0x5556, - 4723: 0x5557, - 4724: 0x5538, - 4725: 0x5533, - 4726: 0x555D, - 4727: 0x5599, - 4728: 0x5580, - 4729: 0x54AF, - 4730: 0x558A, - 4731: 0x559F, - 4732: 0x557B, - 4733: 0x557E, - 4734: 0x5598, - 4735: 0x559E, - 4736: 0x55AE, - 4737: 0x557C, - 4738: 0x5583, - 4739: 0x55A9, - 4740: 0x5587, - 4741: 0x55A8, - 4742: 0x55DA, - 4743: 0x55C5, - 4744: 0x55DF, - 4745: 0x55C4, - 4746: 0x55DC, - 4747: 0x55E4, - 4748: 0x55D4, - 4749: 0x5614, - 4750: 0x55F7, - 4751: 0x5616, - 4752: 0x55FE, - 4753: 0x55FD, - 4754: 0x561B, - 4755: 0x55F9, - 4756: 0x564E, - 4757: 0x5650, - 4758: 0x71DF, - 4759: 0x5634, - 4760: 0x5636, - 4761: 0x5632, - 4762: 0x5638, - 4763: 0x566B, - 4764: 0x5664, - 4765: 0x562F, - 4766: 0x566C, - 4767: 0x566A, - 4768: 0x5686, - 4769: 0x5680, - 4770: 0x568A, - 4771: 0x56A0, - 4772: 0x5694, - 4773: 0x568F, - 4774: 0x56A5, - 4775: 0x56AE, - 4776: 0x56B6, - 4777: 0x56B4, - 4778: 0x56C2, - 4779: 0x56BC, - 4780: 0x56C1, - 4781: 0x56C3, - 4782: 0x56C0, - 4783: 0x56C8, - 4784: 0x56CE, - 4785: 0x56D1, - 4786: 0x56D3, - 4787: 0x56D7, - 4788: 0x56EE, - 4789: 0x56F9, - 4790: 0x5700, - 4791: 0x56FF, - 4792: 0x5704, - 4793: 0x5709, - 4794: 0x5708, - 4795: 0x570B, - 4796: 0x570D, - 4797: 0x5713, - 4798: 0x5718, - 4799: 0x5716, - 4800: 0x55C7, - 4801: 0x571C, - 4802: 0x5726, - 4803: 0x5737, - 4804: 0x5738, - 4805: 0x574E, - 4806: 0x573B, - 4807: 0x5740, - 4808: 0x574F, - 4809: 0x5769, - 4810: 0x57C0, - 4811: 0x5788, - 4812: 0x5761, - 4813: 0x577F, - 4814: 0x5789, - 4815: 0x5793, - 4816: 0x57A0, - 4817: 0x57B3, - 4818: 0x57A4, - 4819: 0x57AA, - 4820: 0x57B0, - 4821: 0x57C3, - 4822: 0x57C6, - 4823: 0x57D4, - 4824: 0x57D2, - 4825: 0x57D3, - 4826: 0x580A, - 4827: 0x57D6, - 4828: 0x57E3, - 4829: 0x580B, - 4830: 0x5819, - 4831: 0x581D, - 4832: 0x5872, - 4833: 0x5821, - 4834: 0x5862, - 4835: 0x584B, - 4836: 0x5870, - 4837: 0x6BC0, - 4838: 0x5852, - 4839: 0x583D, - 4840: 0x5879, - 4841: 0x5885, - 4842: 0x58B9, - 4843: 0x589F, - 4844: 0x58AB, - 4845: 0x58BA, - 4846: 0x58DE, - 4847: 0x58BB, - 4848: 0x58B8, - 4849: 0x58AE, - 4850: 0x58C5, - 4851: 0x58D3, - 4852: 0x58D1, - 4853: 0x58D7, - 4854: 0x58D9, - 4855: 0x58D8, - 4856: 0x58E5, - 4857: 0x58DC, - 4858: 0x58E4, - 4859: 0x58DF, - 4860: 0x58EF, - 4861: 0x58FA, - 4862: 0x58F9, - 4863: 0x58FB, - 4864: 0x58FC, - 4865: 0x58FD, - 4866: 0x5902, - 4867: 0x590A, - 4868: 0x5910, - 4869: 0x591B, - 4870: 0x68A6, - 4871: 0x5925, - 4872: 0x592C, - 4873: 0x592D, - 4874: 0x5932, - 4875: 0x5938, - 4876: 0x593E, - 4877: 0x7AD2, - 4878: 0x5955, - 4879: 0x5950, - 4880: 0x594E, - 4881: 0x595A, - 4882: 0x5958, - 4883: 0x5962, - 4884: 0x5960, - 4885: 0x5967, - 4886: 0x596C, - 4887: 0x5969, - 4888: 0x5978, - 4889: 0x5981, - 4890: 0x599D, - 4891: 0x4F5E, - 4892: 0x4FAB, - 4893: 0x59A3, - 4894: 0x59B2, - 4895: 0x59C6, - 4896: 0x59E8, - 4897: 0x59DC, - 4898: 0x598D, - 4899: 0x59D9, - 4900: 0x59DA, - 4901: 0x5A25, - 4902: 0x5A1F, - 4903: 0x5A11, - 4904: 0x5A1C, - 4905: 0x5A09, - 4906: 0x5A1A, - 4907: 0x5A40, - 4908: 0x5A6C, - 4909: 0x5A49, - 4910: 0x5A35, - 4911: 0x5A36, - 4912: 0x5A62, - 4913: 0x5A6A, - 4914: 0x5A9A, - 4915: 0x5ABC, - 4916: 0x5ABE, - 4917: 0x5ACB, - 4918: 0x5AC2, - 4919: 0x5ABD, - 4920: 0x5AE3, - 4921: 0x5AD7, - 4922: 0x5AE6, - 4923: 0x5AE9, - 4924: 0x5AD6, - 4925: 0x5AFA, - 4926: 0x5AFB, - 4927: 0x5B0C, - 4928: 0x5B0B, - 4929: 0x5B16, - 4930: 0x5B32, - 4931: 0x5AD0, - 4932: 0x5B2A, - 4933: 0x5B36, - 4934: 0x5B3E, - 4935: 0x5B43, - 4936: 0x5B45, - 4937: 0x5B40, - 4938: 0x5B51, - 4939: 0x5B55, - 4940: 0x5B5A, - 4941: 0x5B5B, - 4942: 0x5B65, - 4943: 0x5B69, - 4944: 0x5B70, - 4945: 0x5B73, - 4946: 0x5B75, - 4947: 0x5B78, - 4948: 0x6588, - 4949: 0x5B7A, - 4950: 0x5B80, - 4951: 0x5B83, - 4952: 0x5BA6, - 4953: 0x5BB8, - 4954: 0x5BC3, - 4955: 0x5BC7, - 4956: 0x5BC9, - 4957: 0x5BD4, - 4958: 0x5BD0, - 4959: 0x5BE4, - 4960: 0x5BE6, - 4961: 0x5BE2, - 4962: 0x5BDE, - 4963: 0x5BE5, - 4964: 0x5BEB, - 4965: 0x5BF0, - 4966: 0x5BF6, - 4967: 0x5BF3, - 4968: 0x5C05, - 4969: 0x5C07, - 4970: 0x5C08, - 4971: 0x5C0D, - 4972: 0x5C13, - 4973: 0x5C20, - 4974: 0x5C22, - 4975: 0x5C28, - 4976: 0x5C38, - 4977: 0x5C39, - 4978: 0x5C41, - 4979: 0x5C46, - 4980: 0x5C4E, - 4981: 0x5C53, - 4982: 0x5C50, - 4983: 0x5C4F, - 4984: 0x5B71, - 4985: 0x5C6C, - 4986: 0x5C6E, - 4987: 0x4E62, - 4988: 0x5C76, - 4989: 0x5C79, - 4990: 0x5C8C, - 4991: 0x5C91, - 4992: 0x5C94, - 4993: 0x599B, - 4994: 0x5CAB, - 4995: 0x5CBB, - 4996: 0x5CB6, - 4997: 0x5CBC, - 4998: 0x5CB7, - 4999: 0x5CC5, - 5000: 0x5CBE, - 5001: 0x5CC7, - 5002: 0x5CD9, - 5003: 0x5CE9, - 5004: 0x5CFD, - 5005: 0x5CFA, - 5006: 0x5CED, - 5007: 0x5D8C, - 5008: 0x5CEA, - 5009: 0x5D0B, - 5010: 0x5D15, - 5011: 0x5D17, - 5012: 0x5D5C, - 5013: 0x5D1F, - 5014: 0x5D1B, - 5015: 0x5D11, - 5016: 0x5D14, - 5017: 0x5D22, - 5018: 0x5D1A, - 5019: 0x5D19, - 5020: 0x5D18, - 5021: 0x5D4C, - 5022: 0x5D52, - 5023: 0x5D4E, - 5024: 0x5D4B, - 5025: 0x5D6C, - 5026: 0x5D73, - 5027: 0x5D76, - 5028: 0x5D87, - 5029: 0x5D84, - 5030: 0x5D82, - 5031: 0x5DA2, - 5032: 0x5D9D, - 5033: 0x5DAC, - 5034: 0x5DAE, - 5035: 0x5DBD, - 5036: 0x5D90, - 5037: 0x5DB7, - 5038: 0x5DBC, - 5039: 0x5DC9, - 5040: 0x5DCD, - 5041: 0x5DD3, - 5042: 0x5DD2, - 5043: 0x5DD6, - 5044: 0x5DDB, - 5045: 0x5DEB, - 5046: 0x5DF2, - 5047: 0x5DF5, - 5048: 0x5E0B, - 5049: 0x5E1A, - 5050: 0x5E19, - 5051: 0x5E11, - 5052: 0x5E1B, - 5053: 0x5E36, - 5054: 0x5E37, - 5055: 0x5E44, - 5056: 0x5E43, - 5057: 0x5E40, - 5058: 0x5E4E, - 5059: 0x5E57, - 5060: 0x5E54, - 5061: 0x5E5F, - 5062: 0x5E62, - 5063: 0x5E64, - 5064: 0x5E47, - 5065: 0x5E75, - 5066: 0x5E76, - 5067: 0x5E7A, - 5068: 0x9EBC, - 5069: 0x5E7F, - 5070: 0x5EA0, - 5071: 0x5EC1, - 5072: 0x5EC2, - 5073: 0x5EC8, - 5074: 0x5ED0, - 5075: 0x5ECF, - 5076: 0x5ED6, - 5077: 0x5EE3, - 5078: 0x5EDD, - 5079: 0x5EDA, - 5080: 0x5EDB, - 5081: 0x5EE2, - 5082: 0x5EE1, - 5083: 0x5EE8, - 5084: 0x5EE9, - 5085: 0x5EEC, - 5086: 0x5EF1, - 5087: 0x5EF3, - 5088: 0x5EF0, - 5089: 0x5EF4, - 5090: 0x5EF8, - 5091: 0x5EFE, - 5092: 0x5F03, - 5093: 0x5F09, - 5094: 0x5F5D, - 5095: 0x5F5C, - 5096: 0x5F0B, - 5097: 0x5F11, - 5098: 0x5F16, - 5099: 0x5F29, - 5100: 0x5F2D, - 5101: 0x5F38, - 5102: 0x5F41, - 5103: 0x5F48, - 5104: 0x5F4C, - 5105: 0x5F4E, - 5106: 0x5F2F, - 5107: 0x5F51, - 5108: 0x5F56, - 5109: 0x5F57, - 5110: 0x5F59, - 5111: 0x5F61, - 5112: 0x5F6D, - 5113: 0x5F73, - 5114: 0x5F77, - 5115: 0x5F83, - 5116: 0x5F82, - 5117: 0x5F7F, - 5118: 0x5F8A, - 5119: 0x5F88, - 5120: 0x5F91, - 5121: 0x5F87, - 5122: 0x5F9E, - 5123: 0x5F99, - 5124: 0x5F98, - 5125: 0x5FA0, - 5126: 0x5FA8, - 5127: 0x5FAD, - 5128: 0x5FBC, - 5129: 0x5FD6, - 5130: 0x5FFB, - 5131: 0x5FE4, - 5132: 0x5FF8, - 5133: 0x5FF1, - 5134: 0x5FDD, - 5135: 0x60B3, - 5136: 0x5FFF, - 5137: 0x6021, - 5138: 0x6060, - 5139: 0x6019, - 5140: 0x6010, - 5141: 0x6029, - 5142: 0x600E, - 5143: 0x6031, - 5144: 0x601B, - 5145: 0x6015, - 5146: 0x602B, - 5147: 0x6026, - 5148: 0x600F, - 5149: 0x603A, - 5150: 0x605A, - 5151: 0x6041, - 5152: 0x606A, - 5153: 0x6077, - 5154: 0x605F, - 5155: 0x604A, - 5156: 0x6046, - 5157: 0x604D, - 5158: 0x6063, - 5159: 0x6043, - 5160: 0x6064, - 5161: 0x6042, - 5162: 0x606C, - 5163: 0x606B, - 5164: 0x6059, - 5165: 0x6081, - 5166: 0x608D, - 5167: 0x60E7, - 5168: 0x6083, - 5169: 0x609A, - 5170: 0x6084, - 5171: 0x609B, - 5172: 0x6096, - 5173: 0x6097, - 5174: 0x6092, - 5175: 0x60A7, - 5176: 0x608B, - 5177: 0x60E1, - 5178: 0x60B8, - 5179: 0x60E0, - 5180: 0x60D3, - 5181: 0x60B4, - 5182: 0x5FF0, - 5183: 0x60BD, - 5184: 0x60C6, - 5185: 0x60B5, - 5186: 0x60D8, - 5187: 0x614D, - 5188: 0x6115, - 5189: 0x6106, - 5190: 0x60F6, - 5191: 0x60F7, - 5192: 0x6100, - 5193: 0x60F4, - 5194: 0x60FA, - 5195: 0x6103, - 5196: 0x6121, - 5197: 0x60FB, - 5198: 0x60F1, - 5199: 0x610D, - 5200: 0x610E, - 5201: 0x6147, - 5202: 0x613E, - 5203: 0x6128, - 5204: 0x6127, - 5205: 0x614A, - 5206: 0x613F, - 5207: 0x613C, - 5208: 0x612C, - 5209: 0x6134, - 5210: 0x613D, - 5211: 0x6142, - 5212: 0x6144, - 5213: 0x6173, - 5214: 0x6177, - 5215: 0x6158, - 5216: 0x6159, - 5217: 0x615A, - 5218: 0x616B, - 5219: 0x6174, - 5220: 0x616F, - 5221: 0x6165, - 5222: 0x6171, - 5223: 0x615F, - 5224: 0x615D, - 5225: 0x6153, - 5226: 0x6175, - 5227: 0x6199, - 5228: 0x6196, - 5229: 0x6187, - 5230: 0x61AC, - 5231: 0x6194, - 5232: 0x619A, - 5233: 0x618A, - 5234: 0x6191, - 5235: 0x61AB, - 5236: 0x61AE, - 5237: 0x61CC, - 5238: 0x61CA, - 5239: 0x61C9, - 5240: 0x61F7, - 5241: 0x61C8, - 5242: 0x61C3, - 5243: 0x61C6, - 5244: 0x61BA, - 5245: 0x61CB, - 5246: 0x7F79, - 5247: 0x61CD, - 5248: 0x61E6, - 5249: 0x61E3, - 5250: 0x61F6, - 5251: 0x61FA, - 5252: 0x61F4, - 5253: 0x61FF, - 5254: 0x61FD, - 5255: 0x61FC, - 5256: 0x61FE, - 5257: 0x6200, - 5258: 0x6208, - 5259: 0x6209, - 5260: 0x620D, - 5261: 0x620C, - 5262: 0x6214, - 5263: 0x621B, - 5264: 0x621E, - 5265: 0x6221, - 5266: 0x622A, - 5267: 0x622E, - 5268: 0x6230, - 5269: 0x6232, - 5270: 0x6233, - 5271: 0x6241, - 5272: 0x624E, - 5273: 0x625E, - 5274: 0x6263, - 5275: 0x625B, - 5276: 0x6260, - 5277: 0x6268, - 5278: 0x627C, - 5279: 0x6282, - 5280: 0x6289, - 5281: 0x627E, - 5282: 0x6292, - 5283: 0x6293, - 5284: 0x6296, - 5285: 0x62D4, - 5286: 0x6283, - 5287: 0x6294, - 5288: 0x62D7, - 5289: 0x62D1, - 5290: 0x62BB, - 5291: 0x62CF, - 5292: 0x62FF, - 5293: 0x62C6, - 5294: 0x64D4, - 5295: 0x62C8, - 5296: 0x62DC, - 5297: 0x62CC, - 5298: 0x62CA, - 5299: 0x62C2, - 5300: 0x62C7, - 5301: 0x629B, - 5302: 0x62C9, - 5303: 0x630C, - 5304: 0x62EE, - 5305: 0x62F1, - 5306: 0x6327, - 5307: 0x6302, - 5308: 0x6308, - 5309: 0x62EF, - 5310: 0x62F5, - 5311: 0x6350, - 5312: 0x633E, - 5313: 0x634D, - 5314: 0x641C, - 5315: 0x634F, - 5316: 0x6396, - 5317: 0x638E, - 5318: 0x6380, - 5319: 0x63AB, - 5320: 0x6376, - 5321: 0x63A3, - 5322: 0x638F, - 5323: 0x6389, - 5324: 0x639F, - 5325: 0x63B5, - 5326: 0x636B, - 5327: 0x6369, - 5328: 0x63BE, - 5329: 0x63E9, - 5330: 0x63C0, - 5331: 0x63C6, - 5332: 0x63E3, - 5333: 0x63C9, - 5334: 0x63D2, - 5335: 0x63F6, - 5336: 0x63C4, - 5337: 0x6416, - 5338: 0x6434, - 5339: 0x6406, - 5340: 0x6413, - 5341: 0x6426, - 5342: 0x6436, - 5343: 0x651D, - 5344: 0x6417, - 5345: 0x6428, - 5346: 0x640F, - 5347: 0x6467, - 5348: 0x646F, - 5349: 0x6476, - 5350: 0x644E, - 5351: 0x652A, - 5352: 0x6495, - 5353: 0x6493, - 5354: 0x64A5, - 5355: 0x64A9, - 5356: 0x6488, - 5357: 0x64BC, - 5358: 0x64DA, - 5359: 0x64D2, - 5360: 0x64C5, - 5361: 0x64C7, - 5362: 0x64BB, - 5363: 0x64D8, - 5364: 0x64C2, - 5365: 0x64F1, - 5366: 0x64E7, - 5367: 0x8209, - 5368: 0x64E0, - 5369: 0x64E1, - 5370: 0x62AC, - 5371: 0x64E3, - 5372: 0x64EF, - 5373: 0x652C, - 5374: 0x64F6, - 5375: 0x64F4, - 5376: 0x64F2, - 5377: 0x64FA, - 5378: 0x6500, - 5379: 0x64FD, - 5380: 0x6518, - 5381: 0x651C, - 5382: 0x6505, - 5383: 0x6524, - 5384: 0x6523, - 5385: 0x652B, - 5386: 0x6534, - 5387: 0x6535, - 5388: 0x6537, - 5389: 0x6536, - 5390: 0x6538, - 5391: 0x754B, - 5392: 0x6548, - 5393: 0x6556, - 5394: 0x6555, - 5395: 0x654D, - 5396: 0x6558, - 5397: 0x655E, - 5398: 0x655D, - 5399: 0x6572, - 5400: 0x6578, - 5401: 0x6582, - 5402: 0x6583, - 5403: 0x8B8A, - 5404: 0x659B, - 5405: 0x659F, - 5406: 0x65AB, - 5407: 0x65B7, - 5408: 0x65C3, - 5409: 0x65C6, - 5410: 0x65C1, - 5411: 0x65C4, - 5412: 0x65CC, - 5413: 0x65D2, - 5414: 0x65DB, - 5415: 0x65D9, - 5416: 0x65E0, - 5417: 0x65E1, - 5418: 0x65F1, - 5419: 0x6772, - 5420: 0x660A, - 5421: 0x6603, - 5422: 0x65FB, - 5423: 0x6773, - 5424: 0x6635, - 5425: 0x6636, - 5426: 0x6634, - 5427: 0x661C, - 5428: 0x664F, - 5429: 0x6644, - 5430: 0x6649, - 5431: 0x6641, - 5432: 0x665E, - 5433: 0x665D, - 5434: 0x6664, - 5435: 0x6667, - 5436: 0x6668, - 5437: 0x665F, - 5438: 0x6662, - 5439: 0x6670, - 5440: 0x6683, - 5441: 0x6688, - 5442: 0x668E, - 5443: 0x6689, - 5444: 0x6684, - 5445: 0x6698, - 5446: 0x669D, - 5447: 0x66C1, - 5448: 0x66B9, - 5449: 0x66C9, - 5450: 0x66BE, - 5451: 0x66BC, - 5452: 0x66C4, - 5453: 0x66B8, - 5454: 0x66D6, - 5455: 0x66DA, - 5456: 0x66E0, - 5457: 0x663F, - 5458: 0x66E6, - 5459: 0x66E9, - 5460: 0x66F0, - 5461: 0x66F5, - 5462: 0x66F7, - 5463: 0x670F, - 5464: 0x6716, - 5465: 0x671E, - 5466: 0x6726, - 5467: 0x6727, - 5468: 0x9738, - 5469: 0x672E, - 5470: 0x673F, - 5471: 0x6736, - 5472: 0x6741, - 5473: 0x6738, - 5474: 0x6737, - 5475: 0x6746, - 5476: 0x675E, - 5477: 0x6760, - 5478: 0x6759, - 5479: 0x6763, - 5480: 0x6764, - 5481: 0x6789, - 5482: 0x6770, - 5483: 0x67A9, - 5484: 0x677C, - 5485: 0x676A, - 5486: 0x678C, - 5487: 0x678B, - 5488: 0x67A6, - 5489: 0x67A1, - 5490: 0x6785, - 5491: 0x67B7, - 5492: 0x67EF, - 5493: 0x67B4, - 5494: 0x67EC, - 5495: 0x67B3, - 5496: 0x67E9, - 5497: 0x67B8, - 5498: 0x67E4, - 5499: 0x67DE, - 5500: 0x67DD, - 5501: 0x67E2, - 5502: 0x67EE, - 5503: 0x67B9, - 5504: 0x67CE, - 5505: 0x67C6, - 5506: 0x67E7, - 5507: 0x6A9C, - 5508: 0x681E, - 5509: 0x6846, - 5510: 0x6829, - 5511: 0x6840, - 5512: 0x684D, - 5513: 0x6832, - 5514: 0x684E, - 5515: 0x68B3, - 5516: 0x682B, - 5517: 0x6859, - 5518: 0x6863, - 5519: 0x6877, - 5520: 0x687F, - 5521: 0x689F, - 5522: 0x688F, - 5523: 0x68AD, - 5524: 0x6894, - 5525: 0x689D, - 5526: 0x689B, - 5527: 0x6883, - 5528: 0x6AAE, - 5529: 0x68B9, - 5530: 0x6874, - 5531: 0x68B5, - 5532: 0x68A0, - 5533: 0x68BA, - 5534: 0x690F, - 5535: 0x688D, - 5536: 0x687E, - 5537: 0x6901, - 5538: 0x68CA, - 5539: 0x6908, - 5540: 0x68D8, - 5541: 0x6922, - 5542: 0x6926, - 5543: 0x68E1, - 5544: 0x690C, - 5545: 0x68CD, - 5546: 0x68D4, - 5547: 0x68E7, - 5548: 0x68D5, - 5549: 0x6936, - 5550: 0x6912, - 5551: 0x6904, - 5552: 0x68D7, - 5553: 0x68E3, - 5554: 0x6925, - 5555: 0x68F9, - 5556: 0x68E0, - 5557: 0x68EF, - 5558: 0x6928, - 5559: 0x692A, - 5560: 0x691A, - 5561: 0x6923, - 5562: 0x6921, - 5563: 0x68C6, - 5564: 0x6979, - 5565: 0x6977, - 5566: 0x695C, - 5567: 0x6978, - 5568: 0x696B, - 5569: 0x6954, - 5570: 0x697E, - 5571: 0x696E, - 5572: 0x6939, - 5573: 0x6974, - 5574: 0x693D, - 5575: 0x6959, - 5576: 0x6930, - 5577: 0x6961, - 5578: 0x695E, - 5579: 0x695D, - 5580: 0x6981, - 5581: 0x696A, - 5582: 0x69B2, - 5583: 0x69AE, - 5584: 0x69D0, - 5585: 0x69BF, - 5586: 0x69C1, - 5587: 0x69D3, - 5588: 0x69BE, - 5589: 0x69CE, - 5590: 0x5BE8, - 5591: 0x69CA, - 5592: 0x69DD, - 5593: 0x69BB, - 5594: 0x69C3, - 5595: 0x69A7, - 5596: 0x6A2E, - 5597: 0x6991, - 5598: 0x69A0, - 5599: 0x699C, - 5600: 0x6995, - 5601: 0x69B4, - 5602: 0x69DE, - 5603: 0x69E8, - 5604: 0x6A02, - 5605: 0x6A1B, - 5606: 0x69FF, - 5607: 0x6B0A, - 5608: 0x69F9, - 5609: 0x69F2, - 5610: 0x69E7, - 5611: 0x6A05, - 5612: 0x69B1, - 5613: 0x6A1E, - 5614: 0x69ED, - 5615: 0x6A14, - 5616: 0x69EB, - 5617: 0x6A0A, - 5618: 0x6A12, - 5619: 0x6AC1, - 5620: 0x6A23, - 5621: 0x6A13, - 5622: 0x6A44, - 5623: 0x6A0C, - 5624: 0x6A72, - 5625: 0x6A36, - 5626: 0x6A78, - 5627: 0x6A47, - 5628: 0x6A62, - 5629: 0x6A59, - 5630: 0x6A66, - 5631: 0x6A48, - 5632: 0x6A38, - 5633: 0x6A22, - 5634: 0x6A90, - 5635: 0x6A8D, - 5636: 0x6AA0, - 5637: 0x6A84, - 5638: 0x6AA2, - 5639: 0x6AA3, - 5640: 0x6A97, - 5641: 0x8617, - 5642: 0x6ABB, - 5643: 0x6AC3, - 5644: 0x6AC2, - 5645: 0x6AB8, - 5646: 0x6AB3, - 5647: 0x6AAC, - 5648: 0x6ADE, - 5649: 0x6AD1, - 5650: 0x6ADF, - 5651: 0x6AAA, - 5652: 0x6ADA, - 5653: 0x6AEA, - 5654: 0x6AFB, - 5655: 0x6B05, - 5656: 0x8616, - 5657: 0x6AFA, - 5658: 0x6B12, - 5659: 0x6B16, - 5660: 0x9B31, - 5661: 0x6B1F, - 5662: 0x6B38, - 5663: 0x6B37, - 5664: 0x76DC, - 5665: 0x6B39, - 5666: 0x98EE, - 5667: 0x6B47, - 5668: 0x6B43, - 5669: 0x6B49, - 5670: 0x6B50, - 5671: 0x6B59, - 5672: 0x6B54, - 5673: 0x6B5B, - 5674: 0x6B5F, - 5675: 0x6B61, - 5676: 0x6B78, - 5677: 0x6B79, - 5678: 0x6B7F, - 5679: 0x6B80, - 5680: 0x6B84, - 5681: 0x6B83, - 5682: 0x6B8D, - 5683: 0x6B98, - 5684: 0x6B95, - 5685: 0x6B9E, - 5686: 0x6BA4, - 5687: 0x6BAA, - 5688: 0x6BAB, - 5689: 0x6BAF, - 5690: 0x6BB2, - 5691: 0x6BB1, - 5692: 0x6BB3, - 5693: 0x6BB7, - 5694: 0x6BBC, - 5695: 0x6BC6, - 5696: 0x6BCB, - 5697: 0x6BD3, - 5698: 0x6BDF, - 5699: 0x6BEC, - 5700: 0x6BEB, - 5701: 0x6BF3, - 5702: 0x6BEF, - 5703: 0x9EBE, - 5704: 0x6C08, - 5705: 0x6C13, - 5706: 0x6C14, - 5707: 0x6C1B, - 5708: 0x6C24, - 5709: 0x6C23, - 5710: 0x6C5E, - 5711: 0x6C55, - 5712: 0x6C62, - 5713: 0x6C6A, - 5714: 0x6C82, - 5715: 0x6C8D, - 5716: 0x6C9A, - 5717: 0x6C81, - 5718: 0x6C9B, - 5719: 0x6C7E, - 5720: 0x6C68, - 5721: 0x6C73, - 5722: 0x6C92, - 5723: 0x6C90, - 5724: 0x6CC4, - 5725: 0x6CF1, - 5726: 0x6CD3, - 5727: 0x6CBD, - 5728: 0x6CD7, - 5729: 0x6CC5, - 5730: 0x6CDD, - 5731: 0x6CAE, - 5732: 0x6CB1, - 5733: 0x6CBE, - 5734: 0x6CBA, - 5735: 0x6CDB, - 5736: 0x6CEF, - 5737: 0x6CD9, - 5738: 0x6CEA, - 5739: 0x6D1F, - 5740: 0x884D, - 5741: 0x6D36, - 5742: 0x6D2B, - 5743: 0x6D3D, - 5744: 0x6D38, - 5745: 0x6D19, - 5746: 0x6D35, - 5747: 0x6D33, - 5748: 0x6D12, - 5749: 0x6D0C, - 5750: 0x6D63, - 5751: 0x6D93, - 5752: 0x6D64, - 5753: 0x6D5A, - 5754: 0x6D79, - 5755: 0x6D59, - 5756: 0x6D8E, - 5757: 0x6D95, - 5758: 0x6FE4, - 5759: 0x6D85, - 5760: 0x6DF9, - 5761: 0x6E15, - 5762: 0x6E0A, - 5763: 0x6DB5, - 5764: 0x6DC7, - 5765: 0x6DE6, - 5766: 0x6DB8, - 5767: 0x6DC6, - 5768: 0x6DEC, - 5769: 0x6DDE, - 5770: 0x6DCC, - 5771: 0x6DE8, - 5772: 0x6DD2, - 5773: 0x6DC5, - 5774: 0x6DFA, - 5775: 0x6DD9, - 5776: 0x6DE4, - 5777: 0x6DD5, - 5778: 0x6DEA, - 5779: 0x6DEE, - 5780: 0x6E2D, - 5781: 0x6E6E, - 5782: 0x6E2E, - 5783: 0x6E19, - 5784: 0x6E72, - 5785: 0x6E5F, - 5786: 0x6E3E, - 5787: 0x6E23, - 5788: 0x6E6B, - 5789: 0x6E2B, - 5790: 0x6E76, - 5791: 0x6E4D, - 5792: 0x6E1F, - 5793: 0x6E43, - 5794: 0x6E3A, - 5795: 0x6E4E, - 5796: 0x6E24, - 5797: 0x6EFF, - 5798: 0x6E1D, - 5799: 0x6E38, - 5800: 0x6E82, - 5801: 0x6EAA, - 5802: 0x6E98, - 5803: 0x6EC9, - 5804: 0x6EB7, - 5805: 0x6ED3, - 5806: 0x6EBD, - 5807: 0x6EAF, - 5808: 0x6EC4, - 5809: 0x6EB2, - 5810: 0x6ED4, - 5811: 0x6ED5, - 5812: 0x6E8F, - 5813: 0x6EA5, - 5814: 0x6EC2, - 5815: 0x6E9F, - 5816: 0x6F41, - 5817: 0x6F11, - 5818: 0x704C, - 5819: 0x6EEC, - 5820: 0x6EF8, - 5821: 0x6EFE, - 5822: 0x6F3F, - 5823: 0x6EF2, - 5824: 0x6F31, - 5825: 0x6EEF, - 5826: 0x6F32, - 5827: 0x6ECC, - 5828: 0x6F3E, - 5829: 0x6F13, - 5830: 0x6EF7, - 5831: 0x6F86, - 5832: 0x6F7A, - 5833: 0x6F78, - 5834: 0x6F81, - 5835: 0x6F80, - 5836: 0x6F6F, - 5837: 0x6F5B, - 5838: 0x6FF3, - 5839: 0x6F6D, - 5840: 0x6F82, - 5841: 0x6F7C, - 5842: 0x6F58, - 5843: 0x6F8E, - 5844: 0x6F91, - 5845: 0x6FC2, - 5846: 0x6F66, - 5847: 0x6FB3, - 5848: 0x6FA3, - 5849: 0x6FA1, - 5850: 0x6FA4, - 5851: 0x6FB9, - 5852: 0x6FC6, - 5853: 0x6FAA, - 5854: 0x6FDF, - 5855: 0x6FD5, - 5856: 0x6FEC, - 5857: 0x6FD4, - 5858: 0x6FD8, - 5859: 0x6FF1, - 5860: 0x6FEE, - 5861: 0x6FDB, - 5862: 0x7009, - 5863: 0x700B, - 5864: 0x6FFA, - 5865: 0x7011, - 5866: 0x7001, - 5867: 0x700F, - 5868: 0x6FFE, - 5869: 0x701B, - 5870: 0x701A, - 5871: 0x6F74, - 5872: 0x701D, - 5873: 0x7018, - 5874: 0x701F, - 5875: 0x7030, - 5876: 0x703E, - 5877: 0x7032, - 5878: 0x7051, - 5879: 0x7063, - 5880: 0x7099, - 5881: 0x7092, - 5882: 0x70AF, - 5883: 0x70F1, - 5884: 0x70AC, - 5885: 0x70B8, - 5886: 0x70B3, - 5887: 0x70AE, - 5888: 0x70DF, - 5889: 0x70CB, - 5890: 0x70DD, - 5891: 0x70D9, - 5892: 0x7109, - 5893: 0x70FD, - 5894: 0x711C, - 5895: 0x7119, - 5896: 0x7165, - 5897: 0x7155, - 5898: 0x7188, - 5899: 0x7166, - 5900: 0x7162, - 5901: 0x714C, - 5902: 0x7156, - 5903: 0x716C, - 5904: 0x718F, - 5905: 0x71FB, - 5906: 0x7184, - 5907: 0x7195, - 5908: 0x71A8, - 5909: 0x71AC, - 5910: 0x71D7, - 5911: 0x71B9, - 5912: 0x71BE, - 5913: 0x71D2, - 5914: 0x71C9, - 5915: 0x71D4, - 5916: 0x71CE, - 5917: 0x71E0, - 5918: 0x71EC, - 5919: 0x71E7, - 5920: 0x71F5, - 5921: 0x71FC, - 5922: 0x71F9, - 5923: 0x71FF, - 5924: 0x720D, - 5925: 0x7210, - 5926: 0x721B, - 5927: 0x7228, - 5928: 0x722D, - 5929: 0x722C, - 5930: 0x7230, - 5931: 0x7232, - 5932: 0x723B, - 5933: 0x723C, - 5934: 0x723F, - 5935: 0x7240, - 5936: 0x7246, - 5937: 0x724B, - 5938: 0x7258, - 5939: 0x7274, - 5940: 0x727E, - 5941: 0x7282, - 5942: 0x7281, - 5943: 0x7287, - 5944: 0x7292, - 5945: 0x7296, - 5946: 0x72A2, - 5947: 0x72A7, - 5948: 0x72B9, - 5949: 0x72B2, - 5950: 0x72C3, - 5951: 0x72C6, - 5952: 0x72C4, - 5953: 0x72CE, - 5954: 0x72D2, - 5955: 0x72E2, - 5956: 0x72E0, - 5957: 0x72E1, - 5958: 0x72F9, - 5959: 0x72F7, - 5960: 0x500F, - 5961: 0x7317, - 5962: 0x730A, - 5963: 0x731C, - 5964: 0x7316, - 5965: 0x731D, - 5966: 0x7334, - 5967: 0x732F, - 5968: 0x7329, - 5969: 0x7325, - 5970: 0x733E, - 5971: 0x734E, - 5972: 0x734F, - 5973: 0x9ED8, - 5974: 0x7357, - 5975: 0x736A, - 5976: 0x7368, - 5977: 0x7370, - 5978: 0x7378, - 5979: 0x7375, - 5980: 0x737B, - 5981: 0x737A, - 5982: 0x73C8, - 5983: 0x73B3, - 5984: 0x73CE, - 5985: 0x73BB, - 5986: 0x73C0, - 5987: 0x73E5, - 5988: 0x73EE, - 5989: 0x73DE, - 5990: 0x74A2, - 5991: 0x7405, - 5992: 0x746F, - 5993: 0x7425, - 5994: 0x73F8, - 5995: 0x7432, - 5996: 0x743A, - 5997: 0x7455, - 5998: 0x743F, - 5999: 0x745F, - 6000: 0x7459, - 6001: 0x7441, - 6002: 0x745C, - 6003: 0x7469, - 6004: 0x7470, - 6005: 0x7463, - 6006: 0x746A, - 6007: 0x7476, - 6008: 0x747E, - 6009: 0x748B, - 6010: 0x749E, - 6011: 0x74A7, - 6012: 0x74CA, - 6013: 0x74CF, - 6014: 0x74D4, - 6015: 0x73F1, - 6016: 0x74E0, - 6017: 0x74E3, - 6018: 0x74E7, - 6019: 0x74E9, - 6020: 0x74EE, - 6021: 0x74F2, - 6022: 0x74F0, - 6023: 0x74F1, - 6024: 0x74F8, - 6025: 0x74F7, - 6026: 0x7504, - 6027: 0x7503, - 6028: 0x7505, - 6029: 0x750C, - 6030: 0x750E, - 6031: 0x750D, - 6032: 0x7515, - 6033: 0x7513, - 6034: 0x751E, - 6035: 0x7526, - 6036: 0x752C, - 6037: 0x753C, - 6038: 0x7544, - 6039: 0x754D, - 6040: 0x754A, - 6041: 0x7549, - 6042: 0x755B, - 6043: 0x7546, - 6044: 0x755A, - 6045: 0x7569, - 6046: 0x7564, - 6047: 0x7567, - 6048: 0x756B, - 6049: 0x756D, - 6050: 0x7578, - 6051: 0x7576, - 6052: 0x7586, - 6053: 0x7587, - 6054: 0x7574, - 6055: 0x758A, - 6056: 0x7589, - 6057: 0x7582, - 6058: 0x7594, - 6059: 0x759A, - 6060: 0x759D, - 6061: 0x75A5, - 6062: 0x75A3, - 6063: 0x75C2, - 6064: 0x75B3, - 6065: 0x75C3, - 6066: 0x75B5, - 6067: 0x75BD, - 6068: 0x75B8, - 6069: 0x75BC, - 6070: 0x75B1, - 6071: 0x75CD, - 6072: 0x75CA, - 6073: 0x75D2, - 6074: 0x75D9, - 6075: 0x75E3, - 6076: 0x75DE, - 6077: 0x75FE, - 6078: 0x75FF, - 6079: 0x75FC, - 6080: 0x7601, - 6081: 0x75F0, - 6082: 0x75FA, - 6083: 0x75F2, - 6084: 0x75F3, - 6085: 0x760B, - 6086: 0x760D, - 6087: 0x7609, - 6088: 0x761F, - 6089: 0x7627, - 6090: 0x7620, - 6091: 0x7621, - 6092: 0x7622, - 6093: 0x7624, - 6094: 0x7634, - 6095: 0x7630, - 6096: 0x763B, - 6097: 0x7647, - 6098: 0x7648, - 6099: 0x7646, - 6100: 0x765C, - 6101: 0x7658, - 6102: 0x7661, - 6103: 0x7662, - 6104: 0x7668, - 6105: 0x7669, - 6106: 0x766A, - 6107: 0x7667, - 6108: 0x766C, - 6109: 0x7670, - 6110: 0x7672, - 6111: 0x7676, - 6112: 0x7678, - 6113: 0x767C, - 6114: 0x7680, - 6115: 0x7683, - 6116: 0x7688, - 6117: 0x768B, - 6118: 0x768E, - 6119: 0x7696, - 6120: 0x7693, - 6121: 0x7699, - 6122: 0x769A, - 6123: 0x76B0, - 6124: 0x76B4, - 6125: 0x76B8, - 6126: 0x76B9, - 6127: 0x76BA, - 6128: 0x76C2, - 6129: 0x76CD, - 6130: 0x76D6, - 6131: 0x76D2, - 6132: 0x76DE, - 6133: 0x76E1, - 6134: 0x76E5, - 6135: 0x76E7, - 6136: 0x76EA, - 6137: 0x862F, - 6138: 0x76FB, - 6139: 0x7708, - 6140: 0x7707, - 6141: 0x7704, - 6142: 0x7729, - 6143: 0x7724, - 6144: 0x771E, - 6145: 0x7725, - 6146: 0x7726, - 6147: 0x771B, - 6148: 0x7737, - 6149: 0x7738, - 6150: 0x7747, - 6151: 0x775A, - 6152: 0x7768, - 6153: 0x776B, - 6154: 0x775B, - 6155: 0x7765, - 6156: 0x777F, - 6157: 0x777E, - 6158: 0x7779, - 6159: 0x778E, - 6160: 0x778B, - 6161: 0x7791, - 6162: 0x77A0, - 6163: 0x779E, - 6164: 0x77B0, - 6165: 0x77B6, - 6166: 0x77B9, - 6167: 0x77BF, - 6168: 0x77BC, - 6169: 0x77BD, - 6170: 0x77BB, - 6171: 0x77C7, - 6172: 0x77CD, - 6173: 0x77D7, - 6174: 0x77DA, - 6175: 0x77DC, - 6176: 0x77E3, - 6177: 0x77EE, - 6178: 0x77FC, - 6179: 0x780C, - 6180: 0x7812, - 6181: 0x7926, - 6182: 0x7820, - 6183: 0x792A, - 6184: 0x7845, - 6185: 0x788E, - 6186: 0x7874, - 6187: 0x7886, - 6188: 0x787C, - 6189: 0x789A, - 6190: 0x788C, - 6191: 0x78A3, - 6192: 0x78B5, - 6193: 0x78AA, - 6194: 0x78AF, - 6195: 0x78D1, - 6196: 0x78C6, - 6197: 0x78CB, - 6198: 0x78D4, - 6199: 0x78BE, - 6200: 0x78BC, - 6201: 0x78C5, - 6202: 0x78CA, - 6203: 0x78EC, - 6204: 0x78E7, - 6205: 0x78DA, - 6206: 0x78FD, - 6207: 0x78F4, - 6208: 0x7907, - 6209: 0x7912, - 6210: 0x7911, - 6211: 0x7919, - 6212: 0x792C, - 6213: 0x792B, - 6214: 0x7940, - 6215: 0x7960, - 6216: 0x7957, - 6217: 0x795F, - 6218: 0x795A, - 6219: 0x7955, - 6220: 0x7953, - 6221: 0x797A, - 6222: 0x797F, - 6223: 0x798A, - 6224: 0x799D, - 6225: 0x79A7, - 6226: 0x9F4B, - 6227: 0x79AA, - 6228: 0x79AE, - 6229: 0x79B3, - 6230: 0x79B9, - 6231: 0x79BA, - 6232: 0x79C9, - 6233: 0x79D5, - 6234: 0x79E7, - 6235: 0x79EC, - 6236: 0x79E1, - 6237: 0x79E3, - 6238: 0x7A08, - 6239: 0x7A0D, - 6240: 0x7A18, - 6241: 0x7A19, - 6242: 0x7A20, - 6243: 0x7A1F, - 6244: 0x7980, - 6245: 0x7A31, - 6246: 0x7A3B, - 6247: 0x7A3E, - 6248: 0x7A37, - 6249: 0x7A43, - 6250: 0x7A57, - 6251: 0x7A49, - 6252: 0x7A61, - 6253: 0x7A62, - 6254: 0x7A69, - 6255: 0x9F9D, - 6256: 0x7A70, - 6257: 0x7A79, - 6258: 0x7A7D, - 6259: 0x7A88, - 6260: 0x7A97, - 6261: 0x7A95, - 6262: 0x7A98, - 6263: 0x7A96, - 6264: 0x7AA9, - 6265: 0x7AC8, - 6266: 0x7AB0, - 6267: 0x7AB6, - 6268: 0x7AC5, - 6269: 0x7AC4, - 6270: 0x7ABF, - 6271: 0x9083, - 6272: 0x7AC7, - 6273: 0x7ACA, - 6274: 0x7ACD, - 6275: 0x7ACF, - 6276: 0x7AD5, - 6277: 0x7AD3, - 6278: 0x7AD9, - 6279: 0x7ADA, - 6280: 0x7ADD, - 6281: 0x7AE1, - 6282: 0x7AE2, - 6283: 0x7AE6, - 6284: 0x7AED, - 6285: 0x7AF0, - 6286: 0x7B02, - 6287: 0x7B0F, - 6288: 0x7B0A, - 6289: 0x7B06, - 6290: 0x7B33, - 6291: 0x7B18, - 6292: 0x7B19, - 6293: 0x7B1E, - 6294: 0x7B35, - 6295: 0x7B28, - 6296: 0x7B36, - 6297: 0x7B50, - 6298: 0x7B7A, - 6299: 0x7B04, - 6300: 0x7B4D, - 6301: 0x7B0B, - 6302: 0x7B4C, - 6303: 0x7B45, - 6304: 0x7B75, - 6305: 0x7B65, - 6306: 0x7B74, - 6307: 0x7B67, - 6308: 0x7B70, - 6309: 0x7B71, - 6310: 0x7B6C, - 6311: 0x7B6E, - 6312: 0x7B9D, - 6313: 0x7B98, - 6314: 0x7B9F, - 6315: 0x7B8D, - 6316: 0x7B9C, - 6317: 0x7B9A, - 6318: 0x7B8B, - 6319: 0x7B92, - 6320: 0x7B8F, - 6321: 0x7B5D, - 6322: 0x7B99, - 6323: 0x7BCB, - 6324: 0x7BC1, - 6325: 0x7BCC, - 6326: 0x7BCF, - 6327: 0x7BB4, - 6328: 0x7BC6, - 6329: 0x7BDD, - 6330: 0x7BE9, - 6331: 0x7C11, - 6332: 0x7C14, - 6333: 0x7BE6, - 6334: 0x7BE5, - 6335: 0x7C60, - 6336: 0x7C00, - 6337: 0x7C07, - 6338: 0x7C13, - 6339: 0x7BF3, - 6340: 0x7BF7, - 6341: 0x7C17, - 6342: 0x7C0D, - 6343: 0x7BF6, - 6344: 0x7C23, - 6345: 0x7C27, - 6346: 0x7C2A, - 6347: 0x7C1F, - 6348: 0x7C37, - 6349: 0x7C2B, - 6350: 0x7C3D, - 6351: 0x7C4C, - 6352: 0x7C43, - 6353: 0x7C54, - 6354: 0x7C4F, - 6355: 0x7C40, - 6356: 0x7C50, - 6357: 0x7C58, - 6358: 0x7C5F, - 6359: 0x7C64, - 6360: 0x7C56, - 6361: 0x7C65, - 6362: 0x7C6C, - 6363: 0x7C75, - 6364: 0x7C83, - 6365: 0x7C90, - 6366: 0x7CA4, - 6367: 0x7CAD, - 6368: 0x7CA2, - 6369: 0x7CAB, - 6370: 0x7CA1, - 6371: 0x7CA8, - 6372: 0x7CB3, - 6373: 0x7CB2, - 6374: 0x7CB1, - 6375: 0x7CAE, - 6376: 0x7CB9, - 6377: 0x7CBD, - 6378: 0x7CC0, - 6379: 0x7CC5, - 6380: 0x7CC2, - 6381: 0x7CD8, - 6382: 0x7CD2, - 6383: 0x7CDC, - 6384: 0x7CE2, - 6385: 0x9B3B, - 6386: 0x7CEF, - 6387: 0x7CF2, - 6388: 0x7CF4, - 6389: 0x7CF6, - 6390: 0x7CFA, - 6391: 0x7D06, - 6392: 0x7D02, - 6393: 0x7D1C, - 6394: 0x7D15, - 6395: 0x7D0A, - 6396: 0x7D45, - 6397: 0x7D4B, - 6398: 0x7D2E, - 6399: 0x7D32, - 6400: 0x7D3F, - 6401: 0x7D35, - 6402: 0x7D46, - 6403: 0x7D73, - 6404: 0x7D56, - 6405: 0x7D4E, - 6406: 0x7D72, - 6407: 0x7D68, - 6408: 0x7D6E, - 6409: 0x7D4F, - 6410: 0x7D63, - 6411: 0x7D93, - 6412: 0x7D89, - 6413: 0x7D5B, - 6414: 0x7D8F, - 6415: 0x7D7D, - 6416: 0x7D9B, - 6417: 0x7DBA, - 6418: 0x7DAE, - 6419: 0x7DA3, - 6420: 0x7DB5, - 6421: 0x7DC7, - 6422: 0x7DBD, - 6423: 0x7DAB, - 6424: 0x7E3D, - 6425: 0x7DA2, - 6426: 0x7DAF, - 6427: 0x7DDC, - 6428: 0x7DB8, - 6429: 0x7D9F, - 6430: 0x7DB0, - 6431: 0x7DD8, - 6432: 0x7DDD, - 6433: 0x7DE4, - 6434: 0x7DDE, - 6435: 0x7DFB, - 6436: 0x7DF2, - 6437: 0x7DE1, - 6438: 0x7E05, - 6439: 0x7E0A, - 6440: 0x7E23, - 6441: 0x7E21, - 6442: 0x7E12, - 6443: 0x7E31, - 6444: 0x7E1F, - 6445: 0x7E09, - 6446: 0x7E0B, - 6447: 0x7E22, - 6448: 0x7E46, - 6449: 0x7E66, - 6450: 0x7E3B, - 6451: 0x7E35, - 6452: 0x7E39, - 6453: 0x7E43, - 6454: 0x7E37, - 6455: 0x7E32, - 6456: 0x7E3A, - 6457: 0x7E67, - 6458: 0x7E5D, - 6459: 0x7E56, - 6460: 0x7E5E, - 6461: 0x7E59, - 6462: 0x7E5A, - 6463: 0x7E79, - 6464: 0x7E6A, - 6465: 0x7E69, - 6466: 0x7E7C, - 6467: 0x7E7B, - 6468: 0x7E83, - 6469: 0x7DD5, - 6470: 0x7E7D, - 6471: 0x8FAE, - 6472: 0x7E7F, - 6473: 0x7E88, - 6474: 0x7E89, - 6475: 0x7E8C, - 6476: 0x7E92, - 6477: 0x7E90, - 6478: 0x7E93, - 6479: 0x7E94, - 6480: 0x7E96, - 6481: 0x7E8E, - 6482: 0x7E9B, - 6483: 0x7E9C, - 6484: 0x7F38, - 6485: 0x7F3A, - 6486: 0x7F45, - 6487: 0x7F4C, - 6488: 0x7F4D, - 6489: 0x7F4E, - 6490: 0x7F50, - 6491: 0x7F51, - 6492: 0x7F55, - 6493: 0x7F54, - 6494: 0x7F58, - 6495: 0x7F5F, - 6496: 0x7F60, - 6497: 0x7F68, - 6498: 0x7F69, - 6499: 0x7F67, - 6500: 0x7F78, - 6501: 0x7F82, - 6502: 0x7F86, - 6503: 0x7F83, - 6504: 0x7F88, - 6505: 0x7F87, - 6506: 0x7F8C, - 6507: 0x7F94, - 6508: 0x7F9E, - 6509: 0x7F9D, - 6510: 0x7F9A, - 6511: 0x7FA3, - 6512: 0x7FAF, - 6513: 0x7FB2, - 6514: 0x7FB9, - 6515: 0x7FAE, - 6516: 0x7FB6, - 6517: 0x7FB8, - 6518: 0x8B71, - 6519: 0x7FC5, - 6520: 0x7FC6, - 6521: 0x7FCA, - 6522: 0x7FD5, - 6523: 0x7FD4, - 6524: 0x7FE1, - 6525: 0x7FE6, - 6526: 0x7FE9, - 6527: 0x7FF3, - 6528: 0x7FF9, - 6529: 0x98DC, - 6530: 0x8006, - 6531: 0x8004, - 6532: 0x800B, - 6533: 0x8012, - 6534: 0x8018, - 6535: 0x8019, - 6536: 0x801C, - 6537: 0x8021, - 6538: 0x8028, - 6539: 0x803F, - 6540: 0x803B, - 6541: 0x804A, - 6542: 0x8046, - 6543: 0x8052, - 6544: 0x8058, - 6545: 0x805A, - 6546: 0x805F, - 6547: 0x8062, - 6548: 0x8068, - 6549: 0x8073, - 6550: 0x8072, - 6551: 0x8070, - 6552: 0x8076, - 6553: 0x8079, - 6554: 0x807D, - 6555: 0x807F, - 6556: 0x8084, - 6557: 0x8086, - 6558: 0x8085, - 6559: 0x809B, - 6560: 0x8093, - 6561: 0x809A, - 6562: 0x80AD, - 6563: 0x5190, - 6564: 0x80AC, - 6565: 0x80DB, - 6566: 0x80E5, - 6567: 0x80D9, - 6568: 0x80DD, - 6569: 0x80C4, - 6570: 0x80DA, - 6571: 0x80D6, - 6572: 0x8109, - 6573: 0x80EF, - 6574: 0x80F1, - 6575: 0x811B, - 6576: 0x8129, - 6577: 0x8123, - 6578: 0x812F, - 6579: 0x814B, - 6580: 0x968B, - 6581: 0x8146, - 6582: 0x813E, - 6583: 0x8153, - 6584: 0x8151, - 6585: 0x80FC, - 6586: 0x8171, - 6587: 0x816E, - 6588: 0x8165, - 6589: 0x8166, - 6590: 0x8174, - 6591: 0x8183, - 6592: 0x8188, - 6593: 0x818A, - 6594: 0x8180, - 6595: 0x8182, - 6596: 0x81A0, - 6597: 0x8195, - 6598: 0x81A4, - 6599: 0x81A3, - 6600: 0x815F, - 6601: 0x8193, - 6602: 0x81A9, - 6603: 0x81B0, - 6604: 0x81B5, - 6605: 0x81BE, - 6606: 0x81B8, - 6607: 0x81BD, - 6608: 0x81C0, - 6609: 0x81C2, - 6610: 0x81BA, - 6611: 0x81C9, - 6612: 0x81CD, - 6613: 0x81D1, - 6614: 0x81D9, - 6615: 0x81D8, - 6616: 0x81C8, - 6617: 0x81DA, - 6618: 0x81DF, - 6619: 0x81E0, - 6620: 0x81E7, - 6621: 0x81FA, - 6622: 0x81FB, - 6623: 0x81FE, - 6624: 0x8201, - 6625: 0x8202, - 6626: 0x8205, - 6627: 0x8207, - 6628: 0x820A, - 6629: 0x820D, - 6630: 0x8210, - 6631: 0x8216, - 6632: 0x8229, - 6633: 0x822B, - 6634: 0x8238, - 6635: 0x8233, - 6636: 0x8240, - 6637: 0x8259, - 6638: 0x8258, - 6639: 0x825D, - 6640: 0x825A, - 6641: 0x825F, - 6642: 0x8264, - 6643: 0x8262, - 6644: 0x8268, - 6645: 0x826A, - 6646: 0x826B, - 6647: 0x822E, - 6648: 0x8271, - 6649: 0x8277, - 6650: 0x8278, - 6651: 0x827E, - 6652: 0x828D, - 6653: 0x8292, - 6654: 0x82AB, - 6655: 0x829F, - 6656: 0x82BB, - 6657: 0x82AC, - 6658: 0x82E1, - 6659: 0x82E3, - 6660: 0x82DF, - 6661: 0x82D2, - 6662: 0x82F4, - 6663: 0x82F3, - 6664: 0x82FA, - 6665: 0x8393, - 6666: 0x8303, - 6667: 0x82FB, - 6668: 0x82F9, - 6669: 0x82DE, - 6670: 0x8306, - 6671: 0x82DC, - 6672: 0x8309, - 6673: 0x82D9, - 6674: 0x8335, - 6675: 0x8334, - 6676: 0x8316, - 6677: 0x8332, - 6678: 0x8331, - 6679: 0x8340, - 6680: 0x8339, - 6681: 0x8350, - 6682: 0x8345, - 6683: 0x832F, - 6684: 0x832B, - 6685: 0x8317, - 6686: 0x8318, - 6687: 0x8385, - 6688: 0x839A, - 6689: 0x83AA, - 6690: 0x839F, - 6691: 0x83A2, - 6692: 0x8396, - 6693: 0x8323, - 6694: 0x838E, - 6695: 0x8387, - 6696: 0x838A, - 6697: 0x837C, - 6698: 0x83B5, - 6699: 0x8373, - 6700: 0x8375, - 6701: 0x83A0, - 6702: 0x8389, - 6703: 0x83A8, - 6704: 0x83F4, - 6705: 0x8413, - 6706: 0x83EB, - 6707: 0x83CE, - 6708: 0x83FD, - 6709: 0x8403, - 6710: 0x83D8, - 6711: 0x840B, - 6712: 0x83C1, - 6713: 0x83F7, - 6714: 0x8407, - 6715: 0x83E0, - 6716: 0x83F2, - 6717: 0x840D, - 6718: 0x8422, - 6719: 0x8420, - 6720: 0x83BD, - 6721: 0x8438, - 6722: 0x8506, - 6723: 0x83FB, - 6724: 0x846D, - 6725: 0x842A, - 6726: 0x843C, - 6727: 0x855A, - 6728: 0x8484, - 6729: 0x8477, - 6730: 0x846B, - 6731: 0x84AD, - 6732: 0x846E, - 6733: 0x8482, - 6734: 0x8469, - 6735: 0x8446, - 6736: 0x842C, - 6737: 0x846F, - 6738: 0x8479, - 6739: 0x8435, - 6740: 0x84CA, - 6741: 0x8462, - 6742: 0x84B9, - 6743: 0x84BF, - 6744: 0x849F, - 6745: 0x84D9, - 6746: 0x84CD, - 6747: 0x84BB, - 6748: 0x84DA, - 6749: 0x84D0, - 6750: 0x84C1, - 6751: 0x84C6, - 6752: 0x84D6, - 6753: 0x84A1, - 6754: 0x8521, - 6755: 0x84FF, - 6756: 0x84F4, - 6757: 0x8517, - 6758: 0x8518, - 6759: 0x852C, - 6760: 0x851F, - 6761: 0x8515, - 6762: 0x8514, - 6763: 0x84FC, - 6764: 0x8540, - 6765: 0x8563, - 6766: 0x8558, - 6767: 0x8548, - 6768: 0x8541, - 6769: 0x8602, - 6770: 0x854B, - 6771: 0x8555, - 6772: 0x8580, - 6773: 0x85A4, - 6774: 0x8588, - 6775: 0x8591, - 6776: 0x858A, - 6777: 0x85A8, - 6778: 0x856D, - 6779: 0x8594, - 6780: 0x859B, - 6781: 0x85EA, - 6782: 0x8587, - 6783: 0x859C, - 6784: 0x8577, - 6785: 0x857E, - 6786: 0x8590, - 6787: 0x85C9, - 6788: 0x85BA, - 6789: 0x85CF, - 6790: 0x85B9, - 6791: 0x85D0, - 6792: 0x85D5, - 6793: 0x85DD, - 6794: 0x85E5, - 6795: 0x85DC, - 6796: 0x85F9, - 6797: 0x860A, - 6798: 0x8613, - 6799: 0x860B, - 6800: 0x85FE, - 6801: 0x85FA, - 6802: 0x8606, - 6803: 0x8622, - 6804: 0x861A, - 6805: 0x8630, - 6806: 0x863F, - 6807: 0x864D, - 6808: 0x4E55, - 6809: 0x8654, - 6810: 0x865F, - 6811: 0x8667, - 6812: 0x8671, - 6813: 0x8693, - 6814: 0x86A3, - 6815: 0x86A9, - 6816: 0x86AA, - 6817: 0x868B, - 6818: 0x868C, - 6819: 0x86B6, - 6820: 0x86AF, - 6821: 0x86C4, - 6822: 0x86C6, - 6823: 0x86B0, - 6824: 0x86C9, - 6825: 0x8823, - 6826: 0x86AB, - 6827: 0x86D4, - 6828: 0x86DE, - 6829: 0x86E9, - 6830: 0x86EC, - 6831: 0x86DF, - 6832: 0x86DB, - 6833: 0x86EF, - 6834: 0x8712, - 6835: 0x8706, - 6836: 0x8708, - 6837: 0x8700, - 6838: 0x8703, - 6839: 0x86FB, - 6840: 0x8711, - 6841: 0x8709, - 6842: 0x870D, - 6843: 0x86F9, - 6844: 0x870A, - 6845: 0x8734, - 6846: 0x873F, - 6847: 0x8737, - 6848: 0x873B, - 6849: 0x8725, - 6850: 0x8729, - 6851: 0x871A, - 6852: 0x8760, - 6853: 0x875F, - 6854: 0x8778, - 6855: 0x874C, - 6856: 0x874E, - 6857: 0x8774, - 6858: 0x8757, - 6859: 0x8768, - 6860: 0x876E, - 6861: 0x8759, - 6862: 0x8753, - 6863: 0x8763, - 6864: 0x876A, - 6865: 0x8805, - 6866: 0x87A2, - 6867: 0x879F, - 6868: 0x8782, - 6869: 0x87AF, - 6870: 0x87CB, - 6871: 0x87BD, - 6872: 0x87C0, - 6873: 0x87D0, - 6874: 0x96D6, - 6875: 0x87AB, - 6876: 0x87C4, - 6877: 0x87B3, - 6878: 0x87C7, - 6879: 0x87C6, - 6880: 0x87BB, - 6881: 0x87EF, - 6882: 0x87F2, - 6883: 0x87E0, - 6884: 0x880F, - 6885: 0x880D, - 6886: 0x87FE, - 6887: 0x87F6, - 6888: 0x87F7, - 6889: 0x880E, - 6890: 0x87D2, - 6891: 0x8811, - 6892: 0x8816, - 6893: 0x8815, - 6894: 0x8822, - 6895: 0x8821, - 6896: 0x8831, - 6897: 0x8836, - 6898: 0x8839, - 6899: 0x8827, - 6900: 0x883B, - 6901: 0x8844, - 6902: 0x8842, - 6903: 0x8852, - 6904: 0x8859, - 6905: 0x885E, - 6906: 0x8862, - 6907: 0x886B, - 6908: 0x8881, - 6909: 0x887E, - 6910: 0x889E, - 6911: 0x8875, - 6912: 0x887D, - 6913: 0x88B5, - 6914: 0x8872, - 6915: 0x8882, - 6916: 0x8897, - 6917: 0x8892, - 6918: 0x88AE, - 6919: 0x8899, - 6920: 0x88A2, - 6921: 0x888D, - 6922: 0x88A4, - 6923: 0x88B0, - 6924: 0x88BF, - 6925: 0x88B1, - 6926: 0x88C3, - 6927: 0x88C4, - 6928: 0x88D4, - 6929: 0x88D8, - 6930: 0x88D9, - 6931: 0x88DD, - 6932: 0x88F9, - 6933: 0x8902, - 6934: 0x88FC, - 6935: 0x88F4, - 6936: 0x88E8, - 6937: 0x88F2, - 6938: 0x8904, - 6939: 0x890C, - 6940: 0x890A, - 6941: 0x8913, - 6942: 0x8943, - 6943: 0x891E, - 6944: 0x8925, - 6945: 0x892A, - 6946: 0x892B, - 6947: 0x8941, - 6948: 0x8944, - 6949: 0x893B, - 6950: 0x8936, - 6951: 0x8938, - 6952: 0x894C, - 6953: 0x891D, - 6954: 0x8960, - 6955: 0x895E, - 6956: 0x8966, - 6957: 0x8964, - 6958: 0x896D, - 6959: 0x896A, - 6960: 0x896F, - 6961: 0x8974, - 6962: 0x8977, - 6963: 0x897E, - 6964: 0x8983, - 6965: 0x8988, - 6966: 0x898A, - 6967: 0x8993, - 6968: 0x8998, - 6969: 0x89A1, - 6970: 0x89A9, - 6971: 0x89A6, - 6972: 0x89AC, - 6973: 0x89AF, - 6974: 0x89B2, - 6975: 0x89BA, - 6976: 0x89BD, - 6977: 0x89BF, - 6978: 0x89C0, - 6979: 0x89DA, - 6980: 0x89DC, - 6981: 0x89DD, - 6982: 0x89E7, - 6983: 0x89F4, - 6984: 0x89F8, - 6985: 0x8A03, - 6986: 0x8A16, - 6987: 0x8A10, - 6988: 0x8A0C, - 6989: 0x8A1B, - 6990: 0x8A1D, - 6991: 0x8A25, - 6992: 0x8A36, - 6993: 0x8A41, - 6994: 0x8A5B, - 6995: 0x8A52, - 6996: 0x8A46, - 6997: 0x8A48, - 6998: 0x8A7C, - 6999: 0x8A6D, - 7000: 0x8A6C, - 7001: 0x8A62, - 7002: 0x8A85, - 7003: 0x8A82, - 7004: 0x8A84, - 7005: 0x8AA8, - 7006: 0x8AA1, - 7007: 0x8A91, - 7008: 0x8AA5, - 7009: 0x8AA6, - 7010: 0x8A9A, - 7011: 0x8AA3, - 7012: 0x8AC4, - 7013: 0x8ACD, - 7014: 0x8AC2, - 7015: 0x8ADA, - 7016: 0x8AEB, - 7017: 0x8AF3, - 7018: 0x8AE7, - 7019: 0x8AE4, - 7020: 0x8AF1, - 7021: 0x8B14, - 7022: 0x8AE0, - 7023: 0x8AE2, - 7024: 0x8AF7, - 7025: 0x8ADE, - 7026: 0x8ADB, - 7027: 0x8B0C, - 7028: 0x8B07, - 7029: 0x8B1A, - 7030: 0x8AE1, - 7031: 0x8B16, - 7032: 0x8B10, - 7033: 0x8B17, - 7034: 0x8B20, - 7035: 0x8B33, - 7036: 0x97AB, - 7037: 0x8B26, - 7038: 0x8B2B, - 7039: 0x8B3E, - 7040: 0x8B28, - 7041: 0x8B41, - 7042: 0x8B4C, - 7043: 0x8B4F, - 7044: 0x8B4E, - 7045: 0x8B49, - 7046: 0x8B56, - 7047: 0x8B5B, - 7048: 0x8B5A, - 7049: 0x8B6B, - 7050: 0x8B5F, - 7051: 0x8B6C, - 7052: 0x8B6F, - 7053: 0x8B74, - 7054: 0x8B7D, - 7055: 0x8B80, - 7056: 0x8B8C, - 7057: 0x8B8E, - 7058: 0x8B92, - 7059: 0x8B93, - 7060: 0x8B96, - 7061: 0x8B99, - 7062: 0x8B9A, - 7063: 0x8C3A, - 7064: 0x8C41, - 7065: 0x8C3F, - 7066: 0x8C48, - 7067: 0x8C4C, - 7068: 0x8C4E, - 7069: 0x8C50, - 7070: 0x8C55, - 7071: 0x8C62, - 7072: 0x8C6C, - 7073: 0x8C78, - 7074: 0x8C7A, - 7075: 0x8C82, - 7076: 0x8C89, - 7077: 0x8C85, - 7078: 0x8C8A, - 7079: 0x8C8D, - 7080: 0x8C8E, - 7081: 0x8C94, - 7082: 0x8C7C, - 7083: 0x8C98, - 7084: 0x621D, - 7085: 0x8CAD, - 7086: 0x8CAA, - 7087: 0x8CBD, - 7088: 0x8CB2, - 7089: 0x8CB3, - 7090: 0x8CAE, - 7091: 0x8CB6, - 7092: 0x8CC8, - 7093: 0x8CC1, - 7094: 0x8CE4, - 7095: 0x8CE3, - 7096: 0x8CDA, - 7097: 0x8CFD, - 7098: 0x8CFA, - 7099: 0x8CFB, - 7100: 0x8D04, - 7101: 0x8D05, - 7102: 0x8D0A, - 7103: 0x8D07, - 7104: 0x8D0F, - 7105: 0x8D0D, - 7106: 0x8D10, - 7107: 0x9F4E, - 7108: 0x8D13, - 7109: 0x8CCD, - 7110: 0x8D14, - 7111: 0x8D16, - 7112: 0x8D67, - 7113: 0x8D6D, - 7114: 0x8D71, - 7115: 0x8D73, - 7116: 0x8D81, - 7117: 0x8D99, - 7118: 0x8DC2, - 7119: 0x8DBE, - 7120: 0x8DBA, - 7121: 0x8DCF, - 7122: 0x8DDA, - 7123: 0x8DD6, - 7124: 0x8DCC, - 7125: 0x8DDB, - 7126: 0x8DCB, - 7127: 0x8DEA, - 7128: 0x8DEB, - 7129: 0x8DDF, - 7130: 0x8DE3, - 7131: 0x8DFC, - 7132: 0x8E08, - 7133: 0x8E09, - 7134: 0x8DFF, - 7135: 0x8E1D, - 7136: 0x8E1E, - 7137: 0x8E10, - 7138: 0x8E1F, - 7139: 0x8E42, - 7140: 0x8E35, - 7141: 0x8E30, - 7142: 0x8E34, - 7143: 0x8E4A, - 7144: 0x8E47, - 7145: 0x8E49, - 7146: 0x8E4C, - 7147: 0x8E50, - 7148: 0x8E48, - 7149: 0x8E59, - 7150: 0x8E64, - 7151: 0x8E60, - 7152: 0x8E2A, - 7153: 0x8E63, - 7154: 0x8E55, - 7155: 0x8E76, - 7156: 0x8E72, - 7157: 0x8E7C, - 7158: 0x8E81, - 7159: 0x8E87, - 7160: 0x8E85, - 7161: 0x8E84, - 7162: 0x8E8B, - 7163: 0x8E8A, - 7164: 0x8E93, - 7165: 0x8E91, - 7166: 0x8E94, - 7167: 0x8E99, - 7168: 0x8EAA, - 7169: 0x8EA1, - 7170: 0x8EAC, - 7171: 0x8EB0, - 7172: 0x8EC6, - 7173: 0x8EB1, - 7174: 0x8EBE, - 7175: 0x8EC5, - 7176: 0x8EC8, - 7177: 0x8ECB, - 7178: 0x8EDB, - 7179: 0x8EE3, - 7180: 0x8EFC, - 7181: 0x8EFB, - 7182: 0x8EEB, - 7183: 0x8EFE, - 7184: 0x8F0A, - 7185: 0x8F05, - 7186: 0x8F15, - 7187: 0x8F12, - 7188: 0x8F19, - 7189: 0x8F13, - 7190: 0x8F1C, - 7191: 0x8F1F, - 7192: 0x8F1B, - 7193: 0x8F0C, - 7194: 0x8F26, - 7195: 0x8F33, - 7196: 0x8F3B, - 7197: 0x8F39, - 7198: 0x8F45, - 7199: 0x8F42, - 7200: 0x8F3E, - 7201: 0x8F4C, - 7202: 0x8F49, - 7203: 0x8F46, - 7204: 0x8F4E, - 7205: 0x8F57, - 7206: 0x8F5C, - 7207: 0x8F62, - 7208: 0x8F63, - 7209: 0x8F64, - 7210: 0x8F9C, - 7211: 0x8F9F, - 7212: 0x8FA3, - 7213: 0x8FAD, - 7214: 0x8FAF, - 7215: 0x8FB7, - 7216: 0x8FDA, - 7217: 0x8FE5, - 7218: 0x8FE2, - 7219: 0x8FEA, - 7220: 0x8FEF, - 7221: 0x9087, - 7222: 0x8FF4, - 7223: 0x9005, - 7224: 0x8FF9, - 7225: 0x8FFA, - 7226: 0x9011, - 7227: 0x9015, - 7228: 0x9021, - 7229: 0x900D, - 7230: 0x901E, - 7231: 0x9016, - 7232: 0x900B, - 7233: 0x9027, - 7234: 0x9036, - 7235: 0x9035, - 7236: 0x9039, - 7237: 0x8FF8, - 7238: 0x904F, - 7239: 0x9050, - 7240: 0x9051, - 7241: 0x9052, - 7242: 0x900E, - 7243: 0x9049, - 7244: 0x903E, - 7245: 0x9056, - 7246: 0x9058, - 7247: 0x905E, - 7248: 0x9068, - 7249: 0x906F, - 7250: 0x9076, - 7251: 0x96A8, - 7252: 0x9072, - 7253: 0x9082, - 7254: 0x907D, - 7255: 0x9081, - 7256: 0x9080, - 7257: 0x908A, - 7258: 0x9089, - 7259: 0x908F, - 7260: 0x90A8, - 7261: 0x90AF, - 7262: 0x90B1, - 7263: 0x90B5, - 7264: 0x90E2, - 7265: 0x90E4, - 7266: 0x6248, - 7267: 0x90DB, - 7268: 0x9102, - 7269: 0x9112, - 7270: 0x9119, - 7271: 0x9132, - 7272: 0x9130, - 7273: 0x914A, - 7274: 0x9156, - 7275: 0x9158, - 7276: 0x9163, - 7277: 0x9165, - 7278: 0x9169, - 7279: 0x9173, - 7280: 0x9172, - 7281: 0x918B, - 7282: 0x9189, - 7283: 0x9182, - 7284: 0x91A2, - 7285: 0x91AB, - 7286: 0x91AF, - 7287: 0x91AA, - 7288: 0x91B5, - 7289: 0x91B4, - 7290: 0x91BA, - 7291: 0x91C0, - 7292: 0x91C1, - 7293: 0x91C9, - 7294: 0x91CB, - 7295: 0x91D0, - 7296: 0x91D6, - 7297: 0x91DF, - 7298: 0x91E1, - 7299: 0x91DB, - 7300: 0x91FC, - 7301: 0x91F5, - 7302: 0x91F6, - 7303: 0x921E, - 7304: 0x91FF, - 7305: 0x9214, - 7306: 0x922C, - 7307: 0x9215, - 7308: 0x9211, - 7309: 0x925E, - 7310: 0x9257, - 7311: 0x9245, - 7312: 0x9249, - 7313: 0x9264, - 7314: 0x9248, - 7315: 0x9295, - 7316: 0x923F, - 7317: 0x924B, - 7318: 0x9250, - 7319: 0x929C, - 7320: 0x9296, - 7321: 0x9293, - 7322: 0x929B, - 7323: 0x925A, - 7324: 0x92CF, - 7325: 0x92B9, - 7326: 0x92B7, - 7327: 0x92E9, - 7328: 0x930F, - 7329: 0x92FA, - 7330: 0x9344, - 7331: 0x932E, - 7332: 0x9319, - 7333: 0x9322, - 7334: 0x931A, - 7335: 0x9323, - 7336: 0x933A, - 7337: 0x9335, - 7338: 0x933B, - 7339: 0x935C, - 7340: 0x9360, - 7341: 0x937C, - 7342: 0x936E, - 7343: 0x9356, - 7344: 0x93B0, - 7345: 0x93AC, - 7346: 0x93AD, - 7347: 0x9394, - 7348: 0x93B9, - 7349: 0x93D6, - 7350: 0x93D7, - 7351: 0x93E8, - 7352: 0x93E5, - 7353: 0x93D8, - 7354: 0x93C3, - 7355: 0x93DD, - 7356: 0x93D0, - 7357: 0x93C8, - 7358: 0x93E4, - 7359: 0x941A, - 7360: 0x9414, - 7361: 0x9413, - 7362: 0x9403, - 7363: 0x9407, - 7364: 0x9410, - 7365: 0x9436, - 7366: 0x942B, - 7367: 0x9435, - 7368: 0x9421, - 7369: 0x943A, - 7370: 0x9441, - 7371: 0x9452, - 7372: 0x9444, - 7373: 0x945B, - 7374: 0x9460, - 7375: 0x9462, - 7376: 0x945E, - 7377: 0x946A, - 7378: 0x9229, - 7379: 0x9470, - 7380: 0x9475, - 7381: 0x9477, - 7382: 0x947D, - 7383: 0x945A, - 7384: 0x947C, - 7385: 0x947E, - 7386: 0x9481, - 7387: 0x947F, - 7388: 0x9582, - 7389: 0x9587, - 7390: 0x958A, - 7391: 0x9594, - 7392: 0x9596, - 7393: 0x9598, - 7394: 0x9599, - 7395: 0x95A0, - 7396: 0x95A8, - 7397: 0x95A7, - 7398: 0x95AD, - 7399: 0x95BC, - 7400: 0x95BB, - 7401: 0x95B9, - 7402: 0x95BE, - 7403: 0x95CA, - 7404: 0x6FF6, - 7405: 0x95C3, - 7406: 0x95CD, - 7407: 0x95CC, - 7408: 0x95D5, - 7409: 0x95D4, - 7410: 0x95D6, - 7411: 0x95DC, - 7412: 0x95E1, - 7413: 0x95E5, - 7414: 0x95E2, - 7415: 0x9621, - 7416: 0x9628, - 7417: 0x962E, - 7418: 0x962F, - 7419: 0x9642, - 7420: 0x964C, - 7421: 0x964F, - 7422: 0x964B, - 7423: 0x9677, - 7424: 0x965C, - 7425: 0x965E, - 7426: 0x965D, - 7427: 0x965F, - 7428: 0x9666, - 7429: 0x9672, - 7430: 0x966C, - 7431: 0x968D, - 7432: 0x9698, - 7433: 0x9695, - 7434: 0x9697, - 7435: 0x96AA, - 7436: 0x96A7, - 7437: 0x96B1, - 7438: 0x96B2, - 7439: 0x96B0, - 7440: 0x96B4, - 7441: 0x96B6, - 7442: 0x96B8, - 7443: 0x96B9, - 7444: 0x96CE, - 7445: 0x96CB, - 7446: 0x96C9, - 7447: 0x96CD, - 7448: 0x894D, - 7449: 0x96DC, - 7450: 0x970D, - 7451: 0x96D5, - 7452: 0x96F9, - 7453: 0x9704, - 7454: 0x9706, - 7455: 0x9708, - 7456: 0x9713, - 7457: 0x970E, - 7458: 0x9711, - 7459: 0x970F, - 7460: 0x9716, - 7461: 0x9719, - 7462: 0x9724, - 7463: 0x972A, - 7464: 0x9730, - 7465: 0x9739, - 7466: 0x973D, - 7467: 0x973E, - 7468: 0x9744, - 7469: 0x9746, - 7470: 0x9748, - 7471: 0x9742, - 7472: 0x9749, - 7473: 0x975C, - 7474: 0x9760, - 7475: 0x9764, - 7476: 0x9766, - 7477: 0x9768, - 7478: 0x52D2, - 7479: 0x976B, - 7480: 0x9771, - 7481: 0x9779, - 7482: 0x9785, - 7483: 0x977C, - 7484: 0x9781, - 7485: 0x977A, - 7486: 0x9786, - 7487: 0x978B, - 7488: 0x978F, - 7489: 0x9790, - 7490: 0x979C, - 7491: 0x97A8, - 7492: 0x97A6, - 7493: 0x97A3, - 7494: 0x97B3, - 7495: 0x97B4, - 7496: 0x97C3, - 7497: 0x97C6, - 7498: 0x97C8, - 7499: 0x97CB, - 7500: 0x97DC, - 7501: 0x97ED, - 7502: 0x9F4F, - 7503: 0x97F2, - 7504: 0x7ADF, - 7505: 0x97F6, - 7506: 0x97F5, - 7507: 0x980F, - 7508: 0x980C, - 7509: 0x9838, - 7510: 0x9824, - 7511: 0x9821, - 7512: 0x9837, - 7513: 0x983D, - 7514: 0x9846, - 7515: 0x984F, - 7516: 0x984B, - 7517: 0x986B, - 7518: 0x986F, - 7519: 0x9870, - 7520: 0x9871, - 7521: 0x9874, - 7522: 0x9873, - 7523: 0x98AA, - 7524: 0x98AF, - 7525: 0x98B1, - 7526: 0x98B6, - 7527: 0x98C4, - 7528: 0x98C3, - 7529: 0x98C6, - 7530: 0x98E9, - 7531: 0x98EB, - 7532: 0x9903, - 7533: 0x9909, - 7534: 0x9912, - 7535: 0x9914, - 7536: 0x9918, - 7537: 0x9921, - 7538: 0x991D, - 7539: 0x991E, - 7540: 0x9924, - 7541: 0x9920, - 7542: 0x992C, - 7543: 0x992E, - 7544: 0x993D, - 7545: 0x993E, - 7546: 0x9942, - 7547: 0x9949, - 7548: 0x9945, - 7549: 0x9950, - 7550: 0x994B, - 7551: 0x9951, - 7552: 0x9952, - 7553: 0x994C, - 7554: 0x9955, - 7555: 0x9997, - 7556: 0x9998, - 7557: 0x99A5, - 7558: 0x99AD, - 7559: 0x99AE, - 7560: 0x99BC, - 7561: 0x99DF, - 7562: 0x99DB, - 7563: 0x99DD, - 7564: 0x99D8, - 7565: 0x99D1, - 7566: 0x99ED, - 7567: 0x99EE, - 7568: 0x99F1, - 7569: 0x99F2, - 7570: 0x99FB, - 7571: 0x99F8, - 7572: 0x9A01, - 7573: 0x9A0F, - 7574: 0x9A05, - 7575: 0x99E2, - 7576: 0x9A19, - 7577: 0x9A2B, - 7578: 0x9A37, - 7579: 0x9A45, - 7580: 0x9A42, - 7581: 0x9A40, - 7582: 0x9A43, - 7583: 0x9A3E, - 7584: 0x9A55, - 7585: 0x9A4D, - 7586: 0x9A5B, - 7587: 0x9A57, - 7588: 0x9A5F, - 7589: 0x9A62, - 7590: 0x9A65, - 7591: 0x9A64, - 7592: 0x9A69, - 7593: 0x9A6B, - 7594: 0x9A6A, - 7595: 0x9AAD, - 7596: 0x9AB0, - 7597: 0x9ABC, - 7598: 0x9AC0, - 7599: 0x9ACF, - 7600: 0x9AD1, - 7601: 0x9AD3, - 7602: 0x9AD4, - 7603: 0x9ADE, - 7604: 0x9ADF, - 7605: 0x9AE2, - 7606: 0x9AE3, - 7607: 0x9AE6, - 7608: 0x9AEF, - 7609: 0x9AEB, - 7610: 0x9AEE, - 7611: 0x9AF4, - 7612: 0x9AF1, - 7613: 0x9AF7, - 7614: 0x9AFB, - 7615: 0x9B06, - 7616: 0x9B18, - 7617: 0x9B1A, - 7618: 0x9B1F, - 7619: 0x9B22, - 7620: 0x9B23, - 7621: 0x9B25, - 7622: 0x9B27, - 7623: 0x9B28, - 7624: 0x9B29, - 7625: 0x9B2A, - 7626: 0x9B2E, - 7627: 0x9B2F, - 7628: 0x9B32, - 7629: 0x9B44, - 7630: 0x9B43, - 7631: 0x9B4F, - 7632: 0x9B4D, - 7633: 0x9B4E, - 7634: 0x9B51, - 7635: 0x9B58, - 7636: 0x9B74, - 7637: 0x9B93, - 7638: 0x9B83, - 7639: 0x9B91, - 7640: 0x9B96, - 7641: 0x9B97, - 7642: 0x9B9F, - 7643: 0x9BA0, - 7644: 0x9BA8, - 7645: 0x9BB4, - 7646: 0x9BC0, - 7647: 0x9BCA, - 7648: 0x9BB9, - 7649: 0x9BC6, - 7650: 0x9BCF, - 7651: 0x9BD1, - 7652: 0x9BD2, - 7653: 0x9BE3, - 7654: 0x9BE2, - 7655: 0x9BE4, - 7656: 0x9BD4, - 7657: 0x9BE1, - 7658: 0x9C3A, - 7659: 0x9BF2, - 7660: 0x9BF1, - 7661: 0x9BF0, - 7662: 0x9C15, - 7663: 0x9C14, - 7664: 0x9C09, - 7665: 0x9C13, - 7666: 0x9C0C, - 7667: 0x9C06, - 7668: 0x9C08, - 7669: 0x9C12, - 7670: 0x9C0A, - 7671: 0x9C04, - 7672: 0x9C2E, - 7673: 0x9C1B, - 7674: 0x9C25, - 7675: 0x9C24, - 7676: 0x9C21, - 7677: 0x9C30, - 7678: 0x9C47, - 7679: 0x9C32, - 7680: 0x9C46, - 7681: 0x9C3E, - 7682: 0x9C5A, - 7683: 0x9C60, - 7684: 0x9C67, - 7685: 0x9C76, - 7686: 0x9C78, - 7687: 0x9CE7, - 7688: 0x9CEC, - 7689: 0x9CF0, - 7690: 0x9D09, - 7691: 0x9D08, - 7692: 0x9CEB, - 7693: 0x9D03, - 7694: 0x9D06, - 7695: 0x9D2A, - 7696: 0x9D26, - 7697: 0x9DAF, - 7698: 0x9D23, - 7699: 0x9D1F, - 7700: 0x9D44, - 7701: 0x9D15, - 7702: 0x9D12, - 7703: 0x9D41, - 7704: 0x9D3F, - 7705: 0x9D3E, - 7706: 0x9D46, - 7707: 0x9D48, - 7708: 0x9D5D, - 7709: 0x9D5E, - 7710: 0x9D64, - 7711: 0x9D51, - 7712: 0x9D50, - 7713: 0x9D59, - 7714: 0x9D72, - 7715: 0x9D89, - 7716: 0x9D87, - 7717: 0x9DAB, - 7718: 0x9D6F, - 7719: 0x9D7A, - 7720: 0x9D9A, - 7721: 0x9DA4, - 7722: 0x9DA9, - 7723: 0x9DB2, - 7724: 0x9DC4, - 7725: 0x9DC1, - 7726: 0x9DBB, - 7727: 0x9DB8, - 7728: 0x9DBA, - 7729: 0x9DC6, - 7730: 0x9DCF, - 7731: 0x9DC2, - 7732: 0x9DD9, - 7733: 0x9DD3, - 7734: 0x9DF8, - 7735: 0x9DE6, - 7736: 0x9DED, - 7737: 0x9DEF, - 7738: 0x9DFD, - 7739: 0x9E1A, - 7740: 0x9E1B, - 7741: 0x9E1E, - 7742: 0x9E75, - 7743: 0x9E79, - 7744: 0x9E7D, - 7745: 0x9E81, - 7746: 0x9E88, - 7747: 0x9E8B, - 7748: 0x9E8C, - 7749: 0x9E92, - 7750: 0x9E95, - 7751: 0x9E91, - 7752: 0x9E9D, - 7753: 0x9EA5, - 7754: 0x9EA9, - 7755: 0x9EB8, - 7756: 0x9EAA, - 7757: 0x9EAD, - 7758: 0x9761, - 7759: 0x9ECC, - 7760: 0x9ECE, - 7761: 0x9ECF, - 7762: 0x9ED0, - 7763: 0x9ED4, - 7764: 0x9EDC, - 7765: 0x9EDE, - 7766: 0x9EDD, - 7767: 0x9EE0, - 7768: 0x9EE5, - 7769: 0x9EE8, - 7770: 0x9EEF, - 7771: 0x9EF4, - 7772: 0x9EF6, - 7773: 0x9EF7, - 7774: 0x9EF9, - 7775: 0x9EFB, - 7776: 0x9EFC, - 7777: 0x9EFD, - 7778: 0x9F07, - 7779: 0x9F08, - 7780: 0x76B7, - 7781: 0x9F15, - 7782: 0x9F21, - 7783: 0x9F2C, - 7784: 0x9F3E, - 7785: 0x9F4A, - 7786: 0x9F52, - 7787: 0x9F54, - 7788: 0x9F63, - 7789: 0x9F5F, - 7790: 0x9F60, - 7791: 0x9F61, - 7792: 0x9F66, - 7793: 0x9F67, - 7794: 0x9F6C, - 7795: 0x9F6A, - 7796: 0x9F77, - 7797: 0x9F72, - 7798: 0x9F76, - 7799: 0x9F95, - 7800: 0x9F9C, - 7801: 0x9FA0, - 7802: 0x582F, - 7803: 0x69C7, - 7804: 0x9059, - 7805: 0x7464, - 7806: 0x51DC, - 7807: 0x7199, - 8272: 0x7E8A, - 8273: 0x891C, - 8274: 0x9348, - 8275: 0x9288, - 8276: 0x84DC, - 8277: 0x4FC9, - 8278: 0x70BB, - 8279: 0x6631, - 8280: 0x68C8, - 8281: 0x92F9, - 8282: 0x66FB, - 8283: 0x5F45, - 8284: 0x4E28, - 8285: 0x4EE1, - 8286: 0x4EFC, - 8287: 0x4F00, - 8288: 0x4F03, - 8289: 0x4F39, - 8290: 0x4F56, - 8291: 0x4F92, - 8292: 0x4F8A, - 8293: 0x4F9A, - 8294: 0x4F94, - 8295: 0x4FCD, - 8296: 0x5040, - 8297: 0x5022, - 8298: 0x4FFF, - 8299: 0x501E, - 8300: 0x5046, - 8301: 0x5070, - 8302: 0x5042, - 8303: 0x5094, - 8304: 0x50F4, - 8305: 0x50D8, - 8306: 0x514A, - 8307: 0x5164, - 8308: 0x519D, - 8309: 0x51BE, - 8310: 0x51EC, - 8311: 0x5215, - 8312: 0x529C, - 8313: 0x52A6, - 8314: 0x52C0, - 8315: 0x52DB, - 8316: 0x5300, - 8317: 0x5307, - 8318: 0x5324, - 8319: 0x5372, - 8320: 0x5393, - 8321: 0x53B2, - 8322: 0x53DD, - 8323: 0xFA0E, - 8324: 0x549C, - 8325: 0x548A, - 8326: 0x54A9, - 8327: 0x54FF, - 8328: 0x5586, - 8329: 0x5759, - 8330: 0x5765, - 8331: 0x57AC, - 8332: 0x57C8, - 8333: 0x57C7, - 8334: 0xFA0F, - 8335: 0xFA10, - 8336: 0x589E, - 8337: 0x58B2, - 8338: 0x590B, - 8339: 0x5953, - 8340: 0x595B, - 8341: 0x595D, - 8342: 0x5963, - 8343: 0x59A4, - 8344: 0x59BA, - 8345: 0x5B56, - 8346: 0x5BC0, - 8347: 0x752F, - 8348: 0x5BD8, - 8349: 0x5BEC, - 8350: 0x5C1E, - 8351: 0x5CA6, - 8352: 0x5CBA, - 8353: 0x5CF5, - 8354: 0x5D27, - 8355: 0x5D53, - 8356: 0xFA11, - 8357: 0x5D42, - 8358: 0x5D6D, - 8359: 0x5DB8, - 8360: 0x5DB9, - 8361: 0x5DD0, - 8362: 0x5F21, - 8363: 0x5F34, - 8364: 0x5F67, - 8365: 0x5FB7, - 8366: 0x5FDE, - 8367: 0x605D, - 8368: 0x6085, - 8369: 0x608A, - 8370: 0x60DE, - 8371: 0x60D5, - 8372: 0x6120, - 8373: 0x60F2, - 8374: 0x6111, - 8375: 0x6137, - 8376: 0x6130, - 8377: 0x6198, - 8378: 0x6213, - 8379: 0x62A6, - 8380: 0x63F5, - 8381: 0x6460, - 8382: 0x649D, - 8383: 0x64CE, - 8384: 0x654E, - 8385: 0x6600, - 8386: 0x6615, - 8387: 0x663B, - 8388: 0x6609, - 8389: 0x662E, - 8390: 0x661E, - 8391: 0x6624, - 8392: 0x6665, - 8393: 0x6657, - 8394: 0x6659, - 8395: 0xFA12, - 8396: 0x6673, - 8397: 0x6699, - 8398: 0x66A0, - 8399: 0x66B2, - 8400: 0x66BF, - 8401: 0x66FA, - 8402: 0x670E, - 8403: 0xF929, - 8404: 0x6766, - 8405: 0x67BB, - 8406: 0x6852, - 8407: 0x67C0, - 8408: 0x6801, - 8409: 0x6844, - 8410: 0x68CF, - 8411: 0xFA13, - 8412: 0x6968, - 8413: 0xFA14, - 8414: 0x6998, - 8415: 0x69E2, - 8416: 0x6A30, - 8417: 0x6A6B, - 8418: 0x6A46, - 8419: 0x6A73, - 8420: 0x6A7E, - 8421: 0x6AE2, - 8422: 0x6AE4, - 8423: 0x6BD6, - 8424: 0x6C3F, - 8425: 0x6C5C, - 8426: 0x6C86, - 8427: 0x6C6F, - 8428: 0x6CDA, - 8429: 0x6D04, - 8430: 0x6D87, - 8431: 0x6D6F, - 8432: 0x6D96, - 8433: 0x6DAC, - 8434: 0x6DCF, - 8435: 0x6DF8, - 8436: 0x6DF2, - 8437: 0x6DFC, - 8438: 0x6E39, - 8439: 0x6E5C, - 8440: 0x6E27, - 8441: 0x6E3C, - 8442: 0x6EBF, - 8443: 0x6F88, - 8444: 0x6FB5, - 8445: 0x6FF5, - 8446: 0x7005, - 8447: 0x7007, - 8448: 0x7028, - 8449: 0x7085, - 8450: 0x70AB, - 8451: 0x710F, - 8452: 0x7104, - 8453: 0x715C, - 8454: 0x7146, - 8455: 0x7147, - 8456: 0xFA15, - 8457: 0x71C1, - 8458: 0x71FE, - 8459: 0x72B1, - 8460: 0x72BE, - 8461: 0x7324, - 8462: 0xFA16, - 8463: 0x7377, - 8464: 0x73BD, - 8465: 0x73C9, - 8466: 0x73D6, - 8467: 0x73E3, - 8468: 0x73D2, - 8469: 0x7407, - 8470: 0x73F5, - 8471: 0x7426, - 8472: 0x742A, - 8473: 0x7429, - 8474: 0x742E, - 8475: 0x7462, - 8476: 0x7489, - 8477: 0x749F, - 8478: 0x7501, - 8479: 0x756F, - 8480: 0x7682, - 8481: 0x769C, - 8482: 0x769E, - 8483: 0x769B, - 8484: 0x76A6, - 8485: 0xFA17, - 8486: 0x7746, - 8487: 0x52AF, - 8488: 0x7821, - 8489: 0x784E, - 8490: 0x7864, - 8491: 0x787A, - 8492: 0x7930, - 8493: 0xFA18, - 8494: 0xFA19, - 8495: 0xFA1A, - 8496: 0x7994, - 8497: 0xFA1B, - 8498: 0x799B, - 8499: 0x7AD1, - 8500: 0x7AE7, - 8501: 0xFA1C, - 8502: 0x7AEB, - 8503: 0x7B9E, - 8504: 0xFA1D, - 8505: 0x7D48, - 8506: 0x7D5C, - 8507: 0x7DB7, - 8508: 0x7DA0, - 8509: 0x7DD6, - 8510: 0x7E52, - 8511: 0x7F47, - 8512: 0x7FA1, - 8513: 0xFA1E, - 8514: 0x8301, - 8515: 0x8362, - 8516: 0x837F, - 8517: 0x83C7, - 8518: 0x83F6, - 8519: 0x8448, - 8520: 0x84B4, - 8521: 0x8553, - 8522: 0x8559, - 8523: 0x856B, - 8524: 0xFA1F, - 8525: 0x85B0, - 8526: 0xFA20, - 8527: 0xFA21, - 8528: 0x8807, - 8529: 0x88F5, - 8530: 0x8A12, - 8531: 0x8A37, - 8532: 0x8A79, - 8533: 0x8AA7, - 8534: 0x8ABE, - 8535: 0x8ADF, - 8536: 0xFA22, - 8537: 0x8AF6, - 8538: 0x8B53, - 8539: 0x8B7F, - 8540: 0x8CF0, - 8541: 0x8CF4, - 8542: 0x8D12, - 8543: 0x8D76, - 8544: 0xFA23, - 8545: 0x8ECF, - 8546: 0xFA24, - 8547: 0xFA25, - 8548: 0x9067, - 8549: 0x90DE, - 8550: 0xFA26, - 8551: 0x9115, - 8552: 0x9127, - 8553: 0x91DA, - 8554: 0x91D7, - 8555: 0x91DE, - 8556: 0x91ED, - 8557: 0x91EE, - 8558: 0x91E4, - 8559: 0x91E5, - 8560: 0x9206, - 8561: 0x9210, - 8562: 0x920A, - 8563: 0x923A, - 8564: 0x9240, - 8565: 0x923C, - 8566: 0x924E, - 8567: 0x9259, - 8568: 0x9251, - 8569: 0x9239, - 8570: 0x9267, - 8571: 0x92A7, - 8572: 0x9277, - 8573: 0x9278, - 8574: 0x92E7, - 8575: 0x92D7, - 8576: 0x92D9, - 8577: 0x92D0, - 8578: 0xFA27, - 8579: 0x92D5, - 8580: 0x92E0, - 8581: 0x92D3, - 8582: 0x9325, - 8583: 0x9321, - 8584: 0x92FB, - 8585: 0xFA28, - 8586: 0x931E, - 8587: 0x92FF, - 8588: 0x931D, - 8589: 0x9302, - 8590: 0x9370, - 8591: 0x9357, - 8592: 0x93A4, - 8593: 0x93C6, - 8594: 0x93DE, - 8595: 0x93F8, - 8596: 0x9431, - 8597: 0x9445, - 8598: 0x9448, - 8599: 0x9592, - 8600: 0xF9DC, - 8601: 0xFA29, - 8602: 0x969D, - 8603: 0x96AF, - 8604: 0x9733, - 8605: 0x973B, - 8606: 0x9743, - 8607: 0x974D, - 8608: 0x974F, - 8609: 0x9751, - 8610: 0x9755, - 8611: 0x9857, - 8612: 0x9865, - 8613: 0xFA2A, - 8614: 0xFA2B, - 8615: 0x9927, - 8616: 0xFA2C, - 8617: 0x999E, - 8618: 0x9A4E, - 8619: 0x9AD9, - 8620: 0x9ADC, - 8621: 0x9B75, - 8622: 0x9B72, - 8623: 0x9B8F, - 8624: 0x9BB1, - 8625: 0x9BBB, - 8626: 0x9C00, - 8627: 0x9D70, - 8628: 0x9D6B, - 8629: 0xFA2D, - 8630: 0x9E19, - 8631: 0x9ED1, - 8634: 0x2170, - 8635: 0x2171, - 8636: 0x2172, - 8637: 0x2173, - 8638: 0x2174, - 8639: 0x2175, - 8640: 0x2176, - 8641: 0x2177, - 8642: 0x2178, - 8643: 0x2179, - 8644: 0xFFE2, - 8645: 0xFFE4, - 8646: 0xFF07, - 8647: 0xFF02, - 10716: 0x2170, - 10717: 0x2171, - 10718: 0x2172, - 10719: 0x2173, - 10720: 0x2174, - 10721: 0x2175, - 10722: 0x2176, - 10723: 0x2177, - 10724: 0x2178, - 10725: 0x2179, - 10726: 0x2160, - 10727: 0x2161, - 10728: 0x2162, - 10729: 0x2163, - 10730: 0x2164, - 10731: 0x2165, - 10732: 0x2166, - 10733: 0x2167, - 10734: 0x2168, - 10735: 0x2169, - 10736: 0xFFE2, - 10737: 0xFFE4, - 10738: 0xFF07, - 10739: 0xFF02, - 10740: 0x3231, - 10741: 0x2116, - 10742: 0x2121, - 10743: 0x2235, - 10744: 0x7E8A, - 10745: 0x891C, - 10746: 0x9348, - 10747: 0x9288, - 10748: 0x84DC, - 10749: 0x4FC9, - 10750: 0x70BB, - 10751: 0x6631, - 10752: 0x68C8, - 10753: 0x92F9, - 10754: 0x66FB, - 10755: 0x5F45, - 10756: 0x4E28, - 10757: 0x4EE1, - 10758: 0x4EFC, - 10759: 0x4F00, - 10760: 0x4F03, - 10761: 0x4F39, - 10762: 0x4F56, - 10763: 0x4F92, - 10764: 0x4F8A, - 10765: 0x4F9A, - 10766: 0x4F94, - 10767: 0x4FCD, - 10768: 0x5040, - 10769: 0x5022, - 10770: 0x4FFF, - 10771: 0x501E, - 10772: 0x5046, - 10773: 0x5070, - 10774: 0x5042, - 10775: 0x5094, - 10776: 0x50F4, - 10777: 0x50D8, - 10778: 0x514A, - 10779: 0x5164, - 10780: 0x519D, - 10781: 0x51BE, - 10782: 0x51EC, - 10783: 0x5215, - 10784: 0x529C, - 10785: 0x52A6, - 10786: 0x52C0, - 10787: 0x52DB, - 10788: 0x5300, - 10789: 0x5307, - 10790: 0x5324, - 10791: 0x5372, - 10792: 0x5393, - 10793: 0x53B2, - 10794: 0x53DD, - 10795: 0xFA0E, - 10796: 0x549C, - 10797: 0x548A, - 10798: 0x54A9, - 10799: 0x54FF, - 10800: 0x5586, - 10801: 0x5759, - 10802: 0x5765, - 10803: 0x57AC, - 10804: 0x57C8, - 10805: 0x57C7, - 10806: 0xFA0F, - 10807: 0xFA10, - 10808: 0x589E, - 10809: 0x58B2, - 10810: 0x590B, - 10811: 0x5953, - 10812: 0x595B, - 10813: 0x595D, - 10814: 0x5963, - 10815: 0x59A4, - 10816: 0x59BA, - 10817: 0x5B56, - 10818: 0x5BC0, - 10819: 0x752F, - 10820: 0x5BD8, - 10821: 0x5BEC, - 10822: 0x5C1E, - 10823: 0x5CA6, - 10824: 0x5CBA, - 10825: 0x5CF5, - 10826: 0x5D27, - 10827: 0x5D53, - 10828: 0xFA11, - 10829: 0x5D42, - 10830: 0x5D6D, - 10831: 0x5DB8, - 10832: 0x5DB9, - 10833: 0x5DD0, - 10834: 0x5F21, - 10835: 0x5F34, - 10836: 0x5F67, - 10837: 0x5FB7, - 10838: 0x5FDE, - 10839: 0x605D, - 10840: 0x6085, - 10841: 0x608A, - 10842: 0x60DE, - 10843: 0x60D5, - 10844: 0x6120, - 10845: 0x60F2, - 10846: 0x6111, - 10847: 0x6137, - 10848: 0x6130, - 10849: 0x6198, - 10850: 0x6213, - 10851: 0x62A6, - 10852: 0x63F5, - 10853: 0x6460, - 10854: 0x649D, - 10855: 0x64CE, - 10856: 0x654E, - 10857: 0x6600, - 10858: 0x6615, - 10859: 0x663B, - 10860: 0x6609, - 10861: 0x662E, - 10862: 0x661E, - 10863: 0x6624, - 10864: 0x6665, - 10865: 0x6657, - 10866: 0x6659, - 10867: 0xFA12, - 10868: 0x6673, - 10869: 0x6699, - 10870: 0x66A0, - 10871: 0x66B2, - 10872: 0x66BF, - 10873: 0x66FA, - 10874: 0x670E, - 10875: 0xF929, - 10876: 0x6766, - 10877: 0x67BB, - 10878: 0x6852, - 10879: 0x67C0, - 10880: 0x6801, - 10881: 0x6844, - 10882: 0x68CF, - 10883: 0xFA13, - 10884: 0x6968, - 10885: 0xFA14, - 10886: 0x6998, - 10887: 0x69E2, - 10888: 0x6A30, - 10889: 0x6A6B, - 10890: 0x6A46, - 10891: 0x6A73, - 10892: 0x6A7E, - 10893: 0x6AE2, - 10894: 0x6AE4, - 10895: 0x6BD6, - 10896: 0x6C3F, - 10897: 0x6C5C, - 10898: 0x6C86, - 10899: 0x6C6F, - 10900: 0x6CDA, - 10901: 0x6D04, - 10902: 0x6D87, - 10903: 0x6D6F, - 10904: 0x6D96, - 10905: 0x6DAC, - 10906: 0x6DCF, - 10907: 0x6DF8, - 10908: 0x6DF2, - 10909: 0x6DFC, - 10910: 0x6E39, - 10911: 0x6E5C, - 10912: 0x6E27, - 10913: 0x6E3C, - 10914: 0x6EBF, - 10915: 0x6F88, - 10916: 0x6FB5, - 10917: 0x6FF5, - 10918: 0x7005, - 10919: 0x7007, - 10920: 0x7028, - 10921: 0x7085, - 10922: 0x70AB, - 10923: 0x710F, - 10924: 0x7104, - 10925: 0x715C, - 10926: 0x7146, - 10927: 0x7147, - 10928: 0xFA15, - 10929: 0x71C1, - 10930: 0x71FE, - 10931: 0x72B1, - 10932: 0x72BE, - 10933: 0x7324, - 10934: 0xFA16, - 10935: 0x7377, - 10936: 0x73BD, - 10937: 0x73C9, - 10938: 0x73D6, - 10939: 0x73E3, - 10940: 0x73D2, - 10941: 0x7407, - 10942: 0x73F5, - 10943: 0x7426, - 10944: 0x742A, - 10945: 0x7429, - 10946: 0x742E, - 10947: 0x7462, - 10948: 0x7489, - 10949: 0x749F, - 10950: 0x7501, - 10951: 0x756F, - 10952: 0x7682, - 10953: 0x769C, - 10954: 0x769E, - 10955: 0x769B, - 10956: 0x76A6, - 10957: 0xFA17, - 10958: 0x7746, - 10959: 0x52AF, - 10960: 0x7821, - 10961: 0x784E, - 10962: 0x7864, - 10963: 0x787A, - 10964: 0x7930, - 10965: 0xFA18, - 10966: 0xFA19, - 10967: 0xFA1A, - 10968: 0x7994, - 10969: 0xFA1B, - 10970: 0x799B, - 10971: 0x7AD1, - 10972: 0x7AE7, - 10973: 0xFA1C, - 10974: 0x7AEB, - 10975: 0x7B9E, - 10976: 0xFA1D, - 10977: 0x7D48, - 10978: 0x7D5C, - 10979: 0x7DB7, - 10980: 0x7DA0, - 10981: 0x7DD6, - 10982: 0x7E52, - 10983: 0x7F47, - 10984: 0x7FA1, - 10985: 0xFA1E, - 10986: 0x8301, - 10987: 0x8362, - 10988: 0x837F, - 10989: 0x83C7, - 10990: 0x83F6, - 10991: 0x8448, - 10992: 0x84B4, - 10993: 0x8553, - 10994: 0x8559, - 10995: 0x856B, - 10996: 0xFA1F, - 10997: 0x85B0, - 10998: 0xFA20, - 10999: 0xFA21, - 11000: 0x8807, - 11001: 0x88F5, - 11002: 0x8A12, - 11003: 0x8A37, - 11004: 0x8A79, - 11005: 0x8AA7, - 11006: 0x8ABE, - 11007: 0x8ADF, - 11008: 0xFA22, - 11009: 0x8AF6, - 11010: 0x8B53, - 11011: 0x8B7F, - 11012: 0x8CF0, - 11013: 0x8CF4, - 11014: 0x8D12, - 11015: 0x8D76, - 11016: 0xFA23, - 11017: 0x8ECF, - 11018: 0xFA24, - 11019: 0xFA25, - 11020: 0x9067, - 11021: 0x90DE, - 11022: 0xFA26, - 11023: 0x9115, - 11024: 0x9127, - 11025: 0x91DA, - 11026: 0x91D7, - 11027: 0x91DE, - 11028: 0x91ED, - 11029: 0x91EE, - 11030: 0x91E4, - 11031: 0x91E5, - 11032: 0x9206, - 11033: 0x9210, - 11034: 0x920A, - 11035: 0x923A, - 11036: 0x9240, - 11037: 0x923C, - 11038: 0x924E, - 11039: 0x9259, - 11040: 0x9251, - 11041: 0x9239, - 11042: 0x9267, - 11043: 0x92A7, - 11044: 0x9277, - 11045: 0x9278, - 11046: 0x92E7, - 11047: 0x92D7, - 11048: 0x92D9, - 11049: 0x92D0, - 11050: 0xFA27, - 11051: 0x92D5, - 11052: 0x92E0, - 11053: 0x92D3, - 11054: 0x9325, - 11055: 0x9321, - 11056: 0x92FB, - 11057: 0xFA28, - 11058: 0x931E, - 11059: 0x92FF, - 11060: 0x931D, - 11061: 0x9302, - 11062: 0x9370, - 11063: 0x9357, - 11064: 0x93A4, - 11065: 0x93C6, - 11066: 0x93DE, - 11067: 0x93F8, - 11068: 0x9431, - 11069: 0x9445, - 11070: 0x9448, - 11071: 0x9592, - 11072: 0xF9DC, - 11073: 0xFA29, - 11074: 0x969D, - 11075: 0x96AF, - 11076: 0x9733, - 11077: 0x973B, - 11078: 0x9743, - 11079: 0x974D, - 11080: 0x974F, - 11081: 0x9751, - 11082: 0x9755, - 11083: 0x9857, - 11084: 0x9865, - 11085: 0xFA2A, - 11086: 0xFA2B, - 11087: 0x9927, - 11088: 0xFA2C, - 11089: 0x999E, - 11090: 0x9A4E, - 11091: 0x9AD9, - 11092: 0x9ADC, - 11093: 0x9B75, - 11094: 0x9B72, - 11095: 0x9B8F, - 11096: 0x9BB1, - 11097: 0x9BBB, - 11098: 0x9C00, - 11099: 0x9D70, - 11100: 0x9D6B, - 11101: 0xFA2D, - 11102: 0x9E19, - 11103: 0x9ED1, -} - -// jis0212Decode is the decoding table from JIS 0212 code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-jis0212.txt -var jis0212Decode = [...]uint16{ - 108: 0x02D8, - 109: 0x02C7, - 110: 0x00B8, - 111: 0x02D9, - 112: 0x02DD, - 113: 0x00AF, - 114: 0x02DB, - 115: 0x02DA, - 116: 0xFF5E, - 117: 0x0384, - 118: 0x0385, - 127: 0x00A1, - 128: 0x00A6, - 129: 0x00BF, - 168: 0x00BA, - 169: 0x00AA, - 170: 0x00A9, - 171: 0x00AE, - 172: 0x2122, - 173: 0x00A4, - 174: 0x2116, - 534: 0x0386, - 535: 0x0388, - 536: 0x0389, - 537: 0x038A, - 538: 0x03AA, - 540: 0x038C, - 542: 0x038E, - 543: 0x03AB, - 545: 0x038F, - 550: 0x03AC, - 551: 0x03AD, - 552: 0x03AE, - 553: 0x03AF, - 554: 0x03CA, - 555: 0x0390, - 556: 0x03CC, - 557: 0x03C2, - 558: 0x03CD, - 559: 0x03CB, - 560: 0x03B0, - 561: 0x03CE, - 597: 0x0402, - 598: 0x0403, - 599: 0x0404, - 600: 0x0405, - 601: 0x0406, - 602: 0x0407, - 603: 0x0408, - 604: 0x0409, - 605: 0x040A, - 606: 0x040B, - 607: 0x040C, - 608: 0x040E, - 609: 0x040F, - 645: 0x0452, - 646: 0x0453, - 647: 0x0454, - 648: 0x0455, - 649: 0x0456, - 650: 0x0457, - 651: 0x0458, - 652: 0x0459, - 653: 0x045A, - 654: 0x045B, - 655: 0x045C, - 656: 0x045E, - 657: 0x045F, - 752: 0x00C6, - 753: 0x0110, - 755: 0x0126, - 757: 0x0132, - 759: 0x0141, - 760: 0x013F, - 762: 0x014A, - 763: 0x00D8, - 764: 0x0152, - 766: 0x0166, - 767: 0x00DE, - 784: 0x00E6, - 785: 0x0111, - 786: 0x00F0, - 787: 0x0127, - 788: 0x0131, - 789: 0x0133, - 790: 0x0138, - 791: 0x0142, - 792: 0x0140, - 793: 0x0149, - 794: 0x014B, - 795: 0x00F8, - 796: 0x0153, - 797: 0x00DF, - 798: 0x0167, - 799: 0x00FE, - 846: 0x00C1, - 847: 0x00C0, - 848: 0x00C4, - 849: 0x00C2, - 850: 0x0102, - 851: 0x01CD, - 852: 0x0100, - 853: 0x0104, - 854: 0x00C5, - 855: 0x00C3, - 856: 0x0106, - 857: 0x0108, - 858: 0x010C, - 859: 0x00C7, - 860: 0x010A, - 861: 0x010E, - 862: 0x00C9, - 863: 0x00C8, - 864: 0x00CB, - 865: 0x00CA, - 866: 0x011A, - 867: 0x0116, - 868: 0x0112, - 869: 0x0118, - 871: 0x011C, - 872: 0x011E, - 873: 0x0122, - 874: 0x0120, - 875: 0x0124, - 876: 0x00CD, - 877: 0x00CC, - 878: 0x00CF, - 879: 0x00CE, - 880: 0x01CF, - 881: 0x0130, - 882: 0x012A, - 883: 0x012E, - 884: 0x0128, - 885: 0x0134, - 886: 0x0136, - 887: 0x0139, - 888: 0x013D, - 889: 0x013B, - 890: 0x0143, - 891: 0x0147, - 892: 0x0145, - 893: 0x00D1, - 894: 0x00D3, - 895: 0x00D2, - 896: 0x00D6, - 897: 0x00D4, - 898: 0x01D1, - 899: 0x0150, - 900: 0x014C, - 901: 0x00D5, - 902: 0x0154, - 903: 0x0158, - 904: 0x0156, - 905: 0x015A, - 906: 0x015C, - 907: 0x0160, - 908: 0x015E, - 909: 0x0164, - 910: 0x0162, - 911: 0x00DA, - 912: 0x00D9, - 913: 0x00DC, - 914: 0x00DB, - 915: 0x016C, - 916: 0x01D3, - 917: 0x0170, - 918: 0x016A, - 919: 0x0172, - 920: 0x016E, - 921: 0x0168, - 922: 0x01D7, - 923: 0x01DB, - 924: 0x01D9, - 925: 0x01D5, - 926: 0x0174, - 927: 0x00DD, - 928: 0x0178, - 929: 0x0176, - 930: 0x0179, - 931: 0x017D, - 932: 0x017B, - 940: 0x00E1, - 941: 0x00E0, - 942: 0x00E4, - 943: 0x00E2, - 944: 0x0103, - 945: 0x01CE, - 946: 0x0101, - 947: 0x0105, - 948: 0x00E5, - 949: 0x00E3, - 950: 0x0107, - 951: 0x0109, - 952: 0x010D, - 953: 0x00E7, - 954: 0x010B, - 955: 0x010F, - 956: 0x00E9, - 957: 0x00E8, - 958: 0x00EB, - 959: 0x00EA, - 960: 0x011B, - 961: 0x0117, - 962: 0x0113, - 963: 0x0119, - 964: 0x01F5, - 965: 0x011D, - 966: 0x011F, - 968: 0x0121, - 969: 0x0125, - 970: 0x00ED, - 971: 0x00EC, - 972: 0x00EF, - 973: 0x00EE, - 974: 0x01D0, - 976: 0x012B, - 977: 0x012F, - 978: 0x0129, - 979: 0x0135, - 980: 0x0137, - 981: 0x013A, - 982: 0x013E, - 983: 0x013C, - 984: 0x0144, - 985: 0x0148, - 986: 0x0146, - 987: 0x00F1, - 988: 0x00F3, - 989: 0x00F2, - 990: 0x00F6, - 991: 0x00F4, - 992: 0x01D2, - 993: 0x0151, - 994: 0x014D, - 995: 0x00F5, - 996: 0x0155, - 997: 0x0159, - 998: 0x0157, - 999: 0x015B, - 1000: 0x015D, - 1001: 0x0161, - 1002: 0x015F, - 1003: 0x0165, - 1004: 0x0163, - 1005: 0x00FA, - 1006: 0x00F9, - 1007: 0x00FC, - 1008: 0x00FB, - 1009: 0x016D, - 1010: 0x01D4, - 1011: 0x0171, - 1012: 0x016B, - 1013: 0x0173, - 1014: 0x016F, - 1015: 0x0169, - 1016: 0x01D8, - 1017: 0x01DC, - 1018: 0x01DA, - 1019: 0x01D6, - 1020: 0x0175, - 1021: 0x00FD, - 1022: 0x00FF, - 1023: 0x0177, - 1024: 0x017A, - 1025: 0x017E, - 1026: 0x017C, - 1410: 0x4E02, - 1411: 0x4E04, - 1412: 0x4E05, - 1413: 0x4E0C, - 1414: 0x4E12, - 1415: 0x4E1F, - 1416: 0x4E23, - 1417: 0x4E24, - 1418: 0x4E28, - 1419: 0x4E2B, - 1420: 0x4E2E, - 1421: 0x4E2F, - 1422: 0x4E30, - 1423: 0x4E35, - 1424: 0x4E40, - 1425: 0x4E41, - 1426: 0x4E44, - 1427: 0x4E47, - 1428: 0x4E51, - 1429: 0x4E5A, - 1430: 0x4E5C, - 1431: 0x4E63, - 1432: 0x4E68, - 1433: 0x4E69, - 1434: 0x4E74, - 1435: 0x4E75, - 1436: 0x4E79, - 1437: 0x4E7F, - 1438: 0x4E8D, - 1439: 0x4E96, - 1440: 0x4E97, - 1441: 0x4E9D, - 1442: 0x4EAF, - 1443: 0x4EB9, - 1444: 0x4EC3, - 1445: 0x4ED0, - 1446: 0x4EDA, - 1447: 0x4EDB, - 1448: 0x4EE0, - 1449: 0x4EE1, - 1450: 0x4EE2, - 1451: 0x4EE8, - 1452: 0x4EEF, - 1453: 0x4EF1, - 1454: 0x4EF3, - 1455: 0x4EF5, - 1456: 0x4EFD, - 1457: 0x4EFE, - 1458: 0x4EFF, - 1459: 0x4F00, - 1460: 0x4F02, - 1461: 0x4F03, - 1462: 0x4F08, - 1463: 0x4F0B, - 1464: 0x4F0C, - 1465: 0x4F12, - 1466: 0x4F15, - 1467: 0x4F16, - 1468: 0x4F17, - 1469: 0x4F19, - 1470: 0x4F2E, - 1471: 0x4F31, - 1472: 0x4F60, - 1473: 0x4F33, - 1474: 0x4F35, - 1475: 0x4F37, - 1476: 0x4F39, - 1477: 0x4F3B, - 1478: 0x4F3E, - 1479: 0x4F40, - 1480: 0x4F42, - 1481: 0x4F48, - 1482: 0x4F49, - 1483: 0x4F4B, - 1484: 0x4F4C, - 1485: 0x4F52, - 1486: 0x4F54, - 1487: 0x4F56, - 1488: 0x4F58, - 1489: 0x4F5F, - 1490: 0x4F63, - 1491: 0x4F6A, - 1492: 0x4F6C, - 1493: 0x4F6E, - 1494: 0x4F71, - 1495: 0x4F77, - 1496: 0x4F78, - 1497: 0x4F79, - 1498: 0x4F7A, - 1499: 0x4F7D, - 1500: 0x4F7E, - 1501: 0x4F81, - 1502: 0x4F82, - 1503: 0x4F84, - 1504: 0x4F85, - 1505: 0x4F89, - 1506: 0x4F8A, - 1507: 0x4F8C, - 1508: 0x4F8E, - 1509: 0x4F90, - 1510: 0x4F92, - 1511: 0x4F93, - 1512: 0x4F94, - 1513: 0x4F97, - 1514: 0x4F99, - 1515: 0x4F9A, - 1516: 0x4F9E, - 1517: 0x4F9F, - 1518: 0x4FB2, - 1519: 0x4FB7, - 1520: 0x4FB9, - 1521: 0x4FBB, - 1522: 0x4FBC, - 1523: 0x4FBD, - 1524: 0x4FBE, - 1525: 0x4FC0, - 1526: 0x4FC1, - 1527: 0x4FC5, - 1528: 0x4FC6, - 1529: 0x4FC8, - 1530: 0x4FC9, - 1531: 0x4FCB, - 1532: 0x4FCC, - 1533: 0x4FCD, - 1534: 0x4FCF, - 1535: 0x4FD2, - 1536: 0x4FDC, - 1537: 0x4FE0, - 1538: 0x4FE2, - 1539: 0x4FF0, - 1540: 0x4FF2, - 1541: 0x4FFC, - 1542: 0x4FFD, - 1543: 0x4FFF, - 1544: 0x5000, - 1545: 0x5001, - 1546: 0x5004, - 1547: 0x5007, - 1548: 0x500A, - 1549: 0x500C, - 1550: 0x500E, - 1551: 0x5010, - 1552: 0x5013, - 1553: 0x5017, - 1554: 0x5018, - 1555: 0x501B, - 1556: 0x501C, - 1557: 0x501D, - 1558: 0x501E, - 1559: 0x5022, - 1560: 0x5027, - 1561: 0x502E, - 1562: 0x5030, - 1563: 0x5032, - 1564: 0x5033, - 1565: 0x5035, - 1566: 0x5040, - 1567: 0x5041, - 1568: 0x5042, - 1569: 0x5045, - 1570: 0x5046, - 1571: 0x504A, - 1572: 0x504C, - 1573: 0x504E, - 1574: 0x5051, - 1575: 0x5052, - 1576: 0x5053, - 1577: 0x5057, - 1578: 0x5059, - 1579: 0x505F, - 1580: 0x5060, - 1581: 0x5062, - 1582: 0x5063, - 1583: 0x5066, - 1584: 0x5067, - 1585: 0x506A, - 1586: 0x506D, - 1587: 0x5070, - 1588: 0x5071, - 1589: 0x503B, - 1590: 0x5081, - 1591: 0x5083, - 1592: 0x5084, - 1593: 0x5086, - 1594: 0x508A, - 1595: 0x508E, - 1596: 0x508F, - 1597: 0x5090, - 1598: 0x5092, - 1599: 0x5093, - 1600: 0x5094, - 1601: 0x5096, - 1602: 0x509B, - 1603: 0x509C, - 1604: 0x509E, - 1605: 0x509F, - 1606: 0x50A0, - 1607: 0x50A1, - 1608: 0x50A2, - 1609: 0x50AA, - 1610: 0x50AF, - 1611: 0x50B0, - 1612: 0x50B9, - 1613: 0x50BA, - 1614: 0x50BD, - 1615: 0x50C0, - 1616: 0x50C3, - 1617: 0x50C4, - 1618: 0x50C7, - 1619: 0x50CC, - 1620: 0x50CE, - 1621: 0x50D0, - 1622: 0x50D3, - 1623: 0x50D4, - 1624: 0x50D8, - 1625: 0x50DC, - 1626: 0x50DD, - 1627: 0x50DF, - 1628: 0x50E2, - 1629: 0x50E4, - 1630: 0x50E6, - 1631: 0x50E8, - 1632: 0x50E9, - 1633: 0x50EF, - 1634: 0x50F1, - 1635: 0x50F6, - 1636: 0x50FA, - 1637: 0x50FE, - 1638: 0x5103, - 1639: 0x5106, - 1640: 0x5107, - 1641: 0x5108, - 1642: 0x510B, - 1643: 0x510C, - 1644: 0x510D, - 1645: 0x510E, - 1646: 0x50F2, - 1647: 0x5110, - 1648: 0x5117, - 1649: 0x5119, - 1650: 0x511B, - 1651: 0x511C, - 1652: 0x511D, - 1653: 0x511E, - 1654: 0x5123, - 1655: 0x5127, - 1656: 0x5128, - 1657: 0x512C, - 1658: 0x512D, - 1659: 0x512F, - 1660: 0x5131, - 1661: 0x5133, - 1662: 0x5134, - 1663: 0x5135, - 1664: 0x5138, - 1665: 0x5139, - 1666: 0x5142, - 1667: 0x514A, - 1668: 0x514F, - 1669: 0x5153, - 1670: 0x5155, - 1671: 0x5157, - 1672: 0x5158, - 1673: 0x515F, - 1674: 0x5164, - 1675: 0x5166, - 1676: 0x517E, - 1677: 0x5183, - 1678: 0x5184, - 1679: 0x518B, - 1680: 0x518E, - 1681: 0x5198, - 1682: 0x519D, - 1683: 0x51A1, - 1684: 0x51A3, - 1685: 0x51AD, - 1686: 0x51B8, - 1687: 0x51BA, - 1688: 0x51BC, - 1689: 0x51BE, - 1690: 0x51BF, - 1691: 0x51C2, - 1692: 0x51C8, - 1693: 0x51CF, - 1694: 0x51D1, - 1695: 0x51D2, - 1696: 0x51D3, - 1697: 0x51D5, - 1698: 0x51D8, - 1699: 0x51DE, - 1700: 0x51E2, - 1701: 0x51E5, - 1702: 0x51EE, - 1703: 0x51F2, - 1704: 0x51F3, - 1705: 0x51F4, - 1706: 0x51F7, - 1707: 0x5201, - 1708: 0x5202, - 1709: 0x5205, - 1710: 0x5212, - 1711: 0x5213, - 1712: 0x5215, - 1713: 0x5216, - 1714: 0x5218, - 1715: 0x5222, - 1716: 0x5228, - 1717: 0x5231, - 1718: 0x5232, - 1719: 0x5235, - 1720: 0x523C, - 1721: 0x5245, - 1722: 0x5249, - 1723: 0x5255, - 1724: 0x5257, - 1725: 0x5258, - 1726: 0x525A, - 1727: 0x525C, - 1728: 0x525F, - 1729: 0x5260, - 1730: 0x5261, - 1731: 0x5266, - 1732: 0x526E, - 1733: 0x5277, - 1734: 0x5278, - 1735: 0x5279, - 1736: 0x5280, - 1737: 0x5282, - 1738: 0x5285, - 1739: 0x528A, - 1740: 0x528C, - 1741: 0x5293, - 1742: 0x5295, - 1743: 0x5296, - 1744: 0x5297, - 1745: 0x5298, - 1746: 0x529A, - 1747: 0x529C, - 1748: 0x52A4, - 1749: 0x52A5, - 1750: 0x52A6, - 1751: 0x52A7, - 1752: 0x52AF, - 1753: 0x52B0, - 1754: 0x52B6, - 1755: 0x52B7, - 1756: 0x52B8, - 1757: 0x52BA, - 1758: 0x52BB, - 1759: 0x52BD, - 1760: 0x52C0, - 1761: 0x52C4, - 1762: 0x52C6, - 1763: 0x52C8, - 1764: 0x52CC, - 1765: 0x52CF, - 1766: 0x52D1, - 1767: 0x52D4, - 1768: 0x52D6, - 1769: 0x52DB, - 1770: 0x52DC, - 1771: 0x52E1, - 1772: 0x52E5, - 1773: 0x52E8, - 1774: 0x52E9, - 1775: 0x52EA, - 1776: 0x52EC, - 1777: 0x52F0, - 1778: 0x52F1, - 1779: 0x52F4, - 1780: 0x52F6, - 1781: 0x52F7, - 1782: 0x5300, - 1783: 0x5303, - 1784: 0x530A, - 1785: 0x530B, - 1786: 0x530C, - 1787: 0x5311, - 1788: 0x5313, - 1789: 0x5318, - 1790: 0x531B, - 1791: 0x531C, - 1792: 0x531E, - 1793: 0x531F, - 1794: 0x5325, - 1795: 0x5327, - 1796: 0x5328, - 1797: 0x5329, - 1798: 0x532B, - 1799: 0x532C, - 1800: 0x532D, - 1801: 0x5330, - 1802: 0x5332, - 1803: 0x5335, - 1804: 0x533C, - 1805: 0x533D, - 1806: 0x533E, - 1807: 0x5342, - 1808: 0x534C, - 1809: 0x534B, - 1810: 0x5359, - 1811: 0x535B, - 1812: 0x5361, - 1813: 0x5363, - 1814: 0x5365, - 1815: 0x536C, - 1816: 0x536D, - 1817: 0x5372, - 1818: 0x5379, - 1819: 0x537E, - 1820: 0x5383, - 1821: 0x5387, - 1822: 0x5388, - 1823: 0x538E, - 1824: 0x5393, - 1825: 0x5394, - 1826: 0x5399, - 1827: 0x539D, - 1828: 0x53A1, - 1829: 0x53A4, - 1830: 0x53AA, - 1831: 0x53AB, - 1832: 0x53AF, - 1833: 0x53B2, - 1834: 0x53B4, - 1835: 0x53B5, - 1836: 0x53B7, - 1837: 0x53B8, - 1838: 0x53BA, - 1839: 0x53BD, - 1840: 0x53C0, - 1841: 0x53C5, - 1842: 0x53CF, - 1843: 0x53D2, - 1844: 0x53D3, - 1845: 0x53D5, - 1846: 0x53DA, - 1847: 0x53DD, - 1848: 0x53DE, - 1849: 0x53E0, - 1850: 0x53E6, - 1851: 0x53E7, - 1852: 0x53F5, - 1853: 0x5402, - 1854: 0x5413, - 1855: 0x541A, - 1856: 0x5421, - 1857: 0x5427, - 1858: 0x5428, - 1859: 0x542A, - 1860: 0x542F, - 1861: 0x5431, - 1862: 0x5434, - 1863: 0x5435, - 1864: 0x5443, - 1865: 0x5444, - 1866: 0x5447, - 1867: 0x544D, - 1868: 0x544F, - 1869: 0x545E, - 1870: 0x5462, - 1871: 0x5464, - 1872: 0x5466, - 1873: 0x5467, - 1874: 0x5469, - 1875: 0x546B, - 1876: 0x546D, - 1877: 0x546E, - 1878: 0x5474, - 1879: 0x547F, - 1880: 0x5481, - 1881: 0x5483, - 1882: 0x5485, - 1883: 0x5488, - 1884: 0x5489, - 1885: 0x548D, - 1886: 0x5491, - 1887: 0x5495, - 1888: 0x5496, - 1889: 0x549C, - 1890: 0x549F, - 1891: 0x54A1, - 1892: 0x54A6, - 1893: 0x54A7, - 1894: 0x54A9, - 1895: 0x54AA, - 1896: 0x54AD, - 1897: 0x54AE, - 1898: 0x54B1, - 1899: 0x54B7, - 1900: 0x54B9, - 1901: 0x54BA, - 1902: 0x54BB, - 1903: 0x54BF, - 1904: 0x54C6, - 1905: 0x54CA, - 1906: 0x54CD, - 1907: 0x54CE, - 1908: 0x54E0, - 1909: 0x54EA, - 1910: 0x54EC, - 1911: 0x54EF, - 1912: 0x54F6, - 1913: 0x54FC, - 1914: 0x54FE, - 1915: 0x54FF, - 1916: 0x5500, - 1917: 0x5501, - 1918: 0x5505, - 1919: 0x5508, - 1920: 0x5509, - 1921: 0x550C, - 1922: 0x550D, - 1923: 0x550E, - 1924: 0x5515, - 1925: 0x552A, - 1926: 0x552B, - 1927: 0x5532, - 1928: 0x5535, - 1929: 0x5536, - 1930: 0x553B, - 1931: 0x553C, - 1932: 0x553D, - 1933: 0x5541, - 1934: 0x5547, - 1935: 0x5549, - 1936: 0x554A, - 1937: 0x554D, - 1938: 0x5550, - 1939: 0x5551, - 1940: 0x5558, - 1941: 0x555A, - 1942: 0x555B, - 1943: 0x555E, - 1944: 0x5560, - 1945: 0x5561, - 1946: 0x5564, - 1947: 0x5566, - 1948: 0x557F, - 1949: 0x5581, - 1950: 0x5582, - 1951: 0x5586, - 1952: 0x5588, - 1953: 0x558E, - 1954: 0x558F, - 1955: 0x5591, - 1956: 0x5592, - 1957: 0x5593, - 1958: 0x5594, - 1959: 0x5597, - 1960: 0x55A3, - 1961: 0x55A4, - 1962: 0x55AD, - 1963: 0x55B2, - 1964: 0x55BF, - 1965: 0x55C1, - 1966: 0x55C3, - 1967: 0x55C6, - 1968: 0x55C9, - 1969: 0x55CB, - 1970: 0x55CC, - 1971: 0x55CE, - 1972: 0x55D1, - 1973: 0x55D2, - 1974: 0x55D3, - 1975: 0x55D7, - 1976: 0x55D8, - 1977: 0x55DB, - 1978: 0x55DE, - 1979: 0x55E2, - 1980: 0x55E9, - 1981: 0x55F6, - 1982: 0x55FF, - 1983: 0x5605, - 1984: 0x5608, - 1985: 0x560A, - 1986: 0x560D, - 1987: 0x560E, - 1988: 0x560F, - 1989: 0x5610, - 1990: 0x5611, - 1991: 0x5612, - 1992: 0x5619, - 1993: 0x562C, - 1994: 0x5630, - 1995: 0x5633, - 1996: 0x5635, - 1997: 0x5637, - 1998: 0x5639, - 1999: 0x563B, - 2000: 0x563C, - 2001: 0x563D, - 2002: 0x563F, - 2003: 0x5640, - 2004: 0x5641, - 2005: 0x5643, - 2006: 0x5644, - 2007: 0x5646, - 2008: 0x5649, - 2009: 0x564B, - 2010: 0x564D, - 2011: 0x564F, - 2012: 0x5654, - 2013: 0x565E, - 2014: 0x5660, - 2015: 0x5661, - 2016: 0x5662, - 2017: 0x5663, - 2018: 0x5666, - 2019: 0x5669, - 2020: 0x566D, - 2021: 0x566F, - 2022: 0x5671, - 2023: 0x5672, - 2024: 0x5675, - 2025: 0x5684, - 2026: 0x5685, - 2027: 0x5688, - 2028: 0x568B, - 2029: 0x568C, - 2030: 0x5695, - 2031: 0x5699, - 2032: 0x569A, - 2033: 0x569D, - 2034: 0x569E, - 2035: 0x569F, - 2036: 0x56A6, - 2037: 0x56A7, - 2038: 0x56A8, - 2039: 0x56A9, - 2040: 0x56AB, - 2041: 0x56AC, - 2042: 0x56AD, - 2043: 0x56B1, - 2044: 0x56B3, - 2045: 0x56B7, - 2046: 0x56BE, - 2047: 0x56C5, - 2048: 0x56C9, - 2049: 0x56CA, - 2050: 0x56CB, - 2051: 0x56CF, - 2052: 0x56D0, - 2053: 0x56CC, - 2054: 0x56CD, - 2055: 0x56D9, - 2056: 0x56DC, - 2057: 0x56DD, - 2058: 0x56DF, - 2059: 0x56E1, - 2060: 0x56E4, - 2061: 0x56E5, - 2062: 0x56E6, - 2063: 0x56E7, - 2064: 0x56E8, - 2065: 0x56F1, - 2066: 0x56EB, - 2067: 0x56ED, - 2068: 0x56F6, - 2069: 0x56F7, - 2070: 0x5701, - 2071: 0x5702, - 2072: 0x5707, - 2073: 0x570A, - 2074: 0x570C, - 2075: 0x5711, - 2076: 0x5715, - 2077: 0x571A, - 2078: 0x571B, - 2079: 0x571D, - 2080: 0x5720, - 2081: 0x5722, - 2082: 0x5723, - 2083: 0x5724, - 2084: 0x5725, - 2085: 0x5729, - 2086: 0x572A, - 2087: 0x572C, - 2088: 0x572E, - 2089: 0x572F, - 2090: 0x5733, - 2091: 0x5734, - 2092: 0x573D, - 2093: 0x573E, - 2094: 0x573F, - 2095: 0x5745, - 2096: 0x5746, - 2097: 0x574C, - 2098: 0x574D, - 2099: 0x5752, - 2100: 0x5762, - 2101: 0x5765, - 2102: 0x5767, - 2103: 0x5768, - 2104: 0x576B, - 2105: 0x576D, - 2106: 0x576E, - 2107: 0x576F, - 2108: 0x5770, - 2109: 0x5771, - 2110: 0x5773, - 2111: 0x5774, - 2112: 0x5775, - 2113: 0x5777, - 2114: 0x5779, - 2115: 0x577A, - 2116: 0x577B, - 2117: 0x577C, - 2118: 0x577E, - 2119: 0x5781, - 2120: 0x5783, - 2121: 0x578C, - 2122: 0x5794, - 2123: 0x5797, - 2124: 0x5799, - 2125: 0x579A, - 2126: 0x579C, - 2127: 0x579D, - 2128: 0x579E, - 2129: 0x579F, - 2130: 0x57A1, - 2131: 0x5795, - 2132: 0x57A7, - 2133: 0x57A8, - 2134: 0x57A9, - 2135: 0x57AC, - 2136: 0x57B8, - 2137: 0x57BD, - 2138: 0x57C7, - 2139: 0x57C8, - 2140: 0x57CC, - 2141: 0x57CF, - 2142: 0x57D5, - 2143: 0x57DD, - 2144: 0x57DE, - 2145: 0x57E4, - 2146: 0x57E6, - 2147: 0x57E7, - 2148: 0x57E9, - 2149: 0x57ED, - 2150: 0x57F0, - 2151: 0x57F5, - 2152: 0x57F6, - 2153: 0x57F8, - 2154: 0x57FD, - 2155: 0x57FE, - 2156: 0x57FF, - 2157: 0x5803, - 2158: 0x5804, - 2159: 0x5808, - 2160: 0x5809, - 2161: 0x57E1, - 2162: 0x580C, - 2163: 0x580D, - 2164: 0x581B, - 2165: 0x581E, - 2166: 0x581F, - 2167: 0x5820, - 2168: 0x5826, - 2169: 0x5827, - 2170: 0x582D, - 2171: 0x5832, - 2172: 0x5839, - 2173: 0x583F, - 2174: 0x5849, - 2175: 0x584C, - 2176: 0x584D, - 2177: 0x584F, - 2178: 0x5850, - 2179: 0x5855, - 2180: 0x585F, - 2181: 0x5861, - 2182: 0x5864, - 2183: 0x5867, - 2184: 0x5868, - 2185: 0x5878, - 2186: 0x587C, - 2187: 0x587F, - 2188: 0x5880, - 2189: 0x5881, - 2190: 0x5887, - 2191: 0x5888, - 2192: 0x5889, - 2193: 0x588A, - 2194: 0x588C, - 2195: 0x588D, - 2196: 0x588F, - 2197: 0x5890, - 2198: 0x5894, - 2199: 0x5896, - 2200: 0x589D, - 2201: 0x58A0, - 2202: 0x58A1, - 2203: 0x58A2, - 2204: 0x58A6, - 2205: 0x58A9, - 2206: 0x58B1, - 2207: 0x58B2, - 2208: 0x58C4, - 2209: 0x58BC, - 2210: 0x58C2, - 2211: 0x58C8, - 2212: 0x58CD, - 2213: 0x58CE, - 2214: 0x58D0, - 2215: 0x58D2, - 2216: 0x58D4, - 2217: 0x58D6, - 2218: 0x58DA, - 2219: 0x58DD, - 2220: 0x58E1, - 2221: 0x58E2, - 2222: 0x58E9, - 2223: 0x58F3, - 2224: 0x5905, - 2225: 0x5906, - 2226: 0x590B, - 2227: 0x590C, - 2228: 0x5912, - 2229: 0x5913, - 2230: 0x5914, - 2231: 0x8641, - 2232: 0x591D, - 2233: 0x5921, - 2234: 0x5923, - 2235: 0x5924, - 2236: 0x5928, - 2237: 0x592F, - 2238: 0x5930, - 2239: 0x5933, - 2240: 0x5935, - 2241: 0x5936, - 2242: 0x593F, - 2243: 0x5943, - 2244: 0x5946, - 2245: 0x5952, - 2246: 0x5953, - 2247: 0x5959, - 2248: 0x595B, - 2249: 0x595D, - 2250: 0x595E, - 2251: 0x595F, - 2252: 0x5961, - 2253: 0x5963, - 2254: 0x596B, - 2255: 0x596D, - 2256: 0x596F, - 2257: 0x5972, - 2258: 0x5975, - 2259: 0x5976, - 2260: 0x5979, - 2261: 0x597B, - 2262: 0x597C, - 2263: 0x598B, - 2264: 0x598C, - 2265: 0x598E, - 2266: 0x5992, - 2267: 0x5995, - 2268: 0x5997, - 2269: 0x599F, - 2270: 0x59A4, - 2271: 0x59A7, - 2272: 0x59AD, - 2273: 0x59AE, - 2274: 0x59AF, - 2275: 0x59B0, - 2276: 0x59B3, - 2277: 0x59B7, - 2278: 0x59BA, - 2279: 0x59BC, - 2280: 0x59C1, - 2281: 0x59C3, - 2282: 0x59C4, - 2283: 0x59C8, - 2284: 0x59CA, - 2285: 0x59CD, - 2286: 0x59D2, - 2287: 0x59DD, - 2288: 0x59DE, - 2289: 0x59DF, - 2290: 0x59E3, - 2291: 0x59E4, - 2292: 0x59E7, - 2293: 0x59EE, - 2294: 0x59EF, - 2295: 0x59F1, - 2296: 0x59F2, - 2297: 0x59F4, - 2298: 0x59F7, - 2299: 0x5A00, - 2300: 0x5A04, - 2301: 0x5A0C, - 2302: 0x5A0D, - 2303: 0x5A0E, - 2304: 0x5A12, - 2305: 0x5A13, - 2306: 0x5A1E, - 2307: 0x5A23, - 2308: 0x5A24, - 2309: 0x5A27, - 2310: 0x5A28, - 2311: 0x5A2A, - 2312: 0x5A2D, - 2313: 0x5A30, - 2314: 0x5A44, - 2315: 0x5A45, - 2316: 0x5A47, - 2317: 0x5A48, - 2318: 0x5A4C, - 2319: 0x5A50, - 2320: 0x5A55, - 2321: 0x5A5E, - 2322: 0x5A63, - 2323: 0x5A65, - 2324: 0x5A67, - 2325: 0x5A6D, - 2326: 0x5A77, - 2327: 0x5A7A, - 2328: 0x5A7B, - 2329: 0x5A7E, - 2330: 0x5A8B, - 2331: 0x5A90, - 2332: 0x5A93, - 2333: 0x5A96, - 2334: 0x5A99, - 2335: 0x5A9C, - 2336: 0x5A9E, - 2337: 0x5A9F, - 2338: 0x5AA0, - 2339: 0x5AA2, - 2340: 0x5AA7, - 2341: 0x5AAC, - 2342: 0x5AB1, - 2343: 0x5AB2, - 2344: 0x5AB3, - 2345: 0x5AB5, - 2346: 0x5AB8, - 2347: 0x5ABA, - 2348: 0x5ABB, - 2349: 0x5ABF, - 2350: 0x5AC4, - 2351: 0x5AC6, - 2352: 0x5AC8, - 2353: 0x5ACF, - 2354: 0x5ADA, - 2355: 0x5ADC, - 2356: 0x5AE0, - 2357: 0x5AE5, - 2358: 0x5AEA, - 2359: 0x5AEE, - 2360: 0x5AF5, - 2361: 0x5AF6, - 2362: 0x5AFD, - 2363: 0x5B00, - 2364: 0x5B01, - 2365: 0x5B08, - 2366: 0x5B17, - 2367: 0x5B34, - 2368: 0x5B19, - 2369: 0x5B1B, - 2370: 0x5B1D, - 2371: 0x5B21, - 2372: 0x5B25, - 2373: 0x5B2D, - 2374: 0x5B38, - 2375: 0x5B41, - 2376: 0x5B4B, - 2377: 0x5B4C, - 2378: 0x5B52, - 2379: 0x5B56, - 2380: 0x5B5E, - 2381: 0x5B68, - 2382: 0x5B6E, - 2383: 0x5B6F, - 2384: 0x5B7C, - 2385: 0x5B7D, - 2386: 0x5B7E, - 2387: 0x5B7F, - 2388: 0x5B81, - 2389: 0x5B84, - 2390: 0x5B86, - 2391: 0x5B8A, - 2392: 0x5B8E, - 2393: 0x5B90, - 2394: 0x5B91, - 2395: 0x5B93, - 2396: 0x5B94, - 2397: 0x5B96, - 2398: 0x5BA8, - 2399: 0x5BA9, - 2400: 0x5BAC, - 2401: 0x5BAD, - 2402: 0x5BAF, - 2403: 0x5BB1, - 2404: 0x5BB2, - 2405: 0x5BB7, - 2406: 0x5BBA, - 2407: 0x5BBC, - 2408: 0x5BC0, - 2409: 0x5BC1, - 2410: 0x5BCD, - 2411: 0x5BCF, - 2412: 0x5BD6, - 2413: 0x5BD7, - 2414: 0x5BD8, - 2415: 0x5BD9, - 2416: 0x5BDA, - 2417: 0x5BE0, - 2418: 0x5BEF, - 2419: 0x5BF1, - 2420: 0x5BF4, - 2421: 0x5BFD, - 2422: 0x5C0C, - 2423: 0x5C17, - 2424: 0x5C1E, - 2425: 0x5C1F, - 2426: 0x5C23, - 2427: 0x5C26, - 2428: 0x5C29, - 2429: 0x5C2B, - 2430: 0x5C2C, - 2431: 0x5C2E, - 2432: 0x5C30, - 2433: 0x5C32, - 2434: 0x5C35, - 2435: 0x5C36, - 2436: 0x5C59, - 2437: 0x5C5A, - 2438: 0x5C5C, - 2439: 0x5C62, - 2440: 0x5C63, - 2441: 0x5C67, - 2442: 0x5C68, - 2443: 0x5C69, - 2444: 0x5C6D, - 2445: 0x5C70, - 2446: 0x5C74, - 2447: 0x5C75, - 2448: 0x5C7A, - 2449: 0x5C7B, - 2450: 0x5C7C, - 2451: 0x5C7D, - 2452: 0x5C87, - 2453: 0x5C88, - 2454: 0x5C8A, - 2455: 0x5C8F, - 2456: 0x5C92, - 2457: 0x5C9D, - 2458: 0x5C9F, - 2459: 0x5CA0, - 2460: 0x5CA2, - 2461: 0x5CA3, - 2462: 0x5CA6, - 2463: 0x5CAA, - 2464: 0x5CB2, - 2465: 0x5CB4, - 2466: 0x5CB5, - 2467: 0x5CBA, - 2468: 0x5CC9, - 2469: 0x5CCB, - 2470: 0x5CD2, - 2471: 0x5CDD, - 2472: 0x5CD7, - 2473: 0x5CEE, - 2474: 0x5CF1, - 2475: 0x5CF2, - 2476: 0x5CF4, - 2477: 0x5D01, - 2478: 0x5D06, - 2479: 0x5D0D, - 2480: 0x5D12, - 2481: 0x5D2B, - 2482: 0x5D23, - 2483: 0x5D24, - 2484: 0x5D26, - 2485: 0x5D27, - 2486: 0x5D31, - 2487: 0x5D34, - 2488: 0x5D39, - 2489: 0x5D3D, - 2490: 0x5D3F, - 2491: 0x5D42, - 2492: 0x5D43, - 2493: 0x5D46, - 2494: 0x5D48, - 2495: 0x5D55, - 2496: 0x5D51, - 2497: 0x5D59, - 2498: 0x5D4A, - 2499: 0x5D5F, - 2500: 0x5D60, - 2501: 0x5D61, - 2502: 0x5D62, - 2503: 0x5D64, - 2504: 0x5D6A, - 2505: 0x5D6D, - 2506: 0x5D70, - 2507: 0x5D79, - 2508: 0x5D7A, - 2509: 0x5D7E, - 2510: 0x5D7F, - 2511: 0x5D81, - 2512: 0x5D83, - 2513: 0x5D88, - 2514: 0x5D8A, - 2515: 0x5D92, - 2516: 0x5D93, - 2517: 0x5D94, - 2518: 0x5D95, - 2519: 0x5D99, - 2520: 0x5D9B, - 2521: 0x5D9F, - 2522: 0x5DA0, - 2523: 0x5DA7, - 2524: 0x5DAB, - 2525: 0x5DB0, - 2526: 0x5DB4, - 2527: 0x5DB8, - 2528: 0x5DB9, - 2529: 0x5DC3, - 2530: 0x5DC7, - 2531: 0x5DCB, - 2532: 0x5DD0, - 2533: 0x5DCE, - 2534: 0x5DD8, - 2535: 0x5DD9, - 2536: 0x5DE0, - 2537: 0x5DE4, - 2538: 0x5DE9, - 2539: 0x5DF8, - 2540: 0x5DF9, - 2541: 0x5E00, - 2542: 0x5E07, - 2543: 0x5E0D, - 2544: 0x5E12, - 2545: 0x5E14, - 2546: 0x5E15, - 2547: 0x5E18, - 2548: 0x5E1F, - 2549: 0x5E20, - 2550: 0x5E2E, - 2551: 0x5E28, - 2552: 0x5E32, - 2553: 0x5E35, - 2554: 0x5E3E, - 2555: 0x5E4B, - 2556: 0x5E50, - 2557: 0x5E49, - 2558: 0x5E51, - 2559: 0x5E56, - 2560: 0x5E58, - 2561: 0x5E5B, - 2562: 0x5E5C, - 2563: 0x5E5E, - 2564: 0x5E68, - 2565: 0x5E6A, - 2566: 0x5E6B, - 2567: 0x5E6C, - 2568: 0x5E6D, - 2569: 0x5E6E, - 2570: 0x5E70, - 2571: 0x5E80, - 2572: 0x5E8B, - 2573: 0x5E8E, - 2574: 0x5EA2, - 2575: 0x5EA4, - 2576: 0x5EA5, - 2577: 0x5EA8, - 2578: 0x5EAA, - 2579: 0x5EAC, - 2580: 0x5EB1, - 2581: 0x5EB3, - 2582: 0x5EBD, - 2583: 0x5EBE, - 2584: 0x5EBF, - 2585: 0x5EC6, - 2586: 0x5ECC, - 2587: 0x5ECB, - 2588: 0x5ECE, - 2589: 0x5ED1, - 2590: 0x5ED2, - 2591: 0x5ED4, - 2592: 0x5ED5, - 2593: 0x5EDC, - 2594: 0x5EDE, - 2595: 0x5EE5, - 2596: 0x5EEB, - 2597: 0x5F02, - 2598: 0x5F06, - 2599: 0x5F07, - 2600: 0x5F08, - 2601: 0x5F0E, - 2602: 0x5F19, - 2603: 0x5F1C, - 2604: 0x5F1D, - 2605: 0x5F21, - 2606: 0x5F22, - 2607: 0x5F23, - 2608: 0x5F24, - 2609: 0x5F28, - 2610: 0x5F2B, - 2611: 0x5F2C, - 2612: 0x5F2E, - 2613: 0x5F30, - 2614: 0x5F34, - 2615: 0x5F36, - 2616: 0x5F3B, - 2617: 0x5F3D, - 2618: 0x5F3F, - 2619: 0x5F40, - 2620: 0x5F44, - 2621: 0x5F45, - 2622: 0x5F47, - 2623: 0x5F4D, - 2624: 0x5F50, - 2625: 0x5F54, - 2626: 0x5F58, - 2627: 0x5F5B, - 2628: 0x5F60, - 2629: 0x5F63, - 2630: 0x5F64, - 2631: 0x5F67, - 2632: 0x5F6F, - 2633: 0x5F72, - 2634: 0x5F74, - 2635: 0x5F75, - 2636: 0x5F78, - 2637: 0x5F7A, - 2638: 0x5F7D, - 2639: 0x5F7E, - 2640: 0x5F89, - 2641: 0x5F8D, - 2642: 0x5F8F, - 2643: 0x5F96, - 2644: 0x5F9C, - 2645: 0x5F9D, - 2646: 0x5FA2, - 2647: 0x5FA7, - 2648: 0x5FAB, - 2649: 0x5FA4, - 2650: 0x5FAC, - 2651: 0x5FAF, - 2652: 0x5FB0, - 2653: 0x5FB1, - 2654: 0x5FB8, - 2655: 0x5FC4, - 2656: 0x5FC7, - 2657: 0x5FC8, - 2658: 0x5FC9, - 2659: 0x5FCB, - 2660: 0x5FD0, - 2661: 0x5FD1, - 2662: 0x5FD2, - 2663: 0x5FD3, - 2664: 0x5FD4, - 2665: 0x5FDE, - 2666: 0x5FE1, - 2667: 0x5FE2, - 2668: 0x5FE8, - 2669: 0x5FE9, - 2670: 0x5FEA, - 2671: 0x5FEC, - 2672: 0x5FED, - 2673: 0x5FEE, - 2674: 0x5FEF, - 2675: 0x5FF2, - 2676: 0x5FF3, - 2677: 0x5FF6, - 2678: 0x5FFA, - 2679: 0x5FFC, - 2680: 0x6007, - 2681: 0x600A, - 2682: 0x600D, - 2683: 0x6013, - 2684: 0x6014, - 2685: 0x6017, - 2686: 0x6018, - 2687: 0x601A, - 2688: 0x601F, - 2689: 0x6024, - 2690: 0x602D, - 2691: 0x6033, - 2692: 0x6035, - 2693: 0x6040, - 2694: 0x6047, - 2695: 0x6048, - 2696: 0x6049, - 2697: 0x604C, - 2698: 0x6051, - 2699: 0x6054, - 2700: 0x6056, - 2701: 0x6057, - 2702: 0x605D, - 2703: 0x6061, - 2704: 0x6067, - 2705: 0x6071, - 2706: 0x607E, - 2707: 0x607F, - 2708: 0x6082, - 2709: 0x6086, - 2710: 0x6088, - 2711: 0x608A, - 2712: 0x608E, - 2713: 0x6091, - 2714: 0x6093, - 2715: 0x6095, - 2716: 0x6098, - 2717: 0x609D, - 2718: 0x609E, - 2719: 0x60A2, - 2720: 0x60A4, - 2721: 0x60A5, - 2722: 0x60A8, - 2723: 0x60B0, - 2724: 0x60B1, - 2725: 0x60B7, - 2726: 0x60BB, - 2727: 0x60BE, - 2728: 0x60C2, - 2729: 0x60C4, - 2730: 0x60C8, - 2731: 0x60C9, - 2732: 0x60CA, - 2733: 0x60CB, - 2734: 0x60CE, - 2735: 0x60CF, - 2736: 0x60D4, - 2737: 0x60D5, - 2738: 0x60D9, - 2739: 0x60DB, - 2740: 0x60DD, - 2741: 0x60DE, - 2742: 0x60E2, - 2743: 0x60E5, - 2744: 0x60F2, - 2745: 0x60F5, - 2746: 0x60F8, - 2747: 0x60FC, - 2748: 0x60FD, - 2749: 0x6102, - 2750: 0x6107, - 2751: 0x610A, - 2752: 0x610C, - 2753: 0x6110, - 2754: 0x6111, - 2755: 0x6112, - 2756: 0x6113, - 2757: 0x6114, - 2758: 0x6116, - 2759: 0x6117, - 2760: 0x6119, - 2761: 0x611C, - 2762: 0x611E, - 2763: 0x6122, - 2764: 0x612A, - 2765: 0x612B, - 2766: 0x6130, - 2767: 0x6131, - 2768: 0x6135, - 2769: 0x6136, - 2770: 0x6137, - 2771: 0x6139, - 2772: 0x6141, - 2773: 0x6145, - 2774: 0x6146, - 2775: 0x6149, - 2776: 0x615E, - 2777: 0x6160, - 2778: 0x616C, - 2779: 0x6172, - 2780: 0x6178, - 2781: 0x617B, - 2782: 0x617C, - 2783: 0x617F, - 2784: 0x6180, - 2785: 0x6181, - 2786: 0x6183, - 2787: 0x6184, - 2788: 0x618B, - 2789: 0x618D, - 2790: 0x6192, - 2791: 0x6193, - 2792: 0x6197, - 2793: 0x6198, - 2794: 0x619C, - 2795: 0x619D, - 2796: 0x619F, - 2797: 0x61A0, - 2798: 0x61A5, - 2799: 0x61A8, - 2800: 0x61AA, - 2801: 0x61AD, - 2802: 0x61B8, - 2803: 0x61B9, - 2804: 0x61BC, - 2805: 0x61C0, - 2806: 0x61C1, - 2807: 0x61C2, - 2808: 0x61CE, - 2809: 0x61CF, - 2810: 0x61D5, - 2811: 0x61DC, - 2812: 0x61DD, - 2813: 0x61DE, - 2814: 0x61DF, - 2815: 0x61E1, - 2816: 0x61E2, - 2817: 0x61E7, - 2818: 0x61E9, - 2819: 0x61E5, - 2820: 0x61EC, - 2821: 0x61ED, - 2822: 0x61EF, - 2823: 0x6201, - 2824: 0x6203, - 2825: 0x6204, - 2826: 0x6207, - 2827: 0x6213, - 2828: 0x6215, - 2829: 0x621C, - 2830: 0x6220, - 2831: 0x6222, - 2832: 0x6223, - 2833: 0x6227, - 2834: 0x6229, - 2835: 0x622B, - 2836: 0x6239, - 2837: 0x623D, - 2838: 0x6242, - 2839: 0x6243, - 2840: 0x6244, - 2841: 0x6246, - 2842: 0x624C, - 2843: 0x6250, - 2844: 0x6251, - 2845: 0x6252, - 2846: 0x6254, - 2847: 0x6256, - 2848: 0x625A, - 2849: 0x625C, - 2850: 0x6264, - 2851: 0x626D, - 2852: 0x626F, - 2853: 0x6273, - 2854: 0x627A, - 2855: 0x627D, - 2856: 0x628D, - 2857: 0x628E, - 2858: 0x628F, - 2859: 0x6290, - 2860: 0x62A6, - 2861: 0x62A8, - 2862: 0x62B3, - 2863: 0x62B6, - 2864: 0x62B7, - 2865: 0x62BA, - 2866: 0x62BE, - 2867: 0x62BF, - 2868: 0x62C4, - 2869: 0x62CE, - 2870: 0x62D5, - 2871: 0x62D6, - 2872: 0x62DA, - 2873: 0x62EA, - 2874: 0x62F2, - 2875: 0x62F4, - 2876: 0x62FC, - 2877: 0x62FD, - 2878: 0x6303, - 2879: 0x6304, - 2880: 0x630A, - 2881: 0x630B, - 2882: 0x630D, - 2883: 0x6310, - 2884: 0x6313, - 2885: 0x6316, - 2886: 0x6318, - 2887: 0x6329, - 2888: 0x632A, - 2889: 0x632D, - 2890: 0x6335, - 2891: 0x6336, - 2892: 0x6339, - 2893: 0x633C, - 2894: 0x6341, - 2895: 0x6342, - 2896: 0x6343, - 2897: 0x6344, - 2898: 0x6346, - 2899: 0x634A, - 2900: 0x634B, - 2901: 0x634E, - 2902: 0x6352, - 2903: 0x6353, - 2904: 0x6354, - 2905: 0x6358, - 2906: 0x635B, - 2907: 0x6365, - 2908: 0x6366, - 2909: 0x636C, - 2910: 0x636D, - 2911: 0x6371, - 2912: 0x6374, - 2913: 0x6375, - 2914: 0x6378, - 2915: 0x637C, - 2916: 0x637D, - 2917: 0x637F, - 2918: 0x6382, - 2919: 0x6384, - 2920: 0x6387, - 2921: 0x638A, - 2922: 0x6390, - 2923: 0x6394, - 2924: 0x6395, - 2925: 0x6399, - 2926: 0x639A, - 2927: 0x639E, - 2928: 0x63A4, - 2929: 0x63A6, - 2930: 0x63AD, - 2931: 0x63AE, - 2932: 0x63AF, - 2933: 0x63BD, - 2934: 0x63C1, - 2935: 0x63C5, - 2936: 0x63C8, - 2937: 0x63CE, - 2938: 0x63D1, - 2939: 0x63D3, - 2940: 0x63D4, - 2941: 0x63D5, - 2942: 0x63DC, - 2943: 0x63E0, - 2944: 0x63E5, - 2945: 0x63EA, - 2946: 0x63EC, - 2947: 0x63F2, - 2948: 0x63F3, - 2949: 0x63F5, - 2950: 0x63F8, - 2951: 0x63F9, - 2952: 0x6409, - 2953: 0x640A, - 2954: 0x6410, - 2955: 0x6412, - 2956: 0x6414, - 2957: 0x6418, - 2958: 0x641E, - 2959: 0x6420, - 2960: 0x6422, - 2961: 0x6424, - 2962: 0x6425, - 2963: 0x6429, - 2964: 0x642A, - 2965: 0x642F, - 2966: 0x6430, - 2967: 0x6435, - 2968: 0x643D, - 2969: 0x643F, - 2970: 0x644B, - 2971: 0x644F, - 2972: 0x6451, - 2973: 0x6452, - 2974: 0x6453, - 2975: 0x6454, - 2976: 0x645A, - 2977: 0x645B, - 2978: 0x645C, - 2979: 0x645D, - 2980: 0x645F, - 2981: 0x6460, - 2982: 0x6461, - 2983: 0x6463, - 2984: 0x646D, - 2985: 0x6473, - 2986: 0x6474, - 2987: 0x647B, - 2988: 0x647D, - 2989: 0x6485, - 2990: 0x6487, - 2991: 0x648F, - 2992: 0x6490, - 2993: 0x6491, - 2994: 0x6498, - 2995: 0x6499, - 2996: 0x649B, - 2997: 0x649D, - 2998: 0x649F, - 2999: 0x64A1, - 3000: 0x64A3, - 3001: 0x64A6, - 3002: 0x64A8, - 3003: 0x64AC, - 3004: 0x64B3, - 3005: 0x64BD, - 3006: 0x64BE, - 3007: 0x64BF, - 3008: 0x64C4, - 3009: 0x64C9, - 3010: 0x64CA, - 3011: 0x64CB, - 3012: 0x64CC, - 3013: 0x64CE, - 3014: 0x64D0, - 3015: 0x64D1, - 3016: 0x64D5, - 3017: 0x64D7, - 3018: 0x64E4, - 3019: 0x64E5, - 3020: 0x64E9, - 3021: 0x64EA, - 3022: 0x64ED, - 3023: 0x64F0, - 3024: 0x64F5, - 3025: 0x64F7, - 3026: 0x64FB, - 3027: 0x64FF, - 3028: 0x6501, - 3029: 0x6504, - 3030: 0x6508, - 3031: 0x6509, - 3032: 0x650A, - 3033: 0x650F, - 3034: 0x6513, - 3035: 0x6514, - 3036: 0x6516, - 3037: 0x6519, - 3038: 0x651B, - 3039: 0x651E, - 3040: 0x651F, - 3041: 0x6522, - 3042: 0x6526, - 3043: 0x6529, - 3044: 0x652E, - 3045: 0x6531, - 3046: 0x653A, - 3047: 0x653C, - 3048: 0x653D, - 3049: 0x6543, - 3050: 0x6547, - 3051: 0x6549, - 3052: 0x6550, - 3053: 0x6552, - 3054: 0x6554, - 3055: 0x655F, - 3056: 0x6560, - 3057: 0x6567, - 3058: 0x656B, - 3059: 0x657A, - 3060: 0x657D, - 3061: 0x6581, - 3062: 0x6585, - 3063: 0x658A, - 3064: 0x6592, - 3065: 0x6595, - 3066: 0x6598, - 3067: 0x659D, - 3068: 0x65A0, - 3069: 0x65A3, - 3070: 0x65A6, - 3071: 0x65AE, - 3072: 0x65B2, - 3073: 0x65B3, - 3074: 0x65B4, - 3075: 0x65BF, - 3076: 0x65C2, - 3077: 0x65C8, - 3078: 0x65C9, - 3079: 0x65CE, - 3080: 0x65D0, - 3081: 0x65D4, - 3082: 0x65D6, - 3083: 0x65D8, - 3084: 0x65DF, - 3085: 0x65F0, - 3086: 0x65F2, - 3087: 0x65F4, - 3088: 0x65F5, - 3089: 0x65F9, - 3090: 0x65FE, - 3091: 0x65FF, - 3092: 0x6600, - 3093: 0x6604, - 3094: 0x6608, - 3095: 0x6609, - 3096: 0x660D, - 3097: 0x6611, - 3098: 0x6612, - 3099: 0x6615, - 3100: 0x6616, - 3101: 0x661D, - 3102: 0x661E, - 3103: 0x6621, - 3104: 0x6622, - 3105: 0x6623, - 3106: 0x6624, - 3107: 0x6626, - 3108: 0x6629, - 3109: 0x662A, - 3110: 0x662B, - 3111: 0x662C, - 3112: 0x662E, - 3113: 0x6630, - 3114: 0x6631, - 3115: 0x6633, - 3116: 0x6639, - 3117: 0x6637, - 3118: 0x6640, - 3119: 0x6645, - 3120: 0x6646, - 3121: 0x664A, - 3122: 0x664C, - 3123: 0x6651, - 3124: 0x664E, - 3125: 0x6657, - 3126: 0x6658, - 3127: 0x6659, - 3128: 0x665B, - 3129: 0x665C, - 3130: 0x6660, - 3131: 0x6661, - 3132: 0x66FB, - 3133: 0x666A, - 3134: 0x666B, - 3135: 0x666C, - 3136: 0x667E, - 3137: 0x6673, - 3138: 0x6675, - 3139: 0x667F, - 3140: 0x6677, - 3141: 0x6678, - 3142: 0x6679, - 3143: 0x667B, - 3144: 0x6680, - 3145: 0x667C, - 3146: 0x668B, - 3147: 0x668C, - 3148: 0x668D, - 3149: 0x6690, - 3150: 0x6692, - 3151: 0x6699, - 3152: 0x669A, - 3153: 0x669B, - 3154: 0x669C, - 3155: 0x669F, - 3156: 0x66A0, - 3157: 0x66A4, - 3158: 0x66AD, - 3159: 0x66B1, - 3160: 0x66B2, - 3161: 0x66B5, - 3162: 0x66BB, - 3163: 0x66BF, - 3164: 0x66C0, - 3165: 0x66C2, - 3166: 0x66C3, - 3167: 0x66C8, - 3168: 0x66CC, - 3169: 0x66CE, - 3170: 0x66CF, - 3171: 0x66D4, - 3172: 0x66DB, - 3173: 0x66DF, - 3174: 0x66E8, - 3175: 0x66EB, - 3176: 0x66EC, - 3177: 0x66EE, - 3178: 0x66FA, - 3179: 0x6705, - 3180: 0x6707, - 3181: 0x670E, - 3182: 0x6713, - 3183: 0x6719, - 3184: 0x671C, - 3185: 0x6720, - 3186: 0x6722, - 3187: 0x6733, - 3188: 0x673E, - 3189: 0x6745, - 3190: 0x6747, - 3191: 0x6748, - 3192: 0x674C, - 3193: 0x6754, - 3194: 0x6755, - 3195: 0x675D, - 3196: 0x6766, - 3197: 0x676C, - 3198: 0x676E, - 3199: 0x6774, - 3200: 0x6776, - 3201: 0x677B, - 3202: 0x6781, - 3203: 0x6784, - 3204: 0x678E, - 3205: 0x678F, - 3206: 0x6791, - 3207: 0x6793, - 3208: 0x6796, - 3209: 0x6798, - 3210: 0x6799, - 3211: 0x679B, - 3212: 0x67B0, - 3213: 0x67B1, - 3214: 0x67B2, - 3215: 0x67B5, - 3216: 0x67BB, - 3217: 0x67BC, - 3218: 0x67BD, - 3219: 0x67F9, - 3220: 0x67C0, - 3221: 0x67C2, - 3222: 0x67C3, - 3223: 0x67C5, - 3224: 0x67C8, - 3225: 0x67C9, - 3226: 0x67D2, - 3227: 0x67D7, - 3228: 0x67D9, - 3229: 0x67DC, - 3230: 0x67E1, - 3231: 0x67E6, - 3232: 0x67F0, - 3233: 0x67F2, - 3234: 0x67F6, - 3235: 0x67F7, - 3236: 0x6852, - 3237: 0x6814, - 3238: 0x6819, - 3239: 0x681D, - 3240: 0x681F, - 3241: 0x6828, - 3242: 0x6827, - 3243: 0x682C, - 3244: 0x682D, - 3245: 0x682F, - 3246: 0x6830, - 3247: 0x6831, - 3248: 0x6833, - 3249: 0x683B, - 3250: 0x683F, - 3251: 0x6844, - 3252: 0x6845, - 3253: 0x684A, - 3254: 0x684C, - 3255: 0x6855, - 3256: 0x6857, - 3257: 0x6858, - 3258: 0x685B, - 3259: 0x686B, - 3260: 0x686E, - 3261: 0x686F, - 3262: 0x6870, - 3263: 0x6871, - 3264: 0x6872, - 3265: 0x6875, - 3266: 0x6879, - 3267: 0x687A, - 3268: 0x687B, - 3269: 0x687C, - 3270: 0x6882, - 3271: 0x6884, - 3272: 0x6886, - 3273: 0x6888, - 3274: 0x6896, - 3275: 0x6898, - 3276: 0x689A, - 3277: 0x689C, - 3278: 0x68A1, - 3279: 0x68A3, - 3280: 0x68A5, - 3281: 0x68A9, - 3282: 0x68AA, - 3283: 0x68AE, - 3284: 0x68B2, - 3285: 0x68BB, - 3286: 0x68C5, - 3287: 0x68C8, - 3288: 0x68CC, - 3289: 0x68CF, - 3290: 0x68D0, - 3291: 0x68D1, - 3292: 0x68D3, - 3293: 0x68D6, - 3294: 0x68D9, - 3295: 0x68DC, - 3296: 0x68DD, - 3297: 0x68E5, - 3298: 0x68E8, - 3299: 0x68EA, - 3300: 0x68EB, - 3301: 0x68EC, - 3302: 0x68ED, - 3303: 0x68F0, - 3304: 0x68F1, - 3305: 0x68F5, - 3306: 0x68F6, - 3307: 0x68FB, - 3308: 0x68FC, - 3309: 0x68FD, - 3310: 0x6906, - 3311: 0x6909, - 3312: 0x690A, - 3313: 0x6910, - 3314: 0x6911, - 3315: 0x6913, - 3316: 0x6916, - 3317: 0x6917, - 3318: 0x6931, - 3319: 0x6933, - 3320: 0x6935, - 3321: 0x6938, - 3322: 0x693B, - 3323: 0x6942, - 3324: 0x6945, - 3325: 0x6949, - 3326: 0x694E, - 3327: 0x6957, - 3328: 0x695B, - 3329: 0x6963, - 3330: 0x6964, - 3331: 0x6965, - 3332: 0x6966, - 3333: 0x6968, - 3334: 0x6969, - 3335: 0x696C, - 3336: 0x6970, - 3337: 0x6971, - 3338: 0x6972, - 3339: 0x697A, - 3340: 0x697B, - 3341: 0x697F, - 3342: 0x6980, - 3343: 0x698D, - 3344: 0x6992, - 3345: 0x6996, - 3346: 0x6998, - 3347: 0x69A1, - 3348: 0x69A5, - 3349: 0x69A6, - 3350: 0x69A8, - 3351: 0x69AB, - 3352: 0x69AD, - 3353: 0x69AF, - 3354: 0x69B7, - 3355: 0x69B8, - 3356: 0x69BA, - 3357: 0x69BC, - 3358: 0x69C5, - 3359: 0x69C8, - 3360: 0x69D1, - 3361: 0x69D6, - 3362: 0x69D7, - 3363: 0x69E2, - 3364: 0x69E5, - 3365: 0x69EE, - 3366: 0x69EF, - 3367: 0x69F1, - 3368: 0x69F3, - 3369: 0x69F5, - 3370: 0x69FE, - 3371: 0x6A00, - 3372: 0x6A01, - 3373: 0x6A03, - 3374: 0x6A0F, - 3375: 0x6A11, - 3376: 0x6A15, - 3377: 0x6A1A, - 3378: 0x6A1D, - 3379: 0x6A20, - 3380: 0x6A24, - 3381: 0x6A28, - 3382: 0x6A30, - 3383: 0x6A32, - 3384: 0x6A34, - 3385: 0x6A37, - 3386: 0x6A3B, - 3387: 0x6A3E, - 3388: 0x6A3F, - 3389: 0x6A45, - 3390: 0x6A46, - 3391: 0x6A49, - 3392: 0x6A4A, - 3393: 0x6A4E, - 3394: 0x6A50, - 3395: 0x6A51, - 3396: 0x6A52, - 3397: 0x6A55, - 3398: 0x6A56, - 3399: 0x6A5B, - 3400: 0x6A64, - 3401: 0x6A67, - 3402: 0x6A6A, - 3403: 0x6A71, - 3404: 0x6A73, - 3405: 0x6A7E, - 3406: 0x6A81, - 3407: 0x6A83, - 3408: 0x6A86, - 3409: 0x6A87, - 3410: 0x6A89, - 3411: 0x6A8B, - 3412: 0x6A91, - 3413: 0x6A9B, - 3414: 0x6A9D, - 3415: 0x6A9E, - 3416: 0x6A9F, - 3417: 0x6AA5, - 3418: 0x6AAB, - 3419: 0x6AAF, - 3420: 0x6AB0, - 3421: 0x6AB1, - 3422: 0x6AB4, - 3423: 0x6ABD, - 3424: 0x6ABE, - 3425: 0x6ABF, - 3426: 0x6AC6, - 3427: 0x6AC9, - 3428: 0x6AC8, - 3429: 0x6ACC, - 3430: 0x6AD0, - 3431: 0x6AD4, - 3432: 0x6AD5, - 3433: 0x6AD6, - 3434: 0x6ADC, - 3435: 0x6ADD, - 3436: 0x6AE4, - 3437: 0x6AE7, - 3438: 0x6AEC, - 3439: 0x6AF0, - 3440: 0x6AF1, - 3441: 0x6AF2, - 3442: 0x6AFC, - 3443: 0x6AFD, - 3444: 0x6B02, - 3445: 0x6B03, - 3446: 0x6B06, - 3447: 0x6B07, - 3448: 0x6B09, - 3449: 0x6B0F, - 3450: 0x6B10, - 3451: 0x6B11, - 3452: 0x6B17, - 3453: 0x6B1B, - 3454: 0x6B1E, - 3455: 0x6B24, - 3456: 0x6B28, - 3457: 0x6B2B, - 3458: 0x6B2C, - 3459: 0x6B2F, - 3460: 0x6B35, - 3461: 0x6B36, - 3462: 0x6B3B, - 3463: 0x6B3F, - 3464: 0x6B46, - 3465: 0x6B4A, - 3466: 0x6B4D, - 3467: 0x6B52, - 3468: 0x6B56, - 3469: 0x6B58, - 3470: 0x6B5D, - 3471: 0x6B60, - 3472: 0x6B67, - 3473: 0x6B6B, - 3474: 0x6B6E, - 3475: 0x6B70, - 3476: 0x6B75, - 3477: 0x6B7D, - 3478: 0x6B7E, - 3479: 0x6B82, - 3480: 0x6B85, - 3481: 0x6B97, - 3482: 0x6B9B, - 3483: 0x6B9F, - 3484: 0x6BA0, - 3485: 0x6BA2, - 3486: 0x6BA3, - 3487: 0x6BA8, - 3488: 0x6BA9, - 3489: 0x6BAC, - 3490: 0x6BAD, - 3491: 0x6BAE, - 3492: 0x6BB0, - 3493: 0x6BB8, - 3494: 0x6BB9, - 3495: 0x6BBD, - 3496: 0x6BBE, - 3497: 0x6BC3, - 3498: 0x6BC4, - 3499: 0x6BC9, - 3500: 0x6BCC, - 3501: 0x6BD6, - 3502: 0x6BDA, - 3503: 0x6BE1, - 3504: 0x6BE3, - 3505: 0x6BE6, - 3506: 0x6BE7, - 3507: 0x6BEE, - 3508: 0x6BF1, - 3509: 0x6BF7, - 3510: 0x6BF9, - 3511: 0x6BFF, - 3512: 0x6C02, - 3513: 0x6C04, - 3514: 0x6C05, - 3515: 0x6C09, - 3516: 0x6C0D, - 3517: 0x6C0E, - 3518: 0x6C10, - 3519: 0x6C12, - 3520: 0x6C19, - 3521: 0x6C1F, - 3522: 0x6C26, - 3523: 0x6C27, - 3524: 0x6C28, - 3525: 0x6C2C, - 3526: 0x6C2E, - 3527: 0x6C33, - 3528: 0x6C35, - 3529: 0x6C36, - 3530: 0x6C3A, - 3531: 0x6C3B, - 3532: 0x6C3F, - 3533: 0x6C4A, - 3534: 0x6C4B, - 3535: 0x6C4D, - 3536: 0x6C4F, - 3537: 0x6C52, - 3538: 0x6C54, - 3539: 0x6C59, - 3540: 0x6C5B, - 3541: 0x6C5C, - 3542: 0x6C6B, - 3543: 0x6C6D, - 3544: 0x6C6F, - 3545: 0x6C74, - 3546: 0x6C76, - 3547: 0x6C78, - 3548: 0x6C79, - 3549: 0x6C7B, - 3550: 0x6C85, - 3551: 0x6C86, - 3552: 0x6C87, - 3553: 0x6C89, - 3554: 0x6C94, - 3555: 0x6C95, - 3556: 0x6C97, - 3557: 0x6C98, - 3558: 0x6C9C, - 3559: 0x6C9F, - 3560: 0x6CB0, - 3561: 0x6CB2, - 3562: 0x6CB4, - 3563: 0x6CC2, - 3564: 0x6CC6, - 3565: 0x6CCD, - 3566: 0x6CCF, - 3567: 0x6CD0, - 3568: 0x6CD1, - 3569: 0x6CD2, - 3570: 0x6CD4, - 3571: 0x6CD6, - 3572: 0x6CDA, - 3573: 0x6CDC, - 3574: 0x6CE0, - 3575: 0x6CE7, - 3576: 0x6CE9, - 3577: 0x6CEB, - 3578: 0x6CEC, - 3579: 0x6CEE, - 3580: 0x6CF2, - 3581: 0x6CF4, - 3582: 0x6D04, - 3583: 0x6D07, - 3584: 0x6D0A, - 3585: 0x6D0E, - 3586: 0x6D0F, - 3587: 0x6D11, - 3588: 0x6D13, - 3589: 0x6D1A, - 3590: 0x6D26, - 3591: 0x6D27, - 3592: 0x6D28, - 3593: 0x6C67, - 3594: 0x6D2E, - 3595: 0x6D2F, - 3596: 0x6D31, - 3597: 0x6D39, - 3598: 0x6D3C, - 3599: 0x6D3F, - 3600: 0x6D57, - 3601: 0x6D5E, - 3602: 0x6D5F, - 3603: 0x6D61, - 3604: 0x6D65, - 3605: 0x6D67, - 3606: 0x6D6F, - 3607: 0x6D70, - 3608: 0x6D7C, - 3609: 0x6D82, - 3610: 0x6D87, - 3611: 0x6D91, - 3612: 0x6D92, - 3613: 0x6D94, - 3614: 0x6D96, - 3615: 0x6D97, - 3616: 0x6D98, - 3617: 0x6DAA, - 3618: 0x6DAC, - 3619: 0x6DB4, - 3620: 0x6DB7, - 3621: 0x6DB9, - 3622: 0x6DBD, - 3623: 0x6DBF, - 3624: 0x6DC4, - 3625: 0x6DC8, - 3626: 0x6DCA, - 3627: 0x6DCE, - 3628: 0x6DCF, - 3629: 0x6DD6, - 3630: 0x6DDB, - 3631: 0x6DDD, - 3632: 0x6DDF, - 3633: 0x6DE0, - 3634: 0x6DE2, - 3635: 0x6DE5, - 3636: 0x6DE9, - 3637: 0x6DEF, - 3638: 0x6DF0, - 3639: 0x6DF4, - 3640: 0x6DF6, - 3641: 0x6DFC, - 3642: 0x6E00, - 3643: 0x6E04, - 3644: 0x6E1E, - 3645: 0x6E22, - 3646: 0x6E27, - 3647: 0x6E32, - 3648: 0x6E36, - 3649: 0x6E39, - 3650: 0x6E3B, - 3651: 0x6E3C, - 3652: 0x6E44, - 3653: 0x6E45, - 3654: 0x6E48, - 3655: 0x6E49, - 3656: 0x6E4B, - 3657: 0x6E4F, - 3658: 0x6E51, - 3659: 0x6E52, - 3660: 0x6E53, - 3661: 0x6E54, - 3662: 0x6E57, - 3663: 0x6E5C, - 3664: 0x6E5D, - 3665: 0x6E5E, - 3666: 0x6E62, - 3667: 0x6E63, - 3668: 0x6E68, - 3669: 0x6E73, - 3670: 0x6E7B, - 3671: 0x6E7D, - 3672: 0x6E8D, - 3673: 0x6E93, - 3674: 0x6E99, - 3675: 0x6EA0, - 3676: 0x6EA7, - 3677: 0x6EAD, - 3678: 0x6EAE, - 3679: 0x6EB1, - 3680: 0x6EB3, - 3681: 0x6EBB, - 3682: 0x6EBF, - 3683: 0x6EC0, - 3684: 0x6EC1, - 3685: 0x6EC3, - 3686: 0x6EC7, - 3687: 0x6EC8, - 3688: 0x6ECA, - 3689: 0x6ECD, - 3690: 0x6ECE, - 3691: 0x6ECF, - 3692: 0x6EEB, - 3693: 0x6EED, - 3694: 0x6EEE, - 3695: 0x6EF9, - 3696: 0x6EFB, - 3697: 0x6EFD, - 3698: 0x6F04, - 3699: 0x6F08, - 3700: 0x6F0A, - 3701: 0x6F0C, - 3702: 0x6F0D, - 3703: 0x6F16, - 3704: 0x6F18, - 3705: 0x6F1A, - 3706: 0x6F1B, - 3707: 0x6F26, - 3708: 0x6F29, - 3709: 0x6F2A, - 3710: 0x6F2F, - 3711: 0x6F30, - 3712: 0x6F33, - 3713: 0x6F36, - 3714: 0x6F3B, - 3715: 0x6F3C, - 3716: 0x6F2D, - 3717: 0x6F4F, - 3718: 0x6F51, - 3719: 0x6F52, - 3720: 0x6F53, - 3721: 0x6F57, - 3722: 0x6F59, - 3723: 0x6F5A, - 3724: 0x6F5D, - 3725: 0x6F5E, - 3726: 0x6F61, - 3727: 0x6F62, - 3728: 0x6F68, - 3729: 0x6F6C, - 3730: 0x6F7D, - 3731: 0x6F7E, - 3732: 0x6F83, - 3733: 0x6F87, - 3734: 0x6F88, - 3735: 0x6F8B, - 3736: 0x6F8C, - 3737: 0x6F8D, - 3738: 0x6F90, - 3739: 0x6F92, - 3740: 0x6F93, - 3741: 0x6F94, - 3742: 0x6F96, - 3743: 0x6F9A, - 3744: 0x6F9F, - 3745: 0x6FA0, - 3746: 0x6FA5, - 3747: 0x6FA6, - 3748: 0x6FA7, - 3749: 0x6FA8, - 3750: 0x6FAE, - 3751: 0x6FAF, - 3752: 0x6FB0, - 3753: 0x6FB5, - 3754: 0x6FB6, - 3755: 0x6FBC, - 3756: 0x6FC5, - 3757: 0x6FC7, - 3758: 0x6FC8, - 3759: 0x6FCA, - 3760: 0x6FDA, - 3761: 0x6FDE, - 3762: 0x6FE8, - 3763: 0x6FE9, - 3764: 0x6FF0, - 3765: 0x6FF5, - 3766: 0x6FF9, - 3767: 0x6FFC, - 3768: 0x6FFD, - 3769: 0x7000, - 3770: 0x7005, - 3771: 0x7006, - 3772: 0x7007, - 3773: 0x700D, - 3774: 0x7017, - 3775: 0x7020, - 3776: 0x7023, - 3777: 0x702F, - 3778: 0x7034, - 3779: 0x7037, - 3780: 0x7039, - 3781: 0x703C, - 3782: 0x7043, - 3783: 0x7044, - 3784: 0x7048, - 3785: 0x7049, - 3786: 0x704A, - 3787: 0x704B, - 3788: 0x7054, - 3789: 0x7055, - 3790: 0x705D, - 3791: 0x705E, - 3792: 0x704E, - 3793: 0x7064, - 3794: 0x7065, - 3795: 0x706C, - 3796: 0x706E, - 3797: 0x7075, - 3798: 0x7076, - 3799: 0x707E, - 3800: 0x7081, - 3801: 0x7085, - 3802: 0x7086, - 3803: 0x7094, - 3804: 0x7095, - 3805: 0x7096, - 3806: 0x7097, - 3807: 0x7098, - 3808: 0x709B, - 3809: 0x70A4, - 3810: 0x70AB, - 3811: 0x70B0, - 3812: 0x70B1, - 3813: 0x70B4, - 3814: 0x70B7, - 3815: 0x70CA, - 3816: 0x70D1, - 3817: 0x70D3, - 3818: 0x70D4, - 3819: 0x70D5, - 3820: 0x70D6, - 3821: 0x70D8, - 3822: 0x70DC, - 3823: 0x70E4, - 3824: 0x70FA, - 3825: 0x7103, - 3826: 0x7104, - 3827: 0x7105, - 3828: 0x7106, - 3829: 0x7107, - 3830: 0x710B, - 3831: 0x710C, - 3832: 0x710F, - 3833: 0x711E, - 3834: 0x7120, - 3835: 0x712B, - 3836: 0x712D, - 3837: 0x712F, - 3838: 0x7130, - 3839: 0x7131, - 3840: 0x7138, - 3841: 0x7141, - 3842: 0x7145, - 3843: 0x7146, - 3844: 0x7147, - 3845: 0x714A, - 3846: 0x714B, - 3847: 0x7150, - 3848: 0x7152, - 3849: 0x7157, - 3850: 0x715A, - 3851: 0x715C, - 3852: 0x715E, - 3853: 0x7160, - 3854: 0x7168, - 3855: 0x7179, - 3856: 0x7180, - 3857: 0x7185, - 3858: 0x7187, - 3859: 0x718C, - 3860: 0x7192, - 3861: 0x719A, - 3862: 0x719B, - 3863: 0x71A0, - 3864: 0x71A2, - 3865: 0x71AF, - 3866: 0x71B0, - 3867: 0x71B2, - 3868: 0x71B3, - 3869: 0x71BA, - 3870: 0x71BF, - 3871: 0x71C0, - 3872: 0x71C1, - 3873: 0x71C4, - 3874: 0x71CB, - 3875: 0x71CC, - 3876: 0x71D3, - 3877: 0x71D6, - 3878: 0x71D9, - 3879: 0x71DA, - 3880: 0x71DC, - 3881: 0x71F8, - 3882: 0x71FE, - 3883: 0x7200, - 3884: 0x7207, - 3885: 0x7208, - 3886: 0x7209, - 3887: 0x7213, - 3888: 0x7217, - 3889: 0x721A, - 3890: 0x721D, - 3891: 0x721F, - 3892: 0x7224, - 3893: 0x722B, - 3894: 0x722F, - 3895: 0x7234, - 3896: 0x7238, - 3897: 0x7239, - 3898: 0x7241, - 3899: 0x7242, - 3900: 0x7243, - 3901: 0x7245, - 3902: 0x724E, - 3903: 0x724F, - 3904: 0x7250, - 3905: 0x7253, - 3906: 0x7255, - 3907: 0x7256, - 3908: 0x725A, - 3909: 0x725C, - 3910: 0x725E, - 3911: 0x7260, - 3912: 0x7263, - 3913: 0x7268, - 3914: 0x726B, - 3915: 0x726E, - 3916: 0x726F, - 3917: 0x7271, - 3918: 0x7277, - 3919: 0x7278, - 3920: 0x727B, - 3921: 0x727C, - 3922: 0x727F, - 3923: 0x7284, - 3924: 0x7289, - 3925: 0x728D, - 3926: 0x728E, - 3927: 0x7293, - 3928: 0x729B, - 3929: 0x72A8, - 3930: 0x72AD, - 3931: 0x72AE, - 3932: 0x72B1, - 3933: 0x72B4, - 3934: 0x72BE, - 3935: 0x72C1, - 3936: 0x72C7, - 3937: 0x72C9, - 3938: 0x72CC, - 3939: 0x72D5, - 3940: 0x72D6, - 3941: 0x72D8, - 3942: 0x72DF, - 3943: 0x72E5, - 3944: 0x72F3, - 3945: 0x72F4, - 3946: 0x72FA, - 3947: 0x72FB, - 3948: 0x72FE, - 3949: 0x7302, - 3950: 0x7304, - 3951: 0x7305, - 3952: 0x7307, - 3953: 0x730B, - 3954: 0x730D, - 3955: 0x7312, - 3956: 0x7313, - 3957: 0x7318, - 3958: 0x7319, - 3959: 0x731E, - 3960: 0x7322, - 3961: 0x7324, - 3962: 0x7327, - 3963: 0x7328, - 3964: 0x732C, - 3965: 0x7331, - 3966: 0x7332, - 3967: 0x7335, - 3968: 0x733A, - 3969: 0x733B, - 3970: 0x733D, - 3971: 0x7343, - 3972: 0x734D, - 3973: 0x7350, - 3974: 0x7352, - 3975: 0x7356, - 3976: 0x7358, - 3977: 0x735D, - 3978: 0x735E, - 3979: 0x735F, - 3980: 0x7360, - 3981: 0x7366, - 3982: 0x7367, - 3983: 0x7369, - 3984: 0x736B, - 3985: 0x736C, - 3986: 0x736E, - 3987: 0x736F, - 3988: 0x7371, - 3989: 0x7377, - 3990: 0x7379, - 3991: 0x737C, - 3992: 0x7380, - 3993: 0x7381, - 3994: 0x7383, - 3995: 0x7385, - 3996: 0x7386, - 3997: 0x738E, - 3998: 0x7390, - 3999: 0x7393, - 4000: 0x7395, - 4001: 0x7397, - 4002: 0x7398, - 4003: 0x739C, - 4004: 0x739E, - 4005: 0x739F, - 4006: 0x73A0, - 4007: 0x73A2, - 4008: 0x73A5, - 4009: 0x73A6, - 4010: 0x73AA, - 4011: 0x73AB, - 4012: 0x73AD, - 4013: 0x73B5, - 4014: 0x73B7, - 4015: 0x73B9, - 4016: 0x73BC, - 4017: 0x73BD, - 4018: 0x73BF, - 4019: 0x73C5, - 4020: 0x73C6, - 4021: 0x73C9, - 4022: 0x73CB, - 4023: 0x73CC, - 4024: 0x73CF, - 4025: 0x73D2, - 4026: 0x73D3, - 4027: 0x73D6, - 4028: 0x73D9, - 4029: 0x73DD, - 4030: 0x73E1, - 4031: 0x73E3, - 4032: 0x73E6, - 4033: 0x73E7, - 4034: 0x73E9, - 4035: 0x73F4, - 4036: 0x73F5, - 4037: 0x73F7, - 4038: 0x73F9, - 4039: 0x73FA, - 4040: 0x73FB, - 4041: 0x73FD, - 4042: 0x73FF, - 4043: 0x7400, - 4044: 0x7401, - 4045: 0x7404, - 4046: 0x7407, - 4047: 0x740A, - 4048: 0x7411, - 4049: 0x741A, - 4050: 0x741B, - 4051: 0x7424, - 4052: 0x7426, - 4053: 0x7428, - 4054: 0x7429, - 4055: 0x742A, - 4056: 0x742B, - 4057: 0x742C, - 4058: 0x742D, - 4059: 0x742E, - 4060: 0x742F, - 4061: 0x7430, - 4062: 0x7431, - 4063: 0x7439, - 4064: 0x7440, - 4065: 0x7443, - 4066: 0x7444, - 4067: 0x7446, - 4068: 0x7447, - 4069: 0x744B, - 4070: 0x744D, - 4071: 0x7451, - 4072: 0x7452, - 4073: 0x7457, - 4074: 0x745D, - 4075: 0x7462, - 4076: 0x7466, - 4077: 0x7467, - 4078: 0x7468, - 4079: 0x746B, - 4080: 0x746D, - 4081: 0x746E, - 4082: 0x7471, - 4083: 0x7472, - 4084: 0x7480, - 4085: 0x7481, - 4086: 0x7485, - 4087: 0x7486, - 4088: 0x7487, - 4089: 0x7489, - 4090: 0x748F, - 4091: 0x7490, - 4092: 0x7491, - 4093: 0x7492, - 4094: 0x7498, - 4095: 0x7499, - 4096: 0x749A, - 4097: 0x749C, - 4098: 0x749F, - 4099: 0x74A0, - 4100: 0x74A1, - 4101: 0x74A3, - 4102: 0x74A6, - 4103: 0x74A8, - 4104: 0x74A9, - 4105: 0x74AA, - 4106: 0x74AB, - 4107: 0x74AE, - 4108: 0x74AF, - 4109: 0x74B1, - 4110: 0x74B2, - 4111: 0x74B5, - 4112: 0x74B9, - 4113: 0x74BB, - 4114: 0x74BF, - 4115: 0x74C8, - 4116: 0x74C9, - 4117: 0x74CC, - 4118: 0x74D0, - 4119: 0x74D3, - 4120: 0x74D8, - 4121: 0x74DA, - 4122: 0x74DB, - 4123: 0x74DE, - 4124: 0x74DF, - 4125: 0x74E4, - 4126: 0x74E8, - 4127: 0x74EA, - 4128: 0x74EB, - 4129: 0x74EF, - 4130: 0x74F4, - 4131: 0x74FA, - 4132: 0x74FB, - 4133: 0x74FC, - 4134: 0x74FF, - 4135: 0x7506, - 4136: 0x7512, - 4137: 0x7516, - 4138: 0x7517, - 4139: 0x7520, - 4140: 0x7521, - 4141: 0x7524, - 4142: 0x7527, - 4143: 0x7529, - 4144: 0x752A, - 4145: 0x752F, - 4146: 0x7536, - 4147: 0x7539, - 4148: 0x753D, - 4149: 0x753E, - 4150: 0x753F, - 4151: 0x7540, - 4152: 0x7543, - 4153: 0x7547, - 4154: 0x7548, - 4155: 0x754E, - 4156: 0x7550, - 4157: 0x7552, - 4158: 0x7557, - 4159: 0x755E, - 4160: 0x755F, - 4161: 0x7561, - 4162: 0x756F, - 4163: 0x7571, - 4164: 0x7579, - 4165: 0x757A, - 4166: 0x757B, - 4167: 0x757C, - 4168: 0x757D, - 4169: 0x757E, - 4170: 0x7581, - 4171: 0x7585, - 4172: 0x7590, - 4173: 0x7592, - 4174: 0x7593, - 4175: 0x7595, - 4176: 0x7599, - 4177: 0x759C, - 4178: 0x75A2, - 4179: 0x75A4, - 4180: 0x75B4, - 4181: 0x75BA, - 4182: 0x75BF, - 4183: 0x75C0, - 4184: 0x75C1, - 4185: 0x75C4, - 4186: 0x75C6, - 4187: 0x75CC, - 4188: 0x75CE, - 4189: 0x75CF, - 4190: 0x75D7, - 4191: 0x75DC, - 4192: 0x75DF, - 4193: 0x75E0, - 4194: 0x75E1, - 4195: 0x75E4, - 4196: 0x75E7, - 4197: 0x75EC, - 4198: 0x75EE, - 4199: 0x75EF, - 4200: 0x75F1, - 4201: 0x75F9, - 4202: 0x7600, - 4203: 0x7602, - 4204: 0x7603, - 4205: 0x7604, - 4206: 0x7607, - 4207: 0x7608, - 4208: 0x760A, - 4209: 0x760C, - 4210: 0x760F, - 4211: 0x7612, - 4212: 0x7613, - 4213: 0x7615, - 4214: 0x7616, - 4215: 0x7619, - 4216: 0x761B, - 4217: 0x761C, - 4218: 0x761D, - 4219: 0x761E, - 4220: 0x7623, - 4221: 0x7625, - 4222: 0x7626, - 4223: 0x7629, - 4224: 0x762D, - 4225: 0x7632, - 4226: 0x7633, - 4227: 0x7635, - 4228: 0x7638, - 4229: 0x7639, - 4230: 0x763A, - 4231: 0x763C, - 4232: 0x764A, - 4233: 0x7640, - 4234: 0x7641, - 4235: 0x7643, - 4236: 0x7644, - 4237: 0x7645, - 4238: 0x7649, - 4239: 0x764B, - 4240: 0x7655, - 4241: 0x7659, - 4242: 0x765F, - 4243: 0x7664, - 4244: 0x7665, - 4245: 0x766D, - 4246: 0x766E, - 4247: 0x766F, - 4248: 0x7671, - 4249: 0x7674, - 4250: 0x7681, - 4251: 0x7685, - 4252: 0x768C, - 4253: 0x768D, - 4254: 0x7695, - 4255: 0x769B, - 4256: 0x769C, - 4257: 0x769D, - 4258: 0x769F, - 4259: 0x76A0, - 4260: 0x76A2, - 4261: 0x76A3, - 4262: 0x76A4, - 4263: 0x76A5, - 4264: 0x76A6, - 4265: 0x76A7, - 4266: 0x76A8, - 4267: 0x76AA, - 4268: 0x76AD, - 4269: 0x76BD, - 4270: 0x76C1, - 4271: 0x76C5, - 4272: 0x76C9, - 4273: 0x76CB, - 4274: 0x76CC, - 4275: 0x76CE, - 4276: 0x76D4, - 4277: 0x76D9, - 4278: 0x76E0, - 4279: 0x76E6, - 4280: 0x76E8, - 4281: 0x76EC, - 4282: 0x76F0, - 4283: 0x76F1, - 4284: 0x76F6, - 4285: 0x76F9, - 4286: 0x76FC, - 4287: 0x7700, - 4288: 0x7706, - 4289: 0x770A, - 4290: 0x770E, - 4291: 0x7712, - 4292: 0x7714, - 4293: 0x7715, - 4294: 0x7717, - 4295: 0x7719, - 4296: 0x771A, - 4297: 0x771C, - 4298: 0x7722, - 4299: 0x7728, - 4300: 0x772D, - 4301: 0x772E, - 4302: 0x772F, - 4303: 0x7734, - 4304: 0x7735, - 4305: 0x7736, - 4306: 0x7739, - 4307: 0x773D, - 4308: 0x773E, - 4309: 0x7742, - 4310: 0x7745, - 4311: 0x7746, - 4312: 0x774A, - 4313: 0x774D, - 4314: 0x774E, - 4315: 0x774F, - 4316: 0x7752, - 4317: 0x7756, - 4318: 0x7757, - 4319: 0x775C, - 4320: 0x775E, - 4321: 0x775F, - 4322: 0x7760, - 4323: 0x7762, - 4324: 0x7764, - 4325: 0x7767, - 4326: 0x776A, - 4327: 0x776C, - 4328: 0x7770, - 4329: 0x7772, - 4330: 0x7773, - 4331: 0x7774, - 4332: 0x777A, - 4333: 0x777D, - 4334: 0x7780, - 4335: 0x7784, - 4336: 0x778C, - 4337: 0x778D, - 4338: 0x7794, - 4339: 0x7795, - 4340: 0x7796, - 4341: 0x779A, - 4342: 0x779F, - 4343: 0x77A2, - 4344: 0x77A7, - 4345: 0x77AA, - 4346: 0x77AE, - 4347: 0x77AF, - 4348: 0x77B1, - 4349: 0x77B5, - 4350: 0x77BE, - 4351: 0x77C3, - 4352: 0x77C9, - 4353: 0x77D1, - 4354: 0x77D2, - 4355: 0x77D5, - 4356: 0x77D9, - 4357: 0x77DE, - 4358: 0x77DF, - 4359: 0x77E0, - 4360: 0x77E4, - 4361: 0x77E6, - 4362: 0x77EA, - 4363: 0x77EC, - 4364: 0x77F0, - 4365: 0x77F1, - 4366: 0x77F4, - 4367: 0x77F8, - 4368: 0x77FB, - 4369: 0x7805, - 4370: 0x7806, - 4371: 0x7809, - 4372: 0x780D, - 4373: 0x780E, - 4374: 0x7811, - 4375: 0x781D, - 4376: 0x7821, - 4377: 0x7822, - 4378: 0x7823, - 4379: 0x782D, - 4380: 0x782E, - 4381: 0x7830, - 4382: 0x7835, - 4383: 0x7837, - 4384: 0x7843, - 4385: 0x7844, - 4386: 0x7847, - 4387: 0x7848, - 4388: 0x784C, - 4389: 0x784E, - 4390: 0x7852, - 4391: 0x785C, - 4392: 0x785E, - 4393: 0x7860, - 4394: 0x7861, - 4395: 0x7863, - 4396: 0x7864, - 4397: 0x7868, - 4398: 0x786A, - 4399: 0x786E, - 4400: 0x787A, - 4401: 0x787E, - 4402: 0x788A, - 4403: 0x788F, - 4404: 0x7894, - 4405: 0x7898, - 4406: 0x78A1, - 4407: 0x789D, - 4408: 0x789E, - 4409: 0x789F, - 4410: 0x78A4, - 4411: 0x78A8, - 4412: 0x78AC, - 4413: 0x78AD, - 4414: 0x78B0, - 4415: 0x78B1, - 4416: 0x78B2, - 4417: 0x78B3, - 4418: 0x78BB, - 4419: 0x78BD, - 4420: 0x78BF, - 4421: 0x78C7, - 4422: 0x78C8, - 4423: 0x78C9, - 4424: 0x78CC, - 4425: 0x78CE, - 4426: 0x78D2, - 4427: 0x78D3, - 4428: 0x78D5, - 4429: 0x78D6, - 4430: 0x78E4, - 4431: 0x78DB, - 4432: 0x78DF, - 4433: 0x78E0, - 4434: 0x78E1, - 4435: 0x78E6, - 4436: 0x78EA, - 4437: 0x78F2, - 4438: 0x78F3, - 4439: 0x7900, - 4440: 0x78F6, - 4441: 0x78F7, - 4442: 0x78FA, - 4443: 0x78FB, - 4444: 0x78FF, - 4445: 0x7906, - 4446: 0x790C, - 4447: 0x7910, - 4448: 0x791A, - 4449: 0x791C, - 4450: 0x791E, - 4451: 0x791F, - 4452: 0x7920, - 4453: 0x7925, - 4454: 0x7927, - 4455: 0x7929, - 4456: 0x792D, - 4457: 0x7931, - 4458: 0x7934, - 4459: 0x7935, - 4460: 0x793B, - 4461: 0x793D, - 4462: 0x793F, - 4463: 0x7944, - 4464: 0x7945, - 4465: 0x7946, - 4466: 0x794A, - 4467: 0x794B, - 4468: 0x794F, - 4469: 0x7951, - 4470: 0x7954, - 4471: 0x7958, - 4472: 0x795B, - 4473: 0x795C, - 4474: 0x7967, - 4475: 0x7969, - 4476: 0x796B, - 4477: 0x7972, - 4478: 0x7979, - 4479: 0x797B, - 4480: 0x797C, - 4481: 0x797E, - 4482: 0x798B, - 4483: 0x798C, - 4484: 0x7991, - 4485: 0x7993, - 4486: 0x7994, - 4487: 0x7995, - 4488: 0x7996, - 4489: 0x7998, - 4490: 0x799B, - 4491: 0x799C, - 4492: 0x79A1, - 4493: 0x79A8, - 4494: 0x79A9, - 4495: 0x79AB, - 4496: 0x79AF, - 4497: 0x79B1, - 4498: 0x79B4, - 4499: 0x79B8, - 4500: 0x79BB, - 4501: 0x79C2, - 4502: 0x79C4, - 4503: 0x79C7, - 4504: 0x79C8, - 4505: 0x79CA, - 4506: 0x79CF, - 4507: 0x79D4, - 4508: 0x79D6, - 4509: 0x79DA, - 4510: 0x79DD, - 4511: 0x79DE, - 4512: 0x79E0, - 4513: 0x79E2, - 4514: 0x79E5, - 4515: 0x79EA, - 4516: 0x79EB, - 4517: 0x79ED, - 4518: 0x79F1, - 4519: 0x79F8, - 4520: 0x79FC, - 4521: 0x7A02, - 4522: 0x7A03, - 4523: 0x7A07, - 4524: 0x7A09, - 4525: 0x7A0A, - 4526: 0x7A0C, - 4527: 0x7A11, - 4528: 0x7A15, - 4529: 0x7A1B, - 4530: 0x7A1E, - 4531: 0x7A21, - 4532: 0x7A27, - 4533: 0x7A2B, - 4534: 0x7A2D, - 4535: 0x7A2F, - 4536: 0x7A30, - 4537: 0x7A34, - 4538: 0x7A35, - 4539: 0x7A38, - 4540: 0x7A39, - 4541: 0x7A3A, - 4542: 0x7A44, - 4543: 0x7A45, - 4544: 0x7A47, - 4545: 0x7A48, - 4546: 0x7A4C, - 4547: 0x7A55, - 4548: 0x7A56, - 4549: 0x7A59, - 4550: 0x7A5C, - 4551: 0x7A5D, - 4552: 0x7A5F, - 4553: 0x7A60, - 4554: 0x7A65, - 4555: 0x7A67, - 4556: 0x7A6A, - 4557: 0x7A6D, - 4558: 0x7A75, - 4559: 0x7A78, - 4560: 0x7A7E, - 4561: 0x7A80, - 4562: 0x7A82, - 4563: 0x7A85, - 4564: 0x7A86, - 4565: 0x7A8A, - 4566: 0x7A8B, - 4567: 0x7A90, - 4568: 0x7A91, - 4569: 0x7A94, - 4570: 0x7A9E, - 4571: 0x7AA0, - 4572: 0x7AA3, - 4573: 0x7AAC, - 4574: 0x7AB3, - 4575: 0x7AB5, - 4576: 0x7AB9, - 4577: 0x7ABB, - 4578: 0x7ABC, - 4579: 0x7AC6, - 4580: 0x7AC9, - 4581: 0x7ACC, - 4582: 0x7ACE, - 4583: 0x7AD1, - 4584: 0x7ADB, - 4585: 0x7AE8, - 4586: 0x7AE9, - 4587: 0x7AEB, - 4588: 0x7AEC, - 4589: 0x7AF1, - 4590: 0x7AF4, - 4591: 0x7AFB, - 4592: 0x7AFD, - 4593: 0x7AFE, - 4594: 0x7B07, - 4595: 0x7B14, - 4596: 0x7B1F, - 4597: 0x7B23, - 4598: 0x7B27, - 4599: 0x7B29, - 4600: 0x7B2A, - 4601: 0x7B2B, - 4602: 0x7B2D, - 4603: 0x7B2E, - 4604: 0x7B2F, - 4605: 0x7B30, - 4606: 0x7B31, - 4607: 0x7B34, - 4608: 0x7B3D, - 4609: 0x7B3F, - 4610: 0x7B40, - 4611: 0x7B41, - 4612: 0x7B47, - 4613: 0x7B4E, - 4614: 0x7B55, - 4615: 0x7B60, - 4616: 0x7B64, - 4617: 0x7B66, - 4618: 0x7B69, - 4619: 0x7B6A, - 4620: 0x7B6D, - 4621: 0x7B6F, - 4622: 0x7B72, - 4623: 0x7B73, - 4624: 0x7B77, - 4625: 0x7B84, - 4626: 0x7B89, - 4627: 0x7B8E, - 4628: 0x7B90, - 4629: 0x7B91, - 4630: 0x7B96, - 4631: 0x7B9B, - 4632: 0x7B9E, - 4633: 0x7BA0, - 4634: 0x7BA5, - 4635: 0x7BAC, - 4636: 0x7BAF, - 4637: 0x7BB0, - 4638: 0x7BB2, - 4639: 0x7BB5, - 4640: 0x7BB6, - 4641: 0x7BBA, - 4642: 0x7BBB, - 4643: 0x7BBC, - 4644: 0x7BBD, - 4645: 0x7BC2, - 4646: 0x7BC5, - 4647: 0x7BC8, - 4648: 0x7BCA, - 4649: 0x7BD4, - 4650: 0x7BD6, - 4651: 0x7BD7, - 4652: 0x7BD9, - 4653: 0x7BDA, - 4654: 0x7BDB, - 4655: 0x7BE8, - 4656: 0x7BEA, - 4657: 0x7BF2, - 4658: 0x7BF4, - 4659: 0x7BF5, - 4660: 0x7BF8, - 4661: 0x7BF9, - 4662: 0x7BFA, - 4663: 0x7BFC, - 4664: 0x7BFE, - 4665: 0x7C01, - 4666: 0x7C02, - 4667: 0x7C03, - 4668: 0x7C04, - 4669: 0x7C06, - 4670: 0x7C09, - 4671: 0x7C0B, - 4672: 0x7C0C, - 4673: 0x7C0E, - 4674: 0x7C0F, - 4675: 0x7C19, - 4676: 0x7C1B, - 4677: 0x7C20, - 4678: 0x7C25, - 4679: 0x7C26, - 4680: 0x7C28, - 4681: 0x7C2C, - 4682: 0x7C31, - 4683: 0x7C33, - 4684: 0x7C34, - 4685: 0x7C36, - 4686: 0x7C39, - 4687: 0x7C3A, - 4688: 0x7C46, - 4689: 0x7C4A, - 4690: 0x7C55, - 4691: 0x7C51, - 4692: 0x7C52, - 4693: 0x7C53, - 4694: 0x7C59, - 4695: 0x7C5A, - 4696: 0x7C5B, - 4697: 0x7C5C, - 4698: 0x7C5D, - 4699: 0x7C5E, - 4700: 0x7C61, - 4701: 0x7C63, - 4702: 0x7C67, - 4703: 0x7C69, - 4704: 0x7C6D, - 4705: 0x7C6E, - 4706: 0x7C70, - 4707: 0x7C72, - 4708: 0x7C79, - 4709: 0x7C7C, - 4710: 0x7C7D, - 4711: 0x7C86, - 4712: 0x7C87, - 4713: 0x7C8F, - 4714: 0x7C94, - 4715: 0x7C9E, - 4716: 0x7CA0, - 4717: 0x7CA6, - 4718: 0x7CB0, - 4719: 0x7CB6, - 4720: 0x7CB7, - 4721: 0x7CBA, - 4722: 0x7CBB, - 4723: 0x7CBC, - 4724: 0x7CBF, - 4725: 0x7CC4, - 4726: 0x7CC7, - 4727: 0x7CC8, - 4728: 0x7CC9, - 4729: 0x7CCD, - 4730: 0x7CCF, - 4731: 0x7CD3, - 4732: 0x7CD4, - 4733: 0x7CD5, - 4734: 0x7CD7, - 4735: 0x7CD9, - 4736: 0x7CDA, - 4737: 0x7CDD, - 4738: 0x7CE6, - 4739: 0x7CE9, - 4740: 0x7CEB, - 4741: 0x7CF5, - 4742: 0x7D03, - 4743: 0x7D07, - 4744: 0x7D08, - 4745: 0x7D09, - 4746: 0x7D0F, - 4747: 0x7D11, - 4748: 0x7D12, - 4749: 0x7D13, - 4750: 0x7D16, - 4751: 0x7D1D, - 4752: 0x7D1E, - 4753: 0x7D23, - 4754: 0x7D26, - 4755: 0x7D2A, - 4756: 0x7D2D, - 4757: 0x7D31, - 4758: 0x7D3C, - 4759: 0x7D3D, - 4760: 0x7D3E, - 4761: 0x7D40, - 4762: 0x7D41, - 4763: 0x7D47, - 4764: 0x7D48, - 4765: 0x7D4D, - 4766: 0x7D51, - 4767: 0x7D53, - 4768: 0x7D57, - 4769: 0x7D59, - 4770: 0x7D5A, - 4771: 0x7D5C, - 4772: 0x7D5D, - 4773: 0x7D65, - 4774: 0x7D67, - 4775: 0x7D6A, - 4776: 0x7D70, - 4777: 0x7D78, - 4778: 0x7D7A, - 4779: 0x7D7B, - 4780: 0x7D7F, - 4781: 0x7D81, - 4782: 0x7D82, - 4783: 0x7D83, - 4784: 0x7D85, - 4785: 0x7D86, - 4786: 0x7D88, - 4787: 0x7D8B, - 4788: 0x7D8C, - 4789: 0x7D8D, - 4790: 0x7D91, - 4791: 0x7D96, - 4792: 0x7D97, - 4793: 0x7D9D, - 4794: 0x7D9E, - 4795: 0x7DA6, - 4796: 0x7DA7, - 4797: 0x7DAA, - 4798: 0x7DB3, - 4799: 0x7DB6, - 4800: 0x7DB7, - 4801: 0x7DB9, - 4802: 0x7DC2, - 4803: 0x7DC3, - 4804: 0x7DC4, - 4805: 0x7DC5, - 4806: 0x7DC6, - 4807: 0x7DCC, - 4808: 0x7DCD, - 4809: 0x7DCE, - 4810: 0x7DD7, - 4811: 0x7DD9, - 4812: 0x7E00, - 4813: 0x7DE2, - 4814: 0x7DE5, - 4815: 0x7DE6, - 4816: 0x7DEA, - 4817: 0x7DEB, - 4818: 0x7DED, - 4819: 0x7DF1, - 4820: 0x7DF5, - 4821: 0x7DF6, - 4822: 0x7DF9, - 4823: 0x7DFA, - 4824: 0x7E08, - 4825: 0x7E10, - 4826: 0x7E11, - 4827: 0x7E15, - 4828: 0x7E17, - 4829: 0x7E1C, - 4830: 0x7E1D, - 4831: 0x7E20, - 4832: 0x7E27, - 4833: 0x7E28, - 4834: 0x7E2C, - 4835: 0x7E2D, - 4836: 0x7E2F, - 4837: 0x7E33, - 4838: 0x7E36, - 4839: 0x7E3F, - 4840: 0x7E44, - 4841: 0x7E45, - 4842: 0x7E47, - 4843: 0x7E4E, - 4844: 0x7E50, - 4845: 0x7E52, - 4846: 0x7E58, - 4847: 0x7E5F, - 4848: 0x7E61, - 4849: 0x7E62, - 4850: 0x7E65, - 4851: 0x7E6B, - 4852: 0x7E6E, - 4853: 0x7E6F, - 4854: 0x7E73, - 4855: 0x7E78, - 4856: 0x7E7E, - 4857: 0x7E81, - 4858: 0x7E86, - 4859: 0x7E87, - 4860: 0x7E8A, - 4861: 0x7E8D, - 4862: 0x7E91, - 4863: 0x7E95, - 4864: 0x7E98, - 4865: 0x7E9A, - 4866: 0x7E9D, - 4867: 0x7E9E, - 4868: 0x7F3C, - 4869: 0x7F3B, - 4870: 0x7F3D, - 4871: 0x7F3E, - 4872: 0x7F3F, - 4873: 0x7F43, - 4874: 0x7F44, - 4875: 0x7F47, - 4876: 0x7F4F, - 4877: 0x7F52, - 4878: 0x7F53, - 4879: 0x7F5B, - 4880: 0x7F5C, - 4881: 0x7F5D, - 4882: 0x7F61, - 4883: 0x7F63, - 4884: 0x7F64, - 4885: 0x7F65, - 4886: 0x7F66, - 4887: 0x7F6D, - 4888: 0x7F71, - 4889: 0x7F7D, - 4890: 0x7F7E, - 4891: 0x7F7F, - 4892: 0x7F80, - 4893: 0x7F8B, - 4894: 0x7F8D, - 4895: 0x7F8F, - 4896: 0x7F90, - 4897: 0x7F91, - 4898: 0x7F96, - 4899: 0x7F97, - 4900: 0x7F9C, - 4901: 0x7FA1, - 4902: 0x7FA2, - 4903: 0x7FA6, - 4904: 0x7FAA, - 4905: 0x7FAD, - 4906: 0x7FB4, - 4907: 0x7FBC, - 4908: 0x7FBF, - 4909: 0x7FC0, - 4910: 0x7FC3, - 4911: 0x7FC8, - 4912: 0x7FCE, - 4913: 0x7FCF, - 4914: 0x7FDB, - 4915: 0x7FDF, - 4916: 0x7FE3, - 4917: 0x7FE5, - 4918: 0x7FE8, - 4919: 0x7FEC, - 4920: 0x7FEE, - 4921: 0x7FEF, - 4922: 0x7FF2, - 4923: 0x7FFA, - 4924: 0x7FFD, - 4925: 0x7FFE, - 4926: 0x7FFF, - 4927: 0x8007, - 4928: 0x8008, - 4929: 0x800A, - 4930: 0x800D, - 4931: 0x800E, - 4932: 0x800F, - 4933: 0x8011, - 4934: 0x8013, - 4935: 0x8014, - 4936: 0x8016, - 4937: 0x801D, - 4938: 0x801E, - 4939: 0x801F, - 4940: 0x8020, - 4941: 0x8024, - 4942: 0x8026, - 4943: 0x802C, - 4944: 0x802E, - 4945: 0x8030, - 4946: 0x8034, - 4947: 0x8035, - 4948: 0x8037, - 4949: 0x8039, - 4950: 0x803A, - 4951: 0x803C, - 4952: 0x803E, - 4953: 0x8040, - 4954: 0x8044, - 4955: 0x8060, - 4956: 0x8064, - 4957: 0x8066, - 4958: 0x806D, - 4959: 0x8071, - 4960: 0x8075, - 4961: 0x8081, - 4962: 0x8088, - 4963: 0x808E, - 4964: 0x809C, - 4965: 0x809E, - 4966: 0x80A6, - 4967: 0x80A7, - 4968: 0x80AB, - 4969: 0x80B8, - 4970: 0x80B9, - 4971: 0x80C8, - 4972: 0x80CD, - 4973: 0x80CF, - 4974: 0x80D2, - 4975: 0x80D4, - 4976: 0x80D5, - 4977: 0x80D7, - 4978: 0x80D8, - 4979: 0x80E0, - 4980: 0x80ED, - 4981: 0x80EE, - 4982: 0x80F0, - 4983: 0x80F2, - 4984: 0x80F3, - 4985: 0x80F6, - 4986: 0x80F9, - 4987: 0x80FA, - 4988: 0x80FE, - 4989: 0x8103, - 4990: 0x810B, - 4991: 0x8116, - 4992: 0x8117, - 4993: 0x8118, - 4994: 0x811C, - 4995: 0x811E, - 4996: 0x8120, - 4997: 0x8124, - 4998: 0x8127, - 4999: 0x812C, - 5000: 0x8130, - 5001: 0x8135, - 5002: 0x813A, - 5003: 0x813C, - 5004: 0x8145, - 5005: 0x8147, - 5006: 0x814A, - 5007: 0x814C, - 5008: 0x8152, - 5009: 0x8157, - 5010: 0x8160, - 5011: 0x8161, - 5012: 0x8167, - 5013: 0x8168, - 5014: 0x8169, - 5015: 0x816D, - 5016: 0x816F, - 5017: 0x8177, - 5018: 0x8181, - 5019: 0x8190, - 5020: 0x8184, - 5021: 0x8185, - 5022: 0x8186, - 5023: 0x818B, - 5024: 0x818E, - 5025: 0x8196, - 5026: 0x8198, - 5027: 0x819B, - 5028: 0x819E, - 5029: 0x81A2, - 5030: 0x81AE, - 5031: 0x81B2, - 5032: 0x81B4, - 5033: 0x81BB, - 5034: 0x81CB, - 5035: 0x81C3, - 5036: 0x81C5, - 5037: 0x81CA, - 5038: 0x81CE, - 5039: 0x81CF, - 5040: 0x81D5, - 5041: 0x81D7, - 5042: 0x81DB, - 5043: 0x81DD, - 5044: 0x81DE, - 5045: 0x81E1, - 5046: 0x81E4, - 5047: 0x81EB, - 5048: 0x81EC, - 5049: 0x81F0, - 5050: 0x81F1, - 5051: 0x81F2, - 5052: 0x81F5, - 5053: 0x81F6, - 5054: 0x81F8, - 5055: 0x81F9, - 5056: 0x81FD, - 5057: 0x81FF, - 5058: 0x8200, - 5059: 0x8203, - 5060: 0x820F, - 5061: 0x8213, - 5062: 0x8214, - 5063: 0x8219, - 5064: 0x821A, - 5065: 0x821D, - 5066: 0x8221, - 5067: 0x8222, - 5068: 0x8228, - 5069: 0x8232, - 5070: 0x8234, - 5071: 0x823A, - 5072: 0x8243, - 5073: 0x8244, - 5074: 0x8245, - 5075: 0x8246, - 5076: 0x824B, - 5077: 0x824E, - 5078: 0x824F, - 5079: 0x8251, - 5080: 0x8256, - 5081: 0x825C, - 5082: 0x8260, - 5083: 0x8263, - 5084: 0x8267, - 5085: 0x826D, - 5086: 0x8274, - 5087: 0x827B, - 5088: 0x827D, - 5089: 0x827F, - 5090: 0x8280, - 5091: 0x8281, - 5092: 0x8283, - 5093: 0x8284, - 5094: 0x8287, - 5095: 0x8289, - 5096: 0x828A, - 5097: 0x828E, - 5098: 0x8291, - 5099: 0x8294, - 5100: 0x8296, - 5101: 0x8298, - 5102: 0x829A, - 5103: 0x829B, - 5104: 0x82A0, - 5105: 0x82A1, - 5106: 0x82A3, - 5107: 0x82A4, - 5108: 0x82A7, - 5109: 0x82A8, - 5110: 0x82A9, - 5111: 0x82AA, - 5112: 0x82AE, - 5113: 0x82B0, - 5114: 0x82B2, - 5115: 0x82B4, - 5116: 0x82B7, - 5117: 0x82BA, - 5118: 0x82BC, - 5119: 0x82BE, - 5120: 0x82BF, - 5121: 0x82C6, - 5122: 0x82D0, - 5123: 0x82D5, - 5124: 0x82DA, - 5125: 0x82E0, - 5126: 0x82E2, - 5127: 0x82E4, - 5128: 0x82E8, - 5129: 0x82EA, - 5130: 0x82ED, - 5131: 0x82EF, - 5132: 0x82F6, - 5133: 0x82F7, - 5134: 0x82FD, - 5135: 0x82FE, - 5136: 0x8300, - 5137: 0x8301, - 5138: 0x8307, - 5139: 0x8308, - 5140: 0x830A, - 5141: 0x830B, - 5142: 0x8354, - 5143: 0x831B, - 5144: 0x831D, - 5145: 0x831E, - 5146: 0x831F, - 5147: 0x8321, - 5148: 0x8322, - 5149: 0x832C, - 5150: 0x832D, - 5151: 0x832E, - 5152: 0x8330, - 5153: 0x8333, - 5154: 0x8337, - 5155: 0x833A, - 5156: 0x833C, - 5157: 0x833D, - 5158: 0x8342, - 5159: 0x8343, - 5160: 0x8344, - 5161: 0x8347, - 5162: 0x834D, - 5163: 0x834E, - 5164: 0x8351, - 5165: 0x8355, - 5166: 0x8356, - 5167: 0x8357, - 5168: 0x8370, - 5169: 0x8378, - 5170: 0x837D, - 5171: 0x837F, - 5172: 0x8380, - 5173: 0x8382, - 5174: 0x8384, - 5175: 0x8386, - 5176: 0x838D, - 5177: 0x8392, - 5178: 0x8394, - 5179: 0x8395, - 5180: 0x8398, - 5181: 0x8399, - 5182: 0x839B, - 5183: 0x839C, - 5184: 0x839D, - 5185: 0x83A6, - 5186: 0x83A7, - 5187: 0x83A9, - 5188: 0x83AC, - 5189: 0x83BE, - 5190: 0x83BF, - 5191: 0x83C0, - 5192: 0x83C7, - 5193: 0x83C9, - 5194: 0x83CF, - 5195: 0x83D0, - 5196: 0x83D1, - 5197: 0x83D4, - 5198: 0x83DD, - 5199: 0x8353, - 5200: 0x83E8, - 5201: 0x83EA, - 5202: 0x83F6, - 5203: 0x83F8, - 5204: 0x83F9, - 5205: 0x83FC, - 5206: 0x8401, - 5207: 0x8406, - 5208: 0x840A, - 5209: 0x840F, - 5210: 0x8411, - 5211: 0x8415, - 5212: 0x8419, - 5213: 0x83AD, - 5214: 0x842F, - 5215: 0x8439, - 5216: 0x8445, - 5217: 0x8447, - 5218: 0x8448, - 5219: 0x844A, - 5220: 0x844D, - 5221: 0x844F, - 5222: 0x8451, - 5223: 0x8452, - 5224: 0x8456, - 5225: 0x8458, - 5226: 0x8459, - 5227: 0x845A, - 5228: 0x845C, - 5229: 0x8460, - 5230: 0x8464, - 5231: 0x8465, - 5232: 0x8467, - 5233: 0x846A, - 5234: 0x8470, - 5235: 0x8473, - 5236: 0x8474, - 5237: 0x8476, - 5238: 0x8478, - 5239: 0x847C, - 5240: 0x847D, - 5241: 0x8481, - 5242: 0x8485, - 5243: 0x8492, - 5244: 0x8493, - 5245: 0x8495, - 5246: 0x849E, - 5247: 0x84A6, - 5248: 0x84A8, - 5249: 0x84A9, - 5250: 0x84AA, - 5251: 0x84AF, - 5252: 0x84B1, - 5253: 0x84B4, - 5254: 0x84BA, - 5255: 0x84BD, - 5256: 0x84BE, - 5257: 0x84C0, - 5258: 0x84C2, - 5259: 0x84C7, - 5260: 0x84C8, - 5261: 0x84CC, - 5262: 0x84CF, - 5263: 0x84D3, - 5264: 0x84DC, - 5265: 0x84E7, - 5266: 0x84EA, - 5267: 0x84EF, - 5268: 0x84F0, - 5269: 0x84F1, - 5270: 0x84F2, - 5271: 0x84F7, - 5272: 0x8532, - 5273: 0x84FA, - 5274: 0x84FB, - 5275: 0x84FD, - 5276: 0x8502, - 5277: 0x8503, - 5278: 0x8507, - 5279: 0x850C, - 5280: 0x850E, - 5281: 0x8510, - 5282: 0x851C, - 5283: 0x851E, - 5284: 0x8522, - 5285: 0x8523, - 5286: 0x8524, - 5287: 0x8525, - 5288: 0x8527, - 5289: 0x852A, - 5290: 0x852B, - 5291: 0x852F, - 5292: 0x8533, - 5293: 0x8534, - 5294: 0x8536, - 5295: 0x853F, - 5296: 0x8546, - 5297: 0x854F, - 5298: 0x8550, - 5299: 0x8551, - 5300: 0x8552, - 5301: 0x8553, - 5302: 0x8556, - 5303: 0x8559, - 5304: 0x855C, - 5305: 0x855D, - 5306: 0x855E, - 5307: 0x855F, - 5308: 0x8560, - 5309: 0x8561, - 5310: 0x8562, - 5311: 0x8564, - 5312: 0x856B, - 5313: 0x856F, - 5314: 0x8579, - 5315: 0x857A, - 5316: 0x857B, - 5317: 0x857D, - 5318: 0x857F, - 5319: 0x8581, - 5320: 0x8585, - 5321: 0x8586, - 5322: 0x8589, - 5323: 0x858B, - 5324: 0x858C, - 5325: 0x858F, - 5326: 0x8593, - 5327: 0x8598, - 5328: 0x859D, - 5329: 0x859F, - 5330: 0x85A0, - 5331: 0x85A2, - 5332: 0x85A5, - 5333: 0x85A7, - 5334: 0x85B4, - 5335: 0x85B6, - 5336: 0x85B7, - 5337: 0x85B8, - 5338: 0x85BC, - 5339: 0x85BD, - 5340: 0x85BE, - 5341: 0x85BF, - 5342: 0x85C2, - 5343: 0x85C7, - 5344: 0x85CA, - 5345: 0x85CB, - 5346: 0x85CE, - 5347: 0x85AD, - 5348: 0x85D8, - 5349: 0x85DA, - 5350: 0x85DF, - 5351: 0x85E0, - 5352: 0x85E6, - 5353: 0x85E8, - 5354: 0x85ED, - 5355: 0x85F3, - 5356: 0x85F6, - 5357: 0x85FC, - 5358: 0x85FF, - 5359: 0x8600, - 5360: 0x8604, - 5361: 0x8605, - 5362: 0x860D, - 5363: 0x860E, - 5364: 0x8610, - 5365: 0x8611, - 5366: 0x8612, - 5367: 0x8618, - 5368: 0x8619, - 5369: 0x861B, - 5370: 0x861E, - 5371: 0x8621, - 5372: 0x8627, - 5373: 0x8629, - 5374: 0x8636, - 5375: 0x8638, - 5376: 0x863A, - 5377: 0x863C, - 5378: 0x863D, - 5379: 0x8640, - 5380: 0x8642, - 5381: 0x8646, - 5382: 0x8652, - 5383: 0x8653, - 5384: 0x8656, - 5385: 0x8657, - 5386: 0x8658, - 5387: 0x8659, - 5388: 0x865D, - 5389: 0x8660, - 5390: 0x8661, - 5391: 0x8662, - 5392: 0x8663, - 5393: 0x8664, - 5394: 0x8669, - 5395: 0x866C, - 5396: 0x866F, - 5397: 0x8675, - 5398: 0x8676, - 5399: 0x8677, - 5400: 0x867A, - 5401: 0x868D, - 5402: 0x8691, - 5403: 0x8696, - 5404: 0x8698, - 5405: 0x869A, - 5406: 0x869C, - 5407: 0x86A1, - 5408: 0x86A6, - 5409: 0x86A7, - 5410: 0x86A8, - 5411: 0x86AD, - 5412: 0x86B1, - 5413: 0x86B3, - 5414: 0x86B4, - 5415: 0x86B5, - 5416: 0x86B7, - 5417: 0x86B8, - 5418: 0x86B9, - 5419: 0x86BF, - 5420: 0x86C0, - 5421: 0x86C1, - 5422: 0x86C3, - 5423: 0x86C5, - 5424: 0x86D1, - 5425: 0x86D2, - 5426: 0x86D5, - 5427: 0x86D7, - 5428: 0x86DA, - 5429: 0x86DC, - 5430: 0x86E0, - 5431: 0x86E3, - 5432: 0x86E5, - 5433: 0x86E7, - 5434: 0x8688, - 5435: 0x86FA, - 5436: 0x86FC, - 5437: 0x86FD, - 5438: 0x8704, - 5439: 0x8705, - 5440: 0x8707, - 5441: 0x870B, - 5442: 0x870E, - 5443: 0x870F, - 5444: 0x8710, - 5445: 0x8713, - 5446: 0x8714, - 5447: 0x8719, - 5448: 0x871E, - 5449: 0x871F, - 5450: 0x8721, - 5451: 0x8723, - 5452: 0x8728, - 5453: 0x872E, - 5454: 0x872F, - 5455: 0x8731, - 5456: 0x8732, - 5457: 0x8739, - 5458: 0x873A, - 5459: 0x873C, - 5460: 0x873D, - 5461: 0x873E, - 5462: 0x8740, - 5463: 0x8743, - 5464: 0x8745, - 5465: 0x874D, - 5466: 0x8758, - 5467: 0x875D, - 5468: 0x8761, - 5469: 0x8764, - 5470: 0x8765, - 5471: 0x876F, - 5472: 0x8771, - 5473: 0x8772, - 5474: 0x877B, - 5475: 0x8783, - 5476: 0x8784, - 5477: 0x8785, - 5478: 0x8786, - 5479: 0x8787, - 5480: 0x8788, - 5481: 0x8789, - 5482: 0x878B, - 5483: 0x878C, - 5484: 0x8790, - 5485: 0x8793, - 5486: 0x8795, - 5487: 0x8797, - 5488: 0x8798, - 5489: 0x8799, - 5490: 0x879E, - 5491: 0x87A0, - 5492: 0x87A3, - 5493: 0x87A7, - 5494: 0x87AC, - 5495: 0x87AD, - 5496: 0x87AE, - 5497: 0x87B1, - 5498: 0x87B5, - 5499: 0x87BE, - 5500: 0x87BF, - 5501: 0x87C1, - 5502: 0x87C8, - 5503: 0x87C9, - 5504: 0x87CA, - 5505: 0x87CE, - 5506: 0x87D5, - 5507: 0x87D6, - 5508: 0x87D9, - 5509: 0x87DA, - 5510: 0x87DC, - 5511: 0x87DF, - 5512: 0x87E2, - 5513: 0x87E3, - 5514: 0x87E4, - 5515: 0x87EA, - 5516: 0x87EB, - 5517: 0x87ED, - 5518: 0x87F1, - 5519: 0x87F3, - 5520: 0x87F8, - 5521: 0x87FA, - 5522: 0x87FF, - 5523: 0x8801, - 5524: 0x8803, - 5525: 0x8806, - 5526: 0x8809, - 5527: 0x880A, - 5528: 0x880B, - 5529: 0x8810, - 5530: 0x8819, - 5531: 0x8812, - 5532: 0x8813, - 5533: 0x8814, - 5534: 0x8818, - 5535: 0x881A, - 5536: 0x881B, - 5537: 0x881C, - 5538: 0x881E, - 5539: 0x881F, - 5540: 0x8828, - 5541: 0x882D, - 5542: 0x882E, - 5543: 0x8830, - 5544: 0x8832, - 5545: 0x8835, - 5546: 0x883A, - 5547: 0x883C, - 5548: 0x8841, - 5549: 0x8843, - 5550: 0x8845, - 5551: 0x8848, - 5552: 0x8849, - 5553: 0x884A, - 5554: 0x884B, - 5555: 0x884E, - 5556: 0x8851, - 5557: 0x8855, - 5558: 0x8856, - 5559: 0x8858, - 5560: 0x885A, - 5561: 0x885C, - 5562: 0x885F, - 5563: 0x8860, - 5564: 0x8864, - 5565: 0x8869, - 5566: 0x8871, - 5567: 0x8879, - 5568: 0x887B, - 5569: 0x8880, - 5570: 0x8898, - 5571: 0x889A, - 5572: 0x889B, - 5573: 0x889C, - 5574: 0x889F, - 5575: 0x88A0, - 5576: 0x88A8, - 5577: 0x88AA, - 5578: 0x88BA, - 5579: 0x88BD, - 5580: 0x88BE, - 5581: 0x88C0, - 5582: 0x88CA, - 5583: 0x88CB, - 5584: 0x88CC, - 5585: 0x88CD, - 5586: 0x88CE, - 5587: 0x88D1, - 5588: 0x88D2, - 5589: 0x88D3, - 5590: 0x88DB, - 5591: 0x88DE, - 5592: 0x88E7, - 5593: 0x88EF, - 5594: 0x88F0, - 5595: 0x88F1, - 5596: 0x88F5, - 5597: 0x88F7, - 5598: 0x8901, - 5599: 0x8906, - 5600: 0x890D, - 5601: 0x890E, - 5602: 0x890F, - 5603: 0x8915, - 5604: 0x8916, - 5605: 0x8918, - 5606: 0x8919, - 5607: 0x891A, - 5608: 0x891C, - 5609: 0x8920, - 5610: 0x8926, - 5611: 0x8927, - 5612: 0x8928, - 5613: 0x8930, - 5614: 0x8931, - 5615: 0x8932, - 5616: 0x8935, - 5617: 0x8939, - 5618: 0x893A, - 5619: 0x893E, - 5620: 0x8940, - 5621: 0x8942, - 5622: 0x8945, - 5623: 0x8946, - 5624: 0x8949, - 5625: 0x894F, - 5626: 0x8952, - 5627: 0x8957, - 5628: 0x895A, - 5629: 0x895B, - 5630: 0x895C, - 5631: 0x8961, - 5632: 0x8962, - 5633: 0x8963, - 5634: 0x896B, - 5635: 0x896E, - 5636: 0x8970, - 5637: 0x8973, - 5638: 0x8975, - 5639: 0x897A, - 5640: 0x897B, - 5641: 0x897C, - 5642: 0x897D, - 5643: 0x8989, - 5644: 0x898D, - 5645: 0x8990, - 5646: 0x8994, - 5647: 0x8995, - 5648: 0x899B, - 5649: 0x899C, - 5650: 0x899F, - 5651: 0x89A0, - 5652: 0x89A5, - 5653: 0x89B0, - 5654: 0x89B4, - 5655: 0x89B5, - 5656: 0x89B6, - 5657: 0x89B7, - 5658: 0x89BC, - 5659: 0x89D4, - 5660: 0x89D5, - 5661: 0x89D6, - 5662: 0x89D7, - 5663: 0x89D8, - 5664: 0x89E5, - 5665: 0x89E9, - 5666: 0x89EB, - 5667: 0x89ED, - 5668: 0x89F1, - 5669: 0x89F3, - 5670: 0x89F6, - 5671: 0x89F9, - 5672: 0x89FD, - 5673: 0x89FF, - 5674: 0x8A04, - 5675: 0x8A05, - 5676: 0x8A07, - 5677: 0x8A0F, - 5678: 0x8A11, - 5679: 0x8A12, - 5680: 0x8A14, - 5681: 0x8A15, - 5682: 0x8A1E, - 5683: 0x8A20, - 5684: 0x8A22, - 5685: 0x8A24, - 5686: 0x8A26, - 5687: 0x8A2B, - 5688: 0x8A2C, - 5689: 0x8A2F, - 5690: 0x8A35, - 5691: 0x8A37, - 5692: 0x8A3D, - 5693: 0x8A3E, - 5694: 0x8A40, - 5695: 0x8A43, - 5696: 0x8A45, - 5697: 0x8A47, - 5698: 0x8A49, - 5699: 0x8A4D, - 5700: 0x8A4E, - 5701: 0x8A53, - 5702: 0x8A56, - 5703: 0x8A57, - 5704: 0x8A58, - 5705: 0x8A5C, - 5706: 0x8A5D, - 5707: 0x8A61, - 5708: 0x8A65, - 5709: 0x8A67, - 5710: 0x8A75, - 5711: 0x8A76, - 5712: 0x8A77, - 5713: 0x8A79, - 5714: 0x8A7A, - 5715: 0x8A7B, - 5716: 0x8A7E, - 5717: 0x8A7F, - 5718: 0x8A80, - 5719: 0x8A83, - 5720: 0x8A86, - 5721: 0x8A8B, - 5722: 0x8A8F, - 5723: 0x8A90, - 5724: 0x8A92, - 5725: 0x8A96, - 5726: 0x8A97, - 5727: 0x8A99, - 5728: 0x8A9F, - 5729: 0x8AA7, - 5730: 0x8AA9, - 5731: 0x8AAE, - 5732: 0x8AAF, - 5733: 0x8AB3, - 5734: 0x8AB6, - 5735: 0x8AB7, - 5736: 0x8ABB, - 5737: 0x8ABE, - 5738: 0x8AC3, - 5739: 0x8AC6, - 5740: 0x8AC8, - 5741: 0x8AC9, - 5742: 0x8ACA, - 5743: 0x8AD1, - 5744: 0x8AD3, - 5745: 0x8AD4, - 5746: 0x8AD5, - 5747: 0x8AD7, - 5748: 0x8ADD, - 5749: 0x8ADF, - 5750: 0x8AEC, - 5751: 0x8AF0, - 5752: 0x8AF4, - 5753: 0x8AF5, - 5754: 0x8AF6, - 5755: 0x8AFC, - 5756: 0x8AFF, - 5757: 0x8B05, - 5758: 0x8B06, - 5759: 0x8B0B, - 5760: 0x8B11, - 5761: 0x8B1C, - 5762: 0x8B1E, - 5763: 0x8B1F, - 5764: 0x8B0A, - 5765: 0x8B2D, - 5766: 0x8B30, - 5767: 0x8B37, - 5768: 0x8B3C, - 5769: 0x8B42, - 5770: 0x8B43, - 5771: 0x8B44, - 5772: 0x8B45, - 5773: 0x8B46, - 5774: 0x8B48, - 5775: 0x8B52, - 5776: 0x8B53, - 5777: 0x8B54, - 5778: 0x8B59, - 5779: 0x8B4D, - 5780: 0x8B5E, - 5781: 0x8B63, - 5782: 0x8B6D, - 5783: 0x8B76, - 5784: 0x8B78, - 5785: 0x8B79, - 5786: 0x8B7C, - 5787: 0x8B7E, - 5788: 0x8B81, - 5789: 0x8B84, - 5790: 0x8B85, - 5791: 0x8B8B, - 5792: 0x8B8D, - 5793: 0x8B8F, - 5794: 0x8B94, - 5795: 0x8B95, - 5796: 0x8B9C, - 5797: 0x8B9E, - 5798: 0x8B9F, - 5799: 0x8C38, - 5800: 0x8C39, - 5801: 0x8C3D, - 5802: 0x8C3E, - 5803: 0x8C45, - 5804: 0x8C47, - 5805: 0x8C49, - 5806: 0x8C4B, - 5807: 0x8C4F, - 5808: 0x8C51, - 5809: 0x8C53, - 5810: 0x8C54, - 5811: 0x8C57, - 5812: 0x8C58, - 5813: 0x8C5B, - 5814: 0x8C5D, - 5815: 0x8C59, - 5816: 0x8C63, - 5817: 0x8C64, - 5818: 0x8C66, - 5819: 0x8C68, - 5820: 0x8C69, - 5821: 0x8C6D, - 5822: 0x8C73, - 5823: 0x8C75, - 5824: 0x8C76, - 5825: 0x8C7B, - 5826: 0x8C7E, - 5827: 0x8C86, - 5828: 0x8C87, - 5829: 0x8C8B, - 5830: 0x8C90, - 5831: 0x8C92, - 5832: 0x8C93, - 5833: 0x8C99, - 5834: 0x8C9B, - 5835: 0x8C9C, - 5836: 0x8CA4, - 5837: 0x8CB9, - 5838: 0x8CBA, - 5839: 0x8CC5, - 5840: 0x8CC6, - 5841: 0x8CC9, - 5842: 0x8CCB, - 5843: 0x8CCF, - 5844: 0x8CD6, - 5845: 0x8CD5, - 5846: 0x8CD9, - 5847: 0x8CDD, - 5848: 0x8CE1, - 5849: 0x8CE8, - 5850: 0x8CEC, - 5851: 0x8CEF, - 5852: 0x8CF0, - 5853: 0x8CF2, - 5854: 0x8CF5, - 5855: 0x8CF7, - 5856: 0x8CF8, - 5857: 0x8CFE, - 5858: 0x8CFF, - 5859: 0x8D01, - 5860: 0x8D03, - 5861: 0x8D09, - 5862: 0x8D12, - 5863: 0x8D17, - 5864: 0x8D1B, - 5865: 0x8D65, - 5866: 0x8D69, - 5867: 0x8D6C, - 5868: 0x8D6E, - 5869: 0x8D7F, - 5870: 0x8D82, - 5871: 0x8D84, - 5872: 0x8D88, - 5873: 0x8D8D, - 5874: 0x8D90, - 5875: 0x8D91, - 5876: 0x8D95, - 5877: 0x8D9E, - 5878: 0x8D9F, - 5879: 0x8DA0, - 5880: 0x8DA6, - 5881: 0x8DAB, - 5882: 0x8DAC, - 5883: 0x8DAF, - 5884: 0x8DB2, - 5885: 0x8DB5, - 5886: 0x8DB7, - 5887: 0x8DB9, - 5888: 0x8DBB, - 5889: 0x8DC0, - 5890: 0x8DC5, - 5891: 0x8DC6, - 5892: 0x8DC7, - 5893: 0x8DC8, - 5894: 0x8DCA, - 5895: 0x8DCE, - 5896: 0x8DD1, - 5897: 0x8DD4, - 5898: 0x8DD5, - 5899: 0x8DD7, - 5900: 0x8DD9, - 5901: 0x8DE4, - 5902: 0x8DE5, - 5903: 0x8DE7, - 5904: 0x8DEC, - 5905: 0x8DF0, - 5906: 0x8DBC, - 5907: 0x8DF1, - 5908: 0x8DF2, - 5909: 0x8DF4, - 5910: 0x8DFD, - 5911: 0x8E01, - 5912: 0x8E04, - 5913: 0x8E05, - 5914: 0x8E06, - 5915: 0x8E0B, - 5916: 0x8E11, - 5917: 0x8E14, - 5918: 0x8E16, - 5919: 0x8E20, - 5920: 0x8E21, - 5921: 0x8E22, - 5922: 0x8E23, - 5923: 0x8E26, - 5924: 0x8E27, - 5925: 0x8E31, - 5926: 0x8E33, - 5927: 0x8E36, - 5928: 0x8E37, - 5929: 0x8E38, - 5930: 0x8E39, - 5931: 0x8E3D, - 5932: 0x8E40, - 5933: 0x8E41, - 5934: 0x8E4B, - 5935: 0x8E4D, - 5936: 0x8E4E, - 5937: 0x8E4F, - 5938: 0x8E54, - 5939: 0x8E5B, - 5940: 0x8E5C, - 5941: 0x8E5D, - 5942: 0x8E5E, - 5943: 0x8E61, - 5944: 0x8E62, - 5945: 0x8E69, - 5946: 0x8E6C, - 5947: 0x8E6D, - 5948: 0x8E6F, - 5949: 0x8E70, - 5950: 0x8E71, - 5951: 0x8E79, - 5952: 0x8E7A, - 5953: 0x8E7B, - 5954: 0x8E82, - 5955: 0x8E83, - 5956: 0x8E89, - 5957: 0x8E90, - 5958: 0x8E92, - 5959: 0x8E95, - 5960: 0x8E9A, - 5961: 0x8E9B, - 5962: 0x8E9D, - 5963: 0x8E9E, - 5964: 0x8EA2, - 5965: 0x8EA7, - 5966: 0x8EA9, - 5967: 0x8EAD, - 5968: 0x8EAE, - 5969: 0x8EB3, - 5970: 0x8EB5, - 5971: 0x8EBA, - 5972: 0x8EBB, - 5973: 0x8EC0, - 5974: 0x8EC1, - 5975: 0x8EC3, - 5976: 0x8EC4, - 5977: 0x8EC7, - 5978: 0x8ECF, - 5979: 0x8ED1, - 5980: 0x8ED4, - 5981: 0x8EDC, - 5982: 0x8EE8, - 5983: 0x8EEE, - 5984: 0x8EF0, - 5985: 0x8EF1, - 5986: 0x8EF7, - 5987: 0x8EF9, - 5988: 0x8EFA, - 5989: 0x8EED, - 5990: 0x8F00, - 5991: 0x8F02, - 5992: 0x8F07, - 5993: 0x8F08, - 5994: 0x8F0F, - 5995: 0x8F10, - 5996: 0x8F16, - 5997: 0x8F17, - 5998: 0x8F18, - 5999: 0x8F1E, - 6000: 0x8F20, - 6001: 0x8F21, - 6002: 0x8F23, - 6003: 0x8F25, - 6004: 0x8F27, - 6005: 0x8F28, - 6006: 0x8F2C, - 6007: 0x8F2D, - 6008: 0x8F2E, - 6009: 0x8F34, - 6010: 0x8F35, - 6011: 0x8F36, - 6012: 0x8F37, - 6013: 0x8F3A, - 6014: 0x8F40, - 6015: 0x8F41, - 6016: 0x8F43, - 6017: 0x8F47, - 6018: 0x8F4F, - 6019: 0x8F51, - 6020: 0x8F52, - 6021: 0x8F53, - 6022: 0x8F54, - 6023: 0x8F55, - 6024: 0x8F58, - 6025: 0x8F5D, - 6026: 0x8F5E, - 6027: 0x8F65, - 6028: 0x8F9D, - 6029: 0x8FA0, - 6030: 0x8FA1, - 6031: 0x8FA4, - 6032: 0x8FA5, - 6033: 0x8FA6, - 6034: 0x8FB5, - 6035: 0x8FB6, - 6036: 0x8FB8, - 6037: 0x8FBE, - 6038: 0x8FC0, - 6039: 0x8FC1, - 6040: 0x8FC6, - 6041: 0x8FCA, - 6042: 0x8FCB, - 6043: 0x8FCD, - 6044: 0x8FD0, - 6045: 0x8FD2, - 6046: 0x8FD3, - 6047: 0x8FD5, - 6048: 0x8FE0, - 6049: 0x8FE3, - 6050: 0x8FE4, - 6051: 0x8FE8, - 6052: 0x8FEE, - 6053: 0x8FF1, - 6054: 0x8FF5, - 6055: 0x8FF6, - 6056: 0x8FFB, - 6057: 0x8FFE, - 6058: 0x9002, - 6059: 0x9004, - 6060: 0x9008, - 6061: 0x900C, - 6062: 0x9018, - 6063: 0x901B, - 6064: 0x9028, - 6065: 0x9029, - 6066: 0x902F, - 6067: 0x902A, - 6068: 0x902C, - 6069: 0x902D, - 6070: 0x9033, - 6071: 0x9034, - 6072: 0x9037, - 6073: 0x903F, - 6074: 0x9043, - 6075: 0x9044, - 6076: 0x904C, - 6077: 0x905B, - 6078: 0x905D, - 6079: 0x9062, - 6080: 0x9066, - 6081: 0x9067, - 6082: 0x906C, - 6083: 0x9070, - 6084: 0x9074, - 6085: 0x9079, - 6086: 0x9085, - 6087: 0x9088, - 6088: 0x908B, - 6089: 0x908C, - 6090: 0x908E, - 6091: 0x9090, - 6092: 0x9095, - 6093: 0x9097, - 6094: 0x9098, - 6095: 0x9099, - 6096: 0x909B, - 6097: 0x90A0, - 6098: 0x90A1, - 6099: 0x90A2, - 6100: 0x90A5, - 6101: 0x90B0, - 6102: 0x90B2, - 6103: 0x90B3, - 6104: 0x90B4, - 6105: 0x90B6, - 6106: 0x90BD, - 6107: 0x90CC, - 6108: 0x90BE, - 6109: 0x90C3, - 6110: 0x90C4, - 6111: 0x90C5, - 6112: 0x90C7, - 6113: 0x90C8, - 6114: 0x90D5, - 6115: 0x90D7, - 6116: 0x90D8, - 6117: 0x90D9, - 6118: 0x90DC, - 6119: 0x90DD, - 6120: 0x90DF, - 6121: 0x90E5, - 6122: 0x90D2, - 6123: 0x90F6, - 6124: 0x90EB, - 6125: 0x90EF, - 6126: 0x90F0, - 6127: 0x90F4, - 6128: 0x90FE, - 6129: 0x90FF, - 6130: 0x9100, - 6131: 0x9104, - 6132: 0x9105, - 6133: 0x9106, - 6134: 0x9108, - 6135: 0x910D, - 6136: 0x9110, - 6137: 0x9114, - 6138: 0x9116, - 6139: 0x9117, - 6140: 0x9118, - 6141: 0x911A, - 6142: 0x911C, - 6143: 0x911E, - 6144: 0x9120, - 6145: 0x9125, - 6146: 0x9122, - 6147: 0x9123, - 6148: 0x9127, - 6149: 0x9129, - 6150: 0x912E, - 6151: 0x912F, - 6152: 0x9131, - 6153: 0x9134, - 6154: 0x9136, - 6155: 0x9137, - 6156: 0x9139, - 6157: 0x913A, - 6158: 0x913C, - 6159: 0x913D, - 6160: 0x9143, - 6161: 0x9147, - 6162: 0x9148, - 6163: 0x914F, - 6164: 0x9153, - 6165: 0x9157, - 6166: 0x9159, - 6167: 0x915A, - 6168: 0x915B, - 6169: 0x9161, - 6170: 0x9164, - 6171: 0x9167, - 6172: 0x916D, - 6173: 0x9174, - 6174: 0x9179, - 6175: 0x917A, - 6176: 0x917B, - 6177: 0x9181, - 6178: 0x9183, - 6179: 0x9185, - 6180: 0x9186, - 6181: 0x918A, - 6182: 0x918E, - 6183: 0x9191, - 6184: 0x9193, - 6185: 0x9194, - 6186: 0x9195, - 6187: 0x9198, - 6188: 0x919E, - 6189: 0x91A1, - 6190: 0x91A6, - 6191: 0x91A8, - 6192: 0x91AC, - 6193: 0x91AD, - 6194: 0x91AE, - 6195: 0x91B0, - 6196: 0x91B1, - 6197: 0x91B2, - 6198: 0x91B3, - 6199: 0x91B6, - 6200: 0x91BB, - 6201: 0x91BC, - 6202: 0x91BD, - 6203: 0x91BF, - 6204: 0x91C2, - 6205: 0x91C3, - 6206: 0x91C5, - 6207: 0x91D3, - 6208: 0x91D4, - 6209: 0x91D7, - 6210: 0x91D9, - 6211: 0x91DA, - 6212: 0x91DE, - 6213: 0x91E4, - 6214: 0x91E5, - 6215: 0x91E9, - 6216: 0x91EA, - 6217: 0x91EC, - 6218: 0x91ED, - 6219: 0x91EE, - 6220: 0x91EF, - 6221: 0x91F0, - 6222: 0x91F1, - 6223: 0x91F7, - 6224: 0x91F9, - 6225: 0x91FB, - 6226: 0x91FD, - 6227: 0x9200, - 6228: 0x9201, - 6229: 0x9204, - 6230: 0x9205, - 6231: 0x9206, - 6232: 0x9207, - 6233: 0x9209, - 6234: 0x920A, - 6235: 0x920C, - 6236: 0x9210, - 6237: 0x9212, - 6238: 0x9213, - 6239: 0x9216, - 6240: 0x9218, - 6241: 0x921C, - 6242: 0x921D, - 6243: 0x9223, - 6244: 0x9224, - 6245: 0x9225, - 6246: 0x9226, - 6247: 0x9228, - 6248: 0x922E, - 6249: 0x922F, - 6250: 0x9230, - 6251: 0x9233, - 6252: 0x9235, - 6253: 0x9236, - 6254: 0x9238, - 6255: 0x9239, - 6256: 0x923A, - 6257: 0x923C, - 6258: 0x923E, - 6259: 0x9240, - 6260: 0x9242, - 6261: 0x9243, - 6262: 0x9246, - 6263: 0x9247, - 6264: 0x924A, - 6265: 0x924D, - 6266: 0x924E, - 6267: 0x924F, - 6268: 0x9251, - 6269: 0x9258, - 6270: 0x9259, - 6271: 0x925C, - 6272: 0x925D, - 6273: 0x9260, - 6274: 0x9261, - 6275: 0x9265, - 6276: 0x9267, - 6277: 0x9268, - 6278: 0x9269, - 6279: 0x926E, - 6280: 0x926F, - 6281: 0x9270, - 6282: 0x9275, - 6283: 0x9276, - 6284: 0x9277, - 6285: 0x9278, - 6286: 0x9279, - 6287: 0x927B, - 6288: 0x927C, - 6289: 0x927D, - 6290: 0x927F, - 6291: 0x9288, - 6292: 0x9289, - 6293: 0x928A, - 6294: 0x928D, - 6295: 0x928E, - 6296: 0x9292, - 6297: 0x9297, - 6298: 0x9299, - 6299: 0x929F, - 6300: 0x92A0, - 6301: 0x92A4, - 6302: 0x92A5, - 6303: 0x92A7, - 6304: 0x92A8, - 6305: 0x92AB, - 6306: 0x92AF, - 6307: 0x92B2, - 6308: 0x92B6, - 6309: 0x92B8, - 6310: 0x92BA, - 6311: 0x92BB, - 6312: 0x92BC, - 6313: 0x92BD, - 6314: 0x92BF, - 6315: 0x92C0, - 6316: 0x92C1, - 6317: 0x92C2, - 6318: 0x92C3, - 6319: 0x92C5, - 6320: 0x92C6, - 6321: 0x92C7, - 6322: 0x92C8, - 6323: 0x92CB, - 6324: 0x92CC, - 6325: 0x92CD, - 6326: 0x92CE, - 6327: 0x92D0, - 6328: 0x92D3, - 6329: 0x92D5, - 6330: 0x92D7, - 6331: 0x92D8, - 6332: 0x92D9, - 6333: 0x92DC, - 6334: 0x92DD, - 6335: 0x92DF, - 6336: 0x92E0, - 6337: 0x92E1, - 6338: 0x92E3, - 6339: 0x92E5, - 6340: 0x92E7, - 6341: 0x92E8, - 6342: 0x92EC, - 6343: 0x92EE, - 6344: 0x92F0, - 6345: 0x92F9, - 6346: 0x92FB, - 6347: 0x92FF, - 6348: 0x9300, - 6349: 0x9302, - 6350: 0x9308, - 6351: 0x930D, - 6352: 0x9311, - 6353: 0x9314, - 6354: 0x9315, - 6355: 0x931C, - 6356: 0x931D, - 6357: 0x931E, - 6358: 0x931F, - 6359: 0x9321, - 6360: 0x9324, - 6361: 0x9325, - 6362: 0x9327, - 6363: 0x9329, - 6364: 0x932A, - 6365: 0x9333, - 6366: 0x9334, - 6367: 0x9336, - 6368: 0x9337, - 6369: 0x9347, - 6370: 0x9348, - 6371: 0x9349, - 6372: 0x9350, - 6373: 0x9351, - 6374: 0x9352, - 6375: 0x9355, - 6376: 0x9357, - 6377: 0x9358, - 6378: 0x935A, - 6379: 0x935E, - 6380: 0x9364, - 6381: 0x9365, - 6382: 0x9367, - 6383: 0x9369, - 6384: 0x936A, - 6385: 0x936D, - 6386: 0x936F, - 6387: 0x9370, - 6388: 0x9371, - 6389: 0x9373, - 6390: 0x9374, - 6391: 0x9376, - 6392: 0x937A, - 6393: 0x937D, - 6394: 0x937F, - 6395: 0x9380, - 6396: 0x9381, - 6397: 0x9382, - 6398: 0x9388, - 6399: 0x938A, - 6400: 0x938B, - 6401: 0x938D, - 6402: 0x938F, - 6403: 0x9392, - 6404: 0x9395, - 6405: 0x9398, - 6406: 0x939B, - 6407: 0x939E, - 6408: 0x93A1, - 6409: 0x93A3, - 6410: 0x93A4, - 6411: 0x93A6, - 6412: 0x93A8, - 6413: 0x93AB, - 6414: 0x93B4, - 6415: 0x93B5, - 6416: 0x93B6, - 6417: 0x93BA, - 6418: 0x93A9, - 6419: 0x93C1, - 6420: 0x93C4, - 6421: 0x93C5, - 6422: 0x93C6, - 6423: 0x93C7, - 6424: 0x93C9, - 6425: 0x93CA, - 6426: 0x93CB, - 6427: 0x93CC, - 6428: 0x93CD, - 6429: 0x93D3, - 6430: 0x93D9, - 6431: 0x93DC, - 6432: 0x93DE, - 6433: 0x93DF, - 6434: 0x93E2, - 6435: 0x93E6, - 6436: 0x93E7, - 6437: 0x93F9, - 6438: 0x93F7, - 6439: 0x93F8, - 6440: 0x93FA, - 6441: 0x93FB, - 6442: 0x93FD, - 6443: 0x9401, - 6444: 0x9402, - 6445: 0x9404, - 6446: 0x9408, - 6447: 0x9409, - 6448: 0x940D, - 6449: 0x940E, - 6450: 0x940F, - 6451: 0x9415, - 6452: 0x9416, - 6453: 0x9417, - 6454: 0x941F, - 6455: 0x942E, - 6456: 0x942F, - 6457: 0x9431, - 6458: 0x9432, - 6459: 0x9433, - 6460: 0x9434, - 6461: 0x943B, - 6462: 0x943F, - 6463: 0x943D, - 6464: 0x9443, - 6465: 0x9445, - 6466: 0x9448, - 6467: 0x944A, - 6468: 0x944C, - 6469: 0x9455, - 6470: 0x9459, - 6471: 0x945C, - 6472: 0x945F, - 6473: 0x9461, - 6474: 0x9463, - 6475: 0x9468, - 6476: 0x946B, - 6477: 0x946D, - 6478: 0x946E, - 6479: 0x946F, - 6480: 0x9471, - 6481: 0x9472, - 6482: 0x9484, - 6483: 0x9483, - 6484: 0x9578, - 6485: 0x9579, - 6486: 0x957E, - 6487: 0x9584, - 6488: 0x9588, - 6489: 0x958C, - 6490: 0x958D, - 6491: 0x958E, - 6492: 0x959D, - 6493: 0x959E, - 6494: 0x959F, - 6495: 0x95A1, - 6496: 0x95A6, - 6497: 0x95A9, - 6498: 0x95AB, - 6499: 0x95AC, - 6500: 0x95B4, - 6501: 0x95B6, - 6502: 0x95BA, - 6503: 0x95BD, - 6504: 0x95BF, - 6505: 0x95C6, - 6506: 0x95C8, - 6507: 0x95C9, - 6508: 0x95CB, - 6509: 0x95D0, - 6510: 0x95D1, - 6511: 0x95D2, - 6512: 0x95D3, - 6513: 0x95D9, - 6514: 0x95DA, - 6515: 0x95DD, - 6516: 0x95DE, - 6517: 0x95DF, - 6518: 0x95E0, - 6519: 0x95E4, - 6520: 0x95E6, - 6521: 0x961D, - 6522: 0x961E, - 6523: 0x9622, - 6524: 0x9624, - 6525: 0x9625, - 6526: 0x9626, - 6527: 0x962C, - 6528: 0x9631, - 6529: 0x9633, - 6530: 0x9637, - 6531: 0x9638, - 6532: 0x9639, - 6533: 0x963A, - 6534: 0x963C, - 6535: 0x963D, - 6536: 0x9641, - 6537: 0x9652, - 6538: 0x9654, - 6539: 0x9656, - 6540: 0x9657, - 6541: 0x9658, - 6542: 0x9661, - 6543: 0x966E, - 6544: 0x9674, - 6545: 0x967B, - 6546: 0x967C, - 6547: 0x967E, - 6548: 0x967F, - 6549: 0x9681, - 6550: 0x9682, - 6551: 0x9683, - 6552: 0x9684, - 6553: 0x9689, - 6554: 0x9691, - 6555: 0x9696, - 6556: 0x969A, - 6557: 0x969D, - 6558: 0x969F, - 6559: 0x96A4, - 6560: 0x96A5, - 6561: 0x96A6, - 6562: 0x96A9, - 6563: 0x96AE, - 6564: 0x96AF, - 6565: 0x96B3, - 6566: 0x96BA, - 6567: 0x96CA, - 6568: 0x96D2, - 6569: 0x5DB2, - 6570: 0x96D8, - 6571: 0x96DA, - 6572: 0x96DD, - 6573: 0x96DE, - 6574: 0x96DF, - 6575: 0x96E9, - 6576: 0x96EF, - 6577: 0x96F1, - 6578: 0x96FA, - 6579: 0x9702, - 6580: 0x9703, - 6581: 0x9705, - 6582: 0x9709, - 6583: 0x971A, - 6584: 0x971B, - 6585: 0x971D, - 6586: 0x9721, - 6587: 0x9722, - 6588: 0x9723, - 6589: 0x9728, - 6590: 0x9731, - 6591: 0x9733, - 6592: 0x9741, - 6593: 0x9743, - 6594: 0x974A, - 6595: 0x974E, - 6596: 0x974F, - 6597: 0x9755, - 6598: 0x9757, - 6599: 0x9758, - 6600: 0x975A, - 6601: 0x975B, - 6602: 0x9763, - 6603: 0x9767, - 6604: 0x976A, - 6605: 0x976E, - 6606: 0x9773, - 6607: 0x9776, - 6608: 0x9777, - 6609: 0x9778, - 6610: 0x977B, - 6611: 0x977D, - 6612: 0x977F, - 6613: 0x9780, - 6614: 0x9789, - 6615: 0x9795, - 6616: 0x9796, - 6617: 0x9797, - 6618: 0x9799, - 6619: 0x979A, - 6620: 0x979E, - 6621: 0x979F, - 6622: 0x97A2, - 6623: 0x97AC, - 6624: 0x97AE, - 6625: 0x97B1, - 6626: 0x97B2, - 6627: 0x97B5, - 6628: 0x97B6, - 6629: 0x97B8, - 6630: 0x97B9, - 6631: 0x97BA, - 6632: 0x97BC, - 6633: 0x97BE, - 6634: 0x97BF, - 6635: 0x97C1, - 6636: 0x97C4, - 6637: 0x97C5, - 6638: 0x97C7, - 6639: 0x97C9, - 6640: 0x97CA, - 6641: 0x97CC, - 6642: 0x97CD, - 6643: 0x97CE, - 6644: 0x97D0, - 6645: 0x97D1, - 6646: 0x97D4, - 6647: 0x97D7, - 6648: 0x97D8, - 6649: 0x97D9, - 6650: 0x97DD, - 6651: 0x97DE, - 6652: 0x97E0, - 6653: 0x97DB, - 6654: 0x97E1, - 6655: 0x97E4, - 6656: 0x97EF, - 6657: 0x97F1, - 6658: 0x97F4, - 6659: 0x97F7, - 6660: 0x97F8, - 6661: 0x97FA, - 6662: 0x9807, - 6663: 0x980A, - 6664: 0x9819, - 6665: 0x980D, - 6666: 0x980E, - 6667: 0x9814, - 6668: 0x9816, - 6669: 0x981C, - 6670: 0x981E, - 6671: 0x9820, - 6672: 0x9823, - 6673: 0x9826, - 6674: 0x982B, - 6675: 0x982E, - 6676: 0x982F, - 6677: 0x9830, - 6678: 0x9832, - 6679: 0x9833, - 6680: 0x9835, - 6681: 0x9825, - 6682: 0x983E, - 6683: 0x9844, - 6684: 0x9847, - 6685: 0x984A, - 6686: 0x9851, - 6687: 0x9852, - 6688: 0x9853, - 6689: 0x9856, - 6690: 0x9857, - 6691: 0x9859, - 6692: 0x985A, - 6693: 0x9862, - 6694: 0x9863, - 6695: 0x9865, - 6696: 0x9866, - 6697: 0x986A, - 6698: 0x986C, - 6699: 0x98AB, - 6700: 0x98AD, - 6701: 0x98AE, - 6702: 0x98B0, - 6703: 0x98B4, - 6704: 0x98B7, - 6705: 0x98B8, - 6706: 0x98BA, - 6707: 0x98BB, - 6708: 0x98BF, - 6709: 0x98C2, - 6710: 0x98C5, - 6711: 0x98C8, - 6712: 0x98CC, - 6713: 0x98E1, - 6714: 0x98E3, - 6715: 0x98E5, - 6716: 0x98E6, - 6717: 0x98E7, - 6718: 0x98EA, - 6719: 0x98F3, - 6720: 0x98F6, - 6721: 0x9902, - 6722: 0x9907, - 6723: 0x9908, - 6724: 0x9911, - 6725: 0x9915, - 6726: 0x9916, - 6727: 0x9917, - 6728: 0x991A, - 6729: 0x991B, - 6730: 0x991C, - 6731: 0x991F, - 6732: 0x9922, - 6733: 0x9926, - 6734: 0x9927, - 6735: 0x992B, - 6736: 0x9931, - 6737: 0x9932, - 6738: 0x9933, - 6739: 0x9934, - 6740: 0x9935, - 6741: 0x9939, - 6742: 0x993A, - 6743: 0x993B, - 6744: 0x993C, - 6745: 0x9940, - 6746: 0x9941, - 6747: 0x9946, - 6748: 0x9947, - 6749: 0x9948, - 6750: 0x994D, - 6751: 0x994E, - 6752: 0x9954, - 6753: 0x9958, - 6754: 0x9959, - 6755: 0x995B, - 6756: 0x995C, - 6757: 0x995E, - 6758: 0x995F, - 6759: 0x9960, - 6760: 0x999B, - 6761: 0x999D, - 6762: 0x999F, - 6763: 0x99A6, - 6764: 0x99B0, - 6765: 0x99B1, - 6766: 0x99B2, - 6767: 0x99B5, - 6768: 0x99B9, - 6769: 0x99BA, - 6770: 0x99BD, - 6771: 0x99BF, - 6772: 0x99C3, - 6773: 0x99C9, - 6774: 0x99D3, - 6775: 0x99D4, - 6776: 0x99D9, - 6777: 0x99DA, - 6778: 0x99DC, - 6779: 0x99DE, - 6780: 0x99E7, - 6781: 0x99EA, - 6782: 0x99EB, - 6783: 0x99EC, - 6784: 0x99F0, - 6785: 0x99F4, - 6786: 0x99F5, - 6787: 0x99F9, - 6788: 0x99FD, - 6789: 0x99FE, - 6790: 0x9A02, - 6791: 0x9A03, - 6792: 0x9A04, - 6793: 0x9A0B, - 6794: 0x9A0C, - 6795: 0x9A10, - 6796: 0x9A11, - 6797: 0x9A16, - 6798: 0x9A1E, - 6799: 0x9A20, - 6800: 0x9A22, - 6801: 0x9A23, - 6802: 0x9A24, - 6803: 0x9A27, - 6804: 0x9A2D, - 6805: 0x9A2E, - 6806: 0x9A33, - 6807: 0x9A35, - 6808: 0x9A36, - 6809: 0x9A38, - 6810: 0x9A47, - 6811: 0x9A41, - 6812: 0x9A44, - 6813: 0x9A4A, - 6814: 0x9A4B, - 6815: 0x9A4C, - 6816: 0x9A4E, - 6817: 0x9A51, - 6818: 0x9A54, - 6819: 0x9A56, - 6820: 0x9A5D, - 6821: 0x9AAA, - 6822: 0x9AAC, - 6823: 0x9AAE, - 6824: 0x9AAF, - 6825: 0x9AB2, - 6826: 0x9AB4, - 6827: 0x9AB5, - 6828: 0x9AB6, - 6829: 0x9AB9, - 6830: 0x9ABB, - 6831: 0x9ABE, - 6832: 0x9ABF, - 6833: 0x9AC1, - 6834: 0x9AC3, - 6835: 0x9AC6, - 6836: 0x9AC8, - 6837: 0x9ACE, - 6838: 0x9AD0, - 6839: 0x9AD2, - 6840: 0x9AD5, - 6841: 0x9AD6, - 6842: 0x9AD7, - 6843: 0x9ADB, - 6844: 0x9ADC, - 6845: 0x9AE0, - 6846: 0x9AE4, - 6847: 0x9AE5, - 6848: 0x9AE7, - 6849: 0x9AE9, - 6850: 0x9AEC, - 6851: 0x9AF2, - 6852: 0x9AF3, - 6853: 0x9AF5, - 6854: 0x9AF9, - 6855: 0x9AFA, - 6856: 0x9AFD, - 6857: 0x9AFF, - 6858: 0x9B00, - 6859: 0x9B01, - 6860: 0x9B02, - 6861: 0x9B03, - 6862: 0x9B04, - 6863: 0x9B05, - 6864: 0x9B08, - 6865: 0x9B09, - 6866: 0x9B0B, - 6867: 0x9B0C, - 6868: 0x9B0D, - 6869: 0x9B0E, - 6870: 0x9B10, - 6871: 0x9B12, - 6872: 0x9B16, - 6873: 0x9B19, - 6874: 0x9B1B, - 6875: 0x9B1C, - 6876: 0x9B20, - 6877: 0x9B26, - 6878: 0x9B2B, - 6879: 0x9B2D, - 6880: 0x9B33, - 6881: 0x9B34, - 6882: 0x9B35, - 6883: 0x9B37, - 6884: 0x9B39, - 6885: 0x9B3A, - 6886: 0x9B3D, - 6887: 0x9B48, - 6888: 0x9B4B, - 6889: 0x9B4C, - 6890: 0x9B55, - 6891: 0x9B56, - 6892: 0x9B57, - 6893: 0x9B5B, - 6894: 0x9B5E, - 6895: 0x9B61, - 6896: 0x9B63, - 6897: 0x9B65, - 6898: 0x9B66, - 6899: 0x9B68, - 6900: 0x9B6A, - 6901: 0x9B6B, - 6902: 0x9B6C, - 6903: 0x9B6D, - 6904: 0x9B6E, - 6905: 0x9B73, - 6906: 0x9B75, - 6907: 0x9B77, - 6908: 0x9B78, - 6909: 0x9B79, - 6910: 0x9B7F, - 6911: 0x9B80, - 6912: 0x9B84, - 6913: 0x9B85, - 6914: 0x9B86, - 6915: 0x9B87, - 6916: 0x9B89, - 6917: 0x9B8A, - 6918: 0x9B8B, - 6919: 0x9B8D, - 6920: 0x9B8F, - 6921: 0x9B90, - 6922: 0x9B94, - 6923: 0x9B9A, - 6924: 0x9B9D, - 6925: 0x9B9E, - 6926: 0x9BA6, - 6927: 0x9BA7, - 6928: 0x9BA9, - 6929: 0x9BAC, - 6930: 0x9BB0, - 6931: 0x9BB1, - 6932: 0x9BB2, - 6933: 0x9BB7, - 6934: 0x9BB8, - 6935: 0x9BBB, - 6936: 0x9BBC, - 6937: 0x9BBE, - 6938: 0x9BBF, - 6939: 0x9BC1, - 6940: 0x9BC7, - 6941: 0x9BC8, - 6942: 0x9BCE, - 6943: 0x9BD0, - 6944: 0x9BD7, - 6945: 0x9BD8, - 6946: 0x9BDD, - 6947: 0x9BDF, - 6948: 0x9BE5, - 6949: 0x9BE7, - 6950: 0x9BEA, - 6951: 0x9BEB, - 6952: 0x9BEF, - 6953: 0x9BF3, - 6954: 0x9BF7, - 6955: 0x9BF8, - 6956: 0x9BF9, - 6957: 0x9BFA, - 6958: 0x9BFD, - 6959: 0x9BFF, - 6960: 0x9C00, - 6961: 0x9C02, - 6962: 0x9C0B, - 6963: 0x9C0F, - 6964: 0x9C11, - 6965: 0x9C16, - 6966: 0x9C18, - 6967: 0x9C19, - 6968: 0x9C1A, - 6969: 0x9C1C, - 6970: 0x9C1E, - 6971: 0x9C22, - 6972: 0x9C23, - 6973: 0x9C26, - 6974: 0x9C27, - 6975: 0x9C28, - 6976: 0x9C29, - 6977: 0x9C2A, - 6978: 0x9C31, - 6979: 0x9C35, - 6980: 0x9C36, - 6981: 0x9C37, - 6982: 0x9C3D, - 6983: 0x9C41, - 6984: 0x9C43, - 6985: 0x9C44, - 6986: 0x9C45, - 6987: 0x9C49, - 6988: 0x9C4A, - 6989: 0x9C4E, - 6990: 0x9C4F, - 6991: 0x9C50, - 6992: 0x9C53, - 6993: 0x9C54, - 6994: 0x9C56, - 6995: 0x9C58, - 6996: 0x9C5B, - 6997: 0x9C5D, - 6998: 0x9C5E, - 6999: 0x9C5F, - 7000: 0x9C63, - 7001: 0x9C69, - 7002: 0x9C6A, - 7003: 0x9C5C, - 7004: 0x9C6B, - 7005: 0x9C68, - 7006: 0x9C6E, - 7007: 0x9C70, - 7008: 0x9C72, - 7009: 0x9C75, - 7010: 0x9C77, - 7011: 0x9C7B, - 7012: 0x9CE6, - 7013: 0x9CF2, - 7014: 0x9CF7, - 7015: 0x9CF9, - 7016: 0x9D0B, - 7017: 0x9D02, - 7018: 0x9D11, - 7019: 0x9D17, - 7020: 0x9D18, - 7021: 0x9D1C, - 7022: 0x9D1D, - 7023: 0x9D1E, - 7024: 0x9D2F, - 7025: 0x9D30, - 7026: 0x9D32, - 7027: 0x9D33, - 7028: 0x9D34, - 7029: 0x9D3A, - 7030: 0x9D3C, - 7031: 0x9D45, - 7032: 0x9D3D, - 7033: 0x9D42, - 7034: 0x9D43, - 7035: 0x9D47, - 7036: 0x9D4A, - 7037: 0x9D53, - 7038: 0x9D54, - 7039: 0x9D5F, - 7040: 0x9D63, - 7041: 0x9D62, - 7042: 0x9D65, - 7043: 0x9D69, - 7044: 0x9D6A, - 7045: 0x9D6B, - 7046: 0x9D70, - 7047: 0x9D76, - 7048: 0x9D77, - 7049: 0x9D7B, - 7050: 0x9D7C, - 7051: 0x9D7E, - 7052: 0x9D83, - 7053: 0x9D84, - 7054: 0x9D86, - 7055: 0x9D8A, - 7056: 0x9D8D, - 7057: 0x9D8E, - 7058: 0x9D92, - 7059: 0x9D93, - 7060: 0x9D95, - 7061: 0x9D96, - 7062: 0x9D97, - 7063: 0x9D98, - 7064: 0x9DA1, - 7065: 0x9DAA, - 7066: 0x9DAC, - 7067: 0x9DAE, - 7068: 0x9DB1, - 7069: 0x9DB5, - 7070: 0x9DB9, - 7071: 0x9DBC, - 7072: 0x9DBF, - 7073: 0x9DC3, - 7074: 0x9DC7, - 7075: 0x9DC9, - 7076: 0x9DCA, - 7077: 0x9DD4, - 7078: 0x9DD5, - 7079: 0x9DD6, - 7080: 0x9DD7, - 7081: 0x9DDA, - 7082: 0x9DDE, - 7083: 0x9DDF, - 7084: 0x9DE0, - 7085: 0x9DE5, - 7086: 0x9DE7, - 7087: 0x9DE9, - 7088: 0x9DEB, - 7089: 0x9DEE, - 7090: 0x9DF0, - 7091: 0x9DF3, - 7092: 0x9DF4, - 7093: 0x9DFE, - 7094: 0x9E0A, - 7095: 0x9E02, - 7096: 0x9E07, - 7097: 0x9E0E, - 7098: 0x9E10, - 7099: 0x9E11, - 7100: 0x9E12, - 7101: 0x9E15, - 7102: 0x9E16, - 7103: 0x9E19, - 7104: 0x9E1C, - 7105: 0x9E1D, - 7106: 0x9E7A, - 7107: 0x9E7B, - 7108: 0x9E7C, - 7109: 0x9E80, - 7110: 0x9E82, - 7111: 0x9E83, - 7112: 0x9E84, - 7113: 0x9E85, - 7114: 0x9E87, - 7115: 0x9E8E, - 7116: 0x9E8F, - 7117: 0x9E96, - 7118: 0x9E98, - 7119: 0x9E9B, - 7120: 0x9E9E, - 7121: 0x9EA4, - 7122: 0x9EA8, - 7123: 0x9EAC, - 7124: 0x9EAE, - 7125: 0x9EAF, - 7126: 0x9EB0, - 7127: 0x9EB3, - 7128: 0x9EB4, - 7129: 0x9EB5, - 7130: 0x9EC6, - 7131: 0x9EC8, - 7132: 0x9ECB, - 7133: 0x9ED5, - 7134: 0x9EDF, - 7135: 0x9EE4, - 7136: 0x9EE7, - 7137: 0x9EEC, - 7138: 0x9EED, - 7139: 0x9EEE, - 7140: 0x9EF0, - 7141: 0x9EF1, - 7142: 0x9EF2, - 7143: 0x9EF5, - 7144: 0x9EF8, - 7145: 0x9EFF, - 7146: 0x9F02, - 7147: 0x9F03, - 7148: 0x9F09, - 7149: 0x9F0F, - 7150: 0x9F10, - 7151: 0x9F11, - 7152: 0x9F12, - 7153: 0x9F14, - 7154: 0x9F16, - 7155: 0x9F17, - 7156: 0x9F19, - 7157: 0x9F1A, - 7158: 0x9F1B, - 7159: 0x9F1F, - 7160: 0x9F22, - 7161: 0x9F26, - 7162: 0x9F2A, - 7163: 0x9F2B, - 7164: 0x9F2F, - 7165: 0x9F31, - 7166: 0x9F32, - 7167: 0x9F34, - 7168: 0x9F37, - 7169: 0x9F39, - 7170: 0x9F3A, - 7171: 0x9F3C, - 7172: 0x9F3D, - 7173: 0x9F3F, - 7174: 0x9F41, - 7175: 0x9F43, - 7176: 0x9F44, - 7177: 0x9F45, - 7178: 0x9F46, - 7179: 0x9F47, - 7180: 0x9F53, - 7181: 0x9F55, - 7182: 0x9F56, - 7183: 0x9F57, - 7184: 0x9F58, - 7185: 0x9F5A, - 7186: 0x9F5D, - 7187: 0x9F5E, - 7188: 0x9F68, - 7189: 0x9F69, - 7190: 0x9F6D, - 7191: 0x9F6E, - 7192: 0x9F6F, - 7193: 0x9F70, - 7194: 0x9F71, - 7195: 0x9F73, - 7196: 0x9F75, - 7197: 0x9F7A, - 7198: 0x9F7D, - 7199: 0x9F8F, - 7200: 0x9F90, - 7201: 0x9F91, - 7202: 0x9F92, - 7203: 0x9F94, - 7204: 0x9F96, - 7205: 0x9F97, - 7206: 0x9F9E, - 7207: 0x9FA1, - 7208: 0x9FA2, - 7209: 0x9FA3, - 7210: 0x9FA5, -} - -const ( - jis0208 = 1 - jis0212 = 2 - codeMask = 0x7f - codeShift = 7 - tableShift = 14 -) - -const numEncodeTables = 6 - -// encodeX are the encoding tables from Unicode to JIS code, -// sorted by decreasing length. -// encode0: 20902 entries for runes in [19968, 40870). -// encode1: 1632 entries for runes in [ 8208, 9840). -// encode2: 974 entries for runes in [12288, 13262). -// encode3: 959 entries for runes in [ 161, 1120). -// encode4: 261 entries for runes in [63785, 64046). -// encode5: 229 entries for runes in [65281, 65510). -// -// The high two bits of the value record whether the JIS code comes from the -// JIS0208 table (high bits == 1) or the JIS0212 table (high bits == 2). -// The low 14 bits are two 7-bit unsigned integers j1 and j2 that form the -// JIS code (94*j1 + j2) within that table. - -const encode0Low, encode0High = 19968, 40870 - -var encode0 = [...]uint16{ - 19968 - 19968: jis0208<<14 | 0x0F<<7 | 0x4B, - 19969 - 19968: jis0208<<14 | 0x22<<7 | 0x59, - 19970 - 19968: jis0212<<14 | 0x0F<<7 | 0x00, - 19971 - 19968: jis0208<<14 | 0x1B<<7 | 0x16, - 19972 - 19968: jis0212<<14 | 0x0F<<7 | 0x01, - 19973 - 19968: jis0212<<14 | 0x0F<<7 | 0x02, - 19975 - 19968: jis0208<<14 | 0x2A<<7 | 0x5B, - 19976 - 19968: jis0208<<14 | 0x1D<<7 | 0x45, - 19977 - 19968: jis0208<<14 | 0x1A<<7 | 0x0F, - 19978 - 19968: jis0208<<14 | 0x1D<<7 | 0x44, - 19979 - 19968: jis0208<<14 | 0x11<<7 | 0x1B, - 19980 - 19968: jis0212<<14 | 0x0F<<7 | 0x03, - 19981 - 19968: jis0208<<14 | 0x28<<7 | 0x33, - 19982 - 19968: jis0208<<14 | 0x2C<<7 | 0x1E, - 19984 - 19968: jis0208<<14 | 0x2F<<7 | 0x01, - 19985 - 19968: jis0208<<14 | 0x10<<7 | 0x0E, - 19986 - 19968: jis0212<<14 | 0x0F<<7 | 0x04, - 19988 - 19968: jis0208<<14 | 0x12<<7 | 0x4D, - 19989 - 19968: jis0208<<14 | 0x2F<<7 | 0x02, - 19990 - 19968: jis0208<<14 | 0x1F<<7 | 0x03, - 19991 - 19968: jis0208<<14 | 0x31<<7 | 0x21, - 19992 - 19968: jis0208<<14 | 0x14<<7 | 0x35, - 19993 - 19968: jis0208<<14 | 0x29<<7 | 0x19, - 19998 - 19968: jis0208<<14 | 0x1D<<7 | 0x46, - 19999 - 19968: jis0212<<14 | 0x0F<<7 | 0x05, - 20001 - 19968: jis0208<<14 | 0x2D<<7 | 0x1D, - 20003 - 19968: jis0212<<14 | 0x0F<<7 | 0x06, - 20004 - 19968: jis0212<<14 | 0x0F<<7 | 0x07, - 20006 - 19968: jis0208<<14 | 0x29<<7 | 0x21, - 20008 - 19968: jis0208<<14 | 0x58<<7 | 0x0C, - 20010 - 19968: jis0208<<14 | 0x2F<<7 | 0x03, - 20011 - 19968: jis0212<<14 | 0x0F<<7 | 0x09, - 20013 - 19968: jis0208<<14 | 0x22<<7 | 0x45, - 20014 - 19968: jis0212<<14 | 0x0F<<7 | 0x0A, - 20015 - 19968: jis0212<<14 | 0x0F<<7 | 0x0B, - 20016 - 19968: jis0212<<14 | 0x0F<<7 | 0x0C, - 20017 - 19968: jis0208<<14 | 0x2F<<7 | 0x04, - 20018 - 19968: jis0208<<14 | 0x15<<7 | 0x59, - 20021 - 19968: jis0212<<14 | 0x0F<<7 | 0x0D, - 20022 - 19968: jis0208<<14 | 0x2F<<7 | 0x05, - 20024 - 19968: jis0208<<14 | 0x13<<7 | 0x3C, - 20025 - 19968: jis0208<<14 | 0x22<<7 | 0x0F, - 20027 - 19968: jis0208<<14 | 0x1B<<7 | 0x46, - 20028 - 19968: jis0208<<14 | 0x2F<<7 | 0x06, - 20031 - 19968: jis0208<<14 | 0x2F<<7 | 0x07, - 20032 - 19968: jis0212<<14 | 0x0F<<7 | 0x0E, - 20033 - 19968: jis0212<<14 | 0x0F<<7 | 0x0F, - 20034 - 19968: jis0208<<14 | 0x2F<<7 | 0x08, - 20035 - 19968: jis0208<<14 | 0x26<<7 | 0x14, - 20036 - 19968: jis0212<<14 | 0x0F<<7 | 0x10, - 20037 - 19968: jis0208<<14 | 0x14<<7 | 0x36, - 20039 - 19968: jis0212<<14 | 0x0F<<7 | 0x11, - 20043 - 19968: jis0208<<14 | 0x26<<7 | 0x16, - 20045 - 19968: jis0208<<14 | 0x25<<7 | 0x42, - 20046 - 19968: jis0208<<14 | 0x17<<7 | 0x22, - 20047 - 19968: jis0208<<14 | 0x2A<<7 | 0x12, - 20049 - 19968: jis0212<<14 | 0x0F<<7 | 0x12, - 20053 - 19968: jis0208<<14 | 0x48<<7 | 0x28, - 20054 - 19968: jis0208<<14 | 0x2F<<7 | 0x09, - 20055 - 19968: jis0208<<14 | 0x1D<<7 | 0x47, - 20056 - 19968: jis0208<<14 | 0x2F<<7 | 0x0A, - 20057 - 19968: jis0208<<14 | 0x11<<7 | 0x14, - 20058 - 19968: jis0212<<14 | 0x0F<<7 | 0x13, - 20060 - 19968: jis0212<<14 | 0x0F<<7 | 0x14, - 20061 - 19968: jis0208<<14 | 0x15<<7 | 0x44, - 20062 - 19968: jis0208<<14 | 0x17<<7 | 0x4F, - 20063 - 19968: jis0208<<14 | 0x2B<<7 | 0x48, - 20066 - 19968: jis0208<<14 | 0x35<<7 | 0x05, - 20067 - 19968: jis0212<<14 | 0x0F<<7 | 0x15, - 20072 - 19968: jis0212<<14 | 0x0F<<7 | 0x16, - 20073 - 19968: jis0212<<14 | 0x0F<<7 | 0x17, - 20081 - 19968: jis0208<<14 | 0x2C<<7 | 0x4F, - 20083 - 19968: jis0208<<14 | 0x25<<7 | 0x5C, - 20084 - 19968: jis0212<<14 | 0x0F<<7 | 0x18, - 20085 - 19968: jis0212<<14 | 0x0F<<7 | 0x19, - 20089 - 19968: jis0212<<14 | 0x0F<<7 | 0x1A, - 20094 - 19968: jis0208<<14 | 0x13<<7 | 0x04, - 20095 - 19968: jis0212<<14 | 0x0F<<7 | 0x1B, - 20096 - 19968: jis0208<<14 | 0x14<<7 | 0x14, - 20098 - 19968: jis0208<<14 | 0x2F<<7 | 0x0B, - 20101 - 19968: jis0208<<14 | 0x2F<<7 | 0x0C, - 20102 - 19968: jis0208<<14 | 0x2D<<7 | 0x1A, - 20104 - 19968: jis0208<<14 | 0x2C<<7 | 0x1C, - 20105 - 19968: jis0208<<14 | 0x20<<7 | 0x47, - 20106 - 19968: jis0208<<14 | 0x2F<<7 | 0x0E, - 20107 - 19968: jis0208<<14 | 0x1A<<7 | 0x55, - 20108 - 19968: jis0208<<14 | 0x25<<7 | 0x52, - 20109 - 19968: jis0212<<14 | 0x0F<<7 | 0x1C, - 20110 - 19968: jis0208<<14 | 0x2F<<7 | 0x11, - 20113 - 19968: jis0208<<14 | 0x10<<7 | 0x1D, - 20114 - 19968: jis0208<<14 | 0x17<<7 | 0x3E, - 20116 - 19968: jis0208<<14 | 0x17<<7 | 0x3D, - 20117 - 19968: jis0208<<14 | 0x0F<<7 | 0x45, - 20118 - 19968: jis0212<<14 | 0x0F<<7 | 0x1D, - 20119 - 19968: jis0212<<14 | 0x0F<<7 | 0x1E, - 20120 - 19968: jis0208<<14 | 0x2E<<7 | 0x2A, - 20121 - 19968: jis0208<<14 | 0x2E<<7 | 0x29, - 20123 - 19968: jis0208<<14 | 0x19<<7 | 0x12, - 20124 - 19968: jis0208<<14 | 0x0F<<7 | 0x00, - 20125 - 19968: jis0212<<14 | 0x0F<<7 | 0x1F, - 20126 - 19968: jis0208<<14 | 0x2F<<7 | 0x12, - 20127 - 19968: jis0208<<14 | 0x2F<<7 | 0x13, - 20128 - 19968: jis0208<<14 | 0x2F<<7 | 0x14, - 20129 - 19968: jis0208<<14 | 0x2A<<7 | 0x13, - 20130 - 19968: jis0208<<14 | 0x2F<<7 | 0x15, - 20132 - 19968: jis0208<<14 | 0x17<<7 | 0x51, - 20133 - 19968: jis0208<<14 | 0x0F<<7 | 0x46, - 20134 - 19968: jis0208<<14 | 0x2A<<7 | 0x51, - 20136 - 19968: jis0208<<14 | 0x14<<7 | 0x5B, - 20139 - 19968: jis0208<<14 | 0x14<<7 | 0x5C, - 20140 - 19968: jis0208<<14 | 0x14<<7 | 0x5D, - 20141 - 19968: jis0208<<14 | 0x23<<7 | 0x41, - 20142 - 19968: jis0208<<14 | 0x2D<<7 | 0x1B, - 20143 - 19968: jis0212<<14 | 0x0F<<7 | 0x20, - 20144 - 19968: jis0208<<14 | 0x2F<<7 | 0x16, - 20147 - 19968: jis0208<<14 | 0x2F<<7 | 0x17, - 20150 - 19968: jis0208<<14 | 0x2F<<7 | 0x18, - 20153 - 19968: jis0212<<14 | 0x0F<<7 | 0x21, - 20154 - 19968: jis0208<<14 | 0x1E<<7 | 0x2C, - 20160 - 19968: jis0208<<14 | 0x1C<<7 | 0x19, - 20161 - 19968: jis0208<<14 | 0x1E<<7 | 0x2D, - 20162 - 19968: jis0208<<14 | 0x2F<<7 | 0x1D, - 20163 - 19968: jis0212<<14 | 0x0F<<7 | 0x22, - 20164 - 19968: jis0208<<14 | 0x2F<<7 | 0x1B, - 20166 - 19968: jis0208<<14 | 0x2F<<7 | 0x1C, - 20167 - 19968: jis0208<<14 | 0x14<<7 | 0x37, - 20170 - 19968: jis0208<<14 | 0x19<<7 | 0x02, - 20171 - 19968: jis0208<<14 | 0x11<<7 | 0x4F, - 20173 - 19968: jis0208<<14 | 0x2F<<7 | 0x1A, - 20174 - 19968: jis0208<<14 | 0x2F<<7 | 0x19, - 20175 - 19968: jis0208<<14 | 0x29<<7 | 0x08, - 20176 - 19968: jis0212<<14 | 0x0F<<7 | 0x23, - 20180 - 19968: jis0208<<14 | 0x1A<<7 | 0x25, - 20181 - 19968: jis0208<<14 | 0x1A<<7 | 0x24, - 20182 - 19968: jis0208<<14 | 0x21<<7 | 0x1D, - 20183 - 19968: jis0208<<14 | 0x2F<<7 | 0x1E, - 20184 - 19968: jis0208<<14 | 0x28<<7 | 0x34, - 20185 - 19968: jis0208<<14 | 0x1F<<7 | 0x46, - 20186 - 19968: jis0212<<14 | 0x0F<<7 | 0x24, - 20187 - 19968: jis0212<<14 | 0x0F<<7 | 0x25, - 20189 - 19968: jis0208<<14 | 0x00<<7 | 0x17, - 20190 - 19968: jis0208<<14 | 0x2F<<7 | 0x1F, - 20191 - 19968: jis0208<<14 | 0x2F<<7 | 0x21, - 20192 - 19968: jis0212<<14 | 0x0F<<7 | 0x26, - 20193 - 19968: jis0208<<14 | 0x58<<7 | 0x0D, - 20194 - 19968: jis0212<<14 | 0x0F<<7 | 0x28, - 20195 - 19968: jis0208<<14 | 0x21<<7 | 0x44, - 20196 - 19968: jis0208<<14 | 0x2D<<7 | 0x40, - 20197 - 19968: jis0208<<14 | 0x0F<<7 | 0x29, - 20200 - 19968: jis0212<<14 | 0x0F<<7 | 0x29, - 20205 - 19968: jis0208<<14 | 0x2F<<7 | 0x20, - 20206 - 19968: jis0208<<14 | 0x11<<7 | 0x1D, - 20207 - 19968: jis0212<<14 | 0x0F<<7 | 0x2A, - 20208 - 19968: jis0208<<14 | 0x15<<7 | 0x23, - 20209 - 19968: jis0212<<14 | 0x0F<<7 | 0x2B, - 20210 - 19968: jis0208<<14 | 0x22<<7 | 0x46, - 20211 - 19968: jis0212<<14 | 0x0F<<7 | 0x2C, - 20213 - 19968: jis0212<<14 | 0x0F<<7 | 0x2D, - 20214 - 19968: jis0208<<14 | 0x16<<7 | 0x4E, - 20215 - 19968: jis0208<<14 | 0x2F<<7 | 0x22, - 20219 - 19968: jis0208<<14 | 0x26<<7 | 0x03, - 20220 - 19968: jis0208<<14 | 0x58<<7 | 0x0E, - 20221 - 19968: jis0212<<14 | 0x0F<<7 | 0x2E, - 20222 - 19968: jis0212<<14 | 0x0F<<7 | 0x2F, - 20223 - 19968: jis0212<<14 | 0x0F<<7 | 0x30, - 20224 - 19968: jis0208<<14 | 0x58<<7 | 0x0F, - 20225 - 19968: jis0208<<14 | 0x13<<7 | 0x4A, - 20226 - 19968: jis0212<<14 | 0x0F<<7 | 0x32, - 20227 - 19968: jis0208<<14 | 0x58<<7 | 0x10, - 20232 - 19968: jis0212<<14 | 0x0F<<7 | 0x34, - 20233 - 19968: jis0208<<14 | 0x2F<<7 | 0x23, - 20234 - 19968: jis0208<<14 | 0x0F<<7 | 0x2A, - 20235 - 19968: jis0212<<14 | 0x0F<<7 | 0x35, - 20236 - 19968: jis0212<<14 | 0x0F<<7 | 0x36, - 20237 - 19968: jis0208<<14 | 0x17<<7 | 0x3F, - 20238 - 19968: jis0208<<14 | 0x13<<7 | 0x4B, - 20239 - 19968: jis0208<<14 | 0x28<<7 | 0x59, - 20240 - 19968: jis0208<<14 | 0x27<<7 | 0x11, - 20241 - 19968: jis0208<<14 | 0x14<<7 | 0x38, - 20242 - 19968: jis0212<<14 | 0x0F<<7 | 0x37, - 20245 - 19968: jis0212<<14 | 0x0F<<7 | 0x38, - 20246 - 19968: jis0212<<14 | 0x0F<<7 | 0x39, - 20247 - 19968: jis0212<<14 | 0x0F<<7 | 0x3A, - 20249 - 19968: jis0212<<14 | 0x0F<<7 | 0x3B, - 20250 - 19968: jis0208<<14 | 0x11<<7 | 0x50, - 20252 - 19968: jis0208<<14 | 0x2F<<7 | 0x46, - 20253 - 19968: jis0208<<14 | 0x24<<7 | 0x20, - 20270 - 19968: jis0212<<14 | 0x0F<<7 | 0x3C, - 20271 - 19968: jis0208<<14 | 0x26<<7 | 0x4B, - 20272 - 19968: jis0208<<14 | 0x2F<<7 | 0x25, - 20273 - 19968: jis0212<<14 | 0x0F<<7 | 0x3D, - 20275 - 19968: jis0212<<14 | 0x0F<<7 | 0x3F, - 20276 - 19968: jis0208<<14 | 0x27<<7 | 0x1B, - 20277 - 19968: jis0212<<14 | 0x0F<<7 | 0x40, - 20278 - 19968: jis0208<<14 | 0x2D<<7 | 0x41, - 20279 - 19968: jis0212<<14 | 0x0F<<7 | 0x41, - 20280 - 19968: jis0208<<14 | 0x1E<<7 | 0x0C, - 20281 - 19968: jis0208<<14 | 0x58<<7 | 0x11, - 20282 - 19968: jis0208<<14 | 0x1A<<7 | 0x26, - 20283 - 19968: jis0212<<14 | 0x0F<<7 | 0x43, - 20284 - 19968: jis0208<<14 | 0x1A<<7 | 0x56, - 20285 - 19968: jis0208<<14 | 0x11<<7 | 0x1F, - 20286 - 19968: jis0212<<14 | 0x0F<<7 | 0x44, - 20288 - 19968: jis0212<<14 | 0x0F<<7 | 0x45, - 20290 - 19968: jis0212<<14 | 0x0F<<7 | 0x46, - 20291 - 19968: jis0208<<14 | 0x23<<7 | 0x30, - 20294 - 19968: jis0208<<14 | 0x22<<7 | 0x01, - 20295 - 19968: jis0208<<14 | 0x2F<<7 | 0x29, - 20296 - 19968: jis0212<<14 | 0x0F<<7 | 0x47, - 20297 - 19968: jis0212<<14 | 0x0F<<7 | 0x48, - 20299 - 19968: jis0212<<14 | 0x0F<<7 | 0x49, - 20300 - 19968: jis0212<<14 | 0x0F<<7 | 0x4A, - 20301 - 19968: jis0208<<14 | 0x0F<<7 | 0x2B, - 20302 - 19968: jis0208<<14 | 0x23<<7 | 0x42, - 20303 - 19968: jis0208<<14 | 0x1C<<7 | 0x1A, - 20304 - 19968: jis0208<<14 | 0x19<<7 | 0x13, - 20305 - 19968: jis0208<<14 | 0x2C<<7 | 0x03, - 20306 - 19968: jis0212<<14 | 0x0F<<7 | 0x4B, - 20307 - 19968: jis0208<<14 | 0x21<<7 | 0x2D, - 20308 - 19968: jis0212<<14 | 0x0F<<7 | 0x4C, - 20309 - 19968: jis0208<<14 | 0x11<<7 | 0x1E, - 20310 - 19968: jis0208<<14 | 0x58<<7 | 0x12, - 20311 - 19968: jis0208<<14 | 0x2F<<7 | 0x28, - 20312 - 19968: jis0212<<14 | 0x0F<<7 | 0x4E, - 20313 - 19968: jis0208<<14 | 0x2C<<7 | 0x1D, - 20314 - 19968: jis0208<<14 | 0x2F<<7 | 0x24, - 20315 - 19968: jis0208<<14 | 0x2F<<7 | 0x26, - 20316 - 19968: jis0208<<14 | 0x19<<7 | 0x4D, - 20317 - 19968: jis0208<<14 | 0x2F<<7 | 0x27, - 20318 - 19968: jis0208<<14 | 0x34<<7 | 0x03, - 20319 - 19968: jis0212<<14 | 0x0F<<7 | 0x4F, - 20320 - 19968: jis0212<<14 | 0x0F<<7 | 0x3E, - 20323 - 19968: jis0212<<14 | 0x0F<<7 | 0x50, - 20329 - 19968: jis0208<<14 | 0x2F<<7 | 0x2F, - 20330 - 19968: jis0212<<14 | 0x0F<<7 | 0x51, - 20332 - 19968: jis0212<<14 | 0x0F<<7 | 0x52, - 20334 - 19968: jis0212<<14 | 0x0F<<7 | 0x53, - 20335 - 19968: jis0208<<14 | 0x2F<<7 | 0x32, - 20336 - 19968: jis0208<<14 | 0x2F<<7 | 0x30, - 20337 - 19968: jis0212<<14 | 0x0F<<7 | 0x54, - 20339 - 19968: jis0208<<14 | 0x11<<7 | 0x21, - 20341 - 19968: jis0208<<14 | 0x29<<7 | 0x1A, - 20342 - 19968: jis0208<<14 | 0x2F<<7 | 0x2A, - 20343 - 19968: jis0212<<14 | 0x0F<<7 | 0x55, - 20344 - 19968: jis0212<<14 | 0x0F<<7 | 0x56, - 20345 - 19968: jis0212<<14 | 0x0F<<7 | 0x57, - 20346 - 19968: jis0212<<14 | 0x0F<<7 | 0x58, - 20347 - 19968: jis0208<<14 | 0x2F<<7 | 0x2E, - 20348 - 19968: jis0208<<14 | 0x17<<7 | 0x52, - 20349 - 19968: jis0212<<14 | 0x0F<<7 | 0x59, - 20350 - 19968: jis0212<<14 | 0x0F<<7 | 0x5A, - 20351 - 19968: jis0208<<14 | 0x1A<<7 | 0x27, - 20353 - 19968: jis0212<<14 | 0x0F<<7 | 0x5B, - 20354 - 19968: jis0212<<14 | 0x0F<<7 | 0x5C, - 20355 - 19968: jis0208<<14 | 0x13<<7 | 0x05, - 20356 - 19968: jis0212<<14 | 0x0F<<7 | 0x5D, - 20357 - 19968: jis0212<<14 | 0x10<<7 | 0x00, - 20358 - 19968: jis0208<<14 | 0x2F<<7 | 0x33, - 20360 - 19968: jis0208<<14 | 0x2F<<7 | 0x2B, - 20361 - 19968: jis0212<<14 | 0x10<<7 | 0x01, - 20362 - 19968: jis0208<<14 | 0x58<<7 | 0x14, - 20363 - 19968: jis0208<<14 | 0x2D<<7 | 0x42, - 20364 - 19968: jis0212<<14 | 0x10<<7 | 0x03, - 20365 - 19968: jis0208<<14 | 0x1A<<7 | 0x57, - 20366 - 19968: jis0212<<14 | 0x10<<7 | 0x04, - 20367 - 19968: jis0208<<14 | 0x2F<<7 | 0x2C, - 20368 - 19968: jis0212<<14 | 0x10<<7 | 0x05, - 20369 - 19968: jis0208<<14 | 0x2F<<7 | 0x31, - 20370 - 19968: jis0208<<14 | 0x58<<7 | 0x13, - 20371 - 19968: jis0212<<14 | 0x10<<7 | 0x07, - 20372 - 19968: jis0208<<14 | 0x58<<7 | 0x16, - 20374 - 19968: jis0208<<14 | 0x2F<<7 | 0x34, - 20375 - 19968: jis0212<<14 | 0x10<<7 | 0x09, - 20376 - 19968: jis0208<<14 | 0x2F<<7 | 0x2D, - 20377 - 19968: jis0212<<14 | 0x10<<7 | 0x0A, - 20378 - 19968: jis0208<<14 | 0x58<<7 | 0x15, - 20379 - 19968: jis0208<<14 | 0x15<<7 | 0x00, - 20381 - 19968: jis0208<<14 | 0x0F<<7 | 0x2C, - 20382 - 19968: jis0212<<14 | 0x10<<7 | 0x0C, - 20383 - 19968: jis0212<<14 | 0x10<<7 | 0x0D, - 20384 - 19968: jis0208<<14 | 0x15<<7 | 0x01, - 20385 - 19968: jis0208<<14 | 0x11<<7 | 0x20, - 20395 - 19968: jis0208<<14 | 0x34<<7 | 0x04, - 20397 - 19968: jis0208<<14 | 0x2A<<7 | 0x58, - 20398 - 19968: jis0208<<14 | 0x28<<7 | 0x4D, - 20399 - 19968: jis0208<<14 | 0x17<<7 | 0x53, - 20402 - 19968: jis0212<<14 | 0x10<<7 | 0x0E, - 20405 - 19968: jis0208<<14 | 0x1E<<7 | 0x0E, - 20406 - 19968: jis0208<<14 | 0x2D<<7 | 0x16, - 20407 - 19968: jis0212<<14 | 0x10<<7 | 0x0F, - 20409 - 19968: jis0212<<14 | 0x10<<7 | 0x10, - 20411 - 19968: jis0212<<14 | 0x10<<7 | 0x11, - 20412 - 19968: jis0212<<14 | 0x10<<7 | 0x12, - 20413 - 19968: jis0212<<14 | 0x10<<7 | 0x13, - 20414 - 19968: jis0212<<14 | 0x10<<7 | 0x14, - 20415 - 19968: jis0208<<14 | 0x29<<7 | 0x37, - 20416 - 19968: jis0212<<14 | 0x10<<7 | 0x15, - 20417 - 19968: jis0212<<14 | 0x10<<7 | 0x16, - 20418 - 19968: jis0208<<14 | 0x16<<7 | 0x17, - 20419 - 19968: jis0208<<14 | 0x21<<7 | 0x04, - 20420 - 19968: jis0208<<14 | 0x11<<7 | 0x43, - 20421 - 19968: jis0212<<14 | 0x10<<7 | 0x17, - 20422 - 19968: jis0212<<14 | 0x10<<7 | 0x18, - 20424 - 19968: jis0212<<14 | 0x10<<7 | 0x19, - 20425 - 19968: jis0208<<14 | 0x58<<7 | 0x05, - 20426 - 19968: jis0208<<14 | 0x1C<<7 | 0x32, - 20427 - 19968: jis0212<<14 | 0x10<<7 | 0x1B, - 20428 - 19968: jis0212<<14 | 0x10<<7 | 0x1C, - 20429 - 19968: jis0208<<14 | 0x58<<7 | 0x17, - 20430 - 19968: jis0208<<14 | 0x2F<<7 | 0x38, - 20431 - 19968: jis0212<<14 | 0x10<<7 | 0x1E, - 20432 - 19968: jis0208<<14 | 0x2F<<7 | 0x3D, - 20433 - 19968: jis0208<<14 | 0x2F<<7 | 0x3B, - 20434 - 19968: jis0212<<14 | 0x10<<7 | 0x1F, - 20436 - 19968: jis0208<<14 | 0x2F<<7 | 0x36, - 20439 - 19968: jis0208<<14 | 0x21<<7 | 0x0E, - 20440 - 19968: jis0208<<14 | 0x2F<<7 | 0x39, - 20442 - 19968: jis0208<<14 | 0x2F<<7 | 0x3C, - 20443 - 19968: jis0208<<14 | 0x2F<<7 | 0x3A, - 20444 - 19968: jis0212<<14 | 0x10<<7 | 0x20, - 20445 - 19968: jis0208<<14 | 0x29<<7 | 0x3C, - 20447 - 19968: jis0208<<14 | 0x2F<<7 | 0x37, - 20448 - 19968: jis0212<<14 | 0x10<<7 | 0x21, - 20449 - 19968: jis0208<<14 | 0x1E<<7 | 0x0D, - 20450 - 19968: jis0212<<14 | 0x10<<7 | 0x22, - 20451 - 19968: jis0208<<14 | 0x2A<<7 | 0x52, - 20452 - 19968: jis0208<<14 | 0x2F<<7 | 0x3E, - 20453 - 19968: jis0208<<14 | 0x2F<<7 | 0x3F, - 20462 - 19968: jis0208<<14 | 0x1C<<7 | 0x03, - 20463 - 19968: jis0208<<14 | 0x2F<<7 | 0x4C, - 20464 - 19968: jis0212<<14 | 0x10<<7 | 0x23, - 20466 - 19968: jis0212<<14 | 0x10<<7 | 0x24, - 20467 - 19968: jis0208<<14 | 0x26<<7 | 0x2F, - 20469 - 19968: jis0208<<14 | 0x28<<7 | 0x15, - 20470 - 19968: jis0208<<14 | 0x2F<<7 | 0x47, - 20472 - 19968: jis0208<<14 | 0x29<<7 | 0x4F, - 20474 - 19968: jis0208<<14 | 0x11<<7 | 0x15, - 20476 - 19968: jis0212<<14 | 0x10<<7 | 0x25, - 20477 - 19968: jis0212<<14 | 0x10<<7 | 0x26, - 20478 - 19968: jis0208<<14 | 0x2F<<7 | 0x4B, - 20479 - 19968: jis0208<<14 | 0x58<<7 | 0x1A, - 20480 - 19968: jis0212<<14 | 0x10<<7 | 0x28, - 20481 - 19968: jis0212<<14 | 0x10<<7 | 0x29, - 20484 - 19968: jis0212<<14 | 0x10<<7 | 0x2A, - 20485 - 19968: jis0208<<14 | 0x2F<<7 | 0x45, - 20486 - 19968: jis0208<<14 | 0x2F<<7 | 0x4E, - 20487 - 19968: jis0212<<14 | 0x10<<7 | 0x2B, - 20489 - 19968: jis0208<<14 | 0x20<<7 | 0x31, - 20490 - 19968: jis0212<<14 | 0x10<<7 | 0x2C, - 20491 - 19968: jis0208<<14 | 0x17<<7 | 0x23, - 20492 - 19968: jis0212<<14 | 0x10<<7 | 0x2D, - 20493 - 19968: jis0208<<14 | 0x26<<7 | 0x3B, - 20494 - 19968: jis0212<<14 | 0x10<<7 | 0x2E, - 20495 - 19968: jis0208<<14 | 0x3F<<7 | 0x26, - 20496 - 19968: jis0212<<14 | 0x10<<7 | 0x2F, - 20497 - 19968: jis0208<<14 | 0x2F<<7 | 0x4D, - 20498 - 19968: jis0208<<14 | 0x24<<7 | 0x3C, - 20499 - 19968: jis0212<<14 | 0x10<<7 | 0x30, - 20500 - 19968: jis0208<<14 | 0x2F<<7 | 0x42, - 20502 - 19968: jis0208<<14 | 0x17<<7 | 0x55, - 20503 - 19968: jis0212<<14 | 0x10<<7 | 0x31, - 20504 - 19968: jis0212<<14 | 0x10<<7 | 0x32, - 20505 - 19968: jis0208<<14 | 0x17<<7 | 0x54, - 20506 - 19968: jis0208<<14 | 0x2F<<7 | 0x40, - 20507 - 19968: jis0212<<14 | 0x10<<7 | 0x33, - 20508 - 19968: jis0212<<14 | 0x10<<7 | 0x34, - 20509 - 19968: jis0212<<14 | 0x10<<7 | 0x35, - 20510 - 19968: jis0208<<14 | 0x58<<7 | 0x1B, - 20511 - 19968: jis0208<<14 | 0x1B<<7 | 0x39, - 20513 - 19968: jis0208<<14 | 0x2F<<7 | 0x48, - 20514 - 19968: jis0208<<14 | 0x58<<7 | 0x19, - 20515 - 19968: jis0208<<14 | 0x29<<7 | 0x4E, - 20516 - 19968: jis0208<<14 | 0x22<<7 | 0x2C, - 20517 - 19968: jis0208<<14 | 0x2F<<7 | 0x44, - 20518 - 19968: jis0208<<14 | 0x16<<7 | 0x50, - 20519 - 19968: jis0212<<14 | 0x10<<7 | 0x38, - 20520 - 19968: jis0208<<14 | 0x2F<<7 | 0x41, - 20521 - 19968: jis0208<<14 | 0x2F<<7 | 0x49, - 20522 - 19968: jis0208<<14 | 0x2F<<7 | 0x43, - 20523 - 19968: jis0208<<14 | 0x2D<<7 | 0x30, - 20524 - 19968: jis0208<<14 | 0x2F<<7 | 0x4A, - 20525 - 19968: jis0208<<14 | 0x2E<<7 | 0x20, - 20526 - 19968: jis0212<<14 | 0x10<<7 | 0x39, - 20528 - 19968: jis0212<<14 | 0x10<<7 | 0x3A, - 20530 - 19968: jis0212<<14 | 0x10<<7 | 0x3B, - 20531 - 19968: jis0212<<14 | 0x10<<7 | 0x3C, - 20533 - 19968: jis0212<<14 | 0x10<<7 | 0x3D, - 20534 - 19968: jis0208<<14 | 0x15<<7 | 0x45, - 20537 - 19968: jis0208<<14 | 0x16<<7 | 0x4F, - 20539 - 19968: jis0212<<14 | 0x10<<7 | 0x55, - 20544 - 19968: jis0208<<14 | 0x58<<7 | 0x18, - 20545 - 19968: jis0212<<14 | 0x10<<7 | 0x3F, - 20546 - 19968: jis0208<<14 | 0x58<<7 | 0x1E, - 20547 - 19968: jis0208<<14 | 0x2F<<7 | 0x4F, - 20549 - 19968: jis0212<<14 | 0x10<<7 | 0x41, - 20550 - 19968: jis0208<<14 | 0x58<<7 | 0x1C, - 20551 - 19968: jis0208<<14 | 0x2F<<7 | 0x50, - 20552 - 19968: jis0208<<14 | 0x2F<<7 | 0x54, - 20553 - 19968: jis0208<<14 | 0x0F<<7 | 0x2D, - 20554 - 19968: jis0212<<14 | 0x10<<7 | 0x43, - 20556 - 19968: jis0212<<14 | 0x10<<7 | 0x44, - 20558 - 19968: jis0212<<14 | 0x10<<7 | 0x45, - 20559 - 19968: jis0208<<14 | 0x29<<7 | 0x2F, - 20560 - 19968: jis0208<<14 | 0x2F<<7 | 0x53, - 20561 - 19968: jis0212<<14 | 0x10<<7 | 0x46, - 20562 - 19968: jis0212<<14 | 0x10<<7 | 0x47, - 20563 - 19968: jis0212<<14 | 0x10<<7 | 0x48, - 20565 - 19968: jis0208<<14 | 0x2F<<7 | 0x52, - 20566 - 19968: jis0208<<14 | 0x2F<<7 | 0x56, - 20567 - 19968: jis0212<<14 | 0x10<<7 | 0x49, - 20569 - 19968: jis0212<<14 | 0x10<<7 | 0x4A, - 20570 - 19968: jis0208<<14 | 0x2F<<7 | 0x55, - 20572 - 19968: jis0208<<14 | 0x23<<7 | 0x43, - 20575 - 19968: jis0212<<14 | 0x10<<7 | 0x4B, - 20576 - 19968: jis0212<<14 | 0x10<<7 | 0x4C, - 20578 - 19968: jis0212<<14 | 0x10<<7 | 0x4D, - 20579 - 19968: jis0212<<14 | 0x10<<7 | 0x4E, - 20581 - 19968: jis0208<<14 | 0x16<<7 | 0x51, - 20582 - 19968: jis0212<<14 | 0x10<<7 | 0x4F, - 20583 - 19968: jis0212<<14 | 0x10<<7 | 0x50, - 20586 - 19968: jis0212<<14 | 0x10<<7 | 0x51, - 20588 - 19968: jis0208<<14 | 0x2F<<7 | 0x57, - 20589 - 19968: jis0212<<14 | 0x10<<7 | 0x52, - 20592 - 19968: jis0208<<14 | 0x58<<7 | 0x1D, - 20593 - 19968: jis0212<<14 | 0x10<<7 | 0x54, - 20594 - 19968: jis0208<<14 | 0x1B<<7 | 0x24, - 20596 - 19968: jis0208<<14 | 0x21<<7 | 0x05, - 20597 - 19968: jis0208<<14 | 0x23<<7 | 0x44, - 20598 - 19968: jis0208<<14 | 0x15<<7 | 0x55, - 20600 - 19968: jis0208<<14 | 0x2F<<7 | 0x58, - 20605 - 19968: jis0208<<14 | 0x14<<7 | 0x15, - 20608 - 19968: jis0208<<14 | 0x2F<<7 | 0x59, - 20609 - 19968: jis0212<<14 | 0x10<<7 | 0x56, - 20611 - 19968: jis0212<<14 | 0x10<<7 | 0x57, - 20612 - 19968: jis0212<<14 | 0x10<<7 | 0x58, - 20613 - 19968: jis0208<<14 | 0x2F<<7 | 0x5B, - 20614 - 19968: jis0212<<14 | 0x10<<7 | 0x59, - 20618 - 19968: jis0212<<14 | 0x10<<7 | 0x5A, - 20621 - 19968: jis0208<<14 | 0x2A<<7 | 0x14, - 20622 - 19968: jis0212<<14 | 0x10<<7 | 0x5B, - 20623 - 19968: jis0212<<14 | 0x10<<7 | 0x5C, - 20624 - 19968: jis0212<<14 | 0x10<<7 | 0x5D, - 20625 - 19968: jis0208<<14 | 0x16<<7 | 0x45, - 20626 - 19968: jis0212<<14 | 0x11<<7 | 0x00, - 20627 - 19968: jis0212<<14 | 0x11<<7 | 0x01, - 20628 - 19968: jis0208<<14 | 0x58<<7 | 0x1F, - 20630 - 19968: jis0212<<14 | 0x11<<7 | 0x03, - 20632 - 19968: jis0208<<14 | 0x1A<<7 | 0x10, - 20633 - 19968: jis0208<<14 | 0x27<<7 | 0x56, - 20634 - 19968: jis0208<<14 | 0x2F<<7 | 0x5A, - 20635 - 19968: jis0212<<14 | 0x11<<7 | 0x04, - 20636 - 19968: jis0212<<14 | 0x11<<7 | 0x05, - 20638 - 19968: jis0212<<14 | 0x11<<7 | 0x06, - 20639 - 19968: jis0212<<14 | 0x11<<7 | 0x07, - 20640 - 19968: jis0212<<14 | 0x11<<7 | 0x08, - 20641 - 19968: jis0212<<14 | 0x11<<7 | 0x09, - 20642 - 19968: jis0212<<14 | 0x11<<7 | 0x0A, - 20650 - 19968: jis0212<<14 | 0x11<<7 | 0x0B, - 20652 - 19968: jis0208<<14 | 0x19<<7 | 0x24, - 20653 - 19968: jis0208<<14 | 0x2C<<7 | 0x22, - 20655 - 19968: jis0212<<14 | 0x11<<7 | 0x0C, - 20656 - 19968: jis0212<<14 | 0x11<<7 | 0x0D, - 20658 - 19968: jis0208<<14 | 0x2F<<7 | 0x5D, - 20659 - 19968: jis0208<<14 | 0x30<<7 | 0x02, - 20660 - 19968: jis0208<<14 | 0x2F<<7 | 0x5C, - 20661 - 19968: jis0208<<14 | 0x19<<7 | 0x23, - 20663 - 19968: jis0208<<14 | 0x1C<<7 | 0x5C, - 20665 - 19968: jis0212<<14 | 0x11<<7 | 0x0E, - 20666 - 19968: jis0212<<14 | 0x11<<7 | 0x0F, - 20669 - 19968: jis0212<<14 | 0x11<<7 | 0x10, - 20670 - 19968: jis0208<<14 | 0x16<<7 | 0x18, - 20672 - 19968: jis0212<<14 | 0x11<<7 | 0x11, - 20674 - 19968: jis0208<<14 | 0x30<<7 | 0x03, - 20675 - 19968: jis0212<<14 | 0x11<<7 | 0x12, - 20676 - 19968: jis0212<<14 | 0x11<<7 | 0x13, - 20677 - 19968: jis0208<<14 | 0x15<<7 | 0x2E, - 20679 - 19968: jis0212<<14 | 0x11<<7 | 0x14, - 20681 - 19968: jis0208<<14 | 0x30<<7 | 0x00, - 20682 - 19968: jis0208<<14 | 0x30<<7 | 0x01, - 20684 - 19968: jis0212<<14 | 0x11<<7 | 0x15, - 20685 - 19968: jis0208<<14 | 0x25<<7 | 0x0E, - 20686 - 19968: jis0212<<14 | 0x11<<7 | 0x16, - 20687 - 19968: jis0208<<14 | 0x20<<7 | 0x5B, - 20688 - 19968: jis0212<<14 | 0x11<<7 | 0x17, - 20689 - 19968: jis0208<<14 | 0x15<<7 | 0x02, - 20691 - 19968: jis0212<<14 | 0x11<<7 | 0x18, - 20692 - 19968: jis0212<<14 | 0x11<<7 | 0x19, - 20693 - 19968: jis0208<<14 | 0x2A<<7 | 0x2C, - 20694 - 19968: jis0208<<14 | 0x30<<7 | 0x04, - 20696 - 19968: jis0208<<14 | 0x58<<7 | 0x21, - 20698 - 19968: jis0208<<14 | 0x2D<<7 | 0x1C, - 20700 - 19968: jis0212<<14 | 0x11<<7 | 0x1B, - 20701 - 19968: jis0212<<14 | 0x11<<7 | 0x1C, - 20702 - 19968: jis0208<<14 | 0x30<<7 | 0x05, - 20703 - 19968: jis0212<<14 | 0x11<<7 | 0x1D, - 20706 - 19968: jis0212<<14 | 0x11<<7 | 0x1E, - 20707 - 19968: jis0208<<14 | 0x30<<7 | 0x08, - 20708 - 19968: jis0212<<14 | 0x11<<7 | 0x1F, - 20709 - 19968: jis0208<<14 | 0x30<<7 | 0x06, - 20710 - 19968: jis0212<<14 | 0x11<<7 | 0x20, - 20711 - 19968: jis0208<<14 | 0x20<<7 | 0x2D, - 20712 - 19968: jis0212<<14 | 0x11<<7 | 0x21, - 20713 - 19968: jis0212<<14 | 0x11<<7 | 0x22, - 20717 - 19968: jis0208<<14 | 0x30<<7 | 0x07, - 20718 - 19968: jis0208<<14 | 0x30<<7 | 0x09, - 20719 - 19968: jis0212<<14 | 0x11<<7 | 0x23, - 20721 - 19968: jis0212<<14 | 0x11<<7 | 0x24, - 20722 - 19968: jis0212<<14 | 0x11<<7 | 0x30, - 20724 - 19968: jis0208<<14 | 0x58<<7 | 0x20, - 20725 - 19968: jis0208<<14 | 0x30<<7 | 0x0B, - 20726 - 19968: jis0212<<14 | 0x11<<7 | 0x25, - 20729 - 19968: jis0208<<14 | 0x30<<7 | 0x0A, - 20730 - 19968: jis0212<<14 | 0x11<<7 | 0x26, - 20731 - 19968: jis0208<<14 | 0x29<<7 | 0x27, - 20734 - 19968: jis0212<<14 | 0x11<<7 | 0x27, - 20736 - 19968: jis0208<<14 | 0x14<<7 | 0x16, - 20737 - 19968: jis0208<<14 | 0x30<<7 | 0x0D, - 20738 - 19968: jis0208<<14 | 0x30<<7 | 0x0E, - 20739 - 19968: jis0212<<14 | 0x11<<7 | 0x28, - 20740 - 19968: jis0208<<14 | 0x11<<7 | 0x0E, - 20742 - 19968: jis0212<<14 | 0x11<<7 | 0x29, - 20743 - 19968: jis0212<<14 | 0x11<<7 | 0x2A, - 20744 - 19968: jis0212<<14 | 0x11<<7 | 0x2B, - 20745 - 19968: jis0208<<14 | 0x30<<7 | 0x0C, - 20747 - 19968: jis0212<<14 | 0x11<<7 | 0x2C, - 20748 - 19968: jis0212<<14 | 0x11<<7 | 0x2D, - 20749 - 19968: jis0212<<14 | 0x11<<7 | 0x2E, - 20750 - 19968: jis0212<<14 | 0x11<<7 | 0x2F, - 20752 - 19968: jis0212<<14 | 0x11<<7 | 0x31, - 20754 - 19968: jis0208<<14 | 0x1B<<7 | 0x53, - 20756 - 19968: jis0208<<14 | 0x30<<7 | 0x11, - 20757 - 19968: jis0208<<14 | 0x30<<7 | 0x10, - 20758 - 19968: jis0208<<14 | 0x30<<7 | 0x0F, - 20759 - 19968: jis0212<<14 | 0x11<<7 | 0x32, - 20760 - 19968: jis0208<<14 | 0x2F<<7 | 0x35, - 20761 - 19968: jis0212<<14 | 0x11<<7 | 0x33, - 20762 - 19968: jis0208<<14 | 0x30<<7 | 0x12, - 20763 - 19968: jis0212<<14 | 0x11<<7 | 0x34, - 20764 - 19968: jis0212<<14 | 0x11<<7 | 0x35, - 20765 - 19968: jis0212<<14 | 0x11<<7 | 0x36, - 20766 - 19968: jis0212<<14 | 0x11<<7 | 0x37, - 20767 - 19968: jis0208<<14 | 0x1C<<7 | 0x5D, - 20769 - 19968: jis0208<<14 | 0x30<<7 | 0x13, - 20771 - 19968: jis0212<<14 | 0x11<<7 | 0x38, - 20775 - 19968: jis0212<<14 | 0x11<<7 | 0x39, - 20776 - 19968: jis0212<<14 | 0x11<<7 | 0x3A, - 20778 - 19968: jis0208<<14 | 0x2C<<7 | 0x04, - 20780 - 19968: jis0212<<14 | 0x11<<7 | 0x3B, - 20781 - 19968: jis0212<<14 | 0x11<<7 | 0x3C, - 20783 - 19968: jis0212<<14 | 0x11<<7 | 0x3D, - 20785 - 19968: jis0212<<14 | 0x11<<7 | 0x3E, - 20786 - 19968: jis0208<<14 | 0x2B<<7 | 0x38, - 20787 - 19968: jis0212<<14 | 0x11<<7 | 0x3F, - 20788 - 19968: jis0212<<14 | 0x11<<7 | 0x40, - 20789 - 19968: jis0212<<14 | 0x11<<7 | 0x41, - 20791 - 19968: jis0208<<14 | 0x30<<7 | 0x15, - 20792 - 19968: jis0212<<14 | 0x11<<7 | 0x42, - 20793 - 19968: jis0212<<14 | 0x11<<7 | 0x43, - 20794 - 19968: jis0208<<14 | 0x30<<7 | 0x14, - 20795 - 19968: jis0208<<14 | 0x30<<7 | 0x17, - 20796 - 19968: jis0208<<14 | 0x30<<7 | 0x16, - 20799 - 19968: jis0208<<14 | 0x30<<7 | 0x18, - 20800 - 19968: jis0208<<14 | 0x30<<7 | 0x19, - 20801 - 19968: jis0208<<14 | 0x0F<<7 | 0x53, - 20802 - 19968: jis0212<<14 | 0x11<<7 | 0x44, - 20803 - 19968: jis0208<<14 | 0x17<<7 | 0x14, - 20804 - 19968: jis0208<<14 | 0x16<<7 | 0x1A, - 20805 - 19968: jis0208<<14 | 0x1C<<7 | 0x1B, - 20806 - 19968: jis0208<<14 | 0x22<<7 | 0x5A, - 20807 - 19968: jis0208<<14 | 0x15<<7 | 0x03, - 20808 - 19968: jis0208<<14 | 0x1F<<7 | 0x47, - 20809 - 19968: jis0208<<14 | 0x17<<7 | 0x56, - 20810 - 19968: jis0208<<14 | 0x58<<7 | 0x22, - 20811 - 19968: jis0208<<14 | 0x18<<7 | 0x4D, - 20812 - 19968: jis0208<<14 | 0x30<<7 | 0x1B, - 20813 - 19968: jis0208<<14 | 0x2B<<7 | 0x27, - 20814 - 19968: jis0208<<14 | 0x24<<7 | 0x25, - 20815 - 19968: jis0212<<14 | 0x11<<7 | 0x46, - 20816 - 19968: jis0208<<14 | 0x1A<<7 | 0x58, - 20818 - 19968: jis0208<<14 | 0x30<<7 | 0x1A, - 20819 - 19968: jis0212<<14 | 0x11<<7 | 0x47, - 20820 - 19968: jis0208<<14 | 0x30<<7 | 0x1C, - 20821 - 19968: jis0212<<14 | 0x11<<7 | 0x48, - 20823 - 19968: jis0212<<14 | 0x11<<7 | 0x49, - 20824 - 19968: jis0212<<14 | 0x11<<7 | 0x4A, - 20826 - 19968: jis0208<<14 | 0x24<<7 | 0x3D, - 20828 - 19968: jis0208<<14 | 0x12<<7 | 0x54, - 20831 - 19968: jis0212<<14 | 0x11<<7 | 0x4B, - 20834 - 19968: jis0208<<14 | 0x30<<7 | 0x1D, - 20836 - 19968: jis0208<<14 | 0x58<<7 | 0x23, - 20837 - 19968: jis0208<<14 | 0x25<<7 | 0x5D, - 20838 - 19968: jis0212<<14 | 0x11<<7 | 0x4D, - 20840 - 19968: jis0208<<14 | 0x20<<7 | 0x13, - 20841 - 19968: jis0208<<14 | 0x30<<7 | 0x1F, - 20842 - 19968: jis0208<<14 | 0x30<<7 | 0x20, - 20843 - 19968: jis0208<<14 | 0x27<<7 | 0x0B, - 20844 - 19968: jis0208<<14 | 0x17<<7 | 0x57, - 20845 - 19968: jis0208<<14 | 0x2E<<7 | 0x1A, - 20846 - 19968: jis0208<<14 | 0x30<<7 | 0x21, - 20849 - 19968: jis0208<<14 | 0x15<<7 | 0x05, - 20853 - 19968: jis0208<<14 | 0x29<<7 | 0x1B, - 20854 - 19968: jis0208<<14 | 0x21<<7 | 0x15, - 20855 - 19968: jis0208<<14 | 0x15<<7 | 0x50, - 20856 - 19968: jis0208<<14 | 0x24<<7 | 0x14, - 20860 - 19968: jis0208<<14 | 0x16<<7 | 0x52, - 20862 - 19968: jis0212<<14 | 0x11<<7 | 0x4E, - 20864 - 19968: jis0208<<14 | 0x30<<7 | 0x22, - 20866 - 19968: jis0208<<14 | 0x30<<7 | 0x23, - 20867 - 19968: jis0212<<14 | 0x11<<7 | 0x4F, - 20868 - 19968: jis0212<<14 | 0x11<<7 | 0x50, - 20869 - 19968: jis0208<<14 | 0x25<<7 | 0x41, - 20870 - 19968: jis0208<<14 | 0x10<<7 | 0x3E, - 20873 - 19968: jis0208<<14 | 0x30<<7 | 0x26, - 20874 - 19968: jis0208<<14 | 0x19<<7 | 0x5C, - 20875 - 19968: jis0212<<14 | 0x11<<7 | 0x51, - 20876 - 19968: jis0208<<14 | 0x30<<7 | 0x25, - 20877 - 19968: jis0208<<14 | 0x19<<7 | 0x25, - 20878 - 19968: jis0212<<14 | 0x11<<7 | 0x52, - 20879 - 19968: jis0208<<14 | 0x30<<7 | 0x27, - 20880 - 19968: jis0208<<14 | 0x45<<7 | 0x4D, - 20881 - 19968: jis0208<<14 | 0x30<<7 | 0x28, - 20882 - 19968: jis0208<<14 | 0x2A<<7 | 0x20, - 20883 - 19968: jis0208<<14 | 0x30<<7 | 0x29, - 20885 - 19968: jis0208<<14 | 0x30<<7 | 0x2A, - 20886 - 19968: jis0208<<14 | 0x30<<7 | 0x2B, - 20887 - 19968: jis0208<<14 | 0x1D<<7 | 0x48, - 20888 - 19968: jis0212<<14 | 0x11<<7 | 0x53, - 20889 - 19968: jis0208<<14 | 0x1B<<7 | 0x2B, - 20893 - 19968: jis0208<<14 | 0x58<<7 | 0x24, - 20896 - 19968: jis0208<<14 | 0x13<<7 | 0x06, - 20897 - 19968: jis0212<<14 | 0x11<<7 | 0x55, - 20898 - 19968: jis0208<<14 | 0x30<<7 | 0x2E, - 20899 - 19968: jis0212<<14 | 0x11<<7 | 0x56, - 20900 - 19968: jis0208<<14 | 0x30<<7 | 0x2C, - 20901 - 19968: jis0208<<14 | 0x2B<<7 | 0x1C, - 20902 - 19968: jis0208<<14 | 0x30<<7 | 0x2D, - 20904 - 19968: jis0208<<14 | 0x28<<7 | 0x39, - 20905 - 19968: jis0208<<14 | 0x30<<7 | 0x2F, - 20906 - 19968: jis0208<<14 | 0x30<<7 | 0x30, - 20907 - 19968: jis0208<<14 | 0x30<<7 | 0x31, - 20908 - 19968: jis0208<<14 | 0x24<<7 | 0x3E, - 20909 - 19968: jis0212<<14 | 0x11<<7 | 0x57, - 20912 - 19968: jis0208<<14 | 0x30<<7 | 0x35, - 20913 - 19968: jis0208<<14 | 0x30<<7 | 0x33, - 20914 - 19968: jis0208<<14 | 0x30<<7 | 0x34, - 20915 - 19968: jis0208<<14 | 0x30<<7 | 0x32, - 20916 - 19968: jis0208<<14 | 0x19<<7 | 0x42, - 20917 - 19968: jis0208<<14 | 0x30<<7 | 0x36, - 20918 - 19968: jis0208<<14 | 0x2B<<7 | 0x49, - 20919 - 19968: jis0208<<14 | 0x2D<<7 | 0x43, - 20920 - 19968: jis0212<<14 | 0x11<<7 | 0x58, - 20922 - 19968: jis0212<<14 | 0x11<<7 | 0x59, - 20924 - 19968: jis0212<<14 | 0x11<<7 | 0x5A, - 20925 - 19968: jis0208<<14 | 0x30<<7 | 0x37, - 20926 - 19968: jis0208<<14 | 0x58<<7 | 0x25, - 20927 - 19968: jis0212<<14 | 0x11<<7 | 0x5C, - 20930 - 19968: jis0212<<14 | 0x11<<7 | 0x5D, - 20932 - 19968: jis0208<<14 | 0x1F<<7 | 0x07, - 20933 - 19968: jis0208<<14 | 0x30<<7 | 0x38, - 20934 - 19968: jis0208<<14 | 0x1C<<7 | 0x39, - 20936 - 19968: jis0212<<14 | 0x12<<7 | 0x00, - 20937 - 19968: jis0208<<14 | 0x30<<7 | 0x39, - 20939 - 19968: jis0208<<14 | 0x22<<7 | 0x5B, - 20940 - 19968: jis0208<<14 | 0x2D<<7 | 0x1E, - 20941 - 19968: jis0208<<14 | 0x24<<7 | 0x3F, - 20943 - 19968: jis0212<<14 | 0x12<<7 | 0x01, - 20945 - 19968: jis0212<<14 | 0x12<<7 | 0x02, - 20946 - 19968: jis0212<<14 | 0x12<<7 | 0x03, - 20947 - 19968: jis0212<<14 | 0x12<<7 | 0x04, - 20949 - 19968: jis0212<<14 | 0x12<<7 | 0x05, - 20950 - 19968: jis0208<<14 | 0x31<<7 | 0x24, - 20952 - 19968: jis0212<<14 | 0x12<<7 | 0x06, - 20955 - 19968: jis0208<<14 | 0x30<<7 | 0x3A, - 20956 - 19968: jis0208<<14 | 0x53<<7 | 0x04, - 20957 - 19968: jis0208<<14 | 0x15<<7 | 0x24, - 20958 - 19968: jis0212<<14 | 0x12<<7 | 0x07, - 20960 - 19968: jis0208<<14 | 0x30<<7 | 0x3B, - 20961 - 19968: jis0208<<14 | 0x2A<<7 | 0x3D, - 20962 - 19968: jis0212<<14 | 0x12<<7 | 0x08, - 20965 - 19968: jis0212<<14 | 0x12<<7 | 0x09, - 20966 - 19968: jis0208<<14 | 0x1C<<7 | 0x47, - 20967 - 19968: jis0208<<14 | 0x21<<7 | 0x5B, - 20969 - 19968: jis0208<<14 | 0x30<<7 | 0x3D, - 20970 - 19968: jis0208<<14 | 0x25<<7 | 0x43, - 20972 - 19968: jis0208<<14 | 0x58<<7 | 0x26, - 20973 - 19968: jis0208<<14 | 0x30<<7 | 0x3E, - 20974 - 19968: jis0212<<14 | 0x12<<7 | 0x0A, - 20976 - 19968: jis0208<<14 | 0x30<<7 | 0x3F, - 20977 - 19968: jis0208<<14 | 0x12<<7 | 0x0D, - 20978 - 19968: jis0212<<14 | 0x12<<7 | 0x0B, - 20979 - 19968: jis0212<<14 | 0x12<<7 | 0x0C, - 20980 - 19968: jis0212<<14 | 0x12<<7 | 0x0D, - 20981 - 19968: jis0208<<14 | 0x30<<7 | 0x40, - 20982 - 19968: jis0208<<14 | 0x15<<7 | 0x06, - 20983 - 19968: jis0212<<14 | 0x12<<7 | 0x0E, - 20984 - 19968: jis0208<<14 | 0x25<<7 | 0x2B, - 20985 - 19968: jis0208<<14 | 0x10<<7 | 0x59, - 20986 - 19968: jis0208<<14 | 0x1C<<7 | 0x2F, - 20989 - 19968: jis0208<<14 | 0x27<<7 | 0x00, - 20990 - 19968: jis0208<<14 | 0x30<<7 | 0x41, - 20992 - 19968: jis0208<<14 | 0x24<<7 | 0x40, - 20993 - 19968: jis0212<<14 | 0x12<<7 | 0x0F, - 20994 - 19968: jis0212<<14 | 0x12<<7 | 0x10, - 20995 - 19968: jis0208<<14 | 0x1E<<7 | 0x2E, - 20996 - 19968: jis0208<<14 | 0x30<<7 | 0x42, - 20997 - 19968: jis0212<<14 | 0x12<<7 | 0x11, - 20998 - 19968: jis0208<<14 | 0x29<<7 | 0x0B, - 20999 - 19968: jis0208<<14 | 0x1F<<7 | 0x39, - 21000 - 19968: jis0208<<14 | 0x13<<7 | 0x01, - 21002 - 19968: jis0208<<14 | 0x13<<7 | 0x08, - 21003 - 19968: jis0208<<14 | 0x30<<7 | 0x43, - 21006 - 19968: jis0208<<14 | 0x30<<7 | 0x45, - 21009 - 19968: jis0208<<14 | 0x16<<7 | 0x19, - 21010 - 19968: jis0212<<14 | 0x12<<7 | 0x12, - 21011 - 19968: jis0212<<14 | 0x12<<7 | 0x13, - 21012 - 19968: jis0208<<14 | 0x30<<7 | 0x44, - 21013 - 19968: jis0208<<14 | 0x58<<7 | 0x27, - 21014 - 19968: jis0212<<14 | 0x12<<7 | 0x15, - 21015 - 19968: jis0208<<14 | 0x2D<<7 | 0x52, - 21016 - 19968: jis0212<<14 | 0x12<<7 | 0x16, - 21021 - 19968: jis0208<<14 | 0x1C<<7 | 0x48, - 21026 - 19968: jis0212<<14 | 0x12<<7 | 0x17, - 21028 - 19968: jis0208<<14 | 0x27<<7 | 0x1C, - 21029 - 19968: jis0208<<14 | 0x29<<7 | 0x2B, - 21031 - 19968: jis0208<<14 | 0x30<<7 | 0x46, - 21032 - 19968: jis0212<<14 | 0x12<<7 | 0x18, - 21033 - 19968: jis0208<<14 | 0x2C<<7 | 0x57, - 21034 - 19968: jis0208<<14 | 0x30<<7 | 0x47, - 21038 - 19968: jis0208<<14 | 0x30<<7 | 0x48, - 21040 - 19968: jis0208<<14 | 0x24<<7 | 0x5D, - 21041 - 19968: jis0212<<14 | 0x12<<7 | 0x19, - 21042 - 19968: jis0212<<14 | 0x12<<7 | 0x1A, - 21043 - 19968: jis0208<<14 | 0x30<<7 | 0x49, - 21045 - 19968: jis0212<<14 | 0x12<<7 | 0x1B, - 21046 - 19968: jis0208<<14 | 0x1F<<7 | 0x08, - 21047 - 19968: jis0208<<14 | 0x19<<7 | 0x5D, - 21048 - 19968: jis0208<<14 | 0x16<<7 | 0x53, - 21049 - 19968: jis0208<<14 | 0x30<<7 | 0x4A, - 21050 - 19968: jis0208<<14 | 0x1A<<7 | 0x28, - 21051 - 19968: jis0208<<14 | 0x18<<7 | 0x4E, - 21052 - 19968: jis0212<<14 | 0x12<<7 | 0x1C, - 21059 - 19968: jis0208<<14 | 0x23<<7 | 0x45, - 21060 - 19968: jis0208<<14 | 0x30<<7 | 0x4C, - 21061 - 19968: jis0212<<14 | 0x12<<7 | 0x1D, - 21063 - 19968: jis0208<<14 | 0x21<<7 | 0x06, - 21065 - 19968: jis0212<<14 | 0x12<<7 | 0x1E, - 21066 - 19968: jis0208<<14 | 0x19<<7 | 0x4E, - 21067 - 19968: jis0208<<14 | 0x30<<7 | 0x4D, - 21068 - 19968: jis0208<<14 | 0x30<<7 | 0x4E, - 21069 - 19968: jis0208<<14 | 0x20<<7 | 0x0F, - 21071 - 19968: jis0208<<14 | 0x30<<7 | 0x4B, - 21076 - 19968: jis0208<<14 | 0x30<<7 | 0x50, - 21077 - 19968: jis0212<<14 | 0x12<<7 | 0x1F, - 21078 - 19968: jis0208<<14 | 0x2A<<7 | 0x15, - 21079 - 19968: jis0212<<14 | 0x12<<7 | 0x20, - 21080 - 19968: jis0212<<14 | 0x12<<7 | 0x21, - 21082 - 19968: jis0212<<14 | 0x12<<7 | 0x22, - 21083 - 19968: jis0208<<14 | 0x18<<7 | 0x43, - 21084 - 19968: jis0212<<14 | 0x12<<7 | 0x23, - 21086 - 19968: jis0208<<14 | 0x30<<7 | 0x4F, - 21087 - 19968: jis0212<<14 | 0x12<<7 | 0x24, - 21088 - 19968: jis0212<<14 | 0x12<<7 | 0x25, - 21089 - 19968: jis0212<<14 | 0x12<<7 | 0x26, - 21091 - 19968: jis0208<<14 | 0x16<<7 | 0x54, - 21092 - 19968: jis0208<<14 | 0x19<<7 | 0x3D, - 21093 - 19968: jis0208<<14 | 0x26<<7 | 0x4C, - 21094 - 19968: jis0212<<14 | 0x12<<7 | 0x27, - 21097 - 19968: jis0208<<14 | 0x30<<7 | 0x53, - 21098 - 19968: jis0208<<14 | 0x30<<7 | 0x51, - 21102 - 19968: jis0212<<14 | 0x12<<7 | 0x28, - 21103 - 19968: jis0208<<14 | 0x28<<7 | 0x5A, - 21104 - 19968: jis0208<<14 | 0x1D<<7 | 0x49, - 21105 - 19968: jis0208<<14 | 0x30<<7 | 0x5A, - 21106 - 19968: jis0208<<14 | 0x12<<7 | 0x43, - 21107 - 19968: jis0208<<14 | 0x30<<7 | 0x54, - 21108 - 19968: jis0208<<14 | 0x30<<7 | 0x52, - 21109 - 19968: jis0208<<14 | 0x20<<7 | 0x2E, - 21111 - 19968: jis0212<<14 | 0x12<<7 | 0x29, - 21112 - 19968: jis0212<<14 | 0x12<<7 | 0x2A, - 21113 - 19968: jis0212<<14 | 0x12<<7 | 0x2B, - 21117 - 19968: jis0208<<14 | 0x30<<7 | 0x56, - 21119 - 19968: jis0208<<14 | 0x30<<7 | 0x55, - 21120 - 19968: jis0212<<14 | 0x12<<7 | 0x2C, - 21122 - 19968: jis0212<<14 | 0x12<<7 | 0x2D, - 21123 - 19968: jis0208<<14 | 0x12<<7 | 0x23, - 21125 - 19968: jis0212<<14 | 0x12<<7 | 0x2E, - 21127 - 19968: jis0208<<14 | 0x16<<7 | 0x3F, - 21128 - 19968: jis0208<<14 | 0x30<<7 | 0x5B, - 21129 - 19968: jis0208<<14 | 0x2D<<7 | 0x0C, - 21130 - 19968: jis0212<<14 | 0x12<<7 | 0x2F, - 21132 - 19968: jis0212<<14 | 0x12<<7 | 0x30, - 21133 - 19968: jis0208<<14 | 0x30<<7 | 0x57, - 21137 - 19968: jis0208<<14 | 0x30<<7 | 0x5C, - 21138 - 19968: jis0208<<14 | 0x30<<7 | 0x59, - 21139 - 19968: jis0212<<14 | 0x12<<7 | 0x31, - 21140 - 19968: jis0208<<14 | 0x30<<7 | 0x58, - 21141 - 19968: jis0212<<14 | 0x12<<7 | 0x32, - 21142 - 19968: jis0212<<14 | 0x12<<7 | 0x33, - 21143 - 19968: jis0212<<14 | 0x12<<7 | 0x34, - 21144 - 19968: jis0212<<14 | 0x12<<7 | 0x35, - 21146 - 19968: jis0212<<14 | 0x12<<7 | 0x36, - 21147 - 19968: jis0208<<14 | 0x2D<<7 | 0x2E, - 21148 - 19968: jis0208<<14 | 0x58<<7 | 0x28, - 21151 - 19968: jis0208<<14 | 0x17<<7 | 0x58, - 21152 - 19968: jis0208<<14 | 0x11<<7 | 0x22, - 21155 - 19968: jis0208<<14 | 0x2D<<7 | 0x53, - 21156 - 19968: jis0212<<14 | 0x12<<7 | 0x38, - 21157 - 19968: jis0212<<14 | 0x12<<7 | 0x39, - 21158 - 19968: jis0208<<14 | 0x58<<7 | 0x29, - 21159 - 19968: jis0212<<14 | 0x12<<7 | 0x3B, - 21161 - 19968: jis0208<<14 | 0x1C<<7 | 0x54, - 21162 - 19968: jis0208<<14 | 0x24<<7 | 0x37, - 21163 - 19968: jis0208<<14 | 0x18<<7 | 0x44, - 21164 - 19968: jis0208<<14 | 0x31<<7 | 0x01, - 21165 - 19968: jis0208<<14 | 0x31<<7 | 0x02, - 21167 - 19968: jis0208<<14 | 0x5A<<7 | 0x1B, - 21168 - 19968: jis0212<<14 | 0x12<<7 | 0x3D, - 21169 - 19968: jis0208<<14 | 0x2D<<7 | 0x44, - 21172 - 19968: jis0208<<14 | 0x2E<<7 | 0x0A, - 21173 - 19968: jis0208<<14 | 0x31<<7 | 0x04, - 21174 - 19968: jis0212<<14 | 0x12<<7 | 0x3E, - 21175 - 19968: jis0212<<14 | 0x12<<7 | 0x3F, - 21176 - 19968: jis0212<<14 | 0x12<<7 | 0x40, - 21177 - 19968: jis0208<<14 | 0x17<<7 | 0x59, - 21178 - 19968: jis0212<<14 | 0x12<<7 | 0x41, - 21179 - 19968: jis0212<<14 | 0x12<<7 | 0x42, - 21180 - 19968: jis0208<<14 | 0x31<<7 | 0x03, - 21181 - 19968: jis0212<<14 | 0x12<<7 | 0x43, - 21182 - 19968: jis0208<<14 | 0x12<<7 | 0x0E, - 21184 - 19968: jis0208<<14 | 0x58<<7 | 0x2A, - 21185 - 19968: jis0208<<14 | 0x31<<7 | 0x05, - 21187 - 19968: jis0208<<14 | 0x2A<<7 | 0x35, - 21188 - 19968: jis0212<<14 | 0x12<<7 | 0x45, - 21189 - 19968: jis0208<<14 | 0x23<<7 | 0x1B, - 21190 - 19968: jis0212<<14 | 0x12<<7 | 0x46, - 21191 - 19968: jis0208<<14 | 0x2C<<7 | 0x05, - 21192 - 19968: jis0212<<14 | 0x12<<7 | 0x47, - 21193 - 19968: jis0208<<14 | 0x29<<7 | 0x38, - 21196 - 19968: jis0212<<14 | 0x12<<7 | 0x48, - 21197 - 19968: jis0208<<14 | 0x31<<7 | 0x06, - 21199 - 19968: jis0212<<14 | 0x12<<7 | 0x49, - 21201 - 19968: jis0212<<14 | 0x12<<7 | 0x4A, - 21202 - 19968: jis0208<<14 | 0x4F<<7 | 0x34, - 21204 - 19968: jis0212<<14 | 0x12<<7 | 0x4B, - 21205 - 19968: jis0208<<14 | 0x25<<7 | 0x0F, - 21206 - 19968: jis0212<<14 | 0x12<<7 | 0x4C, - 21207 - 19968: jis0208<<14 | 0x31<<7 | 0x07, - 21208 - 19968: jis0208<<14 | 0x13<<7 | 0x09, - 21209 - 19968: jis0208<<14 | 0x2B<<7 | 0x12, - 21211 - 19968: jis0208<<14 | 0x58<<7 | 0x2B, - 21212 - 19968: jis0212<<14 | 0x12<<7 | 0x4E, - 21213 - 19968: jis0208<<14 | 0x1D<<7 | 0x00, - 21214 - 19968: jis0208<<14 | 0x31<<7 | 0x08, - 21215 - 19968: jis0208<<14 | 0x29<<7 | 0x46, - 21216 - 19968: jis0208<<14 | 0x31<<7 | 0x0C, - 21217 - 19968: jis0212<<14 | 0x12<<7 | 0x4F, - 21218 - 19968: jis0208<<14 | 0x1F<<7 | 0x09, - 21219 - 19968: jis0208<<14 | 0x31<<7 | 0x09, - 21220 - 19968: jis0208<<14 | 0x15<<7 | 0x2F, - 21221 - 19968: jis0212<<14 | 0x12<<7 | 0x50, - 21222 - 19968: jis0208<<14 | 0x31<<7 | 0x0A, - 21223 - 19968: jis0208<<14 | 0x13<<7 | 0x0A, - 21224 - 19968: jis0212<<14 | 0x12<<7 | 0x51, - 21225 - 19968: jis0212<<14 | 0x12<<7 | 0x52, - 21226 - 19968: jis0212<<14 | 0x12<<7 | 0x53, - 21228 - 19968: jis0212<<14 | 0x12<<7 | 0x54, - 21232 - 19968: jis0212<<14 | 0x12<<7 | 0x55, - 21233 - 19968: jis0212<<14 | 0x12<<7 | 0x56, - 21234 - 19968: jis0208<<14 | 0x16<<7 | 0x0D, - 21235 - 19968: jis0208<<14 | 0x31<<7 | 0x0D, - 21236 - 19968: jis0212<<14 | 0x12<<7 | 0x57, - 21237 - 19968: jis0208<<14 | 0x31<<7 | 0x0E, - 21238 - 19968: jis0212<<14 | 0x12<<7 | 0x58, - 21239 - 19968: jis0212<<14 | 0x12<<7 | 0x59, - 21240 - 19968: jis0208<<14 | 0x31<<7 | 0x0F, - 21241 - 19968: jis0208<<14 | 0x31<<7 | 0x10, - 21242 - 19968: jis0208<<14 | 0x1B<<7 | 0x3A, - 21246 - 19968: jis0208<<14 | 0x17<<7 | 0x5A, - 21247 - 19968: jis0208<<14 | 0x2B<<7 | 0x3D, - 21248 - 19968: jis0208<<14 | 0x58<<7 | 0x2C, - 21249 - 19968: jis0208<<14 | 0x2B<<7 | 0x47, - 21250 - 19968: jis0208<<14 | 0x25<<7 | 0x56, - 21251 - 19968: jis0212<<14 | 0x12<<7 | 0x5B, - 21253 - 19968: jis0208<<14 | 0x29<<7 | 0x50, - 21254 - 19968: jis0208<<14 | 0x31<<7 | 0x11, - 21255 - 19968: jis0208<<14 | 0x58<<7 | 0x2D, - 21256 - 19968: jis0208<<14 | 0x31<<7 | 0x12, - 21258 - 19968: jis0212<<14 | 0x12<<7 | 0x5C, - 21259 - 19968: jis0212<<14 | 0x12<<7 | 0x5D, - 21260 - 19968: jis0212<<14 | 0x13<<7 | 0x00, - 21261 - 19968: jis0208<<14 | 0x31<<7 | 0x14, - 21263 - 19968: jis0208<<14 | 0x31<<7 | 0x16, - 21264 - 19968: jis0208<<14 | 0x31<<7 | 0x15, - 21265 - 19968: jis0212<<14 | 0x13<<7 | 0x01, - 21267 - 19968: jis0212<<14 | 0x13<<7 | 0x02, - 21269 - 19968: jis0208<<14 | 0x31<<7 | 0x17, - 21270 - 19968: jis0208<<14 | 0x11<<7 | 0x1C, - 21271 - 19968: jis0208<<14 | 0x2A<<7 | 0x2B, - 21272 - 19968: jis0212<<14 | 0x13<<7 | 0x03, - 21273 - 19968: jis0208<<14 | 0x19<<7 | 0x5B, - 21274 - 19968: jis0208<<14 | 0x31<<7 | 0x18, - 21275 - 19968: jis0212<<14 | 0x13<<7 | 0x04, - 21276 - 19968: jis0212<<14 | 0x13<<7 | 0x05, - 21277 - 19968: jis0208<<14 | 0x20<<7 | 0x38, - 21278 - 19968: jis0212<<14 | 0x13<<7 | 0x06, - 21279 - 19968: jis0212<<14 | 0x13<<7 | 0x07, - 21280 - 19968: jis0208<<14 | 0x1D<<7 | 0x01, - 21281 - 19968: jis0208<<14 | 0x15<<7 | 0x08, - 21283 - 19968: jis0208<<14 | 0x31<<7 | 0x19, - 21284 - 19968: jis0208<<14 | 0x58<<7 | 0x2E, - 21285 - 19968: jis0212<<14 | 0x13<<7 | 0x08, - 21287 - 19968: jis0212<<14 | 0x13<<7 | 0x09, - 21288 - 19968: jis0212<<14 | 0x13<<7 | 0x0A, - 21289 - 19968: jis0212<<14 | 0x13<<7 | 0x0B, - 21290 - 19968: jis0208<<14 | 0x27<<7 | 0x3A, - 21291 - 19968: jis0212<<14 | 0x13<<7 | 0x0C, - 21292 - 19968: jis0212<<14 | 0x13<<7 | 0x0D, - 21293 - 19968: jis0212<<14 | 0x13<<7 | 0x0E, - 21295 - 19968: jis0208<<14 | 0x31<<7 | 0x1A, - 21296 - 19968: jis0212<<14 | 0x13<<7 | 0x0F, - 21297 - 19968: jis0208<<14 | 0x31<<7 | 0x1B, - 21298 - 19968: jis0212<<14 | 0x13<<7 | 0x10, - 21299 - 19968: jis0208<<14 | 0x31<<7 | 0x1C, - 21301 - 19968: jis0212<<14 | 0x13<<7 | 0x11, - 21304 - 19968: jis0208<<14 | 0x31<<7 | 0x1D, - 21305 - 19968: jis0208<<14 | 0x28<<7 | 0x03, - 21306 - 19968: jis0208<<14 | 0x15<<7 | 0x47, - 21307 - 19968: jis0208<<14 | 0x0F<<7 | 0x44, - 21308 - 19968: jis0212<<14 | 0x13<<7 | 0x12, - 21309 - 19968: jis0212<<14 | 0x13<<7 | 0x13, - 21310 - 19968: jis0212<<14 | 0x13<<7 | 0x14, - 21311 - 19968: jis0208<<14 | 0x25<<7 | 0x1E, - 21312 - 19968: jis0208<<14 | 0x31<<7 | 0x1E, - 21313 - 19968: jis0208<<14 | 0x1C<<7 | 0x1C, - 21314 - 19968: jis0212<<14 | 0x13<<7 | 0x15, - 21315 - 19968: jis0208<<14 | 0x1F<<7 | 0x48, - 21317 - 19968: jis0208<<14 | 0x31<<7 | 0x20, - 21318 - 19968: jis0208<<14 | 0x31<<7 | 0x1F, - 21319 - 19968: jis0208<<14 | 0x1D<<7 | 0x02, - 21320 - 19968: jis0208<<14 | 0x17<<7 | 0x40, - 21321 - 19968: jis0208<<14 | 0x31<<7 | 0x22, - 21322 - 19968: jis0208<<14 | 0x27<<7 | 0x1D, - 21323 - 19968: jis0212<<14 | 0x13<<7 | 0x17, - 21324 - 19968: jis0212<<14 | 0x13<<7 | 0x16, - 21325 - 19968: jis0208<<14 | 0x31<<7 | 0x23, - 21329 - 19968: jis0208<<14 | 0x27<<7 | 0x3B, - 21330 - 19968: jis0208<<14 | 0x21<<7 | 0x13, - 21331 - 19968: jis0208<<14 | 0x21<<7 | 0x4D, - 21332 - 19968: jis0208<<14 | 0x15<<7 | 0x07, - 21335 - 19968: jis0208<<14 | 0x25<<7 | 0x4D, - 21336 - 19968: jis0208<<14 | 0x22<<7 | 0x10, - 21337 - 19968: jis0212<<14 | 0x13<<7 | 0x18, - 21338 - 19968: jis0208<<14 | 0x26<<7 | 0x4D, - 21339 - 19968: jis0212<<14 | 0x13<<7 | 0x19, - 21340 - 19968: jis0208<<14 | 0x2A<<7 | 0x2D, - 21342 - 19968: jis0208<<14 | 0x31<<7 | 0x25, - 21344 - 19968: jis0208<<14 | 0x1F<<7 | 0x49, - 21345 - 19968: jis0212<<14 | 0x13<<7 | 0x1A, - 21347 - 19968: jis0212<<14 | 0x13<<7 | 0x1B, - 21349 - 19968: jis0212<<14 | 0x13<<7 | 0x1C, - 21350 - 19968: jis0208<<14 | 0x16<<7 | 0x14, - 21353 - 19968: jis0208<<14 | 0x31<<7 | 0x26, - 21356 - 19968: jis0212<<14 | 0x13<<7 | 0x1D, - 21357 - 19968: jis0212<<14 | 0x13<<7 | 0x1E, - 21358 - 19968: jis0208<<14 | 0x31<<7 | 0x27, - 21359 - 19968: jis0208<<14 | 0x10<<7 | 0x0B, - 21360 - 19968: jis0208<<14 | 0x0F<<7 | 0x54, - 21361 - 19968: jis0208<<14 | 0x13<<7 | 0x4C, - 21362 - 19968: jis0208<<14 | 0x58<<7 | 0x2F, - 21363 - 19968: jis0208<<14 | 0x21<<7 | 0x07, - 21364 - 19968: jis0208<<14 | 0x14<<7 | 0x30, - 21365 - 19968: jis0208<<14 | 0x2C<<7 | 0x50, - 21367 - 19968: jis0208<<14 | 0x31<<7 | 0x2A, - 21368 - 19968: jis0208<<14 | 0x11<<7 | 0x16, - 21369 - 19968: jis0212<<14 | 0x13<<7 | 0x20, - 21371 - 19968: jis0208<<14 | 0x31<<7 | 0x29, - 21374 - 19968: jis0212<<14 | 0x13<<7 | 0x21, - 21375 - 19968: jis0208<<14 | 0x15<<7 | 0x09, - 21378 - 19968: jis0208<<14 | 0x31<<7 | 0x2B, - 21379 - 19968: jis0212<<14 | 0x13<<7 | 0x22, - 21380 - 19968: jis0208<<14 | 0x2B<<7 | 0x50, - 21383 - 19968: jis0212<<14 | 0x13<<7 | 0x23, - 21384 - 19968: jis0212<<14 | 0x13<<7 | 0x24, - 21390 - 19968: jis0212<<14 | 0x13<<7 | 0x25, - 21395 - 19968: jis0208<<14 | 0x58<<7 | 0x30, - 21396 - 19968: jis0212<<14 | 0x13<<7 | 0x27, - 21398 - 19968: jis0208<<14 | 0x31<<7 | 0x2C, - 21400 - 19968: jis0208<<14 | 0x2D<<7 | 0x31, - 21401 - 19968: jis0212<<14 | 0x13<<7 | 0x28, - 21402 - 19968: jis0208<<14 | 0x17<<7 | 0x5B, - 21405 - 19968: jis0212<<14 | 0x13<<7 | 0x29, - 21407 - 19968: jis0208<<14 | 0x17<<7 | 0x15, - 21408 - 19968: jis0208<<14 | 0x31<<7 | 0x2D, - 21409 - 19968: jis0212<<14 | 0x13<<7 | 0x2A, - 21412 - 19968: jis0212<<14 | 0x13<<7 | 0x2B, - 21413 - 19968: jis0208<<14 | 0x31<<7 | 0x2F, - 21414 - 19968: jis0208<<14 | 0x31<<7 | 0x2E, - 21416 - 19968: jis0208<<14 | 0x1E<<7 | 0x3E, - 21417 - 19968: jis0208<<14 | 0x10<<7 | 0x18, - 21418 - 19968: jis0212<<14 | 0x13<<7 | 0x2C, - 21419 - 19968: jis0212<<14 | 0x13<<7 | 0x2D, - 21421 - 19968: jis0208<<14 | 0x10<<7 | 0x3D, - 21422 - 19968: jis0208<<14 | 0x31<<7 | 0x30, - 21423 - 19968: jis0212<<14 | 0x13<<7 | 0x2E, - 21424 - 19968: jis0208<<14 | 0x31<<7 | 0x31, - 21426 - 19968: jis0208<<14 | 0x58<<7 | 0x31, - 21427 - 19968: jis0208<<14 | 0x17<<7 | 0x16, - 21428 - 19968: jis0212<<14 | 0x13<<7 | 0x30, - 21429 - 19968: jis0212<<14 | 0x13<<7 | 0x31, - 21430 - 19968: jis0208<<14 | 0x31<<7 | 0x32, - 21431 - 19968: jis0212<<14 | 0x13<<7 | 0x32, - 21432 - 19968: jis0212<<14 | 0x13<<7 | 0x33, - 21434 - 19968: jis0212<<14 | 0x13<<7 | 0x34, - 21435 - 19968: jis0208<<14 | 0x14<<7 | 0x4D, - 21437 - 19968: jis0212<<14 | 0x13<<7 | 0x35, - 21440 - 19968: jis0212<<14 | 0x13<<7 | 0x36, - 21442 - 19968: jis0208<<14 | 0x1A<<7 | 0x11, - 21443 - 19968: jis0208<<14 | 0x31<<7 | 0x33, - 21445 - 19968: jis0212<<14 | 0x13<<7 | 0x37, - 21448 - 19968: jis0208<<14 | 0x2A<<7 | 0x53, - 21449 - 19968: jis0208<<14 | 0x19<<7 | 0x14, - 21450 - 19968: jis0208<<14 | 0x14<<7 | 0x39, - 21451 - 19968: jis0208<<14 | 0x2C<<7 | 0x06, - 21452 - 19968: jis0208<<14 | 0x20<<7 | 0x2F, - 21453 - 19968: jis0208<<14 | 0x27<<7 | 0x1E, - 21454 - 19968: jis0208<<14 | 0x1B<<7 | 0x5C, - 21455 - 19968: jis0212<<14 | 0x13<<7 | 0x38, - 21458 - 19968: jis0212<<14 | 0x13<<7 | 0x39, - 21459 - 19968: jis0212<<14 | 0x13<<7 | 0x3A, - 21460 - 19968: jis0208<<14 | 0x1C<<7 | 0x26, - 21461 - 19968: jis0212<<14 | 0x13<<7 | 0x3B, - 21462 - 19968: jis0208<<14 | 0x1B<<7 | 0x47, - 21463 - 19968: jis0208<<14 | 0x1B<<7 | 0x54, - 21465 - 19968: jis0208<<14 | 0x1C<<7 | 0x55, - 21466 - 19968: jis0212<<14 | 0x13<<7 | 0x3C, - 21467 - 19968: jis0208<<14 | 0x27<<7 | 0x1F, - 21469 - 19968: jis0208<<14 | 0x58<<7 | 0x32, - 21470 - 19968: jis0212<<14 | 0x13<<7 | 0x3E, - 21471 - 19968: jis0208<<14 | 0x31<<7 | 0x36, - 21472 - 19968: jis0212<<14 | 0x13<<7 | 0x3F, - 21473 - 19968: jis0208<<14 | 0x10<<7 | 0x22, - 21474 - 19968: jis0208<<14 | 0x20<<7 | 0x30, - 21475 - 19968: jis0208<<14 | 0x17<<7 | 0x5C, - 21476 - 19968: jis0208<<14 | 0x17<<7 | 0x24, - 21477 - 19968: jis0208<<14 | 0x15<<7 | 0x46, - 21478 - 19968: jis0212<<14 | 0x13<<7 | 0x40, - 21479 - 19968: jis0212<<14 | 0x13<<7 | 0x41, - 21480 - 19968: jis0208<<14 | 0x31<<7 | 0x3A, - 21481 - 19968: jis0208<<14 | 0x22<<7 | 0x00, - 21482 - 19968: jis0208<<14 | 0x21<<7 | 0x5D, - 21483 - 19968: jis0208<<14 | 0x15<<7 | 0x0A, - 21484 - 19968: jis0208<<14 | 0x1D<<7 | 0x03, - 21485 - 19968: jis0208<<14 | 0x31<<7 | 0x3B, - 21486 - 19968: jis0208<<14 | 0x31<<7 | 0x39, - 21487 - 19968: jis0208<<14 | 0x11<<7 | 0x23, - 21488 - 19968: jis0208<<14 | 0x21<<7 | 0x45, - 21489 - 19968: jis0208<<14 | 0x1B<<7 | 0x17, - 21490 - 19968: jis0208<<14 | 0x1A<<7 | 0x2A, - 21491 - 19968: jis0208<<14 | 0x10<<7 | 0x05, - 21493 - 19968: jis0212<<14 | 0x13<<7 | 0x42, - 21494 - 19968: jis0208<<14 | 0x12<<7 | 0x4F, - 21495 - 19968: jis0208<<14 | 0x18<<7 | 0x45, - 21496 - 19968: jis0208<<14 | 0x1A<<7 | 0x29, - 21498 - 19968: jis0208<<14 | 0x31<<7 | 0x3C, - 21505 - 19968: jis0208<<14 | 0x31<<7 | 0x3D, - 21506 - 19968: jis0212<<14 | 0x13<<7 | 0x43, - 21507 - 19968: jis0208<<14 | 0x14<<7 | 0x28, - 21508 - 19968: jis0208<<14 | 0x12<<7 | 0x25, - 21512 - 19968: jis0208<<14 | 0x18<<7 | 0x46, - 21513 - 19968: jis0208<<14 | 0x14<<7 | 0x27, - 21514 - 19968: jis0208<<14 | 0x23<<7 | 0x3E, - 21515 - 19968: jis0208<<14 | 0x10<<7 | 0x04, - 21516 - 19968: jis0208<<14 | 0x25<<7 | 0x10, - 21517 - 19968: jis0208<<14 | 0x2B<<7 | 0x1D, - 21518 - 19968: jis0208<<14 | 0x18<<7 | 0x00, - 21519 - 19968: jis0208<<14 | 0x2C<<7 | 0x58, - 21520 - 19968: jis0208<<14 | 0x24<<7 | 0x26, - 21521 - 19968: jis0208<<14 | 0x17<<7 | 0x5D, - 21523 - 19968: jis0212<<14 | 0x13<<7 | 0x44, - 21530 - 19968: jis0212<<14 | 0x13<<7 | 0x45, - 21531 - 19968: jis0208<<14 | 0x16<<7 | 0x0E, - 21533 - 19968: jis0208<<14 | 0x31<<7 | 0x46, - 21535 - 19968: jis0208<<14 | 0x15<<7 | 0x42, - 21536 - 19968: jis0208<<14 | 0x2A<<7 | 0x29, - 21537 - 19968: jis0212<<14 | 0x13<<7 | 0x46, - 21542 - 19968: jis0208<<14 | 0x27<<7 | 0x3C, - 21543 - 19968: jis0212<<14 | 0x13<<7 | 0x47, - 21544 - 19968: jis0212<<14 | 0x13<<7 | 0x48, - 21545 - 19968: jis0208<<14 | 0x31<<7 | 0x45, - 21546 - 19968: jis0212<<14 | 0x13<<7 | 0x49, - 21547 - 19968: jis0208<<14 | 0x13<<7 | 0x3D, - 21548 - 19968: jis0208<<14 | 0x31<<7 | 0x40, - 21549 - 19968: jis0208<<14 | 0x31<<7 | 0x41, - 21550 - 19968: jis0208<<14 | 0x31<<7 | 0x43, - 21551 - 19968: jis0212<<14 | 0x13<<7 | 0x4A, - 21553 - 19968: jis0212<<14 | 0x13<<7 | 0x4B, - 21556 - 19968: jis0212<<14 | 0x13<<7 | 0x4C, - 21557 - 19968: jis0212<<14 | 0x13<<7 | 0x4D, - 21558 - 19968: jis0208<<14 | 0x31<<7 | 0x44, - 21560 - 19968: jis0208<<14 | 0x14<<7 | 0x3A, - 21561 - 19968: jis0208<<14 | 0x1E<<7 | 0x40, - 21563 - 19968: jis0208<<14 | 0x29<<7 | 0x0C, - 21564 - 19968: jis0208<<14 | 0x31<<7 | 0x42, - 21565 - 19968: jis0208<<14 | 0x31<<7 | 0x3E, - 21566 - 19968: jis0208<<14 | 0x17<<7 | 0x42, - 21568 - 19968: jis0208<<14 | 0x31<<7 | 0x3F, - 21570 - 19968: jis0208<<14 | 0x2E<<7 | 0x03, - 21571 - 19968: jis0212<<14 | 0x13<<7 | 0x4E, - 21572 - 19968: jis0212<<14 | 0x13<<7 | 0x4F, - 21574 - 19968: jis0208<<14 | 0x29<<7 | 0x51, - 21575 - 19968: jis0212<<14 | 0x13<<7 | 0x50, - 21576 - 19968: jis0208<<14 | 0x23<<7 | 0x47, - 21577 - 19968: jis0208<<14 | 0x17<<7 | 0x41, - 21578 - 19968: jis0208<<14 | 0x18<<7 | 0x4F, - 21581 - 19968: jis0212<<14 | 0x13<<7 | 0x51, - 21582 - 19968: jis0208<<14 | 0x31<<7 | 0x47, - 21583 - 19968: jis0212<<14 | 0x13<<7 | 0x52, - 21585 - 19968: jis0208<<14 | 0x25<<7 | 0x3C, - 21598 - 19968: jis0212<<14 | 0x13<<7 | 0x53, - 21599 - 19968: jis0208<<14 | 0x31<<7 | 0x4B, - 21602 - 19968: jis0212<<14 | 0x13<<7 | 0x54, - 21604 - 19968: jis0212<<14 | 0x13<<7 | 0x55, - 21606 - 19968: jis0212<<14 | 0x13<<7 | 0x56, - 21607 - 19968: jis0212<<14 | 0x13<<7 | 0x57, - 21608 - 19968: jis0208<<14 | 0x1B<<7 | 0x5D, - 21609 - 19968: jis0212<<14 | 0x13<<7 | 0x58, - 21610 - 19968: jis0208<<14 | 0x1B<<7 | 0x55, - 21611 - 19968: jis0212<<14 | 0x13<<7 | 0x59, - 21613 - 19968: jis0212<<14 | 0x13<<7 | 0x5A, - 21614 - 19968: jis0212<<14 | 0x13<<7 | 0x5B, - 21616 - 19968: jis0208<<14 | 0x31<<7 | 0x4E, - 21617 - 19968: jis0208<<14 | 0x31<<7 | 0x4C, - 21619 - 19968: jis0208<<14 | 0x2B<<7 | 0x02, - 21620 - 19968: jis0212<<14 | 0x13<<7 | 0x5C, - 21621 - 19968: jis0208<<14 | 0x31<<7 | 0x49, - 21622 - 19968: jis0208<<14 | 0x31<<7 | 0x52, - 21623 - 19968: jis0208<<14 | 0x31<<7 | 0x4D, - 21627 - 19968: jis0208<<14 | 0x31<<7 | 0x50, - 21628 - 19968: jis0208<<14 | 0x17<<7 | 0x25, - 21629 - 19968: jis0208<<14 | 0x2B<<7 | 0x1E, - 21631 - 19968: jis0212<<14 | 0x13<<7 | 0x5D, - 21632 - 19968: jis0208<<14 | 0x31<<7 | 0x51, - 21633 - 19968: jis0212<<14 | 0x14<<7 | 0x00, - 21635 - 19968: jis0212<<14 | 0x14<<7 | 0x01, - 21636 - 19968: jis0208<<14 | 0x31<<7 | 0x53, - 21637 - 19968: jis0212<<14 | 0x14<<7 | 0x02, - 21638 - 19968: jis0208<<14 | 0x31<<7 | 0x55, - 21640 - 19968: jis0212<<14 | 0x14<<7 | 0x03, - 21641 - 19968: jis0212<<14 | 0x14<<7 | 0x04, - 21642 - 19968: jis0208<<14 | 0x58<<7 | 0x35, - 21643 - 19968: jis0208<<14 | 0x19<<7 | 0x4F, - 21644 - 19968: jis0208<<14 | 0x2E<<7 | 0x21, - 21645 - 19968: jis0212<<14 | 0x14<<7 | 0x05, - 21646 - 19968: jis0208<<14 | 0x31<<7 | 0x4A, - 21647 - 19968: jis0208<<14 | 0x31<<7 | 0x48, - 21648 - 19968: jis0208<<14 | 0x31<<7 | 0x54, - 21649 - 19968: jis0212<<14 | 0x14<<7 | 0x06, - 21650 - 19968: jis0208<<14 | 0x31<<7 | 0x4F, - 21653 - 19968: jis0212<<14 | 0x14<<7 | 0x07, - 21654 - 19968: jis0212<<14 | 0x14<<7 | 0x08, - 21660 - 19968: jis0208<<14 | 0x58<<7 | 0x34, - 21663 - 19968: jis0212<<14 | 0x14<<7 | 0x0A, - 21665 - 19968: jis0212<<14 | 0x14<<7 | 0x0B, - 21666 - 19968: jis0208<<14 | 0x31<<7 | 0x57, - 21668 - 19968: jis0208<<14 | 0x32<<7 | 0x02, - 21669 - 19968: jis0208<<14 | 0x31<<7 | 0x59, - 21670 - 19968: jis0212<<14 | 0x14<<7 | 0x0C, - 21671 - 19968: jis0212<<14 | 0x14<<7 | 0x0D, - 21672 - 19968: jis0208<<14 | 0x31<<7 | 0x5D, - 21673 - 19968: jis0208<<14 | 0x58<<7 | 0x36, - 21674 - 19968: jis0212<<14 | 0x14<<7 | 0x0F, - 21675 - 19968: jis0208<<14 | 0x32<<7 | 0x00, - 21676 - 19968: jis0208<<14 | 0x31<<7 | 0x5A, - 21677 - 19968: jis0212<<14 | 0x14<<7 | 0x10, - 21678 - 19968: jis0212<<14 | 0x14<<7 | 0x11, - 21679 - 19968: jis0208<<14 | 0x32<<7 | 0x1D, - 21681 - 19968: jis0212<<14 | 0x14<<7 | 0x12, - 21682 - 19968: jis0208<<14 | 0x19<<7 | 0x48, - 21683 - 19968: jis0208<<14 | 0x12<<7 | 0x10, - 21687 - 19968: jis0212<<14 | 0x14<<7 | 0x13, - 21688 - 19968: jis0208<<14 | 0x31<<7 | 0x58, - 21689 - 19968: jis0212<<14 | 0x14<<7 | 0x14, - 21690 - 19968: jis0212<<14 | 0x14<<7 | 0x15, - 21691 - 19968: jis0212<<14 | 0x14<<7 | 0x16, - 21692 - 19968: jis0208<<14 | 0x32<<7 | 0x04, - 21693 - 19968: jis0208<<14 | 0x0F<<7 | 0x55, - 21694 - 19968: jis0208<<14 | 0x32<<7 | 0x03, - 21695 - 19968: jis0212<<14 | 0x14<<7 | 0x17, - 21696 - 19968: jis0208<<14 | 0x0F<<7 | 0x04, - 21697 - 19968: jis0208<<14 | 0x28<<7 | 0x29, - 21698 - 19968: jis0208<<14 | 0x32<<7 | 0x01, - 21700 - 19968: jis0208<<14 | 0x31<<7 | 0x5B, - 21702 - 19968: jis0212<<14 | 0x14<<7 | 0x18, - 21703 - 19968: jis0208<<14 | 0x31<<7 | 0x56, - 21704 - 19968: jis0208<<14 | 0x31<<7 | 0x5C, - 21705 - 19968: jis0208<<14 | 0x19<<7 | 0x27, - 21706 - 19968: jis0212<<14 | 0x14<<7 | 0x19, - 21709 - 19968: jis0212<<14 | 0x14<<7 | 0x1A, - 21710 - 19968: jis0212<<14 | 0x14<<7 | 0x1B, - 21720 - 19968: jis0208<<14 | 0x32<<7 | 0x05, - 21728 - 19968: jis0212<<14 | 0x14<<7 | 0x1C, - 21729 - 19968: jis0208<<14 | 0x0F<<7 | 0x56, - 21730 - 19968: jis0208<<14 | 0x32<<7 | 0x0E, - 21733 - 19968: jis0208<<14 | 0x32<<7 | 0x06, - 21734 - 19968: jis0208<<14 | 0x32<<7 | 0x07, - 21736 - 19968: jis0208<<14 | 0x1D<<7 | 0x04, - 21737 - 19968: jis0208<<14 | 0x2A<<7 | 0x48, - 21738 - 19968: jis0212<<14 | 0x14<<7 | 0x1D, - 21740 - 19968: jis0212<<14 | 0x14<<7 | 0x1E, - 21741 - 19968: jis0208<<14 | 0x32<<7 | 0x0C, - 21742 - 19968: jis0208<<14 | 0x32<<7 | 0x0B, - 21743 - 19968: jis0212<<14 | 0x14<<7 | 0x1F, - 21746 - 19968: jis0208<<14 | 0x24<<7 | 0x0E, - 21750 - 19968: jis0212<<14 | 0x14<<7 | 0x20, - 21754 - 19968: jis0208<<14 | 0x32<<7 | 0x0D, - 21756 - 19968: jis0212<<14 | 0x14<<7 | 0x21, - 21757 - 19968: jis0208<<14 | 0x32<<7 | 0x0A, - 21758 - 19968: jis0212<<14 | 0x14<<7 | 0x22, - 21759 - 19968: jis0208<<14 | 0x58<<7 | 0x37, - 21760 - 19968: jis0212<<14 | 0x14<<7 | 0x24, - 21761 - 19968: jis0212<<14 | 0x14<<7 | 0x25, - 21764 - 19968: jis0208<<14 | 0x10<<7 | 0x13, - 21765 - 19968: jis0212<<14 | 0x14<<7 | 0x26, - 21766 - 19968: jis0208<<14 | 0x19<<7 | 0x15, - 21767 - 19968: jis0208<<14 | 0x1E<<7 | 0x0F, - 21768 - 19968: jis0212<<14 | 0x14<<7 | 0x27, - 21769 - 19968: jis0212<<14 | 0x14<<7 | 0x28, - 21772 - 19968: jis0212<<14 | 0x14<<7 | 0x29, - 21773 - 19968: jis0212<<14 | 0x14<<7 | 0x2A, - 21774 - 19968: jis0212<<14 | 0x14<<7 | 0x2B, - 21775 - 19968: jis0208<<14 | 0x32<<7 | 0x08, - 21776 - 19968: jis0208<<14 | 0x24<<7 | 0x41, - 21780 - 19968: jis0208<<14 | 0x32<<7 | 0x09, - 21781 - 19968: jis0212<<14 | 0x14<<7 | 0x2C, - 21782 - 19968: jis0208<<14 | 0x0F<<7 | 0x01, - 21802 - 19968: jis0212<<14 | 0x14<<7 | 0x2D, - 21803 - 19968: jis0212<<14 | 0x14<<7 | 0x2E, - 21806 - 19968: jis0208<<14 | 0x32<<7 | 0x13, - 21807 - 19968: jis0208<<14 | 0x2C<<7 | 0x02, - 21809 - 19968: jis0208<<14 | 0x1D<<7 | 0x06, - 21810 - 19968: jis0212<<14 | 0x14<<7 | 0x2F, - 21811 - 19968: jis0208<<14 | 0x32<<7 | 0x19, - 21813 - 19968: jis0212<<14 | 0x14<<7 | 0x30, - 21814 - 19968: jis0212<<14 | 0x14<<7 | 0x31, - 21816 - 19968: jis0208<<14 | 0x32<<7 | 0x18, - 21817 - 19968: jis0208<<14 | 0x32<<7 | 0x0F, - 21819 - 19968: jis0212<<14 | 0x14<<7 | 0x32, - 21820 - 19968: jis0212<<14 | 0x14<<7 | 0x33, - 21821 - 19968: jis0212<<14 | 0x14<<7 | 0x34, - 21822 - 19968: jis0208<<14 | 0x21<<7 | 0x22, - 21824 - 19968: jis0208<<14 | 0x32<<7 | 0x10, - 21825 - 19968: jis0212<<14 | 0x14<<7 | 0x35, - 21828 - 19968: jis0208<<14 | 0x21<<7 | 0x4E, - 21829 - 19968: jis0208<<14 | 0x32<<7 | 0x15, - 21830 - 19968: jis0208<<14 | 0x1D<<7 | 0x05, - 21831 - 19968: jis0212<<14 | 0x14<<7 | 0x36, - 21833 - 19968: jis0212<<14 | 0x14<<7 | 0x37, - 21834 - 19968: jis0212<<14 | 0x14<<7 | 0x38, - 21836 - 19968: jis0208<<14 | 0x32<<7 | 0x12, - 21837 - 19968: jis0212<<14 | 0x14<<7 | 0x39, - 21839 - 19968: jis0208<<14 | 0x2B<<7 | 0x43, - 21840 - 19968: jis0212<<14 | 0x14<<7 | 0x3A, - 21841 - 19968: jis0212<<14 | 0x14<<7 | 0x3B, - 21843 - 19968: jis0208<<14 | 0x16<<7 | 0x1B, - 21846 - 19968: jis0208<<14 | 0x32<<7 | 0x16, - 21847 - 19968: jis0208<<14 | 0x32<<7 | 0x17, - 21848 - 19968: jis0212<<14 | 0x14<<7 | 0x3C, - 21850 - 19968: jis0212<<14 | 0x14<<7 | 0x3D, - 21851 - 19968: jis0212<<14 | 0x14<<7 | 0x3E, - 21852 - 19968: jis0208<<14 | 0x32<<7 | 0x14, - 21853 - 19968: jis0208<<14 | 0x32<<7 | 0x1A, - 21854 - 19968: jis0212<<14 | 0x14<<7 | 0x3F, - 21856 - 19968: jis0212<<14 | 0x14<<7 | 0x40, - 21857 - 19968: jis0212<<14 | 0x14<<7 | 0x41, - 21859 - 19968: jis0208<<14 | 0x32<<7 | 0x11, - 21860 - 19968: jis0212<<14 | 0x14<<7 | 0x42, - 21862 - 19968: jis0212<<14 | 0x14<<7 | 0x43, - 21883 - 19968: jis0208<<14 | 0x32<<7 | 0x20, - 21884 - 19968: jis0208<<14 | 0x32<<7 | 0x25, - 21886 - 19968: jis0208<<14 | 0x32<<7 | 0x21, - 21887 - 19968: jis0212<<14 | 0x14<<7 | 0x44, - 21888 - 19968: jis0208<<14 | 0x32<<7 | 0x1C, - 21889 - 19968: jis0212<<14 | 0x14<<7 | 0x45, - 21890 - 19968: jis0212<<14 | 0x14<<7 | 0x46, - 21891 - 19968: jis0208<<14 | 0x32<<7 | 0x26, - 21892 - 19968: jis0208<<14 | 0x20<<7 | 0x10, - 21894 - 19968: jis0208<<14 | 0x58<<7 | 0x38, - 21895 - 19968: jis0208<<14 | 0x32<<7 | 0x28, - 21896 - 19968: jis0212<<14 | 0x14<<7 | 0x48, - 21897 - 19968: jis0208<<14 | 0x18<<7 | 0x01, - 21898 - 19968: jis0208<<14 | 0x32<<7 | 0x1E, - 21899 - 19968: jis0208<<14 | 0x22<<7 | 0x5C, - 21902 - 19968: jis0212<<14 | 0x14<<7 | 0x49, - 21903 - 19968: jis0212<<14 | 0x14<<7 | 0x4A, - 21905 - 19968: jis0212<<14 | 0x14<<7 | 0x4B, - 21906 - 19968: jis0212<<14 | 0x14<<7 | 0x4C, - 21907 - 19968: jis0212<<14 | 0x14<<7 | 0x4D, - 21908 - 19968: jis0212<<14 | 0x14<<7 | 0x4E, - 21911 - 19968: jis0212<<14 | 0x14<<7 | 0x4F, - 21912 - 19968: jis0208<<14 | 0x32<<7 | 0x22, - 21913 - 19968: jis0208<<14 | 0x32<<7 | 0x1B, - 21914 - 19968: jis0208<<14 | 0x13<<7 | 0x0C, - 21916 - 19968: jis0208<<14 | 0x13<<7 | 0x4D, - 21917 - 19968: jis0208<<14 | 0x12<<7 | 0x44, - 21918 - 19968: jis0208<<14 | 0x32<<7 | 0x23, - 21919 - 19968: jis0208<<14 | 0x32<<7 | 0x1F, - 21923 - 19968: jis0212<<14 | 0x14<<7 | 0x50, - 21924 - 19968: jis0212<<14 | 0x14<<7 | 0x51, - 21927 - 19968: jis0208<<14 | 0x16<<7 | 0x55, - 21928 - 19968: jis0208<<14 | 0x32<<7 | 0x29, - 21929 - 19968: jis0208<<14 | 0x32<<7 | 0x27, - 21930 - 19968: jis0208<<14 | 0x20<<7 | 0x32, - 21931 - 19968: jis0208<<14 | 0x14<<7 | 0x29, - 21932 - 19968: jis0208<<14 | 0x15<<7 | 0x0B, - 21933 - 19968: jis0212<<14 | 0x14<<7 | 0x52, - 21934 - 19968: jis0208<<14 | 0x32<<7 | 0x24, - 21936 - 19968: jis0208<<14 | 0x15<<7 | 0x53, - 21938 - 19968: jis0212<<14 | 0x14<<7 | 0x53, - 21942 - 19968: jis0208<<14 | 0x10<<7 | 0x23, - 21951 - 19968: jis0212<<14 | 0x14<<7 | 0x54, - 21953 - 19968: jis0212<<14 | 0x14<<7 | 0x55, - 21955 - 19968: jis0212<<14 | 0x14<<7 | 0x56, - 21956 - 19968: jis0208<<14 | 0x32<<7 | 0x2D, - 21957 - 19968: jis0208<<14 | 0x32<<7 | 0x2B, - 21958 - 19968: jis0212<<14 | 0x14<<7 | 0x57, - 21959 - 19968: jis0208<<14 | 0x33<<7 | 0x06, - 21961 - 19968: jis0212<<14 | 0x14<<7 | 0x58, - 21963 - 19968: jis0212<<14 | 0x14<<7 | 0x59, - 21964 - 19968: jis0212<<14 | 0x14<<7 | 0x5A, - 21966 - 19968: jis0212<<14 | 0x14<<7 | 0x5B, - 21969 - 19968: jis0212<<14 | 0x14<<7 | 0x5C, - 21970 - 19968: jis0212<<14 | 0x14<<7 | 0x5D, - 21971 - 19968: jis0212<<14 | 0x15<<7 | 0x00, - 21972 - 19968: jis0208<<14 | 0x32<<7 | 0x30, - 21975 - 19968: jis0212<<14 | 0x15<<7 | 0x01, - 21976 - 19968: jis0212<<14 | 0x15<<7 | 0x02, - 21978 - 19968: jis0208<<14 | 0x32<<7 | 0x2A, - 21979 - 19968: jis0212<<14 | 0x15<<7 | 0x03, - 21980 - 19968: jis0208<<14 | 0x32<<7 | 0x2E, - 21982 - 19968: jis0212<<14 | 0x15<<7 | 0x04, - 21983 - 19968: jis0208<<14 | 0x32<<7 | 0x2C, - 21986 - 19968: jis0212<<14 | 0x15<<7 | 0x05, - 21987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2B, - 21988 - 19968: jis0208<<14 | 0x32<<7 | 0x2F, - 21993 - 19968: jis0212<<14 | 0x15<<7 | 0x06, - 22006 - 19968: jis0212<<14 | 0x15<<7 | 0x07, - 22007 - 19968: jis0208<<14 | 0x32<<7 | 0x32, - 22009 - 19968: jis0208<<14 | 0x32<<7 | 0x37, - 22013 - 19968: jis0208<<14 | 0x32<<7 | 0x35, - 22014 - 19968: jis0208<<14 | 0x32<<7 | 0x34, - 22015 - 19968: jis0212<<14 | 0x15<<7 | 0x08, - 22021 - 19968: jis0212<<14 | 0x15<<7 | 0x09, - 22022 - 19968: jis0208<<14 | 0x22<<7 | 0x11, - 22024 - 19968: jis0212<<14 | 0x15<<7 | 0x0A, - 22025 - 19968: jis0208<<14 | 0x11<<7 | 0x24, - 22026 - 19968: jis0212<<14 | 0x15<<7 | 0x0B, - 22029 - 19968: jis0212<<14 | 0x15<<7 | 0x0C, - 22030 - 19968: jis0212<<14 | 0x15<<7 | 0x0D, - 22031 - 19968: jis0212<<14 | 0x15<<7 | 0x0E, - 22032 - 19968: jis0212<<14 | 0x15<<7 | 0x0F, - 22033 - 19968: jis0212<<14 | 0x15<<7 | 0x10, - 22034 - 19968: jis0212<<14 | 0x15<<7 | 0x11, - 22036 - 19968: jis0208<<14 | 0x32<<7 | 0x31, - 22038 - 19968: jis0208<<14 | 0x32<<7 | 0x33, - 22039 - 19968: jis0208<<14 | 0x1D<<7 | 0x07, - 22040 - 19968: jis0208<<14 | 0x10<<7 | 0x12, - 22041 - 19968: jis0212<<14 | 0x15<<7 | 0x12, - 22043 - 19968: jis0208<<14 | 0x32<<7 | 0x36, - 22057 - 19968: jis0208<<14 | 0x11<<7 | 0x3D, - 22060 - 19968: jis0212<<14 | 0x15<<7 | 0x13, - 22063 - 19968: jis0208<<14 | 0x32<<7 | 0x41, - 22064 - 19968: jis0212<<14 | 0x15<<7 | 0x14, - 22065 - 19968: jis0208<<14 | 0x1D<<7 | 0x5B, - 22066 - 19968: jis0208<<14 | 0x32<<7 | 0x3D, - 22067 - 19968: jis0212<<14 | 0x15<<7 | 0x15, - 22068 - 19968: jis0208<<14 | 0x32<<7 | 0x3B, - 22069 - 19968: jis0212<<14 | 0x15<<7 | 0x16, - 22070 - 19968: jis0208<<14 | 0x32<<7 | 0x3C, - 22071 - 19968: jis0212<<14 | 0x15<<7 | 0x17, - 22072 - 19968: jis0208<<14 | 0x32<<7 | 0x3E, - 22073 - 19968: jis0212<<14 | 0x15<<7 | 0x18, - 22075 - 19968: jis0212<<14 | 0x15<<7 | 0x19, - 22076 - 19968: jis0212<<14 | 0x15<<7 | 0x1A, - 22077 - 19968: jis0212<<14 | 0x15<<7 | 0x1B, - 22079 - 19968: jis0212<<14 | 0x15<<7 | 0x1C, - 22080 - 19968: jis0212<<14 | 0x15<<7 | 0x1D, - 22081 - 19968: jis0212<<14 | 0x15<<7 | 0x1E, - 22082 - 19968: jis0208<<14 | 0x10<<7 | 0x1C, - 22083 - 19968: jis0212<<14 | 0x15<<7 | 0x1F, - 22084 - 19968: jis0212<<14 | 0x15<<7 | 0x20, - 22086 - 19968: jis0212<<14 | 0x15<<7 | 0x21, - 22089 - 19968: jis0212<<14 | 0x15<<7 | 0x22, - 22091 - 19968: jis0212<<14 | 0x15<<7 | 0x23, - 22092 - 19968: jis0208<<14 | 0x20<<7 | 0x18, - 22093 - 19968: jis0212<<14 | 0x15<<7 | 0x24, - 22094 - 19968: jis0208<<14 | 0x32<<7 | 0x38, - 22095 - 19968: jis0212<<14 | 0x15<<7 | 0x25, - 22096 - 19968: jis0208<<14 | 0x32<<7 | 0x39, - 22100 - 19968: jis0212<<14 | 0x15<<7 | 0x26, - 22107 - 19968: jis0208<<14 | 0x12<<7 | 0x59, - 22110 - 19968: jis0212<<14 | 0x15<<7 | 0x27, - 22112 - 19968: jis0212<<14 | 0x15<<7 | 0x28, - 22113 - 19968: jis0212<<14 | 0x15<<7 | 0x29, - 22114 - 19968: jis0212<<14 | 0x15<<7 | 0x2A, - 22115 - 19968: jis0212<<14 | 0x15<<7 | 0x2B, - 22116 - 19968: jis0208<<14 | 0x32<<7 | 0x40, - 22118 - 19968: jis0212<<14 | 0x15<<7 | 0x2C, - 22120 - 19968: jis0208<<14 | 0x13<<7 | 0x4E, - 22121 - 19968: jis0212<<14 | 0x15<<7 | 0x2D, - 22122 - 19968: jis0208<<14 | 0x32<<7 | 0x43, - 22123 - 19968: jis0208<<14 | 0x32<<7 | 0x3F, - 22124 - 19968: jis0208<<14 | 0x32<<7 | 0x42, - 22125 - 19968: jis0212<<14 | 0x15<<7 | 0x2E, - 22127 - 19968: jis0212<<14 | 0x15<<7 | 0x2F, - 22129 - 19968: jis0212<<14 | 0x15<<7 | 0x30, - 22130 - 19968: jis0212<<14 | 0x15<<7 | 0x31, - 22132 - 19968: jis0208<<14 | 0x29<<7 | 0x0D, - 22133 - 19968: jis0212<<14 | 0x15<<7 | 0x32, - 22136 - 19968: jis0208<<14 | 0x25<<7 | 0x34, - 22138 - 19968: jis0208<<14 | 0x27<<7 | 0x17, - 22144 - 19968: jis0208<<14 | 0x32<<7 | 0x45, - 22148 - 19968: jis0212<<14 | 0x15<<7 | 0x33, - 22149 - 19968: jis0212<<14 | 0x15<<7 | 0x34, - 22150 - 19968: jis0208<<14 | 0x32<<7 | 0x44, - 22151 - 19968: jis0208<<14 | 0x12<<7 | 0x24, - 22152 - 19968: jis0212<<14 | 0x15<<7 | 0x35, - 22154 - 19968: jis0208<<14 | 0x32<<7 | 0x46, - 22155 - 19968: jis0212<<14 | 0x15<<7 | 0x36, - 22156 - 19968: jis0212<<14 | 0x15<<7 | 0x37, - 22159 - 19968: jis0208<<14 | 0x32<<7 | 0x49, - 22164 - 19968: jis0208<<14 | 0x32<<7 | 0x48, - 22165 - 19968: jis0212<<14 | 0x15<<7 | 0x38, - 22169 - 19968: jis0212<<14 | 0x15<<7 | 0x39, - 22170 - 19968: jis0212<<14 | 0x15<<7 | 0x3A, - 22173 - 19968: jis0212<<14 | 0x15<<7 | 0x3B, - 22174 - 19968: jis0212<<14 | 0x15<<7 | 0x3C, - 22175 - 19968: jis0212<<14 | 0x15<<7 | 0x3D, - 22176 - 19968: jis0208<<14 | 0x32<<7 | 0x47, - 22178 - 19968: jis0208<<14 | 0x26<<7 | 0x18, - 22181 - 19968: jis0208<<14 | 0x32<<7 | 0x4A, - 22182 - 19968: jis0212<<14 | 0x15<<7 | 0x3E, - 22183 - 19968: jis0212<<14 | 0x15<<7 | 0x3F, - 22184 - 19968: jis0212<<14 | 0x15<<7 | 0x40, - 22185 - 19968: jis0212<<14 | 0x15<<7 | 0x41, - 22187 - 19968: jis0212<<14 | 0x15<<7 | 0x42, - 22188 - 19968: jis0212<<14 | 0x15<<7 | 0x43, - 22189 - 19968: jis0212<<14 | 0x15<<7 | 0x44, - 22190 - 19968: jis0208<<14 | 0x32<<7 | 0x4B, - 22193 - 19968: jis0212<<14 | 0x15<<7 | 0x45, - 22195 - 19968: jis0212<<14 | 0x15<<7 | 0x46, - 22196 - 19968: jis0208<<14 | 0x32<<7 | 0x4D, - 22198 - 19968: jis0208<<14 | 0x32<<7 | 0x4C, - 22199 - 19968: jis0212<<14 | 0x15<<7 | 0x47, - 22204 - 19968: jis0208<<14 | 0x32<<7 | 0x4F, - 22206 - 19968: jis0212<<14 | 0x15<<7 | 0x48, - 22208 - 19968: jis0208<<14 | 0x32<<7 | 0x52, - 22209 - 19968: jis0208<<14 | 0x32<<7 | 0x50, - 22210 - 19968: jis0208<<14 | 0x32<<7 | 0x4E, - 22211 - 19968: jis0208<<14 | 0x32<<7 | 0x51, - 22213 - 19968: jis0212<<14 | 0x15<<7 | 0x49, - 22216 - 19968: jis0208<<14 | 0x32<<7 | 0x53, - 22217 - 19968: jis0212<<14 | 0x15<<7 | 0x4A, - 22218 - 19968: jis0212<<14 | 0x15<<7 | 0x4B, - 22219 - 19968: jis0212<<14 | 0x15<<7 | 0x4C, - 22220 - 19968: jis0212<<14 | 0x15<<7 | 0x4F, - 22221 - 19968: jis0212<<14 | 0x15<<7 | 0x50, - 22222 - 19968: jis0208<<14 | 0x32<<7 | 0x54, - 22223 - 19968: jis0212<<14 | 0x15<<7 | 0x4D, - 22224 - 19968: jis0212<<14 | 0x15<<7 | 0x4E, - 22225 - 19968: jis0208<<14 | 0x32<<7 | 0x55, - 22227 - 19968: jis0208<<14 | 0x32<<7 | 0x56, - 22231 - 19968: jis0208<<14 | 0x32<<7 | 0x57, - 22232 - 19968: jis0208<<14 | 0x30<<7 | 0x24, - 22233 - 19968: jis0212<<14 | 0x15<<7 | 0x51, - 22234 - 19968: jis0208<<14 | 0x1B<<7 | 0x5B, - 22235 - 19968: jis0208<<14 | 0x1A<<7 | 0x2C, - 22236 - 19968: jis0212<<14 | 0x15<<7 | 0x52, - 22237 - 19968: jis0212<<14 | 0x15<<7 | 0x53, - 22238 - 19968: jis0208<<14 | 0x11<<7 | 0x52, - 22239 - 19968: jis0212<<14 | 0x15<<7 | 0x54, - 22240 - 19968: jis0208<<14 | 0x0F<<7 | 0x57, - 22241 - 19968: jis0212<<14 | 0x15<<7 | 0x55, - 22243 - 19968: jis0208<<14 | 0x22<<7 | 0x23, - 22244 - 19968: jis0212<<14 | 0x15<<7 | 0x56, - 22245 - 19968: jis0212<<14 | 0x15<<7 | 0x57, - 22246 - 19968: jis0212<<14 | 0x15<<7 | 0x58, - 22247 - 19968: jis0212<<14 | 0x15<<7 | 0x59, - 22248 - 19968: jis0212<<14 | 0x15<<7 | 0x5A, - 22251 - 19968: jis0212<<14 | 0x15<<7 | 0x5C, - 22253 - 19968: jis0212<<14 | 0x15<<7 | 0x5D, - 22254 - 19968: jis0208<<14 | 0x32<<7 | 0x58, - 22256 - 19968: jis0208<<14 | 0x19<<7 | 0x03, - 22257 - 19968: jis0212<<14 | 0x15<<7 | 0x5B, - 22258 - 19968: jis0208<<14 | 0x0F<<7 | 0x2E, - 22259 - 19968: jis0208<<14 | 0x1E<<7 | 0x3D, - 22262 - 19968: jis0212<<14 | 0x16<<7 | 0x00, - 22263 - 19968: jis0212<<14 | 0x16<<7 | 0x01, - 22265 - 19968: jis0208<<14 | 0x32<<7 | 0x59, - 22266 - 19968: jis0208<<14 | 0x17<<7 | 0x26, - 22269 - 19968: jis0208<<14 | 0x18<<7 | 0x50, - 22271 - 19968: jis0208<<14 | 0x32<<7 | 0x5B, - 22272 - 19968: jis0208<<14 | 0x32<<7 | 0x5A, - 22273 - 19968: jis0212<<14 | 0x16<<7 | 0x02, - 22274 - 19968: jis0212<<14 | 0x16<<7 | 0x03, - 22275 - 19968: jis0208<<14 | 0x29<<7 | 0x3F, - 22276 - 19968: jis0208<<14 | 0x32<<7 | 0x5C, - 22279 - 19968: jis0212<<14 | 0x16<<7 | 0x04, - 22280 - 19968: jis0208<<14 | 0x33<<7 | 0x00, - 22281 - 19968: jis0208<<14 | 0x32<<7 | 0x5D, - 22282 - 19968: jis0212<<14 | 0x16<<7 | 0x05, - 22283 - 19968: jis0208<<14 | 0x33<<7 | 0x01, - 22284 - 19968: jis0212<<14 | 0x16<<7 | 0x06, - 22285 - 19968: jis0208<<14 | 0x33<<7 | 0x02, - 22287 - 19968: jis0208<<14 | 0x16<<7 | 0x56, - 22289 - 19968: jis0212<<14 | 0x16<<7 | 0x07, - 22290 - 19968: jis0208<<14 | 0x10<<7 | 0x3F, - 22291 - 19968: jis0208<<14 | 0x33<<7 | 0x03, - 22293 - 19968: jis0212<<14 | 0x16<<7 | 0x08, - 22294 - 19968: jis0208<<14 | 0x33<<7 | 0x05, - 22296 - 19968: jis0208<<14 | 0x33<<7 | 0x04, - 22298 - 19968: jis0212<<14 | 0x16<<7 | 0x09, - 22299 - 19968: jis0212<<14 | 0x16<<7 | 0x0A, - 22300 - 19968: jis0208<<14 | 0x33<<7 | 0x07, - 22301 - 19968: jis0212<<14 | 0x16<<7 | 0x0B, - 22303 - 19968: jis0208<<14 | 0x24<<7 | 0x39, - 22304 - 19968: jis0212<<14 | 0x16<<7 | 0x0C, - 22306 - 19968: jis0212<<14 | 0x16<<7 | 0x0D, - 22307 - 19968: jis0212<<14 | 0x16<<7 | 0x0E, - 22308 - 19968: jis0212<<14 | 0x16<<7 | 0x0F, - 22309 - 19968: jis0212<<14 | 0x16<<7 | 0x10, - 22310 - 19968: jis0208<<14 | 0x33<<7 | 0x08, - 22311 - 19968: jis0208<<14 | 0x0F<<7 | 0x14, - 22312 - 19968: jis0208<<14 | 0x19<<7 | 0x3E, - 22313 - 19968: jis0212<<14 | 0x16<<7 | 0x11, - 22314 - 19968: jis0212<<14 | 0x16<<7 | 0x12, - 22316 - 19968: jis0212<<14 | 0x16<<7 | 0x13, - 22317 - 19968: jis0208<<14 | 0x16<<7 | 0x1C, - 22318 - 19968: jis0212<<14 | 0x16<<7 | 0x14, - 22319 - 19968: jis0212<<14 | 0x16<<7 | 0x15, - 22320 - 19968: jis0208<<14 | 0x22<<7 | 0x2E, - 22323 - 19968: jis0212<<14 | 0x16<<7 | 0x16, - 22324 - 19968: jis0212<<14 | 0x16<<7 | 0x17, - 22327 - 19968: jis0208<<14 | 0x33<<7 | 0x09, - 22328 - 19968: jis0208<<14 | 0x33<<7 | 0x0A, - 22331 - 19968: jis0208<<14 | 0x33<<7 | 0x0C, - 22333 - 19968: jis0212<<14 | 0x16<<7 | 0x18, - 22334 - 19968: jis0212<<14 | 0x16<<7 | 0x19, - 22335 - 19968: jis0212<<14 | 0x16<<7 | 0x1A, - 22336 - 19968: jis0208<<14 | 0x33<<7 | 0x0D, - 22338 - 19968: jis0208<<14 | 0x19<<7 | 0x43, - 22341 - 19968: jis0212<<14 | 0x16<<7 | 0x1B, - 22342 - 19968: jis0212<<14 | 0x16<<7 | 0x1C, - 22343 - 19968: jis0208<<14 | 0x15<<7 | 0x30, - 22346 - 19968: jis0208<<14 | 0x2A<<7 | 0x16, - 22348 - 19968: jis0212<<14 | 0x16<<7 | 0x1D, - 22349 - 19968: jis0212<<14 | 0x16<<7 | 0x1E, - 22350 - 19968: jis0208<<14 | 0x33<<7 | 0x0B, - 22351 - 19968: jis0208<<14 | 0x33<<7 | 0x0E, - 22352 - 19968: jis0208<<14 | 0x19<<7 | 0x20, - 22353 - 19968: jis0208<<14 | 0x18<<7 | 0x02, - 22354 - 19968: jis0212<<14 | 0x16<<7 | 0x1F, - 22361 - 19968: jis0208<<14 | 0x58<<7 | 0x39, - 22369 - 19968: jis0208<<14 | 0x33<<7 | 0x12, - 22370 - 19968: jis0212<<14 | 0x16<<7 | 0x20, - 22372 - 19968: jis0208<<14 | 0x19<<7 | 0x04, - 22373 - 19968: jis0208<<14 | 0x58<<7 | 0x3A, - 22374 - 19968: jis0208<<14 | 0x22<<7 | 0x12, - 22375 - 19968: jis0212<<14 | 0x16<<7 | 0x22, - 22376 - 19968: jis0212<<14 | 0x16<<7 | 0x23, - 22377 - 19968: jis0208<<14 | 0x33<<7 | 0x0F, - 22378 - 19968: jis0208<<14 | 0x23<<7 | 0x39, - 22379 - 19968: jis0212<<14 | 0x16<<7 | 0x24, - 22381 - 19968: jis0212<<14 | 0x16<<7 | 0x25, - 22382 - 19968: jis0212<<14 | 0x16<<7 | 0x26, - 22383 - 19968: jis0212<<14 | 0x16<<7 | 0x27, - 22384 - 19968: jis0212<<14 | 0x16<<7 | 0x28, - 22385 - 19968: jis0212<<14 | 0x16<<7 | 0x29, - 22387 - 19968: jis0212<<14 | 0x16<<7 | 0x2A, - 22388 - 19968: jis0212<<14 | 0x16<<7 | 0x2B, - 22389 - 19968: jis0212<<14 | 0x16<<7 | 0x2C, - 22391 - 19968: jis0212<<14 | 0x16<<7 | 0x2D, - 22393 - 19968: jis0212<<14 | 0x16<<7 | 0x2E, - 22394 - 19968: jis0212<<14 | 0x16<<7 | 0x2F, - 22395 - 19968: jis0212<<14 | 0x16<<7 | 0x30, - 22396 - 19968: jis0212<<14 | 0x16<<7 | 0x31, - 22398 - 19968: jis0212<<14 | 0x16<<7 | 0x32, - 22399 - 19968: jis0208<<14 | 0x33<<7 | 0x13, - 22401 - 19968: jis0212<<14 | 0x16<<7 | 0x33, - 22402 - 19968: jis0208<<14 | 0x1E<<7 | 0x41, - 22403 - 19968: jis0212<<14 | 0x16<<7 | 0x34, - 22408 - 19968: jis0208<<14 | 0x33<<7 | 0x11, - 22409 - 19968: jis0208<<14 | 0x33<<7 | 0x14, - 22411 - 19968: jis0208<<14 | 0x16<<7 | 0x1E, - 22412 - 19968: jis0212<<14 | 0x16<<7 | 0x35, - 22419 - 19968: jis0208<<14 | 0x33<<7 | 0x15, - 22420 - 19968: jis0212<<14 | 0x16<<7 | 0x36, - 22421 - 19968: jis0212<<14 | 0x16<<7 | 0x3F, - 22423 - 19968: jis0212<<14 | 0x16<<7 | 0x37, - 22425 - 19968: jis0212<<14 | 0x16<<7 | 0x38, - 22426 - 19968: jis0212<<14 | 0x16<<7 | 0x39, - 22428 - 19968: jis0212<<14 | 0x16<<7 | 0x3A, - 22429 - 19968: jis0212<<14 | 0x16<<7 | 0x3B, - 22430 - 19968: jis0212<<14 | 0x16<<7 | 0x3C, - 22431 - 19968: jis0212<<14 | 0x16<<7 | 0x3D, - 22432 - 19968: jis0208<<14 | 0x33<<7 | 0x16, - 22433 - 19968: jis0212<<14 | 0x16<<7 | 0x3E, - 22434 - 19968: jis0208<<14 | 0x18<<7 | 0x03, - 22435 - 19968: jis0208<<14 | 0x12<<7 | 0x1F, - 22436 - 19968: jis0208<<14 | 0x33<<7 | 0x18, - 22439 - 19968: jis0212<<14 | 0x16<<7 | 0x40, - 22440 - 19968: jis0212<<14 | 0x16<<7 | 0x41, - 22441 - 19968: jis0212<<14 | 0x16<<7 | 0x42, - 22442 - 19968: jis0208<<14 | 0x33<<7 | 0x19, - 22444 - 19968: jis0208<<14 | 0x58<<7 | 0x3B, - 22448 - 19968: jis0208<<14 | 0x33<<7 | 0x1A, - 22451 - 19968: jis0208<<14 | 0x33<<7 | 0x17, - 22456 - 19968: jis0212<<14 | 0x16<<7 | 0x44, - 22461 - 19968: jis0212<<14 | 0x16<<7 | 0x45, - 22464 - 19968: jis0208<<14 | 0x33<<7 | 0x10, - 22467 - 19968: jis0208<<14 | 0x33<<7 | 0x1B, - 22470 - 19968: jis0208<<14 | 0x33<<7 | 0x1C, - 22471 - 19968: jis0208<<14 | 0x58<<7 | 0x3D, - 22472 - 19968: jis0208<<14 | 0x58<<7 | 0x3C, - 22475 - 19968: jis0208<<14 | 0x2A<<7 | 0x43, - 22476 - 19968: jis0212<<14 | 0x16<<7 | 0x48, - 22478 - 19968: jis0208<<14 | 0x1D<<7 | 0x4A, - 22479 - 19968: jis0212<<14 | 0x16<<7 | 0x49, - 22482 - 19968: jis0208<<14 | 0x33<<7 | 0x1E, - 22483 - 19968: jis0208<<14 | 0x33<<7 | 0x1F, - 22484 - 19968: jis0208<<14 | 0x33<<7 | 0x1D, - 22485 - 19968: jis0212<<14 | 0x16<<7 | 0x4A, - 22486 - 19968: jis0208<<14 | 0x33<<7 | 0x21, - 22492 - 19968: jis0208<<14 | 0x26<<7 | 0x17, - 22493 - 19968: jis0212<<14 | 0x16<<7 | 0x4B, - 22494 - 19968: jis0212<<14 | 0x16<<7 | 0x4C, - 22495 - 19968: jis0208<<14 | 0x0F<<7 | 0x47, - 22496 - 19968: jis0208<<14 | 0x28<<7 | 0x35, - 22497 - 19968: jis0212<<14 | 0x16<<7 | 0x5D, - 22499 - 19968: jis0208<<14 | 0x33<<7 | 0x22, - 22500 - 19968: jis0212<<14 | 0x16<<7 | 0x4D, - 22502 - 19968: jis0212<<14 | 0x16<<7 | 0x4E, - 22503 - 19968: jis0212<<14 | 0x16<<7 | 0x4F, - 22505 - 19968: jis0212<<14 | 0x16<<7 | 0x50, - 22509 - 19968: jis0212<<14 | 0x16<<7 | 0x51, - 22512 - 19968: jis0212<<14 | 0x16<<7 | 0x52, - 22516 - 19968: jis0208<<14 | 0x1D<<7 | 0x5C, - 22517 - 19968: jis0212<<14 | 0x16<<7 | 0x53, - 22518 - 19968: jis0212<<14 | 0x16<<7 | 0x54, - 22519 - 19968: jis0208<<14 | 0x1B<<7 | 0x18, - 22520 - 19968: jis0212<<14 | 0x16<<7 | 0x55, - 22521 - 19968: jis0208<<14 | 0x26<<7 | 0x3C, - 22522 - 19968: jis0208<<14 | 0x13<<7 | 0x4F, - 22524 - 19968: jis0208<<14 | 0x19<<7 | 0x4A, - 22525 - 19968: jis0212<<14 | 0x16<<7 | 0x56, - 22526 - 19968: jis0212<<14 | 0x16<<7 | 0x57, - 22527 - 19968: jis0212<<14 | 0x16<<7 | 0x58, - 22528 - 19968: jis0208<<14 | 0x2A<<7 | 0x38, - 22530 - 19968: jis0208<<14 | 0x25<<7 | 0x11, - 22531 - 19968: jis0212<<14 | 0x16<<7 | 0x59, - 22532 - 19968: jis0212<<14 | 0x16<<7 | 0x5A, - 22533 - 19968: jis0208<<14 | 0x16<<7 | 0x57, - 22534 - 19968: jis0208<<14 | 0x21<<7 | 0x2E, - 22536 - 19968: jis0212<<14 | 0x16<<7 | 0x5B, - 22537 - 19968: jis0212<<14 | 0x16<<7 | 0x5C, - 22538 - 19968: jis0208<<14 | 0x33<<7 | 0x20, - 22539 - 19968: jis0208<<14 | 0x33<<7 | 0x23, - 22540 - 19968: jis0212<<14 | 0x17<<7 | 0x00, - 22541 - 19968: jis0212<<14 | 0x17<<7 | 0x01, - 22549 - 19968: jis0208<<14 | 0x21<<7 | 0x23, - 22553 - 19968: jis0208<<14 | 0x33<<7 | 0x24, - 22555 - 19968: jis0212<<14 | 0x17<<7 | 0x02, - 22557 - 19968: jis0208<<14 | 0x33<<7 | 0x25, - 22558 - 19968: jis0212<<14 | 0x17<<7 | 0x03, - 22559 - 19968: jis0212<<14 | 0x17<<7 | 0x04, - 22560 - 19968: jis0212<<14 | 0x17<<7 | 0x05, - 22561 - 19968: jis0208<<14 | 0x33<<7 | 0x27, - 22564 - 19968: jis0208<<14 | 0x23<<7 | 0x48, - 22566 - 19968: jis0212<<14 | 0x17<<7 | 0x06, - 22567 - 19968: jis0212<<14 | 0x17<<7 | 0x07, - 22570 - 19968: jis0208<<14 | 0x13<<7 | 0x0D, - 22573 - 19968: jis0212<<14 | 0x17<<7 | 0x08, - 22575 - 19968: jis0208<<14 | 0x53<<7 | 0x00, - 22576 - 19968: jis0208<<14 | 0x10<<7 | 0x40, - 22577 - 19968: jis0208<<14 | 0x29<<7 | 0x52, - 22578 - 19968: jis0212<<14 | 0x17<<7 | 0x09, - 22580 - 19968: jis0208<<14 | 0x1D<<7 | 0x4B, - 22581 - 19968: jis0208<<14 | 0x24<<7 | 0x27, - 22585 - 19968: jis0212<<14 | 0x17<<7 | 0x0A, - 22586 - 19968: jis0208<<14 | 0x19<<7 | 0x45, - 22589 - 19968: jis0208<<14 | 0x33<<7 | 0x2D, - 22591 - 19968: jis0212<<14 | 0x17<<7 | 0x0B, - 22592 - 19968: jis0208<<14 | 0x29<<7 | 0x1C, - 22593 - 19968: jis0208<<14 | 0x2D<<7 | 0x3C, - 22601 - 19968: jis0212<<14 | 0x17<<7 | 0x0C, - 22602 - 19968: jis0208<<14 | 0x11<<7 | 0x53, - 22603 - 19968: jis0208<<14 | 0x33<<7 | 0x29, - 22604 - 19968: jis0212<<14 | 0x17<<7 | 0x0D, - 22605 - 19968: jis0212<<14 | 0x17<<7 | 0x0E, - 22607 - 19968: jis0212<<14 | 0x17<<7 | 0x0F, - 22608 - 19968: jis0212<<14 | 0x17<<7 | 0x10, - 22609 - 19968: jis0208<<14 | 0x20<<7 | 0x19, - 22610 - 19968: jis0208<<14 | 0x33<<7 | 0x2C, - 22612 - 19968: jis0208<<14 | 0x24<<7 | 0x42, - 22613 - 19968: jis0212<<14 | 0x17<<7 | 0x11, - 22615 - 19968: jis0208<<14 | 0x24<<7 | 0x28, - 22616 - 19968: jis0208<<14 | 0x24<<7 | 0x43, - 22617 - 19968: jis0208<<14 | 0x27<<7 | 0x18, - 22618 - 19968: jis0208<<14 | 0x23<<7 | 0x2C, - 22622 - 19968: jis0208<<14 | 0x19<<7 | 0x28, - 22623 - 19968: jis0212<<14 | 0x17<<7 | 0x12, - 22625 - 19968: jis0212<<14 | 0x17<<7 | 0x13, - 22626 - 19968: jis0208<<14 | 0x33<<7 | 0x28, - 22628 - 19968: jis0212<<14 | 0x17<<7 | 0x14, - 22631 - 19968: jis0212<<14 | 0x17<<7 | 0x15, - 22632 - 19968: jis0212<<14 | 0x17<<7 | 0x16, - 22633 - 19968: jis0208<<14 | 0x10<<7 | 0x55, - 22635 - 19968: jis0208<<14 | 0x24<<7 | 0x15, - 22640 - 19968: jis0208<<14 | 0x33<<7 | 0x2A, - 22642 - 19968: jis0208<<14 | 0x33<<7 | 0x26, - 22645 - 19968: jis0208<<14 | 0x1E<<7 | 0x2F, - 22648 - 19968: jis0212<<14 | 0x17<<7 | 0x17, - 22649 - 19968: jis0208<<14 | 0x33<<7 | 0x2E, - 22652 - 19968: jis0212<<14 | 0x17<<7 | 0x18, - 22654 - 19968: jis0208<<14 | 0x1C<<7 | 0x2D, - 22655 - 19968: jis0212<<14 | 0x17<<7 | 0x19, - 22656 - 19968: jis0212<<14 | 0x17<<7 | 0x1A, - 22657 - 19968: jis0212<<14 | 0x17<<7 | 0x1B, - 22659 - 19968: jis0208<<14 | 0x15<<7 | 0x0C, - 22661 - 19968: jis0208<<14 | 0x33<<7 | 0x2F, - 22663 - 19968: jis0212<<14 | 0x17<<7 | 0x1C, - 22664 - 19968: jis0212<<14 | 0x17<<7 | 0x1D, - 22665 - 19968: jis0212<<14 | 0x17<<7 | 0x1E, - 22666 - 19968: jis0212<<14 | 0x17<<7 | 0x1F, - 22668 - 19968: jis0212<<14 | 0x17<<7 | 0x20, - 22669 - 19968: jis0212<<14 | 0x17<<7 | 0x21, - 22671 - 19968: jis0212<<14 | 0x17<<7 | 0x22, - 22672 - 19968: jis0212<<14 | 0x17<<7 | 0x23, - 22675 - 19968: jis0208<<14 | 0x29<<7 | 0x47, - 22676 - 19968: jis0212<<14 | 0x17<<7 | 0x24, - 22678 - 19968: jis0212<<14 | 0x17<<7 | 0x25, - 22679 - 19968: jis0208<<14 | 0x20<<7 | 0x5C, - 22684 - 19968: jis0208<<14 | 0x23<<7 | 0x25, - 22685 - 19968: jis0212<<14 | 0x17<<7 | 0x26, - 22686 - 19968: jis0208<<14 | 0x58<<7 | 0x40, - 22687 - 19968: jis0208<<14 | 0x33<<7 | 0x31, - 22688 - 19968: jis0212<<14 | 0x17<<7 | 0x27, - 22689 - 19968: jis0212<<14 | 0x17<<7 | 0x28, - 22690 - 19968: jis0212<<14 | 0x17<<7 | 0x29, - 22694 - 19968: jis0212<<14 | 0x17<<7 | 0x2A, - 22696 - 19968: jis0208<<14 | 0x2A<<7 | 0x2E, - 22697 - 19968: jis0212<<14 | 0x17<<7 | 0x2B, - 22699 - 19968: jis0208<<14 | 0x33<<7 | 0x32, - 22702 - 19968: jis0208<<14 | 0x33<<7 | 0x37, - 22705 - 19968: jis0212<<14 | 0x17<<7 | 0x2C, - 22706 - 19968: jis0208<<14 | 0x58<<7 | 0x41, - 22707 - 19968: jis0208<<14 | 0x29<<7 | 0x0E, - 22712 - 19968: jis0208<<14 | 0x33<<7 | 0x36, - 22713 - 19968: jis0208<<14 | 0x33<<7 | 0x30, - 22714 - 19968: jis0208<<14 | 0x33<<7 | 0x33, - 22715 - 19968: jis0208<<14 | 0x33<<7 | 0x35, - 22716 - 19968: jis0212<<14 | 0x17<<7 | 0x2F, - 22718 - 19968: jis0208<<14 | 0x19<<7 | 0x05, - 22721 - 19968: jis0208<<14 | 0x29<<7 | 0x28, - 22722 - 19968: jis0212<<14 | 0x17<<7 | 0x30, - 22724 - 19968: jis0212<<14 | 0x17<<7 | 0x2E, - 22725 - 19968: jis0208<<14 | 0x33<<7 | 0x38, - 22727 - 19968: jis0208<<14 | 0x22<<7 | 0x24, - 22728 - 19968: jis0212<<14 | 0x17<<7 | 0x31, - 22730 - 19968: jis0208<<14 | 0x11<<7 | 0x54, - 22732 - 19968: jis0208<<14 | 0x1D<<7 | 0x4C, - 22733 - 19968: jis0212<<14 | 0x17<<7 | 0x32, - 22734 - 19968: jis0212<<14 | 0x17<<7 | 0x33, - 22736 - 19968: jis0212<<14 | 0x17<<7 | 0x34, - 22737 - 19968: jis0208<<14 | 0x33<<7 | 0x3A, - 22738 - 19968: jis0212<<14 | 0x17<<7 | 0x35, - 22739 - 19968: jis0208<<14 | 0x33<<7 | 0x39, - 22740 - 19968: jis0212<<14 | 0x17<<7 | 0x36, - 22741 - 19968: jis0208<<14 | 0x18<<7 | 0x47, - 22742 - 19968: jis0212<<14 | 0x17<<7 | 0x37, - 22743 - 19968: jis0208<<14 | 0x33<<7 | 0x3B, - 22744 - 19968: jis0208<<14 | 0x33<<7 | 0x3D, - 22745 - 19968: jis0208<<14 | 0x33<<7 | 0x3C, - 22746 - 19968: jis0212<<14 | 0x17<<7 | 0x38, - 22748 - 19968: jis0208<<14 | 0x33<<7 | 0x3F, - 22749 - 19968: jis0212<<14 | 0x17<<7 | 0x39, - 22750 - 19968: jis0208<<14 | 0x33<<7 | 0x34, - 22751 - 19968: jis0208<<14 | 0x33<<7 | 0x41, - 22753 - 19968: jis0212<<14 | 0x17<<7 | 0x3A, - 22754 - 19968: jis0212<<14 | 0x17<<7 | 0x3B, - 22756 - 19968: jis0208<<14 | 0x33<<7 | 0x40, - 22757 - 19968: jis0208<<14 | 0x33<<7 | 0x3E, - 22761 - 19968: jis0212<<14 | 0x17<<7 | 0x3C, - 22763 - 19968: jis0208<<14 | 0x1A<<7 | 0x2D, - 22764 - 19968: jis0208<<14 | 0x1E<<7 | 0x30, - 22766 - 19968: jis0208<<14 | 0x20<<7 | 0x33, - 22767 - 19968: jis0208<<14 | 0x33<<7 | 0x42, - 22768 - 19968: jis0208<<14 | 0x1F<<7 | 0x1B, - 22769 - 19968: jis0208<<14 | 0x0F<<7 | 0x4C, - 22770 - 19968: jis0208<<14 | 0x26<<7 | 0x43, - 22771 - 19968: jis0212<<14 | 0x17<<7 | 0x3D, - 22775 - 19968: jis0208<<14 | 0x23<<7 | 0x3A, - 22777 - 19968: jis0208<<14 | 0x33<<7 | 0x44, - 22778 - 19968: jis0208<<14 | 0x33<<7 | 0x43, - 22779 - 19968: jis0208<<14 | 0x33<<7 | 0x45, - 22780 - 19968: jis0208<<14 | 0x33<<7 | 0x46, - 22781 - 19968: jis0208<<14 | 0x33<<7 | 0x47, - 22786 - 19968: jis0208<<14 | 0x33<<7 | 0x48, - 22789 - 19968: jis0212<<14 | 0x17<<7 | 0x3E, - 22790 - 19968: jis0212<<14 | 0x17<<7 | 0x3F, - 22793 - 19968: jis0208<<14 | 0x29<<7 | 0x30, - 22794 - 19968: jis0208<<14 | 0x33<<7 | 0x49, - 22795 - 19968: jis0208<<14 | 0x58<<7 | 0x42, - 22796 - 19968: jis0212<<14 | 0x17<<7 | 0x41, - 22799 - 19968: jis0208<<14 | 0x11<<7 | 0x25, - 22800 - 19968: jis0208<<14 | 0x33<<7 | 0x4A, - 22802 - 19968: jis0212<<14 | 0x17<<7 | 0x42, - 22803 - 19968: jis0212<<14 | 0x17<<7 | 0x43, - 22804 - 19968: jis0212<<14 | 0x17<<7 | 0x44, - 22805 - 19968: jis0208<<14 | 0x2C<<7 | 0x1B, - 22806 - 19968: jis0208<<14 | 0x12<<7 | 0x0F, - 22808 - 19968: jis0208<<14 | 0x31<<7 | 0x28, - 22809 - 19968: jis0208<<14 | 0x1C<<7 | 0x27, - 22810 - 19968: jis0208<<14 | 0x21<<7 | 0x1E, - 22811 - 19968: jis0208<<14 | 0x33<<7 | 0x4B, - 22812 - 19968: jis0208<<14 | 0x2B<<7 | 0x4A, - 22813 - 19968: jis0212<<14 | 0x17<<7 | 0x46, - 22817 - 19968: jis0212<<14 | 0x17<<7 | 0x47, - 22818 - 19968: jis0208<<14 | 0x2B<<7 | 0x13, - 22819 - 19968: jis0212<<14 | 0x17<<7 | 0x48, - 22820 - 19968: jis0212<<14 | 0x17<<7 | 0x49, - 22821 - 19968: jis0208<<14 | 0x33<<7 | 0x4D, - 22823 - 19968: jis0208<<14 | 0x21<<7 | 0x46, - 22824 - 19968: jis0212<<14 | 0x17<<7 | 0x4A, - 22825 - 19968: jis0208<<14 | 0x24<<7 | 0x16, - 22826 - 19968: jis0208<<14 | 0x21<<7 | 0x1F, - 22827 - 19968: jis0208<<14 | 0x28<<7 | 0x36, - 22828 - 19968: jis0208<<14 | 0x33<<7 | 0x4E, - 22829 - 19968: jis0208<<14 | 0x33<<7 | 0x4F, - 22830 - 19968: jis0208<<14 | 0x10<<7 | 0x5A, - 22831 - 19968: jis0212<<14 | 0x17<<7 | 0x4B, - 22832 - 19968: jis0212<<14 | 0x17<<7 | 0x4C, - 22833 - 19968: jis0208<<14 | 0x1B<<7 | 0x19, - 22834 - 19968: jis0208<<14 | 0x33<<7 | 0x50, - 22835 - 19968: jis0212<<14 | 0x17<<7 | 0x4D, - 22837 - 19968: jis0212<<14 | 0x17<<7 | 0x4E, - 22838 - 19968: jis0212<<14 | 0x17<<7 | 0x4F, - 22839 - 19968: jis0208<<14 | 0x0F<<7 | 0x2F, - 22840 - 19968: jis0208<<14 | 0x33<<7 | 0x51, - 22846 - 19968: jis0208<<14 | 0x33<<7 | 0x52, - 22847 - 19968: jis0212<<14 | 0x17<<7 | 0x50, - 22851 - 19968: jis0212<<14 | 0x17<<7 | 0x51, - 22852 - 19968: jis0208<<14 | 0x10<<7 | 0x41, - 22854 - 19968: jis0212<<14 | 0x17<<7 | 0x52, - 22855 - 19968: jis0208<<14 | 0x13<<7 | 0x50, - 22856 - 19968: jis0208<<14 | 0x25<<7 | 0x3F, - 22857 - 19968: jis0208<<14 | 0x29<<7 | 0x53, - 22862 - 19968: jis0208<<14 | 0x33<<7 | 0x56, - 22863 - 19968: jis0208<<14 | 0x20<<7 | 0x34, - 22864 - 19968: jis0208<<14 | 0x33<<7 | 0x55, - 22865 - 19968: jis0208<<14 | 0x16<<7 | 0x1F, - 22866 - 19968: jis0212<<14 | 0x17<<7 | 0x53, - 22867 - 19968: jis0208<<14 | 0x58<<7 | 0x43, - 22868 - 19968: jis0208<<14 | 0x2A<<7 | 0x3A, - 22869 - 19968: jis0208<<14 | 0x33<<7 | 0x54, - 22871 - 19968: jis0208<<14 | 0x24<<7 | 0x44, - 22872 - 19968: jis0208<<14 | 0x33<<7 | 0x58, - 22873 - 19968: jis0212<<14 | 0x17<<7 | 0x55, - 22874 - 19968: jis0208<<14 | 0x33<<7 | 0x57, - 22875 - 19968: jis0208<<14 | 0x58<<7 | 0x44, - 22877 - 19968: jis0208<<14 | 0x58<<7 | 0x45, - 22878 - 19968: jis0212<<14 | 0x17<<7 | 0x58, - 22879 - 19968: jis0212<<14 | 0x17<<7 | 0x59, - 22880 - 19968: jis0208<<14 | 0x33<<7 | 0x5A, - 22881 - 19968: jis0212<<14 | 0x17<<7 | 0x5A, - 22882 - 19968: jis0208<<14 | 0x33<<7 | 0x59, - 22883 - 19968: jis0208<<14 | 0x58<<7 | 0x46, - 22885 - 19968: jis0208<<14 | 0x10<<7 | 0x5B, - 22887 - 19968: jis0208<<14 | 0x33<<7 | 0x5B, - 22888 - 19968: jis0208<<14 | 0x1D<<7 | 0x08, - 22889 - 19968: jis0208<<14 | 0x33<<7 | 0x5D, - 22890 - 19968: jis0208<<14 | 0x22<<7 | 0x04, - 22891 - 19968: jis0212<<14 | 0x17<<7 | 0x5C, - 22892 - 19968: jis0208<<14 | 0x33<<7 | 0x5C, - 22893 - 19968: jis0212<<14 | 0x17<<7 | 0x5D, - 22894 - 19968: jis0208<<14 | 0x29<<7 | 0x12, - 22895 - 19968: jis0212<<14 | 0x18<<7 | 0x00, - 22898 - 19968: jis0212<<14 | 0x18<<7 | 0x01, - 22899 - 19968: jis0208<<14 | 0x1C<<7 | 0x56, - 22900 - 19968: jis0208<<14 | 0x24<<7 | 0x3A, - 22901 - 19968: jis0212<<14 | 0x18<<7 | 0x02, - 22902 - 19968: jis0212<<14 | 0x18<<7 | 0x03, - 22904 - 19968: jis0208<<14 | 0x34<<7 | 0x00, - 22905 - 19968: jis0212<<14 | 0x18<<7 | 0x04, - 22907 - 19968: jis0212<<14 | 0x18<<7 | 0x05, - 22908 - 19968: jis0212<<14 | 0x18<<7 | 0x06, - 22909 - 19968: jis0208<<14 | 0x18<<7 | 0x04, - 22913 - 19968: jis0208<<14 | 0x34<<7 | 0x01, - 22914 - 19968: jis0208<<14 | 0x26<<7 | 0x00, - 22915 - 19968: jis0208<<14 | 0x27<<7 | 0x3D, - 22916 - 19968: jis0208<<14 | 0x2B<<7 | 0x30, - 22922 - 19968: jis0208<<14 | 0x26<<7 | 0x04, - 22923 - 19968: jis0212<<14 | 0x18<<7 | 0x07, - 22924 - 19968: jis0212<<14 | 0x18<<7 | 0x08, - 22925 - 19968: jis0208<<14 | 0x34<<7 | 0x0A, - 22926 - 19968: jis0212<<14 | 0x18<<7 | 0x09, - 22930 - 19968: jis0212<<14 | 0x18<<7 | 0x0A, - 22931 - 19968: jis0208<<14 | 0x14<<7 | 0x17, - 22933 - 19968: jis0212<<14 | 0x18<<7 | 0x0B, - 22934 - 19968: jis0208<<14 | 0x2C<<7 | 0x24, - 22935 - 19968: jis0212<<14 | 0x18<<7 | 0x0C, - 22937 - 19968: jis0208<<14 | 0x2B<<7 | 0x0E, - 22939 - 19968: jis0208<<14 | 0x35<<7 | 0x0B, - 22941 - 19968: jis0208<<14 | 0x34<<7 | 0x02, - 22943 - 19968: jis0212<<14 | 0x18<<7 | 0x0D, - 22947 - 19968: jis0208<<14 | 0x34<<7 | 0x05, - 22948 - 19968: jis0208<<14 | 0x58<<7 | 0x47, - 22949 - 19968: jis0208<<14 | 0x21<<7 | 0x24, - 22951 - 19968: jis0212<<14 | 0x18<<7 | 0x0F, - 22952 - 19968: jis0208<<14 | 0x2A<<7 | 0x17, - 22956 - 19968: jis0208<<14 | 0x24<<7 | 0x29, - 22957 - 19968: jis0212<<14 | 0x18<<7 | 0x10, - 22958 - 19968: jis0212<<14 | 0x18<<7 | 0x11, - 22959 - 19968: jis0212<<14 | 0x18<<7 | 0x12, - 22960 - 19968: jis0212<<14 | 0x18<<7 | 0x13, - 22962 - 19968: jis0208<<14 | 0x34<<7 | 0x06, - 22963 - 19968: jis0212<<14 | 0x18<<7 | 0x14, - 22967 - 19968: jis0212<<14 | 0x18<<7 | 0x15, - 22969 - 19968: jis0208<<14 | 0x2A<<7 | 0x44, - 22970 - 19968: jis0208<<14 | 0x58<<7 | 0x48, - 22971 - 19968: jis0208<<14 | 0x19<<7 | 0x29, - 22972 - 19968: jis0212<<14 | 0x18<<7 | 0x17, - 22974 - 19968: jis0208<<14 | 0x1D<<7 | 0x09, - 22977 - 19968: jis0212<<14 | 0x18<<7 | 0x18, - 22979 - 19968: jis0212<<14 | 0x18<<7 | 0x19, - 22980 - 19968: jis0212<<14 | 0x18<<7 | 0x1A, - 22982 - 19968: jis0208<<14 | 0x34<<7 | 0x07, - 22984 - 19968: jis0212<<14 | 0x18<<7 | 0x1B, - 22985 - 19968: jis0208<<14 | 0x1A<<7 | 0x2F, - 22986 - 19968: jis0212<<14 | 0x18<<7 | 0x1C, - 22987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2E, - 22989 - 19968: jis0212<<14 | 0x18<<7 | 0x1D, - 22992 - 19968: jis0208<<14 | 0x0F<<7 | 0x18, - 22993 - 19968: jis0208<<14 | 0x17<<7 | 0x27, - 22994 - 19968: jis0212<<14 | 0x18<<7 | 0x1E, - 22995 - 19968: jis0208<<14 | 0x1F<<7 | 0x0A, - 22996 - 19968: jis0208<<14 | 0x0F<<7 | 0x30, - 23001 - 19968: jis0208<<14 | 0x34<<7 | 0x0B, - 23002 - 19968: jis0208<<14 | 0x34<<7 | 0x0C, - 23004 - 19968: jis0208<<14 | 0x34<<7 | 0x09, - 23005 - 19968: jis0212<<14 | 0x18<<7 | 0x1F, - 23006 - 19968: jis0212<<14 | 0x18<<7 | 0x20, - 23007 - 19968: jis0212<<14 | 0x18<<7 | 0x21, - 23011 - 19968: jis0212<<14 | 0x18<<7 | 0x22, - 23012 - 19968: jis0212<<14 | 0x18<<7 | 0x23, - 23013 - 19968: jis0208<<14 | 0x10<<7 | 0x17, - 23014 - 19968: jis0208<<14 | 0x13<<7 | 0x0E, - 23015 - 19968: jis0212<<14 | 0x18<<7 | 0x24, - 23016 - 19968: jis0208<<14 | 0x34<<7 | 0x08, - 23018 - 19968: jis0208<<14 | 0x2B<<7 | 0x24, - 23019 - 19968: jis0208<<14 | 0x28<<7 | 0x10, - 23022 - 19968: jis0212<<14 | 0x18<<7 | 0x25, - 23023 - 19968: jis0212<<14 | 0x18<<7 | 0x26, - 23025 - 19968: jis0212<<14 | 0x18<<7 | 0x27, - 23026 - 19968: jis0212<<14 | 0x18<<7 | 0x28, - 23028 - 19968: jis0212<<14 | 0x18<<7 | 0x29, - 23030 - 19968: jis0208<<14 | 0x0F<<7 | 0x07, - 23031 - 19968: jis0212<<14 | 0x18<<7 | 0x2A, - 23035 - 19968: jis0208<<14 | 0x0F<<7 | 0x58, - 23039 - 19968: jis0208<<14 | 0x1A<<7 | 0x30, - 23040 - 19968: jis0212<<14 | 0x18<<7 | 0x2B, - 23041 - 19968: jis0208<<14 | 0x0F<<7 | 0x31, - 23043 - 19968: jis0208<<14 | 0x0F<<7 | 0x02, - 23044 - 19968: jis0212<<14 | 0x18<<7 | 0x2C, - 23049 - 19968: jis0208<<14 | 0x34<<7 | 0x11, - 23052 - 19968: jis0212<<14 | 0x18<<7 | 0x2D, - 23053 - 19968: jis0212<<14 | 0x18<<7 | 0x2E, - 23054 - 19968: jis0212<<14 | 0x18<<7 | 0x2F, - 23057 - 19968: jis0208<<14 | 0x34<<7 | 0x0F, - 23058 - 19968: jis0212<<14 | 0x18<<7 | 0x30, - 23059 - 19968: jis0212<<14 | 0x18<<7 | 0x31, - 23064 - 19968: jis0208<<14 | 0x2B<<7 | 0x1B, - 23066 - 19968: jis0208<<14 | 0x34<<7 | 0x12, - 23068 - 19968: jis0208<<14 | 0x34<<7 | 0x10, - 23070 - 19968: jis0212<<14 | 0x18<<7 | 0x32, - 23071 - 19968: jis0208<<14 | 0x34<<7 | 0x0E, - 23072 - 19968: jis0208<<14 | 0x1E<<7 | 0x10, - 23075 - 19968: jis0212<<14 | 0x18<<7 | 0x33, - 23076 - 19968: jis0212<<14 | 0x18<<7 | 0x34, - 23077 - 19968: jis0208<<14 | 0x34<<7 | 0x0D, - 23079 - 19968: jis0212<<14 | 0x18<<7 | 0x35, - 23080 - 19968: jis0212<<14 | 0x18<<7 | 0x36, - 23081 - 19968: jis0208<<14 | 0x29<<7 | 0x39, - 23082 - 19968: jis0212<<14 | 0x18<<7 | 0x37, - 23085 - 19968: jis0212<<14 | 0x18<<7 | 0x38, - 23087 - 19968: jis0208<<14 | 0x17<<7 | 0x43, - 23088 - 19968: jis0212<<14 | 0x18<<7 | 0x39, - 23093 - 19968: jis0208<<14 | 0x34<<7 | 0x16, - 23094 - 19968: jis0208<<14 | 0x34<<7 | 0x17, - 23100 - 19968: jis0208<<14 | 0x1D<<7 | 0x0A, - 23104 - 19968: jis0208<<14 | 0x34<<7 | 0x13, - 23105 - 19968: jis0208<<14 | 0x2E<<7 | 0x0B, - 23108 - 19968: jis0212<<14 | 0x18<<7 | 0x3A, - 23109 - 19968: jis0212<<14 | 0x18<<7 | 0x3B, - 23110 - 19968: jis0208<<14 | 0x26<<7 | 0x2B, - 23111 - 19968: jis0212<<14 | 0x18<<7 | 0x3C, - 23112 - 19968: jis0212<<14 | 0x18<<7 | 0x3D, - 23113 - 19968: jis0208<<14 | 0x34<<7 | 0x15, - 23116 - 19968: jis0212<<14 | 0x18<<7 | 0x3E, - 23120 - 19968: jis0212<<14 | 0x18<<7 | 0x3F, - 23125 - 19968: jis0212<<14 | 0x18<<7 | 0x40, - 23130 - 19968: jis0208<<14 | 0x19<<7 | 0x06, - 23134 - 19968: jis0212<<14 | 0x18<<7 | 0x41, - 23138 - 19968: jis0208<<14 | 0x34<<7 | 0x18, - 23139 - 19968: jis0212<<14 | 0x18<<7 | 0x42, - 23141 - 19968: jis0212<<14 | 0x18<<7 | 0x43, - 23142 - 19968: jis0208<<14 | 0x28<<7 | 0x37, - 23143 - 19968: jis0212<<14 | 0x18<<7 | 0x44, - 23146 - 19968: jis0208<<14 | 0x34<<7 | 0x19, - 23148 - 19968: jis0208<<14 | 0x34<<7 | 0x14, - 23149 - 19968: jis0212<<14 | 0x18<<7 | 0x45, - 23159 - 19968: jis0212<<14 | 0x18<<7 | 0x46, - 23162 - 19968: jis0212<<14 | 0x18<<7 | 0x47, - 23163 - 19968: jis0212<<14 | 0x18<<7 | 0x48, - 23166 - 19968: jis0212<<14 | 0x18<<7 | 0x49, - 23167 - 19968: jis0208<<14 | 0x2B<<7 | 0x1A, - 23179 - 19968: jis0212<<14 | 0x18<<7 | 0x4A, - 23184 - 19968: jis0212<<14 | 0x18<<7 | 0x4B, - 23186 - 19968: jis0208<<14 | 0x26<<7 | 0x3D, - 23187 - 19968: jis0212<<14 | 0x18<<7 | 0x4C, - 23190 - 19968: jis0212<<14 | 0x18<<7 | 0x4D, - 23193 - 19968: jis0212<<14 | 0x18<<7 | 0x4E, - 23194 - 19968: jis0208<<14 | 0x34<<7 | 0x1A, - 23195 - 19968: jis0208<<14 | 0x28<<7 | 0x11, - 23196 - 19968: jis0212<<14 | 0x18<<7 | 0x4F, - 23198 - 19968: jis0212<<14 | 0x18<<7 | 0x50, - 23199 - 19968: jis0212<<14 | 0x18<<7 | 0x51, - 23200 - 19968: jis0212<<14 | 0x18<<7 | 0x52, - 23202 - 19968: jis0212<<14 | 0x18<<7 | 0x53, - 23207 - 19968: jis0212<<14 | 0x18<<7 | 0x54, - 23212 - 19968: jis0212<<14 | 0x18<<7 | 0x55, - 23217 - 19968: jis0212<<14 | 0x18<<7 | 0x56, - 23218 - 19968: jis0212<<14 | 0x18<<7 | 0x57, - 23219 - 19968: jis0212<<14 | 0x18<<7 | 0x58, - 23221 - 19968: jis0212<<14 | 0x18<<7 | 0x59, - 23224 - 19968: jis0212<<14 | 0x18<<7 | 0x5A, - 23226 - 19968: jis0212<<14 | 0x18<<7 | 0x5B, - 23227 - 19968: jis0212<<14 | 0x18<<7 | 0x5C, - 23228 - 19968: jis0208<<14 | 0x34<<7 | 0x1B, - 23229 - 19968: jis0208<<14 | 0x34<<7 | 0x1F, - 23230 - 19968: jis0208<<14 | 0x34<<7 | 0x1C, - 23231 - 19968: jis0212<<14 | 0x18<<7 | 0x5D, - 23233 - 19968: jis0208<<14 | 0x11<<7 | 0x26, - 23234 - 19968: jis0208<<14 | 0x34<<7 | 0x1E, - 23236 - 19968: jis0212<<14 | 0x19<<7 | 0x00, - 23238 - 19968: jis0212<<14 | 0x19<<7 | 0x01, - 23240 - 19968: jis0212<<14 | 0x19<<7 | 0x02, - 23241 - 19968: jis0208<<14 | 0x1B<<7 | 0x1A, - 23243 - 19968: jis0208<<14 | 0x34<<7 | 0x1D, - 23244 - 19968: jis0208<<14 | 0x16<<7 | 0x58, - 23247 - 19968: jis0212<<14 | 0x19<<7 | 0x03, - 23248 - 19968: jis0208<<14 | 0x34<<7 | 0x2B, - 23254 - 19968: jis0208<<14 | 0x34<<7 | 0x24, - 23255 - 19968: jis0208<<14 | 0x34<<7 | 0x21, - 23258 - 19968: jis0212<<14 | 0x19<<7 | 0x04, - 23260 - 19968: jis0212<<14 | 0x19<<7 | 0x05, - 23264 - 19968: jis0212<<14 | 0x19<<7 | 0x06, - 23265 - 19968: jis0208<<14 | 0x22<<7 | 0x43, - 23267 - 19968: jis0208<<14 | 0x34<<7 | 0x20, - 23269 - 19968: jis0212<<14 | 0x19<<7 | 0x07, - 23270 - 19968: jis0208<<14 | 0x34<<7 | 0x22, - 23273 - 19968: jis0208<<14 | 0x34<<7 | 0x23, - 23274 - 19968: jis0212<<14 | 0x19<<7 | 0x08, - 23278 - 19968: jis0212<<14 | 0x19<<7 | 0x09, - 23285 - 19968: jis0212<<14 | 0x19<<7 | 0x0A, - 23286 - 19968: jis0212<<14 | 0x19<<7 | 0x0B, - 23290 - 19968: jis0208<<14 | 0x34<<7 | 0x25, - 23291 - 19968: jis0208<<14 | 0x34<<7 | 0x26, - 23293 - 19968: jis0212<<14 | 0x19<<7 | 0x0C, - 23296 - 19968: jis0212<<14 | 0x19<<7 | 0x0D, - 23297 - 19968: jis0212<<14 | 0x19<<7 | 0x0E, - 23304 - 19968: jis0212<<14 | 0x19<<7 | 0x0F, - 23305 - 19968: jis0208<<14 | 0x13<<7 | 0x51, - 23307 - 19968: jis0208<<14 | 0x34<<7 | 0x28, - 23308 - 19968: jis0208<<14 | 0x34<<7 | 0x27, - 23318 - 19968: jis0208<<14 | 0x34<<7 | 0x29, - 23319 - 19968: jis0212<<14 | 0x19<<7 | 0x10, - 23321 - 19968: jis0212<<14 | 0x19<<7 | 0x12, - 23323 - 19968: jis0212<<14 | 0x19<<7 | 0x13, - 23325 - 19968: jis0212<<14 | 0x19<<7 | 0x14, - 23329 - 19968: jis0212<<14 | 0x19<<7 | 0x15, - 23330 - 19968: jis0208<<14 | 0x1D<<7 | 0x4D, - 23333 - 19968: jis0212<<14 | 0x19<<7 | 0x16, - 23338 - 19968: jis0208<<14 | 0x34<<7 | 0x2C, - 23340 - 19968: jis0208<<14 | 0x23<<7 | 0x3B, - 23341 - 19968: jis0212<<14 | 0x19<<7 | 0x17, - 23344 - 19968: jis0208<<14 | 0x10<<7 | 0x24, - 23346 - 19968: jis0208<<14 | 0x34<<7 | 0x2A, - 23348 - 19968: jis0212<<14 | 0x19<<7 | 0x11, - 23350 - 19968: jis0208<<14 | 0x34<<7 | 0x2D, - 23352 - 19968: jis0212<<14 | 0x19<<7 | 0x18, - 23358 - 19968: jis0208<<14 | 0x34<<7 | 0x2E, - 23360 - 19968: jis0208<<14 | 0x34<<7 | 0x31, - 23361 - 19968: jis0212<<14 | 0x19<<7 | 0x19, - 23363 - 19968: jis0208<<14 | 0x34<<7 | 0x2F, - 23365 - 19968: jis0208<<14 | 0x34<<7 | 0x30, - 23371 - 19968: jis0212<<14 | 0x19<<7 | 0x1A, - 23372 - 19968: jis0212<<14 | 0x19<<7 | 0x1B, - 23376 - 19968: jis0208<<14 | 0x1A<<7 | 0x31, - 23377 - 19968: jis0208<<14 | 0x34<<7 | 0x32, - 23378 - 19968: jis0212<<14 | 0x19<<7 | 0x1C, - 23380 - 19968: jis0208<<14 | 0x18<<7 | 0x05, - 23381 - 19968: jis0208<<14 | 0x34<<7 | 0x33, - 23382 - 19968: jis0208<<14 | 0x58<<7 | 0x49, - 23383 - 19968: jis0208<<14 | 0x1A<<7 | 0x59, - 23384 - 19968: jis0208<<14 | 0x21<<7 | 0x17, - 23386 - 19968: jis0208<<14 | 0x34<<7 | 0x34, - 23387 - 19968: jis0208<<14 | 0x34<<7 | 0x35, - 23388 - 19968: jis0208<<14 | 0x1A<<7 | 0x39, - 23389 - 19968: jis0208<<14 | 0x18<<7 | 0x06, - 23390 - 19968: jis0212<<14 | 0x19<<7 | 0x1E, - 23391 - 19968: jis0208<<14 | 0x2B<<7 | 0x31, - 23395 - 19968: jis0208<<14 | 0x14<<7 | 0x07, - 23396 - 19968: jis0208<<14 | 0x17<<7 | 0x28, - 23397 - 19968: jis0208<<14 | 0x34<<7 | 0x36, - 23398 - 19968: jis0208<<14 | 0x12<<7 | 0x37, - 23400 - 19968: jis0212<<14 | 0x19<<7 | 0x1F, - 23401 - 19968: jis0208<<14 | 0x34<<7 | 0x37, - 23403 - 19968: jis0208<<14 | 0x21<<7 | 0x18, - 23406 - 19968: jis0212<<14 | 0x19<<7 | 0x20, - 23407 - 19968: jis0212<<14 | 0x19<<7 | 0x21, - 23408 - 19968: jis0208<<14 | 0x34<<7 | 0x38, - 23409 - 19968: jis0208<<14 | 0x35<<7 | 0x02, - 23411 - 19968: jis0208<<14 | 0x34<<7 | 0x39, - 23413 - 19968: jis0208<<14 | 0x34<<7 | 0x3A, - 23416 - 19968: jis0208<<14 | 0x34<<7 | 0x3B, - 23418 - 19968: jis0208<<14 | 0x34<<7 | 0x3D, - 23420 - 19968: jis0212<<14 | 0x19<<7 | 0x22, - 23421 - 19968: jis0212<<14 | 0x19<<7 | 0x23, - 23422 - 19968: jis0212<<14 | 0x19<<7 | 0x24, - 23423 - 19968: jis0212<<14 | 0x19<<7 | 0x25, - 23424 - 19968: jis0208<<14 | 0x34<<7 | 0x3E, - 23425 - 19968: jis0212<<14 | 0x19<<7 | 0x26, - 23427 - 19968: jis0208<<14 | 0x34<<7 | 0x3F, - 23428 - 19968: jis0212<<14 | 0x19<<7 | 0x27, - 23429 - 19968: jis0208<<14 | 0x21<<7 | 0x4F, - 23430 - 19968: jis0212<<14 | 0x19<<7 | 0x28, - 23431 - 19968: jis0208<<14 | 0x10<<7 | 0x06, - 23432 - 19968: jis0208<<14 | 0x1B<<7 | 0x48, - 23433 - 19968: jis0208<<14 | 0x0F<<7 | 0x21, - 23434 - 19968: jis0212<<14 | 0x19<<7 | 0x29, - 23435 - 19968: jis0208<<14 | 0x20<<7 | 0x36, - 23436 - 19968: jis0208<<14 | 0x13<<7 | 0x0F, - 23437 - 19968: jis0208<<14 | 0x1B<<7 | 0x14, - 23438 - 19968: jis0212<<14 | 0x19<<7 | 0x2A, - 23439 - 19968: jis0208<<14 | 0x18<<7 | 0x07, - 23440 - 19968: jis0212<<14 | 0x19<<7 | 0x2B, - 23441 - 19968: jis0212<<14 | 0x19<<7 | 0x2C, - 23443 - 19968: jis0212<<14 | 0x19<<7 | 0x2D, - 23444 - 19968: jis0212<<14 | 0x19<<7 | 0x2E, - 23445 - 19968: jis0208<<14 | 0x24<<7 | 0x45, - 23446 - 19968: jis0212<<14 | 0x19<<7 | 0x2F, - 23447 - 19968: jis0208<<14 | 0x1C<<7 | 0x00, - 23448 - 19968: jis0208<<14 | 0x13<<7 | 0x10, - 23449 - 19968: jis0208<<14 | 0x22<<7 | 0x47, - 23450 - 19968: jis0208<<14 | 0x23<<7 | 0x49, - 23451 - 19968: jis0208<<14 | 0x0F<<7 | 0x17, - 23452 - 19968: jis0208<<14 | 0x14<<7 | 0x18, - 23453 - 19968: jis0208<<14 | 0x29<<7 | 0x54, - 23455 - 19968: jis0208<<14 | 0x1B<<7 | 0x21, - 23458 - 19968: jis0208<<14 | 0x14<<7 | 0x31, - 23459 - 19968: jis0208<<14 | 0x1F<<7 | 0x4A, - 23460 - 19968: jis0208<<14 | 0x1B<<7 | 0x1B, - 23461 - 19968: jis0208<<14 | 0x2C<<7 | 0x07, - 23462 - 19968: jis0208<<14 | 0x34<<7 | 0x40, - 23464 - 19968: jis0212<<14 | 0x19<<7 | 0x30, - 23465 - 19968: jis0212<<14 | 0x19<<7 | 0x31, - 23468 - 19968: jis0212<<14 | 0x19<<7 | 0x32, - 23469 - 19968: jis0212<<14 | 0x19<<7 | 0x33, - 23470 - 19968: jis0208<<14 | 0x14<<7 | 0x3B, - 23471 - 19968: jis0212<<14 | 0x19<<7 | 0x34, - 23472 - 19968: jis0208<<14 | 0x19<<7 | 0x2A, - 23473 - 19968: jis0212<<14 | 0x19<<7 | 0x35, - 23474 - 19968: jis0212<<14 | 0x19<<7 | 0x36, - 23475 - 19968: jis0208<<14 | 0x12<<7 | 0x11, - 23476 - 19968: jis0208<<14 | 0x10<<7 | 0x42, - 23477 - 19968: jis0208<<14 | 0x1D<<7 | 0x0B, - 23478 - 19968: jis0208<<14 | 0x11<<7 | 0x27, - 23479 - 19968: jis0212<<14 | 0x19<<7 | 0x37, - 23480 - 19968: jis0208<<14 | 0x34<<7 | 0x41, - 23481 - 19968: jis0208<<14 | 0x2C<<7 | 0x25, - 23482 - 19968: jis0212<<14 | 0x19<<7 | 0x38, - 23484 - 19968: jis0212<<14 | 0x19<<7 | 0x39, - 23487 - 19968: jis0208<<14 | 0x1C<<7 | 0x28, - 23488 - 19968: jis0208<<14 | 0x58<<7 | 0x4A, - 23489 - 19968: jis0212<<14 | 0x19<<7 | 0x3B, - 23490 - 19968: jis0208<<14 | 0x1B<<7 | 0x43, - 23491 - 19968: jis0208<<14 | 0x34<<7 | 0x42, - 23492 - 19968: jis0208<<14 | 0x13<<7 | 0x52, - 23493 - 19968: jis0208<<14 | 0x25<<7 | 0x31, - 23494 - 19968: jis0208<<14 | 0x2B<<7 | 0x08, - 23495 - 19968: jis0208<<14 | 0x34<<7 | 0x43, - 23497 - 19968: jis0208<<14 | 0x34<<7 | 0x44, - 23500 - 19968: jis0208<<14 | 0x28<<7 | 0x38, - 23501 - 19968: jis0212<<14 | 0x19<<7 | 0x3C, - 23503 - 19968: jis0212<<14 | 0x19<<7 | 0x3D, - 23504 - 19968: jis0208<<14 | 0x34<<7 | 0x46, - 23506 - 19968: jis0208<<14 | 0x13<<7 | 0x07, - 23507 - 19968: jis0208<<14 | 0x15<<7 | 0x56, - 23508 - 19968: jis0208<<14 | 0x34<<7 | 0x45, - 23510 - 19968: jis0212<<14 | 0x19<<7 | 0x3E, - 23511 - 19968: jis0212<<14 | 0x19<<7 | 0x3F, - 23512 - 19968: jis0208<<14 | 0x58<<7 | 0x4C, - 23513 - 19968: jis0212<<14 | 0x19<<7 | 0x41, - 23514 - 19968: jis0212<<14 | 0x19<<7 | 0x42, - 23515 - 19968: jis0208<<14 | 0x13<<7 | 0x11, - 23517 - 19968: jis0208<<14 | 0x1E<<7 | 0x11, - 23518 - 19968: jis0208<<14 | 0x34<<7 | 0x4A, - 23519 - 19968: jis0208<<14 | 0x1A<<7 | 0x00, - 23520 - 19968: jis0212<<14 | 0x19<<7 | 0x43, - 23521 - 19968: jis0208<<14 | 0x11<<7 | 0x28, - 23522 - 19968: jis0208<<14 | 0x34<<7 | 0x49, - 23524 - 19968: jis0208<<14 | 0x34<<7 | 0x47, - 23525 - 19968: jis0208<<14 | 0x34<<7 | 0x4B, - 23526 - 19968: jis0208<<14 | 0x34<<7 | 0x48, - 23527 - 19968: jis0208<<14 | 0x26<<7 | 0x0A, - 23528 - 19968: jis0208<<14 | 0x3B<<7 | 0x2C, - 23529 - 19968: jis0208<<14 | 0x1E<<7 | 0x12, - 23531 - 19968: jis0208<<14 | 0x34<<7 | 0x4C, - 23532 - 19968: jis0208<<14 | 0x58<<7 | 0x4D, - 23534 - 19968: jis0208<<14 | 0x2D<<7 | 0x1F, - 23535 - 19968: jis0212<<14 | 0x19<<7 | 0x44, - 23536 - 19968: jis0208<<14 | 0x34<<7 | 0x4D, - 23537 - 19968: jis0212<<14 | 0x19<<7 | 0x45, - 23539 - 19968: jis0208<<14 | 0x34<<7 | 0x4F, - 23540 - 19968: jis0212<<14 | 0x19<<7 | 0x46, - 23541 - 19968: jis0208<<14 | 0x22<<7 | 0x5D, - 23542 - 19968: jis0208<<14 | 0x34<<7 | 0x4E, - 23544 - 19968: jis0208<<14 | 0x1F<<7 | 0x02, - 23546 - 19968: jis0208<<14 | 0x1A<<7 | 0x5A, - 23549 - 19968: jis0212<<14 | 0x19<<7 | 0x47, - 23550 - 19968: jis0208<<14 | 0x21<<7 | 0x2F, - 23551 - 19968: jis0208<<14 | 0x1B<<7 | 0x56, - 23553 - 19968: jis0208<<14 | 0x28<<7 | 0x54, - 23554 - 19968: jis0208<<14 | 0x1F<<7 | 0x4B, - 23556 - 19968: jis0208<<14 | 0x1B<<7 | 0x2C, - 23557 - 19968: jis0208<<14 | 0x34<<7 | 0x50, - 23558 - 19968: jis0208<<14 | 0x1D<<7 | 0x0C, - 23559 - 19968: jis0208<<14 | 0x34<<7 | 0x51, - 23560 - 19968: jis0208<<14 | 0x34<<7 | 0x52, - 23561 - 19968: jis0208<<14 | 0x0F<<7 | 0x32, - 23562 - 19968: jis0208<<14 | 0x21<<7 | 0x19, - 23563 - 19968: jis0208<<14 | 0x1E<<7 | 0x31, - 23564 - 19968: jis0212<<14 | 0x19<<7 | 0x48, - 23565 - 19968: jis0208<<14 | 0x34<<7 | 0x53, - 23566 - 19968: jis0208<<14 | 0x25<<7 | 0x12, - 23567 - 19968: jis0208<<14 | 0x1D<<7 | 0x0D, - 23569 - 19968: jis0208<<14 | 0x1D<<7 | 0x0E, - 23571 - 19968: jis0208<<14 | 0x34<<7 | 0x54, - 23574 - 19968: jis0208<<14 | 0x1F<<7 | 0x4C, - 23575 - 19968: jis0212<<14 | 0x19<<7 | 0x49, - 23578 - 19968: jis0208<<14 | 0x1D<<7 | 0x0F, - 23582 - 19968: jis0208<<14 | 0x58<<7 | 0x4E, - 23583 - 19968: jis0212<<14 | 0x19<<7 | 0x4B, - 23584 - 19968: jis0208<<14 | 0x34<<7 | 0x55, - 23586 - 19968: jis0208<<14 | 0x34<<7 | 0x56, - 23587 - 19968: jis0212<<14 | 0x19<<7 | 0x4C, - 23588 - 19968: jis0208<<14 | 0x2B<<7 | 0x3F, - 23590 - 19968: jis0212<<14 | 0x19<<7 | 0x4D, - 23592 - 19968: jis0208<<14 | 0x34<<7 | 0x57, - 23593 - 19968: jis0212<<14 | 0x19<<7 | 0x4E, - 23595 - 19968: jis0212<<14 | 0x19<<7 | 0x4F, - 23596 - 19968: jis0212<<14 | 0x19<<7 | 0x50, - 23597 - 19968: jis0208<<14 | 0x15<<7 | 0x25, - 23598 - 19968: jis0212<<14 | 0x19<<7 | 0x51, - 23600 - 19968: jis0212<<14 | 0x19<<7 | 0x52, - 23601 - 19968: jis0208<<14 | 0x1C<<7 | 0x01, - 23602 - 19968: jis0212<<14 | 0x19<<7 | 0x53, - 23605 - 19968: jis0212<<14 | 0x19<<7 | 0x54, - 23606 - 19968: jis0212<<14 | 0x19<<7 | 0x55, - 23608 - 19968: jis0208<<14 | 0x34<<7 | 0x58, - 23609 - 19968: jis0208<<14 | 0x34<<7 | 0x59, - 23610 - 19968: jis0208<<14 | 0x1B<<7 | 0x3B, - 23611 - 19968: jis0208<<14 | 0x1E<<7 | 0x0B, - 23612 - 19968: jis0208<<14 | 0x25<<7 | 0x53, - 23613 - 19968: jis0208<<14 | 0x1E<<7 | 0x33, - 23614 - 19968: jis0208<<14 | 0x27<<7 | 0x57, - 23615 - 19968: jis0208<<14 | 0x26<<7 | 0x01, - 23616 - 19968: jis0208<<14 | 0x15<<7 | 0x28, - 23617 - 19968: jis0208<<14 | 0x34<<7 | 0x5A, - 23621 - 19968: jis0208<<14 | 0x14<<7 | 0x4E, - 23622 - 19968: jis0208<<14 | 0x34<<7 | 0x5B, - 23624 - 19968: jis0208<<14 | 0x15<<7 | 0x5D, - 23626 - 19968: jis0208<<14 | 0x25<<7 | 0x2E, - 23627 - 19968: jis0208<<14 | 0x11<<7 | 0x0F, - 23629 - 19968: jis0208<<14 | 0x1A<<7 | 0x32, - 23630 - 19968: jis0208<<14 | 0x34<<7 | 0x5C, - 23631 - 19968: jis0208<<14 | 0x35<<7 | 0x01, - 23632 - 19968: jis0208<<14 | 0x35<<7 | 0x00, - 23633 - 19968: jis0208<<14 | 0x15<<7 | 0x5C, - 23635 - 19968: jis0208<<14 | 0x34<<7 | 0x5D, - 23637 - 19968: jis0208<<14 | 0x24<<7 | 0x17, - 23641 - 19968: jis0212<<14 | 0x19<<7 | 0x56, - 23642 - 19968: jis0212<<14 | 0x19<<7 | 0x57, - 23644 - 19968: jis0212<<14 | 0x19<<7 | 0x58, - 23646 - 19968: jis0208<<14 | 0x21<<7 | 0x0F, - 23648 - 19968: jis0208<<14 | 0x24<<7 | 0x2A, - 23649 - 19968: jis0208<<14 | 0x1B<<7 | 0x27, - 23650 - 19968: jis0212<<14 | 0x19<<7 | 0x59, - 23651 - 19968: jis0212<<14 | 0x19<<7 | 0x5A, - 23652 - 19968: jis0208<<14 | 0x20<<7 | 0x37, - 23653 - 19968: jis0208<<14 | 0x2C<<7 | 0x59, - 23655 - 19968: jis0212<<14 | 0x19<<7 | 0x5B, - 23656 - 19968: jis0212<<14 | 0x19<<7 | 0x5C, - 23657 - 19968: jis0212<<14 | 0x19<<7 | 0x5D, - 23660 - 19968: jis0208<<14 | 0x35<<7 | 0x03, - 23661 - 19968: jis0212<<14 | 0x1A<<7 | 0x00, - 23662 - 19968: jis0208<<14 | 0x35<<7 | 0x04, - 23663 - 19968: jis0208<<14 | 0x25<<7 | 0x35, - 23664 - 19968: jis0212<<14 | 0x1A<<7 | 0x01, - 23665 - 19968: jis0208<<14 | 0x1A<<7 | 0x12, - 23668 - 19968: jis0212<<14 | 0x1A<<7 | 0x02, - 23669 - 19968: jis0212<<14 | 0x1A<<7 | 0x03, - 23670 - 19968: jis0208<<14 | 0x35<<7 | 0x06, - 23673 - 19968: jis0208<<14 | 0x35<<7 | 0x07, - 23674 - 19968: jis0212<<14 | 0x1A<<7 | 0x04, - 23675 - 19968: jis0212<<14 | 0x1A<<7 | 0x05, - 23676 - 19968: jis0212<<14 | 0x1A<<7 | 0x06, - 23677 - 19968: jis0212<<14 | 0x1A<<7 | 0x07, - 23687 - 19968: jis0212<<14 | 0x1A<<7 | 0x08, - 23688 - 19968: jis0212<<14 | 0x1A<<7 | 0x09, - 23690 - 19968: jis0212<<14 | 0x1A<<7 | 0x0A, - 23692 - 19968: jis0208<<14 | 0x35<<7 | 0x08, - 23695 - 19968: jis0212<<14 | 0x1A<<7 | 0x0B, - 23696 - 19968: jis0208<<14 | 0x13<<7 | 0x53, - 23697 - 19968: jis0208<<14 | 0x35<<7 | 0x09, - 23698 - 19968: jis0212<<14 | 0x1A<<7 | 0x0C, - 23700 - 19968: jis0208<<14 | 0x35<<7 | 0x0A, - 23709 - 19968: jis0212<<14 | 0x1A<<7 | 0x0D, - 23711 - 19968: jis0212<<14 | 0x1A<<7 | 0x0E, - 23712 - 19968: jis0212<<14 | 0x1A<<7 | 0x0F, - 23713 - 19968: jis0208<<14 | 0x11<<7 | 0x0B, - 23714 - 19968: jis0212<<14 | 0x1A<<7 | 0x10, - 23715 - 19968: jis0212<<14 | 0x1A<<7 | 0x11, - 23718 - 19968: jis0208<<14 | 0x58<<7 | 0x4F, - 23720 - 19968: jis0208<<14 | 0x20<<7 | 0x1A, - 23721 - 19968: jis0208<<14 | 0x13<<7 | 0x43, - 23722 - 19968: jis0212<<14 | 0x1A<<7 | 0x13, - 23723 - 19968: jis0208<<14 | 0x35<<7 | 0x0C, - 23724 - 19968: jis0208<<14 | 0x2B<<7 | 0x07, - 23729 - 19968: jis0208<<14 | 0x21<<7 | 0x31, - 23730 - 19968: jis0212<<14 | 0x1A<<7 | 0x14, - 23731 - 19968: jis0208<<14 | 0x12<<7 | 0x38, - 23732 - 19968: jis0212<<14 | 0x1A<<7 | 0x15, - 23733 - 19968: jis0212<<14 | 0x1A<<7 | 0x16, - 23734 - 19968: jis0208<<14 | 0x35<<7 | 0x0E, - 23735 - 19968: jis0208<<14 | 0x35<<7 | 0x10, - 23736 - 19968: jis0208<<14 | 0x13<<7 | 0x3E, - 23738 - 19968: jis0208<<14 | 0x58<<7 | 0x50, - 23739 - 19968: jis0208<<14 | 0x35<<7 | 0x0D, - 23740 - 19968: jis0208<<14 | 0x35<<7 | 0x0F, - 23742 - 19968: jis0208<<14 | 0x35<<7 | 0x12, - 23749 - 19968: jis0208<<14 | 0x35<<7 | 0x11, - 23751 - 19968: jis0208<<14 | 0x35<<7 | 0x13, - 23753 - 19968: jis0212<<14 | 0x1A<<7 | 0x18, - 23755 - 19968: jis0212<<14 | 0x1A<<7 | 0x19, - 23762 - 19968: jis0212<<14 | 0x1A<<7 | 0x1A, - 23767 - 19968: jis0212<<14 | 0x1A<<7 | 0x1C, - 23769 - 19968: jis0208<<14 | 0x35<<7 | 0x14, - 23773 - 19968: jis0212<<14 | 0x1A<<7 | 0x1B, - 23776 - 19968: jis0208<<14 | 0x25<<7 | 0x1C, - 23777 - 19968: jis0208<<14 | 0x15<<7 | 0x0D, - 23784 - 19968: jis0208<<14 | 0x11<<7 | 0x44, - 23785 - 19968: jis0208<<14 | 0x35<<7 | 0x15, - 23786 - 19968: jis0208<<14 | 0x35<<7 | 0x1A, - 23789 - 19968: jis0208<<14 | 0x35<<7 | 0x18, - 23790 - 19968: jis0212<<14 | 0x1A<<7 | 0x1D, - 23791 - 19968: jis0208<<14 | 0x29<<7 | 0x56, - 23792 - 19968: jis0208<<14 | 0x29<<7 | 0x55, - 23793 - 19968: jis0212<<14 | 0x1A<<7 | 0x1E, - 23794 - 19968: jis0212<<14 | 0x1A<<7 | 0x1F, - 23796 - 19968: jis0212<<14 | 0x1A<<7 | 0x20, - 23797 - 19968: jis0208<<14 | 0x58<<7 | 0x51, - 23798 - 19968: jis0208<<14 | 0x24<<7 | 0x46, - 23802 - 19968: jis0208<<14 | 0x35<<7 | 0x17, - 23803 - 19968: jis0208<<14 | 0x1C<<7 | 0x33, - 23805 - 19968: jis0208<<14 | 0x35<<7 | 0x16, - 23809 - 19968: jis0212<<14 | 0x1A<<7 | 0x21, - 23814 - 19968: jis0212<<14 | 0x1A<<7 | 0x22, - 23815 - 19968: jis0208<<14 | 0x1E<<7 | 0x51, - 23819 - 19968: jis0208<<14 | 0x35<<7 | 0x1B, - 23821 - 19968: jis0212<<14 | 0x1A<<7 | 0x23, - 23822 - 19968: jis0208<<14 | 0x19<<7 | 0x49, - 23825 - 19968: jis0208<<14 | 0x35<<7 | 0x21, - 23826 - 19968: jis0212<<14 | 0x1A<<7 | 0x24, - 23828 - 19968: jis0208<<14 | 0x35<<7 | 0x22, - 23829 - 19968: jis0208<<14 | 0x35<<7 | 0x1C, - 23830 - 19968: jis0208<<14 | 0x12<<7 | 0x12, - 23831 - 19968: jis0208<<14 | 0x35<<7 | 0x1D, - 23832 - 19968: jis0208<<14 | 0x35<<7 | 0x26, - 23833 - 19968: jis0208<<14 | 0x35<<7 | 0x25, - 23834 - 19968: jis0208<<14 | 0x35<<7 | 0x24, - 23835 - 19968: jis0208<<14 | 0x35<<7 | 0x20, - 23839 - 19968: jis0208<<14 | 0x35<<7 | 0x1F, - 23842 - 19968: jis0208<<14 | 0x35<<7 | 0x23, - 23843 - 19968: jis0212<<14 | 0x1A<<7 | 0x26, - 23844 - 19968: jis0212<<14 | 0x1A<<7 | 0x27, - 23846 - 19968: jis0212<<14 | 0x1A<<7 | 0x28, - 23847 - 19968: jis0208<<14 | 0x58<<7 | 0x52, - 23849 - 19968: jis0208<<14 | 0x29<<7 | 0x57, - 23851 - 19968: jis0212<<14 | 0x1A<<7 | 0x25, - 23857 - 19968: jis0212<<14 | 0x1A<<7 | 0x2A, - 23860 - 19968: jis0212<<14 | 0x1A<<7 | 0x2B, - 23865 - 19968: jis0212<<14 | 0x1A<<7 | 0x2C, - 23869 - 19968: jis0212<<14 | 0x1A<<7 | 0x2D, - 23871 - 19968: jis0212<<14 | 0x1A<<7 | 0x2E, - 23874 - 19968: jis0208<<14 | 0x58<<7 | 0x55, - 23875 - 19968: jis0212<<14 | 0x1A<<7 | 0x30, - 23878 - 19968: jis0212<<14 | 0x1A<<7 | 0x31, - 23880 - 19968: jis0212<<14 | 0x1A<<7 | 0x32, - 23882 - 19968: jis0212<<14 | 0x1A<<7 | 0x36, - 23883 - 19968: jis0208<<14 | 0x35<<7 | 0x2A, - 23884 - 19968: jis0208<<14 | 0x35<<7 | 0x27, - 23886 - 19968: jis0208<<14 | 0x35<<7 | 0x29, - 23888 - 19968: jis0208<<14 | 0x2C<<7 | 0x51, - 23889 - 19968: jis0212<<14 | 0x1A<<7 | 0x34, - 23890 - 19968: jis0208<<14 | 0x35<<7 | 0x28, - 23891 - 19968: jis0208<<14 | 0x58<<7 | 0x53, - 23893 - 19968: jis0212<<14 | 0x1A<<7 | 0x33, - 23897 - 19968: jis0212<<14 | 0x1A<<7 | 0x35, - 23900 - 19968: jis0208<<14 | 0x35<<7 | 0x1E, - 23903 - 19968: jis0212<<14 | 0x1A<<7 | 0x37, - 23904 - 19968: jis0212<<14 | 0x1A<<7 | 0x38, - 23905 - 19968: jis0212<<14 | 0x1A<<7 | 0x39, - 23906 - 19968: jis0212<<14 | 0x1A<<7 | 0x3A, - 23908 - 19968: jis0212<<14 | 0x1A<<7 | 0x3B, - 23913 - 19968: jis0208<<14 | 0x1E<<7 | 0x52, - 23914 - 19968: jis0212<<14 | 0x1A<<7 | 0x3C, - 23916 - 19968: jis0208<<14 | 0x35<<7 | 0x2B, - 23917 - 19968: jis0208<<14 | 0x58<<7 | 0x56, - 23919 - 19968: jis0208<<14 | 0x19<<7 | 0x16, - 23920 - 19968: jis0212<<14 | 0x1A<<7 | 0x3E, - 23923 - 19968: jis0208<<14 | 0x35<<7 | 0x2C, - 23926 - 19968: jis0208<<14 | 0x35<<7 | 0x2D, - 23929 - 19968: jis0212<<14 | 0x1A<<7 | 0x3F, - 23930 - 19968: jis0212<<14 | 0x1A<<7 | 0x40, - 23934 - 19968: jis0212<<14 | 0x1A<<7 | 0x41, - 23935 - 19968: jis0212<<14 | 0x1A<<7 | 0x42, - 23937 - 19968: jis0212<<14 | 0x1A<<7 | 0x43, - 23938 - 19968: jis0208<<14 | 0x35<<7 | 0x30, - 23939 - 19968: jis0212<<14 | 0x1A<<7 | 0x44, - 23940 - 19968: jis0208<<14 | 0x35<<7 | 0x2F, - 23943 - 19968: jis0208<<14 | 0x35<<7 | 0x2E, - 23944 - 19968: jis0212<<14 | 0x1A<<7 | 0x45, - 23946 - 19968: jis0212<<14 | 0x1A<<7 | 0x46, - 23947 - 19968: jis0208<<14 | 0x24<<7 | 0x47, - 23948 - 19968: jis0208<<14 | 0x35<<7 | 0x19, - 23952 - 19968: jis0208<<14 | 0x35<<7 | 0x36, - 23954 - 19968: jis0212<<14 | 0x1A<<7 | 0x47, - 23955 - 19968: jis0212<<14 | 0x1A<<7 | 0x48, - 23956 - 19968: jis0212<<14 | 0x1A<<7 | 0x49, - 23957 - 19968: jis0212<<14 | 0x1A<<7 | 0x4A, - 23961 - 19968: jis0212<<14 | 0x1A<<7 | 0x4B, - 23963 - 19968: jis0212<<14 | 0x1A<<7 | 0x4C, - 23965 - 19968: jis0208<<14 | 0x35<<7 | 0x32, - 23967 - 19968: jis0212<<14 | 0x1A<<7 | 0x4D, - 23968 - 19968: jis0212<<14 | 0x1A<<7 | 0x4E, - 23970 - 19968: jis0208<<14 | 0x35<<7 | 0x31, - 23975 - 19968: jis0212<<14 | 0x1A<<7 | 0x4F, - 23979 - 19968: jis0212<<14 | 0x1A<<7 | 0x50, - 23980 - 19968: jis0208<<14 | 0x35<<7 | 0x33, - 23982 - 19968: jis0208<<14 | 0x35<<7 | 0x34, - 23984 - 19968: jis0212<<14 | 0x1A<<7 | 0x51, - 23986 - 19968: jis0212<<14 | 0x45<<7 | 0x53, - 23988 - 19968: jis0212<<14 | 0x1A<<7 | 0x52, - 23991 - 19968: jis0208<<14 | 0x35<<7 | 0x37, - 23992 - 19968: jis0208<<14 | 0x58<<7 | 0x57, - 23993 - 19968: jis0208<<14 | 0x58<<7 | 0x58, - 23994 - 19968: jis0208<<14 | 0x2D<<7 | 0x45, - 23996 - 19968: jis0208<<14 | 0x35<<7 | 0x38, - 23997 - 19968: jis0208<<14 | 0x35<<7 | 0x35, - 24003 - 19968: jis0212<<14 | 0x1A<<7 | 0x55, - 24007 - 19968: jis0212<<14 | 0x1A<<7 | 0x56, - 24009 - 19968: jis0208<<14 | 0x35<<7 | 0x39, - 24011 - 19968: jis0212<<14 | 0x1A<<7 | 0x57, - 24012 - 19968: jis0208<<14 | 0x13<<7 | 0x3F, - 24013 - 19968: jis0208<<14 | 0x35<<7 | 0x3A, - 24014 - 19968: jis0212<<14 | 0x1A<<7 | 0x59, - 24016 - 19968: jis0208<<14 | 0x58<<7 | 0x59, - 24018 - 19968: jis0208<<14 | 0x35<<7 | 0x3C, - 24019 - 19968: jis0208<<14 | 0x35<<7 | 0x3B, - 24022 - 19968: jis0208<<14 | 0x35<<7 | 0x3D, - 24024 - 19968: jis0212<<14 | 0x1A<<7 | 0x5A, - 24025 - 19968: jis0212<<14 | 0x1A<<7 | 0x5B, - 24027 - 19968: jis0208<<14 | 0x35<<7 | 0x3E, - 24029 - 19968: jis0208<<14 | 0x1F<<7 | 0x4D, - 24030 - 19968: jis0208<<14 | 0x1C<<7 | 0x02, - 24032 - 19968: jis0212<<14 | 0x1A<<7 | 0x5C, - 24033 - 19968: jis0208<<14 | 0x1C<<7 | 0x43, - 24035 - 19968: jis0208<<14 | 0x20<<7 | 0x42, - 24036 - 19968: jis0212<<14 | 0x1A<<7 | 0x5D, - 24037 - 19968: jis0208<<14 | 0x18<<7 | 0x08, - 24038 - 19968: jis0208<<14 | 0x19<<7 | 0x17, - 24039 - 19968: jis0208<<14 | 0x18<<7 | 0x09, - 24040 - 19968: jis0208<<14 | 0x14<<7 | 0x4F, - 24041 - 19968: jis0212<<14 | 0x1B<<7 | 0x00, - 24043 - 19968: jis0208<<14 | 0x35<<7 | 0x3F, - 24046 - 19968: jis0208<<14 | 0x19<<7 | 0x18, - 24049 - 19968: jis0208<<14 | 0x17<<7 | 0x29, - 24050 - 19968: jis0208<<14 | 0x35<<7 | 0x40, - 24051 - 19968: jis0208<<14 | 0x2B<<7 | 0x05, - 24052 - 19968: jis0208<<14 | 0x26<<7 | 0x22, - 24053 - 19968: jis0208<<14 | 0x35<<7 | 0x41, - 24055 - 19968: jis0208<<14 | 0x18<<7 | 0x0A, - 24056 - 19968: jis0212<<14 | 0x1B<<7 | 0x01, - 24057 - 19968: jis0212<<14 | 0x1B<<7 | 0x02, - 24059 - 19968: jis0208<<14 | 0x13<<7 | 0x0B, - 24061 - 19968: jis0208<<14 | 0x22<<7 | 0x06, - 24062 - 19968: jis0208<<14 | 0x15<<7 | 0x31, - 24064 - 19968: jis0212<<14 | 0x1B<<7 | 0x03, - 24066 - 19968: jis0208<<14 | 0x1A<<7 | 0x33, - 24067 - 19968: jis0208<<14 | 0x28<<7 | 0x3A, - 24070 - 19968: jis0208<<14 | 0x27<<7 | 0x20, - 24071 - 19968: jis0212<<14 | 0x1B<<7 | 0x04, - 24075 - 19968: jis0208<<14 | 0x35<<7 | 0x42, - 24076 - 19968: jis0208<<14 | 0x13<<7 | 0x54, - 24077 - 19968: jis0212<<14 | 0x1B<<7 | 0x05, - 24081 - 19968: jis0208<<14 | 0x35<<7 | 0x45, - 24082 - 19968: jis0212<<14 | 0x1B<<7 | 0x06, - 24084 - 19968: jis0212<<14 | 0x1B<<7 | 0x07, - 24085 - 19968: jis0212<<14 | 0x1B<<7 | 0x08, - 24086 - 19968: jis0208<<14 | 0x23<<7 | 0x00, - 24088 - 19968: jis0212<<14 | 0x1B<<7 | 0x09, - 24089 - 19968: jis0208<<14 | 0x35<<7 | 0x44, - 24090 - 19968: jis0208<<14 | 0x35<<7 | 0x43, - 24091 - 19968: jis0208<<14 | 0x35<<7 | 0x46, - 24093 - 19968: jis0208<<14 | 0x23<<7 | 0x4A, - 24095 - 19968: jis0212<<14 | 0x1B<<7 | 0x0A, - 24096 - 19968: jis0212<<14 | 0x1B<<7 | 0x0B, - 24101 - 19968: jis0208<<14 | 0x1E<<7 | 0x42, - 24104 - 19968: jis0212<<14 | 0x1B<<7 | 0x0D, - 24107 - 19968: jis0208<<14 | 0x1A<<7 | 0x34, - 24109 - 19968: jis0208<<14 | 0x1F<<7 | 0x29, - 24110 - 19968: jis0212<<14 | 0x1B<<7 | 0x0C, - 24111 - 19968: jis0208<<14 | 0x21<<7 | 0x32, - 24112 - 19968: jis0208<<14 | 0x14<<7 | 0x01, - 24114 - 19968: jis0212<<14 | 0x1B<<7 | 0x0E, - 24115 - 19968: jis0208<<14 | 0x23<<7 | 0x01, - 24117 - 19968: jis0212<<14 | 0x1B<<7 | 0x0F, - 24118 - 19968: jis0208<<14 | 0x35<<7 | 0x47, - 24119 - 19968: jis0208<<14 | 0x35<<7 | 0x48, - 24120 - 19968: jis0208<<14 | 0x1D<<7 | 0x4E, - 24125 - 19968: jis0208<<14 | 0x2A<<7 | 0x18, - 24126 - 19968: jis0212<<14 | 0x1B<<7 | 0x10, - 24128 - 19968: jis0208<<14 | 0x35<<7 | 0x4B, - 24131 - 19968: jis0208<<14 | 0x35<<7 | 0x4A, - 24132 - 19968: jis0208<<14 | 0x35<<7 | 0x49, - 24133 - 19968: jis0208<<14 | 0x28<<7 | 0x5C, - 24135 - 19968: jis0208<<14 | 0x35<<7 | 0x52, - 24137 - 19968: jis0212<<14 | 0x1B<<7 | 0x13, - 24139 - 19968: jis0212<<14 | 0x1B<<7 | 0x11, - 24140 - 19968: jis0208<<14 | 0x2A<<7 | 0x39, - 24142 - 19968: jis0208<<14 | 0x35<<7 | 0x4C, - 24144 - 19968: jis0212<<14 | 0x1B<<7 | 0x12, - 24145 - 19968: jis0212<<14 | 0x1B<<7 | 0x14, - 24148 - 19968: jis0208<<14 | 0x35<<7 | 0x4E, - 24149 - 19968: jis0208<<14 | 0x2A<<7 | 0x4A, - 24150 - 19968: jis0212<<14 | 0x1B<<7 | 0x15, - 24151 - 19968: jis0208<<14 | 0x35<<7 | 0x4D, - 24152 - 19968: jis0212<<14 | 0x1B<<7 | 0x16, - 24155 - 19968: jis0212<<14 | 0x1B<<7 | 0x17, - 24156 - 19968: jis0212<<14 | 0x1B<<7 | 0x18, - 24158 - 19968: jis0212<<14 | 0x1B<<7 | 0x19, - 24159 - 19968: jis0208<<14 | 0x35<<7 | 0x4F, - 24161 - 19968: jis0208<<14 | 0x27<<7 | 0x07, - 24162 - 19968: jis0208<<14 | 0x35<<7 | 0x50, - 24163 - 19968: jis0208<<14 | 0x29<<7 | 0x1D, - 24164 - 19968: jis0208<<14 | 0x35<<7 | 0x51, - 24168 - 19968: jis0212<<14 | 0x1B<<7 | 0x1A, - 24170 - 19968: jis0212<<14 | 0x1B<<7 | 0x1B, - 24171 - 19968: jis0212<<14 | 0x1B<<7 | 0x1C, - 24172 - 19968: jis0212<<14 | 0x1B<<7 | 0x1D, - 24173 - 19968: jis0212<<14 | 0x1B<<7 | 0x1E, - 24174 - 19968: jis0212<<14 | 0x1B<<7 | 0x1F, - 24176 - 19968: jis0212<<14 | 0x1B<<7 | 0x20, - 24178 - 19968: jis0208<<14 | 0x13<<7 | 0x12, - 24179 - 19968: jis0208<<14 | 0x29<<7 | 0x1E, - 24180 - 19968: jis0208<<14 | 0x26<<7 | 0x0E, - 24181 - 19968: jis0208<<14 | 0x35<<7 | 0x53, - 24182 - 19968: jis0208<<14 | 0x35<<7 | 0x54, - 24184 - 19968: jis0208<<14 | 0x18<<7 | 0x0B, - 24185 - 19968: jis0208<<14 | 0x13<<7 | 0x13, - 24186 - 19968: jis0208<<14 | 0x35<<7 | 0x55, - 24187 - 19968: jis0208<<14 | 0x17<<7 | 0x17, - 24188 - 19968: jis0208<<14 | 0x2C<<7 | 0x23, - 24189 - 19968: jis0208<<14 | 0x2C<<7 | 0x08, - 24190 - 19968: jis0208<<14 | 0x13<<7 | 0x55, - 24191 - 19968: jis0208<<14 | 0x35<<7 | 0x57, - 24192 - 19968: jis0212<<14 | 0x1B<<7 | 0x21, - 24193 - 19968: jis0208<<14 | 0x23<<7 | 0x02, - 24195 - 19968: jis0208<<14 | 0x18<<7 | 0x0C, - 24196 - 19968: jis0208<<14 | 0x1D<<7 | 0x10, - 24199 - 19968: jis0208<<14 | 0x27<<7 | 0x3E, - 24202 - 19968: jis0208<<14 | 0x1D<<7 | 0x11, - 24203 - 19968: jis0212<<14 | 0x1B<<7 | 0x22, - 24206 - 19968: jis0212<<14 | 0x1B<<7 | 0x23, - 24207 - 19968: jis0208<<14 | 0x1C<<7 | 0x57, - 24213 - 19968: jis0208<<14 | 0x23<<7 | 0x4B, - 24214 - 19968: jis0208<<14 | 0x29<<7 | 0x58, - 24215 - 19968: jis0208<<14 | 0x24<<7 | 0x18, - 24218 - 19968: jis0208<<14 | 0x18<<7 | 0x0D, - 24220 - 19968: jis0208<<14 | 0x28<<7 | 0x3B, - 24224 - 19968: jis0208<<14 | 0x35<<7 | 0x58, - 24226 - 19968: jis0212<<14 | 0x1B<<7 | 0x24, - 24228 - 19968: jis0212<<14 | 0x1B<<7 | 0x25, - 24229 - 19968: jis0212<<14 | 0x1B<<7 | 0x26, - 24230 - 19968: jis0208<<14 | 0x24<<7 | 0x38, - 24231 - 19968: jis0208<<14 | 0x19<<7 | 0x21, - 24232 - 19968: jis0212<<14 | 0x1B<<7 | 0x27, - 24234 - 19968: jis0212<<14 | 0x1B<<7 | 0x28, - 24235 - 19968: jis0208<<14 | 0x17<<7 | 0x2A, - 24236 - 19968: jis0212<<14 | 0x1B<<7 | 0x29, - 24237 - 19968: jis0208<<14 | 0x23<<7 | 0x4C, - 24241 - 19968: jis0212<<14 | 0x1B<<7 | 0x2A, - 24243 - 19968: jis0212<<14 | 0x1B<<7 | 0x2B, - 24245 - 19968: jis0208<<14 | 0x0F<<7 | 0x22, - 24246 - 19968: jis0208<<14 | 0x1C<<7 | 0x4D, - 24247 - 19968: jis0208<<14 | 0x18<<7 | 0x0E, - 24248 - 19968: jis0208<<14 | 0x2C<<7 | 0x26, - 24253 - 19968: jis0212<<14 | 0x1B<<7 | 0x2C, - 24254 - 19968: jis0212<<14 | 0x1B<<7 | 0x2D, - 24255 - 19968: jis0212<<14 | 0x1B<<7 | 0x2E, - 24257 - 19968: jis0208<<14 | 0x35<<7 | 0x59, - 24258 - 19968: jis0208<<14 | 0x35<<7 | 0x5A, - 24259 - 19968: jis0208<<14 | 0x26<<7 | 0x30, - 24262 - 19968: jis0212<<14 | 0x1B<<7 | 0x2F, - 24264 - 19968: jis0208<<14 | 0x35<<7 | 0x5B, - 24265 - 19968: jis0208<<14 | 0x2D<<7 | 0x56, - 24266 - 19968: jis0208<<14 | 0x2E<<7 | 0x0C, - 24267 - 19968: jis0212<<14 | 0x1B<<7 | 0x31, - 24268 - 19968: jis0212<<14 | 0x1B<<7 | 0x30, - 24270 - 19968: jis0212<<14 | 0x1B<<7 | 0x32, - 24271 - 19968: jis0208<<14 | 0x35<<7 | 0x5D, - 24272 - 19968: jis0208<<14 | 0x35<<7 | 0x5C, - 24273 - 19968: jis0212<<14 | 0x1B<<7 | 0x33, - 24274 - 19968: jis0212<<14 | 0x1B<<7 | 0x34, - 24275 - 19968: jis0208<<14 | 0x12<<7 | 0x26, - 24276 - 19968: jis0212<<14 | 0x1B<<7 | 0x35, - 24277 - 19968: jis0212<<14 | 0x1B<<7 | 0x36, - 24278 - 19968: jis0208<<14 | 0x36<<7 | 0x00, - 24282 - 19968: jis0208<<14 | 0x36<<7 | 0x03, - 24283 - 19968: jis0208<<14 | 0x36<<7 | 0x04, - 24284 - 19968: jis0212<<14 | 0x1B<<7 | 0x37, - 24285 - 19968: jis0208<<14 | 0x36<<7 | 0x02, - 24286 - 19968: jis0212<<14 | 0x1B<<7 | 0x38, - 24287 - 19968: jis0208<<14 | 0x28<<7 | 0x1F, - 24288 - 19968: jis0208<<14 | 0x1D<<7 | 0x12, - 24289 - 19968: jis0208<<14 | 0x36<<7 | 0x06, - 24290 - 19968: jis0208<<14 | 0x36<<7 | 0x05, - 24291 - 19968: jis0208<<14 | 0x36<<7 | 0x01, - 24293 - 19968: jis0212<<14 | 0x1B<<7 | 0x39, - 24296 - 19968: jis0208<<14 | 0x36<<7 | 0x07, - 24297 - 19968: jis0208<<14 | 0x36<<7 | 0x08, - 24299 - 19968: jis0212<<14 | 0x1B<<7 | 0x3A, - 24300 - 19968: jis0208<<14 | 0x36<<7 | 0x09, - 24304 - 19968: jis0208<<14 | 0x36<<7 | 0x0C, - 24305 - 19968: jis0208<<14 | 0x36<<7 | 0x0A, - 24307 - 19968: jis0208<<14 | 0x36<<7 | 0x0B, - 24308 - 19968: jis0208<<14 | 0x36<<7 | 0x0D, - 24310 - 19968: jis0208<<14 | 0x10<<7 | 0x43, - 24311 - 19968: jis0208<<14 | 0x23<<7 | 0x4D, - 24312 - 19968: jis0208<<14 | 0x36<<7 | 0x0E, - 24314 - 19968: jis0208<<14 | 0x16<<7 | 0x59, - 24315 - 19968: jis0208<<14 | 0x11<<7 | 0x55, - 24316 - 19968: jis0208<<14 | 0x26<<7 | 0x15, - 24318 - 19968: jis0208<<14 | 0x36<<7 | 0x0F, - 24319 - 19968: jis0208<<14 | 0x25<<7 | 0x5A, - 24321 - 19968: jis0208<<14 | 0x29<<7 | 0x3A, - 24322 - 19968: jis0212<<14 | 0x1B<<7 | 0x3B, - 24323 - 19968: jis0208<<14 | 0x36<<7 | 0x10, - 24324 - 19968: jis0208<<14 | 0x2E<<7 | 0x0D, - 24326 - 19968: jis0212<<14 | 0x1B<<7 | 0x3C, - 24327 - 19968: jis0212<<14 | 0x1B<<7 | 0x3D, - 24328 - 19968: jis0212<<14 | 0x1B<<7 | 0x3E, - 24329 - 19968: jis0208<<14 | 0x36<<7 | 0x11, - 24330 - 19968: jis0208<<14 | 0x29<<7 | 0x1F, - 24331 - 19968: jis0208<<14 | 0x36<<7 | 0x14, - 24332 - 19968: jis0208<<14 | 0x2F<<7 | 0x00, - 24333 - 19968: jis0208<<14 | 0x2F<<7 | 0x10, - 24334 - 19968: jis0212<<14 | 0x1B<<7 | 0x3F, - 24335 - 19968: jis0208<<14 | 0x1B<<7 | 0x0F, - 24336 - 19968: jis0208<<14 | 0x25<<7 | 0x54, - 24337 - 19968: jis0208<<14 | 0x36<<7 | 0x15, - 24339 - 19968: jis0208<<14 | 0x14<<7 | 0x3C, - 24340 - 19968: jis0208<<14 | 0x23<<7 | 0x03, - 24341 - 19968: jis0208<<14 | 0x0F<<7 | 0x59, - 24342 - 19968: jis0208<<14 | 0x36<<7 | 0x16, - 24343 - 19968: jis0208<<14 | 0x29<<7 | 0x05, - 24344 - 19968: jis0208<<14 | 0x18<<7 | 0x0F, - 24345 - 19968: jis0212<<14 | 0x1B<<7 | 0x40, - 24347 - 19968: jis0208<<14 | 0x22<<7 | 0x2F, - 24348 - 19968: jis0212<<14 | 0x1B<<7 | 0x41, - 24349 - 19968: jis0212<<14 | 0x1B<<7 | 0x42, - 24351 - 19968: jis0208<<14 | 0x23<<7 | 0x4E, - 24353 - 19968: jis0208<<14 | 0x58<<7 | 0x5A, - 24354 - 19968: jis0212<<14 | 0x1B<<7 | 0x44, - 24355 - 19968: jis0212<<14 | 0x1B<<7 | 0x45, - 24356 - 19968: jis0212<<14 | 0x1B<<7 | 0x46, - 24357 - 19968: jis0208<<14 | 0x2B<<7 | 0x4E, - 24358 - 19968: jis0208<<14 | 0x17<<7 | 0x18, - 24359 - 19968: jis0208<<14 | 0x17<<7 | 0x2B, - 24360 - 19968: jis0212<<14 | 0x1B<<7 | 0x47, - 24361 - 19968: jis0208<<14 | 0x36<<7 | 0x17, - 24363 - 19968: jis0212<<14 | 0x1B<<7 | 0x48, - 24364 - 19968: jis0212<<14 | 0x1B<<7 | 0x49, - 24365 - 19968: jis0208<<14 | 0x36<<7 | 0x18, - 24366 - 19968: jis0212<<14 | 0x1B<<7 | 0x4A, - 24367 - 19968: jis0208<<14 | 0x36<<7 | 0x1E, - 24368 - 19968: jis0212<<14 | 0x1B<<7 | 0x4B, - 24369 - 19968: jis0208<<14 | 0x1B<<7 | 0x44, - 24372 - 19968: jis0208<<14 | 0x58<<7 | 0x5B, - 24373 - 19968: jis0208<<14 | 0x23<<7 | 0x04, - 24374 - 19968: jis0212<<14 | 0x1B<<7 | 0x4D, - 24375 - 19968: jis0208<<14 | 0x15<<7 | 0x0E, - 24376 - 19968: jis0208<<14 | 0x36<<7 | 0x19, - 24379 - 19968: jis0212<<14 | 0x1B<<7 | 0x4E, - 24380 - 19968: jis0208<<14 | 0x28<<7 | 0x0A, - 24381 - 19968: jis0212<<14 | 0x1B<<7 | 0x4F, - 24382 - 19968: jis0208<<14 | 0x22<<7 | 0x25, - 24383 - 19968: jis0212<<14 | 0x1B<<7 | 0x50, - 24384 - 19968: jis0212<<14 | 0x1B<<7 | 0x51, - 24385 - 19968: jis0208<<14 | 0x36<<7 | 0x1A, - 24388 - 19968: jis0212<<14 | 0x1B<<7 | 0x52, - 24389 - 19968: jis0208<<14 | 0x58<<7 | 0x0B, - 24391 - 19968: jis0212<<14 | 0x1B<<7 | 0x54, - 24392 - 19968: jis0208<<14 | 0x36<<7 | 0x1B, - 24394 - 19968: jis0208<<14 | 0x15<<7 | 0x0F, - 24396 - 19968: jis0208<<14 | 0x36<<7 | 0x1C, - 24397 - 19968: jis0212<<14 | 0x1B<<7 | 0x55, - 24398 - 19968: jis0208<<14 | 0x36<<7 | 0x1D, - 24400 - 19968: jis0212<<14 | 0x1B<<7 | 0x56, - 24401 - 19968: jis0208<<14 | 0x36<<7 | 0x1F, - 24403 - 19968: jis0208<<14 | 0x24<<7 | 0x55, - 24404 - 19968: jis0212<<14 | 0x1B<<7 | 0x57, - 24406 - 19968: jis0208<<14 | 0x36<<7 | 0x20, - 24407 - 19968: jis0208<<14 | 0x36<<7 | 0x21, - 24408 - 19968: jis0212<<14 | 0x1B<<7 | 0x58, - 24409 - 19968: jis0208<<14 | 0x36<<7 | 0x22, - 24411 - 19968: jis0212<<14 | 0x1B<<7 | 0x59, - 24412 - 19968: jis0208<<14 | 0x36<<7 | 0x13, - 24413 - 19968: jis0208<<14 | 0x36<<7 | 0x12, - 24416 - 19968: jis0212<<14 | 0x1B<<7 | 0x5A, - 24417 - 19968: jis0208<<14 | 0x36<<7 | 0x23, - 24418 - 19968: jis0208<<14 | 0x16<<7 | 0x20, - 24419 - 19968: jis0212<<14 | 0x1B<<7 | 0x5B, - 24420 - 19968: jis0212<<14 | 0x1B<<7 | 0x5C, - 24422 - 19968: jis0208<<14 | 0x28<<7 | 0x06, - 24423 - 19968: jis0208<<14 | 0x58<<7 | 0x5C, - 24425 - 19968: jis0208<<14 | 0x19<<7 | 0x2B, - 24426 - 19968: jis0208<<14 | 0x28<<7 | 0x16, - 24427 - 19968: jis0208<<14 | 0x23<<7 | 0x05, - 24428 - 19968: jis0208<<14 | 0x28<<7 | 0x2A, - 24429 - 19968: jis0208<<14 | 0x36<<7 | 0x24, - 24431 - 19968: jis0212<<14 | 0x1C<<7 | 0x00, - 24432 - 19968: jis0208<<14 | 0x1D<<7 | 0x13, - 24433 - 19968: jis0208<<14 | 0x10<<7 | 0x25, - 24434 - 19968: jis0212<<14 | 0x1C<<7 | 0x01, - 24435 - 19968: jis0208<<14 | 0x36<<7 | 0x25, - 24436 - 19968: jis0212<<14 | 0x1C<<7 | 0x02, - 24437 - 19968: jis0212<<14 | 0x1C<<7 | 0x03, - 24439 - 19968: jis0208<<14 | 0x36<<7 | 0x26, - 24440 - 19968: jis0212<<14 | 0x1C<<7 | 0x04, - 24441 - 19968: jis0208<<14 | 0x2B<<7 | 0x51, - 24442 - 19968: jis0212<<14 | 0x1C<<7 | 0x05, - 24444 - 19968: jis0208<<14 | 0x27<<7 | 0x3F, - 24445 - 19968: jis0212<<14 | 0x1C<<7 | 0x06, - 24446 - 19968: jis0212<<14 | 0x1C<<7 | 0x07, - 24447 - 19968: jis0208<<14 | 0x36<<7 | 0x29, - 24448 - 19968: jis0208<<14 | 0x10<<7 | 0x5C, - 24449 - 19968: jis0208<<14 | 0x1F<<7 | 0x0B, - 24450 - 19968: jis0208<<14 | 0x36<<7 | 0x28, - 24451 - 19968: jis0208<<14 | 0x36<<7 | 0x27, - 24452 - 19968: jis0208<<14 | 0x16<<7 | 0x21, - 24453 - 19968: jis0208<<14 | 0x21<<7 | 0x33, - 24455 - 19968: jis0208<<14 | 0x36<<7 | 0x2D, - 24456 - 19968: jis0208<<14 | 0x36<<7 | 0x2B, - 24457 - 19968: jis0212<<14 | 0x1C<<7 | 0x08, - 24458 - 19968: jis0208<<14 | 0x36<<7 | 0x2A, - 24459 - 19968: jis0208<<14 | 0x2D<<7 | 0x06, - 24460 - 19968: jis0208<<14 | 0x17<<7 | 0x44, - 24461 - 19968: jis0212<<14 | 0x1C<<7 | 0x09, - 24463 - 19968: jis0212<<14 | 0x1C<<7 | 0x0A, - 24464 - 19968: jis0208<<14 | 0x1C<<7 | 0x58, - 24465 - 19968: jis0208<<14 | 0x36<<7 | 0x2C, - 24466 - 19968: jis0208<<14 | 0x24<<7 | 0x2B, - 24467 - 19968: jis0208<<14 | 0x1C<<7 | 0x1D, - 24470 - 19968: jis0212<<14 | 0x1C<<7 | 0x0B, - 24471 - 19968: jis0208<<14 | 0x25<<7 | 0x1F, - 24472 - 19968: jis0208<<14 | 0x36<<7 | 0x30, - 24473 - 19968: jis0208<<14 | 0x36<<7 | 0x2F, - 24476 - 19968: jis0212<<14 | 0x1C<<7 | 0x0C, - 24477 - 19968: jis0212<<14 | 0x1C<<7 | 0x0D, - 24478 - 19968: jis0208<<14 | 0x36<<7 | 0x2E, - 24480 - 19968: jis0208<<14 | 0x36<<7 | 0x31, - 24481 - 19968: jis0208<<14 | 0x17<<7 | 0x45, - 24482 - 19968: jis0212<<14 | 0x1C<<7 | 0x0E, - 24484 - 19968: jis0212<<14 | 0x1C<<7 | 0x11, - 24487 - 19968: jis0212<<14 | 0x1C<<7 | 0x0F, - 24488 - 19968: jis0208<<14 | 0x36<<7 | 0x32, - 24489 - 19968: jis0208<<14 | 0x28<<7 | 0x5B, - 24490 - 19968: jis0208<<14 | 0x1C<<7 | 0x3A, - 24491 - 19968: jis0212<<14 | 0x1C<<7 | 0x10, - 24492 - 19968: jis0212<<14 | 0x1C<<7 | 0x12, - 24493 - 19968: jis0208<<14 | 0x36<<7 | 0x33, - 24494 - 19968: jis0208<<14 | 0x27<<7 | 0x58, - 24495 - 19968: jis0212<<14 | 0x1C<<7 | 0x13, - 24496 - 19968: jis0212<<14 | 0x1C<<7 | 0x14, - 24497 - 19968: jis0212<<14 | 0x1C<<7 | 0x15, - 24499 - 19968: jis0208<<14 | 0x25<<7 | 0x20, - 24500 - 19968: jis0208<<14 | 0x23<<7 | 0x06, - 24503 - 19968: jis0208<<14 | 0x58<<7 | 0x5D, - 24504 - 19968: jis0212<<14 | 0x1C<<7 | 0x16, - 24505 - 19968: jis0208<<14 | 0x24<<7 | 0x0F, - 24508 - 19968: jis0208<<14 | 0x36<<7 | 0x34, - 24509 - 19968: jis0208<<14 | 0x14<<7 | 0x0A, - 24515 - 19968: jis0208<<14 | 0x1E<<7 | 0x13, - 24516 - 19968: jis0212<<14 | 0x1C<<7 | 0x17, - 24517 - 19968: jis0208<<14 | 0x28<<7 | 0x0B, - 24519 - 19968: jis0212<<14 | 0x1C<<7 | 0x18, - 24520 - 19968: jis0212<<14 | 0x1C<<7 | 0x19, - 24521 - 19968: jis0212<<14 | 0x1C<<7 | 0x1A, - 24523 - 19968: jis0212<<14 | 0x1C<<7 | 0x1B, - 24524 - 19968: jis0208<<14 | 0x13<<7 | 0x56, - 24525 - 19968: jis0208<<14 | 0x26<<7 | 0x05, - 24528 - 19968: jis0212<<14 | 0x1C<<7 | 0x1C, - 24529 - 19968: jis0212<<14 | 0x1C<<7 | 0x1D, - 24530 - 19968: jis0212<<14 | 0x1C<<7 | 0x1E, - 24531 - 19968: jis0212<<14 | 0x1C<<7 | 0x1F, - 24532 - 19968: jis0212<<14 | 0x1C<<7 | 0x20, - 24534 - 19968: jis0208<<14 | 0x36<<7 | 0x35, - 24535 - 19968: jis0208<<14 | 0x1A<<7 | 0x35, - 24536 - 19968: jis0208<<14 | 0x2A<<7 | 0x19, - 24537 - 19968: jis0208<<14 | 0x2A<<7 | 0x1A, - 24540 - 19968: jis0208<<14 | 0x10<<7 | 0x5D, - 24541 - 19968: jis0208<<14 | 0x36<<7 | 0x3A, - 24542 - 19968: jis0208<<14 | 0x59<<7 | 0x00, - 24544 - 19968: jis0208<<14 | 0x22<<7 | 0x48, - 24545 - 19968: jis0212<<14 | 0x1C<<7 | 0x22, - 24546 - 19968: jis0212<<14 | 0x1C<<7 | 0x23, - 24548 - 19968: jis0208<<14 | 0x36<<7 | 0x37, - 24552 - 19968: jis0212<<14 | 0x1C<<7 | 0x24, - 24553 - 19968: jis0212<<14 | 0x1C<<7 | 0x25, - 24554 - 19968: jis0212<<14 | 0x1C<<7 | 0x26, - 24555 - 19968: jis0208<<14 | 0x11<<7 | 0x56, - 24556 - 19968: jis0212<<14 | 0x1C<<7 | 0x27, - 24557 - 19968: jis0212<<14 | 0x1C<<7 | 0x28, - 24558 - 19968: jis0212<<14 | 0x1C<<7 | 0x29, - 24559 - 19968: jis0212<<14 | 0x1C<<7 | 0x2A, - 24560 - 19968: jis0208<<14 | 0x37<<7 | 0x0C, - 24561 - 19968: jis0208<<14 | 0x36<<7 | 0x39, - 24562 - 19968: jis0212<<14 | 0x1C<<7 | 0x2B, - 24563 - 19968: jis0212<<14 | 0x1C<<7 | 0x2C, - 24565 - 19968: jis0208<<14 | 0x26<<7 | 0x0F, - 24566 - 19968: jis0212<<14 | 0x1C<<7 | 0x2D, - 24568 - 19968: jis0208<<14 | 0x36<<7 | 0x38, - 24570 - 19968: jis0212<<14 | 0x1C<<7 | 0x2E, - 24571 - 19968: jis0208<<14 | 0x36<<7 | 0x36, - 24572 - 19968: jis0212<<14 | 0x1C<<7 | 0x2F, - 24573 - 19968: jis0208<<14 | 0x18<<7 | 0x59, - 24575 - 19968: jis0208<<14 | 0x36<<7 | 0x3C, - 24583 - 19968: jis0212<<14 | 0x1C<<7 | 0x30, - 24586 - 19968: jis0212<<14 | 0x1C<<7 | 0x31, - 24589 - 19968: jis0212<<14 | 0x1C<<7 | 0x32, - 24590 - 19968: jis0208<<14 | 0x36<<7 | 0x42, - 24591 - 19968: jis0208<<14 | 0x36<<7 | 0x48, - 24592 - 19968: jis0208<<14 | 0x36<<7 | 0x40, - 24594 - 19968: jis0208<<14 | 0x24<<7 | 0x3B, - 24595 - 19968: jis0212<<14 | 0x1C<<7 | 0x33, - 24596 - 19968: jis0212<<14 | 0x1C<<7 | 0x34, - 24597 - 19968: jis0208<<14 | 0x36<<7 | 0x45, - 24598 - 19968: jis0208<<14 | 0x28<<7 | 0x3C, - 24599 - 19968: jis0212<<14 | 0x1C<<7 | 0x35, - 24600 - 19968: jis0212<<14 | 0x1C<<7 | 0x36, - 24601 - 19968: jis0208<<14 | 0x36<<7 | 0x3F, - 24602 - 19968: jis0212<<14 | 0x1C<<7 | 0x37, - 24603 - 19968: jis0208<<14 | 0x36<<7 | 0x44, - 24604 - 19968: jis0208<<14 | 0x2D<<7 | 0x46, - 24605 - 19968: jis0208<<14 | 0x1A<<7 | 0x36, - 24607 - 19968: jis0212<<14 | 0x1C<<7 | 0x38, - 24608 - 19968: jis0208<<14 | 0x21<<7 | 0x34, - 24609 - 19968: jis0208<<14 | 0x36<<7 | 0x3D, - 24612 - 19968: jis0212<<14 | 0x1C<<7 | 0x39, - 24613 - 19968: jis0208<<14 | 0x14<<7 | 0x3D, - 24614 - 19968: jis0208<<14 | 0x36<<7 | 0x47, - 24615 - 19968: jis0208<<14 | 0x1F<<7 | 0x0C, - 24616 - 19968: jis0208<<14 | 0x10<<7 | 0x44, - 24617 - 19968: jis0208<<14 | 0x36<<7 | 0x41, - 24618 - 19968: jis0208<<14 | 0x11<<7 | 0x57, - 24619 - 19968: jis0208<<14 | 0x36<<7 | 0x46, - 24621 - 19968: jis0212<<14 | 0x1C<<7 | 0x3A, - 24623 - 19968: jis0208<<14 | 0x15<<7 | 0x10, - 24625 - 19968: jis0208<<14 | 0x36<<7 | 0x43, - 24627 - 19968: jis0212<<14 | 0x1C<<7 | 0x3B, - 24629 - 19968: jis0212<<14 | 0x1C<<7 | 0x3C, - 24634 - 19968: jis0208<<14 | 0x36<<7 | 0x49, - 24640 - 19968: jis0212<<14 | 0x1C<<7 | 0x3D, - 24641 - 19968: jis0208<<14 | 0x36<<7 | 0x4B, - 24642 - 19968: jis0208<<14 | 0x36<<7 | 0x55, - 24643 - 19968: jis0208<<14 | 0x36<<7 | 0x53, - 24646 - 19968: jis0208<<14 | 0x36<<7 | 0x50, - 24647 - 19968: jis0212<<14 | 0x1C<<7 | 0x3E, - 24648 - 19968: jis0212<<14 | 0x1C<<7 | 0x3F, - 24649 - 19968: jis0212<<14 | 0x1C<<7 | 0x40, - 24650 - 19968: jis0208<<14 | 0x36<<7 | 0x4F, - 24651 - 19968: jis0208<<14 | 0x2D<<7 | 0x57, - 24652 - 19968: jis0212<<14 | 0x1C<<7 | 0x41, - 24653 - 19968: jis0208<<14 | 0x36<<7 | 0x51, - 24656 - 19968: jis0208<<14 | 0x15<<7 | 0x11, - 24657 - 19968: jis0212<<14 | 0x1C<<7 | 0x42, - 24658 - 19968: jis0208<<14 | 0x18<<7 | 0x10, - 24660 - 19968: jis0212<<14 | 0x1C<<7 | 0x43, - 24661 - 19968: jis0208<<14 | 0x1C<<7 | 0x59, - 24662 - 19968: jis0212<<14 | 0x1C<<7 | 0x44, - 24663 - 19968: jis0212<<14 | 0x1C<<7 | 0x45, - 24665 - 19968: jis0208<<14 | 0x36<<7 | 0x58, - 24666 - 19968: jis0208<<14 | 0x36<<7 | 0x4A, - 24669 - 19968: jis0208<<14 | 0x59<<7 | 0x01, - 24671 - 19968: jis0208<<14 | 0x36<<7 | 0x4E, - 24672 - 19968: jis0208<<14 | 0x36<<7 | 0x3E, - 24673 - 19968: jis0212<<14 | 0x1C<<7 | 0x47, - 24674 - 19968: jis0208<<14 | 0x11<<7 | 0x59, - 24675 - 19968: jis0208<<14 | 0x36<<7 | 0x52, - 24676 - 19968: jis0208<<14 | 0x36<<7 | 0x54, - 24677 - 19968: jis0208<<14 | 0x22<<7 | 0x30, - 24679 - 19968: jis0212<<14 | 0x1C<<7 | 0x48, - 24680 - 19968: jis0208<<14 | 0x19<<7 | 0x07, - 24681 - 19968: jis0208<<14 | 0x11<<7 | 0x17, - 24682 - 19968: jis0208<<14 | 0x36<<7 | 0x4C, - 24683 - 19968: jis0208<<14 | 0x36<<7 | 0x57, - 24684 - 19968: jis0208<<14 | 0x36<<7 | 0x56, - 24685 - 19968: jis0208<<14 | 0x15<<7 | 0x12, - 24687 - 19968: jis0208<<14 | 0x21<<7 | 0x08, - 24688 - 19968: jis0208<<14 | 0x12<<7 | 0x45, - 24689 - 19968: jis0212<<14 | 0x1C<<7 | 0x49, - 24693 - 19968: jis0208<<14 | 0x16<<7 | 0x22, - 24695 - 19968: jis0208<<14 | 0x36<<7 | 0x4D, - 24702 - 19968: jis0212<<14 | 0x1C<<7 | 0x4A, - 24703 - 19968: jis0212<<14 | 0x1C<<7 | 0x4B, - 24705 - 19968: jis0208<<14 | 0x36<<7 | 0x59, - 24706 - 19968: jis0212<<14 | 0x1C<<7 | 0x4C, - 24707 - 19968: jis0208<<14 | 0x36<<7 | 0x5C, - 24708 - 19968: jis0208<<14 | 0x37<<7 | 0x00, - 24709 - 19968: jis0208<<14 | 0x59<<7 | 0x02, - 24710 - 19968: jis0212<<14 | 0x1C<<7 | 0x4D, - 24712 - 19968: jis0212<<14 | 0x1C<<7 | 0x4E, - 24713 - 19968: jis0208<<14 | 0x1B<<7 | 0x1C, - 24714 - 19968: jis0208<<14 | 0x59<<7 | 0x03, - 24715 - 19968: jis0208<<14 | 0x37<<7 | 0x06, - 24716 - 19968: jis0208<<14 | 0x23<<7 | 0x4F, - 24717 - 19968: jis0208<<14 | 0x36<<7 | 0x5A, - 24718 - 19968: jis0212<<14 | 0x1C<<7 | 0x50, - 24721 - 19968: jis0212<<14 | 0x1C<<7 | 0x51, - 24722 - 19968: jis0208<<14 | 0x37<<7 | 0x04, - 24723 - 19968: jis0212<<14 | 0x1C<<7 | 0x52, - 24724 - 19968: jis0208<<14 | 0x11<<7 | 0x58, - 24725 - 19968: jis0212<<14 | 0x1C<<7 | 0x53, - 24726 - 19968: jis0208<<14 | 0x37<<7 | 0x02, - 24727 - 19968: jis0208<<14 | 0x37<<7 | 0x03, - 24728 - 19968: jis0212<<14 | 0x1C<<7 | 0x54, - 24730 - 19968: jis0208<<14 | 0x36<<7 | 0x5D, - 24731 - 19968: jis0208<<14 | 0x37<<7 | 0x01, - 24733 - 19968: jis0212<<14 | 0x1C<<7 | 0x55, - 24734 - 19968: jis0212<<14 | 0x1C<<7 | 0x56, - 24735 - 19968: jis0208<<14 | 0x17<<7 | 0x46, - 24736 - 19968: jis0208<<14 | 0x2C<<7 | 0x09, - 24738 - 19968: jis0212<<14 | 0x1C<<7 | 0x57, - 24739 - 19968: jis0208<<14 | 0x13<<7 | 0x14, - 24740 - 19968: jis0212<<14 | 0x1C<<7 | 0x58, - 24741 - 19968: jis0212<<14 | 0x1C<<7 | 0x59, - 24742 - 19968: jis0208<<14 | 0x10<<7 | 0x38, - 24743 - 19968: jis0208<<14 | 0x37<<7 | 0x05, - 24744 - 19968: jis0212<<14 | 0x1C<<7 | 0x5A, - 24745 - 19968: jis0208<<14 | 0x26<<7 | 0x19, - 24746 - 19968: jis0208<<14 | 0x0F<<7 | 0x0C, - 24752 - 19968: jis0212<<14 | 0x1C<<7 | 0x5B, - 24753 - 19968: jis0212<<14 | 0x1C<<7 | 0x5C, - 24754 - 19968: jis0208<<14 | 0x27<<7 | 0x40, - 24755 - 19968: jis0208<<14 | 0x36<<7 | 0x3B, - 24756 - 19968: jis0208<<14 | 0x37<<7 | 0x0B, - 24757 - 19968: jis0208<<14 | 0x37<<7 | 0x0F, - 24758 - 19968: jis0208<<14 | 0x2B<<7 | 0x44, - 24759 - 19968: jis0212<<14 | 0x1C<<7 | 0x5D, - 24760 - 19968: jis0208<<14 | 0x37<<7 | 0x08, - 24763 - 19968: jis0212<<14 | 0x1D<<7 | 0x00, - 24764 - 19968: jis0208<<14 | 0x24<<7 | 0x48, - 24765 - 19968: jis0208<<14 | 0x37<<7 | 0x0D, - 24766 - 19968: jis0212<<14 | 0x1D<<7 | 0x01, - 24770 - 19968: jis0212<<14 | 0x1D<<7 | 0x02, - 24772 - 19968: jis0212<<14 | 0x1D<<7 | 0x03, - 24773 - 19968: jis0208<<14 | 0x1D<<7 | 0x4F, - 24774 - 19968: jis0208<<14 | 0x37<<7 | 0x0E, - 24775 - 19968: jis0208<<14 | 0x25<<7 | 0x36, - 24776 - 19968: jis0212<<14 | 0x1D<<7 | 0x04, - 24777 - 19968: jis0212<<14 | 0x1D<<7 | 0x05, - 24778 - 19968: jis0212<<14 | 0x1D<<7 | 0x06, - 24779 - 19968: jis0212<<14 | 0x1D<<7 | 0x07, - 24782 - 19968: jis0212<<14 | 0x1D<<7 | 0x08, - 24783 - 19968: jis0212<<14 | 0x1D<<7 | 0x09, - 24785 - 19968: jis0208<<14 | 0x2E<<7 | 0x26, - 24787 - 19968: jis0208<<14 | 0x37<<7 | 0x0A, - 24788 - 19968: jis0212<<14 | 0x1D<<7 | 0x0A, - 24789 - 19968: jis0208<<14 | 0x59<<7 | 0x05, - 24792 - 19968: jis0208<<14 | 0x37<<7 | 0x10, - 24793 - 19968: jis0212<<14 | 0x1D<<7 | 0x0C, - 24794 - 19968: jis0208<<14 | 0x18<<7 | 0x5A, - 24795 - 19968: jis0212<<14 | 0x1D<<7 | 0x0D, - 24796 - 19968: jis0208<<14 | 0x1F<<7 | 0x2A, - 24797 - 19968: jis0212<<14 | 0x1D<<7 | 0x0E, - 24798 - 19968: jis0208<<14 | 0x59<<7 | 0x04, - 24799 - 19968: jis0208<<14 | 0x0F<<7 | 0x33, - 24800 - 19968: jis0208<<14 | 0x37<<7 | 0x09, - 24801 - 19968: jis0208<<14 | 0x37<<7 | 0x07, - 24802 - 19968: jis0212<<14 | 0x1D<<7 | 0x10, - 24803 - 19968: jis0208<<14 | 0x20<<7 | 0x39, - 24805 - 19968: jis0212<<14 | 0x1D<<7 | 0x11, - 24807 - 19968: jis0208<<14 | 0x36<<7 | 0x5B, - 24808 - 19968: jis0208<<14 | 0x1A<<7 | 0x13, - 24816 - 19968: jis0208<<14 | 0x21<<7 | 0x25, - 24817 - 19968: jis0208<<14 | 0x37<<7 | 0x1C, - 24818 - 19968: jis0208<<14 | 0x59<<7 | 0x07, - 24819 - 19968: jis0208<<14 | 0x20<<7 | 0x3A, - 24820 - 19968: jis0208<<14 | 0x37<<7 | 0x17, - 24821 - 19968: jis0212<<14 | 0x1D<<7 | 0x13, - 24822 - 19968: jis0208<<14 | 0x37<<7 | 0x14, - 24823 - 19968: jis0208<<14 | 0x37<<7 | 0x15, - 24824 - 19968: jis0212<<14 | 0x1D<<7 | 0x14, - 24825 - 19968: jis0208<<14 | 0x1B<<7 | 0x45, - 24826 - 19968: jis0208<<14 | 0x37<<7 | 0x18, - 24827 - 19968: jis0208<<14 | 0x37<<7 | 0x1B, - 24828 - 19968: jis0212<<14 | 0x1D<<7 | 0x15, - 24829 - 19968: jis0212<<14 | 0x1D<<7 | 0x16, - 24832 - 19968: jis0208<<14 | 0x37<<7 | 0x16, - 24833 - 19968: jis0208<<14 | 0x1C<<7 | 0x04, - 24834 - 19968: jis0212<<14 | 0x1D<<7 | 0x17, - 24835 - 19968: jis0208<<14 | 0x37<<7 | 0x19, - 24838 - 19968: jis0208<<14 | 0x37<<7 | 0x13, - 24839 - 19968: jis0212<<14 | 0x1D<<7 | 0x18, - 24840 - 19968: jis0208<<14 | 0x2B<<7 | 0x5B, - 24841 - 19968: jis0208<<14 | 0x2B<<7 | 0x5A, - 24842 - 19968: jis0212<<14 | 0x1D<<7 | 0x19, - 24844 - 19968: jis0212<<14 | 0x1D<<7 | 0x1A, - 24845 - 19968: jis0208<<14 | 0x37<<7 | 0x1D, - 24846 - 19968: jis0208<<14 | 0x37<<7 | 0x1E, - 24847 - 19968: jis0208<<14 | 0x0F<<7 | 0x34, - 24848 - 19968: jis0212<<14 | 0x1D<<7 | 0x1B, - 24849 - 19968: jis0208<<14 | 0x59<<7 | 0x08, - 24850 - 19968: jis0212<<14 | 0x1D<<7 | 0x1D, - 24851 - 19968: jis0212<<14 | 0x1D<<7 | 0x1E, - 24852 - 19968: jis0212<<14 | 0x1D<<7 | 0x1F, - 24853 - 19968: jis0208<<14 | 0x37<<7 | 0x12, - 24854 - 19968: jis0212<<14 | 0x1D<<7 | 0x20, - 24855 - 19968: jis0212<<14 | 0x1D<<7 | 0x21, - 24857 - 19968: jis0212<<14 | 0x1D<<7 | 0x22, - 24858 - 19968: jis0208<<14 | 0x15<<7 | 0x51, - 24859 - 19968: jis0208<<14 | 0x0F<<7 | 0x05, - 24860 - 19968: jis0212<<14 | 0x1D<<7 | 0x23, - 24862 - 19968: jis0212<<14 | 0x1D<<7 | 0x24, - 24863 - 19968: jis0208<<14 | 0x13<<7 | 0x15, - 24864 - 19968: jis0208<<14 | 0x59<<7 | 0x06, - 24865 - 19968: jis0208<<14 | 0x37<<7 | 0x1A, - 24866 - 19968: jis0212<<14 | 0x1D<<7 | 0x25, - 24871 - 19968: jis0208<<14 | 0x37<<7 | 0x22, - 24872 - 19968: jis0208<<14 | 0x37<<7 | 0x21, - 24874 - 19968: jis0212<<14 | 0x1D<<7 | 0x26, - 24875 - 19968: jis0212<<14 | 0x1D<<7 | 0x27, - 24876 - 19968: jis0208<<14 | 0x37<<7 | 0x26, - 24880 - 19968: jis0208<<14 | 0x59<<7 | 0x0A, - 24881 - 19968: jis0212<<14 | 0x1D<<7 | 0x29, - 24884 - 19968: jis0208<<14 | 0x37<<7 | 0x27, - 24885 - 19968: jis0212<<14 | 0x1D<<7 | 0x2A, - 24886 - 19968: jis0212<<14 | 0x1D<<7 | 0x2B, - 24887 - 19968: jis0208<<14 | 0x59<<7 | 0x09, - 24889 - 19968: jis0212<<14 | 0x1D<<7 | 0x2D, - 24892 - 19968: jis0208<<14 | 0x37<<7 | 0x25, - 24893 - 19968: jis0208<<14 | 0x37<<7 | 0x28, - 24894 - 19968: jis0208<<14 | 0x37<<7 | 0x20, - 24895 - 19968: jis0208<<14 | 0x37<<7 | 0x24, - 24897 - 19968: jis0212<<14 | 0x1D<<7 | 0x2E, - 24898 - 19968: jis0208<<14 | 0x37<<7 | 0x29, - 24900 - 19968: jis0208<<14 | 0x37<<7 | 0x2A, - 24901 - 19968: jis0212<<14 | 0x1D<<7 | 0x2F, - 24902 - 19968: jis0212<<14 | 0x1D<<7 | 0x30, - 24903 - 19968: jis0208<<14 | 0x37<<7 | 0x1F, - 24904 - 19968: jis0208<<14 | 0x1A<<7 | 0x5B, - 24905 - 19968: jis0212<<14 | 0x1D<<7 | 0x31, - 24906 - 19968: jis0208<<14 | 0x37<<7 | 0x23, - 24907 - 19968: jis0208<<14 | 0x21<<7 | 0x35, - 24908 - 19968: jis0208<<14 | 0x18<<7 | 0x11, - 24909 - 19968: jis0208<<14 | 0x37<<7 | 0x11, - 24910 - 19968: jis0208<<14 | 0x1E<<7 | 0x14, - 24915 - 19968: jis0208<<14 | 0x37<<7 | 0x37, - 24917 - 19968: jis0208<<14 | 0x29<<7 | 0x48, - 24920 - 19968: jis0208<<14 | 0x37<<7 | 0x2D, - 24921 - 19968: jis0208<<14 | 0x37<<7 | 0x2E, - 24922 - 19968: jis0208<<14 | 0x37<<7 | 0x2F, - 24925 - 19968: jis0208<<14 | 0x37<<7 | 0x36, - 24926 - 19968: jis0212<<14 | 0x1D<<7 | 0x32, - 24927 - 19968: jis0208<<14 | 0x37<<7 | 0x35, - 24928 - 19968: jis0212<<14 | 0x1D<<7 | 0x33, - 24930 - 19968: jis0208<<14 | 0x2A<<7 | 0x5C, - 24931 - 19968: jis0208<<14 | 0x13<<7 | 0x16, - 24933 - 19968: jis0208<<14 | 0x37<<7 | 0x33, - 24935 - 19968: jis0208<<14 | 0x16<<7 | 0x24, - 24936 - 19968: jis0208<<14 | 0x12<<7 | 0x13, - 24939 - 19968: jis0208<<14 | 0x37<<7 | 0x30, - 24940 - 19968: jis0212<<14 | 0x1D<<7 | 0x34, - 24942 - 19968: jis0208<<14 | 0x2D<<7 | 0x17, - 24943 - 19968: jis0208<<14 | 0x37<<7 | 0x32, - 24944 - 19968: jis0208<<14 | 0x0F<<7 | 0x35, - 24945 - 19968: jis0208<<14 | 0x37<<7 | 0x34, - 24946 - 19968: jis0212<<14 | 0x1D<<7 | 0x35, - 24947 - 19968: jis0208<<14 | 0x37<<7 | 0x2B, - 24948 - 19968: jis0208<<14 | 0x37<<7 | 0x31, - 24949 - 19968: jis0208<<14 | 0x37<<7 | 0x38, - 24950 - 19968: jis0208<<14 | 0x16<<7 | 0x23, - 24951 - 19968: jis0208<<14 | 0x37<<7 | 0x2C, - 24952 - 19968: jis0212<<14 | 0x1D<<7 | 0x36, - 24955 - 19968: jis0212<<14 | 0x1D<<7 | 0x37, - 24956 - 19968: jis0212<<14 | 0x1D<<7 | 0x38, - 24958 - 19968: jis0208<<14 | 0x2C<<7 | 0x3C, - 24959 - 19968: jis0212<<14 | 0x1D<<7 | 0x39, - 24960 - 19968: jis0212<<14 | 0x1D<<7 | 0x3A, - 24961 - 19968: jis0212<<14 | 0x1D<<7 | 0x3B, - 24962 - 19968: jis0208<<14 | 0x2C<<7 | 0x0A, - 24963 - 19968: jis0212<<14 | 0x1D<<7 | 0x3C, - 24964 - 19968: jis0212<<14 | 0x1D<<7 | 0x3D, - 24967 - 19968: jis0208<<14 | 0x37<<7 | 0x3B, - 24970 - 19968: jis0208<<14 | 0x37<<7 | 0x3F, - 24971 - 19968: jis0212<<14 | 0x1D<<7 | 0x3E, - 24973 - 19968: jis0212<<14 | 0x1D<<7 | 0x3F, - 24974 - 19968: jis0208<<14 | 0x20<<7 | 0x5D, - 24976 - 19968: jis0208<<14 | 0x2D<<7 | 0x58, - 24977 - 19968: jis0208<<14 | 0x37<<7 | 0x40, - 24978 - 19968: jis0212<<14 | 0x1D<<7 | 0x40, - 24979 - 19968: jis0212<<14 | 0x1D<<7 | 0x41, - 24980 - 19968: jis0208<<14 | 0x37<<7 | 0x3D, - 24982 - 19968: jis0208<<14 | 0x37<<7 | 0x3A, - 24983 - 19968: jis0212<<14 | 0x1D<<7 | 0x42, - 24984 - 19968: jis0208<<14 | 0x59<<7 | 0x0B, - 24985 - 19968: jis0208<<14 | 0x37<<7 | 0x39, - 24986 - 19968: jis0208<<14 | 0x37<<7 | 0x3E, - 24988 - 19968: jis0212<<14 | 0x1D<<7 | 0x44, - 24989 - 19968: jis0212<<14 | 0x1D<<7 | 0x45, - 24991 - 19968: jis0212<<14 | 0x1D<<7 | 0x46, - 24992 - 19968: jis0212<<14 | 0x1D<<7 | 0x47, - 24996 - 19968: jis0208<<14 | 0x29<<7 | 0x0F, - 24997 - 19968: jis0212<<14 | 0x1D<<7 | 0x48, - 24999 - 19968: jis0208<<14 | 0x25<<7 | 0x13, - 25000 - 19968: jis0212<<14 | 0x1D<<7 | 0x49, - 25001 - 19968: jis0208<<14 | 0x16<<7 | 0x25, - 25002 - 19968: jis0212<<14 | 0x1D<<7 | 0x4A, - 25003 - 19968: jis0208<<14 | 0x37<<7 | 0x41, - 25004 - 19968: jis0208<<14 | 0x37<<7 | 0x3C, - 25005 - 19968: jis0212<<14 | 0x1D<<7 | 0x4B, - 25006 - 19968: jis0208<<14 | 0x37<<7 | 0x42, - 25010 - 19968: jis0208<<14 | 0x16<<7 | 0x5A, - 25014 - 19968: jis0208<<14 | 0x11<<7 | 0x10, - 25016 - 19968: jis0212<<14 | 0x1D<<7 | 0x4C, - 25017 - 19968: jis0212<<14 | 0x1D<<7 | 0x4D, - 25018 - 19968: jis0208<<14 | 0x37<<7 | 0x4A, - 25020 - 19968: jis0212<<14 | 0x1D<<7 | 0x4E, - 25022 - 19968: jis0208<<14 | 0x13<<7 | 0x17, - 25024 - 19968: jis0212<<14 | 0x1D<<7 | 0x4F, - 25025 - 19968: jis0212<<14 | 0x1D<<7 | 0x50, - 25026 - 19968: jis0212<<14 | 0x1D<<7 | 0x51, - 25027 - 19968: jis0208<<14 | 0x37<<7 | 0x48, - 25030 - 19968: jis0208<<14 | 0x37<<7 | 0x49, - 25031 - 19968: jis0208<<14 | 0x19<<7 | 0x08, - 25032 - 19968: jis0208<<14 | 0x37<<7 | 0x47, - 25033 - 19968: jis0208<<14 | 0x37<<7 | 0x45, - 25034 - 19968: jis0208<<14 | 0x37<<7 | 0x44, - 25035 - 19968: jis0208<<14 | 0x37<<7 | 0x4B, - 25036 - 19968: jis0208<<14 | 0x37<<7 | 0x43, - 25037 - 19968: jis0208<<14 | 0x37<<7 | 0x4D, - 25038 - 19968: jis0212<<14 | 0x1D<<7 | 0x52, - 25039 - 19968: jis0212<<14 | 0x1D<<7 | 0x53, - 25040 - 19968: jis0208<<14 | 0x11<<7 | 0x5A, - 25045 - 19968: jis0212<<14 | 0x1D<<7 | 0x54, - 25052 - 19968: jis0212<<14 | 0x1D<<7 | 0x55, - 25053 - 19968: jis0212<<14 | 0x1D<<7 | 0x56, - 25054 - 19968: jis0212<<14 | 0x1D<<7 | 0x57, - 25055 - 19968: jis0212<<14 | 0x1D<<7 | 0x58, - 25057 - 19968: jis0212<<14 | 0x1D<<7 | 0x59, - 25058 - 19968: jis0212<<14 | 0x1D<<7 | 0x5A, - 25059 - 19968: jis0208<<14 | 0x37<<7 | 0x4F, - 25061 - 19968: jis0212<<14 | 0x1D<<7 | 0x5D, - 25062 - 19968: jis0208<<14 | 0x37<<7 | 0x4E, - 25063 - 19968: jis0212<<14 | 0x1D<<7 | 0x5B, - 25065 - 19968: jis0212<<14 | 0x1D<<7 | 0x5C, - 25068 - 19968: jis0212<<14 | 0x1E<<7 | 0x00, - 25069 - 19968: jis0212<<14 | 0x1E<<7 | 0x01, - 25071 - 19968: jis0212<<14 | 0x1E<<7 | 0x02, - 25074 - 19968: jis0208<<14 | 0x23<<7 | 0x07, - 25076 - 19968: jis0208<<14 | 0x37<<7 | 0x52, - 25078 - 19968: jis0208<<14 | 0x37<<7 | 0x50, - 25079 - 19968: jis0208<<14 | 0x37<<7 | 0x46, - 25080 - 19968: jis0208<<14 | 0x16<<7 | 0x5B, - 25082 - 19968: jis0208<<14 | 0x37<<7 | 0x51, - 25084 - 19968: jis0208<<14 | 0x37<<7 | 0x55, - 25085 - 19968: jis0208<<14 | 0x37<<7 | 0x54, - 25086 - 19968: jis0208<<14 | 0x37<<7 | 0x56, - 25087 - 19968: jis0208<<14 | 0x37<<7 | 0x53, - 25088 - 19968: jis0208<<14 | 0x37<<7 | 0x57, - 25089 - 19968: jis0212<<14 | 0x1E<<7 | 0x03, - 25091 - 19968: jis0212<<14 | 0x1E<<7 | 0x04, - 25092 - 19968: jis0212<<14 | 0x1E<<7 | 0x05, - 25095 - 19968: jis0212<<14 | 0x1E<<7 | 0x06, - 25096 - 19968: jis0208<<14 | 0x37<<7 | 0x58, - 25097 - 19968: jis0208<<14 | 0x37<<7 | 0x59, - 25098 - 19968: jis0208<<14 | 0x29<<7 | 0x49, - 25100 - 19968: jis0208<<14 | 0x37<<7 | 0x5B, - 25101 - 19968: jis0208<<14 | 0x37<<7 | 0x5A, - 25102 - 19968: jis0208<<14 | 0x1C<<7 | 0x1E, - 25104 - 19968: jis0208<<14 | 0x1F<<7 | 0x0D, - 25105 - 19968: jis0208<<14 | 0x11<<7 | 0x45, - 25106 - 19968: jis0208<<14 | 0x11<<7 | 0x5B, - 25107 - 19968: jis0208<<14 | 0x59<<7 | 0x0C, - 25108 - 19968: jis0208<<14 | 0x37<<7 | 0x5C, - 25109 - 19968: jis0212<<14 | 0x1E<<7 | 0x08, - 25110 - 19968: jis0208<<14 | 0x0F<<7 | 0x1E, - 25114 - 19968: jis0208<<14 | 0x1F<<7 | 0x2B, - 25115 - 19968: jis0208<<14 | 0x37<<7 | 0x5D, - 25116 - 19968: jis0212<<14 | 0x1E<<7 | 0x09, - 25117 - 19968: jis0208<<14 | 0x4B<<7 | 0x22, - 25118 - 19968: jis0208<<14 | 0x38<<7 | 0x00, - 25119 - 19968: jis0208<<14 | 0x16<<7 | 0x40, - 25120 - 19968: jis0212<<14 | 0x1E<<7 | 0x0A, - 25121 - 19968: jis0208<<14 | 0x38<<7 | 0x01, - 25122 - 19968: jis0212<<14 | 0x1E<<7 | 0x0B, - 25123 - 19968: jis0212<<14 | 0x1E<<7 | 0x0C, - 25126 - 19968: jis0208<<14 | 0x1F<<7 | 0x4E, - 25127 - 19968: jis0212<<14 | 0x1E<<7 | 0x0D, - 25129 - 19968: jis0212<<14 | 0x1E<<7 | 0x0E, - 25130 - 19968: jis0208<<14 | 0x38<<7 | 0x02, - 25131 - 19968: jis0212<<14 | 0x1E<<7 | 0x0F, - 25134 - 19968: jis0208<<14 | 0x38<<7 | 0x03, - 25135 - 19968: jis0208<<14 | 0x14<<7 | 0x19, - 25136 - 19968: jis0208<<14 | 0x38<<7 | 0x04, - 25138 - 19968: jis0208<<14 | 0x38<<7 | 0x05, - 25139 - 19968: jis0208<<14 | 0x38<<7 | 0x06, - 25140 - 19968: jis0208<<14 | 0x21<<7 | 0x36, - 25144 - 19968: jis0208<<14 | 0x17<<7 | 0x2C, - 25145 - 19968: jis0212<<14 | 0x1E<<7 | 0x10, - 25147 - 19968: jis0208<<14 | 0x2B<<7 | 0x40, - 25149 - 19968: jis0212<<14 | 0x1E<<7 | 0x11, - 25151 - 19968: jis0208<<14 | 0x2A<<7 | 0x1B, - 25152 - 19968: jis0208<<14 | 0x1C<<7 | 0x49, - 25153 - 19968: jis0208<<14 | 0x38<<7 | 0x07, - 25154 - 19968: jis0212<<14 | 0x1E<<7 | 0x12, - 25155 - 19968: jis0212<<14 | 0x1E<<7 | 0x13, - 25156 - 19968: jis0212<<14 | 0x1E<<7 | 0x14, - 25158 - 19968: jis0212<<14 | 0x1E<<7 | 0x15, - 25159 - 19968: jis0208<<14 | 0x1F<<7 | 0x4F, - 25160 - 19968: jis0208<<14 | 0x4D<<7 | 0x1C, - 25161 - 19968: jis0208<<14 | 0x27<<7 | 0x41, - 25163 - 19968: jis0208<<14 | 0x1B<<7 | 0x49, - 25164 - 19968: jis0212<<14 | 0x1E<<7 | 0x16, - 25165 - 19968: jis0208<<14 | 0x19<<7 | 0x2C, - 25166 - 19968: jis0208<<14 | 0x38<<7 | 0x08, - 25168 - 19968: jis0212<<14 | 0x1E<<7 | 0x17, - 25169 - 19968: jis0212<<14 | 0x1E<<7 | 0x18, - 25170 - 19968: jis0212<<14 | 0x1E<<7 | 0x19, - 25171 - 19968: jis0208<<14 | 0x21<<7 | 0x26, - 25172 - 19968: jis0212<<14 | 0x1E<<7 | 0x1A, - 25173 - 19968: jis0208<<14 | 0x29<<7 | 0x06, - 25174 - 19968: jis0212<<14 | 0x1E<<7 | 0x1B, - 25176 - 19968: jis0208<<14 | 0x21<<7 | 0x50, - 25178 - 19968: jis0212<<14 | 0x1E<<7 | 0x1C, - 25179 - 19968: jis0208<<14 | 0x38<<7 | 0x0B, - 25180 - 19968: jis0212<<14 | 0x1E<<7 | 0x1D, - 25182 - 19968: jis0208<<14 | 0x38<<7 | 0x09, - 25184 - 19968: jis0208<<14 | 0x38<<7 | 0x0C, - 25187 - 19968: jis0208<<14 | 0x38<<7 | 0x0A, - 25188 - 19968: jis0212<<14 | 0x1E<<7 | 0x1E, - 25192 - 19968: jis0208<<14 | 0x38<<7 | 0x0D, - 25197 - 19968: jis0212<<14 | 0x1E<<7 | 0x1F, - 25198 - 19968: jis0208<<14 | 0x29<<7 | 0x10, - 25199 - 19968: jis0212<<14 | 0x1E<<7 | 0x20, - 25201 - 19968: jis0208<<14 | 0x0F<<7 | 0x16, - 25203 - 19968: jis0212<<14 | 0x1E<<7 | 0x21, - 25206 - 19968: jis0208<<14 | 0x28<<7 | 0x3D, - 25209 - 19968: jis0208<<14 | 0x27<<7 | 0x42, - 25210 - 19968: jis0212<<14 | 0x1E<<7 | 0x22, - 25212 - 19968: jis0208<<14 | 0x38<<7 | 0x0E, - 25213 - 19968: jis0212<<14 | 0x1E<<7 | 0x23, - 25214 - 19968: jis0208<<14 | 0x38<<7 | 0x11, - 25215 - 19968: jis0208<<14 | 0x1D<<7 | 0x14, - 25216 - 19968: jis0208<<14 | 0x14<<7 | 0x1A, - 25218 - 19968: jis0208<<14 | 0x38<<7 | 0x0F, - 25219 - 19968: jis0208<<14 | 0x38<<7 | 0x16, - 25220 - 19968: jis0208<<14 | 0x1D<<7 | 0x15, - 25225 - 19968: jis0208<<14 | 0x38<<7 | 0x10, - 25226 - 19968: jis0208<<14 | 0x26<<7 | 0x23, - 25229 - 19968: jis0212<<14 | 0x1E<<7 | 0x24, - 25230 - 19968: jis0212<<14 | 0x1E<<7 | 0x25, - 25231 - 19968: jis0212<<14 | 0x1E<<7 | 0x26, - 25232 - 19968: jis0212<<14 | 0x1E<<7 | 0x27, - 25233 - 19968: jis0208<<14 | 0x2C<<7 | 0x3D, - 25234 - 19968: jis0208<<14 | 0x38<<7 | 0x12, - 25235 - 19968: jis0208<<14 | 0x38<<7 | 0x13, - 25236 - 19968: jis0208<<14 | 0x38<<7 | 0x17, - 25237 - 19968: jis0208<<14 | 0x24<<7 | 0x49, - 25238 - 19968: jis0208<<14 | 0x38<<7 | 0x14, - 25239 - 19968: jis0208<<14 | 0x18<<7 | 0x12, - 25240 - 19968: jis0208<<14 | 0x1F<<7 | 0x3D, - 25243 - 19968: jis0208<<14 | 0x38<<7 | 0x25, - 25244 - 19968: jis0208<<14 | 0x27<<7 | 0x13, - 25246 - 19968: jis0208<<14 | 0x21<<7 | 0x51, - 25254 - 19968: jis0208<<14 | 0x59<<7 | 0x0D, - 25256 - 19968: jis0212<<14 | 0x1E<<7 | 0x29, - 25259 - 19968: jis0208<<14 | 0x27<<7 | 0x43, - 25260 - 19968: jis0208<<14 | 0x39<<7 | 0x0C, - 25265 - 19968: jis0208<<14 | 0x29<<7 | 0x59, - 25267 - 19968: jis0212<<14 | 0x1E<<7 | 0x2A, - 25269 - 19968: jis0208<<14 | 0x23<<7 | 0x50, - 25270 - 19968: jis0212<<14 | 0x1E<<7 | 0x2B, - 25271 - 19968: jis0212<<14 | 0x1E<<7 | 0x2C, - 25273 - 19968: jis0208<<14 | 0x2A<<7 | 0x54, - 25274 - 19968: jis0212<<14 | 0x1E<<7 | 0x2D, - 25275 - 19968: jis0208<<14 | 0x38<<7 | 0x1A, - 25276 - 19968: jis0208<<14 | 0x11<<7 | 0x00, - 25277 - 19968: jis0208<<14 | 0x22<<7 | 0x49, - 25278 - 19968: jis0212<<14 | 0x1E<<7 | 0x2E, - 25279 - 19968: jis0212<<14 | 0x1E<<7 | 0x2F, - 25282 - 19968: jis0208<<14 | 0x38<<7 | 0x23, - 25284 - 19968: jis0212<<14 | 0x1E<<7 | 0x30, - 25285 - 19968: jis0208<<14 | 0x22<<7 | 0x13, - 25286 - 19968: jis0208<<14 | 0x38<<7 | 0x1D, - 25287 - 19968: jis0208<<14 | 0x38<<7 | 0x24, - 25288 - 19968: jis0208<<14 | 0x38<<7 | 0x1F, - 25289 - 19968: jis0208<<14 | 0x38<<7 | 0x26, - 25290 - 19968: jis0208<<14 | 0x38<<7 | 0x22, - 25292 - 19968: jis0208<<14 | 0x38<<7 | 0x21, - 25293 - 19968: jis0208<<14 | 0x26<<7 | 0x4E, - 25294 - 19968: jis0212<<14 | 0x1E<<7 | 0x31, - 25295 - 19968: jis0208<<14 | 0x38<<7 | 0x1B, - 25296 - 19968: jis0208<<14 | 0x11<<7 | 0x5C, - 25297 - 19968: jis0208<<14 | 0x38<<7 | 0x19, - 25298 - 19968: jis0208<<14 | 0x14<<7 | 0x50, - 25299 - 19968: jis0208<<14 | 0x21<<7 | 0x52, - 25300 - 19968: jis0208<<14 | 0x38<<7 | 0x15, - 25301 - 19968: jis0212<<14 | 0x1E<<7 | 0x32, - 25302 - 19968: jis0212<<14 | 0x1E<<7 | 0x33, - 25303 - 19968: jis0208<<14 | 0x38<<7 | 0x18, - 25304 - 19968: jis0208<<14 | 0x18<<7 | 0x13, - 25305 - 19968: jis0208<<14 | 0x1F<<7 | 0x3A, - 25306 - 19968: jis0212<<14 | 0x1E<<7 | 0x34, - 25307 - 19968: jis0208<<14 | 0x1D<<7 | 0x16, - 25308 - 19968: jis0208<<14 | 0x38<<7 | 0x20, - 25309 - 19968: jis0208<<14 | 0x26<<7 | 0x31, - 25312 - 19968: jis0208<<14 | 0x14<<7 | 0x51, - 25313 - 19968: jis0208<<14 | 0x12<<7 | 0x27, - 25322 - 19968: jis0212<<14 | 0x1E<<7 | 0x35, - 25324 - 19968: jis0208<<14 | 0x12<<7 | 0x46, - 25325 - 19968: jis0208<<14 | 0x1E<<7 | 0x00, - 25326 - 19968: jis0208<<14 | 0x38<<7 | 0x28, - 25327 - 19968: jis0208<<14 | 0x38<<7 | 0x2D, - 25329 - 19968: jis0208<<14 | 0x38<<7 | 0x29, - 25330 - 19968: jis0212<<14 | 0x1E<<7 | 0x36, - 25331 - 19968: jis0208<<14 | 0x16<<7 | 0x5C, - 25332 - 19968: jis0212<<14 | 0x1E<<7 | 0x37, - 25333 - 19968: jis0208<<14 | 0x38<<7 | 0x2E, - 25334 - 19968: jis0208<<14 | 0x1A<<7 | 0x01, - 25335 - 19968: jis0208<<14 | 0x18<<7 | 0x48, - 25340 - 19968: jis0212<<14 | 0x1E<<7 | 0x38, - 25341 - 19968: jis0212<<14 | 0x1E<<7 | 0x39, - 25342 - 19968: jis0208<<14 | 0x1C<<7 | 0x05, - 25343 - 19968: jis0208<<14 | 0x38<<7 | 0x1C, - 25345 - 19968: jis0208<<14 | 0x1A<<7 | 0x5C, - 25346 - 19968: jis0208<<14 | 0x38<<7 | 0x2B, - 25347 - 19968: jis0212<<14 | 0x1E<<7 | 0x3A, - 25348 - 19968: jis0212<<14 | 0x1E<<7 | 0x3B, - 25351 - 19968: jis0208<<14 | 0x1A<<7 | 0x37, - 25352 - 19968: jis0208<<14 | 0x38<<7 | 0x2C, - 25353 - 19968: jis0208<<14 | 0x0F<<7 | 0x23, - 25354 - 19968: jis0212<<14 | 0x1E<<7 | 0x3C, - 25355 - 19968: jis0212<<14 | 0x1E<<7 | 0x3D, - 25356 - 19968: jis0208<<14 | 0x38<<7 | 0x27, - 25357 - 19968: jis0212<<14 | 0x1E<<7 | 0x3E, - 25360 - 19968: jis0212<<14 | 0x1E<<7 | 0x3F, - 25361 - 19968: jis0208<<14 | 0x23<<7 | 0x08, - 25363 - 19968: jis0212<<14 | 0x1E<<7 | 0x40, - 25366 - 19968: jis0212<<14 | 0x1E<<7 | 0x41, - 25368 - 19968: jis0212<<14 | 0x1E<<7 | 0x42, - 25369 - 19968: jis0208<<14 | 0x14<<7 | 0x52, - 25375 - 19968: jis0208<<14 | 0x15<<7 | 0x13, - 25383 - 19968: jis0208<<14 | 0x38<<7 | 0x2A, - 25384 - 19968: jis0208<<14 | 0x0F<<7 | 0x06, - 25385 - 19968: jis0212<<14 | 0x1E<<7 | 0x43, - 25386 - 19968: jis0212<<14 | 0x1E<<7 | 0x44, - 25387 - 19968: jis0208<<14 | 0x19<<7 | 0x22, - 25389 - 19968: jis0212<<14 | 0x1E<<7 | 0x45, - 25391 - 19968: jis0208<<14 | 0x1E<<7 | 0x15, - 25397 - 19968: jis0212<<14 | 0x1E<<7 | 0x46, - 25398 - 19968: jis0212<<14 | 0x1E<<7 | 0x47, - 25401 - 19968: jis0212<<14 | 0x1E<<7 | 0x48, - 25402 - 19968: jis0208<<14 | 0x23<<7 | 0x51, - 25404 - 19968: jis0212<<14 | 0x1E<<7 | 0x49, - 25405 - 19968: jis0208<<14 | 0x27<<7 | 0x33, - 25406 - 19968: jis0208<<14 | 0x38<<7 | 0x30, - 25407 - 19968: jis0208<<14 | 0x20<<7 | 0x3D, - 25409 - 19968: jis0212<<14 | 0x1E<<7 | 0x4A, - 25410 - 19968: jis0212<<14 | 0x1E<<7 | 0x4B, - 25411 - 19968: jis0212<<14 | 0x1E<<7 | 0x4C, - 25412 - 19968: jis0212<<14 | 0x1E<<7 | 0x4D, - 25414 - 19968: jis0212<<14 | 0x1E<<7 | 0x4E, - 25417 - 19968: jis0208<<14 | 0x21<<7 | 0x09, - 25418 - 19968: jis0212<<14 | 0x1E<<7 | 0x4F, - 25419 - 19968: jis0212<<14 | 0x1E<<7 | 0x50, - 25420 - 19968: jis0208<<14 | 0x1A<<7 | 0x0A, - 25421 - 19968: jis0208<<14 | 0x38<<7 | 0x31, - 25422 - 19968: jis0212<<14 | 0x1E<<7 | 0x51, - 25423 - 19968: jis0208<<14 | 0x38<<7 | 0x33, - 25424 - 19968: jis0208<<14 | 0x38<<7 | 0x2F, - 25426 - 19968: jis0212<<14 | 0x1E<<7 | 0x52, - 25427 - 19968: jis0212<<14 | 0x1E<<7 | 0x53, - 25428 - 19968: jis0212<<14 | 0x1E<<7 | 0x54, - 25429 - 19968: jis0208<<14 | 0x29<<7 | 0x40, - 25431 - 19968: jis0208<<14 | 0x23<<7 | 0x1C, - 25432 - 19968: jis0212<<14 | 0x1E<<7 | 0x55, - 25435 - 19968: jis0212<<14 | 0x1E<<7 | 0x56, - 25436 - 19968: jis0208<<14 | 0x20<<7 | 0x3B, - 25445 - 19968: jis0212<<14 | 0x1E<<7 | 0x57, - 25446 - 19968: jis0212<<14 | 0x1E<<7 | 0x58, - 25447 - 19968: jis0208<<14 | 0x29<<7 | 0x5A, - 25448 - 19968: jis0208<<14 | 0x1B<<7 | 0x2D, - 25449 - 19968: jis0208<<14 | 0x38<<7 | 0x3F, - 25451 - 19968: jis0208<<14 | 0x38<<7 | 0x3E, - 25452 - 19968: jis0212<<14 | 0x1E<<7 | 0x59, - 25453 - 19968: jis0212<<14 | 0x1E<<7 | 0x5A, - 25454 - 19968: jis0208<<14 | 0x1E<<7 | 0x57, - 25457 - 19968: jis0212<<14 | 0x1E<<7 | 0x5B, - 25458 - 19968: jis0208<<14 | 0x16<<7 | 0x5D, - 25460 - 19968: jis0212<<14 | 0x1E<<7 | 0x5C, - 25461 - 19968: jis0212<<14 | 0x1E<<7 | 0x5D, - 25462 - 19968: jis0208<<14 | 0x38<<7 | 0x38, - 25463 - 19968: jis0208<<14 | 0x1D<<7 | 0x18, - 25464 - 19968: jis0212<<14 | 0x1F<<7 | 0x00, - 25466 - 19968: jis0208<<14 | 0x25<<7 | 0x47, - 25467 - 19968: jis0208<<14 | 0x26<<7 | 0x10, - 25468 - 19968: jis0212<<14 | 0x1F<<7 | 0x01, - 25469 - 19968: jis0212<<14 | 0x1F<<7 | 0x02, - 25471 - 19968: jis0212<<14 | 0x1F<<7 | 0x03, - 25472 - 19968: jis0208<<14 | 0x38<<7 | 0x36, - 25474 - 19968: jis0212<<14 | 0x1F<<7 | 0x04, - 25475 - 19968: jis0208<<14 | 0x20<<7 | 0x3C, - 25476 - 19968: jis0212<<14 | 0x1F<<7 | 0x05, - 25479 - 19968: jis0212<<14 | 0x1F<<7 | 0x06, - 25480 - 19968: jis0208<<14 | 0x1B<<7 | 0x57, - 25481 - 19968: jis0208<<14 | 0x38<<7 | 0x3B, - 25482 - 19968: jis0212<<14 | 0x1F<<7 | 0x07, - 25484 - 19968: jis0208<<14 | 0x1D<<7 | 0x17, - 25486 - 19968: jis0208<<14 | 0x38<<7 | 0x35, - 25487 - 19968: jis0208<<14 | 0x38<<7 | 0x3A, - 25488 - 19968: jis0212<<14 | 0x1F<<7 | 0x08, - 25490 - 19968: jis0208<<14 | 0x26<<7 | 0x32, - 25492 - 19968: jis0212<<14 | 0x1F<<7 | 0x09, - 25493 - 19968: jis0212<<14 | 0x1F<<7 | 0x0A, - 25494 - 19968: jis0208<<14 | 0x38<<7 | 0x34, - 25496 - 19968: jis0208<<14 | 0x16<<7 | 0x00, - 25497 - 19968: jis0212<<14 | 0x1F<<7 | 0x0B, - 25498 - 19968: jis0212<<14 | 0x1F<<7 | 0x0C, - 25499 - 19968: jis0208<<14 | 0x12<<7 | 0x3C, - 25502 - 19968: jis0212<<14 | 0x1F<<7 | 0x0D, - 25503 - 19968: jis0208<<14 | 0x38<<7 | 0x3C, - 25504 - 19968: jis0208<<14 | 0x2D<<7 | 0x0A, - 25505 - 19968: jis0208<<14 | 0x19<<7 | 0x2D, - 25506 - 19968: jis0208<<14 | 0x22<<7 | 0x14, - 25507 - 19968: jis0208<<14 | 0x38<<7 | 0x39, - 25508 - 19968: jis0212<<14 | 0x1F<<7 | 0x0E, - 25509 - 19968: jis0208<<14 | 0x1F<<7 | 0x3B, - 25510 - 19968: jis0212<<14 | 0x1F<<7 | 0x0F, - 25511 - 19968: jis0208<<14 | 0x18<<7 | 0x14, - 25512 - 19968: jis0208<<14 | 0x1E<<7 | 0x43, - 25513 - 19968: jis0208<<14 | 0x10<<7 | 0x45, - 25514 - 19968: jis0208<<14 | 0x20<<7 | 0x1B, - 25515 - 19968: jis0208<<14 | 0x38<<7 | 0x37, - 25516 - 19968: jis0208<<14 | 0x14<<7 | 0x24, - 25517 - 19968: jis0212<<14 | 0x1F<<7 | 0x10, - 25518 - 19968: jis0212<<14 | 0x1F<<7 | 0x11, - 25519 - 19968: jis0212<<14 | 0x1F<<7 | 0x12, - 25522 - 19968: jis0208<<14 | 0x16<<7 | 0x26, - 25524 - 19968: jis0208<<14 | 0x23<<7 | 0x2E, - 25525 - 19968: jis0208<<14 | 0x38<<7 | 0x3D, - 25531 - 19968: jis0208<<14 | 0x20<<7 | 0x3E, - 25533 - 19968: jis0212<<14 | 0x1F<<7 | 0x13, - 25534 - 19968: jis0208<<14 | 0x38<<7 | 0x40, - 25536 - 19968: jis0208<<14 | 0x38<<7 | 0x42, - 25537 - 19968: jis0212<<14 | 0x1F<<7 | 0x14, - 25539 - 19968: jis0208<<14 | 0x21<<7 | 0x16, - 25540 - 19968: jis0208<<14 | 0x38<<7 | 0x48, - 25541 - 19968: jis0212<<14 | 0x1F<<7 | 0x15, - 25542 - 19968: jis0208<<14 | 0x38<<7 | 0x43, - 25544 - 19968: jis0212<<14 | 0x1F<<7 | 0x16, - 25545 - 19968: jis0208<<14 | 0x38<<7 | 0x45, - 25550 - 19968: jis0212<<14 | 0x1F<<7 | 0x17, - 25551 - 19968: jis0208<<14 | 0x28<<7 | 0x20, - 25552 - 19968: jis0208<<14 | 0x23<<7 | 0x52, - 25553 - 19968: jis0212<<14 | 0x1F<<7 | 0x18, - 25554 - 19968: jis0208<<14 | 0x38<<7 | 0x46, - 25555 - 19968: jis0212<<14 | 0x1F<<7 | 0x19, - 25556 - 19968: jis0212<<14 | 0x1F<<7 | 0x1A, - 25557 - 19968: jis0212<<14 | 0x1F<<7 | 0x1B, - 25558 - 19968: jis0208<<14 | 0x2C<<7 | 0x0B, - 25562 - 19968: jis0208<<14 | 0x2C<<7 | 0x27, - 25563 - 19968: jis0208<<14 | 0x13<<7 | 0x18, - 25564 - 19968: jis0212<<14 | 0x1F<<7 | 0x1C, - 25568 - 19968: jis0212<<14 | 0x1F<<7 | 0x1D, - 25569 - 19968: jis0208<<14 | 0x0F<<7 | 0x0D, - 25571 - 19968: jis0208<<14 | 0x38<<7 | 0x44, - 25573 - 19968: jis0212<<14 | 0x1F<<7 | 0x1E, - 25577 - 19968: jis0208<<14 | 0x38<<7 | 0x41, - 25578 - 19968: jis0212<<14 | 0x1F<<7 | 0x1F, - 25580 - 19968: jis0212<<14 | 0x1F<<7 | 0x20, - 25582 - 19968: jis0208<<14 | 0x13<<7 | 0x57, - 25586 - 19968: jis0212<<14 | 0x1F<<7 | 0x21, - 25587 - 19968: jis0212<<14 | 0x1F<<7 | 0x22, - 25588 - 19968: jis0208<<14 | 0x10<<7 | 0x46, - 25589 - 19968: jis0208<<14 | 0x59<<7 | 0x0E, - 25590 - 19968: jis0208<<14 | 0x38<<7 | 0x47, - 25592 - 19968: jis0212<<14 | 0x1F<<7 | 0x24, - 25593 - 19968: jis0212<<14 | 0x1F<<7 | 0x25, - 25594 - 19968: jis0208<<14 | 0x2C<<7 | 0x28, - 25606 - 19968: jis0208<<14 | 0x38<<7 | 0x4B, - 25609 - 19968: jis0212<<14 | 0x1F<<7 | 0x26, - 25610 - 19968: jis0212<<14 | 0x1F<<7 | 0x27, - 25613 - 19968: jis0208<<14 | 0x21<<7 | 0x1A, - 25615 - 19968: jis0208<<14 | 0x38<<7 | 0x52, - 25616 - 19968: jis0212<<14 | 0x1F<<7 | 0x28, - 25618 - 19968: jis0212<<14 | 0x1F<<7 | 0x29, - 25619 - 19968: jis0208<<14 | 0x38<<7 | 0x4C, - 25620 - 19968: jis0212<<14 | 0x1F<<7 | 0x2A, - 25622 - 19968: jis0208<<14 | 0x38<<7 | 0x49, - 25623 - 19968: jis0208<<14 | 0x38<<7 | 0x50, - 25624 - 19968: jis0212<<14 | 0x1F<<7 | 0x2B, - 25628 - 19968: jis0208<<14 | 0x38<<7 | 0x32, - 25630 - 19968: jis0212<<14 | 0x1F<<7 | 0x2C, - 25632 - 19968: jis0212<<14 | 0x1F<<7 | 0x2D, - 25634 - 19968: jis0212<<14 | 0x1F<<7 | 0x2E, - 25636 - 19968: jis0212<<14 | 0x1F<<7 | 0x2F, - 25637 - 19968: jis0212<<14 | 0x1F<<7 | 0x30, - 25638 - 19968: jis0208<<14 | 0x38<<7 | 0x4D, - 25640 - 19968: jis0208<<14 | 0x38<<7 | 0x51, - 25641 - 19968: jis0212<<14 | 0x1F<<7 | 0x31, - 25642 - 19968: jis0212<<14 | 0x1F<<7 | 0x32, - 25644 - 19968: jis0208<<14 | 0x27<<7 | 0x21, - 25645 - 19968: jis0208<<14 | 0x24<<7 | 0x4A, - 25647 - 19968: jis0212<<14 | 0x1F<<7 | 0x33, - 25648 - 19968: jis0212<<14 | 0x1F<<7 | 0x34, - 25652 - 19968: jis0208<<14 | 0x38<<7 | 0x4A, - 25653 - 19968: jis0212<<14 | 0x1F<<7 | 0x35, - 25654 - 19968: jis0208<<14 | 0x38<<7 | 0x4E, - 25658 - 19968: jis0208<<14 | 0x16<<7 | 0x27, - 25661 - 19968: jis0212<<14 | 0x1F<<7 | 0x36, - 25662 - 19968: jis0208<<14 | 0x19<<7 | 0x50, - 25663 - 19968: jis0212<<14 | 0x1F<<7 | 0x37, - 25666 - 19968: jis0208<<14 | 0x1F<<7 | 0x3C, - 25675 - 19968: jis0212<<14 | 0x1F<<7 | 0x38, - 25678 - 19968: jis0208<<14 | 0x38<<7 | 0x56, - 25679 - 19968: jis0212<<14 | 0x1F<<7 | 0x39, - 25681 - 19968: jis0212<<14 | 0x1F<<7 | 0x3A, - 25682 - 19968: jis0212<<14 | 0x1F<<7 | 0x3B, - 25683 - 19968: jis0212<<14 | 0x1F<<7 | 0x3C, - 25684 - 19968: jis0212<<14 | 0x1F<<7 | 0x3D, - 25688 - 19968: jis0208<<14 | 0x24<<7 | 0x05, - 25690 - 19968: jis0212<<14 | 0x1F<<7 | 0x3E, - 25691 - 19968: jis0212<<14 | 0x1F<<7 | 0x3F, - 25692 - 19968: jis0212<<14 | 0x1F<<7 | 0x40, - 25693 - 19968: jis0212<<14 | 0x1F<<7 | 0x41, - 25695 - 19968: jis0212<<14 | 0x1F<<7 | 0x42, - 25696 - 19968: jis0208<<14 | 0x59<<7 | 0x0F, - 25697 - 19968: jis0212<<14 | 0x1F<<7 | 0x44, - 25699 - 19968: jis0212<<14 | 0x1F<<7 | 0x45, - 25703 - 19968: jis0208<<14 | 0x38<<7 | 0x53, - 25705 - 19968: jis0208<<14 | 0x2A<<7 | 0x3F, - 25709 - 19968: jis0212<<14 | 0x1F<<7 | 0x46, - 25711 - 19968: jis0208<<14 | 0x38<<7 | 0x54, - 25715 - 19968: jis0212<<14 | 0x1F<<7 | 0x47, - 25716 - 19968: jis0212<<14 | 0x1F<<7 | 0x48, - 25718 - 19968: jis0208<<14 | 0x38<<7 | 0x55, - 25720 - 19968: jis0208<<14 | 0x2B<<7 | 0x2D, - 25722 - 19968: jis0208<<14 | 0x1F<<7 | 0x01, - 25723 - 19968: jis0212<<14 | 0x1F<<7 | 0x49, - 25725 - 19968: jis0212<<14 | 0x1F<<7 | 0x4A, - 25731 - 19968: jis0208<<14 | 0x16<<7 | 0x41, - 25733 - 19968: jis0212<<14 | 0x1F<<7 | 0x4B, - 25735 - 19968: jis0212<<14 | 0x1F<<7 | 0x4C, - 25736 - 19968: jis0208<<14 | 0x38<<7 | 0x5C, - 25743 - 19968: jis0212<<14 | 0x1F<<7 | 0x4D, - 25744 - 19968: jis0212<<14 | 0x1F<<7 | 0x4E, - 25745 - 19968: jis0212<<14 | 0x1F<<7 | 0x4F, - 25746 - 19968: jis0208<<14 | 0x1A<<7 | 0x14, - 25747 - 19968: jis0208<<14 | 0x38<<7 | 0x59, - 25749 - 19968: jis0208<<14 | 0x38<<7 | 0x58, - 25752 - 19968: jis0212<<14 | 0x1F<<7 | 0x50, - 25753 - 19968: jis0212<<14 | 0x1F<<7 | 0x51, - 25754 - 19968: jis0208<<14 | 0x26<<7 | 0x11, - 25755 - 19968: jis0212<<14 | 0x1F<<7 | 0x52, - 25757 - 19968: jis0208<<14 | 0x59<<7 | 0x10, - 25758 - 19968: jis0208<<14 | 0x25<<7 | 0x14, - 25759 - 19968: jis0212<<14 | 0x1F<<7 | 0x54, - 25761 - 19968: jis0212<<14 | 0x1F<<7 | 0x55, - 25763 - 19968: jis0212<<14 | 0x1F<<7 | 0x56, - 25764 - 19968: jis0208<<14 | 0x24<<7 | 0x10, - 25765 - 19968: jis0208<<14 | 0x38<<7 | 0x5A, - 25766 - 19968: jis0212<<14 | 0x1F<<7 | 0x57, - 25768 - 19968: jis0212<<14 | 0x1F<<7 | 0x58, - 25769 - 19968: jis0208<<14 | 0x38<<7 | 0x5B, - 25771 - 19968: jis0208<<14 | 0x28<<7 | 0x4E, - 25772 - 19968: jis0212<<14 | 0x1F<<7 | 0x59, - 25773 - 19968: jis0208<<14 | 0x26<<7 | 0x24, - 25774 - 19968: jis0208<<14 | 0x1A<<7 | 0x02, - 25776 - 19968: jis0208<<14 | 0x1F<<7 | 0x50, - 25778 - 19968: jis0208<<14 | 0x2A<<7 | 0x2F, - 25779 - 19968: jis0212<<14 | 0x1F<<7 | 0x5A, - 25785 - 19968: jis0208<<14 | 0x12<<7 | 0x28, - 25787 - 19968: jis0208<<14 | 0x39<<7 | 0x04, - 25788 - 19968: jis0208<<14 | 0x38<<7 | 0x5D, - 25789 - 19968: jis0212<<14 | 0x1F<<7 | 0x5B, - 25790 - 19968: jis0212<<14 | 0x1F<<7 | 0x5C, - 25791 - 19968: jis0212<<14 | 0x1F<<7 | 0x5D, - 25793 - 19968: jis0208<<14 | 0x2C<<7 | 0x29, - 25794 - 19968: jis0208<<14 | 0x39<<7 | 0x06, - 25796 - 19968: jis0212<<14 | 0x20<<7 | 0x00, - 25797 - 19968: jis0208<<14 | 0x39<<7 | 0x02, - 25799 - 19968: jis0208<<14 | 0x39<<7 | 0x03, - 25801 - 19968: jis0212<<14 | 0x20<<7 | 0x01, - 25802 - 19968: jis0212<<14 | 0x20<<7 | 0x02, - 25803 - 19968: jis0212<<14 | 0x20<<7 | 0x03, - 25804 - 19968: jis0212<<14 | 0x20<<7 | 0x04, - 25805 - 19968: jis0208<<14 | 0x20<<7 | 0x3F, - 25806 - 19968: jis0208<<14 | 0x59<<7 | 0x11, - 25808 - 19968: jis0212<<14 | 0x20<<7 | 0x06, - 25809 - 19968: jis0212<<14 | 0x20<<7 | 0x07, - 25810 - 19968: jis0208<<14 | 0x39<<7 | 0x01, - 25812 - 19968: jis0208<<14 | 0x38<<7 | 0x1E, - 25813 - 19968: jis0212<<14 | 0x20<<7 | 0x08, - 25815 - 19968: jis0212<<14 | 0x20<<7 | 0x09, - 25816 - 19968: jis0208<<14 | 0x39<<7 | 0x05, - 25818 - 19968: jis0208<<14 | 0x39<<7 | 0x00, - 25824 - 19968: jis0208<<14 | 0x39<<7 | 0x0A, - 25825 - 19968: jis0208<<14 | 0x39<<7 | 0x0B, - 25826 - 19968: jis0208<<14 | 0x24<<7 | 0x06, - 25827 - 19968: jis0208<<14 | 0x39<<7 | 0x0D, - 25828 - 19968: jis0212<<14 | 0x20<<7 | 0x0A, - 25829 - 19968: jis0212<<14 | 0x20<<7 | 0x0B, - 25830 - 19968: jis0208<<14 | 0x1A<<7 | 0x03, - 25831 - 19968: jis0208<<14 | 0x39<<7 | 0x08, - 25833 - 19968: jis0212<<14 | 0x20<<7 | 0x0C, - 25834 - 19968: jis0212<<14 | 0x20<<7 | 0x0D, - 25836 - 19968: jis0208<<14 | 0x14<<7 | 0x1B, - 25837 - 19968: jis0212<<14 | 0x20<<7 | 0x0E, - 25839 - 19968: jis0208<<14 | 0x39<<7 | 0x0E, - 25840 - 19968: jis0212<<14 | 0x20<<7 | 0x0F, - 25841 - 19968: jis0208<<14 | 0x39<<7 | 0x07, - 25842 - 19968: jis0208<<14 | 0x39<<7 | 0x12, - 25844 - 19968: jis0208<<14 | 0x39<<7 | 0x11, - 25845 - 19968: jis0212<<14 | 0x20<<7 | 0x10, - 25846 - 19968: jis0208<<14 | 0x39<<7 | 0x10, - 25847 - 19968: jis0212<<14 | 0x20<<7 | 0x11, - 25850 - 19968: jis0208<<14 | 0x39<<7 | 0x13, - 25851 - 19968: jis0212<<14 | 0x20<<7 | 0x12, - 25853 - 19968: jis0208<<14 | 0x39<<7 | 0x15, - 25854 - 19968: jis0208<<14 | 0x1D<<7 | 0x50, - 25855 - 19968: jis0212<<14 | 0x20<<7 | 0x13, - 25856 - 19968: jis0208<<14 | 0x39<<7 | 0x14, - 25857 - 19968: jis0212<<14 | 0x20<<7 | 0x14, - 25860 - 19968: jis0212<<14 | 0x20<<7 | 0x15, - 25861 - 19968: jis0208<<14 | 0x39<<7 | 0x18, - 25864 - 19968: jis0212<<14 | 0x20<<7 | 0x16, - 25865 - 19968: jis0212<<14 | 0x20<<7 | 0x17, - 25866 - 19968: jis0212<<14 | 0x20<<7 | 0x18, - 25871 - 19968: jis0212<<14 | 0x20<<7 | 0x19, - 25875 - 19968: jis0212<<14 | 0x20<<7 | 0x1A, - 25876 - 19968: jis0212<<14 | 0x20<<7 | 0x1B, - 25878 - 19968: jis0212<<14 | 0x20<<7 | 0x1C, - 25880 - 19968: jis0208<<14 | 0x39<<7 | 0x16, - 25881 - 19968: jis0212<<14 | 0x20<<7 | 0x1D, - 25883 - 19968: jis0212<<14 | 0x20<<7 | 0x1E, - 25884 - 19968: jis0208<<14 | 0x39<<7 | 0x17, - 25885 - 19968: jis0208<<14 | 0x38<<7 | 0x4F, - 25886 - 19968: jis0212<<14 | 0x20<<7 | 0x1F, - 25887 - 19968: jis0212<<14 | 0x20<<7 | 0x20, - 25890 - 19968: jis0212<<14 | 0x20<<7 | 0x21, - 25891 - 19968: jis0208<<14 | 0x39<<7 | 0x1A, - 25892 - 19968: jis0208<<14 | 0x39<<7 | 0x19, - 25894 - 19968: jis0212<<14 | 0x20<<7 | 0x22, - 25897 - 19968: jis0212<<14 | 0x20<<7 | 0x23, - 25898 - 19968: jis0208<<14 | 0x38<<7 | 0x57, - 25899 - 19968: jis0208<<14 | 0x39<<7 | 0x1B, - 25900 - 19968: jis0208<<14 | 0x39<<7 | 0x0F, - 25902 - 19968: jis0212<<14 | 0x20<<7 | 0x24, - 25903 - 19968: jis0208<<14 | 0x1A<<7 | 0x38, - 25905 - 19968: jis0212<<14 | 0x20<<7 | 0x25, - 25908 - 19968: jis0208<<14 | 0x39<<7 | 0x1C, - 25909 - 19968: jis0208<<14 | 0x39<<7 | 0x1D, - 25910 - 19968: jis0208<<14 | 0x39<<7 | 0x1F, - 25911 - 19968: jis0208<<14 | 0x39<<7 | 0x1E, - 25912 - 19968: jis0208<<14 | 0x39<<7 | 0x20, - 25913 - 19968: jis0208<<14 | 0x11<<7 | 0x5D, - 25914 - 19968: jis0212<<14 | 0x20<<7 | 0x26, - 25915 - 19968: jis0208<<14 | 0x18<<7 | 0x15, - 25916 - 19968: jis0212<<14 | 0x20<<7 | 0x27, - 25917 - 19968: jis0212<<14 | 0x20<<7 | 0x28, - 25918 - 19968: jis0208<<14 | 0x29<<7 | 0x5B, - 25919 - 19968: jis0208<<14 | 0x1F<<7 | 0x0E, - 25923 - 19968: jis0212<<14 | 0x20<<7 | 0x29, - 25925 - 19968: jis0208<<14 | 0x17<<7 | 0x2D, - 25927 - 19968: jis0212<<14 | 0x20<<7 | 0x2A, - 25928 - 19968: jis0208<<14 | 0x39<<7 | 0x22, - 25929 - 19968: jis0212<<14 | 0x20<<7 | 0x2B, - 25933 - 19968: jis0208<<14 | 0x39<<7 | 0x25, - 25934 - 19968: jis0208<<14 | 0x59<<7 | 0x12, - 25935 - 19968: jis0208<<14 | 0x28<<7 | 0x31, - 25936 - 19968: jis0212<<14 | 0x20<<7 | 0x2C, - 25937 - 19968: jis0208<<14 | 0x14<<7 | 0x3E, - 25938 - 19968: jis0212<<14 | 0x20<<7 | 0x2D, - 25940 - 19968: jis0212<<14 | 0x20<<7 | 0x2E, - 25941 - 19968: jis0208<<14 | 0x39<<7 | 0x24, - 25942 - 19968: jis0208<<14 | 0x39<<7 | 0x23, - 25943 - 19968: jis0208<<14 | 0x26<<7 | 0x33, - 25944 - 19968: jis0208<<14 | 0x39<<7 | 0x26, - 25945 - 19968: jis0208<<14 | 0x15<<7 | 0x14, - 25949 - 19968: jis0208<<14 | 0x39<<7 | 0x28, - 25950 - 19968: jis0208<<14 | 0x39<<7 | 0x27, - 25951 - 19968: jis0212<<14 | 0x20<<7 | 0x2F, - 25952 - 19968: jis0212<<14 | 0x20<<7 | 0x30, - 25954 - 19968: jis0208<<14 | 0x13<<7 | 0x19, - 25955 - 19968: jis0208<<14 | 0x1A<<7 | 0x15, - 25958 - 19968: jis0208<<14 | 0x25<<7 | 0x37, - 25959 - 19968: jis0212<<14 | 0x20<<7 | 0x31, - 25963 - 19968: jis0212<<14 | 0x20<<7 | 0x32, - 25964 - 19968: jis0208<<14 | 0x16<<7 | 0x28, - 25968 - 19968: jis0208<<14 | 0x1E<<7 | 0x53, - 25970 - 19968: jis0208<<14 | 0x39<<7 | 0x29, - 25972 - 19968: jis0208<<14 | 0x1F<<7 | 0x0F, - 25973 - 19968: jis0208<<14 | 0x24<<7 | 0x07, - 25975 - 19968: jis0208<<14 | 0x28<<7 | 0x3E, - 25976 - 19968: jis0208<<14 | 0x39<<7 | 0x2A, - 25978 - 19968: jis0212<<14 | 0x20<<7 | 0x33, - 25981 - 19968: jis0212<<14 | 0x20<<7 | 0x34, - 25985 - 19968: jis0212<<14 | 0x20<<7 | 0x35, - 25986 - 19968: jis0208<<14 | 0x39<<7 | 0x2B, - 25987 - 19968: jis0208<<14 | 0x39<<7 | 0x2C, - 25989 - 19968: jis0212<<14 | 0x20<<7 | 0x36, - 25991 - 19968: jis0208<<14 | 0x29<<7 | 0x17, - 25992 - 19968: jis0208<<14 | 0x34<<7 | 0x3C, - 25993 - 19968: jis0208<<14 | 0x1F<<7 | 0x25, - 25994 - 19968: jis0212<<14 | 0x20<<7 | 0x37, - 25996 - 19968: jis0208<<14 | 0x28<<7 | 0x2B, - 25998 - 19968: jis0208<<14 | 0x19<<7 | 0x37, - 26000 - 19968: jis0208<<14 | 0x27<<7 | 0x44, - 26001 - 19968: jis0208<<14 | 0x27<<7 | 0x22, - 26002 - 19968: jis0212<<14 | 0x20<<7 | 0x38, - 26005 - 19968: jis0212<<14 | 0x20<<7 | 0x39, - 26007 - 19968: jis0208<<14 | 0x24<<7 | 0x2C, - 26008 - 19968: jis0212<<14 | 0x20<<7 | 0x3A, - 26009 - 19968: jis0208<<14 | 0x2D<<7 | 0x20, - 26011 - 19968: jis0208<<14 | 0x39<<7 | 0x2E, - 26012 - 19968: jis0208<<14 | 0x1B<<7 | 0x2F, - 26013 - 19968: jis0212<<14 | 0x20<<7 | 0x3B, - 26015 - 19968: jis0208<<14 | 0x39<<7 | 0x2F, - 26016 - 19968: jis0212<<14 | 0x20<<7 | 0x3C, - 26017 - 19968: jis0208<<14 | 0x0F<<7 | 0x15, - 26019 - 19968: jis0212<<14 | 0x20<<7 | 0x3D, - 26020 - 19968: jis0208<<14 | 0x15<<7 | 0x33, - 26021 - 19968: jis0208<<14 | 0x1F<<7 | 0x2C, - 26022 - 19968: jis0212<<14 | 0x20<<7 | 0x3E, - 26023 - 19968: jis0208<<14 | 0x28<<7 | 0x3F, - 26027 - 19968: jis0208<<14 | 0x39<<7 | 0x30, - 26028 - 19968: jis0208<<14 | 0x1A<<7 | 0x21, - 26029 - 19968: jis0208<<14 | 0x22<<7 | 0x26, - 26030 - 19968: jis0212<<14 | 0x20<<7 | 0x3F, - 26031 - 19968: jis0208<<14 | 0x1A<<7 | 0x3A, - 26032 - 19968: jis0208<<14 | 0x1E<<7 | 0x16, - 26034 - 19968: jis0212<<14 | 0x20<<7 | 0x40, - 26035 - 19968: jis0212<<14 | 0x20<<7 | 0x41, - 26036 - 19968: jis0212<<14 | 0x20<<7 | 0x42, - 26039 - 19968: jis0208<<14 | 0x39<<7 | 0x31, - 26041 - 19968: jis0208<<14 | 0x29<<7 | 0x5C, - 26044 - 19968: jis0208<<14 | 0x10<<7 | 0x56, - 26045 - 19968: jis0208<<14 | 0x1A<<7 | 0x3B, - 26047 - 19968: jis0212<<14 | 0x20<<7 | 0x43, - 26049 - 19968: jis0208<<14 | 0x39<<7 | 0x34, - 26050 - 19968: jis0212<<14 | 0x20<<7 | 0x44, - 26051 - 19968: jis0208<<14 | 0x39<<7 | 0x32, - 26052 - 19968: jis0208<<14 | 0x39<<7 | 0x35, - 26053 - 19968: jis0208<<14 | 0x2D<<7 | 0x18, - 26054 - 19968: jis0208<<14 | 0x39<<7 | 0x33, - 26056 - 19968: jis0212<<14 | 0x20<<7 | 0x45, - 26057 - 19968: jis0212<<14 | 0x20<<7 | 0x46, - 26059 - 19968: jis0208<<14 | 0x1F<<7 | 0x5A, - 26060 - 19968: jis0208<<14 | 0x39<<7 | 0x36, - 26062 - 19968: jis0212<<14 | 0x20<<7 | 0x47, - 26063 - 19968: jis0208<<14 | 0x21<<7 | 0x11, - 26064 - 19968: jis0212<<14 | 0x20<<7 | 0x48, - 26066 - 19968: jis0208<<14 | 0x39<<7 | 0x37, - 26068 - 19968: jis0212<<14 | 0x20<<7 | 0x49, - 26070 - 19968: jis0212<<14 | 0x20<<7 | 0x4A, - 26071 - 19968: jis0208<<14 | 0x13<<7 | 0x59, - 26072 - 19968: jis0212<<14 | 0x20<<7 | 0x4B, - 26073 - 19968: jis0208<<14 | 0x39<<7 | 0x39, - 26075 - 19968: jis0208<<14 | 0x39<<7 | 0x38, - 26079 - 19968: jis0212<<14 | 0x20<<7 | 0x4C, - 26080 - 19968: jis0208<<14 | 0x39<<7 | 0x3A, - 26081 - 19968: jis0208<<14 | 0x39<<7 | 0x3B, - 26082 - 19968: jis0208<<14 | 0x13<<7 | 0x5A, - 26085 - 19968: jis0208<<14 | 0x25<<7 | 0x5B, - 26086 - 19968: jis0208<<14 | 0x22<<7 | 0x15, - 26087 - 19968: jis0208<<14 | 0x14<<7 | 0x4B, - 26088 - 19968: jis0208<<14 | 0x1A<<7 | 0x3C, - 26089 - 19968: jis0208<<14 | 0x20<<7 | 0x40, - 26092 - 19968: jis0208<<14 | 0x1C<<7 | 0x3B, - 26093 - 19968: jis0208<<14 | 0x0F<<7 | 0x0F, - 26096 - 19968: jis0212<<14 | 0x20<<7 | 0x4D, - 26097 - 19968: jis0208<<14 | 0x39<<7 | 0x3C, - 26098 - 19968: jis0212<<14 | 0x20<<7 | 0x4E, - 26100 - 19968: jis0212<<14 | 0x20<<7 | 0x4F, - 26101 - 19968: jis0212<<14 | 0x20<<7 | 0x50, - 26105 - 19968: jis0212<<14 | 0x20<<7 | 0x51, - 26106 - 19968: jis0208<<14 | 0x11<<7 | 0x01, - 26107 - 19968: jis0208<<14 | 0x39<<7 | 0x40, - 26110 - 19968: jis0212<<14 | 0x20<<7 | 0x52, - 26111 - 19968: jis0212<<14 | 0x20<<7 | 0x53, - 26112 - 19968: jis0208<<14 | 0x59<<7 | 0x13, - 26114 - 19968: jis0208<<14 | 0x18<<7 | 0x16, - 26115 - 19968: jis0208<<14 | 0x39<<7 | 0x3F, - 26116 - 19968: jis0212<<14 | 0x20<<7 | 0x55, - 26118 - 19968: jis0208<<14 | 0x19<<7 | 0x0A, - 26119 - 19968: jis0208<<14 | 0x1D<<7 | 0x19, - 26120 - 19968: jis0212<<14 | 0x20<<7 | 0x56, - 26121 - 19968: jis0208<<14 | 0x59<<7 | 0x16, - 26122 - 19968: jis0208<<14 | 0x39<<7 | 0x3E, - 26124 - 19968: jis0208<<14 | 0x1D<<7 | 0x1A, - 26125 - 19968: jis0212<<14 | 0x20<<7 | 0x58, - 26126 - 19968: jis0208<<14 | 0x2B<<7 | 0x1F, - 26127 - 19968: jis0208<<14 | 0x19<<7 | 0x09, - 26129 - 19968: jis0212<<14 | 0x20<<7 | 0x59, - 26130 - 19968: jis0212<<14 | 0x20<<7 | 0x5A, - 26131 - 19968: jis0208<<14 | 0x0F<<7 | 0x36, - 26132 - 19968: jis0208<<14 | 0x1F<<7 | 0x2D, - 26133 - 19968: jis0208<<14 | 0x59<<7 | 0x14, - 26134 - 19968: jis0212<<14 | 0x20<<7 | 0x5C, - 26140 - 19968: jis0208<<14 | 0x39<<7 | 0x45, - 26141 - 19968: jis0212<<14 | 0x20<<7 | 0x5D, - 26142 - 19968: jis0208<<14 | 0x59<<7 | 0x18, - 26143 - 19968: jis0208<<14 | 0x1F<<7 | 0x10, - 26144 - 19968: jis0208<<14 | 0x10<<7 | 0x26, - 26145 - 19968: jis0212<<14 | 0x21<<7 | 0x01, - 26146 - 19968: jis0212<<14 | 0x21<<7 | 0x02, - 26147 - 19968: jis0212<<14 | 0x21<<7 | 0x03, - 26148 - 19968: jis0208<<14 | 0x59<<7 | 0x19, - 26149 - 19968: jis0208<<14 | 0x1C<<7 | 0x34, - 26150 - 19968: jis0212<<14 | 0x21<<7 | 0x05, - 26151 - 19968: jis0208<<14 | 0x2A<<7 | 0x45, - 26152 - 19968: jis0208<<14 | 0x19<<7 | 0x51, - 26153 - 19968: jis0212<<14 | 0x21<<7 | 0x06, - 26154 - 19968: jis0212<<14 | 0x21<<7 | 0x07, - 26155 - 19968: jis0212<<14 | 0x21<<7 | 0x08, - 26156 - 19968: jis0212<<14 | 0x21<<7 | 0x09, - 26157 - 19968: jis0208<<14 | 0x1D<<7 | 0x1B, - 26158 - 19968: jis0208<<14 | 0x59<<7 | 0x17, - 26159 - 19968: jis0208<<14 | 0x1F<<7 | 0x06, - 26160 - 19968: jis0212<<14 | 0x21<<7 | 0x0B, - 26161 - 19968: jis0208<<14 | 0x58<<7 | 0x07, - 26163 - 19968: jis0212<<14 | 0x21<<7 | 0x0D, - 26164 - 19968: jis0208<<14 | 0x39<<7 | 0x44, - 26165 - 19968: jis0208<<14 | 0x39<<7 | 0x42, - 26166 - 19968: jis0208<<14 | 0x39<<7 | 0x43, - 26167 - 19968: jis0212<<14 | 0x21<<7 | 0x0F, - 26169 - 19968: jis0212<<14 | 0x21<<7 | 0x0E, - 26171 - 19968: jis0208<<14 | 0x59<<7 | 0x15, - 26172 - 19968: jis0208<<14 | 0x22<<7 | 0x4A, - 26175 - 19968: jis0208<<14 | 0x3A<<7 | 0x05, - 26176 - 19968: jis0212<<14 | 0x21<<7 | 0x10, - 26177 - 19968: jis0208<<14 | 0x39<<7 | 0x49, - 26178 - 19968: jis0208<<14 | 0x1A<<7 | 0x5D, - 26179 - 19968: jis0208<<14 | 0x18<<7 | 0x17, - 26180 - 19968: jis0208<<14 | 0x39<<7 | 0x47, - 26181 - 19968: jis0212<<14 | 0x21<<7 | 0x11, - 26182 - 19968: jis0212<<14 | 0x21<<7 | 0x12, - 26185 - 19968: jis0208<<14 | 0x39<<7 | 0x48, - 26186 - 19968: jis0212<<14 | 0x21<<7 | 0x13, - 26187 - 19968: jis0208<<14 | 0x1E<<7 | 0x17, - 26188 - 19968: jis0212<<14 | 0x21<<7 | 0x14, - 26190 - 19968: jis0212<<14 | 0x21<<7 | 0x16, - 26191 - 19968: jis0208<<14 | 0x39<<7 | 0x46, - 26193 - 19968: jis0212<<14 | 0x21<<7 | 0x15, - 26194 - 19968: jis0208<<14 | 0x1A<<7 | 0x0E, - 26199 - 19968: jis0208<<14 | 0x59<<7 | 0x1B, - 26200 - 19968: jis0212<<14 | 0x21<<7 | 0x18, - 26201 - 19968: jis0208<<14 | 0x59<<7 | 0x1C, - 26203 - 19968: jis0212<<14 | 0x21<<7 | 0x1A, - 26204 - 19968: jis0212<<14 | 0x21<<7 | 0x1B, - 26205 - 19968: jis0208<<14 | 0x39<<7 | 0x4B, - 26206 - 19968: jis0208<<14 | 0x39<<7 | 0x4A, - 26207 - 19968: jis0208<<14 | 0x39<<7 | 0x4F, - 26208 - 19968: jis0212<<14 | 0x21<<7 | 0x1C, - 26209 - 19968: jis0212<<14 | 0x21<<7 | 0x1D, - 26210 - 19968: jis0208<<14 | 0x39<<7 | 0x50, - 26212 - 19968: jis0208<<14 | 0x39<<7 | 0x4C, - 26213 - 19968: jis0208<<14 | 0x59<<7 | 0x1A, - 26214 - 19968: jis0208<<14 | 0x12<<7 | 0x01, - 26215 - 19968: jis0208<<14 | 0x39<<7 | 0x4D, - 26216 - 19968: jis0208<<14 | 0x39<<7 | 0x4E, - 26217 - 19968: jis0208<<14 | 0x27<<7 | 0x34, - 26218 - 19968: jis0212<<14 | 0x21<<7 | 0x1F, - 26219 - 19968: jis0212<<14 | 0x21<<7 | 0x20, - 26220 - 19968: jis0212<<14 | 0x21<<7 | 0x21, - 26222 - 19968: jis0208<<14 | 0x28<<7 | 0x40, - 26223 - 19968: jis0208<<14 | 0x16<<7 | 0x29, - 26224 - 19968: jis0208<<14 | 0x39<<7 | 0x51, - 26227 - 19968: jis0208<<14 | 0x59<<7 | 0x1E, - 26228 - 19968: jis0208<<14 | 0x1F<<7 | 0x11, - 26229 - 19968: jis0212<<14 | 0x21<<7 | 0x24, - 26230 - 19968: jis0208<<14 | 0x1D<<7 | 0x1C, - 26231 - 19968: jis0212<<14 | 0x21<<7 | 0x26, - 26232 - 19968: jis0212<<14 | 0x21<<7 | 0x27, - 26233 - 19968: jis0212<<14 | 0x21<<7 | 0x28, - 26234 - 19968: jis0208<<14 | 0x22<<7 | 0x31, - 26235 - 19968: jis0212<<14 | 0x21<<7 | 0x29, - 26236 - 19968: jis0212<<14 | 0x21<<7 | 0x2B, - 26238 - 19968: jis0212<<14 | 0x21<<7 | 0x22, - 26239 - 19968: jis0212<<14 | 0x21<<7 | 0x25, - 26240 - 19968: jis0212<<14 | 0x21<<7 | 0x2A, - 26241 - 19968: jis0208<<14 | 0x15<<7 | 0x26, - 26243 - 19968: jis0208<<14 | 0x39<<7 | 0x52, - 26244 - 19968: jis0208<<14 | 0x39<<7 | 0x56, - 26247 - 19968: jis0208<<14 | 0x11<<7 | 0x2A, - 26248 - 19968: jis0208<<14 | 0x39<<7 | 0x53, - 26249 - 19968: jis0208<<14 | 0x39<<7 | 0x55, - 26251 - 19968: jis0212<<14 | 0x21<<7 | 0x2C, - 26252 - 19968: jis0212<<14 | 0x21<<7 | 0x2D, - 26253 - 19968: jis0212<<14 | 0x21<<7 | 0x2E, - 26254 - 19968: jis0208<<14 | 0x39<<7 | 0x54, - 26256 - 19968: jis0212<<14 | 0x21<<7 | 0x2F, - 26257 - 19968: jis0208<<14 | 0x1C<<7 | 0x4A, - 26258 - 19968: jis0212<<14 | 0x21<<7 | 0x30, - 26262 - 19968: jis0208<<14 | 0x22<<7 | 0x27, - 26263 - 19968: jis0208<<14 | 0x0F<<7 | 0x24, - 26264 - 19968: jis0208<<14 | 0x39<<7 | 0x57, - 26265 - 19968: jis0208<<14 | 0x59<<7 | 0x1F, - 26266 - 19968: jis0212<<14 | 0x21<<7 | 0x32, - 26267 - 19968: jis0212<<14 | 0x21<<7 | 0x33, - 26268 - 19968: jis0212<<14 | 0x21<<7 | 0x34, - 26269 - 19968: jis0208<<14 | 0x39<<7 | 0x58, - 26271 - 19968: jis0212<<14 | 0x21<<7 | 0x35, - 26272 - 19968: jis0208<<14 | 0x59<<7 | 0x20, - 26274 - 19968: jis0208<<14 | 0x23<<7 | 0x09, - 26276 - 19968: jis0212<<14 | 0x21<<7 | 0x37, - 26278 - 19968: jis0208<<14 | 0x2D<<7 | 0x50, - 26283 - 19968: jis0208<<14 | 0x1A<<7 | 0x22, - 26285 - 19968: jis0212<<14 | 0x21<<7 | 0x38, - 26286 - 19968: jis0208<<14 | 0x29<<7 | 0x4A, - 26289 - 19968: jis0212<<14 | 0x21<<7 | 0x39, - 26290 - 19968: jis0208<<14 | 0x59<<7 | 0x21, - 26292 - 19968: jis0208<<14 | 0x2A<<7 | 0x1C, - 26293 - 19968: jis0212<<14 | 0x21<<7 | 0x3B, - 26296 - 19968: jis0208<<14 | 0x3A<<7 | 0x01, - 26297 - 19968: jis0208<<14 | 0x39<<7 | 0x5A, - 26299 - 19968: jis0212<<14 | 0x21<<7 | 0x3C, - 26300 - 19968: jis0208<<14 | 0x39<<7 | 0x5D, - 26302 - 19968: jis0208<<14 | 0x39<<7 | 0x5C, - 26303 - 19968: jis0208<<14 | 0x59<<7 | 0x22, - 26304 - 19968: jis0212<<14 | 0x21<<7 | 0x3E, - 26305 - 19968: jis0208<<14 | 0x39<<7 | 0x59, - 26306 - 19968: jis0212<<14 | 0x21<<7 | 0x3F, - 26307 - 19968: jis0212<<14 | 0x21<<7 | 0x40, - 26308 - 19968: jis0208<<14 | 0x3A<<7 | 0x00, - 26311 - 19968: jis0208<<14 | 0x25<<7 | 0x3D, - 26312 - 19968: jis0212<<14 | 0x21<<7 | 0x41, - 26313 - 19968: jis0208<<14 | 0x39<<7 | 0x5B, - 26316 - 19968: jis0212<<14 | 0x21<<7 | 0x42, - 26318 - 19968: jis0212<<14 | 0x21<<7 | 0x43, - 26319 - 19968: jis0212<<14 | 0x21<<7 | 0x44, - 26324 - 19968: jis0212<<14 | 0x21<<7 | 0x45, - 26326 - 19968: jis0208<<14 | 0x3A<<7 | 0x02, - 26329 - 19968: jis0208<<14 | 0x1C<<7 | 0x4B, - 26330 - 19968: jis0208<<14 | 0x3A<<7 | 0x03, - 26331 - 19968: jis0212<<14 | 0x21<<7 | 0x46, - 26332 - 19968: jis0208<<14 | 0x2C<<7 | 0x2A, - 26333 - 19968: jis0208<<14 | 0x26<<7 | 0x57, - 26335 - 19968: jis0212<<14 | 0x21<<7 | 0x47, - 26336 - 19968: jis0208<<14 | 0x3A<<7 | 0x04, - 26342 - 19968: jis0208<<14 | 0x3A<<7 | 0x06, - 26344 - 19968: jis0212<<14 | 0x21<<7 | 0x48, - 26345 - 19968: jis0208<<14 | 0x3A<<7 | 0x07, - 26347 - 19968: jis0212<<14 | 0x21<<7 | 0x49, - 26348 - 19968: jis0212<<14 | 0x21<<7 | 0x4A, - 26350 - 19968: jis0212<<14 | 0x21<<7 | 0x4B, - 26352 - 19968: jis0208<<14 | 0x3A<<7 | 0x08, - 26354 - 19968: jis0208<<14 | 0x15<<7 | 0x29, - 26355 - 19968: jis0208<<14 | 0x10<<7 | 0x27, - 26356 - 19968: jis0208<<14 | 0x18<<7 | 0x18, - 26357 - 19968: jis0208<<14 | 0x3A<<7 | 0x09, - 26359 - 19968: jis0208<<14 | 0x3A<<7 | 0x0A, - 26360 - 19968: jis0208<<14 | 0x1C<<7 | 0x50, - 26361 - 19968: jis0208<<14 | 0x20<<7 | 0x41, - 26362 - 19968: jis0208<<14 | 0x59<<7 | 0x23, - 26363 - 19968: jis0208<<14 | 0x58<<7 | 0x0A, - 26364 - 19968: jis0208<<14 | 0x31<<7 | 0x37, - 26365 - 19968: jis0208<<14 | 0x20<<7 | 0x1D, - 26366 - 19968: jis0208<<14 | 0x20<<7 | 0x1C, - 26367 - 19968: jis0208<<14 | 0x21<<7 | 0x37, - 26368 - 19968: jis0208<<14 | 0x19<<7 | 0x26, - 26371 - 19968: jis0208<<14 | 0x2F<<7 | 0x51, - 26373 - 19968: jis0212<<14 | 0x21<<7 | 0x4D, - 26375 - 19968: jis0212<<14 | 0x21<<7 | 0x4E, - 26376 - 19968: jis0208<<14 | 0x16<<7 | 0x4D, - 26377 - 19968: jis0208<<14 | 0x2C<<7 | 0x0C, - 26379 - 19968: jis0208<<14 | 0x29<<7 | 0x5D, - 26381 - 19968: jis0208<<14 | 0x28<<7 | 0x5D, - 26382 - 19968: jis0208<<14 | 0x59<<7 | 0x24, - 26383 - 19968: jis0208<<14 | 0x3A<<7 | 0x0B, - 26387 - 19968: jis0212<<14 | 0x21<<7 | 0x50, - 26388 - 19968: jis0208<<14 | 0x19<<7 | 0x52, - 26389 - 19968: jis0208<<14 | 0x23<<7 | 0x1E, - 26390 - 19968: jis0208<<14 | 0x3A<<7 | 0x0C, - 26391 - 19968: jis0208<<14 | 0x2E<<7 | 0x0E, - 26393 - 19968: jis0212<<14 | 0x21<<7 | 0x51, - 26395 - 19968: jis0208<<14 | 0x2A<<7 | 0x1D, - 26396 - 19968: jis0212<<14 | 0x21<<7 | 0x52, - 26397 - 19968: jis0208<<14 | 0x23<<7 | 0x0A, - 26398 - 19968: jis0208<<14 | 0x3A<<7 | 0x0D, - 26399 - 19968: jis0208<<14 | 0x13<<7 | 0x5B, - 26400 - 19968: jis0212<<14 | 0x21<<7 | 0x53, - 26402 - 19968: jis0212<<14 | 0x21<<7 | 0x54, - 26406 - 19968: jis0208<<14 | 0x3A<<7 | 0x0E, - 26407 - 19968: jis0208<<14 | 0x3A<<7 | 0x0F, - 26408 - 19968: jis0208<<14 | 0x2B<<7 | 0x39, - 26410 - 19968: jis0208<<14 | 0x2B<<7 | 0x03, - 26411 - 19968: jis0208<<14 | 0x2A<<7 | 0x55, - 26412 - 19968: jis0208<<14 | 0x2A<<7 | 0x3B, - 26413 - 19968: jis0208<<14 | 0x1A<<7 | 0x04, - 26414 - 19968: jis0208<<14 | 0x3A<<7 | 0x11, - 26417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4A, - 26419 - 19968: jis0212<<14 | 0x21<<7 | 0x55, - 26420 - 19968: jis0208<<14 | 0x2A<<7 | 0x30, - 26422 - 19968: jis0208<<14 | 0x3A<<7 | 0x13, - 26423 - 19968: jis0208<<14 | 0x3A<<7 | 0x16, - 26424 - 19968: jis0208<<14 | 0x3A<<7 | 0x15, - 26426 - 19968: jis0208<<14 | 0x13<<7 | 0x58, - 26429 - 19968: jis0208<<14 | 0x14<<7 | 0x3F, - 26430 - 19968: jis0212<<14 | 0x21<<7 | 0x56, - 26431 - 19968: jis0208<<14 | 0x3A<<7 | 0x12, - 26433 - 19968: jis0208<<14 | 0x3A<<7 | 0x14, - 26437 - 19968: jis0212<<14 | 0x21<<7 | 0x57, - 26438 - 19968: jis0208<<14 | 0x3A<<7 | 0x17, - 26439 - 19968: jis0212<<14 | 0x21<<7 | 0x58, - 26440 - 19968: jis0212<<14 | 0x21<<7 | 0x59, - 26441 - 19968: jis0208<<14 | 0x1E<<7 | 0x58, - 26444 - 19968: jis0212<<14 | 0x21<<7 | 0x5A, - 26446 - 19968: jis0208<<14 | 0x2C<<7 | 0x5A, - 26447 - 19968: jis0208<<14 | 0x0F<<7 | 0x28, - 26448 - 19968: jis0208<<14 | 0x19<<7 | 0x3F, - 26449 - 19968: jis0208<<14 | 0x21<<7 | 0x1B, - 26451 - 19968: jis0208<<14 | 0x1B<<7 | 0x3C, - 26452 - 19968: jis0212<<14 | 0x21<<7 | 0x5B, - 26453 - 19968: jis0212<<14 | 0x21<<7 | 0x5C, - 26454 - 19968: jis0208<<14 | 0x1D<<7 | 0x52, - 26457 - 19968: jis0208<<14 | 0x3A<<7 | 0x1A, - 26460 - 19968: jis0208<<14 | 0x24<<7 | 0x2D, - 26461 - 19968: jis0212<<14 | 0x21<<7 | 0x5D, - 26462 - 19968: jis0208<<14 | 0x3A<<7 | 0x18, - 26463 - 19968: jis0208<<14 | 0x21<<7 | 0x0A, - 26464 - 19968: jis0208<<14 | 0x3A<<7 | 0x19, - 26465 - 19968: jis0208<<14 | 0x1D<<7 | 0x51, - 26466 - 19968: jis0208<<14 | 0x2B<<7 | 0x3C, - 26467 - 19968: jis0208<<14 | 0x3A<<7 | 0x1B, - 26468 - 19968: jis0208<<14 | 0x3A<<7 | 0x1C, - 26469 - 19968: jis0208<<14 | 0x2C<<7 | 0x47, - 26470 - 19968: jis0208<<14 | 0x59<<7 | 0x26, - 26474 - 19968: jis0208<<14 | 0x3A<<7 | 0x21, - 26476 - 19968: jis0212<<14 | 0x22<<7 | 0x01, - 26477 - 19968: jis0208<<14 | 0x18<<7 | 0x19, - 26478 - 19968: jis0212<<14 | 0x22<<7 | 0x02, - 26479 - 19968: jis0208<<14 | 0x26<<7 | 0x34, - 26480 - 19968: jis0208<<14 | 0x3A<<7 | 0x1E, - 26481 - 19968: jis0208<<14 | 0x24<<7 | 0x4B, - 26482 - 19968: jis0208<<14 | 0x39<<7 | 0x3D, - 26483 - 19968: jis0208<<14 | 0x39<<7 | 0x41, - 26484 - 19968: jis0212<<14 | 0x22<<7 | 0x03, - 26485 - 19968: jis0208<<14 | 0x14<<7 | 0x2E, - 26486 - 19968: jis0212<<14 | 0x22<<7 | 0x04, - 26487 - 19968: jis0208<<14 | 0x26<<7 | 0x26, - 26491 - 19968: jis0212<<14 | 0x22<<7 | 0x05, - 26492 - 19968: jis0208<<14 | 0x3A<<7 | 0x20, - 26494 - 19968: jis0208<<14 | 0x1D<<7 | 0x1D, - 26495 - 19968: jis0208<<14 | 0x27<<7 | 0x23, - 26497 - 19968: jis0212<<14 | 0x22<<7 | 0x06, - 26500 - 19968: jis0212<<14 | 0x22<<7 | 0x07, - 26501 - 19968: jis0208<<14 | 0x3A<<7 | 0x26, - 26503 - 19968: jis0208<<14 | 0x27<<7 | 0x59, - 26505 - 19968: jis0208<<14 | 0x3A<<7 | 0x1D, - 26507 - 19968: jis0208<<14 | 0x3A<<7 | 0x23, - 26508 - 19968: jis0208<<14 | 0x3A<<7 | 0x22, - 26510 - 19968: jis0212<<14 | 0x22<<7 | 0x08, - 26511 - 19968: jis0212<<14 | 0x22<<7 | 0x09, - 26512 - 19968: jis0208<<14 | 0x1F<<7 | 0x2E, - 26513 - 19968: jis0212<<14 | 0x22<<7 | 0x0A, - 26515 - 19968: jis0212<<14 | 0x22<<7 | 0x0B, - 26517 - 19968: jis0208<<14 | 0x2A<<7 | 0x4C, - 26518 - 19968: jis0212<<14 | 0x22<<7 | 0x0C, - 26519 - 19968: jis0208<<14 | 0x2D<<7 | 0x32, - 26520 - 19968: jis0212<<14 | 0x22<<7 | 0x0D, - 26521 - 19968: jis0212<<14 | 0x22<<7 | 0x0E, - 26522 - 19968: jis0208<<14 | 0x2A<<7 | 0x46, - 26523 - 19968: jis0212<<14 | 0x22<<7 | 0x0F, - 26524 - 19968: jis0208<<14 | 0x11<<7 | 0x2B, - 26525 - 19968: jis0208<<14 | 0x1A<<7 | 0x3D, - 26528 - 19968: jis0208<<14 | 0x2E<<7 | 0x27, - 26529 - 19968: jis0208<<14 | 0x3A<<7 | 0x25, - 26530 - 19968: jis0208<<14 | 0x1E<<7 | 0x54, - 26534 - 19968: jis0208<<14 | 0x3A<<7 | 0x24, - 26537 - 19968: jis0208<<14 | 0x3A<<7 | 0x1F, - 26543 - 19968: jis0208<<14 | 0x17<<7 | 0x2E, - 26544 - 19968: jis0212<<14 | 0x22<<7 | 0x10, - 26545 - 19968: jis0212<<14 | 0x22<<7 | 0x11, - 26546 - 19968: jis0212<<14 | 0x22<<7 | 0x12, - 26547 - 19968: jis0208<<14 | 0x3A<<7 | 0x2B, - 26548 - 19968: jis0208<<14 | 0x3A<<7 | 0x29, - 26549 - 19968: jis0212<<14 | 0x22<<7 | 0x13, - 26550 - 19968: jis0208<<14 | 0x11<<7 | 0x2C, - 26551 - 19968: jis0208<<14 | 0x3A<<7 | 0x27, - 26552 - 19968: jis0208<<14 | 0x3A<<7 | 0x2D, - 26553 - 19968: jis0208<<14 | 0x3A<<7 | 0x33, - 26555 - 19968: jis0208<<14 | 0x59<<7 | 0x27, - 26556 - 19968: jis0212<<14 | 0x22<<7 | 0x15, - 26557 - 19968: jis0212<<14 | 0x22<<7 | 0x16, - 26560 - 19968: jis0208<<14 | 0x59<<7 | 0x29, - 26561 - 19968: jis0208<<14 | 0x21<<7 | 0x27, - 26562 - 19968: jis0212<<14 | 0x22<<7 | 0x19, - 26563 - 19968: jis0212<<14 | 0x22<<7 | 0x1A, - 26564 - 19968: jis0208<<14 | 0x29<<7 | 0x20, - 26565 - 19968: jis0212<<14 | 0x22<<7 | 0x1B, - 26566 - 19968: jis0208<<14 | 0x3A<<7 | 0x35, - 26568 - 19968: jis0212<<14 | 0x22<<7 | 0x1C, - 26569 - 19968: jis0212<<14 | 0x22<<7 | 0x1D, - 26570 - 19968: jis0208<<14 | 0x28<<7 | 0x01, - 26574 - 19968: jis0208<<14 | 0x3A<<7 | 0x34, - 26575 - 19968: jis0208<<14 | 0x26<<7 | 0x4F, - 26576 - 19968: jis0208<<14 | 0x2A<<7 | 0x1E, - 26577 - 19968: jis0208<<14 | 0x13<<7 | 0x1A, - 26578 - 19968: jis0212<<14 | 0x22<<7 | 0x1E, - 26579 - 19968: jis0208<<14 | 0x1F<<7 | 0x56, - 26580 - 19968: jis0208<<14 | 0x1C<<7 | 0x1F, - 26583 - 19968: jis0212<<14 | 0x22<<7 | 0x1F, - 26584 - 19968: jis0208<<14 | 0x23<<7 | 0x32, - 26585 - 19968: jis0212<<14 | 0x22<<7 | 0x20, - 26586 - 19968: jis0208<<14 | 0x2C<<7 | 0x0D, - 26588 - 19968: jis0212<<14 | 0x22<<7 | 0x21, - 26589 - 19968: jis0208<<14 | 0x3A<<7 | 0x30, - 26590 - 19968: jis0208<<14 | 0x3A<<7 | 0x2F, - 26593 - 19968: jis0212<<14 | 0x22<<7 | 0x22, - 26594 - 19968: jis0208<<14 | 0x3A<<7 | 0x31, - 26596 - 19968: jis0208<<14 | 0x3A<<7 | 0x2E, - 26598 - 19968: jis0212<<14 | 0x22<<7 | 0x23, - 26599 - 19968: jis0208<<14 | 0x3A<<7 | 0x36, - 26601 - 19968: jis0208<<14 | 0x3A<<7 | 0x2C, - 26604 - 19968: jis0208<<14 | 0x3A<<7 | 0x2A, - 26606 - 19968: jis0208<<14 | 0x3A<<7 | 0x32, - 26607 - 19968: jis0208<<14 | 0x3A<<7 | 0x28, - 26608 - 19968: jis0212<<14 | 0x22<<7 | 0x24, - 26609 - 19968: jis0208<<14 | 0x22<<7 | 0x4B, - 26610 - 19968: jis0212<<14 | 0x22<<7 | 0x25, - 26611 - 19968: jis0208<<14 | 0x2B<<7 | 0x57, - 26612 - 19968: jis0208<<14 | 0x1B<<7 | 0x25, - 26613 - 19968: jis0208<<14 | 0x19<<7 | 0x53, - 26614 - 19968: jis0212<<14 | 0x22<<7 | 0x26, - 26615 - 19968: jis0212<<14 | 0x22<<7 | 0x27, - 26617 - 19968: jis0212<<14 | 0x22<<7 | 0x17, - 26619 - 19968: jis0208<<14 | 0x19<<7 | 0x19, - 26622 - 19968: jis0208<<14 | 0x2A<<7 | 0x4E, - 26623 - 19968: jis0208<<14 | 0x12<<7 | 0x20, - 26625 - 19968: jis0208<<14 | 0x59<<7 | 0x2A, - 26626 - 19968: jis0208<<14 | 0x23<<7 | 0x2D, - 26627 - 19968: jis0208<<14 | 0x25<<7 | 0x29, - 26628 - 19968: jis0208<<14 | 0x10<<7 | 0x28, - 26643 - 19968: jis0208<<14 | 0x1F<<7 | 0x51, - 26644 - 19968: jis0212<<14 | 0x22<<7 | 0x29, - 26646 - 19968: jis0208<<14 | 0x1F<<7 | 0x13, - 26647 - 19968: jis0208<<14 | 0x16<<7 | 0x09, - 26649 - 19968: jis0212<<14 | 0x22<<7 | 0x2A, - 26653 - 19968: jis0212<<14 | 0x22<<7 | 0x2B, - 26654 - 19968: jis0208<<14 | 0x3A<<7 | 0x38, - 26655 - 19968: jis0212<<14 | 0x22<<7 | 0x2C, - 26657 - 19968: jis0208<<14 | 0x18<<7 | 0x1A, - 26658 - 19968: jis0208<<14 | 0x12<<7 | 0x5B, - 26663 - 19968: jis0212<<14 | 0x22<<7 | 0x2E, - 26664 - 19968: jis0212<<14 | 0x22<<7 | 0x2D, - 26665 - 19968: jis0208<<14 | 0x3A<<7 | 0x3A, - 26666 - 19968: jis0208<<14 | 0x12<<7 | 0x53, - 26667 - 19968: jis0208<<14 | 0x3A<<7 | 0x40, - 26668 - 19968: jis0212<<14 | 0x22<<7 | 0x2F, - 26669 - 19968: jis0212<<14 | 0x22<<7 | 0x30, - 26671 - 19968: jis0212<<14 | 0x22<<7 | 0x31, - 26672 - 19968: jis0212<<14 | 0x22<<7 | 0x32, - 26673 - 19968: jis0212<<14 | 0x22<<7 | 0x33, - 26674 - 19968: jis0208<<14 | 0x3A<<7 | 0x3D, - 26675 - 19968: jis0212<<14 | 0x22<<7 | 0x34, - 26676 - 19968: jis0208<<14 | 0x1F<<7 | 0x52, - 26680 - 19968: jis0208<<14 | 0x12<<7 | 0x2A, - 26681 - 19968: jis0208<<14 | 0x19<<7 | 0x0B, - 26683 - 19968: jis0212<<14 | 0x22<<7 | 0x35, - 26684 - 19968: jis0208<<14 | 0x12<<7 | 0x29, - 26685 - 19968: jis0208<<14 | 0x19<<7 | 0x2E, - 26687 - 19968: jis0212<<14 | 0x22<<7 | 0x36, - 26688 - 19968: jis0208<<14 | 0x3A<<7 | 0x3B, - 26689 - 19968: jis0208<<14 | 0x16<<7 | 0x44, - 26690 - 19968: jis0208<<14 | 0x16<<7 | 0x2A, - 26691 - 19968: jis0208<<14 | 0x24<<7 | 0x4C, - 26692 - 19968: jis0208<<14 | 0x59<<7 | 0x2B, - 26693 - 19968: jis0212<<14 | 0x22<<7 | 0x38, - 26694 - 19968: jis0208<<14 | 0x3A<<7 | 0x39, - 26696 - 19968: jis0208<<14 | 0x0F<<7 | 0x25, - 26698 - 19968: jis0212<<14 | 0x22<<7 | 0x39, - 26700 - 19968: jis0212<<14 | 0x22<<7 | 0x3A, - 26701 - 19968: jis0208<<14 | 0x3A<<7 | 0x3C, - 26702 - 19968: jis0208<<14 | 0x3A<<7 | 0x3E, - 26704 - 19968: jis0208<<14 | 0x15<<7 | 0x2C, - 26705 - 19968: jis0208<<14 | 0x16<<7 | 0x0B, - 26706 - 19968: jis0208<<14 | 0x59<<7 | 0x28, - 26707 - 19968: jis0208<<14 | 0x13<<7 | 0x1B, - 26708 - 19968: jis0208<<14 | 0x14<<7 | 0x2A, - 26709 - 19968: jis0212<<14 | 0x22<<7 | 0x3B, - 26711 - 19968: jis0212<<14 | 0x22<<7 | 0x3C, - 26712 - 19968: jis0212<<14 | 0x22<<7 | 0x3D, - 26713 - 19968: jis0208<<14 | 0x3A<<7 | 0x41, - 26715 - 19968: jis0212<<14 | 0x22<<7 | 0x3E, - 26716 - 19968: jis0208<<14 | 0x19<<7 | 0x58, - 26717 - 19968: jis0208<<14 | 0x2A<<7 | 0x50, - 26719 - 19968: jis0208<<14 | 0x1A<<7 | 0x16, - 26723 - 19968: jis0208<<14 | 0x3A<<7 | 0x42, - 26727 - 19968: jis0208<<14 | 0x28<<7 | 0x0F, - 26731 - 19968: jis0212<<14 | 0x22<<7 | 0x3F, - 26734 - 19968: jis0212<<14 | 0x22<<7 | 0x40, - 26735 - 19968: jis0212<<14 | 0x22<<7 | 0x41, - 26736 - 19968: jis0212<<14 | 0x22<<7 | 0x42, - 26737 - 19968: jis0212<<14 | 0x22<<7 | 0x43, - 26738 - 19968: jis0212<<14 | 0x22<<7 | 0x44, - 26740 - 19968: jis0208<<14 | 0x3A<<7 | 0x4E, - 26741 - 19968: jis0212<<14 | 0x22<<7 | 0x45, - 26742 - 19968: jis0208<<14 | 0x11<<7 | 0x12, - 26743 - 19968: jis0208<<14 | 0x3A<<7 | 0x43, - 26745 - 19968: jis0212<<14 | 0x22<<7 | 0x46, - 26746 - 19968: jis0212<<14 | 0x22<<7 | 0x47, - 26747 - 19968: jis0212<<14 | 0x22<<7 | 0x48, - 26748 - 19968: jis0212<<14 | 0x22<<7 | 0x49, - 26750 - 19968: jis0208<<14 | 0x3A<<7 | 0x54, - 26751 - 19968: jis0208<<14 | 0x3A<<7 | 0x44, - 26753 - 19968: jis0208<<14 | 0x2D<<7 | 0x21, - 26754 - 19968: jis0212<<14 | 0x22<<7 | 0x4A, - 26755 - 19968: jis0208<<14 | 0x3A<<7 | 0x4B, - 26756 - 19968: jis0212<<14 | 0x22<<7 | 0x4B, - 26757 - 19968: jis0208<<14 | 0x26<<7 | 0x3E, - 26758 - 19968: jis0212<<14 | 0x22<<7 | 0x4C, - 26760 - 19968: jis0212<<14 | 0x22<<7 | 0x4D, - 26765 - 19968: jis0208<<14 | 0x3A<<7 | 0x53, - 26767 - 19968: jis0208<<14 | 0x3A<<7 | 0x46, - 26771 - 19968: jis0208<<14 | 0x0F<<7 | 0x13, - 26772 - 19968: jis0208<<14 | 0x3A<<7 | 0x48, - 26774 - 19968: jis0212<<14 | 0x22<<7 | 0x4E, - 26775 - 19968: jis0208<<14 | 0x18<<7 | 0x1B, - 26776 - 19968: jis0212<<14 | 0x22<<7 | 0x4F, - 26778 - 19968: jis0212<<14 | 0x22<<7 | 0x50, - 26779 - 19968: jis0208<<14 | 0x3A<<7 | 0x4A, - 26780 - 19968: jis0212<<14 | 0x22<<7 | 0x51, - 26781 - 19968: jis0208<<14 | 0x3A<<7 | 0x49, - 26783 - 19968: jis0208<<14 | 0x3A<<7 | 0x45, - 26784 - 19968: jis0208<<14 | 0x3A<<7 | 0x50, - 26785 - 19968: jis0212<<14 | 0x22<<7 | 0x52, - 26786 - 19968: jis0208<<14 | 0x1D<<7 | 0x1E, - 26787 - 19968: jis0212<<14 | 0x22<<7 | 0x53, - 26789 - 19968: jis0212<<14 | 0x22<<7 | 0x54, - 26790 - 19968: jis0208<<14 | 0x33<<7 | 0x4C, - 26791 - 19968: jis0208<<14 | 0x17<<7 | 0x47, - 26792 - 19968: jis0208<<14 | 0x2C<<7 | 0x5B, - 26793 - 19968: jis0212<<14 | 0x22<<7 | 0x55, - 26794 - 19968: jis0212<<14 | 0x22<<7 | 0x56, - 26797 - 19968: jis0208<<14 | 0x3A<<7 | 0x47, - 26798 - 19968: jis0212<<14 | 0x22<<7 | 0x57, - 26799 - 19968: jis0208<<14 | 0x23<<7 | 0x53, - 26800 - 19968: jis0208<<14 | 0x12<<7 | 0x02, - 26801 - 19968: jis0208<<14 | 0x19<<7 | 0x0C, - 26802 - 19968: jis0212<<14 | 0x22<<7 | 0x58, - 26803 - 19968: jis0208<<14 | 0x3A<<7 | 0x3F, - 26805 - 19968: jis0208<<14 | 0x3A<<7 | 0x4F, - 26806 - 19968: jis0208<<14 | 0x12<<7 | 0x40, - 26809 - 19968: jis0208<<14 | 0x3A<<7 | 0x4D, - 26810 - 19968: jis0208<<14 | 0x3A<<7 | 0x51, - 26811 - 19968: jis0212<<14 | 0x22<<7 | 0x59, - 26812 - 19968: jis0208<<14 | 0x24<<7 | 0x4D, - 26820 - 19968: jis0208<<14 | 0x13<<7 | 0x5D, - 26821 - 19968: jis0212<<14 | 0x22<<7 | 0x5A, - 26822 - 19968: jis0208<<14 | 0x3B<<7 | 0x11, - 26824 - 19968: jis0208<<14 | 0x58<<7 | 0x08, - 26825 - 19968: jis0208<<14 | 0x2B<<7 | 0x28, - 26826 - 19968: jis0208<<14 | 0x3A<<7 | 0x56, - 26827 - 19968: jis0208<<14 | 0x13<<7 | 0x5C, - 26828 - 19968: jis0212<<14 | 0x22<<7 | 0x5C, - 26829 - 19968: jis0208<<14 | 0x3A<<7 | 0x5D, - 26831 - 19968: jis0208<<14 | 0x59<<7 | 0x2C, - 26832 - 19968: jis0212<<14 | 0x23<<7 | 0x00, - 26833 - 19968: jis0212<<14 | 0x23<<7 | 0x01, - 26834 - 19968: jis0208<<14 | 0x2A<<7 | 0x1F, - 26835 - 19968: jis0212<<14 | 0x23<<7 | 0x02, - 26836 - 19968: jis0208<<14 | 0x3B<<7 | 0x00, - 26837 - 19968: jis0208<<14 | 0x3B<<7 | 0x02, - 26838 - 19968: jis0212<<14 | 0x23<<7 | 0x03, - 26839 - 19968: jis0208<<14 | 0x3B<<7 | 0x06, - 26840 - 19968: jis0208<<14 | 0x3A<<7 | 0x58, - 26841 - 19968: jis0212<<14 | 0x23<<7 | 0x04, - 26842 - 19968: jis0208<<14 | 0x22<<7 | 0x09, - 26844 - 19968: jis0212<<14 | 0x23<<7 | 0x05, - 26845 - 19968: jis0212<<14 | 0x23<<7 | 0x06, - 26847 - 19968: jis0208<<14 | 0x24<<7 | 0x4E, - 26848 - 19968: jis0208<<14 | 0x3B<<7 | 0x0A, - 26849 - 19968: jis0208<<14 | 0x3A<<7 | 0x5B, - 26851 - 19968: jis0208<<14 | 0x3B<<7 | 0x07, - 26853 - 19968: jis0212<<14 | 0x23<<7 | 0x07, - 26855 - 19968: jis0208<<14 | 0x3B<<7 | 0x01, - 26856 - 19968: jis0212<<14 | 0x23<<7 | 0x08, - 26858 - 19968: jis0212<<14 | 0x23<<7 | 0x09, - 26859 - 19968: jis0212<<14 | 0x23<<7 | 0x0A, - 26860 - 19968: jis0212<<14 | 0x23<<7 | 0x0B, - 26861 - 19968: jis0212<<14 | 0x23<<7 | 0x0C, - 26862 - 19968: jis0208<<14 | 0x1E<<7 | 0x18, - 26863 - 19968: jis0208<<14 | 0x3B<<7 | 0x0B, - 26864 - 19968: jis0212<<14 | 0x23<<7 | 0x0D, - 26865 - 19968: jis0212<<14 | 0x23<<7 | 0x0E, - 26866 - 19968: jis0208<<14 | 0x1F<<7 | 0x12, - 26869 - 19968: jis0212<<14 | 0x23<<7 | 0x0F, - 26870 - 19968: jis0212<<14 | 0x23<<7 | 0x10, - 26873 - 19968: jis0208<<14 | 0x3B<<7 | 0x09, - 26874 - 19968: jis0208<<14 | 0x13<<7 | 0x1C, - 26875 - 19968: jis0212<<14 | 0x23<<7 | 0x11, - 26876 - 19968: jis0212<<14 | 0x23<<7 | 0x12, - 26877 - 19968: jis0212<<14 | 0x23<<7 | 0x13, - 26880 - 19968: jis0208<<14 | 0x2E<<7 | 0x2F, - 26881 - 19968: jis0208<<14 | 0x3A<<7 | 0x55, - 26884 - 19968: jis0208<<14 | 0x3B<<7 | 0x05, - 26885 - 19968: jis0208<<14 | 0x0F<<7 | 0x37, - 26886 - 19968: jis0212<<14 | 0x23<<7 | 0x14, - 26888 - 19968: jis0208<<14 | 0x3A<<7 | 0x57, - 26889 - 19968: jis0212<<14 | 0x23<<7 | 0x15, - 26890 - 19968: jis0212<<14 | 0x23<<7 | 0x16, - 26891 - 19968: jis0208<<14 | 0x2B<<7 | 0x19, - 26892 - 19968: jis0208<<14 | 0x3A<<7 | 0x5C, - 26893 - 19968: jis0208<<14 | 0x1E<<7 | 0x01, - 26894 - 19968: jis0208<<14 | 0x23<<7 | 0x26, - 26895 - 19968: jis0208<<14 | 0x3A<<7 | 0x52, - 26896 - 19968: jis0212<<14 | 0x23<<7 | 0x17, - 26897 - 19968: jis0212<<14 | 0x23<<7 | 0x18, - 26898 - 19968: jis0208<<14 | 0x3B<<7 | 0x04, - 26899 - 19968: jis0212<<14 | 0x23<<7 | 0x19, - 26902 - 19968: jis0212<<14 | 0x23<<7 | 0x1A, - 26903 - 19968: jis0212<<14 | 0x23<<7 | 0x1B, - 26905 - 19968: jis0208<<14 | 0x1E<<7 | 0x59, - 26906 - 19968: jis0208<<14 | 0x3B<<7 | 0x0E, - 26907 - 19968: jis0208<<14 | 0x12<<7 | 0x50, - 26908 - 19968: jis0208<<14 | 0x17<<7 | 0x00, - 26913 - 19968: jis0208<<14 | 0x3B<<7 | 0x10, - 26914 - 19968: jis0208<<14 | 0x3A<<7 | 0x59, - 26915 - 19968: jis0208<<14 | 0x3B<<7 | 0x0F, - 26917 - 19968: jis0208<<14 | 0x3B<<7 | 0x08, - 26918 - 19968: jis0208<<14 | 0x3A<<7 | 0x5A, - 26920 - 19968: jis0208<<14 | 0x3B<<7 | 0x0C, - 26922 - 19968: jis0208<<14 | 0x3B<<7 | 0x0D, - 26928 - 19968: jis0208<<14 | 0x3B<<7 | 0x1E, - 26929 - 19968: jis0212<<14 | 0x23<<7 | 0x1C, - 26931 - 19968: jis0212<<14 | 0x23<<7 | 0x1D, - 26932 - 19968: jis0208<<14 | 0x25<<7 | 0x2D, - 26933 - 19968: jis0212<<14 | 0x23<<7 | 0x1E, - 26934 - 19968: jis0208<<14 | 0x3B<<7 | 0x03, - 26936 - 19968: jis0212<<14 | 0x23<<7 | 0x1F, - 26937 - 19968: jis0208<<14 | 0x3B<<7 | 0x1A, - 26939 - 19968: jis0212<<14 | 0x23<<7 | 0x20, - 26941 - 19968: jis0208<<14 | 0x3B<<7 | 0x1C, - 26943 - 19968: jis0208<<14 | 0x23<<7 | 0x37, - 26946 - 19968: jis0212<<14 | 0x23<<7 | 0x21, - 26949 - 19968: jis0212<<14 | 0x23<<7 | 0x22, - 26953 - 19968: jis0212<<14 | 0x23<<7 | 0x23, - 26954 - 19968: jis0208<<14 | 0x2C<<7 | 0x2B, - 26958 - 19968: jis0212<<14 | 0x23<<7 | 0x24, - 26963 - 19968: jis0208<<14 | 0x28<<7 | 0x55, - 26964 - 19968: jis0208<<14 | 0x3B<<7 | 0x17, - 26965 - 19968: jis0208<<14 | 0x21<<7 | 0x29, - 26967 - 19968: jis0212<<14 | 0x23<<7 | 0x25, - 26969 - 19968: jis0208<<14 | 0x3B<<7 | 0x1D, - 26970 - 19968: jis0208<<14 | 0x20<<7 | 0x1E, - 26971 - 19968: jis0212<<14 | 0x23<<7 | 0x26, - 26972 - 19968: jis0208<<14 | 0x3B<<7 | 0x14, - 26973 - 19968: jis0208<<14 | 0x3B<<7 | 0x21, - 26974 - 19968: jis0208<<14 | 0x3B<<7 | 0x20, - 26976 - 19968: jis0208<<14 | 0x25<<7 | 0x4E, - 26977 - 19968: jis0208<<14 | 0x3B<<7 | 0x1F, - 26978 - 19968: jis0208<<14 | 0x25<<7 | 0x49, - 26979 - 19968: jis0212<<14 | 0x23<<7 | 0x27, - 26980 - 19968: jis0212<<14 | 0x23<<7 | 0x28, - 26981 - 19968: jis0212<<14 | 0x23<<7 | 0x29, - 26982 - 19968: jis0212<<14 | 0x23<<7 | 0x2A, - 26984 - 19968: jis0208<<14 | 0x59<<7 | 0x2E, - 26985 - 19968: jis0212<<14 | 0x23<<7 | 0x2C, - 26986 - 19968: jis0208<<14 | 0x3B<<7 | 0x23, - 26987 - 19968: jis0208<<14 | 0x3B<<7 | 0x16, - 26988 - 19968: jis0212<<14 | 0x23<<7 | 0x2D, - 26989 - 19968: jis0208<<14 | 0x15<<7 | 0x27, - 26990 - 19968: jis0208<<14 | 0x3B<<7 | 0x19, - 26991 - 19968: jis0208<<14 | 0x1C<<7 | 0x3C, - 26992 - 19968: jis0212<<14 | 0x23<<7 | 0x2E, - 26993 - 19968: jis0212<<14 | 0x23<<7 | 0x2F, - 26994 - 19968: jis0212<<14 | 0x23<<7 | 0x30, - 26995 - 19968: jis0208<<14 | 0x26<<7 | 0x3F, - 26996 - 19968: jis0208<<14 | 0x3B<<7 | 0x1B, - 26997 - 19968: jis0208<<14 | 0x15<<7 | 0x2A, - 26999 - 19968: jis0208<<14 | 0x3B<<7 | 0x13, - 27000 - 19968: jis0208<<14 | 0x3B<<7 | 0x15, - 27001 - 19968: jis0208<<14 | 0x3B<<7 | 0x12, - 27002 - 19968: jis0212<<14 | 0x23<<7 | 0x31, - 27003 - 19968: jis0212<<14 | 0x23<<7 | 0x32, - 27004 - 19968: jis0208<<14 | 0x2E<<7 | 0x0F, - 27005 - 19968: jis0208<<14 | 0x12<<7 | 0x39, - 27006 - 19968: jis0208<<14 | 0x3B<<7 | 0x18, - 27007 - 19968: jis0212<<14 | 0x23<<7 | 0x33, - 27008 - 19968: jis0212<<14 | 0x23<<7 | 0x34, - 27009 - 19968: jis0208<<14 | 0x3B<<7 | 0x22, - 27010 - 19968: jis0208<<14 | 0x12<<7 | 0x14, - 27018 - 19968: jis0208<<14 | 0x19<<7 | 0x46, - 27021 - 19968: jis0212<<14 | 0x23<<7 | 0x35, - 27022 - 19968: jis0208<<14 | 0x10<<7 | 0x3C, - 27025 - 19968: jis0208<<14 | 0x3B<<7 | 0x33, - 27026 - 19968: jis0212<<14 | 0x23<<7 | 0x36, - 27028 - 19968: jis0208<<14 | 0x2E<<7 | 0x10, - 27029 - 19968: jis0208<<14 | 0x3B<<7 | 0x36, - 27030 - 19968: jis0212<<14 | 0x23<<7 | 0x37, - 27032 - 19968: jis0208<<14 | 0x59<<7 | 0x30, - 27035 - 19968: jis0208<<14 | 0x1E<<7 | 0x19, - 27036 - 19968: jis0208<<14 | 0x3B<<7 | 0x35, - 27040 - 19968: jis0208<<14 | 0x3B<<7 | 0x34, - 27041 - 19968: jis0212<<14 | 0x23<<7 | 0x39, - 27045 - 19968: jis0212<<14 | 0x23<<7 | 0x3A, - 27046 - 19968: jis0212<<14 | 0x23<<7 | 0x3B, - 27047 - 19968: jis0208<<14 | 0x3B<<7 | 0x31, - 27048 - 19968: jis0212<<14 | 0x23<<7 | 0x3C, - 27051 - 19968: jis0212<<14 | 0x23<<7 | 0x3D, - 27053 - 19968: jis0212<<14 | 0x23<<7 | 0x3E, - 27054 - 19968: jis0208<<14 | 0x3B<<7 | 0x25, - 27055 - 19968: jis0212<<14 | 0x23<<7 | 0x3F, - 27057 - 19968: jis0208<<14 | 0x3B<<7 | 0x42, - 27058 - 19968: jis0208<<14 | 0x3B<<7 | 0x24, - 27060 - 19968: jis0208<<14 | 0x3B<<7 | 0x37, - 27063 - 19968: jis0212<<14 | 0x23<<7 | 0x40, - 27064 - 19968: jis0212<<14 | 0x23<<7 | 0x41, - 27066 - 19968: jis0212<<14 | 0x23<<7 | 0x42, - 27067 - 19968: jis0208<<14 | 0x3B<<7 | 0x2F, - 27068 - 19968: jis0212<<14 | 0x23<<7 | 0x43, - 27070 - 19968: jis0208<<14 | 0x3B<<7 | 0x2A, - 27071 - 19968: jis0208<<14 | 0x3B<<7 | 0x27, - 27073 - 19968: jis0208<<14 | 0x3B<<7 | 0x28, - 27075 - 19968: jis0208<<14 | 0x3B<<7 | 0x30, - 27077 - 19968: jis0212<<14 | 0x23<<7 | 0x44, - 27079 - 19968: jis0208<<14 | 0x53<<7 | 0x01, - 27080 - 19968: jis0212<<14 | 0x23<<7 | 0x45, - 27082 - 19968: jis0208<<14 | 0x3B<<7 | 0x2D, - 27083 - 19968: jis0208<<14 | 0x18<<7 | 0x1C, - 27084 - 19968: jis0208<<14 | 0x23<<7 | 0x27, - 27085 - 19968: jis0208<<14 | 0x20<<7 | 0x43, - 27086 - 19968: jis0208<<14 | 0x3B<<7 | 0x2B, - 27088 - 19968: jis0208<<14 | 0x3B<<7 | 0x26, - 27089 - 19968: jis0212<<14 | 0x23<<7 | 0x46, - 27091 - 19968: jis0208<<14 | 0x3B<<7 | 0x29, - 27094 - 19968: jis0212<<14 | 0x23<<7 | 0x47, - 27095 - 19968: jis0212<<14 | 0x23<<7 | 0x48, - 27096 - 19968: jis0208<<14 | 0x2C<<7 | 0x2C, - 27097 - 19968: jis0208<<14 | 0x2A<<7 | 0x49, - 27101 - 19968: jis0208<<14 | 0x3B<<7 | 0x2E, - 27102 - 19968: jis0208<<14 | 0x3B<<7 | 0x38, - 27106 - 19968: jis0208<<14 | 0x59<<7 | 0x31, - 27109 - 19968: jis0212<<14 | 0x23<<7 | 0x4A, - 27111 - 19968: jis0208<<14 | 0x3B<<7 | 0x40, - 27112 - 19968: jis0208<<14 | 0x3B<<7 | 0x39, - 27115 - 19968: jis0208<<14 | 0x3B<<7 | 0x46, - 27117 - 19968: jis0208<<14 | 0x3B<<7 | 0x44, - 27118 - 19968: jis0212<<14 | 0x23<<7 | 0x4B, - 27119 - 19968: jis0212<<14 | 0x23<<7 | 0x4C, - 27121 - 19968: jis0212<<14 | 0x23<<7 | 0x4D, - 27122 - 19968: jis0208<<14 | 0x3B<<7 | 0x3F, - 27123 - 19968: jis0212<<14 | 0x23<<7 | 0x4E, - 27125 - 19968: jis0212<<14 | 0x23<<7 | 0x4F, - 27129 - 19968: jis0208<<14 | 0x3B<<7 | 0x3E, - 27131 - 19968: jis0208<<14 | 0x23<<7 | 0x2F, - 27133 - 19968: jis0208<<14 | 0x20<<7 | 0x44, - 27134 - 19968: jis0212<<14 | 0x23<<7 | 0x50, - 27135 - 19968: jis0208<<14 | 0x3B<<7 | 0x3C, - 27136 - 19968: jis0212<<14 | 0x23<<7 | 0x51, - 27137 - 19968: jis0212<<14 | 0x23<<7 | 0x52, - 27138 - 19968: jis0208<<14 | 0x3B<<7 | 0x3A, - 27139 - 19968: jis0212<<14 | 0x23<<7 | 0x53, - 27141 - 19968: jis0208<<14 | 0x3B<<7 | 0x41, - 27146 - 19968: jis0208<<14 | 0x3B<<7 | 0x47, - 27147 - 19968: jis0208<<14 | 0x27<<7 | 0x54, - 27148 - 19968: jis0208<<14 | 0x3B<<7 | 0x4D, - 27151 - 19968: jis0212<<14 | 0x23<<7 | 0x54, - 27153 - 19968: jis0212<<14 | 0x23<<7 | 0x55, - 27154 - 19968: jis0208<<14 | 0x3B<<7 | 0x48, - 27155 - 19968: jis0208<<14 | 0x3B<<7 | 0x4B, - 27156 - 19968: jis0208<<14 | 0x3B<<7 | 0x45, - 27157 - 19968: jis0212<<14 | 0x23<<7 | 0x56, - 27159 - 19968: jis0208<<14 | 0x22<<7 | 0x53, - 27161 - 19968: jis0208<<14 | 0x28<<7 | 0x17, - 27162 - 19968: jis0212<<14 | 0x23<<7 | 0x57, - 27163 - 19968: jis0208<<14 | 0x3B<<7 | 0x3B, - 27165 - 19968: jis0212<<14 | 0x23<<7 | 0x58, - 27166 - 19968: jis0208<<14 | 0x3B<<7 | 0x43, - 27167 - 19968: jis0208<<14 | 0x1D<<7 | 0x1F, - 27168 - 19968: jis0212<<14 | 0x23<<7 | 0x59, - 27169 - 19968: jis0208<<14 | 0x2B<<7 | 0x2E, - 27170 - 19968: jis0208<<14 | 0x3B<<7 | 0x57, - 27171 - 19968: jis0208<<14 | 0x3B<<7 | 0x4A, - 27172 - 19968: jis0212<<14 | 0x23<<7 | 0x5A, - 27176 - 19968: jis0212<<14 | 0x23<<7 | 0x5B, - 27177 - 19968: jis0208<<14 | 0x17<<7 | 0x01, - 27178 - 19968: jis0208<<14 | 0x11<<7 | 0x02, - 27179 - 19968: jis0208<<14 | 0x12<<7 | 0x3E, - 27182 - 19968: jis0208<<14 | 0x3B<<7 | 0x32, - 27184 - 19968: jis0208<<14 | 0x59<<7 | 0x32, - 27186 - 19968: jis0212<<14 | 0x23<<7 | 0x5D, - 27188 - 19968: jis0212<<14 | 0x24<<7 | 0x00, - 27189 - 19968: jis0208<<14 | 0x1D<<7 | 0x20, - 27190 - 19968: jis0208<<14 | 0x3B<<7 | 0x4F, - 27191 - 19968: jis0212<<14 | 0x24<<7 | 0x01, - 27192 - 19968: jis0208<<14 | 0x3B<<7 | 0x56, - 27193 - 19968: jis0208<<14 | 0x1B<<7 | 0x58, - 27194 - 19968: jis0208<<14 | 0x12<<7 | 0x51, - 27195 - 19968: jis0212<<14 | 0x24<<7 | 0x02, - 27197 - 19968: jis0208<<14 | 0x22<<7 | 0x0D, - 27198 - 19968: jis0212<<14 | 0x24<<7 | 0x03, - 27199 - 19968: jis0212<<14 | 0x24<<7 | 0x04, - 27204 - 19968: jis0208<<14 | 0x3B<<7 | 0x4C, - 27205 - 19968: jis0212<<14 | 0x24<<7 | 0x05, - 27206 - 19968: jis0208<<14 | 0x59<<7 | 0x34, - 27207 - 19968: jis0208<<14 | 0x3B<<7 | 0x51, - 27208 - 19968: jis0208<<14 | 0x3B<<7 | 0x55, - 27209 - 19968: jis0212<<14 | 0x24<<7 | 0x07, - 27210 - 19968: jis0212<<14 | 0x24<<7 | 0x08, - 27211 - 19968: jis0208<<14 | 0x15<<7 | 0x15, - 27214 - 19968: jis0212<<14 | 0x24<<7 | 0x09, - 27216 - 19968: jis0212<<14 | 0x24<<7 | 0x0A, - 27217 - 19968: jis0212<<14 | 0x24<<7 | 0x0B, - 27218 - 19968: jis0212<<14 | 0x24<<7 | 0x0C, - 27221 - 19968: jis0212<<14 | 0x24<<7 | 0x0D, - 27222 - 19968: jis0212<<14 | 0x24<<7 | 0x0E, - 27224 - 19968: jis0208<<14 | 0x14<<7 | 0x2B, - 27225 - 19968: jis0208<<14 | 0x3B<<7 | 0x53, - 27227 - 19968: jis0212<<14 | 0x24<<7 | 0x0F, - 27231 - 19968: jis0208<<14 | 0x14<<7 | 0x00, - 27233 - 19968: jis0208<<14 | 0x25<<7 | 0x2A, - 27234 - 19968: jis0208<<14 | 0x3B<<7 | 0x52, - 27236 - 19968: jis0212<<14 | 0x24<<7 | 0x10, - 27238 - 19968: jis0208<<14 | 0x3B<<7 | 0x54, - 27239 - 19968: jis0212<<14 | 0x24<<7 | 0x11, - 27242 - 19968: jis0212<<14 | 0x24<<7 | 0x12, - 27243 - 19968: jis0208<<14 | 0x59<<7 | 0x33, - 27249 - 19968: jis0212<<14 | 0x24<<7 | 0x13, - 27250 - 19968: jis0208<<14 | 0x3B<<7 | 0x4E, - 27251 - 19968: jis0208<<14 | 0x59<<7 | 0x35, - 27256 - 19968: jis0208<<14 | 0x3B<<7 | 0x50, - 27262 - 19968: jis0208<<14 | 0x59<<7 | 0x36, - 27263 - 19968: jis0208<<14 | 0x12<<7 | 0x3F, - 27264 - 19968: jis0208<<14 | 0x22<<7 | 0x28, - 27265 - 19968: jis0212<<14 | 0x24<<7 | 0x16, - 27267 - 19968: jis0212<<14 | 0x24<<7 | 0x17, - 27268 - 19968: jis0208<<14 | 0x3B<<7 | 0x5B, - 27270 - 19968: jis0212<<14 | 0x24<<7 | 0x18, - 27271 - 19968: jis0212<<14 | 0x24<<7 | 0x19, - 27273 - 19968: jis0212<<14 | 0x24<<7 | 0x1A, - 27275 - 19968: jis0212<<14 | 0x24<<7 | 0x1B, - 27277 - 19968: jis0208<<14 | 0x3B<<7 | 0x59, - 27278 - 19968: jis0208<<14 | 0x17<<7 | 0x48, - 27280 - 19968: jis0208<<14 | 0x3B<<7 | 0x58, - 27281 - 19968: jis0212<<14 | 0x24<<7 | 0x1C, - 27287 - 19968: jis0208<<14 | 0x3C<<7 | 0x00, - 27291 - 19968: jis0212<<14 | 0x24<<7 | 0x1D, - 27292 - 19968: jis0208<<14 | 0x3A<<7 | 0x37, - 27293 - 19968: jis0212<<14 | 0x24<<7 | 0x1E, - 27294 - 19968: jis0212<<14 | 0x24<<7 | 0x1F, - 27295 - 19968: jis0212<<14 | 0x24<<7 | 0x20, - 27296 - 19968: jis0208<<14 | 0x3B<<7 | 0x5A, - 27298 - 19968: jis0208<<14 | 0x3B<<7 | 0x5C, - 27299 - 19968: jis0208<<14 | 0x3B<<7 | 0x5D, - 27301 - 19968: jis0212<<14 | 0x24<<7 | 0x21, - 27306 - 19968: jis0208<<14 | 0x3C<<7 | 0x0B, - 27307 - 19968: jis0212<<14 | 0x24<<7 | 0x22, - 27308 - 19968: jis0208<<14 | 0x3C<<7 | 0x07, - 27310 - 19968: jis0208<<14 | 0x3A<<7 | 0x4C, - 27311 - 19968: jis0212<<14 | 0x24<<7 | 0x23, - 27312 - 19968: jis0212<<14 | 0x24<<7 | 0x24, - 27313 - 19968: jis0212<<14 | 0x24<<7 | 0x25, - 27315 - 19968: jis0208<<14 | 0x3C<<7 | 0x06, - 27316 - 19968: jis0212<<14 | 0x24<<7 | 0x26, - 27320 - 19968: jis0208<<14 | 0x3C<<7 | 0x05, - 27323 - 19968: jis0208<<14 | 0x3C<<7 | 0x02, - 27325 - 19968: jis0212<<14 | 0x24<<7 | 0x27, - 27326 - 19968: jis0212<<14 | 0x24<<7 | 0x28, - 27327 - 19968: jis0212<<14 | 0x24<<7 | 0x29, - 27329 - 19968: jis0208<<14 | 0x3B<<7 | 0x49, - 27330 - 19968: jis0208<<14 | 0x3C<<7 | 0x04, - 27331 - 19968: jis0208<<14 | 0x3C<<7 | 0x03, - 27334 - 19968: jis0212<<14 | 0x24<<7 | 0x2A, - 27336 - 19968: jis0212<<14 | 0x24<<7 | 0x2C, - 27337 - 19968: jis0212<<14 | 0x24<<7 | 0x2B, - 27340 - 19968: jis0212<<14 | 0x24<<7 | 0x2D, - 27344 - 19968: jis0212<<14 | 0x24<<7 | 0x2E, - 27345 - 19968: jis0208<<14 | 0x3C<<7 | 0x09, - 27347 - 19968: jis0208<<14 | 0x2E<<7 | 0x05, - 27348 - 19968: jis0212<<14 | 0x24<<7 | 0x2F, - 27349 - 19968: jis0212<<14 | 0x24<<7 | 0x30, - 27350 - 19968: jis0212<<14 | 0x24<<7 | 0x31, - 27354 - 19968: jis0208<<14 | 0x3C<<7 | 0x0C, - 27355 - 19968: jis0208<<14 | 0x15<<7 | 0x5A, - 27356 - 19968: jis0212<<14 | 0x24<<7 | 0x32, - 27357 - 19968: jis0212<<14 | 0x24<<7 | 0x33, - 27358 - 19968: jis0208<<14 | 0x3C<<7 | 0x08, - 27359 - 19968: jis0208<<14 | 0x3C<<7 | 0x0A, - 27362 - 19968: jis0208<<14 | 0x59<<7 | 0x37, - 27364 - 19968: jis0208<<14 | 0x59<<7 | 0x38, - 27367 - 19968: jis0212<<14 | 0x24<<7 | 0x35, - 27368 - 19968: jis0208<<14 | 0x27<<7 | 0x06, - 27370 - 19968: jis0208<<14 | 0x3C<<7 | 0x0D, - 27372 - 19968: jis0212<<14 | 0x24<<7 | 0x36, - 27376 - 19968: jis0212<<14 | 0x24<<7 | 0x37, - 27377 - 19968: jis0212<<14 | 0x24<<7 | 0x38, - 27378 - 19968: jis0212<<14 | 0x24<<7 | 0x39, - 27386 - 19968: jis0208<<14 | 0x3C<<7 | 0x11, - 27387 - 19968: jis0208<<14 | 0x3C<<7 | 0x0E, - 27388 - 19968: jis0212<<14 | 0x24<<7 | 0x3A, - 27389 - 19968: jis0212<<14 | 0x24<<7 | 0x3B, - 27394 - 19968: jis0212<<14 | 0x24<<7 | 0x3C, - 27395 - 19968: jis0212<<14 | 0x24<<7 | 0x3D, - 27396 - 19968: jis0208<<14 | 0x2C<<7 | 0x52, - 27397 - 19968: jis0208<<14 | 0x3C<<7 | 0x0F, - 27398 - 19968: jis0212<<14 | 0x24<<7 | 0x3E, - 27399 - 19968: jis0212<<14 | 0x24<<7 | 0x3F, - 27401 - 19968: jis0212<<14 | 0x24<<7 | 0x40, - 27402 - 19968: jis0208<<14 | 0x3B<<7 | 0x3D, - 27407 - 19968: jis0212<<14 | 0x24<<7 | 0x41, - 27408 - 19968: jis0212<<14 | 0x24<<7 | 0x42, - 27409 - 19968: jis0212<<14 | 0x24<<7 | 0x43, - 27410 - 19968: jis0208<<14 | 0x3C<<7 | 0x12, - 27414 - 19968: jis0208<<14 | 0x3C<<7 | 0x13, - 27415 - 19968: jis0212<<14 | 0x24<<7 | 0x44, - 27419 - 19968: jis0212<<14 | 0x24<<7 | 0x45, - 27421 - 19968: jis0208<<14 | 0x10<<7 | 0x14, - 27422 - 19968: jis0212<<14 | 0x24<<7 | 0x46, - 27423 - 19968: jis0208<<14 | 0x3C<<7 | 0x15, - 27424 - 19968: jis0208<<14 | 0x16<<7 | 0x46, - 27425 - 19968: jis0208<<14 | 0x1B<<7 | 0x00, - 27427 - 19968: jis0208<<14 | 0x15<<7 | 0x34, - 27428 - 19968: jis0212<<14 | 0x24<<7 | 0x47, - 27431 - 19968: jis0208<<14 | 0x11<<7 | 0x03, - 27432 - 19968: jis0212<<14 | 0x24<<7 | 0x48, - 27435 - 19968: jis0212<<14 | 0x24<<7 | 0x49, - 27436 - 19968: jis0212<<14 | 0x24<<7 | 0x4A, - 27439 - 19968: jis0212<<14 | 0x24<<7 | 0x4B, - 27442 - 19968: jis0208<<14 | 0x2C<<7 | 0x3E, - 27445 - 19968: jis0212<<14 | 0x24<<7 | 0x4C, - 27446 - 19968: jis0212<<14 | 0x24<<7 | 0x4D, - 27447 - 19968: jis0208<<14 | 0x3C<<7 | 0x17, - 27448 - 19968: jis0208<<14 | 0x3C<<7 | 0x16, - 27449 - 19968: jis0208<<14 | 0x3C<<7 | 0x19, - 27450 - 19968: jis0208<<14 | 0x14<<7 | 0x1C, - 27451 - 19968: jis0212<<14 | 0x24<<7 | 0x4E, - 27453 - 19968: jis0208<<14 | 0x15<<7 | 0x35, - 27454 - 19968: jis0208<<14 | 0x13<<7 | 0x1D, - 27455 - 19968: jis0212<<14 | 0x24<<7 | 0x4F, - 27459 - 19968: jis0208<<14 | 0x3C<<7 | 0x1C, - 27462 - 19968: jis0212<<14 | 0x24<<7 | 0x50, - 27463 - 19968: jis0208<<14 | 0x3C<<7 | 0x1B, - 27465 - 19968: jis0208<<14 | 0x3C<<7 | 0x1D, - 27466 - 19968: jis0212<<14 | 0x24<<7 | 0x51, - 27468 - 19968: jis0208<<14 | 0x11<<7 | 0x2D, - 27469 - 19968: jis0212<<14 | 0x24<<7 | 0x52, - 27470 - 19968: jis0208<<14 | 0x22<<7 | 0x16, - 27472 - 19968: jis0208<<14 | 0x3C<<7 | 0x1E, - 27474 - 19968: jis0212<<14 | 0x24<<7 | 0x53, - 27475 - 19968: jis0208<<14 | 0x13<<7 | 0x1E, - 27476 - 19968: jis0208<<14 | 0x3C<<7 | 0x20, - 27478 - 19968: jis0212<<14 | 0x24<<7 | 0x54, - 27480 - 19968: jis0212<<14 | 0x24<<7 | 0x55, - 27481 - 19968: jis0208<<14 | 0x3C<<7 | 0x1F, - 27483 - 19968: jis0208<<14 | 0x3C<<7 | 0x21, - 27485 - 19968: jis0212<<14 | 0x24<<7 | 0x56, - 27487 - 19968: jis0208<<14 | 0x3C<<7 | 0x22, - 27488 - 19968: jis0212<<14 | 0x24<<7 | 0x57, - 27489 - 19968: jis0208<<14 | 0x3C<<7 | 0x23, - 27490 - 19968: jis0208<<14 | 0x1A<<7 | 0x3E, - 27491 - 19968: jis0208<<14 | 0x1F<<7 | 0x14, - 27492 - 19968: jis0208<<14 | 0x19<<7 | 0x00, - 27494 - 19968: jis0208<<14 | 0x28<<7 | 0x4F, - 27495 - 19968: jis0212<<14 | 0x24<<7 | 0x58, - 27497 - 19968: jis0208<<14 | 0x29<<7 | 0x41, - 27498 - 19968: jis0208<<14 | 0x2E<<7 | 0x23, - 27499 - 19968: jis0212<<14 | 0x24<<7 | 0x59, - 27502 - 19968: jis0212<<14 | 0x24<<7 | 0x5A, - 27503 - 19968: jis0208<<14 | 0x1A<<7 | 0x54, - 27504 - 19968: jis0212<<14 | 0x24<<7 | 0x5B, - 27507 - 19968: jis0208<<14 | 0x19<<7 | 0x2F, - 27508 - 19968: jis0208<<14 | 0x2D<<7 | 0x51, - 27509 - 19968: jis0212<<14 | 0x24<<7 | 0x5C, - 27512 - 19968: jis0208<<14 | 0x3C<<7 | 0x24, - 27513 - 19968: jis0208<<14 | 0x3C<<7 | 0x25, - 27515 - 19968: jis0208<<14 | 0x1A<<7 | 0x3F, - 27517 - 19968: jis0212<<14 | 0x24<<7 | 0x5D, - 27518 - 19968: jis0212<<14 | 0x25<<7 | 0x00, - 27519 - 19968: jis0208<<14 | 0x3C<<7 | 0x26, - 27520 - 19968: jis0208<<14 | 0x3C<<7 | 0x27, - 27522 - 19968: jis0212<<14 | 0x25<<7 | 0x01, - 27523 - 19968: jis0208<<14 | 0x3C<<7 | 0x29, - 27524 - 19968: jis0208<<14 | 0x3C<<7 | 0x28, - 27525 - 19968: jis0212<<14 | 0x25<<7 | 0x02, - 27526 - 19968: jis0208<<14 | 0x2A<<7 | 0x37, - 27529 - 19968: jis0208<<14 | 0x1C<<7 | 0x3D, - 27530 - 19968: jis0208<<14 | 0x1B<<7 | 0x4B, - 27531 - 19968: jis0208<<14 | 0x1A<<7 | 0x23, - 27533 - 19968: jis0208<<14 | 0x3C<<7 | 0x2A, - 27541 - 19968: jis0208<<14 | 0x3C<<7 | 0x2C, - 27542 - 19968: jis0208<<14 | 0x1E<<7 | 0x02, - 27543 - 19968: jis0212<<14 | 0x25<<7 | 0x03, - 27544 - 19968: jis0208<<14 | 0x3C<<7 | 0x2B, - 27547 - 19968: jis0212<<14 | 0x25<<7 | 0x04, - 27550 - 19968: jis0208<<14 | 0x3C<<7 | 0x2D, - 27551 - 19968: jis0212<<14 | 0x25<<7 | 0x05, - 27552 - 19968: jis0212<<14 | 0x25<<7 | 0x06, - 27554 - 19968: jis0212<<14 | 0x25<<7 | 0x07, - 27555 - 19968: jis0212<<14 | 0x25<<7 | 0x08, - 27556 - 19968: jis0208<<14 | 0x3C<<7 | 0x2E, - 27560 - 19968: jis0212<<14 | 0x25<<7 | 0x09, - 27561 - 19968: jis0212<<14 | 0x25<<7 | 0x0A, - 27562 - 19968: jis0208<<14 | 0x3C<<7 | 0x2F, - 27563 - 19968: jis0208<<14 | 0x3C<<7 | 0x30, - 27564 - 19968: jis0212<<14 | 0x25<<7 | 0x0B, - 27565 - 19968: jis0212<<14 | 0x25<<7 | 0x0C, - 27566 - 19968: jis0212<<14 | 0x25<<7 | 0x0D, - 27567 - 19968: jis0208<<14 | 0x3C<<7 | 0x31, - 27568 - 19968: jis0212<<14 | 0x25<<7 | 0x0E, - 27569 - 19968: jis0208<<14 | 0x3C<<7 | 0x33, - 27570 - 19968: jis0208<<14 | 0x3C<<7 | 0x32, - 27571 - 19968: jis0208<<14 | 0x3C<<7 | 0x34, - 27572 - 19968: jis0208<<14 | 0x11<<7 | 0x04, - 27573 - 19968: jis0208<<14 | 0x22<<7 | 0x29, - 27575 - 19968: jis0208<<14 | 0x3C<<7 | 0x35, - 27576 - 19968: jis0212<<14 | 0x25<<7 | 0x0F, - 27577 - 19968: jis0212<<14 | 0x25<<7 | 0x10, - 27578 - 19968: jis0208<<14 | 0x1A<<7 | 0x05, - 27579 - 19968: jis0208<<14 | 0x12<<7 | 0x2B, - 27580 - 19968: jis0208<<14 | 0x3C<<7 | 0x36, - 27581 - 19968: jis0212<<14 | 0x25<<7 | 0x11, - 27582 - 19968: jis0212<<14 | 0x25<<7 | 0x12, - 27583 - 19968: jis0208<<14 | 0x24<<7 | 0x21, - 27584 - 19968: jis0208<<14 | 0x33<<7 | 0x2B, - 27587 - 19968: jis0212<<14 | 0x25<<7 | 0x13, - 27588 - 19968: jis0212<<14 | 0x25<<7 | 0x14, - 27589 - 19968: jis0208<<14 | 0x14<<7 | 0x02, - 27590 - 19968: jis0208<<14 | 0x3C<<7 | 0x37, - 27593 - 19968: jis0212<<14 | 0x25<<7 | 0x15, - 27595 - 19968: jis0208<<14 | 0x3C<<7 | 0x38, - 27596 - 19968: jis0212<<14 | 0x25<<7 | 0x16, - 27597 - 19968: jis0208<<14 | 0x29<<7 | 0x4B, - 27598 - 19968: jis0208<<14 | 0x2A<<7 | 0x47, - 27602 - 19968: jis0208<<14 | 0x25<<7 | 0x26, - 27603 - 19968: jis0208<<14 | 0x3C<<7 | 0x39, - 27604 - 19968: jis0208<<14 | 0x27<<7 | 0x45, - 27606 - 19968: jis0208<<14 | 0x59<<7 | 0x39, - 27608 - 19968: jis0208<<14 | 0x27<<7 | 0x5A, - 27610 - 19968: jis0212<<14 | 0x25<<7 | 0x18, - 27611 - 19968: jis0208<<14 | 0x2B<<7 | 0x32, - 27615 - 19968: jis0208<<14 | 0x3C<<7 | 0x3A, - 27617 - 19968: jis0212<<14 | 0x25<<7 | 0x19, - 27619 - 19968: jis0212<<14 | 0x25<<7 | 0x1A, - 27622 - 19968: jis0212<<14 | 0x25<<7 | 0x1B, - 27623 - 19968: jis0212<<14 | 0x25<<7 | 0x1C, - 27627 - 19968: jis0208<<14 | 0x3C<<7 | 0x3C, - 27628 - 19968: jis0208<<14 | 0x3C<<7 | 0x3B, - 27630 - 19968: jis0212<<14 | 0x25<<7 | 0x1D, - 27631 - 19968: jis0208<<14 | 0x3C<<7 | 0x3E, - 27633 - 19968: jis0212<<14 | 0x25<<7 | 0x1E, - 27635 - 19968: jis0208<<14 | 0x3C<<7 | 0x3D, - 27639 - 19968: jis0212<<14 | 0x25<<7 | 0x1F, - 27641 - 19968: jis0212<<14 | 0x25<<7 | 0x20, - 27647 - 19968: jis0212<<14 | 0x25<<7 | 0x21, - 27650 - 19968: jis0212<<14 | 0x25<<7 | 0x22, - 27652 - 19968: jis0212<<14 | 0x25<<7 | 0x23, - 27653 - 19968: jis0212<<14 | 0x25<<7 | 0x24, - 27656 - 19968: jis0208<<14 | 0x3C<<7 | 0x40, - 27657 - 19968: jis0212<<14 | 0x25<<7 | 0x25, - 27661 - 19968: jis0212<<14 | 0x25<<7 | 0x26, - 27662 - 19968: jis0212<<14 | 0x25<<7 | 0x27, - 27663 - 19968: jis0208<<14 | 0x1A<<7 | 0x40, - 27664 - 19968: jis0212<<14 | 0x25<<7 | 0x28, - 27665 - 19968: jis0208<<14 | 0x2B<<7 | 0x10, - 27666 - 19968: jis0212<<14 | 0x25<<7 | 0x29, - 27667 - 19968: jis0208<<14 | 0x3C<<7 | 0x41, - 27668 - 19968: jis0208<<14 | 0x3C<<7 | 0x42, - 27671 - 19968: jis0208<<14 | 0x14<<7 | 0x03, - 27673 - 19968: jis0212<<14 | 0x25<<7 | 0x2A, - 27675 - 19968: jis0208<<14 | 0x3C<<7 | 0x43, - 27679 - 19968: jis0212<<14 | 0x25<<7 | 0x2B, - 27683 - 19968: jis0208<<14 | 0x3C<<7 | 0x45, - 27684 - 19968: jis0208<<14 | 0x3C<<7 | 0x44, - 27686 - 19968: jis0212<<14 | 0x25<<7 | 0x2C, - 27687 - 19968: jis0212<<14 | 0x25<<7 | 0x2D, - 27688 - 19968: jis0212<<14 | 0x25<<7 | 0x2E, - 27692 - 19968: jis0212<<14 | 0x25<<7 | 0x2F, - 27694 - 19968: jis0212<<14 | 0x25<<7 | 0x30, - 27699 - 19968: jis0212<<14 | 0x25<<7 | 0x31, - 27700 - 19968: jis0208<<14 | 0x1E<<7 | 0x44, - 27701 - 19968: jis0212<<14 | 0x25<<7 | 0x32, - 27702 - 19968: jis0212<<14 | 0x25<<7 | 0x33, - 27703 - 19968: jis0208<<14 | 0x28<<7 | 0x18, - 27704 - 19968: jis0208<<14 | 0x10<<7 | 0x29, - 27706 - 19968: jis0212<<14 | 0x25<<7 | 0x34, - 27707 - 19968: jis0212<<14 | 0x25<<7 | 0x35, - 27710 - 19968: jis0208<<14 | 0x27<<7 | 0x24, - 27711 - 19968: jis0208<<14 | 0x59<<7 | 0x3A, - 27712 - 19968: jis0208<<14 | 0x23<<7 | 0x54, - 27713 - 19968: jis0208<<14 | 0x1C<<7 | 0x20, - 27714 - 19968: jis0208<<14 | 0x14<<7 | 0x40, - 27722 - 19968: jis0212<<14 | 0x25<<7 | 0x37, - 27723 - 19968: jis0212<<14 | 0x25<<7 | 0x38, - 27725 - 19968: jis0212<<14 | 0x25<<7 | 0x39, - 27726 - 19968: jis0208<<14 | 0x27<<7 | 0x25, - 27727 - 19968: jis0212<<14 | 0x25<<7 | 0x3A, - 27728 - 19968: jis0208<<14 | 0x1B<<7 | 0x0D, - 27730 - 19968: jis0212<<14 | 0x25<<7 | 0x3B, - 27732 - 19968: jis0212<<14 | 0x25<<7 | 0x3C, - 27733 - 19968: jis0208<<14 | 0x3C<<7 | 0x47, - 27735 - 19968: jis0208<<14 | 0x13<<7 | 0x1F, - 27737 - 19968: jis0212<<14 | 0x25<<7 | 0x3D, - 27738 - 19968: jis0208<<14 | 0x10<<7 | 0x57, - 27739 - 19968: jis0212<<14 | 0x25<<7 | 0x3E, - 27740 - 19968: jis0208<<14 | 0x59<<7 | 0x3B, - 27741 - 19968: jis0208<<14 | 0x25<<7 | 0x51, - 27742 - 19968: jis0208<<14 | 0x3C<<7 | 0x46, - 27743 - 19968: jis0208<<14 | 0x18<<7 | 0x1D, - 27744 - 19968: jis0208<<14 | 0x22<<7 | 0x32, - 27746 - 19968: jis0208<<14 | 0x3C<<7 | 0x48, - 27751 - 19968: jis0212<<14 | 0x26<<7 | 0x15, - 27752 - 19968: jis0208<<14 | 0x3C<<7 | 0x50, - 27754 - 19968: jis0208<<14 | 0x3C<<7 | 0x49, - 27755 - 19968: jis0212<<14 | 0x25<<7 | 0x40, - 27757 - 19968: jis0212<<14 | 0x25<<7 | 0x41, - 27759 - 19968: jis0208<<14 | 0x59<<7 | 0x3D, - 27760 - 19968: jis0208<<14 | 0x21<<7 | 0x20, - 27762 - 19968: jis0208<<14 | 0x14<<7 | 0x41, - 27763 - 19968: jis0208<<14 | 0x3C<<7 | 0x51, - 27764 - 19968: jis0212<<14 | 0x25<<7 | 0x43, - 27766 - 19968: jis0212<<14 | 0x25<<7 | 0x44, - 27768 - 19968: jis0212<<14 | 0x25<<7 | 0x45, - 27769 - 19968: jis0212<<14 | 0x25<<7 | 0x46, - 27770 - 19968: jis0208<<14 | 0x16<<7 | 0x47, - 27771 - 19968: jis0212<<14 | 0x25<<7 | 0x47, - 27773 - 19968: jis0208<<14 | 0x14<<7 | 0x04, - 27774 - 19968: jis0208<<14 | 0x3C<<7 | 0x4F, - 27777 - 19968: jis0208<<14 | 0x3C<<7 | 0x4D, - 27778 - 19968: jis0208<<14 | 0x3C<<7 | 0x4A, - 27779 - 19968: jis0208<<14 | 0x2C<<7 | 0x3F, - 27781 - 19968: jis0212<<14 | 0x25<<7 | 0x48, - 27782 - 19968: jis0208<<14 | 0x59<<7 | 0x3C, - 27783 - 19968: jis0212<<14 | 0x25<<7 | 0x4A, - 27784 - 19968: jis0208<<14 | 0x23<<7 | 0x1F, - 27785 - 19968: jis0212<<14 | 0x25<<7 | 0x4B, - 27788 - 19968: jis0208<<14 | 0x25<<7 | 0x38, - 27789 - 19968: jis0208<<14 | 0x3C<<7 | 0x4B, - 27792 - 19968: jis0208<<14 | 0x3C<<7 | 0x53, - 27794 - 19968: jis0208<<14 | 0x3C<<7 | 0x52, - 27795 - 19968: jis0208<<14 | 0x16<<7 | 0x02, - 27796 - 19968: jis0212<<14 | 0x25<<7 | 0x4C, - 27797 - 19968: jis0212<<14 | 0x25<<7 | 0x4D, - 27798 - 19968: jis0208<<14 | 0x11<<7 | 0x0C, - 27799 - 19968: jis0212<<14 | 0x25<<7 | 0x4E, - 27800 - 19968: jis0212<<14 | 0x25<<7 | 0x4F, - 27801 - 19968: jis0208<<14 | 0x19<<7 | 0x1A, - 27802 - 19968: jis0208<<14 | 0x3C<<7 | 0x4C, - 27803 - 19968: jis0208<<14 | 0x3C<<7 | 0x4E, - 27804 - 19968: jis0212<<14 | 0x25<<7 | 0x50, - 27807 - 19968: jis0212<<14 | 0x25<<7 | 0x51, - 27809 - 19968: jis0208<<14 | 0x2A<<7 | 0x36, - 27810 - 19968: jis0208<<14 | 0x21<<7 | 0x53, - 27819 - 19968: jis0208<<14 | 0x2A<<7 | 0x56, - 27822 - 19968: jis0208<<14 | 0x3C<<7 | 0x5B, - 27824 - 19968: jis0212<<14 | 0x25<<7 | 0x52, - 27825 - 19968: jis0208<<14 | 0x3C<<7 | 0x5C, - 27826 - 19968: jis0212<<14 | 0x25<<7 | 0x53, - 27827 - 19968: jis0208<<14 | 0x11<<7 | 0x2E, - 27828 - 19968: jis0212<<14 | 0x25<<7 | 0x54, - 27832 - 19968: jis0208<<14 | 0x29<<7 | 0x07, - 27833 - 19968: jis0208<<14 | 0x2B<<7 | 0x5C, - 27834 - 19968: jis0208<<14 | 0x3D<<7 | 0x00, - 27835 - 19968: jis0208<<14 | 0x1B<<7 | 0x02, - 27836 - 19968: jis0208<<14 | 0x1D<<7 | 0x21, - 27837 - 19968: jis0208<<14 | 0x3C<<7 | 0x57, - 27838 - 19968: jis0208<<14 | 0x3C<<7 | 0x5D, - 27839 - 19968: jis0208<<14 | 0x10<<7 | 0x47, - 27841 - 19968: jis0208<<14 | 0x15<<7 | 0x16, - 27842 - 19968: jis0212<<14 | 0x25<<7 | 0x55, - 27844 - 19968: jis0208<<14 | 0x3C<<7 | 0x54, - 27845 - 19968: jis0208<<14 | 0x3C<<7 | 0x59, - 27846 - 19968: jis0212<<14 | 0x25<<7 | 0x56, - 27849 - 19968: jis0208<<14 | 0x1F<<7 | 0x53, - 27850 - 19968: jis0208<<14 | 0x26<<7 | 0x50, - 27852 - 19968: jis0208<<14 | 0x27<<7 | 0x46, - 27853 - 19968: jis0212<<14 | 0x25<<7 | 0x57, - 27855 - 19968: jis0212<<14 | 0x25<<7 | 0x58, - 27856 - 19968: jis0212<<14 | 0x25<<7 | 0x59, - 27857 - 19968: jis0212<<14 | 0x25<<7 | 0x5A, - 27858 - 19968: jis0212<<14 | 0x25<<7 | 0x5B, - 27859 - 19968: jis0208<<14 | 0x3C<<7 | 0x56, - 27860 - 19968: jis0212<<14 | 0x25<<7 | 0x5C, - 27861 - 19968: jis0208<<14 | 0x2A<<7 | 0x00, - 27862 - 19968: jis0212<<14 | 0x25<<7 | 0x5D, - 27863 - 19968: jis0208<<14 | 0x3C<<7 | 0x58, - 27865 - 19968: jis0208<<14 | 0x3D<<7 | 0x03, - 27866 - 19968: jis0208<<14 | 0x59<<7 | 0x3E, - 27867 - 19968: jis0208<<14 | 0x3D<<7 | 0x01, - 27868 - 19968: jis0212<<14 | 0x26<<7 | 0x01, - 27869 - 19968: jis0208<<14 | 0x3C<<7 | 0x5A, - 27872 - 19968: jis0212<<14 | 0x26<<7 | 0x02, - 27873 - 19968: jis0208<<14 | 0x2A<<7 | 0x01, - 27874 - 19968: jis0208<<14 | 0x26<<7 | 0x27, - 27875 - 19968: jis0208<<14 | 0x14<<7 | 0x42, - 27877 - 19968: jis0208<<14 | 0x24<<7 | 0x04, - 27879 - 19968: jis0212<<14 | 0x26<<7 | 0x03, - 27880 - 19968: jis0208<<14 | 0x22<<7 | 0x4C, - 27881 - 19968: jis0212<<14 | 0x26<<7 | 0x04, - 27882 - 19968: jis0208<<14 | 0x3D<<7 | 0x04, - 27883 - 19968: jis0212<<14 | 0x26<<7 | 0x05, - 27884 - 19968: jis0212<<14 | 0x26<<7 | 0x06, - 27886 - 19968: jis0212<<14 | 0x26<<7 | 0x07, - 27887 - 19968: jis0208<<14 | 0x3D<<7 | 0x02, - 27888 - 19968: jis0208<<14 | 0x21<<7 | 0x38, - 27889 - 19968: jis0208<<14 | 0x3C<<7 | 0x55, - 27890 - 19968: jis0212<<14 | 0x26<<7 | 0x08, - 27891 - 19968: jis0208<<14 | 0x10<<7 | 0x2A, - 27892 - 19968: jis0212<<14 | 0x26<<7 | 0x09, - 27908 - 19968: jis0208<<14 | 0x59<<7 | 0x3F, - 27911 - 19968: jis0212<<14 | 0x26<<7 | 0x0B, - 27914 - 19968: jis0212<<14 | 0x26<<7 | 0x0C, - 27915 - 19968: jis0208<<14 | 0x2C<<7 | 0x2D, - 27916 - 19968: jis0208<<14 | 0x3D<<7 | 0x0F, - 27918 - 19968: jis0212<<14 | 0x26<<7 | 0x0D, - 27919 - 19968: jis0212<<14 | 0x26<<7 | 0x0E, - 27921 - 19968: jis0212<<14 | 0x26<<7 | 0x0F, - 27922 - 19968: jis0208<<14 | 0x3D<<7 | 0x0E, - 27923 - 19968: jis0212<<14 | 0x26<<7 | 0x10, - 27927 - 19968: jis0208<<14 | 0x1F<<7 | 0x55, - 27929 - 19968: jis0208<<14 | 0x3D<<7 | 0x0B, - 27930 - 19968: jis0212<<14 | 0x26<<7 | 0x11, - 27931 - 19968: jis0208<<14 | 0x2C<<7 | 0x4B, - 27934 - 19968: jis0208<<14 | 0x25<<7 | 0x15, - 27935 - 19968: jis0208<<14 | 0x3D<<7 | 0x05, - 27941 - 19968: jis0208<<14 | 0x23<<7 | 0x24, - 27942 - 19968: jis0212<<14 | 0x26<<7 | 0x12, - 27943 - 19968: jis0212<<14 | 0x26<<7 | 0x13, - 27944 - 19968: jis0212<<14 | 0x26<<7 | 0x14, - 27945 - 19968: jis0208<<14 | 0x10<<7 | 0x2B, - 27946 - 19968: jis0208<<14 | 0x18<<7 | 0x1E, - 27947 - 19968: jis0208<<14 | 0x3D<<7 | 0x08, - 27950 - 19968: jis0212<<14 | 0x26<<7 | 0x16, - 27951 - 19968: jis0212<<14 | 0x26<<7 | 0x17, - 27953 - 19968: jis0212<<14 | 0x26<<7 | 0x18, - 27954 - 19968: jis0208<<14 | 0x1C<<7 | 0x06, - 27955 - 19968: jis0208<<14 | 0x3D<<7 | 0x0D, - 27957 - 19968: jis0208<<14 | 0x3D<<7 | 0x0C, - 27958 - 19968: jis0208<<14 | 0x3D<<7 | 0x07, - 27960 - 19968: jis0208<<14 | 0x3D<<7 | 0x0A, - 27961 - 19968: jis0212<<14 | 0x26<<7 | 0x19, - 27963 - 19968: jis0208<<14 | 0x12<<7 | 0x47, - 27964 - 19968: jis0212<<14 | 0x26<<7 | 0x1A, - 27965 - 19968: jis0208<<14 | 0x3D<<7 | 0x09, - 27966 - 19968: jis0208<<14 | 0x26<<7 | 0x28, - 27967 - 19968: jis0212<<14 | 0x26<<7 | 0x1B, - 27969 - 19968: jis0208<<14 | 0x2D<<7 | 0x0D, - 27972 - 19968: jis0208<<14 | 0x1D<<7 | 0x53, - 27973 - 19968: jis0208<<14 | 0x1F<<7 | 0x54, - 27991 - 19968: jis0212<<14 | 0x26<<7 | 0x1C, - 27993 - 19968: jis0208<<14 | 0x3D<<7 | 0x15, - 27994 - 19968: jis0208<<14 | 0x3D<<7 | 0x13, - 27996 - 19968: jis0208<<14 | 0x28<<7 | 0x2C, - 27998 - 19968: jis0212<<14 | 0x26<<7 | 0x1D, - 27999 - 19968: jis0212<<14 | 0x26<<7 | 0x1E, - 28001 - 19968: jis0212<<14 | 0x26<<7 | 0x1F, - 28003 - 19968: jis0208<<14 | 0x3D<<7 | 0x10, - 28004 - 19968: jis0208<<14 | 0x3D<<7 | 0x12, - 28005 - 19968: jis0212<<14 | 0x26<<7 | 0x20, - 28006 - 19968: jis0208<<14 | 0x10<<7 | 0x19, - 28007 - 19968: jis0212<<14 | 0x26<<7 | 0x21, - 28009 - 19968: jis0208<<14 | 0x18<<7 | 0x1F, - 28010 - 19968: jis0208<<14 | 0x2E<<7 | 0x11, - 28012 - 19968: jis0208<<14 | 0x12<<7 | 0x1C, - 28014 - 19968: jis0208<<14 | 0x28<<7 | 0x41, - 28015 - 19968: jis0208<<14 | 0x59<<7 | 0x41, - 28016 - 19968: jis0212<<14 | 0x26<<7 | 0x23, - 28020 - 19968: jis0208<<14 | 0x2C<<7 | 0x40, - 28023 - 19968: jis0208<<14 | 0x12<<7 | 0x03, - 28024 - 19968: jis0208<<14 | 0x1E<<7 | 0x1A, - 28025 - 19968: jis0208<<14 | 0x3D<<7 | 0x14, - 28028 - 19968: jis0212<<14 | 0x26<<7 | 0x24, - 28034 - 19968: jis0212<<14 | 0x26<<7 | 0x25, - 28037 - 19968: jis0208<<14 | 0x3D<<7 | 0x19, - 28039 - 19968: jis0208<<14 | 0x59<<7 | 0x40, - 28040 - 19968: jis0208<<14 | 0x1D<<7 | 0x22, - 28044 - 19968: jis0208<<14 | 0x2C<<7 | 0x0F, - 28046 - 19968: jis0208<<14 | 0x3D<<7 | 0x16, - 28049 - 19968: jis0212<<14 | 0x26<<7 | 0x27, - 28050 - 19968: jis0212<<14 | 0x26<<7 | 0x28, - 28051 - 19968: jis0208<<14 | 0x3D<<7 | 0x11, - 28052 - 19968: jis0212<<14 | 0x26<<7 | 0x29, - 28053 - 19968: jis0208<<14 | 0x3D<<7 | 0x17, - 28054 - 19968: jis0208<<14 | 0x59<<7 | 0x42, - 28055 - 19968: jis0212<<14 | 0x26<<7 | 0x2B, - 28056 - 19968: jis0212<<14 | 0x26<<7 | 0x2C, - 28057 - 19968: jis0208<<14 | 0x2D<<7 | 0x3D, - 28059 - 19968: jis0208<<14 | 0x24<<7 | 0x52, - 28060 - 19968: jis0208<<14 | 0x25<<7 | 0x21, - 28074 - 19968: jis0212<<14 | 0x26<<7 | 0x2D, - 28076 - 19968: jis0208<<14 | 0x59<<7 | 0x43, - 28079 - 19968: jis0208<<14 | 0x12<<7 | 0x15, - 28082 - 19968: jis0208<<14 | 0x10<<7 | 0x34, - 28084 - 19968: jis0212<<14 | 0x26<<7 | 0x2F, - 28085 - 19968: jis0208<<14 | 0x3D<<7 | 0x1D, - 28087 - 19968: jis0212<<14 | 0x26<<7 | 0x30, - 28088 - 19968: jis0208<<14 | 0x3D<<7 | 0x20, - 28089 - 19968: jis0212<<14 | 0x26<<7 | 0x31, - 28092 - 19968: jis0208<<14 | 0x2D<<7 | 0x22, - 28093 - 19968: jis0212<<14 | 0x26<<7 | 0x32, - 28095 - 19968: jis0212<<14 | 0x26<<7 | 0x33, - 28096 - 19968: jis0208<<14 | 0x2C<<7 | 0x43, - 28100 - 19968: jis0212<<14 | 0x26<<7 | 0x34, - 28101 - 19968: jis0208<<14 | 0x3D<<7 | 0x27, - 28102 - 19968: jis0208<<14 | 0x3D<<7 | 0x21, - 28103 - 19968: jis0208<<14 | 0x3D<<7 | 0x1E, - 28104 - 19968: jis0212<<14 | 0x26<<7 | 0x35, - 28106 - 19968: jis0212<<14 | 0x26<<7 | 0x36, - 28107 - 19968: jis0208<<14 | 0x2D<<7 | 0x33, - 28108 - 19968: jis0208<<14 | 0x3D<<7 | 0x24, - 28110 - 19968: jis0212<<14 | 0x26<<7 | 0x37, - 28111 - 19968: jis0208<<14 | 0x59<<7 | 0x44, - 28113 - 19968: jis0208<<14 | 0x1C<<7 | 0x29, - 28114 - 19968: jis0208<<14 | 0x3D<<7 | 0x26, - 28117 - 19968: jis0208<<14 | 0x3D<<7 | 0x2B, - 28118 - 19968: jis0212<<14 | 0x26<<7 | 0x39, - 28120 - 19968: jis0208<<14 | 0x24<<7 | 0x50, - 28121 - 19968: jis0208<<14 | 0x3D<<7 | 0x29, - 28123 - 19968: jis0212<<14 | 0x26<<7 | 0x3A, - 28125 - 19968: jis0212<<14 | 0x26<<7 | 0x3B, - 28126 - 19968: jis0208<<14 | 0x3D<<7 | 0x23, - 28127 - 19968: jis0212<<14 | 0x26<<7 | 0x3C, - 28128 - 19968: jis0212<<14 | 0x26<<7 | 0x3D, - 28129 - 19968: jis0208<<14 | 0x22<<7 | 0x17, - 28130 - 19968: jis0212<<14 | 0x26<<7 | 0x3E, - 28132 - 19968: jis0208<<14 | 0x3D<<7 | 0x2A, - 28133 - 19968: jis0212<<14 | 0x26<<7 | 0x3F, - 28134 - 19968: jis0208<<14 | 0x3D<<7 | 0x1F, - 28136 - 19968: jis0208<<14 | 0x3D<<7 | 0x25, - 28137 - 19968: jis0212<<14 | 0x26<<7 | 0x40, - 28138 - 19968: jis0208<<14 | 0x3D<<7 | 0x2C, - 28139 - 19968: jis0208<<14 | 0x0F<<7 | 0x5B, - 28140 - 19968: jis0208<<14 | 0x3D<<7 | 0x22, - 28142 - 19968: jis0208<<14 | 0x3D<<7 | 0x2D, - 28143 - 19968: jis0212<<14 | 0x26<<7 | 0x41, - 28144 - 19968: jis0212<<14 | 0x26<<7 | 0x42, - 28145 - 19968: jis0208<<14 | 0x1E<<7 | 0x1B, - 28146 - 19968: jis0208<<14 | 0x59<<7 | 0x46, - 28147 - 19968: jis0208<<14 | 0x1C<<7 | 0x3E, - 28148 - 19968: jis0212<<14 | 0x26<<7 | 0x43, - 28149 - 19968: jis0208<<14 | 0x29<<7 | 0x04, - 28150 - 19968: jis0212<<14 | 0x26<<7 | 0x44, - 28151 - 19968: jis0208<<14 | 0x19<<7 | 0x0D, - 28152 - 19968: jis0208<<14 | 0x59<<7 | 0x45, - 28153 - 19968: jis0208<<14 | 0x3D<<7 | 0x1A, - 28154 - 19968: jis0208<<14 | 0x3D<<7 | 0x28, - 28155 - 19968: jis0208<<14 | 0x24<<7 | 0x19, - 28156 - 19968: jis0208<<14 | 0x59<<7 | 0x47, - 28160 - 19968: jis0212<<14 | 0x26<<7 | 0x46, - 28164 - 19968: jis0212<<14 | 0x26<<7 | 0x47, - 28165 - 19968: jis0208<<14 | 0x1F<<7 | 0x15, - 28167 - 19968: jis0208<<14 | 0x12<<7 | 0x48, - 28168 - 19968: jis0208<<14 | 0x19<<7 | 0x30, - 28169 - 19968: jis0208<<14 | 0x1D<<7 | 0x23, - 28170 - 19968: jis0208<<14 | 0x3D<<7 | 0x1C, - 28171 - 19968: jis0208<<14 | 0x1C<<7 | 0x21, - 28179 - 19968: jis0208<<14 | 0x16<<7 | 0x2B, - 28181 - 19968: jis0208<<14 | 0x3D<<7 | 0x1B, - 28185 - 19968: jis0208<<14 | 0x3D<<7 | 0x31, - 28186 - 19968: jis0208<<14 | 0x1C<<7 | 0x4C, - 28187 - 19968: jis0208<<14 | 0x17<<7 | 0x19, - 28189 - 19968: jis0208<<14 | 0x3D<<7 | 0x40, - 28190 - 19968: jis0212<<14 | 0x26<<7 | 0x48, - 28191 - 19968: jis0208<<14 | 0x3D<<7 | 0x3A, - 28192 - 19968: jis0208<<14 | 0x14<<7 | 0x53, - 28193 - 19968: jis0208<<14 | 0x24<<7 | 0x2E, - 28194 - 19968: jis0212<<14 | 0x26<<7 | 0x49, - 28195 - 19968: jis0208<<14 | 0x3D<<7 | 0x35, - 28196 - 19968: jis0208<<14 | 0x3D<<7 | 0x3E, - 28197 - 19968: jis0208<<14 | 0x0F<<7 | 0x0E, - 28198 - 19968: jis0208<<14 | 0x10<<7 | 0x11, - 28199 - 19968: jis0208<<14 | 0x59<<7 | 0x4A, - 28201 - 19968: jis0208<<14 | 0x11<<7 | 0x18, - 28203 - 19968: jis0208<<14 | 0x3D<<7 | 0x37, - 28204 - 19968: jis0208<<14 | 0x21<<7 | 0x0B, - 28205 - 19968: jis0208<<14 | 0x3D<<7 | 0x2E, - 28206 - 19968: jis0208<<14 | 0x3D<<7 | 0x30, - 28207 - 19968: jis0208<<14 | 0x18<<7 | 0x20, - 28210 - 19968: jis0212<<14 | 0x26<<7 | 0x4B, - 28214 - 19968: jis0212<<14 | 0x26<<7 | 0x4C, - 28216 - 19968: jis0208<<14 | 0x3D<<7 | 0x41, - 28217 - 19968: jis0208<<14 | 0x59<<7 | 0x48, - 28218 - 19968: jis0208<<14 | 0x3D<<7 | 0x3C, - 28219 - 19968: jis0212<<14 | 0x26<<7 | 0x4E, - 28220 - 19968: jis0208<<14 | 0x59<<7 | 0x4B, - 28222 - 19968: jis0208<<14 | 0x3D<<7 | 0x34, - 28227 - 19968: jis0208<<14 | 0x3D<<7 | 0x3B, - 28228 - 19968: jis0212<<14 | 0x26<<7 | 0x50, - 28229 - 19968: jis0212<<14 | 0x26<<7 | 0x51, - 28232 - 19968: jis0212<<14 | 0x26<<7 | 0x52, - 28233 - 19968: jis0212<<14 | 0x26<<7 | 0x53, - 28234 - 19968: jis0208<<14 | 0x2B<<7 | 0x0A, - 28235 - 19968: jis0212<<14 | 0x26<<7 | 0x54, - 28237 - 19968: jis0208<<14 | 0x3D<<7 | 0x39, - 28238 - 19968: jis0208<<14 | 0x3D<<7 | 0x3D, - 28239 - 19968: jis0212<<14 | 0x26<<7 | 0x55, - 28241 - 19968: jis0212<<14 | 0x26<<7 | 0x56, - 28242 - 19968: jis0212<<14 | 0x26<<7 | 0x57, - 28243 - 19968: jis0212<<14 | 0x26<<7 | 0x58, - 28244 - 19968: jis0212<<14 | 0x26<<7 | 0x59, - 28246 - 19968: jis0208<<14 | 0x17<<7 | 0x2F, - 28247 - 19968: jis0212<<14 | 0x26<<7 | 0x5A, - 28248 - 19968: jis0208<<14 | 0x1D<<7 | 0x24, - 28251 - 19968: jis0208<<14 | 0x22<<7 | 0x18, - 28252 - 19968: jis0208<<14 | 0x59<<7 | 0x49, - 28253 - 19968: jis0212<<14 | 0x26<<7 | 0x5C, - 28254 - 19968: jis0212<<14 | 0x26<<7 | 0x5D, - 28255 - 19968: jis0208<<14 | 0x3D<<7 | 0x33, - 28258 - 19968: jis0212<<14 | 0x27<<7 | 0x00, - 28259 - 19968: jis0212<<14 | 0x27<<7 | 0x01, - 28263 - 19968: jis0208<<14 | 0x2C<<7 | 0x0E, - 28264 - 19968: jis0212<<14 | 0x27<<7 | 0x02, - 28267 - 19968: jis0208<<14 | 0x3D<<7 | 0x36, - 28270 - 19968: jis0208<<14 | 0x3D<<7 | 0x2F, - 28271 - 19968: jis0208<<14 | 0x24<<7 | 0x51, - 28274 - 19968: jis0208<<14 | 0x3D<<7 | 0x32, - 28275 - 19968: jis0212<<14 | 0x27<<7 | 0x03, - 28278 - 19968: jis0208<<14 | 0x3D<<7 | 0x38, - 28283 - 19968: jis0212<<14 | 0x27<<7 | 0x04, - 28285 - 19968: jis0212<<14 | 0x27<<7 | 0x05, - 28286 - 19968: jis0208<<14 | 0x2E<<7 | 0x30, - 28287 - 19968: jis0208<<14 | 0x1B<<7 | 0x1D, - 28288 - 19968: jis0208<<14 | 0x2A<<7 | 0x5D, - 28290 - 19968: jis0208<<14 | 0x3D<<7 | 0x42, - 28300 - 19968: jis0208<<14 | 0x27<<7 | 0x0D, - 28301 - 19968: jis0212<<14 | 0x27<<7 | 0x06, - 28303 - 19968: jis0208<<14 | 0x3D<<7 | 0x4E, - 28304 - 19968: jis0208<<14 | 0x17<<7 | 0x1A, - 28307 - 19968: jis0212<<14 | 0x27<<7 | 0x07, - 28310 - 19968: jis0208<<14 | 0x1C<<7 | 0x3F, - 28312 - 19968: jis0208<<14 | 0x3D<<7 | 0x44, - 28313 - 19968: jis0212<<14 | 0x27<<7 | 0x08, - 28316 - 19968: jis0208<<14 | 0x2D<<7 | 0x0E, - 28317 - 19968: jis0208<<14 | 0x18<<7 | 0x21, - 28319 - 19968: jis0208<<14 | 0x3D<<7 | 0x51, - 28320 - 19968: jis0212<<14 | 0x27<<7 | 0x09, - 28322 - 19968: jis0208<<14 | 0x0F<<7 | 0x4D, - 28325 - 19968: jis0208<<14 | 0x3D<<7 | 0x4F, - 28327 - 19968: jis0212<<14 | 0x27<<7 | 0x0A, - 28330 - 19968: jis0208<<14 | 0x3D<<7 | 0x43, - 28333 - 19968: jis0212<<14 | 0x27<<7 | 0x0B, - 28334 - 19968: jis0212<<14 | 0x27<<7 | 0x0C, - 28335 - 19968: jis0208<<14 | 0x3D<<7 | 0x49, - 28337 - 19968: jis0212<<14 | 0x27<<7 | 0x0D, - 28338 - 19968: jis0208<<14 | 0x3D<<7 | 0x4B, - 28339 - 19968: jis0212<<14 | 0x27<<7 | 0x0E, - 28342 - 19968: jis0208<<14 | 0x2C<<7 | 0x2E, - 28343 - 19968: jis0208<<14 | 0x3D<<7 | 0x46, - 28346 - 19968: jis0208<<14 | 0x24<<7 | 0x0D, - 28347 - 19968: jis0212<<14 | 0x27<<7 | 0x0F, - 28349 - 19968: jis0208<<14 | 0x3D<<7 | 0x48, - 28351 - 19968: jis0208<<14 | 0x59<<7 | 0x4C, - 28352 - 19968: jis0212<<14 | 0x27<<7 | 0x11, - 28353 - 19968: jis0212<<14 | 0x27<<7 | 0x12, - 28354 - 19968: jis0208<<14 | 0x3D<<7 | 0x50, - 28355 - 19968: jis0212<<14 | 0x27<<7 | 0x13, - 28356 - 19968: jis0208<<14 | 0x3D<<7 | 0x4A, - 28357 - 19968: jis0208<<14 | 0x2B<<7 | 0x26, - 28359 - 19968: jis0212<<14 | 0x27<<7 | 0x14, - 28360 - 19968: jis0212<<14 | 0x27<<7 | 0x15, - 28361 - 19968: jis0208<<14 | 0x3D<<7 | 0x45, - 28362 - 19968: jis0212<<14 | 0x27<<7 | 0x16, - 28363 - 19968: jis0208<<14 | 0x1B<<7 | 0x01, - 28364 - 19968: jis0208<<14 | 0x3D<<7 | 0x5D, - 28365 - 19968: jis0212<<14 | 0x27<<7 | 0x17, - 28366 - 19968: jis0212<<14 | 0x27<<7 | 0x18, - 28367 - 19968: jis0212<<14 | 0x27<<7 | 0x19, - 28369 - 19968: jis0208<<14 | 0x12<<7 | 0x49, - 28371 - 19968: jis0208<<14 | 0x3D<<7 | 0x47, - 28372 - 19968: jis0208<<14 | 0x3D<<7 | 0x4C, - 28373 - 19968: jis0208<<14 | 0x3D<<7 | 0x4D, - 28381 - 19968: jis0208<<14 | 0x21<<7 | 0x4B, - 28382 - 19968: jis0208<<14 | 0x21<<7 | 0x39, - 28395 - 19968: jis0212<<14 | 0x27<<7 | 0x1A, - 28396 - 19968: jis0208<<14 | 0x3D<<7 | 0x55, - 28397 - 19968: jis0212<<14 | 0x27<<7 | 0x1B, - 28398 - 19968: jis0212<<14 | 0x27<<7 | 0x1C, - 28399 - 19968: jis0208<<14 | 0x3D<<7 | 0x5B, - 28402 - 19968: jis0208<<14 | 0x3D<<7 | 0x59, - 28404 - 19968: jis0208<<14 | 0x24<<7 | 0x08, - 28407 - 19968: jis0208<<14 | 0x3E<<7 | 0x02, - 28408 - 19968: jis0208<<14 | 0x3D<<7 | 0x56, - 28409 - 19968: jis0212<<14 | 0x27<<7 | 0x1D, - 28411 - 19968: jis0212<<14 | 0x27<<7 | 0x1E, - 28413 - 19968: jis0212<<14 | 0x27<<7 | 0x1F, - 28414 - 19968: jis0208<<14 | 0x3D<<7 | 0x57, - 28415 - 19968: jis0208<<14 | 0x3D<<7 | 0x3F, - 28417 - 19968: jis0208<<14 | 0x14<<7 | 0x58, - 28418 - 19968: jis0208<<14 | 0x28<<7 | 0x19, - 28420 - 19968: jis0212<<14 | 0x27<<7 | 0x20, - 28422 - 19968: jis0208<<14 | 0x1B<<7 | 0x1E, - 28424 - 19968: jis0212<<14 | 0x27<<7 | 0x21, - 28425 - 19968: jis0208<<14 | 0x18<<7 | 0x56, - 28426 - 19968: jis0212<<14 | 0x27<<7 | 0x22, - 28428 - 19968: jis0212<<14 | 0x27<<7 | 0x23, - 28429 - 19968: jis0212<<14 | 0x27<<7 | 0x24, - 28431 - 19968: jis0208<<14 | 0x2E<<7 | 0x12, - 28433 - 19968: jis0208<<14 | 0x3D<<7 | 0x53, - 28435 - 19968: jis0208<<14 | 0x3E<<7 | 0x01, - 28436 - 19968: jis0208<<14 | 0x10<<7 | 0x48, - 28437 - 19968: jis0208<<14 | 0x20<<7 | 0x45, - 28438 - 19968: jis0212<<14 | 0x27<<7 | 0x25, - 28440 - 19968: jis0212<<14 | 0x27<<7 | 0x26, - 28442 - 19968: jis0212<<14 | 0x27<<7 | 0x27, - 28443 - 19968: jis0212<<14 | 0x27<<7 | 0x28, - 28448 - 19968: jis0208<<14 | 0x26<<7 | 0x58, - 28450 - 19968: jis0208<<14 | 0x13<<7 | 0x20, - 28451 - 19968: jis0208<<14 | 0x2D<<7 | 0x59, - 28454 - 19968: jis0212<<14 | 0x27<<7 | 0x29, - 28457 - 19968: jis0212<<14 | 0x27<<7 | 0x2A, - 28458 - 19968: jis0212<<14 | 0x27<<7 | 0x2B, - 28459 - 19968: jis0208<<14 | 0x2B<<7 | 0x00, - 28460 - 19968: jis0208<<14 | 0x23<<7 | 0x31, - 28461 - 19968: jis0212<<14 | 0x27<<7 | 0x32, - 28463 - 19968: jis0212<<14 | 0x27<<7 | 0x2C, - 28464 - 19968: jis0212<<14 | 0x27<<7 | 0x2D, - 28465 - 19968: jis0208<<14 | 0x3D<<7 | 0x5A, - 28466 - 19968: jis0208<<14 | 0x3D<<7 | 0x5C, - 28467 - 19968: jis0212<<14 | 0x27<<7 | 0x2E, - 28470 - 19968: jis0212<<14 | 0x27<<7 | 0x2F, - 28472 - 19968: jis0208<<14 | 0x20<<7 | 0x11, - 28475 - 19968: jis0212<<14 | 0x27<<7 | 0x30, - 28476 - 19968: jis0212<<14 | 0x27<<7 | 0x31, - 28478 - 19968: jis0208<<14 | 0x3E<<7 | 0x00, - 28479 - 19968: jis0208<<14 | 0x3D<<7 | 0x58, - 28481 - 19968: jis0208<<14 | 0x3D<<7 | 0x52, - 28485 - 19968: jis0208<<14 | 0x13<<7 | 0x22, - 28495 - 19968: jis0212<<14 | 0x27<<7 | 0x33, - 28497 - 19968: jis0212<<14 | 0x27<<7 | 0x34, - 28498 - 19968: jis0212<<14 | 0x27<<7 | 0x35, - 28499 - 19968: jis0212<<14 | 0x27<<7 | 0x36, - 28500 - 19968: jis0208<<14 | 0x16<<7 | 0x48, - 28503 - 19968: jis0212<<14 | 0x27<<7 | 0x37, - 28504 - 19968: jis0208<<14 | 0x3E<<7 | 0x0E, - 28505 - 19968: jis0212<<14 | 0x27<<7 | 0x38, - 28506 - 19968: jis0212<<14 | 0x27<<7 | 0x39, - 28507 - 19968: jis0208<<14 | 0x3E<<7 | 0x09, - 28508 - 19968: jis0208<<14 | 0x1F<<7 | 0x57, - 28509 - 19968: jis0212<<14 | 0x27<<7 | 0x3A, - 28510 - 19968: jis0212<<14 | 0x27<<7 | 0x3B, - 28511 - 19968: jis0208<<14 | 0x12<<7 | 0x42, - 28513 - 19968: jis0212<<14 | 0x27<<7 | 0x3C, - 28514 - 19968: jis0212<<14 | 0x27<<7 | 0x3D, - 28516 - 19968: jis0208<<14 | 0x1C<<7 | 0x40, - 28518 - 19968: jis0208<<14 | 0x3E<<7 | 0x12, - 28520 - 19968: jis0212<<14 | 0x27<<7 | 0x3E, - 28524 - 19968: jis0212<<14 | 0x27<<7 | 0x3F, - 28525 - 19968: jis0208<<14 | 0x3E<<7 | 0x0B, - 28526 - 19968: jis0208<<14 | 0x23<<7 | 0x0B, - 28527 - 19968: jis0208<<14 | 0x3E<<7 | 0x08, - 28528 - 19968: jis0208<<14 | 0x23<<7 | 0x38, - 28532 - 19968: jis0208<<14 | 0x3E<<7 | 0x2B, - 28536 - 19968: jis0208<<14 | 0x3E<<7 | 0x05, - 28538 - 19968: jis0208<<14 | 0x3E<<7 | 0x04, - 28540 - 19968: jis0208<<14 | 0x3E<<7 | 0x0D, - 28541 - 19968: jis0212<<14 | 0x27<<7 | 0x40, - 28542 - 19968: jis0212<<14 | 0x27<<7 | 0x41, - 28544 - 19968: jis0208<<14 | 0x3E<<7 | 0x07, - 28545 - 19968: jis0208<<14 | 0x3E<<7 | 0x06, - 28546 - 19968: jis0208<<14 | 0x3E<<7 | 0x0C, - 28547 - 19968: jis0212<<14 | 0x27<<7 | 0x42, - 28548 - 19968: jis0208<<14 | 0x1F<<7 | 0x00, - 28550 - 19968: jis0208<<14 | 0x3E<<7 | 0x03, - 28551 - 19968: jis0212<<14 | 0x27<<7 | 0x43, - 28552 - 19968: jis0208<<14 | 0x59<<7 | 0x4D, - 28555 - 19968: jis0212<<14 | 0x27<<7 | 0x45, - 28556 - 19968: jis0212<<14 | 0x27<<7 | 0x46, - 28557 - 19968: jis0212<<14 | 0x27<<7 | 0x47, - 28558 - 19968: jis0208<<14 | 0x3E<<7 | 0x0F, - 28560 - 19968: jis0212<<14 | 0x27<<7 | 0x48, - 28561 - 19968: jis0208<<14 | 0x3E<<7 | 0x10, - 28562 - 19968: jis0212<<14 | 0x27<<7 | 0x49, - 28563 - 19968: jis0212<<14 | 0x27<<7 | 0x4A, - 28564 - 19968: jis0212<<14 | 0x27<<7 | 0x4B, - 28566 - 19968: jis0212<<14 | 0x27<<7 | 0x4C, - 28567 - 19968: jis0208<<14 | 0x13<<7 | 0x21, - 28570 - 19968: jis0212<<14 | 0x27<<7 | 0x4D, - 28575 - 19968: jis0212<<14 | 0x27<<7 | 0x4E, - 28576 - 19968: jis0212<<14 | 0x27<<7 | 0x4F, - 28577 - 19968: jis0208<<14 | 0x3E<<7 | 0x15, - 28579 - 19968: jis0208<<14 | 0x3E<<7 | 0x14, - 28580 - 19968: jis0208<<14 | 0x3E<<7 | 0x16, - 28581 - 19968: jis0212<<14 | 0x27<<7 | 0x50, - 28582 - 19968: jis0212<<14 | 0x27<<7 | 0x51, - 28583 - 19968: jis0212<<14 | 0x27<<7 | 0x52, - 28584 - 19968: jis0212<<14 | 0x27<<7 | 0x53, - 28586 - 19968: jis0208<<14 | 0x3E<<7 | 0x19, - 28590 - 19968: jis0212<<14 | 0x27<<7 | 0x54, - 28591 - 19968: jis0212<<14 | 0x27<<7 | 0x55, - 28592 - 19968: jis0212<<14 | 0x27<<7 | 0x56, - 28593 - 19968: jis0208<<14 | 0x24<<7 | 0x22, - 28595 - 19968: jis0208<<14 | 0x3E<<7 | 0x13, - 28597 - 19968: jis0208<<14 | 0x59<<7 | 0x4E, - 28598 - 19968: jis0212<<14 | 0x27<<7 | 0x58, - 28601 - 19968: jis0208<<14 | 0x3E<<7 | 0x17, - 28604 - 19968: jis0212<<14 | 0x27<<7 | 0x59, - 28608 - 19968: jis0208<<14 | 0x16<<7 | 0x42, - 28609 - 19968: jis0208<<14 | 0x21<<7 | 0x58, - 28610 - 19968: jis0208<<14 | 0x3E<<7 | 0x11, - 28611 - 19968: jis0208<<14 | 0x26<<7 | 0x1A, - 28613 - 19968: jis0212<<14 | 0x27<<7 | 0x5A, - 28614 - 19968: jis0208<<14 | 0x3E<<7 | 0x18, - 28615 - 19968: jis0212<<14 | 0x27<<7 | 0x5B, - 28616 - 19968: jis0212<<14 | 0x27<<7 | 0x5C, - 28618 - 19968: jis0212<<14 | 0x27<<7 | 0x5D, - 28628 - 19968: jis0208<<14 | 0x3E<<7 | 0x1D, - 28629 - 19968: jis0208<<14 | 0x3E<<7 | 0x1B, - 28632 - 19968: jis0208<<14 | 0x3E<<7 | 0x1E, - 28634 - 19968: jis0212<<14 | 0x28<<7 | 0x00, - 28635 - 19968: jis0208<<14 | 0x3E<<7 | 0x21, - 28638 - 19968: jis0212<<14 | 0x28<<7 | 0x01, - 28639 - 19968: jis0208<<14 | 0x3E<<7 | 0x1A, - 28640 - 19968: jis0208<<14 | 0x18<<7 | 0x49, - 28641 - 19968: jis0208<<14 | 0x26<<7 | 0x07, - 28644 - 19968: jis0208<<14 | 0x3D<<7 | 0x18, - 28648 - 19968: jis0212<<14 | 0x28<<7 | 0x02, - 28649 - 19968: jis0212<<14 | 0x28<<7 | 0x03, - 28651 - 19968: jis0208<<14 | 0x2C<<7 | 0x53, - 28652 - 19968: jis0208<<14 | 0x3E<<7 | 0x1C, - 28654 - 19968: jis0208<<14 | 0x3E<<7 | 0x20, - 28655 - 19968: jis0208<<14 | 0x21<<7 | 0x54, - 28656 - 19968: jis0212<<14 | 0x28<<7 | 0x04, - 28657 - 19968: jis0208<<14 | 0x3E<<7 | 0x1F, - 28659 - 19968: jis0208<<14 | 0x3E<<7 | 0x0A, - 28661 - 19968: jis0208<<14 | 0x59<<7 | 0x4F, - 28662 - 19968: jis0208<<14 | 0x4E<<7 | 0x48, - 28665 - 19968: jis0212<<14 | 0x28<<7 | 0x06, - 28666 - 19968: jis0208<<14 | 0x3E<<7 | 0x24, - 28668 - 19968: jis0212<<14 | 0x28<<7 | 0x07, - 28669 - 19968: jis0212<<14 | 0x28<<7 | 0x08, - 28670 - 19968: jis0208<<14 | 0x3E<<7 | 0x28, - 28672 - 19968: jis0212<<14 | 0x28<<7 | 0x09, - 28673 - 19968: jis0208<<14 | 0x3E<<7 | 0x26, - 28677 - 19968: jis0208<<14 | 0x59<<7 | 0x50, - 28678 - 19968: jis0212<<14 | 0x28<<7 | 0x0B, - 28679 - 19968: jis0208<<14 | 0x59<<7 | 0x51, - 28681 - 19968: jis0208<<14 | 0x3E<<7 | 0x22, - 28683 - 19968: jis0208<<14 | 0x3E<<7 | 0x23, - 28685 - 19968: jis0212<<14 | 0x28<<7 | 0x0D, - 28687 - 19968: jis0208<<14 | 0x3E<<7 | 0x27, - 28689 - 19968: jis0208<<14 | 0x3E<<7 | 0x25, - 28693 - 19968: jis0208<<14 | 0x28<<7 | 0x2D, - 28695 - 19968: jis0212<<14 | 0x28<<7 | 0x0E, - 28696 - 19968: jis0208<<14 | 0x3E<<7 | 0x2D, - 28698 - 19968: jis0208<<14 | 0x3E<<7 | 0x2A, - 28699 - 19968: jis0208<<14 | 0x3E<<7 | 0x29, - 28701 - 19968: jis0208<<14 | 0x3E<<7 | 0x2C, - 28702 - 19968: jis0208<<14 | 0x25<<7 | 0x33, - 28703 - 19968: jis0208<<14 | 0x3E<<7 | 0x2E, - 28704 - 19968: jis0212<<14 | 0x28<<7 | 0x0F, - 28707 - 19968: jis0212<<14 | 0x28<<7 | 0x10, - 28710 - 19968: jis0208<<14 | 0x22<<7 | 0x54, - 28711 - 19968: jis0208<<14 | 0x21<<7 | 0x4C, - 28712 - 19968: jis0208<<14 | 0x59<<7 | 0x52, - 28716 - 19968: jis0208<<14 | 0x1F<<7 | 0x04, - 28719 - 19968: jis0212<<14 | 0x28<<7 | 0x11, - 28720 - 19968: jis0208<<14 | 0x3E<<7 | 0x2F, - 28722 - 19968: jis0208<<14 | 0x3E<<7 | 0x31, - 28724 - 19968: jis0212<<14 | 0x28<<7 | 0x12, - 28727 - 19968: jis0212<<14 | 0x28<<7 | 0x13, - 28729 - 19968: jis0212<<14 | 0x28<<7 | 0x14, - 28732 - 19968: jis0212<<14 | 0x28<<7 | 0x15, - 28734 - 19968: jis0208<<14 | 0x3E<<7 | 0x30, - 28739 - 19968: jis0212<<14 | 0x28<<7 | 0x16, - 28740 - 19968: jis0212<<14 | 0x28<<7 | 0x17, - 28744 - 19968: jis0212<<14 | 0x28<<7 | 0x18, - 28745 - 19968: jis0212<<14 | 0x28<<7 | 0x19, - 28746 - 19968: jis0212<<14 | 0x28<<7 | 0x1A, - 28747 - 19968: jis0212<<14 | 0x28<<7 | 0x1B, - 28748 - 19968: jis0208<<14 | 0x3D<<7 | 0x54, - 28750 - 19968: jis0212<<14 | 0x28<<7 | 0x20, - 28753 - 19968: jis0208<<14 | 0x3E<<7 | 0x32, - 28756 - 19968: jis0212<<14 | 0x28<<7 | 0x1C, - 28757 - 19968: jis0212<<14 | 0x28<<7 | 0x1D, - 28760 - 19968: jis0208<<14 | 0x25<<7 | 0x46, - 28765 - 19968: jis0212<<14 | 0x28<<7 | 0x1E, - 28766 - 19968: jis0212<<14 | 0x28<<7 | 0x1F, - 28771 - 19968: jis0208<<14 | 0x3E<<7 | 0x33, - 28772 - 19968: jis0212<<14 | 0x28<<7 | 0x21, - 28773 - 19968: jis0212<<14 | 0x28<<7 | 0x22, - 28779 - 19968: jis0208<<14 | 0x11<<7 | 0x2F, - 28780 - 19968: jis0212<<14 | 0x28<<7 | 0x23, - 28782 - 19968: jis0212<<14 | 0x28<<7 | 0x24, - 28783 - 19968: jis0208<<14 | 0x24<<7 | 0x53, - 28784 - 19968: jis0208<<14 | 0x12<<7 | 0x04, - 28789 - 19968: jis0212<<14 | 0x28<<7 | 0x25, - 28790 - 19968: jis0212<<14 | 0x28<<7 | 0x26, - 28792 - 19968: jis0208<<14 | 0x14<<7 | 0x43, - 28796 - 19968: jis0208<<14 | 0x1B<<7 | 0x3D, - 28797 - 19968: jis0208<<14 | 0x19<<7 | 0x31, - 28798 - 19968: jis0212<<14 | 0x28<<7 | 0x27, - 28801 - 19968: jis0212<<14 | 0x28<<7 | 0x28, - 28805 - 19968: jis0208<<14 | 0x59<<7 | 0x53, - 28806 - 19968: jis0212<<14 | 0x28<<7 | 0x2A, - 28809 - 19968: jis0208<<14 | 0x2E<<7 | 0x06, - 28810 - 19968: jis0208<<14 | 0x1E<<7 | 0x45, - 28814 - 19968: jis0208<<14 | 0x10<<7 | 0x49, - 28818 - 19968: jis0208<<14 | 0x3E<<7 | 0x35, - 28820 - 19968: jis0212<<14 | 0x28<<7 | 0x2B, - 28821 - 19968: jis0212<<14 | 0x28<<7 | 0x2C, - 28822 - 19968: jis0212<<14 | 0x28<<7 | 0x2D, - 28823 - 19968: jis0212<<14 | 0x28<<7 | 0x2E, - 28824 - 19968: jis0212<<14 | 0x28<<7 | 0x2F, - 28825 - 19968: jis0208<<14 | 0x3E<<7 | 0x34, - 28827 - 19968: jis0212<<14 | 0x28<<7 | 0x30, - 28836 - 19968: jis0212<<14 | 0x28<<7 | 0x31, - 28843 - 19968: jis0208<<14 | 0x59<<7 | 0x54, - 28844 - 19968: jis0208<<14 | 0x3E<<7 | 0x38, - 28845 - 19968: jis0208<<14 | 0x22<<7 | 0x19, - 28846 - 19968: jis0208<<14 | 0x3E<<7 | 0x3B, - 28847 - 19968: jis0208<<14 | 0x3E<<7 | 0x36, - 28848 - 19968: jis0212<<14 | 0x28<<7 | 0x33, - 28849 - 19968: jis0212<<14 | 0x28<<7 | 0x34, - 28851 - 19968: jis0208<<14 | 0x3E<<7 | 0x3A, - 28852 - 19968: jis0212<<14 | 0x28<<7 | 0x35, - 28855 - 19968: jis0212<<14 | 0x28<<7 | 0x36, - 28856 - 19968: jis0208<<14 | 0x3E<<7 | 0x39, - 28857 - 19968: jis0208<<14 | 0x24<<7 | 0x1F, - 28858 - 19968: jis0208<<14 | 0x0F<<7 | 0x38, - 28859 - 19968: jis0208<<14 | 0x58<<7 | 0x06, - 28872 - 19968: jis0208<<14 | 0x2D<<7 | 0x54, - 28874 - 19968: jis0212<<14 | 0x28<<7 | 0x37, - 28875 - 19968: jis0208<<14 | 0x3E<<7 | 0x3D, - 28879 - 19968: jis0208<<14 | 0x10<<7 | 0x07, - 28881 - 19968: jis0212<<14 | 0x28<<7 | 0x38, - 28883 - 19968: jis0212<<14 | 0x28<<7 | 0x39, - 28884 - 19968: jis0212<<14 | 0x28<<7 | 0x3A, - 28885 - 19968: jis0212<<14 | 0x28<<7 | 0x3B, - 28886 - 19968: jis0212<<14 | 0x28<<7 | 0x3C, - 28888 - 19968: jis0212<<14 | 0x28<<7 | 0x3D, - 28889 - 19968: jis0208<<14 | 0x3E<<7 | 0x3F, - 28892 - 19968: jis0212<<14 | 0x28<<7 | 0x3E, - 28893 - 19968: jis0208<<14 | 0x3E<<7 | 0x3E, - 28895 - 19968: jis0208<<14 | 0x3E<<7 | 0x3C, - 28900 - 19968: jis0212<<14 | 0x28<<7 | 0x3F, - 28913 - 19968: jis0208<<14 | 0x3E<<7 | 0x37, - 28921 - 19968: jis0208<<14 | 0x2A<<7 | 0x02, - 28922 - 19968: jis0212<<14 | 0x28<<7 | 0x40, - 28925 - 19968: jis0208<<14 | 0x3E<<7 | 0x41, - 28931 - 19968: jis0212<<14 | 0x28<<7 | 0x41, - 28932 - 19968: jis0208<<14 | 0x59<<7 | 0x56, - 28933 - 19968: jis0212<<14 | 0x28<<7 | 0x43, - 28934 - 19968: jis0212<<14 | 0x28<<7 | 0x44, - 28935 - 19968: jis0212<<14 | 0x28<<7 | 0x45, - 28937 - 19968: jis0208<<14 | 0x3E<<7 | 0x40, - 28939 - 19968: jis0212<<14 | 0x28<<7 | 0x46, - 28940 - 19968: jis0212<<14 | 0x28<<7 | 0x47, - 28943 - 19968: jis0208<<14 | 0x59<<7 | 0x55, - 28948 - 19968: jis0208<<14 | 0x10<<7 | 0x4A, - 28953 - 19968: jis0208<<14 | 0x3E<<7 | 0x43, - 28954 - 19968: jis0208<<14 | 0x29<<7 | 0x11, - 28956 - 19968: jis0208<<14 | 0x3E<<7 | 0x42, - 28958 - 19968: jis0212<<14 | 0x28<<7 | 0x49, - 28960 - 19968: jis0212<<14 | 0x28<<7 | 0x4A, - 28961 - 19968: jis0208<<14 | 0x2B<<7 | 0x14, - 28966 - 19968: jis0208<<14 | 0x1D<<7 | 0x26, - 28971 - 19968: jis0212<<14 | 0x28<<7 | 0x4B, - 28973 - 19968: jis0212<<14 | 0x28<<7 | 0x4C, - 28975 - 19968: jis0212<<14 | 0x28<<7 | 0x4D, - 28976 - 19968: jis0212<<14 | 0x28<<7 | 0x4E, - 28977 - 19968: jis0212<<14 | 0x28<<7 | 0x4F, - 28982 - 19968: jis0208<<14 | 0x20<<7 | 0x12, - 28984 - 19968: jis0212<<14 | 0x28<<7 | 0x50, - 28988 - 19968: jis0208<<14 | 0x1D<<7 | 0x25, - 28993 - 19968: jis0212<<14 | 0x28<<7 | 0x51, - 28997 - 19968: jis0212<<14 | 0x28<<7 | 0x52, - 28998 - 19968: jis0208<<14 | 0x59<<7 | 0x58, - 28999 - 19968: jis0208<<14 | 0x59<<7 | 0x59, - 29001 - 19968: jis0208<<14 | 0x2D<<7 | 0x5A, - 29002 - 19968: jis0212<<14 | 0x28<<7 | 0x55, - 29003 - 19968: jis0212<<14 | 0x28<<7 | 0x56, - 29004 - 19968: jis0208<<14 | 0x3E<<7 | 0x49, - 29006 - 19968: jis0208<<14 | 0x1F<<7 | 0x58, - 29008 - 19968: jis0212<<14 | 0x28<<7 | 0x57, - 29010 - 19968: jis0212<<14 | 0x28<<7 | 0x58, - 29013 - 19968: jis0208<<14 | 0x3E<<7 | 0x45, - 29014 - 19968: jis0208<<14 | 0x3E<<7 | 0x4A, - 29015 - 19968: jis0212<<14 | 0x28<<7 | 0x59, - 29017 - 19968: jis0208<<14 | 0x10<<7 | 0x4B, - 29018 - 19968: jis0212<<14 | 0x28<<7 | 0x5A, - 29020 - 19968: jis0208<<14 | 0x59<<7 | 0x57, - 29022 - 19968: jis0212<<14 | 0x28<<7 | 0x5C, - 29024 - 19968: jis0212<<14 | 0x28<<7 | 0x5D, - 29026 - 19968: jis0208<<14 | 0x3E<<7 | 0x48, - 29028 - 19968: jis0208<<14 | 0x26<<7 | 0x40, - 29029 - 19968: jis0208<<14 | 0x3E<<7 | 0x44, - 29030 - 19968: jis0208<<14 | 0x3E<<7 | 0x47, - 29031 - 19968: jis0208<<14 | 0x1D<<7 | 0x27, - 29032 - 19968: jis0212<<14 | 0x29<<7 | 0x00, - 29033 - 19968: jis0208<<14 | 0x27<<7 | 0x30, - 29036 - 19968: jis0208<<14 | 0x3E<<7 | 0x4B, - 29038 - 19968: jis0208<<14 | 0x1B<<7 | 0x30, - 29049 - 19968: jis0212<<14 | 0x29<<7 | 0x01, - 29053 - 19968: jis0208<<14 | 0x1F<<7 | 0x59, - 29056 - 19968: jis0212<<14 | 0x29<<7 | 0x02, - 29060 - 19968: jis0208<<14 | 0x3E<<7 | 0x4E, - 29061 - 19968: jis0212<<14 | 0x29<<7 | 0x03, - 29063 - 19968: jis0212<<14 | 0x29<<7 | 0x04, - 29064 - 19968: jis0208<<14 | 0x3E<<7 | 0x46, - 29066 - 19968: jis0208<<14 | 0x16<<7 | 0x06, - 29068 - 19968: jis0212<<14 | 0x29<<7 | 0x05, - 29071 - 19968: jis0208<<14 | 0x3E<<7 | 0x4C, - 29074 - 19968: jis0212<<14 | 0x29<<7 | 0x06, - 29076 - 19968: jis0208<<14 | 0x2C<<7 | 0x2F, - 29077 - 19968: jis0208<<14 | 0x3E<<7 | 0x4F, - 29081 - 19968: jis0208<<14 | 0x53<<7 | 0x05, - 29082 - 19968: jis0212<<14 | 0x29<<7 | 0x07, - 29083 - 19968: jis0212<<14 | 0x29<<7 | 0x08, - 29087 - 19968: jis0208<<14 | 0x1C<<7 | 0x2E, - 29088 - 19968: jis0212<<14 | 0x29<<7 | 0x09, - 29090 - 19968: jis0212<<14 | 0x29<<7 | 0x0A, - 29096 - 19968: jis0208<<14 | 0x3E<<7 | 0x50, - 29100 - 19968: jis0208<<14 | 0x3E<<7 | 0x51, - 29103 - 19968: jis0212<<14 | 0x29<<7 | 0x0B, - 29104 - 19968: jis0212<<14 | 0x29<<7 | 0x0C, - 29105 - 19968: jis0208<<14 | 0x26<<7 | 0x0D, - 29106 - 19968: jis0212<<14 | 0x29<<7 | 0x0D, - 29107 - 19968: jis0212<<14 | 0x29<<7 | 0x0E, - 29113 - 19968: jis0208<<14 | 0x3E<<7 | 0x53, - 29114 - 19968: jis0212<<14 | 0x29<<7 | 0x0F, - 29118 - 19968: jis0208<<14 | 0x3E<<7 | 0x54, - 29119 - 19968: jis0212<<14 | 0x29<<7 | 0x10, - 29120 - 19968: jis0212<<14 | 0x29<<7 | 0x11, - 29121 - 19968: jis0208<<14 | 0x59<<7 | 0x5B, - 29123 - 19968: jis0208<<14 | 0x26<<7 | 0x12, - 29124 - 19968: jis0212<<14 | 0x29<<7 | 0x13, - 29128 - 19968: jis0208<<14 | 0x24<<7 | 0x54, - 29129 - 19968: jis0208<<14 | 0x3E<<7 | 0x56, - 29131 - 19968: jis0212<<14 | 0x29<<7 | 0x14, - 29132 - 19968: jis0212<<14 | 0x29<<7 | 0x15, - 29134 - 19968: jis0208<<14 | 0x3E<<7 | 0x58, - 29136 - 19968: jis0208<<14 | 0x2D<<7 | 0x34, - 29138 - 19968: jis0208<<14 | 0x3E<<7 | 0x55, - 29139 - 19968: jis0212<<14 | 0x29<<7 | 0x16, - 29140 - 19968: jis0208<<14 | 0x3E<<7 | 0x57, - 29141 - 19968: jis0208<<14 | 0x10<<7 | 0x4C, - 29142 - 19968: jis0212<<14 | 0x29<<7 | 0x17, - 29143 - 19968: jis0208<<14 | 0x3E<<7 | 0x52, - 29145 - 19968: jis0212<<14 | 0x29<<7 | 0x18, - 29146 - 19968: jis0212<<14 | 0x29<<7 | 0x19, - 29148 - 19968: jis0212<<14 | 0x29<<7 | 0x1A, - 29151 - 19968: jis0208<<14 | 0x32<<7 | 0x3A, - 29152 - 19968: jis0208<<14 | 0x3E<<7 | 0x59, - 29157 - 19968: jis0208<<14 | 0x20<<7 | 0x46, - 29158 - 19968: jis0208<<14 | 0x1A<<7 | 0x17, - 29159 - 19968: jis0208<<14 | 0x3E<<7 | 0x5B, - 29164 - 19968: jis0208<<14 | 0x3E<<7 | 0x5A, - 29165 - 19968: jis0208<<14 | 0x1E<<7 | 0x03, - 29166 - 19968: jis0208<<14 | 0x31<<7 | 0x38, - 29173 - 19968: jis0208<<14 | 0x3E<<7 | 0x5C, - 29176 - 19968: jis0212<<14 | 0x29<<7 | 0x1B, - 29177 - 19968: jis0208<<14 | 0x3F<<7 | 0x00, - 29179 - 19968: jis0208<<14 | 0x3E<<7 | 0x4D, - 29180 - 19968: jis0208<<14 | 0x3E<<7 | 0x5D, - 29182 - 19968: jis0208<<14 | 0x59<<7 | 0x5C, - 29183 - 19968: jis0208<<14 | 0x3F<<7 | 0x01, - 29184 - 19968: jis0212<<14 | 0x29<<7 | 0x1D, - 29190 - 19968: jis0208<<14 | 0x26<<7 | 0x59, - 29191 - 19968: jis0212<<14 | 0x29<<7 | 0x1E, - 29192 - 19968: jis0212<<14 | 0x29<<7 | 0x1F, - 29193 - 19968: jis0212<<14 | 0x29<<7 | 0x20, - 29197 - 19968: jis0208<<14 | 0x3F<<7 | 0x02, - 29200 - 19968: jis0208<<14 | 0x3F<<7 | 0x03, - 29203 - 19968: jis0212<<14 | 0x29<<7 | 0x21, - 29207 - 19968: jis0212<<14 | 0x29<<7 | 0x22, - 29210 - 19968: jis0212<<14 | 0x29<<7 | 0x23, - 29211 - 19968: jis0208<<14 | 0x3F<<7 | 0x04, - 29213 - 19968: jis0212<<14 | 0x29<<7 | 0x24, - 29215 - 19968: jis0212<<14 | 0x29<<7 | 0x25, - 29220 - 19968: jis0212<<14 | 0x29<<7 | 0x26, - 29224 - 19968: jis0208<<14 | 0x3F<<7 | 0x05, - 29226 - 19968: jis0208<<14 | 0x23<<7 | 0x3D, - 29227 - 19968: jis0212<<14 | 0x29<<7 | 0x27, - 29228 - 19968: jis0208<<14 | 0x3F<<7 | 0x07, - 29229 - 19968: jis0208<<14 | 0x3F<<7 | 0x06, - 29231 - 19968: jis0212<<14 | 0x29<<7 | 0x28, - 29232 - 19968: jis0208<<14 | 0x3F<<7 | 0x08, - 29234 - 19968: jis0208<<14 | 0x3F<<7 | 0x09, - 29236 - 19968: jis0212<<14 | 0x29<<7 | 0x29, - 29237 - 19968: jis0208<<14 | 0x1B<<7 | 0x3E, - 29238 - 19968: jis0208<<14 | 0x28<<7 | 0x42, - 29240 - 19968: jis0212<<14 | 0x29<<7 | 0x2A, - 29241 - 19968: jis0212<<14 | 0x29<<7 | 0x2B, - 29242 - 19968: jis0208<<14 | 0x2B<<7 | 0x4B, - 29243 - 19968: jis0208<<14 | 0x3F<<7 | 0x0A, - 29244 - 19968: jis0208<<14 | 0x3F<<7 | 0x0B, - 29245 - 19968: jis0208<<14 | 0x20<<7 | 0x35, - 29246 - 19968: jis0208<<14 | 0x1B<<7 | 0x03, - 29247 - 19968: jis0208<<14 | 0x3F<<7 | 0x0C, - 29248 - 19968: jis0208<<14 | 0x3F<<7 | 0x0D, - 29249 - 19968: jis0212<<14 | 0x29<<7 | 0x2C, - 29250 - 19968: jis0212<<14 | 0x29<<7 | 0x2D, - 29251 - 19968: jis0212<<14 | 0x29<<7 | 0x2E, - 29253 - 19968: jis0212<<14 | 0x29<<7 | 0x2F, - 29254 - 19968: jis0208<<14 | 0x3F<<7 | 0x0E, - 29255 - 19968: jis0208<<14 | 0x29<<7 | 0x31, - 29256 - 19968: jis0208<<14 | 0x27<<7 | 0x26, - 29259 - 19968: jis0208<<14 | 0x3F<<7 | 0x0F, - 29260 - 19968: jis0208<<14 | 0x26<<7 | 0x36, - 29262 - 19968: jis0212<<14 | 0x29<<7 | 0x30, - 29263 - 19968: jis0212<<14 | 0x29<<7 | 0x31, - 29264 - 19968: jis0212<<14 | 0x29<<7 | 0x32, - 29266 - 19968: jis0208<<14 | 0x23<<7 | 0x0C, - 29267 - 19968: jis0212<<14 | 0x29<<7 | 0x33, - 29269 - 19968: jis0212<<14 | 0x29<<7 | 0x34, - 29270 - 19968: jis0212<<14 | 0x29<<7 | 0x35, - 29272 - 19968: jis0208<<14 | 0x3F<<7 | 0x10, - 29273 - 19968: jis0208<<14 | 0x11<<7 | 0x46, - 29274 - 19968: jis0212<<14 | 0x29<<7 | 0x36, - 29275 - 19968: jis0208<<14 | 0x14<<7 | 0x4C, - 29276 - 19968: jis0212<<14 | 0x29<<7 | 0x37, - 29277 - 19968: jis0208<<14 | 0x2B<<7 | 0x25, - 29278 - 19968: jis0212<<14 | 0x29<<7 | 0x38, - 29279 - 19968: jis0208<<14 | 0x2B<<7 | 0x15, - 29280 - 19968: jis0212<<14 | 0x29<<7 | 0x39, - 29281 - 19968: jis0208<<14 | 0x11<<7 | 0x13, - 29282 - 19968: jis0208<<14 | 0x2E<<7 | 0x13, - 29283 - 19968: jis0212<<14 | 0x29<<7 | 0x3A, - 29287 - 19968: jis0208<<14 | 0x2A<<7 | 0x31, - 29288 - 19968: jis0212<<14 | 0x29<<7 | 0x3B, - 29289 - 19968: jis0208<<14 | 0x29<<7 | 0x09, - 29291 - 19968: jis0212<<14 | 0x29<<7 | 0x3C, - 29294 - 19968: jis0212<<14 | 0x29<<7 | 0x3D, - 29295 - 19968: jis0212<<14 | 0x29<<7 | 0x3E, - 29297 - 19968: jis0212<<14 | 0x29<<7 | 0x3F, - 29298 - 19968: jis0208<<14 | 0x1F<<7 | 0x16, - 29300 - 19968: jis0208<<14 | 0x3F<<7 | 0x11, - 29303 - 19968: jis0212<<14 | 0x29<<7 | 0x40, - 29304 - 19968: jis0212<<14 | 0x29<<7 | 0x41, - 29305 - 19968: jis0208<<14 | 0x25<<7 | 0x22, - 29307 - 19968: jis0212<<14 | 0x29<<7 | 0x42, - 29308 - 19968: jis0212<<14 | 0x29<<7 | 0x43, - 29309 - 19968: jis0208<<14 | 0x17<<7 | 0x02, - 29310 - 19968: jis0208<<14 | 0x3F<<7 | 0x12, - 29311 - 19968: jis0212<<14 | 0x29<<7 | 0x44, - 29312 - 19968: jis0208<<14 | 0x19<<7 | 0x33, - 29313 - 19968: jis0208<<14 | 0x3F<<7 | 0x14, - 29314 - 19968: jis0208<<14 | 0x3F<<7 | 0x13, - 29316 - 19968: jis0212<<14 | 0x29<<7 | 0x45, - 29319 - 19968: jis0208<<14 | 0x3F<<7 | 0x15, - 29321 - 19968: jis0212<<14 | 0x29<<7 | 0x46, - 29325 - 19968: jis0212<<14 | 0x29<<7 | 0x47, - 29326 - 19968: jis0212<<14 | 0x29<<7 | 0x48, - 29330 - 19968: jis0208<<14 | 0x3F<<7 | 0x16, - 29331 - 19968: jis0212<<14 | 0x29<<7 | 0x49, - 29334 - 19968: jis0208<<14 | 0x3F<<7 | 0x17, - 29339 - 19968: jis0212<<14 | 0x29<<7 | 0x4A, - 29344 - 19968: jis0208<<14 | 0x14<<7 | 0x1D, - 29346 - 19968: jis0208<<14 | 0x3F<<7 | 0x18, - 29351 - 19968: jis0208<<14 | 0x3F<<7 | 0x19, - 29352 - 19968: jis0212<<14 | 0x29<<7 | 0x4B, - 29356 - 19968: jis0208<<14 | 0x17<<7 | 0x03, - 29357 - 19968: jis0212<<14 | 0x29<<7 | 0x4C, - 29358 - 19968: jis0212<<14 | 0x29<<7 | 0x4D, - 29359 - 19968: jis0208<<14 | 0x27<<7 | 0x27, - 29361 - 19968: jis0208<<14 | 0x59<<7 | 0x5D, - 29362 - 19968: jis0208<<14 | 0x3F<<7 | 0x1B, - 29364 - 19968: jis0212<<14 | 0x29<<7 | 0x4F, - 29366 - 19968: jis0208<<14 | 0x1D<<7 | 0x54, - 29369 - 19968: jis0208<<14 | 0x3F<<7 | 0x1A, - 29374 - 19968: jis0208<<14 | 0x5A<<7 | 0x00, - 29377 - 19968: jis0212<<14 | 0x29<<7 | 0x51, - 29378 - 19968: jis0208<<14 | 0x15<<7 | 0x17, - 29379 - 19968: jis0208<<14 | 0x3F<<7 | 0x1C, - 29380 - 19968: jis0208<<14 | 0x3F<<7 | 0x1E, - 29382 - 19968: jis0208<<14 | 0x3F<<7 | 0x1D, - 29383 - 19968: jis0212<<14 | 0x29<<7 | 0x52, - 29385 - 19968: jis0212<<14 | 0x29<<7 | 0x53, - 29388 - 19968: jis0212<<14 | 0x29<<7 | 0x54, - 29390 - 19968: jis0208<<14 | 0x3F<<7 | 0x1F, - 29392 - 19968: jis0208<<14 | 0x17<<7 | 0x30, - 29394 - 19968: jis0208<<14 | 0x3F<<7 | 0x20, - 29397 - 19968: jis0212<<14 | 0x29<<7 | 0x55, - 29398 - 19968: jis0212<<14 | 0x29<<7 | 0x56, - 29399 - 19968: jis0208<<14 | 0x15<<7 | 0x48, - 29400 - 19968: jis0212<<14 | 0x29<<7 | 0x57, - 29401 - 19968: jis0208<<14 | 0x20<<7 | 0x1F, - 29403 - 19968: jis0208<<14 | 0x18<<7 | 0x5C, - 29407 - 19968: jis0212<<14 | 0x29<<7 | 0x58, - 29408 - 19968: jis0208<<14 | 0x3F<<7 | 0x22, - 29409 - 19968: jis0208<<14 | 0x3F<<7 | 0x23, - 29410 - 19968: jis0208<<14 | 0x3F<<7 | 0x21, - 29413 - 19968: jis0212<<14 | 0x29<<7 | 0x59, - 29417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4C, - 29420 - 19968: jis0208<<14 | 0x25<<7 | 0x27, - 29421 - 19968: jis0208<<14 | 0x15<<7 | 0x18, - 29427 - 19968: jis0212<<14 | 0x29<<7 | 0x5A, - 29428 - 19968: jis0212<<14 | 0x29<<7 | 0x5B, - 29431 - 19968: jis0208<<14 | 0x3F<<7 | 0x25, - 29432 - 19968: jis0208<<14 | 0x22<<7 | 0x0B, - 29433 - 19968: jis0208<<14 | 0x3F<<7 | 0x24, - 29434 - 19968: jis0212<<14 | 0x29<<7 | 0x5C, - 29435 - 19968: jis0212<<14 | 0x29<<7 | 0x5D, - 29436 - 19968: jis0208<<14 | 0x2E<<7 | 0x14, - 29437 - 19968: jis0208<<14 | 0x26<<7 | 0x41, - 29438 - 19968: jis0212<<14 | 0x2A<<7 | 0x00, - 29442 - 19968: jis0212<<14 | 0x2A<<7 | 0x01, - 29444 - 19968: jis0212<<14 | 0x2A<<7 | 0x02, - 29445 - 19968: jis0212<<14 | 0x2A<<7 | 0x03, - 29447 - 19968: jis0212<<14 | 0x2A<<7 | 0x04, - 29450 - 19968: jis0208<<14 | 0x3F<<7 | 0x28, - 29451 - 19968: jis0212<<14 | 0x2A<<7 | 0x05, - 29453 - 19968: jis0212<<14 | 0x2A<<7 | 0x06, - 29458 - 19968: jis0212<<14 | 0x2A<<7 | 0x07, - 29459 - 19968: jis0212<<14 | 0x2A<<7 | 0x08, - 29462 - 19968: jis0208<<14 | 0x3F<<7 | 0x2A, - 29463 - 19968: jis0208<<14 | 0x3F<<7 | 0x27, - 29464 - 19968: jis0212<<14 | 0x2A<<7 | 0x09, - 29465 - 19968: jis0212<<14 | 0x2A<<7 | 0x0A, - 29467 - 19968: jis0208<<14 | 0x2B<<7 | 0x33, - 29468 - 19968: jis0208<<14 | 0x3F<<7 | 0x29, - 29469 - 19968: jis0208<<14 | 0x3F<<7 | 0x2B, - 29470 - 19968: jis0212<<14 | 0x2A<<7 | 0x0B, - 29471 - 19968: jis0208<<14 | 0x2D<<7 | 0x23, - 29474 - 19968: jis0212<<14 | 0x2A<<7 | 0x0C, - 29476 - 19968: jis0208<<14 | 0x5A<<7 | 0x01, - 29477 - 19968: jis0208<<14 | 0x3F<<7 | 0x2F, - 29479 - 19968: jis0212<<14 | 0x2A<<7 | 0x0E, - 29480 - 19968: jis0212<<14 | 0x2A<<7 | 0x0F, - 29481 - 19968: jis0208<<14 | 0x3F<<7 | 0x2E, - 29482 - 19968: jis0208<<14 | 0x22<<7 | 0x55, - 29483 - 19968: jis0208<<14 | 0x26<<7 | 0x0C, - 29484 - 19968: jis0212<<14 | 0x2A<<7 | 0x10, - 29486 - 19968: jis0208<<14 | 0x17<<7 | 0x04, - 29487 - 19968: jis0208<<14 | 0x3F<<7 | 0x2D, - 29489 - 19968: jis0212<<14 | 0x2A<<7 | 0x11, - 29490 - 19968: jis0212<<14 | 0x2A<<7 | 0x12, - 29492 - 19968: jis0208<<14 | 0x3F<<7 | 0x2C, - 29493 - 19968: jis0212<<14 | 0x2A<<7 | 0x13, - 29494 - 19968: jis0208<<14 | 0x2C<<7 | 0x10, - 29495 - 19968: jis0208<<14 | 0x2C<<7 | 0x11, - 29498 - 19968: jis0212<<14 | 0x2A<<7 | 0x14, - 29499 - 19968: jis0212<<14 | 0x2A<<7 | 0x15, - 29501 - 19968: jis0212<<14 | 0x2A<<7 | 0x16, - 29502 - 19968: jis0208<<14 | 0x3F<<7 | 0x30, - 29503 - 19968: jis0208<<14 | 0x10<<7 | 0x4D, - 29507 - 19968: jis0212<<14 | 0x2A<<7 | 0x17, - 29508 - 19968: jis0208<<14 | 0x18<<7 | 0x55, - 29509 - 19968: jis0208<<14 | 0x1A<<7 | 0x41, - 29517 - 19968: jis0212<<14 | 0x2A<<7 | 0x18, - 29518 - 19968: jis0208<<14 | 0x3F<<7 | 0x31, - 29519 - 19968: jis0208<<14 | 0x3F<<7 | 0x32, - 29520 - 19968: jis0212<<14 | 0x2A<<7 | 0x19, - 29522 - 19968: jis0212<<14 | 0x2A<<7 | 0x1A, - 29526 - 19968: jis0212<<14 | 0x2A<<7 | 0x1B, - 29527 - 19968: jis0208<<14 | 0x3F<<7 | 0x34, - 29528 - 19968: jis0212<<14 | 0x2A<<7 | 0x1C, - 29533 - 19968: jis0212<<14 | 0x2A<<7 | 0x1D, - 29534 - 19968: jis0212<<14 | 0x2A<<7 | 0x1E, - 29535 - 19968: jis0212<<14 | 0x2A<<7 | 0x1F, - 29536 - 19968: jis0212<<14 | 0x2A<<7 | 0x20, - 29539 - 19968: jis0208<<14 | 0x1C<<7 | 0x22, - 29542 - 19968: jis0212<<14 | 0x2A<<7 | 0x21, - 29543 - 19968: jis0212<<14 | 0x2A<<7 | 0x22, - 29544 - 19968: jis0208<<14 | 0x3F<<7 | 0x36, - 29545 - 19968: jis0212<<14 | 0x2A<<7 | 0x23, - 29546 - 19968: jis0208<<14 | 0x3F<<7 | 0x35, - 29547 - 19968: jis0212<<14 | 0x2A<<7 | 0x24, - 29548 - 19968: jis0212<<14 | 0x2A<<7 | 0x25, - 29550 - 19968: jis0212<<14 | 0x2A<<7 | 0x26, - 29551 - 19968: jis0212<<14 | 0x2A<<7 | 0x27, - 29552 - 19968: jis0208<<14 | 0x3F<<7 | 0x37, - 29553 - 19968: jis0212<<14 | 0x2A<<7 | 0x28, - 29554 - 19968: jis0208<<14 | 0x12<<7 | 0x2C, - 29557 - 19968: jis0208<<14 | 0x3F<<7 | 0x39, - 29559 - 19968: jis0208<<14 | 0x5A<<7 | 0x03, - 29560 - 19968: jis0208<<14 | 0x3F<<7 | 0x38, - 29561 - 19968: jis0212<<14 | 0x2A<<7 | 0x2A, - 29562 - 19968: jis0208<<14 | 0x3F<<7 | 0x3B, - 29563 - 19968: jis0208<<14 | 0x3F<<7 | 0x3A, - 29564 - 19968: jis0212<<14 | 0x2A<<7 | 0x2B, - 29568 - 19968: jis0212<<14 | 0x2A<<7 | 0x2C, - 29569 - 19968: jis0212<<14 | 0x2A<<7 | 0x2D, - 29571 - 19968: jis0212<<14 | 0x2A<<7 | 0x2E, - 29572 - 19968: jis0208<<14 | 0x17<<7 | 0x1B, - 29573 - 19968: jis0212<<14 | 0x2A<<7 | 0x2F, - 29574 - 19968: jis0212<<14 | 0x2A<<7 | 0x30, - 29575 - 19968: jis0208<<14 | 0x2D<<7 | 0x07, - 29577 - 19968: jis0208<<14 | 0x15<<7 | 0x2B, - 29579 - 19968: jis0208<<14 | 0x11<<7 | 0x05, - 29582 - 19968: jis0212<<14 | 0x2A<<7 | 0x31, - 29584 - 19968: jis0212<<14 | 0x2A<<7 | 0x32, - 29587 - 19968: jis0212<<14 | 0x2A<<7 | 0x33, - 29589 - 19968: jis0212<<14 | 0x2A<<7 | 0x34, - 29590 - 19968: jis0208<<14 | 0x15<<7 | 0x49, - 29591 - 19968: jis0212<<14 | 0x2A<<7 | 0x35, - 29592 - 19968: jis0212<<14 | 0x2A<<7 | 0x36, - 29596 - 19968: jis0212<<14 | 0x2A<<7 | 0x37, - 29598 - 19968: jis0212<<14 | 0x2A<<7 | 0x38, - 29599 - 19968: jis0212<<14 | 0x2A<<7 | 0x39, - 29600 - 19968: jis0212<<14 | 0x2A<<7 | 0x3A, - 29602 - 19968: jis0212<<14 | 0x2A<<7 | 0x3B, - 29605 - 19968: jis0212<<14 | 0x2A<<7 | 0x3C, - 29606 - 19968: jis0212<<14 | 0x2A<<7 | 0x3D, - 29609 - 19968: jis0208<<14 | 0x13<<7 | 0x40, - 29610 - 19968: jis0212<<14 | 0x2A<<7 | 0x3E, - 29611 - 19968: jis0212<<14 | 0x2A<<7 | 0x3F, - 29613 - 19968: jis0212<<14 | 0x2A<<7 | 0x40, - 29618 - 19968: jis0208<<14 | 0x2D<<7 | 0x47, - 29619 - 19968: jis0208<<14 | 0x3F<<7 | 0x3D, - 29621 - 19968: jis0212<<14 | 0x2A<<7 | 0x41, - 29623 - 19968: jis0212<<14 | 0x2A<<7 | 0x42, - 29625 - 19968: jis0212<<14 | 0x2A<<7 | 0x43, - 29627 - 19968: jis0208<<14 | 0x3F<<7 | 0x3F, - 29628 - 19968: jis0212<<14 | 0x2A<<7 | 0x44, - 29629 - 19968: jis0208<<14 | 0x5A<<7 | 0x04, - 29631 - 19968: jis0212<<14 | 0x2A<<7 | 0x46, - 29632 - 19968: jis0208<<14 | 0x3F<<7 | 0x40, - 29634 - 19968: jis0208<<14 | 0x11<<7 | 0x30, - 29637 - 19968: jis0212<<14 | 0x2A<<7 | 0x47, - 29638 - 19968: jis0212<<14 | 0x2A<<7 | 0x48, - 29640 - 19968: jis0208<<14 | 0x3F<<7 | 0x3C, - 29641 - 19968: jis0208<<14 | 0x5A<<7 | 0x05, - 29642 - 19968: jis0208<<14 | 0x1A<<7 | 0x18, - 29643 - 19968: jis0212<<14 | 0x2A<<7 | 0x4A, - 29644 - 19968: jis0212<<14 | 0x2A<<7 | 0x4B, - 29645 - 19968: jis0208<<14 | 0x23<<7 | 0x20, - 29646 - 19968: jis0208<<14 | 0x3F<<7 | 0x3E, - 29647 - 19968: jis0212<<14 | 0x2A<<7 | 0x4C, - 29650 - 19968: jis0208<<14 | 0x5A<<7 | 0x08, - 29651 - 19968: jis0212<<14 | 0x2A<<7 | 0x4E, - 29654 - 19968: jis0208<<14 | 0x5A<<7 | 0x06, - 29657 - 19968: jis0212<<14 | 0x2A<<7 | 0x50, - 29661 - 19968: jis0212<<14 | 0x2A<<7 | 0x51, - 29662 - 19968: jis0208<<14 | 0x3F<<7 | 0x43, - 29664 - 19968: jis0208<<14 | 0x1B<<7 | 0x4D, - 29665 - 19968: jis0212<<14 | 0x2A<<7 | 0x52, - 29667 - 19968: jis0208<<14 | 0x5A<<7 | 0x07, - 29669 - 19968: jis0208<<14 | 0x3F<<7 | 0x41, - 29670 - 19968: jis0212<<14 | 0x2A<<7 | 0x54, - 29671 - 19968: jis0212<<14 | 0x2A<<7 | 0x55, - 29673 - 19968: jis0212<<14 | 0x2A<<7 | 0x56, - 29674 - 19968: jis0208<<14 | 0x16<<7 | 0x1D, - 29677 - 19968: jis0208<<14 | 0x27<<7 | 0x28, - 29678 - 19968: jis0208<<14 | 0x3F<<7 | 0x42, - 29681 - 19968: jis0208<<14 | 0x3F<<7 | 0x5D, - 29684 - 19968: jis0212<<14 | 0x2A<<7 | 0x57, - 29685 - 19968: jis0208<<14 | 0x5A<<7 | 0x0A, - 29687 - 19968: jis0212<<14 | 0x2A<<7 | 0x59, - 29688 - 19968: jis0208<<14 | 0x3F<<7 | 0x48, - 29689 - 19968: jis0212<<14 | 0x2A<<7 | 0x5A, - 29690 - 19968: jis0212<<14 | 0x2A<<7 | 0x5B, - 29691 - 19968: jis0212<<14 | 0x2A<<7 | 0x5C, - 29693 - 19968: jis0212<<14 | 0x2A<<7 | 0x5D, - 29694 - 19968: jis0208<<14 | 0x17<<7 | 0x1C, - 29695 - 19968: jis0212<<14 | 0x2B<<7 | 0x00, - 29696 - 19968: jis0212<<14 | 0x2B<<7 | 0x01, - 29697 - 19968: jis0212<<14 | 0x2B<<7 | 0x02, - 29699 - 19968: jis0208<<14 | 0x14<<7 | 0x44, - 29700 - 19968: jis0212<<14 | 0x2B<<7 | 0x03, - 29701 - 19968: jis0208<<14 | 0x3F<<7 | 0x45, - 29702 - 19968: jis0208<<14 | 0x2C<<7 | 0x5C, - 29703 - 19968: jis0208<<14 | 0x5A<<7 | 0x09, - 29705 - 19968: jis0208<<14 | 0x2D<<7 | 0x0F, - 29706 - 19968: jis0212<<14 | 0x2B<<7 | 0x05, - 29713 - 19968: jis0212<<14 | 0x2B<<7 | 0x06, - 29722 - 19968: jis0212<<14 | 0x2B<<7 | 0x07, - 29723 - 19968: jis0212<<14 | 0x2B<<7 | 0x08, - 29730 - 19968: jis0208<<14 | 0x21<<7 | 0x55, - 29732 - 19968: jis0212<<14 | 0x2B<<7 | 0x09, - 29733 - 19968: jis0208<<14 | 0x3F<<7 | 0x47, - 29734 - 19968: jis0208<<14 | 0x5A<<7 | 0x0B, - 29736 - 19968: jis0212<<14 | 0x2B<<7 | 0x0B, - 29737 - 19968: jis0208<<14 | 0x5A<<7 | 0x0D, - 29738 - 19968: jis0208<<14 | 0x5A<<7 | 0x0C, - 29739 - 19968: jis0212<<14 | 0x2B<<7 | 0x0E, - 29740 - 19968: jis0212<<14 | 0x2B<<7 | 0x0F, - 29741 - 19968: jis0212<<14 | 0x2B<<7 | 0x10, - 29742 - 19968: jis0208<<14 | 0x5A<<7 | 0x0E, - 29743 - 19968: jis0212<<14 | 0x2B<<7 | 0x12, - 29744 - 19968: jis0212<<14 | 0x2B<<7 | 0x13, - 29745 - 19968: jis0212<<14 | 0x2B<<7 | 0x14, - 29746 - 19968: jis0208<<14 | 0x3F<<7 | 0x49, - 29747 - 19968: jis0208<<14 | 0x2D<<7 | 0x35, - 29748 - 19968: jis0208<<14 | 0x15<<7 | 0x36, - 29749 - 19968: jis0208<<14 | 0x27<<7 | 0x5B, - 29750 - 19968: jis0208<<14 | 0x26<<7 | 0x29, - 29753 - 19968: jis0212<<14 | 0x2B<<7 | 0x15, - 29754 - 19968: jis0208<<14 | 0x3F<<7 | 0x4A, - 29759 - 19968: jis0208<<14 | 0x3F<<7 | 0x4C, - 29760 - 19968: jis0212<<14 | 0x2B<<7 | 0x16, - 29761 - 19968: jis0208<<14 | 0x3F<<7 | 0x4F, - 29763 - 19968: jis0212<<14 | 0x2B<<7 | 0x17, - 29764 - 19968: jis0212<<14 | 0x2B<<7 | 0x18, - 29766 - 19968: jis0212<<14 | 0x2B<<7 | 0x19, - 29767 - 19968: jis0212<<14 | 0x2B<<7 | 0x1A, - 29771 - 19968: jis0212<<14 | 0x2B<<7 | 0x1B, - 29773 - 19968: jis0212<<14 | 0x2B<<7 | 0x1C, - 29777 - 19968: jis0212<<14 | 0x2B<<7 | 0x1D, - 29778 - 19968: jis0212<<14 | 0x2B<<7 | 0x1E, - 29781 - 19968: jis0208<<14 | 0x3F<<7 | 0x4B, - 29783 - 19968: jis0212<<14 | 0x2B<<7 | 0x1F, - 29785 - 19968: jis0208<<14 | 0x3F<<7 | 0x4E, - 29786 - 19968: jis0208<<14 | 0x17<<7 | 0x49, - 29787 - 19968: jis0208<<14 | 0x10<<7 | 0x2C, - 29788 - 19968: jis0208<<14 | 0x3F<<7 | 0x50, - 29789 - 19968: jis0212<<14 | 0x2B<<7 | 0x20, - 29790 - 19968: jis0208<<14 | 0x1E<<7 | 0x4F, - 29791 - 19968: jis0208<<14 | 0x3F<<7 | 0x4D, - 29792 - 19968: jis0208<<14 | 0x2D<<7 | 0x3B, - 29794 - 19968: jis0208<<14 | 0x5A<<7 | 0x0F, - 29795 - 19968: jis0208<<14 | 0x3F<<7 | 0x53, - 29796 - 19968: jis0208<<14 | 0x53<<7 | 0x03, - 29798 - 19968: jis0212<<14 | 0x2B<<7 | 0x22, - 29799 - 19968: jis0212<<14 | 0x2B<<7 | 0x23, - 29800 - 19968: jis0212<<14 | 0x2B<<7 | 0x24, - 29801 - 19968: jis0208<<14 | 0x3F<<7 | 0x51, - 29802 - 19968: jis0208<<14 | 0x3F<<7 | 0x54, - 29803 - 19968: jis0212<<14 | 0x2B<<7 | 0x25, - 29805 - 19968: jis0212<<14 | 0x2B<<7 | 0x26, - 29806 - 19968: jis0212<<14 | 0x2B<<7 | 0x27, - 29807 - 19968: jis0208<<14 | 0x3F<<7 | 0x46, - 29808 - 19968: jis0208<<14 | 0x3F<<7 | 0x52, - 29809 - 19968: jis0212<<14 | 0x2B<<7 | 0x28, - 29810 - 19968: jis0212<<14 | 0x2B<<7 | 0x29, - 29811 - 19968: jis0208<<14 | 0x19<<7 | 0x1B, - 29814 - 19968: jis0208<<14 | 0x3F<<7 | 0x55, - 29822 - 19968: jis0208<<14 | 0x3F<<7 | 0x56, - 29824 - 19968: jis0212<<14 | 0x2B<<7 | 0x2A, - 29825 - 19968: jis0212<<14 | 0x2B<<7 | 0x2B, - 29827 - 19968: jis0208<<14 | 0x2C<<7 | 0x5D, - 29829 - 19968: jis0212<<14 | 0x2B<<7 | 0x2C, - 29830 - 19968: jis0212<<14 | 0x2B<<7 | 0x2D, - 29831 - 19968: jis0212<<14 | 0x2B<<7 | 0x2E, - 29833 - 19968: jis0208<<14 | 0x5A<<7 | 0x10, - 29835 - 19968: jis0208<<14 | 0x3F<<7 | 0x57, - 29839 - 19968: jis0212<<14 | 0x2B<<7 | 0x30, - 29840 - 19968: jis0212<<14 | 0x2B<<7 | 0x31, - 29841 - 19968: jis0212<<14 | 0x2B<<7 | 0x32, - 29842 - 19968: jis0212<<14 | 0x2B<<7 | 0x33, - 29848 - 19968: jis0212<<14 | 0x2B<<7 | 0x34, - 29849 - 19968: jis0212<<14 | 0x2B<<7 | 0x35, - 29850 - 19968: jis0212<<14 | 0x2B<<7 | 0x36, - 29852 - 19968: jis0212<<14 | 0x2B<<7 | 0x37, - 29854 - 19968: jis0208<<14 | 0x3F<<7 | 0x58, - 29855 - 19968: jis0208<<14 | 0x5A<<7 | 0x11, - 29856 - 19968: jis0212<<14 | 0x2B<<7 | 0x39, - 29857 - 19968: jis0212<<14 | 0x2B<<7 | 0x3A, - 29858 - 19968: jis0208<<14 | 0x3F<<7 | 0x44, - 29859 - 19968: jis0212<<14 | 0x2B<<7 | 0x3B, - 29862 - 19968: jis0212<<14 | 0x2B<<7 | 0x3C, - 29863 - 19968: jis0208<<14 | 0x3F<<7 | 0x59, - 29864 - 19968: jis0212<<14 | 0x2B<<7 | 0x3D, - 29865 - 19968: jis0212<<14 | 0x2B<<7 | 0x3E, - 29866 - 19968: jis0212<<14 | 0x2B<<7 | 0x3F, - 29867 - 19968: jis0212<<14 | 0x2B<<7 | 0x40, - 29870 - 19968: jis0212<<14 | 0x2B<<7 | 0x41, - 29871 - 19968: jis0212<<14 | 0x2B<<7 | 0x42, - 29872 - 19968: jis0208<<14 | 0x13<<7 | 0x23, - 29873 - 19968: jis0212<<14 | 0x2B<<7 | 0x43, - 29874 - 19968: jis0212<<14 | 0x2B<<7 | 0x44, - 29877 - 19968: jis0212<<14 | 0x2B<<7 | 0x45, - 29881 - 19968: jis0212<<14 | 0x2B<<7 | 0x46, - 29883 - 19968: jis0212<<14 | 0x2B<<7 | 0x47, - 29885 - 19968: jis0208<<14 | 0x1B<<7 | 0x04, - 29887 - 19968: jis0212<<14 | 0x2B<<7 | 0x48, - 29896 - 19968: jis0212<<14 | 0x2B<<7 | 0x49, - 29897 - 19968: jis0212<<14 | 0x2B<<7 | 0x4A, - 29898 - 19968: jis0208<<14 | 0x3F<<7 | 0x5A, - 29900 - 19968: jis0212<<14 | 0x2B<<7 | 0x4B, - 29903 - 19968: jis0208<<14 | 0x3F<<7 | 0x5B, - 29904 - 19968: jis0212<<14 | 0x2B<<7 | 0x4C, - 29907 - 19968: jis0212<<14 | 0x2B<<7 | 0x4D, - 29908 - 19968: jis0208<<14 | 0x3F<<7 | 0x5C, - 29912 - 19968: jis0212<<14 | 0x2B<<7 | 0x4E, - 29914 - 19968: jis0212<<14 | 0x2B<<7 | 0x4F, - 29915 - 19968: jis0212<<14 | 0x2B<<7 | 0x50, - 29916 - 19968: jis0208<<14 | 0x10<<7 | 0x1A, - 29918 - 19968: jis0212<<14 | 0x2B<<7 | 0x51, - 29919 - 19968: jis0212<<14 | 0x2B<<7 | 0x52, - 29920 - 19968: jis0208<<14 | 0x40<<7 | 0x00, - 29922 - 19968: jis0208<<14 | 0x28<<7 | 0x1A, - 29923 - 19968: jis0208<<14 | 0x40<<7 | 0x01, - 29924 - 19968: jis0212<<14 | 0x2B<<7 | 0x53, - 29926 - 19968: jis0208<<14 | 0x13<<7 | 0x03, - 29927 - 19968: jis0208<<14 | 0x40<<7 | 0x02, - 29928 - 19968: jis0212<<14 | 0x2B<<7 | 0x54, - 29929 - 19968: jis0208<<14 | 0x40<<7 | 0x03, - 29930 - 19968: jis0212<<14 | 0x2B<<7 | 0x55, - 29931 - 19968: jis0212<<14 | 0x2B<<7 | 0x56, - 29934 - 19968: jis0208<<14 | 0x40<<7 | 0x04, - 29935 - 19968: jis0212<<14 | 0x2B<<7 | 0x57, - 29936 - 19968: jis0208<<14 | 0x40<<7 | 0x06, - 29937 - 19968: jis0208<<14 | 0x40<<7 | 0x07, - 29938 - 19968: jis0208<<14 | 0x40<<7 | 0x05, - 29940 - 19968: jis0212<<14 | 0x2B<<7 | 0x58, - 29942 - 19968: jis0208<<14 | 0x28<<7 | 0x32, - 29943 - 19968: jis0208<<14 | 0x40<<7 | 0x09, - 29944 - 19968: jis0208<<14 | 0x40<<7 | 0x08, - 29946 - 19968: jis0212<<14 | 0x2B<<7 | 0x59, - 29947 - 19968: jis0212<<14 | 0x2B<<7 | 0x5A, - 29948 - 19968: jis0212<<14 | 0x2B<<7 | 0x5B, - 29951 - 19968: jis0212<<14 | 0x2B<<7 | 0x5C, - 29953 - 19968: jis0208<<14 | 0x5A<<7 | 0x12, - 29955 - 19968: jis0208<<14 | 0x40<<7 | 0x0B, - 29956 - 19968: jis0208<<14 | 0x40<<7 | 0x0A, - 29957 - 19968: jis0208<<14 | 0x40<<7 | 0x0C, - 29958 - 19968: jis0212<<14 | 0x2B<<7 | 0x5D, - 29964 - 19968: jis0208<<14 | 0x40<<7 | 0x0D, - 29965 - 19968: jis0208<<14 | 0x40<<7 | 0x0F, - 29966 - 19968: jis0208<<14 | 0x40<<7 | 0x0E, - 29969 - 19968: jis0208<<14 | 0x18<<7 | 0x58, - 29970 - 19968: jis0212<<14 | 0x2C<<7 | 0x00, - 29971 - 19968: jis0208<<14 | 0x40<<7 | 0x11, - 29973 - 19968: jis0208<<14 | 0x40<<7 | 0x10, - 29974 - 19968: jis0212<<14 | 0x2C<<7 | 0x01, - 29975 - 19968: jis0212<<14 | 0x2C<<7 | 0x02, - 29976 - 19968: jis0208<<14 | 0x13<<7 | 0x24, - 29978 - 19968: jis0208<<14 | 0x1E<<7 | 0x32, - 29980 - 19968: jis0208<<14 | 0x24<<7 | 0x1B, - 29982 - 19968: jis0208<<14 | 0x40<<7 | 0x12, - 29983 - 19968: jis0208<<14 | 0x1F<<7 | 0x17, - 29984 - 19968: jis0212<<14 | 0x2C<<7 | 0x03, - 29985 - 19968: jis0212<<14 | 0x2C<<7 | 0x04, - 29987 - 19968: jis0208<<14 | 0x1A<<7 | 0x19, - 29988 - 19968: jis0212<<14 | 0x2C<<7 | 0x05, - 29989 - 19968: jis0208<<14 | 0x10<<7 | 0x58, - 29990 - 19968: jis0208<<14 | 0x40<<7 | 0x13, - 29991 - 19968: jis0212<<14 | 0x2C<<7 | 0x06, - 29992 - 19968: jis0208<<14 | 0x2C<<7 | 0x30, - 29993 - 19968: jis0212<<14 | 0x2C<<7 | 0x07, - 29994 - 19968: jis0212<<14 | 0x2C<<7 | 0x08, - 29995 - 19968: jis0208<<14 | 0x29<<7 | 0x42, - 29996 - 19968: jis0208<<14 | 0x40<<7 | 0x14, - 29999 - 19968: jis0208<<14 | 0x58<<7 | 0x4B, - 30000 - 19968: jis0208<<14 | 0x24<<7 | 0x23, - 30001 - 19968: jis0208<<14 | 0x2C<<7 | 0x12, - 30002 - 19968: jis0208<<14 | 0x18<<7 | 0x22, - 30003 - 19968: jis0208<<14 | 0x1E<<7 | 0x1C, - 30006 - 19968: jis0212<<14 | 0x2C<<7 | 0x0A, - 30007 - 19968: jis0208<<14 | 0x22<<7 | 0x2A, - 30008 - 19968: jis0208<<14 | 0x31<<7 | 0x13, - 30009 - 19968: jis0212<<14 | 0x2C<<7 | 0x0B, - 30010 - 19968: jis0208<<14 | 0x23<<7 | 0x0D, - 30011 - 19968: jis0208<<14 | 0x11<<7 | 0x47, - 30012 - 19968: jis0208<<14 | 0x40<<7 | 0x15, - 30013 - 19968: jis0212<<14 | 0x2C<<7 | 0x0C, - 30014 - 19968: jis0212<<14 | 0x2C<<7 | 0x0D, - 30015 - 19968: jis0212<<14 | 0x2C<<7 | 0x0E, - 30016 - 19968: jis0212<<14 | 0x2C<<7 | 0x0F, - 30019 - 19968: jis0212<<14 | 0x2C<<7 | 0x10, - 30020 - 19968: jis0208<<14 | 0x40<<7 | 0x16, - 30022 - 19968: jis0208<<14 | 0x40<<7 | 0x1B, - 30023 - 19968: jis0212<<14 | 0x2C<<7 | 0x11, - 30024 - 19968: jis0212<<14 | 0x2C<<7 | 0x12, - 30025 - 19968: jis0208<<14 | 0x40<<7 | 0x19, - 30026 - 19968: jis0208<<14 | 0x40<<7 | 0x18, - 30027 - 19968: jis0208<<14 | 0x39<<7 | 0x21, - 30028 - 19968: jis0208<<14 | 0x12<<7 | 0x05, - 30029 - 19968: jis0208<<14 | 0x40<<7 | 0x17, - 30030 - 19968: jis0212<<14 | 0x2C<<7 | 0x13, - 30031 - 19968: jis0208<<14 | 0x0F<<7 | 0x39, - 30032 - 19968: jis0212<<14 | 0x2C<<7 | 0x14, - 30033 - 19968: jis0208<<14 | 0x27<<7 | 0x09, - 30034 - 19968: jis0212<<14 | 0x2C<<7 | 0x15, - 30036 - 19968: jis0208<<14 | 0x27<<7 | 0x29, - 30039 - 19968: jis0212<<14 | 0x2C<<7 | 0x16, - 30041 - 19968: jis0208<<14 | 0x2D<<7 | 0x10, - 30042 - 19968: jis0208<<14 | 0x40<<7 | 0x1C, - 30043 - 19968: jis0208<<14 | 0x40<<7 | 0x1A, - 30044 - 19968: jis0208<<14 | 0x22<<7 | 0x3B, - 30045 - 19968: jis0208<<14 | 0x1F<<7 | 0x05, - 30046 - 19968: jis0212<<14 | 0x2C<<7 | 0x17, - 30047 - 19968: jis0212<<14 | 0x2C<<7 | 0x18, - 30048 - 19968: jis0208<<14 | 0x27<<7 | 0x0A, - 30049 - 19968: jis0212<<14 | 0x2C<<7 | 0x19, - 30050 - 19968: jis0208<<14 | 0x28<<7 | 0x0C, - 30052 - 19968: jis0208<<14 | 0x40<<7 | 0x1E, - 30053 - 19968: jis0208<<14 | 0x2D<<7 | 0x0B, - 30054 - 19968: jis0208<<14 | 0x16<<7 | 0x2C, - 30055 - 19968: jis0208<<14 | 0x40<<7 | 0x1F, - 30057 - 19968: jis0208<<14 | 0x40<<7 | 0x1D, - 30058 - 19968: jis0208<<14 | 0x27<<7 | 0x35, - 30059 - 19968: jis0208<<14 | 0x40<<7 | 0x20, - 30061 - 19968: jis0208<<14 | 0x40<<7 | 0x21, - 30063 - 19968: jis0208<<14 | 0x5A<<7 | 0x13, - 30064 - 19968: jis0208<<14 | 0x0F<<7 | 0x3A, - 30065 - 19968: jis0212<<14 | 0x2C<<7 | 0x1B, - 30067 - 19968: jis0208<<14 | 0x1D<<7 | 0x55, - 30068 - 19968: jis0208<<14 | 0x40<<7 | 0x26, - 30070 - 19968: jis0208<<14 | 0x40<<7 | 0x23, - 30071 - 19968: jis0208<<14 | 0x25<<7 | 0x4C, - 30072 - 19968: jis0208<<14 | 0x40<<7 | 0x22, - 30073 - 19968: jis0212<<14 | 0x2C<<7 | 0x1C, - 30074 - 19968: jis0212<<14 | 0x2C<<7 | 0x1D, - 30075 - 19968: jis0212<<14 | 0x2C<<7 | 0x1E, - 30076 - 19968: jis0212<<14 | 0x2C<<7 | 0x1F, - 30077 - 19968: jis0212<<14 | 0x2C<<7 | 0x20, - 30078 - 19968: jis0212<<14 | 0x2C<<7 | 0x21, - 30079 - 19968: jis0208<<14 | 0x14<<7 | 0x05, - 30081 - 19968: jis0212<<14 | 0x2C<<7 | 0x22, - 30082 - 19968: jis0208<<14 | 0x40<<7 | 0x29, - 30085 - 19968: jis0212<<14 | 0x2C<<7 | 0x23, - 30086 - 19968: jis0208<<14 | 0x40<<7 | 0x24, - 30087 - 19968: jis0208<<14 | 0x40<<7 | 0x25, - 30089 - 19968: jis0208<<14 | 0x40<<7 | 0x28, - 30090 - 19968: jis0208<<14 | 0x40<<7 | 0x27, - 30091 - 19968: jis0208<<14 | 0x28<<7 | 0x04, - 30094 - 19968: jis0208<<14 | 0x20<<7 | 0x21, - 30095 - 19968: jis0208<<14 | 0x20<<7 | 0x20, - 30096 - 19968: jis0212<<14 | 0x2C<<7 | 0x24, - 30097 - 19968: jis0208<<14 | 0x14<<7 | 0x1E, - 30098 - 19968: jis0212<<14 | 0x2C<<7 | 0x25, - 30099 - 19968: jis0212<<14 | 0x2C<<7 | 0x26, - 30100 - 19968: jis0208<<14 | 0x40<<7 | 0x2A, - 30101 - 19968: jis0212<<14 | 0x2C<<7 | 0x27, - 30105 - 19968: jis0212<<14 | 0x2C<<7 | 0x28, - 30106 - 19968: jis0208<<14 | 0x40<<7 | 0x2B, - 30108 - 19968: jis0212<<14 | 0x2C<<7 | 0x29, - 30109 - 19968: jis0208<<14 | 0x40<<7 | 0x2C, - 30114 - 19968: jis0212<<14 | 0x2C<<7 | 0x2A, - 30115 - 19968: jis0208<<14 | 0x40<<7 | 0x2E, - 30116 - 19968: jis0212<<14 | 0x2C<<7 | 0x2B, - 30117 - 19968: jis0208<<14 | 0x40<<7 | 0x2D, - 30123 - 19968: jis0208<<14 | 0x10<<7 | 0x35, - 30129 - 19968: jis0208<<14 | 0x40<<7 | 0x36, - 30130 - 19968: jis0208<<14 | 0x27<<7 | 0x47, - 30131 - 19968: jis0208<<14 | 0x40<<7 | 0x30, - 30132 - 19968: jis0212<<14 | 0x2C<<7 | 0x2C, - 30133 - 19968: jis0208<<14 | 0x40<<7 | 0x32, - 30136 - 19968: jis0208<<14 | 0x40<<7 | 0x34, - 30137 - 19968: jis0208<<14 | 0x1E<<7 | 0x1D, - 30138 - 19968: jis0212<<14 | 0x2C<<7 | 0x2D, - 30140 - 19968: jis0208<<14 | 0x40<<7 | 0x35, - 30141 - 19968: jis0208<<14 | 0x40<<7 | 0x33, - 30142 - 19968: jis0208<<14 | 0x1B<<7 | 0x1F, - 30143 - 19968: jis0212<<14 | 0x2C<<7 | 0x2E, - 30144 - 19968: jis0212<<14 | 0x2C<<7 | 0x2F, - 30145 - 19968: jis0212<<14 | 0x2C<<7 | 0x30, - 30146 - 19968: jis0208<<14 | 0x40<<7 | 0x2F, - 30147 - 19968: jis0208<<14 | 0x40<<7 | 0x31, - 30148 - 19968: jis0212<<14 | 0x2C<<7 | 0x31, - 30149 - 19968: jis0208<<14 | 0x28<<7 | 0x21, - 30150 - 19968: jis0212<<14 | 0x2C<<7 | 0x32, - 30151 - 19968: jis0208<<14 | 0x1D<<7 | 0x28, - 30154 - 19968: jis0208<<14 | 0x40<<7 | 0x38, - 30156 - 19968: jis0212<<14 | 0x2C<<7 | 0x33, - 30157 - 19968: jis0208<<14 | 0x40<<7 | 0x37, - 30158 - 19968: jis0212<<14 | 0x2C<<7 | 0x34, - 30159 - 19968: jis0212<<14 | 0x2C<<7 | 0x35, - 30162 - 19968: jis0208<<14 | 0x40<<7 | 0x39, - 30164 - 19968: jis0208<<14 | 0x1B<<7 | 0x05, - 30165 - 19968: jis0208<<14 | 0x19<<7 | 0x0E, - 30167 - 19968: jis0212<<14 | 0x2C<<7 | 0x36, - 30168 - 19968: jis0208<<14 | 0x24<<7 | 0x56, - 30169 - 19968: jis0208<<14 | 0x40<<7 | 0x3A, - 30171 - 19968: jis0208<<14 | 0x23<<7 | 0x2A, - 30172 - 19968: jis0212<<14 | 0x2C<<7 | 0x37, - 30174 - 19968: jis0208<<14 | 0x40<<7 | 0x3C, - 30175 - 19968: jis0212<<14 | 0x2C<<7 | 0x38, - 30176 - 19968: jis0212<<14 | 0x2C<<7 | 0x39, - 30177 - 19968: jis0212<<14 | 0x2C<<7 | 0x3A, - 30178 - 19968: jis0208<<14 | 0x2D<<7 | 0x00, - 30179 - 19968: jis0208<<14 | 0x40<<7 | 0x3B, - 30180 - 19968: jis0212<<14 | 0x2C<<7 | 0x3B, - 30183 - 19968: jis0212<<14 | 0x2C<<7 | 0x3C, - 30185 - 19968: jis0208<<14 | 0x20<<7 | 0x48, - 30188 - 19968: jis0212<<14 | 0x2C<<7 | 0x3D, - 30190 - 19968: jis0212<<14 | 0x2C<<7 | 0x3E, - 30191 - 19968: jis0212<<14 | 0x2C<<7 | 0x3F, - 30192 - 19968: jis0208<<14 | 0x40<<7 | 0x41, - 30193 - 19968: jis0212<<14 | 0x2C<<7 | 0x40, - 30194 - 19968: jis0208<<14 | 0x40<<7 | 0x43, - 30195 - 19968: jis0208<<14 | 0x40<<7 | 0x44, - 30196 - 19968: jis0208<<14 | 0x22<<7 | 0x33, - 30201 - 19968: jis0212<<14 | 0x2C<<7 | 0x41, - 30202 - 19968: jis0208<<14 | 0x40<<7 | 0x42, - 30204 - 19968: jis0208<<14 | 0x40<<7 | 0x3F, - 30206 - 19968: jis0208<<14 | 0x40<<7 | 0x3D, - 30207 - 19968: jis0208<<14 | 0x40<<7 | 0x3E, - 30208 - 19968: jis0212<<14 | 0x2C<<7 | 0x42, - 30209 - 19968: jis0208<<14 | 0x40<<7 | 0x40, - 30210 - 19968: jis0212<<14 | 0x2C<<7 | 0x43, - 30211 - 19968: jis0212<<14 | 0x2C<<7 | 0x44, - 30212 - 19968: jis0212<<14 | 0x2C<<7 | 0x45, - 30215 - 19968: jis0212<<14 | 0x2C<<7 | 0x46, - 30216 - 19968: jis0212<<14 | 0x2C<<7 | 0x47, - 30217 - 19968: jis0208<<14 | 0x40<<7 | 0x47, - 30218 - 19968: jis0212<<14 | 0x2C<<7 | 0x48, - 30219 - 19968: jis0208<<14 | 0x40<<7 | 0x45, - 30220 - 19968: jis0212<<14 | 0x2C<<7 | 0x49, - 30221 - 19968: jis0208<<14 | 0x40<<7 | 0x46, - 30223 - 19968: jis0212<<14 | 0x2C<<7 | 0x4A, - 30226 - 19968: jis0212<<14 | 0x2C<<7 | 0x4B, - 30227 - 19968: jis0212<<14 | 0x2C<<7 | 0x4C, - 30229 - 19968: jis0212<<14 | 0x2C<<7 | 0x4D, - 30230 - 19968: jis0212<<14 | 0x2C<<7 | 0x4E, - 30233 - 19968: jis0212<<14 | 0x2C<<7 | 0x4F, - 30235 - 19968: jis0212<<14 | 0x2C<<7 | 0x50, - 30236 - 19968: jis0212<<14 | 0x2C<<7 | 0x51, - 30237 - 19968: jis0212<<14 | 0x2C<<7 | 0x52, - 30238 - 19968: jis0212<<14 | 0x2C<<7 | 0x53, - 30239 - 19968: jis0208<<14 | 0x40<<7 | 0x48, - 30240 - 19968: jis0208<<14 | 0x40<<7 | 0x4A, - 30241 - 19968: jis0208<<14 | 0x40<<7 | 0x4B, - 30242 - 19968: jis0208<<14 | 0x40<<7 | 0x4C, - 30243 - 19968: jis0212<<14 | 0x2C<<7 | 0x54, - 30244 - 19968: jis0208<<14 | 0x40<<7 | 0x4D, - 30245 - 19968: jis0212<<14 | 0x2C<<7 | 0x55, - 30246 - 19968: jis0212<<14 | 0x2C<<7 | 0x56, - 30247 - 19968: jis0208<<14 | 0x40<<7 | 0x49, - 30249 - 19968: jis0212<<14 | 0x2C<<7 | 0x57, - 30253 - 19968: jis0212<<14 | 0x2C<<7 | 0x58, - 30256 - 19968: jis0208<<14 | 0x40<<7 | 0x4F, - 30258 - 19968: jis0212<<14 | 0x2C<<7 | 0x59, - 30259 - 19968: jis0212<<14 | 0x2C<<7 | 0x5A, - 30260 - 19968: jis0208<<14 | 0x40<<7 | 0x4E, - 30261 - 19968: jis0212<<14 | 0x2C<<7 | 0x5B, - 30264 - 19968: jis0212<<14 | 0x2C<<7 | 0x5C, - 30265 - 19968: jis0212<<14 | 0x2C<<7 | 0x5D, - 30266 - 19968: jis0212<<14 | 0x2D<<7 | 0x00, - 30267 - 19968: jis0208<<14 | 0x40<<7 | 0x50, - 30268 - 19968: jis0212<<14 | 0x2D<<7 | 0x01, - 30272 - 19968: jis0212<<14 | 0x2D<<7 | 0x03, - 30273 - 19968: jis0212<<14 | 0x2D<<7 | 0x04, - 30274 - 19968: jis0208<<14 | 0x2D<<7 | 0x24, - 30275 - 19968: jis0212<<14 | 0x2D<<7 | 0x05, - 30276 - 19968: jis0212<<14 | 0x2D<<7 | 0x06, - 30277 - 19968: jis0212<<14 | 0x2D<<7 | 0x07, - 30278 - 19968: jis0208<<14 | 0x40<<7 | 0x53, - 30279 - 19968: jis0208<<14 | 0x40<<7 | 0x51, - 30280 - 19968: jis0208<<14 | 0x40<<7 | 0x52, - 30281 - 19968: jis0212<<14 | 0x2D<<7 | 0x08, - 30282 - 19968: jis0212<<14 | 0x2D<<7 | 0x02, - 30283 - 19968: jis0212<<14 | 0x2D<<7 | 0x09, - 30284 - 19968: jis0208<<14 | 0x13<<7 | 0x41, - 30290 - 19968: jis0208<<14 | 0x2B<<7 | 0x5D, - 30293 - 19968: jis0212<<14 | 0x2D<<7 | 0x0A, - 30294 - 19968: jis0208<<14 | 0x29<<7 | 0x29, - 30296 - 19968: jis0208<<14 | 0x40<<7 | 0x55, - 30297 - 19968: jis0212<<14 | 0x2D<<7 | 0x0B, - 30300 - 19968: jis0208<<14 | 0x40<<7 | 0x54, - 30303 - 19968: jis0212<<14 | 0x2D<<7 | 0x0C, - 30305 - 19968: jis0208<<14 | 0x40<<7 | 0x56, - 30306 - 19968: jis0208<<14 | 0x40<<7 | 0x57, - 30308 - 19968: jis0212<<14 | 0x2D<<7 | 0x0D, - 30309 - 19968: jis0212<<14 | 0x2D<<7 | 0x0E, - 30311 - 19968: jis0208<<14 | 0x40<<7 | 0x5B, - 30312 - 19968: jis0208<<14 | 0x40<<7 | 0x58, - 30313 - 19968: jis0208<<14 | 0x40<<7 | 0x59, - 30314 - 19968: jis0208<<14 | 0x40<<7 | 0x5A, - 30316 - 19968: jis0208<<14 | 0x40<<7 | 0x5C, - 30317 - 19968: jis0212<<14 | 0x2D<<7 | 0x0F, - 30318 - 19968: jis0212<<14 | 0x2D<<7 | 0x10, - 30319 - 19968: jis0212<<14 | 0x2D<<7 | 0x11, - 30320 - 19968: jis0208<<14 | 0x40<<7 | 0x5D, - 30321 - 19968: jis0212<<14 | 0x2D<<7 | 0x12, - 30322 - 19968: jis0208<<14 | 0x41<<7 | 0x00, - 30324 - 19968: jis0212<<14 | 0x2D<<7 | 0x13, - 30326 - 19968: jis0208<<14 | 0x41<<7 | 0x01, - 30328 - 19968: jis0208<<14 | 0x41<<7 | 0x02, - 30330 - 19968: jis0208<<14 | 0x27<<7 | 0x0E, - 30331 - 19968: jis0208<<14 | 0x24<<7 | 0x2F, - 30332 - 19968: jis0208<<14 | 0x41<<7 | 0x03, - 30333 - 19968: jis0208<<14 | 0x26<<7 | 0x51, - 30334 - 19968: jis0208<<14 | 0x28<<7 | 0x13, - 30336 - 19968: jis0208<<14 | 0x41<<7 | 0x04, - 30337 - 19968: jis0212<<14 | 0x2D<<7 | 0x14, - 30338 - 19968: jis0208<<14 | 0x5A<<7 | 0x14, - 30339 - 19968: jis0208<<14 | 0x41<<7 | 0x05, - 30340 - 19968: jis0208<<14 | 0x24<<7 | 0x09, - 30341 - 19968: jis0212<<14 | 0x2D<<7 | 0x15, - 30342 - 19968: jis0208<<14 | 0x12<<7 | 0x06, - 30343 - 19968: jis0208<<14 | 0x18<<7 | 0x23, - 30344 - 19968: jis0208<<14 | 0x41<<7 | 0x06, - 30347 - 19968: jis0208<<14 | 0x41<<7 | 0x07, - 30348 - 19968: jis0212<<14 | 0x2D<<7 | 0x16, - 30349 - 19968: jis0212<<14 | 0x2D<<7 | 0x17, - 30350 - 19968: jis0208<<14 | 0x41<<7 | 0x08, - 30352 - 19968: jis0208<<14 | 0x1A<<7 | 0x08, - 30355 - 19968: jis0208<<14 | 0x41<<7 | 0x0A, - 30357 - 19968: jis0212<<14 | 0x2D<<7 | 0x18, - 30358 - 19968: jis0208<<14 | 0x41<<7 | 0x09, - 30361 - 19968: jis0208<<14 | 0x41<<7 | 0x0B, - 30362 - 19968: jis0208<<14 | 0x41<<7 | 0x0C, - 30363 - 19968: jis0208<<14 | 0x5A<<7 | 0x17, - 30364 - 19968: jis0208<<14 | 0x5A<<7 | 0x15, - 30365 - 19968: jis0212<<14 | 0x2D<<7 | 0x1B, - 30366 - 19968: jis0208<<14 | 0x5A<<7 | 0x16, - 30367 - 19968: jis0212<<14 | 0x2D<<7 | 0x1C, - 30368 - 19968: jis0212<<14 | 0x2D<<7 | 0x1D, - 30370 - 19968: jis0212<<14 | 0x2D<<7 | 0x1E, - 30371 - 19968: jis0212<<14 | 0x2D<<7 | 0x1F, - 30372 - 19968: jis0212<<14 | 0x2D<<7 | 0x20, - 30373 - 19968: jis0212<<14 | 0x2D<<7 | 0x21, - 30374 - 19968: jis0208<<14 | 0x5A<<7 | 0x18, - 30375 - 19968: jis0212<<14 | 0x2D<<7 | 0x23, - 30376 - 19968: jis0212<<14 | 0x2D<<7 | 0x24, - 30378 - 19968: jis0212<<14 | 0x2D<<7 | 0x25, - 30381 - 19968: jis0212<<14 | 0x2D<<7 | 0x26, - 30382 - 19968: jis0208<<14 | 0x27<<7 | 0x48, - 30384 - 19968: jis0208<<14 | 0x41<<7 | 0x0D, - 30388 - 19968: jis0208<<14 | 0x41<<7 | 0x0E, - 30391 - 19968: jis0208<<14 | 0x52<<7 | 0x48, - 30392 - 19968: jis0208<<14 | 0x41<<7 | 0x0F, - 30393 - 19968: jis0208<<14 | 0x41<<7 | 0x10, - 30394 - 19968: jis0208<<14 | 0x41<<7 | 0x11, - 30397 - 19968: jis0212<<14 | 0x2D<<7 | 0x27, - 30399 - 19968: jis0208<<14 | 0x1A<<7 | 0x0D, - 30401 - 19968: jis0212<<14 | 0x2D<<7 | 0x28, - 30402 - 19968: jis0208<<14 | 0x41<<7 | 0x12, - 30403 - 19968: jis0208<<14 | 0x26<<7 | 0x35, - 30405 - 19968: jis0212<<14 | 0x2D<<7 | 0x29, - 30406 - 19968: jis0208<<14 | 0x2A<<7 | 0x3E, - 30408 - 19968: jis0208<<14 | 0x10<<7 | 0x2D, - 30409 - 19968: jis0212<<14 | 0x2D<<7 | 0x2A, - 30410 - 19968: jis0208<<14 | 0x10<<7 | 0x36, - 30411 - 19968: jis0212<<14 | 0x2D<<7 | 0x2B, - 30412 - 19968: jis0212<<14 | 0x2D<<7 | 0x2C, - 30413 - 19968: jis0208<<14 | 0x41<<7 | 0x13, - 30414 - 19968: jis0212<<14 | 0x2D<<7 | 0x2D, - 30418 - 19968: jis0208<<14 | 0x41<<7 | 0x15, - 30420 - 19968: jis0212<<14 | 0x2D<<7 | 0x2E, - 30422 - 19968: jis0208<<14 | 0x41<<7 | 0x14, - 30423 - 19968: jis0208<<14 | 0x24<<7 | 0x4F, - 30425 - 19968: jis0212<<14 | 0x2D<<7 | 0x2F, - 30427 - 19968: jis0208<<14 | 0x1F<<7 | 0x18, - 30428 - 19968: jis0208<<14 | 0x3C<<7 | 0x18, - 30430 - 19968: jis0208<<14 | 0x41<<7 | 0x16, - 30431 - 19968: jis0208<<14 | 0x2B<<7 | 0x20, - 30432 - 19968: jis0212<<14 | 0x2D<<7 | 0x30, - 30433 - 19968: jis0208<<14 | 0x41<<7 | 0x17, - 30435 - 19968: jis0208<<14 | 0x13<<7 | 0x25, - 30436 - 19968: jis0208<<14 | 0x27<<7 | 0x36, - 30437 - 19968: jis0208<<14 | 0x41<<7 | 0x18, - 30438 - 19968: jis0212<<14 | 0x2D<<7 | 0x31, - 30439 - 19968: jis0208<<14 | 0x41<<7 | 0x19, - 30440 - 19968: jis0212<<14 | 0x2D<<7 | 0x32, - 30442 - 19968: jis0208<<14 | 0x41<<7 | 0x1A, - 30444 - 19968: jis0212<<14 | 0x2D<<7 | 0x33, - 30446 - 19968: jis0208<<14 | 0x2B<<7 | 0x3B, - 30448 - 19968: jis0212<<14 | 0x2D<<7 | 0x34, - 30449 - 19968: jis0212<<14 | 0x2D<<7 | 0x35, - 30450 - 19968: jis0208<<14 | 0x2B<<7 | 0x34, - 30452 - 19968: jis0208<<14 | 0x23<<7 | 0x1D, - 30454 - 19968: jis0212<<14 | 0x2D<<7 | 0x36, - 30456 - 19968: jis0208<<14 | 0x20<<7 | 0x49, - 30457 - 19968: jis0212<<14 | 0x2D<<7 | 0x37, - 30459 - 19968: jis0208<<14 | 0x41<<7 | 0x1C, - 30460 - 19968: jis0212<<14 | 0x2D<<7 | 0x38, - 30462 - 19968: jis0208<<14 | 0x1C<<7 | 0x41, - 30464 - 19968: jis0212<<14 | 0x2D<<7 | 0x39, - 30465 - 19968: jis0208<<14 | 0x1D<<7 | 0x29, - 30468 - 19968: jis0208<<14 | 0x41<<7 | 0x1F, - 30470 - 19968: jis0212<<14 | 0x2D<<7 | 0x3A, - 30471 - 19968: jis0208<<14 | 0x41<<7 | 0x1E, - 30472 - 19968: jis0208<<14 | 0x41<<7 | 0x1D, - 30473 - 19968: jis0208<<14 | 0x27<<7 | 0x5C, - 30474 - 19968: jis0212<<14 | 0x2D<<7 | 0x3B, - 30475 - 19968: jis0208<<14 | 0x13<<7 | 0x26, - 30476 - 19968: jis0208<<14 | 0x17<<7 | 0x08, - 30478 - 19968: jis0212<<14 | 0x2D<<7 | 0x3C, - 30482 - 19968: jis0212<<14 | 0x2D<<7 | 0x3D, - 30484 - 19968: jis0212<<14 | 0x2D<<7 | 0x3E, - 30485 - 19968: jis0212<<14 | 0x2D<<7 | 0x3F, - 30487 - 19968: jis0212<<14 | 0x2D<<7 | 0x40, - 30489 - 19968: jis0212<<14 | 0x2D<<7 | 0x41, - 30490 - 19968: jis0212<<14 | 0x2D<<7 | 0x42, - 30491 - 19968: jis0208<<14 | 0x41<<7 | 0x25, - 30492 - 19968: jis0212<<14 | 0x2D<<7 | 0x43, - 30494 - 19968: jis0208<<14 | 0x41<<7 | 0x22, - 30495 - 19968: jis0208<<14 | 0x1E<<7 | 0x1E, - 30496 - 19968: jis0208<<14 | 0x2B<<7 | 0x11, - 30498 - 19968: jis0212<<14 | 0x2D<<7 | 0x44, - 30500 - 19968: jis0208<<14 | 0x41<<7 | 0x21, - 30501 - 19968: jis0208<<14 | 0x41<<7 | 0x23, - 30502 - 19968: jis0208<<14 | 0x41<<7 | 0x24, - 30504 - 19968: jis0212<<14 | 0x2D<<7 | 0x45, - 30505 - 19968: jis0208<<14 | 0x41<<7 | 0x20, - 30509 - 19968: jis0212<<14 | 0x2D<<7 | 0x46, - 30510 - 19968: jis0212<<14 | 0x2D<<7 | 0x47, - 30511 - 19968: jis0212<<14 | 0x2D<<7 | 0x48, - 30516 - 19968: jis0212<<14 | 0x2D<<7 | 0x49, - 30517 - 19968: jis0212<<14 | 0x2D<<7 | 0x4A, - 30518 - 19968: jis0212<<14 | 0x2D<<7 | 0x4B, - 30519 - 19968: jis0208<<14 | 0x41<<7 | 0x26, - 30520 - 19968: jis0208<<14 | 0x41<<7 | 0x27, - 30521 - 19968: jis0212<<14 | 0x2D<<7 | 0x4C, - 30522 - 19968: jis0208<<14 | 0x23<<7 | 0x0E, - 30524 - 19968: jis0208<<14 | 0x13<<7 | 0x42, - 30525 - 19968: jis0212<<14 | 0x2D<<7 | 0x4D, - 30526 - 19968: jis0212<<14 | 0x2D<<7 | 0x4E, - 30528 - 19968: jis0208<<14 | 0x22<<7 | 0x44, - 30530 - 19968: jis0212<<14 | 0x2D<<7 | 0x4F, - 30533 - 19968: jis0212<<14 | 0x2D<<7 | 0x50, - 30534 - 19968: jis0208<<14 | 0x5A<<7 | 0x1A, - 30535 - 19968: jis0208<<14 | 0x41<<7 | 0x28, - 30538 - 19968: jis0212<<14 | 0x2D<<7 | 0x52, - 30541 - 19968: jis0212<<14 | 0x2D<<7 | 0x53, - 30542 - 19968: jis0212<<14 | 0x2D<<7 | 0x54, - 30543 - 19968: jis0212<<14 | 0x2D<<7 | 0x55, - 30546 - 19968: jis0212<<14 | 0x2D<<7 | 0x56, - 30550 - 19968: jis0212<<14 | 0x2D<<7 | 0x57, - 30551 - 19968: jis0212<<14 | 0x2D<<7 | 0x58, - 30554 - 19968: jis0208<<14 | 0x41<<7 | 0x29, - 30555 - 19968: jis0208<<14 | 0x41<<7 | 0x2C, - 30556 - 19968: jis0212<<14 | 0x2D<<7 | 0x59, - 30558 - 19968: jis0212<<14 | 0x2D<<7 | 0x5A, - 30559 - 19968: jis0212<<14 | 0x2D<<7 | 0x5B, - 30560 - 19968: jis0212<<14 | 0x2D<<7 | 0x5C, - 30561 - 19968: jis0208<<14 | 0x1E<<7 | 0x46, - 30562 - 19968: jis0212<<14 | 0x2D<<7 | 0x5D, - 30563 - 19968: jis0208<<14 | 0x25<<7 | 0x23, - 30564 - 19968: jis0212<<14 | 0x2E<<7 | 0x00, - 30565 - 19968: jis0208<<14 | 0x41<<7 | 0x2D, - 30566 - 19968: jis0208<<14 | 0x2A<<7 | 0x32, - 30567 - 19968: jis0212<<14 | 0x2E<<7 | 0x01, - 30568 - 19968: jis0208<<14 | 0x41<<7 | 0x2A, - 30570 - 19968: jis0212<<14 | 0x2E<<7 | 0x02, - 30571 - 19968: jis0208<<14 | 0x41<<7 | 0x2B, - 30572 - 19968: jis0212<<14 | 0x2E<<7 | 0x03, - 30576 - 19968: jis0212<<14 | 0x2E<<7 | 0x04, - 30578 - 19968: jis0212<<14 | 0x2E<<7 | 0x05, - 30579 - 19968: jis0212<<14 | 0x2E<<7 | 0x06, - 30580 - 19968: jis0212<<14 | 0x2E<<7 | 0x07, - 30585 - 19968: jis0208<<14 | 0x41<<7 | 0x30, - 30586 - 19968: jis0212<<14 | 0x2E<<7 | 0x08, - 30589 - 19968: jis0212<<14 | 0x2E<<7 | 0x09, - 30590 - 19968: jis0208<<14 | 0x41<<7 | 0x2F, - 30591 - 19968: jis0208<<14 | 0x41<<7 | 0x2E, - 30592 - 19968: jis0212<<14 | 0x2E<<7 | 0x0A, - 30596 - 19968: jis0212<<14 | 0x2E<<7 | 0x0B, - 30603 - 19968: jis0208<<14 | 0x41<<7 | 0x32, - 30604 - 19968: jis0212<<14 | 0x2E<<7 | 0x0C, - 30605 - 19968: jis0212<<14 | 0x2E<<7 | 0x0D, - 30606 - 19968: jis0208<<14 | 0x41<<7 | 0x31, - 30609 - 19968: jis0208<<14 | 0x41<<7 | 0x33, - 30612 - 19968: jis0212<<14 | 0x2E<<7 | 0x0E, - 30613 - 19968: jis0212<<14 | 0x2E<<7 | 0x0F, - 30614 - 19968: jis0212<<14 | 0x2E<<7 | 0x10, - 30618 - 19968: jis0212<<14 | 0x2E<<7 | 0x11, - 30622 - 19968: jis0208<<14 | 0x41<<7 | 0x35, - 30623 - 19968: jis0212<<14 | 0x2E<<7 | 0x12, - 30624 - 19968: jis0208<<14 | 0x41<<7 | 0x34, - 30626 - 19968: jis0212<<14 | 0x2E<<7 | 0x13, - 30629 - 19968: jis0208<<14 | 0x29<<7 | 0x2C, - 30631 - 19968: jis0212<<14 | 0x2E<<7 | 0x14, - 30634 - 19968: jis0212<<14 | 0x2E<<7 | 0x15, - 30636 - 19968: jis0208<<14 | 0x1C<<7 | 0x35, - 30637 - 19968: jis0208<<14 | 0x2D<<7 | 0x25, - 30638 - 19968: jis0212<<14 | 0x2E<<7 | 0x16, - 30639 - 19968: jis0212<<14 | 0x2E<<7 | 0x17, - 30640 - 19968: jis0208<<14 | 0x41<<7 | 0x36, - 30641 - 19968: jis0212<<14 | 0x2E<<7 | 0x18, - 30643 - 19968: jis0208<<14 | 0x25<<7 | 0x16, - 30645 - 19968: jis0212<<14 | 0x2E<<7 | 0x19, - 30646 - 19968: jis0208<<14 | 0x41<<7 | 0x37, - 30649 - 19968: jis0208<<14 | 0x41<<7 | 0x38, - 30651 - 19968: jis0208<<14 | 0x41<<7 | 0x3C, - 30652 - 19968: jis0208<<14 | 0x41<<7 | 0x3A, - 30653 - 19968: jis0208<<14 | 0x41<<7 | 0x3B, - 30654 - 19968: jis0212<<14 | 0x2E<<7 | 0x1A, - 30655 - 19968: jis0208<<14 | 0x41<<7 | 0x39, - 30659 - 19968: jis0212<<14 | 0x2E<<7 | 0x1B, - 30663 - 19968: jis0208<<14 | 0x41<<7 | 0x3D, - 30665 - 19968: jis0212<<14 | 0x2E<<7 | 0x1C, - 30669 - 19968: jis0208<<14 | 0x41<<7 | 0x3E, - 30673 - 19968: jis0212<<14 | 0x2E<<7 | 0x1D, - 30674 - 19968: jis0212<<14 | 0x2E<<7 | 0x1E, - 30677 - 19968: jis0212<<14 | 0x2E<<7 | 0x1F, - 30679 - 19968: jis0208<<14 | 0x41<<7 | 0x3F, - 30681 - 19968: jis0212<<14 | 0x2E<<7 | 0x20, - 30682 - 19968: jis0208<<14 | 0x41<<7 | 0x40, - 30683 - 19968: jis0208<<14 | 0x2B<<7 | 0x16, - 30684 - 19968: jis0208<<14 | 0x41<<7 | 0x41, - 30686 - 19968: jis0212<<14 | 0x2E<<7 | 0x21, - 30687 - 19968: jis0212<<14 | 0x2E<<7 | 0x22, - 30688 - 19968: jis0212<<14 | 0x2E<<7 | 0x23, - 30690 - 19968: jis0208<<14 | 0x2B<<7 | 0x4F, - 30691 - 19968: jis0208<<14 | 0x41<<7 | 0x42, - 30692 - 19968: jis0212<<14 | 0x2E<<7 | 0x24, - 30693 - 19968: jis0208<<14 | 0x22<<7 | 0x2D, - 30694 - 19968: jis0212<<14 | 0x2E<<7 | 0x25, - 30695 - 19968: jis0208<<14 | 0x26<<7 | 0x49, - 30697 - 19968: jis0208<<14 | 0x15<<7 | 0x4A, - 30698 - 19968: jis0212<<14 | 0x2E<<7 | 0x26, - 30700 - 19968: jis0212<<14 | 0x2E<<7 | 0x27, - 30701 - 19968: jis0208<<14 | 0x22<<7 | 0x1A, - 30702 - 19968: jis0208<<14 | 0x41<<7 | 0x43, - 30703 - 19968: jis0208<<14 | 0x15<<7 | 0x19, - 30704 - 19968: jis0212<<14 | 0x2E<<7 | 0x28, - 30705 - 19968: jis0212<<14 | 0x2E<<7 | 0x29, - 30707 - 19968: jis0208<<14 | 0x1F<<7 | 0x2F, - 30708 - 19968: jis0212<<14 | 0x2E<<7 | 0x2A, - 30712 - 19968: jis0212<<14 | 0x2E<<7 | 0x2B, - 30715 - 19968: jis0212<<14 | 0x2E<<7 | 0x2C, - 30716 - 19968: jis0208<<14 | 0x41<<7 | 0x44, - 30722 - 19968: jis0208<<14 | 0x19<<7 | 0x1C, - 30725 - 19968: jis0212<<14 | 0x2E<<7 | 0x2D, - 30726 - 19968: jis0212<<14 | 0x2E<<7 | 0x2E, - 30729 - 19968: jis0212<<14 | 0x2E<<7 | 0x2F, - 30732 - 19968: jis0208<<14 | 0x41<<7 | 0x45, - 30733 - 19968: jis0212<<14 | 0x2E<<7 | 0x30, - 30734 - 19968: jis0212<<14 | 0x2E<<7 | 0x31, - 30737 - 19968: jis0212<<14 | 0x2E<<7 | 0x32, - 30738 - 19968: jis0208<<14 | 0x41<<7 | 0x46, - 30740 - 19968: jis0208<<14 | 0x17<<7 | 0x05, - 30741 - 19968: jis0208<<14 | 0x19<<7 | 0x34, - 30749 - 19968: jis0212<<14 | 0x2E<<7 | 0x33, - 30752 - 19968: jis0208<<14 | 0x41<<7 | 0x48, - 30753 - 19968: jis0208<<14 | 0x5A<<7 | 0x1C, - 30754 - 19968: jis0212<<14 | 0x2E<<7 | 0x35, - 30755 - 19968: jis0212<<14 | 0x2E<<7 | 0x36, - 30757 - 19968: jis0208<<14 | 0x24<<7 | 0x35, - 30758 - 19968: jis0208<<14 | 0x19<<7 | 0x35, - 30759 - 19968: jis0208<<14 | 0x14<<7 | 0x2D, - 30765 - 19968: jis0212<<14 | 0x2E<<7 | 0x37, - 30766 - 19968: jis0212<<14 | 0x2E<<7 | 0x38, - 30768 - 19968: jis0212<<14 | 0x2E<<7 | 0x39, - 30770 - 19968: jis0208<<14 | 0x2A<<7 | 0x03, - 30772 - 19968: jis0208<<14 | 0x26<<7 | 0x2A, - 30773 - 19968: jis0212<<14 | 0x2E<<7 | 0x3A, - 30775 - 19968: jis0212<<14 | 0x2E<<7 | 0x3B, - 30778 - 19968: jis0208<<14 | 0x24<<7 | 0x36, - 30783 - 19968: jis0208<<14 | 0x18<<7 | 0x3B, - 30787 - 19968: jis0212<<14 | 0x2E<<7 | 0x3C, - 30788 - 19968: jis0212<<14 | 0x2E<<7 | 0x3D, - 30789 - 19968: jis0208<<14 | 0x41<<7 | 0x4A, - 30791 - 19968: jis0212<<14 | 0x2E<<7 | 0x3E, - 30792 - 19968: jis0212<<14 | 0x2E<<7 | 0x3F, - 30796 - 19968: jis0212<<14 | 0x2E<<7 | 0x40, - 30798 - 19968: jis0208<<14 | 0x5A<<7 | 0x1D, - 30802 - 19968: jis0212<<14 | 0x2E<<7 | 0x42, - 30812 - 19968: jis0212<<14 | 0x2E<<7 | 0x43, - 30813 - 19968: jis0208<<14 | 0x1D<<7 | 0x2A, - 30814 - 19968: jis0212<<14 | 0x2E<<7 | 0x44, - 30816 - 19968: jis0212<<14 | 0x2E<<7 | 0x45, - 30817 - 19968: jis0212<<14 | 0x2E<<7 | 0x46, - 30819 - 19968: jis0212<<14 | 0x2E<<7 | 0x47, - 30820 - 19968: jis0208<<14 | 0x5A<<7 | 0x1E, - 30824 - 19968: jis0212<<14 | 0x2E<<7 | 0x49, - 30826 - 19968: jis0212<<14 | 0x2E<<7 | 0x4A, - 30827 - 19968: jis0208<<14 | 0x2D<<7 | 0x11, - 30828 - 19968: jis0208<<14 | 0x18<<7 | 0x24, - 30830 - 19968: jis0212<<14 | 0x2E<<7 | 0x4B, - 30831 - 19968: jis0208<<14 | 0x17<<7 | 0x06, - 30834 - 19968: jis0208<<14 | 0x27<<7 | 0x02, - 30836 - 19968: jis0208<<14 | 0x41<<7 | 0x4C, - 30842 - 19968: jis0208<<14 | 0x5A<<7 | 0x1F, - 30844 - 19968: jis0208<<14 | 0x41<<7 | 0x4E, - 30846 - 19968: jis0212<<14 | 0x2E<<7 | 0x4D, - 30849 - 19968: jis0208<<14 | 0x17<<7 | 0x4A, - 30854 - 19968: jis0208<<14 | 0x41<<7 | 0x4D, - 30855 - 19968: jis0208<<14 | 0x23<<7 | 0x55, - 30858 - 19968: jis0212<<14 | 0x2E<<7 | 0x4E, - 30860 - 19968: jis0208<<14 | 0x41<<7 | 0x50, - 30861 - 19968: jis0208<<14 | 0x12<<7 | 0x16, - 30862 - 19968: jis0208<<14 | 0x41<<7 | 0x4B, - 30863 - 19968: jis0212<<14 | 0x2E<<7 | 0x4F, - 30865 - 19968: jis0208<<14 | 0x27<<7 | 0x49, - 30867 - 19968: jis0208<<14 | 0x10<<7 | 0x0F, - 30868 - 19968: jis0212<<14 | 0x2E<<7 | 0x50, - 30869 - 19968: jis0208<<14 | 0x19<<7 | 0x4B, - 30871 - 19968: jis0208<<14 | 0x2E<<7 | 0x31, - 30872 - 19968: jis0212<<14 | 0x2E<<7 | 0x51, - 30874 - 19968: jis0208<<14 | 0x41<<7 | 0x4F, - 30877 - 19968: jis0212<<14 | 0x2E<<7 | 0x53, - 30878 - 19968: jis0212<<14 | 0x2E<<7 | 0x54, - 30879 - 19968: jis0212<<14 | 0x2E<<7 | 0x55, - 30881 - 19968: jis0212<<14 | 0x2E<<7 | 0x52, - 30883 - 19968: jis0208<<14 | 0x41<<7 | 0x51, - 30884 - 19968: jis0212<<14 | 0x2E<<7 | 0x56, - 30887 - 19968: jis0208<<14 | 0x29<<7 | 0x2A, - 30888 - 19968: jis0212<<14 | 0x2E<<7 | 0x57, - 30889 - 19968: jis0208<<14 | 0x1F<<7 | 0x38, - 30890 - 19968: jis0208<<14 | 0x41<<7 | 0x53, - 30892 - 19968: jis0212<<14 | 0x2E<<7 | 0x58, - 30893 - 19968: jis0212<<14 | 0x2E<<7 | 0x59, - 30895 - 19968: jis0208<<14 | 0x41<<7 | 0x54, - 30896 - 19968: jis0212<<14 | 0x2E<<7 | 0x5A, - 30897 - 19968: jis0212<<14 | 0x2E<<7 | 0x5B, - 30898 - 19968: jis0212<<14 | 0x2E<<7 | 0x5C, - 30899 - 19968: jis0212<<14 | 0x2E<<7 | 0x5D, - 30901 - 19968: jis0208<<14 | 0x41<<7 | 0x52, - 30906 - 19968: jis0208<<14 | 0x12<<7 | 0x2D, - 30907 - 19968: jis0212<<14 | 0x2F<<7 | 0x00, - 30908 - 19968: jis0208<<14 | 0x41<<7 | 0x5A, - 30909 - 19968: jis0212<<14 | 0x2F<<7 | 0x01, - 30910 - 19968: jis0208<<14 | 0x41<<7 | 0x59, - 30911 - 19968: jis0212<<14 | 0x2F<<7 | 0x02, - 30913 - 19968: jis0208<<14 | 0x1B<<7 | 0x06, - 30917 - 19968: jis0208<<14 | 0x41<<7 | 0x5B, - 30918 - 19968: jis0208<<14 | 0x41<<7 | 0x56, - 30919 - 19968: jis0212<<14 | 0x2F<<7 | 0x03, - 30920 - 19968: jis0212<<14 | 0x2F<<7 | 0x04, - 30921 - 19968: jis0212<<14 | 0x2F<<7 | 0x05, - 30922 - 19968: jis0208<<14 | 0x41<<7 | 0x5C, - 30923 - 19968: jis0208<<14 | 0x41<<7 | 0x57, - 30924 - 19968: jis0212<<14 | 0x2F<<7 | 0x06, - 30926 - 19968: jis0212<<14 | 0x2F<<7 | 0x07, - 30928 - 19968: jis0208<<14 | 0x27<<7 | 0x37, - 30929 - 19968: jis0208<<14 | 0x41<<7 | 0x55, - 30930 - 19968: jis0212<<14 | 0x2F<<7 | 0x08, - 30931 - 19968: jis0212<<14 | 0x2F<<7 | 0x09, - 30932 - 19968: jis0208<<14 | 0x41<<7 | 0x58, - 30933 - 19968: jis0212<<14 | 0x2F<<7 | 0x0A, - 30934 - 19968: jis0212<<14 | 0x2F<<7 | 0x0B, - 30938 - 19968: jis0208<<14 | 0x42<<7 | 0x01, - 30939 - 19968: jis0212<<14 | 0x2F<<7 | 0x0D, - 30943 - 19968: jis0212<<14 | 0x2F<<7 | 0x0E, - 30944 - 19968: jis0212<<14 | 0x2F<<7 | 0x0F, - 30945 - 19968: jis0212<<14 | 0x2F<<7 | 0x10, - 30948 - 19968: jis0212<<14 | 0x2F<<7 | 0x0C, - 30950 - 19968: jis0212<<14 | 0x2F<<7 | 0x11, - 30951 - 19968: jis0208<<14 | 0x42<<7 | 0x00, - 30952 - 19968: jis0208<<14 | 0x2A<<7 | 0x40, - 30954 - 19968: jis0212<<14 | 0x2F<<7 | 0x12, - 30956 - 19968: jis0208<<14 | 0x41<<7 | 0x5D, - 30959 - 19968: jis0208<<14 | 0x0F<<7 | 0x4A, - 30962 - 19968: jis0212<<14 | 0x2F<<7 | 0x13, - 30963 - 19968: jis0212<<14 | 0x2F<<7 | 0x14, - 30964 - 19968: jis0208<<14 | 0x42<<7 | 0x03, - 30966 - 19968: jis0212<<14 | 0x2F<<7 | 0x16, - 30967 - 19968: jis0212<<14 | 0x2F<<7 | 0x17, - 30970 - 19968: jis0212<<14 | 0x2F<<7 | 0x18, - 30971 - 19968: jis0212<<14 | 0x2F<<7 | 0x19, - 30973 - 19968: jis0208<<14 | 0x42<<7 | 0x02, - 30975 - 19968: jis0212<<14 | 0x2F<<7 | 0x1A, - 30976 - 19968: jis0212<<14 | 0x2F<<7 | 0x15, - 30977 - 19968: jis0208<<14 | 0x1D<<7 | 0x2B, - 30982 - 19968: jis0212<<14 | 0x2F<<7 | 0x1B, - 30983 - 19968: jis0208<<14 | 0x42<<7 | 0x04, - 30988 - 19968: jis0212<<14 | 0x2F<<7 | 0x1C, - 30990 - 19968: jis0208<<14 | 0x20<<7 | 0x22, - 30992 - 19968: jis0212<<14 | 0x2F<<7 | 0x1D, - 30993 - 19968: jis0208<<14 | 0x42<<7 | 0x06, - 30994 - 19968: jis0208<<14 | 0x42<<7 | 0x05, - 31001 - 19968: jis0208<<14 | 0x42<<7 | 0x07, - 31002 - 19968: jis0212<<14 | 0x2F<<7 | 0x1E, - 31004 - 19968: jis0212<<14 | 0x2F<<7 | 0x1F, - 31006 - 19968: jis0212<<14 | 0x2F<<7 | 0x20, - 31007 - 19968: jis0212<<14 | 0x2F<<7 | 0x21, - 31008 - 19968: jis0212<<14 | 0x2F<<7 | 0x22, - 31013 - 19968: jis0212<<14 | 0x2F<<7 | 0x23, - 31014 - 19968: jis0208<<14 | 0x41<<7 | 0x47, - 31015 - 19968: jis0212<<14 | 0x2F<<7 | 0x24, - 31017 - 19968: jis0212<<14 | 0x2F<<7 | 0x25, - 31018 - 19968: jis0208<<14 | 0x41<<7 | 0x49, - 31019 - 19968: jis0208<<14 | 0x42<<7 | 0x09, - 31020 - 19968: jis0208<<14 | 0x42<<7 | 0x08, - 31021 - 19968: jis0212<<14 | 0x2F<<7 | 0x26, - 31024 - 19968: jis0208<<14 | 0x5A<<7 | 0x20, - 31025 - 19968: jis0212<<14 | 0x2F<<7 | 0x27, - 31028 - 19968: jis0212<<14 | 0x2F<<7 | 0x28, - 31029 - 19968: jis0212<<14 | 0x2F<<7 | 0x29, - 31034 - 19968: jis0208<<14 | 0x1B<<7 | 0x07, - 31035 - 19968: jis0212<<14 | 0x2F<<7 | 0x2A, - 31036 - 19968: jis0208<<14 | 0x2D<<7 | 0x48, - 31037 - 19968: jis0212<<14 | 0x2F<<7 | 0x2B, - 31038 - 19968: jis0208<<14 | 0x1B<<7 | 0x31, - 31039 - 19968: jis0212<<14 | 0x2F<<7 | 0x2C, - 31040 - 19968: jis0208<<14 | 0x42<<7 | 0x0A, - 31041 - 19968: jis0208<<14 | 0x16<<7 | 0x16, - 31044 - 19968: jis0212<<14 | 0x2F<<7 | 0x2D, - 31045 - 19968: jis0212<<14 | 0x2F<<7 | 0x2E, - 31046 - 19968: jis0212<<14 | 0x2F<<7 | 0x2F, - 31047 - 19968: jis0208<<14 | 0x14<<7 | 0x1F, - 31048 - 19968: jis0208<<14 | 0x14<<7 | 0x06, - 31049 - 19968: jis0208<<14 | 0x1A<<7 | 0x42, - 31050 - 19968: jis0212<<14 | 0x2F<<7 | 0x30, - 31051 - 19968: jis0212<<14 | 0x2F<<7 | 0x31, - 31055 - 19968: jis0212<<14 | 0x2F<<7 | 0x32, - 31056 - 19968: jis0208<<14 | 0x2C<<7 | 0x13, - 31057 - 19968: jis0212<<14 | 0x2F<<7 | 0x33, - 31059 - 19968: jis0208<<14 | 0x42<<7 | 0x10, - 31060 - 19968: jis0212<<14 | 0x2F<<7 | 0x34, - 31061 - 19968: jis0208<<14 | 0x42<<7 | 0x0F, - 31062 - 19968: jis0208<<14 | 0x20<<7 | 0x23, - 31063 - 19968: jis0208<<14 | 0x42<<7 | 0x0C, - 31064 - 19968: jis0212<<14 | 0x2F<<7 | 0x35, - 31066 - 19968: jis0208<<14 | 0x42<<7 | 0x0E, - 31067 - 19968: jis0212<<14 | 0x2F<<7 | 0x36, - 31068 - 19968: jis0212<<14 | 0x2F<<7 | 0x37, - 31069 - 19968: jis0208<<14 | 0x1C<<7 | 0x2A, - 31070 - 19968: jis0208<<14 | 0x1E<<7 | 0x1F, - 31071 - 19968: jis0208<<14 | 0x42<<7 | 0x0D, - 31072 - 19968: jis0208<<14 | 0x42<<7 | 0x0B, - 31074 - 19968: jis0208<<14 | 0x26<<7 | 0x09, - 31077 - 19968: jis0208<<14 | 0x1D<<7 | 0x2C, - 31079 - 19968: jis0212<<14 | 0x2F<<7 | 0x38, - 31080 - 19968: jis0208<<14 | 0x28<<7 | 0x1B, - 31081 - 19968: jis0212<<14 | 0x2F<<7 | 0x39, - 31083 - 19968: jis0212<<14 | 0x2F<<7 | 0x3A, - 31085 - 19968: jis0208<<14 | 0x19<<7 | 0x36, - 31090 - 19968: jis0212<<14 | 0x2F<<7 | 0x3B, - 31095 - 19968: jis0208<<14 | 0x24<<7 | 0x57, - 31097 - 19968: jis0212<<14 | 0x2F<<7 | 0x3C, - 31098 - 19968: jis0208<<14 | 0x42<<7 | 0x11, - 31099 - 19968: jis0212<<14 | 0x2F<<7 | 0x3D, - 31100 - 19968: jis0212<<14 | 0x2F<<7 | 0x3E, - 31102 - 19968: jis0212<<14 | 0x2F<<7 | 0x3F, - 31103 - 19968: jis0208<<14 | 0x42<<7 | 0x12, - 31104 - 19968: jis0208<<14 | 0x42<<7 | 0x28, - 31105 - 19968: jis0208<<14 | 0x15<<7 | 0x37, - 31108 - 19968: jis0208<<14 | 0x2E<<7 | 0x1C, - 31109 - 19968: jis0208<<14 | 0x20<<7 | 0x14, - 31114 - 19968: jis0208<<14 | 0x42<<7 | 0x13, - 31115 - 19968: jis0212<<14 | 0x2F<<7 | 0x40, - 31116 - 19968: jis0212<<14 | 0x2F<<7 | 0x41, - 31117 - 19968: jis0208<<14 | 0x11<<7 | 0x31, - 31118 - 19968: jis0208<<14 | 0x23<<7 | 0x56, - 31119 - 19968: jis0208<<14 | 0x29<<7 | 0x00, - 31121 - 19968: jis0212<<14 | 0x2F<<7 | 0x42, - 31123 - 19968: jis0212<<14 | 0x2F<<7 | 0x43, - 31124 - 19968: jis0208<<14 | 0x5A<<7 | 0x24, - 31125 - 19968: jis0212<<14 | 0x2F<<7 | 0x45, - 31126 - 19968: jis0212<<14 | 0x2F<<7 | 0x46, - 31128 - 19968: jis0212<<14 | 0x2F<<7 | 0x47, - 31131 - 19968: jis0208<<14 | 0x5A<<7 | 0x26, - 31132 - 19968: jis0212<<14 | 0x2F<<7 | 0x49, - 31133 - 19968: jis0208<<14 | 0x42<<7 | 0x14, - 31137 - 19968: jis0212<<14 | 0x2F<<7 | 0x4A, - 31142 - 19968: jis0208<<14 | 0x14<<7 | 0x59, - 31143 - 19968: jis0208<<14 | 0x42<<7 | 0x15, - 31144 - 19968: jis0212<<14 | 0x2F<<7 | 0x4B, - 31145 - 19968: jis0212<<14 | 0x2F<<7 | 0x4C, - 31146 - 19968: jis0208<<14 | 0x42<<7 | 0x17, - 31147 - 19968: jis0212<<14 | 0x2F<<7 | 0x4D, - 31150 - 19968: jis0208<<14 | 0x42<<7 | 0x18, - 31151 - 19968: jis0212<<14 | 0x2F<<7 | 0x4E, - 31152 - 19968: jis0208<<14 | 0x26<<7 | 0x08, - 31153 - 19968: jis0212<<14 | 0x2F<<7 | 0x4F, - 31155 - 19968: jis0208<<14 | 0x42<<7 | 0x19, - 31156 - 19968: jis0212<<14 | 0x2F<<7 | 0x50, - 31160 - 19968: jis0212<<14 | 0x2F<<7 | 0x51, - 31161 - 19968: jis0208<<14 | 0x42<<7 | 0x1A, - 31162 - 19968: jis0208<<14 | 0x42<<7 | 0x1B, - 31163 - 19968: jis0212<<14 | 0x2F<<7 | 0x52, - 31165 - 19968: jis0208<<14 | 0x15<<7 | 0x38, - 31166 - 19968: jis0208<<14 | 0x11<<7 | 0x32, - 31167 - 19968: jis0208<<14 | 0x25<<7 | 0x24, - 31168 - 19968: jis0208<<14 | 0x1C<<7 | 0x07, - 31169 - 19968: jis0208<<14 | 0x1A<<7 | 0x43, - 31170 - 19968: jis0212<<14 | 0x2F<<7 | 0x53, - 31172 - 19968: jis0212<<14 | 0x2F<<7 | 0x54, - 31175 - 19968: jis0212<<14 | 0x2F<<7 | 0x55, - 31176 - 19968: jis0212<<14 | 0x2F<<7 | 0x56, - 31177 - 19968: jis0208<<14 | 0x42<<7 | 0x1C, - 31178 - 19968: jis0212<<14 | 0x2F<<7 | 0x57, - 31179 - 19968: jis0208<<14 | 0x1C<<7 | 0x08, - 31183 - 19968: jis0212<<14 | 0x2F<<7 | 0x58, - 31185 - 19968: jis0208<<14 | 0x11<<7 | 0x29, - 31186 - 19968: jis0208<<14 | 0x28<<7 | 0x22, - 31188 - 19968: jis0212<<14 | 0x2F<<7 | 0x59, - 31189 - 19968: jis0208<<14 | 0x42<<7 | 0x1D, - 31190 - 19968: jis0212<<14 | 0x2F<<7 | 0x5A, - 31192 - 19968: jis0208<<14 | 0x27<<7 | 0x4A, - 31194 - 19968: jis0212<<14 | 0x2F<<7 | 0x5B, - 31197 - 19968: jis0212<<14 | 0x2F<<7 | 0x5C, - 31198 - 19968: jis0212<<14 | 0x2F<<7 | 0x5D, - 31199 - 19968: jis0208<<14 | 0x20<<7 | 0x24, - 31200 - 19968: jis0212<<14 | 0x30<<7 | 0x00, - 31201 - 19968: jis0208<<14 | 0x42<<7 | 0x20, - 31202 - 19968: jis0212<<14 | 0x30<<7 | 0x01, - 31203 - 19968: jis0208<<14 | 0x42<<7 | 0x21, - 31204 - 19968: jis0208<<14 | 0x26<<7 | 0x48, - 31205 - 19968: jis0212<<14 | 0x30<<7 | 0x02, - 31206 - 19968: jis0208<<14 | 0x1E<<7 | 0x20, - 31207 - 19968: jis0208<<14 | 0x42<<7 | 0x1E, - 31209 - 19968: jis0208<<14 | 0x22<<7 | 0x40, - 31210 - 19968: jis0212<<14 | 0x30<<7 | 0x03, - 31211 - 19968: jis0212<<14 | 0x30<<7 | 0x04, - 31212 - 19968: jis0208<<14 | 0x42<<7 | 0x1F, - 31213 - 19968: jis0212<<14 | 0x30<<7 | 0x05, - 31216 - 19968: jis0208<<14 | 0x1D<<7 | 0x2D, - 31217 - 19968: jis0212<<14 | 0x30<<7 | 0x06, - 31224 - 19968: jis0212<<14 | 0x30<<7 | 0x07, - 31227 - 19968: jis0208<<14 | 0x0F<<7 | 0x3B, - 31228 - 19968: jis0212<<14 | 0x30<<7 | 0x08, - 31232 - 19968: jis0208<<14 | 0x14<<7 | 0x08, - 31234 - 19968: jis0212<<14 | 0x30<<7 | 0x09, - 31235 - 19968: jis0212<<14 | 0x30<<7 | 0x0A, - 31239 - 19968: jis0212<<14 | 0x30<<7 | 0x0B, - 31240 - 19968: jis0208<<14 | 0x42<<7 | 0x22, - 31241 - 19968: jis0212<<14 | 0x30<<7 | 0x0C, - 31242 - 19968: jis0212<<14 | 0x30<<7 | 0x0D, - 31243 - 19968: jis0208<<14 | 0x23<<7 | 0x57, - 31244 - 19968: jis0212<<14 | 0x30<<7 | 0x0E, - 31245 - 19968: jis0208<<14 | 0x42<<7 | 0x23, - 31246 - 19968: jis0208<<14 | 0x1F<<7 | 0x26, - 31249 - 19968: jis0212<<14 | 0x30<<7 | 0x0F, - 31252 - 19968: jis0208<<14 | 0x2B<<7 | 0x0C, - 31253 - 19968: jis0212<<14 | 0x30<<7 | 0x10, - 31255 - 19968: jis0208<<14 | 0x28<<7 | 0x02, - 31256 - 19968: jis0208<<14 | 0x42<<7 | 0x24, - 31257 - 19968: jis0208<<14 | 0x42<<7 | 0x25, - 31258 - 19968: jis0208<<14 | 0x22<<7 | 0x34, - 31259 - 19968: jis0212<<14 | 0x30<<7 | 0x11, - 31260 - 19968: jis0208<<14 | 0x2D<<7 | 0x26, - 31262 - 19968: jis0212<<14 | 0x30<<7 | 0x12, - 31263 - 19968: jis0208<<14 | 0x42<<7 | 0x27, - 31264 - 19968: jis0208<<14 | 0x42<<7 | 0x26, - 31265 - 19968: jis0212<<14 | 0x30<<7 | 0x13, - 31271 - 19968: jis0212<<14 | 0x30<<7 | 0x14, - 31275 - 19968: jis0212<<14 | 0x30<<7 | 0x15, - 31277 - 19968: jis0212<<14 | 0x30<<7 | 0x16, - 31278 - 19968: jis0208<<14 | 0x1B<<7 | 0x4E, - 31279 - 19968: jis0212<<14 | 0x30<<7 | 0x17, - 31280 - 19968: jis0212<<14 | 0x30<<7 | 0x18, - 31281 - 19968: jis0208<<14 | 0x42<<7 | 0x29, - 31282 - 19968: jis0208<<14 | 0x0F<<7 | 0x4F, - 31284 - 19968: jis0212<<14 | 0x30<<7 | 0x19, - 31285 - 19968: jis0212<<14 | 0x30<<7 | 0x1A, - 31287 - 19968: jis0208<<14 | 0x42<<7 | 0x2C, - 31288 - 19968: jis0212<<14 | 0x30<<7 | 0x1B, - 31289 - 19968: jis0212<<14 | 0x30<<7 | 0x1C, - 31290 - 19968: jis0212<<14 | 0x30<<7 | 0x1D, - 31291 - 19968: jis0208<<14 | 0x42<<7 | 0x2A, - 31292 - 19968: jis0208<<14 | 0x11<<7 | 0x33, - 31293 - 19968: jis0208<<14 | 0x16<<7 | 0x2D, - 31294 - 19968: jis0208<<14 | 0x42<<7 | 0x2B, - 31295 - 19968: jis0208<<14 | 0x18<<7 | 0x25, - 31296 - 19968: jis0208<<14 | 0x18<<7 | 0x51, - 31298 - 19968: jis0208<<14 | 0x29<<7 | 0x45, - 31299 - 19968: jis0208<<14 | 0x42<<7 | 0x2D, - 31300 - 19968: jis0212<<14 | 0x30<<7 | 0x1E, - 31301 - 19968: jis0212<<14 | 0x30<<7 | 0x1F, - 31302 - 19968: jis0208<<14 | 0x2A<<7 | 0x33, - 31303 - 19968: jis0212<<14 | 0x30<<7 | 0x20, - 31304 - 19968: jis0212<<14 | 0x30<<7 | 0x21, - 31305 - 19968: jis0208<<14 | 0x42<<7 | 0x2F, - 31308 - 19968: jis0212<<14 | 0x30<<7 | 0x22, - 31309 - 19968: jis0208<<14 | 0x1F<<7 | 0x30, - 31310 - 19968: jis0208<<14 | 0x10<<7 | 0x2E, - 31311 - 19968: jis0208<<14 | 0x11<<7 | 0x19, - 31312 - 19968: jis0208<<14 | 0x0F<<7 | 0x0B, - 31317 - 19968: jis0212<<14 | 0x30<<7 | 0x23, - 31318 - 19968: jis0212<<14 | 0x30<<7 | 0x24, - 31319 - 19968: jis0208<<14 | 0x42<<7 | 0x2E, - 31321 - 19968: jis0212<<14 | 0x30<<7 | 0x25, - 31324 - 19968: jis0212<<14 | 0x30<<7 | 0x26, - 31325 - 19968: jis0212<<14 | 0x30<<7 | 0x27, - 31327 - 19968: jis0212<<14 | 0x30<<7 | 0x28, - 31328 - 19968: jis0212<<14 | 0x30<<7 | 0x29, - 31329 - 19968: jis0208<<14 | 0x42<<7 | 0x30, - 31330 - 19968: jis0208<<14 | 0x42<<7 | 0x31, - 31331 - 19968: jis0208<<14 | 0x1D<<7 | 0x56, - 31333 - 19968: jis0212<<14 | 0x30<<7 | 0x2A, - 31335 - 19968: jis0212<<14 | 0x30<<7 | 0x2B, - 31337 - 19968: jis0208<<14 | 0x42<<7 | 0x32, - 31338 - 19968: jis0212<<14 | 0x30<<7 | 0x2C, - 31339 - 19968: jis0208<<14 | 0x12<<7 | 0x2E, - 31341 - 19968: jis0212<<14 | 0x30<<7 | 0x2D, - 31344 - 19968: jis0208<<14 | 0x42<<7 | 0x34, - 31348 - 19968: jis0208<<14 | 0x16<<7 | 0x49, - 31349 - 19968: jis0212<<14 | 0x30<<7 | 0x2E, - 31350 - 19968: jis0208<<14 | 0x14<<7 | 0x45, - 31352 - 19968: jis0212<<14 | 0x30<<7 | 0x2F, - 31353 - 19968: jis0208<<14 | 0x42<<7 | 0x35, - 31354 - 19968: jis0208<<14 | 0x15<<7 | 0x54, - 31357 - 19968: jis0208<<14 | 0x42<<7 | 0x36, - 31358 - 19968: jis0212<<14 | 0x30<<7 | 0x30, - 31359 - 19968: jis0208<<14 | 0x1F<<7 | 0x5B, - 31360 - 19968: jis0212<<14 | 0x30<<7 | 0x31, - 31361 - 19968: jis0208<<14 | 0x25<<7 | 0x2C, - 31362 - 19968: jis0212<<14 | 0x30<<7 | 0x32, - 31363 - 19968: jis0208<<14 | 0x1F<<7 | 0x3F, - 31364 - 19968: jis0208<<14 | 0x19<<7 | 0x54, - 31365 - 19968: jis0212<<14 | 0x30<<7 | 0x33, - 31366 - 19968: jis0212<<14 | 0x30<<7 | 0x34, - 31368 - 19968: jis0208<<14 | 0x42<<7 | 0x37, - 31370 - 19968: jis0212<<14 | 0x30<<7 | 0x35, - 31371 - 19968: jis0212<<14 | 0x30<<7 | 0x36, - 31376 - 19968: jis0212<<14 | 0x30<<7 | 0x37, - 31377 - 19968: jis0212<<14 | 0x30<<7 | 0x38, - 31378 - 19968: jis0208<<14 | 0x22<<7 | 0x41, - 31379 - 19968: jis0208<<14 | 0x20<<7 | 0x4A, - 31380 - 19968: jis0212<<14 | 0x30<<7 | 0x39, - 31381 - 19968: jis0208<<14 | 0x42<<7 | 0x39, - 31382 - 19968: jis0208<<14 | 0x42<<7 | 0x3B, - 31383 - 19968: jis0208<<14 | 0x42<<7 | 0x38, - 31384 - 19968: jis0208<<14 | 0x42<<7 | 0x3A, - 31390 - 19968: jis0212<<14 | 0x30<<7 | 0x3A, - 31391 - 19968: jis0208<<14 | 0x16<<7 | 0x01, - 31392 - 19968: jis0212<<14 | 0x30<<7 | 0x3B, - 31395 - 19968: jis0212<<14 | 0x30<<7 | 0x3C, - 31401 - 19968: jis0208<<14 | 0x42<<7 | 0x3C, - 31402 - 19968: jis0208<<14 | 0x16<<7 | 0x05, - 31404 - 19968: jis0212<<14 | 0x30<<7 | 0x3D, - 31406 - 19968: jis0208<<14 | 0x14<<7 | 0x46, - 31407 - 19968: jis0208<<14 | 0x2C<<7 | 0x31, - 31408 - 19968: jis0208<<14 | 0x42<<7 | 0x3E, - 31411 - 19968: jis0212<<14 | 0x30<<7 | 0x3E, - 31413 - 19968: jis0212<<14 | 0x30<<7 | 0x3F, - 31414 - 19968: jis0208<<14 | 0x42<<7 | 0x3F, - 31417 - 19968: jis0212<<14 | 0x30<<7 | 0x40, - 31418 - 19968: jis0208<<14 | 0x10<<7 | 0x0D, - 31419 - 19968: jis0212<<14 | 0x30<<7 | 0x41, - 31420 - 19968: jis0212<<14 | 0x30<<7 | 0x42, - 31423 - 19968: jis0208<<14 | 0x42<<7 | 0x42, - 31427 - 19968: jis0208<<14 | 0x12<<7 | 0x55, - 31428 - 19968: jis0208<<14 | 0x42<<7 | 0x41, - 31429 - 19968: jis0208<<14 | 0x42<<7 | 0x40, - 31430 - 19968: jis0212<<14 | 0x30<<7 | 0x43, - 31431 - 19968: jis0208<<14 | 0x42<<7 | 0x44, - 31432 - 19968: jis0208<<14 | 0x42<<7 | 0x3D, - 31433 - 19968: jis0212<<14 | 0x30<<7 | 0x44, - 31434 - 19968: jis0208<<14 | 0x42<<7 | 0x45, - 31435 - 19968: jis0208<<14 | 0x2D<<7 | 0x08, - 31436 - 19968: jis0212<<14 | 0x30<<7 | 0x45, - 31437 - 19968: jis0208<<14 | 0x42<<7 | 0x46, - 31438 - 19968: jis0212<<14 | 0x30<<7 | 0x46, - 31439 - 19968: jis0208<<14 | 0x42<<7 | 0x47, - 31441 - 19968: jis0208<<14 | 0x5A<<7 | 0x27, - 31442 - 19968: jis0208<<14 | 0x33<<7 | 0x53, - 31443 - 19968: jis0208<<14 | 0x42<<7 | 0x49, - 31445 - 19968: jis0208<<14 | 0x42<<7 | 0x48, - 31449 - 19968: jis0208<<14 | 0x42<<7 | 0x4A, - 31450 - 19968: jis0208<<14 | 0x42<<7 | 0x4B, - 31451 - 19968: jis0212<<14 | 0x30<<7 | 0x48, - 31452 - 19968: jis0208<<14 | 0x2D<<7 | 0x14, - 31453 - 19968: jis0208<<14 | 0x42<<7 | 0x4C, - 31455 - 19968: jis0208<<14 | 0x4F<<7 | 0x4E, - 31456 - 19968: jis0208<<14 | 0x1D<<7 | 0x2E, - 31457 - 19968: jis0208<<14 | 0x42<<7 | 0x4D, - 31458 - 19968: jis0208<<14 | 0x42<<7 | 0x4E, - 31459 - 19968: jis0208<<14 | 0x1C<<7 | 0x36, - 31461 - 19968: jis0208<<14 | 0x25<<7 | 0x17, - 31462 - 19968: jis0208<<14 | 0x42<<7 | 0x4F, - 31463 - 19968: jis0208<<14 | 0x5A<<7 | 0x28, - 31464 - 19968: jis0212<<14 | 0x30<<7 | 0x49, - 31465 - 19968: jis0212<<14 | 0x30<<7 | 0x4A, - 31466 - 19968: jis0208<<14 | 0x22<<7 | 0x07, - 31467 - 19968: jis0208<<14 | 0x5A<<7 | 0x2A, - 31468 - 19968: jis0212<<14 | 0x30<<7 | 0x4C, - 31469 - 19968: jis0208<<14 | 0x42<<7 | 0x50, - 31471 - 19968: jis0208<<14 | 0x22<<7 | 0x1B, - 31472 - 19968: jis0208<<14 | 0x42<<7 | 0x51, - 31473 - 19968: jis0212<<14 | 0x30<<7 | 0x4D, - 31476 - 19968: jis0212<<14 | 0x30<<7 | 0x4E, - 31478 - 19968: jis0208<<14 | 0x15<<7 | 0x04, - 31480 - 19968: jis0208<<14 | 0x30<<7 | 0x1E, - 31481 - 19968: jis0208<<14 | 0x22<<7 | 0x3C, - 31482 - 19968: jis0208<<14 | 0x1B<<7 | 0x12, - 31483 - 19968: jis0212<<14 | 0x30<<7 | 0x4F, - 31485 - 19968: jis0212<<14 | 0x30<<7 | 0x50, - 31486 - 19968: jis0212<<14 | 0x30<<7 | 0x51, - 31487 - 19968: jis0208<<14 | 0x13<<7 | 0x27, - 31490 - 19968: jis0208<<14 | 0x42<<7 | 0x52, - 31492 - 19968: jis0208<<14 | 0x43<<7 | 0x01, - 31494 - 19968: jis0208<<14 | 0x42<<7 | 0x55, - 31495 - 19968: jis0212<<14 | 0x30<<7 | 0x52, - 31496 - 19968: jis0208<<14 | 0x14<<7 | 0x47, - 31498 - 19968: jis0208<<14 | 0x42<<7 | 0x54, - 31499 - 19968: jis0208<<14 | 0x43<<7 | 0x03, - 31503 - 19968: jis0208<<14 | 0x42<<7 | 0x53, - 31505 - 19968: jis0208<<14 | 0x1D<<7 | 0x2F, - 31508 - 19968: jis0212<<14 | 0x30<<7 | 0x53, - 31512 - 19968: jis0208<<14 | 0x42<<7 | 0x57, - 31513 - 19968: jis0208<<14 | 0x42<<7 | 0x58, - 31515 - 19968: jis0208<<14 | 0x24<<7 | 0x0A, - 31518 - 19968: jis0208<<14 | 0x42<<7 | 0x59, - 31519 - 19968: jis0212<<14 | 0x30<<7 | 0x54, - 31520 - 19968: jis0208<<14 | 0x12<<7 | 0x3D, - 31523 - 19968: jis0212<<14 | 0x30<<7 | 0x55, - 31525 - 19968: jis0208<<14 | 0x1E<<7 | 0x39, - 31526 - 19968: jis0208<<14 | 0x28<<7 | 0x43, - 31527 - 19968: jis0212<<14 | 0x30<<7 | 0x56, - 31528 - 19968: jis0208<<14 | 0x42<<7 | 0x5B, - 31529 - 19968: jis0212<<14 | 0x30<<7 | 0x57, - 31530 - 19968: jis0212<<14 | 0x30<<7 | 0x58, - 31531 - 19968: jis0212<<14 | 0x30<<7 | 0x59, - 31532 - 19968: jis0208<<14 | 0x21<<7 | 0x47, - 31533 - 19968: jis0212<<14 | 0x30<<7 | 0x5A, - 31534 - 19968: jis0212<<14 | 0x30<<7 | 0x5B, - 31535 - 19968: jis0212<<14 | 0x30<<7 | 0x5C, - 31536 - 19968: jis0212<<14 | 0x30<<7 | 0x5D, - 31537 - 19968: jis0212<<14 | 0x31<<7 | 0x00, - 31539 - 19968: jis0208<<14 | 0x42<<7 | 0x56, - 31540 - 19968: jis0212<<14 | 0x31<<7 | 0x01, - 31541 - 19968: jis0208<<14 | 0x42<<7 | 0x5A, - 31542 - 19968: jis0208<<14 | 0x42<<7 | 0x5C, - 31545 - 19968: jis0208<<14 | 0x19<<7 | 0x5A, - 31549 - 19968: jis0212<<14 | 0x31<<7 | 0x02, - 31551 - 19968: jis0212<<14 | 0x31<<7 | 0x03, - 31552 - 19968: jis0212<<14 | 0x31<<7 | 0x04, - 31553 - 19968: jis0212<<14 | 0x31<<7 | 0x05, - 31557 - 19968: jis0208<<14 | 0x43<<7 | 0x05, - 31558 - 19968: jis0208<<14 | 0x28<<7 | 0x0D, - 31559 - 19968: jis0212<<14 | 0x31<<7 | 0x06, - 31560 - 19968: jis0208<<14 | 0x27<<7 | 0x05, - 31561 - 19968: jis0208<<14 | 0x24<<7 | 0x58, - 31563 - 19968: jis0208<<14 | 0x15<<7 | 0x39, - 31564 - 19968: jis0208<<14 | 0x43<<7 | 0x04, - 31565 - 19968: jis0208<<14 | 0x43<<7 | 0x02, - 31566 - 19968: jis0212<<14 | 0x31<<7 | 0x07, - 31567 - 19968: jis0208<<14 | 0x27<<7 | 0x14, - 31568 - 19968: jis0208<<14 | 0x42<<7 | 0x5D, - 31569 - 19968: jis0208<<14 | 0x22<<7 | 0x3D, - 31570 - 19968: jis0208<<14 | 0x24<<7 | 0x5A, - 31572 - 19968: jis0208<<14 | 0x24<<7 | 0x59, - 31573 - 19968: jis0212<<14 | 0x31<<7 | 0x08, - 31574 - 19968: jis0208<<14 | 0x19<<7 | 0x55, - 31581 - 19968: jis0208<<14 | 0x43<<7 | 0x17, - 31584 - 19968: jis0212<<14 | 0x31<<7 | 0x09, - 31588 - 19968: jis0212<<14 | 0x31<<7 | 0x0A, - 31589 - 19968: jis0208<<14 | 0x43<<7 | 0x07, - 31590 - 19968: jis0212<<14 | 0x31<<7 | 0x0B, - 31591 - 19968: jis0208<<14 | 0x43<<7 | 0x09, - 31593 - 19968: jis0212<<14 | 0x31<<7 | 0x0C, - 31594 - 19968: jis0212<<14 | 0x31<<7 | 0x0D, - 31596 - 19968: jis0208<<14 | 0x43<<7 | 0x0C, - 31597 - 19968: jis0212<<14 | 0x31<<7 | 0x0E, - 31598 - 19968: jis0208<<14 | 0x43<<7 | 0x0D, - 31599 - 19968: jis0212<<14 | 0x31<<7 | 0x0F, - 31600 - 19968: jis0208<<14 | 0x43<<7 | 0x0A, - 31601 - 19968: jis0208<<14 | 0x43<<7 | 0x0B, - 31602 - 19968: jis0212<<14 | 0x31<<7 | 0x10, - 31603 - 19968: jis0212<<14 | 0x31<<7 | 0x11, - 31604 - 19968: jis0208<<14 | 0x43<<7 | 0x08, - 31605 - 19968: jis0208<<14 | 0x43<<7 | 0x06, - 31607 - 19968: jis0212<<14 | 0x31<<7 | 0x12, - 31610 - 19968: jis0208<<14 | 0x43<<7 | 0x00, - 31620 - 19968: jis0212<<14 | 0x31<<7 | 0x13, - 31622 - 19968: jis0208<<14 | 0x29<<7 | 0x2E, - 31623 - 19968: jis0208<<14 | 0x11<<7 | 0x34, - 31625 - 19968: jis0212<<14 | 0x31<<7 | 0x14, - 31627 - 19968: jis0208<<14 | 0x43<<7 | 0x14, - 31629 - 19968: jis0208<<14 | 0x43<<7 | 0x11, - 31630 - 19968: jis0212<<14 | 0x31<<7 | 0x15, - 31631 - 19968: jis0208<<14 | 0x43<<7 | 0x16, - 31632 - 19968: jis0212<<14 | 0x31<<7 | 0x16, - 31633 - 19968: jis0212<<14 | 0x31<<7 | 0x17, - 31634 - 19968: jis0208<<14 | 0x43<<7 | 0x15, - 31636 - 19968: jis0208<<14 | 0x26<<7 | 0x52, - 31637 - 19968: jis0208<<14 | 0x2B<<7 | 0x06, - 31638 - 19968: jis0212<<14 | 0x31<<7 | 0x18, - 31639 - 19968: jis0208<<14 | 0x1A<<7 | 0x1A, - 31640 - 19968: jis0208<<14 | 0x43<<7 | 0x0F, - 31641 - 19968: jis0208<<14 | 0x43<<7 | 0x18, - 31642 - 19968: jis0208<<14 | 0x43<<7 | 0x13, - 31643 - 19968: jis0212<<14 | 0x31<<7 | 0x19, - 31644 - 19968: jis0208<<14 | 0x43<<7 | 0x12, - 31645 - 19968: jis0208<<14 | 0x43<<7 | 0x0E, - 31646 - 19968: jis0208<<14 | 0x5A<<7 | 0x2B, - 31647 - 19968: jis0208<<14 | 0x43<<7 | 0x10, - 31648 - 19968: jis0212<<14 | 0x31<<7 | 0x1B, - 31649 - 19968: jis0208<<14 | 0x13<<7 | 0x28, - 31653 - 19968: jis0212<<14 | 0x31<<7 | 0x1C, - 31658 - 19968: jis0208<<14 | 0x22<<7 | 0x1C, - 31660 - 19968: jis0212<<14 | 0x31<<7 | 0x1D, - 31661 - 19968: jis0208<<14 | 0x1F<<7 | 0x5C, - 31663 - 19968: jis0212<<14 | 0x31<<7 | 0x1E, - 31664 - 19968: jis0212<<14 | 0x31<<7 | 0x1F, - 31665 - 19968: jis0208<<14 | 0x27<<7 | 0x01, - 31666 - 19968: jis0212<<14 | 0x31<<7 | 0x20, - 31668 - 19968: jis0208<<14 | 0x43<<7 | 0x1D, - 31669 - 19968: jis0212<<14 | 0x31<<7 | 0x21, - 31670 - 19968: jis0212<<14 | 0x31<<7 | 0x22, - 31672 - 19968: jis0208<<14 | 0x27<<7 | 0x03, - 31674 - 19968: jis0212<<14 | 0x31<<7 | 0x23, - 31675 - 19968: jis0212<<14 | 0x31<<7 | 0x24, - 31676 - 19968: jis0212<<14 | 0x31<<7 | 0x25, - 31677 - 19968: jis0212<<14 | 0x31<<7 | 0x26, - 31680 - 19968: jis0208<<14 | 0x1F<<7 | 0x40, - 31681 - 19968: jis0208<<14 | 0x43<<7 | 0x1A, - 31682 - 19968: jis0212<<14 | 0x31<<7 | 0x27, - 31684 - 19968: jis0208<<14 | 0x27<<7 | 0x2E, - 31685 - 19968: jis0212<<14 | 0x31<<7 | 0x28, - 31686 - 19968: jis0208<<14 | 0x43<<7 | 0x1E, - 31687 - 19968: jis0208<<14 | 0x29<<7 | 0x32, - 31688 - 19968: jis0212<<14 | 0x31<<7 | 0x29, - 31689 - 19968: jis0208<<14 | 0x22<<7 | 0x3A, - 31690 - 19968: jis0212<<14 | 0x31<<7 | 0x2A, - 31691 - 19968: jis0208<<14 | 0x43<<7 | 0x19, - 31692 - 19968: jis0208<<14 | 0x43<<7 | 0x1B, - 31695 - 19968: jis0208<<14 | 0x43<<7 | 0x1C, - 31700 - 19968: jis0212<<14 | 0x31<<7 | 0x2B, - 31702 - 19968: jis0212<<14 | 0x31<<7 | 0x2C, - 31703 - 19968: jis0212<<14 | 0x31<<7 | 0x2D, - 31705 - 19968: jis0212<<14 | 0x31<<7 | 0x2E, - 31706 - 19968: jis0212<<14 | 0x31<<7 | 0x2F, - 31707 - 19968: jis0212<<14 | 0x31<<7 | 0x30, - 31709 - 19968: jis0208<<14 | 0x43<<7 | 0x1F, - 31712 - 19968: jis0208<<14 | 0x1B<<7 | 0x23, - 31716 - 19968: jis0208<<14 | 0x25<<7 | 0x25, - 31717 - 19968: jis0208<<14 | 0x43<<7 | 0x24, - 31718 - 19968: jis0208<<14 | 0x43<<7 | 0x23, - 31720 - 19968: jis0212<<14 | 0x31<<7 | 0x31, - 31721 - 19968: jis0208<<14 | 0x43<<7 | 0x20, - 31722 - 19968: jis0212<<14 | 0x31<<7 | 0x32, - 31725 - 19968: jis0208<<14 | 0x2E<<7 | 0x15, - 31730 - 19968: jis0212<<14 | 0x31<<7 | 0x33, - 31731 - 19968: jis0208<<14 | 0x43<<7 | 0x29, - 31732 - 19968: jis0212<<14 | 0x31<<7 | 0x34, - 31733 - 19968: jis0212<<14 | 0x31<<7 | 0x35, - 31734 - 19968: jis0208<<14 | 0x43<<7 | 0x2D, - 31735 - 19968: jis0208<<14 | 0x43<<7 | 0x2A, - 31736 - 19968: jis0212<<14 | 0x31<<7 | 0x36, - 31737 - 19968: jis0212<<14 | 0x31<<7 | 0x37, - 31738 - 19968: jis0212<<14 | 0x31<<7 | 0x38, - 31740 - 19968: jis0212<<14 | 0x31<<7 | 0x39, - 31742 - 19968: jis0212<<14 | 0x31<<7 | 0x3A, - 31744 - 19968: jis0208<<14 | 0x43<<7 | 0x26, - 31745 - 19968: jis0212<<14 | 0x31<<7 | 0x3B, - 31746 - 19968: jis0212<<14 | 0x31<<7 | 0x3C, - 31747 - 19968: jis0212<<14 | 0x31<<7 | 0x3D, - 31748 - 19968: jis0212<<14 | 0x31<<7 | 0x3E, - 31750 - 19968: jis0212<<14 | 0x31<<7 | 0x3F, - 31751 - 19968: jis0208<<14 | 0x43<<7 | 0x27, - 31753 - 19968: jis0212<<14 | 0x31<<7 | 0x40, - 31755 - 19968: jis0212<<14 | 0x31<<7 | 0x41, - 31756 - 19968: jis0212<<14 | 0x31<<7 | 0x42, - 31757 - 19968: jis0208<<14 | 0x43<<7 | 0x2C, - 31758 - 19968: jis0212<<14 | 0x31<<7 | 0x43, - 31759 - 19968: jis0212<<14 | 0x31<<7 | 0x44, - 31761 - 19968: jis0208<<14 | 0x43<<7 | 0x21, - 31762 - 19968: jis0208<<14 | 0x31<<7 | 0x34, - 31763 - 19968: jis0208<<14 | 0x43<<7 | 0x28, - 31764 - 19968: jis0208<<14 | 0x43<<7 | 0x22, - 31767 - 19968: jis0208<<14 | 0x43<<7 | 0x2B, - 31769 - 19968: jis0212<<14 | 0x31<<7 | 0x45, - 31771 - 19968: jis0212<<14 | 0x31<<7 | 0x46, - 31775 - 19968: jis0208<<14 | 0x43<<7 | 0x31, - 31776 - 19968: jis0212<<14 | 0x31<<7 | 0x47, - 31777 - 19968: jis0208<<14 | 0x13<<7 | 0x29, - 31779 - 19968: jis0208<<14 | 0x43<<7 | 0x2E, - 31781 - 19968: jis0212<<14 | 0x31<<7 | 0x48, - 31782 - 19968: jis0212<<14 | 0x31<<7 | 0x49, - 31783 - 19968: jis0208<<14 | 0x43<<7 | 0x2F, - 31784 - 19968: jis0212<<14 | 0x31<<7 | 0x4A, - 31786 - 19968: jis0208<<14 | 0x43<<7 | 0x30, - 31787 - 19968: jis0208<<14 | 0x43<<7 | 0x33, - 31788 - 19968: jis0212<<14 | 0x31<<7 | 0x4B, - 31793 - 19968: jis0212<<14 | 0x31<<7 | 0x4C, - 31795 - 19968: jis0212<<14 | 0x31<<7 | 0x4D, - 31796 - 19968: jis0212<<14 | 0x31<<7 | 0x4E, - 31798 - 19968: jis0212<<14 | 0x31<<7 | 0x4F, - 31799 - 19968: jis0208<<14 | 0x43<<7 | 0x32, - 31800 - 19968: jis0208<<14 | 0x27<<7 | 0x55, - 31801 - 19968: jis0212<<14 | 0x31<<7 | 0x50, - 31802 - 19968: jis0212<<14 | 0x31<<7 | 0x51, - 31805 - 19968: jis0208<<14 | 0x43<<7 | 0x34, - 31806 - 19968: jis0208<<14 | 0x2D<<7 | 0x5B, - 31807 - 19968: jis0208<<14 | 0x29<<7 | 0x4C, - 31808 - 19968: jis0208<<14 | 0x43<<7 | 0x39, - 31811 - 19968: jis0208<<14 | 0x43<<7 | 0x36, - 31814 - 19968: jis0212<<14 | 0x31<<7 | 0x52, - 31818 - 19968: jis0212<<14 | 0x31<<7 | 0x53, - 31820 - 19968: jis0208<<14 | 0x43<<7 | 0x35, - 31821 - 19968: jis0208<<14 | 0x1F<<7 | 0x31, - 31823 - 19968: jis0208<<14 | 0x43<<7 | 0x38, - 31824 - 19968: jis0208<<14 | 0x43<<7 | 0x3A, - 31825 - 19968: jis0212<<14 | 0x31<<7 | 0x55, - 31826 - 19968: jis0212<<14 | 0x31<<7 | 0x56, - 31827 - 19968: jis0212<<14 | 0x31<<7 | 0x57, - 31828 - 19968: jis0208<<14 | 0x43<<7 | 0x37, - 31829 - 19968: jis0212<<14 | 0x31<<7 | 0x54, - 31830 - 19968: jis0208<<14 | 0x43<<7 | 0x3E, - 31832 - 19968: jis0208<<14 | 0x43<<7 | 0x3B, - 31833 - 19968: jis0212<<14 | 0x31<<7 | 0x58, - 31834 - 19968: jis0212<<14 | 0x31<<7 | 0x59, - 31835 - 19968: jis0212<<14 | 0x31<<7 | 0x5A, - 31836 - 19968: jis0212<<14 | 0x31<<7 | 0x5B, - 31837 - 19968: jis0212<<14 | 0x31<<7 | 0x5C, - 31838 - 19968: jis0212<<14 | 0x31<<7 | 0x5D, - 31839 - 19968: jis0208<<14 | 0x43<<7 | 0x3C, - 31840 - 19968: jis0208<<14 | 0x43<<7 | 0x25, - 31841 - 19968: jis0212<<14 | 0x32<<7 | 0x00, - 31843 - 19968: jis0212<<14 | 0x32<<7 | 0x01, - 31844 - 19968: jis0208<<14 | 0x43<<7 | 0x3D, - 31845 - 19968: jis0208<<14 | 0x43<<7 | 0x3F, - 31847 - 19968: jis0212<<14 | 0x32<<7 | 0x02, - 31849 - 19968: jis0212<<14 | 0x32<<7 | 0x03, - 31852 - 19968: jis0208<<14 | 0x43<<7 | 0x40, - 31853 - 19968: jis0212<<14 | 0x32<<7 | 0x04, - 31854 - 19968: jis0212<<14 | 0x32<<7 | 0x05, - 31856 - 19968: jis0212<<14 | 0x32<<7 | 0x06, - 31858 - 19968: jis0212<<14 | 0x32<<7 | 0x07, - 31859 - 19968: jis0208<<14 | 0x29<<7 | 0x25, - 31861 - 19968: jis0208<<14 | 0x43<<7 | 0x41, - 31865 - 19968: jis0212<<14 | 0x32<<7 | 0x08, - 31868 - 19968: jis0212<<14 | 0x32<<7 | 0x09, - 31869 - 19968: jis0212<<14 | 0x32<<7 | 0x0A, - 31870 - 19968: jis0208<<14 | 0x2B<<7 | 0x41, - 31873 - 19968: jis0208<<14 | 0x15<<7 | 0x2D, - 31874 - 19968: jis0208<<14 | 0x16<<7 | 0x08, - 31875 - 19968: jis0208<<14 | 0x43<<7 | 0x42, - 31878 - 19968: jis0212<<14 | 0x32<<7 | 0x0B, - 31879 - 19968: jis0212<<14 | 0x32<<7 | 0x0C, - 31881 - 19968: jis0208<<14 | 0x29<<7 | 0x13, - 31883 - 19968: jis0208<<14 | 0x1E<<7 | 0x47, - 31885 - 19968: jis0208<<14 | 0x2B<<7 | 0x0F, - 31887 - 19968: jis0212<<14 | 0x32<<7 | 0x0D, - 31888 - 19968: jis0208<<14 | 0x43<<7 | 0x43, - 31890 - 19968: jis0208<<14 | 0x2D<<7 | 0x12, - 31892 - 19968: jis0212<<14 | 0x32<<7 | 0x0E, - 31893 - 19968: jis0208<<14 | 0x26<<7 | 0x53, - 31895 - 19968: jis0208<<14 | 0x20<<7 | 0x25, - 31896 - 19968: jis0208<<14 | 0x26<<7 | 0x13, - 31899 - 19968: jis0208<<14 | 0x1C<<7 | 0x2C, - 31902 - 19968: jis0212<<14 | 0x32<<7 | 0x0F, - 31903 - 19968: jis0208<<14 | 0x0F<<7 | 0x1F, - 31904 - 19968: jis0212<<14 | 0x32<<7 | 0x10, - 31905 - 19968: jis0208<<14 | 0x43<<7 | 0x48, - 31906 - 19968: jis0208<<14 | 0x43<<7 | 0x46, - 31908 - 19968: jis0208<<14 | 0x43<<7 | 0x44, - 31909 - 19968: jis0208<<14 | 0x13<<7 | 0x00, - 31910 - 19968: jis0212<<14 | 0x32<<7 | 0x11, - 31911 - 19968: jis0208<<14 | 0x1D<<7 | 0x30, - 31912 - 19968: jis0208<<14 | 0x43<<7 | 0x49, - 31915 - 19968: jis0208<<14 | 0x43<<7 | 0x47, - 31917 - 19968: jis0208<<14 | 0x43<<7 | 0x45, - 31918 - 19968: jis0208<<14 | 0x43<<7 | 0x4D, - 31920 - 19968: jis0212<<14 | 0x32<<7 | 0x12, - 31921 - 19968: jis0208<<14 | 0x43<<7 | 0x4C, - 31922 - 19968: jis0208<<14 | 0x43<<7 | 0x4B, - 31923 - 19968: jis0208<<14 | 0x43<<7 | 0x4A, - 31926 - 19968: jis0212<<14 | 0x32<<7 | 0x13, - 31927 - 19968: jis0212<<14 | 0x32<<7 | 0x14, - 31929 - 19968: jis0208<<14 | 0x43<<7 | 0x4E, - 31930 - 19968: jis0212<<14 | 0x32<<7 | 0x15, - 31931 - 19968: jis0212<<14 | 0x32<<7 | 0x16, - 31932 - 19968: jis0212<<14 | 0x32<<7 | 0x17, - 31933 - 19968: jis0208<<14 | 0x43<<7 | 0x4F, - 31934 - 19968: jis0208<<14 | 0x1F<<7 | 0x19, - 31935 - 19968: jis0212<<14 | 0x32<<7 | 0x18, - 31936 - 19968: jis0208<<14 | 0x43<<7 | 0x50, - 31938 - 19968: jis0208<<14 | 0x43<<7 | 0x52, - 31940 - 19968: jis0212<<14 | 0x32<<7 | 0x19, - 31941 - 19968: jis0208<<14 | 0x43<<7 | 0x51, - 31943 - 19968: jis0212<<14 | 0x32<<7 | 0x1A, - 31944 - 19968: jis0212<<14 | 0x32<<7 | 0x1B, - 31945 - 19968: jis0212<<14 | 0x32<<7 | 0x1C, - 31946 - 19968: jis0208<<14 | 0x17<<7 | 0x31, - 31949 - 19968: jis0212<<14 | 0x32<<7 | 0x1D, - 31950 - 19968: jis0208<<14 | 0x20<<7 | 0x17, - 31951 - 19968: jis0212<<14 | 0x32<<7 | 0x1E, - 31954 - 19968: jis0208<<14 | 0x43<<7 | 0x54, - 31955 - 19968: jis0212<<14 | 0x32<<7 | 0x1F, - 31956 - 19968: jis0212<<14 | 0x32<<7 | 0x20, - 31957 - 19968: jis0212<<14 | 0x32<<7 | 0x21, - 31958 - 19968: jis0208<<14 | 0x24<<7 | 0x5B, - 31959 - 19968: jis0212<<14 | 0x32<<7 | 0x22, - 31960 - 19968: jis0208<<14 | 0x43<<7 | 0x53, - 31961 - 19968: jis0212<<14 | 0x32<<7 | 0x23, - 31962 - 19968: jis0212<<14 | 0x32<<7 | 0x24, - 31964 - 19968: jis0208<<14 | 0x43<<7 | 0x55, - 31965 - 19968: jis0212<<14 | 0x32<<7 | 0x25, - 31966 - 19968: jis0208<<14 | 0x29<<7 | 0x14, - 31967 - 19968: jis0208<<14 | 0x20<<7 | 0x4B, - 31968 - 19968: jis0208<<14 | 0x18<<7 | 0x26, - 31970 - 19968: jis0208<<14 | 0x43<<7 | 0x56, - 31974 - 19968: jis0212<<14 | 0x32<<7 | 0x26, - 31975 - 19968: jis0208<<14 | 0x2D<<7 | 0x27, - 31977 - 19968: jis0212<<14 | 0x32<<7 | 0x27, - 31979 - 19968: jis0212<<14 | 0x32<<7 | 0x28, - 31983 - 19968: jis0208<<14 | 0x43<<7 | 0x58, - 31986 - 19968: jis0208<<14 | 0x43<<7 | 0x59, - 31988 - 19968: jis0208<<14 | 0x43<<7 | 0x5A, - 31989 - 19968: jis0212<<14 | 0x32<<7 | 0x29, - 31990 - 19968: jis0208<<14 | 0x43<<7 | 0x5B, - 31992 - 19968: jis0208<<14 | 0x1A<<7 | 0x44, - 31994 - 19968: jis0208<<14 | 0x43<<7 | 0x5C, - 31995 - 19968: jis0208<<14 | 0x16<<7 | 0x2E, - 31998 - 19968: jis0208<<14 | 0x14<<7 | 0x49, - 32000 - 19968: jis0208<<14 | 0x14<<7 | 0x09, - 32002 - 19968: jis0208<<14 | 0x44<<7 | 0x00, - 32003 - 19968: jis0212<<14 | 0x32<<7 | 0x2A, - 32004 - 19968: jis0208<<14 | 0x2B<<7 | 0x52, - 32005 - 19968: jis0208<<14 | 0x18<<7 | 0x27, - 32006 - 19968: jis0208<<14 | 0x43<<7 | 0x5D, - 32007 - 19968: jis0212<<14 | 0x32<<7 | 0x2B, - 32008 - 19968: jis0212<<14 | 0x32<<7 | 0x2C, - 32009 - 19968: jis0212<<14 | 0x32<<7 | 0x2D, - 32010 - 19968: jis0208<<14 | 0x44<<7 | 0x03, - 32011 - 19968: jis0208<<14 | 0x2B<<7 | 0x45, - 32013 - 19968: jis0208<<14 | 0x26<<7 | 0x1B, - 32015 - 19968: jis0212<<14 | 0x32<<7 | 0x2E, - 32016 - 19968: jis0208<<14 | 0x28<<7 | 0x12, - 32017 - 19968: jis0212<<14 | 0x32<<7 | 0x2F, - 32018 - 19968: jis0212<<14 | 0x32<<7 | 0x30, - 32019 - 19968: jis0212<<14 | 0x32<<7 | 0x31, - 32020 - 19968: jis0208<<14 | 0x1C<<7 | 0x42, - 32021 - 19968: jis0208<<14 | 0x44<<7 | 0x02, - 32022 - 19968: jis0212<<14 | 0x32<<7 | 0x32, - 32023 - 19968: jis0208<<14 | 0x1B<<7 | 0x32, - 32024 - 19968: jis0208<<14 | 0x18<<7 | 0x28, - 32025 - 19968: jis0208<<14 | 0x1A<<7 | 0x45, - 32026 - 19968: jis0208<<14 | 0x14<<7 | 0x48, - 32027 - 19968: jis0208<<14 | 0x29<<7 | 0x15, - 32028 - 19968: jis0208<<14 | 0x44<<7 | 0x01, - 32029 - 19968: jis0212<<14 | 0x32<<7 | 0x33, - 32030 - 19968: jis0212<<14 | 0x32<<7 | 0x34, - 32032 - 19968: jis0208<<14 | 0x20<<7 | 0x26, - 32033 - 19968: jis0208<<14 | 0x2A<<7 | 0x21, - 32034 - 19968: jis0208<<14 | 0x19<<7 | 0x56, - 32035 - 19968: jis0212<<14 | 0x32<<7 | 0x35, - 32038 - 19968: jis0212<<14 | 0x32<<7 | 0x36, - 32042 - 19968: jis0212<<14 | 0x32<<7 | 0x37, - 32043 - 19968: jis0208<<14 | 0x1A<<7 | 0x46, - 32044 - 19968: jis0208<<14 | 0x23<<7 | 0x3C, - 32045 - 19968: jis0212<<14 | 0x32<<7 | 0x38, - 32046 - 19968: jis0208<<14 | 0x44<<7 | 0x06, - 32047 - 19968: jis0208<<14 | 0x2D<<7 | 0x3E, - 32048 - 19968: jis0208<<14 | 0x19<<7 | 0x38, - 32049 - 19968: jis0212<<14 | 0x32<<7 | 0x39, - 32050 - 19968: jis0208<<14 | 0x44<<7 | 0x07, - 32051 - 19968: jis0208<<14 | 0x1E<<7 | 0x21, - 32053 - 19968: jis0208<<14 | 0x44<<7 | 0x09, - 32057 - 19968: jis0208<<14 | 0x1D<<7 | 0x31, - 32058 - 19968: jis0208<<14 | 0x19<<7 | 0x0F, - 32060 - 19968: jis0212<<14 | 0x32<<7 | 0x3A, - 32061 - 19968: jis0212<<14 | 0x32<<7 | 0x3B, - 32062 - 19968: jis0212<<14 | 0x32<<7 | 0x3C, - 32063 - 19968: jis0208<<14 | 0x44<<7 | 0x08, - 32064 - 19968: jis0212<<14 | 0x32<<7 | 0x3D, - 32065 - 19968: jis0212<<14 | 0x32<<7 | 0x3E, - 32066 - 19968: jis0208<<14 | 0x1C<<7 | 0x09, - 32067 - 19968: jis0208<<14 | 0x17<<7 | 0x1D, - 32068 - 19968: jis0208<<14 | 0x20<<7 | 0x27, - 32069 - 19968: jis0208<<14 | 0x44<<7 | 0x04, - 32070 - 19968: jis0208<<14 | 0x44<<7 | 0x0A, - 32071 - 19968: jis0212<<14 | 0x32<<7 | 0x3F, - 32072 - 19968: jis0208<<14 | 0x5A<<7 | 0x2D, - 32075 - 19968: jis0208<<14 | 0x44<<7 | 0x05, - 32076 - 19968: jis0208<<14 | 0x16<<7 | 0x2F, - 32077 - 19968: jis0212<<14 | 0x32<<7 | 0x41, - 32078 - 19968: jis0208<<14 | 0x44<<7 | 0x0D, - 32079 - 19968: jis0208<<14 | 0x44<<7 | 0x11, - 32080 - 19968: jis0208<<14 | 0x16<<7 | 0x4A, - 32081 - 19968: jis0212<<14 | 0x32<<7 | 0x42, - 32083 - 19968: jis0212<<14 | 0x32<<7 | 0x43, - 32086 - 19968: jis0208<<14 | 0x44<<7 | 0x0C, - 32087 - 19968: jis0212<<14 | 0x32<<7 | 0x44, - 32089 - 19968: jis0212<<14 | 0x32<<7 | 0x45, - 32090 - 19968: jis0212<<14 | 0x32<<7 | 0x46, - 32091 - 19968: jis0208<<14 | 0x44<<7 | 0x15, - 32092 - 19968: jis0208<<14 | 0x5A<<7 | 0x2E, - 32093 - 19968: jis0212<<14 | 0x32<<7 | 0x48, - 32094 - 19968: jis0208<<14 | 0x18<<7 | 0x29, - 32097 - 19968: jis0208<<14 | 0x2C<<7 | 0x4C, - 32098 - 19968: jis0208<<14 | 0x0F<<7 | 0x1B, - 32099 - 19968: jis0208<<14 | 0x44<<7 | 0x12, - 32101 - 19968: jis0212<<14 | 0x32<<7 | 0x49, - 32102 - 19968: jis0208<<14 | 0x14<<7 | 0x4A, - 32103 - 19968: jis0212<<14 | 0x32<<7 | 0x4A, - 32104 - 19968: jis0208<<14 | 0x44<<7 | 0x0F, - 32106 - 19968: jis0212<<14 | 0x32<<7 | 0x4B, - 32110 - 19968: jis0208<<14 | 0x44<<7 | 0x10, - 32112 - 19968: jis0212<<14 | 0x32<<7 | 0x4C, - 32113 - 19968: jis0208<<14 | 0x24<<7 | 0x5C, - 32114 - 19968: jis0208<<14 | 0x44<<7 | 0x0E, - 32115 - 19968: jis0208<<14 | 0x44<<7 | 0x0B, - 32117 - 19968: jis0208<<14 | 0x12<<7 | 0x07, - 32118 - 19968: jis0208<<14 | 0x1F<<7 | 0x43, - 32120 - 19968: jis0212<<14 | 0x32<<7 | 0x4D, - 32121 - 19968: jis0208<<14 | 0x17<<7 | 0x07, - 32122 - 19968: jis0212<<14 | 0x32<<7 | 0x4E, - 32123 - 19968: jis0212<<14 | 0x32<<7 | 0x4F, - 32125 - 19968: jis0208<<14 | 0x44<<7 | 0x17, - 32127 - 19968: jis0212<<14 | 0x32<<7 | 0x50, - 32129 - 19968: jis0212<<14 | 0x32<<7 | 0x51, - 32130 - 19968: jis0212<<14 | 0x32<<7 | 0x52, - 32131 - 19968: jis0212<<14 | 0x32<<7 | 0x53, - 32133 - 19968: jis0212<<14 | 0x32<<7 | 0x54, - 32134 - 19968: jis0212<<14 | 0x32<<7 | 0x55, - 32136 - 19968: jis0212<<14 | 0x32<<7 | 0x56, - 32137 - 19968: jis0208<<14 | 0x44<<7 | 0x14, - 32139 - 19968: jis0212<<14 | 0x32<<7 | 0x57, - 32140 - 19968: jis0212<<14 | 0x32<<7 | 0x58, - 32141 - 19968: jis0212<<14 | 0x32<<7 | 0x59, - 32143 - 19968: jis0208<<14 | 0x44<<7 | 0x16, - 32145 - 19968: jis0212<<14 | 0x32<<7 | 0x5A, - 32147 - 19968: jis0208<<14 | 0x44<<7 | 0x13, - 32150 - 19968: jis0212<<14 | 0x32<<7 | 0x5B, - 32151 - 19968: jis0212<<14 | 0x32<<7 | 0x5C, - 32153 - 19968: jis0208<<14 | 0x16<<7 | 0x30, - 32154 - 19968: jis0208<<14 | 0x21<<7 | 0x12, - 32155 - 19968: jis0208<<14 | 0x44<<7 | 0x18, - 32156 - 19968: jis0208<<14 | 0x20<<7 | 0x4D, - 32157 - 19968: jis0212<<14 | 0x32<<7 | 0x5D, - 32158 - 19968: jis0212<<14 | 0x33<<7 | 0x00, - 32159 - 19968: jis0208<<14 | 0x44<<7 | 0x25, - 32160 - 19968: jis0208<<14 | 0x5A<<7 | 0x30, - 32162 - 19968: jis0208<<14 | 0x44<<7 | 0x21, - 32163 - 19968: jis0208<<14 | 0x44<<7 | 0x1B, - 32166 - 19968: jis0212<<14 | 0x33<<7 | 0x01, - 32167 - 19968: jis0212<<14 | 0x33<<7 | 0x02, - 32170 - 19968: jis0212<<14 | 0x33<<7 | 0x03, - 32171 - 19968: jis0208<<14 | 0x44<<7 | 0x1F, - 32172 - 19968: jis0208<<14 | 0x1B<<7 | 0x59, - 32173 - 19968: jis0208<<14 | 0x0F<<7 | 0x3C, - 32174 - 19968: jis0208<<14 | 0x44<<7 | 0x1A, - 32175 - 19968: jis0208<<14 | 0x44<<7 | 0x22, - 32176 - 19968: jis0208<<14 | 0x44<<7 | 0x26, - 32177 - 19968: jis0208<<14 | 0x18<<7 | 0x2A, - 32178 - 19968: jis0208<<14 | 0x2B<<7 | 0x35, - 32179 - 19968: jis0212<<14 | 0x33<<7 | 0x04, - 32180 - 19968: jis0208<<14 | 0x23<<7 | 0x35, - 32181 - 19968: jis0208<<14 | 0x44<<7 | 0x1C, - 32182 - 19968: jis0212<<14 | 0x33<<7 | 0x05, - 32183 - 19968: jis0208<<14 | 0x5A<<7 | 0x2F, - 32184 - 19968: jis0208<<14 | 0x44<<7 | 0x24, - 32185 - 19968: jis0212<<14 | 0x33<<7 | 0x07, - 32186 - 19968: jis0208<<14 | 0x44<<7 | 0x19, - 32187 - 19968: jis0208<<14 | 0x22<<7 | 0x1D, - 32189 - 19968: jis0208<<14 | 0x44<<7 | 0x1E, - 32190 - 19968: jis0208<<14 | 0x0F<<7 | 0x1C, - 32191 - 19968: jis0208<<14 | 0x2B<<7 | 0x29, - 32194 - 19968: jis0212<<14 | 0x33<<7 | 0x08, - 32195 - 19968: jis0212<<14 | 0x33<<7 | 0x09, - 32196 - 19968: jis0212<<14 | 0x33<<7 | 0x0A, - 32197 - 19968: jis0212<<14 | 0x33<<7 | 0x0B, - 32198 - 19968: jis0212<<14 | 0x33<<7 | 0x0C, - 32199 - 19968: jis0208<<14 | 0x44<<7 | 0x1D, - 32202 - 19968: jis0208<<14 | 0x15<<7 | 0x3A, - 32203 - 19968: jis0208<<14 | 0x27<<7 | 0x4B, - 32204 - 19968: jis0212<<14 | 0x33<<7 | 0x0D, - 32205 - 19968: jis0212<<14 | 0x33<<7 | 0x0E, - 32206 - 19968: jis0212<<14 | 0x33<<7 | 0x0F, - 32207 - 19968: jis0208<<14 | 0x20<<7 | 0x4C, - 32209 - 19968: jis0208<<14 | 0x2D<<7 | 0x2F, - 32210 - 19968: jis0208<<14 | 0x1C<<7 | 0x4E, - 32213 - 19968: jis0208<<14 | 0x44<<7 | 0x4D, - 32214 - 19968: jis0208<<14 | 0x5A<<7 | 0x31, - 32215 - 19968: jis0212<<14 | 0x33<<7 | 0x10, - 32216 - 19968: jis0208<<14 | 0x44<<7 | 0x27, - 32217 - 19968: jis0212<<14 | 0x33<<7 | 0x11, - 32218 - 19968: jis0208<<14 | 0x1F<<7 | 0x5D, - 32220 - 19968: jis0208<<14 | 0x44<<7 | 0x23, - 32221 - 19968: jis0208<<14 | 0x44<<7 | 0x28, - 32222 - 19968: jis0208<<14 | 0x44<<7 | 0x2A, - 32224 - 19968: jis0208<<14 | 0x23<<7 | 0x58, - 32225 - 19968: jis0208<<14 | 0x44<<7 | 0x2D, - 32226 - 19968: jis0212<<14 | 0x33<<7 | 0x13, - 32228 - 19968: jis0208<<14 | 0x44<<7 | 0x29, - 32229 - 19968: jis0212<<14 | 0x33<<7 | 0x14, - 32230 - 19968: jis0212<<14 | 0x33<<7 | 0x15, - 32232 - 19968: jis0208<<14 | 0x29<<7 | 0x33, - 32233 - 19968: jis0208<<14 | 0x13<<7 | 0x2A, - 32234 - 19968: jis0212<<14 | 0x33<<7 | 0x16, - 32235 - 19968: jis0212<<14 | 0x33<<7 | 0x17, - 32236 - 19968: jis0208<<14 | 0x2B<<7 | 0x2A, - 32237 - 19968: jis0212<<14 | 0x33<<7 | 0x18, - 32239 - 19968: jis0208<<14 | 0x0F<<7 | 0x3D, - 32241 - 19968: jis0212<<14 | 0x33<<7 | 0x19, - 32242 - 19968: jis0208<<14 | 0x44<<7 | 0x2C, - 32244 - 19968: jis0208<<14 | 0x2D<<7 | 0x5C, - 32245 - 19968: jis0212<<14 | 0x33<<7 | 0x1A, - 32246 - 19968: jis0212<<14 | 0x33<<7 | 0x1B, - 32249 - 19968: jis0212<<14 | 0x33<<7 | 0x1C, - 32250 - 19968: jis0212<<14 | 0x33<<7 | 0x1D, - 32251 - 19968: jis0208<<14 | 0x44<<7 | 0x2B, - 32256 - 19968: jis0212<<14 | 0x33<<7 | 0x12, - 32257 - 19968: jis0208<<14 | 0x10<<7 | 0x4E, - 32260 - 19968: jis0208<<14 | 0x25<<7 | 0x4B, - 32261 - 19968: jis0208<<14 | 0x44<<7 | 0x2E, - 32264 - 19968: jis0212<<14 | 0x33<<7 | 0x1E, - 32265 - 19968: jis0208<<14 | 0x44<<7 | 0x35, - 32266 - 19968: jis0208<<14 | 0x44<<7 | 0x2F, - 32267 - 19968: jis0208<<14 | 0x44<<7 | 0x36, - 32272 - 19968: jis0212<<14 | 0x33<<7 | 0x1F, - 32273 - 19968: jis0212<<14 | 0x33<<7 | 0x20, - 32274 - 19968: jis0208<<14 | 0x44<<7 | 0x32, - 32277 - 19968: jis0212<<14 | 0x33<<7 | 0x21, - 32279 - 19968: jis0212<<14 | 0x33<<7 | 0x22, - 32283 - 19968: jis0208<<14 | 0x26<<7 | 0x5A, - 32284 - 19968: jis0212<<14 | 0x33<<7 | 0x23, - 32285 - 19968: jis0212<<14 | 0x33<<7 | 0x24, - 32286 - 19968: jis0208<<14 | 0x1B<<7 | 0x29, - 32287 - 19968: jis0208<<14 | 0x44<<7 | 0x34, - 32288 - 19968: jis0212<<14 | 0x33<<7 | 0x25, - 32289 - 19968: jis0208<<14 | 0x44<<7 | 0x31, - 32290 - 19968: jis0208<<14 | 0x44<<7 | 0x37, - 32291 - 19968: jis0208<<14 | 0x44<<7 | 0x30, - 32294 - 19968: jis0208<<14 | 0x1C<<7 | 0x23, - 32295 - 19968: jis0212<<14 | 0x33<<7 | 0x26, - 32296 - 19968: jis0212<<14 | 0x33<<7 | 0x27, - 32299 - 19968: jis0208<<14 | 0x2A<<7 | 0x04, - 32300 - 19968: jis0212<<14 | 0x33<<7 | 0x28, - 32301 - 19968: jis0212<<14 | 0x33<<7 | 0x29, - 32302 - 19968: jis0208<<14 | 0x1C<<7 | 0x2B, - 32303 - 19968: jis0212<<14 | 0x33<<7 | 0x2A, - 32305 - 19968: jis0208<<14 | 0x44<<7 | 0x33, - 32306 - 19968: jis0208<<14 | 0x44<<7 | 0x3F, - 32307 - 19968: jis0212<<14 | 0x33<<7 | 0x2B, - 32309 - 19968: jis0208<<14 | 0x44<<7 | 0x3B, - 32310 - 19968: jis0212<<14 | 0x33<<7 | 0x2C, - 32311 - 19968: jis0208<<14 | 0x44<<7 | 0x3E, - 32313 - 19968: jis0208<<14 | 0x44<<7 | 0x3C, - 32314 - 19968: jis0208<<14 | 0x44<<7 | 0x40, - 32315 - 19968: jis0208<<14 | 0x44<<7 | 0x3A, - 32317 - 19968: jis0208<<14 | 0x44<<7 | 0x20, - 32318 - 19968: jis0208<<14 | 0x1F<<7 | 0x32, - 32319 - 19968: jis0212<<14 | 0x33<<7 | 0x2D, - 32321 - 19968: jis0208<<14 | 0x27<<7 | 0x2A, - 32323 - 19968: jis0208<<14 | 0x44<<7 | 0x3D, - 32324 - 19968: jis0212<<14 | 0x33<<7 | 0x2E, - 32325 - 19968: jis0212<<14 | 0x33<<7 | 0x2F, - 32326 - 19968: jis0208<<14 | 0x44<<7 | 0x38, - 32327 - 19968: jis0212<<14 | 0x33<<7 | 0x30, - 32330 - 19968: jis0208<<14 | 0x20<<7 | 0x00, - 32331 - 19968: jis0208<<14 | 0x16<<7 | 0x31, - 32333 - 19968: jis0208<<14 | 0x1C<<7 | 0x0A, - 32334 - 19968: jis0212<<14 | 0x33<<7 | 0x31, - 32336 - 19968: jis0212<<14 | 0x33<<7 | 0x32, - 32338 - 19968: jis0208<<14 | 0x5A<<7 | 0x32, - 32340 - 19968: jis0208<<14 | 0x1E<<7 | 0x04, - 32341 - 19968: jis0208<<14 | 0x20<<7 | 0x15, - 32342 - 19968: jis0208<<14 | 0x44<<7 | 0x43, - 32344 - 19968: jis0212<<14 | 0x33<<7 | 0x34, - 32345 - 19968: jis0208<<14 | 0x44<<7 | 0x45, - 32346 - 19968: jis0208<<14 | 0x44<<7 | 0x46, - 32349 - 19968: jis0208<<14 | 0x44<<7 | 0x42, - 32350 - 19968: jis0208<<14 | 0x44<<7 | 0x44, - 32351 - 19968: jis0212<<14 | 0x33<<7 | 0x35, - 32353 - 19968: jis0212<<14 | 0x33<<7 | 0x36, - 32354 - 19968: jis0212<<14 | 0x33<<7 | 0x37, - 32357 - 19968: jis0212<<14 | 0x33<<7 | 0x38, - 32358 - 19968: jis0208<<14 | 0x44<<7 | 0x39, - 32359 - 19968: jis0208<<14 | 0x44<<7 | 0x41, - 32361 - 19968: jis0208<<14 | 0x44<<7 | 0x49, - 32362 - 19968: jis0208<<14 | 0x44<<7 | 0x48, - 32363 - 19968: jis0212<<14 | 0x33<<7 | 0x39, - 32365 - 19968: jis0208<<14 | 0x2A<<7 | 0x59, - 32366 - 19968: jis0212<<14 | 0x33<<7 | 0x3A, - 32367 - 19968: jis0212<<14 | 0x33<<7 | 0x3B, - 32368 - 19968: jis0208<<14 | 0x16<<7 | 0x0A, - 32371 - 19968: jis0212<<14 | 0x33<<7 | 0x3C, - 32376 - 19968: jis0212<<14 | 0x33<<7 | 0x3D, - 32377 - 19968: jis0208<<14 | 0x44<<7 | 0x47, - 32379 - 19968: jis0208<<14 | 0x44<<7 | 0x4B, - 32380 - 19968: jis0208<<14 | 0x44<<7 | 0x4A, - 32381 - 19968: jis0208<<14 | 0x44<<7 | 0x4E, - 32382 - 19968: jis0212<<14 | 0x33<<7 | 0x3E, - 32383 - 19968: jis0208<<14 | 0x44<<7 | 0x50, - 32385 - 19968: jis0212<<14 | 0x33<<7 | 0x3F, - 32386 - 19968: jis0208<<14 | 0x1A<<7 | 0x1B, - 32387 - 19968: jis0208<<14 | 0x44<<7 | 0x4C, - 32390 - 19968: jis0212<<14 | 0x33<<7 | 0x40, - 32391 - 19968: jis0212<<14 | 0x33<<7 | 0x41, - 32392 - 19968: jis0208<<14 | 0x44<<7 | 0x51, - 32393 - 19968: jis0208<<14 | 0x44<<7 | 0x52, - 32394 - 19968: jis0208<<14 | 0x58<<7 | 0x00, - 32396 - 19968: jis0208<<14 | 0x44<<7 | 0x53, - 32397 - 19968: jis0212<<14 | 0x33<<7 | 0x43, - 32398 - 19968: jis0208<<14 | 0x44<<7 | 0x59, - 32399 - 19968: jis0208<<14 | 0x24<<7 | 0x1A, - 32400 - 19968: jis0208<<14 | 0x44<<7 | 0x55, - 32401 - 19968: jis0212<<14 | 0x33<<7 | 0x44, - 32402 - 19968: jis0208<<14 | 0x44<<7 | 0x54, - 32403 - 19968: jis0208<<14 | 0x44<<7 | 0x56, - 32404 - 19968: jis0208<<14 | 0x44<<7 | 0x57, - 32405 - 19968: jis0212<<14 | 0x33<<7 | 0x45, - 32406 - 19968: jis0208<<14 | 0x44<<7 | 0x58, - 32408 - 19968: jis0212<<14 | 0x33<<7 | 0x46, - 32410 - 19968: jis0212<<14 | 0x33<<7 | 0x47, - 32411 - 19968: jis0208<<14 | 0x44<<7 | 0x5A, - 32412 - 19968: jis0208<<14 | 0x44<<7 | 0x5B, - 32413 - 19968: jis0212<<14 | 0x33<<7 | 0x48, - 32414 - 19968: jis0212<<14 | 0x33<<7 | 0x49, - 32566 - 19968: jis0208<<14 | 0x13<<7 | 0x2B, - 32568 - 19968: jis0208<<14 | 0x44<<7 | 0x5C, - 32570 - 19968: jis0208<<14 | 0x44<<7 | 0x5D, - 32571 - 19968: jis0212<<14 | 0x33<<7 | 0x4B, - 32572 - 19968: jis0212<<14 | 0x33<<7 | 0x4A, - 32573 - 19968: jis0212<<14 | 0x33<<7 | 0x4C, - 32574 - 19968: jis0212<<14 | 0x33<<7 | 0x4D, - 32575 - 19968: jis0212<<14 | 0x33<<7 | 0x4E, - 32579 - 19968: jis0212<<14 | 0x33<<7 | 0x4F, - 32580 - 19968: jis0212<<14 | 0x33<<7 | 0x50, - 32581 - 19968: jis0208<<14 | 0x45<<7 | 0x00, - 32583 - 19968: jis0208<<14 | 0x5A<<7 | 0x33, - 32588 - 19968: jis0208<<14 | 0x45<<7 | 0x01, - 32589 - 19968: jis0208<<14 | 0x45<<7 | 0x02, - 32590 - 19968: jis0208<<14 | 0x45<<7 | 0x03, - 32591 - 19968: jis0212<<14 | 0x33<<7 | 0x52, - 32592 - 19968: jis0208<<14 | 0x45<<7 | 0x04, - 32593 - 19968: jis0208<<14 | 0x45<<7 | 0x05, - 32594 - 19968: jis0212<<14 | 0x33<<7 | 0x53, - 32595 - 19968: jis0212<<14 | 0x33<<7 | 0x54, - 32596 - 19968: jis0208<<14 | 0x45<<7 | 0x07, - 32597 - 19968: jis0208<<14 | 0x45<<7 | 0x06, - 32600 - 19968: jis0208<<14 | 0x45<<7 | 0x08, - 32603 - 19968: jis0212<<14 | 0x33<<7 | 0x55, - 32604 - 19968: jis0212<<14 | 0x33<<7 | 0x56, - 32605 - 19968: jis0212<<14 | 0x33<<7 | 0x57, - 32607 - 19968: jis0208<<14 | 0x45<<7 | 0x09, - 32608 - 19968: jis0208<<14 | 0x45<<7 | 0x0A, - 32609 - 19968: jis0212<<14 | 0x33<<7 | 0x58, - 32611 - 19968: jis0212<<14 | 0x33<<7 | 0x59, - 32612 - 19968: jis0212<<14 | 0x33<<7 | 0x5A, - 32613 - 19968: jis0212<<14 | 0x33<<7 | 0x5B, - 32614 - 19968: jis0212<<14 | 0x33<<7 | 0x5C, - 32615 - 19968: jis0208<<14 | 0x45<<7 | 0x0D, - 32616 - 19968: jis0208<<14 | 0x45<<7 | 0x0B, - 32617 - 19968: jis0208<<14 | 0x45<<7 | 0x0C, - 32618 - 19968: jis0208<<14 | 0x19<<7 | 0x40, - 32619 - 19968: jis0208<<14 | 0x16<<7 | 0x32, - 32621 - 19968: jis0212<<14 | 0x33<<7 | 0x5D, - 32622 - 19968: jis0208<<14 | 0x22<<7 | 0x35, - 32624 - 19968: jis0208<<14 | 0x27<<7 | 0x12, - 32625 - 19968: jis0212<<14 | 0x34<<7 | 0x00, - 32626 - 19968: jis0208<<14 | 0x1C<<7 | 0x4F, - 32629 - 19968: jis0208<<14 | 0x26<<7 | 0x2C, - 32631 - 19968: jis0208<<14 | 0x27<<7 | 0x4C, - 32632 - 19968: jis0208<<14 | 0x45<<7 | 0x0E, - 32633 - 19968: jis0208<<14 | 0x37<<7 | 0x4C, - 32637 - 19968: jis0212<<14 | 0x34<<7 | 0x01, - 32638 - 19968: jis0212<<14 | 0x34<<7 | 0x02, - 32639 - 19968: jis0212<<14 | 0x34<<7 | 0x03, - 32640 - 19968: jis0212<<14 | 0x34<<7 | 0x04, - 32642 - 19968: jis0208<<14 | 0x45<<7 | 0x0F, - 32643 - 19968: jis0208<<14 | 0x45<<7 | 0x11, - 32645 - 19968: jis0208<<14 | 0x2C<<7 | 0x44, - 32646 - 19968: jis0208<<14 | 0x45<<7 | 0x10, - 32647 - 19968: jis0208<<14 | 0x45<<7 | 0x13, - 32648 - 19968: jis0208<<14 | 0x45<<7 | 0x12, - 32650 - 19968: jis0208<<14 | 0x2C<<7 | 0x32, - 32651 - 19968: jis0212<<14 | 0x34<<7 | 0x05, - 32652 - 19968: jis0208<<14 | 0x45<<7 | 0x14, - 32653 - 19968: jis0212<<14 | 0x34<<7 | 0x06, - 32654 - 19968: jis0208<<14 | 0x27<<7 | 0x5D, - 32655 - 19968: jis0212<<14 | 0x34<<7 | 0x07, - 32656 - 19968: jis0212<<14 | 0x34<<7 | 0x08, - 32657 - 19968: jis0212<<14 | 0x34<<7 | 0x09, - 32660 - 19968: jis0208<<14 | 0x45<<7 | 0x15, - 32662 - 19968: jis0212<<14 | 0x34<<7 | 0x0A, - 32663 - 19968: jis0212<<14 | 0x34<<7 | 0x0B, - 32666 - 19968: jis0208<<14 | 0x45<<7 | 0x18, - 32668 - 19968: jis0212<<14 | 0x34<<7 | 0x0C, - 32669 - 19968: jis0208<<14 | 0x45<<7 | 0x17, - 32670 - 19968: jis0208<<14 | 0x45<<7 | 0x16, - 32673 - 19968: jis0208<<14 | 0x5A<<7 | 0x34, - 32674 - 19968: jis0212<<14 | 0x34<<7 | 0x0E, - 32675 - 19968: jis0208<<14 | 0x45<<7 | 0x19, - 32676 - 19968: jis0208<<14 | 0x16<<7 | 0x11, - 32678 - 19968: jis0212<<14 | 0x34<<7 | 0x0F, - 32680 - 19968: jis0208<<14 | 0x20<<7 | 0x01, - 32681 - 19968: jis0208<<14 | 0x14<<7 | 0x20, - 32682 - 19968: jis0212<<14 | 0x34<<7 | 0x10, - 32685 - 19968: jis0212<<14 | 0x34<<7 | 0x11, - 32686 - 19968: jis0208<<14 | 0x45<<7 | 0x1D, - 32687 - 19968: jis0208<<14 | 0x45<<7 | 0x1A, - 32690 - 19968: jis0208<<14 | 0x45<<7 | 0x1B, - 32692 - 19968: jis0212<<14 | 0x34<<7 | 0x12, - 32694 - 19968: jis0208<<14 | 0x45<<7 | 0x1E, - 32696 - 19968: jis0208<<14 | 0x45<<7 | 0x1F, - 32697 - 19968: jis0208<<14 | 0x45<<7 | 0x1C, - 32700 - 19968: jis0212<<14 | 0x34<<7 | 0x13, - 32701 - 19968: jis0208<<14 | 0x10<<7 | 0x08, - 32703 - 19968: jis0212<<14 | 0x34<<7 | 0x14, - 32704 - 19968: jis0212<<14 | 0x34<<7 | 0x15, - 32705 - 19968: jis0208<<14 | 0x11<<7 | 0x06, - 32707 - 19968: jis0212<<14 | 0x34<<7 | 0x16, - 32709 - 19968: jis0208<<14 | 0x45<<7 | 0x21, - 32710 - 19968: jis0208<<14 | 0x45<<7 | 0x22, - 32712 - 19968: jis0212<<14 | 0x34<<7 | 0x17, - 32714 - 19968: jis0208<<14 | 0x45<<7 | 0x23, - 32716 - 19968: jis0208<<14 | 0x2C<<7 | 0x41, - 32718 - 19968: jis0212<<14 | 0x34<<7 | 0x18, - 32719 - 19968: jis0212<<14 | 0x34<<7 | 0x19, - 32722 - 19968: jis0208<<14 | 0x1C<<7 | 0x0B, - 32724 - 19968: jis0208<<14 | 0x45<<7 | 0x25, - 32725 - 19968: jis0208<<14 | 0x45<<7 | 0x24, - 32731 - 19968: jis0212<<14 | 0x34<<7 | 0x1A, - 32735 - 19968: jis0212<<14 | 0x34<<7 | 0x1B, - 32736 - 19968: jis0208<<14 | 0x1E<<7 | 0x48, - 32737 - 19968: jis0208<<14 | 0x45<<7 | 0x26, - 32739 - 19968: jis0212<<14 | 0x34<<7 | 0x1C, - 32741 - 19968: jis0212<<14 | 0x34<<7 | 0x1D, - 32742 - 19968: jis0208<<14 | 0x45<<7 | 0x27, - 32744 - 19968: jis0212<<14 | 0x34<<7 | 0x1E, - 32745 - 19968: jis0208<<14 | 0x45<<7 | 0x28, - 32747 - 19968: jis0208<<14 | 0x13<<7 | 0x44, - 32748 - 19968: jis0212<<14 | 0x34<<7 | 0x1F, - 32750 - 19968: jis0212<<14 | 0x34<<7 | 0x20, - 32751 - 19968: jis0212<<14 | 0x34<<7 | 0x21, - 32752 - 19968: jis0208<<14 | 0x13<<7 | 0x2C, - 32754 - 19968: jis0212<<14 | 0x34<<7 | 0x22, - 32755 - 19968: jis0208<<14 | 0x45<<7 | 0x29, - 32761 - 19968: jis0208<<14 | 0x45<<7 | 0x2A, - 32762 - 19968: jis0212<<14 | 0x34<<7 | 0x23, - 32763 - 19968: jis0208<<14 | 0x2A<<7 | 0x3C, - 32764 - 19968: jis0208<<14 | 0x2C<<7 | 0x42, - 32765 - 19968: jis0212<<14 | 0x34<<7 | 0x24, - 32766 - 19968: jis0212<<14 | 0x34<<7 | 0x25, - 32767 - 19968: jis0212<<14 | 0x34<<7 | 0x26, - 32768 - 19968: jis0208<<14 | 0x2C<<7 | 0x33, - 32769 - 19968: jis0208<<14 | 0x2E<<7 | 0x16, - 32771 - 19968: jis0208<<14 | 0x18<<7 | 0x2C, - 32772 - 19968: jis0208<<14 | 0x45<<7 | 0x2D, - 32773 - 19968: jis0208<<14 | 0x1B<<7 | 0x33, - 32774 - 19968: jis0208<<14 | 0x45<<7 | 0x2C, - 32775 - 19968: jis0212<<14 | 0x34<<7 | 0x27, - 32776 - 19968: jis0212<<14 | 0x34<<7 | 0x28, - 32778 - 19968: jis0212<<14 | 0x34<<7 | 0x29, - 32779 - 19968: jis0208<<14 | 0x45<<7 | 0x2E, - 32780 - 19968: jis0208<<14 | 0x1B<<7 | 0x08, - 32781 - 19968: jis0212<<14 | 0x34<<7 | 0x2A, - 32782 - 19968: jis0212<<14 | 0x34<<7 | 0x2B, - 32783 - 19968: jis0212<<14 | 0x34<<7 | 0x2C, - 32784 - 19968: jis0208<<14 | 0x21<<7 | 0x30, - 32785 - 19968: jis0212<<14 | 0x34<<7 | 0x2D, - 32786 - 19968: jis0208<<14 | 0x45<<7 | 0x2F, - 32787 - 19968: jis0212<<14 | 0x34<<7 | 0x2E, - 32788 - 19968: jis0212<<14 | 0x34<<7 | 0x2F, - 32789 - 19968: jis0208<<14 | 0x18<<7 | 0x2B, - 32790 - 19968: jis0212<<14 | 0x34<<7 | 0x30, - 32791 - 19968: jis0208<<14 | 0x2B<<7 | 0x36, - 32792 - 19968: jis0208<<14 | 0x45<<7 | 0x30, - 32793 - 19968: jis0208<<14 | 0x45<<7 | 0x31, - 32796 - 19968: jis0208<<14 | 0x45<<7 | 0x32, - 32797 - 19968: jis0212<<14 | 0x34<<7 | 0x31, - 32798 - 19968: jis0212<<14 | 0x34<<7 | 0x32, - 32799 - 19968: jis0212<<14 | 0x34<<7 | 0x33, - 32800 - 19968: jis0212<<14 | 0x34<<7 | 0x34, - 32801 - 19968: jis0208<<14 | 0x45<<7 | 0x33, - 32804 - 19968: jis0212<<14 | 0x34<<7 | 0x35, - 32806 - 19968: jis0212<<14 | 0x34<<7 | 0x36, - 32808 - 19968: jis0208<<14 | 0x45<<7 | 0x34, - 32812 - 19968: jis0212<<14 | 0x34<<7 | 0x37, - 32814 - 19968: jis0212<<14 | 0x34<<7 | 0x38, - 32816 - 19968: jis0212<<14 | 0x34<<7 | 0x39, - 32819 - 19968: jis0208<<14 | 0x1B<<7 | 0x09, - 32820 - 19968: jis0212<<14 | 0x34<<7 | 0x3A, - 32821 - 19968: jis0212<<14 | 0x34<<7 | 0x3B, - 32822 - 19968: jis0208<<14 | 0x2B<<7 | 0x4C, - 32823 - 19968: jis0212<<14 | 0x34<<7 | 0x3C, - 32825 - 19968: jis0212<<14 | 0x34<<7 | 0x3D, - 32826 - 19968: jis0212<<14 | 0x34<<7 | 0x3E, - 32827 - 19968: jis0208<<14 | 0x45<<7 | 0x36, - 32828 - 19968: jis0212<<14 | 0x34<<7 | 0x3F, - 32829 - 19968: jis0208<<14 | 0x22<<7 | 0x1E, - 32830 - 19968: jis0212<<14 | 0x34<<7 | 0x40, - 32831 - 19968: jis0208<<14 | 0x45<<7 | 0x35, - 32832 - 19968: jis0212<<14 | 0x34<<7 | 0x41, - 32836 - 19968: jis0212<<14 | 0x34<<7 | 0x42, - 32838 - 19968: jis0208<<14 | 0x45<<7 | 0x38, - 32842 - 19968: jis0208<<14 | 0x45<<7 | 0x37, - 32850 - 19968: jis0208<<14 | 0x45<<7 | 0x39, - 32854 - 19968: jis0208<<14 | 0x1F<<7 | 0x1A, - 32856 - 19968: jis0208<<14 | 0x45<<7 | 0x3A, - 32858 - 19968: jis0208<<14 | 0x45<<7 | 0x3B, - 32862 - 19968: jis0208<<14 | 0x29<<7 | 0x18, - 32863 - 19968: jis0208<<14 | 0x45<<7 | 0x3C, - 32864 - 19968: jis0212<<14 | 0x34<<7 | 0x43, - 32865 - 19968: jis0208<<14 | 0x20<<7 | 0x4E, - 32866 - 19968: jis0208<<14 | 0x45<<7 | 0x3D, - 32868 - 19968: jis0212<<14 | 0x34<<7 | 0x44, - 32870 - 19968: jis0212<<14 | 0x34<<7 | 0x45, - 32872 - 19968: jis0208<<14 | 0x45<<7 | 0x3E, - 32877 - 19968: jis0212<<14 | 0x34<<7 | 0x46, - 32879 - 19968: jis0208<<14 | 0x2D<<7 | 0x5D, - 32880 - 19968: jis0208<<14 | 0x45<<7 | 0x41, - 32881 - 19968: jis0212<<14 | 0x34<<7 | 0x47, - 32882 - 19968: jis0208<<14 | 0x45<<7 | 0x40, - 32883 - 19968: jis0208<<14 | 0x45<<7 | 0x3F, - 32884 - 19968: jis0208<<14 | 0x23<<7 | 0x0F, - 32885 - 19968: jis0212<<14 | 0x34<<7 | 0x48, - 32886 - 19968: jis0208<<14 | 0x45<<7 | 0x42, - 32887 - 19968: jis0208<<14 | 0x1E<<7 | 0x05, - 32889 - 19968: jis0208<<14 | 0x45<<7 | 0x43, - 32893 - 19968: jis0208<<14 | 0x45<<7 | 0x44, - 32894 - 19968: jis0208<<14 | 0x2E<<7 | 0x17, - 32895 - 19968: jis0208<<14 | 0x45<<7 | 0x45, - 32897 - 19968: jis0212<<14 | 0x34<<7 | 0x49, - 32900 - 19968: jis0208<<14 | 0x45<<7 | 0x46, - 32901 - 19968: jis0208<<14 | 0x45<<7 | 0x48, - 32902 - 19968: jis0208<<14 | 0x45<<7 | 0x47, - 32903 - 19968: jis0208<<14 | 0x27<<7 | 0x04, - 32904 - 19968: jis0212<<14 | 0x34<<7 | 0x4A, - 32905 - 19968: jis0208<<14 | 0x25<<7 | 0x58, - 32907 - 19968: jis0208<<14 | 0x2E<<7 | 0x1D, - 32908 - 19968: jis0208<<14 | 0x27<<7 | 0x08, - 32910 - 19968: jis0212<<14 | 0x34<<7 | 0x4B, - 32915 - 19968: jis0208<<14 | 0x45<<7 | 0x4A, - 32918 - 19968: jis0208<<14 | 0x1D<<7 | 0x32, - 32920 - 19968: jis0208<<14 | 0x28<<7 | 0x09, - 32922 - 19968: jis0208<<14 | 0x45<<7 | 0x4B, - 32923 - 19968: jis0208<<14 | 0x45<<7 | 0x49, - 32924 - 19968: jis0212<<14 | 0x34<<7 | 0x4C, - 32925 - 19968: jis0208<<14 | 0x13<<7 | 0x2D, - 32926 - 19968: jis0212<<14 | 0x34<<7 | 0x4D, - 32929 - 19968: jis0208<<14 | 0x17<<7 | 0x33, - 32930 - 19968: jis0208<<14 | 0x1A<<7 | 0x47, - 32933 - 19968: jis0208<<14 | 0x27<<7 | 0x4D, - 32934 - 19968: jis0212<<14 | 0x34<<7 | 0x4E, - 32935 - 19968: jis0212<<14 | 0x34<<7 | 0x4F, - 32937 - 19968: jis0208<<14 | 0x17<<7 | 0x09, - 32938 - 19968: jis0208<<14 | 0x2A<<7 | 0x22, - 32939 - 19968: jis0212<<14 | 0x34<<7 | 0x50, - 32940 - 19968: jis0208<<14 | 0x45<<7 | 0x4E, - 32941 - 19968: jis0208<<14 | 0x45<<7 | 0x4C, - 32943 - 19968: jis0208<<14 | 0x18<<7 | 0x2D, - 32945 - 19968: jis0208<<14 | 0x18<<7 | 0x2E, - 32946 - 19968: jis0208<<14 | 0x0F<<7 | 0x48, - 32948 - 19968: jis0208<<14 | 0x19<<7 | 0x47, - 32952 - 19968: jis0212<<14 | 0x34<<7 | 0x51, - 32953 - 19968: jis0212<<14 | 0x34<<7 | 0x52, - 32954 - 19968: jis0208<<14 | 0x26<<7 | 0x38, - 32963 - 19968: jis0208<<14 | 0x0F<<7 | 0x3E, - 32964 - 19968: jis0208<<14 | 0x45<<7 | 0x53, - 32966 - 19968: jis0208<<14 | 0x22<<7 | 0x1F, - 32968 - 19968: jis0212<<14 | 0x34<<7 | 0x53, - 32972 - 19968: jis0208<<14 | 0x26<<7 | 0x37, - 32973 - 19968: jis0212<<14 | 0x34<<7 | 0x54, - 32974 - 19968: jis0208<<14 | 0x21<<7 | 0x3A, - 32975 - 19968: jis0212<<14 | 0x34<<7 | 0x55, - 32978 - 19968: jis0212<<14 | 0x34<<7 | 0x56, - 32980 - 19968: jis0212<<14 | 0x34<<7 | 0x57, - 32981 - 19968: jis0212<<14 | 0x34<<7 | 0x58, - 32982 - 19968: jis0208<<14 | 0x45<<7 | 0x55, - 32983 - 19968: jis0212<<14 | 0x34<<7 | 0x59, - 32984 - 19968: jis0212<<14 | 0x34<<7 | 0x5A, - 32985 - 19968: jis0208<<14 | 0x45<<7 | 0x51, - 32986 - 19968: jis0208<<14 | 0x45<<7 | 0x54, - 32987 - 19968: jis0208<<14 | 0x45<<7 | 0x4F, - 32989 - 19968: jis0208<<14 | 0x45<<7 | 0x52, - 32990 - 19968: jis0208<<14 | 0x2A<<7 | 0x05, - 32992 - 19968: jis0212<<14 | 0x34<<7 | 0x5B, - 32993 - 19968: jis0208<<14 | 0x17<<7 | 0x34, - 32996 - 19968: jis0208<<14 | 0x0F<<7 | 0x5C, - 32997 - 19968: jis0208<<14 | 0x45<<7 | 0x50, - 33005 - 19968: jis0212<<14 | 0x34<<7 | 0x5C, - 33006 - 19968: jis0212<<14 | 0x34<<7 | 0x5D, - 33007 - 19968: jis0208<<14 | 0x45<<7 | 0x57, - 33008 - 19968: jis0212<<14 | 0x35<<7 | 0x00, - 33009 - 19968: jis0208<<14 | 0x45<<7 | 0x58, - 33010 - 19968: jis0212<<14 | 0x35<<7 | 0x01, - 33011 - 19968: jis0212<<14 | 0x35<<7 | 0x02, - 33012 - 19968: jis0208<<14 | 0x25<<7 | 0x18, - 33014 - 19968: jis0212<<14 | 0x35<<7 | 0x03, - 33016 - 19968: jis0208<<14 | 0x15<<7 | 0x1A, - 33017 - 19968: jis0212<<14 | 0x35<<7 | 0x04, - 33018 - 19968: jis0212<<14 | 0x35<<7 | 0x05, - 33020 - 19968: jis0208<<14 | 0x46<<7 | 0x05, - 33021 - 19968: jis0208<<14 | 0x26<<7 | 0x1C, - 33022 - 19968: jis0212<<14 | 0x35<<7 | 0x06, - 33026 - 19968: jis0208<<14 | 0x1A<<7 | 0x48, - 33027 - 19968: jis0212<<14 | 0x35<<7 | 0x07, - 33029 - 19968: jis0208<<14 | 0x15<<7 | 0x1B, - 33030 - 19968: jis0208<<14 | 0x1F<<7 | 0x27, - 33031 - 19968: jis0208<<14 | 0x2E<<7 | 0x25, - 33032 - 19968: jis0208<<14 | 0x2B<<7 | 0x0D, - 33033 - 19968: jis0208<<14 | 0x45<<7 | 0x56, - 33034 - 19968: jis0208<<14 | 0x1F<<7 | 0x33, - 33035 - 19968: jis0212<<14 | 0x35<<7 | 0x08, - 33046 - 19968: jis0212<<14 | 0x35<<7 | 0x09, - 33047 - 19968: jis0212<<14 | 0x35<<7 | 0x0A, - 33048 - 19968: jis0212<<14 | 0x35<<7 | 0x0B, - 33050 - 19968: jis0208<<14 | 0x14<<7 | 0x32, - 33051 - 19968: jis0208<<14 | 0x45<<7 | 0x59, - 33052 - 19968: jis0212<<14 | 0x35<<7 | 0x0C, - 33054 - 19968: jis0212<<14 | 0x35<<7 | 0x0D, - 33056 - 19968: jis0212<<14 | 0x35<<7 | 0x0E, - 33059 - 19968: jis0208<<14 | 0x45<<7 | 0x5B, - 33060 - 19968: jis0212<<14 | 0x35<<7 | 0x0F, - 33063 - 19968: jis0212<<14 | 0x35<<7 | 0x10, - 33065 - 19968: jis0208<<14 | 0x45<<7 | 0x5A, - 33068 - 19968: jis0212<<14 | 0x35<<7 | 0x11, - 33071 - 19968: jis0208<<14 | 0x45<<7 | 0x5C, - 33072 - 19968: jis0212<<14 | 0x35<<7 | 0x12, - 33073 - 19968: jis0208<<14 | 0x22<<7 | 0x05, - 33075 - 19968: jis0208<<14 | 0x26<<7 | 0x1D, - 33077 - 19968: jis0212<<14 | 0x35<<7 | 0x13, - 33081 - 19968: jis0208<<14 | 0x23<<7 | 0x10, - 33082 - 19968: jis0212<<14 | 0x35<<7 | 0x14, - 33084 - 19968: jis0212<<14 | 0x35<<7 | 0x15, - 33086 - 19968: jis0208<<14 | 0x46<<7 | 0x02, - 33093 - 19968: jis0212<<14 | 0x35<<7 | 0x16, - 33094 - 19968: jis0208<<14 | 0x46<<7 | 0x01, - 33095 - 19968: jis0212<<14 | 0x35<<7 | 0x17, - 33098 - 19968: jis0212<<14 | 0x35<<7 | 0x18, - 33099 - 19968: jis0208<<14 | 0x45<<7 | 0x5D, - 33100 - 19968: jis0212<<14 | 0x35<<7 | 0x19, - 33102 - 19968: jis0208<<14 | 0x1E<<7 | 0x34, - 33104 - 19968: jis0208<<14 | 0x28<<7 | 0x44, - 33105 - 19968: jis0208<<14 | 0x46<<7 | 0x04, - 33106 - 19968: jis0212<<14 | 0x35<<7 | 0x1A, - 33107 - 19968: jis0208<<14 | 0x46<<7 | 0x03, - 33108 - 19968: jis0208<<14 | 0x18<<7 | 0x2F, - 33109 - 19968: jis0208<<14 | 0x2E<<7 | 0x32, - 33111 - 19968: jis0212<<14 | 0x35<<7 | 0x1B, - 33119 - 19968: jis0208<<14 | 0x46<<7 | 0x14, - 33120 - 19968: jis0212<<14 | 0x35<<7 | 0x1C, - 33121 - 19968: jis0212<<14 | 0x35<<7 | 0x1D, - 33125 - 19968: jis0208<<14 | 0x46<<7 | 0x08, - 33126 - 19968: jis0208<<14 | 0x46<<7 | 0x09, - 33127 - 19968: jis0212<<14 | 0x35<<7 | 0x1E, - 33128 - 19968: jis0212<<14 | 0x35<<7 | 0x1F, - 33129 - 19968: jis0212<<14 | 0x35<<7 | 0x20, - 33131 - 19968: jis0208<<14 | 0x1B<<7 | 0x4F, - 33133 - 19968: jis0212<<14 | 0x35<<7 | 0x21, - 33134 - 19968: jis0208<<14 | 0x46<<7 | 0x07, - 33135 - 19968: jis0212<<14 | 0x35<<7 | 0x22, - 33136 - 19968: jis0208<<14 | 0x18<<7 | 0x57, - 33137 - 19968: jis0208<<14 | 0x46<<7 | 0x06, - 33140 - 19968: jis0208<<14 | 0x46<<7 | 0x0A, - 33143 - 19968: jis0212<<14 | 0x35<<7 | 0x23, - 33144 - 19968: jis0208<<14 | 0x23<<7 | 0x11, - 33145 - 19968: jis0208<<14 | 0x29<<7 | 0x01, - 33146 - 19968: jis0208<<14 | 0x20<<7 | 0x02, - 33151 - 19968: jis0208<<14 | 0x21<<7 | 0x3B, - 33152 - 19968: jis0208<<14 | 0x46<<7 | 0x0E, - 33153 - 19968: jis0212<<14 | 0x35<<7 | 0x24, - 33154 - 19968: jis0208<<14 | 0x46<<7 | 0x0F, - 33155 - 19968: jis0208<<14 | 0x46<<7 | 0x0B, - 33156 - 19968: jis0212<<14 | 0x35<<7 | 0x26, - 33157 - 19968: jis0212<<14 | 0x35<<7 | 0x27, - 33158 - 19968: jis0212<<14 | 0x35<<7 | 0x28, - 33160 - 19968: jis0208<<14 | 0x46<<7 | 0x0C, - 33162 - 19968: jis0208<<14 | 0x46<<7 | 0x0D, - 33163 - 19968: jis0212<<14 | 0x35<<7 | 0x29, - 33166 - 19968: jis0212<<14 | 0x35<<7 | 0x2A, - 33167 - 19968: jis0208<<14 | 0x18<<7 | 0x30, - 33168 - 19968: jis0212<<14 | 0x35<<7 | 0x25, - 33171 - 19968: jis0208<<14 | 0x46<<7 | 0x15, - 33173 - 19968: jis0208<<14 | 0x46<<7 | 0x11, - 33174 - 19968: jis0212<<14 | 0x35<<7 | 0x2B, - 33176 - 19968: jis0212<<14 | 0x35<<7 | 0x2C, - 33178 - 19968: jis0208<<14 | 0x28<<7 | 0x45, - 33179 - 19968: jis0212<<14 | 0x35<<7 | 0x2D, - 33180 - 19968: jis0208<<14 | 0x2A<<7 | 0x4B, - 33181 - 19968: jis0208<<14 | 0x28<<7 | 0x07, - 33182 - 19968: jis0212<<14 | 0x35<<7 | 0x2E, - 33184 - 19968: jis0208<<14 | 0x46<<7 | 0x10, - 33186 - 19968: jis0212<<14 | 0x35<<7 | 0x2F, - 33187 - 19968: jis0208<<14 | 0x46<<7 | 0x13, - 33188 - 19968: jis0208<<14 | 0x46<<7 | 0x12, - 33192 - 19968: jis0208<<14 | 0x2A<<7 | 0x23, - 33193 - 19968: jis0208<<14 | 0x46<<7 | 0x16, - 33198 - 19968: jis0212<<14 | 0x35<<7 | 0x30, - 33200 - 19968: jis0208<<14 | 0x46<<7 | 0x17, - 33202 - 19968: jis0212<<14 | 0x35<<7 | 0x31, - 33203 - 19968: jis0208<<14 | 0x20<<7 | 0x16, - 33204 - 19968: jis0212<<14 | 0x35<<7 | 0x32, - 33205 - 19968: jis0208<<14 | 0x46<<7 | 0x18, - 33208 - 19968: jis0208<<14 | 0x46<<7 | 0x1A, - 33210 - 19968: jis0208<<14 | 0x46<<7 | 0x1E, - 33211 - 19968: jis0212<<14 | 0x35<<7 | 0x33, - 33213 - 19968: jis0208<<14 | 0x46<<7 | 0x1B, - 33214 - 19968: jis0208<<14 | 0x46<<7 | 0x19, - 33215 - 19968: jis0208<<14 | 0x26<<7 | 0x1E, - 33216 - 19968: jis0208<<14 | 0x46<<7 | 0x1C, - 33218 - 19968: jis0208<<14 | 0x46<<7 | 0x1D, - 33219 - 19968: jis0212<<14 | 0x35<<7 | 0x35, - 33221 - 19968: jis0212<<14 | 0x35<<7 | 0x36, - 33222 - 19968: jis0208<<14 | 0x11<<7 | 0x11, - 33224 - 19968: jis0208<<14 | 0x46<<7 | 0x24, - 33225 - 19968: jis0208<<14 | 0x46<<7 | 0x1F, - 33226 - 19968: jis0212<<14 | 0x35<<7 | 0x37, - 33227 - 19968: jis0212<<14 | 0x35<<7 | 0x34, - 33229 - 19968: jis0208<<14 | 0x46<<7 | 0x20, - 33230 - 19968: jis0212<<14 | 0x35<<7 | 0x38, - 33231 - 19968: jis0212<<14 | 0x35<<7 | 0x39, - 33233 - 19968: jis0208<<14 | 0x46<<7 | 0x21, - 33235 - 19968: jis0208<<14 | 0x21<<7 | 0x00, - 33237 - 19968: jis0212<<14 | 0x35<<7 | 0x3A, - 33239 - 19968: jis0212<<14 | 0x35<<7 | 0x3B, - 33240 - 19968: jis0208<<14 | 0x46<<7 | 0x23, - 33241 - 19968: jis0208<<14 | 0x46<<7 | 0x22, - 33242 - 19968: jis0208<<14 | 0x46<<7 | 0x25, - 33243 - 19968: jis0212<<14 | 0x35<<7 | 0x3C, - 33245 - 19968: jis0212<<14 | 0x35<<7 | 0x3D, - 33246 - 19968: jis0212<<14 | 0x35<<7 | 0x3E, - 33247 - 19968: jis0208<<14 | 0x46<<7 | 0x26, - 33248 - 19968: jis0208<<14 | 0x46<<7 | 0x27, - 33249 - 19968: jis0212<<14 | 0x35<<7 | 0x3F, - 33251 - 19968: jis0208<<14 | 0x1E<<7 | 0x22, - 33252 - 19968: jis0212<<14 | 0x35<<7 | 0x40, - 33253 - 19968: jis0208<<14 | 0x11<<7 | 0x48, - 33255 - 19968: jis0208<<14 | 0x46<<7 | 0x28, - 33256 - 19968: jis0208<<14 | 0x2D<<7 | 0x36, - 33258 - 19968: jis0208<<14 | 0x1B<<7 | 0x0A, - 33259 - 19968: jis0212<<14 | 0x35<<7 | 0x41, - 33260 - 19968: jis0212<<14 | 0x35<<7 | 0x42, - 33261 - 19968: jis0208<<14 | 0x1C<<7 | 0x0C, - 33264 - 19968: jis0212<<14 | 0x35<<7 | 0x43, - 33265 - 19968: jis0212<<14 | 0x35<<7 | 0x44, - 33266 - 19968: jis0212<<14 | 0x35<<7 | 0x45, - 33267 - 19968: jis0208<<14 | 0x1A<<7 | 0x49, - 33268 - 19968: jis0208<<14 | 0x22<<7 | 0x36, - 33269 - 19968: jis0212<<14 | 0x35<<7 | 0x46, - 33270 - 19968: jis0212<<14 | 0x35<<7 | 0x47, - 33272 - 19968: jis0212<<14 | 0x35<<7 | 0x48, - 33273 - 19968: jis0212<<14 | 0x35<<7 | 0x49, - 33274 - 19968: jis0208<<14 | 0x46<<7 | 0x29, - 33275 - 19968: jis0208<<14 | 0x46<<7 | 0x2A, - 33276 - 19968: jis0208<<14 | 0x10<<7 | 0x10, - 33277 - 19968: jis0212<<14 | 0x35<<7 | 0x4A, - 33278 - 19968: jis0208<<14 | 0x46<<7 | 0x2B, - 33279 - 19968: jis0212<<14 | 0x35<<7 | 0x4B, - 33280 - 19968: jis0212<<14 | 0x35<<7 | 0x4C, - 33281 - 19968: jis0208<<14 | 0x46<<7 | 0x2C, - 33282 - 19968: jis0208<<14 | 0x46<<7 | 0x2D, - 33283 - 19968: jis0212<<14 | 0x35<<7 | 0x4D, - 33285 - 19968: jis0208<<14 | 0x46<<7 | 0x2E, - 33287 - 19968: jis0208<<14 | 0x46<<7 | 0x2F, - 33288 - 19968: jis0208<<14 | 0x15<<7 | 0x1C, - 33289 - 19968: jis0208<<14 | 0x39<<7 | 0x09, - 33290 - 19968: jis0208<<14 | 0x46<<7 | 0x30, - 33292 - 19968: jis0208<<14 | 0x1F<<7 | 0x44, - 33293 - 19968: jis0208<<14 | 0x46<<7 | 0x31, - 33294 - 19968: jis0208<<14 | 0x1B<<7 | 0x2A, - 33295 - 19968: jis0212<<14 | 0x35<<7 | 0x4E, - 33296 - 19968: jis0208<<14 | 0x46<<7 | 0x32, - 33298 - 19968: jis0208<<14 | 0x2F<<7 | 0x0F, - 33299 - 19968: jis0212<<14 | 0x35<<7 | 0x4F, - 33300 - 19968: jis0212<<14 | 0x35<<7 | 0x50, - 33302 - 19968: jis0208<<14 | 0x46<<7 | 0x33, - 33303 - 19968: jis0208<<14 | 0x29<<7 | 0x3D, - 33304 - 19968: jis0208<<14 | 0x13<<7 | 0x3B, - 33305 - 19968: jis0212<<14 | 0x35<<7 | 0x51, - 33306 - 19968: jis0212<<14 | 0x35<<7 | 0x52, - 33307 - 19968: jis0208<<14 | 0x20<<7 | 0x03, - 33308 - 19968: jis0208<<14 | 0x1C<<7 | 0x37, - 33309 - 19968: jis0212<<14 | 0x35<<7 | 0x53, - 33310 - 19968: jis0208<<14 | 0x28<<7 | 0x50, - 33311 - 19968: jis0208<<14 | 0x1C<<7 | 0x0D, - 33313 - 19968: jis0212<<14 | 0x35<<7 | 0x54, - 33314 - 19968: jis0212<<14 | 0x35<<7 | 0x55, - 33320 - 19968: jis0212<<14 | 0x35<<7 | 0x56, - 33321 - 19968: jis0208<<14 | 0x46<<7 | 0x34, - 33322 - 19968: jis0208<<14 | 0x18<<7 | 0x31, - 33323 - 19968: jis0208<<14 | 0x46<<7 | 0x35, - 33324 - 19968: jis0208<<14 | 0x27<<7 | 0x2B, - 33326 - 19968: jis0208<<14 | 0x46<<7 | 0x43, - 33330 - 19968: jis0212<<14 | 0x35<<7 | 0x57, - 33331 - 19968: jis0208<<14 | 0x46<<7 | 0x37, - 33332 - 19968: jis0212<<14 | 0x35<<7 | 0x58, - 33333 - 19968: jis0208<<14 | 0x21<<7 | 0x28, - 33334 - 19968: jis0208<<14 | 0x26<<7 | 0x54, - 33335 - 19968: jis0208<<14 | 0x17<<7 | 0x1E, - 33336 - 19968: jis0208<<14 | 0x46<<7 | 0x36, - 33337 - 19968: jis0208<<14 | 0x20<<7 | 0x04, - 33338 - 19968: jis0212<<14 | 0x35<<7 | 0x59, - 33344 - 19968: jis0208<<14 | 0x46<<7 | 0x38, - 33347 - 19968: jis0212<<14 | 0x35<<7 | 0x5A, - 33348 - 19968: jis0212<<14 | 0x35<<7 | 0x5B, - 33349 - 19968: jis0212<<14 | 0x35<<7 | 0x5C, - 33350 - 19968: jis0212<<14 | 0x35<<7 | 0x5D, - 33351 - 19968: jis0208<<14 | 0x23<<7 | 0x59, - 33355 - 19968: jis0212<<14 | 0x36<<7 | 0x00, - 33358 - 19968: jis0212<<14 | 0x36<<7 | 0x01, - 33359 - 19968: jis0212<<14 | 0x36<<7 | 0x02, - 33361 - 19968: jis0212<<14 | 0x36<<7 | 0x03, - 33366 - 19968: jis0212<<14 | 0x36<<7 | 0x04, - 33368 - 19968: jis0208<<14 | 0x46<<7 | 0x3A, - 33369 - 19968: jis0208<<14 | 0x46<<7 | 0x39, - 33370 - 19968: jis0208<<14 | 0x46<<7 | 0x3C, - 33372 - 19968: jis0212<<14 | 0x36<<7 | 0x05, - 33373 - 19968: jis0208<<14 | 0x46<<7 | 0x3B, - 33375 - 19968: jis0208<<14 | 0x46<<7 | 0x3D, - 33376 - 19968: jis0212<<14 | 0x36<<7 | 0x06, - 33378 - 19968: jis0208<<14 | 0x46<<7 | 0x3F, - 33379 - 19968: jis0212<<14 | 0x36<<7 | 0x07, - 33380 - 19968: jis0208<<14 | 0x46<<7 | 0x3E, - 33382 - 19968: jis0208<<14 | 0x13<<7 | 0x2E, - 33383 - 19968: jis0212<<14 | 0x36<<7 | 0x08, - 33384 - 19968: jis0208<<14 | 0x46<<7 | 0x40, - 33386 - 19968: jis0208<<14 | 0x46<<7 | 0x41, - 33387 - 19968: jis0208<<14 | 0x46<<7 | 0x42, - 33389 - 19968: jis0212<<14 | 0x36<<7 | 0x09, - 33390 - 19968: jis0208<<14 | 0x19<<7 | 0x10, - 33391 - 19968: jis0208<<14 | 0x2D<<7 | 0x28, - 33393 - 19968: jis0208<<14 | 0x46<<7 | 0x44, - 33394 - 19968: jis0208<<14 | 0x1E<<7 | 0x06, - 33396 - 19968: jis0212<<14 | 0x36<<7 | 0x0A, - 33398 - 19968: jis0208<<14 | 0x10<<7 | 0x4F, - 33399 - 19968: jis0208<<14 | 0x46<<7 | 0x45, - 33400 - 19968: jis0208<<14 | 0x46<<7 | 0x46, - 33403 - 19968: jis0212<<14 | 0x36<<7 | 0x0B, - 33405 - 19968: jis0212<<14 | 0x36<<7 | 0x0C, - 33406 - 19968: jis0208<<14 | 0x46<<7 | 0x47, - 33407 - 19968: jis0212<<14 | 0x36<<7 | 0x0D, - 33408 - 19968: jis0212<<14 | 0x36<<7 | 0x0E, - 33409 - 19968: jis0212<<14 | 0x36<<7 | 0x0F, - 33411 - 19968: jis0212<<14 | 0x36<<7 | 0x10, - 33412 - 19968: jis0212<<14 | 0x36<<7 | 0x11, - 33415 - 19968: jis0212<<14 | 0x36<<7 | 0x12, - 33417 - 19968: jis0212<<14 | 0x36<<7 | 0x13, - 33418 - 19968: jis0212<<14 | 0x36<<7 | 0x14, - 33419 - 19968: jis0208<<14 | 0x0F<<7 | 0x51, - 33421 - 19968: jis0208<<14 | 0x46<<7 | 0x48, - 33422 - 19968: jis0212<<14 | 0x36<<7 | 0x15, - 33425 - 19968: jis0212<<14 | 0x36<<7 | 0x16, - 33426 - 19968: jis0208<<14 | 0x46<<7 | 0x49, - 33428 - 19968: jis0212<<14 | 0x36<<7 | 0x17, - 33430 - 19968: jis0212<<14 | 0x36<<7 | 0x18, - 33432 - 19968: jis0212<<14 | 0x36<<7 | 0x19, - 33433 - 19968: jis0208<<14 | 0x28<<7 | 0x46, - 33434 - 19968: jis0212<<14 | 0x36<<7 | 0x1A, - 33435 - 19968: jis0212<<14 | 0x36<<7 | 0x1B, - 33437 - 19968: jis0208<<14 | 0x1B<<7 | 0x26, - 33439 - 19968: jis0208<<14 | 0x46<<7 | 0x4B, - 33440 - 19968: jis0212<<14 | 0x36<<7 | 0x1C, - 33441 - 19968: jis0212<<14 | 0x36<<7 | 0x1D, - 33443 - 19968: jis0212<<14 | 0x36<<7 | 0x1E, - 33444 - 19968: jis0212<<14 | 0x36<<7 | 0x1F, - 33445 - 19968: jis0208<<14 | 0x12<<7 | 0x08, - 33446 - 19968: jis0208<<14 | 0x0F<<7 | 0x11, - 33447 - 19968: jis0212<<14 | 0x36<<7 | 0x20, - 33448 - 19968: jis0212<<14 | 0x36<<7 | 0x21, - 33449 - 19968: jis0212<<14 | 0x36<<7 | 0x22, - 33450 - 19968: jis0212<<14 | 0x36<<7 | 0x23, - 33451 - 19968: jis0208<<14 | 0x46<<7 | 0x4A, - 33452 - 19968: jis0208<<14 | 0x46<<7 | 0x4D, - 33453 - 19968: jis0208<<14 | 0x26<<7 | 0x2D, - 33454 - 19968: jis0212<<14 | 0x36<<7 | 0x24, - 33455 - 19968: jis0208<<14 | 0x1E<<7 | 0x23, - 33456 - 19968: jis0212<<14 | 0x36<<7 | 0x25, - 33457 - 19968: jis0208<<14 | 0x11<<7 | 0x35, - 33458 - 19968: jis0212<<14 | 0x36<<7 | 0x26, - 33459 - 19968: jis0208<<14 | 0x2A<<7 | 0x06, - 33460 - 19968: jis0212<<14 | 0x36<<7 | 0x27, - 33463 - 19968: jis0212<<14 | 0x36<<7 | 0x28, - 33464 - 19968: jis0208<<14 | 0x16<<7 | 0x3C, - 33465 - 19968: jis0208<<14 | 0x15<<7 | 0x3B, - 33466 - 19968: jis0212<<14 | 0x36<<7 | 0x29, - 33467 - 19968: jis0208<<14 | 0x46<<7 | 0x4C, - 33468 - 19968: jis0212<<14 | 0x36<<7 | 0x2A, - 33469 - 19968: jis0208<<14 | 0x11<<7 | 0x49, - 33470 - 19968: jis0212<<14 | 0x36<<7 | 0x2B, - 33471 - 19968: jis0212<<14 | 0x36<<7 | 0x2C, - 33477 - 19968: jis0208<<14 | 0x13<<7 | 0x02, - 33478 - 19968: jis0212<<14 | 0x36<<7 | 0x2D, - 33488 - 19968: jis0212<<14 | 0x36<<7 | 0x2E, - 33489 - 19968: jis0208<<14 | 0x10<<7 | 0x50, - 33490 - 19968: jis0208<<14 | 0x46<<7 | 0x51, - 33491 - 19968: jis0208<<14 | 0x2D<<7 | 0x49, - 33492 - 19968: jis0208<<14 | 0x21<<7 | 0x3C, - 33493 - 19968: jis0212<<14 | 0x36<<7 | 0x2F, - 33495 - 19968: jis0208<<14 | 0x28<<7 | 0x23, - 33497 - 19968: jis0208<<14 | 0x46<<7 | 0x5D, - 33498 - 19968: jis0212<<14 | 0x36<<7 | 0x30, - 33499 - 19968: jis0208<<14 | 0x11<<7 | 0x36, - 33500 - 19968: jis0208<<14 | 0x46<<7 | 0x5B, - 33502 - 19968: jis0208<<14 | 0x46<<7 | 0x59, - 33503 - 19968: jis0208<<14 | 0x46<<7 | 0x50, - 33504 - 19968: jis0212<<14 | 0x36<<7 | 0x31, - 33505 - 19968: jis0208<<14 | 0x46<<7 | 0x4E, - 33506 - 19968: jis0212<<14 | 0x36<<7 | 0x32, - 33507 - 19968: jis0208<<14 | 0x46<<7 | 0x4F, - 33508 - 19968: jis0212<<14 | 0x36<<7 | 0x33, - 33509 - 19968: jis0208<<14 | 0x1B<<7 | 0x42, - 33510 - 19968: jis0208<<14 | 0x15<<7 | 0x4B, - 33511 - 19968: jis0208<<14 | 0x22<<7 | 0x56, - 33512 - 19968: jis0212<<14 | 0x36<<7 | 0x34, - 33514 - 19968: jis0212<<14 | 0x36<<7 | 0x35, - 33515 - 19968: jis0208<<14 | 0x25<<7 | 0x30, - 33517 - 19968: jis0212<<14 | 0x36<<7 | 0x36, - 33519 - 19968: jis0212<<14 | 0x36<<7 | 0x37, - 33521 - 19968: jis0208<<14 | 0x10<<7 | 0x30, - 33523 - 19968: jis0208<<14 | 0x46<<7 | 0x53, - 33524 - 19968: jis0208<<14 | 0x46<<7 | 0x52, - 33526 - 19968: jis0212<<14 | 0x36<<7 | 0x38, - 33527 - 19968: jis0212<<14 | 0x36<<7 | 0x39, - 33529 - 19968: jis0208<<14 | 0x46<<7 | 0x58, - 33530 - 19968: jis0208<<14 | 0x46<<7 | 0x54, - 33531 - 19968: jis0208<<14 | 0x46<<7 | 0x57, - 33533 - 19968: jis0212<<14 | 0x36<<7 | 0x3A, - 33534 - 19968: jis0212<<14 | 0x36<<7 | 0x3B, - 33536 - 19968: jis0212<<14 | 0x36<<7 | 0x3C, - 33537 - 19968: jis0208<<14 | 0x5A<<7 | 0x36, - 33538 - 19968: jis0208<<14 | 0x2B<<7 | 0x2F, - 33539 - 19968: jis0208<<14 | 0x46<<7 | 0x56, - 33540 - 19968: jis0208<<14 | 0x11<<7 | 0x37, - 33541 - 19968: jis0208<<14 | 0x12<<7 | 0x5C, - 33542 - 19968: jis0208<<14 | 0x46<<7 | 0x5A, - 33543 - 19968: jis0212<<14 | 0x36<<7 | 0x3E, - 33544 - 19968: jis0212<<14 | 0x36<<7 | 0x3F, - 33545 - 19968: jis0208<<14 | 0x46<<7 | 0x5C, - 33546 - 19968: jis0212<<14 | 0x36<<7 | 0x40, - 33547 - 19968: jis0212<<14 | 0x36<<7 | 0x41, - 33550 - 19968: jis0208<<14 | 0x16<<7 | 0x33, - 33558 - 19968: jis0208<<14 | 0x47<<7 | 0x02, - 33559 - 19968: jis0208<<14 | 0x47<<7 | 0x0B, - 33560 - 19968: jis0208<<14 | 0x47<<7 | 0x0C, - 33563 - 19968: jis0212<<14 | 0x36<<7 | 0x43, - 33564 - 19968: jis0208<<14 | 0x0F<<7 | 0x0A, - 33565 - 19968: jis0212<<14 | 0x36<<7 | 0x44, - 33566 - 19968: jis0212<<14 | 0x36<<7 | 0x45, - 33567 - 19968: jis0212<<14 | 0x36<<7 | 0x46, - 33569 - 19968: jis0212<<14 | 0x36<<7 | 0x47, - 33570 - 19968: jis0212<<14 | 0x36<<7 | 0x48, - 33571 - 19968: jis0208<<14 | 0x47<<7 | 0x13, - 33576 - 19968: jis0208<<14 | 0x0F<<7 | 0x50, - 33579 - 19968: jis0208<<14 | 0x47<<7 | 0x0A, - 33580 - 19968: jis0212<<14 | 0x36<<7 | 0x49, - 33581 - 19968: jis0212<<14 | 0x36<<7 | 0x4A, - 33582 - 19968: jis0212<<14 | 0x36<<7 | 0x4B, - 33583 - 19968: jis0208<<14 | 0x47<<7 | 0x09, - 33584 - 19968: jis0212<<14 | 0x36<<7 | 0x4C, - 33585 - 19968: jis0208<<14 | 0x47<<7 | 0x04, - 33586 - 19968: jis0208<<14 | 0x47<<7 | 0x03, - 33587 - 19968: jis0212<<14 | 0x36<<7 | 0x4D, - 33588 - 19968: jis0208<<14 | 0x47<<7 | 0x01, - 33589 - 19968: jis0208<<14 | 0x47<<7 | 0x00, - 33590 - 19968: jis0208<<14 | 0x22<<7 | 0x42, - 33591 - 19968: jis0212<<14 | 0x36<<7 | 0x4E, - 33592 - 19968: jis0208<<14 | 0x21<<7 | 0x5A, - 33593 - 19968: jis0208<<14 | 0x47<<7 | 0x06, - 33594 - 19968: jis0212<<14 | 0x36<<7 | 0x4F, - 33596 - 19968: jis0212<<14 | 0x36<<7 | 0x50, - 33597 - 19968: jis0212<<14 | 0x36<<7 | 0x51, - 33600 - 19968: jis0208<<14 | 0x47<<7 | 0x05, - 33602 - 19968: jis0212<<14 | 0x36<<7 | 0x52, - 33603 - 19968: jis0212<<14 | 0x36<<7 | 0x53, - 33604 - 19968: jis0212<<14 | 0x36<<7 | 0x54, - 33605 - 19968: jis0208<<14 | 0x47<<7 | 0x08, - 33607 - 19968: jis0212<<14 | 0x36<<7 | 0x55, - 33609 - 19968: jis0208<<14 | 0x20<<7 | 0x4F, - 33610 - 19968: jis0208<<14 | 0x16<<7 | 0x34, - 33613 - 19968: jis0212<<14 | 0x36<<7 | 0x56, - 33614 - 19968: jis0212<<14 | 0x36<<7 | 0x57, - 33615 - 19968: jis0208<<14 | 0x10<<7 | 0x20, - 33616 - 19968: jis0208<<14 | 0x47<<7 | 0x07, - 33617 - 19968: jis0212<<14 | 0x36<<7 | 0x58, - 33618 - 19968: jis0208<<14 | 0x18<<7 | 0x32, - 33619 - 19968: jis0212<<14 | 0x37<<7 | 0x1D, - 33620 - 19968: jis0212<<14 | 0x36<<7 | 0x42, - 33621 - 19968: jis0212<<14 | 0x36<<7 | 0x59, - 33622 - 19968: jis0212<<14 | 0x36<<7 | 0x5A, - 33623 - 19968: jis0212<<14 | 0x36<<7 | 0x5B, - 33624 - 19968: jis0208<<14 | 0x20<<7 | 0x50, - 33634 - 19968: jis0208<<14 | 0x5A<<7 | 0x37, - 33648 - 19968: jis0212<<14 | 0x36<<7 | 0x5C, - 33651 - 19968: jis0208<<14 | 0x47<<7 | 0x19, - 33653 - 19968: jis0208<<14 | 0x47<<7 | 0x1A, - 33655 - 19968: jis0208<<14 | 0x11<<7 | 0x38, - 33656 - 19968: jis0212<<14 | 0x36<<7 | 0x5D, - 33659 - 19968: jis0208<<14 | 0x11<<7 | 0x0D, - 33660 - 19968: jis0208<<14 | 0x47<<7 | 0x17, - 33661 - 19968: jis0212<<14 | 0x37<<7 | 0x00, - 33663 - 19968: jis0208<<14 | 0x5A<<7 | 0x38, - 33664 - 19968: jis0212<<14 | 0x37<<7 | 0x02, - 33666 - 19968: jis0212<<14 | 0x37<<7 | 0x03, - 33668 - 19968: jis0212<<14 | 0x37<<7 | 0x04, - 33669 - 19968: jis0208<<14 | 0x47<<7 | 0x0D, - 33670 - 19968: jis0212<<14 | 0x37<<7 | 0x05, - 33671 - 19968: jis0208<<14 | 0x47<<7 | 0x15, - 33673 - 19968: jis0208<<14 | 0x47<<7 | 0x1C, - 33674 - 19968: jis0208<<14 | 0x47<<7 | 0x16, - 33677 - 19968: jis0212<<14 | 0x37<<7 | 0x06, - 33678 - 19968: jis0208<<14 | 0x47<<7 | 0x14, - 33682 - 19968: jis0212<<14 | 0x37<<7 | 0x07, - 33683 - 19968: jis0208<<14 | 0x46<<7 | 0x55, - 33684 - 19968: jis0212<<14 | 0x37<<7 | 0x08, - 33685 - 19968: jis0212<<14 | 0x37<<7 | 0x09, - 33686 - 19968: jis0208<<14 | 0x47<<7 | 0x12, - 33688 - 19968: jis0212<<14 | 0x37<<7 | 0x0A, - 33689 - 19968: jis0212<<14 | 0x37<<7 | 0x0B, - 33690 - 19968: jis0208<<14 | 0x47<<7 | 0x0E, - 33691 - 19968: jis0212<<14 | 0x37<<7 | 0x0C, - 33692 - 19968: jis0212<<14 | 0x37<<7 | 0x0D, - 33693 - 19968: jis0212<<14 | 0x37<<7 | 0x0E, - 33694 - 19968: jis0208<<14 | 0x13<<7 | 0x2F, - 33695 - 19968: jis0208<<14 | 0x47<<7 | 0x10, - 33696 - 19968: jis0208<<14 | 0x47<<7 | 0x1B, - 33698 - 19968: jis0208<<14 | 0x47<<7 | 0x11, - 33702 - 19968: jis0212<<14 | 0x37<<7 | 0x0F, - 33703 - 19968: jis0212<<14 | 0x37<<7 | 0x10, - 33704 - 19968: jis0208<<14 | 0x47<<7 | 0x1D, - 33705 - 19968: jis0212<<14 | 0x37<<7 | 0x11, - 33706 - 19968: jis0208<<14 | 0x47<<7 | 0x0F, - 33707 - 19968: jis0208<<14 | 0x26<<7 | 0x5B, - 33708 - 19968: jis0212<<14 | 0x37<<7 | 0x12, - 33709 - 19968: jis0212<<14 | 0x37<<7 | 0x2B, - 33713 - 19968: jis0208<<14 | 0x2C<<7 | 0x48, - 33717 - 19968: jis0208<<14 | 0x47<<7 | 0x18, - 33725 - 19968: jis0208<<14 | 0x47<<7 | 0x2E, - 33726 - 19968: jis0212<<14 | 0x37<<7 | 0x13, - 33727 - 19968: jis0212<<14 | 0x37<<7 | 0x14, - 33728 - 19968: jis0212<<14 | 0x37<<7 | 0x15, - 33729 - 19968: jis0208<<14 | 0x47<<7 | 0x26, - 33733 - 19968: jis0208<<14 | 0x1E<<7 | 0x5A, - 33735 - 19968: jis0208<<14 | 0x5A<<7 | 0x39, - 33737 - 19968: jis0212<<14 | 0x37<<7 | 0x17, - 33738 - 19968: jis0208<<14 | 0x14<<7 | 0x25, - 33740 - 19968: jis0208<<14 | 0x15<<7 | 0x3C, - 33742 - 19968: jis0208<<14 | 0x47<<7 | 0x21, - 33743 - 19968: jis0212<<14 | 0x37<<7 | 0x18, - 33744 - 19968: jis0212<<14 | 0x37<<7 | 0x19, - 33745 - 19968: jis0212<<14 | 0x37<<7 | 0x1A, - 33747 - 19968: jis0208<<14 | 0x11<<7 | 0x3A, - 33748 - 19968: jis0212<<14 | 0x37<<7 | 0x1B, - 33750 - 19968: jis0208<<14 | 0x1D<<7 | 0x33, - 33752 - 19968: jis0208<<14 | 0x47<<7 | 0x24, - 33756 - 19968: jis0208<<14 | 0x19<<7 | 0x39, - 33757 - 19968: jis0212<<14 | 0x37<<7 | 0x1C, - 33759 - 19968: jis0208<<14 | 0x24<<7 | 0x30, - 33760 - 19968: jis0208<<14 | 0x47<<7 | 0x29, - 33768 - 19968: jis0212<<14 | 0x37<<7 | 0x1E, - 33769 - 19968: jis0208<<14 | 0x29<<7 | 0x4D, - 33770 - 19968: jis0212<<14 | 0x37<<7 | 0x1F, - 33771 - 19968: jis0208<<14 | 0x47<<7 | 0x20, - 33775 - 19968: jis0208<<14 | 0x11<<7 | 0x39, - 33776 - 19968: jis0208<<14 | 0x17<<7 | 0x35, - 33777 - 19968: jis0208<<14 | 0x28<<7 | 0x08, - 33778 - 19968: jis0208<<14 | 0x47<<7 | 0x2A, - 33780 - 19968: jis0208<<14 | 0x47<<7 | 0x1E, - 33782 - 19968: jis0208<<14 | 0x5A<<7 | 0x3A, - 33783 - 19968: jis0208<<14 | 0x47<<7 | 0x27, - 33784 - 19968: jis0212<<14 | 0x37<<7 | 0x21, - 33785 - 19968: jis0212<<14 | 0x37<<7 | 0x22, - 33787 - 19968: jis0208<<14 | 0x47<<7 | 0x31, - 33788 - 19968: jis0212<<14 | 0x37<<7 | 0x23, - 33789 - 19968: jis0208<<14 | 0x47<<7 | 0x22, - 33793 - 19968: jis0212<<14 | 0x37<<7 | 0x24, - 33795 - 19968: jis0208<<14 | 0x47<<7 | 0x23, - 33796 - 19968: jis0208<<14 | 0x25<<7 | 0x19, - 33798 - 19968: jis0212<<14 | 0x37<<7 | 0x25, - 33799 - 19968: jis0208<<14 | 0x47<<7 | 0x28, - 33802 - 19968: jis0212<<14 | 0x37<<7 | 0x26, - 33803 - 19968: jis0208<<14 | 0x47<<7 | 0x25, - 33804 - 19968: jis0208<<14 | 0x2A<<7 | 0x07, - 33805 - 19968: jis0208<<14 | 0x47<<7 | 0x2B, - 33806 - 19968: jis0208<<14 | 0x0F<<7 | 0x3F, - 33807 - 19968: jis0212<<14 | 0x37<<7 | 0x27, - 33809 - 19968: jis0212<<14 | 0x37<<7 | 0x28, - 33811 - 19968: jis0208<<14 | 0x47<<7 | 0x1F, - 33813 - 19968: jis0212<<14 | 0x37<<7 | 0x29, - 33817 - 19968: jis0212<<14 | 0x37<<7 | 0x2A, - 33824 - 19968: jis0208<<14 | 0x47<<7 | 0x2D, - 33826 - 19968: jis0208<<14 | 0x47<<7 | 0x2C, - 33833 - 19968: jis0208<<14 | 0x26<<7 | 0x4A, - 33834 - 19968: jis0208<<14 | 0x47<<7 | 0x33, - 33836 - 19968: jis0208<<14 | 0x47<<7 | 0x3E, - 33839 - 19968: jis0212<<14 | 0x37<<7 | 0x2C, - 33841 - 19968: jis0208<<14 | 0x12<<7 | 0x5D, - 33845 - 19968: jis0208<<14 | 0x47<<7 | 0x41, - 33848 - 19968: jis0208<<14 | 0x47<<7 | 0x2F, - 33849 - 19968: jis0212<<14 | 0x37<<7 | 0x2D, - 33852 - 19968: jis0208<<14 | 0x47<<7 | 0x34, - 33853 - 19968: jis0208<<14 | 0x2C<<7 | 0x4D, - 33861 - 19968: jis0212<<14 | 0x37<<7 | 0x2E, - 33862 - 19968: jis0208<<14 | 0x47<<7 | 0x3D, - 33863 - 19968: jis0212<<14 | 0x37<<7 | 0x2F, - 33864 - 19968: jis0208<<14 | 0x5A<<7 | 0x3B, - 33865 - 19968: jis0208<<14 | 0x2C<<7 | 0x34, - 33866 - 19968: jis0212<<14 | 0x37<<7 | 0x31, - 33869 - 19968: jis0212<<14 | 0x37<<7 | 0x32, - 33870 - 19968: jis0208<<14 | 0x2D<<7 | 0x09, - 33871 - 19968: jis0212<<14 | 0x37<<7 | 0x33, - 33873 - 19968: jis0212<<14 | 0x37<<7 | 0x34, - 33874 - 19968: jis0212<<14 | 0x37<<7 | 0x35, - 33878 - 19968: jis0212<<14 | 0x37<<7 | 0x36, - 33879 - 19968: jis0208<<14 | 0x22<<7 | 0x57, - 33880 - 19968: jis0212<<14 | 0x37<<7 | 0x37, - 33881 - 19968: jis0212<<14 | 0x37<<7 | 0x38, - 33882 - 19968: jis0212<<14 | 0x37<<7 | 0x39, - 33883 - 19968: jis0208<<14 | 0x12<<7 | 0x4A, - 33884 - 19968: jis0212<<14 | 0x37<<7 | 0x3A, - 33888 - 19968: jis0212<<14 | 0x37<<7 | 0x3B, - 33889 - 19968: jis0208<<14 | 0x28<<7 | 0x51, - 33890 - 19968: jis0208<<14 | 0x47<<7 | 0x43, - 33891 - 19968: jis0208<<14 | 0x25<<7 | 0x00, - 33892 - 19968: jis0212<<14 | 0x37<<7 | 0x3C, - 33893 - 19968: jis0212<<14 | 0x37<<7 | 0x3D, - 33894 - 19968: jis0208<<14 | 0x0F<<7 | 0x10, - 33895 - 19968: jis0212<<14 | 0x37<<7 | 0x3E, - 33897 - 19968: jis0208<<14 | 0x47<<7 | 0x3C, - 33898 - 19968: jis0212<<14 | 0x37<<7 | 0x3F, - 33899 - 19968: jis0208<<14 | 0x47<<7 | 0x38, - 33900 - 19968: jis0208<<14 | 0x20<<7 | 0x51, - 33901 - 19968: jis0208<<14 | 0x47<<7 | 0x32, - 33902 - 19968: jis0208<<14 | 0x47<<7 | 0x3A, - 33903 - 19968: jis0208<<14 | 0x47<<7 | 0x3F, - 33904 - 19968: jis0212<<14 | 0x37<<7 | 0x40, - 33905 - 19968: jis0208<<14 | 0x26<<7 | 0x0B, - 33907 - 19968: jis0212<<14 | 0x37<<7 | 0x41, - 33908 - 19968: jis0212<<14 | 0x37<<7 | 0x42, - 33909 - 19968: jis0208<<14 | 0x0F<<7 | 0x09, - 33910 - 19968: jis0212<<14 | 0x37<<7 | 0x43, - 33911 - 19968: jis0208<<14 | 0x47<<7 | 0x37, - 33912 - 19968: jis0212<<14 | 0x37<<7 | 0x44, - 33913 - 19968: jis0208<<14 | 0x47<<7 | 0x40, - 33914 - 19968: jis0208<<14 | 0x28<<7 | 0x57, - 33916 - 19968: jis0212<<14 | 0x37<<7 | 0x45, - 33917 - 19968: jis0212<<14 | 0x37<<7 | 0x46, - 33921 - 19968: jis0212<<14 | 0x37<<7 | 0x47, - 33922 - 19968: jis0208<<14 | 0x47<<7 | 0x3B, - 33924 - 19968: jis0208<<14 | 0x47<<7 | 0x36, - 33925 - 19968: jis0212<<14 | 0x37<<7 | 0x48, - 33931 - 19968: jis0208<<14 | 0x1D<<7 | 0x34, - 33936 - 19968: jis0208<<14 | 0x1C<<7 | 0x0E, - 33938 - 19968: jis0212<<14 | 0x37<<7 | 0x49, - 33939 - 19968: jis0212<<14 | 0x37<<7 | 0x4A, - 33940 - 19968: jis0208<<14 | 0x1B<<7 | 0x0B, - 33941 - 19968: jis0212<<14 | 0x37<<7 | 0x4B, - 33945 - 19968: jis0208<<14 | 0x2B<<7 | 0x37, - 33948 - 19968: jis0208<<14 | 0x28<<7 | 0x26, - 33950 - 19968: jis0212<<14 | 0x37<<7 | 0x4C, - 33951 - 19968: jis0208<<14 | 0x47<<7 | 0x46, - 33953 - 19968: jis0208<<14 | 0x47<<7 | 0x4F, - 33958 - 19968: jis0212<<14 | 0x37<<7 | 0x4D, - 33960 - 19968: jis0212<<14 | 0x37<<7 | 0x4E, - 33961 - 19968: jis0212<<14 | 0x37<<7 | 0x4F, - 33962 - 19968: jis0212<<14 | 0x37<<7 | 0x50, - 33965 - 19968: jis0208<<14 | 0x47<<7 | 0x39, - 33967 - 19968: jis0212<<14 | 0x37<<7 | 0x51, - 33969 - 19968: jis0212<<14 | 0x37<<7 | 0x52, - 33970 - 19968: jis0208<<14 | 0x12<<7 | 0x56, - 33972 - 19968: jis0208<<14 | 0x5A<<7 | 0x3C, - 33976 - 19968: jis0208<<14 | 0x1D<<7 | 0x57, - 33977 - 19968: jis0208<<14 | 0x47<<7 | 0x44, - 33978 - 19968: jis0212<<14 | 0x37<<7 | 0x54, - 33979 - 19968: jis0208<<14 | 0x47<<7 | 0x49, - 33980 - 19968: jis0208<<14 | 0x20<<7 | 0x52, - 33981 - 19968: jis0212<<14 | 0x37<<7 | 0x55, - 33982 - 19968: jis0212<<14 | 0x37<<7 | 0x56, - 33983 - 19968: jis0208<<14 | 0x47<<7 | 0x45, - 33984 - 19968: jis0212<<14 | 0x37<<7 | 0x57, - 33985 - 19968: jis0208<<14 | 0x47<<7 | 0x4C, - 33986 - 19968: jis0212<<14 | 0x37<<7 | 0x58, - 33988 - 19968: jis0208<<14 | 0x22<<7 | 0x3E, - 33990 - 19968: jis0208<<14 | 0x47<<7 | 0x4D, - 33991 - 19968: jis0212<<14 | 0x37<<7 | 0x59, - 33992 - 19968: jis0212<<14 | 0x37<<7 | 0x5A, - 33993 - 19968: jis0208<<14 | 0x2C<<7 | 0x35, - 33994 - 19968: jis0208<<14 | 0x47<<7 | 0x42, - 33995 - 19968: jis0208<<14 | 0x12<<7 | 0x17, - 33996 - 19968: jis0212<<14 | 0x37<<7 | 0x5B, - 33997 - 19968: jis0208<<14 | 0x47<<7 | 0x48, - 33999 - 19968: jis0212<<14 | 0x37<<7 | 0x5C, - 34000 - 19968: jis0208<<14 | 0x47<<7 | 0x4B, - 34001 - 19968: jis0208<<14 | 0x2B<<7 | 0x0B, - 34003 - 19968: jis0212<<14 | 0x37<<7 | 0x5D, - 34006 - 19968: jis0208<<14 | 0x47<<7 | 0x4E, - 34009 - 19968: jis0208<<14 | 0x47<<7 | 0x47, - 34010 - 19968: jis0208<<14 | 0x47<<7 | 0x4A, - 34012 - 19968: jis0208<<14 | 0x58<<7 | 0x04, - 34023 - 19968: jis0212<<14 | 0x38<<7 | 0x01, - 34026 - 19968: jis0212<<14 | 0x38<<7 | 0x02, - 34028 - 19968: jis0208<<14 | 0x2A<<7 | 0x08, - 34030 - 19968: jis0208<<14 | 0x2E<<7 | 0x00, - 34031 - 19968: jis0212<<14 | 0x38<<7 | 0x03, - 34032 - 19968: jis0212<<14 | 0x38<<7 | 0x04, - 34033 - 19968: jis0212<<14 | 0x38<<7 | 0x05, - 34034 - 19968: jis0212<<14 | 0x38<<7 | 0x06, - 34036 - 19968: jis0208<<14 | 0x47<<7 | 0x52, - 34039 - 19968: jis0212<<14 | 0x38<<7 | 0x07, - 34042 - 19968: jis0212<<14 | 0x38<<7 | 0x09, - 34043 - 19968: jis0212<<14 | 0x38<<7 | 0x0A, - 34044 - 19968: jis0208<<14 | 0x47<<7 | 0x59, - 34045 - 19968: jis0212<<14 | 0x38<<7 | 0x0B, - 34047 - 19968: jis0208<<14 | 0x47<<7 | 0x51, - 34048 - 19968: jis0208<<14 | 0x1B<<7 | 0x22, - 34050 - 19968: jis0212<<14 | 0x38<<7 | 0x0C, - 34051 - 19968: jis0212<<14 | 0x38<<7 | 0x0D, - 34054 - 19968: jis0208<<14 | 0x47<<7 | 0x30, - 34055 - 19968: jis0212<<14 | 0x38<<7 | 0x0E, - 34060 - 19968: jis0212<<14 | 0x38<<7 | 0x0F, - 34062 - 19968: jis0212<<14 | 0x38<<7 | 0x10, - 34064 - 19968: jis0212<<14 | 0x38<<7 | 0x11, - 34065 - 19968: jis0208<<14 | 0x29<<7 | 0x2D, - 34067 - 19968: jis0208<<14 | 0x2B<<7 | 0x01, - 34068 - 19968: jis0208<<14 | 0x47<<7 | 0x58, - 34069 - 19968: jis0208<<14 | 0x47<<7 | 0x57, - 34071 - 19968: jis0208<<14 | 0x47<<7 | 0x53, - 34072 - 19968: jis0208<<14 | 0x47<<7 | 0x54, - 34074 - 19968: jis0208<<14 | 0x10<<7 | 0x15, - 34076 - 19968: jis0212<<14 | 0x38<<7 | 0x12, - 34078 - 19968: jis0212<<14 | 0x38<<7 | 0x13, - 34079 - 19968: jis0208<<14 | 0x47<<7 | 0x56, - 34081 - 19968: jis0208<<14 | 0x47<<7 | 0x50, - 34082 - 19968: jis0212<<14 | 0x38<<7 | 0x14, - 34083 - 19968: jis0212<<14 | 0x38<<7 | 0x15, - 34084 - 19968: jis0212<<14 | 0x38<<7 | 0x16, - 34085 - 19968: jis0212<<14 | 0x38<<7 | 0x17, - 34086 - 19968: jis0208<<14 | 0x23<<7 | 0x34, - 34087 - 19968: jis0212<<14 | 0x38<<7 | 0x18, - 34090 - 19968: jis0212<<14 | 0x38<<7 | 0x19, - 34091 - 19968: jis0212<<14 | 0x38<<7 | 0x1A, - 34092 - 19968: jis0208<<14 | 0x47<<7 | 0x55, - 34093 - 19968: jis0208<<14 | 0x0F<<7 | 0x5D, - 34095 - 19968: jis0212<<14 | 0x38<<7 | 0x1B, - 34098 - 19968: jis0212<<14 | 0x38<<7 | 0x08, - 34099 - 19968: jis0212<<14 | 0x38<<7 | 0x1C, - 34100 - 19968: jis0212<<14 | 0x38<<7 | 0x1D, - 34101 - 19968: jis0208<<14 | 0x21<<7 | 0x01, - 34102 - 19968: jis0212<<14 | 0x38<<7 | 0x1E, - 34109 - 19968: jis0208<<14 | 0x29<<7 | 0x22, - 34111 - 19968: jis0212<<14 | 0x38<<7 | 0x1F, - 34112 - 19968: jis0208<<14 | 0x47<<7 | 0x5A, - 34113 - 19968: jis0208<<14 | 0x48<<7 | 0x00, - 34115 - 19968: jis0208<<14 | 0x27<<7 | 0x38, - 34118 - 19968: jis0212<<14 | 0x38<<7 | 0x20, - 34120 - 19968: jis0208<<14 | 0x47<<7 | 0x5D, - 34121 - 19968: jis0208<<14 | 0x1D<<7 | 0x35, - 34122 - 19968: jis0208<<14 | 0x1B<<7 | 0x28, - 34123 - 19968: jis0208<<14 | 0x48<<7 | 0x02, - 34126 - 19968: jis0208<<14 | 0x15<<7 | 0x1D, - 34127 - 19968: jis0212<<14 | 0x38<<7 | 0x21, - 34128 - 19968: jis0212<<14 | 0x38<<7 | 0x22, - 34129 - 19968: jis0212<<14 | 0x38<<7 | 0x23, - 34130 - 19968: jis0212<<14 | 0x38<<7 | 0x24, - 34131 - 19968: jis0208<<14 | 0x5A<<7 | 0x3D, - 34133 - 19968: jis0208<<14 | 0x48<<7 | 0x03, - 34134 - 19968: jis0212<<14 | 0x38<<7 | 0x26, - 34135 - 19968: jis0208<<14 | 0x28<<7 | 0x58, - 34136 - 19968: jis0208<<14 | 0x47<<7 | 0x5C, - 34137 - 19968: jis0208<<14 | 0x5A<<7 | 0x3E, - 34138 - 19968: jis0208<<14 | 0x47<<7 | 0x35, - 34140 - 19968: jis0212<<14 | 0x38<<7 | 0x28, - 34141 - 19968: jis0212<<14 | 0x38<<7 | 0x29, - 34142 - 19968: jis0212<<14 | 0x38<<7 | 0x2A, - 34143 - 19968: jis0212<<14 | 0x38<<7 | 0x2B, - 34144 - 19968: jis0212<<14 | 0x38<<7 | 0x2C, - 34145 - 19968: jis0212<<14 | 0x38<<7 | 0x2D, - 34146 - 19968: jis0212<<14 | 0x38<<7 | 0x2E, - 34147 - 19968: jis0208<<14 | 0x47<<7 | 0x5B, - 34148 - 19968: jis0212<<14 | 0x38<<7 | 0x2F, - 34152 - 19968: jis0208<<14 | 0x2E<<7 | 0x2E, - 34153 - 19968: jis0208<<14 | 0x25<<7 | 0x01, - 34154 - 19968: jis0208<<14 | 0x28<<7 | 0x52, - 34155 - 19968: jis0208<<14 | 0x5A<<7 | 0x3F, - 34157 - 19968: jis0208<<14 | 0x48<<7 | 0x0A, - 34159 - 19968: jis0212<<14 | 0x38<<7 | 0x31, - 34167 - 19968: jis0208<<14 | 0x48<<7 | 0x10, - 34169 - 19968: jis0212<<14 | 0x38<<7 | 0x32, - 34170 - 19968: jis0212<<14 | 0x38<<7 | 0x33, - 34171 - 19968: jis0212<<14 | 0x38<<7 | 0x34, - 34173 - 19968: jis0212<<14 | 0x38<<7 | 0x35, - 34174 - 19968: jis0208<<14 | 0x48<<7 | 0x11, - 34175 - 19968: jis0212<<14 | 0x38<<7 | 0x36, - 34176 - 19968: jis0208<<14 | 0x48<<7 | 0x04, - 34177 - 19968: jis0212<<14 | 0x38<<7 | 0x37, - 34180 - 19968: jis0208<<14 | 0x26<<7 | 0x55, - 34181 - 19968: jis0212<<14 | 0x38<<7 | 0x38, - 34182 - 19968: jis0212<<14 | 0x38<<7 | 0x39, - 34183 - 19968: jis0208<<14 | 0x48<<7 | 0x0E, - 34184 - 19968: jis0208<<14 | 0x48<<7 | 0x06, - 34185 - 19968: jis0212<<14 | 0x38<<7 | 0x3A, - 34186 - 19968: jis0208<<14 | 0x48<<7 | 0x08, - 34187 - 19968: jis0212<<14 | 0x38<<7 | 0x3B, - 34188 - 19968: jis0212<<14 | 0x38<<7 | 0x3C, - 34191 - 19968: jis0212<<14 | 0x38<<7 | 0x3D, - 34192 - 19968: jis0208<<14 | 0x48<<7 | 0x12, - 34193 - 19968: jis0208<<14 | 0x48<<7 | 0x07, - 34195 - 19968: jis0212<<14 | 0x38<<7 | 0x3E, - 34196 - 19968: jis0208<<14 | 0x48<<7 | 0x0B, - 34199 - 19968: jis0208<<14 | 0x10<<7 | 0x51, - 34200 - 19968: jis0212<<14 | 0x38<<7 | 0x3F, - 34201 - 19968: jis0208<<14 | 0x25<<7 | 0x44, - 34203 - 19968: jis0208<<14 | 0x48<<7 | 0x0C, - 34204 - 19968: jis0208<<14 | 0x48<<7 | 0x0F, - 34205 - 19968: jis0212<<14 | 0x38<<7 | 0x40, - 34207 - 19968: jis0212<<14 | 0x38<<7 | 0x41, - 34208 - 19968: jis0212<<14 | 0x38<<7 | 0x42, - 34210 - 19968: jis0212<<14 | 0x38<<7 | 0x43, - 34212 - 19968: jis0208<<14 | 0x48<<7 | 0x05, - 34213 - 19968: jis0212<<14 | 0x38<<7 | 0x44, - 34214 - 19968: jis0208<<14 | 0x20<<7 | 0x05, - 34215 - 19968: jis0212<<14 | 0x38<<7 | 0x45, - 34216 - 19968: jis0208<<14 | 0x48<<7 | 0x09, - 34217 - 19968: jis0208<<14 | 0x1A<<7 | 0x06, - 34218 - 19968: jis0208<<14 | 0x1E<<7 | 0x24, - 34219 - 19968: jis0208<<14 | 0x16<<7 | 0x0F, - 34220 - 19968: jis0208<<14 | 0x2B<<7 | 0x53, - 34221 - 19968: jis0212<<14 | 0x38<<7 | 0x53, - 34222 - 19968: jis0208<<14 | 0x2B<<7 | 0x58, - 34223 - 19968: jis0208<<14 | 0x1C<<7 | 0x51, - 34224 - 19968: jis0208<<14 | 0x5A<<7 | 0x41, - 34228 - 19968: jis0212<<14 | 0x38<<7 | 0x46, - 34230 - 19968: jis0212<<14 | 0x38<<7 | 0x47, - 34231 - 19968: jis0212<<14 | 0x38<<7 | 0x48, - 34232 - 19968: jis0212<<14 | 0x38<<7 | 0x49, - 34233 - 19968: jis0208<<14 | 0x48<<7 | 0x16, - 34234 - 19968: jis0208<<14 | 0x48<<7 | 0x14, - 34236 - 19968: jis0212<<14 | 0x38<<7 | 0x4A, - 34237 - 19968: jis0212<<14 | 0x38<<7 | 0x4B, - 34238 - 19968: jis0212<<14 | 0x38<<7 | 0x4C, - 34239 - 19968: jis0212<<14 | 0x38<<7 | 0x4D, - 34241 - 19968: jis0208<<14 | 0x2E<<7 | 0x2D, - 34242 - 19968: jis0212<<14 | 0x38<<7 | 0x4E, - 34247 - 19968: jis0212<<14 | 0x38<<7 | 0x4F, - 34249 - 19968: jis0208<<14 | 0x48<<7 | 0x13, - 34250 - 19968: jis0212<<14 | 0x38<<7 | 0x50, - 34251 - 19968: jis0212<<14 | 0x38<<7 | 0x51, - 34253 - 19968: jis0208<<14 | 0x2C<<7 | 0x54, - 34254 - 19968: jis0212<<14 | 0x38<<7 | 0x52, - 34255 - 19968: jis0208<<14 | 0x48<<7 | 0x15, - 34256 - 19968: jis0208<<14 | 0x48<<7 | 0x17, - 34261 - 19968: jis0208<<14 | 0x48<<7 | 0x18, - 34264 - 19968: jis0212<<14 | 0x38<<7 | 0x54, - 34266 - 19968: jis0212<<14 | 0x38<<7 | 0x55, - 34268 - 19968: jis0208<<14 | 0x48<<7 | 0x1B, - 34269 - 19968: jis0208<<14 | 0x48<<7 | 0x19, - 34271 - 19968: jis0212<<14 | 0x38<<7 | 0x56, - 34272 - 19968: jis0212<<14 | 0x38<<7 | 0x57, - 34276 - 19968: jis0208<<14 | 0x25<<7 | 0x02, - 34277 - 19968: jis0208<<14 | 0x48<<7 | 0x1A, - 34278 - 19968: jis0212<<14 | 0x38<<7 | 0x58, - 34280 - 19968: jis0212<<14 | 0x38<<7 | 0x59, - 34281 - 19968: jis0208<<14 | 0x27<<7 | 0x2C, - 34282 - 19968: jis0208<<14 | 0x48<<7 | 0x0D, - 34285 - 19968: jis0212<<14 | 0x38<<7 | 0x5A, - 34291 - 19968: jis0212<<14 | 0x38<<7 | 0x5B, - 34294 - 19968: jis0212<<14 | 0x38<<7 | 0x5C, - 34295 - 19968: jis0208<<14 | 0x1C<<7 | 0x52, - 34297 - 19968: jis0208<<14 | 0x48<<7 | 0x1C, - 34298 - 19968: jis0208<<14 | 0x48<<7 | 0x21, - 34299 - 19968: jis0208<<14 | 0x20<<7 | 0x53, - 34300 - 19968: jis0212<<14 | 0x38<<7 | 0x5D, - 34302 - 19968: jis0208<<14 | 0x48<<7 | 0x20, - 34303 - 19968: jis0212<<14 | 0x39<<7 | 0x00, - 34304 - 19968: jis0212<<14 | 0x39<<7 | 0x01, - 34306 - 19968: jis0208<<14 | 0x48<<7 | 0x01, - 34308 - 19968: jis0212<<14 | 0x39<<7 | 0x02, - 34309 - 19968: jis0212<<14 | 0x39<<7 | 0x03, - 34310 - 19968: jis0208<<14 | 0x48<<7 | 0x22, - 34311 - 19968: jis0208<<14 | 0x20<<7 | 0x28, - 34314 - 19968: jis0208<<14 | 0x48<<7 | 0x1D, - 34315 - 19968: jis0208<<14 | 0x48<<7 | 0x1F, - 34317 - 19968: jis0212<<14 | 0x39<<7 | 0x04, - 34318 - 19968: jis0212<<14 | 0x39<<7 | 0x05, - 34320 - 19968: jis0212<<14 | 0x39<<7 | 0x06, - 34321 - 19968: jis0212<<14 | 0x39<<7 | 0x07, - 34322 - 19968: jis0212<<14 | 0x39<<7 | 0x08, - 34323 - 19968: jis0208<<14 | 0x48<<7 | 0x1E, - 34326 - 19968: jis0208<<14 | 0x3C<<7 | 0x10, - 34327 - 19968: jis0208<<14 | 0x3C<<7 | 0x01, - 34328 - 19968: jis0212<<14 | 0x39<<7 | 0x09, - 34329 - 19968: jis0212<<14 | 0x39<<7 | 0x0A, - 34330 - 19968: jis0208<<14 | 0x48<<7 | 0x24, - 34331 - 19968: jis0212<<14 | 0x39<<7 | 0x0B, - 34334 - 19968: jis0212<<14 | 0x39<<7 | 0x0C, - 34337 - 19968: jis0212<<14 | 0x39<<7 | 0x0D, - 34338 - 19968: jis0208<<14 | 0x48<<7 | 0x23, - 34343 - 19968: jis0212<<14 | 0x39<<7 | 0x0E, - 34345 - 19968: jis0212<<14 | 0x39<<7 | 0x0F, - 34349 - 19968: jis0208<<14 | 0x2C<<7 | 0x55, - 34351 - 19968: jis0208<<14 | 0x41<<7 | 0x1B, - 34352 - 19968: jis0208<<14 | 0x48<<7 | 0x25, - 34358 - 19968: jis0212<<14 | 0x39<<7 | 0x10, - 34360 - 19968: jis0212<<14 | 0x39<<7 | 0x11, - 34362 - 19968: jis0212<<14 | 0x39<<7 | 0x12, - 34364 - 19968: jis0212<<14 | 0x39<<7 | 0x13, - 34365 - 19968: jis0212<<14 | 0x39<<7 | 0x14, - 34367 - 19968: jis0208<<14 | 0x48<<7 | 0x26, - 34368 - 19968: jis0212<<14 | 0x39<<7 | 0x15, - 34369 - 19968: jis0212<<14 | 0x17<<7 | 0x45, - 34370 - 19968: jis0212<<14 | 0x39<<7 | 0x16, - 34374 - 19968: jis0212<<14 | 0x39<<7 | 0x17, - 34381 - 19968: jis0208<<14 | 0x48<<7 | 0x27, - 34382 - 19968: jis0208<<14 | 0x17<<7 | 0x36, - 34384 - 19968: jis0208<<14 | 0x14<<7 | 0x33, - 34386 - 19968: jis0212<<14 | 0x39<<7 | 0x18, - 34387 - 19968: jis0212<<14 | 0x39<<7 | 0x19, - 34388 - 19968: jis0208<<14 | 0x48<<7 | 0x29, - 34389 - 19968: jis0208<<14 | 0x30<<7 | 0x3C, - 34390 - 19968: jis0212<<14 | 0x39<<7 | 0x1A, - 34391 - 19968: jis0212<<14 | 0x39<<7 | 0x1B, - 34392 - 19968: jis0212<<14 | 0x39<<7 | 0x1C, - 34393 - 19968: jis0212<<14 | 0x39<<7 | 0x1D, - 34394 - 19968: jis0208<<14 | 0x14<<7 | 0x54, - 34396 - 19968: jis0208<<14 | 0x2D<<7 | 0x19, - 34397 - 19968: jis0212<<14 | 0x39<<7 | 0x1E, - 34398 - 19968: jis0208<<14 | 0x15<<7 | 0x52, - 34399 - 19968: jis0208<<14 | 0x48<<7 | 0x2A, - 34400 - 19968: jis0212<<14 | 0x39<<7 | 0x1F, - 34401 - 19968: jis0212<<14 | 0x39<<7 | 0x20, - 34402 - 19968: jis0212<<14 | 0x39<<7 | 0x21, - 34403 - 19968: jis0212<<14 | 0x39<<7 | 0x22, - 34404 - 19968: jis0212<<14 | 0x39<<7 | 0x23, - 34407 - 19968: jis0208<<14 | 0x48<<7 | 0x2B, - 34409 - 19968: jis0212<<14 | 0x39<<7 | 0x24, - 34411 - 19968: jis0208<<14 | 0x22<<7 | 0x4D, - 34412 - 19968: jis0212<<14 | 0x39<<7 | 0x25, - 34415 - 19968: jis0212<<14 | 0x39<<7 | 0x26, - 34417 - 19968: jis0208<<14 | 0x48<<7 | 0x2C, - 34421 - 19968: jis0212<<14 | 0x39<<7 | 0x27, - 34422 - 19968: jis0212<<14 | 0x39<<7 | 0x28, - 34423 - 19968: jis0212<<14 | 0x39<<7 | 0x29, - 34425 - 19968: jis0208<<14 | 0x25<<7 | 0x59, - 34426 - 19968: jis0212<<14 | 0x39<<7 | 0x2A, - 34427 - 19968: jis0208<<14 | 0x0F<<7 | 0x19, - 34440 - 19968: jis0212<<14 | 0x39<<7 | 0x4C, - 34442 - 19968: jis0208<<14 | 0x11<<7 | 0x42, - 34443 - 19968: jis0208<<14 | 0x48<<7 | 0x31, - 34444 - 19968: jis0208<<14 | 0x48<<7 | 0x32, - 34445 - 19968: jis0212<<14 | 0x39<<7 | 0x2B, - 34449 - 19968: jis0212<<14 | 0x39<<7 | 0x2C, - 34451 - 19968: jis0208<<14 | 0x48<<7 | 0x2D, - 34453 - 19968: jis0208<<14 | 0x1A<<7 | 0x1C, - 34454 - 19968: jis0212<<14 | 0x39<<7 | 0x2D, - 34456 - 19968: jis0212<<14 | 0x39<<7 | 0x2E, - 34458 - 19968: jis0212<<14 | 0x39<<7 | 0x2F, - 34460 - 19968: jis0212<<14 | 0x39<<7 | 0x30, - 34465 - 19968: jis0212<<14 | 0x39<<7 | 0x31, - 34467 - 19968: jis0208<<14 | 0x48<<7 | 0x2E, - 34468 - 19968: jis0208<<14 | 0x26<<7 | 0x21, - 34470 - 19968: jis0212<<14 | 0x39<<7 | 0x32, - 34471 - 19968: jis0212<<14 | 0x39<<7 | 0x33, - 34472 - 19968: jis0212<<14 | 0x39<<7 | 0x34, - 34473 - 19968: jis0208<<14 | 0x48<<7 | 0x2F, - 34474 - 19968: jis0208<<14 | 0x48<<7 | 0x30, - 34475 - 19968: jis0208<<14 | 0x48<<7 | 0x3A, - 34477 - 19968: jis0212<<14 | 0x39<<7 | 0x35, - 34479 - 19968: jis0208<<14 | 0x48<<7 | 0x34, - 34480 - 19968: jis0208<<14 | 0x48<<7 | 0x37, - 34481 - 19968: jis0212<<14 | 0x39<<7 | 0x36, - 34483 - 19968: jis0212<<14 | 0x39<<7 | 0x37, - 34484 - 19968: jis0212<<14 | 0x39<<7 | 0x38, - 34485 - 19968: jis0212<<14 | 0x39<<7 | 0x39, - 34486 - 19968: jis0208<<14 | 0x48<<7 | 0x33, - 34487 - 19968: jis0212<<14 | 0x39<<7 | 0x3A, - 34488 - 19968: jis0212<<14 | 0x39<<7 | 0x3B, - 34489 - 19968: jis0212<<14 | 0x39<<7 | 0x3C, - 34495 - 19968: jis0212<<14 | 0x39<<7 | 0x3D, - 34496 - 19968: jis0212<<14 | 0x39<<7 | 0x3E, - 34497 - 19968: jis0212<<14 | 0x39<<7 | 0x3F, - 34499 - 19968: jis0212<<14 | 0x39<<7 | 0x40, - 34500 - 19968: jis0208<<14 | 0x48<<7 | 0x35, - 34501 - 19968: jis0212<<14 | 0x39<<7 | 0x41, - 34502 - 19968: jis0208<<14 | 0x48<<7 | 0x36, - 34503 - 19968: jis0208<<14 | 0x1B<<7 | 0x37, - 34505 - 19968: jis0208<<14 | 0x48<<7 | 0x38, - 34507 - 19968: jis0208<<14 | 0x22<<7 | 0x20, - 34509 - 19968: jis0208<<14 | 0x16<<7 | 0x35, - 34510 - 19968: jis0208<<14 | 0x12<<7 | 0x21, - 34513 - 19968: jis0212<<14 | 0x39<<7 | 0x42, - 34514 - 19968: jis0212<<14 | 0x39<<7 | 0x43, - 34516 - 19968: jis0208<<14 | 0x48<<7 | 0x3B, - 34517 - 19968: jis0212<<14 | 0x39<<7 | 0x44, - 34519 - 19968: jis0212<<14 | 0x39<<7 | 0x45, - 34521 - 19968: jis0208<<14 | 0x12<<7 | 0x1E, - 34522 - 19968: jis0212<<14 | 0x39<<7 | 0x46, - 34523 - 19968: jis0208<<14 | 0x48<<7 | 0x40, - 34524 - 19968: jis0212<<14 | 0x39<<7 | 0x47, - 34526 - 19968: jis0208<<14 | 0x48<<7 | 0x3C, - 34527 - 19968: jis0208<<14 | 0x48<<7 | 0x3F, - 34528 - 19968: jis0212<<14 | 0x39<<7 | 0x48, - 34531 - 19968: jis0212<<14 | 0x39<<7 | 0x49, - 34532 - 19968: jis0208<<14 | 0x27<<7 | 0x19, - 34533 - 19968: jis0212<<14 | 0x39<<7 | 0x4A, - 34535 - 19968: jis0212<<14 | 0x39<<7 | 0x4B, - 34537 - 19968: jis0208<<14 | 0x48<<7 | 0x3D, - 34540 - 19968: jis0208<<14 | 0x48<<7 | 0x3E, - 34541 - 19968: jis0208<<14 | 0x28<<7 | 0x27, - 34542 - 19968: jis0208<<14 | 0x27<<7 | 0x39, - 34543 - 19968: jis0208<<14 | 0x48<<7 | 0x41, - 34552 - 19968: jis0208<<14 | 0x21<<7 | 0x5C, - 34553 - 19968: jis0208<<14 | 0x48<<7 | 0x4B, - 34554 - 19968: jis0212<<14 | 0x39<<7 | 0x4D, - 34555 - 19968: jis0208<<14 | 0x48<<7 | 0x47, - 34556 - 19968: jis0212<<14 | 0x39<<7 | 0x4E, - 34557 - 19968: jis0212<<14 | 0x39<<7 | 0x4F, - 34558 - 19968: jis0208<<14 | 0x11<<7 | 0x4A, - 34560 - 19968: jis0208<<14 | 0x48<<7 | 0x45, - 34562 - 19968: jis0208<<14 | 0x2A<<7 | 0x09, - 34563 - 19968: jis0208<<14 | 0x48<<7 | 0x46, - 34564 - 19968: jis0212<<14 | 0x39<<7 | 0x50, - 34565 - 19968: jis0212<<14 | 0x39<<7 | 0x51, - 34566 - 19968: jis0208<<14 | 0x48<<7 | 0x43, - 34567 - 19968: jis0212<<14 | 0x39<<7 | 0x52, - 34568 - 19968: jis0208<<14 | 0x48<<7 | 0x44, - 34569 - 19968: jis0208<<14 | 0x48<<7 | 0x49, - 34570 - 19968: jis0208<<14 | 0x48<<7 | 0x4C, - 34571 - 19968: jis0212<<14 | 0x39<<7 | 0x53, - 34573 - 19968: jis0208<<14 | 0x48<<7 | 0x4A, - 34574 - 19968: jis0212<<14 | 0x39<<7 | 0x54, - 34575 - 19968: jis0212<<14 | 0x39<<7 | 0x55, - 34576 - 19968: jis0212<<14 | 0x39<<7 | 0x56, - 34577 - 19968: jis0208<<14 | 0x48<<7 | 0x48, - 34578 - 19968: jis0208<<14 | 0x48<<7 | 0x42, - 34579 - 19968: jis0212<<14 | 0x39<<7 | 0x57, - 34580 - 19968: jis0212<<14 | 0x39<<7 | 0x58, - 34584 - 19968: jis0208<<14 | 0x22<<7 | 0x37, - 34585 - 19968: jis0212<<14 | 0x39<<7 | 0x59, - 34586 - 19968: jis0208<<14 | 0x48<<7 | 0x53, - 34588 - 19968: jis0208<<14 | 0x2B<<7 | 0x09, - 34590 - 19968: jis0212<<14 | 0x39<<7 | 0x5A, - 34591 - 19968: jis0212<<14 | 0x39<<7 | 0x5B, - 34593 - 19968: jis0212<<14 | 0x39<<7 | 0x5C, - 34595 - 19968: jis0212<<14 | 0x39<<7 | 0x5D, - 34597 - 19968: jis0208<<14 | 0x48<<7 | 0x51, - 34600 - 19968: jis0212<<14 | 0x3A<<7 | 0x00, - 34601 - 19968: jis0208<<14 | 0x48<<7 | 0x52, - 34606 - 19968: jis0212<<14 | 0x3A<<7 | 0x01, - 34607 - 19968: jis0212<<14 | 0x3A<<7 | 0x02, - 34609 - 19968: jis0212<<14 | 0x3A<<7 | 0x03, - 34610 - 19968: jis0212<<14 | 0x3A<<7 | 0x04, - 34612 - 19968: jis0208<<14 | 0x48<<7 | 0x4D, - 34615 - 19968: jis0208<<14 | 0x48<<7 | 0x4F, - 34617 - 19968: jis0212<<14 | 0x3A<<7 | 0x05, - 34618 - 19968: jis0212<<14 | 0x3A<<7 | 0x06, - 34619 - 19968: jis0208<<14 | 0x48<<7 | 0x50, - 34620 - 19968: jis0212<<14 | 0x3A<<7 | 0x07, - 34621 - 19968: jis0212<<14 | 0x3A<<7 | 0x08, - 34622 - 19968: jis0212<<14 | 0x3A<<7 | 0x09, - 34623 - 19968: jis0208<<14 | 0x48<<7 | 0x4E, - 34624 - 19968: jis0212<<14 | 0x3A<<7 | 0x0A, - 34627 - 19968: jis0212<<14 | 0x3A<<7 | 0x0B, - 34629 - 19968: jis0212<<14 | 0x3A<<7 | 0x0C, - 34633 - 19968: jis0208<<14 | 0x1F<<7 | 0x45, - 34635 - 19968: jis0208<<14 | 0x2E<<7 | 0x18, - 34636 - 19968: jis0208<<14 | 0x48<<7 | 0x57, - 34637 - 19968: jis0212<<14 | 0x3A<<7 | 0x0D, - 34638 - 19968: jis0208<<14 | 0x48<<7 | 0x58, - 34643 - 19968: jis0208<<14 | 0x49<<7 | 0x00, - 34645 - 19968: jis0208<<14 | 0x1E<<7 | 0x09, - 34647 - 19968: jis0208<<14 | 0x48<<7 | 0x5A, - 34648 - 19968: jis0212<<14 | 0x3A<<7 | 0x0E, - 34649 - 19968: jis0208<<14 | 0x48<<7 | 0x5D, - 34653 - 19968: jis0212<<14 | 0x3A<<7 | 0x0F, - 34655 - 19968: jis0208<<14 | 0x48<<7 | 0x55, - 34656 - 19968: jis0208<<14 | 0x48<<7 | 0x54, - 34657 - 19968: jis0212<<14 | 0x3A<<7 | 0x10, - 34659 - 19968: jis0208<<14 | 0x49<<7 | 0x01, - 34660 - 19968: jis0212<<14 | 0x3A<<7 | 0x11, - 34661 - 19968: jis0212<<14 | 0x3A<<7 | 0x12, - 34662 - 19968: jis0208<<14 | 0x11<<7 | 0x3B, - 34664 - 19968: jis0208<<14 | 0x48<<7 | 0x5B, - 34666 - 19968: jis0208<<14 | 0x49<<7 | 0x02, - 34670 - 19968: jis0208<<14 | 0x48<<7 | 0x5C, - 34671 - 19968: jis0212<<14 | 0x3A<<7 | 0x13, - 34673 - 19968: jis0212<<14 | 0x3A<<7 | 0x14, - 34674 - 19968: jis0212<<14 | 0x3A<<7 | 0x15, - 34676 - 19968: jis0208<<14 | 0x48<<7 | 0x59, - 34678 - 19968: jis0208<<14 | 0x23<<7 | 0x12, - 34680 - 19968: jis0208<<14 | 0x48<<7 | 0x56, - 34683 - 19968: jis0212<<14 | 0x3A<<7 | 0x16, - 34687 - 19968: jis0208<<14 | 0x26<<7 | 0x47, - 34690 - 19968: jis0208<<14 | 0x49<<7 | 0x06, - 34691 - 19968: jis0212<<14 | 0x3A<<7 | 0x17, - 34692 - 19968: jis0212<<14 | 0x3A<<7 | 0x18, - 34693 - 19968: jis0212<<14 | 0x3A<<7 | 0x19, - 34694 - 19968: jis0212<<14 | 0x3A<<7 | 0x1A, - 34695 - 19968: jis0212<<14 | 0x3A<<7 | 0x1B, - 34696 - 19968: jis0212<<14 | 0x3A<<7 | 0x1C, - 34697 - 19968: jis0212<<14 | 0x3A<<7 | 0x1D, - 34699 - 19968: jis0212<<14 | 0x3A<<7 | 0x1E, - 34700 - 19968: jis0212<<14 | 0x3A<<7 | 0x1F, - 34701 - 19968: jis0208<<14 | 0x2C<<7 | 0x1A, - 34704 - 19968: jis0212<<14 | 0x3A<<7 | 0x20, - 34707 - 19968: jis0212<<14 | 0x3A<<7 | 0x21, - 34709 - 19968: jis0212<<14 | 0x3A<<7 | 0x22, - 34711 - 19968: jis0212<<14 | 0x3A<<7 | 0x23, - 34712 - 19968: jis0212<<14 | 0x3A<<7 | 0x24, - 34713 - 19968: jis0212<<14 | 0x3A<<7 | 0x25, - 34718 - 19968: jis0212<<14 | 0x3A<<7 | 0x26, - 34719 - 19968: jis0208<<14 | 0x49<<7 | 0x05, - 34720 - 19968: jis0212<<14 | 0x3A<<7 | 0x27, - 34722 - 19968: jis0208<<14 | 0x49<<7 | 0x04, - 34723 - 19968: jis0212<<14 | 0x3A<<7 | 0x28, - 34727 - 19968: jis0212<<14 | 0x3A<<7 | 0x29, - 34731 - 19968: jis0208<<14 | 0x49<<7 | 0x0D, - 34732 - 19968: jis0212<<14 | 0x3A<<7 | 0x2A, - 34733 - 19968: jis0212<<14 | 0x3A<<7 | 0x2B, - 34734 - 19968: jis0212<<14 | 0x3A<<7 | 0x2C, - 34735 - 19968: jis0208<<14 | 0x49<<7 | 0x07, - 34737 - 19968: jis0212<<14 | 0x3A<<7 | 0x2D, - 34739 - 19968: jis0208<<14 | 0x49<<7 | 0x0F, - 34741 - 19968: jis0212<<14 | 0x3A<<7 | 0x2E, - 34746 - 19968: jis0208<<14 | 0x2C<<7 | 0x45, - 34747 - 19968: jis0208<<14 | 0x49<<7 | 0x12, - 34749 - 19968: jis0208<<14 | 0x49<<7 | 0x09, - 34750 - 19968: jis0212<<14 | 0x3A<<7 | 0x2F, - 34751 - 19968: jis0212<<14 | 0x3A<<7 | 0x30, - 34752 - 19968: jis0208<<14 | 0x49<<7 | 0x0A, - 34753 - 19968: jis0212<<14 | 0x3A<<7 | 0x31, - 34756 - 19968: jis0208<<14 | 0x49<<7 | 0x0E, - 34758 - 19968: jis0208<<14 | 0x49<<7 | 0x11, - 34759 - 19968: jis0208<<14 | 0x49<<7 | 0x10, - 34760 - 19968: jis0212<<14 | 0x3A<<7 | 0x32, - 34761 - 19968: jis0212<<14 | 0x3A<<7 | 0x33, - 34762 - 19968: jis0212<<14 | 0x3A<<7 | 0x34, - 34763 - 19968: jis0208<<14 | 0x49<<7 | 0x08, - 34766 - 19968: jis0212<<14 | 0x3A<<7 | 0x35, - 34768 - 19968: jis0208<<14 | 0x49<<7 | 0x0B, - 34770 - 19968: jis0208<<14 | 0x49<<7 | 0x1C, - 34773 - 19968: jis0212<<14 | 0x3A<<7 | 0x36, - 34774 - 19968: jis0212<<14 | 0x3A<<7 | 0x37, - 34777 - 19968: jis0212<<14 | 0x3A<<7 | 0x38, - 34778 - 19968: jis0212<<14 | 0x3A<<7 | 0x39, - 34780 - 19968: jis0212<<14 | 0x3A<<7 | 0x3A, - 34783 - 19968: jis0212<<14 | 0x3A<<7 | 0x3B, - 34784 - 19968: jis0208<<14 | 0x49<<7 | 0x15, - 34786 - 19968: jis0212<<14 | 0x3A<<7 | 0x3C, - 34787 - 19968: jis0212<<14 | 0x3A<<7 | 0x3D, - 34788 - 19968: jis0212<<14 | 0x3A<<7 | 0x3E, - 34794 - 19968: jis0212<<14 | 0x3A<<7 | 0x3F, - 34795 - 19968: jis0212<<14 | 0x3A<<7 | 0x40, - 34797 - 19968: jis0212<<14 | 0x3A<<7 | 0x41, - 34799 - 19968: jis0208<<14 | 0x49<<7 | 0x13, - 34801 - 19968: jis0212<<14 | 0x3A<<7 | 0x42, - 34802 - 19968: jis0208<<14 | 0x49<<7 | 0x14, - 34803 - 19968: jis0212<<14 | 0x3A<<7 | 0x43, - 34806 - 19968: jis0208<<14 | 0x49<<7 | 0x19, - 34807 - 19968: jis0208<<14 | 0x49<<7 | 0x1A, - 34808 - 19968: jis0212<<14 | 0x3A<<7 | 0x44, - 34809 - 19968: jis0208<<14 | 0x12<<7 | 0x09, - 34810 - 19968: jis0212<<14 | 0x3A<<7 | 0x45, - 34811 - 19968: jis0208<<14 | 0x14<<7 | 0x21, - 34814 - 19968: jis0208<<14 | 0x49<<7 | 0x18, - 34815 - 19968: jis0212<<14 | 0x3A<<7 | 0x46, - 34817 - 19968: jis0212<<14 | 0x3A<<7 | 0x47, - 34819 - 19968: jis0212<<14 | 0x3A<<7 | 0x48, - 34821 - 19968: jis0208<<14 | 0x49<<7 | 0x03, - 34822 - 19968: jis0212<<14 | 0x3A<<7 | 0x49, - 34823 - 19968: jis0208<<14 | 0x5A<<7 | 0x44, - 34825 - 19968: jis0212<<14 | 0x3A<<7 | 0x4A, - 34826 - 19968: jis0212<<14 | 0x3A<<7 | 0x4B, - 34827 - 19968: jis0212<<14 | 0x3A<<7 | 0x4C, - 34829 - 19968: jis0208<<14 | 0x49<<7 | 0x17, - 34830 - 19968: jis0208<<14 | 0x49<<7 | 0x1B, - 34831 - 19968: jis0208<<14 | 0x49<<7 | 0x16, - 34832 - 19968: jis0212<<14 | 0x3A<<7 | 0x4D, - 34833 - 19968: jis0208<<14 | 0x49<<7 | 0x1D, - 34834 - 19968: jis0212<<14 | 0x3A<<7 | 0x4F, - 34835 - 19968: jis0212<<14 | 0x3A<<7 | 0x50, - 34836 - 19968: jis0212<<14 | 0x3A<<7 | 0x51, - 34837 - 19968: jis0208<<14 | 0x49<<7 | 0x1F, - 34838 - 19968: jis0208<<14 | 0x49<<7 | 0x1E, - 34840 - 19968: jis0212<<14 | 0x3A<<7 | 0x52, - 34841 - 19968: jis0212<<14 | 0x3A<<7 | 0x4E, - 34842 - 19968: jis0212<<14 | 0x3A<<7 | 0x53, - 34843 - 19968: jis0212<<14 | 0x3A<<7 | 0x54, - 34844 - 19968: jis0212<<14 | 0x3A<<7 | 0x55, - 34846 - 19968: jis0212<<14 | 0x3A<<7 | 0x56, - 34847 - 19968: jis0212<<14 | 0x3A<<7 | 0x57, - 34849 - 19968: jis0208<<14 | 0x49<<7 | 0x21, - 34850 - 19968: jis0208<<14 | 0x49<<7 | 0x20, - 34851 - 19968: jis0208<<14 | 0x48<<7 | 0x39, - 34855 - 19968: jis0208<<14 | 0x49<<7 | 0x25, - 34856 - 19968: jis0212<<14 | 0x3A<<7 | 0x58, - 34861 - 19968: jis0212<<14 | 0x3A<<7 | 0x59, - 34862 - 19968: jis0212<<14 | 0x3A<<7 | 0x5A, - 34864 - 19968: jis0212<<14 | 0x3A<<7 | 0x5B, - 34865 - 19968: jis0208<<14 | 0x49<<7 | 0x22, - 34866 - 19968: jis0212<<14 | 0x3A<<7 | 0x5C, - 34869 - 19968: jis0212<<14 | 0x3A<<7 | 0x5D, - 34870 - 19968: jis0208<<14 | 0x49<<7 | 0x23, - 34873 - 19968: jis0208<<14 | 0x49<<7 | 0x24, - 34874 - 19968: jis0212<<14 | 0x3B<<7 | 0x00, - 34875 - 19968: jis0208<<14 | 0x49<<7 | 0x26, - 34876 - 19968: jis0212<<14 | 0x3B<<7 | 0x01, - 34880 - 19968: jis0208<<14 | 0x16<<7 | 0x4B, - 34881 - 19968: jis0212<<14 | 0x3B<<7 | 0x02, - 34882 - 19968: jis0208<<14 | 0x49<<7 | 0x28, - 34883 - 19968: jis0212<<14 | 0x3B<<7 | 0x03, - 34884 - 19968: jis0208<<14 | 0x49<<7 | 0x27, - 34885 - 19968: jis0212<<14 | 0x3B<<7 | 0x04, - 34886 - 19968: jis0208<<14 | 0x1C<<7 | 0x0F, - 34888 - 19968: jis0212<<14 | 0x3B<<7 | 0x05, - 34889 - 19968: jis0212<<14 | 0x3B<<7 | 0x06, - 34890 - 19968: jis0212<<14 | 0x3B<<7 | 0x07, - 34891 - 19968: jis0212<<14 | 0x3B<<7 | 0x08, - 34892 - 19968: jis0208<<14 | 0x18<<7 | 0x33, - 34893 - 19968: jis0208<<14 | 0x3D<<7 | 0x06, - 34894 - 19968: jis0212<<14 | 0x3B<<7 | 0x09, - 34897 - 19968: jis0212<<14 | 0x3B<<7 | 0x0A, - 34898 - 19968: jis0208<<14 | 0x49<<7 | 0x29, - 34899 - 19968: jis0208<<14 | 0x1C<<7 | 0x30, - 34901 - 19968: jis0212<<14 | 0x3B<<7 | 0x0B, - 34902 - 19968: jis0212<<14 | 0x3B<<7 | 0x0C, - 34903 - 19968: jis0208<<14 | 0x12<<7 | 0x18, - 34904 - 19968: jis0212<<14 | 0x3B<<7 | 0x0D, - 34905 - 19968: jis0208<<14 | 0x49<<7 | 0x2A, - 34906 - 19968: jis0212<<14 | 0x3B<<7 | 0x0E, - 34907 - 19968: jis0208<<14 | 0x10<<7 | 0x31, - 34908 - 19968: jis0212<<14 | 0x3B<<7 | 0x0F, - 34909 - 19968: jis0208<<14 | 0x1D<<7 | 0x36, - 34910 - 19968: jis0208<<14 | 0x49<<7 | 0x2B, - 34911 - 19968: jis0212<<14 | 0x3B<<7 | 0x10, - 34912 - 19968: jis0212<<14 | 0x3B<<7 | 0x11, - 34913 - 19968: jis0208<<14 | 0x18<<7 | 0x34, - 34914 - 19968: jis0208<<14 | 0x49<<7 | 0x2C, - 34915 - 19968: jis0208<<14 | 0x0F<<7 | 0x40, - 34916 - 19968: jis0212<<14 | 0x3B<<7 | 0x12, - 34920 - 19968: jis0208<<14 | 0x28<<7 | 0x1C, - 34921 - 19968: jis0212<<14 | 0x3B<<7 | 0x13, - 34923 - 19968: jis0208<<14 | 0x49<<7 | 0x2D, - 34928 - 19968: jis0208<<14 | 0x1E<<7 | 0x49, - 34929 - 19968: jis0212<<14 | 0x3B<<7 | 0x14, - 34930 - 19968: jis0208<<14 | 0x49<<7 | 0x34, - 34933 - 19968: jis0208<<14 | 0x49<<7 | 0x31, - 34935 - 19968: jis0208<<14 | 0x22<<7 | 0x4E, - 34937 - 19968: jis0212<<14 | 0x3B<<7 | 0x15, - 34939 - 19968: jis0212<<14 | 0x3B<<7 | 0x16, - 34941 - 19968: jis0208<<14 | 0x49<<7 | 0x32, - 34942 - 19968: jis0208<<14 | 0x49<<7 | 0x2F, - 34943 - 19968: jis0208<<14 | 0x15<<7 | 0x3D, - 34944 - 19968: jis0212<<14 | 0x3B<<7 | 0x17, - 34945 - 19968: jis0208<<14 | 0x49<<7 | 0x2E, - 34946 - 19968: jis0208<<14 | 0x49<<7 | 0x35, - 34952 - 19968: jis0208<<14 | 0x16<<7 | 0x15, - 34955 - 19968: jis0208<<14 | 0x21<<7 | 0x3D, - 34957 - 19968: jis0208<<14 | 0x49<<7 | 0x3B, - 34962 - 19968: jis0208<<14 | 0x49<<7 | 0x37, - 34966 - 19968: jis0208<<14 | 0x21<<7 | 0x14, - 34967 - 19968: jis0208<<14 | 0x49<<7 | 0x36, - 34968 - 19968: jis0212<<14 | 0x3B<<7 | 0x18, - 34969 - 19968: jis0208<<14 | 0x49<<7 | 0x39, - 34970 - 19968: jis0212<<14 | 0x3B<<7 | 0x19, - 34971 - 19968: jis0212<<14 | 0x3B<<7 | 0x1A, - 34972 - 19968: jis0212<<14 | 0x3B<<7 | 0x1B, - 34974 - 19968: jis0208<<14 | 0x49<<7 | 0x30, - 34975 - 19968: jis0212<<14 | 0x3B<<7 | 0x1C, - 34976 - 19968: jis0212<<14 | 0x3B<<7 | 0x1D, - 34978 - 19968: jis0208<<14 | 0x49<<7 | 0x3A, - 34980 - 19968: jis0208<<14 | 0x49<<7 | 0x3C, - 34984 - 19968: jis0212<<14 | 0x3B<<7 | 0x1E, - 34986 - 19968: jis0212<<14 | 0x3B<<7 | 0x1F, - 34987 - 19968: jis0208<<14 | 0x27<<7 | 0x4E, - 34990 - 19968: jis0208<<14 | 0x49<<7 | 0x38, - 34992 - 19968: jis0208<<14 | 0x49<<7 | 0x3D, - 34993 - 19968: jis0208<<14 | 0x49<<7 | 0x3F, - 34996 - 19968: jis0208<<14 | 0x17<<7 | 0x32, - 34997 - 19968: jis0208<<14 | 0x49<<7 | 0x33, - 34999 - 19968: jis0208<<14 | 0x0F<<7 | 0x20, - 35002 - 19968: jis0212<<14 | 0x3B<<7 | 0x20, - 35005 - 19968: jis0212<<14 | 0x3B<<7 | 0x21, - 35006 - 19968: jis0212<<14 | 0x3B<<7 | 0x22, - 35007 - 19968: jis0208<<14 | 0x49<<7 | 0x3E, - 35008 - 19968: jis0212<<14 | 0x3B<<7 | 0x23, - 35009 - 19968: jis0208<<14 | 0x19<<7 | 0x3A, - 35010 - 19968: jis0208<<14 | 0x2D<<7 | 0x55, - 35011 - 19968: jis0208<<14 | 0x49<<7 | 0x40, - 35012 - 19968: jis0208<<14 | 0x49<<7 | 0x41, - 35013 - 19968: jis0208<<14 | 0x20<<7 | 0x54, - 35018 - 19968: jis0212<<14 | 0x3B<<7 | 0x24, - 35019 - 19968: jis0212<<14 | 0x3B<<7 | 0x25, - 35020 - 19968: jis0212<<14 | 0x3B<<7 | 0x26, - 35021 - 19968: jis0212<<14 | 0x3B<<7 | 0x27, - 35022 - 19968: jis0212<<14 | 0x3B<<7 | 0x28, - 35023 - 19968: jis0208<<14 | 0x2D<<7 | 0x01, - 35025 - 19968: jis0212<<14 | 0x3B<<7 | 0x29, - 35026 - 19968: jis0212<<14 | 0x3B<<7 | 0x2A, - 35027 - 19968: jis0212<<14 | 0x3B<<7 | 0x2B, - 35028 - 19968: jis0208<<14 | 0x49<<7 | 0x42, - 35029 - 19968: jis0208<<14 | 0x2C<<7 | 0x14, - 35032 - 19968: jis0208<<14 | 0x49<<7 | 0x43, - 35033 - 19968: jis0208<<14 | 0x49<<7 | 0x44, - 35035 - 19968: jis0212<<14 | 0x3B<<7 | 0x2C, - 35036 - 19968: jis0208<<14 | 0x29<<7 | 0x43, - 35037 - 19968: jis0208<<14 | 0x49<<7 | 0x45, - 35038 - 19968: jis0212<<14 | 0x3B<<7 | 0x2D, - 35039 - 19968: jis0208<<14 | 0x19<<7 | 0x1F, - 35041 - 19968: jis0208<<14 | 0x2D<<7 | 0x02, - 35047 - 19968: jis0212<<14 | 0x3B<<7 | 0x2E, - 35048 - 19968: jis0208<<14 | 0x49<<7 | 0x4A, - 35055 - 19968: jis0212<<14 | 0x3B<<7 | 0x2F, - 35056 - 19968: jis0212<<14 | 0x3B<<7 | 0x30, - 35057 - 19968: jis0212<<14 | 0x3B<<7 | 0x31, - 35058 - 19968: jis0208<<14 | 0x49<<7 | 0x4B, - 35059 - 19968: jis0208<<14 | 0x1D<<7 | 0x37, - 35060 - 19968: jis0208<<14 | 0x49<<7 | 0x49, - 35061 - 19968: jis0208<<14 | 0x5A<<7 | 0x45, - 35063 - 19968: jis0212<<14 | 0x3B<<7 | 0x33, - 35064 - 19968: jis0208<<14 | 0x2C<<7 | 0x46, - 35065 - 19968: jis0208<<14 | 0x49<<7 | 0x46, - 35068 - 19968: jis0208<<14 | 0x49<<7 | 0x48, - 35069 - 19968: jis0208<<14 | 0x1F<<7 | 0x1C, - 35070 - 19968: jis0208<<14 | 0x1E<<7 | 0x5D, - 35073 - 19968: jis0212<<14 | 0x3B<<7 | 0x34, - 35074 - 19968: jis0208<<14 | 0x49<<7 | 0x47, - 35076 - 19968: jis0208<<14 | 0x49<<7 | 0x4C, - 35078 - 19968: jis0212<<14 | 0x3B<<7 | 0x35, - 35079 - 19968: jis0208<<14 | 0x29<<7 | 0x02, - 35082 - 19968: jis0208<<14 | 0x49<<7 | 0x4E, - 35084 - 19968: jis0208<<14 | 0x49<<7 | 0x4D, - 35085 - 19968: jis0212<<14 | 0x3B<<7 | 0x36, - 35086 - 19968: jis0212<<14 | 0x3B<<7 | 0x37, - 35087 - 19968: jis0212<<14 | 0x3B<<7 | 0x38, - 35088 - 19968: jis0208<<14 | 0x12<<7 | 0x4B, - 35090 - 19968: jis0208<<14 | 0x2A<<7 | 0x0A, - 35091 - 19968: jis0208<<14 | 0x49<<7 | 0x4F, - 35093 - 19968: jis0212<<14 | 0x3B<<7 | 0x39, - 35094 - 19968: jis0212<<14 | 0x3B<<7 | 0x3A, - 35096 - 19968: jis0212<<14 | 0x3B<<7 | 0x3B, - 35097 - 19968: jis0212<<14 | 0x3B<<7 | 0x3C, - 35098 - 19968: jis0212<<14 | 0x3B<<7 | 0x3D, - 35100 - 19968: jis0208<<14 | 0x58<<7 | 0x01, - 35101 - 19968: jis0208<<14 | 0x49<<7 | 0x5B, - 35102 - 19968: jis0208<<14 | 0x49<<7 | 0x51, - 35104 - 19968: jis0212<<14 | 0x3B<<7 | 0x3F, - 35109 - 19968: jis0208<<14 | 0x49<<7 | 0x52, - 35110 - 19968: jis0212<<14 | 0x3B<<7 | 0x40, - 35111 - 19968: jis0212<<14 | 0x3B<<7 | 0x41, - 35112 - 19968: jis0212<<14 | 0x3B<<7 | 0x42, - 35114 - 19968: jis0208<<14 | 0x49<<7 | 0x53, - 35115 - 19968: jis0208<<14 | 0x49<<7 | 0x54, - 35120 - 19968: jis0212<<14 | 0x3B<<7 | 0x43, - 35121 - 19968: jis0212<<14 | 0x3B<<7 | 0x44, - 35122 - 19968: jis0212<<14 | 0x3B<<7 | 0x45, - 35125 - 19968: jis0212<<14 | 0x3B<<7 | 0x46, - 35126 - 19968: jis0208<<14 | 0x49<<7 | 0x58, - 35128 - 19968: jis0208<<14 | 0x49<<7 | 0x59, - 35129 - 19968: jis0212<<14 | 0x3B<<7 | 0x47, - 35130 - 19968: jis0212<<14 | 0x3B<<7 | 0x48, - 35131 - 19968: jis0208<<14 | 0x49<<7 | 0x57, - 35134 - 19968: jis0212<<14 | 0x3B<<7 | 0x49, - 35136 - 19968: jis0212<<14 | 0x3B<<7 | 0x4A, - 35137 - 19968: jis0208<<14 | 0x49<<7 | 0x55, - 35138 - 19968: jis0212<<14 | 0x3B<<7 | 0x4B, - 35139 - 19968: jis0208<<14 | 0x49<<7 | 0x50, - 35140 - 19968: jis0208<<14 | 0x49<<7 | 0x56, - 35141 - 19968: jis0212<<14 | 0x3B<<7 | 0x4C, - 35142 - 19968: jis0212<<14 | 0x3B<<7 | 0x4D, - 35145 - 19968: jis0212<<14 | 0x3B<<7 | 0x4E, - 35148 - 19968: jis0208<<14 | 0x49<<7 | 0x5A, - 35149 - 19968: jis0208<<14 | 0x4F<<7 | 0x16, - 35151 - 19968: jis0212<<14 | 0x3B<<7 | 0x4F, - 35154 - 19968: jis0212<<14 | 0x3B<<7 | 0x50, - 35158 - 19968: jis0208<<14 | 0x11<<7 | 0x07, - 35159 - 19968: jis0212<<14 | 0x3B<<7 | 0x51, - 35162 - 19968: jis0212<<14 | 0x3B<<7 | 0x52, - 35163 - 19968: jis0212<<14 | 0x3B<<7 | 0x53, - 35164 - 19968: jis0212<<14 | 0x3B<<7 | 0x54, - 35166 - 19968: jis0208<<14 | 0x49<<7 | 0x5D, - 35167 - 19968: jis0208<<14 | 0x15<<7 | 0x3E, - 35168 - 19968: jis0208<<14 | 0x49<<7 | 0x5C, - 35169 - 19968: jis0212<<14 | 0x3B<<7 | 0x55, - 35170 - 19968: jis0212<<14 | 0x3B<<7 | 0x56, - 35171 - 19968: jis0212<<14 | 0x3B<<7 | 0x57, - 35172 - 19968: jis0208<<14 | 0x4A<<7 | 0x01, - 35174 - 19968: jis0208<<14 | 0x4A<<7 | 0x00, - 35178 - 19968: jis0208<<14 | 0x4A<<7 | 0x03, - 35179 - 19968: jis0212<<14 | 0x3B<<7 | 0x58, - 35181 - 19968: jis0208<<14 | 0x4A<<7 | 0x02, - 35182 - 19968: jis0212<<14 | 0x3B<<7 | 0x59, - 35183 - 19968: jis0208<<14 | 0x4A<<7 | 0x04, - 35184 - 19968: jis0212<<14 | 0x3B<<7 | 0x5A, - 35186 - 19968: jis0208<<14 | 0x1C<<7 | 0x10, - 35187 - 19968: jis0212<<14 | 0x3B<<7 | 0x5B, - 35188 - 19968: jis0208<<14 | 0x4A<<7 | 0x05, - 35189 - 19968: jis0212<<14 | 0x3B<<7 | 0x5C, - 35191 - 19968: jis0208<<14 | 0x4A<<7 | 0x06, - 35194 - 19968: jis0212<<14 | 0x3B<<7 | 0x5D, - 35195 - 19968: jis0212<<14 | 0x3C<<7 | 0x00, - 35196 - 19968: jis0212<<14 | 0x3C<<7 | 0x01, - 35197 - 19968: jis0212<<14 | 0x3C<<7 | 0x02, - 35198 - 19968: jis0208<<14 | 0x4A<<7 | 0x07, - 35199 - 19968: jis0208<<14 | 0x1F<<7 | 0x1D, - 35201 - 19968: jis0208<<14 | 0x2C<<7 | 0x36, - 35203 - 19968: jis0208<<14 | 0x4A<<7 | 0x08, - 35206 - 19968: jis0208<<14 | 0x29<<7 | 0x03, - 35207 - 19968: jis0208<<14 | 0x26<<7 | 0x25, - 35208 - 19968: jis0208<<14 | 0x4A<<7 | 0x09, - 35209 - 19968: jis0212<<14 | 0x3C<<7 | 0x03, - 35210 - 19968: jis0208<<14 | 0x4A<<7 | 0x0A, - 35211 - 19968: jis0208<<14 | 0x17<<7 | 0x0A, - 35213 - 19968: jis0212<<14 | 0x3C<<7 | 0x04, - 35215 - 19968: jis0208<<14 | 0x14<<7 | 0x0B, - 35216 - 19968: jis0212<<14 | 0x3C<<7 | 0x05, - 35219 - 19968: jis0208<<14 | 0x4A<<7 | 0x0B, - 35220 - 19968: jis0212<<14 | 0x3C<<7 | 0x06, - 35221 - 19968: jis0212<<14 | 0x3C<<7 | 0x07, - 35222 - 19968: jis0208<<14 | 0x1A<<7 | 0x4A, - 35223 - 19968: jis0208<<14 | 0x26<<7 | 0x20, - 35224 - 19968: jis0208<<14 | 0x4A<<7 | 0x0C, - 35226 - 19968: jis0208<<14 | 0x12<<7 | 0x2F, - 35227 - 19968: jis0212<<14 | 0x3C<<7 | 0x08, - 35228 - 19968: jis0212<<14 | 0x3C<<7 | 0x09, - 35231 - 19968: jis0212<<14 | 0x3C<<7 | 0x0A, - 35232 - 19968: jis0212<<14 | 0x3C<<7 | 0x0B, - 35233 - 19968: jis0208<<14 | 0x4A<<7 | 0x0D, - 35237 - 19968: jis0212<<14 | 0x3C<<7 | 0x0C, - 35238 - 19968: jis0208<<14 | 0x4A<<7 | 0x0F, - 35239 - 19968: jis0208<<14 | 0x2C<<7 | 0x56, - 35241 - 19968: jis0208<<14 | 0x4A<<7 | 0x0E, - 35242 - 19968: jis0208<<14 | 0x1E<<7 | 0x25, - 35244 - 19968: jis0208<<14 | 0x4A<<7 | 0x10, - 35247 - 19968: jis0208<<14 | 0x4A<<7 | 0x11, - 35248 - 19968: jis0212<<14 | 0x3C<<7 | 0x0D, - 35250 - 19968: jis0208<<14 | 0x4A<<7 | 0x12, - 35251 - 19968: jis0208<<14 | 0x13<<7 | 0x30, - 35252 - 19968: jis0212<<14 | 0x3C<<7 | 0x0E, - 35253 - 19968: jis0212<<14 | 0x3C<<7 | 0x0F, - 35254 - 19968: jis0212<<14 | 0x3C<<7 | 0x10, - 35255 - 19968: jis0212<<14 | 0x3C<<7 | 0x11, - 35258 - 19968: jis0208<<14 | 0x4A<<7 | 0x13, - 35260 - 19968: jis0212<<14 | 0x3C<<7 | 0x12, - 35261 - 19968: jis0208<<14 | 0x4A<<7 | 0x14, - 35263 - 19968: jis0208<<14 | 0x4A<<7 | 0x15, - 35264 - 19968: jis0208<<14 | 0x4A<<7 | 0x16, - 35282 - 19968: jis0208<<14 | 0x12<<7 | 0x30, - 35284 - 19968: jis0212<<14 | 0x3C<<7 | 0x13, - 35285 - 19968: jis0212<<14 | 0x3C<<7 | 0x14, - 35286 - 19968: jis0212<<14 | 0x3C<<7 | 0x15, - 35287 - 19968: jis0212<<14 | 0x3C<<7 | 0x16, - 35288 - 19968: jis0212<<14 | 0x3C<<7 | 0x17, - 35290 - 19968: jis0208<<14 | 0x4A<<7 | 0x17, - 35292 - 19968: jis0208<<14 | 0x4A<<7 | 0x18, - 35293 - 19968: jis0208<<14 | 0x4A<<7 | 0x19, - 35299 - 19968: jis0208<<14 | 0x11<<7 | 0x51, - 35301 - 19968: jis0212<<14 | 0x3C<<7 | 0x18, - 35302 - 19968: jis0208<<14 | 0x1E<<7 | 0x07, - 35303 - 19968: jis0208<<14 | 0x4A<<7 | 0x1A, - 35305 - 19968: jis0212<<14 | 0x3C<<7 | 0x19, - 35307 - 19968: jis0212<<14 | 0x3C<<7 | 0x1A, - 35309 - 19968: jis0212<<14 | 0x3C<<7 | 0x1B, - 35313 - 19968: jis0212<<14 | 0x3C<<7 | 0x1C, - 35315 - 19968: jis0212<<14 | 0x3C<<7 | 0x1D, - 35316 - 19968: jis0208<<14 | 0x4A<<7 | 0x1B, - 35318 - 19968: jis0212<<14 | 0x3C<<7 | 0x1E, - 35320 - 19968: jis0208<<14 | 0x4A<<7 | 0x1C, - 35321 - 19968: jis0212<<14 | 0x3C<<7 | 0x1F, - 35325 - 19968: jis0212<<14 | 0x3C<<7 | 0x20, - 35327 - 19968: jis0212<<14 | 0x3C<<7 | 0x21, - 35328 - 19968: jis0208<<14 | 0x17<<7 | 0x1F, - 35330 - 19968: jis0208<<14 | 0x23<<7 | 0x5A, - 35331 - 19968: jis0208<<14 | 0x4A<<7 | 0x1D, - 35332 - 19968: jis0212<<14 | 0x3C<<7 | 0x22, - 35333 - 19968: jis0212<<14 | 0x3C<<7 | 0x23, - 35335 - 19968: jis0212<<14 | 0x3C<<7 | 0x24, - 35336 - 19968: jis0208<<14 | 0x16<<7 | 0x36, - 35338 - 19968: jis0208<<14 | 0x1E<<7 | 0x35, - 35340 - 19968: jis0208<<14 | 0x4A<<7 | 0x20, - 35342 - 19968: jis0208<<14 | 0x25<<7 | 0x03, - 35343 - 19968: jis0212<<14 | 0x3C<<7 | 0x25, - 35344 - 19968: jis0208<<14 | 0x4A<<7 | 0x1F, - 35345 - 19968: jis0212<<14 | 0x3C<<7 | 0x26, - 35346 - 19968: jis0208<<14 | 0x5A<<7 | 0x46, - 35347 - 19968: jis0208<<14 | 0x16<<7 | 0x10, - 35348 - 19968: jis0212<<14 | 0x3C<<7 | 0x28, - 35349 - 19968: jis0212<<14 | 0x3C<<7 | 0x29, - 35350 - 19968: jis0208<<14 | 0x4A<<7 | 0x1E, - 35351 - 19968: jis0208<<14 | 0x21<<7 | 0x56, - 35352 - 19968: jis0208<<14 | 0x14<<7 | 0x0C, - 35355 - 19968: jis0208<<14 | 0x4A<<7 | 0x21, - 35357 - 19968: jis0208<<14 | 0x4A<<7 | 0x22, - 35358 - 19968: jis0212<<14 | 0x3C<<7 | 0x2A, - 35359 - 19968: jis0208<<14 | 0x1D<<7 | 0x38, - 35360 - 19968: jis0212<<14 | 0x3C<<7 | 0x2B, - 35362 - 19968: jis0212<<14 | 0x3C<<7 | 0x2C, - 35363 - 19968: jis0208<<14 | 0x16<<7 | 0x4C, - 35364 - 19968: jis0212<<14 | 0x3C<<7 | 0x2D, - 35365 - 19968: jis0208<<14 | 0x4A<<7 | 0x23, - 35366 - 19968: jis0212<<14 | 0x3C<<7 | 0x2E, - 35370 - 19968: jis0208<<14 | 0x2A<<7 | 0x0B, - 35371 - 19968: jis0212<<14 | 0x3C<<7 | 0x2F, - 35372 - 19968: jis0212<<14 | 0x3C<<7 | 0x30, - 35373 - 19968: jis0208<<14 | 0x1F<<7 | 0x3E, - 35375 - 19968: jis0212<<14 | 0x3C<<7 | 0x31, - 35377 - 19968: jis0208<<14 | 0x14<<7 | 0x55, - 35379 - 19968: jis0208<<14 | 0x2B<<7 | 0x54, - 35380 - 19968: jis0208<<14 | 0x20<<7 | 0x29, - 35381 - 19968: jis0212<<14 | 0x3C<<7 | 0x32, - 35382 - 19968: jis0208<<14 | 0x4A<<7 | 0x24, - 35383 - 19968: jis0208<<14 | 0x5A<<7 | 0x47, - 35386 - 19968: jis0208<<14 | 0x1E<<7 | 0x26, - 35387 - 19968: jis0208<<14 | 0x22<<7 | 0x4F, - 35388 - 19968: jis0208<<14 | 0x1D<<7 | 0x39, - 35389 - 19968: jis0212<<14 | 0x3C<<7 | 0x34, - 35390 - 19968: jis0212<<14 | 0x3C<<7 | 0x35, - 35392 - 19968: jis0212<<14 | 0x3C<<7 | 0x36, - 35393 - 19968: jis0208<<14 | 0x4A<<7 | 0x25, - 35395 - 19968: jis0212<<14 | 0x3C<<7 | 0x37, - 35397 - 19968: jis0212<<14 | 0x3C<<7 | 0x38, - 35398 - 19968: jis0208<<14 | 0x4A<<7 | 0x28, - 35399 - 19968: jis0212<<14 | 0x3C<<7 | 0x39, - 35400 - 19968: jis0208<<14 | 0x4A<<7 | 0x29, - 35401 - 19968: jis0212<<14 | 0x3C<<7 | 0x3A, - 35405 - 19968: jis0212<<14 | 0x3C<<7 | 0x3B, - 35406 - 19968: jis0212<<14 | 0x3C<<7 | 0x3C, - 35408 - 19968: jis0208<<14 | 0x19<<7 | 0x1D, - 35409 - 19968: jis0208<<14 | 0x21<<7 | 0x21, - 35410 - 19968: jis0208<<14 | 0x4A<<7 | 0x27, - 35411 - 19968: jis0212<<14 | 0x3C<<7 | 0x3D, - 35412 - 19968: jis0208<<14 | 0x1D<<7 | 0x3A, - 35413 - 19968: jis0208<<14 | 0x28<<7 | 0x1D, - 35414 - 19968: jis0212<<14 | 0x3C<<7 | 0x3E, - 35415 - 19968: jis0212<<14 | 0x3C<<7 | 0x3F, - 35416 - 19968: jis0212<<14 | 0x3C<<7 | 0x40, - 35419 - 19968: jis0208<<14 | 0x4A<<7 | 0x26, - 35420 - 19968: jis0212<<14 | 0x3C<<7 | 0x41, - 35421 - 19968: jis0212<<14 | 0x3C<<7 | 0x42, - 35422 - 19968: jis0208<<14 | 0x1A<<7 | 0x4B, - 35424 - 19968: jis0208<<14 | 0x10<<7 | 0x32, - 35425 - 19968: jis0212<<14 | 0x3C<<7 | 0x43, - 35426 - 19968: jis0208<<14 | 0x4A<<7 | 0x2D, - 35427 - 19968: jis0208<<14 | 0x16<<7 | 0x37, - 35429 - 19968: jis0212<<14 | 0x3C<<7 | 0x44, - 35430 - 19968: jis0208<<14 | 0x1A<<7 | 0x4D, - 35431 - 19968: jis0212<<14 | 0x3C<<7 | 0x45, - 35433 - 19968: jis0208<<14 | 0x1A<<7 | 0x4C, - 35435 - 19968: jis0208<<14 | 0x2E<<7 | 0x2C, - 35436 - 19968: jis0208<<14 | 0x4A<<7 | 0x2C, - 35437 - 19968: jis0208<<14 | 0x4A<<7 | 0x2B, - 35438 - 19968: jis0208<<14 | 0x20<<7 | 0x06, - 35440 - 19968: jis0208<<14 | 0x14<<7 | 0x2C, - 35441 - 19968: jis0208<<14 | 0x2E<<7 | 0x22, - 35442 - 19968: jis0208<<14 | 0x12<<7 | 0x19, - 35443 - 19968: jis0208<<14 | 0x1D<<7 | 0x3B, - 35445 - 19968: jis0212<<14 | 0x3C<<7 | 0x46, - 35446 - 19968: jis0212<<14 | 0x3C<<7 | 0x47, - 35447 - 19968: jis0212<<14 | 0x3C<<7 | 0x48, - 35449 - 19968: jis0208<<14 | 0x5A<<7 | 0x48, - 35450 - 19968: jis0212<<14 | 0x3C<<7 | 0x4A, - 35451 - 19968: jis0212<<14 | 0x3C<<7 | 0x4B, - 35452 - 19968: jis0208<<14 | 0x4A<<7 | 0x2A, - 35454 - 19968: jis0212<<14 | 0x3C<<7 | 0x4C, - 35455 - 19968: jis0212<<14 | 0x3C<<7 | 0x4D, - 35456 - 19968: jis0212<<14 | 0x3C<<7 | 0x4E, - 35458 - 19968: jis0208<<14 | 0x4A<<7 | 0x2F, - 35459 - 19968: jis0212<<14 | 0x3C<<7 | 0x4F, - 35460 - 19968: jis0208<<14 | 0x4A<<7 | 0x30, - 35461 - 19968: jis0208<<14 | 0x4A<<7 | 0x2E, - 35462 - 19968: jis0212<<14 | 0x3C<<7 | 0x50, - 35463 - 19968: jis0208<<14 | 0x17<<7 | 0x37, - 35465 - 19968: jis0208<<14 | 0x2C<<7 | 0x1F, - 35467 - 19968: jis0212<<14 | 0x3C<<7 | 0x51, - 35468 - 19968: jis0208<<14 | 0x1A<<7 | 0x4E, - 35469 - 19968: jis0208<<14 | 0x26<<7 | 0x06, - 35471 - 19968: jis0212<<14 | 0x3C<<7 | 0x52, - 35472 - 19968: jis0212<<14 | 0x3C<<7 | 0x53, - 35473 - 19968: jis0208<<14 | 0x4A<<7 | 0x33, - 35474 - 19968: jis0212<<14 | 0x3C<<7 | 0x54, - 35475 - 19968: jis0208<<14 | 0x1F<<7 | 0x1F, - 35477 - 19968: jis0208<<14 | 0x22<<7 | 0x21, - 35478 - 19968: jis0212<<14 | 0x3C<<7 | 0x55, - 35479 - 19968: jis0212<<14 | 0x3C<<7 | 0x56, - 35480 - 19968: jis0208<<14 | 0x2C<<7 | 0x15, - 35481 - 19968: jis0212<<14 | 0x3C<<7 | 0x57, - 35482 - 19968: jis0208<<14 | 0x4A<<7 | 0x36, - 35486 - 19968: jis0208<<14 | 0x17<<7 | 0x4B, - 35487 - 19968: jis0212<<14 | 0x3C<<7 | 0x58, - 35488 - 19968: jis0208<<14 | 0x1F<<7 | 0x1E, - 35489 - 19968: jis0208<<14 | 0x4A<<7 | 0x32, - 35491 - 19968: jis0208<<14 | 0x4A<<7 | 0x37, - 35492 - 19968: jis0208<<14 | 0x17<<7 | 0x4C, - 35493 - 19968: jis0208<<14 | 0x4A<<7 | 0x34, - 35494 - 19968: jis0208<<14 | 0x4A<<7 | 0x35, - 35495 - 19968: jis0208<<14 | 0x5A<<7 | 0x49, - 35496 - 19968: jis0208<<14 | 0x4A<<7 | 0x31, - 35497 - 19968: jis0212<<14 | 0x3C<<7 | 0x5A, - 35500 - 19968: jis0208<<14 | 0x1F<<7 | 0x41, - 35501 - 19968: jis0208<<14 | 0x25<<7 | 0x28, - 35502 - 19968: jis0212<<14 | 0x3C<<7 | 0x5B, - 35503 - 19968: jis0212<<14 | 0x3C<<7 | 0x5C, - 35504 - 19968: jis0208<<14 | 0x22<<7 | 0x0E, - 35506 - 19968: jis0208<<14 | 0x11<<7 | 0x3C, - 35507 - 19968: jis0212<<14 | 0x3C<<7 | 0x5D, - 35510 - 19968: jis0212<<14 | 0x3D<<7 | 0x00, - 35511 - 19968: jis0212<<14 | 0x3D<<7 | 0x01, - 35513 - 19968: jis0208<<14 | 0x27<<7 | 0x4F, - 35515 - 19968: jis0212<<14 | 0x3D<<7 | 0x02, - 35516 - 19968: jis0208<<14 | 0x14<<7 | 0x22, - 35518 - 19968: jis0208<<14 | 0x5A<<7 | 0x4A, - 35519 - 19968: jis0208<<14 | 0x23<<7 | 0x13, - 35522 - 19968: jis0208<<14 | 0x4A<<7 | 0x3A, - 35523 - 19968: jis0212<<14 | 0x3D<<7 | 0x04, - 35524 - 19968: jis0208<<14 | 0x4A<<7 | 0x38, - 35526 - 19968: jis0212<<14 | 0x3D<<7 | 0x05, - 35527 - 19968: jis0208<<14 | 0x22<<7 | 0x2B, - 35528 - 19968: jis0212<<14 | 0x3D<<7 | 0x06, - 35529 - 19968: jis0212<<14 | 0x3D<<7 | 0x07, - 35530 - 19968: jis0212<<14 | 0x3D<<7 | 0x08, - 35531 - 19968: jis0208<<14 | 0x1F<<7 | 0x20, - 35532 - 19968: jis0208<<14 | 0x13<<7 | 0x31, - 35533 - 19968: jis0208<<14 | 0x4A<<7 | 0x39, - 35535 - 19968: jis0208<<14 | 0x1E<<7 | 0x3A, - 35537 - 19968: jis0212<<14 | 0x3D<<7 | 0x09, - 35538 - 19968: jis0208<<14 | 0x2D<<7 | 0x29, - 35539 - 19968: jis0212<<14 | 0x3D<<7 | 0x0A, - 35540 - 19968: jis0212<<14 | 0x3D<<7 | 0x0B, - 35541 - 19968: jis0212<<14 | 0x3D<<7 | 0x0C, - 35542 - 19968: jis0208<<14 | 0x2E<<7 | 0x1F, - 35543 - 19968: jis0212<<14 | 0x3D<<7 | 0x0D, - 35546 - 19968: jis0208<<14 | 0x4A<<7 | 0x3B, - 35547 - 19968: jis0208<<14 | 0x4A<<7 | 0x46, - 35548 - 19968: jis0208<<14 | 0x23<<7 | 0x14, - 35549 - 19968: jis0212<<14 | 0x3D<<7 | 0x0E, - 35550 - 19968: jis0208<<14 | 0x4A<<7 | 0x45, - 35551 - 19968: jis0208<<14 | 0x5A<<7 | 0x4B, - 35552 - 19968: jis0208<<14 | 0x4A<<7 | 0x42, - 35553 - 19968: jis0208<<14 | 0x4A<<7 | 0x4A, - 35554 - 19968: jis0208<<14 | 0x4A<<7 | 0x43, - 35556 - 19968: jis0208<<14 | 0x4A<<7 | 0x3F, - 35558 - 19968: jis0208<<14 | 0x23<<7 | 0x5B, - 35559 - 19968: jis0208<<14 | 0x4A<<7 | 0x3E, - 35563 - 19968: jis0208<<14 | 0x4A<<7 | 0x3C, - 35564 - 19968: jis0212<<14 | 0x3D<<7 | 0x10, - 35565 - 19968: jis0208<<14 | 0x2C<<7 | 0x00, - 35566 - 19968: jis0208<<14 | 0x1A<<7 | 0x4F, - 35568 - 19968: jis0212<<14 | 0x3D<<7 | 0x11, - 35569 - 19968: jis0208<<14 | 0x4A<<7 | 0x40, - 35571 - 19968: jis0208<<14 | 0x4A<<7 | 0x3D, - 35572 - 19968: jis0212<<14 | 0x3D<<7 | 0x12, - 35573 - 19968: jis0212<<14 | 0x3D<<7 | 0x13, - 35574 - 19968: jis0208<<14 | 0x5A<<7 | 0x4D, - 35575 - 19968: jis0208<<14 | 0x4A<<7 | 0x44, - 35576 - 19968: jis0208<<14 | 0x1C<<7 | 0x53, - 35578 - 19968: jis0208<<14 | 0x17<<7 | 0x20, - 35580 - 19968: jis0212<<14 | 0x3D<<7 | 0x15, - 35582 - 19968: jis0208<<14 | 0x21<<7 | 0x59, - 35583 - 19968: jis0212<<14 | 0x3D<<7 | 0x16, - 35584 - 19968: jis0208<<14 | 0x2A<<7 | 0x24, - 35585 - 19968: jis0208<<14 | 0x10<<7 | 0x39, - 35586 - 19968: jis0208<<14 | 0x0F<<7 | 0x41, - 35588 - 19968: jis0208<<14 | 0x25<<7 | 0x04, - 35589 - 19968: jis0212<<14 | 0x3D<<7 | 0x17, - 35590 - 19968: jis0212<<14 | 0x3D<<7 | 0x18, - 35591 - 19968: jis0208<<14 | 0x4A<<7 | 0x48, - 35594 - 19968: jis0212<<14 | 0x3D<<7 | 0x1E, - 35595 - 19968: jis0212<<14 | 0x3D<<7 | 0x19, - 35596 - 19968: jis0208<<14 | 0x4A<<7 | 0x47, - 35598 - 19968: jis0208<<14 | 0x25<<7 | 0x45, - 35600 - 19968: jis0208<<14 | 0x4A<<7 | 0x4C, - 35601 - 19968: jis0212<<14 | 0x3D<<7 | 0x1A, - 35604 - 19968: jis0208<<14 | 0x4A<<7 | 0x41, - 35606 - 19968: jis0208<<14 | 0x4A<<7 | 0x4B, - 35607 - 19968: jis0208<<14 | 0x4A<<7 | 0x4D, - 35609 - 19968: jis0208<<14 | 0x17<<7 | 0x0B, - 35610 - 19968: jis0208<<14 | 0x4A<<7 | 0x49, - 35611 - 19968: jis0208<<14 | 0x18<<7 | 0x35, - 35612 - 19968: jis0212<<14 | 0x3D<<7 | 0x1B, - 35613 - 19968: jis0208<<14 | 0x1B<<7 | 0x34, - 35614 - 19968: jis0212<<14 | 0x3D<<7 | 0x1C, - 35615 - 19968: jis0212<<14 | 0x3D<<7 | 0x1D, - 35616 - 19968: jis0208<<14 | 0x4A<<7 | 0x4E, - 35617 - 19968: jis0208<<14 | 0x2C<<7 | 0x37, - 35622 - 19968: jis0208<<14 | 0x4A<<7 | 0x51, - 35624 - 19968: jis0208<<14 | 0x4A<<7 | 0x54, - 35627 - 19968: jis0208<<14 | 0x4A<<7 | 0x52, - 35628 - 19968: jis0208<<14 | 0x28<<7 | 0x14, - 35629 - 19968: jis0212<<14 | 0x3D<<7 | 0x1F, - 35632 - 19968: jis0212<<14 | 0x3D<<7 | 0x20, - 35635 - 19968: jis0208<<14 | 0x4A<<7 | 0x4F, - 35639 - 19968: jis0212<<14 | 0x3D<<7 | 0x21, - 35641 - 19968: jis0208<<14 | 0x15<<7 | 0x3F, - 35644 - 19968: jis0212<<14 | 0x3D<<7 | 0x22, - 35646 - 19968: jis0208<<14 | 0x4A<<7 | 0x53, - 35649 - 19968: jis0208<<14 | 0x4A<<7 | 0x55, - 35650 - 19968: jis0212<<14 | 0x3D<<7 | 0x23, - 35651 - 19968: jis0212<<14 | 0x3D<<7 | 0x24, - 35652 - 19968: jis0212<<14 | 0x3D<<7 | 0x25, - 35653 - 19968: jis0212<<14 | 0x3D<<7 | 0x26, - 35654 - 19968: jis0212<<14 | 0x3D<<7 | 0x27, - 35656 - 19968: jis0212<<14 | 0x3D<<7 | 0x28, - 35657 - 19968: jis0208<<14 | 0x4A<<7 | 0x59, - 35660 - 19968: jis0208<<14 | 0x4A<<7 | 0x56, - 35661 - 19968: jis0212<<14 | 0x3D<<7 | 0x2D, - 35662 - 19968: jis0208<<14 | 0x4A<<7 | 0x58, - 35663 - 19968: jis0208<<14 | 0x4A<<7 | 0x57, - 35666 - 19968: jis0212<<14 | 0x3D<<7 | 0x29, - 35667 - 19968: jis0208<<14 | 0x5A<<7 | 0x4E, - 35668 - 19968: jis0212<<14 | 0x3D<<7 | 0x2B, - 35670 - 19968: jis0208<<14 | 0x4A<<7 | 0x5A, - 35672 - 19968: jis0208<<14 | 0x1B<<7 | 0x10, - 35673 - 19968: jis0212<<14 | 0x3D<<7 | 0x2C, - 35674 - 19968: jis0208<<14 | 0x4A<<7 | 0x5C, - 35675 - 19968: jis0208<<14 | 0x4A<<7 | 0x5B, - 35676 - 19968: jis0208<<14 | 0x28<<7 | 0x47, - 35678 - 19968: jis0212<<14 | 0x3D<<7 | 0x2E, - 35679 - 19968: jis0208<<14 | 0x4B<<7 | 0x00, - 35683 - 19968: jis0212<<14 | 0x3D<<7 | 0x2F, - 35686 - 19968: jis0208<<14 | 0x16<<7 | 0x38, - 35691 - 19968: jis0208<<14 | 0x4A<<7 | 0x5D, - 35692 - 19968: jis0208<<14 | 0x4B<<7 | 0x01, - 35693 - 19968: jis0212<<14 | 0x3D<<7 | 0x30, - 35695 - 19968: jis0208<<14 | 0x4B<<7 | 0x02, - 35696 - 19968: jis0208<<14 | 0x14<<7 | 0x23, - 35697 - 19968: jis0208<<14 | 0x45<<7 | 0x20, - 35698 - 19968: jis0208<<14 | 0x1D<<7 | 0x58, - 35700 - 19968: jis0208<<14 | 0x4B<<7 | 0x03, - 35702 - 19968: jis0212<<14 | 0x3D<<7 | 0x31, - 35703 - 19968: jis0208<<14 | 0x17<<7 | 0x4D, - 35704 - 19968: jis0212<<14 | 0x3D<<7 | 0x32, - 35705 - 19968: jis0212<<14 | 0x3D<<7 | 0x33, - 35708 - 19968: jis0212<<14 | 0x3D<<7 | 0x34, - 35709 - 19968: jis0208<<14 | 0x4B<<7 | 0x04, - 35710 - 19968: jis0212<<14 | 0x3D<<7 | 0x35, - 35711 - 19968: jis0208<<14 | 0x5A<<7 | 0x4F, - 35712 - 19968: jis0208<<14 | 0x4B<<7 | 0x05, - 35713 - 19968: jis0212<<14 | 0x3D<<7 | 0x36, - 35715 - 19968: jis0208<<14 | 0x1A<<7 | 0x1D, - 35716 - 19968: jis0212<<14 | 0x3D<<7 | 0x37, - 35717 - 19968: jis0212<<14 | 0x3D<<7 | 0x38, - 35722 - 19968: jis0208<<14 | 0x39<<7 | 0x2D, - 35723 - 19968: jis0212<<14 | 0x3D<<7 | 0x39, - 35724 - 19968: jis0208<<14 | 0x4B<<7 | 0x06, - 35725 - 19968: jis0212<<14 | 0x3D<<7 | 0x3A, - 35726 - 19968: jis0208<<14 | 0x4B<<7 | 0x07, - 35727 - 19968: jis0212<<14 | 0x3D<<7 | 0x3B, - 35728 - 19968: jis0208<<14 | 0x1C<<7 | 0x11, - 35730 - 19968: jis0208<<14 | 0x4B<<7 | 0x08, - 35731 - 19968: jis0208<<14 | 0x4B<<7 | 0x09, - 35732 - 19968: jis0212<<14 | 0x3D<<7 | 0x3C, - 35733 - 19968: jis0212<<14 | 0x3D<<7 | 0x3D, - 35734 - 19968: jis0208<<14 | 0x4B<<7 | 0x0A, - 35737 - 19968: jis0208<<14 | 0x4B<<7 | 0x0B, - 35738 - 19968: jis0208<<14 | 0x4B<<7 | 0x0C, - 35740 - 19968: jis0212<<14 | 0x3D<<7 | 0x3E, - 35742 - 19968: jis0212<<14 | 0x3D<<7 | 0x3F, - 35743 - 19968: jis0212<<14 | 0x3D<<7 | 0x40, - 35895 - 19968: jis0208<<14 | 0x22<<7 | 0x0A, - 35896 - 19968: jis0212<<14 | 0x3D<<7 | 0x41, - 35897 - 19968: jis0212<<14 | 0x3D<<7 | 0x42, - 35898 - 19968: jis0208<<14 | 0x4B<<7 | 0x0D, - 35901 - 19968: jis0212<<14 | 0x3D<<7 | 0x43, - 35902 - 19968: jis0212<<14 | 0x3D<<7 | 0x44, - 35903 - 19968: jis0208<<14 | 0x4B<<7 | 0x0F, - 35905 - 19968: jis0208<<14 | 0x4B<<7 | 0x0E, - 35909 - 19968: jis0212<<14 | 0x3D<<7 | 0x45, - 35910 - 19968: jis0208<<14 | 0x25<<7 | 0x05, - 35911 - 19968: jis0212<<14 | 0x3D<<7 | 0x46, - 35912 - 19968: jis0208<<14 | 0x4B<<7 | 0x10, - 35913 - 19968: jis0212<<14 | 0x3D<<7 | 0x47, - 35914 - 19968: jis0208<<14 | 0x2A<<7 | 0x0C, - 35915 - 19968: jis0212<<14 | 0x3D<<7 | 0x48, - 35916 - 19968: jis0208<<14 | 0x4B<<7 | 0x11, - 35918 - 19968: jis0208<<14 | 0x4B<<7 | 0x12, - 35919 - 19968: jis0212<<14 | 0x3D<<7 | 0x49, - 35920 - 19968: jis0208<<14 | 0x4B<<7 | 0x13, - 35921 - 19968: jis0212<<14 | 0x3D<<7 | 0x4A, - 35923 - 19968: jis0212<<14 | 0x3D<<7 | 0x4B, - 35924 - 19968: jis0212<<14 | 0x3D<<7 | 0x4C, - 35925 - 19968: jis0208<<14 | 0x4B<<7 | 0x14, - 35927 - 19968: jis0212<<14 | 0x3D<<7 | 0x4D, - 35928 - 19968: jis0212<<14 | 0x3D<<7 | 0x4E, - 35929 - 19968: jis0212<<14 | 0x3D<<7 | 0x51, - 35930 - 19968: jis0208<<14 | 0x25<<7 | 0x39, - 35931 - 19968: jis0212<<14 | 0x3D<<7 | 0x4F, - 35933 - 19968: jis0212<<14 | 0x3D<<7 | 0x50, - 35937 - 19968: jis0208<<14 | 0x1D<<7 | 0x3C, - 35938 - 19968: jis0208<<14 | 0x4B<<7 | 0x15, - 35939 - 19968: jis0212<<14 | 0x3D<<7 | 0x52, - 35940 - 19968: jis0212<<14 | 0x3D<<7 | 0x53, - 35942 - 19968: jis0212<<14 | 0x3D<<7 | 0x54, - 35944 - 19968: jis0212<<14 | 0x3D<<7 | 0x55, - 35945 - 19968: jis0212<<14 | 0x3D<<7 | 0x56, - 35946 - 19968: jis0208<<14 | 0x18<<7 | 0x4A, - 35947 - 19968: jis0208<<14 | 0x2F<<7 | 0x0D, - 35948 - 19968: jis0208<<14 | 0x4B<<7 | 0x16, - 35949 - 19968: jis0212<<14 | 0x3D<<7 | 0x57, - 35955 - 19968: jis0212<<14 | 0x3D<<7 | 0x58, - 35957 - 19968: jis0212<<14 | 0x3D<<7 | 0x59, - 35958 - 19968: jis0212<<14 | 0x3D<<7 | 0x5A, - 35960 - 19968: jis0208<<14 | 0x4B<<7 | 0x17, - 35961 - 19968: jis0208<<14 | 0x28<<7 | 0x1E, - 35962 - 19968: jis0208<<14 | 0x4B<<7 | 0x18, - 35963 - 19968: jis0212<<14 | 0x3D<<7 | 0x5B, - 35964 - 19968: jis0208<<14 | 0x4B<<7 | 0x20, - 35966 - 19968: jis0212<<14 | 0x3D<<7 | 0x5C, - 35970 - 19968: jis0208<<14 | 0x4B<<7 | 0x19, - 35973 - 19968: jis0208<<14 | 0x4B<<7 | 0x1B, - 35974 - 19968: jis0212<<14 | 0x3D<<7 | 0x5D, - 35975 - 19968: jis0212<<14 | 0x3E<<7 | 0x00, - 35977 - 19968: jis0208<<14 | 0x4B<<7 | 0x1A, - 35978 - 19968: jis0208<<14 | 0x4B<<7 | 0x1C, - 35979 - 19968: jis0212<<14 | 0x3E<<7 | 0x01, - 35980 - 19968: jis0208<<14 | 0x2A<<7 | 0x25, - 35981 - 19968: jis0208<<14 | 0x4B<<7 | 0x1D, - 35982 - 19968: jis0208<<14 | 0x4B<<7 | 0x1E, - 35984 - 19968: jis0212<<14 | 0x3E<<7 | 0x02, - 35986 - 19968: jis0212<<14 | 0x3E<<7 | 0x03, - 35987 - 19968: jis0212<<14 | 0x3E<<7 | 0x04, - 35988 - 19968: jis0208<<14 | 0x4B<<7 | 0x1F, - 35992 - 19968: jis0208<<14 | 0x4B<<7 | 0x21, - 35993 - 19968: jis0212<<14 | 0x3E<<7 | 0x05, - 35995 - 19968: jis0212<<14 | 0x3E<<7 | 0x06, - 35996 - 19968: jis0212<<14 | 0x3E<<7 | 0x07, - 35997 - 19968: jis0208<<14 | 0x12<<7 | 0x0C, - 35998 - 19968: jis0208<<14 | 0x23<<7 | 0x46, - 36000 - 19968: jis0208<<14 | 0x28<<7 | 0x48, - 36001 - 19968: jis0208<<14 | 0x19<<7 | 0x41, - 36002 - 19968: jis0208<<14 | 0x18<<7 | 0x36, - 36004 - 19968: jis0212<<14 | 0x3E<<7 | 0x08, - 36007 - 19968: jis0208<<14 | 0x28<<7 | 0x2E, - 36008 - 19968: jis0208<<14 | 0x11<<7 | 0x3E, - 36009 - 19968: jis0208<<14 | 0x27<<7 | 0x2D, - 36010 - 19968: jis0208<<14 | 0x4B<<7 | 0x24, - 36011 - 19968: jis0208<<14 | 0x13<<7 | 0x32, - 36012 - 19968: jis0208<<14 | 0x1F<<7 | 0x34, - 36013 - 19968: jis0208<<14 | 0x4B<<7 | 0x23, - 36014 - 19968: jis0208<<14 | 0x4B<<7 | 0x28, - 36015 - 19968: jis0208<<14 | 0x22<<7 | 0x58, - 36016 - 19968: jis0208<<14 | 0x2B<<7 | 0x42, - 36018 - 19968: jis0208<<14 | 0x4B<<7 | 0x26, - 36019 - 19968: jis0208<<14 | 0x4B<<7 | 0x27, - 36020 - 19968: jis0208<<14 | 0x14<<7 | 0x0D, - 36022 - 19968: jis0208<<14 | 0x4B<<7 | 0x29, - 36023 - 19968: jis0208<<14 | 0x26<<7 | 0x42, - 36024 - 19968: jis0208<<14 | 0x21<<7 | 0x3E, - 36025 - 19968: jis0212<<14 | 0x3E<<7 | 0x09, - 36026 - 19968: jis0212<<14 | 0x3E<<7 | 0x0A, - 36027 - 19968: jis0208<<14 | 0x27<<7 | 0x50, - 36028 - 19968: jis0208<<14 | 0x24<<7 | 0x1C, - 36029 - 19968: jis0208<<14 | 0x4B<<7 | 0x25, - 36031 - 19968: jis0208<<14 | 0x2A<<7 | 0x26, - 36032 - 19968: jis0208<<14 | 0x11<<7 | 0x4B, - 36033 - 19968: jis0208<<14 | 0x4B<<7 | 0x2B, - 36034 - 19968: jis0208<<14 | 0x2E<<7 | 0x07, - 36035 - 19968: jis0208<<14 | 0x23<<7 | 0x21, - 36036 - 19968: jis0208<<14 | 0x2E<<7 | 0x24, - 36037 - 19968: jis0212<<14 | 0x3E<<7 | 0x0B, - 36038 - 19968: jis0212<<14 | 0x3E<<7 | 0x0C, - 36039 - 19968: jis0208<<14 | 0x1A<<7 | 0x50, - 36040 - 19968: jis0208<<14 | 0x4B<<7 | 0x2A, - 36041 - 19968: jis0212<<14 | 0x3E<<7 | 0x0D, - 36042 - 19968: jis0208<<14 | 0x21<<7 | 0x10, - 36043 - 19968: jis0212<<14 | 0x3E<<7 | 0x0E, - 36045 - 19968: jis0208<<14 | 0x4B<<7 | 0x3B, - 36046 - 19968: jis0208<<14 | 0x20<<7 | 0x07, - 36047 - 19968: jis0212<<14 | 0x3E<<7 | 0x0F, - 36049 - 19968: jis0208<<14 | 0x25<<7 | 0x57, - 36051 - 19968: jis0208<<14 | 0x28<<7 | 0x2F, - 36053 - 19968: jis0212<<14 | 0x3E<<7 | 0x11, - 36054 - 19968: jis0212<<14 | 0x3E<<7 | 0x10, - 36057 - 19968: jis0212<<14 | 0x3E<<7 | 0x12, - 36058 - 19968: jis0208<<14 | 0x4B<<7 | 0x2E, - 36059 - 19968: jis0208<<14 | 0x1A<<7 | 0x1E, - 36060 - 19968: jis0208<<14 | 0x1A<<7 | 0x51, - 36061 - 19968: jis0212<<14 | 0x3E<<7 | 0x13, - 36062 - 19968: jis0208<<14 | 0x1D<<7 | 0x3D, - 36064 - 19968: jis0208<<14 | 0x26<<7 | 0x44, - 36065 - 19968: jis0212<<14 | 0x3E<<7 | 0x14, - 36066 - 19968: jis0208<<14 | 0x17<<7 | 0x0C, - 36067 - 19968: jis0208<<14 | 0x4B<<7 | 0x2D, - 36068 - 19968: jis0208<<14 | 0x4B<<7 | 0x2C, - 36070 - 19968: jis0208<<14 | 0x28<<7 | 0x49, - 36072 - 19968: jis0212<<14 | 0x3E<<7 | 0x15, - 36074 - 19968: jis0208<<14 | 0x1B<<7 | 0x20, - 36076 - 19968: jis0212<<14 | 0x3E<<7 | 0x16, - 36077 - 19968: jis0208<<14 | 0x24<<7 | 0x31, - 36079 - 19968: jis0212<<14 | 0x3E<<7 | 0x17, - 36080 - 19968: jis0208<<14 | 0x5A<<7 | 0x50, - 36082 - 19968: jis0212<<14 | 0x3E<<7 | 0x19, - 36084 - 19968: jis0208<<14 | 0x5A<<7 | 0x51, - 36085 - 19968: jis0212<<14 | 0x3E<<7 | 0x1A, - 36087 - 19968: jis0212<<14 | 0x3E<<7 | 0x1B, - 36088 - 19968: jis0212<<14 | 0x3E<<7 | 0x1C, - 36090 - 19968: jis0208<<14 | 0x4B<<7 | 0x30, - 36091 - 19968: jis0208<<14 | 0x4B<<7 | 0x31, - 36092 - 19968: jis0208<<14 | 0x18<<7 | 0x37, - 36093 - 19968: jis0208<<14 | 0x4B<<7 | 0x2F, - 36094 - 19968: jis0212<<14 | 0x3E<<7 | 0x1D, - 36095 - 19968: jis0212<<14 | 0x3E<<7 | 0x1E, - 36097 - 19968: jis0212<<14 | 0x3E<<7 | 0x1F, - 36099 - 19968: jis0212<<14 | 0x3E<<7 | 0x20, - 36100 - 19968: jis0208<<14 | 0x4B<<7 | 0x32, - 36101 - 19968: jis0208<<14 | 0x4B<<7 | 0x33, - 36103 - 19968: jis0208<<14 | 0x4B<<7 | 0x35, - 36104 - 19968: jis0208<<14 | 0x21<<7 | 0x02, - 36105 - 19968: jis0212<<14 | 0x3E<<7 | 0x21, - 36106 - 19968: jis0208<<14 | 0x4B<<7 | 0x34, - 36107 - 19968: jis0208<<14 | 0x13<<7 | 0x45, - 36109 - 19968: jis0208<<14 | 0x4B<<7 | 0x37, - 36111 - 19968: jis0208<<14 | 0x4B<<7 | 0x36, - 36112 - 19968: jis0208<<14 | 0x4B<<7 | 0x38, - 36114 - 19968: jis0208<<14 | 0x5A<<7 | 0x52, - 36115 - 19968: jis0208<<14 | 0x4B<<7 | 0x3A, - 36116 - 19968: jis0208<<14 | 0x4B<<7 | 0x3C, - 36118 - 19968: jis0208<<14 | 0x4B<<7 | 0x3D, - 36119 - 19968: jis0212<<14 | 0x3E<<7 | 0x23, - 36123 - 19968: jis0212<<14 | 0x3E<<7 | 0x24, - 36196 - 19968: jis0208<<14 | 0x1F<<7 | 0x35, - 36197 - 19968: jis0212<<14 | 0x3E<<7 | 0x25, - 36198 - 19968: jis0208<<14 | 0x1B<<7 | 0x2E, - 36199 - 19968: jis0208<<14 | 0x4B<<7 | 0x3E, - 36201 - 19968: jis0212<<14 | 0x3E<<7 | 0x26, - 36203 - 19968: jis0208<<14 | 0x12<<7 | 0x31, - 36204 - 19968: jis0212<<14 | 0x3E<<7 | 0x27, - 36205 - 19968: jis0208<<14 | 0x4B<<7 | 0x3F, - 36206 - 19968: jis0212<<14 | 0x3E<<7 | 0x28, - 36208 - 19968: jis0208<<14 | 0x20<<7 | 0x55, - 36209 - 19968: jis0208<<14 | 0x4B<<7 | 0x40, - 36211 - 19968: jis0208<<14 | 0x4B<<7 | 0x41, - 36212 - 19968: jis0208<<14 | 0x28<<7 | 0x4A, - 36214 - 19968: jis0208<<14 | 0x5A<<7 | 0x53, - 36215 - 19968: jis0208<<14 | 0x14<<7 | 0x0E, - 36223 - 19968: jis0212<<14 | 0x3E<<7 | 0x29, - 36225 - 19968: jis0208<<14 | 0x4B<<7 | 0x42, - 36226 - 19968: jis0212<<14 | 0x3E<<7 | 0x2A, - 36228 - 19968: jis0212<<14 | 0x3E<<7 | 0x2B, - 36229 - 19968: jis0208<<14 | 0x23<<7 | 0x15, - 36232 - 19968: jis0212<<14 | 0x3E<<7 | 0x2C, - 36234 - 19968: jis0208<<14 | 0x10<<7 | 0x3A, - 36237 - 19968: jis0212<<14 | 0x3E<<7 | 0x2D, - 36240 - 19968: jis0212<<14 | 0x3E<<7 | 0x2E, - 36241 - 19968: jis0212<<14 | 0x3E<<7 | 0x2F, - 36245 - 19968: jis0212<<14 | 0x3E<<7 | 0x30, - 36249 - 19968: jis0208<<14 | 0x4B<<7 | 0x43, - 36254 - 19968: jis0212<<14 | 0x3E<<7 | 0x31, - 36255 - 19968: jis0212<<14 | 0x3E<<7 | 0x32, - 36256 - 19968: jis0212<<14 | 0x3E<<7 | 0x33, - 36259 - 19968: jis0208<<14 | 0x1B<<7 | 0x50, - 36262 - 19968: jis0212<<14 | 0x3E<<7 | 0x34, - 36264 - 19968: jis0208<<14 | 0x1E<<7 | 0x55, - 36267 - 19968: jis0212<<14 | 0x3E<<7 | 0x35, - 36268 - 19968: jis0212<<14 | 0x3E<<7 | 0x36, - 36271 - 19968: jis0212<<14 | 0x3E<<7 | 0x37, - 36274 - 19968: jis0212<<14 | 0x3E<<7 | 0x38, - 36275 - 19968: jis0208<<14 | 0x21<<7 | 0x0C, - 36277 - 19968: jis0212<<14 | 0x3E<<7 | 0x39, - 36279 - 19968: jis0212<<14 | 0x3E<<7 | 0x3A, - 36281 - 19968: jis0212<<14 | 0x3E<<7 | 0x3B, - 36282 - 19968: jis0208<<14 | 0x4B<<7 | 0x46, - 36283 - 19968: jis0212<<14 | 0x3E<<7 | 0x3C, - 36284 - 19968: jis0212<<14 | 0x3E<<7 | 0x4E, - 36286 - 19968: jis0208<<14 | 0x4B<<7 | 0x45, - 36288 - 19968: jis0212<<14 | 0x3E<<7 | 0x3D, - 36290 - 19968: jis0208<<14 | 0x4B<<7 | 0x44, - 36293 - 19968: jis0212<<14 | 0x3E<<7 | 0x3E, - 36294 - 19968: jis0212<<14 | 0x3E<<7 | 0x3F, - 36295 - 19968: jis0212<<14 | 0x3E<<7 | 0x40, - 36296 - 19968: jis0212<<14 | 0x3E<<7 | 0x41, - 36298 - 19968: jis0212<<14 | 0x3E<<7 | 0x42, - 36299 - 19968: jis0208<<14 | 0x4B<<7 | 0x4C, - 36300 - 19968: jis0208<<14 | 0x4B<<7 | 0x4A, - 36302 - 19968: jis0212<<14 | 0x3E<<7 | 0x43, - 36303 - 19968: jis0208<<14 | 0x4B<<7 | 0x47, - 36305 - 19968: jis0212<<14 | 0x3E<<7 | 0x44, - 36308 - 19968: jis0212<<14 | 0x3E<<7 | 0x45, - 36309 - 19968: jis0212<<14 | 0x3E<<7 | 0x46, - 36310 - 19968: jis0208<<14 | 0x4B<<7 | 0x49, - 36311 - 19968: jis0212<<14 | 0x3E<<7 | 0x47, - 36313 - 19968: jis0212<<14 | 0x3E<<7 | 0x48, - 36314 - 19968: jis0208<<14 | 0x4B<<7 | 0x48, - 36315 - 19968: jis0208<<14 | 0x4B<<7 | 0x4B, - 36317 - 19968: jis0208<<14 | 0x14<<7 | 0x56, - 36319 - 19968: jis0208<<14 | 0x4B<<7 | 0x4F, - 36321 - 19968: jis0208<<14 | 0x1F<<7 | 0x36, - 36323 - 19968: jis0208<<14 | 0x4B<<7 | 0x50, - 36324 - 19968: jis0212<<14 | 0x3E<<7 | 0x49, - 36325 - 19968: jis0212<<14 | 0x3E<<7 | 0x4A, - 36327 - 19968: jis0212<<14 | 0x3E<<7 | 0x4B, - 36328 - 19968: jis0208<<14 | 0x17<<7 | 0x38, - 36330 - 19968: jis0208<<14 | 0x4B<<7 | 0x4D, - 36331 - 19968: jis0208<<14 | 0x4B<<7 | 0x4E, - 36332 - 19968: jis0212<<14 | 0x3E<<7 | 0x4C, - 36335 - 19968: jis0208<<14 | 0x2E<<7 | 0x08, - 36336 - 19968: jis0212<<14 | 0x3E<<7 | 0x4D, - 36337 - 19968: jis0212<<14 | 0x3E<<7 | 0x4F, - 36338 - 19968: jis0212<<14 | 0x3E<<7 | 0x50, - 36339 - 19968: jis0208<<14 | 0x23<<7 | 0x16, - 36340 - 19968: jis0212<<14 | 0x3E<<7 | 0x51, - 36341 - 19968: jis0208<<14 | 0x20<<7 | 0x08, - 36348 - 19968: jis0208<<14 | 0x4B<<7 | 0x51, - 36349 - 19968: jis0212<<14 | 0x3E<<7 | 0x52, - 36351 - 19968: jis0208<<14 | 0x4B<<7 | 0x54, - 36353 - 19968: jis0212<<14 | 0x3E<<7 | 0x53, - 36356 - 19968: jis0212<<14 | 0x3E<<7 | 0x54, - 36357 - 19968: jis0212<<14 | 0x3E<<7 | 0x55, - 36358 - 19968: jis0212<<14 | 0x3E<<7 | 0x56, - 36360 - 19968: jis0208<<14 | 0x4B<<7 | 0x52, - 36361 - 19968: jis0208<<14 | 0x4B<<7 | 0x53, - 36362 - 19968: jis0208<<14 | 0x2C<<7 | 0x38, - 36363 - 19968: jis0212<<14 | 0x3E<<7 | 0x57, - 36367 - 19968: jis0208<<14 | 0x25<<7 | 0x06, - 36368 - 19968: jis0208<<14 | 0x4B<<7 | 0x57, - 36369 - 19968: jis0212<<14 | 0x3E<<7 | 0x58, - 36372 - 19968: jis0212<<14 | 0x3E<<7 | 0x59, - 36374 - 19968: jis0212<<14 | 0x3E<<7 | 0x5A, - 36381 - 19968: jis0208<<14 | 0x4B<<7 | 0x55, - 36382 - 19968: jis0208<<14 | 0x4B<<7 | 0x56, - 36383 - 19968: jis0208<<14 | 0x4B<<7 | 0x58, - 36384 - 19968: jis0212<<14 | 0x3E<<7 | 0x5B, - 36385 - 19968: jis0212<<14 | 0x3E<<7 | 0x5C, - 36386 - 19968: jis0212<<14 | 0x3E<<7 | 0x5D, - 36387 - 19968: jis0212<<14 | 0x3F<<7 | 0x00, - 36390 - 19968: jis0212<<14 | 0x3F<<7 | 0x01, - 36391 - 19968: jis0212<<14 | 0x3F<<7 | 0x02, - 36394 - 19968: jis0208<<14 | 0x4C<<7 | 0x08, - 36400 - 19968: jis0208<<14 | 0x4B<<7 | 0x5B, - 36401 - 19968: jis0212<<14 | 0x3F<<7 | 0x03, - 36403 - 19968: jis0212<<14 | 0x3F<<7 | 0x04, - 36404 - 19968: jis0208<<14 | 0x4B<<7 | 0x5C, - 36405 - 19968: jis0208<<14 | 0x4B<<7 | 0x5A, - 36406 - 19968: jis0212<<14 | 0x3F<<7 | 0x05, - 36407 - 19968: jis0212<<14 | 0x3F<<7 | 0x06, - 36408 - 19968: jis0212<<14 | 0x3F<<7 | 0x07, - 36409 - 19968: jis0212<<14 | 0x3F<<7 | 0x08, - 36413 - 19968: jis0212<<14 | 0x3F<<7 | 0x09, - 36416 - 19968: jis0212<<14 | 0x3F<<7 | 0x0A, - 36417 - 19968: jis0212<<14 | 0x3F<<7 | 0x0B, - 36418 - 19968: jis0208<<14 | 0x4B<<7 | 0x59, - 36420 - 19968: jis0208<<14 | 0x23<<7 | 0x5C, - 36423 - 19968: jis0208<<14 | 0x4C<<7 | 0x00, - 36424 - 19968: jis0208<<14 | 0x4C<<7 | 0x04, - 36425 - 19968: jis0208<<14 | 0x4C<<7 | 0x01, - 36426 - 19968: jis0208<<14 | 0x4B<<7 | 0x5D, - 36427 - 19968: jis0212<<14 | 0x3F<<7 | 0x0C, - 36428 - 19968: jis0208<<14 | 0x4C<<7 | 0x02, - 36429 - 19968: jis0212<<14 | 0x3F<<7 | 0x0D, - 36430 - 19968: jis0212<<14 | 0x3F<<7 | 0x0E, - 36431 - 19968: jis0212<<14 | 0x3F<<7 | 0x0F, - 36432 - 19968: jis0208<<14 | 0x4C<<7 | 0x03, - 36436 - 19968: jis0212<<14 | 0x3F<<7 | 0x10, - 36437 - 19968: jis0208<<14 | 0x4C<<7 | 0x0A, - 36441 - 19968: jis0208<<14 | 0x4C<<7 | 0x05, - 36443 - 19968: jis0212<<14 | 0x3F<<7 | 0x11, - 36444 - 19968: jis0212<<14 | 0x3F<<7 | 0x12, - 36445 - 19968: jis0212<<14 | 0x3F<<7 | 0x13, - 36446 - 19968: jis0212<<14 | 0x3F<<7 | 0x14, - 36447 - 19968: jis0208<<14 | 0x1F<<7 | 0x37, - 36448 - 19968: jis0208<<14 | 0x4C<<7 | 0x07, - 36449 - 19968: jis0212<<14 | 0x3F<<7 | 0x15, - 36450 - 19968: jis0212<<14 | 0x3F<<7 | 0x16, - 36451 - 19968: jis0208<<14 | 0x4C<<7 | 0x09, - 36452 - 19968: jis0208<<14 | 0x4C<<7 | 0x06, - 36457 - 19968: jis0212<<14 | 0x3F<<7 | 0x17, - 36460 - 19968: jis0212<<14 | 0x3F<<7 | 0x18, - 36461 - 19968: jis0212<<14 | 0x3F<<7 | 0x19, - 36463 - 19968: jis0212<<14 | 0x3F<<7 | 0x1A, - 36464 - 19968: jis0212<<14 | 0x3F<<7 | 0x1B, - 36465 - 19968: jis0212<<14 | 0x3F<<7 | 0x1C, - 36466 - 19968: jis0208<<14 | 0x4C<<7 | 0x0C, - 36468 - 19968: jis0208<<14 | 0x1C<<7 | 0x12, - 36470 - 19968: jis0208<<14 | 0x4C<<7 | 0x0B, - 36473 - 19968: jis0212<<14 | 0x3F<<7 | 0x1D, - 36474 - 19968: jis0212<<14 | 0x3F<<7 | 0x1E, - 36475 - 19968: jis0212<<14 | 0x3F<<7 | 0x1F, - 36476 - 19968: jis0208<<14 | 0x4C<<7 | 0x0D, - 36481 - 19968: jis0208<<14 | 0x4C<<7 | 0x0E, - 36482 - 19968: jis0212<<14 | 0x3F<<7 | 0x20, - 36483 - 19968: jis0212<<14 | 0x3F<<7 | 0x21, - 36484 - 19968: jis0208<<14 | 0x4C<<7 | 0x11, - 36485 - 19968: jis0208<<14 | 0x4C<<7 | 0x10, - 36487 - 19968: jis0208<<14 | 0x4C<<7 | 0x0F, - 36489 - 19968: jis0212<<14 | 0x3F<<7 | 0x22, - 36490 - 19968: jis0208<<14 | 0x4C<<7 | 0x13, - 36491 - 19968: jis0208<<14 | 0x4C<<7 | 0x12, - 36493 - 19968: jis0208<<14 | 0x2B<<7 | 0x55, - 36496 - 19968: jis0212<<14 | 0x3F<<7 | 0x23, - 36497 - 19968: jis0208<<14 | 0x4C<<7 | 0x15, - 36498 - 19968: jis0212<<14 | 0x3F<<7 | 0x24, - 36499 - 19968: jis0208<<14 | 0x4C<<7 | 0x14, - 36500 - 19968: jis0208<<14 | 0x4C<<7 | 0x16, - 36501 - 19968: jis0212<<14 | 0x3F<<7 | 0x25, - 36505 - 19968: jis0208<<14 | 0x4C<<7 | 0x17, - 36506 - 19968: jis0212<<14 | 0x3F<<7 | 0x26, - 36507 - 19968: jis0212<<14 | 0x3F<<7 | 0x27, - 36509 - 19968: jis0212<<14 | 0x3F<<7 | 0x28, - 36510 - 19968: jis0212<<14 | 0x3F<<7 | 0x29, - 36513 - 19968: jis0208<<14 | 0x4C<<7 | 0x19, - 36514 - 19968: jis0212<<14 | 0x3F<<7 | 0x2A, - 36519 - 19968: jis0212<<14 | 0x3F<<7 | 0x2B, - 36521 - 19968: jis0212<<14 | 0x3F<<7 | 0x2C, - 36522 - 19968: jis0208<<14 | 0x4C<<7 | 0x18, - 36523 - 19968: jis0208<<14 | 0x1E<<7 | 0x27, - 36524 - 19968: jis0208<<14 | 0x4C<<7 | 0x1A, - 36525 - 19968: jis0212<<14 | 0x3F<<7 | 0x2D, - 36526 - 19968: jis0212<<14 | 0x3F<<7 | 0x2E, - 36527 - 19968: jis0208<<14 | 0x15<<7 | 0x4C, - 36528 - 19968: jis0208<<14 | 0x4C<<7 | 0x1B, - 36529 - 19968: jis0208<<14 | 0x4C<<7 | 0x1D, - 36531 - 19968: jis0212<<14 | 0x3F<<7 | 0x2F, - 36533 - 19968: jis0212<<14 | 0x3F<<7 | 0x30, - 36538 - 19968: jis0212<<14 | 0x3F<<7 | 0x31, - 36539 - 19968: jis0212<<14 | 0x3F<<7 | 0x32, - 36542 - 19968: jis0208<<14 | 0x4C<<7 | 0x1E, - 36544 - 19968: jis0212<<14 | 0x3F<<7 | 0x33, - 36545 - 19968: jis0212<<14 | 0x3F<<7 | 0x34, - 36547 - 19968: jis0212<<14 | 0x3F<<7 | 0x35, - 36548 - 19968: jis0212<<14 | 0x3F<<7 | 0x36, - 36549 - 19968: jis0208<<14 | 0x4C<<7 | 0x1F, - 36550 - 19968: jis0208<<14 | 0x4C<<7 | 0x1C, - 36551 - 19968: jis0212<<14 | 0x3F<<7 | 0x37, - 36552 - 19968: jis0208<<14 | 0x4C<<7 | 0x20, - 36554 - 19968: jis0208<<14 | 0x1B<<7 | 0x35, - 36555 - 19968: jis0208<<14 | 0x4C<<7 | 0x21, - 36556 - 19968: jis0208<<14 | 0x14<<7 | 0x0F, - 36557 - 19968: jis0208<<14 | 0x16<<7 | 0x12, - 36559 - 19968: jis0208<<14 | 0x5A<<7 | 0x55, - 36561 - 19968: jis0212<<14 | 0x3F<<7 | 0x39, - 36562 - 19968: jis0208<<14 | 0x17<<7 | 0x0D, - 36564 - 19968: jis0212<<14 | 0x3F<<7 | 0x3A, - 36571 - 19968: jis0208<<14 | 0x4C<<7 | 0x22, - 36572 - 19968: jis0212<<14 | 0x3F<<7 | 0x3B, - 36575 - 19968: jis0208<<14 | 0x25<<7 | 0x4F, - 36578 - 19968: jis0208<<14 | 0x24<<7 | 0x1D, - 36579 - 19968: jis0208<<14 | 0x4C<<7 | 0x23, - 36584 - 19968: jis0212<<14 | 0x3F<<7 | 0x3C, - 36587 - 19968: jis0208<<14 | 0x4C<<7 | 0x26, - 36589 - 19968: jis0212<<14 | 0x3F<<7 | 0x43, - 36590 - 19968: jis0212<<14 | 0x3F<<7 | 0x3D, - 36592 - 19968: jis0212<<14 | 0x3F<<7 | 0x3E, - 36593 - 19968: jis0212<<14 | 0x3F<<7 | 0x3F, - 36599 - 19968: jis0212<<14 | 0x3F<<7 | 0x40, - 36600 - 19968: jis0208<<14 | 0x1B<<7 | 0x13, - 36601 - 19968: jis0212<<14 | 0x3F<<7 | 0x41, - 36602 - 19968: jis0212<<14 | 0x3F<<7 | 0x42, - 36603 - 19968: jis0208<<14 | 0x4C<<7 | 0x25, - 36604 - 19968: jis0208<<14 | 0x4C<<7 | 0x24, - 36605 - 19968: jis0208<<14 | 0x16<<7 | 0x39, - 36606 - 19968: jis0208<<14 | 0x4C<<7 | 0x27, - 36608 - 19968: jis0212<<14 | 0x3F<<7 | 0x44, - 36610 - 19968: jis0212<<14 | 0x3F<<7 | 0x45, - 36611 - 19968: jis0208<<14 | 0x12<<7 | 0x32, - 36613 - 19968: jis0208<<14 | 0x4C<<7 | 0x29, - 36615 - 19968: jis0212<<14 | 0x3F<<7 | 0x46, - 36616 - 19968: jis0212<<14 | 0x3F<<7 | 0x47, - 36617 - 19968: jis0208<<14 | 0x19<<7 | 0x3B, - 36618 - 19968: jis0208<<14 | 0x4C<<7 | 0x28, - 36620 - 19968: jis0208<<14 | 0x4C<<7 | 0x31, - 36623 - 19968: jis0212<<14 | 0x3F<<7 | 0x48, - 36624 - 19968: jis0212<<14 | 0x3F<<7 | 0x49, - 36626 - 19968: jis0208<<14 | 0x4C<<7 | 0x2B, - 36627 - 19968: jis0208<<14 | 0x4C<<7 | 0x2D, - 36628 - 19968: jis0208<<14 | 0x29<<7 | 0x44, - 36629 - 19968: jis0208<<14 | 0x4C<<7 | 0x2A, - 36630 - 19968: jis0212<<14 | 0x3F<<7 | 0x4A, - 36631 - 19968: jis0212<<14 | 0x3F<<7 | 0x4B, - 36632 - 19968: jis0212<<14 | 0x3F<<7 | 0x4C, - 36633 - 19968: jis0208<<14 | 0x4C<<7 | 0x2C, - 36635 - 19968: jis0208<<14 | 0x4C<<7 | 0x30, - 36636 - 19968: jis0208<<14 | 0x4C<<7 | 0x2E, - 36637 - 19968: jis0208<<14 | 0x14<<7 | 0x10, - 36638 - 19968: jis0212<<14 | 0x3F<<7 | 0x4D, - 36639 - 19968: jis0208<<14 | 0x4C<<7 | 0x2F, - 36640 - 19968: jis0212<<14 | 0x3F<<7 | 0x4E, - 36641 - 19968: jis0212<<14 | 0x3F<<7 | 0x4F, - 36643 - 19968: jis0212<<14 | 0x3F<<7 | 0x50, - 36645 - 19968: jis0212<<14 | 0x3F<<7 | 0x51, - 36646 - 19968: jis0208<<14 | 0x4C<<7 | 0x32, - 36647 - 19968: jis0212<<14 | 0x3F<<7 | 0x52, - 36648 - 19968: jis0212<<14 | 0x3F<<7 | 0x53, - 36649 - 19968: jis0208<<14 | 0x26<<7 | 0x39, - 36650 - 19968: jis0208<<14 | 0x2D<<7 | 0x37, - 36652 - 19968: jis0212<<14 | 0x3F<<7 | 0x54, - 36653 - 19968: jis0212<<14 | 0x3F<<7 | 0x55, - 36654 - 19968: jis0212<<14 | 0x3F<<7 | 0x56, - 36655 - 19968: jis0208<<14 | 0x1C<<7 | 0x13, - 36659 - 19968: jis0208<<14 | 0x4C<<7 | 0x33, - 36660 - 19968: jis0212<<14 | 0x3F<<7 | 0x57, - 36661 - 19968: jis0212<<14 | 0x3F<<7 | 0x58, - 36662 - 19968: jis0212<<14 | 0x3F<<7 | 0x59, - 36663 - 19968: jis0212<<14 | 0x3F<<7 | 0x5A, - 36664 - 19968: jis0208<<14 | 0x2C<<7 | 0x01, - 36665 - 19968: jis0208<<14 | 0x4C<<7 | 0x35, - 36666 - 19968: jis0212<<14 | 0x3F<<7 | 0x5B, - 36667 - 19968: jis0208<<14 | 0x4C<<7 | 0x34, - 36670 - 19968: jis0208<<14 | 0x4C<<7 | 0x38, - 36671 - 19968: jis0208<<14 | 0x2C<<7 | 0x20, - 36672 - 19968: jis0212<<14 | 0x3F<<7 | 0x5C, - 36673 - 19968: jis0212<<14 | 0x3F<<7 | 0x5D, - 36674 - 19968: jis0208<<14 | 0x4C<<7 | 0x37, - 36675 - 19968: jis0212<<14 | 0x40<<7 | 0x00, - 36676 - 19968: jis0208<<14 | 0x12<<7 | 0x4C, - 36677 - 19968: jis0208<<14 | 0x4C<<7 | 0x36, - 36678 - 19968: jis0208<<14 | 0x4C<<7 | 0x3B, - 36679 - 19968: jis0212<<14 | 0x40<<7 | 0x01, - 36681 - 19968: jis0208<<14 | 0x4C<<7 | 0x3A, - 36684 - 19968: jis0208<<14 | 0x4C<<7 | 0x39, - 36685 - 19968: jis0208<<14 | 0x24<<7 | 0x11, - 36686 - 19968: jis0208<<14 | 0x4C<<7 | 0x3C, - 36687 - 19968: jis0212<<14 | 0x40<<7 | 0x02, - 36689 - 19968: jis0212<<14 | 0x40<<7 | 0x03, - 36690 - 19968: jis0212<<14 | 0x40<<7 | 0x04, - 36691 - 19968: jis0212<<14 | 0x40<<7 | 0x05, - 36692 - 19968: jis0212<<14 | 0x40<<7 | 0x06, - 36693 - 19968: jis0212<<14 | 0x40<<7 | 0x07, - 36695 - 19968: jis0208<<14 | 0x4C<<7 | 0x3D, - 36696 - 19968: jis0212<<14 | 0x40<<7 | 0x08, - 36700 - 19968: jis0208<<14 | 0x4C<<7 | 0x3E, - 36701 - 19968: jis0212<<14 | 0x40<<7 | 0x09, - 36702 - 19968: jis0212<<14 | 0x40<<7 | 0x0A, - 36703 - 19968: jis0208<<14 | 0x18<<7 | 0x4B, - 36705 - 19968: jis0208<<14 | 0x16<<7 | 0x04, - 36706 - 19968: jis0208<<14 | 0x4C<<7 | 0x3F, - 36707 - 19968: jis0208<<14 | 0x4C<<7 | 0x40, - 36708 - 19968: jis0208<<14 | 0x4C<<7 | 0x41, - 36709 - 19968: jis0212<<14 | 0x40<<7 | 0x0B, - 36763 - 19968: jis0208<<14 | 0x1E<<7 | 0x28, - 36764 - 19968: jis0208<<14 | 0x4C<<7 | 0x42, - 36765 - 19968: jis0212<<14 | 0x40<<7 | 0x0C, - 36766 - 19968: jis0208<<14 | 0x1B<<7 | 0x0C, - 36767 - 19968: jis0208<<14 | 0x4C<<7 | 0x43, - 36768 - 19968: jis0212<<14 | 0x40<<7 | 0x0D, - 36769 - 19968: jis0212<<14 | 0x40<<7 | 0x0E, - 36771 - 19968: jis0208<<14 | 0x4C<<7 | 0x44, - 36772 - 19968: jis0212<<14 | 0x40<<7 | 0x0F, - 36773 - 19968: jis0212<<14 | 0x40<<7 | 0x10, - 36774 - 19968: jis0212<<14 | 0x40<<7 | 0x11, - 36775 - 19968: jis0208<<14 | 0x31<<7 | 0x00, - 36776 - 19968: jis0208<<14 | 0x30<<7 | 0x5D, - 36781 - 19968: jis0208<<14 | 0x4C<<7 | 0x45, - 36782 - 19968: jis0208<<14 | 0x44<<7 | 0x4F, - 36783 - 19968: jis0208<<14 | 0x4C<<7 | 0x46, - 36784 - 19968: jis0208<<14 | 0x22<<7 | 0x03, - 36785 - 19968: jis0208<<14 | 0x1E<<7 | 0x0A, - 36786 - 19968: jis0208<<14 | 0x26<<7 | 0x1F, - 36789 - 19968: jis0212<<14 | 0x40<<7 | 0x12, - 36790 - 19968: jis0212<<14 | 0x40<<7 | 0x13, - 36791 - 19968: jis0208<<14 | 0x4C<<7 | 0x47, - 36792 - 19968: jis0212<<14 | 0x40<<7 | 0x14, - 36794 - 19968: jis0208<<14 | 0x29<<7 | 0x34, - 36795 - 19968: jis0208<<14 | 0x23<<7 | 0x33, - 36796 - 19968: jis0208<<14 | 0x18<<7 | 0x5D, - 36798 - 19968: jis0212<<14 | 0x40<<7 | 0x15, - 36799 - 19968: jis0208<<14 | 0x22<<7 | 0x08, - 36800 - 19968: jis0212<<14 | 0x40<<7 | 0x16, - 36801 - 19968: jis0212<<14 | 0x40<<7 | 0x17, - 36802 - 19968: jis0208<<14 | 0x10<<7 | 0x09, - 36804 - 19968: jis0208<<14 | 0x2A<<7 | 0x57, - 36805 - 19968: jis0208<<14 | 0x1E<<7 | 0x36, - 36806 - 19968: jis0212<<14 | 0x40<<7 | 0x18, - 36810 - 19968: jis0212<<14 | 0x40<<7 | 0x19, - 36811 - 19968: jis0212<<14 | 0x40<<7 | 0x1A, - 36813 - 19968: jis0212<<14 | 0x40<<7 | 0x1B, - 36814 - 19968: jis0208<<14 | 0x16<<7 | 0x3D, - 36816 - 19968: jis0212<<14 | 0x40<<7 | 0x1C, - 36817 - 19968: jis0208<<14 | 0x15<<7 | 0x40, - 36818 - 19968: jis0212<<14 | 0x40<<7 | 0x1D, - 36819 - 19968: jis0212<<14 | 0x40<<7 | 0x1E, - 36820 - 19968: jis0208<<14 | 0x29<<7 | 0x35, - 36821 - 19968: jis0212<<14 | 0x40<<7 | 0x1F, - 36826 - 19968: jis0208<<14 | 0x4C<<7 | 0x48, - 36832 - 19968: jis0212<<14 | 0x40<<7 | 0x20, - 36834 - 19968: jis0208<<14 | 0x4C<<7 | 0x4A, - 36835 - 19968: jis0212<<14 | 0x40<<7 | 0x21, - 36836 - 19968: jis0212<<14 | 0x40<<7 | 0x22, - 36837 - 19968: jis0208<<14 | 0x4C<<7 | 0x49, - 36838 - 19968: jis0208<<14 | 0x11<<7 | 0x3F, - 36840 - 19968: jis0212<<14 | 0x40<<7 | 0x23, - 36841 - 19968: jis0208<<14 | 0x25<<7 | 0x55, - 36842 - 19968: jis0208<<14 | 0x4C<<7 | 0x4B, - 36843 - 19968: jis0208<<14 | 0x26<<7 | 0x56, - 36845 - 19968: jis0208<<14 | 0x24<<7 | 0x12, - 36846 - 19968: jis0212<<14 | 0x40<<7 | 0x24, - 36847 - 19968: jis0208<<14 | 0x4C<<7 | 0x4C, - 36848 - 19968: jis0208<<14 | 0x1C<<7 | 0x31, - 36849 - 19968: jis0212<<14 | 0x40<<7 | 0x25, - 36852 - 19968: jis0208<<14 | 0x4C<<7 | 0x4E, - 36853 - 19968: jis0212<<14 | 0x40<<7 | 0x26, - 36854 - 19968: jis0212<<14 | 0x40<<7 | 0x27, - 36855 - 19968: jis0208<<14 | 0x2B<<7 | 0x21, - 36856 - 19968: jis0208<<14 | 0x4C<<7 | 0x5D, - 36857 - 19968: jis0208<<14 | 0x4C<<7 | 0x50, - 36858 - 19968: jis0208<<14 | 0x4C<<7 | 0x51, - 36859 - 19968: jis0212<<14 | 0x40<<7 | 0x28, - 36861 - 19968: jis0208<<14 | 0x23<<7 | 0x28, - 36862 - 19968: jis0212<<14 | 0x40<<7 | 0x29, - 36864 - 19968: jis0208<<14 | 0x21<<7 | 0x3F, - 36865 - 19968: jis0208<<14 | 0x20<<7 | 0x56, - 36866 - 19968: jis0212<<14 | 0x40<<7 | 0x2A, - 36867 - 19968: jis0208<<14 | 0x25<<7 | 0x07, - 36868 - 19968: jis0212<<14 | 0x40<<7 | 0x2B, - 36869 - 19968: jis0208<<14 | 0x4C<<7 | 0x4F, - 36870 - 19968: jis0208<<14 | 0x14<<7 | 0x34, - 36872 - 19968: jis0212<<14 | 0x40<<7 | 0x2C, - 36875 - 19968: jis0208<<14 | 0x4C<<7 | 0x58, - 36876 - 19968: jis0212<<14 | 0x40<<7 | 0x2D, - 36877 - 19968: jis0208<<14 | 0x4C<<7 | 0x55, - 36878 - 19968: jis0208<<14 | 0x4D<<7 | 0x04, - 36879 - 19968: jis0208<<14 | 0x25<<7 | 0x08, - 36880 - 19968: jis0208<<14 | 0x22<<7 | 0x3F, - 36881 - 19968: jis0208<<14 | 0x4C<<7 | 0x52, - 36883 - 19968: jis0208<<14 | 0x23<<7 | 0x5D, - 36884 - 19968: jis0208<<14 | 0x24<<7 | 0x32, - 36885 - 19968: jis0208<<14 | 0x4C<<7 | 0x53, - 36886 - 19968: jis0208<<14 | 0x4C<<7 | 0x57, - 36887 - 19968: jis0208<<14 | 0x1E<<7 | 0x3F, - 36888 - 19968: jis0212<<14 | 0x40<<7 | 0x2E, - 36889 - 19968: jis0208<<14 | 0x26<<7 | 0x46, - 36890 - 19968: jis0208<<14 | 0x23<<7 | 0x2B, - 36891 - 19968: jis0212<<14 | 0x40<<7 | 0x2F, - 36893 - 19968: jis0208<<14 | 0x1F<<7 | 0x21, - 36894 - 19968: jis0208<<14 | 0x4C<<7 | 0x56, - 36895 - 19968: jis0208<<14 | 0x21<<7 | 0x0D, - 36896 - 19968: jis0208<<14 | 0x21<<7 | 0x03, - 36897 - 19968: jis0208<<14 | 0x4C<<7 | 0x54, - 36898 - 19968: jis0208<<14 | 0x0F<<7 | 0x08, - 36899 - 19968: jis0208<<14 | 0x2E<<7 | 0x01, - 36903 - 19968: jis0208<<14 | 0x4C<<7 | 0x59, - 36904 - 19968: jis0212<<14 | 0x40<<7 | 0x30, - 36905 - 19968: jis0212<<14 | 0x40<<7 | 0x31, - 36906 - 19968: jis0212<<14 | 0x40<<7 | 0x33, - 36908 - 19968: jis0212<<14 | 0x40<<7 | 0x34, - 36909 - 19968: jis0212<<14 | 0x40<<7 | 0x35, - 36910 - 19968: jis0208<<14 | 0x21<<7 | 0x40, - 36911 - 19968: jis0212<<14 | 0x40<<7 | 0x32, - 36913 - 19968: jis0208<<14 | 0x1C<<7 | 0x14, - 36914 - 19968: jis0208<<14 | 0x1E<<7 | 0x29, - 36915 - 19968: jis0212<<14 | 0x40<<7 | 0x36, - 36916 - 19968: jis0212<<14 | 0x40<<7 | 0x37, - 36917 - 19968: jis0208<<14 | 0x4C<<7 | 0x5B, - 36918 - 19968: jis0208<<14 | 0x4C<<7 | 0x5A, - 36919 - 19968: jis0212<<14 | 0x40<<7 | 0x38, - 36920 - 19968: jis0208<<14 | 0x0F<<7 | 0x4E, - 36921 - 19968: jis0208<<14 | 0x4C<<7 | 0x5C, - 36924 - 19968: jis0208<<14 | 0x28<<7 | 0x0E, - 36926 - 19968: jis0208<<14 | 0x4D<<7 | 0x06, - 36927 - 19968: jis0212<<14 | 0x40<<7 | 0x39, - 36929 - 19968: jis0208<<14 | 0x25<<7 | 0x3A, - 36930 - 19968: jis0208<<14 | 0x1E<<7 | 0x4A, - 36931 - 19968: jis0212<<14 | 0x40<<7 | 0x3A, - 36932 - 19968: jis0212<<14 | 0x40<<7 | 0x3B, - 36933 - 19968: jis0208<<14 | 0x22<<7 | 0x38, - 36935 - 19968: jis0208<<14 | 0x15<<7 | 0x57, - 36937 - 19968: jis0208<<14 | 0x4D<<7 | 0x05, - 36938 - 19968: jis0208<<14 | 0x2C<<7 | 0x16, - 36939 - 19968: jis0208<<14 | 0x10<<7 | 0x1E, - 36940 - 19968: jis0212<<14 | 0x40<<7 | 0x3C, - 36941 - 19968: jis0208<<14 | 0x29<<7 | 0x36, - 36942 - 19968: jis0208<<14 | 0x11<<7 | 0x40, - 36943 - 19968: jis0208<<14 | 0x4D<<7 | 0x00, - 36944 - 19968: jis0208<<14 | 0x4D<<7 | 0x01, - 36945 - 19968: jis0208<<14 | 0x4D<<7 | 0x02, - 36946 - 19968: jis0208<<14 | 0x4D<<7 | 0x03, - 36947 - 19968: jis0208<<14 | 0x25<<7 | 0x1A, - 36948 - 19968: jis0208<<14 | 0x22<<7 | 0x02, - 36949 - 19968: jis0208<<14 | 0x0F<<7 | 0x42, - 36950 - 19968: jis0208<<14 | 0x4D<<7 | 0x07, - 36952 - 19968: jis0208<<14 | 0x4D<<7 | 0x08, - 36953 - 19968: jis0208<<14 | 0x53<<7 | 0x02, - 36955 - 19968: jis0212<<14 | 0x40<<7 | 0x3D, - 36956 - 19968: jis0208<<14 | 0x21<<7 | 0x1C, - 36957 - 19968: jis0212<<14 | 0x40<<7 | 0x3E, - 36958 - 19968: jis0208<<14 | 0x4D<<7 | 0x09, - 36960 - 19968: jis0208<<14 | 0x10<<7 | 0x52, - 36961 - 19968: jis0208<<14 | 0x20<<7 | 0x2B, - 36962 - 19968: jis0212<<14 | 0x40<<7 | 0x3F, - 36963 - 19968: jis0208<<14 | 0x17<<7 | 0x0E, - 36965 - 19968: jis0208<<14 | 0x2C<<7 | 0x39, - 36966 - 19968: jis0212<<14 | 0x40<<7 | 0x40, - 36967 - 19968: jis0208<<14 | 0x5A<<7 | 0x58, - 36968 - 19968: jis0208<<14 | 0x4D<<7 | 0x0A, - 36969 - 19968: jis0208<<14 | 0x24<<7 | 0x0B, - 36972 - 19968: jis0212<<14 | 0x40<<7 | 0x42, - 36973 - 19968: jis0208<<14 | 0x20<<7 | 0x57, - 36974 - 19968: jis0208<<14 | 0x1B<<7 | 0x36, - 36975 - 19968: jis0208<<14 | 0x4D<<7 | 0x0B, - 36976 - 19968: jis0212<<14 | 0x40<<7 | 0x43, - 36978 - 19968: jis0208<<14 | 0x4D<<7 | 0x0E, - 36980 - 19968: jis0212<<14 | 0x40<<7 | 0x44, - 36981 - 19968: jis0208<<14 | 0x1C<<7 | 0x44, - 36982 - 19968: jis0208<<14 | 0x4D<<7 | 0x0C, - 36983 - 19968: jis0208<<14 | 0x20<<7 | 0x0A, - 36984 - 19968: jis0208<<14 | 0x20<<7 | 0x09, - 36985 - 19968: jis0212<<14 | 0x40<<7 | 0x45, - 36986 - 19968: jis0208<<14 | 0x0F<<7 | 0x43, - 36988 - 19968: jis0208<<14 | 0x2D<<7 | 0x2A, - 36989 - 19968: jis0208<<14 | 0x4D<<7 | 0x10, - 36991 - 19968: jis0208<<14 | 0x27<<7 | 0x51, - 36992 - 19968: jis0208<<14 | 0x4D<<7 | 0x12, - 36993 - 19968: jis0208<<14 | 0x4D<<7 | 0x11, - 36994 - 19968: jis0208<<14 | 0x4D<<7 | 0x0F, - 36995 - 19968: jis0208<<14 | 0x42<<7 | 0x43, - 36996 - 19968: jis0208<<14 | 0x13<<7 | 0x33, - 36997 - 19968: jis0212<<14 | 0x40<<7 | 0x46, - 36999 - 19968: jis0208<<14 | 0x4C<<7 | 0x4D, - 37000 - 19968: jis0212<<14 | 0x40<<7 | 0x47, - 37001 - 19968: jis0208<<14 | 0x4D<<7 | 0x14, - 37002 - 19968: jis0208<<14 | 0x4D<<7 | 0x13, - 37003 - 19968: jis0212<<14 | 0x40<<7 | 0x48, - 37004 - 19968: jis0212<<14 | 0x40<<7 | 0x49, - 37006 - 19968: jis0212<<14 | 0x40<<7 | 0x4A, - 37007 - 19968: jis0208<<14 | 0x4D<<7 | 0x15, - 37008 - 19968: jis0212<<14 | 0x40<<7 | 0x4B, - 37009 - 19968: jis0208<<14 | 0x2C<<7 | 0x17, - 37013 - 19968: jis0212<<14 | 0x40<<7 | 0x4C, - 37015 - 19968: jis0212<<14 | 0x40<<7 | 0x4D, - 37016 - 19968: jis0212<<14 | 0x40<<7 | 0x4E, - 37017 - 19968: jis0212<<14 | 0x40<<7 | 0x4F, - 37019 - 19968: jis0212<<14 | 0x40<<7 | 0x50, - 37024 - 19968: jis0212<<14 | 0x40<<7 | 0x51, - 37025 - 19968: jis0212<<14 | 0x40<<7 | 0x52, - 37026 - 19968: jis0212<<14 | 0x40<<7 | 0x53, - 37027 - 19968: jis0208<<14 | 0x25<<7 | 0x40, - 37029 - 19968: jis0212<<14 | 0x40<<7 | 0x54, - 37030 - 19968: jis0208<<14 | 0x2A<<7 | 0x0D, - 37032 - 19968: jis0208<<14 | 0x4D<<7 | 0x16, - 37034 - 19968: jis0208<<14 | 0x1B<<7 | 0x38, - 37039 - 19968: jis0208<<14 | 0x4D<<7 | 0x17, - 37040 - 19968: jis0212<<14 | 0x40<<7 | 0x55, - 37041 - 19968: jis0208<<14 | 0x4D<<7 | 0x18, - 37042 - 19968: jis0212<<14 | 0x40<<7 | 0x56, - 37043 - 19968: jis0212<<14 | 0x40<<7 | 0x57, - 37044 - 19968: jis0212<<14 | 0x40<<7 | 0x58, - 37045 - 19968: jis0208<<14 | 0x4D<<7 | 0x19, - 37046 - 19968: jis0212<<14 | 0x40<<7 | 0x59, - 37048 - 19968: jis0208<<14 | 0x24<<7 | 0x00, - 37053 - 19968: jis0212<<14 | 0x40<<7 | 0x5A, - 37054 - 19968: jis0212<<14 | 0x40<<7 | 0x5C, - 37057 - 19968: jis0208<<14 | 0x0F<<7 | 0x49, - 37059 - 19968: jis0212<<14 | 0x40<<7 | 0x5D, - 37060 - 19968: jis0212<<14 | 0x41<<7 | 0x00, - 37061 - 19968: jis0212<<14 | 0x41<<7 | 0x01, - 37063 - 19968: jis0212<<14 | 0x41<<7 | 0x02, - 37064 - 19968: jis0212<<14 | 0x41<<7 | 0x03, - 37066 - 19968: jis0208<<14 | 0x18<<7 | 0x38, - 37068 - 19968: jis0212<<14 | 0x40<<7 | 0x5B, - 37070 - 19968: jis0208<<14 | 0x2E<<7 | 0x19, - 37074 - 19968: jis0212<<14 | 0x41<<7 | 0x0C, - 37077 - 19968: jis0212<<14 | 0x41<<7 | 0x04, - 37079 - 19968: jis0212<<14 | 0x41<<7 | 0x05, - 37080 - 19968: jis0212<<14 | 0x41<<7 | 0x06, - 37081 - 19968: jis0212<<14 | 0x41<<7 | 0x07, - 37083 - 19968: jis0208<<14 | 0x4D<<7 | 0x1D, - 37084 - 19968: jis0212<<14 | 0x41<<7 | 0x08, - 37085 - 19968: jis0212<<14 | 0x41<<7 | 0x09, - 37086 - 19968: jis0208<<14 | 0x5A<<7 | 0x59, - 37087 - 19968: jis0212<<14 | 0x41<<7 | 0x0A, - 37089 - 19968: jis0208<<14 | 0x16<<7 | 0x13, - 37090 - 19968: jis0208<<14 | 0x4D<<7 | 0x1A, - 37092 - 19968: jis0208<<14 | 0x4D<<7 | 0x1B, - 37093 - 19968: jis0212<<14 | 0x41<<7 | 0x0B, - 37096 - 19968: jis0208<<14 | 0x28<<7 | 0x53, - 37099 - 19968: jis0212<<14 | 0x41<<7 | 0x0E, - 37101 - 19968: jis0208<<14 | 0x12<<7 | 0x33, - 37103 - 19968: jis0212<<14 | 0x41<<7 | 0x0F, - 37104 - 19968: jis0212<<14 | 0x41<<7 | 0x10, - 37108 - 19968: jis0212<<14 | 0x41<<7 | 0x11, - 37109 - 19968: jis0208<<14 | 0x2C<<7 | 0x18, - 37110 - 19968: jis0212<<14 | 0x41<<7 | 0x0D, - 37111 - 19968: jis0208<<14 | 0x15<<7 | 0x1E, - 37117 - 19968: jis0208<<14 | 0x24<<7 | 0x33, - 37118 - 19968: jis0212<<14 | 0x41<<7 | 0x12, - 37119 - 19968: jis0212<<14 | 0x41<<7 | 0x13, - 37120 - 19968: jis0212<<14 | 0x41<<7 | 0x14, - 37122 - 19968: jis0208<<14 | 0x4D<<7 | 0x1E, - 37124 - 19968: jis0212<<14 | 0x41<<7 | 0x15, - 37125 - 19968: jis0212<<14 | 0x41<<7 | 0x16, - 37126 - 19968: jis0212<<14 | 0x41<<7 | 0x17, - 37128 - 19968: jis0212<<14 | 0x41<<7 | 0x18, - 37133 - 19968: jis0212<<14 | 0x41<<7 | 0x19, - 37136 - 19968: jis0212<<14 | 0x41<<7 | 0x1A, - 37138 - 19968: jis0208<<14 | 0x4D<<7 | 0x1F, - 37140 - 19968: jis0212<<14 | 0x41<<7 | 0x1B, - 37141 - 19968: jis0208<<14 | 0x5A<<7 | 0x5B, - 37142 - 19968: jis0212<<14 | 0x41<<7 | 0x1C, - 37143 - 19968: jis0212<<14 | 0x41<<7 | 0x1D, - 37144 - 19968: jis0212<<14 | 0x41<<7 | 0x1E, - 37145 - 19968: jis0208<<14 | 0x4D<<7 | 0x20, - 37146 - 19968: jis0212<<14 | 0x41<<7 | 0x1F, - 37148 - 19968: jis0212<<14 | 0x41<<7 | 0x20, - 37150 - 19968: jis0212<<14 | 0x41<<7 | 0x21, - 37152 - 19968: jis0212<<14 | 0x41<<7 | 0x22, - 37154 - 19968: jis0212<<14 | 0x41<<7 | 0x24, - 37155 - 19968: jis0212<<14 | 0x41<<7 | 0x25, - 37157 - 19968: jis0212<<14 | 0x41<<7 | 0x23, - 37159 - 19968: jis0208<<14 | 0x5A<<7 | 0x5C, - 37161 - 19968: jis0212<<14 | 0x41<<7 | 0x27, - 37165 - 19968: jis0208<<14 | 0x24<<7 | 0x01, - 37166 - 19968: jis0212<<14 | 0x41<<7 | 0x28, - 37167 - 19968: jis0212<<14 | 0x41<<7 | 0x29, - 37168 - 19968: jis0208<<14 | 0x4D<<7 | 0x22, - 37169 - 19968: jis0212<<14 | 0x41<<7 | 0x2A, - 37170 - 19968: jis0208<<14 | 0x4D<<7 | 0x21, - 37172 - 19968: jis0212<<14 | 0x41<<7 | 0x2B, - 37174 - 19968: jis0212<<14 | 0x41<<7 | 0x2C, - 37175 - 19968: jis0212<<14 | 0x41<<7 | 0x2D, - 37177 - 19968: jis0212<<14 | 0x41<<7 | 0x2E, - 37178 - 19968: jis0212<<14 | 0x41<<7 | 0x2F, - 37180 - 19968: jis0212<<14 | 0x41<<7 | 0x30, - 37181 - 19968: jis0212<<14 | 0x41<<7 | 0x31, - 37187 - 19968: jis0212<<14 | 0x41<<7 | 0x32, - 37191 - 19968: jis0212<<14 | 0x41<<7 | 0x33, - 37192 - 19968: jis0212<<14 | 0x41<<7 | 0x34, - 37193 - 19968: jis0208<<14 | 0x25<<7 | 0x32, - 37194 - 19968: jis0208<<14 | 0x4D<<7 | 0x23, - 37195 - 19968: jis0208<<14 | 0x1C<<7 | 0x15, - 37196 - 19968: jis0208<<14 | 0x1B<<7 | 0x3F, - 37197 - 19968: jis0208<<14 | 0x26<<7 | 0x3A, - 37198 - 19968: jis0208<<14 | 0x22<<7 | 0x50, - 37199 - 19968: jis0212<<14 | 0x41<<7 | 0x35, - 37202 - 19968: jis0208<<14 | 0x1B<<7 | 0x51, - 37203 - 19968: jis0212<<14 | 0x41<<7 | 0x36, - 37204 - 19968: jis0208<<14 | 0x1E<<7 | 0x4B, - 37206 - 19968: jis0208<<14 | 0x4D<<7 | 0x24, - 37207 - 19968: jis0212<<14 | 0x41<<7 | 0x37, - 37208 - 19968: jis0208<<14 | 0x4D<<7 | 0x25, - 37209 - 19968: jis0212<<14 | 0x41<<7 | 0x38, - 37210 - 19968: jis0212<<14 | 0x41<<7 | 0x39, - 37211 - 19968: jis0212<<14 | 0x41<<7 | 0x3A, - 37217 - 19968: jis0212<<14 | 0x41<<7 | 0x3B, - 37218 - 19968: jis0208<<14 | 0x1E<<7 | 0x3C, - 37219 - 19968: jis0208<<14 | 0x4D<<7 | 0x26, - 37220 - 19968: jis0212<<14 | 0x41<<7 | 0x3C, - 37221 - 19968: jis0208<<14 | 0x4D<<7 | 0x27, - 37223 - 19968: jis0212<<14 | 0x41<<7 | 0x3D, - 37225 - 19968: jis0208<<14 | 0x4D<<7 | 0x28, - 37226 - 19968: jis0208<<14 | 0x2C<<7 | 0x4E, - 37228 - 19968: jis0208<<14 | 0x1C<<7 | 0x16, - 37229 - 19968: jis0212<<14 | 0x41<<7 | 0x3E, - 37234 - 19968: jis0208<<14 | 0x4D<<7 | 0x2A, - 37235 - 19968: jis0208<<14 | 0x4D<<7 | 0x29, - 37236 - 19968: jis0212<<14 | 0x41<<7 | 0x3F, - 37237 - 19968: jis0208<<14 | 0x18<<7 | 0x39, - 37239 - 19968: jis0208<<14 | 0x18<<7 | 0x52, - 37240 - 19968: jis0208<<14 | 0x1A<<7 | 0x1F, - 37241 - 19968: jis0212<<14 | 0x41<<7 | 0x40, - 37242 - 19968: jis0212<<14 | 0x41<<7 | 0x41, - 37243 - 19968: jis0212<<14 | 0x41<<7 | 0x42, - 37249 - 19968: jis0212<<14 | 0x41<<7 | 0x43, - 37250 - 19968: jis0208<<14 | 0x4D<<7 | 0x2D, - 37251 - 19968: jis0212<<14 | 0x41<<7 | 0x44, - 37253 - 19968: jis0212<<14 | 0x41<<7 | 0x45, - 37254 - 19968: jis0212<<14 | 0x41<<7 | 0x46, - 37255 - 19968: jis0208<<14 | 0x1C<<7 | 0x45, - 37257 - 19968: jis0208<<14 | 0x4D<<7 | 0x2C, - 37258 - 19968: jis0212<<14 | 0x41<<7 | 0x47, - 37259 - 19968: jis0208<<14 | 0x4D<<7 | 0x2B, - 37261 - 19968: jis0208<<14 | 0x21<<7 | 0x48, - 37262 - 19968: jis0212<<14 | 0x41<<7 | 0x48, - 37264 - 19968: jis0208<<14 | 0x17<<7 | 0x4E, - 37265 - 19968: jis0212<<14 | 0x41<<7 | 0x49, - 37266 - 19968: jis0208<<14 | 0x1F<<7 | 0x22, - 37267 - 19968: jis0212<<14 | 0x41<<7 | 0x4A, - 37268 - 19968: jis0212<<14 | 0x41<<7 | 0x4B, - 37269 - 19968: jis0212<<14 | 0x41<<7 | 0x4C, - 37271 - 19968: jis0208<<14 | 0x27<<7 | 0x0F, - 37272 - 19968: jis0212<<14 | 0x41<<7 | 0x4D, - 37276 - 19968: jis0208<<14 | 0x1C<<7 | 0x18, - 37278 - 19968: jis0212<<14 | 0x41<<7 | 0x4E, - 37281 - 19968: jis0212<<14 | 0x41<<7 | 0x4F, - 37282 - 19968: jis0208<<14 | 0x4D<<7 | 0x2E, - 37284 - 19968: jis0208<<14 | 0x1D<<7 | 0x3E, - 37286 - 19968: jis0212<<14 | 0x41<<7 | 0x50, - 37288 - 19968: jis0212<<14 | 0x41<<7 | 0x51, - 37290 - 19968: jis0208<<14 | 0x4D<<7 | 0x31, - 37291 - 19968: jis0208<<14 | 0x4D<<7 | 0x2F, - 37292 - 19968: jis0212<<14 | 0x41<<7 | 0x52, - 37293 - 19968: jis0212<<14 | 0x41<<7 | 0x53, - 37294 - 19968: jis0212<<14 | 0x41<<7 | 0x54, - 37295 - 19968: jis0208<<14 | 0x4D<<7 | 0x30, - 37296 - 19968: jis0212<<14 | 0x41<<7 | 0x55, - 37297 - 19968: jis0212<<14 | 0x41<<7 | 0x56, - 37298 - 19968: jis0212<<14 | 0x41<<7 | 0x57, - 37299 - 19968: jis0212<<14 | 0x41<<7 | 0x58, - 37300 - 19968: jis0208<<14 | 0x4D<<7 | 0x33, - 37301 - 19968: jis0208<<14 | 0x4D<<7 | 0x32, - 37302 - 19968: jis0212<<14 | 0x41<<7 | 0x59, - 37304 - 19968: jis0208<<14 | 0x1D<<7 | 0x59, - 37306 - 19968: jis0208<<14 | 0x4D<<7 | 0x34, - 37307 - 19968: jis0212<<14 | 0x41<<7 | 0x5A, - 37308 - 19968: jis0212<<14 | 0x41<<7 | 0x5B, - 37309 - 19968: jis0212<<14 | 0x41<<7 | 0x5C, - 37311 - 19968: jis0212<<14 | 0x41<<7 | 0x5D, - 37312 - 19968: jis0208<<14 | 0x4D<<7 | 0x35, - 37313 - 19968: jis0208<<14 | 0x4D<<7 | 0x36, - 37314 - 19968: jis0212<<14 | 0x42<<7 | 0x00, - 37315 - 19968: jis0212<<14 | 0x42<<7 | 0x01, - 37317 - 19968: jis0212<<14 | 0x42<<7 | 0x02, - 37318 - 19968: jis0208<<14 | 0x27<<7 | 0x2F, - 37319 - 19968: jis0208<<14 | 0x19<<7 | 0x32, - 37320 - 19968: jis0208<<14 | 0x1B<<7 | 0x40, - 37321 - 19968: jis0208<<14 | 0x4D<<7 | 0x37, - 37323 - 19968: jis0208<<14 | 0x4D<<7 | 0x38, - 37324 - 19968: jis0208<<14 | 0x2D<<7 | 0x03, - 37325 - 19968: jis0208<<14 | 0x1C<<7 | 0x24, - 37326 - 19968: jis0208<<14 | 0x2B<<7 | 0x4D, - 37327 - 19968: jis0208<<14 | 0x2D<<7 | 0x2B, - 37328 - 19968: jis0208<<14 | 0x4D<<7 | 0x39, - 37329 - 19968: jis0208<<14 | 0x15<<7 | 0x41, - 37331 - 19968: jis0212<<14 | 0x42<<7 | 0x03, - 37332 - 19968: jis0212<<14 | 0x42<<7 | 0x04, - 37334 - 19968: jis0208<<14 | 0x4D<<7 | 0x3A, - 37335 - 19968: jis0208<<14 | 0x5B<<7 | 0x00, - 37336 - 19968: jis0208<<14 | 0x24<<7 | 0x02, - 37337 - 19968: jis0212<<14 | 0x42<<7 | 0x06, - 37338 - 19968: jis0208<<14 | 0x5A<<7 | 0x5D, - 37339 - 19968: jis0208<<14 | 0x4D<<7 | 0x3D, - 37340 - 19968: jis0208<<14 | 0x12<<7 | 0x57, - 37341 - 19968: jis0208<<14 | 0x1E<<7 | 0x2A, - 37342 - 19968: jis0208<<14 | 0x5B<<7 | 0x01, - 37343 - 19968: jis0208<<14 | 0x4D<<7 | 0x3B, - 37345 - 19968: jis0208<<14 | 0x4D<<7 | 0x3C, - 37347 - 19968: jis0208<<14 | 0x23<<7 | 0x3F, - 37348 - 19968: jis0208<<14 | 0x5B<<7 | 0x04, - 37349 - 19968: jis0208<<14 | 0x5B<<7 | 0x05, - 37350 - 19968: jis0208<<14 | 0x2A<<7 | 0x34, - 37351 - 19968: jis0208<<14 | 0x15<<7 | 0x5B, - 37353 - 19968: jis0212<<14 | 0x42<<7 | 0x0B, - 37354 - 19968: jis0212<<14 | 0x42<<7 | 0x0C, - 37356 - 19968: jis0212<<14 | 0x42<<7 | 0x0D, - 37357 - 19968: jis0208<<14 | 0x5B<<7 | 0x02, - 37358 - 19968: jis0208<<14 | 0x5B<<7 | 0x03, - 37359 - 19968: jis0212<<14 | 0x42<<7 | 0x10, - 37360 - 19968: jis0212<<14 | 0x42<<7 | 0x11, - 37361 - 19968: jis0212<<14 | 0x42<<7 | 0x12, - 37365 - 19968: jis0208<<14 | 0x4D<<7 | 0x3F, - 37366 - 19968: jis0208<<14 | 0x4D<<7 | 0x40, - 37367 - 19968: jis0212<<14 | 0x42<<7 | 0x13, - 37369 - 19968: jis0212<<14 | 0x42<<7 | 0x14, - 37371 - 19968: jis0212<<14 | 0x42<<7 | 0x15, - 37372 - 19968: jis0208<<14 | 0x4D<<7 | 0x3E, - 37373 - 19968: jis0212<<14 | 0x42<<7 | 0x16, - 37375 - 19968: jis0208<<14 | 0x4D<<7 | 0x42, - 37376 - 19968: jis0212<<14 | 0x42<<7 | 0x17, - 37377 - 19968: jis0212<<14 | 0x42<<7 | 0x18, - 37380 - 19968: jis0212<<14 | 0x42<<7 | 0x19, - 37381 - 19968: jis0212<<14 | 0x42<<7 | 0x1A, - 37382 - 19968: jis0208<<14 | 0x5B<<7 | 0x06, - 37383 - 19968: jis0212<<14 | 0x42<<7 | 0x1C, - 37385 - 19968: jis0212<<14 | 0x42<<7 | 0x1D, - 37386 - 19968: jis0208<<14 | 0x5B<<7 | 0x08, - 37388 - 19968: jis0212<<14 | 0x42<<7 | 0x1F, - 37389 - 19968: jis0208<<14 | 0x25<<7 | 0x3E, - 37390 - 19968: jis0208<<14 | 0x12<<7 | 0x22, - 37392 - 19968: jis0208<<14 | 0x5B<<7 | 0x07, - 37393 - 19968: jis0208<<14 | 0x4D<<7 | 0x46, - 37394 - 19968: jis0212<<14 | 0x42<<7 | 0x21, - 37395 - 19968: jis0212<<14 | 0x42<<7 | 0x22, - 37396 - 19968: jis0208<<14 | 0x4D<<7 | 0x43, - 37397 - 19968: jis0208<<14 | 0x4D<<7 | 0x45, - 37398 - 19968: jis0212<<14 | 0x42<<7 | 0x23, - 37400 - 19968: jis0212<<14 | 0x42<<7 | 0x24, - 37404 - 19968: jis0212<<14 | 0x42<<7 | 0x25, - 37405 - 19968: jis0212<<14 | 0x42<<7 | 0x26, - 37406 - 19968: jis0208<<14 | 0x4D<<7 | 0x41, - 37411 - 19968: jis0212<<14 | 0x42<<7 | 0x27, - 37412 - 19968: jis0212<<14 | 0x42<<7 | 0x28, - 37413 - 19968: jis0212<<14 | 0x42<<7 | 0x29, - 37414 - 19968: jis0212<<14 | 0x42<<7 | 0x2A, - 37416 - 19968: jis0212<<14 | 0x42<<7 | 0x2B, - 37417 - 19968: jis0208<<14 | 0x4E<<7 | 0x2E, - 37420 - 19968: jis0208<<14 | 0x4D<<7 | 0x44, - 37422 - 19968: jis0212<<14 | 0x42<<7 | 0x2C, - 37423 - 19968: jis0212<<14 | 0x42<<7 | 0x2D, - 37424 - 19968: jis0212<<14 | 0x42<<7 | 0x2E, - 37427 - 19968: jis0212<<14 | 0x42<<7 | 0x2F, - 37428 - 19968: jis0208<<14 | 0x2D<<7 | 0x4A, - 37429 - 19968: jis0212<<14 | 0x42<<7 | 0x30, - 37430 - 19968: jis0212<<14 | 0x42<<7 | 0x31, - 37431 - 19968: jis0208<<14 | 0x17<<7 | 0x39, - 37432 - 19968: jis0212<<14 | 0x42<<7 | 0x32, - 37433 - 19968: jis0208<<14 | 0x5B<<7 | 0x0F, - 37434 - 19968: jis0208<<14 | 0x5B<<7 | 0x09, - 37436 - 19968: jis0208<<14 | 0x5B<<7 | 0x0B, - 37438 - 19968: jis0212<<14 | 0x42<<7 | 0x36, - 37439 - 19968: jis0208<<14 | 0x4D<<7 | 0x4E, - 37440 - 19968: jis0208<<14 | 0x5B<<7 | 0x0A, - 37442 - 19968: jis0212<<14 | 0x42<<7 | 0x38, - 37443 - 19968: jis0212<<14 | 0x42<<7 | 0x39, - 37444 - 19968: jis0208<<14 | 0x24<<7 | 0x13, - 37445 - 19968: jis0208<<14 | 0x4D<<7 | 0x49, - 37446 - 19968: jis0212<<14 | 0x42<<7 | 0x3A, - 37447 - 19968: jis0212<<14 | 0x42<<7 | 0x3B, - 37448 - 19968: jis0208<<14 | 0x4D<<7 | 0x4C, - 37449 - 19968: jis0208<<14 | 0x4D<<7 | 0x4A, - 37450 - 19968: jis0212<<14 | 0x42<<7 | 0x3C, - 37451 - 19968: jis0208<<14 | 0x4D<<7 | 0x4F, - 37453 - 19968: jis0212<<14 | 0x42<<7 | 0x3D, - 37454 - 19968: jis0208<<14 | 0x5B<<7 | 0x0C, - 37455 - 19968: jis0212<<14 | 0x42<<7 | 0x3F, - 37456 - 19968: jis0208<<14 | 0x4D<<7 | 0x50, - 37457 - 19968: jis0208<<14 | 0x5B<<7 | 0x0E, - 37463 - 19968: jis0208<<14 | 0x4D<<7 | 0x48, - 37464 - 19968: jis0212<<14 | 0x42<<7 | 0x41, - 37465 - 19968: jis0208<<14 | 0x5B<<7 | 0x0D, - 37466 - 19968: jis0208<<14 | 0x4D<<7 | 0x55, - 37467 - 19968: jis0208<<14 | 0x10<<7 | 0x53, - 37468 - 19968: jis0212<<14 | 0x42<<7 | 0x43, - 37469 - 19968: jis0212<<14 | 0x42<<7 | 0x44, - 37470 - 19968: jis0208<<14 | 0x4D<<7 | 0x47, - 37472 - 19968: jis0212<<14 | 0x42<<7 | 0x45, - 37473 - 19968: jis0212<<14 | 0x42<<7 | 0x46, - 37474 - 19968: jis0208<<14 | 0x27<<7 | 0x0C, - 37476 - 19968: jis0208<<14 | 0x4D<<7 | 0x4B, - 37477 - 19968: jis0212<<14 | 0x42<<7 | 0x47, - 37478 - 19968: jis0208<<14 | 0x1D<<7 | 0x3F, - 37479 - 19968: jis0208<<14 | 0x5B<<7 | 0x10, - 37480 - 19968: jis0212<<14 | 0x42<<7 | 0x49, - 37481 - 19968: jis0212<<14 | 0x42<<7 | 0x4A, - 37486 - 19968: jis0212<<14 | 0x42<<7 | 0x4B, - 37487 - 19968: jis0212<<14 | 0x42<<7 | 0x4C, - 37488 - 19968: jis0212<<14 | 0x42<<7 | 0x4D, - 37489 - 19968: jis0208<<14 | 0x18<<7 | 0x3A, - 37493 - 19968: jis0212<<14 | 0x42<<7 | 0x4E, - 37494 - 19968: jis0212<<14 | 0x42<<7 | 0x4F, - 37495 - 19968: jis0208<<14 | 0x5B<<7 | 0x12, - 37496 - 19968: jis0208<<14 | 0x5B<<7 | 0x13, - 37497 - 19968: jis0212<<14 | 0x42<<7 | 0x52, - 37499 - 19968: jis0212<<14 | 0x42<<7 | 0x53, - 37500 - 19968: jis0212<<14 | 0x42<<7 | 0x54, - 37501 - 19968: jis0212<<14 | 0x42<<7 | 0x55, - 37502 - 19968: jis0208<<14 | 0x2A<<7 | 0x27, - 37503 - 19968: jis0212<<14 | 0x42<<7 | 0x56, - 37504 - 19968: jis0208<<14 | 0x15<<7 | 0x43, - 37507 - 19968: jis0208<<14 | 0x1C<<7 | 0x25, - 37509 - 19968: jis0208<<14 | 0x25<<7 | 0x1B, - 37512 - 19968: jis0208<<14 | 0x58<<7 | 0x03, - 37513 - 19968: jis0212<<14 | 0x42<<7 | 0x58, - 37514 - 19968: jis0212<<14 | 0x42<<7 | 0x59, - 37517 - 19968: jis0212<<14 | 0x42<<7 | 0x5A, - 37518 - 19968: jis0212<<14 | 0x42<<7 | 0x5B, - 37521 - 19968: jis0208<<14 | 0x20<<7 | 0x0C, - 37522 - 19968: jis0212<<14 | 0x42<<7 | 0x5C, - 37523 - 19968: jis0208<<14 | 0x4D<<7 | 0x53, - 37525 - 19968: jis0208<<14 | 0x4D<<7 | 0x4D, - 37526 - 19968: jis0208<<14 | 0x4D<<7 | 0x52, - 37527 - 19968: jis0212<<14 | 0x42<<7 | 0x5D, - 37528 - 19968: jis0208<<14 | 0x2B<<7 | 0x22, - 37529 - 19968: jis0212<<14 | 0x43<<7 | 0x00, - 37530 - 19968: jis0208<<14 | 0x23<<7 | 0x17, - 37531 - 19968: jis0208<<14 | 0x4D<<7 | 0x54, - 37532 - 19968: jis0208<<14 | 0x4D<<7 | 0x51, - 37535 - 19968: jis0212<<14 | 0x43<<7 | 0x01, - 37536 - 19968: jis0212<<14 | 0x43<<7 | 0x02, - 37540 - 19968: jis0212<<14 | 0x43<<7 | 0x03, - 37541 - 19968: jis0212<<14 | 0x43<<7 | 0x04, - 37543 - 19968: jis0208<<14 | 0x5B<<7 | 0x11, - 37544 - 19968: jis0212<<14 | 0x43<<7 | 0x06, - 37547 - 19968: jis0212<<14 | 0x43<<7 | 0x07, - 37549 - 19968: jis0208<<14 | 0x20<<7 | 0x0B, - 37551 - 19968: jis0212<<14 | 0x43<<7 | 0x08, - 37554 - 19968: jis0212<<14 | 0x43<<7 | 0x09, - 37558 - 19968: jis0212<<14 | 0x43<<7 | 0x0A, - 37559 - 19968: jis0208<<14 | 0x4D<<7 | 0x58, - 37560 - 19968: jis0212<<14 | 0x43<<7 | 0x0B, - 37561 - 19968: jis0208<<14 | 0x4D<<7 | 0x57, - 37562 - 19968: jis0212<<14 | 0x43<<7 | 0x0C, - 37563 - 19968: jis0212<<14 | 0x43<<7 | 0x0D, - 37564 - 19968: jis0212<<14 | 0x43<<7 | 0x0E, - 37565 - 19968: jis0212<<14 | 0x43<<7 | 0x0F, - 37567 - 19968: jis0212<<14 | 0x43<<7 | 0x10, - 37568 - 19968: jis0212<<14 | 0x43<<7 | 0x11, - 37569 - 19968: jis0212<<14 | 0x43<<7 | 0x12, - 37570 - 19968: jis0212<<14 | 0x43<<7 | 0x13, - 37571 - 19968: jis0212<<14 | 0x43<<7 | 0x14, - 37573 - 19968: jis0212<<14 | 0x43<<7 | 0x15, - 37574 - 19968: jis0212<<14 | 0x43<<7 | 0x16, - 37575 - 19968: jis0212<<14 | 0x43<<7 | 0x17, - 37576 - 19968: jis0212<<14 | 0x43<<7 | 0x18, - 37579 - 19968: jis0212<<14 | 0x43<<7 | 0x19, - 37580 - 19968: jis0212<<14 | 0x43<<7 | 0x1A, - 37581 - 19968: jis0212<<14 | 0x43<<7 | 0x1B, - 37582 - 19968: jis0212<<14 | 0x43<<7 | 0x1C, - 37583 - 19968: jis0208<<14 | 0x4D<<7 | 0x56, - 37584 - 19968: jis0208<<14 | 0x5B<<7 | 0x17, - 37586 - 19968: jis0208<<14 | 0x2A<<7 | 0x0E, - 37587 - 19968: jis0208<<14 | 0x5B<<7 | 0x1B, - 37589 - 19968: jis0208<<14 | 0x5B<<7 | 0x19, - 37591 - 19968: jis0208<<14 | 0x5B<<7 | 0x15, - 37592 - 19968: jis0212<<14 | 0x43<<7 | 0x21, - 37593 - 19968: jis0208<<14 | 0x5B<<7 | 0x16, - 37596 - 19968: jis0212<<14 | 0x43<<7 | 0x23, - 37597 - 19968: jis0212<<14 | 0x43<<7 | 0x24, - 37599 - 19968: jis0212<<14 | 0x43<<7 | 0x25, - 37600 - 19968: jis0208<<14 | 0x5B<<7 | 0x1A, - 37601 - 19968: jis0212<<14 | 0x43<<7 | 0x27, - 37603 - 19968: jis0212<<14 | 0x43<<7 | 0x28, - 37604 - 19968: jis0208<<14 | 0x1C<<7 | 0x5A, - 37605 - 19968: jis0212<<14 | 0x43<<7 | 0x29, - 37607 - 19968: jis0208<<14 | 0x5B<<7 | 0x14, - 37608 - 19968: jis0212<<14 | 0x43<<7 | 0x2B, - 37609 - 19968: jis0208<<14 | 0x4D<<7 | 0x59, - 37610 - 19968: jis0208<<14 | 0x29<<7 | 0x3E, - 37612 - 19968: jis0212<<14 | 0x43<<7 | 0x2C, - 37613 - 19968: jis0208<<14 | 0x10<<7 | 0x33, - 37614 - 19968: jis0212<<14 | 0x43<<7 | 0x2D, - 37616 - 19968: jis0212<<14 | 0x43<<7 | 0x2E, - 37618 - 19968: jis0208<<14 | 0x28<<7 | 0x25, - 37619 - 19968: jis0208<<14 | 0x22<<7 | 0x51, - 37624 - 19968: jis0208<<14 | 0x14<<7 | 0x57, - 37625 - 19968: jis0208<<14 | 0x58<<7 | 0x09, - 37626 - 19968: jis0208<<14 | 0x4D<<7 | 0x5B, - 37627 - 19968: jis0208<<14 | 0x5B<<7 | 0x1E, - 37628 - 19968: jis0208<<14 | 0x18<<7 | 0x3C, - 37631 - 19968: jis0208<<14 | 0x5B<<7 | 0x21, - 37632 - 19968: jis0212<<14 | 0x43<<7 | 0x32, - 37634 - 19968: jis0208<<14 | 0x5B<<7 | 0x23, - 37638 - 19968: jis0208<<14 | 0x1A<<7 | 0x0B, - 37640 - 19968: jis0212<<14 | 0x43<<7 | 0x34, - 37645 - 19968: jis0212<<14 | 0x43<<7 | 0x35, - 37647 - 19968: jis0208<<14 | 0x4D<<7 | 0x5A, - 37648 - 19968: jis0208<<14 | 0x1E<<7 | 0x4C, - 37649 - 19968: jis0212<<14 | 0x43<<7 | 0x36, - 37652 - 19968: jis0212<<14 | 0x43<<7 | 0x37, - 37653 - 19968: jis0212<<14 | 0x43<<7 | 0x38, - 37656 - 19968: jis0208<<14 | 0x1E<<7 | 0x4D, - 37657 - 19968: jis0208<<14 | 0x4E<<7 | 0x00, - 37658 - 19968: jis0208<<14 | 0x4E<<7 | 0x02, - 37660 - 19968: jis0212<<14 | 0x43<<7 | 0x39, - 37661 - 19968: jis0208<<14 | 0x5B<<7 | 0x22, - 37662 - 19968: jis0208<<14 | 0x5B<<7 | 0x20, - 37663 - 19968: jis0212<<14 | 0x43<<7 | 0x3C, - 37664 - 19968: jis0208<<14 | 0x1D<<7 | 0x5A, - 37665 - 19968: jis0208<<14 | 0x5B<<7 | 0x1D, - 37666 - 19968: jis0208<<14 | 0x4E<<7 | 0x01, - 37667 - 19968: jis0208<<14 | 0x4E<<7 | 0x03, - 37668 - 19968: jis0212<<14 | 0x43<<7 | 0x3E, - 37669 - 19968: jis0208<<14 | 0x5B<<7 | 0x1C, - 37670 - 19968: jis0208<<14 | 0x15<<7 | 0x32, - 37671 - 19968: jis0212<<14 | 0x43<<7 | 0x40, - 37672 - 19968: jis0208<<14 | 0x28<<7 | 0x24, - 37673 - 19968: jis0212<<14 | 0x43<<7 | 0x41, - 37674 - 19968: jis0212<<14 | 0x43<<7 | 0x42, - 37675 - 19968: jis0208<<14 | 0x1B<<7 | 0x41, - 37676 - 19968: jis0208<<14 | 0x2E<<7 | 0x02, - 37678 - 19968: jis0208<<14 | 0x4D<<7 | 0x5D, - 37679 - 19968: jis0208<<14 | 0x19<<7 | 0x57, - 37682 - 19968: jis0208<<14 | 0x2E<<7 | 0x1E, - 37683 - 19968: jis0212<<14 | 0x43<<7 | 0x43, - 37684 - 19968: jis0212<<14 | 0x43<<7 | 0x44, - 37685 - 19968: jis0208<<14 | 0x4E<<7 | 0x05, - 37686 - 19968: jis0212<<14 | 0x43<<7 | 0x45, - 37687 - 19968: jis0212<<14 | 0x43<<7 | 0x46, - 37690 - 19968: jis0208<<14 | 0x4E<<7 | 0x04, - 37691 - 19968: jis0208<<14 | 0x4E<<7 | 0x06, - 37700 - 19968: jis0208<<14 | 0x4D<<7 | 0x5C, - 37703 - 19968: jis0212<<14 | 0x43<<7 | 0x47, - 37704 - 19968: jis0208<<14 | 0x58<<7 | 0x02, - 37705 - 19968: jis0212<<14 | 0x43<<7 | 0x49, - 37707 - 19968: jis0208<<14 | 0x25<<7 | 0x48, - 37709 - 19968: jis0208<<14 | 0x24<<7 | 0x34, - 37712 - 19968: jis0212<<14 | 0x43<<7 | 0x4A, - 37713 - 19968: jis0212<<14 | 0x43<<7 | 0x4B, - 37714 - 19968: jis0212<<14 | 0x43<<7 | 0x4C, - 37716 - 19968: jis0208<<14 | 0x23<<7 | 0x36, - 37717 - 19968: jis0212<<14 | 0x43<<7 | 0x4D, - 37718 - 19968: jis0208<<14 | 0x4E<<7 | 0x0B, - 37719 - 19968: jis0208<<14 | 0x5B<<7 | 0x25, - 37720 - 19968: jis0212<<14 | 0x43<<7 | 0x4F, - 37722 - 19968: jis0212<<14 | 0x43<<7 | 0x50, - 37723 - 19968: jis0208<<14 | 0x22<<7 | 0x22, - 37724 - 19968: jis0208<<14 | 0x4E<<7 | 0x07, - 37726 - 19968: jis0212<<14 | 0x43<<7 | 0x51, - 37728 - 19968: jis0208<<14 | 0x4E<<7 | 0x08, - 37732 - 19968: jis0212<<14 | 0x43<<7 | 0x52, - 37733 - 19968: jis0212<<14 | 0x43<<7 | 0x53, - 37735 - 19968: jis0212<<14 | 0x43<<7 | 0x54, - 37737 - 19968: jis0212<<14 | 0x43<<7 | 0x55, - 37738 - 19968: jis0212<<14 | 0x43<<7 | 0x56, - 37740 - 19968: jis0208<<14 | 0x16<<7 | 0x0C, - 37741 - 19968: jis0212<<14 | 0x43<<7 | 0x57, - 37742 - 19968: jis0208<<14 | 0x4E<<7 | 0x0A, - 37743 - 19968: jis0212<<14 | 0x43<<7 | 0x58, - 37744 - 19968: jis0208<<14 | 0x5B<<7 | 0x24, - 37745 - 19968: jis0212<<14 | 0x43<<7 | 0x5A, - 37747 - 19968: jis0212<<14 | 0x43<<7 | 0x5B, - 37748 - 19968: jis0212<<14 | 0x43<<7 | 0x5C, - 37749 - 19968: jis0208<<14 | 0x17<<7 | 0x0F, - 37750 - 19968: jis0212<<14 | 0x43<<7 | 0x5D, - 37754 - 19968: jis0212<<14 | 0x44<<7 | 0x00, - 37756 - 19968: jis0208<<14 | 0x4E<<7 | 0x09, - 37757 - 19968: jis0212<<14 | 0x44<<7 | 0x01, - 37758 - 19968: jis0208<<14 | 0x1D<<7 | 0x40, - 37759 - 19968: jis0212<<14 | 0x44<<7 | 0x02, - 37760 - 19968: jis0212<<14 | 0x44<<7 | 0x03, - 37761 - 19968: jis0212<<14 | 0x44<<7 | 0x04, - 37762 - 19968: jis0212<<14 | 0x44<<7 | 0x05, - 37768 - 19968: jis0212<<14 | 0x44<<7 | 0x06, - 37770 - 19968: jis0212<<14 | 0x44<<7 | 0x07, - 37771 - 19968: jis0212<<14 | 0x44<<7 | 0x08, - 37772 - 19968: jis0208<<14 | 0x12<<7 | 0x58, - 37773 - 19968: jis0212<<14 | 0x44<<7 | 0x09, - 37775 - 19968: jis0212<<14 | 0x44<<7 | 0x0A, - 37778 - 19968: jis0212<<14 | 0x44<<7 | 0x0B, - 37780 - 19968: jis0208<<14 | 0x4E<<7 | 0x0F, - 37781 - 19968: jis0212<<14 | 0x44<<7 | 0x0C, - 37782 - 19968: jis0208<<14 | 0x19<<7 | 0x1E, - 37783 - 19968: jis0208<<14 | 0x20<<7 | 0x58, - 37784 - 19968: jis0212<<14 | 0x44<<7 | 0x0D, - 37786 - 19968: jis0208<<14 | 0x23<<7 | 0x29, - 37787 - 19968: jis0212<<14 | 0x44<<7 | 0x0E, - 37790 - 19968: jis0212<<14 | 0x44<<7 | 0x0F, - 37793 - 19968: jis0212<<14 | 0x44<<7 | 0x10, - 37795 - 19968: jis0212<<14 | 0x44<<7 | 0x11, - 37796 - 19968: jis0208<<14 | 0x5B<<7 | 0x26, - 37798 - 19968: jis0212<<14 | 0x44<<7 | 0x13, - 37799 - 19968: jis0208<<14 | 0x12<<7 | 0x1A, - 37800 - 19968: jis0212<<14 | 0x44<<7 | 0x14, - 37801 - 19968: jis0212<<14 | 0x44<<7 | 0x1A, - 37803 - 19968: jis0212<<14 | 0x44<<7 | 0x15, - 37804 - 19968: jis0208<<14 | 0x4E<<7 | 0x0D, - 37805 - 19968: jis0208<<14 | 0x4E<<7 | 0x0E, - 37806 - 19968: jis0208<<14 | 0x23<<7 | 0x22, - 37808 - 19968: jis0208<<14 | 0x4E<<7 | 0x0C, - 37812 - 19968: jis0212<<14 | 0x44<<7 | 0x16, - 37813 - 19968: jis0212<<14 | 0x44<<7 | 0x17, - 37814 - 19968: jis0212<<14 | 0x44<<7 | 0x18, - 37817 - 19968: jis0208<<14 | 0x4E<<7 | 0x10, - 37818 - 19968: jis0212<<14 | 0x44<<7 | 0x19, - 37825 - 19968: jis0212<<14 | 0x44<<7 | 0x1B, - 37827 - 19968: jis0208<<14 | 0x4E<<7 | 0x16, - 37828 - 19968: jis0212<<14 | 0x44<<7 | 0x1C, - 37829 - 19968: jis0212<<14 | 0x44<<7 | 0x1D, - 37830 - 19968: jis0208<<14 | 0x5B<<7 | 0x27, - 37831 - 19968: jis0212<<14 | 0x44<<7 | 0x1F, - 37832 - 19968: jis0208<<14 | 0x4E<<7 | 0x19, - 37833 - 19968: jis0212<<14 | 0x44<<7 | 0x20, - 37834 - 19968: jis0212<<14 | 0x44<<7 | 0x21, - 37835 - 19968: jis0212<<14 | 0x44<<7 | 0x22, - 37836 - 19968: jis0212<<14 | 0x44<<7 | 0x23, - 37837 - 19968: jis0212<<14 | 0x44<<7 | 0x24, - 37840 - 19968: jis0208<<14 | 0x4E<<7 | 0x18, - 37841 - 19968: jis0208<<14 | 0x24<<7 | 0x0C, - 37843 - 19968: jis0212<<14 | 0x44<<7 | 0x25, - 37846 - 19968: jis0208<<14 | 0x4E<<7 | 0x11, - 37847 - 19968: jis0208<<14 | 0x4E<<7 | 0x12, - 37848 - 19968: jis0208<<14 | 0x4E<<7 | 0x15, - 37849 - 19968: jis0212<<14 | 0x44<<7 | 0x26, - 37852 - 19968: jis0212<<14 | 0x44<<7 | 0x27, - 37853 - 19968: jis0208<<14 | 0x4E<<7 | 0x17, - 37854 - 19968: jis0208<<14 | 0x5B<<7 | 0x28, - 37855 - 19968: jis0212<<14 | 0x44<<7 | 0x29, - 37857 - 19968: jis0208<<14 | 0x15<<7 | 0x1F, - 37858 - 19968: jis0212<<14 | 0x44<<7 | 0x2A, - 37860 - 19968: jis0208<<14 | 0x4E<<7 | 0x1A, - 37861 - 19968: jis0208<<14 | 0x4E<<7 | 0x14, - 37862 - 19968: jis0212<<14 | 0x44<<7 | 0x2B, - 37863 - 19968: jis0212<<14 | 0x44<<7 | 0x2C, - 37864 - 19968: jis0208<<14 | 0x4E<<7 | 0x13, - 37879 - 19968: jis0212<<14 | 0x44<<7 | 0x2E, - 37880 - 19968: jis0208<<14 | 0x5B<<7 | 0x29, - 37881 - 19968: jis0212<<14 | 0x44<<7 | 0x2D, - 37882 - 19968: jis0212<<14 | 0x44<<7 | 0x30, - 37883 - 19968: jis0212<<14 | 0x44<<7 | 0x31, - 37885 - 19968: jis0212<<14 | 0x44<<7 | 0x32, - 37889 - 19968: jis0212<<14 | 0x44<<7 | 0x33, - 37890 - 19968: jis0212<<14 | 0x44<<7 | 0x34, - 37891 - 19968: jis0208<<14 | 0x4E<<7 | 0x1E, - 37892 - 19968: jis0212<<14 | 0x44<<7 | 0x35, - 37895 - 19968: jis0208<<14 | 0x4E<<7 | 0x1F, - 37896 - 19968: jis0212<<14 | 0x44<<7 | 0x36, - 37897 - 19968: jis0212<<14 | 0x44<<7 | 0x37, - 37901 - 19968: jis0212<<14 | 0x44<<7 | 0x38, - 37902 - 19968: jis0212<<14 | 0x44<<7 | 0x39, - 37903 - 19968: jis0212<<14 | 0x44<<7 | 0x3A, - 37904 - 19968: jis0208<<14 | 0x4E<<7 | 0x20, - 37907 - 19968: jis0208<<14 | 0x4E<<7 | 0x1D, - 37908 - 19968: jis0208<<14 | 0x4E<<7 | 0x1C, - 37909 - 19968: jis0212<<14 | 0x44<<7 | 0x3B, - 37910 - 19968: jis0212<<14 | 0x44<<7 | 0x3C, - 37911 - 19968: jis0212<<14 | 0x44<<7 | 0x3D, - 37912 - 19968: jis0208<<14 | 0x1D<<7 | 0x41, - 37913 - 19968: jis0208<<14 | 0x25<<7 | 0x09, - 37914 - 19968: jis0208<<14 | 0x4E<<7 | 0x1B, - 37919 - 19968: jis0212<<14 | 0x44<<7 | 0x3E, - 37921 - 19968: jis0208<<14 | 0x4E<<7 | 0x24, - 37931 - 19968: jis0208<<14 | 0x4E<<7 | 0x22, - 37934 - 19968: jis0212<<14 | 0x44<<7 | 0x3F, - 37935 - 19968: jis0212<<14 | 0x44<<7 | 0x40, - 37937 - 19968: jis0208<<14 | 0x5B<<7 | 0x2A, - 37938 - 19968: jis0212<<14 | 0x44<<7 | 0x42, - 37939 - 19968: jis0212<<14 | 0x44<<7 | 0x43, - 37940 - 19968: jis0212<<14 | 0x44<<7 | 0x44, - 37941 - 19968: jis0208<<14 | 0x4E<<7 | 0x23, - 37942 - 19968: jis0208<<14 | 0x4E<<7 | 0x21, - 37944 - 19968: jis0208<<14 | 0x21<<7 | 0x57, - 37946 - 19968: jis0208<<14 | 0x4E<<7 | 0x25, - 37947 - 19968: jis0212<<14 | 0x44<<7 | 0x45, - 37949 - 19968: jis0212<<14 | 0x44<<7 | 0x47, - 37951 - 19968: jis0212<<14 | 0x44<<7 | 0x46, - 37953 - 19968: jis0208<<14 | 0x4E<<7 | 0x26, - 37955 - 19968: jis0212<<14 | 0x44<<7 | 0x48, - 37956 - 19968: jis0208<<14 | 0x4E<<7 | 0x28, - 37957 - 19968: jis0208<<14 | 0x5B<<7 | 0x2B, - 37960 - 19968: jis0208<<14 | 0x5B<<7 | 0x2C, - 37962 - 19968: jis0212<<14 | 0x44<<7 | 0x4B, - 37964 - 19968: jis0212<<14 | 0x44<<7 | 0x4C, - 37969 - 19968: jis0208<<14 | 0x13<<7 | 0x34, - 37970 - 19968: jis0208<<14 | 0x4E<<7 | 0x27, - 37971 - 19968: jis0208<<14 | 0x2B<<7 | 0x59, - 37973 - 19968: jis0212<<14 | 0x44<<7 | 0x4D, - 37977 - 19968: jis0212<<14 | 0x44<<7 | 0x4E, - 37978 - 19968: jis0208<<14 | 0x4E<<7 | 0x33, - 37979 - 19968: jis0208<<14 | 0x4E<<7 | 0x29, - 37980 - 19968: jis0212<<14 | 0x44<<7 | 0x4F, - 37982 - 19968: jis0208<<14 | 0x4E<<7 | 0x2C, - 37983 - 19968: jis0212<<14 | 0x44<<7 | 0x50, - 37984 - 19968: jis0208<<14 | 0x4E<<7 | 0x2A, - 37985 - 19968: jis0212<<14 | 0x44<<7 | 0x51, - 37986 - 19968: jis0208<<14 | 0x4E<<7 | 0x2B, - 37987 - 19968: jis0212<<14 | 0x44<<7 | 0x52, - 37992 - 19968: jis0212<<14 | 0x44<<7 | 0x53, - 37994 - 19968: jis0208<<14 | 0x4E<<7 | 0x2D, - 37995 - 19968: jis0212<<14 | 0x44<<7 | 0x54, - 37997 - 19968: jis0212<<14 | 0x44<<7 | 0x55, - 37998 - 19968: jis0212<<14 | 0x44<<7 | 0x56, - 37999 - 19968: jis0212<<14 | 0x44<<7 | 0x57, - 38000 - 19968: jis0208<<14 | 0x4E<<7 | 0x2F, - 38001 - 19968: jis0212<<14 | 0x44<<7 | 0x58, - 38002 - 19968: jis0212<<14 | 0x44<<7 | 0x59, - 38005 - 19968: jis0208<<14 | 0x4E<<7 | 0x30, - 38007 - 19968: jis0208<<14 | 0x4E<<7 | 0x31, - 38012 - 19968: jis0208<<14 | 0x4E<<7 | 0x34, - 38013 - 19968: jis0208<<14 | 0x4E<<7 | 0x32, - 38014 - 19968: jis0208<<14 | 0x4E<<7 | 0x35, - 38015 - 19968: jis0208<<14 | 0x4E<<7 | 0x37, - 38017 - 19968: jis0208<<14 | 0x4E<<7 | 0x36, - 38019 - 19968: jis0212<<14 | 0x44<<7 | 0x5B, - 38020 - 19968: jis0212<<14 | 0x44<<7 | 0x5A, - 38263 - 19968: jis0208<<14 | 0x23<<7 | 0x18, - 38264 - 19968: jis0212<<14 | 0x44<<7 | 0x5C, - 38265 - 19968: jis0212<<14 | 0x44<<7 | 0x5D, - 38270 - 19968: jis0212<<14 | 0x45<<7 | 0x00, - 38272 - 19968: jis0208<<14 | 0x2B<<7 | 0x46, - 38274 - 19968: jis0208<<14 | 0x4E<<7 | 0x38, - 38275 - 19968: jis0208<<14 | 0x20<<7 | 0x0D, - 38276 - 19968: jis0212<<14 | 0x45<<7 | 0x01, - 38279 - 19968: jis0208<<14 | 0x4E<<7 | 0x39, - 38280 - 19968: jis0212<<14 | 0x45<<7 | 0x02, - 38281 - 19968: jis0208<<14 | 0x29<<7 | 0x23, - 38282 - 19968: jis0208<<14 | 0x4E<<7 | 0x3A, - 38283 - 19968: jis0208<<14 | 0x12<<7 | 0x0A, - 38284 - 19968: jis0212<<14 | 0x45<<7 | 0x03, - 38285 - 19968: jis0212<<14 | 0x45<<7 | 0x04, - 38286 - 19968: jis0212<<14 | 0x45<<7 | 0x05, - 38287 - 19968: jis0208<<14 | 0x10<<7 | 0x1B, - 38289 - 19968: jis0208<<14 | 0x13<<7 | 0x36, - 38290 - 19968: jis0208<<14 | 0x5B<<7 | 0x2D, - 38291 - 19968: jis0208<<14 | 0x13<<7 | 0x35, - 38292 - 19968: jis0208<<14 | 0x4E<<7 | 0x3B, - 38294 - 19968: jis0208<<14 | 0x4E<<7 | 0x3C, - 38296 - 19968: jis0208<<14 | 0x4E<<7 | 0x3D, - 38297 - 19968: jis0208<<14 | 0x4E<<7 | 0x3E, - 38301 - 19968: jis0212<<14 | 0x45<<7 | 0x06, - 38302 - 19968: jis0212<<14 | 0x45<<7 | 0x07, - 38303 - 19968: jis0212<<14 | 0x45<<7 | 0x08, - 38304 - 19968: jis0208<<14 | 0x4E<<7 | 0x3F, - 38305 - 19968: jis0212<<14 | 0x45<<7 | 0x09, - 38306 - 19968: jis0208<<14 | 0x13<<7 | 0x37, - 38307 - 19968: jis0208<<14 | 0x12<<7 | 0x34, - 38308 - 19968: jis0208<<14 | 0x18<<7 | 0x3D, - 38309 - 19968: jis0208<<14 | 0x27<<7 | 0x15, - 38310 - 19968: jis0212<<14 | 0x45<<7 | 0x0A, - 38311 - 19968: jis0208<<14 | 0x4E<<7 | 0x41, - 38312 - 19968: jis0208<<14 | 0x4E<<7 | 0x40, - 38313 - 19968: jis0212<<14 | 0x45<<7 | 0x0B, - 38315 - 19968: jis0212<<14 | 0x45<<7 | 0x0C, - 38316 - 19968: jis0212<<14 | 0x45<<7 | 0x0D, - 38317 - 19968: jis0208<<14 | 0x4E<<7 | 0x42, - 38322 - 19968: jis0208<<14 | 0x10<<7 | 0x3B, - 38324 - 19968: jis0212<<14 | 0x45<<7 | 0x0E, - 38326 - 19968: jis0212<<14 | 0x45<<7 | 0x0F, - 38329 - 19968: jis0208<<14 | 0x4E<<7 | 0x45, - 38330 - 19968: jis0212<<14 | 0x45<<7 | 0x10, - 38331 - 19968: jis0208<<14 | 0x4E<<7 | 0x44, - 38332 - 19968: jis0208<<14 | 0x4E<<7 | 0x43, - 38333 - 19968: jis0212<<14 | 0x45<<7 | 0x11, - 38334 - 19968: jis0208<<14 | 0x4E<<7 | 0x46, - 38335 - 19968: jis0212<<14 | 0x45<<7 | 0x12, - 38339 - 19968: jis0208<<14 | 0x4E<<7 | 0x49, - 38342 - 19968: jis0212<<14 | 0x45<<7 | 0x13, - 38343 - 19968: jis0208<<14 | 0x0F<<7 | 0x26, - 38344 - 19968: jis0212<<14 | 0x45<<7 | 0x14, - 38345 - 19968: jis0212<<14 | 0x45<<7 | 0x15, - 38346 - 19968: jis0208<<14 | 0x4E<<7 | 0x47, - 38347 - 19968: jis0212<<14 | 0x45<<7 | 0x16, - 38348 - 19968: jis0208<<14 | 0x4E<<7 | 0x4B, - 38349 - 19968: jis0208<<14 | 0x4E<<7 | 0x4A, - 38352 - 19968: jis0212<<14 | 0x45<<7 | 0x17, - 38353 - 19968: jis0212<<14 | 0x45<<7 | 0x18, - 38354 - 19968: jis0212<<14 | 0x45<<7 | 0x19, - 38355 - 19968: jis0212<<14 | 0x45<<7 | 0x1A, - 38356 - 19968: jis0208<<14 | 0x4E<<7 | 0x4D, - 38357 - 19968: jis0208<<14 | 0x4E<<7 | 0x4C, - 38358 - 19968: jis0208<<14 | 0x4E<<7 | 0x4E, - 38360 - 19968: jis0208<<14 | 0x25<<7 | 0x0D, - 38361 - 19968: jis0212<<14 | 0x45<<7 | 0x1B, - 38362 - 19968: jis0212<<14 | 0x45<<7 | 0x1C, - 38364 - 19968: jis0208<<14 | 0x4E<<7 | 0x4F, - 38365 - 19968: jis0212<<14 | 0x45<<7 | 0x1D, - 38366 - 19968: jis0212<<14 | 0x45<<7 | 0x1E, - 38367 - 19968: jis0212<<14 | 0x45<<7 | 0x1F, - 38368 - 19968: jis0212<<14 | 0x45<<7 | 0x20, - 38369 - 19968: jis0208<<14 | 0x4E<<7 | 0x50, - 38370 - 19968: jis0208<<14 | 0x4E<<7 | 0x52, - 38372 - 19968: jis0212<<14 | 0x45<<7 | 0x21, - 38373 - 19968: jis0208<<14 | 0x4E<<7 | 0x51, - 38374 - 19968: jis0212<<14 | 0x45<<7 | 0x22, - 38428 - 19968: jis0208<<14 | 0x28<<7 | 0x4B, - 38429 - 19968: jis0212<<14 | 0x45<<7 | 0x23, - 38430 - 19968: jis0212<<14 | 0x45<<7 | 0x24, - 38433 - 19968: jis0208<<14 | 0x4E<<7 | 0x53, - 38434 - 19968: jis0212<<14 | 0x45<<7 | 0x25, - 38436 - 19968: jis0212<<14 | 0x45<<7 | 0x26, - 38437 - 19968: jis0212<<14 | 0x45<<7 | 0x27, - 38438 - 19968: jis0212<<14 | 0x45<<7 | 0x28, - 38440 - 19968: jis0208<<14 | 0x4E<<7 | 0x54, - 38442 - 19968: jis0208<<14 | 0x19<<7 | 0x44, - 38444 - 19968: jis0212<<14 | 0x45<<7 | 0x29, - 38446 - 19968: jis0208<<14 | 0x4E<<7 | 0x55, - 38447 - 19968: jis0208<<14 | 0x4E<<7 | 0x56, - 38449 - 19968: jis0212<<14 | 0x45<<7 | 0x2A, - 38450 - 19968: jis0208<<14 | 0x2A<<7 | 0x28, - 38451 - 19968: jis0212<<14 | 0x45<<7 | 0x2B, - 38455 - 19968: jis0212<<14 | 0x45<<7 | 0x2C, - 38456 - 19968: jis0212<<14 | 0x45<<7 | 0x2D, - 38457 - 19968: jis0212<<14 | 0x45<<7 | 0x2E, - 38458 - 19968: jis0212<<14 | 0x45<<7 | 0x2F, - 38459 - 19968: jis0208<<14 | 0x20<<7 | 0x2A, - 38460 - 19968: jis0212<<14 | 0x45<<7 | 0x30, - 38461 - 19968: jis0212<<14 | 0x45<<7 | 0x31, - 38463 - 19968: jis0208<<14 | 0x0F<<7 | 0x03, - 38464 - 19968: jis0208<<14 | 0x21<<7 | 0x2A, - 38465 - 19968: jis0212<<14 | 0x45<<7 | 0x32, - 38466 - 19968: jis0208<<14 | 0x4E<<7 | 0x57, - 38468 - 19968: jis0208<<14 | 0x28<<7 | 0x4C, - 38475 - 19968: jis0208<<14 | 0x4E<<7 | 0x5A, - 38476 - 19968: jis0208<<14 | 0x4E<<7 | 0x58, - 38477 - 19968: jis0208<<14 | 0x18<<7 | 0x3E, - 38479 - 19968: jis0208<<14 | 0x4E<<7 | 0x59, - 38480 - 19968: jis0208<<14 | 0x17<<7 | 0x21, - 38482 - 19968: jis0212<<14 | 0x45<<7 | 0x33, - 38484 - 19968: jis0212<<14 | 0x45<<7 | 0x34, - 38486 - 19968: jis0212<<14 | 0x45<<7 | 0x35, - 38487 - 19968: jis0212<<14 | 0x45<<7 | 0x36, - 38488 - 19968: jis0212<<14 | 0x45<<7 | 0x37, - 38491 - 19968: jis0208<<14 | 0x29<<7 | 0x24, - 38492 - 19968: jis0208<<14 | 0x4E<<7 | 0x5C, - 38493 - 19968: jis0208<<14 | 0x4F<<7 | 0x00, - 38494 - 19968: jis0208<<14 | 0x4E<<7 | 0x5D, - 38495 - 19968: jis0208<<14 | 0x4F<<7 | 0x01, - 38497 - 19968: jis0212<<14 | 0x45<<7 | 0x38, - 38498 - 19968: jis0208<<14 | 0x10<<7 | 0x00, - 38499 - 19968: jis0208<<14 | 0x1E<<7 | 0x37, - 38500 - 19968: jis0208<<14 | 0x1C<<7 | 0x5B, - 38501 - 19968: jis0208<<14 | 0x13<<7 | 0x38, - 38502 - 19968: jis0208<<14 | 0x4F<<7 | 0x02, - 38506 - 19968: jis0208<<14 | 0x26<<7 | 0x45, - 38508 - 19968: jis0208<<14 | 0x4F<<7 | 0x04, - 38510 - 19968: jis0212<<14 | 0x45<<7 | 0x39, - 38512 - 19968: jis0208<<14 | 0x10<<7 | 0x01, - 38514 - 19968: jis0208<<14 | 0x4F<<7 | 0x03, - 38515 - 19968: jis0208<<14 | 0x23<<7 | 0x23, - 38516 - 19968: jis0212<<14 | 0x45<<7 | 0x3A, - 38517 - 19968: jis0208<<14 | 0x2D<<7 | 0x2C, - 38518 - 19968: jis0208<<14 | 0x25<<7 | 0x0A, - 38519 - 19968: jis0208<<14 | 0x4E<<7 | 0x5B, - 38520 - 19968: jis0208<<14 | 0x2D<<7 | 0x05, - 38522 - 19968: jis0208<<14 | 0x17<<7 | 0x10, - 38523 - 19968: jis0212<<14 | 0x45<<7 | 0x3B, - 38524 - 19968: jis0212<<14 | 0x45<<7 | 0x3C, - 38525 - 19968: jis0208<<14 | 0x2C<<7 | 0x3A, - 38526 - 19968: jis0212<<14 | 0x45<<7 | 0x3D, - 38527 - 19968: jis0212<<14 | 0x45<<7 | 0x3E, - 38529 - 19968: jis0212<<14 | 0x45<<7 | 0x3F, - 38530 - 19968: jis0212<<14 | 0x45<<7 | 0x40, - 38531 - 19968: jis0212<<14 | 0x45<<7 | 0x41, - 38532 - 19968: jis0212<<14 | 0x45<<7 | 0x42, - 38533 - 19968: jis0208<<14 | 0x15<<7 | 0x58, - 38534 - 19968: jis0208<<14 | 0x2D<<7 | 0x13, - 38536 - 19968: jis0208<<14 | 0x16<<7 | 0x07, - 38537 - 19968: jis0212<<14 | 0x45<<7 | 0x43, - 38538 - 19968: jis0208<<14 | 0x21<<7 | 0x41, - 38539 - 19968: jis0208<<14 | 0x46<<7 | 0x00, - 38541 - 19968: jis0208<<14 | 0x4F<<7 | 0x05, - 38542 - 19968: jis0208<<14 | 0x12<<7 | 0x0B, - 38543 - 19968: jis0208<<14 | 0x1E<<7 | 0x4E, - 38545 - 19968: jis0212<<14 | 0x45<<7 | 0x44, - 38548 - 19968: jis0208<<14 | 0x12<<7 | 0x35, - 38549 - 19968: jis0208<<14 | 0x4F<<7 | 0x07, - 38550 - 19968: jis0212<<14 | 0x45<<7 | 0x45, - 38551 - 19968: jis0208<<14 | 0x4F<<7 | 0x08, - 38552 - 19968: jis0208<<14 | 0x4F<<7 | 0x06, - 38553 - 19968: jis0208<<14 | 0x16<<7 | 0x43, - 38554 - 19968: jis0212<<14 | 0x45<<7 | 0x46, - 38555 - 19968: jis0208<<14 | 0x19<<7 | 0x3C, - 38556 - 19968: jis0208<<14 | 0x1D<<7 | 0x42, - 38557 - 19968: jis0208<<14 | 0x5B<<7 | 0x30, - 38559 - 19968: jis0212<<14 | 0x45<<7 | 0x48, - 38560 - 19968: jis0208<<14 | 0x10<<7 | 0x02, - 38563 - 19968: jis0208<<14 | 0x2D<<7 | 0x38, - 38564 - 19968: jis0212<<14 | 0x45<<7 | 0x49, - 38565 - 19968: jis0212<<14 | 0x45<<7 | 0x4A, - 38566 - 19968: jis0212<<14 | 0x45<<7 | 0x4B, - 38567 - 19968: jis0208<<14 | 0x4F<<7 | 0x0A, - 38568 - 19968: jis0208<<14 | 0x4D<<7 | 0x0D, - 38569 - 19968: jis0212<<14 | 0x45<<7 | 0x4C, - 38570 - 19968: jis0208<<14 | 0x4F<<7 | 0x09, - 38574 - 19968: jis0212<<14 | 0x45<<7 | 0x4D, - 38575 - 19968: jis0208<<14 | 0x5B<<7 | 0x31, - 38576 - 19968: jis0208<<14 | 0x4F<<7 | 0x0D, - 38577 - 19968: jis0208<<14 | 0x4F<<7 | 0x0B, - 38578 - 19968: jis0208<<14 | 0x4F<<7 | 0x0C, - 38579 - 19968: jis0212<<14 | 0x45<<7 | 0x4F, - 38580 - 19968: jis0208<<14 | 0x4F<<7 | 0x0E, - 38582 - 19968: jis0208<<14 | 0x4F<<7 | 0x0F, - 38583 - 19968: jis0208<<14 | 0x2D<<7 | 0x4B, - 38584 - 19968: jis0208<<14 | 0x4F<<7 | 0x10, - 38585 - 19968: jis0208<<14 | 0x4F<<7 | 0x11, - 38586 - 19968: jis0212<<14 | 0x45<<7 | 0x50, - 38587 - 19968: jis0208<<14 | 0x1F<<7 | 0x28, - 38588 - 19968: jis0208<<14 | 0x27<<7 | 0x1A, - 38592 - 19968: jis0208<<14 | 0x1E<<7 | 0x5C, - 38593 - 19968: jis0208<<14 | 0x13<<7 | 0x46, - 38596 - 19968: jis0208<<14 | 0x2C<<7 | 0x19, - 38597 - 19968: jis0208<<14 | 0x11<<7 | 0x4C, - 38598 - 19968: jis0208<<14 | 0x1C<<7 | 0x17, - 38599 - 19968: jis0208<<14 | 0x17<<7 | 0x3A, - 38601 - 19968: jis0208<<14 | 0x4F<<7 | 0x14, - 38602 - 19968: jis0212<<14 | 0x45<<7 | 0x51, - 38603 - 19968: jis0208<<14 | 0x4F<<7 | 0x13, - 38604 - 19968: jis0208<<14 | 0x1A<<7 | 0x52, - 38605 - 19968: jis0208<<14 | 0x4F<<7 | 0x15, - 38606 - 19968: jis0208<<14 | 0x4F<<7 | 0x12, - 38609 - 19968: jis0208<<14 | 0x1A<<7 | 0x07, - 38610 - 19968: jis0212<<14 | 0x45<<7 | 0x52, - 38613 - 19968: jis0208<<14 | 0x4F<<7 | 0x19, - 38614 - 19968: jis0208<<14 | 0x49<<7 | 0x0C, - 38616 - 19968: jis0212<<14 | 0x45<<7 | 0x54, - 38617 - 19968: jis0208<<14 | 0x31<<7 | 0x35, - 38618 - 19968: jis0212<<14 | 0x45<<7 | 0x55, - 38619 - 19968: jis0208<<14 | 0x1E<<7 | 0x56, - 38620 - 19968: jis0208<<14 | 0x4F<<7 | 0x17, - 38621 - 19968: jis0212<<14 | 0x45<<7 | 0x56, - 38622 - 19968: jis0212<<14 | 0x45<<7 | 0x57, - 38623 - 19968: jis0212<<14 | 0x45<<7 | 0x58, - 38626 - 19968: jis0208<<14 | 0x2D<<7 | 0x04, - 38627 - 19968: jis0208<<14 | 0x25<<7 | 0x50, - 38632 - 19968: jis0208<<14 | 0x10<<7 | 0x0A, - 38633 - 19968: jis0212<<14 | 0x45<<7 | 0x59, - 38634 - 19968: jis0208<<14 | 0x1F<<7 | 0x42, - 38635 - 19968: jis0208<<14 | 0x1B<<7 | 0x15, - 38639 - 19968: jis0212<<14 | 0x45<<7 | 0x5A, - 38640 - 19968: jis0208<<14 | 0x29<<7 | 0x16, - 38641 - 19968: jis0212<<14 | 0x45<<7 | 0x5B, - 38642 - 19968: jis0208<<14 | 0x10<<7 | 0x1F, - 38646 - 19968: jis0208<<14 | 0x2D<<7 | 0x4C, - 38647 - 19968: jis0208<<14 | 0x2C<<7 | 0x4A, - 38649 - 19968: jis0208<<14 | 0x4F<<7 | 0x1A, - 38650 - 19968: jis0212<<14 | 0x45<<7 | 0x5C, - 38651 - 19968: jis0208<<14 | 0x24<<7 | 0x24, - 38656 - 19968: jis0208<<14 | 0x1B<<7 | 0x5A, - 38658 - 19968: jis0212<<14 | 0x45<<7 | 0x5D, - 38659 - 19968: jis0212<<14 | 0x46<<7 | 0x00, - 38660 - 19968: jis0208<<14 | 0x4F<<7 | 0x1B, - 38661 - 19968: jis0212<<14 | 0x46<<7 | 0x01, - 38662 - 19968: jis0208<<14 | 0x4F<<7 | 0x1C, - 38663 - 19968: jis0208<<14 | 0x1E<<7 | 0x2B, - 38664 - 19968: jis0208<<14 | 0x4F<<7 | 0x1D, - 38665 - 19968: jis0212<<14 | 0x46<<7 | 0x02, - 38666 - 19968: jis0208<<14 | 0x2D<<7 | 0x4D, - 38669 - 19968: jis0208<<14 | 0x4F<<7 | 0x18, - 38670 - 19968: jis0208<<14 | 0x4F<<7 | 0x1F, - 38671 - 19968: jis0208<<14 | 0x4F<<7 | 0x21, - 38673 - 19968: jis0208<<14 | 0x4F<<7 | 0x20, - 38675 - 19968: jis0208<<14 | 0x4F<<7 | 0x1E, - 38678 - 19968: jis0208<<14 | 0x4F<<7 | 0x22, - 38681 - 19968: jis0208<<14 | 0x4F<<7 | 0x23, - 38682 - 19968: jis0212<<14 | 0x46<<7 | 0x03, - 38683 - 19968: jis0212<<14 | 0x46<<7 | 0x04, - 38684 - 19968: jis0208<<14 | 0x20<<7 | 0x59, - 38685 - 19968: jis0212<<14 | 0x46<<7 | 0x05, - 38686 - 19968: jis0208<<14 | 0x11<<7 | 0x41, - 38689 - 19968: jis0212<<14 | 0x46<<7 | 0x06, - 38690 - 19968: jis0212<<14 | 0x46<<7 | 0x07, - 38691 - 19968: jis0212<<14 | 0x46<<7 | 0x08, - 38692 - 19968: jis0208<<14 | 0x4F<<7 | 0x24, - 38695 - 19968: jis0208<<14 | 0x2B<<7 | 0x17, - 38696 - 19968: jis0212<<14 | 0x46<<7 | 0x09, - 38698 - 19968: jis0208<<14 | 0x4F<<7 | 0x25, - 38704 - 19968: jis0208<<14 | 0x4F<<7 | 0x26, - 38705 - 19968: jis0212<<14 | 0x46<<7 | 0x0A, - 38706 - 19968: jis0208<<14 | 0x2E<<7 | 0x09, - 38707 - 19968: jis0208<<14 | 0x5B<<7 | 0x32, - 38712 - 19968: jis0208<<14 | 0x3A<<7 | 0x10, - 38713 - 19968: jis0208<<14 | 0x4F<<7 | 0x27, - 38715 - 19968: jis0208<<14 | 0x5B<<7 | 0x33, - 38717 - 19968: jis0208<<14 | 0x4F<<7 | 0x28, - 38718 - 19968: jis0208<<14 | 0x4F<<7 | 0x29, - 38721 - 19968: jis0212<<14 | 0x46<<7 | 0x0C, - 38722 - 19968: jis0208<<14 | 0x4F<<7 | 0x2D, - 38723 - 19968: jis0208<<14 | 0x5B<<7 | 0x34, - 38724 - 19968: jis0208<<14 | 0x4F<<7 | 0x2A, - 38726 - 19968: jis0208<<14 | 0x4F<<7 | 0x2B, - 38728 - 19968: jis0208<<14 | 0x4F<<7 | 0x2C, - 38729 - 19968: jis0208<<14 | 0x4F<<7 | 0x2E, - 38730 - 19968: jis0212<<14 | 0x46<<7 | 0x0E, - 38733 - 19968: jis0208<<14 | 0x5B<<7 | 0x35, - 38734 - 19968: jis0212<<14 | 0x46<<7 | 0x0F, - 38735 - 19968: jis0208<<14 | 0x5B<<7 | 0x36, - 38737 - 19968: jis0208<<14 | 0x5B<<7 | 0x37, - 38738 - 19968: jis0208<<14 | 0x1F<<7 | 0x23, - 38741 - 19968: jis0208<<14 | 0x5B<<7 | 0x38, - 38742 - 19968: jis0208<<14 | 0x2B<<7 | 0x56, - 38743 - 19968: jis0212<<14 | 0x46<<7 | 0x12, - 38744 - 19968: jis0212<<14 | 0x46<<7 | 0x13, - 38745 - 19968: jis0208<<14 | 0x1F<<7 | 0x24, - 38746 - 19968: jis0212<<14 | 0x46<<7 | 0x14, - 38747 - 19968: jis0212<<14 | 0x46<<7 | 0x15, - 38748 - 19968: jis0208<<14 | 0x4F<<7 | 0x2F, - 38750 - 19968: jis0208<<14 | 0x27<<7 | 0x52, - 38752 - 19968: jis0208<<14 | 0x4F<<7 | 0x30, - 38753 - 19968: jis0208<<14 | 0x52<<7 | 0x32, - 38754 - 19968: jis0208<<14 | 0x2B<<7 | 0x2B, - 38755 - 19968: jis0212<<14 | 0x46<<7 | 0x16, - 38756 - 19968: jis0208<<14 | 0x4F<<7 | 0x31, - 38758 - 19968: jis0208<<14 | 0x4F<<7 | 0x32, - 38759 - 19968: jis0212<<14 | 0x46<<7 | 0x17, - 38760 - 19968: jis0208<<14 | 0x4F<<7 | 0x33, - 38761 - 19968: jis0208<<14 | 0x12<<7 | 0x36, - 38762 - 19968: jis0212<<14 | 0x46<<7 | 0x18, - 38763 - 19968: jis0208<<14 | 0x4F<<7 | 0x35, - 38765 - 19968: jis0208<<14 | 0x1E<<7 | 0x38, - 38766 - 19968: jis0212<<14 | 0x46<<7 | 0x19, - 38769 - 19968: jis0208<<14 | 0x4F<<7 | 0x36, - 38771 - 19968: jis0212<<14 | 0x46<<7 | 0x1A, - 38772 - 19968: jis0208<<14 | 0x16<<7 | 0x03, - 38774 - 19968: jis0212<<14 | 0x46<<7 | 0x1B, - 38775 - 19968: jis0212<<14 | 0x46<<7 | 0x1C, - 38776 - 19968: jis0212<<14 | 0x46<<7 | 0x1D, - 38777 - 19968: jis0208<<14 | 0x4F<<7 | 0x37, - 38778 - 19968: jis0208<<14 | 0x4F<<7 | 0x3B, - 38779 - 19968: jis0212<<14 | 0x46<<7 | 0x1E, - 38780 - 19968: jis0208<<14 | 0x4F<<7 | 0x39, - 38781 - 19968: jis0212<<14 | 0x46<<7 | 0x1F, - 38783 - 19968: jis0212<<14 | 0x46<<7 | 0x20, - 38784 - 19968: jis0212<<14 | 0x46<<7 | 0x21, - 38785 - 19968: jis0208<<14 | 0x4F<<7 | 0x3A, - 38788 - 19968: jis0208<<14 | 0x12<<7 | 0x52, - 38789 - 19968: jis0208<<14 | 0x4F<<7 | 0x38, - 38790 - 19968: jis0208<<14 | 0x4F<<7 | 0x3C, - 38793 - 19968: jis0212<<14 | 0x46<<7 | 0x22, - 38795 - 19968: jis0208<<14 | 0x4F<<7 | 0x3D, - 38797 - 19968: jis0208<<14 | 0x0F<<7 | 0x27, - 38799 - 19968: jis0208<<14 | 0x4F<<7 | 0x3E, - 38800 - 19968: jis0208<<14 | 0x4F<<7 | 0x3F, - 38805 - 19968: jis0212<<14 | 0x46<<7 | 0x23, - 38806 - 19968: jis0212<<14 | 0x46<<7 | 0x24, - 38807 - 19968: jis0212<<14 | 0x46<<7 | 0x25, - 38808 - 19968: jis0208<<14 | 0x1D<<7 | 0x43, - 38809 - 19968: jis0212<<14 | 0x46<<7 | 0x26, - 38810 - 19968: jis0212<<14 | 0x46<<7 | 0x27, - 38812 - 19968: jis0208<<14 | 0x4F<<7 | 0x40, - 38814 - 19968: jis0212<<14 | 0x46<<7 | 0x28, - 38815 - 19968: jis0212<<14 | 0x46<<7 | 0x29, - 38816 - 19968: jis0208<<14 | 0x14<<7 | 0x26, - 38818 - 19968: jis0212<<14 | 0x46<<7 | 0x2A, - 38819 - 19968: jis0208<<14 | 0x4F<<7 | 0x43, - 38822 - 19968: jis0208<<14 | 0x4F<<7 | 0x42, - 38824 - 19968: jis0208<<14 | 0x4F<<7 | 0x41, - 38827 - 19968: jis0208<<14 | 0x4A<<7 | 0x50, - 38828 - 19968: jis0212<<14 | 0x46<<7 | 0x2B, - 38829 - 19968: jis0208<<14 | 0x29<<7 | 0x3B, - 38830 - 19968: jis0212<<14 | 0x46<<7 | 0x2C, - 38833 - 19968: jis0212<<14 | 0x46<<7 | 0x2D, - 38834 - 19968: jis0212<<14 | 0x46<<7 | 0x2E, - 38835 - 19968: jis0208<<14 | 0x4F<<7 | 0x44, - 38836 - 19968: jis0208<<14 | 0x4F<<7 | 0x45, - 38837 - 19968: jis0212<<14 | 0x46<<7 | 0x2F, - 38838 - 19968: jis0212<<14 | 0x46<<7 | 0x30, - 38840 - 19968: jis0212<<14 | 0x46<<7 | 0x31, - 38841 - 19968: jis0212<<14 | 0x46<<7 | 0x32, - 38842 - 19968: jis0212<<14 | 0x46<<7 | 0x33, - 38844 - 19968: jis0212<<14 | 0x46<<7 | 0x34, - 38846 - 19968: jis0212<<14 | 0x46<<7 | 0x35, - 38847 - 19968: jis0212<<14 | 0x46<<7 | 0x36, - 38849 - 19968: jis0212<<14 | 0x46<<7 | 0x37, - 38851 - 19968: jis0208<<14 | 0x4F<<7 | 0x46, - 38852 - 19968: jis0212<<14 | 0x46<<7 | 0x38, - 38853 - 19968: jis0212<<14 | 0x46<<7 | 0x39, - 38854 - 19968: jis0208<<14 | 0x4F<<7 | 0x47, - 38855 - 19968: jis0212<<14 | 0x46<<7 | 0x3A, - 38856 - 19968: jis0208<<14 | 0x4F<<7 | 0x48, - 38857 - 19968: jis0212<<14 | 0x46<<7 | 0x3B, - 38858 - 19968: jis0212<<14 | 0x46<<7 | 0x3C, - 38859 - 19968: jis0208<<14 | 0x4F<<7 | 0x49, - 38860 - 19968: jis0212<<14 | 0x46<<7 | 0x3D, - 38861 - 19968: jis0212<<14 | 0x46<<7 | 0x3E, - 38862 - 19968: jis0212<<14 | 0x46<<7 | 0x3F, - 38864 - 19968: jis0212<<14 | 0x46<<7 | 0x40, - 38865 - 19968: jis0212<<14 | 0x46<<7 | 0x41, - 38867 - 19968: jis0208<<14 | 0x13<<7 | 0x39, - 38868 - 19968: jis0212<<14 | 0x46<<7 | 0x42, - 38871 - 19968: jis0212<<14 | 0x46<<7 | 0x43, - 38872 - 19968: jis0212<<14 | 0x46<<7 | 0x44, - 38873 - 19968: jis0212<<14 | 0x46<<7 | 0x45, - 38875 - 19968: jis0212<<14 | 0x46<<7 | 0x49, - 38876 - 19968: jis0208<<14 | 0x4F<<7 | 0x4A, - 38877 - 19968: jis0212<<14 | 0x46<<7 | 0x46, - 38878 - 19968: jis0212<<14 | 0x46<<7 | 0x47, - 38880 - 19968: jis0212<<14 | 0x46<<7 | 0x48, - 38881 - 19968: jis0212<<14 | 0x46<<7 | 0x4A, - 38884 - 19968: jis0212<<14 | 0x46<<7 | 0x4B, - 38893 - 19968: jis0208<<14 | 0x4F<<7 | 0x4B, - 38894 - 19968: jis0208<<14 | 0x26<<7 | 0x02, - 38895 - 19968: jis0212<<14 | 0x46<<7 | 0x4C, - 38897 - 19968: jis0212<<14 | 0x46<<7 | 0x4D, - 38898 - 19968: jis0208<<14 | 0x4F<<7 | 0x4D, - 38899 - 19968: jis0208<<14 | 0x11<<7 | 0x1A, - 38900 - 19968: jis0212<<14 | 0x46<<7 | 0x4E, - 38901 - 19968: jis0208<<14 | 0x4F<<7 | 0x50, - 38902 - 19968: jis0208<<14 | 0x4F<<7 | 0x4F, - 38903 - 19968: jis0212<<14 | 0x46<<7 | 0x4F, - 38904 - 19968: jis0212<<14 | 0x46<<7 | 0x50, - 38906 - 19968: jis0212<<14 | 0x46<<7 | 0x51, - 38907 - 19968: jis0208<<14 | 0x10<<7 | 0x03, - 38911 - 19968: jis0208<<14 | 0x15<<7 | 0x20, - 38913 - 19968: jis0208<<14 | 0x29<<7 | 0x26, - 38914 - 19968: jis0208<<14 | 0x23<<7 | 0x19, - 38915 - 19968: jis0208<<14 | 0x19<<7 | 0x01, - 38917 - 19968: jis0208<<14 | 0x18<<7 | 0x3F, - 38918 - 19968: jis0208<<14 | 0x1C<<7 | 0x46, - 38919 - 19968: jis0212<<14 | 0x46<<7 | 0x52, - 38920 - 19968: jis0208<<14 | 0x1E<<7 | 0x3B, - 38922 - 19968: jis0212<<14 | 0x46<<7 | 0x53, - 38924 - 19968: jis0208<<14 | 0x4F<<7 | 0x52, - 38925 - 19968: jis0212<<14 | 0x46<<7 | 0x55, - 38926 - 19968: jis0212<<14 | 0x46<<7 | 0x56, - 38927 - 19968: jis0208<<14 | 0x4F<<7 | 0x51, - 38928 - 19968: jis0208<<14 | 0x2C<<7 | 0x21, - 38929 - 19968: jis0208<<14 | 0x13<<7 | 0x47, - 38930 - 19968: jis0208<<14 | 0x27<<7 | 0x31, - 38931 - 19968: jis0208<<14 | 0x25<<7 | 0x3B, - 38932 - 19968: jis0212<<14 | 0x46<<7 | 0x57, - 38934 - 19968: jis0212<<14 | 0x46<<7 | 0x58, - 38935 - 19968: jis0208<<14 | 0x1E<<7 | 0x5B, - 38936 - 19968: jis0208<<14 | 0x2D<<7 | 0x2D, - 38937 - 19968: jis0212<<14 | 0x46<<7 | 0x54, - 38938 - 19968: jis0208<<14 | 0x16<<7 | 0x3A, - 38940 - 19968: jis0212<<14 | 0x46<<7 | 0x59, - 38942 - 19968: jis0212<<14 | 0x46<<7 | 0x5A, - 38944 - 19968: jis0212<<14 | 0x46<<7 | 0x5B, - 38945 - 19968: jis0208<<14 | 0x4F<<7 | 0x55, - 38947 - 19968: jis0212<<14 | 0x46<<7 | 0x5C, - 38948 - 19968: jis0208<<14 | 0x4F<<7 | 0x54, - 38949 - 19968: jis0212<<14 | 0x47<<7 | 0x07, - 38950 - 19968: jis0212<<14 | 0x46<<7 | 0x5D, - 38955 - 19968: jis0212<<14 | 0x47<<7 | 0x00, - 38956 - 19968: jis0208<<14 | 0x2A<<7 | 0x2A, - 38957 - 19968: jis0208<<14 | 0x25<<7 | 0x0B, - 38958 - 19968: jis0212<<14 | 0x47<<7 | 0x01, - 38959 - 19968: jis0212<<14 | 0x47<<7 | 0x02, - 38960 - 19968: jis0212<<14 | 0x47<<7 | 0x03, - 38962 - 19968: jis0212<<14 | 0x47<<7 | 0x04, - 38963 - 19968: jis0212<<14 | 0x47<<7 | 0x05, - 38964 - 19968: jis0208<<14 | 0x10<<7 | 0x2F, - 38965 - 19968: jis0212<<14 | 0x47<<7 | 0x06, - 38967 - 19968: jis0208<<14 | 0x4F<<7 | 0x56, - 38968 - 19968: jis0208<<14 | 0x4F<<7 | 0x53, - 38971 - 19968: jis0208<<14 | 0x28<<7 | 0x30, - 38972 - 19968: jis0208<<14 | 0x2C<<7 | 0x49, - 38973 - 19968: jis0208<<14 | 0x4F<<7 | 0x57, - 38974 - 19968: jis0212<<14 | 0x47<<7 | 0x08, - 38980 - 19968: jis0212<<14 | 0x47<<7 | 0x09, - 38982 - 19968: jis0208<<14 | 0x4F<<7 | 0x58, - 38983 - 19968: jis0212<<14 | 0x47<<7 | 0x0A, - 38986 - 19968: jis0212<<14 | 0x47<<7 | 0x0B, - 38987 - 19968: jis0208<<14 | 0x4F<<7 | 0x5A, - 38988 - 19968: jis0208<<14 | 0x21<<7 | 0x49, - 38989 - 19968: jis0208<<14 | 0x12<<7 | 0x3A, - 38990 - 19968: jis0208<<14 | 0x12<<7 | 0x3B, - 38991 - 19968: jis0208<<14 | 0x4F<<7 | 0x59, - 38993 - 19968: jis0212<<14 | 0x47<<7 | 0x0C, - 38994 - 19968: jis0212<<14 | 0x47<<7 | 0x0D, - 38995 - 19968: jis0212<<14 | 0x47<<7 | 0x0E, - 38996 - 19968: jis0208<<14 | 0x13<<7 | 0x48, - 38997 - 19968: jis0208<<14 | 0x17<<7 | 0x11, - 38998 - 19968: jis0212<<14 | 0x47<<7 | 0x0F, - 38999 - 19968: jis0208<<14 | 0x5B<<7 | 0x39, - 39000 - 19968: jis0208<<14 | 0x13<<7 | 0x49, - 39001 - 19968: jis0212<<14 | 0x47<<7 | 0x11, - 39002 - 19968: jis0212<<14 | 0x47<<7 | 0x12, - 39003 - 19968: jis0208<<14 | 0x24<<7 | 0x1E, - 39006 - 19968: jis0208<<14 | 0x2D<<7 | 0x3F, - 39010 - 19968: jis0212<<14 | 0x47<<7 | 0x13, - 39011 - 19968: jis0212<<14 | 0x47<<7 | 0x14, - 39013 - 19968: jis0208<<14 | 0x5B<<7 | 0x3A, - 39014 - 19968: jis0212<<14 | 0x47<<7 | 0x16, - 39015 - 19968: jis0208<<14 | 0x17<<7 | 0x3B, - 39018 - 19968: jis0212<<14 | 0x47<<7 | 0x17, - 39019 - 19968: jis0208<<14 | 0x4F<<7 | 0x5B, - 39020 - 19968: jis0212<<14 | 0x47<<7 | 0x18, - 39023 - 19968: jis0208<<14 | 0x4F<<7 | 0x5C, - 39024 - 19968: jis0208<<14 | 0x4F<<7 | 0x5D, - 39025 - 19968: jis0208<<14 | 0x50<<7 | 0x00, - 39027 - 19968: jis0208<<14 | 0x50<<7 | 0x02, - 39028 - 19968: jis0208<<14 | 0x50<<7 | 0x01, - 39080 - 19968: jis0208<<14 | 0x28<<7 | 0x56, - 39082 - 19968: jis0208<<14 | 0x50<<7 | 0x03, - 39083 - 19968: jis0212<<14 | 0x47<<7 | 0x19, - 39085 - 19968: jis0212<<14 | 0x47<<7 | 0x1A, - 39086 - 19968: jis0212<<14 | 0x47<<7 | 0x1B, - 39087 - 19968: jis0208<<14 | 0x50<<7 | 0x04, - 39088 - 19968: jis0212<<14 | 0x47<<7 | 0x1C, - 39089 - 19968: jis0208<<14 | 0x50<<7 | 0x05, - 39092 - 19968: jis0212<<14 | 0x47<<7 | 0x1D, - 39094 - 19968: jis0208<<14 | 0x50<<7 | 0x06, - 39095 - 19968: jis0212<<14 | 0x47<<7 | 0x1E, - 39096 - 19968: jis0212<<14 | 0x47<<7 | 0x1F, - 39098 - 19968: jis0212<<14 | 0x47<<7 | 0x20, - 39099 - 19968: jis0212<<14 | 0x47<<7 | 0x21, - 39103 - 19968: jis0212<<14 | 0x47<<7 | 0x22, - 39106 - 19968: jis0212<<14 | 0x47<<7 | 0x23, - 39107 - 19968: jis0208<<14 | 0x50<<7 | 0x08, - 39108 - 19968: jis0208<<14 | 0x50<<7 | 0x07, - 39109 - 19968: jis0212<<14 | 0x47<<7 | 0x24, - 39110 - 19968: jis0208<<14 | 0x50<<7 | 0x09, - 39112 - 19968: jis0212<<14 | 0x47<<7 | 0x25, - 39116 - 19968: jis0212<<14 | 0x47<<7 | 0x26, - 39131 - 19968: jis0208<<14 | 0x27<<7 | 0x53, - 39132 - 19968: jis0208<<14 | 0x45<<7 | 0x2B, - 39135 - 19968: jis0208<<14 | 0x1E<<7 | 0x08, - 39137 - 19968: jis0212<<14 | 0x47<<7 | 0x27, - 39138 - 19968: jis0208<<14 | 0x14<<7 | 0x11, - 39139 - 19968: jis0212<<14 | 0x47<<7 | 0x28, - 39141 - 19968: jis0212<<14 | 0x47<<7 | 0x29, - 39142 - 19968: jis0212<<14 | 0x47<<7 | 0x2A, - 39143 - 19968: jis0212<<14 | 0x47<<7 | 0x2B, - 39145 - 19968: jis0208<<14 | 0x50<<7 | 0x0A, - 39146 - 19968: jis0212<<14 | 0x47<<7 | 0x2C, - 39147 - 19968: jis0208<<14 | 0x50<<7 | 0x0B, - 39149 - 19968: jis0208<<14 | 0x31<<7 | 0x0B, - 39150 - 19968: jis0208<<14 | 0x3C<<7 | 0x1A, - 39151 - 19968: jis0208<<14 | 0x27<<7 | 0x32, - 39154 - 19968: jis0208<<14 | 0x0F<<7 | 0x5A, - 39155 - 19968: jis0212<<14 | 0x47<<7 | 0x2D, - 39156 - 19968: jis0208<<14 | 0x0F<<7 | 0x1A, - 39158 - 19968: jis0212<<14 | 0x47<<7 | 0x2E, - 39164 - 19968: jis0208<<14 | 0x1A<<7 | 0x53, - 39165 - 19968: jis0208<<14 | 0x2A<<7 | 0x0F, - 39166 - 19968: jis0208<<14 | 0x1D<<7 | 0x5D, - 39170 - 19968: jis0212<<14 | 0x47<<7 | 0x2F, - 39171 - 19968: jis0208<<14 | 0x50<<7 | 0x0C, - 39173 - 19968: jis0208<<14 | 0x2B<<7 | 0x3E, - 39175 - 19968: jis0212<<14 | 0x47<<7 | 0x30, - 39176 - 19968: jis0212<<14 | 0x47<<7 | 0x31, - 39177 - 19968: jis0208<<14 | 0x50<<7 | 0x0D, - 39178 - 19968: jis0208<<14 | 0x2C<<7 | 0x3B, - 39180 - 19968: jis0208<<14 | 0x10<<7 | 0x21, - 39184 - 19968: jis0208<<14 | 0x1A<<7 | 0x20, - 39185 - 19968: jis0212<<14 | 0x47<<7 | 0x32, - 39186 - 19968: jis0208<<14 | 0x50<<7 | 0x0E, - 39187 - 19968: jis0208<<14 | 0x11<<7 | 0x4D, - 39188 - 19968: jis0208<<14 | 0x50<<7 | 0x0F, - 39189 - 19968: jis0212<<14 | 0x47<<7 | 0x33, - 39190 - 19968: jis0212<<14 | 0x47<<7 | 0x34, - 39191 - 19968: jis0212<<14 | 0x47<<7 | 0x35, - 39192 - 19968: jis0208<<14 | 0x50<<7 | 0x10, - 39194 - 19968: jis0212<<14 | 0x47<<7 | 0x36, - 39195 - 19968: jis0212<<14 | 0x47<<7 | 0x37, - 39196 - 19968: jis0212<<14 | 0x47<<7 | 0x38, - 39197 - 19968: jis0208<<14 | 0x50<<7 | 0x12, - 39198 - 19968: jis0208<<14 | 0x50<<7 | 0x13, - 39199 - 19968: jis0212<<14 | 0x47<<7 | 0x39, - 39200 - 19968: jis0208<<14 | 0x50<<7 | 0x15, - 39201 - 19968: jis0208<<14 | 0x50<<7 | 0x11, - 39202 - 19968: jis0212<<14 | 0x47<<7 | 0x3A, - 39204 - 19968: jis0208<<14 | 0x50<<7 | 0x14, - 39206 - 19968: jis0212<<14 | 0x47<<7 | 0x3B, - 39207 - 19968: jis0208<<14 | 0x5B<<7 | 0x3D, - 39208 - 19968: jis0208<<14 | 0x13<<7 | 0x3A, - 39211 - 19968: jis0212<<14 | 0x47<<7 | 0x3D, - 39212 - 19968: jis0208<<14 | 0x50<<7 | 0x16, - 39214 - 19968: jis0208<<14 | 0x50<<7 | 0x17, - 39217 - 19968: jis0212<<14 | 0x47<<7 | 0x3E, - 39218 - 19968: jis0212<<14 | 0x47<<7 | 0x3F, - 39219 - 19968: jis0212<<14 | 0x47<<7 | 0x40, - 39220 - 19968: jis0212<<14 | 0x47<<7 | 0x41, - 39221 - 19968: jis0212<<14 | 0x47<<7 | 0x42, - 39225 - 19968: jis0212<<14 | 0x47<<7 | 0x43, - 39226 - 19968: jis0212<<14 | 0x47<<7 | 0x44, - 39227 - 19968: jis0212<<14 | 0x47<<7 | 0x45, - 39228 - 19968: jis0212<<14 | 0x47<<7 | 0x46, - 39229 - 19968: jis0208<<14 | 0x50<<7 | 0x18, - 39230 - 19968: jis0208<<14 | 0x50<<7 | 0x19, - 39232 - 19968: jis0212<<14 | 0x47<<7 | 0x47, - 39233 - 19968: jis0212<<14 | 0x47<<7 | 0x48, - 39234 - 19968: jis0208<<14 | 0x50<<7 | 0x1A, - 39237 - 19968: jis0208<<14 | 0x50<<7 | 0x1C, - 39238 - 19968: jis0212<<14 | 0x47<<7 | 0x49, - 39239 - 19968: jis0212<<14 | 0x47<<7 | 0x4A, - 39240 - 19968: jis0212<<14 | 0x47<<7 | 0x4B, - 39241 - 19968: jis0208<<14 | 0x50<<7 | 0x1B, - 39243 - 19968: jis0208<<14 | 0x50<<7 | 0x1E, - 39244 - 19968: jis0208<<14 | 0x50<<7 | 0x21, - 39245 - 19968: jis0212<<14 | 0x47<<7 | 0x4C, - 39246 - 19968: jis0212<<14 | 0x47<<7 | 0x4D, - 39248 - 19968: jis0208<<14 | 0x50<<7 | 0x1D, - 39249 - 19968: jis0208<<14 | 0x50<<7 | 0x1F, - 39250 - 19968: jis0208<<14 | 0x50<<7 | 0x20, - 39252 - 19968: jis0212<<14 | 0x47<<7 | 0x4E, - 39253 - 19968: jis0208<<14 | 0x50<<7 | 0x22, - 39255 - 19968: jis0208<<14 | 0x15<<7 | 0x21, - 39256 - 19968: jis0212<<14 | 0x47<<7 | 0x4F, - 39257 - 19968: jis0212<<14 | 0x47<<7 | 0x50, - 39259 - 19968: jis0212<<14 | 0x47<<7 | 0x51, - 39260 - 19968: jis0212<<14 | 0x47<<7 | 0x52, - 39262 - 19968: jis0212<<14 | 0x47<<7 | 0x53, - 39263 - 19968: jis0212<<14 | 0x47<<7 | 0x54, - 39264 - 19968: jis0212<<14 | 0x47<<7 | 0x55, - 39318 - 19968: jis0208<<14 | 0x1B<<7 | 0x52, - 39319 - 19968: jis0208<<14 | 0x50<<7 | 0x23, - 39320 - 19968: jis0208<<14 | 0x50<<7 | 0x24, - 39321 - 19968: jis0208<<14 | 0x18<<7 | 0x40, - 39323 - 19968: jis0212<<14 | 0x47<<7 | 0x56, - 39325 - 19968: jis0212<<14 | 0x47<<7 | 0x57, - 39326 - 19968: jis0208<<14 | 0x5B<<7 | 0x3F, - 39327 - 19968: jis0212<<14 | 0x47<<7 | 0x58, - 39333 - 19968: jis0208<<14 | 0x50<<7 | 0x25, - 39334 - 19968: jis0212<<14 | 0x47<<7 | 0x59, - 39336 - 19968: jis0208<<14 | 0x12<<7 | 0x1D, - 39340 - 19968: jis0208<<14 | 0x26<<7 | 0x2E, - 39341 - 19968: jis0208<<14 | 0x50<<7 | 0x26, - 39342 - 19968: jis0208<<14 | 0x50<<7 | 0x27, - 39344 - 19968: jis0212<<14 | 0x47<<7 | 0x5A, - 39345 - 19968: jis0212<<14 | 0x47<<7 | 0x5B, - 39346 - 19968: jis0212<<14 | 0x47<<7 | 0x5C, - 39347 - 19968: jis0208<<14 | 0x22<<7 | 0x39, - 39348 - 19968: jis0208<<14 | 0x25<<7 | 0x4A, - 39349 - 19968: jis0212<<14 | 0x47<<7 | 0x5D, - 39353 - 19968: jis0212<<14 | 0x48<<7 | 0x00, - 39354 - 19968: jis0212<<14 | 0x48<<7 | 0x01, - 39356 - 19968: jis0208<<14 | 0x50<<7 | 0x28, - 39357 - 19968: jis0212<<14 | 0x48<<7 | 0x02, - 39359 - 19968: jis0212<<14 | 0x48<<7 | 0x03, - 39361 - 19968: jis0208<<14 | 0x26<<7 | 0x5C, - 39363 - 19968: jis0212<<14 | 0x48<<7 | 0x04, - 39364 - 19968: jis0208<<14 | 0x21<<7 | 0x2B, - 39365 - 19968: jis0208<<14 | 0x10<<7 | 0x37, - 39366 - 19968: jis0208<<14 | 0x15<<7 | 0x4D, - 39368 - 19968: jis0208<<14 | 0x15<<7 | 0x4E, - 39369 - 19968: jis0212<<14 | 0x48<<7 | 0x05, - 39376 - 19968: jis0208<<14 | 0x22<<7 | 0x52, - 39377 - 19968: jis0208<<14 | 0x50<<7 | 0x2D, - 39378 - 19968: jis0208<<14 | 0x15<<7 | 0x4F, - 39379 - 19968: jis0212<<14 | 0x48<<7 | 0x06, - 39380 - 19968: jis0212<<14 | 0x48<<7 | 0x07, - 39381 - 19968: jis0208<<14 | 0x11<<7 | 0x4E, - 39384 - 19968: jis0208<<14 | 0x50<<7 | 0x2C, - 39385 - 19968: jis0212<<14 | 0x48<<7 | 0x08, - 39386 - 19968: jis0212<<14 | 0x48<<7 | 0x09, - 39387 - 19968: jis0208<<14 | 0x50<<7 | 0x2A, - 39388 - 19968: jis0212<<14 | 0x48<<7 | 0x0A, - 39389 - 19968: jis0208<<14 | 0x50<<7 | 0x2B, - 39390 - 19968: jis0212<<14 | 0x48<<7 | 0x0B, - 39391 - 19968: jis0208<<14 | 0x50<<7 | 0x29, - 39394 - 19968: jis0208<<14 | 0x50<<7 | 0x37, - 39399 - 19968: jis0212<<14 | 0x48<<7 | 0x0C, - 39402 - 19968: jis0212<<14 | 0x48<<7 | 0x0D, - 39403 - 19968: jis0212<<14 | 0x48<<7 | 0x0E, - 39404 - 19968: jis0212<<14 | 0x48<<7 | 0x0F, - 39405 - 19968: jis0208<<14 | 0x50<<7 | 0x2E, - 39406 - 19968: jis0208<<14 | 0x50<<7 | 0x2F, - 39408 - 19968: jis0212<<14 | 0x48<<7 | 0x10, - 39409 - 19968: jis0208<<14 | 0x50<<7 | 0x30, - 39410 - 19968: jis0208<<14 | 0x50<<7 | 0x31, - 39412 - 19968: jis0212<<14 | 0x48<<7 | 0x11, - 39413 - 19968: jis0212<<14 | 0x48<<7 | 0x12, - 39416 - 19968: jis0208<<14 | 0x50<<7 | 0x33, - 39417 - 19968: jis0212<<14 | 0x48<<7 | 0x13, - 39419 - 19968: jis0208<<14 | 0x50<<7 | 0x32, - 39421 - 19968: jis0212<<14 | 0x48<<7 | 0x14, - 39422 - 19968: jis0212<<14 | 0x48<<7 | 0x15, - 39423 - 19968: jis0208<<14 | 0x1C<<7 | 0x38, - 39425 - 19968: jis0208<<14 | 0x50<<7 | 0x34, - 39426 - 19968: jis0212<<14 | 0x48<<7 | 0x16, - 39427 - 19968: jis0212<<14 | 0x48<<7 | 0x17, - 39428 - 19968: jis0212<<14 | 0x48<<7 | 0x18, - 39429 - 19968: jis0208<<14 | 0x50<<7 | 0x36, - 39435 - 19968: jis0212<<14 | 0x48<<7 | 0x19, - 39436 - 19968: jis0212<<14 | 0x48<<7 | 0x1A, - 39438 - 19968: jis0208<<14 | 0x14<<7 | 0x12, - 39439 - 19968: jis0208<<14 | 0x50<<7 | 0x35, - 39440 - 19968: jis0212<<14 | 0x48<<7 | 0x1B, - 39441 - 19968: jis0212<<14 | 0x48<<7 | 0x1C, - 39442 - 19968: jis0208<<14 | 0x20<<7 | 0x5A, - 39443 - 19968: jis0208<<14 | 0x17<<7 | 0x12, - 39446 - 19968: jis0212<<14 | 0x48<<7 | 0x1D, - 39449 - 19968: jis0208<<14 | 0x50<<7 | 0x38, - 39454 - 19968: jis0212<<14 | 0x48<<7 | 0x1E, - 39456 - 19968: jis0212<<14 | 0x48<<7 | 0x1F, - 39458 - 19968: jis0212<<14 | 0x48<<7 | 0x20, - 39459 - 19968: jis0212<<14 | 0x48<<7 | 0x21, - 39460 - 19968: jis0212<<14 | 0x48<<7 | 0x22, - 39463 - 19968: jis0212<<14 | 0x48<<7 | 0x23, - 39464 - 19968: jis0208<<14 | 0x21<<7 | 0x2C, - 39467 - 19968: jis0208<<14 | 0x50<<7 | 0x39, - 39469 - 19968: jis0212<<14 | 0x48<<7 | 0x24, - 39470 - 19968: jis0212<<14 | 0x48<<7 | 0x25, - 39472 - 19968: jis0208<<14 | 0x25<<7 | 0x0C, - 39475 - 19968: jis0212<<14 | 0x48<<7 | 0x26, - 39477 - 19968: jis0212<<14 | 0x48<<7 | 0x27, - 39478 - 19968: jis0212<<14 | 0x48<<7 | 0x28, - 39479 - 19968: jis0208<<14 | 0x50<<7 | 0x3A, - 39480 - 19968: jis0212<<14 | 0x48<<7 | 0x29, - 39486 - 19968: jis0208<<14 | 0x50<<7 | 0x3F, - 39488 - 19968: jis0208<<14 | 0x50<<7 | 0x3D, - 39489 - 19968: jis0212<<14 | 0x48<<7 | 0x2B, - 39490 - 19968: jis0208<<14 | 0x50<<7 | 0x3C, - 39491 - 19968: jis0208<<14 | 0x50<<7 | 0x3E, - 39492 - 19968: jis0212<<14 | 0x48<<7 | 0x2C, - 39493 - 19968: jis0208<<14 | 0x50<<7 | 0x3B, - 39495 - 19968: jis0212<<14 | 0x48<<7 | 0x2A, - 39498 - 19968: jis0212<<14 | 0x48<<7 | 0x2D, - 39499 - 19968: jis0212<<14 | 0x48<<7 | 0x2E, - 39500 - 19968: jis0212<<14 | 0x48<<7 | 0x2F, - 39501 - 19968: jis0208<<14 | 0x50<<7 | 0x41, - 39502 - 19968: jis0208<<14 | 0x5B<<7 | 0x40, - 39505 - 19968: jis0212<<14 | 0x48<<7 | 0x31, - 39508 - 19968: jis0212<<14 | 0x48<<7 | 0x32, - 39509 - 19968: jis0208<<14 | 0x50<<7 | 0x40, - 39510 - 19968: jis0212<<14 | 0x48<<7 | 0x33, - 39511 - 19968: jis0208<<14 | 0x50<<7 | 0x43, - 39514 - 19968: jis0208<<14 | 0x15<<7 | 0x22, - 39515 - 19968: jis0208<<14 | 0x50<<7 | 0x42, - 39517 - 19968: jis0212<<14 | 0x48<<7 | 0x34, - 39519 - 19968: jis0208<<14 | 0x50<<7 | 0x44, - 39522 - 19968: jis0208<<14 | 0x50<<7 | 0x45, - 39524 - 19968: jis0208<<14 | 0x50<<7 | 0x47, - 39525 - 19968: jis0208<<14 | 0x50<<7 | 0x46, - 39529 - 19968: jis0208<<14 | 0x50<<7 | 0x48, - 39530 - 19968: jis0208<<14 | 0x50<<7 | 0x4A, - 39531 - 19968: jis0208<<14 | 0x50<<7 | 0x49, - 39592 - 19968: jis0208<<14 | 0x18<<7 | 0x5B, - 39594 - 19968: jis0212<<14 | 0x48<<7 | 0x35, - 39596 - 19968: jis0212<<14 | 0x48<<7 | 0x36, - 39597 - 19968: jis0208<<14 | 0x50<<7 | 0x4B, - 39598 - 19968: jis0212<<14 | 0x48<<7 | 0x37, - 39599 - 19968: jis0212<<14 | 0x48<<7 | 0x38, - 39600 - 19968: jis0208<<14 | 0x50<<7 | 0x4C, - 39602 - 19968: jis0212<<14 | 0x48<<7 | 0x39, - 39604 - 19968: jis0212<<14 | 0x48<<7 | 0x3A, - 39605 - 19968: jis0212<<14 | 0x48<<7 | 0x3B, - 39606 - 19968: jis0212<<14 | 0x48<<7 | 0x3C, - 39608 - 19968: jis0208<<14 | 0x12<<7 | 0x1B, - 39609 - 19968: jis0212<<14 | 0x48<<7 | 0x3D, - 39611 - 19968: jis0212<<14 | 0x48<<7 | 0x3E, - 39612 - 19968: jis0208<<14 | 0x50<<7 | 0x4D, - 39614 - 19968: jis0212<<14 | 0x48<<7 | 0x3F, - 39615 - 19968: jis0212<<14 | 0x48<<7 | 0x40, - 39616 - 19968: jis0208<<14 | 0x50<<7 | 0x4E, - 39617 - 19968: jis0212<<14 | 0x48<<7 | 0x41, - 39619 - 19968: jis0212<<14 | 0x48<<7 | 0x42, - 39620 - 19968: jis0208<<14 | 0x1E<<7 | 0x50, - 39622 - 19968: jis0212<<14 | 0x48<<7 | 0x43, - 39624 - 19968: jis0212<<14 | 0x48<<7 | 0x44, - 39630 - 19968: jis0212<<14 | 0x48<<7 | 0x45, - 39631 - 19968: jis0208<<14 | 0x50<<7 | 0x4F, - 39632 - 19968: jis0212<<14 | 0x48<<7 | 0x46, - 39633 - 19968: jis0208<<14 | 0x50<<7 | 0x50, - 39634 - 19968: jis0212<<14 | 0x48<<7 | 0x47, - 39635 - 19968: jis0208<<14 | 0x50<<7 | 0x51, - 39636 - 19968: jis0208<<14 | 0x50<<7 | 0x52, - 39637 - 19968: jis0212<<14 | 0x48<<7 | 0x48, - 39638 - 19968: jis0212<<14 | 0x48<<7 | 0x49, - 39639 - 19968: jis0212<<14 | 0x48<<7 | 0x4A, - 39640 - 19968: jis0208<<14 | 0x18<<7 | 0x41, - 39641 - 19968: jis0208<<14 | 0x5B<<7 | 0x41, - 39643 - 19968: jis0212<<14 | 0x48<<7 | 0x4B, - 39644 - 19968: jis0208<<14 | 0x5B<<7 | 0x42, - 39646 - 19968: jis0208<<14 | 0x50<<7 | 0x53, - 39647 - 19968: jis0208<<14 | 0x50<<7 | 0x54, - 39648 - 19968: jis0212<<14 | 0x48<<7 | 0x4D, - 39650 - 19968: jis0208<<14 | 0x50<<7 | 0x55, - 39651 - 19968: jis0208<<14 | 0x50<<7 | 0x56, - 39652 - 19968: jis0212<<14 | 0x48<<7 | 0x4E, - 39653 - 19968: jis0212<<14 | 0x48<<7 | 0x4F, - 39654 - 19968: jis0208<<14 | 0x50<<7 | 0x57, - 39655 - 19968: jis0212<<14 | 0x48<<7 | 0x50, - 39657 - 19968: jis0212<<14 | 0x48<<7 | 0x51, - 39658 - 19968: jis0208<<14 | 0x27<<7 | 0x10, - 39659 - 19968: jis0208<<14 | 0x50<<7 | 0x59, - 39660 - 19968: jis0212<<14 | 0x48<<7 | 0x52, - 39661 - 19968: jis0208<<14 | 0x28<<7 | 0x05, - 39662 - 19968: jis0208<<14 | 0x50<<7 | 0x5A, - 39663 - 19968: jis0208<<14 | 0x50<<7 | 0x58, - 39665 - 19968: jis0208<<14 | 0x50<<7 | 0x5C, - 39666 - 19968: jis0212<<14 | 0x48<<7 | 0x53, - 39667 - 19968: jis0212<<14 | 0x48<<7 | 0x54, - 39668 - 19968: jis0208<<14 | 0x50<<7 | 0x5B, - 39669 - 19968: jis0212<<14 | 0x48<<7 | 0x55, - 39671 - 19968: jis0208<<14 | 0x50<<7 | 0x5D, - 39673 - 19968: jis0212<<14 | 0x48<<7 | 0x56, - 39674 - 19968: jis0212<<14 | 0x48<<7 | 0x57, - 39675 - 19968: jis0208<<14 | 0x51<<7 | 0x00, - 39677 - 19968: jis0212<<14 | 0x48<<7 | 0x58, - 39679 - 19968: jis0212<<14 | 0x48<<7 | 0x59, - 39680 - 19968: jis0212<<14 | 0x48<<7 | 0x5A, - 39681 - 19968: jis0212<<14 | 0x48<<7 | 0x5B, - 39682 - 19968: jis0212<<14 | 0x48<<7 | 0x5C, - 39683 - 19968: jis0212<<14 | 0x48<<7 | 0x5D, - 39684 - 19968: jis0212<<14 | 0x49<<7 | 0x00, - 39685 - 19968: jis0212<<14 | 0x49<<7 | 0x01, - 39686 - 19968: jis0208<<14 | 0x51<<7 | 0x01, - 39688 - 19968: jis0212<<14 | 0x49<<7 | 0x02, - 39689 - 19968: jis0212<<14 | 0x49<<7 | 0x03, - 39691 - 19968: jis0212<<14 | 0x49<<7 | 0x04, - 39692 - 19968: jis0212<<14 | 0x49<<7 | 0x05, - 39693 - 19968: jis0212<<14 | 0x49<<7 | 0x06, - 39694 - 19968: jis0212<<14 | 0x49<<7 | 0x07, - 39696 - 19968: jis0212<<14 | 0x49<<7 | 0x08, - 39698 - 19968: jis0212<<14 | 0x49<<7 | 0x09, - 39702 - 19968: jis0212<<14 | 0x49<<7 | 0x0A, - 39704 - 19968: jis0208<<14 | 0x51<<7 | 0x02, - 39705 - 19968: jis0212<<14 | 0x49<<7 | 0x0B, - 39706 - 19968: jis0208<<14 | 0x51<<7 | 0x03, - 39707 - 19968: jis0212<<14 | 0x49<<7 | 0x0C, - 39708 - 19968: jis0212<<14 | 0x49<<7 | 0x0D, - 39711 - 19968: jis0208<<14 | 0x51<<7 | 0x04, - 39712 - 19968: jis0212<<14 | 0x49<<7 | 0x0E, - 39714 - 19968: jis0208<<14 | 0x51<<7 | 0x05, - 39715 - 19968: jis0208<<14 | 0x51<<7 | 0x06, - 39717 - 19968: jis0208<<14 | 0x51<<7 | 0x07, - 39718 - 19968: jis0212<<14 | 0x49<<7 | 0x0F, - 39719 - 19968: jis0208<<14 | 0x51<<7 | 0x08, - 39720 - 19968: jis0208<<14 | 0x51<<7 | 0x09, - 39721 - 19968: jis0208<<14 | 0x51<<7 | 0x0A, - 39722 - 19968: jis0208<<14 | 0x51<<7 | 0x0B, - 39723 - 19968: jis0212<<14 | 0x49<<7 | 0x10, - 39725 - 19968: jis0212<<14 | 0x49<<7 | 0x11, - 39726 - 19968: jis0208<<14 | 0x51<<7 | 0x0C, - 39727 - 19968: jis0208<<14 | 0x51<<7 | 0x0D, - 39729 - 19968: jis0208<<14 | 0x3C<<7 | 0x14, - 39730 - 19968: jis0208<<14 | 0x51<<7 | 0x0E, - 39731 - 19968: jis0212<<14 | 0x49<<7 | 0x12, - 39732 - 19968: jis0212<<14 | 0x49<<7 | 0x13, - 39733 - 19968: jis0212<<14 | 0x49<<7 | 0x14, - 39735 - 19968: jis0212<<14 | 0x49<<7 | 0x15, - 39737 - 19968: jis0212<<14 | 0x49<<7 | 0x16, - 39738 - 19968: jis0212<<14 | 0x49<<7 | 0x17, - 39739 - 19968: jis0208<<14 | 0x43<<7 | 0x57, - 39740 - 19968: jis0208<<14 | 0x14<<7 | 0x13, - 39741 - 19968: jis0212<<14 | 0x49<<7 | 0x18, - 39745 - 19968: jis0208<<14 | 0x12<<7 | 0x00, - 39746 - 19968: jis0208<<14 | 0x19<<7 | 0x11, - 39747 - 19968: jis0208<<14 | 0x51<<7 | 0x10, - 39748 - 19968: jis0208<<14 | 0x51<<7 | 0x0F, - 39749 - 19968: jis0208<<14 | 0x2B<<7 | 0x04, - 39752 - 19968: jis0212<<14 | 0x49<<7 | 0x19, - 39755 - 19968: jis0212<<14 | 0x49<<7 | 0x1A, - 39756 - 19968: jis0212<<14 | 0x49<<7 | 0x1B, - 39757 - 19968: jis0208<<14 | 0x51<<7 | 0x12, - 39758 - 19968: jis0208<<14 | 0x51<<7 | 0x13, - 39759 - 19968: jis0208<<14 | 0x51<<7 | 0x11, - 39761 - 19968: jis0208<<14 | 0x51<<7 | 0x14, - 39764 - 19968: jis0208<<14 | 0x2A<<7 | 0x41, - 39765 - 19968: jis0212<<14 | 0x49<<7 | 0x1C, - 39766 - 19968: jis0212<<14 | 0x49<<7 | 0x1D, - 39767 - 19968: jis0212<<14 | 0x49<<7 | 0x1E, - 39768 - 19968: jis0208<<14 | 0x51<<7 | 0x15, - 39770 - 19968: jis0208<<14 | 0x14<<7 | 0x5A, - 39771 - 19968: jis0212<<14 | 0x49<<7 | 0x1F, - 39774 - 19968: jis0212<<14 | 0x49<<7 | 0x20, - 39777 - 19968: jis0212<<14 | 0x49<<7 | 0x21, - 39779 - 19968: jis0212<<14 | 0x49<<7 | 0x22, - 39781 - 19968: jis0212<<14 | 0x49<<7 | 0x23, - 39782 - 19968: jis0212<<14 | 0x49<<7 | 0x24, - 39784 - 19968: jis0212<<14 | 0x49<<7 | 0x25, - 39786 - 19968: jis0212<<14 | 0x49<<7 | 0x26, - 39787 - 19968: jis0212<<14 | 0x49<<7 | 0x27, - 39788 - 19968: jis0212<<14 | 0x49<<7 | 0x28, - 39789 - 19968: jis0212<<14 | 0x49<<7 | 0x29, - 39790 - 19968: jis0212<<14 | 0x49<<7 | 0x2A, - 39791 - 19968: jis0208<<14 | 0x2E<<7 | 0x04, - 39794 - 19968: jis0208<<14 | 0x5B<<7 | 0x44, - 39795 - 19968: jis0212<<14 | 0x49<<7 | 0x2B, - 39796 - 19968: jis0208<<14 | 0x51<<7 | 0x16, - 39797 - 19968: jis0208<<14 | 0x5B<<7 | 0x43, - 39799 - 19968: jis0212<<14 | 0x49<<7 | 0x2D, - 39800 - 19968: jis0212<<14 | 0x49<<7 | 0x2E, - 39801 - 19968: jis0212<<14 | 0x49<<7 | 0x2F, - 39807 - 19968: jis0212<<14 | 0x49<<7 | 0x30, - 39808 - 19968: jis0212<<14 | 0x49<<7 | 0x31, - 39811 - 19968: jis0208<<14 | 0x51<<7 | 0x18, - 39812 - 19968: jis0212<<14 | 0x49<<7 | 0x32, - 39813 - 19968: jis0212<<14 | 0x49<<7 | 0x33, - 39814 - 19968: jis0212<<14 | 0x49<<7 | 0x34, - 39815 - 19968: jis0212<<14 | 0x49<<7 | 0x35, - 39817 - 19968: jis0212<<14 | 0x49<<7 | 0x36, - 39818 - 19968: jis0212<<14 | 0x49<<7 | 0x37, - 39819 - 19968: jis0212<<14 | 0x49<<7 | 0x38, - 39821 - 19968: jis0212<<14 | 0x49<<7 | 0x39, - 39822 - 19968: jis0208<<14 | 0x0F<<7 | 0x1D, - 39823 - 19968: jis0208<<14 | 0x5B<<7 | 0x45, - 39824 - 19968: jis0212<<14 | 0x49<<7 | 0x3B, - 39825 - 19968: jis0208<<14 | 0x51<<7 | 0x19, - 39826 - 19968: jis0208<<14 | 0x29<<7 | 0x0A, - 39827 - 19968: jis0208<<14 | 0x51<<7 | 0x17, - 39828 - 19968: jis0212<<14 | 0x49<<7 | 0x3C, - 39830 - 19968: jis0208<<14 | 0x51<<7 | 0x1A, - 39831 - 19968: jis0208<<14 | 0x51<<7 | 0x1B, - 39834 - 19968: jis0212<<14 | 0x49<<7 | 0x3D, - 39837 - 19968: jis0212<<14 | 0x49<<7 | 0x3E, - 39838 - 19968: jis0212<<14 | 0x49<<7 | 0x3F, - 39839 - 19968: jis0208<<14 | 0x51<<7 | 0x1C, - 39840 - 19968: jis0208<<14 | 0x51<<7 | 0x1D, - 39846 - 19968: jis0212<<14 | 0x49<<7 | 0x40, - 39847 - 19968: jis0212<<14 | 0x49<<7 | 0x41, - 39848 - 19968: jis0208<<14 | 0x51<<7 | 0x1E, - 39849 - 19968: jis0212<<14 | 0x49<<7 | 0x42, - 39850 - 19968: jis0208<<14 | 0x2A<<7 | 0x4D, - 39851 - 19968: jis0208<<14 | 0x1A<<7 | 0x0C, - 39852 - 19968: jis0212<<14 | 0x49<<7 | 0x43, - 39853 - 19968: jis0208<<14 | 0x19<<7 | 0x59, - 39854 - 19968: jis0208<<14 | 0x20<<7 | 0x0E, - 39856 - 19968: jis0212<<14 | 0x49<<7 | 0x44, - 39857 - 19968: jis0208<<14 | 0x5B<<7 | 0x46, - 39858 - 19968: jis0212<<14 | 0x49<<7 | 0x46, - 39860 - 19968: jis0208<<14 | 0x51<<7 | 0x1F, - 39863 - 19968: jis0212<<14 | 0x49<<7 | 0x47, - 39864 - 19968: jis0212<<14 | 0x49<<7 | 0x48, - 39865 - 19968: jis0208<<14 | 0x51<<7 | 0x22, - 39867 - 19968: jis0208<<14 | 0x5B<<7 | 0x47, - 39868 - 19968: jis0212<<14 | 0x49<<7 | 0x4A, - 39870 - 19968: jis0212<<14 | 0x49<<7 | 0x4B, - 39871 - 19968: jis0212<<14 | 0x49<<7 | 0x4C, - 39872 - 19968: jis0208<<14 | 0x51<<7 | 0x20, - 39873 - 19968: jis0212<<14 | 0x49<<7 | 0x4D, - 39878 - 19968: jis0208<<14 | 0x51<<7 | 0x23, - 39879 - 19968: jis0212<<14 | 0x49<<7 | 0x4E, - 39880 - 19968: jis0212<<14 | 0x49<<7 | 0x4F, - 39881 - 19968: jis0208<<14 | 0x17<<7 | 0x50, - 39882 - 19968: jis0208<<14 | 0x51<<7 | 0x21, - 39886 - 19968: jis0212<<14 | 0x49<<7 | 0x50, - 39887 - 19968: jis0208<<14 | 0x51<<7 | 0x24, - 39888 - 19968: jis0212<<14 | 0x49<<7 | 0x51, - 39889 - 19968: jis0208<<14 | 0x51<<7 | 0x25, - 39890 - 19968: jis0208<<14 | 0x51<<7 | 0x26, - 39892 - 19968: jis0208<<14 | 0x51<<7 | 0x2A, - 39894 - 19968: jis0208<<14 | 0x1A<<7 | 0x09, - 39895 - 19968: jis0212<<14 | 0x49<<7 | 0x52, - 39896 - 19968: jis0212<<14 | 0x49<<7 | 0x53, - 39899 - 19968: jis0208<<14 | 0x21<<7 | 0x43, - 39901 - 19968: jis0212<<14 | 0x49<<7 | 0x54, - 39903 - 19968: jis0212<<14 | 0x49<<7 | 0x55, - 39905 - 19968: jis0208<<14 | 0x51<<7 | 0x2B, - 39906 - 19968: jis0208<<14 | 0x51<<7 | 0x28, - 39907 - 19968: jis0208<<14 | 0x51<<7 | 0x27, - 39908 - 19968: jis0208<<14 | 0x51<<7 | 0x29, - 39909 - 19968: jis0212<<14 | 0x49<<7 | 0x56, - 39911 - 19968: jis0212<<14 | 0x49<<7 | 0x57, - 39912 - 19968: jis0208<<14 | 0x16<<7 | 0x3E, - 39914 - 19968: jis0212<<14 | 0x49<<7 | 0x58, - 39915 - 19968: jis0212<<14 | 0x49<<7 | 0x59, - 39919 - 19968: jis0212<<14 | 0x49<<7 | 0x5A, - 39920 - 19968: jis0208<<14 | 0x51<<7 | 0x2F, - 39921 - 19968: jis0208<<14 | 0x51<<7 | 0x2E, - 39922 - 19968: jis0208<<14 | 0x51<<7 | 0x2D, - 39923 - 19968: jis0212<<14 | 0x49<<7 | 0x5B, - 39925 - 19968: jis0208<<14 | 0x0F<<7 | 0x12, - 39927 - 19968: jis0212<<14 | 0x49<<7 | 0x5C, - 39928 - 19968: jis0212<<14 | 0x49<<7 | 0x5D, - 39929 - 19968: jis0212<<14 | 0x4A<<7 | 0x00, - 39930 - 19968: jis0212<<14 | 0x4A<<7 | 0x01, - 39933 - 19968: jis0212<<14 | 0x4A<<7 | 0x02, - 39935 - 19968: jis0212<<14 | 0x4A<<7 | 0x03, - 39936 - 19968: jis0208<<14 | 0x5B<<7 | 0x48, - 39938 - 19968: jis0212<<14 | 0x4A<<7 | 0x05, - 39940 - 19968: jis0208<<14 | 0x51<<7 | 0x39, - 39942 - 19968: jis0208<<14 | 0x51<<7 | 0x35, - 39944 - 19968: jis0208<<14 | 0x51<<7 | 0x36, - 39945 - 19968: jis0208<<14 | 0x51<<7 | 0x32, - 39946 - 19968: jis0208<<14 | 0x51<<7 | 0x38, - 39947 - 19968: jis0212<<14 | 0x4A<<7 | 0x06, - 39948 - 19968: jis0208<<14 | 0x51<<7 | 0x34, - 39949 - 19968: jis0208<<14 | 0x12<<7 | 0x41, - 39951 - 19968: jis0212<<14 | 0x4A<<7 | 0x07, - 39952 - 19968: jis0208<<14 | 0x2E<<7 | 0x2B, - 39953 - 19968: jis0212<<14 | 0x4A<<7 | 0x08, - 39954 - 19968: jis0208<<14 | 0x51<<7 | 0x37, - 39955 - 19968: jis0208<<14 | 0x51<<7 | 0x33, - 39956 - 19968: jis0208<<14 | 0x51<<7 | 0x31, - 39957 - 19968: jis0208<<14 | 0x51<<7 | 0x30, - 39958 - 19968: jis0212<<14 | 0x4A<<7 | 0x09, - 39960 - 19968: jis0212<<14 | 0x4A<<7 | 0x0A, - 39961 - 19968: jis0212<<14 | 0x4A<<7 | 0x0B, - 39962 - 19968: jis0212<<14 | 0x4A<<7 | 0x0C, - 39963 - 19968: jis0208<<14 | 0x51<<7 | 0x3B, - 39964 - 19968: jis0212<<14 | 0x4A<<7 | 0x0D, - 39966 - 19968: jis0212<<14 | 0x4A<<7 | 0x0E, - 39969 - 19968: jis0208<<14 | 0x51<<7 | 0x3E, - 39970 - 19968: jis0212<<14 | 0x4A<<7 | 0x0F, - 39971 - 19968: jis0212<<14 | 0x4A<<7 | 0x10, - 39972 - 19968: jis0208<<14 | 0x51<<7 | 0x3D, - 39973 - 19968: jis0208<<14 | 0x51<<7 | 0x3C, - 39974 - 19968: jis0212<<14 | 0x4A<<7 | 0x11, - 39975 - 19968: jis0212<<14 | 0x4A<<7 | 0x12, - 39976 - 19968: jis0212<<14 | 0x4A<<7 | 0x13, - 39977 - 19968: jis0212<<14 | 0x4A<<7 | 0x14, - 39978 - 19968: jis0212<<14 | 0x4A<<7 | 0x15, - 39981 - 19968: jis0208<<14 | 0x28<<7 | 0x28, - 39982 - 19968: jis0208<<14 | 0x51<<7 | 0x3A, - 39983 - 19968: jis0208<<14 | 0x0F<<7 | 0x52, - 39984 - 19968: jis0208<<14 | 0x51<<7 | 0x3F, - 39985 - 19968: jis0212<<14 | 0x4A<<7 | 0x16, - 39986 - 19968: jis0208<<14 | 0x51<<7 | 0x41, - 39989 - 19968: jis0212<<14 | 0x4A<<7 | 0x17, - 39990 - 19968: jis0212<<14 | 0x4A<<7 | 0x18, - 39991 - 19968: jis0212<<14 | 0x4A<<7 | 0x19, - 39993 - 19968: jis0208<<14 | 0x12<<7 | 0x4E, - 39994 - 19968: jis0208<<14 | 0x51<<7 | 0x2C, - 39995 - 19968: jis0208<<14 | 0x10<<7 | 0x16, - 39997 - 19968: jis0212<<14 | 0x4A<<7 | 0x1A, - 39998 - 19968: jis0208<<14 | 0x51<<7 | 0x43, - 40001 - 19968: jis0212<<14 | 0x4A<<7 | 0x1B, - 40003 - 19968: jis0212<<14 | 0x4A<<7 | 0x1C, - 40004 - 19968: jis0212<<14 | 0x4A<<7 | 0x1D, - 40005 - 19968: jis0212<<14 | 0x4A<<7 | 0x1E, - 40006 - 19968: jis0208<<14 | 0x51<<7 | 0x42, - 40007 - 19968: jis0208<<14 | 0x51<<7 | 0x40, - 40008 - 19968: jis0208<<14 | 0x22<<7 | 0x0C, - 40009 - 19968: jis0212<<14 | 0x4A<<7 | 0x1F, - 40010 - 19968: jis0212<<14 | 0x4A<<7 | 0x20, - 40014 - 19968: jis0212<<14 | 0x4A<<7 | 0x21, - 40015 - 19968: jis0212<<14 | 0x4A<<7 | 0x22, - 40016 - 19968: jis0212<<14 | 0x4A<<7 | 0x23, - 40018 - 19968: jis0208<<14 | 0x2A<<7 | 0x4F, - 40019 - 19968: jis0212<<14 | 0x4A<<7 | 0x24, - 40020 - 19968: jis0212<<14 | 0x4A<<7 | 0x25, - 40022 - 19968: jis0212<<14 | 0x4A<<7 | 0x26, - 40023 - 19968: jis0208<<14 | 0x2D<<7 | 0x39, - 40024 - 19968: jis0212<<14 | 0x4A<<7 | 0x27, - 40026 - 19968: jis0208<<14 | 0x51<<7 | 0x44, - 40027 - 19968: jis0212<<14 | 0x4A<<7 | 0x28, - 40028 - 19968: jis0212<<14 | 0x4A<<7 | 0x2F, - 40029 - 19968: jis0212<<14 | 0x4A<<7 | 0x29, - 40030 - 19968: jis0212<<14 | 0x4A<<7 | 0x2A, - 40031 - 19968: jis0212<<14 | 0x4A<<7 | 0x2B, - 40032 - 19968: jis0208<<14 | 0x51<<7 | 0x45, - 40035 - 19968: jis0212<<14 | 0x4A<<7 | 0x2C, - 40039 - 19968: jis0208<<14 | 0x51<<7 | 0x46, - 40040 - 19968: jis0212<<14 | 0x4A<<7 | 0x31, - 40041 - 19968: jis0212<<14 | 0x4A<<7 | 0x2D, - 40042 - 19968: jis0212<<14 | 0x4A<<7 | 0x2E, - 40043 - 19968: jis0212<<14 | 0x4A<<7 | 0x30, - 40046 - 19968: jis0212<<14 | 0x4A<<7 | 0x32, - 40048 - 19968: jis0212<<14 | 0x4A<<7 | 0x33, - 40050 - 19968: jis0212<<14 | 0x4A<<7 | 0x34, - 40053 - 19968: jis0212<<14 | 0x4A<<7 | 0x35, - 40054 - 19968: jis0208<<14 | 0x51<<7 | 0x47, - 40055 - 19968: jis0212<<14 | 0x4A<<7 | 0x36, - 40056 - 19968: jis0208<<14 | 0x51<<7 | 0x48, - 40059 - 19968: jis0212<<14 | 0x4A<<7 | 0x37, - 40165 - 19968: jis0208<<14 | 0x23<<7 | 0x1A, - 40166 - 19968: jis0212<<14 | 0x4A<<7 | 0x38, - 40167 - 19968: jis0208<<14 | 0x51<<7 | 0x49, - 40169 - 19968: jis0208<<14 | 0x27<<7 | 0x16, - 40171 - 19968: jis0208<<14 | 0x51<<7 | 0x4E, - 40172 - 19968: jis0208<<14 | 0x51<<7 | 0x4A, - 40176 - 19968: jis0208<<14 | 0x51<<7 | 0x4B, - 40178 - 19968: jis0212<<14 | 0x4A<<7 | 0x39, - 40179 - 19968: jis0208<<14 | 0x2A<<7 | 0x10, - 40180 - 19968: jis0208<<14 | 0x2B<<7 | 0x23, - 40182 - 19968: jis0208<<14 | 0x25<<7 | 0x2F, - 40183 - 19968: jis0212<<14 | 0x4A<<7 | 0x3A, - 40185 - 19968: jis0212<<14 | 0x4A<<7 | 0x3B, - 40194 - 19968: jis0212<<14 | 0x4A<<7 | 0x3D, - 40195 - 19968: jis0208<<14 | 0x51<<7 | 0x4F, - 40198 - 19968: jis0208<<14 | 0x51<<7 | 0x50, - 40199 - 19968: jis0208<<14 | 0x25<<7 | 0x1D, - 40200 - 19968: jis0208<<14 | 0x51<<7 | 0x4D, - 40201 - 19968: jis0208<<14 | 0x51<<7 | 0x4C, - 40203 - 19968: jis0212<<14 | 0x4A<<7 | 0x3C, - 40206 - 19968: jis0208<<14 | 0x11<<7 | 0x09, - 40209 - 19968: jis0212<<14 | 0x4A<<7 | 0x3E, - 40210 - 19968: jis0208<<14 | 0x51<<7 | 0x58, - 40213 - 19968: jis0208<<14 | 0x51<<7 | 0x57, - 40215 - 19968: jis0212<<14 | 0x4A<<7 | 0x3F, - 40216 - 19968: jis0212<<14 | 0x4A<<7 | 0x40, - 40219 - 19968: jis0208<<14 | 0x10<<7 | 0x54, - 40220 - 19968: jis0212<<14 | 0x4A<<7 | 0x41, - 40221 - 19968: jis0212<<14 | 0x4A<<7 | 0x42, - 40222 - 19968: jis0212<<14 | 0x4A<<7 | 0x43, - 40223 - 19968: jis0208<<14 | 0x51<<7 | 0x55, - 40227 - 19968: jis0208<<14 | 0x51<<7 | 0x54, - 40230 - 19968: jis0208<<14 | 0x51<<7 | 0x52, - 40232 - 19968: jis0208<<14 | 0x12<<7 | 0x5A, - 40234 - 19968: jis0208<<14 | 0x51<<7 | 0x51, - 40235 - 19968: jis0208<<14 | 0x1B<<7 | 0x11, - 40236 - 19968: jis0208<<14 | 0x11<<7 | 0x08, - 40239 - 19968: jis0212<<14 | 0x4A<<7 | 0x44, - 40240 - 19968: jis0212<<14 | 0x4A<<7 | 0x45, - 40242 - 19968: jis0212<<14 | 0x4A<<7 | 0x46, - 40243 - 19968: jis0212<<14 | 0x4A<<7 | 0x47, - 40244 - 19968: jis0212<<14 | 0x4A<<7 | 0x48, - 40250 - 19968: jis0212<<14 | 0x4A<<7 | 0x49, - 40251 - 19968: jis0208<<14 | 0x18<<7 | 0x42, - 40252 - 19968: jis0212<<14 | 0x4A<<7 | 0x4A, - 40253 - 19968: jis0212<<14 | 0x4A<<7 | 0x4C, - 40254 - 19968: jis0208<<14 | 0x51<<7 | 0x5B, - 40255 - 19968: jis0208<<14 | 0x51<<7 | 0x5A, - 40257 - 19968: jis0208<<14 | 0x51<<7 | 0x59, - 40258 - 19968: jis0212<<14 | 0x4A<<7 | 0x4D, - 40259 - 19968: jis0212<<14 | 0x4A<<7 | 0x4E, - 40260 - 19968: jis0208<<14 | 0x51<<7 | 0x56, - 40261 - 19968: jis0212<<14 | 0x4A<<7 | 0x4B, - 40262 - 19968: jis0208<<14 | 0x51<<7 | 0x5C, - 40263 - 19968: jis0212<<14 | 0x4A<<7 | 0x4F, - 40264 - 19968: jis0208<<14 | 0x51<<7 | 0x5D, - 40266 - 19968: jis0212<<14 | 0x4A<<7 | 0x50, - 40272 - 19968: jis0208<<14 | 0x52<<7 | 0x04, - 40273 - 19968: jis0208<<14 | 0x52<<7 | 0x03, - 40275 - 19968: jis0212<<14 | 0x4A<<7 | 0x51, - 40276 - 19968: jis0212<<14 | 0x4A<<7 | 0x52, - 40281 - 19968: jis0208<<14 | 0x52<<7 | 0x05, - 40284 - 19968: jis0208<<14 | 0x10<<7 | 0x0C, - 40285 - 19968: jis0208<<14 | 0x52<<7 | 0x00, - 40286 - 19968: jis0208<<14 | 0x52<<7 | 0x01, - 40287 - 19968: jis0212<<14 | 0x4A<<7 | 0x53, - 40288 - 19968: jis0208<<14 | 0x18<<7 | 0x53, - 40289 - 19968: jis0208<<14 | 0x2B<<7 | 0x18, - 40290 - 19968: jis0212<<14 | 0x4A<<7 | 0x55, - 40291 - 19968: jis0212<<14 | 0x4A<<7 | 0x54, - 40292 - 19968: jis0208<<14 | 0x52<<7 | 0x02, - 40293 - 19968: jis0212<<14 | 0x4A<<7 | 0x56, - 40297 - 19968: jis0212<<14 | 0x4A<<7 | 0x57, - 40298 - 19968: jis0212<<14 | 0x4A<<7 | 0x58, - 40299 - 19968: jis0208<<14 | 0x5B<<7 | 0x4A, - 40300 - 19968: jis0208<<14 | 0x2A<<7 | 0x11, - 40303 - 19968: jis0208<<14 | 0x52<<7 | 0x0A, - 40304 - 19968: jis0208<<14 | 0x5B<<7 | 0x49, - 40306 - 19968: jis0208<<14 | 0x52<<7 | 0x06, - 40310 - 19968: jis0212<<14 | 0x4A<<7 | 0x5B, - 40311 - 19968: jis0212<<14 | 0x4A<<7 | 0x5C, - 40314 - 19968: jis0208<<14 | 0x52<<7 | 0x0B, - 40315 - 19968: jis0212<<14 | 0x4A<<7 | 0x5D, - 40316 - 19968: jis0212<<14 | 0x4B<<7 | 0x00, - 40318 - 19968: jis0212<<14 | 0x4B<<7 | 0x01, - 40323 - 19968: jis0212<<14 | 0x4B<<7 | 0x02, - 40324 - 19968: jis0212<<14 | 0x4B<<7 | 0x03, - 40326 - 19968: jis0212<<14 | 0x4B<<7 | 0x04, - 40327 - 19968: jis0208<<14 | 0x52<<7 | 0x08, - 40329 - 19968: jis0208<<14 | 0x52<<7 | 0x07, - 40330 - 19968: jis0212<<14 | 0x4B<<7 | 0x05, - 40333 - 19968: jis0212<<14 | 0x4B<<7 | 0x06, - 40334 - 19968: jis0212<<14 | 0x4B<<7 | 0x07, - 40335 - 19968: jis0208<<14 | 0x16<<7 | 0x3B, - 40338 - 19968: jis0212<<14 | 0x4B<<7 | 0x08, - 40339 - 19968: jis0212<<14 | 0x4B<<7 | 0x09, - 40341 - 19968: jis0212<<14 | 0x4B<<7 | 0x0A, - 40342 - 19968: jis0212<<14 | 0x4B<<7 | 0x0B, - 40343 - 19968: jis0212<<14 | 0x4B<<7 | 0x0C, - 40344 - 19968: jis0212<<14 | 0x4B<<7 | 0x0D, - 40346 - 19968: jis0208<<14 | 0x52<<7 | 0x0C, - 40353 - 19968: jis0212<<14 | 0x4B<<7 | 0x0E, - 40356 - 19968: jis0208<<14 | 0x52<<7 | 0x0D, - 40361 - 19968: jis0208<<14 | 0x52<<7 | 0x0E, - 40362 - 19968: jis0212<<14 | 0x4B<<7 | 0x0F, - 40363 - 19968: jis0208<<14 | 0x52<<7 | 0x09, - 40364 - 19968: jis0212<<14 | 0x4B<<7 | 0x10, - 40366 - 19968: jis0212<<14 | 0x4B<<7 | 0x11, - 40367 - 19968: jis0208<<14 | 0x51<<7 | 0x53, - 40369 - 19968: jis0212<<14 | 0x4B<<7 | 0x12, - 40370 - 19968: jis0208<<14 | 0x52<<7 | 0x0F, - 40372 - 19968: jis0208<<14 | 0x23<<7 | 0x40, - 40373 - 19968: jis0212<<14 | 0x4B<<7 | 0x13, - 40376 - 19968: jis0208<<14 | 0x52<<7 | 0x13, - 40377 - 19968: jis0212<<14 | 0x4B<<7 | 0x14, - 40378 - 19968: jis0208<<14 | 0x52<<7 | 0x14, - 40379 - 19968: jis0208<<14 | 0x52<<7 | 0x12, - 40380 - 19968: jis0212<<14 | 0x4B<<7 | 0x15, - 40383 - 19968: jis0212<<14 | 0x4B<<7 | 0x16, - 40385 - 19968: jis0208<<14 | 0x52<<7 | 0x11, - 40386 - 19968: jis0208<<14 | 0x52<<7 | 0x17, - 40387 - 19968: jis0212<<14 | 0x4B<<7 | 0x17, - 40388 - 19968: jis0208<<14 | 0x52<<7 | 0x10, - 40390 - 19968: jis0208<<14 | 0x52<<7 | 0x15, - 40391 - 19968: jis0212<<14 | 0x4B<<7 | 0x18, - 40393 - 19968: jis0212<<14 | 0x4B<<7 | 0x19, - 40394 - 19968: jis0212<<14 | 0x4B<<7 | 0x1A, - 40399 - 19968: jis0208<<14 | 0x52<<7 | 0x16, - 40403 - 19968: jis0208<<14 | 0x52<<7 | 0x19, - 40404 - 19968: jis0212<<14 | 0x4B<<7 | 0x1B, - 40405 - 19968: jis0212<<14 | 0x4B<<7 | 0x1C, - 40406 - 19968: jis0212<<14 | 0x4B<<7 | 0x1D, - 40407 - 19968: jis0212<<14 | 0x4B<<7 | 0x1E, - 40409 - 19968: jis0208<<14 | 0x52<<7 | 0x18, - 40410 - 19968: jis0212<<14 | 0x4B<<7 | 0x1F, - 40414 - 19968: jis0212<<14 | 0x4B<<7 | 0x20, - 40415 - 19968: jis0212<<14 | 0x4B<<7 | 0x21, - 40416 - 19968: jis0212<<14 | 0x4B<<7 | 0x22, - 40421 - 19968: jis0212<<14 | 0x4B<<7 | 0x23, - 40422 - 19968: jis0208<<14 | 0x52<<7 | 0x1B, - 40423 - 19968: jis0212<<14 | 0x4B<<7 | 0x24, - 40425 - 19968: jis0212<<14 | 0x4B<<7 | 0x25, - 40427 - 19968: jis0212<<14 | 0x4B<<7 | 0x26, - 40429 - 19968: jis0208<<14 | 0x52<<7 | 0x1C, - 40430 - 19968: jis0212<<14 | 0x4B<<7 | 0x27, - 40431 - 19968: jis0208<<14 | 0x52<<7 | 0x1D, - 40432 - 19968: jis0212<<14 | 0x4B<<7 | 0x28, - 40434 - 19968: jis0208<<14 | 0x2E<<7 | 0x28, - 40435 - 19968: jis0212<<14 | 0x4B<<7 | 0x29, - 40436 - 19968: jis0212<<14 | 0x4B<<7 | 0x2A, - 40440 - 19968: jis0208<<14 | 0x52<<7 | 0x1A, - 40441 - 19968: jis0208<<14 | 0x21<<7 | 0x4A, - 40442 - 19968: jis0208<<14 | 0x19<<7 | 0x4C, - 40445 - 19968: jis0208<<14 | 0x52<<7 | 0x1E, - 40446 - 19968: jis0212<<14 | 0x4B<<7 | 0x2B, - 40450 - 19968: jis0212<<14 | 0x4B<<7 | 0x2D, - 40455 - 19968: jis0212<<14 | 0x4B<<7 | 0x2E, - 40458 - 19968: jis0212<<14 | 0x4B<<7 | 0x2C, - 40462 - 19968: jis0212<<14 | 0x4B<<7 | 0x2F, - 40464 - 19968: jis0212<<14 | 0x4B<<7 | 0x30, - 40465 - 19968: jis0212<<14 | 0x4B<<7 | 0x31, - 40466 - 19968: jis0212<<14 | 0x4B<<7 | 0x32, - 40469 - 19968: jis0212<<14 | 0x4B<<7 | 0x33, - 40470 - 19968: jis0212<<14 | 0x4B<<7 | 0x34, - 40473 - 19968: jis0208<<14 | 0x5B<<7 | 0x4C, - 40474 - 19968: jis0208<<14 | 0x52<<7 | 0x1F, - 40475 - 19968: jis0208<<14 | 0x52<<7 | 0x20, - 40476 - 19968: jis0212<<14 | 0x4B<<7 | 0x36, - 40477 - 19968: jis0212<<14 | 0x4B<<7 | 0x37, - 40478 - 19968: jis0208<<14 | 0x52<<7 | 0x21, - 40565 - 19968: jis0208<<14 | 0x52<<7 | 0x22, - 40568 - 19968: jis0208<<14 | 0x17<<7 | 0x13, - 40569 - 19968: jis0208<<14 | 0x52<<7 | 0x23, - 40570 - 19968: jis0212<<14 | 0x4B<<7 | 0x38, - 40571 - 19968: jis0212<<14 | 0x4B<<7 | 0x39, - 40572 - 19968: jis0212<<14 | 0x4B<<7 | 0x3A, - 40573 - 19968: jis0208<<14 | 0x52<<7 | 0x24, - 40575 - 19968: jis0208<<14 | 0x1B<<7 | 0x0E, - 40576 - 19968: jis0212<<14 | 0x4B<<7 | 0x3B, - 40577 - 19968: jis0208<<14 | 0x52<<7 | 0x25, - 40578 - 19968: jis0212<<14 | 0x4B<<7 | 0x3C, - 40579 - 19968: jis0212<<14 | 0x4B<<7 | 0x3D, - 40580 - 19968: jis0212<<14 | 0x4B<<7 | 0x3E, - 40581 - 19968: jis0212<<14 | 0x4B<<7 | 0x3F, - 40583 - 19968: jis0212<<14 | 0x4B<<7 | 0x40, - 40584 - 19968: jis0208<<14 | 0x52<<7 | 0x26, - 40587 - 19968: jis0208<<14 | 0x52<<7 | 0x27, - 40588 - 19968: jis0208<<14 | 0x52<<7 | 0x28, - 40590 - 19968: jis0212<<14 | 0x4B<<7 | 0x41, - 40591 - 19968: jis0212<<14 | 0x4B<<7 | 0x42, - 40593 - 19968: jis0208<<14 | 0x52<<7 | 0x2B, - 40594 - 19968: jis0208<<14 | 0x52<<7 | 0x29, - 40595 - 19968: jis0208<<14 | 0x2E<<7 | 0x1B, - 40597 - 19968: jis0208<<14 | 0x52<<7 | 0x2A, - 40598 - 19968: jis0212<<14 | 0x4B<<7 | 0x43, - 40599 - 19968: jis0208<<14 | 0x2D<<7 | 0x4E, - 40600 - 19968: jis0212<<14 | 0x4B<<7 | 0x44, - 40603 - 19968: jis0212<<14 | 0x4B<<7 | 0x45, - 40605 - 19968: jis0208<<14 | 0x52<<7 | 0x2C, - 40606 - 19968: jis0212<<14 | 0x4B<<7 | 0x46, - 40607 - 19968: jis0208<<14 | 0x2D<<7 | 0x3A, - 40612 - 19968: jis0212<<14 | 0x4B<<7 | 0x47, - 40613 - 19968: jis0208<<14 | 0x52<<7 | 0x2D, - 40614 - 19968: jis0208<<14 | 0x26<<7 | 0x5D, - 40616 - 19968: jis0212<<14 | 0x4B<<7 | 0x48, - 40617 - 19968: jis0208<<14 | 0x52<<7 | 0x2E, - 40618 - 19968: jis0208<<14 | 0x52<<7 | 0x30, - 40620 - 19968: jis0212<<14 | 0x4B<<7 | 0x49, - 40621 - 19968: jis0208<<14 | 0x52<<7 | 0x31, - 40622 - 19968: jis0212<<14 | 0x4B<<7 | 0x4A, - 40623 - 19968: jis0212<<14 | 0x4B<<7 | 0x4B, - 40624 - 19968: jis0212<<14 | 0x4B<<7 | 0x4C, - 40627 - 19968: jis0212<<14 | 0x4B<<7 | 0x4D, - 40628 - 19968: jis0212<<14 | 0x4B<<7 | 0x4E, - 40629 - 19968: jis0212<<14 | 0x4B<<7 | 0x4F, - 40632 - 19968: jis0208<<14 | 0x52<<7 | 0x2F, - 40633 - 19968: jis0208<<14 | 0x18<<7 | 0x4C, - 40634 - 19968: jis0208<<14 | 0x2B<<7 | 0x2C, - 40635 - 19968: jis0208<<14 | 0x2A<<7 | 0x42, - 40636 - 19968: jis0208<<14 | 0x35<<7 | 0x56, - 40638 - 19968: jis0208<<14 | 0x3C<<7 | 0x3F, - 40639 - 19968: jis0208<<14 | 0x2A<<7 | 0x5A, - 40644 - 19968: jis0208<<14 | 0x11<<7 | 0x0A, - 40646 - 19968: jis0212<<14 | 0x4B<<7 | 0x50, - 40648 - 19968: jis0212<<14 | 0x4B<<7 | 0x51, - 40651 - 19968: jis0212<<14 | 0x4B<<7 | 0x52, - 40652 - 19968: jis0208<<14 | 0x52<<7 | 0x33, - 40653 - 19968: jis0208<<14 | 0x14<<7 | 0x2F, - 40654 - 19968: jis0208<<14 | 0x52<<7 | 0x34, - 40655 - 19968: jis0208<<14 | 0x52<<7 | 0x35, - 40656 - 19968: jis0208<<14 | 0x52<<7 | 0x36, - 40657 - 19968: jis0208<<14 | 0x5B<<7 | 0x4D, - 40658 - 19968: jis0208<<14 | 0x18<<7 | 0x54, - 40660 - 19968: jis0208<<14 | 0x52<<7 | 0x37, - 40661 - 19968: jis0212<<14 | 0x4B<<7 | 0x53, - 40664 - 19968: jis0208<<14 | 0x3F<<7 | 0x33, - 40665 - 19968: jis0208<<14 | 0x2B<<7 | 0x3A, - 40667 - 19968: jis0208<<14 | 0x21<<7 | 0x42, - 40668 - 19968: jis0208<<14 | 0x52<<7 | 0x38, - 40669 - 19968: jis0208<<14 | 0x52<<7 | 0x3A, - 40670 - 19968: jis0208<<14 | 0x52<<7 | 0x39, - 40671 - 19968: jis0212<<14 | 0x4B<<7 | 0x54, - 40672 - 19968: jis0208<<14 | 0x52<<7 | 0x3B, - 40676 - 19968: jis0212<<14 | 0x4B<<7 | 0x55, - 40677 - 19968: jis0208<<14 | 0x52<<7 | 0x3C, - 40679 - 19968: jis0212<<14 | 0x4B<<7 | 0x56, - 40680 - 19968: jis0208<<14 | 0x52<<7 | 0x3D, - 40684 - 19968: jis0212<<14 | 0x4B<<7 | 0x57, - 40685 - 19968: jis0212<<14 | 0x4B<<7 | 0x58, - 40686 - 19968: jis0212<<14 | 0x4B<<7 | 0x59, - 40687 - 19968: jis0208<<14 | 0x52<<7 | 0x3E, - 40688 - 19968: jis0212<<14 | 0x4B<<7 | 0x5A, - 40689 - 19968: jis0212<<14 | 0x4B<<7 | 0x5B, - 40690 - 19968: jis0212<<14 | 0x4B<<7 | 0x5C, - 40692 - 19968: jis0208<<14 | 0x52<<7 | 0x3F, - 40693 - 19968: jis0212<<14 | 0x4B<<7 | 0x5D, - 40694 - 19968: jis0208<<14 | 0x52<<7 | 0x40, - 40695 - 19968: jis0208<<14 | 0x52<<7 | 0x41, - 40696 - 19968: jis0212<<14 | 0x4C<<7 | 0x00, - 40697 - 19968: jis0208<<14 | 0x52<<7 | 0x42, - 40699 - 19968: jis0208<<14 | 0x52<<7 | 0x43, - 40700 - 19968: jis0208<<14 | 0x52<<7 | 0x44, - 40701 - 19968: jis0208<<14 | 0x52<<7 | 0x45, - 40703 - 19968: jis0212<<14 | 0x4C<<7 | 0x01, - 40706 - 19968: jis0212<<14 | 0x4C<<7 | 0x02, - 40707 - 19968: jis0212<<14 | 0x4C<<7 | 0x03, - 40711 - 19968: jis0208<<14 | 0x52<<7 | 0x46, - 40712 - 19968: jis0208<<14 | 0x52<<7 | 0x47, - 40713 - 19968: jis0212<<14 | 0x4C<<7 | 0x04, - 40718 - 19968: jis0208<<14 | 0x24<<7 | 0x03, - 40719 - 19968: jis0212<<14 | 0x4C<<7 | 0x05, - 40720 - 19968: jis0212<<14 | 0x4C<<7 | 0x06, - 40721 - 19968: jis0212<<14 | 0x4C<<7 | 0x07, - 40722 - 19968: jis0212<<14 | 0x4C<<7 | 0x08, - 40723 - 19968: jis0208<<14 | 0x17<<7 | 0x3C, - 40724 - 19968: jis0212<<14 | 0x4C<<7 | 0x09, - 40725 - 19968: jis0208<<14 | 0x52<<7 | 0x49, - 40726 - 19968: jis0212<<14 | 0x4C<<7 | 0x0A, - 40727 - 19968: jis0212<<14 | 0x4C<<7 | 0x0B, - 40729 - 19968: jis0212<<14 | 0x4C<<7 | 0x0C, - 40730 - 19968: jis0212<<14 | 0x4C<<7 | 0x0D, - 40731 - 19968: jis0212<<14 | 0x4C<<7 | 0x0E, - 40735 - 19968: jis0212<<14 | 0x4C<<7 | 0x0F, - 40736 - 19968: jis0208<<14 | 0x20<<7 | 0x2C, - 40737 - 19968: jis0208<<14 | 0x52<<7 | 0x4A, - 40738 - 19968: jis0212<<14 | 0x4C<<7 | 0x10, - 40742 - 19968: jis0212<<14 | 0x4C<<7 | 0x11, - 40746 - 19968: jis0212<<14 | 0x4C<<7 | 0x12, - 40747 - 19968: jis0212<<14 | 0x4C<<7 | 0x13, - 40748 - 19968: jis0208<<14 | 0x52<<7 | 0x4B, - 40751 - 19968: jis0212<<14 | 0x4C<<7 | 0x14, - 40753 - 19968: jis0212<<14 | 0x4C<<7 | 0x15, - 40754 - 19968: jis0212<<14 | 0x4C<<7 | 0x16, - 40756 - 19968: jis0212<<14 | 0x4C<<7 | 0x17, - 40759 - 19968: jis0212<<14 | 0x4C<<7 | 0x18, - 40761 - 19968: jis0212<<14 | 0x4C<<7 | 0x19, - 40762 - 19968: jis0212<<14 | 0x4C<<7 | 0x1A, - 40763 - 19968: jis0208<<14 | 0x28<<7 | 0x00, - 40764 - 19968: jis0212<<14 | 0x4C<<7 | 0x1B, - 40765 - 19968: jis0212<<14 | 0x4C<<7 | 0x1C, - 40766 - 19968: jis0208<<14 | 0x52<<7 | 0x4C, - 40767 - 19968: jis0212<<14 | 0x4C<<7 | 0x1D, - 40769 - 19968: jis0212<<14 | 0x4C<<7 | 0x1E, - 40771 - 19968: jis0212<<14 | 0x4C<<7 | 0x1F, - 40772 - 19968: jis0212<<14 | 0x4C<<7 | 0x20, - 40773 - 19968: jis0212<<14 | 0x4C<<7 | 0x21, - 40774 - 19968: jis0212<<14 | 0x4C<<7 | 0x22, - 40775 - 19968: jis0212<<14 | 0x4C<<7 | 0x23, - 40778 - 19968: jis0208<<14 | 0x52<<7 | 0x4D, - 40779 - 19968: jis0208<<14 | 0x42<<7 | 0x16, - 40782 - 19968: jis0208<<14 | 0x4B<<7 | 0x39, - 40783 - 19968: jis0208<<14 | 0x4F<<7 | 0x4C, - 40786 - 19968: jis0208<<14 | 0x52<<7 | 0x4E, - 40787 - 19968: jis0212<<14 | 0x4C<<7 | 0x24, - 40788 - 19968: jis0208<<14 | 0x52<<7 | 0x4F, - 40789 - 19968: jis0212<<14 | 0x4C<<7 | 0x25, - 40790 - 19968: jis0212<<14 | 0x4C<<7 | 0x26, - 40791 - 19968: jis0212<<14 | 0x4C<<7 | 0x27, - 40792 - 19968: jis0212<<14 | 0x4C<<7 | 0x28, - 40794 - 19968: jis0212<<14 | 0x4C<<7 | 0x29, - 40797 - 19968: jis0212<<14 | 0x4C<<7 | 0x2A, - 40798 - 19968: jis0212<<14 | 0x4C<<7 | 0x2B, - 40799 - 19968: jis0208<<14 | 0x52<<7 | 0x51, - 40800 - 19968: jis0208<<14 | 0x52<<7 | 0x52, - 40801 - 19968: jis0208<<14 | 0x52<<7 | 0x53, - 40802 - 19968: jis0208<<14 | 0x2D<<7 | 0x4F, - 40803 - 19968: jis0208<<14 | 0x52<<7 | 0x50, - 40806 - 19968: jis0208<<14 | 0x52<<7 | 0x54, - 40807 - 19968: jis0208<<14 | 0x52<<7 | 0x55, - 40808 - 19968: jis0212<<14 | 0x4C<<7 | 0x2C, - 40809 - 19968: jis0212<<14 | 0x4C<<7 | 0x2D, - 40810 - 19968: jis0208<<14 | 0x52<<7 | 0x57, - 40812 - 19968: jis0208<<14 | 0x52<<7 | 0x56, - 40813 - 19968: jis0212<<14 | 0x4C<<7 | 0x2E, - 40814 - 19968: jis0212<<14 | 0x4C<<7 | 0x2F, - 40815 - 19968: jis0212<<14 | 0x4C<<7 | 0x30, - 40816 - 19968: jis0212<<14 | 0x4C<<7 | 0x31, - 40817 - 19968: jis0212<<14 | 0x4C<<7 | 0x32, - 40818 - 19968: jis0208<<14 | 0x52<<7 | 0x59, - 40819 - 19968: jis0212<<14 | 0x4C<<7 | 0x33, - 40821 - 19968: jis0212<<14 | 0x4C<<7 | 0x34, - 40822 - 19968: jis0208<<14 | 0x52<<7 | 0x5A, - 40823 - 19968: jis0208<<14 | 0x52<<7 | 0x58, - 40826 - 19968: jis0212<<14 | 0x4C<<7 | 0x35, - 40829 - 19968: jis0212<<14 | 0x4C<<7 | 0x36, - 40845 - 19968: jis0208<<14 | 0x2D<<7 | 0x15, - 40847 - 19968: jis0212<<14 | 0x4C<<7 | 0x37, - 40848 - 19968: jis0212<<14 | 0x4C<<7 | 0x38, - 40849 - 19968: jis0212<<14 | 0x4C<<7 | 0x39, - 40850 - 19968: jis0212<<14 | 0x4C<<7 | 0x3A, - 40852 - 19968: jis0212<<14 | 0x4C<<7 | 0x3B, - 40853 - 19968: jis0208<<14 | 0x52<<7 | 0x5B, - 40854 - 19968: jis0212<<14 | 0x4C<<7 | 0x3C, - 40855 - 19968: jis0212<<14 | 0x4C<<7 | 0x3D, - 40860 - 19968: jis0208<<14 | 0x52<<7 | 0x5C, - 40861 - 19968: jis0208<<14 | 0x42<<7 | 0x33, - 40862 - 19968: jis0212<<14 | 0x4C<<7 | 0x3E, - 40864 - 19968: jis0208<<14 | 0x52<<7 | 0x5D, - 40865 - 19968: jis0212<<14 | 0x4C<<7 | 0x3F, - 40866 - 19968: jis0212<<14 | 0x4C<<7 | 0x40, - 40867 - 19968: jis0212<<14 | 0x4C<<7 | 0x41, - 40869 - 19968: jis0212<<14 | 0x4C<<7 | 0x42, -} - -const encode1Low, encode1High = 8208, 9840 - -var encode1 = [...]uint16{ - 8208 - 8208: jis0208<<14 | 0x00<<7 | 0x1D, - 8213 - 8208: jis0208<<14 | 0x00<<7 | 0x1C, - 8216 - 8208: jis0208<<14 | 0x00<<7 | 0x25, - 8217 - 8208: jis0208<<14 | 0x00<<7 | 0x26, - 8220 - 8208: jis0208<<14 | 0x00<<7 | 0x27, - 8221 - 8208: jis0208<<14 | 0x00<<7 | 0x28, - 8224 - 8208: jis0208<<14 | 0x01<<7 | 0x56, - 8225 - 8208: jis0208<<14 | 0x01<<7 | 0x57, - 8229 - 8208: jis0208<<14 | 0x00<<7 | 0x24, - 8230 - 8208: jis0208<<14 | 0x00<<7 | 0x23, - 8240 - 8208: jis0208<<14 | 0x01<<7 | 0x52, - 8242 - 8208: jis0208<<14 | 0x00<<7 | 0x4B, - 8243 - 8208: jis0208<<14 | 0x00<<7 | 0x4C, - 8251 - 8208: jis0208<<14 | 0x01<<7 | 0x07, - 8451 - 8208: jis0208<<14 | 0x00<<7 | 0x4D, - 8470 - 8208: jis0208<<14 | 0x0C<<7 | 0x41, - 8481 - 8208: jis0208<<14 | 0x0C<<7 | 0x43, - 8482 - 8208: jis0212<<14 | 0x01<<7 | 0x4E, - 8491 - 8208: jis0208<<14 | 0x01<<7 | 0x51, - 8544 - 8208: jis0208<<14 | 0x0C<<7 | 0x14, - 8545 - 8208: jis0208<<14 | 0x0C<<7 | 0x15, - 8546 - 8208: jis0208<<14 | 0x0C<<7 | 0x16, - 8547 - 8208: jis0208<<14 | 0x0C<<7 | 0x17, - 8548 - 8208: jis0208<<14 | 0x0C<<7 | 0x18, - 8549 - 8208: jis0208<<14 | 0x0C<<7 | 0x19, - 8550 - 8208: jis0208<<14 | 0x0C<<7 | 0x1A, - 8551 - 8208: jis0208<<14 | 0x0C<<7 | 0x1B, - 8552 - 8208: jis0208<<14 | 0x0C<<7 | 0x1C, - 8553 - 8208: jis0208<<14 | 0x0C<<7 | 0x1D, - 8560 - 8208: jis0208<<14 | 0x5B<<7 | 0x50, - 8561 - 8208: jis0208<<14 | 0x5B<<7 | 0x51, - 8562 - 8208: jis0208<<14 | 0x5B<<7 | 0x52, - 8563 - 8208: jis0208<<14 | 0x5B<<7 | 0x53, - 8564 - 8208: jis0208<<14 | 0x5B<<7 | 0x54, - 8565 - 8208: jis0208<<14 | 0x5B<<7 | 0x55, - 8566 - 8208: jis0208<<14 | 0x5B<<7 | 0x56, - 8567 - 8208: jis0208<<14 | 0x5B<<7 | 0x57, - 8568 - 8208: jis0208<<14 | 0x5B<<7 | 0x58, - 8569 - 8208: jis0208<<14 | 0x5B<<7 | 0x59, - 8592 - 8208: jis0208<<14 | 0x01<<7 | 0x0A, - 8593 - 8208: jis0208<<14 | 0x01<<7 | 0x0B, - 8594 - 8208: jis0208<<14 | 0x01<<7 | 0x09, - 8595 - 8208: jis0208<<14 | 0x01<<7 | 0x0C, - 8658 - 8208: jis0208<<14 | 0x01<<7 | 0x2C, - 8660 - 8208: jis0208<<14 | 0x01<<7 | 0x2D, - 8704 - 8208: jis0208<<14 | 0x01<<7 | 0x2E, - 8706 - 8208: jis0208<<14 | 0x01<<7 | 0x3E, - 8707 - 8208: jis0208<<14 | 0x01<<7 | 0x2F, - 8711 - 8208: jis0208<<14 | 0x01<<7 | 0x3F, - 8712 - 8208: jis0208<<14 | 0x01<<7 | 0x19, - 8715 - 8208: jis0208<<14 | 0x01<<7 | 0x1A, - 8721 - 8208: jis0208<<14 | 0x0C<<7 | 0x53, - 8730 - 8208: jis0208<<14 | 0x01<<7 | 0x44, - 8733 - 8208: jis0208<<14 | 0x01<<7 | 0x46, - 8734 - 8208: jis0208<<14 | 0x00<<7 | 0x46, - 8735 - 8208: jis0208<<14 | 0x0C<<7 | 0x57, - 8736 - 8208: jis0208<<14 | 0x01<<7 | 0x3B, - 8741 - 8208: jis0208<<14 | 0x00<<7 | 0x21, - 8743 - 8208: jis0208<<14 | 0x01<<7 | 0x29, - 8744 - 8208: jis0208<<14 | 0x01<<7 | 0x2A, - 8745 - 8208: jis0208<<14 | 0x01<<7 | 0x20, - 8746 - 8208: jis0208<<14 | 0x01<<7 | 0x1F, - 8747 - 8208: jis0208<<14 | 0x01<<7 | 0x48, - 8748 - 8208: jis0208<<14 | 0x01<<7 | 0x49, - 8750 - 8208: jis0208<<14 | 0x0C<<7 | 0x52, - 8756 - 8208: jis0208<<14 | 0x00<<7 | 0x47, - 8757 - 8208: jis0208<<14 | 0x01<<7 | 0x47, - 8765 - 8208: jis0208<<14 | 0x01<<7 | 0x45, - 8786 - 8208: jis0208<<14 | 0x01<<7 | 0x41, - 8800 - 8208: jis0208<<14 | 0x00<<7 | 0x41, - 8801 - 8208: jis0208<<14 | 0x01<<7 | 0x40, - 8806 - 8208: jis0208<<14 | 0x00<<7 | 0x44, - 8807 - 8208: jis0208<<14 | 0x00<<7 | 0x45, - 8810 - 8208: jis0208<<14 | 0x01<<7 | 0x42, - 8811 - 8208: jis0208<<14 | 0x01<<7 | 0x43, - 8834 - 8208: jis0208<<14 | 0x01<<7 | 0x1D, - 8835 - 8208: jis0208<<14 | 0x01<<7 | 0x1E, - 8838 - 8208: jis0208<<14 | 0x01<<7 | 0x1B, - 8839 - 8208: jis0208<<14 | 0x01<<7 | 0x1C, - 8869 - 8208: jis0208<<14 | 0x01<<7 | 0x3C, - 8895 - 8208: jis0208<<14 | 0x0C<<7 | 0x58, - 8978 - 8208: jis0208<<14 | 0x01<<7 | 0x3D, - 9312 - 8208: jis0208<<14 | 0x0C<<7 | 0x00, - 9313 - 8208: jis0208<<14 | 0x0C<<7 | 0x01, - 9314 - 8208: jis0208<<14 | 0x0C<<7 | 0x02, - 9315 - 8208: jis0208<<14 | 0x0C<<7 | 0x03, - 9316 - 8208: jis0208<<14 | 0x0C<<7 | 0x04, - 9317 - 8208: jis0208<<14 | 0x0C<<7 | 0x05, - 9318 - 8208: jis0208<<14 | 0x0C<<7 | 0x06, - 9319 - 8208: jis0208<<14 | 0x0C<<7 | 0x07, - 9320 - 8208: jis0208<<14 | 0x0C<<7 | 0x08, - 9321 - 8208: jis0208<<14 | 0x0C<<7 | 0x09, - 9322 - 8208: jis0208<<14 | 0x0C<<7 | 0x0A, - 9323 - 8208: jis0208<<14 | 0x0C<<7 | 0x0B, - 9324 - 8208: jis0208<<14 | 0x0C<<7 | 0x0C, - 9325 - 8208: jis0208<<14 | 0x0C<<7 | 0x0D, - 9326 - 8208: jis0208<<14 | 0x0C<<7 | 0x0E, - 9327 - 8208: jis0208<<14 | 0x0C<<7 | 0x0F, - 9328 - 8208: jis0208<<14 | 0x0C<<7 | 0x10, - 9329 - 8208: jis0208<<14 | 0x0C<<7 | 0x11, - 9330 - 8208: jis0208<<14 | 0x0C<<7 | 0x12, - 9331 - 8208: jis0208<<14 | 0x0C<<7 | 0x13, - 9472 - 8208: jis0208<<14 | 0x07<<7 | 0x00, - 9473 - 8208: jis0208<<14 | 0x07<<7 | 0x0B, - 9474 - 8208: jis0208<<14 | 0x07<<7 | 0x01, - 9475 - 8208: jis0208<<14 | 0x07<<7 | 0x0C, - 9484 - 8208: jis0208<<14 | 0x07<<7 | 0x02, - 9487 - 8208: jis0208<<14 | 0x07<<7 | 0x0D, - 9488 - 8208: jis0208<<14 | 0x07<<7 | 0x03, - 9491 - 8208: jis0208<<14 | 0x07<<7 | 0x0E, - 9492 - 8208: jis0208<<14 | 0x07<<7 | 0x05, - 9495 - 8208: jis0208<<14 | 0x07<<7 | 0x10, - 9496 - 8208: jis0208<<14 | 0x07<<7 | 0x04, - 9499 - 8208: jis0208<<14 | 0x07<<7 | 0x0F, - 9500 - 8208: jis0208<<14 | 0x07<<7 | 0x06, - 9501 - 8208: jis0208<<14 | 0x07<<7 | 0x1B, - 9504 - 8208: jis0208<<14 | 0x07<<7 | 0x16, - 9507 - 8208: jis0208<<14 | 0x07<<7 | 0x11, - 9508 - 8208: jis0208<<14 | 0x07<<7 | 0x08, - 9509 - 8208: jis0208<<14 | 0x07<<7 | 0x1D, - 9512 - 8208: jis0208<<14 | 0x07<<7 | 0x18, - 9515 - 8208: jis0208<<14 | 0x07<<7 | 0x13, - 9516 - 8208: jis0208<<14 | 0x07<<7 | 0x07, - 9519 - 8208: jis0208<<14 | 0x07<<7 | 0x17, - 9520 - 8208: jis0208<<14 | 0x07<<7 | 0x1C, - 9523 - 8208: jis0208<<14 | 0x07<<7 | 0x12, - 9524 - 8208: jis0208<<14 | 0x07<<7 | 0x09, - 9527 - 8208: jis0208<<14 | 0x07<<7 | 0x19, - 9528 - 8208: jis0208<<14 | 0x07<<7 | 0x1E, - 9531 - 8208: jis0208<<14 | 0x07<<7 | 0x14, - 9532 - 8208: jis0208<<14 | 0x07<<7 | 0x0A, - 9535 - 8208: jis0208<<14 | 0x07<<7 | 0x1A, - 9538 - 8208: jis0208<<14 | 0x07<<7 | 0x1F, - 9547 - 8208: jis0208<<14 | 0x07<<7 | 0x15, - 9632 - 8208: jis0208<<14 | 0x01<<7 | 0x02, - 9633 - 8208: jis0208<<14 | 0x01<<7 | 0x01, - 9650 - 8208: jis0208<<14 | 0x01<<7 | 0x04, - 9651 - 8208: jis0208<<14 | 0x01<<7 | 0x03, - 9660 - 8208: jis0208<<14 | 0x01<<7 | 0x06, - 9661 - 8208: jis0208<<14 | 0x01<<7 | 0x05, - 9670 - 8208: jis0208<<14 | 0x01<<7 | 0x00, - 9671 - 8208: jis0208<<14 | 0x00<<7 | 0x5D, - 9675 - 8208: jis0208<<14 | 0x00<<7 | 0x5A, - 9678 - 8208: jis0208<<14 | 0x00<<7 | 0x5C, - 9679 - 8208: jis0208<<14 | 0x00<<7 | 0x5B, - 9711 - 8208: jis0208<<14 | 0x01<<7 | 0x5D, - 9733 - 8208: jis0208<<14 | 0x00<<7 | 0x59, - 9734 - 8208: jis0208<<14 | 0x00<<7 | 0x58, - 9792 - 8208: jis0208<<14 | 0x00<<7 | 0x49, - 9794 - 8208: jis0208<<14 | 0x00<<7 | 0x48, - 9834 - 8208: jis0208<<14 | 0x01<<7 | 0x55, - 9837 - 8208: jis0208<<14 | 0x01<<7 | 0x54, - 9839 - 8208: jis0208<<14 | 0x01<<7 | 0x53, -} - -const encode2Low, encode2High = 12288, 13262 - -var encode2 = [...]uint16{ - 12288 - 12288: jis0208<<14 | 0x00<<7 | 0x00, - 12289 - 12288: jis0208<<14 | 0x00<<7 | 0x01, - 12290 - 12288: jis0208<<14 | 0x00<<7 | 0x02, - 12291 - 12288: jis0208<<14 | 0x00<<7 | 0x16, - 12293 - 12288: jis0208<<14 | 0x00<<7 | 0x18, - 12294 - 12288: jis0208<<14 | 0x00<<7 | 0x19, - 12295 - 12288: jis0208<<14 | 0x00<<7 | 0x1A, - 12296 - 12288: jis0208<<14 | 0x00<<7 | 0x31, - 12297 - 12288: jis0208<<14 | 0x00<<7 | 0x32, - 12298 - 12288: jis0208<<14 | 0x00<<7 | 0x33, - 12299 - 12288: jis0208<<14 | 0x00<<7 | 0x34, - 12300 - 12288: jis0208<<14 | 0x00<<7 | 0x35, - 12301 - 12288: jis0208<<14 | 0x00<<7 | 0x36, - 12302 - 12288: jis0208<<14 | 0x00<<7 | 0x37, - 12303 - 12288: jis0208<<14 | 0x00<<7 | 0x38, - 12304 - 12288: jis0208<<14 | 0x00<<7 | 0x39, - 12305 - 12288: jis0208<<14 | 0x00<<7 | 0x3A, - 12306 - 12288: jis0208<<14 | 0x01<<7 | 0x08, - 12307 - 12288: jis0208<<14 | 0x01<<7 | 0x0D, - 12308 - 12288: jis0208<<14 | 0x00<<7 | 0x2B, - 12309 - 12288: jis0208<<14 | 0x00<<7 | 0x2C, - 12317 - 12288: jis0208<<14 | 0x0C<<7 | 0x3F, - 12319 - 12288: jis0208<<14 | 0x0C<<7 | 0x40, - 12353 - 12288: jis0208<<14 | 0x03<<7 | 0x00, - 12354 - 12288: jis0208<<14 | 0x03<<7 | 0x01, - 12355 - 12288: jis0208<<14 | 0x03<<7 | 0x02, - 12356 - 12288: jis0208<<14 | 0x03<<7 | 0x03, - 12357 - 12288: jis0208<<14 | 0x03<<7 | 0x04, - 12358 - 12288: jis0208<<14 | 0x03<<7 | 0x05, - 12359 - 12288: jis0208<<14 | 0x03<<7 | 0x06, - 12360 - 12288: jis0208<<14 | 0x03<<7 | 0x07, - 12361 - 12288: jis0208<<14 | 0x03<<7 | 0x08, - 12362 - 12288: jis0208<<14 | 0x03<<7 | 0x09, - 12363 - 12288: jis0208<<14 | 0x03<<7 | 0x0A, - 12364 - 12288: jis0208<<14 | 0x03<<7 | 0x0B, - 12365 - 12288: jis0208<<14 | 0x03<<7 | 0x0C, - 12366 - 12288: jis0208<<14 | 0x03<<7 | 0x0D, - 12367 - 12288: jis0208<<14 | 0x03<<7 | 0x0E, - 12368 - 12288: jis0208<<14 | 0x03<<7 | 0x0F, - 12369 - 12288: jis0208<<14 | 0x03<<7 | 0x10, - 12370 - 12288: jis0208<<14 | 0x03<<7 | 0x11, - 12371 - 12288: jis0208<<14 | 0x03<<7 | 0x12, - 12372 - 12288: jis0208<<14 | 0x03<<7 | 0x13, - 12373 - 12288: jis0208<<14 | 0x03<<7 | 0x14, - 12374 - 12288: jis0208<<14 | 0x03<<7 | 0x15, - 12375 - 12288: jis0208<<14 | 0x03<<7 | 0x16, - 12376 - 12288: jis0208<<14 | 0x03<<7 | 0x17, - 12377 - 12288: jis0208<<14 | 0x03<<7 | 0x18, - 12378 - 12288: jis0208<<14 | 0x03<<7 | 0x19, - 12379 - 12288: jis0208<<14 | 0x03<<7 | 0x1A, - 12380 - 12288: jis0208<<14 | 0x03<<7 | 0x1B, - 12381 - 12288: jis0208<<14 | 0x03<<7 | 0x1C, - 12382 - 12288: jis0208<<14 | 0x03<<7 | 0x1D, - 12383 - 12288: jis0208<<14 | 0x03<<7 | 0x1E, - 12384 - 12288: jis0208<<14 | 0x03<<7 | 0x1F, - 12385 - 12288: jis0208<<14 | 0x03<<7 | 0x20, - 12386 - 12288: jis0208<<14 | 0x03<<7 | 0x21, - 12387 - 12288: jis0208<<14 | 0x03<<7 | 0x22, - 12388 - 12288: jis0208<<14 | 0x03<<7 | 0x23, - 12389 - 12288: jis0208<<14 | 0x03<<7 | 0x24, - 12390 - 12288: jis0208<<14 | 0x03<<7 | 0x25, - 12391 - 12288: jis0208<<14 | 0x03<<7 | 0x26, - 12392 - 12288: jis0208<<14 | 0x03<<7 | 0x27, - 12393 - 12288: jis0208<<14 | 0x03<<7 | 0x28, - 12394 - 12288: jis0208<<14 | 0x03<<7 | 0x29, - 12395 - 12288: jis0208<<14 | 0x03<<7 | 0x2A, - 12396 - 12288: jis0208<<14 | 0x03<<7 | 0x2B, - 12397 - 12288: jis0208<<14 | 0x03<<7 | 0x2C, - 12398 - 12288: jis0208<<14 | 0x03<<7 | 0x2D, - 12399 - 12288: jis0208<<14 | 0x03<<7 | 0x2E, - 12400 - 12288: jis0208<<14 | 0x03<<7 | 0x2F, - 12401 - 12288: jis0208<<14 | 0x03<<7 | 0x30, - 12402 - 12288: jis0208<<14 | 0x03<<7 | 0x31, - 12403 - 12288: jis0208<<14 | 0x03<<7 | 0x32, - 12404 - 12288: jis0208<<14 | 0x03<<7 | 0x33, - 12405 - 12288: jis0208<<14 | 0x03<<7 | 0x34, - 12406 - 12288: jis0208<<14 | 0x03<<7 | 0x35, - 12407 - 12288: jis0208<<14 | 0x03<<7 | 0x36, - 12408 - 12288: jis0208<<14 | 0x03<<7 | 0x37, - 12409 - 12288: jis0208<<14 | 0x03<<7 | 0x38, - 12410 - 12288: jis0208<<14 | 0x03<<7 | 0x39, - 12411 - 12288: jis0208<<14 | 0x03<<7 | 0x3A, - 12412 - 12288: jis0208<<14 | 0x03<<7 | 0x3B, - 12413 - 12288: jis0208<<14 | 0x03<<7 | 0x3C, - 12414 - 12288: jis0208<<14 | 0x03<<7 | 0x3D, - 12415 - 12288: jis0208<<14 | 0x03<<7 | 0x3E, - 12416 - 12288: jis0208<<14 | 0x03<<7 | 0x3F, - 12417 - 12288: jis0208<<14 | 0x03<<7 | 0x40, - 12418 - 12288: jis0208<<14 | 0x03<<7 | 0x41, - 12419 - 12288: jis0208<<14 | 0x03<<7 | 0x42, - 12420 - 12288: jis0208<<14 | 0x03<<7 | 0x43, - 12421 - 12288: jis0208<<14 | 0x03<<7 | 0x44, - 12422 - 12288: jis0208<<14 | 0x03<<7 | 0x45, - 12423 - 12288: jis0208<<14 | 0x03<<7 | 0x46, - 12424 - 12288: jis0208<<14 | 0x03<<7 | 0x47, - 12425 - 12288: jis0208<<14 | 0x03<<7 | 0x48, - 12426 - 12288: jis0208<<14 | 0x03<<7 | 0x49, - 12427 - 12288: jis0208<<14 | 0x03<<7 | 0x4A, - 12428 - 12288: jis0208<<14 | 0x03<<7 | 0x4B, - 12429 - 12288: jis0208<<14 | 0x03<<7 | 0x4C, - 12430 - 12288: jis0208<<14 | 0x03<<7 | 0x4D, - 12431 - 12288: jis0208<<14 | 0x03<<7 | 0x4E, - 12432 - 12288: jis0208<<14 | 0x03<<7 | 0x4F, - 12433 - 12288: jis0208<<14 | 0x03<<7 | 0x50, - 12434 - 12288: jis0208<<14 | 0x03<<7 | 0x51, - 12435 - 12288: jis0208<<14 | 0x03<<7 | 0x52, - 12443 - 12288: jis0208<<14 | 0x00<<7 | 0x0A, - 12444 - 12288: jis0208<<14 | 0x00<<7 | 0x0B, - 12445 - 12288: jis0208<<14 | 0x00<<7 | 0x14, - 12446 - 12288: jis0208<<14 | 0x00<<7 | 0x15, - 12449 - 12288: jis0208<<14 | 0x04<<7 | 0x00, - 12450 - 12288: jis0208<<14 | 0x04<<7 | 0x01, - 12451 - 12288: jis0208<<14 | 0x04<<7 | 0x02, - 12452 - 12288: jis0208<<14 | 0x04<<7 | 0x03, - 12453 - 12288: jis0208<<14 | 0x04<<7 | 0x04, - 12454 - 12288: jis0208<<14 | 0x04<<7 | 0x05, - 12455 - 12288: jis0208<<14 | 0x04<<7 | 0x06, - 12456 - 12288: jis0208<<14 | 0x04<<7 | 0x07, - 12457 - 12288: jis0208<<14 | 0x04<<7 | 0x08, - 12458 - 12288: jis0208<<14 | 0x04<<7 | 0x09, - 12459 - 12288: jis0208<<14 | 0x04<<7 | 0x0A, - 12460 - 12288: jis0208<<14 | 0x04<<7 | 0x0B, - 12461 - 12288: jis0208<<14 | 0x04<<7 | 0x0C, - 12462 - 12288: jis0208<<14 | 0x04<<7 | 0x0D, - 12463 - 12288: jis0208<<14 | 0x04<<7 | 0x0E, - 12464 - 12288: jis0208<<14 | 0x04<<7 | 0x0F, - 12465 - 12288: jis0208<<14 | 0x04<<7 | 0x10, - 12466 - 12288: jis0208<<14 | 0x04<<7 | 0x11, - 12467 - 12288: jis0208<<14 | 0x04<<7 | 0x12, - 12468 - 12288: jis0208<<14 | 0x04<<7 | 0x13, - 12469 - 12288: jis0208<<14 | 0x04<<7 | 0x14, - 12470 - 12288: jis0208<<14 | 0x04<<7 | 0x15, - 12471 - 12288: jis0208<<14 | 0x04<<7 | 0x16, - 12472 - 12288: jis0208<<14 | 0x04<<7 | 0x17, - 12473 - 12288: jis0208<<14 | 0x04<<7 | 0x18, - 12474 - 12288: jis0208<<14 | 0x04<<7 | 0x19, - 12475 - 12288: jis0208<<14 | 0x04<<7 | 0x1A, - 12476 - 12288: jis0208<<14 | 0x04<<7 | 0x1B, - 12477 - 12288: jis0208<<14 | 0x04<<7 | 0x1C, - 12478 - 12288: jis0208<<14 | 0x04<<7 | 0x1D, - 12479 - 12288: jis0208<<14 | 0x04<<7 | 0x1E, - 12480 - 12288: jis0208<<14 | 0x04<<7 | 0x1F, - 12481 - 12288: jis0208<<14 | 0x04<<7 | 0x20, - 12482 - 12288: jis0208<<14 | 0x04<<7 | 0x21, - 12483 - 12288: jis0208<<14 | 0x04<<7 | 0x22, - 12484 - 12288: jis0208<<14 | 0x04<<7 | 0x23, - 12485 - 12288: jis0208<<14 | 0x04<<7 | 0x24, - 12486 - 12288: jis0208<<14 | 0x04<<7 | 0x25, - 12487 - 12288: jis0208<<14 | 0x04<<7 | 0x26, - 12488 - 12288: jis0208<<14 | 0x04<<7 | 0x27, - 12489 - 12288: jis0208<<14 | 0x04<<7 | 0x28, - 12490 - 12288: jis0208<<14 | 0x04<<7 | 0x29, - 12491 - 12288: jis0208<<14 | 0x04<<7 | 0x2A, - 12492 - 12288: jis0208<<14 | 0x04<<7 | 0x2B, - 12493 - 12288: jis0208<<14 | 0x04<<7 | 0x2C, - 12494 - 12288: jis0208<<14 | 0x04<<7 | 0x2D, - 12495 - 12288: jis0208<<14 | 0x04<<7 | 0x2E, - 12496 - 12288: jis0208<<14 | 0x04<<7 | 0x2F, - 12497 - 12288: jis0208<<14 | 0x04<<7 | 0x30, - 12498 - 12288: jis0208<<14 | 0x04<<7 | 0x31, - 12499 - 12288: jis0208<<14 | 0x04<<7 | 0x32, - 12500 - 12288: jis0208<<14 | 0x04<<7 | 0x33, - 12501 - 12288: jis0208<<14 | 0x04<<7 | 0x34, - 12502 - 12288: jis0208<<14 | 0x04<<7 | 0x35, - 12503 - 12288: jis0208<<14 | 0x04<<7 | 0x36, - 12504 - 12288: jis0208<<14 | 0x04<<7 | 0x37, - 12505 - 12288: jis0208<<14 | 0x04<<7 | 0x38, - 12506 - 12288: jis0208<<14 | 0x04<<7 | 0x39, - 12507 - 12288: jis0208<<14 | 0x04<<7 | 0x3A, - 12508 - 12288: jis0208<<14 | 0x04<<7 | 0x3B, - 12509 - 12288: jis0208<<14 | 0x04<<7 | 0x3C, - 12510 - 12288: jis0208<<14 | 0x04<<7 | 0x3D, - 12511 - 12288: jis0208<<14 | 0x04<<7 | 0x3E, - 12512 - 12288: jis0208<<14 | 0x04<<7 | 0x3F, - 12513 - 12288: jis0208<<14 | 0x04<<7 | 0x40, - 12514 - 12288: jis0208<<14 | 0x04<<7 | 0x41, - 12515 - 12288: jis0208<<14 | 0x04<<7 | 0x42, - 12516 - 12288: jis0208<<14 | 0x04<<7 | 0x43, - 12517 - 12288: jis0208<<14 | 0x04<<7 | 0x44, - 12518 - 12288: jis0208<<14 | 0x04<<7 | 0x45, - 12519 - 12288: jis0208<<14 | 0x04<<7 | 0x46, - 12520 - 12288: jis0208<<14 | 0x04<<7 | 0x47, - 12521 - 12288: jis0208<<14 | 0x04<<7 | 0x48, - 12522 - 12288: jis0208<<14 | 0x04<<7 | 0x49, - 12523 - 12288: jis0208<<14 | 0x04<<7 | 0x4A, - 12524 - 12288: jis0208<<14 | 0x04<<7 | 0x4B, - 12525 - 12288: jis0208<<14 | 0x04<<7 | 0x4C, - 12526 - 12288: jis0208<<14 | 0x04<<7 | 0x4D, - 12527 - 12288: jis0208<<14 | 0x04<<7 | 0x4E, - 12528 - 12288: jis0208<<14 | 0x04<<7 | 0x4F, - 12529 - 12288: jis0208<<14 | 0x04<<7 | 0x50, - 12530 - 12288: jis0208<<14 | 0x04<<7 | 0x51, - 12531 - 12288: jis0208<<14 | 0x04<<7 | 0x52, - 12532 - 12288: jis0208<<14 | 0x04<<7 | 0x53, - 12533 - 12288: jis0208<<14 | 0x04<<7 | 0x54, - 12534 - 12288: jis0208<<14 | 0x04<<7 | 0x55, - 12539 - 12288: jis0208<<14 | 0x00<<7 | 0x05, - 12540 - 12288: jis0208<<14 | 0x00<<7 | 0x1B, - 12541 - 12288: jis0208<<14 | 0x00<<7 | 0x12, - 12542 - 12288: jis0208<<14 | 0x00<<7 | 0x13, - 12849 - 12288: jis0208<<14 | 0x0C<<7 | 0x49, - 12850 - 12288: jis0208<<14 | 0x0C<<7 | 0x4A, - 12857 - 12288: jis0208<<14 | 0x0C<<7 | 0x4B, - 12964 - 12288: jis0208<<14 | 0x0C<<7 | 0x44, - 12965 - 12288: jis0208<<14 | 0x0C<<7 | 0x45, - 12966 - 12288: jis0208<<14 | 0x0C<<7 | 0x46, - 12967 - 12288: jis0208<<14 | 0x0C<<7 | 0x47, - 12968 - 12288: jis0208<<14 | 0x0C<<7 | 0x48, - 13059 - 12288: jis0208<<14 | 0x0C<<7 | 0x25, - 13069 - 12288: jis0208<<14 | 0x0C<<7 | 0x29, - 13076 - 12288: jis0208<<14 | 0x0C<<7 | 0x20, - 13080 - 12288: jis0208<<14 | 0x0C<<7 | 0x23, - 13090 - 12288: jis0208<<14 | 0x0C<<7 | 0x21, - 13091 - 12288: jis0208<<14 | 0x0C<<7 | 0x2B, - 13094 - 12288: jis0208<<14 | 0x0C<<7 | 0x2A, - 13095 - 12288: jis0208<<14 | 0x0C<<7 | 0x24, - 13099 - 12288: jis0208<<14 | 0x0C<<7 | 0x2C, - 13110 - 12288: jis0208<<14 | 0x0C<<7 | 0x26, - 13115 - 12288: jis0208<<14 | 0x0C<<7 | 0x2E, - 13129 - 12288: jis0208<<14 | 0x0C<<7 | 0x1F, - 13130 - 12288: jis0208<<14 | 0x0C<<7 | 0x2D, - 13133 - 12288: jis0208<<14 | 0x0C<<7 | 0x22, - 13137 - 12288: jis0208<<14 | 0x0C<<7 | 0x27, - 13143 - 12288: jis0208<<14 | 0x0C<<7 | 0x28, - 13179 - 12288: jis0208<<14 | 0x0C<<7 | 0x3E, - 13180 - 12288: jis0208<<14 | 0x0C<<7 | 0x4E, - 13181 - 12288: jis0208<<14 | 0x0C<<7 | 0x4D, - 13182 - 12288: jis0208<<14 | 0x0C<<7 | 0x4C, - 13198 - 12288: jis0208<<14 | 0x0C<<7 | 0x32, - 13199 - 12288: jis0208<<14 | 0x0C<<7 | 0x33, - 13212 - 12288: jis0208<<14 | 0x0C<<7 | 0x2F, - 13213 - 12288: jis0208<<14 | 0x0C<<7 | 0x30, - 13214 - 12288: jis0208<<14 | 0x0C<<7 | 0x31, - 13217 - 12288: jis0208<<14 | 0x0C<<7 | 0x35, - 13252 - 12288: jis0208<<14 | 0x0C<<7 | 0x34, - 13261 - 12288: jis0208<<14 | 0x0C<<7 | 0x42, -} - -const encode3Low, encode3High = 161, 1120 - -var encode3 = [...]uint16{ - 161 - 161: jis0212<<14 | 0x01<<7 | 0x21, - 164 - 161: jis0212<<14 | 0x01<<7 | 0x4F, - 166 - 161: jis0212<<14 | 0x01<<7 | 0x22, - 167 - 161: jis0208<<14 | 0x00<<7 | 0x57, - 168 - 161: jis0208<<14 | 0x00<<7 | 0x0E, - 169 - 161: jis0212<<14 | 0x01<<7 | 0x4C, - 170 - 161: jis0212<<14 | 0x01<<7 | 0x4B, - 174 - 161: jis0212<<14 | 0x01<<7 | 0x4D, - 175 - 161: jis0212<<14 | 0x01<<7 | 0x13, - 176 - 161: jis0208<<14 | 0x00<<7 | 0x4A, - 177 - 161: jis0208<<14 | 0x00<<7 | 0x3D, - 180 - 161: jis0208<<14 | 0x00<<7 | 0x0C, - 182 - 161: jis0208<<14 | 0x01<<7 | 0x58, - 184 - 161: jis0212<<14 | 0x01<<7 | 0x10, - 186 - 161: jis0212<<14 | 0x01<<7 | 0x4A, - 191 - 161: jis0212<<14 | 0x01<<7 | 0x23, - 192 - 161: jis0212<<14 | 0x09<<7 | 0x01, - 193 - 161: jis0212<<14 | 0x09<<7 | 0x00, - 194 - 161: jis0212<<14 | 0x09<<7 | 0x03, - 195 - 161: jis0212<<14 | 0x09<<7 | 0x09, - 196 - 161: jis0212<<14 | 0x09<<7 | 0x02, - 197 - 161: jis0212<<14 | 0x09<<7 | 0x08, - 198 - 161: jis0212<<14 | 0x08<<7 | 0x00, - 199 - 161: jis0212<<14 | 0x09<<7 | 0x0D, - 200 - 161: jis0212<<14 | 0x09<<7 | 0x11, - 201 - 161: jis0212<<14 | 0x09<<7 | 0x10, - 202 - 161: jis0212<<14 | 0x09<<7 | 0x13, - 203 - 161: jis0212<<14 | 0x09<<7 | 0x12, - 204 - 161: jis0212<<14 | 0x09<<7 | 0x1F, - 205 - 161: jis0212<<14 | 0x09<<7 | 0x1E, - 206 - 161: jis0212<<14 | 0x09<<7 | 0x21, - 207 - 161: jis0212<<14 | 0x09<<7 | 0x20, - 209 - 161: jis0212<<14 | 0x09<<7 | 0x2F, - 210 - 161: jis0212<<14 | 0x09<<7 | 0x31, - 211 - 161: jis0212<<14 | 0x09<<7 | 0x30, - 212 - 161: jis0212<<14 | 0x09<<7 | 0x33, - 213 - 161: jis0212<<14 | 0x09<<7 | 0x37, - 214 - 161: jis0212<<14 | 0x09<<7 | 0x32, - 215 - 161: jis0208<<14 | 0x00<<7 | 0x3E, - 216 - 161: jis0212<<14 | 0x08<<7 | 0x0B, - 217 - 161: jis0212<<14 | 0x09<<7 | 0x42, - 218 - 161: jis0212<<14 | 0x09<<7 | 0x41, - 219 - 161: jis0212<<14 | 0x09<<7 | 0x44, - 220 - 161: jis0212<<14 | 0x09<<7 | 0x43, - 221 - 161: jis0212<<14 | 0x09<<7 | 0x51, - 222 - 161: jis0212<<14 | 0x08<<7 | 0x0F, - 223 - 161: jis0212<<14 | 0x08<<7 | 0x2D, - 224 - 161: jis0212<<14 | 0x0A<<7 | 0x01, - 225 - 161: jis0212<<14 | 0x0A<<7 | 0x00, - 226 - 161: jis0212<<14 | 0x0A<<7 | 0x03, - 227 - 161: jis0212<<14 | 0x0A<<7 | 0x09, - 228 - 161: jis0212<<14 | 0x0A<<7 | 0x02, - 229 - 161: jis0212<<14 | 0x0A<<7 | 0x08, - 230 - 161: jis0212<<14 | 0x08<<7 | 0x20, - 231 - 161: jis0212<<14 | 0x0A<<7 | 0x0D, - 232 - 161: jis0212<<14 | 0x0A<<7 | 0x11, - 233 - 161: jis0212<<14 | 0x0A<<7 | 0x10, - 234 - 161: jis0212<<14 | 0x0A<<7 | 0x13, - 235 - 161: jis0212<<14 | 0x0A<<7 | 0x12, - 236 - 161: jis0212<<14 | 0x0A<<7 | 0x1F, - 237 - 161: jis0212<<14 | 0x0A<<7 | 0x1E, - 238 - 161: jis0212<<14 | 0x0A<<7 | 0x21, - 239 - 161: jis0212<<14 | 0x0A<<7 | 0x20, - 240 - 161: jis0212<<14 | 0x08<<7 | 0x22, - 241 - 161: jis0212<<14 | 0x0A<<7 | 0x2F, - 242 - 161: jis0212<<14 | 0x0A<<7 | 0x31, - 243 - 161: jis0212<<14 | 0x0A<<7 | 0x30, - 244 - 161: jis0212<<14 | 0x0A<<7 | 0x33, - 245 - 161: jis0212<<14 | 0x0A<<7 | 0x37, - 246 - 161: jis0212<<14 | 0x0A<<7 | 0x32, - 247 - 161: jis0208<<14 | 0x00<<7 | 0x3F, - 248 - 161: jis0212<<14 | 0x08<<7 | 0x2B, - 249 - 161: jis0212<<14 | 0x0A<<7 | 0x42, - 250 - 161: jis0212<<14 | 0x0A<<7 | 0x41, - 251 - 161: jis0212<<14 | 0x0A<<7 | 0x44, - 252 - 161: jis0212<<14 | 0x0A<<7 | 0x43, - 253 - 161: jis0212<<14 | 0x0A<<7 | 0x51, - 254 - 161: jis0212<<14 | 0x08<<7 | 0x2F, - 255 - 161: jis0212<<14 | 0x0A<<7 | 0x52, - 256 - 161: jis0212<<14 | 0x09<<7 | 0x06, - 257 - 161: jis0212<<14 | 0x0A<<7 | 0x06, - 258 - 161: jis0212<<14 | 0x09<<7 | 0x04, - 259 - 161: jis0212<<14 | 0x0A<<7 | 0x04, - 260 - 161: jis0212<<14 | 0x09<<7 | 0x07, - 261 - 161: jis0212<<14 | 0x0A<<7 | 0x07, - 262 - 161: jis0212<<14 | 0x09<<7 | 0x0A, - 263 - 161: jis0212<<14 | 0x0A<<7 | 0x0A, - 264 - 161: jis0212<<14 | 0x09<<7 | 0x0B, - 265 - 161: jis0212<<14 | 0x0A<<7 | 0x0B, - 266 - 161: jis0212<<14 | 0x09<<7 | 0x0E, - 267 - 161: jis0212<<14 | 0x0A<<7 | 0x0E, - 268 - 161: jis0212<<14 | 0x09<<7 | 0x0C, - 269 - 161: jis0212<<14 | 0x0A<<7 | 0x0C, - 270 - 161: jis0212<<14 | 0x09<<7 | 0x0F, - 271 - 161: jis0212<<14 | 0x0A<<7 | 0x0F, - 272 - 161: jis0212<<14 | 0x08<<7 | 0x01, - 273 - 161: jis0212<<14 | 0x08<<7 | 0x21, - 274 - 161: jis0212<<14 | 0x09<<7 | 0x16, - 275 - 161: jis0212<<14 | 0x0A<<7 | 0x16, - 278 - 161: jis0212<<14 | 0x09<<7 | 0x15, - 279 - 161: jis0212<<14 | 0x0A<<7 | 0x15, - 280 - 161: jis0212<<14 | 0x09<<7 | 0x17, - 281 - 161: jis0212<<14 | 0x0A<<7 | 0x17, - 282 - 161: jis0212<<14 | 0x09<<7 | 0x14, - 283 - 161: jis0212<<14 | 0x0A<<7 | 0x14, - 284 - 161: jis0212<<14 | 0x09<<7 | 0x19, - 285 - 161: jis0212<<14 | 0x0A<<7 | 0x19, - 286 - 161: jis0212<<14 | 0x09<<7 | 0x1A, - 287 - 161: jis0212<<14 | 0x0A<<7 | 0x1A, - 288 - 161: jis0212<<14 | 0x09<<7 | 0x1C, - 289 - 161: jis0212<<14 | 0x0A<<7 | 0x1C, - 290 - 161: jis0212<<14 | 0x09<<7 | 0x1B, - 292 - 161: jis0212<<14 | 0x09<<7 | 0x1D, - 293 - 161: jis0212<<14 | 0x0A<<7 | 0x1D, - 294 - 161: jis0212<<14 | 0x08<<7 | 0x03, - 295 - 161: jis0212<<14 | 0x08<<7 | 0x23, - 296 - 161: jis0212<<14 | 0x09<<7 | 0x26, - 297 - 161: jis0212<<14 | 0x0A<<7 | 0x26, - 298 - 161: jis0212<<14 | 0x09<<7 | 0x24, - 299 - 161: jis0212<<14 | 0x0A<<7 | 0x24, - 302 - 161: jis0212<<14 | 0x09<<7 | 0x25, - 303 - 161: jis0212<<14 | 0x0A<<7 | 0x25, - 304 - 161: jis0212<<14 | 0x09<<7 | 0x23, - 305 - 161: jis0212<<14 | 0x08<<7 | 0x24, - 306 - 161: jis0212<<14 | 0x08<<7 | 0x05, - 307 - 161: jis0212<<14 | 0x08<<7 | 0x25, - 308 - 161: jis0212<<14 | 0x09<<7 | 0x27, - 309 - 161: jis0212<<14 | 0x0A<<7 | 0x27, - 310 - 161: jis0212<<14 | 0x09<<7 | 0x28, - 311 - 161: jis0212<<14 | 0x0A<<7 | 0x28, - 312 - 161: jis0212<<14 | 0x08<<7 | 0x26, - 313 - 161: jis0212<<14 | 0x09<<7 | 0x29, - 314 - 161: jis0212<<14 | 0x0A<<7 | 0x29, - 315 - 161: jis0212<<14 | 0x09<<7 | 0x2B, - 316 - 161: jis0212<<14 | 0x0A<<7 | 0x2B, - 317 - 161: jis0212<<14 | 0x09<<7 | 0x2A, - 318 - 161: jis0212<<14 | 0x0A<<7 | 0x2A, - 319 - 161: jis0212<<14 | 0x08<<7 | 0x08, - 320 - 161: jis0212<<14 | 0x08<<7 | 0x28, - 321 - 161: jis0212<<14 | 0x08<<7 | 0x07, - 322 - 161: jis0212<<14 | 0x08<<7 | 0x27, - 323 - 161: jis0212<<14 | 0x09<<7 | 0x2C, - 324 - 161: jis0212<<14 | 0x0A<<7 | 0x2C, - 325 - 161: jis0212<<14 | 0x09<<7 | 0x2E, - 326 - 161: jis0212<<14 | 0x0A<<7 | 0x2E, - 327 - 161: jis0212<<14 | 0x09<<7 | 0x2D, - 328 - 161: jis0212<<14 | 0x0A<<7 | 0x2D, - 329 - 161: jis0212<<14 | 0x08<<7 | 0x29, - 330 - 161: jis0212<<14 | 0x08<<7 | 0x0A, - 331 - 161: jis0212<<14 | 0x08<<7 | 0x2A, - 332 - 161: jis0212<<14 | 0x09<<7 | 0x36, - 333 - 161: jis0212<<14 | 0x0A<<7 | 0x36, - 336 - 161: jis0212<<14 | 0x09<<7 | 0x35, - 337 - 161: jis0212<<14 | 0x0A<<7 | 0x35, - 338 - 161: jis0212<<14 | 0x08<<7 | 0x0C, - 339 - 161: jis0212<<14 | 0x08<<7 | 0x2C, - 340 - 161: jis0212<<14 | 0x09<<7 | 0x38, - 341 - 161: jis0212<<14 | 0x0A<<7 | 0x38, - 342 - 161: jis0212<<14 | 0x09<<7 | 0x3A, - 343 - 161: jis0212<<14 | 0x0A<<7 | 0x3A, - 344 - 161: jis0212<<14 | 0x09<<7 | 0x39, - 345 - 161: jis0212<<14 | 0x0A<<7 | 0x39, - 346 - 161: jis0212<<14 | 0x09<<7 | 0x3B, - 347 - 161: jis0212<<14 | 0x0A<<7 | 0x3B, - 348 - 161: jis0212<<14 | 0x09<<7 | 0x3C, - 349 - 161: jis0212<<14 | 0x0A<<7 | 0x3C, - 350 - 161: jis0212<<14 | 0x09<<7 | 0x3E, - 351 - 161: jis0212<<14 | 0x0A<<7 | 0x3E, - 352 - 161: jis0212<<14 | 0x09<<7 | 0x3D, - 353 - 161: jis0212<<14 | 0x0A<<7 | 0x3D, - 354 - 161: jis0212<<14 | 0x09<<7 | 0x40, - 355 - 161: jis0212<<14 | 0x0A<<7 | 0x40, - 356 - 161: jis0212<<14 | 0x09<<7 | 0x3F, - 357 - 161: jis0212<<14 | 0x0A<<7 | 0x3F, - 358 - 161: jis0212<<14 | 0x08<<7 | 0x0E, - 359 - 161: jis0212<<14 | 0x08<<7 | 0x2E, - 360 - 161: jis0212<<14 | 0x09<<7 | 0x4B, - 361 - 161: jis0212<<14 | 0x0A<<7 | 0x4B, - 362 - 161: jis0212<<14 | 0x09<<7 | 0x48, - 363 - 161: jis0212<<14 | 0x0A<<7 | 0x48, - 364 - 161: jis0212<<14 | 0x09<<7 | 0x45, - 365 - 161: jis0212<<14 | 0x0A<<7 | 0x45, - 366 - 161: jis0212<<14 | 0x09<<7 | 0x4A, - 367 - 161: jis0212<<14 | 0x0A<<7 | 0x4A, - 368 - 161: jis0212<<14 | 0x09<<7 | 0x47, - 369 - 161: jis0212<<14 | 0x0A<<7 | 0x47, - 370 - 161: jis0212<<14 | 0x09<<7 | 0x49, - 371 - 161: jis0212<<14 | 0x0A<<7 | 0x49, - 372 - 161: jis0212<<14 | 0x09<<7 | 0x50, - 373 - 161: jis0212<<14 | 0x0A<<7 | 0x50, - 374 - 161: jis0212<<14 | 0x09<<7 | 0x53, - 375 - 161: jis0212<<14 | 0x0A<<7 | 0x53, - 376 - 161: jis0212<<14 | 0x09<<7 | 0x52, - 377 - 161: jis0212<<14 | 0x09<<7 | 0x54, - 378 - 161: jis0212<<14 | 0x0A<<7 | 0x54, - 379 - 161: jis0212<<14 | 0x09<<7 | 0x56, - 380 - 161: jis0212<<14 | 0x0A<<7 | 0x56, - 381 - 161: jis0212<<14 | 0x09<<7 | 0x55, - 382 - 161: jis0212<<14 | 0x0A<<7 | 0x55, - 461 - 161: jis0212<<14 | 0x09<<7 | 0x05, - 462 - 161: jis0212<<14 | 0x0A<<7 | 0x05, - 463 - 161: jis0212<<14 | 0x09<<7 | 0x22, - 464 - 161: jis0212<<14 | 0x0A<<7 | 0x22, - 465 - 161: jis0212<<14 | 0x09<<7 | 0x34, - 466 - 161: jis0212<<14 | 0x0A<<7 | 0x34, - 467 - 161: jis0212<<14 | 0x09<<7 | 0x46, - 468 - 161: jis0212<<14 | 0x0A<<7 | 0x46, - 469 - 161: jis0212<<14 | 0x09<<7 | 0x4F, - 470 - 161: jis0212<<14 | 0x0A<<7 | 0x4F, - 471 - 161: jis0212<<14 | 0x09<<7 | 0x4C, - 472 - 161: jis0212<<14 | 0x0A<<7 | 0x4C, - 473 - 161: jis0212<<14 | 0x09<<7 | 0x4E, - 474 - 161: jis0212<<14 | 0x0A<<7 | 0x4E, - 475 - 161: jis0212<<14 | 0x09<<7 | 0x4D, - 476 - 161: jis0212<<14 | 0x0A<<7 | 0x4D, - 501 - 161: jis0212<<14 | 0x0A<<7 | 0x18, - 711 - 161: jis0212<<14 | 0x01<<7 | 0x0F, - 728 - 161: jis0212<<14 | 0x01<<7 | 0x0E, - 729 - 161: jis0212<<14 | 0x01<<7 | 0x11, - 730 - 161: jis0212<<14 | 0x01<<7 | 0x15, - 731 - 161: jis0212<<14 | 0x01<<7 | 0x14, - 733 - 161: jis0212<<14 | 0x01<<7 | 0x12, - 900 - 161: jis0212<<14 | 0x01<<7 | 0x17, - 901 - 161: jis0212<<14 | 0x01<<7 | 0x18, - 902 - 161: jis0212<<14 | 0x05<<7 | 0x40, - 904 - 161: jis0212<<14 | 0x05<<7 | 0x41, - 905 - 161: jis0212<<14 | 0x05<<7 | 0x42, - 906 - 161: jis0212<<14 | 0x05<<7 | 0x43, - 908 - 161: jis0212<<14 | 0x05<<7 | 0x46, - 910 - 161: jis0212<<14 | 0x05<<7 | 0x48, - 911 - 161: jis0212<<14 | 0x05<<7 | 0x4B, - 912 - 161: jis0212<<14 | 0x05<<7 | 0x55, - 913 - 161: jis0208<<14 | 0x05<<7 | 0x00, - 914 - 161: jis0208<<14 | 0x05<<7 | 0x01, - 915 - 161: jis0208<<14 | 0x05<<7 | 0x02, - 916 - 161: jis0208<<14 | 0x05<<7 | 0x03, - 917 - 161: jis0208<<14 | 0x05<<7 | 0x04, - 918 - 161: jis0208<<14 | 0x05<<7 | 0x05, - 919 - 161: jis0208<<14 | 0x05<<7 | 0x06, - 920 - 161: jis0208<<14 | 0x05<<7 | 0x07, - 921 - 161: jis0208<<14 | 0x05<<7 | 0x08, - 922 - 161: jis0208<<14 | 0x05<<7 | 0x09, - 923 - 161: jis0208<<14 | 0x05<<7 | 0x0A, - 924 - 161: jis0208<<14 | 0x05<<7 | 0x0B, - 925 - 161: jis0208<<14 | 0x05<<7 | 0x0C, - 926 - 161: jis0208<<14 | 0x05<<7 | 0x0D, - 927 - 161: jis0208<<14 | 0x05<<7 | 0x0E, - 928 - 161: jis0208<<14 | 0x05<<7 | 0x0F, - 929 - 161: jis0208<<14 | 0x05<<7 | 0x10, - 931 - 161: jis0208<<14 | 0x05<<7 | 0x11, - 932 - 161: jis0208<<14 | 0x05<<7 | 0x12, - 933 - 161: jis0208<<14 | 0x05<<7 | 0x13, - 934 - 161: jis0208<<14 | 0x05<<7 | 0x14, - 935 - 161: jis0208<<14 | 0x05<<7 | 0x15, - 936 - 161: jis0208<<14 | 0x05<<7 | 0x16, - 937 - 161: jis0208<<14 | 0x05<<7 | 0x17, - 938 - 161: jis0212<<14 | 0x05<<7 | 0x44, - 939 - 161: jis0212<<14 | 0x05<<7 | 0x49, - 940 - 161: jis0212<<14 | 0x05<<7 | 0x50, - 941 - 161: jis0212<<14 | 0x05<<7 | 0x51, - 942 - 161: jis0212<<14 | 0x05<<7 | 0x52, - 943 - 161: jis0212<<14 | 0x05<<7 | 0x53, - 944 - 161: jis0212<<14 | 0x05<<7 | 0x5A, - 945 - 161: jis0208<<14 | 0x05<<7 | 0x20, - 946 - 161: jis0208<<14 | 0x05<<7 | 0x21, - 947 - 161: jis0208<<14 | 0x05<<7 | 0x22, - 948 - 161: jis0208<<14 | 0x05<<7 | 0x23, - 949 - 161: jis0208<<14 | 0x05<<7 | 0x24, - 950 - 161: jis0208<<14 | 0x05<<7 | 0x25, - 951 - 161: jis0208<<14 | 0x05<<7 | 0x26, - 952 - 161: jis0208<<14 | 0x05<<7 | 0x27, - 953 - 161: jis0208<<14 | 0x05<<7 | 0x28, - 954 - 161: jis0208<<14 | 0x05<<7 | 0x29, - 955 - 161: jis0208<<14 | 0x05<<7 | 0x2A, - 956 - 161: jis0208<<14 | 0x05<<7 | 0x2B, - 957 - 161: jis0208<<14 | 0x05<<7 | 0x2C, - 958 - 161: jis0208<<14 | 0x05<<7 | 0x2D, - 959 - 161: jis0208<<14 | 0x05<<7 | 0x2E, - 960 - 161: jis0208<<14 | 0x05<<7 | 0x2F, - 961 - 161: jis0208<<14 | 0x05<<7 | 0x30, - 962 - 161: jis0212<<14 | 0x05<<7 | 0x57, - 963 - 161: jis0208<<14 | 0x05<<7 | 0x31, - 964 - 161: jis0208<<14 | 0x05<<7 | 0x32, - 965 - 161: jis0208<<14 | 0x05<<7 | 0x33, - 966 - 161: jis0208<<14 | 0x05<<7 | 0x34, - 967 - 161: jis0208<<14 | 0x05<<7 | 0x35, - 968 - 161: jis0208<<14 | 0x05<<7 | 0x36, - 969 - 161: jis0208<<14 | 0x05<<7 | 0x37, - 970 - 161: jis0212<<14 | 0x05<<7 | 0x54, - 971 - 161: jis0212<<14 | 0x05<<7 | 0x59, - 972 - 161: jis0212<<14 | 0x05<<7 | 0x56, - 973 - 161: jis0212<<14 | 0x05<<7 | 0x58, - 974 - 161: jis0212<<14 | 0x05<<7 | 0x5B, - 1025 - 161: jis0208<<14 | 0x06<<7 | 0x06, - 1026 - 161: jis0212<<14 | 0x06<<7 | 0x21, - 1027 - 161: jis0212<<14 | 0x06<<7 | 0x22, - 1028 - 161: jis0212<<14 | 0x06<<7 | 0x23, - 1029 - 161: jis0212<<14 | 0x06<<7 | 0x24, - 1030 - 161: jis0212<<14 | 0x06<<7 | 0x25, - 1031 - 161: jis0212<<14 | 0x06<<7 | 0x26, - 1032 - 161: jis0212<<14 | 0x06<<7 | 0x27, - 1033 - 161: jis0212<<14 | 0x06<<7 | 0x28, - 1034 - 161: jis0212<<14 | 0x06<<7 | 0x29, - 1035 - 161: jis0212<<14 | 0x06<<7 | 0x2A, - 1036 - 161: jis0212<<14 | 0x06<<7 | 0x2B, - 1038 - 161: jis0212<<14 | 0x06<<7 | 0x2C, - 1039 - 161: jis0212<<14 | 0x06<<7 | 0x2D, - 1040 - 161: jis0208<<14 | 0x06<<7 | 0x00, - 1041 - 161: jis0208<<14 | 0x06<<7 | 0x01, - 1042 - 161: jis0208<<14 | 0x06<<7 | 0x02, - 1043 - 161: jis0208<<14 | 0x06<<7 | 0x03, - 1044 - 161: jis0208<<14 | 0x06<<7 | 0x04, - 1045 - 161: jis0208<<14 | 0x06<<7 | 0x05, - 1046 - 161: jis0208<<14 | 0x06<<7 | 0x07, - 1047 - 161: jis0208<<14 | 0x06<<7 | 0x08, - 1048 - 161: jis0208<<14 | 0x06<<7 | 0x09, - 1049 - 161: jis0208<<14 | 0x06<<7 | 0x0A, - 1050 - 161: jis0208<<14 | 0x06<<7 | 0x0B, - 1051 - 161: jis0208<<14 | 0x06<<7 | 0x0C, - 1052 - 161: jis0208<<14 | 0x06<<7 | 0x0D, - 1053 - 161: jis0208<<14 | 0x06<<7 | 0x0E, - 1054 - 161: jis0208<<14 | 0x06<<7 | 0x0F, - 1055 - 161: jis0208<<14 | 0x06<<7 | 0x10, - 1056 - 161: jis0208<<14 | 0x06<<7 | 0x11, - 1057 - 161: jis0208<<14 | 0x06<<7 | 0x12, - 1058 - 161: jis0208<<14 | 0x06<<7 | 0x13, - 1059 - 161: jis0208<<14 | 0x06<<7 | 0x14, - 1060 - 161: jis0208<<14 | 0x06<<7 | 0x15, - 1061 - 161: jis0208<<14 | 0x06<<7 | 0x16, - 1062 - 161: jis0208<<14 | 0x06<<7 | 0x17, - 1063 - 161: jis0208<<14 | 0x06<<7 | 0x18, - 1064 - 161: jis0208<<14 | 0x06<<7 | 0x19, - 1065 - 161: jis0208<<14 | 0x06<<7 | 0x1A, - 1066 - 161: jis0208<<14 | 0x06<<7 | 0x1B, - 1067 - 161: jis0208<<14 | 0x06<<7 | 0x1C, - 1068 - 161: jis0208<<14 | 0x06<<7 | 0x1D, - 1069 - 161: jis0208<<14 | 0x06<<7 | 0x1E, - 1070 - 161: jis0208<<14 | 0x06<<7 | 0x1F, - 1071 - 161: jis0208<<14 | 0x06<<7 | 0x20, - 1072 - 161: jis0208<<14 | 0x06<<7 | 0x30, - 1073 - 161: jis0208<<14 | 0x06<<7 | 0x31, - 1074 - 161: jis0208<<14 | 0x06<<7 | 0x32, - 1075 - 161: jis0208<<14 | 0x06<<7 | 0x33, - 1076 - 161: jis0208<<14 | 0x06<<7 | 0x34, - 1077 - 161: jis0208<<14 | 0x06<<7 | 0x35, - 1078 - 161: jis0208<<14 | 0x06<<7 | 0x37, - 1079 - 161: jis0208<<14 | 0x06<<7 | 0x38, - 1080 - 161: jis0208<<14 | 0x06<<7 | 0x39, - 1081 - 161: jis0208<<14 | 0x06<<7 | 0x3A, - 1082 - 161: jis0208<<14 | 0x06<<7 | 0x3B, - 1083 - 161: jis0208<<14 | 0x06<<7 | 0x3C, - 1084 - 161: jis0208<<14 | 0x06<<7 | 0x3D, - 1085 - 161: jis0208<<14 | 0x06<<7 | 0x3E, - 1086 - 161: jis0208<<14 | 0x06<<7 | 0x3F, - 1087 - 161: jis0208<<14 | 0x06<<7 | 0x40, - 1088 - 161: jis0208<<14 | 0x06<<7 | 0x41, - 1089 - 161: jis0208<<14 | 0x06<<7 | 0x42, - 1090 - 161: jis0208<<14 | 0x06<<7 | 0x43, - 1091 - 161: jis0208<<14 | 0x06<<7 | 0x44, - 1092 - 161: jis0208<<14 | 0x06<<7 | 0x45, - 1093 - 161: jis0208<<14 | 0x06<<7 | 0x46, - 1094 - 161: jis0208<<14 | 0x06<<7 | 0x47, - 1095 - 161: jis0208<<14 | 0x06<<7 | 0x48, - 1096 - 161: jis0208<<14 | 0x06<<7 | 0x49, - 1097 - 161: jis0208<<14 | 0x06<<7 | 0x4A, - 1098 - 161: jis0208<<14 | 0x06<<7 | 0x4B, - 1099 - 161: jis0208<<14 | 0x06<<7 | 0x4C, - 1100 - 161: jis0208<<14 | 0x06<<7 | 0x4D, - 1101 - 161: jis0208<<14 | 0x06<<7 | 0x4E, - 1102 - 161: jis0208<<14 | 0x06<<7 | 0x4F, - 1103 - 161: jis0208<<14 | 0x06<<7 | 0x50, - 1105 - 161: jis0208<<14 | 0x06<<7 | 0x36, - 1106 - 161: jis0212<<14 | 0x06<<7 | 0x51, - 1107 - 161: jis0212<<14 | 0x06<<7 | 0x52, - 1108 - 161: jis0212<<14 | 0x06<<7 | 0x53, - 1109 - 161: jis0212<<14 | 0x06<<7 | 0x54, - 1110 - 161: jis0212<<14 | 0x06<<7 | 0x55, - 1111 - 161: jis0212<<14 | 0x06<<7 | 0x56, - 1112 - 161: jis0212<<14 | 0x06<<7 | 0x57, - 1113 - 161: jis0212<<14 | 0x06<<7 | 0x58, - 1114 - 161: jis0212<<14 | 0x06<<7 | 0x59, - 1115 - 161: jis0212<<14 | 0x06<<7 | 0x5A, - 1116 - 161: jis0212<<14 | 0x06<<7 | 0x5B, - 1118 - 161: jis0212<<14 | 0x06<<7 | 0x5C, - 1119 - 161: jis0212<<14 | 0x06<<7 | 0x5D, -} - -const encode4Low, encode4High = 63785, 64046 - -var encode4 = [...]uint16{ - 63785 - 63785: jis0208<<14 | 0x59<<7 | 0x25, - 63964 - 63785: jis0208<<14 | 0x5B<<7 | 0x2E, - 64014 - 63785: jis0208<<14 | 0x58<<7 | 0x33, - 64015 - 63785: jis0208<<14 | 0x58<<7 | 0x3E, - 64016 - 63785: jis0208<<14 | 0x58<<7 | 0x3F, - 64017 - 63785: jis0208<<14 | 0x58<<7 | 0x54, - 64018 - 63785: jis0208<<14 | 0x59<<7 | 0x1D, - 64019 - 63785: jis0208<<14 | 0x59<<7 | 0x2D, - 64020 - 63785: jis0208<<14 | 0x59<<7 | 0x2F, - 64021 - 63785: jis0208<<14 | 0x59<<7 | 0x5A, - 64022 - 63785: jis0208<<14 | 0x5A<<7 | 0x02, - 64023 - 63785: jis0208<<14 | 0x5A<<7 | 0x19, - 64024 - 63785: jis0208<<14 | 0x5A<<7 | 0x21, - 64025 - 63785: jis0208<<14 | 0x5A<<7 | 0x22, - 64026 - 63785: jis0208<<14 | 0x5A<<7 | 0x23, - 64027 - 63785: jis0208<<14 | 0x5A<<7 | 0x25, - 64028 - 63785: jis0208<<14 | 0x5A<<7 | 0x29, - 64029 - 63785: jis0208<<14 | 0x5A<<7 | 0x2C, - 64030 - 63785: jis0208<<14 | 0x5A<<7 | 0x35, - 64031 - 63785: jis0208<<14 | 0x5A<<7 | 0x40, - 64032 - 63785: jis0208<<14 | 0x5A<<7 | 0x42, - 64033 - 63785: jis0208<<14 | 0x5A<<7 | 0x43, - 64034 - 63785: jis0208<<14 | 0x5A<<7 | 0x4C, - 64035 - 63785: jis0208<<14 | 0x5A<<7 | 0x54, - 64036 - 63785: jis0208<<14 | 0x5A<<7 | 0x56, - 64037 - 63785: jis0208<<14 | 0x5A<<7 | 0x57, - 64038 - 63785: jis0208<<14 | 0x5A<<7 | 0x5A, - 64039 - 63785: jis0208<<14 | 0x5B<<7 | 0x18, - 64040 - 63785: jis0208<<14 | 0x5B<<7 | 0x1F, - 64041 - 63785: jis0208<<14 | 0x5B<<7 | 0x2F, - 64042 - 63785: jis0208<<14 | 0x5B<<7 | 0x3B, - 64043 - 63785: jis0208<<14 | 0x5B<<7 | 0x3C, - 64044 - 63785: jis0208<<14 | 0x5B<<7 | 0x3E, - 64045 - 63785: jis0208<<14 | 0x5B<<7 | 0x4B, -} - -const encode5Low, encode5High = 65281, 65510 - -var encode5 = [...]uint16{ - 65281 - 65281: jis0208<<14 | 0x00<<7 | 0x09, - 65282 - 65281: jis0208<<14 | 0x5B<<7 | 0x5D, - 65283 - 65281: jis0208<<14 | 0x00<<7 | 0x53, - 65284 - 65281: jis0208<<14 | 0x00<<7 | 0x4F, - 65285 - 65281: jis0208<<14 | 0x00<<7 | 0x52, - 65286 - 65281: jis0208<<14 | 0x00<<7 | 0x54, - 65287 - 65281: jis0208<<14 | 0x5B<<7 | 0x5C, - 65288 - 65281: jis0208<<14 | 0x00<<7 | 0x29, - 65289 - 65281: jis0208<<14 | 0x00<<7 | 0x2A, - 65290 - 65281: jis0208<<14 | 0x00<<7 | 0x55, - 65291 - 65281: jis0208<<14 | 0x00<<7 | 0x3B, - 65292 - 65281: jis0208<<14 | 0x00<<7 | 0x03, - 65293 - 65281: jis0208<<14 | 0x00<<7 | 0x3C, - 65294 - 65281: jis0208<<14 | 0x00<<7 | 0x04, - 65295 - 65281: jis0208<<14 | 0x00<<7 | 0x1E, - 65296 - 65281: jis0208<<14 | 0x02<<7 | 0x0F, - 65297 - 65281: jis0208<<14 | 0x02<<7 | 0x10, - 65298 - 65281: jis0208<<14 | 0x02<<7 | 0x11, - 65299 - 65281: jis0208<<14 | 0x02<<7 | 0x12, - 65300 - 65281: jis0208<<14 | 0x02<<7 | 0x13, - 65301 - 65281: jis0208<<14 | 0x02<<7 | 0x14, - 65302 - 65281: jis0208<<14 | 0x02<<7 | 0x15, - 65303 - 65281: jis0208<<14 | 0x02<<7 | 0x16, - 65304 - 65281: jis0208<<14 | 0x02<<7 | 0x17, - 65305 - 65281: jis0208<<14 | 0x02<<7 | 0x18, - 65306 - 65281: jis0208<<14 | 0x00<<7 | 0x06, - 65307 - 65281: jis0208<<14 | 0x00<<7 | 0x07, - 65308 - 65281: jis0208<<14 | 0x00<<7 | 0x42, - 65309 - 65281: jis0208<<14 | 0x00<<7 | 0x40, - 65310 - 65281: jis0208<<14 | 0x00<<7 | 0x43, - 65311 - 65281: jis0208<<14 | 0x00<<7 | 0x08, - 65312 - 65281: jis0208<<14 | 0x00<<7 | 0x56, - 65313 - 65281: jis0208<<14 | 0x02<<7 | 0x20, - 65314 - 65281: jis0208<<14 | 0x02<<7 | 0x21, - 65315 - 65281: jis0208<<14 | 0x02<<7 | 0x22, - 65316 - 65281: jis0208<<14 | 0x02<<7 | 0x23, - 65317 - 65281: jis0208<<14 | 0x02<<7 | 0x24, - 65318 - 65281: jis0208<<14 | 0x02<<7 | 0x25, - 65319 - 65281: jis0208<<14 | 0x02<<7 | 0x26, - 65320 - 65281: jis0208<<14 | 0x02<<7 | 0x27, - 65321 - 65281: jis0208<<14 | 0x02<<7 | 0x28, - 65322 - 65281: jis0208<<14 | 0x02<<7 | 0x29, - 65323 - 65281: jis0208<<14 | 0x02<<7 | 0x2A, - 65324 - 65281: jis0208<<14 | 0x02<<7 | 0x2B, - 65325 - 65281: jis0208<<14 | 0x02<<7 | 0x2C, - 65326 - 65281: jis0208<<14 | 0x02<<7 | 0x2D, - 65327 - 65281: jis0208<<14 | 0x02<<7 | 0x2E, - 65328 - 65281: jis0208<<14 | 0x02<<7 | 0x2F, - 65329 - 65281: jis0208<<14 | 0x02<<7 | 0x30, - 65330 - 65281: jis0208<<14 | 0x02<<7 | 0x31, - 65331 - 65281: jis0208<<14 | 0x02<<7 | 0x32, - 65332 - 65281: jis0208<<14 | 0x02<<7 | 0x33, - 65333 - 65281: jis0208<<14 | 0x02<<7 | 0x34, - 65334 - 65281: jis0208<<14 | 0x02<<7 | 0x35, - 65335 - 65281: jis0208<<14 | 0x02<<7 | 0x36, - 65336 - 65281: jis0208<<14 | 0x02<<7 | 0x37, - 65337 - 65281: jis0208<<14 | 0x02<<7 | 0x38, - 65338 - 65281: jis0208<<14 | 0x02<<7 | 0x39, - 65339 - 65281: jis0208<<14 | 0x00<<7 | 0x2D, - 65340 - 65281: jis0208<<14 | 0x00<<7 | 0x1F, - 65341 - 65281: jis0208<<14 | 0x00<<7 | 0x2E, - 65342 - 65281: jis0208<<14 | 0x00<<7 | 0x0F, - 65343 - 65281: jis0208<<14 | 0x00<<7 | 0x11, - 65344 - 65281: jis0208<<14 | 0x00<<7 | 0x0D, - 65345 - 65281: jis0208<<14 | 0x02<<7 | 0x40, - 65346 - 65281: jis0208<<14 | 0x02<<7 | 0x41, - 65347 - 65281: jis0208<<14 | 0x02<<7 | 0x42, - 65348 - 65281: jis0208<<14 | 0x02<<7 | 0x43, - 65349 - 65281: jis0208<<14 | 0x02<<7 | 0x44, - 65350 - 65281: jis0208<<14 | 0x02<<7 | 0x45, - 65351 - 65281: jis0208<<14 | 0x02<<7 | 0x46, - 65352 - 65281: jis0208<<14 | 0x02<<7 | 0x47, - 65353 - 65281: jis0208<<14 | 0x02<<7 | 0x48, - 65354 - 65281: jis0208<<14 | 0x02<<7 | 0x49, - 65355 - 65281: jis0208<<14 | 0x02<<7 | 0x4A, - 65356 - 65281: jis0208<<14 | 0x02<<7 | 0x4B, - 65357 - 65281: jis0208<<14 | 0x02<<7 | 0x4C, - 65358 - 65281: jis0208<<14 | 0x02<<7 | 0x4D, - 65359 - 65281: jis0208<<14 | 0x02<<7 | 0x4E, - 65360 - 65281: jis0208<<14 | 0x02<<7 | 0x4F, - 65361 - 65281: jis0208<<14 | 0x02<<7 | 0x50, - 65362 - 65281: jis0208<<14 | 0x02<<7 | 0x51, - 65363 - 65281: jis0208<<14 | 0x02<<7 | 0x52, - 65364 - 65281: jis0208<<14 | 0x02<<7 | 0x53, - 65365 - 65281: jis0208<<14 | 0x02<<7 | 0x54, - 65366 - 65281: jis0208<<14 | 0x02<<7 | 0x55, - 65367 - 65281: jis0208<<14 | 0x02<<7 | 0x56, - 65368 - 65281: jis0208<<14 | 0x02<<7 | 0x57, - 65369 - 65281: jis0208<<14 | 0x02<<7 | 0x58, - 65370 - 65281: jis0208<<14 | 0x02<<7 | 0x59, - 65371 - 65281: jis0208<<14 | 0x00<<7 | 0x2F, - 65372 - 65281: jis0208<<14 | 0x00<<7 | 0x22, - 65373 - 65281: jis0208<<14 | 0x00<<7 | 0x30, - 65374 - 65281: jis0208<<14 | 0x00<<7 | 0x20, - 65504 - 65281: jis0208<<14 | 0x00<<7 | 0x50, - 65505 - 65281: jis0208<<14 | 0x00<<7 | 0x51, - 65506 - 65281: jis0208<<14 | 0x01<<7 | 0x2B, - 65507 - 65281: jis0208<<14 | 0x00<<7 | 0x10, - 65508 - 65281: jis0208<<14 | 0x5B<<7 | 0x5B, - 65509 - 65281: jis0208<<14 | 0x00<<7 | 0x4E, -} diff --git a/vendor/golang.org/x/text/encoding/korean/euckr.go b/vendor/golang.org/x/text/encoding/korean/euckr.go deleted file mode 100644 index 034337f..0000000 --- a/vendor/golang.org/x/text/encoding/korean/euckr.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package korean - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// All is a list of all defined encodings in this package. -var All = []encoding.Encoding{EUCKR} - -// EUCKR is the EUC-KR encoding, also known as Code Page 949. -var EUCKR encoding.Encoding = &eucKR - -var eucKR = internal.Encoding{ - &internal.SimpleEncoding{eucKRDecoder{}, eucKREncoder{}}, - "EUC-KR", - identifier.EUCKR, -} - -type eucKRDecoder struct{ transform.NopResetter } - -func (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - case 0x81 <= c0 && c0 < 0xff: - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - break - } - c1 := src[nSrc+1] - size = 2 - if c0 < 0xc7 { - r = 178 * rune(c0-0x81) - switch { - case 0x41 <= c1 && c1 < 0x5b: - r += rune(c1) - (0x41 - 0*26) - case 0x61 <= c1 && c1 < 0x7b: - r += rune(c1) - (0x61 - 1*26) - case 0x81 <= c1 && c1 < 0xff: - r += rune(c1) - (0x81 - 2*26) - default: - goto decError - } - } else if 0xa1 <= c1 && c1 < 0xff { - r = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1) - } else { - goto decError - } - if int(r) < len(decode) { - r = rune(decode[r]) - if r != 0 { - break - } - } - decError: - r = utf8.RuneError - if c1 < utf8.RuneSelf { - size = 1 - } - - default: - r, size = utf8.RuneError, 1 - break - } - - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type eucKREncoder struct{ transform.NopResetter } - -func (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r != 0 { - goto write2 - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r != 0 { - goto write2 - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r != 0 { - goto write2 - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r != 0 { - goto write2 - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r != 0 { - goto write2 - } - case encode5Low <= r && r < encode5High: - if r = rune(encode5[r-encode5Low]); r != 0 { - goto write2 - } - case encode6Low <= r && r < encode6High: - if r = rune(encode6[r-encode6Low]); r != 0 { - goto write2 - } - } - err = internal.ErrASCIIReplacement - break - } - - write2: - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = uint8(r >> 8) - dst[nDst+1] = uint8(r) - nDst += 2 - continue - } - return nDst, nSrc, err -} - -func init() { - // Check that the hard-coded encode switch covers all tables. - if numEncodeTables != 7 { - panic("bad numEncodeTables") - } -} diff --git a/vendor/golang.org/x/text/encoding/korean/tables.go b/vendor/golang.org/x/text/encoding/korean/tables.go deleted file mode 100644 index 0480e85..0000000 --- a/vendor/golang.org/x/text/encoding/korean/tables.go +++ /dev/null @@ -1,34152 +0,0 @@ -// generated by go run maketables.go; DO NOT EDIT - -// Package korean provides Korean encodings such as EUC-KR. -package korean // import "golang.org/x/text/encoding/korean" - -// decode is the decoding table from EUC-KR code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-euc-kr.txt -var decode = [...]uint16{ - 0: 0xAC02, - 1: 0xAC03, - 2: 0xAC05, - 3: 0xAC06, - 4: 0xAC0B, - 5: 0xAC0C, - 6: 0xAC0D, - 7: 0xAC0E, - 8: 0xAC0F, - 9: 0xAC18, - 10: 0xAC1E, - 11: 0xAC1F, - 12: 0xAC21, - 13: 0xAC22, - 14: 0xAC23, - 15: 0xAC25, - 16: 0xAC26, - 17: 0xAC27, - 18: 0xAC28, - 19: 0xAC29, - 20: 0xAC2A, - 21: 0xAC2B, - 22: 0xAC2E, - 23: 0xAC32, - 24: 0xAC33, - 25: 0xAC34, - 26: 0xAC35, - 27: 0xAC36, - 28: 0xAC37, - 29: 0xAC3A, - 30: 0xAC3B, - 31: 0xAC3D, - 32: 0xAC3E, - 33: 0xAC3F, - 34: 0xAC41, - 35: 0xAC42, - 36: 0xAC43, - 37: 0xAC44, - 38: 0xAC45, - 39: 0xAC46, - 40: 0xAC47, - 41: 0xAC48, - 42: 0xAC49, - 43: 0xAC4A, - 44: 0xAC4C, - 45: 0xAC4E, - 46: 0xAC4F, - 47: 0xAC50, - 48: 0xAC51, - 49: 0xAC52, - 50: 0xAC53, - 51: 0xAC55, - 52: 0xAC56, - 53: 0xAC57, - 54: 0xAC59, - 55: 0xAC5A, - 56: 0xAC5B, - 57: 0xAC5D, - 58: 0xAC5E, - 59: 0xAC5F, - 60: 0xAC60, - 61: 0xAC61, - 62: 0xAC62, - 63: 0xAC63, - 64: 0xAC64, - 65: 0xAC65, - 66: 0xAC66, - 67: 0xAC67, - 68: 0xAC68, - 69: 0xAC69, - 70: 0xAC6A, - 71: 0xAC6B, - 72: 0xAC6C, - 73: 0xAC6D, - 74: 0xAC6E, - 75: 0xAC6F, - 76: 0xAC72, - 77: 0xAC73, - 78: 0xAC75, - 79: 0xAC76, - 80: 0xAC79, - 81: 0xAC7B, - 82: 0xAC7C, - 83: 0xAC7D, - 84: 0xAC7E, - 85: 0xAC7F, - 86: 0xAC82, - 87: 0xAC87, - 88: 0xAC88, - 89: 0xAC8D, - 90: 0xAC8E, - 91: 0xAC8F, - 92: 0xAC91, - 93: 0xAC92, - 94: 0xAC93, - 95: 0xAC95, - 96: 0xAC96, - 97: 0xAC97, - 98: 0xAC98, - 99: 0xAC99, - 100: 0xAC9A, - 101: 0xAC9B, - 102: 0xAC9E, - 103: 0xACA2, - 104: 0xACA3, - 105: 0xACA4, - 106: 0xACA5, - 107: 0xACA6, - 108: 0xACA7, - 109: 0xACAB, - 110: 0xACAD, - 111: 0xACAE, - 112: 0xACB1, - 113: 0xACB2, - 114: 0xACB3, - 115: 0xACB4, - 116: 0xACB5, - 117: 0xACB6, - 118: 0xACB7, - 119: 0xACBA, - 120: 0xACBE, - 121: 0xACBF, - 122: 0xACC0, - 123: 0xACC2, - 124: 0xACC3, - 125: 0xACC5, - 126: 0xACC6, - 127: 0xACC7, - 128: 0xACC9, - 129: 0xACCA, - 130: 0xACCB, - 131: 0xACCD, - 132: 0xACCE, - 133: 0xACCF, - 134: 0xACD0, - 135: 0xACD1, - 136: 0xACD2, - 137: 0xACD3, - 138: 0xACD4, - 139: 0xACD6, - 140: 0xACD8, - 141: 0xACD9, - 142: 0xACDA, - 143: 0xACDB, - 144: 0xACDC, - 145: 0xACDD, - 146: 0xACDE, - 147: 0xACDF, - 148: 0xACE2, - 149: 0xACE3, - 150: 0xACE5, - 151: 0xACE6, - 152: 0xACE9, - 153: 0xACEB, - 154: 0xACED, - 155: 0xACEE, - 156: 0xACF2, - 157: 0xACF4, - 158: 0xACF7, - 159: 0xACF8, - 160: 0xACF9, - 161: 0xACFA, - 162: 0xACFB, - 163: 0xACFE, - 164: 0xACFF, - 165: 0xAD01, - 166: 0xAD02, - 167: 0xAD03, - 168: 0xAD05, - 169: 0xAD07, - 170: 0xAD08, - 171: 0xAD09, - 172: 0xAD0A, - 173: 0xAD0B, - 174: 0xAD0E, - 175: 0xAD10, - 176: 0xAD12, - 177: 0xAD13, - 178: 0xAD14, - 179: 0xAD15, - 180: 0xAD16, - 181: 0xAD17, - 182: 0xAD19, - 183: 0xAD1A, - 184: 0xAD1B, - 185: 0xAD1D, - 186: 0xAD1E, - 187: 0xAD1F, - 188: 0xAD21, - 189: 0xAD22, - 190: 0xAD23, - 191: 0xAD24, - 192: 0xAD25, - 193: 0xAD26, - 194: 0xAD27, - 195: 0xAD28, - 196: 0xAD2A, - 197: 0xAD2B, - 198: 0xAD2E, - 199: 0xAD2F, - 200: 0xAD30, - 201: 0xAD31, - 202: 0xAD32, - 203: 0xAD33, - 204: 0xAD36, - 205: 0xAD37, - 206: 0xAD39, - 207: 0xAD3A, - 208: 0xAD3B, - 209: 0xAD3D, - 210: 0xAD3E, - 211: 0xAD3F, - 212: 0xAD40, - 213: 0xAD41, - 214: 0xAD42, - 215: 0xAD43, - 216: 0xAD46, - 217: 0xAD48, - 218: 0xAD4A, - 219: 0xAD4B, - 220: 0xAD4C, - 221: 0xAD4D, - 222: 0xAD4E, - 223: 0xAD4F, - 224: 0xAD51, - 225: 0xAD52, - 226: 0xAD53, - 227: 0xAD55, - 228: 0xAD56, - 229: 0xAD57, - 230: 0xAD59, - 231: 0xAD5A, - 232: 0xAD5B, - 233: 0xAD5C, - 234: 0xAD5D, - 235: 0xAD5E, - 236: 0xAD5F, - 237: 0xAD60, - 238: 0xAD62, - 239: 0xAD64, - 240: 0xAD65, - 241: 0xAD66, - 242: 0xAD67, - 243: 0xAD68, - 244: 0xAD69, - 245: 0xAD6A, - 246: 0xAD6B, - 247: 0xAD6E, - 248: 0xAD6F, - 249: 0xAD71, - 250: 0xAD72, - 251: 0xAD77, - 252: 0xAD78, - 253: 0xAD79, - 254: 0xAD7A, - 255: 0xAD7E, - 256: 0xAD80, - 257: 0xAD83, - 258: 0xAD84, - 259: 0xAD85, - 260: 0xAD86, - 261: 0xAD87, - 262: 0xAD8A, - 263: 0xAD8B, - 264: 0xAD8D, - 265: 0xAD8E, - 266: 0xAD8F, - 267: 0xAD91, - 268: 0xAD92, - 269: 0xAD93, - 270: 0xAD94, - 271: 0xAD95, - 272: 0xAD96, - 273: 0xAD97, - 274: 0xAD98, - 275: 0xAD99, - 276: 0xAD9A, - 277: 0xAD9B, - 278: 0xAD9E, - 279: 0xAD9F, - 280: 0xADA0, - 281: 0xADA1, - 282: 0xADA2, - 283: 0xADA3, - 284: 0xADA5, - 285: 0xADA6, - 286: 0xADA7, - 287: 0xADA8, - 288: 0xADA9, - 289: 0xADAA, - 290: 0xADAB, - 291: 0xADAC, - 292: 0xADAD, - 293: 0xADAE, - 294: 0xADAF, - 295: 0xADB0, - 296: 0xADB1, - 297: 0xADB2, - 298: 0xADB3, - 299: 0xADB4, - 300: 0xADB5, - 301: 0xADB6, - 302: 0xADB8, - 303: 0xADB9, - 304: 0xADBA, - 305: 0xADBB, - 306: 0xADBC, - 307: 0xADBD, - 308: 0xADBE, - 309: 0xADBF, - 310: 0xADC2, - 311: 0xADC3, - 312: 0xADC5, - 313: 0xADC6, - 314: 0xADC7, - 315: 0xADC9, - 316: 0xADCA, - 317: 0xADCB, - 318: 0xADCC, - 319: 0xADCD, - 320: 0xADCE, - 321: 0xADCF, - 322: 0xADD2, - 323: 0xADD4, - 324: 0xADD5, - 325: 0xADD6, - 326: 0xADD7, - 327: 0xADD8, - 328: 0xADD9, - 329: 0xADDA, - 330: 0xADDB, - 331: 0xADDD, - 332: 0xADDE, - 333: 0xADDF, - 334: 0xADE1, - 335: 0xADE2, - 336: 0xADE3, - 337: 0xADE5, - 338: 0xADE6, - 339: 0xADE7, - 340: 0xADE8, - 341: 0xADE9, - 342: 0xADEA, - 343: 0xADEB, - 344: 0xADEC, - 345: 0xADED, - 346: 0xADEE, - 347: 0xADEF, - 348: 0xADF0, - 349: 0xADF1, - 350: 0xADF2, - 351: 0xADF3, - 352: 0xADF4, - 353: 0xADF5, - 354: 0xADF6, - 355: 0xADF7, - 356: 0xADFA, - 357: 0xADFB, - 358: 0xADFD, - 359: 0xADFE, - 360: 0xAE02, - 361: 0xAE03, - 362: 0xAE04, - 363: 0xAE05, - 364: 0xAE06, - 365: 0xAE07, - 366: 0xAE0A, - 367: 0xAE0C, - 368: 0xAE0E, - 369: 0xAE0F, - 370: 0xAE10, - 371: 0xAE11, - 372: 0xAE12, - 373: 0xAE13, - 374: 0xAE15, - 375: 0xAE16, - 376: 0xAE17, - 377: 0xAE18, - 378: 0xAE19, - 379: 0xAE1A, - 380: 0xAE1B, - 381: 0xAE1C, - 382: 0xAE1D, - 383: 0xAE1E, - 384: 0xAE1F, - 385: 0xAE20, - 386: 0xAE21, - 387: 0xAE22, - 388: 0xAE23, - 389: 0xAE24, - 390: 0xAE25, - 391: 0xAE26, - 392: 0xAE27, - 393: 0xAE28, - 394: 0xAE29, - 395: 0xAE2A, - 396: 0xAE2B, - 397: 0xAE2C, - 398: 0xAE2D, - 399: 0xAE2E, - 400: 0xAE2F, - 401: 0xAE32, - 402: 0xAE33, - 403: 0xAE35, - 404: 0xAE36, - 405: 0xAE39, - 406: 0xAE3B, - 407: 0xAE3C, - 408: 0xAE3D, - 409: 0xAE3E, - 410: 0xAE3F, - 411: 0xAE42, - 412: 0xAE44, - 413: 0xAE47, - 414: 0xAE48, - 415: 0xAE49, - 416: 0xAE4B, - 417: 0xAE4F, - 418: 0xAE51, - 419: 0xAE52, - 420: 0xAE53, - 421: 0xAE55, - 422: 0xAE57, - 423: 0xAE58, - 424: 0xAE59, - 425: 0xAE5A, - 426: 0xAE5B, - 427: 0xAE5E, - 428: 0xAE62, - 429: 0xAE63, - 430: 0xAE64, - 431: 0xAE66, - 432: 0xAE67, - 433: 0xAE6A, - 434: 0xAE6B, - 435: 0xAE6D, - 436: 0xAE6E, - 437: 0xAE6F, - 438: 0xAE71, - 439: 0xAE72, - 440: 0xAE73, - 441: 0xAE74, - 442: 0xAE75, - 443: 0xAE76, - 444: 0xAE77, - 445: 0xAE7A, - 446: 0xAE7E, - 447: 0xAE7F, - 448: 0xAE80, - 449: 0xAE81, - 450: 0xAE82, - 451: 0xAE83, - 452: 0xAE86, - 453: 0xAE87, - 454: 0xAE88, - 455: 0xAE89, - 456: 0xAE8A, - 457: 0xAE8B, - 458: 0xAE8D, - 459: 0xAE8E, - 460: 0xAE8F, - 461: 0xAE90, - 462: 0xAE91, - 463: 0xAE92, - 464: 0xAE93, - 465: 0xAE94, - 466: 0xAE95, - 467: 0xAE96, - 468: 0xAE97, - 469: 0xAE98, - 470: 0xAE99, - 471: 0xAE9A, - 472: 0xAE9B, - 473: 0xAE9C, - 474: 0xAE9D, - 475: 0xAE9E, - 476: 0xAE9F, - 477: 0xAEA0, - 478: 0xAEA1, - 479: 0xAEA2, - 480: 0xAEA3, - 481: 0xAEA4, - 482: 0xAEA5, - 483: 0xAEA6, - 484: 0xAEA7, - 485: 0xAEA8, - 486: 0xAEA9, - 487: 0xAEAA, - 488: 0xAEAB, - 489: 0xAEAC, - 490: 0xAEAD, - 491: 0xAEAE, - 492: 0xAEAF, - 493: 0xAEB0, - 494: 0xAEB1, - 495: 0xAEB2, - 496: 0xAEB3, - 497: 0xAEB4, - 498: 0xAEB5, - 499: 0xAEB6, - 500: 0xAEB7, - 501: 0xAEB8, - 502: 0xAEB9, - 503: 0xAEBA, - 504: 0xAEBB, - 505: 0xAEBF, - 506: 0xAEC1, - 507: 0xAEC2, - 508: 0xAEC3, - 509: 0xAEC5, - 510: 0xAEC6, - 511: 0xAEC7, - 512: 0xAEC8, - 513: 0xAEC9, - 514: 0xAECA, - 515: 0xAECB, - 516: 0xAECE, - 517: 0xAED2, - 518: 0xAED3, - 519: 0xAED4, - 520: 0xAED5, - 521: 0xAED6, - 522: 0xAED7, - 523: 0xAEDA, - 524: 0xAEDB, - 525: 0xAEDD, - 526: 0xAEDE, - 527: 0xAEDF, - 528: 0xAEE0, - 529: 0xAEE1, - 530: 0xAEE2, - 531: 0xAEE3, - 532: 0xAEE4, - 533: 0xAEE5, - 534: 0xAEE6, - 535: 0xAEE7, - 536: 0xAEE9, - 537: 0xAEEA, - 538: 0xAEEC, - 539: 0xAEEE, - 540: 0xAEEF, - 541: 0xAEF0, - 542: 0xAEF1, - 543: 0xAEF2, - 544: 0xAEF3, - 545: 0xAEF5, - 546: 0xAEF6, - 547: 0xAEF7, - 548: 0xAEF9, - 549: 0xAEFA, - 550: 0xAEFB, - 551: 0xAEFD, - 552: 0xAEFE, - 553: 0xAEFF, - 554: 0xAF00, - 555: 0xAF01, - 556: 0xAF02, - 557: 0xAF03, - 558: 0xAF04, - 559: 0xAF05, - 560: 0xAF06, - 561: 0xAF09, - 562: 0xAF0A, - 563: 0xAF0B, - 564: 0xAF0C, - 565: 0xAF0E, - 566: 0xAF0F, - 567: 0xAF11, - 568: 0xAF12, - 569: 0xAF13, - 570: 0xAF14, - 571: 0xAF15, - 572: 0xAF16, - 573: 0xAF17, - 574: 0xAF18, - 575: 0xAF19, - 576: 0xAF1A, - 577: 0xAF1B, - 578: 0xAF1C, - 579: 0xAF1D, - 580: 0xAF1E, - 581: 0xAF1F, - 582: 0xAF20, - 583: 0xAF21, - 584: 0xAF22, - 585: 0xAF23, - 586: 0xAF24, - 587: 0xAF25, - 588: 0xAF26, - 589: 0xAF27, - 590: 0xAF28, - 591: 0xAF29, - 592: 0xAF2A, - 593: 0xAF2B, - 594: 0xAF2E, - 595: 0xAF2F, - 596: 0xAF31, - 597: 0xAF33, - 598: 0xAF35, - 599: 0xAF36, - 600: 0xAF37, - 601: 0xAF38, - 602: 0xAF39, - 603: 0xAF3A, - 604: 0xAF3B, - 605: 0xAF3E, - 606: 0xAF40, - 607: 0xAF44, - 608: 0xAF45, - 609: 0xAF46, - 610: 0xAF47, - 611: 0xAF4A, - 612: 0xAF4B, - 613: 0xAF4C, - 614: 0xAF4D, - 615: 0xAF4E, - 616: 0xAF4F, - 617: 0xAF51, - 618: 0xAF52, - 619: 0xAF53, - 620: 0xAF54, - 621: 0xAF55, - 622: 0xAF56, - 623: 0xAF57, - 624: 0xAF58, - 625: 0xAF59, - 626: 0xAF5A, - 627: 0xAF5B, - 628: 0xAF5E, - 629: 0xAF5F, - 630: 0xAF60, - 631: 0xAF61, - 632: 0xAF62, - 633: 0xAF63, - 634: 0xAF66, - 635: 0xAF67, - 636: 0xAF68, - 637: 0xAF69, - 638: 0xAF6A, - 639: 0xAF6B, - 640: 0xAF6C, - 641: 0xAF6D, - 642: 0xAF6E, - 643: 0xAF6F, - 644: 0xAF70, - 645: 0xAF71, - 646: 0xAF72, - 647: 0xAF73, - 648: 0xAF74, - 649: 0xAF75, - 650: 0xAF76, - 651: 0xAF77, - 652: 0xAF78, - 653: 0xAF7A, - 654: 0xAF7B, - 655: 0xAF7C, - 656: 0xAF7D, - 657: 0xAF7E, - 658: 0xAF7F, - 659: 0xAF81, - 660: 0xAF82, - 661: 0xAF83, - 662: 0xAF85, - 663: 0xAF86, - 664: 0xAF87, - 665: 0xAF89, - 666: 0xAF8A, - 667: 0xAF8B, - 668: 0xAF8C, - 669: 0xAF8D, - 670: 0xAF8E, - 671: 0xAF8F, - 672: 0xAF92, - 673: 0xAF93, - 674: 0xAF94, - 675: 0xAF96, - 676: 0xAF97, - 677: 0xAF98, - 678: 0xAF99, - 679: 0xAF9A, - 680: 0xAF9B, - 681: 0xAF9D, - 682: 0xAF9E, - 683: 0xAF9F, - 684: 0xAFA0, - 685: 0xAFA1, - 686: 0xAFA2, - 687: 0xAFA3, - 688: 0xAFA4, - 689: 0xAFA5, - 690: 0xAFA6, - 691: 0xAFA7, - 692: 0xAFA8, - 693: 0xAFA9, - 694: 0xAFAA, - 695: 0xAFAB, - 696: 0xAFAC, - 697: 0xAFAD, - 698: 0xAFAE, - 699: 0xAFAF, - 700: 0xAFB0, - 701: 0xAFB1, - 702: 0xAFB2, - 703: 0xAFB3, - 704: 0xAFB4, - 705: 0xAFB5, - 706: 0xAFB6, - 707: 0xAFB7, - 708: 0xAFBA, - 709: 0xAFBB, - 710: 0xAFBD, - 711: 0xAFBE, - 712: 0xAFBF, - 713: 0xAFC1, - 714: 0xAFC2, - 715: 0xAFC3, - 716: 0xAFC4, - 717: 0xAFC5, - 718: 0xAFC6, - 719: 0xAFCA, - 720: 0xAFCC, - 721: 0xAFCF, - 722: 0xAFD0, - 723: 0xAFD1, - 724: 0xAFD2, - 725: 0xAFD3, - 726: 0xAFD5, - 727: 0xAFD6, - 728: 0xAFD7, - 729: 0xAFD8, - 730: 0xAFD9, - 731: 0xAFDA, - 732: 0xAFDB, - 733: 0xAFDD, - 734: 0xAFDE, - 735: 0xAFDF, - 736: 0xAFE0, - 737: 0xAFE1, - 738: 0xAFE2, - 739: 0xAFE3, - 740: 0xAFE4, - 741: 0xAFE5, - 742: 0xAFE6, - 743: 0xAFE7, - 744: 0xAFEA, - 745: 0xAFEB, - 746: 0xAFEC, - 747: 0xAFED, - 748: 0xAFEE, - 749: 0xAFEF, - 750: 0xAFF2, - 751: 0xAFF3, - 752: 0xAFF5, - 753: 0xAFF6, - 754: 0xAFF7, - 755: 0xAFF9, - 756: 0xAFFA, - 757: 0xAFFB, - 758: 0xAFFC, - 759: 0xAFFD, - 760: 0xAFFE, - 761: 0xAFFF, - 762: 0xB002, - 763: 0xB003, - 764: 0xB005, - 765: 0xB006, - 766: 0xB007, - 767: 0xB008, - 768: 0xB009, - 769: 0xB00A, - 770: 0xB00B, - 771: 0xB00D, - 772: 0xB00E, - 773: 0xB00F, - 774: 0xB011, - 775: 0xB012, - 776: 0xB013, - 777: 0xB015, - 778: 0xB016, - 779: 0xB017, - 780: 0xB018, - 781: 0xB019, - 782: 0xB01A, - 783: 0xB01B, - 784: 0xB01E, - 785: 0xB01F, - 786: 0xB020, - 787: 0xB021, - 788: 0xB022, - 789: 0xB023, - 790: 0xB024, - 791: 0xB025, - 792: 0xB026, - 793: 0xB027, - 794: 0xB029, - 795: 0xB02A, - 796: 0xB02B, - 797: 0xB02C, - 798: 0xB02D, - 799: 0xB02E, - 800: 0xB02F, - 801: 0xB030, - 802: 0xB031, - 803: 0xB032, - 804: 0xB033, - 805: 0xB034, - 806: 0xB035, - 807: 0xB036, - 808: 0xB037, - 809: 0xB038, - 810: 0xB039, - 811: 0xB03A, - 812: 0xB03B, - 813: 0xB03C, - 814: 0xB03D, - 815: 0xB03E, - 816: 0xB03F, - 817: 0xB040, - 818: 0xB041, - 819: 0xB042, - 820: 0xB043, - 821: 0xB046, - 822: 0xB047, - 823: 0xB049, - 824: 0xB04B, - 825: 0xB04D, - 826: 0xB04F, - 827: 0xB050, - 828: 0xB051, - 829: 0xB052, - 830: 0xB056, - 831: 0xB058, - 832: 0xB05A, - 833: 0xB05B, - 834: 0xB05C, - 835: 0xB05E, - 836: 0xB05F, - 837: 0xB060, - 838: 0xB061, - 839: 0xB062, - 840: 0xB063, - 841: 0xB064, - 842: 0xB065, - 843: 0xB066, - 844: 0xB067, - 845: 0xB068, - 846: 0xB069, - 847: 0xB06A, - 848: 0xB06B, - 849: 0xB06C, - 850: 0xB06D, - 851: 0xB06E, - 852: 0xB06F, - 853: 0xB070, - 854: 0xB071, - 855: 0xB072, - 856: 0xB073, - 857: 0xB074, - 858: 0xB075, - 859: 0xB076, - 860: 0xB077, - 861: 0xB078, - 862: 0xB079, - 863: 0xB07A, - 864: 0xB07B, - 865: 0xB07E, - 866: 0xB07F, - 867: 0xB081, - 868: 0xB082, - 869: 0xB083, - 870: 0xB085, - 871: 0xB086, - 872: 0xB087, - 873: 0xB088, - 874: 0xB089, - 875: 0xB08A, - 876: 0xB08B, - 877: 0xB08E, - 878: 0xB090, - 879: 0xB092, - 880: 0xB093, - 881: 0xB094, - 882: 0xB095, - 883: 0xB096, - 884: 0xB097, - 885: 0xB09B, - 886: 0xB09D, - 887: 0xB09E, - 888: 0xB0A3, - 889: 0xB0A4, - 890: 0xB0A5, - 891: 0xB0A6, - 892: 0xB0A7, - 893: 0xB0AA, - 894: 0xB0B0, - 895: 0xB0B2, - 896: 0xB0B6, - 897: 0xB0B7, - 898: 0xB0B9, - 899: 0xB0BA, - 900: 0xB0BB, - 901: 0xB0BD, - 902: 0xB0BE, - 903: 0xB0BF, - 904: 0xB0C0, - 905: 0xB0C1, - 906: 0xB0C2, - 907: 0xB0C3, - 908: 0xB0C6, - 909: 0xB0CA, - 910: 0xB0CB, - 911: 0xB0CC, - 912: 0xB0CD, - 913: 0xB0CE, - 914: 0xB0CF, - 915: 0xB0D2, - 916: 0xB0D3, - 917: 0xB0D5, - 918: 0xB0D6, - 919: 0xB0D7, - 920: 0xB0D9, - 921: 0xB0DA, - 922: 0xB0DB, - 923: 0xB0DC, - 924: 0xB0DD, - 925: 0xB0DE, - 926: 0xB0DF, - 927: 0xB0E1, - 928: 0xB0E2, - 929: 0xB0E3, - 930: 0xB0E4, - 931: 0xB0E6, - 932: 0xB0E7, - 933: 0xB0E8, - 934: 0xB0E9, - 935: 0xB0EA, - 936: 0xB0EB, - 937: 0xB0EC, - 938: 0xB0ED, - 939: 0xB0EE, - 940: 0xB0EF, - 941: 0xB0F0, - 942: 0xB0F1, - 943: 0xB0F2, - 944: 0xB0F3, - 945: 0xB0F4, - 946: 0xB0F5, - 947: 0xB0F6, - 948: 0xB0F7, - 949: 0xB0F8, - 950: 0xB0F9, - 951: 0xB0FA, - 952: 0xB0FB, - 953: 0xB0FC, - 954: 0xB0FD, - 955: 0xB0FE, - 956: 0xB0FF, - 957: 0xB100, - 958: 0xB101, - 959: 0xB102, - 960: 0xB103, - 961: 0xB104, - 962: 0xB105, - 963: 0xB106, - 964: 0xB107, - 965: 0xB10A, - 966: 0xB10D, - 967: 0xB10E, - 968: 0xB10F, - 969: 0xB111, - 970: 0xB114, - 971: 0xB115, - 972: 0xB116, - 973: 0xB117, - 974: 0xB11A, - 975: 0xB11E, - 976: 0xB11F, - 977: 0xB120, - 978: 0xB121, - 979: 0xB122, - 980: 0xB126, - 981: 0xB127, - 982: 0xB129, - 983: 0xB12A, - 984: 0xB12B, - 985: 0xB12D, - 986: 0xB12E, - 987: 0xB12F, - 988: 0xB130, - 989: 0xB131, - 990: 0xB132, - 991: 0xB133, - 992: 0xB136, - 993: 0xB13A, - 994: 0xB13B, - 995: 0xB13C, - 996: 0xB13D, - 997: 0xB13E, - 998: 0xB13F, - 999: 0xB142, - 1000: 0xB143, - 1001: 0xB145, - 1002: 0xB146, - 1003: 0xB147, - 1004: 0xB149, - 1005: 0xB14A, - 1006: 0xB14B, - 1007: 0xB14C, - 1008: 0xB14D, - 1009: 0xB14E, - 1010: 0xB14F, - 1011: 0xB152, - 1012: 0xB153, - 1013: 0xB156, - 1014: 0xB157, - 1015: 0xB159, - 1016: 0xB15A, - 1017: 0xB15B, - 1018: 0xB15D, - 1019: 0xB15E, - 1020: 0xB15F, - 1021: 0xB161, - 1022: 0xB162, - 1023: 0xB163, - 1024: 0xB164, - 1025: 0xB165, - 1026: 0xB166, - 1027: 0xB167, - 1028: 0xB168, - 1029: 0xB169, - 1030: 0xB16A, - 1031: 0xB16B, - 1032: 0xB16C, - 1033: 0xB16D, - 1034: 0xB16E, - 1035: 0xB16F, - 1036: 0xB170, - 1037: 0xB171, - 1038: 0xB172, - 1039: 0xB173, - 1040: 0xB174, - 1041: 0xB175, - 1042: 0xB176, - 1043: 0xB177, - 1044: 0xB17A, - 1045: 0xB17B, - 1046: 0xB17D, - 1047: 0xB17E, - 1048: 0xB17F, - 1049: 0xB181, - 1050: 0xB183, - 1051: 0xB184, - 1052: 0xB185, - 1053: 0xB186, - 1054: 0xB187, - 1055: 0xB18A, - 1056: 0xB18C, - 1057: 0xB18E, - 1058: 0xB18F, - 1059: 0xB190, - 1060: 0xB191, - 1061: 0xB195, - 1062: 0xB196, - 1063: 0xB197, - 1064: 0xB199, - 1065: 0xB19A, - 1066: 0xB19B, - 1067: 0xB19D, - 1068: 0xB19E, - 1069: 0xB19F, - 1070: 0xB1A0, - 1071: 0xB1A1, - 1072: 0xB1A2, - 1073: 0xB1A3, - 1074: 0xB1A4, - 1075: 0xB1A5, - 1076: 0xB1A6, - 1077: 0xB1A7, - 1078: 0xB1A9, - 1079: 0xB1AA, - 1080: 0xB1AB, - 1081: 0xB1AC, - 1082: 0xB1AD, - 1083: 0xB1AE, - 1084: 0xB1AF, - 1085: 0xB1B0, - 1086: 0xB1B1, - 1087: 0xB1B2, - 1088: 0xB1B3, - 1089: 0xB1B4, - 1090: 0xB1B5, - 1091: 0xB1B6, - 1092: 0xB1B7, - 1093: 0xB1B8, - 1094: 0xB1B9, - 1095: 0xB1BA, - 1096: 0xB1BB, - 1097: 0xB1BC, - 1098: 0xB1BD, - 1099: 0xB1BE, - 1100: 0xB1BF, - 1101: 0xB1C0, - 1102: 0xB1C1, - 1103: 0xB1C2, - 1104: 0xB1C3, - 1105: 0xB1C4, - 1106: 0xB1C5, - 1107: 0xB1C6, - 1108: 0xB1C7, - 1109: 0xB1C8, - 1110: 0xB1C9, - 1111: 0xB1CA, - 1112: 0xB1CB, - 1113: 0xB1CD, - 1114: 0xB1CE, - 1115: 0xB1CF, - 1116: 0xB1D1, - 1117: 0xB1D2, - 1118: 0xB1D3, - 1119: 0xB1D5, - 1120: 0xB1D6, - 1121: 0xB1D7, - 1122: 0xB1D8, - 1123: 0xB1D9, - 1124: 0xB1DA, - 1125: 0xB1DB, - 1126: 0xB1DE, - 1127: 0xB1E0, - 1128: 0xB1E1, - 1129: 0xB1E2, - 1130: 0xB1E3, - 1131: 0xB1E4, - 1132: 0xB1E5, - 1133: 0xB1E6, - 1134: 0xB1E7, - 1135: 0xB1EA, - 1136: 0xB1EB, - 1137: 0xB1ED, - 1138: 0xB1EE, - 1139: 0xB1EF, - 1140: 0xB1F1, - 1141: 0xB1F2, - 1142: 0xB1F3, - 1143: 0xB1F4, - 1144: 0xB1F5, - 1145: 0xB1F6, - 1146: 0xB1F7, - 1147: 0xB1F8, - 1148: 0xB1FA, - 1149: 0xB1FC, - 1150: 0xB1FE, - 1151: 0xB1FF, - 1152: 0xB200, - 1153: 0xB201, - 1154: 0xB202, - 1155: 0xB203, - 1156: 0xB206, - 1157: 0xB207, - 1158: 0xB209, - 1159: 0xB20A, - 1160: 0xB20D, - 1161: 0xB20E, - 1162: 0xB20F, - 1163: 0xB210, - 1164: 0xB211, - 1165: 0xB212, - 1166: 0xB213, - 1167: 0xB216, - 1168: 0xB218, - 1169: 0xB21A, - 1170: 0xB21B, - 1171: 0xB21C, - 1172: 0xB21D, - 1173: 0xB21E, - 1174: 0xB21F, - 1175: 0xB221, - 1176: 0xB222, - 1177: 0xB223, - 1178: 0xB224, - 1179: 0xB225, - 1180: 0xB226, - 1181: 0xB227, - 1182: 0xB228, - 1183: 0xB229, - 1184: 0xB22A, - 1185: 0xB22B, - 1186: 0xB22C, - 1187: 0xB22D, - 1188: 0xB22E, - 1189: 0xB22F, - 1190: 0xB230, - 1191: 0xB231, - 1192: 0xB232, - 1193: 0xB233, - 1194: 0xB235, - 1195: 0xB236, - 1196: 0xB237, - 1197: 0xB238, - 1198: 0xB239, - 1199: 0xB23A, - 1200: 0xB23B, - 1201: 0xB23D, - 1202: 0xB23E, - 1203: 0xB23F, - 1204: 0xB240, - 1205: 0xB241, - 1206: 0xB242, - 1207: 0xB243, - 1208: 0xB244, - 1209: 0xB245, - 1210: 0xB246, - 1211: 0xB247, - 1212: 0xB248, - 1213: 0xB249, - 1214: 0xB24A, - 1215: 0xB24B, - 1216: 0xB24C, - 1217: 0xB24D, - 1218: 0xB24E, - 1219: 0xB24F, - 1220: 0xB250, - 1221: 0xB251, - 1222: 0xB252, - 1223: 0xB253, - 1224: 0xB254, - 1225: 0xB255, - 1226: 0xB256, - 1227: 0xB257, - 1228: 0xB259, - 1229: 0xB25A, - 1230: 0xB25B, - 1231: 0xB25D, - 1232: 0xB25E, - 1233: 0xB25F, - 1234: 0xB261, - 1235: 0xB262, - 1236: 0xB263, - 1237: 0xB264, - 1238: 0xB265, - 1239: 0xB266, - 1240: 0xB267, - 1241: 0xB26A, - 1242: 0xB26B, - 1243: 0xB26C, - 1244: 0xB26D, - 1245: 0xB26E, - 1246: 0xB26F, - 1247: 0xB270, - 1248: 0xB271, - 1249: 0xB272, - 1250: 0xB273, - 1251: 0xB276, - 1252: 0xB277, - 1253: 0xB278, - 1254: 0xB279, - 1255: 0xB27A, - 1256: 0xB27B, - 1257: 0xB27D, - 1258: 0xB27E, - 1259: 0xB27F, - 1260: 0xB280, - 1261: 0xB281, - 1262: 0xB282, - 1263: 0xB283, - 1264: 0xB286, - 1265: 0xB287, - 1266: 0xB288, - 1267: 0xB28A, - 1268: 0xB28B, - 1269: 0xB28C, - 1270: 0xB28D, - 1271: 0xB28E, - 1272: 0xB28F, - 1273: 0xB292, - 1274: 0xB293, - 1275: 0xB295, - 1276: 0xB296, - 1277: 0xB297, - 1278: 0xB29B, - 1279: 0xB29C, - 1280: 0xB29D, - 1281: 0xB29E, - 1282: 0xB29F, - 1283: 0xB2A2, - 1284: 0xB2A4, - 1285: 0xB2A7, - 1286: 0xB2A8, - 1287: 0xB2A9, - 1288: 0xB2AB, - 1289: 0xB2AD, - 1290: 0xB2AE, - 1291: 0xB2AF, - 1292: 0xB2B1, - 1293: 0xB2B2, - 1294: 0xB2B3, - 1295: 0xB2B5, - 1296: 0xB2B6, - 1297: 0xB2B7, - 1298: 0xB2B8, - 1299: 0xB2B9, - 1300: 0xB2BA, - 1301: 0xB2BB, - 1302: 0xB2BC, - 1303: 0xB2BD, - 1304: 0xB2BE, - 1305: 0xB2BF, - 1306: 0xB2C0, - 1307: 0xB2C1, - 1308: 0xB2C2, - 1309: 0xB2C3, - 1310: 0xB2C4, - 1311: 0xB2C5, - 1312: 0xB2C6, - 1313: 0xB2C7, - 1314: 0xB2CA, - 1315: 0xB2CB, - 1316: 0xB2CD, - 1317: 0xB2CE, - 1318: 0xB2CF, - 1319: 0xB2D1, - 1320: 0xB2D3, - 1321: 0xB2D4, - 1322: 0xB2D5, - 1323: 0xB2D6, - 1324: 0xB2D7, - 1325: 0xB2DA, - 1326: 0xB2DC, - 1327: 0xB2DE, - 1328: 0xB2DF, - 1329: 0xB2E0, - 1330: 0xB2E1, - 1331: 0xB2E3, - 1332: 0xB2E7, - 1333: 0xB2E9, - 1334: 0xB2EA, - 1335: 0xB2F0, - 1336: 0xB2F1, - 1337: 0xB2F2, - 1338: 0xB2F6, - 1339: 0xB2FC, - 1340: 0xB2FD, - 1341: 0xB2FE, - 1342: 0xB302, - 1343: 0xB303, - 1344: 0xB305, - 1345: 0xB306, - 1346: 0xB307, - 1347: 0xB309, - 1348: 0xB30A, - 1349: 0xB30B, - 1350: 0xB30C, - 1351: 0xB30D, - 1352: 0xB30E, - 1353: 0xB30F, - 1354: 0xB312, - 1355: 0xB316, - 1356: 0xB317, - 1357: 0xB318, - 1358: 0xB319, - 1359: 0xB31A, - 1360: 0xB31B, - 1361: 0xB31D, - 1362: 0xB31E, - 1363: 0xB31F, - 1364: 0xB320, - 1365: 0xB321, - 1366: 0xB322, - 1367: 0xB323, - 1368: 0xB324, - 1369: 0xB325, - 1370: 0xB326, - 1371: 0xB327, - 1372: 0xB328, - 1373: 0xB329, - 1374: 0xB32A, - 1375: 0xB32B, - 1376: 0xB32C, - 1377: 0xB32D, - 1378: 0xB32E, - 1379: 0xB32F, - 1380: 0xB330, - 1381: 0xB331, - 1382: 0xB332, - 1383: 0xB333, - 1384: 0xB334, - 1385: 0xB335, - 1386: 0xB336, - 1387: 0xB337, - 1388: 0xB338, - 1389: 0xB339, - 1390: 0xB33A, - 1391: 0xB33B, - 1392: 0xB33C, - 1393: 0xB33D, - 1394: 0xB33E, - 1395: 0xB33F, - 1396: 0xB340, - 1397: 0xB341, - 1398: 0xB342, - 1399: 0xB343, - 1400: 0xB344, - 1401: 0xB345, - 1402: 0xB346, - 1403: 0xB347, - 1404: 0xB348, - 1405: 0xB349, - 1406: 0xB34A, - 1407: 0xB34B, - 1408: 0xB34C, - 1409: 0xB34D, - 1410: 0xB34E, - 1411: 0xB34F, - 1412: 0xB350, - 1413: 0xB351, - 1414: 0xB352, - 1415: 0xB353, - 1416: 0xB357, - 1417: 0xB359, - 1418: 0xB35A, - 1419: 0xB35D, - 1420: 0xB360, - 1421: 0xB361, - 1422: 0xB362, - 1423: 0xB363, - 1424: 0xB366, - 1425: 0xB368, - 1426: 0xB36A, - 1427: 0xB36C, - 1428: 0xB36D, - 1429: 0xB36F, - 1430: 0xB372, - 1431: 0xB373, - 1432: 0xB375, - 1433: 0xB376, - 1434: 0xB377, - 1435: 0xB379, - 1436: 0xB37A, - 1437: 0xB37B, - 1438: 0xB37C, - 1439: 0xB37D, - 1440: 0xB37E, - 1441: 0xB37F, - 1442: 0xB382, - 1443: 0xB386, - 1444: 0xB387, - 1445: 0xB388, - 1446: 0xB389, - 1447: 0xB38A, - 1448: 0xB38B, - 1449: 0xB38D, - 1450: 0xB38E, - 1451: 0xB38F, - 1452: 0xB391, - 1453: 0xB392, - 1454: 0xB393, - 1455: 0xB395, - 1456: 0xB396, - 1457: 0xB397, - 1458: 0xB398, - 1459: 0xB399, - 1460: 0xB39A, - 1461: 0xB39B, - 1462: 0xB39C, - 1463: 0xB39D, - 1464: 0xB39E, - 1465: 0xB39F, - 1466: 0xB3A2, - 1467: 0xB3A3, - 1468: 0xB3A4, - 1469: 0xB3A5, - 1470: 0xB3A6, - 1471: 0xB3A7, - 1472: 0xB3A9, - 1473: 0xB3AA, - 1474: 0xB3AB, - 1475: 0xB3AD, - 1476: 0xB3AE, - 1477: 0xB3AF, - 1478: 0xB3B0, - 1479: 0xB3B1, - 1480: 0xB3B2, - 1481: 0xB3B3, - 1482: 0xB3B4, - 1483: 0xB3B5, - 1484: 0xB3B6, - 1485: 0xB3B7, - 1486: 0xB3B8, - 1487: 0xB3B9, - 1488: 0xB3BA, - 1489: 0xB3BB, - 1490: 0xB3BC, - 1491: 0xB3BD, - 1492: 0xB3BE, - 1493: 0xB3BF, - 1494: 0xB3C0, - 1495: 0xB3C1, - 1496: 0xB3C2, - 1497: 0xB3C3, - 1498: 0xB3C6, - 1499: 0xB3C7, - 1500: 0xB3C9, - 1501: 0xB3CA, - 1502: 0xB3CD, - 1503: 0xB3CF, - 1504: 0xB3D1, - 1505: 0xB3D2, - 1506: 0xB3D3, - 1507: 0xB3D6, - 1508: 0xB3D8, - 1509: 0xB3DA, - 1510: 0xB3DC, - 1511: 0xB3DE, - 1512: 0xB3DF, - 1513: 0xB3E1, - 1514: 0xB3E2, - 1515: 0xB3E3, - 1516: 0xB3E5, - 1517: 0xB3E6, - 1518: 0xB3E7, - 1519: 0xB3E9, - 1520: 0xB3EA, - 1521: 0xB3EB, - 1522: 0xB3EC, - 1523: 0xB3ED, - 1524: 0xB3EE, - 1525: 0xB3EF, - 1526: 0xB3F0, - 1527: 0xB3F1, - 1528: 0xB3F2, - 1529: 0xB3F3, - 1530: 0xB3F4, - 1531: 0xB3F5, - 1532: 0xB3F6, - 1533: 0xB3F7, - 1534: 0xB3F8, - 1535: 0xB3F9, - 1536: 0xB3FA, - 1537: 0xB3FB, - 1538: 0xB3FD, - 1539: 0xB3FE, - 1540: 0xB3FF, - 1541: 0xB400, - 1542: 0xB401, - 1543: 0xB402, - 1544: 0xB403, - 1545: 0xB404, - 1546: 0xB405, - 1547: 0xB406, - 1548: 0xB407, - 1549: 0xB408, - 1550: 0xB409, - 1551: 0xB40A, - 1552: 0xB40B, - 1553: 0xB40C, - 1554: 0xB40D, - 1555: 0xB40E, - 1556: 0xB40F, - 1557: 0xB411, - 1558: 0xB412, - 1559: 0xB413, - 1560: 0xB414, - 1561: 0xB415, - 1562: 0xB416, - 1563: 0xB417, - 1564: 0xB419, - 1565: 0xB41A, - 1566: 0xB41B, - 1567: 0xB41D, - 1568: 0xB41E, - 1569: 0xB41F, - 1570: 0xB421, - 1571: 0xB422, - 1572: 0xB423, - 1573: 0xB424, - 1574: 0xB425, - 1575: 0xB426, - 1576: 0xB427, - 1577: 0xB42A, - 1578: 0xB42C, - 1579: 0xB42D, - 1580: 0xB42E, - 1581: 0xB42F, - 1582: 0xB430, - 1583: 0xB431, - 1584: 0xB432, - 1585: 0xB433, - 1586: 0xB435, - 1587: 0xB436, - 1588: 0xB437, - 1589: 0xB438, - 1590: 0xB439, - 1591: 0xB43A, - 1592: 0xB43B, - 1593: 0xB43C, - 1594: 0xB43D, - 1595: 0xB43E, - 1596: 0xB43F, - 1597: 0xB440, - 1598: 0xB441, - 1599: 0xB442, - 1600: 0xB443, - 1601: 0xB444, - 1602: 0xB445, - 1603: 0xB446, - 1604: 0xB447, - 1605: 0xB448, - 1606: 0xB449, - 1607: 0xB44A, - 1608: 0xB44B, - 1609: 0xB44C, - 1610: 0xB44D, - 1611: 0xB44E, - 1612: 0xB44F, - 1613: 0xB452, - 1614: 0xB453, - 1615: 0xB455, - 1616: 0xB456, - 1617: 0xB457, - 1618: 0xB459, - 1619: 0xB45A, - 1620: 0xB45B, - 1621: 0xB45C, - 1622: 0xB45D, - 1623: 0xB45E, - 1624: 0xB45F, - 1625: 0xB462, - 1626: 0xB464, - 1627: 0xB466, - 1628: 0xB467, - 1629: 0xB468, - 1630: 0xB469, - 1631: 0xB46A, - 1632: 0xB46B, - 1633: 0xB46D, - 1634: 0xB46E, - 1635: 0xB46F, - 1636: 0xB470, - 1637: 0xB471, - 1638: 0xB472, - 1639: 0xB473, - 1640: 0xB474, - 1641: 0xB475, - 1642: 0xB476, - 1643: 0xB477, - 1644: 0xB478, - 1645: 0xB479, - 1646: 0xB47A, - 1647: 0xB47B, - 1648: 0xB47C, - 1649: 0xB47D, - 1650: 0xB47E, - 1651: 0xB47F, - 1652: 0xB481, - 1653: 0xB482, - 1654: 0xB483, - 1655: 0xB484, - 1656: 0xB485, - 1657: 0xB486, - 1658: 0xB487, - 1659: 0xB489, - 1660: 0xB48A, - 1661: 0xB48B, - 1662: 0xB48C, - 1663: 0xB48D, - 1664: 0xB48E, - 1665: 0xB48F, - 1666: 0xB490, - 1667: 0xB491, - 1668: 0xB492, - 1669: 0xB493, - 1670: 0xB494, - 1671: 0xB495, - 1672: 0xB496, - 1673: 0xB497, - 1674: 0xB498, - 1675: 0xB499, - 1676: 0xB49A, - 1677: 0xB49B, - 1678: 0xB49C, - 1679: 0xB49E, - 1680: 0xB49F, - 1681: 0xB4A0, - 1682: 0xB4A1, - 1683: 0xB4A2, - 1684: 0xB4A3, - 1685: 0xB4A5, - 1686: 0xB4A6, - 1687: 0xB4A7, - 1688: 0xB4A9, - 1689: 0xB4AA, - 1690: 0xB4AB, - 1691: 0xB4AD, - 1692: 0xB4AE, - 1693: 0xB4AF, - 1694: 0xB4B0, - 1695: 0xB4B1, - 1696: 0xB4B2, - 1697: 0xB4B3, - 1698: 0xB4B4, - 1699: 0xB4B6, - 1700: 0xB4B8, - 1701: 0xB4BA, - 1702: 0xB4BB, - 1703: 0xB4BC, - 1704: 0xB4BD, - 1705: 0xB4BE, - 1706: 0xB4BF, - 1707: 0xB4C1, - 1708: 0xB4C2, - 1709: 0xB4C3, - 1710: 0xB4C5, - 1711: 0xB4C6, - 1712: 0xB4C7, - 1713: 0xB4C9, - 1714: 0xB4CA, - 1715: 0xB4CB, - 1716: 0xB4CC, - 1717: 0xB4CD, - 1718: 0xB4CE, - 1719: 0xB4CF, - 1720: 0xB4D1, - 1721: 0xB4D2, - 1722: 0xB4D3, - 1723: 0xB4D4, - 1724: 0xB4D6, - 1725: 0xB4D7, - 1726: 0xB4D8, - 1727: 0xB4D9, - 1728: 0xB4DA, - 1729: 0xB4DB, - 1730: 0xB4DE, - 1731: 0xB4DF, - 1732: 0xB4E1, - 1733: 0xB4E2, - 1734: 0xB4E5, - 1735: 0xB4E7, - 1736: 0xB4E8, - 1737: 0xB4E9, - 1738: 0xB4EA, - 1739: 0xB4EB, - 1740: 0xB4EE, - 1741: 0xB4F0, - 1742: 0xB4F2, - 1743: 0xB4F3, - 1744: 0xB4F4, - 1745: 0xB4F5, - 1746: 0xB4F6, - 1747: 0xB4F7, - 1748: 0xB4F9, - 1749: 0xB4FA, - 1750: 0xB4FB, - 1751: 0xB4FC, - 1752: 0xB4FD, - 1753: 0xB4FE, - 1754: 0xB4FF, - 1755: 0xB500, - 1756: 0xB501, - 1757: 0xB502, - 1758: 0xB503, - 1759: 0xB504, - 1760: 0xB505, - 1761: 0xB506, - 1762: 0xB507, - 1763: 0xB508, - 1764: 0xB509, - 1765: 0xB50A, - 1766: 0xB50B, - 1767: 0xB50C, - 1768: 0xB50D, - 1769: 0xB50E, - 1770: 0xB50F, - 1771: 0xB510, - 1772: 0xB511, - 1773: 0xB512, - 1774: 0xB513, - 1775: 0xB516, - 1776: 0xB517, - 1777: 0xB519, - 1778: 0xB51A, - 1779: 0xB51D, - 1780: 0xB51E, - 1781: 0xB51F, - 1782: 0xB520, - 1783: 0xB521, - 1784: 0xB522, - 1785: 0xB523, - 1786: 0xB526, - 1787: 0xB52B, - 1788: 0xB52C, - 1789: 0xB52D, - 1790: 0xB52E, - 1791: 0xB52F, - 1792: 0xB532, - 1793: 0xB533, - 1794: 0xB535, - 1795: 0xB536, - 1796: 0xB537, - 1797: 0xB539, - 1798: 0xB53A, - 1799: 0xB53B, - 1800: 0xB53C, - 1801: 0xB53D, - 1802: 0xB53E, - 1803: 0xB53F, - 1804: 0xB542, - 1805: 0xB546, - 1806: 0xB547, - 1807: 0xB548, - 1808: 0xB549, - 1809: 0xB54A, - 1810: 0xB54E, - 1811: 0xB54F, - 1812: 0xB551, - 1813: 0xB552, - 1814: 0xB553, - 1815: 0xB555, - 1816: 0xB556, - 1817: 0xB557, - 1818: 0xB558, - 1819: 0xB559, - 1820: 0xB55A, - 1821: 0xB55B, - 1822: 0xB55E, - 1823: 0xB562, - 1824: 0xB563, - 1825: 0xB564, - 1826: 0xB565, - 1827: 0xB566, - 1828: 0xB567, - 1829: 0xB568, - 1830: 0xB569, - 1831: 0xB56A, - 1832: 0xB56B, - 1833: 0xB56C, - 1834: 0xB56D, - 1835: 0xB56E, - 1836: 0xB56F, - 1837: 0xB570, - 1838: 0xB571, - 1839: 0xB572, - 1840: 0xB573, - 1841: 0xB574, - 1842: 0xB575, - 1843: 0xB576, - 1844: 0xB577, - 1845: 0xB578, - 1846: 0xB579, - 1847: 0xB57A, - 1848: 0xB57B, - 1849: 0xB57C, - 1850: 0xB57D, - 1851: 0xB57E, - 1852: 0xB57F, - 1853: 0xB580, - 1854: 0xB581, - 1855: 0xB582, - 1856: 0xB583, - 1857: 0xB584, - 1858: 0xB585, - 1859: 0xB586, - 1860: 0xB587, - 1861: 0xB588, - 1862: 0xB589, - 1863: 0xB58A, - 1864: 0xB58B, - 1865: 0xB58C, - 1866: 0xB58D, - 1867: 0xB58E, - 1868: 0xB58F, - 1869: 0xB590, - 1870: 0xB591, - 1871: 0xB592, - 1872: 0xB593, - 1873: 0xB594, - 1874: 0xB595, - 1875: 0xB596, - 1876: 0xB597, - 1877: 0xB598, - 1878: 0xB599, - 1879: 0xB59A, - 1880: 0xB59B, - 1881: 0xB59C, - 1882: 0xB59D, - 1883: 0xB59E, - 1884: 0xB59F, - 1885: 0xB5A2, - 1886: 0xB5A3, - 1887: 0xB5A5, - 1888: 0xB5A6, - 1889: 0xB5A7, - 1890: 0xB5A9, - 1891: 0xB5AC, - 1892: 0xB5AD, - 1893: 0xB5AE, - 1894: 0xB5AF, - 1895: 0xB5B2, - 1896: 0xB5B6, - 1897: 0xB5B7, - 1898: 0xB5B8, - 1899: 0xB5B9, - 1900: 0xB5BA, - 1901: 0xB5BE, - 1902: 0xB5BF, - 1903: 0xB5C1, - 1904: 0xB5C2, - 1905: 0xB5C3, - 1906: 0xB5C5, - 1907: 0xB5C6, - 1908: 0xB5C7, - 1909: 0xB5C8, - 1910: 0xB5C9, - 1911: 0xB5CA, - 1912: 0xB5CB, - 1913: 0xB5CE, - 1914: 0xB5D2, - 1915: 0xB5D3, - 1916: 0xB5D4, - 1917: 0xB5D5, - 1918: 0xB5D6, - 1919: 0xB5D7, - 1920: 0xB5D9, - 1921: 0xB5DA, - 1922: 0xB5DB, - 1923: 0xB5DC, - 1924: 0xB5DD, - 1925: 0xB5DE, - 1926: 0xB5DF, - 1927: 0xB5E0, - 1928: 0xB5E1, - 1929: 0xB5E2, - 1930: 0xB5E3, - 1931: 0xB5E4, - 1932: 0xB5E5, - 1933: 0xB5E6, - 1934: 0xB5E7, - 1935: 0xB5E8, - 1936: 0xB5E9, - 1937: 0xB5EA, - 1938: 0xB5EB, - 1939: 0xB5ED, - 1940: 0xB5EE, - 1941: 0xB5EF, - 1942: 0xB5F0, - 1943: 0xB5F1, - 1944: 0xB5F2, - 1945: 0xB5F3, - 1946: 0xB5F4, - 1947: 0xB5F5, - 1948: 0xB5F6, - 1949: 0xB5F7, - 1950: 0xB5F8, - 1951: 0xB5F9, - 1952: 0xB5FA, - 1953: 0xB5FB, - 1954: 0xB5FC, - 1955: 0xB5FD, - 1956: 0xB5FE, - 1957: 0xB5FF, - 1958: 0xB600, - 1959: 0xB601, - 1960: 0xB602, - 1961: 0xB603, - 1962: 0xB604, - 1963: 0xB605, - 1964: 0xB606, - 1965: 0xB607, - 1966: 0xB608, - 1967: 0xB609, - 1968: 0xB60A, - 1969: 0xB60B, - 1970: 0xB60C, - 1971: 0xB60D, - 1972: 0xB60E, - 1973: 0xB60F, - 1974: 0xB612, - 1975: 0xB613, - 1976: 0xB615, - 1977: 0xB616, - 1978: 0xB617, - 1979: 0xB619, - 1980: 0xB61A, - 1981: 0xB61B, - 1982: 0xB61C, - 1983: 0xB61D, - 1984: 0xB61E, - 1985: 0xB61F, - 1986: 0xB620, - 1987: 0xB621, - 1988: 0xB622, - 1989: 0xB623, - 1990: 0xB624, - 1991: 0xB626, - 1992: 0xB627, - 1993: 0xB628, - 1994: 0xB629, - 1995: 0xB62A, - 1996: 0xB62B, - 1997: 0xB62D, - 1998: 0xB62E, - 1999: 0xB62F, - 2000: 0xB630, - 2001: 0xB631, - 2002: 0xB632, - 2003: 0xB633, - 2004: 0xB635, - 2005: 0xB636, - 2006: 0xB637, - 2007: 0xB638, - 2008: 0xB639, - 2009: 0xB63A, - 2010: 0xB63B, - 2011: 0xB63C, - 2012: 0xB63D, - 2013: 0xB63E, - 2014: 0xB63F, - 2015: 0xB640, - 2016: 0xB641, - 2017: 0xB642, - 2018: 0xB643, - 2019: 0xB644, - 2020: 0xB645, - 2021: 0xB646, - 2022: 0xB647, - 2023: 0xB649, - 2024: 0xB64A, - 2025: 0xB64B, - 2026: 0xB64C, - 2027: 0xB64D, - 2028: 0xB64E, - 2029: 0xB64F, - 2030: 0xB650, - 2031: 0xB651, - 2032: 0xB652, - 2033: 0xB653, - 2034: 0xB654, - 2035: 0xB655, - 2036: 0xB656, - 2037: 0xB657, - 2038: 0xB658, - 2039: 0xB659, - 2040: 0xB65A, - 2041: 0xB65B, - 2042: 0xB65C, - 2043: 0xB65D, - 2044: 0xB65E, - 2045: 0xB65F, - 2046: 0xB660, - 2047: 0xB661, - 2048: 0xB662, - 2049: 0xB663, - 2050: 0xB665, - 2051: 0xB666, - 2052: 0xB667, - 2053: 0xB669, - 2054: 0xB66A, - 2055: 0xB66B, - 2056: 0xB66C, - 2057: 0xB66D, - 2058: 0xB66E, - 2059: 0xB66F, - 2060: 0xB670, - 2061: 0xB671, - 2062: 0xB672, - 2063: 0xB673, - 2064: 0xB674, - 2065: 0xB675, - 2066: 0xB676, - 2067: 0xB677, - 2068: 0xB678, - 2069: 0xB679, - 2070: 0xB67A, - 2071: 0xB67B, - 2072: 0xB67C, - 2073: 0xB67D, - 2074: 0xB67E, - 2075: 0xB67F, - 2076: 0xB680, - 2077: 0xB681, - 2078: 0xB682, - 2079: 0xB683, - 2080: 0xB684, - 2081: 0xB685, - 2082: 0xB686, - 2083: 0xB687, - 2084: 0xB688, - 2085: 0xB689, - 2086: 0xB68A, - 2087: 0xB68B, - 2088: 0xB68C, - 2089: 0xB68D, - 2090: 0xB68E, - 2091: 0xB68F, - 2092: 0xB690, - 2093: 0xB691, - 2094: 0xB692, - 2095: 0xB693, - 2096: 0xB694, - 2097: 0xB695, - 2098: 0xB696, - 2099: 0xB697, - 2100: 0xB698, - 2101: 0xB699, - 2102: 0xB69A, - 2103: 0xB69B, - 2104: 0xB69E, - 2105: 0xB69F, - 2106: 0xB6A1, - 2107: 0xB6A2, - 2108: 0xB6A3, - 2109: 0xB6A5, - 2110: 0xB6A6, - 2111: 0xB6A7, - 2112: 0xB6A8, - 2113: 0xB6A9, - 2114: 0xB6AA, - 2115: 0xB6AD, - 2116: 0xB6AE, - 2117: 0xB6AF, - 2118: 0xB6B0, - 2119: 0xB6B2, - 2120: 0xB6B3, - 2121: 0xB6B4, - 2122: 0xB6B5, - 2123: 0xB6B6, - 2124: 0xB6B7, - 2125: 0xB6B8, - 2126: 0xB6B9, - 2127: 0xB6BA, - 2128: 0xB6BB, - 2129: 0xB6BC, - 2130: 0xB6BD, - 2131: 0xB6BE, - 2132: 0xB6BF, - 2133: 0xB6C0, - 2134: 0xB6C1, - 2135: 0xB6C2, - 2136: 0xB6C3, - 2137: 0xB6C4, - 2138: 0xB6C5, - 2139: 0xB6C6, - 2140: 0xB6C7, - 2141: 0xB6C8, - 2142: 0xB6C9, - 2143: 0xB6CA, - 2144: 0xB6CB, - 2145: 0xB6CC, - 2146: 0xB6CD, - 2147: 0xB6CE, - 2148: 0xB6CF, - 2149: 0xB6D0, - 2150: 0xB6D1, - 2151: 0xB6D2, - 2152: 0xB6D3, - 2153: 0xB6D5, - 2154: 0xB6D6, - 2155: 0xB6D7, - 2156: 0xB6D8, - 2157: 0xB6D9, - 2158: 0xB6DA, - 2159: 0xB6DB, - 2160: 0xB6DC, - 2161: 0xB6DD, - 2162: 0xB6DE, - 2163: 0xB6DF, - 2164: 0xB6E0, - 2165: 0xB6E1, - 2166: 0xB6E2, - 2167: 0xB6E3, - 2168: 0xB6E4, - 2169: 0xB6E5, - 2170: 0xB6E6, - 2171: 0xB6E7, - 2172: 0xB6E8, - 2173: 0xB6E9, - 2174: 0xB6EA, - 2175: 0xB6EB, - 2176: 0xB6EC, - 2177: 0xB6ED, - 2178: 0xB6EE, - 2179: 0xB6EF, - 2180: 0xB6F1, - 2181: 0xB6F2, - 2182: 0xB6F3, - 2183: 0xB6F5, - 2184: 0xB6F6, - 2185: 0xB6F7, - 2186: 0xB6F9, - 2187: 0xB6FA, - 2188: 0xB6FB, - 2189: 0xB6FC, - 2190: 0xB6FD, - 2191: 0xB6FE, - 2192: 0xB6FF, - 2193: 0xB702, - 2194: 0xB703, - 2195: 0xB704, - 2196: 0xB706, - 2197: 0xB707, - 2198: 0xB708, - 2199: 0xB709, - 2200: 0xB70A, - 2201: 0xB70B, - 2202: 0xB70C, - 2203: 0xB70D, - 2204: 0xB70E, - 2205: 0xB70F, - 2206: 0xB710, - 2207: 0xB711, - 2208: 0xB712, - 2209: 0xB713, - 2210: 0xB714, - 2211: 0xB715, - 2212: 0xB716, - 2213: 0xB717, - 2214: 0xB718, - 2215: 0xB719, - 2216: 0xB71A, - 2217: 0xB71B, - 2218: 0xB71C, - 2219: 0xB71D, - 2220: 0xB71E, - 2221: 0xB71F, - 2222: 0xB720, - 2223: 0xB721, - 2224: 0xB722, - 2225: 0xB723, - 2226: 0xB724, - 2227: 0xB725, - 2228: 0xB726, - 2229: 0xB727, - 2230: 0xB72A, - 2231: 0xB72B, - 2232: 0xB72D, - 2233: 0xB72E, - 2234: 0xB731, - 2235: 0xB732, - 2236: 0xB733, - 2237: 0xB734, - 2238: 0xB735, - 2239: 0xB736, - 2240: 0xB737, - 2241: 0xB73A, - 2242: 0xB73C, - 2243: 0xB73D, - 2244: 0xB73E, - 2245: 0xB73F, - 2246: 0xB740, - 2247: 0xB741, - 2248: 0xB742, - 2249: 0xB743, - 2250: 0xB745, - 2251: 0xB746, - 2252: 0xB747, - 2253: 0xB749, - 2254: 0xB74A, - 2255: 0xB74B, - 2256: 0xB74D, - 2257: 0xB74E, - 2258: 0xB74F, - 2259: 0xB750, - 2260: 0xB751, - 2261: 0xB752, - 2262: 0xB753, - 2263: 0xB756, - 2264: 0xB757, - 2265: 0xB758, - 2266: 0xB759, - 2267: 0xB75A, - 2268: 0xB75B, - 2269: 0xB75C, - 2270: 0xB75D, - 2271: 0xB75E, - 2272: 0xB75F, - 2273: 0xB761, - 2274: 0xB762, - 2275: 0xB763, - 2276: 0xB765, - 2277: 0xB766, - 2278: 0xB767, - 2279: 0xB769, - 2280: 0xB76A, - 2281: 0xB76B, - 2282: 0xB76C, - 2283: 0xB76D, - 2284: 0xB76E, - 2285: 0xB76F, - 2286: 0xB772, - 2287: 0xB774, - 2288: 0xB776, - 2289: 0xB777, - 2290: 0xB778, - 2291: 0xB779, - 2292: 0xB77A, - 2293: 0xB77B, - 2294: 0xB77E, - 2295: 0xB77F, - 2296: 0xB781, - 2297: 0xB782, - 2298: 0xB783, - 2299: 0xB785, - 2300: 0xB786, - 2301: 0xB787, - 2302: 0xB788, - 2303: 0xB789, - 2304: 0xB78A, - 2305: 0xB78B, - 2306: 0xB78E, - 2307: 0xB793, - 2308: 0xB794, - 2309: 0xB795, - 2310: 0xB79A, - 2311: 0xB79B, - 2312: 0xB79D, - 2313: 0xB79E, - 2314: 0xB79F, - 2315: 0xB7A1, - 2316: 0xB7A2, - 2317: 0xB7A3, - 2318: 0xB7A4, - 2319: 0xB7A5, - 2320: 0xB7A6, - 2321: 0xB7A7, - 2322: 0xB7AA, - 2323: 0xB7AE, - 2324: 0xB7AF, - 2325: 0xB7B0, - 2326: 0xB7B1, - 2327: 0xB7B2, - 2328: 0xB7B3, - 2329: 0xB7B6, - 2330: 0xB7B7, - 2331: 0xB7B9, - 2332: 0xB7BA, - 2333: 0xB7BB, - 2334: 0xB7BC, - 2335: 0xB7BD, - 2336: 0xB7BE, - 2337: 0xB7BF, - 2338: 0xB7C0, - 2339: 0xB7C1, - 2340: 0xB7C2, - 2341: 0xB7C3, - 2342: 0xB7C4, - 2343: 0xB7C5, - 2344: 0xB7C6, - 2345: 0xB7C8, - 2346: 0xB7CA, - 2347: 0xB7CB, - 2348: 0xB7CC, - 2349: 0xB7CD, - 2350: 0xB7CE, - 2351: 0xB7CF, - 2352: 0xB7D0, - 2353: 0xB7D1, - 2354: 0xB7D2, - 2355: 0xB7D3, - 2356: 0xB7D4, - 2357: 0xB7D5, - 2358: 0xB7D6, - 2359: 0xB7D7, - 2360: 0xB7D8, - 2361: 0xB7D9, - 2362: 0xB7DA, - 2363: 0xB7DB, - 2364: 0xB7DC, - 2365: 0xB7DD, - 2366: 0xB7DE, - 2367: 0xB7DF, - 2368: 0xB7E0, - 2369: 0xB7E1, - 2370: 0xB7E2, - 2371: 0xB7E3, - 2372: 0xB7E4, - 2373: 0xB7E5, - 2374: 0xB7E6, - 2375: 0xB7E7, - 2376: 0xB7E8, - 2377: 0xB7E9, - 2378: 0xB7EA, - 2379: 0xB7EB, - 2380: 0xB7EE, - 2381: 0xB7EF, - 2382: 0xB7F1, - 2383: 0xB7F2, - 2384: 0xB7F3, - 2385: 0xB7F5, - 2386: 0xB7F6, - 2387: 0xB7F7, - 2388: 0xB7F8, - 2389: 0xB7F9, - 2390: 0xB7FA, - 2391: 0xB7FB, - 2392: 0xB7FE, - 2393: 0xB802, - 2394: 0xB803, - 2395: 0xB804, - 2396: 0xB805, - 2397: 0xB806, - 2398: 0xB80A, - 2399: 0xB80B, - 2400: 0xB80D, - 2401: 0xB80E, - 2402: 0xB80F, - 2403: 0xB811, - 2404: 0xB812, - 2405: 0xB813, - 2406: 0xB814, - 2407: 0xB815, - 2408: 0xB816, - 2409: 0xB817, - 2410: 0xB81A, - 2411: 0xB81C, - 2412: 0xB81E, - 2413: 0xB81F, - 2414: 0xB820, - 2415: 0xB821, - 2416: 0xB822, - 2417: 0xB823, - 2418: 0xB826, - 2419: 0xB827, - 2420: 0xB829, - 2421: 0xB82A, - 2422: 0xB82B, - 2423: 0xB82D, - 2424: 0xB82E, - 2425: 0xB82F, - 2426: 0xB830, - 2427: 0xB831, - 2428: 0xB832, - 2429: 0xB833, - 2430: 0xB836, - 2431: 0xB83A, - 2432: 0xB83B, - 2433: 0xB83C, - 2434: 0xB83D, - 2435: 0xB83E, - 2436: 0xB83F, - 2437: 0xB841, - 2438: 0xB842, - 2439: 0xB843, - 2440: 0xB845, - 2441: 0xB846, - 2442: 0xB847, - 2443: 0xB848, - 2444: 0xB849, - 2445: 0xB84A, - 2446: 0xB84B, - 2447: 0xB84C, - 2448: 0xB84D, - 2449: 0xB84E, - 2450: 0xB84F, - 2451: 0xB850, - 2452: 0xB852, - 2453: 0xB854, - 2454: 0xB855, - 2455: 0xB856, - 2456: 0xB857, - 2457: 0xB858, - 2458: 0xB859, - 2459: 0xB85A, - 2460: 0xB85B, - 2461: 0xB85E, - 2462: 0xB85F, - 2463: 0xB861, - 2464: 0xB862, - 2465: 0xB863, - 2466: 0xB865, - 2467: 0xB866, - 2468: 0xB867, - 2469: 0xB868, - 2470: 0xB869, - 2471: 0xB86A, - 2472: 0xB86B, - 2473: 0xB86E, - 2474: 0xB870, - 2475: 0xB872, - 2476: 0xB873, - 2477: 0xB874, - 2478: 0xB875, - 2479: 0xB876, - 2480: 0xB877, - 2481: 0xB879, - 2482: 0xB87A, - 2483: 0xB87B, - 2484: 0xB87D, - 2485: 0xB87E, - 2486: 0xB87F, - 2487: 0xB880, - 2488: 0xB881, - 2489: 0xB882, - 2490: 0xB883, - 2491: 0xB884, - 2492: 0xB885, - 2493: 0xB886, - 2494: 0xB887, - 2495: 0xB888, - 2496: 0xB889, - 2497: 0xB88A, - 2498: 0xB88B, - 2499: 0xB88C, - 2500: 0xB88E, - 2501: 0xB88F, - 2502: 0xB890, - 2503: 0xB891, - 2504: 0xB892, - 2505: 0xB893, - 2506: 0xB894, - 2507: 0xB895, - 2508: 0xB896, - 2509: 0xB897, - 2510: 0xB898, - 2511: 0xB899, - 2512: 0xB89A, - 2513: 0xB89B, - 2514: 0xB89C, - 2515: 0xB89D, - 2516: 0xB89E, - 2517: 0xB89F, - 2518: 0xB8A0, - 2519: 0xB8A1, - 2520: 0xB8A2, - 2521: 0xB8A3, - 2522: 0xB8A4, - 2523: 0xB8A5, - 2524: 0xB8A6, - 2525: 0xB8A7, - 2526: 0xB8A9, - 2527: 0xB8AA, - 2528: 0xB8AB, - 2529: 0xB8AC, - 2530: 0xB8AD, - 2531: 0xB8AE, - 2532: 0xB8AF, - 2533: 0xB8B1, - 2534: 0xB8B2, - 2535: 0xB8B3, - 2536: 0xB8B5, - 2537: 0xB8B6, - 2538: 0xB8B7, - 2539: 0xB8B9, - 2540: 0xB8BA, - 2541: 0xB8BB, - 2542: 0xB8BC, - 2543: 0xB8BD, - 2544: 0xB8BE, - 2545: 0xB8BF, - 2546: 0xB8C2, - 2547: 0xB8C4, - 2548: 0xB8C6, - 2549: 0xB8C7, - 2550: 0xB8C8, - 2551: 0xB8C9, - 2552: 0xB8CA, - 2553: 0xB8CB, - 2554: 0xB8CD, - 2555: 0xB8CE, - 2556: 0xB8CF, - 2557: 0xB8D1, - 2558: 0xB8D2, - 2559: 0xB8D3, - 2560: 0xB8D5, - 2561: 0xB8D6, - 2562: 0xB8D7, - 2563: 0xB8D8, - 2564: 0xB8D9, - 2565: 0xB8DA, - 2566: 0xB8DB, - 2567: 0xB8DC, - 2568: 0xB8DE, - 2569: 0xB8E0, - 2570: 0xB8E2, - 2571: 0xB8E3, - 2572: 0xB8E4, - 2573: 0xB8E5, - 2574: 0xB8E6, - 2575: 0xB8E7, - 2576: 0xB8EA, - 2577: 0xB8EB, - 2578: 0xB8ED, - 2579: 0xB8EE, - 2580: 0xB8EF, - 2581: 0xB8F1, - 2582: 0xB8F2, - 2583: 0xB8F3, - 2584: 0xB8F4, - 2585: 0xB8F5, - 2586: 0xB8F6, - 2587: 0xB8F7, - 2588: 0xB8FA, - 2589: 0xB8FC, - 2590: 0xB8FE, - 2591: 0xB8FF, - 2592: 0xB900, - 2593: 0xB901, - 2594: 0xB902, - 2595: 0xB903, - 2596: 0xB905, - 2597: 0xB906, - 2598: 0xB907, - 2599: 0xB908, - 2600: 0xB909, - 2601: 0xB90A, - 2602: 0xB90B, - 2603: 0xB90C, - 2604: 0xB90D, - 2605: 0xB90E, - 2606: 0xB90F, - 2607: 0xB910, - 2608: 0xB911, - 2609: 0xB912, - 2610: 0xB913, - 2611: 0xB914, - 2612: 0xB915, - 2613: 0xB916, - 2614: 0xB917, - 2615: 0xB919, - 2616: 0xB91A, - 2617: 0xB91B, - 2618: 0xB91C, - 2619: 0xB91D, - 2620: 0xB91E, - 2621: 0xB91F, - 2622: 0xB921, - 2623: 0xB922, - 2624: 0xB923, - 2625: 0xB924, - 2626: 0xB925, - 2627: 0xB926, - 2628: 0xB927, - 2629: 0xB928, - 2630: 0xB929, - 2631: 0xB92A, - 2632: 0xB92B, - 2633: 0xB92C, - 2634: 0xB92D, - 2635: 0xB92E, - 2636: 0xB92F, - 2637: 0xB930, - 2638: 0xB931, - 2639: 0xB932, - 2640: 0xB933, - 2641: 0xB934, - 2642: 0xB935, - 2643: 0xB936, - 2644: 0xB937, - 2645: 0xB938, - 2646: 0xB939, - 2647: 0xB93A, - 2648: 0xB93B, - 2649: 0xB93E, - 2650: 0xB93F, - 2651: 0xB941, - 2652: 0xB942, - 2653: 0xB943, - 2654: 0xB945, - 2655: 0xB946, - 2656: 0xB947, - 2657: 0xB948, - 2658: 0xB949, - 2659: 0xB94A, - 2660: 0xB94B, - 2661: 0xB94D, - 2662: 0xB94E, - 2663: 0xB950, - 2664: 0xB952, - 2665: 0xB953, - 2666: 0xB954, - 2667: 0xB955, - 2668: 0xB956, - 2669: 0xB957, - 2670: 0xB95A, - 2671: 0xB95B, - 2672: 0xB95D, - 2673: 0xB95E, - 2674: 0xB95F, - 2675: 0xB961, - 2676: 0xB962, - 2677: 0xB963, - 2678: 0xB964, - 2679: 0xB965, - 2680: 0xB966, - 2681: 0xB967, - 2682: 0xB96A, - 2683: 0xB96C, - 2684: 0xB96E, - 2685: 0xB96F, - 2686: 0xB970, - 2687: 0xB971, - 2688: 0xB972, - 2689: 0xB973, - 2690: 0xB976, - 2691: 0xB977, - 2692: 0xB979, - 2693: 0xB97A, - 2694: 0xB97B, - 2695: 0xB97D, - 2696: 0xB97E, - 2697: 0xB97F, - 2698: 0xB980, - 2699: 0xB981, - 2700: 0xB982, - 2701: 0xB983, - 2702: 0xB986, - 2703: 0xB988, - 2704: 0xB98B, - 2705: 0xB98C, - 2706: 0xB98F, - 2707: 0xB990, - 2708: 0xB991, - 2709: 0xB992, - 2710: 0xB993, - 2711: 0xB994, - 2712: 0xB995, - 2713: 0xB996, - 2714: 0xB997, - 2715: 0xB998, - 2716: 0xB999, - 2717: 0xB99A, - 2718: 0xB99B, - 2719: 0xB99C, - 2720: 0xB99D, - 2721: 0xB99E, - 2722: 0xB99F, - 2723: 0xB9A0, - 2724: 0xB9A1, - 2725: 0xB9A2, - 2726: 0xB9A3, - 2727: 0xB9A4, - 2728: 0xB9A5, - 2729: 0xB9A6, - 2730: 0xB9A7, - 2731: 0xB9A8, - 2732: 0xB9A9, - 2733: 0xB9AA, - 2734: 0xB9AB, - 2735: 0xB9AE, - 2736: 0xB9AF, - 2737: 0xB9B1, - 2738: 0xB9B2, - 2739: 0xB9B3, - 2740: 0xB9B5, - 2741: 0xB9B6, - 2742: 0xB9B7, - 2743: 0xB9B8, - 2744: 0xB9B9, - 2745: 0xB9BA, - 2746: 0xB9BB, - 2747: 0xB9BE, - 2748: 0xB9C0, - 2749: 0xB9C2, - 2750: 0xB9C3, - 2751: 0xB9C4, - 2752: 0xB9C5, - 2753: 0xB9C6, - 2754: 0xB9C7, - 2755: 0xB9CA, - 2756: 0xB9CB, - 2757: 0xB9CD, - 2758: 0xB9D3, - 2759: 0xB9D4, - 2760: 0xB9D5, - 2761: 0xB9D6, - 2762: 0xB9D7, - 2763: 0xB9DA, - 2764: 0xB9DC, - 2765: 0xB9DF, - 2766: 0xB9E0, - 2767: 0xB9E2, - 2768: 0xB9E6, - 2769: 0xB9E7, - 2770: 0xB9E9, - 2771: 0xB9EA, - 2772: 0xB9EB, - 2773: 0xB9ED, - 2774: 0xB9EE, - 2775: 0xB9EF, - 2776: 0xB9F0, - 2777: 0xB9F1, - 2778: 0xB9F2, - 2779: 0xB9F3, - 2780: 0xB9F6, - 2781: 0xB9FB, - 2782: 0xB9FC, - 2783: 0xB9FD, - 2784: 0xB9FE, - 2785: 0xB9FF, - 2786: 0xBA02, - 2787: 0xBA03, - 2788: 0xBA04, - 2789: 0xBA05, - 2790: 0xBA06, - 2791: 0xBA07, - 2792: 0xBA09, - 2793: 0xBA0A, - 2794: 0xBA0B, - 2795: 0xBA0C, - 2796: 0xBA0D, - 2797: 0xBA0E, - 2798: 0xBA0F, - 2799: 0xBA10, - 2800: 0xBA11, - 2801: 0xBA12, - 2802: 0xBA13, - 2803: 0xBA14, - 2804: 0xBA16, - 2805: 0xBA17, - 2806: 0xBA18, - 2807: 0xBA19, - 2808: 0xBA1A, - 2809: 0xBA1B, - 2810: 0xBA1C, - 2811: 0xBA1D, - 2812: 0xBA1E, - 2813: 0xBA1F, - 2814: 0xBA20, - 2815: 0xBA21, - 2816: 0xBA22, - 2817: 0xBA23, - 2818: 0xBA24, - 2819: 0xBA25, - 2820: 0xBA26, - 2821: 0xBA27, - 2822: 0xBA28, - 2823: 0xBA29, - 2824: 0xBA2A, - 2825: 0xBA2B, - 2826: 0xBA2C, - 2827: 0xBA2D, - 2828: 0xBA2E, - 2829: 0xBA2F, - 2830: 0xBA30, - 2831: 0xBA31, - 2832: 0xBA32, - 2833: 0xBA33, - 2834: 0xBA34, - 2835: 0xBA35, - 2836: 0xBA36, - 2837: 0xBA37, - 2838: 0xBA3A, - 2839: 0xBA3B, - 2840: 0xBA3D, - 2841: 0xBA3E, - 2842: 0xBA3F, - 2843: 0xBA41, - 2844: 0xBA43, - 2845: 0xBA44, - 2846: 0xBA45, - 2847: 0xBA46, - 2848: 0xBA47, - 2849: 0xBA4A, - 2850: 0xBA4C, - 2851: 0xBA4F, - 2852: 0xBA50, - 2853: 0xBA51, - 2854: 0xBA52, - 2855: 0xBA56, - 2856: 0xBA57, - 2857: 0xBA59, - 2858: 0xBA5A, - 2859: 0xBA5B, - 2860: 0xBA5D, - 2861: 0xBA5E, - 2862: 0xBA5F, - 2863: 0xBA60, - 2864: 0xBA61, - 2865: 0xBA62, - 2866: 0xBA63, - 2867: 0xBA66, - 2868: 0xBA6A, - 2869: 0xBA6B, - 2870: 0xBA6C, - 2871: 0xBA6D, - 2872: 0xBA6E, - 2873: 0xBA6F, - 2874: 0xBA72, - 2875: 0xBA73, - 2876: 0xBA75, - 2877: 0xBA76, - 2878: 0xBA77, - 2879: 0xBA79, - 2880: 0xBA7A, - 2881: 0xBA7B, - 2882: 0xBA7C, - 2883: 0xBA7D, - 2884: 0xBA7E, - 2885: 0xBA7F, - 2886: 0xBA80, - 2887: 0xBA81, - 2888: 0xBA82, - 2889: 0xBA86, - 2890: 0xBA88, - 2891: 0xBA89, - 2892: 0xBA8A, - 2893: 0xBA8B, - 2894: 0xBA8D, - 2895: 0xBA8E, - 2896: 0xBA8F, - 2897: 0xBA90, - 2898: 0xBA91, - 2899: 0xBA92, - 2900: 0xBA93, - 2901: 0xBA94, - 2902: 0xBA95, - 2903: 0xBA96, - 2904: 0xBA97, - 2905: 0xBA98, - 2906: 0xBA99, - 2907: 0xBA9A, - 2908: 0xBA9B, - 2909: 0xBA9C, - 2910: 0xBA9D, - 2911: 0xBA9E, - 2912: 0xBA9F, - 2913: 0xBAA0, - 2914: 0xBAA1, - 2915: 0xBAA2, - 2916: 0xBAA3, - 2917: 0xBAA4, - 2918: 0xBAA5, - 2919: 0xBAA6, - 2920: 0xBAA7, - 2921: 0xBAAA, - 2922: 0xBAAD, - 2923: 0xBAAE, - 2924: 0xBAAF, - 2925: 0xBAB1, - 2926: 0xBAB3, - 2927: 0xBAB4, - 2928: 0xBAB5, - 2929: 0xBAB6, - 2930: 0xBAB7, - 2931: 0xBABA, - 2932: 0xBABC, - 2933: 0xBABE, - 2934: 0xBABF, - 2935: 0xBAC0, - 2936: 0xBAC1, - 2937: 0xBAC2, - 2938: 0xBAC3, - 2939: 0xBAC5, - 2940: 0xBAC6, - 2941: 0xBAC7, - 2942: 0xBAC9, - 2943: 0xBACA, - 2944: 0xBACB, - 2945: 0xBACC, - 2946: 0xBACD, - 2947: 0xBACE, - 2948: 0xBACF, - 2949: 0xBAD0, - 2950: 0xBAD1, - 2951: 0xBAD2, - 2952: 0xBAD3, - 2953: 0xBAD4, - 2954: 0xBAD5, - 2955: 0xBAD6, - 2956: 0xBAD7, - 2957: 0xBADA, - 2958: 0xBADB, - 2959: 0xBADC, - 2960: 0xBADD, - 2961: 0xBADE, - 2962: 0xBADF, - 2963: 0xBAE0, - 2964: 0xBAE1, - 2965: 0xBAE2, - 2966: 0xBAE3, - 2967: 0xBAE4, - 2968: 0xBAE5, - 2969: 0xBAE6, - 2970: 0xBAE7, - 2971: 0xBAE8, - 2972: 0xBAE9, - 2973: 0xBAEA, - 2974: 0xBAEB, - 2975: 0xBAEC, - 2976: 0xBAED, - 2977: 0xBAEE, - 2978: 0xBAEF, - 2979: 0xBAF0, - 2980: 0xBAF1, - 2981: 0xBAF2, - 2982: 0xBAF3, - 2983: 0xBAF4, - 2984: 0xBAF5, - 2985: 0xBAF6, - 2986: 0xBAF7, - 2987: 0xBAF8, - 2988: 0xBAF9, - 2989: 0xBAFA, - 2990: 0xBAFB, - 2991: 0xBAFD, - 2992: 0xBAFE, - 2993: 0xBAFF, - 2994: 0xBB01, - 2995: 0xBB02, - 2996: 0xBB03, - 2997: 0xBB05, - 2998: 0xBB06, - 2999: 0xBB07, - 3000: 0xBB08, - 3001: 0xBB09, - 3002: 0xBB0A, - 3003: 0xBB0B, - 3004: 0xBB0C, - 3005: 0xBB0E, - 3006: 0xBB10, - 3007: 0xBB12, - 3008: 0xBB13, - 3009: 0xBB14, - 3010: 0xBB15, - 3011: 0xBB16, - 3012: 0xBB17, - 3013: 0xBB19, - 3014: 0xBB1A, - 3015: 0xBB1B, - 3016: 0xBB1D, - 3017: 0xBB1E, - 3018: 0xBB1F, - 3019: 0xBB21, - 3020: 0xBB22, - 3021: 0xBB23, - 3022: 0xBB24, - 3023: 0xBB25, - 3024: 0xBB26, - 3025: 0xBB27, - 3026: 0xBB28, - 3027: 0xBB2A, - 3028: 0xBB2C, - 3029: 0xBB2D, - 3030: 0xBB2E, - 3031: 0xBB2F, - 3032: 0xBB30, - 3033: 0xBB31, - 3034: 0xBB32, - 3035: 0xBB33, - 3036: 0xBB37, - 3037: 0xBB39, - 3038: 0xBB3A, - 3039: 0xBB3F, - 3040: 0xBB40, - 3041: 0xBB41, - 3042: 0xBB42, - 3043: 0xBB43, - 3044: 0xBB46, - 3045: 0xBB48, - 3046: 0xBB4A, - 3047: 0xBB4B, - 3048: 0xBB4C, - 3049: 0xBB4E, - 3050: 0xBB51, - 3051: 0xBB52, - 3052: 0xBB53, - 3053: 0xBB55, - 3054: 0xBB56, - 3055: 0xBB57, - 3056: 0xBB59, - 3057: 0xBB5A, - 3058: 0xBB5B, - 3059: 0xBB5C, - 3060: 0xBB5D, - 3061: 0xBB5E, - 3062: 0xBB5F, - 3063: 0xBB60, - 3064: 0xBB62, - 3065: 0xBB64, - 3066: 0xBB65, - 3067: 0xBB66, - 3068: 0xBB67, - 3069: 0xBB68, - 3070: 0xBB69, - 3071: 0xBB6A, - 3072: 0xBB6B, - 3073: 0xBB6D, - 3074: 0xBB6E, - 3075: 0xBB6F, - 3076: 0xBB70, - 3077: 0xBB71, - 3078: 0xBB72, - 3079: 0xBB73, - 3080: 0xBB74, - 3081: 0xBB75, - 3082: 0xBB76, - 3083: 0xBB77, - 3084: 0xBB78, - 3085: 0xBB79, - 3086: 0xBB7A, - 3087: 0xBB7B, - 3088: 0xBB7C, - 3089: 0xBB7D, - 3090: 0xBB7E, - 3091: 0xBB7F, - 3092: 0xBB80, - 3093: 0xBB81, - 3094: 0xBB82, - 3095: 0xBB83, - 3096: 0xBB84, - 3097: 0xBB85, - 3098: 0xBB86, - 3099: 0xBB87, - 3100: 0xBB89, - 3101: 0xBB8A, - 3102: 0xBB8B, - 3103: 0xBB8D, - 3104: 0xBB8E, - 3105: 0xBB8F, - 3106: 0xBB91, - 3107: 0xBB92, - 3108: 0xBB93, - 3109: 0xBB94, - 3110: 0xBB95, - 3111: 0xBB96, - 3112: 0xBB97, - 3113: 0xBB98, - 3114: 0xBB99, - 3115: 0xBB9A, - 3116: 0xBB9B, - 3117: 0xBB9C, - 3118: 0xBB9D, - 3119: 0xBB9E, - 3120: 0xBB9F, - 3121: 0xBBA0, - 3122: 0xBBA1, - 3123: 0xBBA2, - 3124: 0xBBA3, - 3125: 0xBBA5, - 3126: 0xBBA6, - 3127: 0xBBA7, - 3128: 0xBBA9, - 3129: 0xBBAA, - 3130: 0xBBAB, - 3131: 0xBBAD, - 3132: 0xBBAE, - 3133: 0xBBAF, - 3134: 0xBBB0, - 3135: 0xBBB1, - 3136: 0xBBB2, - 3137: 0xBBB3, - 3138: 0xBBB5, - 3139: 0xBBB6, - 3140: 0xBBB8, - 3141: 0xBBB9, - 3142: 0xBBBA, - 3143: 0xBBBB, - 3144: 0xBBBC, - 3145: 0xBBBD, - 3146: 0xBBBE, - 3147: 0xBBBF, - 3148: 0xBBC1, - 3149: 0xBBC2, - 3150: 0xBBC3, - 3151: 0xBBC5, - 3152: 0xBBC6, - 3153: 0xBBC7, - 3154: 0xBBC9, - 3155: 0xBBCA, - 3156: 0xBBCB, - 3157: 0xBBCC, - 3158: 0xBBCD, - 3159: 0xBBCE, - 3160: 0xBBCF, - 3161: 0xBBD1, - 3162: 0xBBD2, - 3163: 0xBBD4, - 3164: 0xBBD5, - 3165: 0xBBD6, - 3166: 0xBBD7, - 3167: 0xBBD8, - 3168: 0xBBD9, - 3169: 0xBBDA, - 3170: 0xBBDB, - 3171: 0xBBDC, - 3172: 0xBBDD, - 3173: 0xBBDE, - 3174: 0xBBDF, - 3175: 0xBBE0, - 3176: 0xBBE1, - 3177: 0xBBE2, - 3178: 0xBBE3, - 3179: 0xBBE4, - 3180: 0xBBE5, - 3181: 0xBBE6, - 3182: 0xBBE7, - 3183: 0xBBE8, - 3184: 0xBBE9, - 3185: 0xBBEA, - 3186: 0xBBEB, - 3187: 0xBBEC, - 3188: 0xBBED, - 3189: 0xBBEE, - 3190: 0xBBEF, - 3191: 0xBBF0, - 3192: 0xBBF1, - 3193: 0xBBF2, - 3194: 0xBBF3, - 3195: 0xBBF4, - 3196: 0xBBF5, - 3197: 0xBBF6, - 3198: 0xBBF7, - 3199: 0xBBFA, - 3200: 0xBBFB, - 3201: 0xBBFD, - 3202: 0xBBFE, - 3203: 0xBC01, - 3204: 0xBC03, - 3205: 0xBC04, - 3206: 0xBC05, - 3207: 0xBC06, - 3208: 0xBC07, - 3209: 0xBC0A, - 3210: 0xBC0E, - 3211: 0xBC10, - 3212: 0xBC12, - 3213: 0xBC13, - 3214: 0xBC19, - 3215: 0xBC1A, - 3216: 0xBC20, - 3217: 0xBC21, - 3218: 0xBC22, - 3219: 0xBC23, - 3220: 0xBC26, - 3221: 0xBC28, - 3222: 0xBC2A, - 3223: 0xBC2B, - 3224: 0xBC2C, - 3225: 0xBC2E, - 3226: 0xBC2F, - 3227: 0xBC32, - 3228: 0xBC33, - 3229: 0xBC35, - 3230: 0xBC36, - 3231: 0xBC37, - 3232: 0xBC39, - 3233: 0xBC3A, - 3234: 0xBC3B, - 3235: 0xBC3C, - 3236: 0xBC3D, - 3237: 0xBC3E, - 3238: 0xBC3F, - 3239: 0xBC42, - 3240: 0xBC46, - 3241: 0xBC47, - 3242: 0xBC48, - 3243: 0xBC4A, - 3244: 0xBC4B, - 3245: 0xBC4E, - 3246: 0xBC4F, - 3247: 0xBC51, - 3248: 0xBC52, - 3249: 0xBC53, - 3250: 0xBC54, - 3251: 0xBC55, - 3252: 0xBC56, - 3253: 0xBC57, - 3254: 0xBC58, - 3255: 0xBC59, - 3256: 0xBC5A, - 3257: 0xBC5B, - 3258: 0xBC5C, - 3259: 0xBC5E, - 3260: 0xBC5F, - 3261: 0xBC60, - 3262: 0xBC61, - 3263: 0xBC62, - 3264: 0xBC63, - 3265: 0xBC64, - 3266: 0xBC65, - 3267: 0xBC66, - 3268: 0xBC67, - 3269: 0xBC68, - 3270: 0xBC69, - 3271: 0xBC6A, - 3272: 0xBC6B, - 3273: 0xBC6C, - 3274: 0xBC6D, - 3275: 0xBC6E, - 3276: 0xBC6F, - 3277: 0xBC70, - 3278: 0xBC71, - 3279: 0xBC72, - 3280: 0xBC73, - 3281: 0xBC74, - 3282: 0xBC75, - 3283: 0xBC76, - 3284: 0xBC77, - 3285: 0xBC78, - 3286: 0xBC79, - 3287: 0xBC7A, - 3288: 0xBC7B, - 3289: 0xBC7C, - 3290: 0xBC7D, - 3291: 0xBC7E, - 3292: 0xBC7F, - 3293: 0xBC80, - 3294: 0xBC81, - 3295: 0xBC82, - 3296: 0xBC83, - 3297: 0xBC86, - 3298: 0xBC87, - 3299: 0xBC89, - 3300: 0xBC8A, - 3301: 0xBC8D, - 3302: 0xBC8F, - 3303: 0xBC90, - 3304: 0xBC91, - 3305: 0xBC92, - 3306: 0xBC93, - 3307: 0xBC96, - 3308: 0xBC98, - 3309: 0xBC9B, - 3310: 0xBC9C, - 3311: 0xBC9D, - 3312: 0xBC9E, - 3313: 0xBC9F, - 3314: 0xBCA2, - 3315: 0xBCA3, - 3316: 0xBCA5, - 3317: 0xBCA6, - 3318: 0xBCA9, - 3319: 0xBCAA, - 3320: 0xBCAB, - 3321: 0xBCAC, - 3322: 0xBCAD, - 3323: 0xBCAE, - 3324: 0xBCAF, - 3325: 0xBCB2, - 3326: 0xBCB6, - 3327: 0xBCB7, - 3328: 0xBCB8, - 3329: 0xBCB9, - 3330: 0xBCBA, - 3331: 0xBCBB, - 3332: 0xBCBE, - 3333: 0xBCBF, - 3334: 0xBCC1, - 3335: 0xBCC2, - 3336: 0xBCC3, - 3337: 0xBCC5, - 3338: 0xBCC6, - 3339: 0xBCC7, - 3340: 0xBCC8, - 3341: 0xBCC9, - 3342: 0xBCCA, - 3343: 0xBCCB, - 3344: 0xBCCC, - 3345: 0xBCCE, - 3346: 0xBCD2, - 3347: 0xBCD3, - 3348: 0xBCD4, - 3349: 0xBCD6, - 3350: 0xBCD7, - 3351: 0xBCD9, - 3352: 0xBCDA, - 3353: 0xBCDB, - 3354: 0xBCDD, - 3355: 0xBCDE, - 3356: 0xBCDF, - 3357: 0xBCE0, - 3358: 0xBCE1, - 3359: 0xBCE2, - 3360: 0xBCE3, - 3361: 0xBCE4, - 3362: 0xBCE5, - 3363: 0xBCE6, - 3364: 0xBCE7, - 3365: 0xBCE8, - 3366: 0xBCE9, - 3367: 0xBCEA, - 3368: 0xBCEB, - 3369: 0xBCEC, - 3370: 0xBCED, - 3371: 0xBCEE, - 3372: 0xBCEF, - 3373: 0xBCF0, - 3374: 0xBCF1, - 3375: 0xBCF2, - 3376: 0xBCF3, - 3377: 0xBCF7, - 3378: 0xBCF9, - 3379: 0xBCFA, - 3380: 0xBCFB, - 3381: 0xBCFD, - 3382: 0xBCFE, - 3383: 0xBCFF, - 3384: 0xBD00, - 3385: 0xBD01, - 3386: 0xBD02, - 3387: 0xBD03, - 3388: 0xBD06, - 3389: 0xBD08, - 3390: 0xBD0A, - 3391: 0xBD0B, - 3392: 0xBD0C, - 3393: 0xBD0D, - 3394: 0xBD0E, - 3395: 0xBD0F, - 3396: 0xBD11, - 3397: 0xBD12, - 3398: 0xBD13, - 3399: 0xBD15, - 3400: 0xBD16, - 3401: 0xBD17, - 3402: 0xBD18, - 3403: 0xBD19, - 3404: 0xBD1A, - 3405: 0xBD1B, - 3406: 0xBD1C, - 3407: 0xBD1D, - 3408: 0xBD1E, - 3409: 0xBD1F, - 3410: 0xBD20, - 3411: 0xBD21, - 3412: 0xBD22, - 3413: 0xBD23, - 3414: 0xBD25, - 3415: 0xBD26, - 3416: 0xBD27, - 3417: 0xBD28, - 3418: 0xBD29, - 3419: 0xBD2A, - 3420: 0xBD2B, - 3421: 0xBD2D, - 3422: 0xBD2E, - 3423: 0xBD2F, - 3424: 0xBD30, - 3425: 0xBD31, - 3426: 0xBD32, - 3427: 0xBD33, - 3428: 0xBD34, - 3429: 0xBD35, - 3430: 0xBD36, - 3431: 0xBD37, - 3432: 0xBD38, - 3433: 0xBD39, - 3434: 0xBD3A, - 3435: 0xBD3B, - 3436: 0xBD3C, - 3437: 0xBD3D, - 3438: 0xBD3E, - 3439: 0xBD3F, - 3440: 0xBD41, - 3441: 0xBD42, - 3442: 0xBD43, - 3443: 0xBD44, - 3444: 0xBD45, - 3445: 0xBD46, - 3446: 0xBD47, - 3447: 0xBD4A, - 3448: 0xBD4B, - 3449: 0xBD4D, - 3450: 0xBD4E, - 3451: 0xBD4F, - 3452: 0xBD51, - 3453: 0xBD52, - 3454: 0xBD53, - 3455: 0xBD54, - 3456: 0xBD55, - 3457: 0xBD56, - 3458: 0xBD57, - 3459: 0xBD5A, - 3460: 0xBD5B, - 3461: 0xBD5C, - 3462: 0xBD5D, - 3463: 0xBD5E, - 3464: 0xBD5F, - 3465: 0xBD60, - 3466: 0xBD61, - 3467: 0xBD62, - 3468: 0xBD63, - 3469: 0xBD65, - 3470: 0xBD66, - 3471: 0xBD67, - 3472: 0xBD69, - 3473: 0xBD6A, - 3474: 0xBD6B, - 3475: 0xBD6C, - 3476: 0xBD6D, - 3477: 0xBD6E, - 3478: 0xBD6F, - 3479: 0xBD70, - 3480: 0xBD71, - 3481: 0xBD72, - 3482: 0xBD73, - 3483: 0xBD74, - 3484: 0xBD75, - 3485: 0xBD76, - 3486: 0xBD77, - 3487: 0xBD78, - 3488: 0xBD79, - 3489: 0xBD7A, - 3490: 0xBD7B, - 3491: 0xBD7C, - 3492: 0xBD7D, - 3493: 0xBD7E, - 3494: 0xBD7F, - 3495: 0xBD82, - 3496: 0xBD83, - 3497: 0xBD85, - 3498: 0xBD86, - 3499: 0xBD8B, - 3500: 0xBD8C, - 3501: 0xBD8D, - 3502: 0xBD8E, - 3503: 0xBD8F, - 3504: 0xBD92, - 3505: 0xBD94, - 3506: 0xBD96, - 3507: 0xBD97, - 3508: 0xBD98, - 3509: 0xBD9B, - 3510: 0xBD9D, - 3511: 0xBD9E, - 3512: 0xBD9F, - 3513: 0xBDA0, - 3514: 0xBDA1, - 3515: 0xBDA2, - 3516: 0xBDA3, - 3517: 0xBDA5, - 3518: 0xBDA6, - 3519: 0xBDA7, - 3520: 0xBDA8, - 3521: 0xBDA9, - 3522: 0xBDAA, - 3523: 0xBDAB, - 3524: 0xBDAC, - 3525: 0xBDAD, - 3526: 0xBDAE, - 3527: 0xBDAF, - 3528: 0xBDB1, - 3529: 0xBDB2, - 3530: 0xBDB3, - 3531: 0xBDB4, - 3532: 0xBDB5, - 3533: 0xBDB6, - 3534: 0xBDB7, - 3535: 0xBDB9, - 3536: 0xBDBA, - 3537: 0xBDBB, - 3538: 0xBDBC, - 3539: 0xBDBD, - 3540: 0xBDBE, - 3541: 0xBDBF, - 3542: 0xBDC0, - 3543: 0xBDC1, - 3544: 0xBDC2, - 3545: 0xBDC3, - 3546: 0xBDC4, - 3547: 0xBDC5, - 3548: 0xBDC6, - 3549: 0xBDC7, - 3550: 0xBDC8, - 3551: 0xBDC9, - 3552: 0xBDCA, - 3553: 0xBDCB, - 3554: 0xBDCC, - 3555: 0xBDCD, - 3556: 0xBDCE, - 3557: 0xBDCF, - 3558: 0xBDD0, - 3559: 0xBDD1, - 3560: 0xBDD2, - 3561: 0xBDD3, - 3562: 0xBDD6, - 3563: 0xBDD7, - 3564: 0xBDD9, - 3565: 0xBDDA, - 3566: 0xBDDB, - 3567: 0xBDDD, - 3568: 0xBDDE, - 3569: 0xBDDF, - 3570: 0xBDE0, - 3571: 0xBDE1, - 3572: 0xBDE2, - 3573: 0xBDE3, - 3574: 0xBDE4, - 3575: 0xBDE5, - 3576: 0xBDE6, - 3577: 0xBDE7, - 3578: 0xBDE8, - 3579: 0xBDEA, - 3580: 0xBDEB, - 3581: 0xBDEC, - 3582: 0xBDED, - 3583: 0xBDEE, - 3584: 0xBDEF, - 3585: 0xBDF1, - 3586: 0xBDF2, - 3587: 0xBDF3, - 3588: 0xBDF5, - 3589: 0xBDF6, - 3590: 0xBDF7, - 3591: 0xBDF9, - 3592: 0xBDFA, - 3593: 0xBDFB, - 3594: 0xBDFC, - 3595: 0xBDFD, - 3596: 0xBDFE, - 3597: 0xBDFF, - 3598: 0xBE01, - 3599: 0xBE02, - 3600: 0xBE04, - 3601: 0xBE06, - 3602: 0xBE07, - 3603: 0xBE08, - 3604: 0xBE09, - 3605: 0xBE0A, - 3606: 0xBE0B, - 3607: 0xBE0E, - 3608: 0xBE0F, - 3609: 0xBE11, - 3610: 0xBE12, - 3611: 0xBE13, - 3612: 0xBE15, - 3613: 0xBE16, - 3614: 0xBE17, - 3615: 0xBE18, - 3616: 0xBE19, - 3617: 0xBE1A, - 3618: 0xBE1B, - 3619: 0xBE1E, - 3620: 0xBE20, - 3621: 0xBE21, - 3622: 0xBE22, - 3623: 0xBE23, - 3624: 0xBE24, - 3625: 0xBE25, - 3626: 0xBE26, - 3627: 0xBE27, - 3628: 0xBE28, - 3629: 0xBE29, - 3630: 0xBE2A, - 3631: 0xBE2B, - 3632: 0xBE2C, - 3633: 0xBE2D, - 3634: 0xBE2E, - 3635: 0xBE2F, - 3636: 0xBE30, - 3637: 0xBE31, - 3638: 0xBE32, - 3639: 0xBE33, - 3640: 0xBE34, - 3641: 0xBE35, - 3642: 0xBE36, - 3643: 0xBE37, - 3644: 0xBE38, - 3645: 0xBE39, - 3646: 0xBE3A, - 3647: 0xBE3B, - 3648: 0xBE3C, - 3649: 0xBE3D, - 3650: 0xBE3E, - 3651: 0xBE3F, - 3652: 0xBE40, - 3653: 0xBE41, - 3654: 0xBE42, - 3655: 0xBE43, - 3656: 0xBE46, - 3657: 0xBE47, - 3658: 0xBE49, - 3659: 0xBE4A, - 3660: 0xBE4B, - 3661: 0xBE4D, - 3662: 0xBE4F, - 3663: 0xBE50, - 3664: 0xBE51, - 3665: 0xBE52, - 3666: 0xBE53, - 3667: 0xBE56, - 3668: 0xBE58, - 3669: 0xBE5C, - 3670: 0xBE5D, - 3671: 0xBE5E, - 3672: 0xBE5F, - 3673: 0xBE62, - 3674: 0xBE63, - 3675: 0xBE65, - 3676: 0xBE66, - 3677: 0xBE67, - 3678: 0xBE69, - 3679: 0xBE6B, - 3680: 0xBE6C, - 3681: 0xBE6D, - 3682: 0xBE6E, - 3683: 0xBE6F, - 3684: 0xBE72, - 3685: 0xBE76, - 3686: 0xBE77, - 3687: 0xBE78, - 3688: 0xBE79, - 3689: 0xBE7A, - 3690: 0xBE7E, - 3691: 0xBE7F, - 3692: 0xBE81, - 3693: 0xBE82, - 3694: 0xBE83, - 3695: 0xBE85, - 3696: 0xBE86, - 3697: 0xBE87, - 3698: 0xBE88, - 3699: 0xBE89, - 3700: 0xBE8A, - 3701: 0xBE8B, - 3702: 0xBE8E, - 3703: 0xBE92, - 3704: 0xBE93, - 3705: 0xBE94, - 3706: 0xBE95, - 3707: 0xBE96, - 3708: 0xBE97, - 3709: 0xBE9A, - 3710: 0xBE9B, - 3711: 0xBE9C, - 3712: 0xBE9D, - 3713: 0xBE9E, - 3714: 0xBE9F, - 3715: 0xBEA0, - 3716: 0xBEA1, - 3717: 0xBEA2, - 3718: 0xBEA3, - 3719: 0xBEA4, - 3720: 0xBEA5, - 3721: 0xBEA6, - 3722: 0xBEA7, - 3723: 0xBEA9, - 3724: 0xBEAA, - 3725: 0xBEAB, - 3726: 0xBEAC, - 3727: 0xBEAD, - 3728: 0xBEAE, - 3729: 0xBEAF, - 3730: 0xBEB0, - 3731: 0xBEB1, - 3732: 0xBEB2, - 3733: 0xBEB3, - 3734: 0xBEB4, - 3735: 0xBEB5, - 3736: 0xBEB6, - 3737: 0xBEB7, - 3738: 0xBEB8, - 3739: 0xBEB9, - 3740: 0xBEBA, - 3741: 0xBEBB, - 3742: 0xBEBC, - 3743: 0xBEBD, - 3744: 0xBEBE, - 3745: 0xBEBF, - 3746: 0xBEC0, - 3747: 0xBEC1, - 3748: 0xBEC2, - 3749: 0xBEC3, - 3750: 0xBEC4, - 3751: 0xBEC5, - 3752: 0xBEC6, - 3753: 0xBEC7, - 3754: 0xBEC8, - 3755: 0xBEC9, - 3756: 0xBECA, - 3757: 0xBECB, - 3758: 0xBECC, - 3759: 0xBECD, - 3760: 0xBECE, - 3761: 0xBECF, - 3762: 0xBED2, - 3763: 0xBED3, - 3764: 0xBED5, - 3765: 0xBED6, - 3766: 0xBED9, - 3767: 0xBEDA, - 3768: 0xBEDB, - 3769: 0xBEDC, - 3770: 0xBEDD, - 3771: 0xBEDE, - 3772: 0xBEDF, - 3773: 0xBEE1, - 3774: 0xBEE2, - 3775: 0xBEE6, - 3776: 0xBEE7, - 3777: 0xBEE8, - 3778: 0xBEE9, - 3779: 0xBEEA, - 3780: 0xBEEB, - 3781: 0xBEED, - 3782: 0xBEEE, - 3783: 0xBEEF, - 3784: 0xBEF0, - 3785: 0xBEF1, - 3786: 0xBEF2, - 3787: 0xBEF3, - 3788: 0xBEF4, - 3789: 0xBEF5, - 3790: 0xBEF6, - 3791: 0xBEF7, - 3792: 0xBEF8, - 3793: 0xBEF9, - 3794: 0xBEFA, - 3795: 0xBEFB, - 3796: 0xBEFC, - 3797: 0xBEFD, - 3798: 0xBEFE, - 3799: 0xBEFF, - 3800: 0xBF00, - 3801: 0xBF02, - 3802: 0xBF03, - 3803: 0xBF04, - 3804: 0xBF05, - 3805: 0xBF06, - 3806: 0xBF07, - 3807: 0xBF0A, - 3808: 0xBF0B, - 3809: 0xBF0C, - 3810: 0xBF0D, - 3811: 0xBF0E, - 3812: 0xBF0F, - 3813: 0xBF10, - 3814: 0xBF11, - 3815: 0xBF12, - 3816: 0xBF13, - 3817: 0xBF14, - 3818: 0xBF15, - 3819: 0xBF16, - 3820: 0xBF17, - 3821: 0xBF1A, - 3822: 0xBF1E, - 3823: 0xBF1F, - 3824: 0xBF20, - 3825: 0xBF21, - 3826: 0xBF22, - 3827: 0xBF23, - 3828: 0xBF24, - 3829: 0xBF25, - 3830: 0xBF26, - 3831: 0xBF27, - 3832: 0xBF28, - 3833: 0xBF29, - 3834: 0xBF2A, - 3835: 0xBF2B, - 3836: 0xBF2C, - 3837: 0xBF2D, - 3838: 0xBF2E, - 3839: 0xBF2F, - 3840: 0xBF30, - 3841: 0xBF31, - 3842: 0xBF32, - 3843: 0xBF33, - 3844: 0xBF34, - 3845: 0xBF35, - 3846: 0xBF36, - 3847: 0xBF37, - 3848: 0xBF38, - 3849: 0xBF39, - 3850: 0xBF3A, - 3851: 0xBF3B, - 3852: 0xBF3C, - 3853: 0xBF3D, - 3854: 0xBF3E, - 3855: 0xBF3F, - 3856: 0xBF42, - 3857: 0xBF43, - 3858: 0xBF45, - 3859: 0xBF46, - 3860: 0xBF47, - 3861: 0xBF49, - 3862: 0xBF4A, - 3863: 0xBF4B, - 3864: 0xBF4C, - 3865: 0xBF4D, - 3866: 0xBF4E, - 3867: 0xBF4F, - 3868: 0xBF52, - 3869: 0xBF53, - 3870: 0xBF54, - 3871: 0xBF56, - 3872: 0xBF57, - 3873: 0xBF58, - 3874: 0xBF59, - 3875: 0xBF5A, - 3876: 0xBF5B, - 3877: 0xBF5C, - 3878: 0xBF5D, - 3879: 0xBF5E, - 3880: 0xBF5F, - 3881: 0xBF60, - 3882: 0xBF61, - 3883: 0xBF62, - 3884: 0xBF63, - 3885: 0xBF64, - 3886: 0xBF65, - 3887: 0xBF66, - 3888: 0xBF67, - 3889: 0xBF68, - 3890: 0xBF69, - 3891: 0xBF6A, - 3892: 0xBF6B, - 3893: 0xBF6C, - 3894: 0xBF6D, - 3895: 0xBF6E, - 3896: 0xBF6F, - 3897: 0xBF70, - 3898: 0xBF71, - 3899: 0xBF72, - 3900: 0xBF73, - 3901: 0xBF74, - 3902: 0xBF75, - 3903: 0xBF76, - 3904: 0xBF77, - 3905: 0xBF78, - 3906: 0xBF79, - 3907: 0xBF7A, - 3908: 0xBF7B, - 3909: 0xBF7C, - 3910: 0xBF7D, - 3911: 0xBF7E, - 3912: 0xBF7F, - 3913: 0xBF80, - 3914: 0xBF81, - 3915: 0xBF82, - 3916: 0xBF83, - 3917: 0xBF84, - 3918: 0xBF85, - 3919: 0xBF86, - 3920: 0xBF87, - 3921: 0xBF88, - 3922: 0xBF89, - 3923: 0xBF8A, - 3924: 0xBF8B, - 3925: 0xBF8C, - 3926: 0xBF8D, - 3927: 0xBF8E, - 3928: 0xBF8F, - 3929: 0xBF90, - 3930: 0xBF91, - 3931: 0xBF92, - 3932: 0xBF93, - 3933: 0xBF95, - 3934: 0xBF96, - 3935: 0xBF97, - 3936: 0xBF98, - 3937: 0xBF99, - 3938: 0xBF9A, - 3939: 0xBF9B, - 3940: 0xBF9C, - 3941: 0xBF9D, - 3942: 0xBF9E, - 3943: 0xBF9F, - 3944: 0xBFA0, - 3945: 0xBFA1, - 3946: 0xBFA2, - 3947: 0xBFA3, - 3948: 0xBFA4, - 3949: 0xBFA5, - 3950: 0xBFA6, - 3951: 0xBFA7, - 3952: 0xBFA8, - 3953: 0xBFA9, - 3954: 0xBFAA, - 3955: 0xBFAB, - 3956: 0xBFAC, - 3957: 0xBFAD, - 3958: 0xBFAE, - 3959: 0xBFAF, - 3960: 0xBFB1, - 3961: 0xBFB2, - 3962: 0xBFB3, - 3963: 0xBFB4, - 3964: 0xBFB5, - 3965: 0xBFB6, - 3966: 0xBFB7, - 3967: 0xBFB8, - 3968: 0xBFB9, - 3969: 0xBFBA, - 3970: 0xBFBB, - 3971: 0xBFBC, - 3972: 0xBFBD, - 3973: 0xBFBE, - 3974: 0xBFBF, - 3975: 0xBFC0, - 3976: 0xBFC1, - 3977: 0xBFC2, - 3978: 0xBFC3, - 3979: 0xBFC4, - 3980: 0xBFC6, - 3981: 0xBFC7, - 3982: 0xBFC8, - 3983: 0xBFC9, - 3984: 0xBFCA, - 3985: 0xBFCB, - 3986: 0xBFCE, - 3987: 0xBFCF, - 3988: 0xBFD1, - 3989: 0xBFD2, - 3990: 0xBFD3, - 3991: 0xBFD5, - 3992: 0xBFD6, - 3993: 0xBFD7, - 3994: 0xBFD8, - 3995: 0xBFD9, - 3996: 0xBFDA, - 3997: 0xBFDB, - 3998: 0xBFDD, - 3999: 0xBFDE, - 4000: 0xBFE0, - 4001: 0xBFE2, - 4002: 0xBFE3, - 4003: 0xBFE4, - 4004: 0xBFE5, - 4005: 0xBFE6, - 4006: 0xBFE7, - 4007: 0xBFE8, - 4008: 0xBFE9, - 4009: 0xBFEA, - 4010: 0xBFEB, - 4011: 0xBFEC, - 4012: 0xBFED, - 4013: 0xBFEE, - 4014: 0xBFEF, - 4015: 0xBFF0, - 4016: 0xBFF1, - 4017: 0xBFF2, - 4018: 0xBFF3, - 4019: 0xBFF4, - 4020: 0xBFF5, - 4021: 0xBFF6, - 4022: 0xBFF7, - 4023: 0xBFF8, - 4024: 0xBFF9, - 4025: 0xBFFA, - 4026: 0xBFFB, - 4027: 0xBFFC, - 4028: 0xBFFD, - 4029: 0xBFFE, - 4030: 0xBFFF, - 4031: 0xC000, - 4032: 0xC001, - 4033: 0xC002, - 4034: 0xC003, - 4035: 0xC004, - 4036: 0xC005, - 4037: 0xC006, - 4038: 0xC007, - 4039: 0xC008, - 4040: 0xC009, - 4041: 0xC00A, - 4042: 0xC00B, - 4043: 0xC00C, - 4044: 0xC00D, - 4045: 0xC00E, - 4046: 0xC00F, - 4047: 0xC010, - 4048: 0xC011, - 4049: 0xC012, - 4050: 0xC013, - 4051: 0xC014, - 4052: 0xC015, - 4053: 0xC016, - 4054: 0xC017, - 4055: 0xC018, - 4056: 0xC019, - 4057: 0xC01A, - 4058: 0xC01B, - 4059: 0xC01C, - 4060: 0xC01D, - 4061: 0xC01E, - 4062: 0xC01F, - 4063: 0xC020, - 4064: 0xC021, - 4065: 0xC022, - 4066: 0xC023, - 4067: 0xC024, - 4068: 0xC025, - 4069: 0xC026, - 4070: 0xC027, - 4071: 0xC028, - 4072: 0xC029, - 4073: 0xC02A, - 4074: 0xC02B, - 4075: 0xC02C, - 4076: 0xC02D, - 4077: 0xC02E, - 4078: 0xC02F, - 4079: 0xC030, - 4080: 0xC031, - 4081: 0xC032, - 4082: 0xC033, - 4083: 0xC034, - 4084: 0xC035, - 4085: 0xC036, - 4086: 0xC037, - 4087: 0xC038, - 4088: 0xC039, - 4089: 0xC03A, - 4090: 0xC03B, - 4091: 0xC03D, - 4092: 0xC03E, - 4093: 0xC03F, - 4094: 0xC040, - 4095: 0xC041, - 4096: 0xC042, - 4097: 0xC043, - 4098: 0xC044, - 4099: 0xC045, - 4100: 0xC046, - 4101: 0xC047, - 4102: 0xC048, - 4103: 0xC049, - 4104: 0xC04A, - 4105: 0xC04B, - 4106: 0xC04C, - 4107: 0xC04D, - 4108: 0xC04E, - 4109: 0xC04F, - 4110: 0xC050, - 4111: 0xC052, - 4112: 0xC053, - 4113: 0xC054, - 4114: 0xC055, - 4115: 0xC056, - 4116: 0xC057, - 4117: 0xC059, - 4118: 0xC05A, - 4119: 0xC05B, - 4120: 0xC05D, - 4121: 0xC05E, - 4122: 0xC05F, - 4123: 0xC061, - 4124: 0xC062, - 4125: 0xC063, - 4126: 0xC064, - 4127: 0xC065, - 4128: 0xC066, - 4129: 0xC067, - 4130: 0xC06A, - 4131: 0xC06B, - 4132: 0xC06C, - 4133: 0xC06D, - 4134: 0xC06E, - 4135: 0xC06F, - 4136: 0xC070, - 4137: 0xC071, - 4138: 0xC072, - 4139: 0xC073, - 4140: 0xC074, - 4141: 0xC075, - 4142: 0xC076, - 4143: 0xC077, - 4144: 0xC078, - 4145: 0xC079, - 4146: 0xC07A, - 4147: 0xC07B, - 4148: 0xC07C, - 4149: 0xC07D, - 4150: 0xC07E, - 4151: 0xC07F, - 4152: 0xC080, - 4153: 0xC081, - 4154: 0xC082, - 4155: 0xC083, - 4156: 0xC084, - 4157: 0xC085, - 4158: 0xC086, - 4159: 0xC087, - 4160: 0xC088, - 4161: 0xC089, - 4162: 0xC08A, - 4163: 0xC08B, - 4164: 0xC08C, - 4165: 0xC08D, - 4166: 0xC08E, - 4167: 0xC08F, - 4168: 0xC092, - 4169: 0xC093, - 4170: 0xC095, - 4171: 0xC096, - 4172: 0xC097, - 4173: 0xC099, - 4174: 0xC09A, - 4175: 0xC09B, - 4176: 0xC09C, - 4177: 0xC09D, - 4178: 0xC09E, - 4179: 0xC09F, - 4180: 0xC0A2, - 4181: 0xC0A4, - 4182: 0xC0A6, - 4183: 0xC0A7, - 4184: 0xC0A8, - 4185: 0xC0A9, - 4186: 0xC0AA, - 4187: 0xC0AB, - 4188: 0xC0AE, - 4189: 0xC0B1, - 4190: 0xC0B2, - 4191: 0xC0B7, - 4192: 0xC0B8, - 4193: 0xC0B9, - 4194: 0xC0BA, - 4195: 0xC0BB, - 4196: 0xC0BE, - 4197: 0xC0C2, - 4198: 0xC0C3, - 4199: 0xC0C4, - 4200: 0xC0C6, - 4201: 0xC0C7, - 4202: 0xC0CA, - 4203: 0xC0CB, - 4204: 0xC0CD, - 4205: 0xC0CE, - 4206: 0xC0CF, - 4207: 0xC0D1, - 4208: 0xC0D2, - 4209: 0xC0D3, - 4210: 0xC0D4, - 4211: 0xC0D5, - 4212: 0xC0D6, - 4213: 0xC0D7, - 4214: 0xC0DA, - 4215: 0xC0DE, - 4216: 0xC0DF, - 4217: 0xC0E0, - 4218: 0xC0E1, - 4219: 0xC0E2, - 4220: 0xC0E3, - 4221: 0xC0E6, - 4222: 0xC0E7, - 4223: 0xC0E9, - 4224: 0xC0EA, - 4225: 0xC0EB, - 4226: 0xC0ED, - 4227: 0xC0EE, - 4228: 0xC0EF, - 4229: 0xC0F0, - 4230: 0xC0F1, - 4231: 0xC0F2, - 4232: 0xC0F3, - 4233: 0xC0F6, - 4234: 0xC0F8, - 4235: 0xC0FA, - 4236: 0xC0FB, - 4237: 0xC0FC, - 4238: 0xC0FD, - 4239: 0xC0FE, - 4240: 0xC0FF, - 4241: 0xC101, - 4242: 0xC102, - 4243: 0xC103, - 4244: 0xC105, - 4245: 0xC106, - 4246: 0xC107, - 4247: 0xC109, - 4248: 0xC10A, - 4249: 0xC10B, - 4250: 0xC10C, - 4251: 0xC10D, - 4252: 0xC10E, - 4253: 0xC10F, - 4254: 0xC111, - 4255: 0xC112, - 4256: 0xC113, - 4257: 0xC114, - 4258: 0xC116, - 4259: 0xC117, - 4260: 0xC118, - 4261: 0xC119, - 4262: 0xC11A, - 4263: 0xC11B, - 4264: 0xC121, - 4265: 0xC122, - 4266: 0xC125, - 4267: 0xC128, - 4268: 0xC129, - 4269: 0xC12A, - 4270: 0xC12B, - 4271: 0xC12E, - 4272: 0xC132, - 4273: 0xC133, - 4274: 0xC134, - 4275: 0xC135, - 4276: 0xC137, - 4277: 0xC13A, - 4278: 0xC13B, - 4279: 0xC13D, - 4280: 0xC13E, - 4281: 0xC13F, - 4282: 0xC141, - 4283: 0xC142, - 4284: 0xC143, - 4285: 0xC144, - 4286: 0xC145, - 4287: 0xC146, - 4288: 0xC147, - 4289: 0xC14A, - 4290: 0xC14E, - 4291: 0xC14F, - 4292: 0xC150, - 4293: 0xC151, - 4294: 0xC152, - 4295: 0xC153, - 4296: 0xC156, - 4297: 0xC157, - 4298: 0xC159, - 4299: 0xC15A, - 4300: 0xC15B, - 4301: 0xC15D, - 4302: 0xC15E, - 4303: 0xC15F, - 4304: 0xC160, - 4305: 0xC161, - 4306: 0xC162, - 4307: 0xC163, - 4308: 0xC166, - 4309: 0xC16A, - 4310: 0xC16B, - 4311: 0xC16C, - 4312: 0xC16D, - 4313: 0xC16E, - 4314: 0xC16F, - 4315: 0xC171, - 4316: 0xC172, - 4317: 0xC173, - 4318: 0xC175, - 4319: 0xC176, - 4320: 0xC177, - 4321: 0xC179, - 4322: 0xC17A, - 4323: 0xC17B, - 4324: 0xC17C, - 4325: 0xC17D, - 4326: 0xC17E, - 4327: 0xC17F, - 4328: 0xC180, - 4329: 0xC181, - 4330: 0xC182, - 4331: 0xC183, - 4332: 0xC184, - 4333: 0xC186, - 4334: 0xC187, - 4335: 0xC188, - 4336: 0xC189, - 4337: 0xC18A, - 4338: 0xC18B, - 4339: 0xC18F, - 4340: 0xC191, - 4341: 0xC192, - 4342: 0xC193, - 4343: 0xC195, - 4344: 0xC197, - 4345: 0xC198, - 4346: 0xC199, - 4347: 0xC19A, - 4348: 0xC19B, - 4349: 0xC19E, - 4350: 0xC1A0, - 4351: 0xC1A2, - 4352: 0xC1A3, - 4353: 0xC1A4, - 4354: 0xC1A6, - 4355: 0xC1A7, - 4356: 0xC1AA, - 4357: 0xC1AB, - 4358: 0xC1AD, - 4359: 0xC1AE, - 4360: 0xC1AF, - 4361: 0xC1B1, - 4362: 0xC1B2, - 4363: 0xC1B3, - 4364: 0xC1B4, - 4365: 0xC1B5, - 4366: 0xC1B6, - 4367: 0xC1B7, - 4368: 0xC1B8, - 4369: 0xC1B9, - 4370: 0xC1BA, - 4371: 0xC1BB, - 4372: 0xC1BC, - 4373: 0xC1BE, - 4374: 0xC1BF, - 4375: 0xC1C0, - 4376: 0xC1C1, - 4377: 0xC1C2, - 4378: 0xC1C3, - 4379: 0xC1C5, - 4380: 0xC1C6, - 4381: 0xC1C7, - 4382: 0xC1C9, - 4383: 0xC1CA, - 4384: 0xC1CB, - 4385: 0xC1CD, - 4386: 0xC1CE, - 4387: 0xC1CF, - 4388: 0xC1D0, - 4389: 0xC1D1, - 4390: 0xC1D2, - 4391: 0xC1D3, - 4392: 0xC1D5, - 4393: 0xC1D6, - 4394: 0xC1D9, - 4395: 0xC1DA, - 4396: 0xC1DB, - 4397: 0xC1DC, - 4398: 0xC1DD, - 4399: 0xC1DE, - 4400: 0xC1DF, - 4401: 0xC1E1, - 4402: 0xC1E2, - 4403: 0xC1E3, - 4404: 0xC1E5, - 4405: 0xC1E6, - 4406: 0xC1E7, - 4407: 0xC1E9, - 4408: 0xC1EA, - 4409: 0xC1EB, - 4410: 0xC1EC, - 4411: 0xC1ED, - 4412: 0xC1EE, - 4413: 0xC1EF, - 4414: 0xC1F2, - 4415: 0xC1F4, - 4416: 0xC1F5, - 4417: 0xC1F6, - 4418: 0xC1F7, - 4419: 0xC1F8, - 4420: 0xC1F9, - 4421: 0xC1FA, - 4422: 0xC1FB, - 4423: 0xC1FE, - 4424: 0xC1FF, - 4425: 0xC201, - 4426: 0xC202, - 4427: 0xC203, - 4428: 0xC205, - 4429: 0xC206, - 4430: 0xC207, - 4431: 0xC208, - 4432: 0xC209, - 4433: 0xC20A, - 4434: 0xC20B, - 4435: 0xC20E, - 4436: 0xC210, - 4437: 0xC212, - 4438: 0xC213, - 4439: 0xC214, - 4440: 0xC215, - 4441: 0xC216, - 4442: 0xC217, - 4443: 0xC21A, - 4444: 0xC21B, - 4445: 0xC21D, - 4446: 0xC21E, - 4447: 0xC221, - 4448: 0xC222, - 4449: 0xC223, - 4450: 0xC224, - 4451: 0xC225, - 4452: 0xC226, - 4453: 0xC227, - 4454: 0xC22A, - 4455: 0xC22C, - 4456: 0xC22E, - 4457: 0xC230, - 4458: 0xC233, - 4459: 0xC235, - 4460: 0xC236, - 4461: 0xC237, - 4462: 0xC238, - 4463: 0xC239, - 4464: 0xC23A, - 4465: 0xC23B, - 4466: 0xC23C, - 4467: 0xC23D, - 4468: 0xC23E, - 4469: 0xC23F, - 4470: 0xC240, - 4471: 0xC241, - 4472: 0xC242, - 4473: 0xC243, - 4474: 0xC244, - 4475: 0xC245, - 4476: 0xC246, - 4477: 0xC247, - 4478: 0xC249, - 4479: 0xC24A, - 4480: 0xC24B, - 4481: 0xC24C, - 4482: 0xC24D, - 4483: 0xC24E, - 4484: 0xC24F, - 4485: 0xC252, - 4486: 0xC253, - 4487: 0xC255, - 4488: 0xC256, - 4489: 0xC257, - 4490: 0xC259, - 4491: 0xC25A, - 4492: 0xC25B, - 4493: 0xC25C, - 4494: 0xC25D, - 4495: 0xC25E, - 4496: 0xC25F, - 4497: 0xC261, - 4498: 0xC262, - 4499: 0xC263, - 4500: 0xC264, - 4501: 0xC266, - 4502: 0xC267, - 4503: 0xC268, - 4504: 0xC269, - 4505: 0xC26A, - 4506: 0xC26B, - 4507: 0xC26E, - 4508: 0xC26F, - 4509: 0xC271, - 4510: 0xC272, - 4511: 0xC273, - 4512: 0xC275, - 4513: 0xC276, - 4514: 0xC277, - 4515: 0xC278, - 4516: 0xC279, - 4517: 0xC27A, - 4518: 0xC27B, - 4519: 0xC27E, - 4520: 0xC280, - 4521: 0xC282, - 4522: 0xC283, - 4523: 0xC284, - 4524: 0xC285, - 4525: 0xC286, - 4526: 0xC287, - 4527: 0xC28A, - 4528: 0xC28B, - 4529: 0xC28C, - 4530: 0xC28D, - 4531: 0xC28E, - 4532: 0xC28F, - 4533: 0xC291, - 4534: 0xC292, - 4535: 0xC293, - 4536: 0xC294, - 4537: 0xC295, - 4538: 0xC296, - 4539: 0xC297, - 4540: 0xC299, - 4541: 0xC29A, - 4542: 0xC29C, - 4543: 0xC29E, - 4544: 0xC29F, - 4545: 0xC2A0, - 4546: 0xC2A1, - 4547: 0xC2A2, - 4548: 0xC2A3, - 4549: 0xC2A6, - 4550: 0xC2A7, - 4551: 0xC2A9, - 4552: 0xC2AA, - 4553: 0xC2AB, - 4554: 0xC2AE, - 4555: 0xC2AF, - 4556: 0xC2B0, - 4557: 0xC2B1, - 4558: 0xC2B2, - 4559: 0xC2B3, - 4560: 0xC2B6, - 4561: 0xC2B8, - 4562: 0xC2BA, - 4563: 0xC2BB, - 4564: 0xC2BC, - 4565: 0xC2BD, - 4566: 0xC2BE, - 4567: 0xC2BF, - 4568: 0xC2C0, - 4569: 0xC2C1, - 4570: 0xC2C2, - 4571: 0xC2C3, - 4572: 0xC2C4, - 4573: 0xC2C5, - 4574: 0xC2C6, - 4575: 0xC2C7, - 4576: 0xC2C8, - 4577: 0xC2C9, - 4578: 0xC2CA, - 4579: 0xC2CB, - 4580: 0xC2CC, - 4581: 0xC2CD, - 4582: 0xC2CE, - 4583: 0xC2CF, - 4584: 0xC2D0, - 4585: 0xC2D1, - 4586: 0xC2D2, - 4587: 0xC2D3, - 4588: 0xC2D4, - 4589: 0xC2D5, - 4590: 0xC2D6, - 4591: 0xC2D7, - 4592: 0xC2D8, - 4593: 0xC2D9, - 4594: 0xC2DA, - 4595: 0xC2DB, - 4596: 0xC2DE, - 4597: 0xC2DF, - 4598: 0xC2E1, - 4599: 0xC2E2, - 4600: 0xC2E5, - 4601: 0xC2E6, - 4602: 0xC2E7, - 4603: 0xC2E8, - 4604: 0xC2E9, - 4605: 0xC2EA, - 4606: 0xC2EE, - 4607: 0xC2F0, - 4608: 0xC2F2, - 4609: 0xC2F3, - 4610: 0xC2F4, - 4611: 0xC2F5, - 4612: 0xC2F7, - 4613: 0xC2FA, - 4614: 0xC2FD, - 4615: 0xC2FE, - 4616: 0xC2FF, - 4617: 0xC301, - 4618: 0xC302, - 4619: 0xC303, - 4620: 0xC304, - 4621: 0xC305, - 4622: 0xC306, - 4623: 0xC307, - 4624: 0xC30A, - 4625: 0xC30B, - 4626: 0xC30E, - 4627: 0xC30F, - 4628: 0xC310, - 4629: 0xC311, - 4630: 0xC312, - 4631: 0xC316, - 4632: 0xC317, - 4633: 0xC319, - 4634: 0xC31A, - 4635: 0xC31B, - 4636: 0xC31D, - 4637: 0xC31E, - 4638: 0xC31F, - 4639: 0xC320, - 4640: 0xC321, - 4641: 0xC322, - 4642: 0xC323, - 4643: 0xC326, - 4644: 0xC327, - 4645: 0xC32A, - 4646: 0xC32B, - 4647: 0xC32C, - 4648: 0xC32D, - 4649: 0xC32E, - 4650: 0xC32F, - 4651: 0xC330, - 4652: 0xC331, - 4653: 0xC332, - 4654: 0xC333, - 4655: 0xC334, - 4656: 0xC335, - 4657: 0xC336, - 4658: 0xC337, - 4659: 0xC338, - 4660: 0xC339, - 4661: 0xC33A, - 4662: 0xC33B, - 4663: 0xC33C, - 4664: 0xC33D, - 4665: 0xC33E, - 4666: 0xC33F, - 4667: 0xC340, - 4668: 0xC341, - 4669: 0xC342, - 4670: 0xC343, - 4671: 0xC344, - 4672: 0xC346, - 4673: 0xC347, - 4674: 0xC348, - 4675: 0xC349, - 4676: 0xC34A, - 4677: 0xC34B, - 4678: 0xC34C, - 4679: 0xC34D, - 4680: 0xC34E, - 4681: 0xC34F, - 4682: 0xC350, - 4683: 0xC351, - 4684: 0xC352, - 4685: 0xC353, - 4686: 0xC354, - 4687: 0xC355, - 4688: 0xC356, - 4689: 0xC357, - 4690: 0xC358, - 4691: 0xC359, - 4692: 0xC35A, - 4693: 0xC35B, - 4694: 0xC35C, - 4695: 0xC35D, - 4696: 0xC35E, - 4697: 0xC35F, - 4698: 0xC360, - 4699: 0xC361, - 4700: 0xC362, - 4701: 0xC363, - 4702: 0xC364, - 4703: 0xC365, - 4704: 0xC366, - 4705: 0xC367, - 4706: 0xC36A, - 4707: 0xC36B, - 4708: 0xC36D, - 4709: 0xC36E, - 4710: 0xC36F, - 4711: 0xC371, - 4712: 0xC373, - 4713: 0xC374, - 4714: 0xC375, - 4715: 0xC376, - 4716: 0xC377, - 4717: 0xC37A, - 4718: 0xC37B, - 4719: 0xC37E, - 4720: 0xC37F, - 4721: 0xC380, - 4722: 0xC381, - 4723: 0xC382, - 4724: 0xC383, - 4725: 0xC385, - 4726: 0xC386, - 4727: 0xC387, - 4728: 0xC389, - 4729: 0xC38A, - 4730: 0xC38B, - 4731: 0xC38D, - 4732: 0xC38E, - 4733: 0xC38F, - 4734: 0xC390, - 4735: 0xC391, - 4736: 0xC392, - 4737: 0xC393, - 4738: 0xC394, - 4739: 0xC395, - 4740: 0xC396, - 4741: 0xC397, - 4742: 0xC398, - 4743: 0xC399, - 4744: 0xC39A, - 4745: 0xC39B, - 4746: 0xC39C, - 4747: 0xC39D, - 4748: 0xC39E, - 4749: 0xC39F, - 4750: 0xC3A0, - 4751: 0xC3A1, - 4752: 0xC3A2, - 4753: 0xC3A3, - 4754: 0xC3A4, - 4755: 0xC3A5, - 4756: 0xC3A6, - 4757: 0xC3A7, - 4758: 0xC3A8, - 4759: 0xC3A9, - 4760: 0xC3AA, - 4761: 0xC3AB, - 4762: 0xC3AC, - 4763: 0xC3AD, - 4764: 0xC3AE, - 4765: 0xC3AF, - 4766: 0xC3B0, - 4767: 0xC3B1, - 4768: 0xC3B2, - 4769: 0xC3B3, - 4770: 0xC3B4, - 4771: 0xC3B5, - 4772: 0xC3B6, - 4773: 0xC3B7, - 4774: 0xC3B8, - 4775: 0xC3B9, - 4776: 0xC3BA, - 4777: 0xC3BB, - 4778: 0xC3BC, - 4779: 0xC3BD, - 4780: 0xC3BE, - 4781: 0xC3BF, - 4782: 0xC3C1, - 4783: 0xC3C2, - 4784: 0xC3C3, - 4785: 0xC3C4, - 4786: 0xC3C5, - 4787: 0xC3C6, - 4788: 0xC3C7, - 4789: 0xC3C8, - 4790: 0xC3C9, - 4791: 0xC3CA, - 4792: 0xC3CB, - 4793: 0xC3CC, - 4794: 0xC3CD, - 4795: 0xC3CE, - 4796: 0xC3CF, - 4797: 0xC3D0, - 4798: 0xC3D1, - 4799: 0xC3D2, - 4800: 0xC3D3, - 4801: 0xC3D4, - 4802: 0xC3D5, - 4803: 0xC3D6, - 4804: 0xC3D7, - 4805: 0xC3DA, - 4806: 0xC3DB, - 4807: 0xC3DD, - 4808: 0xC3DE, - 4809: 0xC3E1, - 4810: 0xC3E3, - 4811: 0xC3E4, - 4812: 0xC3E5, - 4813: 0xC3E6, - 4814: 0xC3E7, - 4815: 0xC3EA, - 4816: 0xC3EB, - 4817: 0xC3EC, - 4818: 0xC3EE, - 4819: 0xC3EF, - 4820: 0xC3F0, - 4821: 0xC3F1, - 4822: 0xC3F2, - 4823: 0xC3F3, - 4824: 0xC3F6, - 4825: 0xC3F7, - 4826: 0xC3F9, - 4827: 0xC3FA, - 4828: 0xC3FB, - 4829: 0xC3FC, - 4830: 0xC3FD, - 4831: 0xC3FE, - 4832: 0xC3FF, - 4833: 0xC400, - 4834: 0xC401, - 4835: 0xC402, - 4836: 0xC403, - 4837: 0xC404, - 4838: 0xC405, - 4839: 0xC406, - 4840: 0xC407, - 4841: 0xC409, - 4842: 0xC40A, - 4843: 0xC40B, - 4844: 0xC40C, - 4845: 0xC40D, - 4846: 0xC40E, - 4847: 0xC40F, - 4848: 0xC411, - 4849: 0xC412, - 4850: 0xC413, - 4851: 0xC414, - 4852: 0xC415, - 4853: 0xC416, - 4854: 0xC417, - 4855: 0xC418, - 4856: 0xC419, - 4857: 0xC41A, - 4858: 0xC41B, - 4859: 0xC41C, - 4860: 0xC41D, - 4861: 0xC41E, - 4862: 0xC41F, - 4863: 0xC420, - 4864: 0xC421, - 4865: 0xC422, - 4866: 0xC423, - 4867: 0xC425, - 4868: 0xC426, - 4869: 0xC427, - 4870: 0xC428, - 4871: 0xC429, - 4872: 0xC42A, - 4873: 0xC42B, - 4874: 0xC42D, - 4875: 0xC42E, - 4876: 0xC42F, - 4877: 0xC431, - 4878: 0xC432, - 4879: 0xC433, - 4880: 0xC435, - 4881: 0xC436, - 4882: 0xC437, - 4883: 0xC438, - 4884: 0xC439, - 4885: 0xC43A, - 4886: 0xC43B, - 4887: 0xC43E, - 4888: 0xC43F, - 4889: 0xC440, - 4890: 0xC441, - 4891: 0xC442, - 4892: 0xC443, - 4893: 0xC444, - 4894: 0xC445, - 4895: 0xC446, - 4896: 0xC447, - 4897: 0xC449, - 4898: 0xC44A, - 4899: 0xC44B, - 4900: 0xC44C, - 4901: 0xC44D, - 4902: 0xC44E, - 4903: 0xC44F, - 4904: 0xC450, - 4905: 0xC451, - 4906: 0xC452, - 4907: 0xC453, - 4908: 0xC454, - 4909: 0xC455, - 4910: 0xC456, - 4911: 0xC457, - 4912: 0xC458, - 4913: 0xC459, - 4914: 0xC45A, - 4915: 0xC45B, - 4916: 0xC45C, - 4917: 0xC45D, - 4918: 0xC45E, - 4919: 0xC45F, - 4920: 0xC460, - 4921: 0xC461, - 4922: 0xC462, - 4923: 0xC463, - 4924: 0xC466, - 4925: 0xC467, - 4926: 0xC469, - 4927: 0xC46A, - 4928: 0xC46B, - 4929: 0xC46D, - 4930: 0xC46E, - 4931: 0xC46F, - 4932: 0xC470, - 4933: 0xC471, - 4934: 0xC472, - 4935: 0xC473, - 4936: 0xC476, - 4937: 0xC477, - 4938: 0xC478, - 4939: 0xC47A, - 4940: 0xC47B, - 4941: 0xC47C, - 4942: 0xC47D, - 4943: 0xC47E, - 4944: 0xC47F, - 4945: 0xC481, - 4946: 0xC482, - 4947: 0xC483, - 4948: 0xC484, - 4949: 0xC485, - 4950: 0xC486, - 4951: 0xC487, - 4952: 0xC488, - 4953: 0xC489, - 4954: 0xC48A, - 4955: 0xC48B, - 4956: 0xC48C, - 4957: 0xC48D, - 4958: 0xC48E, - 4959: 0xC48F, - 4960: 0xC490, - 4961: 0xC491, - 4962: 0xC492, - 4963: 0xC493, - 4964: 0xC495, - 4965: 0xC496, - 4966: 0xC497, - 4967: 0xC498, - 4968: 0xC499, - 4969: 0xC49A, - 4970: 0xC49B, - 4971: 0xC49D, - 4972: 0xC49E, - 4973: 0xC49F, - 4974: 0xC4A0, - 4975: 0xC4A1, - 4976: 0xC4A2, - 4977: 0xC4A3, - 4978: 0xC4A4, - 4979: 0xC4A5, - 4980: 0xC4A6, - 4981: 0xC4A7, - 4982: 0xC4A8, - 4983: 0xC4A9, - 4984: 0xC4AA, - 4985: 0xC4AB, - 4986: 0xC4AC, - 4987: 0xC4AD, - 4988: 0xC4AE, - 4989: 0xC4AF, - 4990: 0xC4B0, - 4991: 0xC4B1, - 4992: 0xC4B2, - 4993: 0xC4B3, - 4994: 0xC4B4, - 4995: 0xC4B5, - 4996: 0xC4B6, - 4997: 0xC4B7, - 4998: 0xC4B9, - 4999: 0xC4BA, - 5000: 0xC4BB, - 5001: 0xC4BD, - 5002: 0xC4BE, - 5003: 0xC4BF, - 5004: 0xC4C0, - 5005: 0xC4C1, - 5006: 0xC4C2, - 5007: 0xC4C3, - 5008: 0xC4C4, - 5009: 0xC4C5, - 5010: 0xC4C6, - 5011: 0xC4C7, - 5012: 0xC4C8, - 5013: 0xC4C9, - 5014: 0xC4CA, - 5015: 0xC4CB, - 5016: 0xC4CC, - 5017: 0xC4CD, - 5018: 0xC4CE, - 5019: 0xC4CF, - 5020: 0xC4D0, - 5021: 0xC4D1, - 5022: 0xC4D2, - 5023: 0xC4D3, - 5024: 0xC4D4, - 5025: 0xC4D5, - 5026: 0xC4D6, - 5027: 0xC4D7, - 5028: 0xC4D8, - 5029: 0xC4D9, - 5030: 0xC4DA, - 5031: 0xC4DB, - 5032: 0xC4DC, - 5033: 0xC4DD, - 5034: 0xC4DE, - 5035: 0xC4DF, - 5036: 0xC4E0, - 5037: 0xC4E1, - 5038: 0xC4E2, - 5039: 0xC4E3, - 5040: 0xC4E4, - 5041: 0xC4E5, - 5042: 0xC4E6, - 5043: 0xC4E7, - 5044: 0xC4E8, - 5045: 0xC4EA, - 5046: 0xC4EB, - 5047: 0xC4EC, - 5048: 0xC4ED, - 5049: 0xC4EE, - 5050: 0xC4EF, - 5051: 0xC4F2, - 5052: 0xC4F3, - 5053: 0xC4F5, - 5054: 0xC4F6, - 5055: 0xC4F7, - 5056: 0xC4F9, - 5057: 0xC4FB, - 5058: 0xC4FC, - 5059: 0xC4FD, - 5060: 0xC4FE, - 5061: 0xC502, - 5062: 0xC503, - 5063: 0xC504, - 5064: 0xC505, - 5065: 0xC506, - 5066: 0xC507, - 5067: 0xC508, - 5068: 0xC509, - 5069: 0xC50A, - 5070: 0xC50B, - 5071: 0xC50D, - 5072: 0xC50E, - 5073: 0xC50F, - 5074: 0xC511, - 5075: 0xC512, - 5076: 0xC513, - 5077: 0xC515, - 5078: 0xC516, - 5079: 0xC517, - 5080: 0xC518, - 5081: 0xC519, - 5082: 0xC51A, - 5083: 0xC51B, - 5084: 0xC51D, - 5085: 0xC51E, - 5086: 0xC51F, - 5087: 0xC520, - 5088: 0xC521, - 5089: 0xC522, - 5090: 0xC523, - 5091: 0xC524, - 5092: 0xC525, - 5093: 0xC526, - 5094: 0xC527, - 5095: 0xC52A, - 5096: 0xC52B, - 5097: 0xC52D, - 5098: 0xC52E, - 5099: 0xC52F, - 5100: 0xC531, - 5101: 0xC532, - 5102: 0xC533, - 5103: 0xC534, - 5104: 0xC535, - 5105: 0xC536, - 5106: 0xC537, - 5107: 0xC53A, - 5108: 0xC53C, - 5109: 0xC53E, - 5110: 0xC53F, - 5111: 0xC540, - 5112: 0xC541, - 5113: 0xC542, - 5114: 0xC543, - 5115: 0xC546, - 5116: 0xC547, - 5117: 0xC54B, - 5118: 0xC54F, - 5119: 0xC550, - 5120: 0xC551, - 5121: 0xC552, - 5122: 0xC556, - 5123: 0xC55A, - 5124: 0xC55B, - 5125: 0xC55C, - 5126: 0xC55F, - 5127: 0xC562, - 5128: 0xC563, - 5129: 0xC565, - 5130: 0xC566, - 5131: 0xC567, - 5132: 0xC569, - 5133: 0xC56A, - 5134: 0xC56B, - 5135: 0xC56C, - 5136: 0xC56D, - 5137: 0xC56E, - 5138: 0xC56F, - 5139: 0xC572, - 5140: 0xC576, - 5141: 0xC577, - 5142: 0xC578, - 5143: 0xC579, - 5144: 0xC57A, - 5145: 0xC57B, - 5146: 0xC57E, - 5147: 0xC57F, - 5148: 0xC581, - 5149: 0xC582, - 5150: 0xC583, - 5151: 0xC585, - 5152: 0xC586, - 5153: 0xC588, - 5154: 0xC589, - 5155: 0xC58A, - 5156: 0xC58B, - 5157: 0xC58E, - 5158: 0xC590, - 5159: 0xC592, - 5160: 0xC593, - 5161: 0xC594, - 5162: 0xC596, - 5163: 0xC599, - 5164: 0xC59A, - 5165: 0xC59B, - 5166: 0xC59D, - 5167: 0xC59E, - 5168: 0xC59F, - 5169: 0xC5A1, - 5170: 0xC5A2, - 5171: 0xC5A3, - 5172: 0xC5A4, - 5173: 0xC5A5, - 5174: 0xC5A6, - 5175: 0xC5A7, - 5176: 0xC5A8, - 5177: 0xC5AA, - 5178: 0xC5AB, - 5179: 0xC5AC, - 5180: 0xC5AD, - 5181: 0xC5AE, - 5182: 0xC5AF, - 5183: 0xC5B0, - 5184: 0xC5B1, - 5185: 0xC5B2, - 5186: 0xC5B3, - 5187: 0xC5B6, - 5188: 0xC5B7, - 5189: 0xC5BA, - 5190: 0xC5BF, - 5191: 0xC5C0, - 5192: 0xC5C1, - 5193: 0xC5C2, - 5194: 0xC5C3, - 5195: 0xC5CB, - 5196: 0xC5CD, - 5197: 0xC5CF, - 5198: 0xC5D2, - 5199: 0xC5D3, - 5200: 0xC5D5, - 5201: 0xC5D6, - 5202: 0xC5D7, - 5203: 0xC5D9, - 5204: 0xC5DA, - 5205: 0xC5DB, - 5206: 0xC5DC, - 5207: 0xC5DD, - 5208: 0xC5DE, - 5209: 0xC5DF, - 5210: 0xC5E2, - 5211: 0xC5E4, - 5212: 0xC5E6, - 5213: 0xC5E7, - 5214: 0xC5E8, - 5215: 0xC5E9, - 5216: 0xC5EA, - 5217: 0xC5EB, - 5218: 0xC5EF, - 5219: 0xC5F1, - 5220: 0xC5F2, - 5221: 0xC5F3, - 5222: 0xC5F5, - 5223: 0xC5F8, - 5224: 0xC5F9, - 5225: 0xC5FA, - 5226: 0xC5FB, - 5227: 0xC602, - 5228: 0xC603, - 5229: 0xC604, - 5230: 0xC609, - 5231: 0xC60A, - 5232: 0xC60B, - 5233: 0xC60D, - 5234: 0xC60E, - 5235: 0xC60F, - 5236: 0xC611, - 5237: 0xC612, - 5238: 0xC613, - 5239: 0xC614, - 5240: 0xC615, - 5241: 0xC616, - 5242: 0xC617, - 5243: 0xC61A, - 5244: 0xC61D, - 5245: 0xC61E, - 5246: 0xC61F, - 5247: 0xC620, - 5248: 0xC621, - 5249: 0xC622, - 5250: 0xC623, - 5251: 0xC626, - 5252: 0xC627, - 5253: 0xC629, - 5254: 0xC62A, - 5255: 0xC62B, - 5256: 0xC62F, - 5257: 0xC631, - 5258: 0xC632, - 5259: 0xC636, - 5260: 0xC638, - 5261: 0xC63A, - 5262: 0xC63C, - 5263: 0xC63D, - 5264: 0xC63E, - 5265: 0xC63F, - 5266: 0xC642, - 5267: 0xC643, - 5268: 0xC645, - 5269: 0xC646, - 5270: 0xC647, - 5271: 0xC649, - 5272: 0xC64A, - 5273: 0xC64B, - 5274: 0xC64C, - 5275: 0xC64D, - 5276: 0xC64E, - 5277: 0xC64F, - 5278: 0xC652, - 5279: 0xC656, - 5280: 0xC657, - 5281: 0xC658, - 5282: 0xC659, - 5283: 0xC65A, - 5284: 0xC65B, - 5285: 0xC65E, - 5286: 0xC65F, - 5287: 0xC661, - 5288: 0xC662, - 5289: 0xC663, - 5290: 0xC664, - 5291: 0xC665, - 5292: 0xC666, - 5293: 0xC667, - 5294: 0xC668, - 5295: 0xC669, - 5296: 0xC66A, - 5297: 0xC66B, - 5298: 0xC66D, - 5299: 0xC66E, - 5300: 0xC670, - 5301: 0xC672, - 5302: 0xC673, - 5303: 0xC674, - 5304: 0xC675, - 5305: 0xC676, - 5306: 0xC677, - 5307: 0xC67A, - 5308: 0xC67B, - 5309: 0xC67D, - 5310: 0xC67E, - 5311: 0xC67F, - 5312: 0xC681, - 5313: 0xC682, - 5314: 0xC683, - 5315: 0xC684, - 5316: 0xC685, - 5317: 0xC686, - 5318: 0xC687, - 5319: 0xC68A, - 5320: 0xC68C, - 5321: 0xC68E, - 5322: 0xC68F, - 5323: 0xC690, - 5324: 0xC691, - 5325: 0xC692, - 5326: 0xC693, - 5327: 0xC696, - 5328: 0xC697, - 5329: 0xC699, - 5330: 0xC69A, - 5331: 0xC69B, - 5332: 0xC69D, - 5333: 0xC69E, - 5334: 0xC69F, - 5335: 0xC6A0, - 5336: 0xC6A1, - 5337: 0xC6A2, - 5338: 0xC6A3, - 5339: 0xC6A6, - 5340: 0xC6A8, - 5341: 0xC6AA, - 5342: 0xC6AB, - 5343: 0xC6AC, - 5344: 0xC6AD, - 5345: 0xC6AE, - 5346: 0xC6AF, - 5347: 0xC6B2, - 5348: 0xC6B3, - 5349: 0xC6B5, - 5350: 0xC6B6, - 5351: 0xC6B7, - 5352: 0xC6BB, - 5353: 0xC6BC, - 5354: 0xC6BD, - 5355: 0xC6BE, - 5356: 0xC6BF, - 5357: 0xC6C2, - 5358: 0xC6C4, - 5359: 0xC6C6, - 5360: 0xC6C7, - 5361: 0xC6C8, - 5362: 0xC6C9, - 5363: 0xC6CA, - 5364: 0xC6CB, - 5365: 0xC6CE, - 5366: 0xC6CF, - 5367: 0xC6D1, - 5368: 0xC6D2, - 5369: 0xC6D3, - 5370: 0xC6D5, - 5371: 0xC6D6, - 5372: 0xC6D7, - 5373: 0xC6D8, - 5374: 0xC6D9, - 5375: 0xC6DA, - 5376: 0xC6DB, - 5377: 0xC6DE, - 5378: 0xC6DF, - 5379: 0xC6E2, - 5380: 0xC6E3, - 5381: 0xC6E4, - 5382: 0xC6E5, - 5383: 0xC6E6, - 5384: 0xC6E7, - 5385: 0xC6EA, - 5386: 0xC6EB, - 5387: 0xC6ED, - 5388: 0xC6EE, - 5389: 0xC6EF, - 5390: 0xC6F1, - 5391: 0xC6F2, - 5392: 0xC6F3, - 5393: 0xC6F4, - 5394: 0xC6F5, - 5395: 0xC6F6, - 5396: 0xC6F7, - 5397: 0xC6FA, - 5398: 0xC6FB, - 5399: 0xC6FC, - 5400: 0xC6FE, - 5401: 0xC6FF, - 5402: 0xC700, - 5403: 0xC701, - 5404: 0xC702, - 5405: 0xC703, - 5406: 0xC706, - 5407: 0xC707, - 5408: 0xC709, - 5409: 0xC70A, - 5410: 0xC70B, - 5411: 0xC70D, - 5412: 0xC70E, - 5413: 0xC70F, - 5414: 0xC710, - 5415: 0xC711, - 5416: 0xC712, - 5417: 0xC713, - 5418: 0xC716, - 5419: 0xC718, - 5420: 0xC71A, - 5421: 0xC71B, - 5422: 0xC71C, - 5423: 0xC71D, - 5424: 0xC71E, - 5425: 0xC71F, - 5426: 0xC722, - 5427: 0xC723, - 5428: 0xC725, - 5429: 0xC726, - 5430: 0xC727, - 5431: 0xC729, - 5432: 0xC72A, - 5433: 0xC72B, - 5434: 0xC72C, - 5435: 0xC72D, - 5436: 0xC72E, - 5437: 0xC72F, - 5438: 0xC732, - 5439: 0xC734, - 5440: 0xC736, - 5441: 0xC738, - 5442: 0xC739, - 5443: 0xC73A, - 5444: 0xC73B, - 5445: 0xC73E, - 5446: 0xC73F, - 5447: 0xC741, - 5448: 0xC742, - 5449: 0xC743, - 5450: 0xC745, - 5451: 0xC746, - 5452: 0xC747, - 5453: 0xC748, - 5454: 0xC749, - 5455: 0xC74B, - 5456: 0xC74E, - 5457: 0xC750, - 5458: 0xC759, - 5459: 0xC75A, - 5460: 0xC75B, - 5461: 0xC75D, - 5462: 0xC75E, - 5463: 0xC75F, - 5464: 0xC761, - 5465: 0xC762, - 5466: 0xC763, - 5467: 0xC764, - 5468: 0xC765, - 5469: 0xC766, - 5470: 0xC767, - 5471: 0xC769, - 5472: 0xC76A, - 5473: 0xC76C, - 5474: 0xC76D, - 5475: 0xC76E, - 5476: 0xC76F, - 5477: 0xC770, - 5478: 0xC771, - 5479: 0xC772, - 5480: 0xC773, - 5481: 0xC776, - 5482: 0xC777, - 5483: 0xC779, - 5484: 0xC77A, - 5485: 0xC77B, - 5486: 0xC77F, - 5487: 0xC780, - 5488: 0xC781, - 5489: 0xC782, - 5490: 0xC786, - 5491: 0xC78B, - 5492: 0xC78C, - 5493: 0xC78D, - 5494: 0xC78F, - 5495: 0xC792, - 5496: 0xC793, - 5497: 0xC795, - 5498: 0xC799, - 5499: 0xC79B, - 5500: 0xC79C, - 5501: 0xC79D, - 5502: 0xC79E, - 5503: 0xC79F, - 5504: 0xC7A2, - 5505: 0xC7A7, - 5506: 0xC7A8, - 5507: 0xC7A9, - 5508: 0xC7AA, - 5509: 0xC7AB, - 5510: 0xC7AE, - 5511: 0xC7AF, - 5512: 0xC7B1, - 5513: 0xC7B2, - 5514: 0xC7B3, - 5515: 0xC7B5, - 5516: 0xC7B6, - 5517: 0xC7B7, - 5518: 0xC7B8, - 5519: 0xC7B9, - 5520: 0xC7BA, - 5521: 0xC7BB, - 5522: 0xC7BE, - 5523: 0xC7C2, - 5524: 0xC7C3, - 5525: 0xC7C4, - 5526: 0xC7C5, - 5527: 0xC7C6, - 5528: 0xC7C7, - 5529: 0xC7CA, - 5530: 0xC7CB, - 5531: 0xC7CD, - 5532: 0xC7CF, - 5533: 0xC7D1, - 5534: 0xC7D2, - 5535: 0xC7D3, - 5536: 0xC7D4, - 5537: 0xC7D5, - 5538: 0xC7D6, - 5539: 0xC7D7, - 5540: 0xC7D9, - 5541: 0xC7DA, - 5542: 0xC7DB, - 5543: 0xC7DC, - 5544: 0xC7DE, - 5545: 0xC7DF, - 5546: 0xC7E0, - 5547: 0xC7E1, - 5548: 0xC7E2, - 5549: 0xC7E3, - 5550: 0xC7E5, - 5551: 0xC7E6, - 5552: 0xC7E7, - 5553: 0xC7E9, - 5554: 0xC7EA, - 5555: 0xC7EB, - 5556: 0xC7ED, - 5557: 0xC7EE, - 5558: 0xC7EF, - 5559: 0xC7F0, - 5560: 0xC7F1, - 5561: 0xC7F2, - 5562: 0xC7F3, - 5563: 0xC7F4, - 5564: 0xC7F5, - 5565: 0xC7F6, - 5566: 0xC7F7, - 5567: 0xC7F8, - 5568: 0xC7F9, - 5569: 0xC7FA, - 5570: 0xC7FB, - 5571: 0xC7FC, - 5572: 0xC7FD, - 5573: 0xC7FE, - 5574: 0xC7FF, - 5575: 0xC802, - 5576: 0xC803, - 5577: 0xC805, - 5578: 0xC806, - 5579: 0xC807, - 5580: 0xC809, - 5581: 0xC80B, - 5582: 0xC80C, - 5583: 0xC80D, - 5584: 0xC80E, - 5585: 0xC80F, - 5586: 0xC812, - 5587: 0xC814, - 5588: 0xC817, - 5589: 0xC818, - 5590: 0xC819, - 5591: 0xC81A, - 5592: 0xC81B, - 5593: 0xC81E, - 5594: 0xC81F, - 5595: 0xC821, - 5596: 0xC822, - 5597: 0xC823, - 5598: 0xC825, - 5599: 0xC826, - 5600: 0xC827, - 5601: 0xC828, - 5602: 0xC829, - 5603: 0xC82A, - 5604: 0xC82B, - 5605: 0xC82E, - 5606: 0xC830, - 5607: 0xC832, - 5608: 0xC833, - 5609: 0xC834, - 5610: 0xC835, - 5611: 0xC836, - 5612: 0xC837, - 5613: 0xC839, - 5614: 0xC83A, - 5615: 0xC83B, - 5616: 0xC83D, - 5617: 0xC83E, - 5618: 0xC83F, - 5619: 0xC841, - 5620: 0xC842, - 5621: 0xC843, - 5622: 0xC844, - 5623: 0xC845, - 5624: 0xC846, - 5625: 0xC847, - 5626: 0xC84A, - 5627: 0xC84B, - 5628: 0xC84E, - 5629: 0xC84F, - 5630: 0xC850, - 5631: 0xC851, - 5632: 0xC852, - 5633: 0xC853, - 5634: 0xC855, - 5635: 0xC856, - 5636: 0xC857, - 5637: 0xC858, - 5638: 0xC859, - 5639: 0xC85A, - 5640: 0xC85B, - 5641: 0xC85C, - 5642: 0xC85D, - 5643: 0xC85E, - 5644: 0xC85F, - 5645: 0xC860, - 5646: 0xC861, - 5647: 0xC862, - 5648: 0xC863, - 5649: 0xC864, - 5650: 0xC865, - 5651: 0xC866, - 5652: 0xC867, - 5653: 0xC868, - 5654: 0xC869, - 5655: 0xC86A, - 5656: 0xC86B, - 5657: 0xC86C, - 5658: 0xC86D, - 5659: 0xC86E, - 5660: 0xC86F, - 5661: 0xC872, - 5662: 0xC873, - 5663: 0xC875, - 5664: 0xC876, - 5665: 0xC877, - 5666: 0xC879, - 5667: 0xC87B, - 5668: 0xC87C, - 5669: 0xC87D, - 5670: 0xC87E, - 5671: 0xC87F, - 5672: 0xC882, - 5673: 0xC884, - 5674: 0xC888, - 5675: 0xC889, - 5676: 0xC88A, - 5677: 0xC88E, - 5678: 0xC88F, - 5679: 0xC890, - 5680: 0xC891, - 5681: 0xC892, - 5682: 0xC893, - 5683: 0xC895, - 5684: 0xC896, - 5685: 0xC897, - 5686: 0xC898, - 5687: 0xC899, - 5688: 0xC89A, - 5689: 0xC89B, - 5690: 0xC89C, - 5691: 0xC89E, - 5692: 0xC8A0, - 5693: 0xC8A2, - 5694: 0xC8A3, - 5695: 0xC8A4, - 5696: 0xC8A5, - 5697: 0xC8A6, - 5698: 0xC8A7, - 5699: 0xC8A9, - 5700: 0xC8AA, - 5701: 0xC8AB, - 5702: 0xC8AC, - 5703: 0xC8AD, - 5704: 0xC8AE, - 5705: 0xC8AF, - 5706: 0xC8B0, - 5707: 0xC8B1, - 5708: 0xC8B2, - 5709: 0xC8B3, - 5710: 0xC8B4, - 5711: 0xC8B5, - 5712: 0xC8B6, - 5713: 0xC8B7, - 5714: 0xC8B8, - 5715: 0xC8B9, - 5716: 0xC8BA, - 5717: 0xC8BB, - 5718: 0xC8BE, - 5719: 0xC8BF, - 5720: 0xC8C0, - 5721: 0xC8C1, - 5722: 0xC8C2, - 5723: 0xC8C3, - 5724: 0xC8C5, - 5725: 0xC8C6, - 5726: 0xC8C7, - 5727: 0xC8C9, - 5728: 0xC8CA, - 5729: 0xC8CB, - 5730: 0xC8CD, - 5731: 0xC8CE, - 5732: 0xC8CF, - 5733: 0xC8D0, - 5734: 0xC8D1, - 5735: 0xC8D2, - 5736: 0xC8D3, - 5737: 0xC8D6, - 5738: 0xC8D8, - 5739: 0xC8DA, - 5740: 0xC8DB, - 5741: 0xC8DC, - 5742: 0xC8DD, - 5743: 0xC8DE, - 5744: 0xC8DF, - 5745: 0xC8E2, - 5746: 0xC8E3, - 5747: 0xC8E5, - 5748: 0xC8E6, - 5749: 0xC8E7, - 5750: 0xC8E8, - 5751: 0xC8E9, - 5752: 0xC8EA, - 5753: 0xC8EB, - 5754: 0xC8EC, - 5755: 0xC8ED, - 5756: 0xC8EE, - 5757: 0xC8EF, - 5758: 0xC8F0, - 5759: 0xC8F1, - 5760: 0xC8F2, - 5761: 0xC8F3, - 5762: 0xC8F4, - 5763: 0xC8F6, - 5764: 0xC8F7, - 5765: 0xC8F8, - 5766: 0xC8F9, - 5767: 0xC8FA, - 5768: 0xC8FB, - 5769: 0xC8FE, - 5770: 0xC8FF, - 5771: 0xC901, - 5772: 0xC902, - 5773: 0xC903, - 5774: 0xC907, - 5775: 0xC908, - 5776: 0xC909, - 5777: 0xC90A, - 5778: 0xC90B, - 5779: 0xC90E, - 5780: 0x3000, - 5781: 0x3001, - 5782: 0x3002, - 5783: 0x00B7, - 5784: 0x2025, - 5785: 0x2026, - 5786: 0x00A8, - 5787: 0x3003, - 5788: 0x00AD, - 5789: 0x2015, - 5790: 0x2225, - 5791: 0xFF3C, - 5792: 0x223C, - 5793: 0x2018, - 5794: 0x2019, - 5795: 0x201C, - 5796: 0x201D, - 5797: 0x3014, - 5798: 0x3015, - 5799: 0x3008, - 5800: 0x3009, - 5801: 0x300A, - 5802: 0x300B, - 5803: 0x300C, - 5804: 0x300D, - 5805: 0x300E, - 5806: 0x300F, - 5807: 0x3010, - 5808: 0x3011, - 5809: 0x00B1, - 5810: 0x00D7, - 5811: 0x00F7, - 5812: 0x2260, - 5813: 0x2264, - 5814: 0x2265, - 5815: 0x221E, - 5816: 0x2234, - 5817: 0x00B0, - 5818: 0x2032, - 5819: 0x2033, - 5820: 0x2103, - 5821: 0x212B, - 5822: 0xFFE0, - 5823: 0xFFE1, - 5824: 0xFFE5, - 5825: 0x2642, - 5826: 0x2640, - 5827: 0x2220, - 5828: 0x22A5, - 5829: 0x2312, - 5830: 0x2202, - 5831: 0x2207, - 5832: 0x2261, - 5833: 0x2252, - 5834: 0x00A7, - 5835: 0x203B, - 5836: 0x2606, - 5837: 0x2605, - 5838: 0x25CB, - 5839: 0x25CF, - 5840: 0x25CE, - 5841: 0x25C7, - 5842: 0x25C6, - 5843: 0x25A1, - 5844: 0x25A0, - 5845: 0x25B3, - 5846: 0x25B2, - 5847: 0x25BD, - 5848: 0x25BC, - 5849: 0x2192, - 5850: 0x2190, - 5851: 0x2191, - 5852: 0x2193, - 5853: 0x2194, - 5854: 0x3013, - 5855: 0x226A, - 5856: 0x226B, - 5857: 0x221A, - 5858: 0x223D, - 5859: 0x221D, - 5860: 0x2235, - 5861: 0x222B, - 5862: 0x222C, - 5863: 0x2208, - 5864: 0x220B, - 5865: 0x2286, - 5866: 0x2287, - 5867: 0x2282, - 5868: 0x2283, - 5869: 0x222A, - 5870: 0x2229, - 5871: 0x2227, - 5872: 0x2228, - 5873: 0xFFE2, - 5874: 0xC910, - 5875: 0xC912, - 5876: 0xC913, - 5877: 0xC914, - 5878: 0xC915, - 5879: 0xC916, - 5880: 0xC917, - 5881: 0xC919, - 5882: 0xC91A, - 5883: 0xC91B, - 5884: 0xC91C, - 5885: 0xC91D, - 5886: 0xC91E, - 5887: 0xC91F, - 5888: 0xC920, - 5889: 0xC921, - 5890: 0xC922, - 5891: 0xC923, - 5892: 0xC924, - 5893: 0xC925, - 5894: 0xC926, - 5895: 0xC927, - 5896: 0xC928, - 5897: 0xC929, - 5898: 0xC92A, - 5899: 0xC92B, - 5900: 0xC92D, - 5901: 0xC92E, - 5902: 0xC92F, - 5903: 0xC930, - 5904: 0xC931, - 5905: 0xC932, - 5906: 0xC933, - 5907: 0xC935, - 5908: 0xC936, - 5909: 0xC937, - 5910: 0xC938, - 5911: 0xC939, - 5912: 0xC93A, - 5913: 0xC93B, - 5914: 0xC93C, - 5915: 0xC93D, - 5916: 0xC93E, - 5917: 0xC93F, - 5918: 0xC940, - 5919: 0xC941, - 5920: 0xC942, - 5921: 0xC943, - 5922: 0xC944, - 5923: 0xC945, - 5924: 0xC946, - 5925: 0xC947, - 5926: 0xC948, - 5927: 0xC949, - 5928: 0xC94A, - 5929: 0xC94B, - 5930: 0xC94C, - 5931: 0xC94D, - 5932: 0xC94E, - 5933: 0xC94F, - 5934: 0xC952, - 5935: 0xC953, - 5936: 0xC955, - 5937: 0xC956, - 5938: 0xC957, - 5939: 0xC959, - 5940: 0xC95A, - 5941: 0xC95B, - 5942: 0xC95C, - 5943: 0xC95D, - 5944: 0xC95E, - 5945: 0xC95F, - 5946: 0xC962, - 5947: 0xC964, - 5948: 0xC965, - 5949: 0xC966, - 5950: 0xC967, - 5951: 0xC968, - 5952: 0xC969, - 5953: 0xC96A, - 5954: 0xC96B, - 5955: 0xC96D, - 5956: 0xC96E, - 5957: 0xC96F, - 5958: 0x21D2, - 5959: 0x21D4, - 5960: 0x2200, - 5961: 0x2203, - 5962: 0x00B4, - 5963: 0xFF5E, - 5964: 0x02C7, - 5965: 0x02D8, - 5966: 0x02DD, - 5967: 0x02DA, - 5968: 0x02D9, - 5969: 0x00B8, - 5970: 0x02DB, - 5971: 0x00A1, - 5972: 0x00BF, - 5973: 0x02D0, - 5974: 0x222E, - 5975: 0x2211, - 5976: 0x220F, - 5977: 0x00A4, - 5978: 0x2109, - 5979: 0x2030, - 5980: 0x25C1, - 5981: 0x25C0, - 5982: 0x25B7, - 5983: 0x25B6, - 5984: 0x2664, - 5985: 0x2660, - 5986: 0x2661, - 5987: 0x2665, - 5988: 0x2667, - 5989: 0x2663, - 5990: 0x2299, - 5991: 0x25C8, - 5992: 0x25A3, - 5993: 0x25D0, - 5994: 0x25D1, - 5995: 0x2592, - 5996: 0x25A4, - 5997: 0x25A5, - 5998: 0x25A8, - 5999: 0x25A7, - 6000: 0x25A6, - 6001: 0x25A9, - 6002: 0x2668, - 6003: 0x260F, - 6004: 0x260E, - 6005: 0x261C, - 6006: 0x261E, - 6007: 0x00B6, - 6008: 0x2020, - 6009: 0x2021, - 6010: 0x2195, - 6011: 0x2197, - 6012: 0x2199, - 6013: 0x2196, - 6014: 0x2198, - 6015: 0x266D, - 6016: 0x2669, - 6017: 0x266A, - 6018: 0x266C, - 6019: 0x327F, - 6020: 0x321C, - 6021: 0x2116, - 6022: 0x33C7, - 6023: 0x2122, - 6024: 0x33C2, - 6025: 0x33D8, - 6026: 0x2121, - 6027: 0x20AC, - 6028: 0x00AE, - 6052: 0xC971, - 6053: 0xC972, - 6054: 0xC973, - 6055: 0xC975, - 6056: 0xC976, - 6057: 0xC977, - 6058: 0xC978, - 6059: 0xC979, - 6060: 0xC97A, - 6061: 0xC97B, - 6062: 0xC97D, - 6063: 0xC97E, - 6064: 0xC97F, - 6065: 0xC980, - 6066: 0xC981, - 6067: 0xC982, - 6068: 0xC983, - 6069: 0xC984, - 6070: 0xC985, - 6071: 0xC986, - 6072: 0xC987, - 6073: 0xC98A, - 6074: 0xC98B, - 6075: 0xC98D, - 6076: 0xC98E, - 6077: 0xC98F, - 6078: 0xC991, - 6079: 0xC992, - 6080: 0xC993, - 6081: 0xC994, - 6082: 0xC995, - 6083: 0xC996, - 6084: 0xC997, - 6085: 0xC99A, - 6086: 0xC99C, - 6087: 0xC99E, - 6088: 0xC99F, - 6089: 0xC9A0, - 6090: 0xC9A1, - 6091: 0xC9A2, - 6092: 0xC9A3, - 6093: 0xC9A4, - 6094: 0xC9A5, - 6095: 0xC9A6, - 6096: 0xC9A7, - 6097: 0xC9A8, - 6098: 0xC9A9, - 6099: 0xC9AA, - 6100: 0xC9AB, - 6101: 0xC9AC, - 6102: 0xC9AD, - 6103: 0xC9AE, - 6104: 0xC9AF, - 6105: 0xC9B0, - 6106: 0xC9B1, - 6107: 0xC9B2, - 6108: 0xC9B3, - 6109: 0xC9B4, - 6110: 0xC9B5, - 6111: 0xC9B6, - 6112: 0xC9B7, - 6113: 0xC9B8, - 6114: 0xC9B9, - 6115: 0xC9BA, - 6116: 0xC9BB, - 6117: 0xC9BC, - 6118: 0xC9BD, - 6119: 0xC9BE, - 6120: 0xC9BF, - 6121: 0xC9C2, - 6122: 0xC9C3, - 6123: 0xC9C5, - 6124: 0xC9C6, - 6125: 0xC9C9, - 6126: 0xC9CB, - 6127: 0xC9CC, - 6128: 0xC9CD, - 6129: 0xC9CE, - 6130: 0xC9CF, - 6131: 0xC9D2, - 6132: 0xC9D4, - 6133: 0xC9D7, - 6134: 0xC9D8, - 6135: 0xC9DB, - 6136: 0xFF01, - 6137: 0xFF02, - 6138: 0xFF03, - 6139: 0xFF04, - 6140: 0xFF05, - 6141: 0xFF06, - 6142: 0xFF07, - 6143: 0xFF08, - 6144: 0xFF09, - 6145: 0xFF0A, - 6146: 0xFF0B, - 6147: 0xFF0C, - 6148: 0xFF0D, - 6149: 0xFF0E, - 6150: 0xFF0F, - 6151: 0xFF10, - 6152: 0xFF11, - 6153: 0xFF12, - 6154: 0xFF13, - 6155: 0xFF14, - 6156: 0xFF15, - 6157: 0xFF16, - 6158: 0xFF17, - 6159: 0xFF18, - 6160: 0xFF19, - 6161: 0xFF1A, - 6162: 0xFF1B, - 6163: 0xFF1C, - 6164: 0xFF1D, - 6165: 0xFF1E, - 6166: 0xFF1F, - 6167: 0xFF20, - 6168: 0xFF21, - 6169: 0xFF22, - 6170: 0xFF23, - 6171: 0xFF24, - 6172: 0xFF25, - 6173: 0xFF26, - 6174: 0xFF27, - 6175: 0xFF28, - 6176: 0xFF29, - 6177: 0xFF2A, - 6178: 0xFF2B, - 6179: 0xFF2C, - 6180: 0xFF2D, - 6181: 0xFF2E, - 6182: 0xFF2F, - 6183: 0xFF30, - 6184: 0xFF31, - 6185: 0xFF32, - 6186: 0xFF33, - 6187: 0xFF34, - 6188: 0xFF35, - 6189: 0xFF36, - 6190: 0xFF37, - 6191: 0xFF38, - 6192: 0xFF39, - 6193: 0xFF3A, - 6194: 0xFF3B, - 6195: 0xFFE6, - 6196: 0xFF3D, - 6197: 0xFF3E, - 6198: 0xFF3F, - 6199: 0xFF40, - 6200: 0xFF41, - 6201: 0xFF42, - 6202: 0xFF43, - 6203: 0xFF44, - 6204: 0xFF45, - 6205: 0xFF46, - 6206: 0xFF47, - 6207: 0xFF48, - 6208: 0xFF49, - 6209: 0xFF4A, - 6210: 0xFF4B, - 6211: 0xFF4C, - 6212: 0xFF4D, - 6213: 0xFF4E, - 6214: 0xFF4F, - 6215: 0xFF50, - 6216: 0xFF51, - 6217: 0xFF52, - 6218: 0xFF53, - 6219: 0xFF54, - 6220: 0xFF55, - 6221: 0xFF56, - 6222: 0xFF57, - 6223: 0xFF58, - 6224: 0xFF59, - 6225: 0xFF5A, - 6226: 0xFF5B, - 6227: 0xFF5C, - 6228: 0xFF5D, - 6229: 0xFFE3, - 6230: 0xC9DE, - 6231: 0xC9DF, - 6232: 0xC9E1, - 6233: 0xC9E3, - 6234: 0xC9E5, - 6235: 0xC9E6, - 6236: 0xC9E8, - 6237: 0xC9E9, - 6238: 0xC9EA, - 6239: 0xC9EB, - 6240: 0xC9EE, - 6241: 0xC9F2, - 6242: 0xC9F3, - 6243: 0xC9F4, - 6244: 0xC9F5, - 6245: 0xC9F6, - 6246: 0xC9F7, - 6247: 0xC9FA, - 6248: 0xC9FB, - 6249: 0xC9FD, - 6250: 0xC9FE, - 6251: 0xC9FF, - 6252: 0xCA01, - 6253: 0xCA02, - 6254: 0xCA03, - 6255: 0xCA04, - 6256: 0xCA05, - 6257: 0xCA06, - 6258: 0xCA07, - 6259: 0xCA0A, - 6260: 0xCA0E, - 6261: 0xCA0F, - 6262: 0xCA10, - 6263: 0xCA11, - 6264: 0xCA12, - 6265: 0xCA13, - 6266: 0xCA15, - 6267: 0xCA16, - 6268: 0xCA17, - 6269: 0xCA19, - 6270: 0xCA1A, - 6271: 0xCA1B, - 6272: 0xCA1C, - 6273: 0xCA1D, - 6274: 0xCA1E, - 6275: 0xCA1F, - 6276: 0xCA20, - 6277: 0xCA21, - 6278: 0xCA22, - 6279: 0xCA23, - 6280: 0xCA24, - 6281: 0xCA25, - 6282: 0xCA26, - 6283: 0xCA27, - 6284: 0xCA28, - 6285: 0xCA2A, - 6286: 0xCA2B, - 6287: 0xCA2C, - 6288: 0xCA2D, - 6289: 0xCA2E, - 6290: 0xCA2F, - 6291: 0xCA30, - 6292: 0xCA31, - 6293: 0xCA32, - 6294: 0xCA33, - 6295: 0xCA34, - 6296: 0xCA35, - 6297: 0xCA36, - 6298: 0xCA37, - 6299: 0xCA38, - 6300: 0xCA39, - 6301: 0xCA3A, - 6302: 0xCA3B, - 6303: 0xCA3C, - 6304: 0xCA3D, - 6305: 0xCA3E, - 6306: 0xCA3F, - 6307: 0xCA40, - 6308: 0xCA41, - 6309: 0xCA42, - 6310: 0xCA43, - 6311: 0xCA44, - 6312: 0xCA45, - 6313: 0xCA46, - 6314: 0x3131, - 6315: 0x3132, - 6316: 0x3133, - 6317: 0x3134, - 6318: 0x3135, - 6319: 0x3136, - 6320: 0x3137, - 6321: 0x3138, - 6322: 0x3139, - 6323: 0x313A, - 6324: 0x313B, - 6325: 0x313C, - 6326: 0x313D, - 6327: 0x313E, - 6328: 0x313F, - 6329: 0x3140, - 6330: 0x3141, - 6331: 0x3142, - 6332: 0x3143, - 6333: 0x3144, - 6334: 0x3145, - 6335: 0x3146, - 6336: 0x3147, - 6337: 0x3148, - 6338: 0x3149, - 6339: 0x314A, - 6340: 0x314B, - 6341: 0x314C, - 6342: 0x314D, - 6343: 0x314E, - 6344: 0x314F, - 6345: 0x3150, - 6346: 0x3151, - 6347: 0x3152, - 6348: 0x3153, - 6349: 0x3154, - 6350: 0x3155, - 6351: 0x3156, - 6352: 0x3157, - 6353: 0x3158, - 6354: 0x3159, - 6355: 0x315A, - 6356: 0x315B, - 6357: 0x315C, - 6358: 0x315D, - 6359: 0x315E, - 6360: 0x315F, - 6361: 0x3160, - 6362: 0x3161, - 6363: 0x3162, - 6364: 0x3163, - 6365: 0x3164, - 6366: 0x3165, - 6367: 0x3166, - 6368: 0x3167, - 6369: 0x3168, - 6370: 0x3169, - 6371: 0x316A, - 6372: 0x316B, - 6373: 0x316C, - 6374: 0x316D, - 6375: 0x316E, - 6376: 0x316F, - 6377: 0x3170, - 6378: 0x3171, - 6379: 0x3172, - 6380: 0x3173, - 6381: 0x3174, - 6382: 0x3175, - 6383: 0x3176, - 6384: 0x3177, - 6385: 0x3178, - 6386: 0x3179, - 6387: 0x317A, - 6388: 0x317B, - 6389: 0x317C, - 6390: 0x317D, - 6391: 0x317E, - 6392: 0x317F, - 6393: 0x3180, - 6394: 0x3181, - 6395: 0x3182, - 6396: 0x3183, - 6397: 0x3184, - 6398: 0x3185, - 6399: 0x3186, - 6400: 0x3187, - 6401: 0x3188, - 6402: 0x3189, - 6403: 0x318A, - 6404: 0x318B, - 6405: 0x318C, - 6406: 0x318D, - 6407: 0x318E, - 6408: 0xCA47, - 6409: 0xCA48, - 6410: 0xCA49, - 6411: 0xCA4A, - 6412: 0xCA4B, - 6413: 0xCA4E, - 6414: 0xCA4F, - 6415: 0xCA51, - 6416: 0xCA52, - 6417: 0xCA53, - 6418: 0xCA55, - 6419: 0xCA56, - 6420: 0xCA57, - 6421: 0xCA58, - 6422: 0xCA59, - 6423: 0xCA5A, - 6424: 0xCA5B, - 6425: 0xCA5E, - 6426: 0xCA62, - 6427: 0xCA63, - 6428: 0xCA64, - 6429: 0xCA65, - 6430: 0xCA66, - 6431: 0xCA67, - 6432: 0xCA69, - 6433: 0xCA6A, - 6434: 0xCA6B, - 6435: 0xCA6C, - 6436: 0xCA6D, - 6437: 0xCA6E, - 6438: 0xCA6F, - 6439: 0xCA70, - 6440: 0xCA71, - 6441: 0xCA72, - 6442: 0xCA73, - 6443: 0xCA74, - 6444: 0xCA75, - 6445: 0xCA76, - 6446: 0xCA77, - 6447: 0xCA78, - 6448: 0xCA79, - 6449: 0xCA7A, - 6450: 0xCA7B, - 6451: 0xCA7C, - 6452: 0xCA7E, - 6453: 0xCA7F, - 6454: 0xCA80, - 6455: 0xCA81, - 6456: 0xCA82, - 6457: 0xCA83, - 6458: 0xCA85, - 6459: 0xCA86, - 6460: 0xCA87, - 6461: 0xCA88, - 6462: 0xCA89, - 6463: 0xCA8A, - 6464: 0xCA8B, - 6465: 0xCA8C, - 6466: 0xCA8D, - 6467: 0xCA8E, - 6468: 0xCA8F, - 6469: 0xCA90, - 6470: 0xCA91, - 6471: 0xCA92, - 6472: 0xCA93, - 6473: 0xCA94, - 6474: 0xCA95, - 6475: 0xCA96, - 6476: 0xCA97, - 6477: 0xCA99, - 6478: 0xCA9A, - 6479: 0xCA9B, - 6480: 0xCA9C, - 6481: 0xCA9D, - 6482: 0xCA9E, - 6483: 0xCA9F, - 6484: 0xCAA0, - 6485: 0xCAA1, - 6486: 0xCAA2, - 6487: 0xCAA3, - 6488: 0xCAA4, - 6489: 0xCAA5, - 6490: 0xCAA6, - 6491: 0xCAA7, - 6492: 0x2170, - 6493: 0x2171, - 6494: 0x2172, - 6495: 0x2173, - 6496: 0x2174, - 6497: 0x2175, - 6498: 0x2176, - 6499: 0x2177, - 6500: 0x2178, - 6501: 0x2179, - 6507: 0x2160, - 6508: 0x2161, - 6509: 0x2162, - 6510: 0x2163, - 6511: 0x2164, - 6512: 0x2165, - 6513: 0x2166, - 6514: 0x2167, - 6515: 0x2168, - 6516: 0x2169, - 6524: 0x0391, - 6525: 0x0392, - 6526: 0x0393, - 6527: 0x0394, - 6528: 0x0395, - 6529: 0x0396, - 6530: 0x0397, - 6531: 0x0398, - 6532: 0x0399, - 6533: 0x039A, - 6534: 0x039B, - 6535: 0x039C, - 6536: 0x039D, - 6537: 0x039E, - 6538: 0x039F, - 6539: 0x03A0, - 6540: 0x03A1, - 6541: 0x03A3, - 6542: 0x03A4, - 6543: 0x03A5, - 6544: 0x03A6, - 6545: 0x03A7, - 6546: 0x03A8, - 6547: 0x03A9, - 6556: 0x03B1, - 6557: 0x03B2, - 6558: 0x03B3, - 6559: 0x03B4, - 6560: 0x03B5, - 6561: 0x03B6, - 6562: 0x03B7, - 6563: 0x03B8, - 6564: 0x03B9, - 6565: 0x03BA, - 6566: 0x03BB, - 6567: 0x03BC, - 6568: 0x03BD, - 6569: 0x03BE, - 6570: 0x03BF, - 6571: 0x03C0, - 6572: 0x03C1, - 6573: 0x03C3, - 6574: 0x03C4, - 6575: 0x03C5, - 6576: 0x03C6, - 6577: 0x03C7, - 6578: 0x03C8, - 6579: 0x03C9, - 6586: 0xCAA8, - 6587: 0xCAA9, - 6588: 0xCAAA, - 6589: 0xCAAB, - 6590: 0xCAAC, - 6591: 0xCAAD, - 6592: 0xCAAE, - 6593: 0xCAAF, - 6594: 0xCAB0, - 6595: 0xCAB1, - 6596: 0xCAB2, - 6597: 0xCAB3, - 6598: 0xCAB4, - 6599: 0xCAB5, - 6600: 0xCAB6, - 6601: 0xCAB7, - 6602: 0xCAB8, - 6603: 0xCAB9, - 6604: 0xCABA, - 6605: 0xCABB, - 6606: 0xCABE, - 6607: 0xCABF, - 6608: 0xCAC1, - 6609: 0xCAC2, - 6610: 0xCAC3, - 6611: 0xCAC5, - 6612: 0xCAC6, - 6613: 0xCAC7, - 6614: 0xCAC8, - 6615: 0xCAC9, - 6616: 0xCACA, - 6617: 0xCACB, - 6618: 0xCACE, - 6619: 0xCAD0, - 6620: 0xCAD2, - 6621: 0xCAD4, - 6622: 0xCAD5, - 6623: 0xCAD6, - 6624: 0xCAD7, - 6625: 0xCADA, - 6626: 0xCADB, - 6627: 0xCADC, - 6628: 0xCADD, - 6629: 0xCADE, - 6630: 0xCADF, - 6631: 0xCAE1, - 6632: 0xCAE2, - 6633: 0xCAE3, - 6634: 0xCAE4, - 6635: 0xCAE5, - 6636: 0xCAE6, - 6637: 0xCAE7, - 6638: 0xCAE8, - 6639: 0xCAE9, - 6640: 0xCAEA, - 6641: 0xCAEB, - 6642: 0xCAED, - 6643: 0xCAEE, - 6644: 0xCAEF, - 6645: 0xCAF0, - 6646: 0xCAF1, - 6647: 0xCAF2, - 6648: 0xCAF3, - 6649: 0xCAF5, - 6650: 0xCAF6, - 6651: 0xCAF7, - 6652: 0xCAF8, - 6653: 0xCAF9, - 6654: 0xCAFA, - 6655: 0xCAFB, - 6656: 0xCAFC, - 6657: 0xCAFD, - 6658: 0xCAFE, - 6659: 0xCAFF, - 6660: 0xCB00, - 6661: 0xCB01, - 6662: 0xCB02, - 6663: 0xCB03, - 6664: 0xCB04, - 6665: 0xCB05, - 6666: 0xCB06, - 6667: 0xCB07, - 6668: 0xCB09, - 6669: 0xCB0A, - 6670: 0x2500, - 6671: 0x2502, - 6672: 0x250C, - 6673: 0x2510, - 6674: 0x2518, - 6675: 0x2514, - 6676: 0x251C, - 6677: 0x252C, - 6678: 0x2524, - 6679: 0x2534, - 6680: 0x253C, - 6681: 0x2501, - 6682: 0x2503, - 6683: 0x250F, - 6684: 0x2513, - 6685: 0x251B, - 6686: 0x2517, - 6687: 0x2523, - 6688: 0x2533, - 6689: 0x252B, - 6690: 0x253B, - 6691: 0x254B, - 6692: 0x2520, - 6693: 0x252F, - 6694: 0x2528, - 6695: 0x2537, - 6696: 0x253F, - 6697: 0x251D, - 6698: 0x2530, - 6699: 0x2525, - 6700: 0x2538, - 6701: 0x2542, - 6702: 0x2512, - 6703: 0x2511, - 6704: 0x251A, - 6705: 0x2519, - 6706: 0x2516, - 6707: 0x2515, - 6708: 0x250E, - 6709: 0x250D, - 6710: 0x251E, - 6711: 0x251F, - 6712: 0x2521, - 6713: 0x2522, - 6714: 0x2526, - 6715: 0x2527, - 6716: 0x2529, - 6717: 0x252A, - 6718: 0x252D, - 6719: 0x252E, - 6720: 0x2531, - 6721: 0x2532, - 6722: 0x2535, - 6723: 0x2536, - 6724: 0x2539, - 6725: 0x253A, - 6726: 0x253D, - 6727: 0x253E, - 6728: 0x2540, - 6729: 0x2541, - 6730: 0x2543, - 6731: 0x2544, - 6732: 0x2545, - 6733: 0x2546, - 6734: 0x2547, - 6735: 0x2548, - 6736: 0x2549, - 6737: 0x254A, - 6764: 0xCB0B, - 6765: 0xCB0C, - 6766: 0xCB0D, - 6767: 0xCB0E, - 6768: 0xCB0F, - 6769: 0xCB11, - 6770: 0xCB12, - 6771: 0xCB13, - 6772: 0xCB15, - 6773: 0xCB16, - 6774: 0xCB17, - 6775: 0xCB19, - 6776: 0xCB1A, - 6777: 0xCB1B, - 6778: 0xCB1C, - 6779: 0xCB1D, - 6780: 0xCB1E, - 6781: 0xCB1F, - 6782: 0xCB22, - 6783: 0xCB23, - 6784: 0xCB24, - 6785: 0xCB25, - 6786: 0xCB26, - 6787: 0xCB27, - 6788: 0xCB28, - 6789: 0xCB29, - 6790: 0xCB2A, - 6791: 0xCB2B, - 6792: 0xCB2C, - 6793: 0xCB2D, - 6794: 0xCB2E, - 6795: 0xCB2F, - 6796: 0xCB30, - 6797: 0xCB31, - 6798: 0xCB32, - 6799: 0xCB33, - 6800: 0xCB34, - 6801: 0xCB35, - 6802: 0xCB36, - 6803: 0xCB37, - 6804: 0xCB38, - 6805: 0xCB39, - 6806: 0xCB3A, - 6807: 0xCB3B, - 6808: 0xCB3C, - 6809: 0xCB3D, - 6810: 0xCB3E, - 6811: 0xCB3F, - 6812: 0xCB40, - 6813: 0xCB42, - 6814: 0xCB43, - 6815: 0xCB44, - 6816: 0xCB45, - 6817: 0xCB46, - 6818: 0xCB47, - 6819: 0xCB4A, - 6820: 0xCB4B, - 6821: 0xCB4D, - 6822: 0xCB4E, - 6823: 0xCB4F, - 6824: 0xCB51, - 6825: 0xCB52, - 6826: 0xCB53, - 6827: 0xCB54, - 6828: 0xCB55, - 6829: 0xCB56, - 6830: 0xCB57, - 6831: 0xCB5A, - 6832: 0xCB5B, - 6833: 0xCB5C, - 6834: 0xCB5E, - 6835: 0xCB5F, - 6836: 0xCB60, - 6837: 0xCB61, - 6838: 0xCB62, - 6839: 0xCB63, - 6840: 0xCB65, - 6841: 0xCB66, - 6842: 0xCB67, - 6843: 0xCB68, - 6844: 0xCB69, - 6845: 0xCB6A, - 6846: 0xCB6B, - 6847: 0xCB6C, - 6848: 0x3395, - 6849: 0x3396, - 6850: 0x3397, - 6851: 0x2113, - 6852: 0x3398, - 6853: 0x33C4, - 6854: 0x33A3, - 6855: 0x33A4, - 6856: 0x33A5, - 6857: 0x33A6, - 6858: 0x3399, - 6859: 0x339A, - 6860: 0x339B, - 6861: 0x339C, - 6862: 0x339D, - 6863: 0x339E, - 6864: 0x339F, - 6865: 0x33A0, - 6866: 0x33A1, - 6867: 0x33A2, - 6868: 0x33CA, - 6869: 0x338D, - 6870: 0x338E, - 6871: 0x338F, - 6872: 0x33CF, - 6873: 0x3388, - 6874: 0x3389, - 6875: 0x33C8, - 6876: 0x33A7, - 6877: 0x33A8, - 6878: 0x33B0, - 6879: 0x33B1, - 6880: 0x33B2, - 6881: 0x33B3, - 6882: 0x33B4, - 6883: 0x33B5, - 6884: 0x33B6, - 6885: 0x33B7, - 6886: 0x33B8, - 6887: 0x33B9, - 6888: 0x3380, - 6889: 0x3381, - 6890: 0x3382, - 6891: 0x3383, - 6892: 0x3384, - 6893: 0x33BA, - 6894: 0x33BB, - 6895: 0x33BC, - 6896: 0x33BD, - 6897: 0x33BE, - 6898: 0x33BF, - 6899: 0x3390, - 6900: 0x3391, - 6901: 0x3392, - 6902: 0x3393, - 6903: 0x3394, - 6904: 0x2126, - 6905: 0x33C0, - 6906: 0x33C1, - 6907: 0x338A, - 6908: 0x338B, - 6909: 0x338C, - 6910: 0x33D6, - 6911: 0x33C5, - 6912: 0x33AD, - 6913: 0x33AE, - 6914: 0x33AF, - 6915: 0x33DB, - 6916: 0x33A9, - 6917: 0x33AA, - 6918: 0x33AB, - 6919: 0x33AC, - 6920: 0x33DD, - 6921: 0x33D0, - 6922: 0x33D3, - 6923: 0x33C3, - 6924: 0x33C9, - 6925: 0x33DC, - 6926: 0x33C6, - 6942: 0xCB6D, - 6943: 0xCB6E, - 6944: 0xCB6F, - 6945: 0xCB70, - 6946: 0xCB71, - 6947: 0xCB72, - 6948: 0xCB73, - 6949: 0xCB74, - 6950: 0xCB75, - 6951: 0xCB76, - 6952: 0xCB77, - 6953: 0xCB7A, - 6954: 0xCB7B, - 6955: 0xCB7C, - 6956: 0xCB7D, - 6957: 0xCB7E, - 6958: 0xCB7F, - 6959: 0xCB80, - 6960: 0xCB81, - 6961: 0xCB82, - 6962: 0xCB83, - 6963: 0xCB84, - 6964: 0xCB85, - 6965: 0xCB86, - 6966: 0xCB87, - 6967: 0xCB88, - 6968: 0xCB89, - 6969: 0xCB8A, - 6970: 0xCB8B, - 6971: 0xCB8C, - 6972: 0xCB8D, - 6973: 0xCB8E, - 6974: 0xCB8F, - 6975: 0xCB90, - 6976: 0xCB91, - 6977: 0xCB92, - 6978: 0xCB93, - 6979: 0xCB94, - 6980: 0xCB95, - 6981: 0xCB96, - 6982: 0xCB97, - 6983: 0xCB98, - 6984: 0xCB99, - 6985: 0xCB9A, - 6986: 0xCB9B, - 6987: 0xCB9D, - 6988: 0xCB9E, - 6989: 0xCB9F, - 6990: 0xCBA0, - 6991: 0xCBA1, - 6992: 0xCBA2, - 6993: 0xCBA3, - 6994: 0xCBA4, - 6995: 0xCBA5, - 6996: 0xCBA6, - 6997: 0xCBA7, - 6998: 0xCBA8, - 6999: 0xCBA9, - 7000: 0xCBAA, - 7001: 0xCBAB, - 7002: 0xCBAC, - 7003: 0xCBAD, - 7004: 0xCBAE, - 7005: 0xCBAF, - 7006: 0xCBB0, - 7007: 0xCBB1, - 7008: 0xCBB2, - 7009: 0xCBB3, - 7010: 0xCBB4, - 7011: 0xCBB5, - 7012: 0xCBB6, - 7013: 0xCBB7, - 7014: 0xCBB9, - 7015: 0xCBBA, - 7016: 0xCBBB, - 7017: 0xCBBC, - 7018: 0xCBBD, - 7019: 0xCBBE, - 7020: 0xCBBF, - 7021: 0xCBC0, - 7022: 0xCBC1, - 7023: 0xCBC2, - 7024: 0xCBC3, - 7025: 0xCBC4, - 7026: 0x00C6, - 7027: 0x00D0, - 7028: 0x00AA, - 7029: 0x0126, - 7031: 0x0132, - 7033: 0x013F, - 7034: 0x0141, - 7035: 0x00D8, - 7036: 0x0152, - 7037: 0x00BA, - 7038: 0x00DE, - 7039: 0x0166, - 7040: 0x014A, - 7042: 0x3260, - 7043: 0x3261, - 7044: 0x3262, - 7045: 0x3263, - 7046: 0x3264, - 7047: 0x3265, - 7048: 0x3266, - 7049: 0x3267, - 7050: 0x3268, - 7051: 0x3269, - 7052: 0x326A, - 7053: 0x326B, - 7054: 0x326C, - 7055: 0x326D, - 7056: 0x326E, - 7057: 0x326F, - 7058: 0x3270, - 7059: 0x3271, - 7060: 0x3272, - 7061: 0x3273, - 7062: 0x3274, - 7063: 0x3275, - 7064: 0x3276, - 7065: 0x3277, - 7066: 0x3278, - 7067: 0x3279, - 7068: 0x327A, - 7069: 0x327B, - 7070: 0x24D0, - 7071: 0x24D1, - 7072: 0x24D2, - 7073: 0x24D3, - 7074: 0x24D4, - 7075: 0x24D5, - 7076: 0x24D6, - 7077: 0x24D7, - 7078: 0x24D8, - 7079: 0x24D9, - 7080: 0x24DA, - 7081: 0x24DB, - 7082: 0x24DC, - 7083: 0x24DD, - 7084: 0x24DE, - 7085: 0x24DF, - 7086: 0x24E0, - 7087: 0x24E1, - 7088: 0x24E2, - 7089: 0x24E3, - 7090: 0x24E4, - 7091: 0x24E5, - 7092: 0x24E6, - 7093: 0x24E7, - 7094: 0x24E8, - 7095: 0x24E9, - 7096: 0x2460, - 7097: 0x2461, - 7098: 0x2462, - 7099: 0x2463, - 7100: 0x2464, - 7101: 0x2465, - 7102: 0x2466, - 7103: 0x2467, - 7104: 0x2468, - 7105: 0x2469, - 7106: 0x246A, - 7107: 0x246B, - 7108: 0x246C, - 7109: 0x246D, - 7110: 0x246E, - 7111: 0x00BD, - 7112: 0x2153, - 7113: 0x2154, - 7114: 0x00BC, - 7115: 0x00BE, - 7116: 0x215B, - 7117: 0x215C, - 7118: 0x215D, - 7119: 0x215E, - 7120: 0xCBC5, - 7121: 0xCBC6, - 7122: 0xCBC7, - 7123: 0xCBC8, - 7124: 0xCBC9, - 7125: 0xCBCA, - 7126: 0xCBCB, - 7127: 0xCBCC, - 7128: 0xCBCD, - 7129: 0xCBCE, - 7130: 0xCBCF, - 7131: 0xCBD0, - 7132: 0xCBD1, - 7133: 0xCBD2, - 7134: 0xCBD3, - 7135: 0xCBD5, - 7136: 0xCBD6, - 7137: 0xCBD7, - 7138: 0xCBD8, - 7139: 0xCBD9, - 7140: 0xCBDA, - 7141: 0xCBDB, - 7142: 0xCBDC, - 7143: 0xCBDD, - 7144: 0xCBDE, - 7145: 0xCBDF, - 7146: 0xCBE0, - 7147: 0xCBE1, - 7148: 0xCBE2, - 7149: 0xCBE3, - 7150: 0xCBE5, - 7151: 0xCBE6, - 7152: 0xCBE8, - 7153: 0xCBEA, - 7154: 0xCBEB, - 7155: 0xCBEC, - 7156: 0xCBED, - 7157: 0xCBEE, - 7158: 0xCBEF, - 7159: 0xCBF0, - 7160: 0xCBF1, - 7161: 0xCBF2, - 7162: 0xCBF3, - 7163: 0xCBF4, - 7164: 0xCBF5, - 7165: 0xCBF6, - 7166: 0xCBF7, - 7167: 0xCBF8, - 7168: 0xCBF9, - 7169: 0xCBFA, - 7170: 0xCBFB, - 7171: 0xCBFC, - 7172: 0xCBFD, - 7173: 0xCBFE, - 7174: 0xCBFF, - 7175: 0xCC00, - 7176: 0xCC01, - 7177: 0xCC02, - 7178: 0xCC03, - 7179: 0xCC04, - 7180: 0xCC05, - 7181: 0xCC06, - 7182: 0xCC07, - 7183: 0xCC08, - 7184: 0xCC09, - 7185: 0xCC0A, - 7186: 0xCC0B, - 7187: 0xCC0E, - 7188: 0xCC0F, - 7189: 0xCC11, - 7190: 0xCC12, - 7191: 0xCC13, - 7192: 0xCC15, - 7193: 0xCC16, - 7194: 0xCC17, - 7195: 0xCC18, - 7196: 0xCC19, - 7197: 0xCC1A, - 7198: 0xCC1B, - 7199: 0xCC1E, - 7200: 0xCC1F, - 7201: 0xCC20, - 7202: 0xCC23, - 7203: 0xCC24, - 7204: 0x00E6, - 7205: 0x0111, - 7206: 0x00F0, - 7207: 0x0127, - 7208: 0x0131, - 7209: 0x0133, - 7210: 0x0138, - 7211: 0x0140, - 7212: 0x0142, - 7213: 0x00F8, - 7214: 0x0153, - 7215: 0x00DF, - 7216: 0x00FE, - 7217: 0x0167, - 7218: 0x014B, - 7219: 0x0149, - 7220: 0x3200, - 7221: 0x3201, - 7222: 0x3202, - 7223: 0x3203, - 7224: 0x3204, - 7225: 0x3205, - 7226: 0x3206, - 7227: 0x3207, - 7228: 0x3208, - 7229: 0x3209, - 7230: 0x320A, - 7231: 0x320B, - 7232: 0x320C, - 7233: 0x320D, - 7234: 0x320E, - 7235: 0x320F, - 7236: 0x3210, - 7237: 0x3211, - 7238: 0x3212, - 7239: 0x3213, - 7240: 0x3214, - 7241: 0x3215, - 7242: 0x3216, - 7243: 0x3217, - 7244: 0x3218, - 7245: 0x3219, - 7246: 0x321A, - 7247: 0x321B, - 7248: 0x249C, - 7249: 0x249D, - 7250: 0x249E, - 7251: 0x249F, - 7252: 0x24A0, - 7253: 0x24A1, - 7254: 0x24A2, - 7255: 0x24A3, - 7256: 0x24A4, - 7257: 0x24A5, - 7258: 0x24A6, - 7259: 0x24A7, - 7260: 0x24A8, - 7261: 0x24A9, - 7262: 0x24AA, - 7263: 0x24AB, - 7264: 0x24AC, - 7265: 0x24AD, - 7266: 0x24AE, - 7267: 0x24AF, - 7268: 0x24B0, - 7269: 0x24B1, - 7270: 0x24B2, - 7271: 0x24B3, - 7272: 0x24B4, - 7273: 0x24B5, - 7274: 0x2474, - 7275: 0x2475, - 7276: 0x2476, - 7277: 0x2477, - 7278: 0x2478, - 7279: 0x2479, - 7280: 0x247A, - 7281: 0x247B, - 7282: 0x247C, - 7283: 0x247D, - 7284: 0x247E, - 7285: 0x247F, - 7286: 0x2480, - 7287: 0x2481, - 7288: 0x2482, - 7289: 0x00B9, - 7290: 0x00B2, - 7291: 0x00B3, - 7292: 0x2074, - 7293: 0x207F, - 7294: 0x2081, - 7295: 0x2082, - 7296: 0x2083, - 7297: 0x2084, - 7298: 0xCC25, - 7299: 0xCC26, - 7300: 0xCC2A, - 7301: 0xCC2B, - 7302: 0xCC2D, - 7303: 0xCC2F, - 7304: 0xCC31, - 7305: 0xCC32, - 7306: 0xCC33, - 7307: 0xCC34, - 7308: 0xCC35, - 7309: 0xCC36, - 7310: 0xCC37, - 7311: 0xCC3A, - 7312: 0xCC3F, - 7313: 0xCC40, - 7314: 0xCC41, - 7315: 0xCC42, - 7316: 0xCC43, - 7317: 0xCC46, - 7318: 0xCC47, - 7319: 0xCC49, - 7320: 0xCC4A, - 7321: 0xCC4B, - 7322: 0xCC4D, - 7323: 0xCC4E, - 7324: 0xCC4F, - 7325: 0xCC50, - 7326: 0xCC51, - 7327: 0xCC52, - 7328: 0xCC53, - 7329: 0xCC56, - 7330: 0xCC5A, - 7331: 0xCC5B, - 7332: 0xCC5C, - 7333: 0xCC5D, - 7334: 0xCC5E, - 7335: 0xCC5F, - 7336: 0xCC61, - 7337: 0xCC62, - 7338: 0xCC63, - 7339: 0xCC65, - 7340: 0xCC67, - 7341: 0xCC69, - 7342: 0xCC6A, - 7343: 0xCC6B, - 7344: 0xCC6C, - 7345: 0xCC6D, - 7346: 0xCC6E, - 7347: 0xCC6F, - 7348: 0xCC71, - 7349: 0xCC72, - 7350: 0xCC73, - 7351: 0xCC74, - 7352: 0xCC76, - 7353: 0xCC77, - 7354: 0xCC78, - 7355: 0xCC79, - 7356: 0xCC7A, - 7357: 0xCC7B, - 7358: 0xCC7C, - 7359: 0xCC7D, - 7360: 0xCC7E, - 7361: 0xCC7F, - 7362: 0xCC80, - 7363: 0xCC81, - 7364: 0xCC82, - 7365: 0xCC83, - 7366: 0xCC84, - 7367: 0xCC85, - 7368: 0xCC86, - 7369: 0xCC87, - 7370: 0xCC88, - 7371: 0xCC89, - 7372: 0xCC8A, - 7373: 0xCC8B, - 7374: 0xCC8C, - 7375: 0xCC8D, - 7376: 0xCC8E, - 7377: 0xCC8F, - 7378: 0xCC90, - 7379: 0xCC91, - 7380: 0xCC92, - 7381: 0xCC93, - 7382: 0x3041, - 7383: 0x3042, - 7384: 0x3043, - 7385: 0x3044, - 7386: 0x3045, - 7387: 0x3046, - 7388: 0x3047, - 7389: 0x3048, - 7390: 0x3049, - 7391: 0x304A, - 7392: 0x304B, - 7393: 0x304C, - 7394: 0x304D, - 7395: 0x304E, - 7396: 0x304F, - 7397: 0x3050, - 7398: 0x3051, - 7399: 0x3052, - 7400: 0x3053, - 7401: 0x3054, - 7402: 0x3055, - 7403: 0x3056, - 7404: 0x3057, - 7405: 0x3058, - 7406: 0x3059, - 7407: 0x305A, - 7408: 0x305B, - 7409: 0x305C, - 7410: 0x305D, - 7411: 0x305E, - 7412: 0x305F, - 7413: 0x3060, - 7414: 0x3061, - 7415: 0x3062, - 7416: 0x3063, - 7417: 0x3064, - 7418: 0x3065, - 7419: 0x3066, - 7420: 0x3067, - 7421: 0x3068, - 7422: 0x3069, - 7423: 0x306A, - 7424: 0x306B, - 7425: 0x306C, - 7426: 0x306D, - 7427: 0x306E, - 7428: 0x306F, - 7429: 0x3070, - 7430: 0x3071, - 7431: 0x3072, - 7432: 0x3073, - 7433: 0x3074, - 7434: 0x3075, - 7435: 0x3076, - 7436: 0x3077, - 7437: 0x3078, - 7438: 0x3079, - 7439: 0x307A, - 7440: 0x307B, - 7441: 0x307C, - 7442: 0x307D, - 7443: 0x307E, - 7444: 0x307F, - 7445: 0x3080, - 7446: 0x3081, - 7447: 0x3082, - 7448: 0x3083, - 7449: 0x3084, - 7450: 0x3085, - 7451: 0x3086, - 7452: 0x3087, - 7453: 0x3088, - 7454: 0x3089, - 7455: 0x308A, - 7456: 0x308B, - 7457: 0x308C, - 7458: 0x308D, - 7459: 0x308E, - 7460: 0x308F, - 7461: 0x3090, - 7462: 0x3091, - 7463: 0x3092, - 7464: 0x3093, - 7476: 0xCC94, - 7477: 0xCC95, - 7478: 0xCC96, - 7479: 0xCC97, - 7480: 0xCC9A, - 7481: 0xCC9B, - 7482: 0xCC9D, - 7483: 0xCC9E, - 7484: 0xCC9F, - 7485: 0xCCA1, - 7486: 0xCCA2, - 7487: 0xCCA3, - 7488: 0xCCA4, - 7489: 0xCCA5, - 7490: 0xCCA6, - 7491: 0xCCA7, - 7492: 0xCCAA, - 7493: 0xCCAE, - 7494: 0xCCAF, - 7495: 0xCCB0, - 7496: 0xCCB1, - 7497: 0xCCB2, - 7498: 0xCCB3, - 7499: 0xCCB6, - 7500: 0xCCB7, - 7501: 0xCCB9, - 7502: 0xCCBA, - 7503: 0xCCBB, - 7504: 0xCCBD, - 7505: 0xCCBE, - 7506: 0xCCBF, - 7507: 0xCCC0, - 7508: 0xCCC1, - 7509: 0xCCC2, - 7510: 0xCCC3, - 7511: 0xCCC6, - 7512: 0xCCC8, - 7513: 0xCCCA, - 7514: 0xCCCB, - 7515: 0xCCCC, - 7516: 0xCCCD, - 7517: 0xCCCE, - 7518: 0xCCCF, - 7519: 0xCCD1, - 7520: 0xCCD2, - 7521: 0xCCD3, - 7522: 0xCCD5, - 7523: 0xCCD6, - 7524: 0xCCD7, - 7525: 0xCCD8, - 7526: 0xCCD9, - 7527: 0xCCDA, - 7528: 0xCCDB, - 7529: 0xCCDC, - 7530: 0xCCDD, - 7531: 0xCCDE, - 7532: 0xCCDF, - 7533: 0xCCE0, - 7534: 0xCCE1, - 7535: 0xCCE2, - 7536: 0xCCE3, - 7537: 0xCCE5, - 7538: 0xCCE6, - 7539: 0xCCE7, - 7540: 0xCCE8, - 7541: 0xCCE9, - 7542: 0xCCEA, - 7543: 0xCCEB, - 7544: 0xCCED, - 7545: 0xCCEE, - 7546: 0xCCEF, - 7547: 0xCCF1, - 7548: 0xCCF2, - 7549: 0xCCF3, - 7550: 0xCCF4, - 7551: 0xCCF5, - 7552: 0xCCF6, - 7553: 0xCCF7, - 7554: 0xCCF8, - 7555: 0xCCF9, - 7556: 0xCCFA, - 7557: 0xCCFB, - 7558: 0xCCFC, - 7559: 0xCCFD, - 7560: 0x30A1, - 7561: 0x30A2, - 7562: 0x30A3, - 7563: 0x30A4, - 7564: 0x30A5, - 7565: 0x30A6, - 7566: 0x30A7, - 7567: 0x30A8, - 7568: 0x30A9, - 7569: 0x30AA, - 7570: 0x30AB, - 7571: 0x30AC, - 7572: 0x30AD, - 7573: 0x30AE, - 7574: 0x30AF, - 7575: 0x30B0, - 7576: 0x30B1, - 7577: 0x30B2, - 7578: 0x30B3, - 7579: 0x30B4, - 7580: 0x30B5, - 7581: 0x30B6, - 7582: 0x30B7, - 7583: 0x30B8, - 7584: 0x30B9, - 7585: 0x30BA, - 7586: 0x30BB, - 7587: 0x30BC, - 7588: 0x30BD, - 7589: 0x30BE, - 7590: 0x30BF, - 7591: 0x30C0, - 7592: 0x30C1, - 7593: 0x30C2, - 7594: 0x30C3, - 7595: 0x30C4, - 7596: 0x30C5, - 7597: 0x30C6, - 7598: 0x30C7, - 7599: 0x30C8, - 7600: 0x30C9, - 7601: 0x30CA, - 7602: 0x30CB, - 7603: 0x30CC, - 7604: 0x30CD, - 7605: 0x30CE, - 7606: 0x30CF, - 7607: 0x30D0, - 7608: 0x30D1, - 7609: 0x30D2, - 7610: 0x30D3, - 7611: 0x30D4, - 7612: 0x30D5, - 7613: 0x30D6, - 7614: 0x30D7, - 7615: 0x30D8, - 7616: 0x30D9, - 7617: 0x30DA, - 7618: 0x30DB, - 7619: 0x30DC, - 7620: 0x30DD, - 7621: 0x30DE, - 7622: 0x30DF, - 7623: 0x30E0, - 7624: 0x30E1, - 7625: 0x30E2, - 7626: 0x30E3, - 7627: 0x30E4, - 7628: 0x30E5, - 7629: 0x30E6, - 7630: 0x30E7, - 7631: 0x30E8, - 7632: 0x30E9, - 7633: 0x30EA, - 7634: 0x30EB, - 7635: 0x30EC, - 7636: 0x30ED, - 7637: 0x30EE, - 7638: 0x30EF, - 7639: 0x30F0, - 7640: 0x30F1, - 7641: 0x30F2, - 7642: 0x30F3, - 7643: 0x30F4, - 7644: 0x30F5, - 7645: 0x30F6, - 7654: 0xCCFE, - 7655: 0xCCFF, - 7656: 0xCD00, - 7657: 0xCD02, - 7658: 0xCD03, - 7659: 0xCD04, - 7660: 0xCD05, - 7661: 0xCD06, - 7662: 0xCD07, - 7663: 0xCD0A, - 7664: 0xCD0B, - 7665: 0xCD0D, - 7666: 0xCD0E, - 7667: 0xCD0F, - 7668: 0xCD11, - 7669: 0xCD12, - 7670: 0xCD13, - 7671: 0xCD14, - 7672: 0xCD15, - 7673: 0xCD16, - 7674: 0xCD17, - 7675: 0xCD1A, - 7676: 0xCD1C, - 7677: 0xCD1E, - 7678: 0xCD1F, - 7679: 0xCD20, - 7680: 0xCD21, - 7681: 0xCD22, - 7682: 0xCD23, - 7683: 0xCD25, - 7684: 0xCD26, - 7685: 0xCD27, - 7686: 0xCD29, - 7687: 0xCD2A, - 7688: 0xCD2B, - 7689: 0xCD2D, - 7690: 0xCD2E, - 7691: 0xCD2F, - 7692: 0xCD30, - 7693: 0xCD31, - 7694: 0xCD32, - 7695: 0xCD33, - 7696: 0xCD34, - 7697: 0xCD35, - 7698: 0xCD36, - 7699: 0xCD37, - 7700: 0xCD38, - 7701: 0xCD3A, - 7702: 0xCD3B, - 7703: 0xCD3C, - 7704: 0xCD3D, - 7705: 0xCD3E, - 7706: 0xCD3F, - 7707: 0xCD40, - 7708: 0xCD41, - 7709: 0xCD42, - 7710: 0xCD43, - 7711: 0xCD44, - 7712: 0xCD45, - 7713: 0xCD46, - 7714: 0xCD47, - 7715: 0xCD48, - 7716: 0xCD49, - 7717: 0xCD4A, - 7718: 0xCD4B, - 7719: 0xCD4C, - 7720: 0xCD4D, - 7721: 0xCD4E, - 7722: 0xCD4F, - 7723: 0xCD50, - 7724: 0xCD51, - 7725: 0xCD52, - 7726: 0xCD53, - 7727: 0xCD54, - 7728: 0xCD55, - 7729: 0xCD56, - 7730: 0xCD57, - 7731: 0xCD58, - 7732: 0xCD59, - 7733: 0xCD5A, - 7734: 0xCD5B, - 7735: 0xCD5D, - 7736: 0xCD5E, - 7737: 0xCD5F, - 7738: 0x0410, - 7739: 0x0411, - 7740: 0x0412, - 7741: 0x0413, - 7742: 0x0414, - 7743: 0x0415, - 7744: 0x0401, - 7745: 0x0416, - 7746: 0x0417, - 7747: 0x0418, - 7748: 0x0419, - 7749: 0x041A, - 7750: 0x041B, - 7751: 0x041C, - 7752: 0x041D, - 7753: 0x041E, - 7754: 0x041F, - 7755: 0x0420, - 7756: 0x0421, - 7757: 0x0422, - 7758: 0x0423, - 7759: 0x0424, - 7760: 0x0425, - 7761: 0x0426, - 7762: 0x0427, - 7763: 0x0428, - 7764: 0x0429, - 7765: 0x042A, - 7766: 0x042B, - 7767: 0x042C, - 7768: 0x042D, - 7769: 0x042E, - 7770: 0x042F, - 7786: 0x0430, - 7787: 0x0431, - 7788: 0x0432, - 7789: 0x0433, - 7790: 0x0434, - 7791: 0x0435, - 7792: 0x0451, - 7793: 0x0436, - 7794: 0x0437, - 7795: 0x0438, - 7796: 0x0439, - 7797: 0x043A, - 7798: 0x043B, - 7799: 0x043C, - 7800: 0x043D, - 7801: 0x043E, - 7802: 0x043F, - 7803: 0x0440, - 7804: 0x0441, - 7805: 0x0442, - 7806: 0x0443, - 7807: 0x0444, - 7808: 0x0445, - 7809: 0x0446, - 7810: 0x0447, - 7811: 0x0448, - 7812: 0x0449, - 7813: 0x044A, - 7814: 0x044B, - 7815: 0x044C, - 7816: 0x044D, - 7817: 0x044E, - 7818: 0x044F, - 7832: 0xCD61, - 7833: 0xCD62, - 7834: 0xCD63, - 7835: 0xCD65, - 7836: 0xCD66, - 7837: 0xCD67, - 7838: 0xCD68, - 7839: 0xCD69, - 7840: 0xCD6A, - 7841: 0xCD6B, - 7842: 0xCD6E, - 7843: 0xCD70, - 7844: 0xCD72, - 7845: 0xCD73, - 7846: 0xCD74, - 7847: 0xCD75, - 7848: 0xCD76, - 7849: 0xCD77, - 7850: 0xCD79, - 7851: 0xCD7A, - 7852: 0xCD7B, - 7853: 0xCD7C, - 7854: 0xCD7D, - 7855: 0xCD7E, - 7856: 0xCD7F, - 7857: 0xCD80, - 7858: 0xCD81, - 7859: 0xCD82, - 7860: 0xCD83, - 7861: 0xCD84, - 7862: 0xCD85, - 7863: 0xCD86, - 7864: 0xCD87, - 7865: 0xCD89, - 7866: 0xCD8A, - 7867: 0xCD8B, - 7868: 0xCD8C, - 7869: 0xCD8D, - 7870: 0xCD8E, - 7871: 0xCD8F, - 7872: 0xCD90, - 7873: 0xCD91, - 7874: 0xCD92, - 7875: 0xCD93, - 7876: 0xCD96, - 7877: 0xCD97, - 7878: 0xCD99, - 7879: 0xCD9A, - 7880: 0xCD9B, - 7881: 0xCD9D, - 7882: 0xCD9E, - 7883: 0xCD9F, - 7884: 0xCDA0, - 7885: 0xCDA1, - 7886: 0xCDA2, - 7887: 0xCDA3, - 7888: 0xCDA6, - 7889: 0xCDA8, - 7890: 0xCDAA, - 7891: 0xCDAB, - 7892: 0xCDAC, - 7893: 0xCDAD, - 7894: 0xCDAE, - 7895: 0xCDAF, - 7896: 0xCDB1, - 7897: 0xCDB2, - 7898: 0xCDB3, - 7899: 0xCDB4, - 7900: 0xCDB5, - 7901: 0xCDB6, - 7902: 0xCDB7, - 7903: 0xCDB8, - 7904: 0xCDB9, - 7905: 0xCDBA, - 7906: 0xCDBB, - 7907: 0xCDBC, - 7908: 0xCDBD, - 7909: 0xCDBE, - 7910: 0xCDBF, - 7911: 0xCDC0, - 7912: 0xCDC1, - 7913: 0xCDC2, - 7914: 0xCDC3, - 7915: 0xCDC5, - 8010: 0xCDC6, - 8011: 0xCDC7, - 8012: 0xCDC8, - 8013: 0xCDC9, - 8014: 0xCDCA, - 8015: 0xCDCB, - 8016: 0xCDCD, - 8017: 0xCDCE, - 8018: 0xCDCF, - 8019: 0xCDD1, - 8020: 0xCDD2, - 8021: 0xCDD3, - 8022: 0xCDD4, - 8023: 0xCDD5, - 8024: 0xCDD6, - 8025: 0xCDD7, - 8026: 0xCDD8, - 8027: 0xCDD9, - 8028: 0xCDDA, - 8029: 0xCDDB, - 8030: 0xCDDC, - 8031: 0xCDDD, - 8032: 0xCDDE, - 8033: 0xCDDF, - 8034: 0xCDE0, - 8035: 0xCDE1, - 8036: 0xCDE2, - 8037: 0xCDE3, - 8038: 0xCDE4, - 8039: 0xCDE5, - 8040: 0xCDE6, - 8041: 0xCDE7, - 8042: 0xCDE9, - 8043: 0xCDEA, - 8044: 0xCDEB, - 8045: 0xCDED, - 8046: 0xCDEE, - 8047: 0xCDEF, - 8048: 0xCDF1, - 8049: 0xCDF2, - 8050: 0xCDF3, - 8051: 0xCDF4, - 8052: 0xCDF5, - 8053: 0xCDF6, - 8054: 0xCDF7, - 8055: 0xCDFA, - 8056: 0xCDFC, - 8057: 0xCDFE, - 8058: 0xCDFF, - 8059: 0xCE00, - 8060: 0xCE01, - 8061: 0xCE02, - 8062: 0xCE03, - 8063: 0xCE05, - 8064: 0xCE06, - 8065: 0xCE07, - 8066: 0xCE09, - 8067: 0xCE0A, - 8068: 0xCE0B, - 8069: 0xCE0D, - 8070: 0xCE0E, - 8071: 0xCE0F, - 8072: 0xCE10, - 8073: 0xCE11, - 8074: 0xCE12, - 8075: 0xCE13, - 8076: 0xCE15, - 8077: 0xCE16, - 8078: 0xCE17, - 8079: 0xCE18, - 8080: 0xCE1A, - 8081: 0xCE1B, - 8082: 0xCE1C, - 8083: 0xCE1D, - 8084: 0xCE1E, - 8085: 0xCE1F, - 8086: 0xCE22, - 8087: 0xCE23, - 8088: 0xCE25, - 8089: 0xCE26, - 8090: 0xCE27, - 8091: 0xCE29, - 8092: 0xCE2A, - 8093: 0xCE2B, - 8188: 0xCE2C, - 8189: 0xCE2D, - 8190: 0xCE2E, - 8191: 0xCE2F, - 8192: 0xCE32, - 8193: 0xCE34, - 8194: 0xCE36, - 8195: 0xCE37, - 8196: 0xCE38, - 8197: 0xCE39, - 8198: 0xCE3A, - 8199: 0xCE3B, - 8200: 0xCE3C, - 8201: 0xCE3D, - 8202: 0xCE3E, - 8203: 0xCE3F, - 8204: 0xCE40, - 8205: 0xCE41, - 8206: 0xCE42, - 8207: 0xCE43, - 8208: 0xCE44, - 8209: 0xCE45, - 8210: 0xCE46, - 8211: 0xCE47, - 8212: 0xCE48, - 8213: 0xCE49, - 8214: 0xCE4A, - 8215: 0xCE4B, - 8216: 0xCE4C, - 8217: 0xCE4D, - 8218: 0xCE4E, - 8219: 0xCE4F, - 8220: 0xCE50, - 8221: 0xCE51, - 8222: 0xCE52, - 8223: 0xCE53, - 8224: 0xCE54, - 8225: 0xCE55, - 8226: 0xCE56, - 8227: 0xCE57, - 8228: 0xCE5A, - 8229: 0xCE5B, - 8230: 0xCE5D, - 8231: 0xCE5E, - 8232: 0xCE62, - 8233: 0xCE63, - 8234: 0xCE64, - 8235: 0xCE65, - 8236: 0xCE66, - 8237: 0xCE67, - 8238: 0xCE6A, - 8239: 0xCE6C, - 8240: 0xCE6E, - 8241: 0xCE6F, - 8242: 0xCE70, - 8243: 0xCE71, - 8244: 0xCE72, - 8245: 0xCE73, - 8246: 0xCE76, - 8247: 0xCE77, - 8248: 0xCE79, - 8249: 0xCE7A, - 8250: 0xCE7B, - 8251: 0xCE7D, - 8252: 0xCE7E, - 8253: 0xCE7F, - 8254: 0xCE80, - 8255: 0xCE81, - 8256: 0xCE82, - 8257: 0xCE83, - 8258: 0xCE86, - 8259: 0xCE88, - 8260: 0xCE8A, - 8261: 0xCE8B, - 8262: 0xCE8C, - 8263: 0xCE8D, - 8264: 0xCE8E, - 8265: 0xCE8F, - 8266: 0xCE92, - 8267: 0xCE93, - 8268: 0xCE95, - 8269: 0xCE96, - 8270: 0xCE97, - 8271: 0xCE99, - 8366: 0xCE9A, - 8367: 0xCE9B, - 8368: 0xCE9C, - 8369: 0xCE9D, - 8370: 0xCE9E, - 8371: 0xCE9F, - 8372: 0xCEA2, - 8373: 0xCEA6, - 8374: 0xCEA7, - 8375: 0xCEA8, - 8376: 0xCEA9, - 8377: 0xCEAA, - 8378: 0xCEAB, - 8379: 0xCEAE, - 8380: 0xCEAF, - 8381: 0xCEB0, - 8382: 0xCEB1, - 8383: 0xCEB2, - 8384: 0xCEB3, - 8385: 0xCEB4, - 8386: 0xCEB5, - 8387: 0xCEB6, - 8388: 0xCEB7, - 8389: 0xCEB8, - 8390: 0xCEB9, - 8391: 0xCEBA, - 8392: 0xCEBB, - 8393: 0xCEBC, - 8394: 0xCEBD, - 8395: 0xCEBE, - 8396: 0xCEBF, - 8397: 0xCEC0, - 8398: 0xCEC2, - 8399: 0xCEC3, - 8400: 0xCEC4, - 8401: 0xCEC5, - 8402: 0xCEC6, - 8403: 0xCEC7, - 8404: 0xCEC8, - 8405: 0xCEC9, - 8406: 0xCECA, - 8407: 0xCECB, - 8408: 0xCECC, - 8409: 0xCECD, - 8410: 0xCECE, - 8411: 0xCECF, - 8412: 0xCED0, - 8413: 0xCED1, - 8414: 0xCED2, - 8415: 0xCED3, - 8416: 0xCED4, - 8417: 0xCED5, - 8418: 0xCED6, - 8419: 0xCED7, - 8420: 0xCED8, - 8421: 0xCED9, - 8422: 0xCEDA, - 8423: 0xCEDB, - 8424: 0xCEDC, - 8425: 0xCEDD, - 8426: 0xCEDE, - 8427: 0xCEDF, - 8428: 0xCEE0, - 8429: 0xCEE1, - 8430: 0xCEE2, - 8431: 0xCEE3, - 8432: 0xCEE6, - 8433: 0xCEE7, - 8434: 0xCEE9, - 8435: 0xCEEA, - 8436: 0xCEED, - 8437: 0xCEEE, - 8438: 0xCEEF, - 8439: 0xCEF0, - 8440: 0xCEF1, - 8441: 0xCEF2, - 8442: 0xCEF3, - 8443: 0xCEF6, - 8444: 0xCEFA, - 8445: 0xCEFB, - 8446: 0xCEFC, - 8447: 0xCEFD, - 8448: 0xCEFE, - 8449: 0xCEFF, - 8450: 0xAC00, - 8451: 0xAC01, - 8452: 0xAC04, - 8453: 0xAC07, - 8454: 0xAC08, - 8455: 0xAC09, - 8456: 0xAC0A, - 8457: 0xAC10, - 8458: 0xAC11, - 8459: 0xAC12, - 8460: 0xAC13, - 8461: 0xAC14, - 8462: 0xAC15, - 8463: 0xAC16, - 8464: 0xAC17, - 8465: 0xAC19, - 8466: 0xAC1A, - 8467: 0xAC1B, - 8468: 0xAC1C, - 8469: 0xAC1D, - 8470: 0xAC20, - 8471: 0xAC24, - 8472: 0xAC2C, - 8473: 0xAC2D, - 8474: 0xAC2F, - 8475: 0xAC30, - 8476: 0xAC31, - 8477: 0xAC38, - 8478: 0xAC39, - 8479: 0xAC3C, - 8480: 0xAC40, - 8481: 0xAC4B, - 8482: 0xAC4D, - 8483: 0xAC54, - 8484: 0xAC58, - 8485: 0xAC5C, - 8486: 0xAC70, - 8487: 0xAC71, - 8488: 0xAC74, - 8489: 0xAC77, - 8490: 0xAC78, - 8491: 0xAC7A, - 8492: 0xAC80, - 8493: 0xAC81, - 8494: 0xAC83, - 8495: 0xAC84, - 8496: 0xAC85, - 8497: 0xAC86, - 8498: 0xAC89, - 8499: 0xAC8A, - 8500: 0xAC8B, - 8501: 0xAC8C, - 8502: 0xAC90, - 8503: 0xAC94, - 8504: 0xAC9C, - 8505: 0xAC9D, - 8506: 0xAC9F, - 8507: 0xACA0, - 8508: 0xACA1, - 8509: 0xACA8, - 8510: 0xACA9, - 8511: 0xACAA, - 8512: 0xACAC, - 8513: 0xACAF, - 8514: 0xACB0, - 8515: 0xACB8, - 8516: 0xACB9, - 8517: 0xACBB, - 8518: 0xACBC, - 8519: 0xACBD, - 8520: 0xACC1, - 8521: 0xACC4, - 8522: 0xACC8, - 8523: 0xACCC, - 8524: 0xACD5, - 8525: 0xACD7, - 8526: 0xACE0, - 8527: 0xACE1, - 8528: 0xACE4, - 8529: 0xACE7, - 8530: 0xACE8, - 8531: 0xACEA, - 8532: 0xACEC, - 8533: 0xACEF, - 8534: 0xACF0, - 8535: 0xACF1, - 8536: 0xACF3, - 8537: 0xACF5, - 8538: 0xACF6, - 8539: 0xACFC, - 8540: 0xACFD, - 8541: 0xAD00, - 8542: 0xAD04, - 8543: 0xAD06, - 8544: 0xCF02, - 8545: 0xCF03, - 8546: 0xCF05, - 8547: 0xCF06, - 8548: 0xCF07, - 8549: 0xCF09, - 8550: 0xCF0A, - 8551: 0xCF0B, - 8552: 0xCF0C, - 8553: 0xCF0D, - 8554: 0xCF0E, - 8555: 0xCF0F, - 8556: 0xCF12, - 8557: 0xCF14, - 8558: 0xCF16, - 8559: 0xCF17, - 8560: 0xCF18, - 8561: 0xCF19, - 8562: 0xCF1A, - 8563: 0xCF1B, - 8564: 0xCF1D, - 8565: 0xCF1E, - 8566: 0xCF1F, - 8567: 0xCF21, - 8568: 0xCF22, - 8569: 0xCF23, - 8570: 0xCF25, - 8571: 0xCF26, - 8572: 0xCF27, - 8573: 0xCF28, - 8574: 0xCF29, - 8575: 0xCF2A, - 8576: 0xCF2B, - 8577: 0xCF2E, - 8578: 0xCF32, - 8579: 0xCF33, - 8580: 0xCF34, - 8581: 0xCF35, - 8582: 0xCF36, - 8583: 0xCF37, - 8584: 0xCF39, - 8585: 0xCF3A, - 8586: 0xCF3B, - 8587: 0xCF3C, - 8588: 0xCF3D, - 8589: 0xCF3E, - 8590: 0xCF3F, - 8591: 0xCF40, - 8592: 0xCF41, - 8593: 0xCF42, - 8594: 0xCF43, - 8595: 0xCF44, - 8596: 0xCF45, - 8597: 0xCF46, - 8598: 0xCF47, - 8599: 0xCF48, - 8600: 0xCF49, - 8601: 0xCF4A, - 8602: 0xCF4B, - 8603: 0xCF4C, - 8604: 0xCF4D, - 8605: 0xCF4E, - 8606: 0xCF4F, - 8607: 0xCF50, - 8608: 0xCF51, - 8609: 0xCF52, - 8610: 0xCF53, - 8611: 0xCF56, - 8612: 0xCF57, - 8613: 0xCF59, - 8614: 0xCF5A, - 8615: 0xCF5B, - 8616: 0xCF5D, - 8617: 0xCF5E, - 8618: 0xCF5F, - 8619: 0xCF60, - 8620: 0xCF61, - 8621: 0xCF62, - 8622: 0xCF63, - 8623: 0xCF66, - 8624: 0xCF68, - 8625: 0xCF6A, - 8626: 0xCF6B, - 8627: 0xCF6C, - 8628: 0xAD0C, - 8629: 0xAD0D, - 8630: 0xAD0F, - 8631: 0xAD11, - 8632: 0xAD18, - 8633: 0xAD1C, - 8634: 0xAD20, - 8635: 0xAD29, - 8636: 0xAD2C, - 8637: 0xAD2D, - 8638: 0xAD34, - 8639: 0xAD35, - 8640: 0xAD38, - 8641: 0xAD3C, - 8642: 0xAD44, - 8643: 0xAD45, - 8644: 0xAD47, - 8645: 0xAD49, - 8646: 0xAD50, - 8647: 0xAD54, - 8648: 0xAD58, - 8649: 0xAD61, - 8650: 0xAD63, - 8651: 0xAD6C, - 8652: 0xAD6D, - 8653: 0xAD70, - 8654: 0xAD73, - 8655: 0xAD74, - 8656: 0xAD75, - 8657: 0xAD76, - 8658: 0xAD7B, - 8659: 0xAD7C, - 8660: 0xAD7D, - 8661: 0xAD7F, - 8662: 0xAD81, - 8663: 0xAD82, - 8664: 0xAD88, - 8665: 0xAD89, - 8666: 0xAD8C, - 8667: 0xAD90, - 8668: 0xAD9C, - 8669: 0xAD9D, - 8670: 0xADA4, - 8671: 0xADB7, - 8672: 0xADC0, - 8673: 0xADC1, - 8674: 0xADC4, - 8675: 0xADC8, - 8676: 0xADD0, - 8677: 0xADD1, - 8678: 0xADD3, - 8679: 0xADDC, - 8680: 0xADE0, - 8681: 0xADE4, - 8682: 0xADF8, - 8683: 0xADF9, - 8684: 0xADFC, - 8685: 0xADFF, - 8686: 0xAE00, - 8687: 0xAE01, - 8688: 0xAE08, - 8689: 0xAE09, - 8690: 0xAE0B, - 8691: 0xAE0D, - 8692: 0xAE14, - 8693: 0xAE30, - 8694: 0xAE31, - 8695: 0xAE34, - 8696: 0xAE37, - 8697: 0xAE38, - 8698: 0xAE3A, - 8699: 0xAE40, - 8700: 0xAE41, - 8701: 0xAE43, - 8702: 0xAE45, - 8703: 0xAE46, - 8704: 0xAE4A, - 8705: 0xAE4C, - 8706: 0xAE4D, - 8707: 0xAE4E, - 8708: 0xAE50, - 8709: 0xAE54, - 8710: 0xAE56, - 8711: 0xAE5C, - 8712: 0xAE5D, - 8713: 0xAE5F, - 8714: 0xAE60, - 8715: 0xAE61, - 8716: 0xAE65, - 8717: 0xAE68, - 8718: 0xAE69, - 8719: 0xAE6C, - 8720: 0xAE70, - 8721: 0xAE78, - 8722: 0xCF6D, - 8723: 0xCF6E, - 8724: 0xCF6F, - 8725: 0xCF72, - 8726: 0xCF73, - 8727: 0xCF75, - 8728: 0xCF76, - 8729: 0xCF77, - 8730: 0xCF79, - 8731: 0xCF7A, - 8732: 0xCF7B, - 8733: 0xCF7C, - 8734: 0xCF7D, - 8735: 0xCF7E, - 8736: 0xCF7F, - 8737: 0xCF81, - 8738: 0xCF82, - 8739: 0xCF83, - 8740: 0xCF84, - 8741: 0xCF86, - 8742: 0xCF87, - 8743: 0xCF88, - 8744: 0xCF89, - 8745: 0xCF8A, - 8746: 0xCF8B, - 8747: 0xCF8D, - 8748: 0xCF8E, - 8749: 0xCF8F, - 8750: 0xCF90, - 8751: 0xCF91, - 8752: 0xCF92, - 8753: 0xCF93, - 8754: 0xCF94, - 8755: 0xCF95, - 8756: 0xCF96, - 8757: 0xCF97, - 8758: 0xCF98, - 8759: 0xCF99, - 8760: 0xCF9A, - 8761: 0xCF9B, - 8762: 0xCF9C, - 8763: 0xCF9D, - 8764: 0xCF9E, - 8765: 0xCF9F, - 8766: 0xCFA0, - 8767: 0xCFA2, - 8768: 0xCFA3, - 8769: 0xCFA4, - 8770: 0xCFA5, - 8771: 0xCFA6, - 8772: 0xCFA7, - 8773: 0xCFA9, - 8774: 0xCFAA, - 8775: 0xCFAB, - 8776: 0xCFAC, - 8777: 0xCFAD, - 8778: 0xCFAE, - 8779: 0xCFAF, - 8780: 0xCFB1, - 8781: 0xCFB2, - 8782: 0xCFB3, - 8783: 0xCFB4, - 8784: 0xCFB5, - 8785: 0xCFB6, - 8786: 0xCFB7, - 8787: 0xCFB8, - 8788: 0xCFB9, - 8789: 0xCFBA, - 8790: 0xCFBB, - 8791: 0xCFBC, - 8792: 0xCFBD, - 8793: 0xCFBE, - 8794: 0xCFBF, - 8795: 0xCFC0, - 8796: 0xCFC1, - 8797: 0xCFC2, - 8798: 0xCFC3, - 8799: 0xCFC5, - 8800: 0xCFC6, - 8801: 0xCFC7, - 8802: 0xCFC8, - 8803: 0xCFC9, - 8804: 0xCFCA, - 8805: 0xCFCB, - 8806: 0xAE79, - 8807: 0xAE7B, - 8808: 0xAE7C, - 8809: 0xAE7D, - 8810: 0xAE84, - 8811: 0xAE85, - 8812: 0xAE8C, - 8813: 0xAEBC, - 8814: 0xAEBD, - 8815: 0xAEBE, - 8816: 0xAEC0, - 8817: 0xAEC4, - 8818: 0xAECC, - 8819: 0xAECD, - 8820: 0xAECF, - 8821: 0xAED0, - 8822: 0xAED1, - 8823: 0xAED8, - 8824: 0xAED9, - 8825: 0xAEDC, - 8826: 0xAEE8, - 8827: 0xAEEB, - 8828: 0xAEED, - 8829: 0xAEF4, - 8830: 0xAEF8, - 8831: 0xAEFC, - 8832: 0xAF07, - 8833: 0xAF08, - 8834: 0xAF0D, - 8835: 0xAF10, - 8836: 0xAF2C, - 8837: 0xAF2D, - 8838: 0xAF30, - 8839: 0xAF32, - 8840: 0xAF34, - 8841: 0xAF3C, - 8842: 0xAF3D, - 8843: 0xAF3F, - 8844: 0xAF41, - 8845: 0xAF42, - 8846: 0xAF43, - 8847: 0xAF48, - 8848: 0xAF49, - 8849: 0xAF50, - 8850: 0xAF5C, - 8851: 0xAF5D, - 8852: 0xAF64, - 8853: 0xAF65, - 8854: 0xAF79, - 8855: 0xAF80, - 8856: 0xAF84, - 8857: 0xAF88, - 8858: 0xAF90, - 8859: 0xAF91, - 8860: 0xAF95, - 8861: 0xAF9C, - 8862: 0xAFB8, - 8863: 0xAFB9, - 8864: 0xAFBC, - 8865: 0xAFC0, - 8866: 0xAFC7, - 8867: 0xAFC8, - 8868: 0xAFC9, - 8869: 0xAFCB, - 8870: 0xAFCD, - 8871: 0xAFCE, - 8872: 0xAFD4, - 8873: 0xAFDC, - 8874: 0xAFE8, - 8875: 0xAFE9, - 8876: 0xAFF0, - 8877: 0xAFF1, - 8878: 0xAFF4, - 8879: 0xAFF8, - 8880: 0xB000, - 8881: 0xB001, - 8882: 0xB004, - 8883: 0xB00C, - 8884: 0xB010, - 8885: 0xB014, - 8886: 0xB01C, - 8887: 0xB01D, - 8888: 0xB028, - 8889: 0xB044, - 8890: 0xB045, - 8891: 0xB048, - 8892: 0xB04A, - 8893: 0xB04C, - 8894: 0xB04E, - 8895: 0xB053, - 8896: 0xB054, - 8897: 0xB055, - 8898: 0xB057, - 8899: 0xB059, - 8900: 0xCFCC, - 8901: 0xCFCD, - 8902: 0xCFCE, - 8903: 0xCFCF, - 8904: 0xCFD0, - 8905: 0xCFD1, - 8906: 0xCFD2, - 8907: 0xCFD3, - 8908: 0xCFD4, - 8909: 0xCFD5, - 8910: 0xCFD6, - 8911: 0xCFD7, - 8912: 0xCFD8, - 8913: 0xCFD9, - 8914: 0xCFDA, - 8915: 0xCFDB, - 8916: 0xCFDC, - 8917: 0xCFDD, - 8918: 0xCFDE, - 8919: 0xCFDF, - 8920: 0xCFE2, - 8921: 0xCFE3, - 8922: 0xCFE5, - 8923: 0xCFE6, - 8924: 0xCFE7, - 8925: 0xCFE9, - 8926: 0xCFEA, - 8927: 0xCFEB, - 8928: 0xCFEC, - 8929: 0xCFED, - 8930: 0xCFEE, - 8931: 0xCFEF, - 8932: 0xCFF2, - 8933: 0xCFF4, - 8934: 0xCFF6, - 8935: 0xCFF7, - 8936: 0xCFF8, - 8937: 0xCFF9, - 8938: 0xCFFA, - 8939: 0xCFFB, - 8940: 0xCFFD, - 8941: 0xCFFE, - 8942: 0xCFFF, - 8943: 0xD001, - 8944: 0xD002, - 8945: 0xD003, - 8946: 0xD005, - 8947: 0xD006, - 8948: 0xD007, - 8949: 0xD008, - 8950: 0xD009, - 8951: 0xD00A, - 8952: 0xD00B, - 8953: 0xD00C, - 8954: 0xD00D, - 8955: 0xD00E, - 8956: 0xD00F, - 8957: 0xD010, - 8958: 0xD012, - 8959: 0xD013, - 8960: 0xD014, - 8961: 0xD015, - 8962: 0xD016, - 8963: 0xD017, - 8964: 0xD019, - 8965: 0xD01A, - 8966: 0xD01B, - 8967: 0xD01C, - 8968: 0xD01D, - 8969: 0xD01E, - 8970: 0xD01F, - 8971: 0xD020, - 8972: 0xD021, - 8973: 0xD022, - 8974: 0xD023, - 8975: 0xD024, - 8976: 0xD025, - 8977: 0xD026, - 8978: 0xD027, - 8979: 0xD028, - 8980: 0xD029, - 8981: 0xD02A, - 8982: 0xD02B, - 8983: 0xD02C, - 8984: 0xB05D, - 8985: 0xB07C, - 8986: 0xB07D, - 8987: 0xB080, - 8988: 0xB084, - 8989: 0xB08C, - 8990: 0xB08D, - 8991: 0xB08F, - 8992: 0xB091, - 8993: 0xB098, - 8994: 0xB099, - 8995: 0xB09A, - 8996: 0xB09C, - 8997: 0xB09F, - 8998: 0xB0A0, - 8999: 0xB0A1, - 9000: 0xB0A2, - 9001: 0xB0A8, - 9002: 0xB0A9, - 9003: 0xB0AB, - 9004: 0xB0AC, - 9005: 0xB0AD, - 9006: 0xB0AE, - 9007: 0xB0AF, - 9008: 0xB0B1, - 9009: 0xB0B3, - 9010: 0xB0B4, - 9011: 0xB0B5, - 9012: 0xB0B8, - 9013: 0xB0BC, - 9014: 0xB0C4, - 9015: 0xB0C5, - 9016: 0xB0C7, - 9017: 0xB0C8, - 9018: 0xB0C9, - 9019: 0xB0D0, - 9020: 0xB0D1, - 9021: 0xB0D4, - 9022: 0xB0D8, - 9023: 0xB0E0, - 9024: 0xB0E5, - 9025: 0xB108, - 9026: 0xB109, - 9027: 0xB10B, - 9028: 0xB10C, - 9029: 0xB110, - 9030: 0xB112, - 9031: 0xB113, - 9032: 0xB118, - 9033: 0xB119, - 9034: 0xB11B, - 9035: 0xB11C, - 9036: 0xB11D, - 9037: 0xB123, - 9038: 0xB124, - 9039: 0xB125, - 9040: 0xB128, - 9041: 0xB12C, - 9042: 0xB134, - 9043: 0xB135, - 9044: 0xB137, - 9045: 0xB138, - 9046: 0xB139, - 9047: 0xB140, - 9048: 0xB141, - 9049: 0xB144, - 9050: 0xB148, - 9051: 0xB150, - 9052: 0xB151, - 9053: 0xB154, - 9054: 0xB155, - 9055: 0xB158, - 9056: 0xB15C, - 9057: 0xB160, - 9058: 0xB178, - 9059: 0xB179, - 9060: 0xB17C, - 9061: 0xB180, - 9062: 0xB182, - 9063: 0xB188, - 9064: 0xB189, - 9065: 0xB18B, - 9066: 0xB18D, - 9067: 0xB192, - 9068: 0xB193, - 9069: 0xB194, - 9070: 0xB198, - 9071: 0xB19C, - 9072: 0xB1A8, - 9073: 0xB1CC, - 9074: 0xB1D0, - 9075: 0xB1D4, - 9076: 0xB1DC, - 9077: 0xB1DD, - 9078: 0xD02E, - 9079: 0xD02F, - 9080: 0xD030, - 9081: 0xD031, - 9082: 0xD032, - 9083: 0xD033, - 9084: 0xD036, - 9085: 0xD037, - 9086: 0xD039, - 9087: 0xD03A, - 9088: 0xD03B, - 9089: 0xD03D, - 9090: 0xD03E, - 9091: 0xD03F, - 9092: 0xD040, - 9093: 0xD041, - 9094: 0xD042, - 9095: 0xD043, - 9096: 0xD046, - 9097: 0xD048, - 9098: 0xD04A, - 9099: 0xD04B, - 9100: 0xD04C, - 9101: 0xD04D, - 9102: 0xD04E, - 9103: 0xD04F, - 9104: 0xD051, - 9105: 0xD052, - 9106: 0xD053, - 9107: 0xD055, - 9108: 0xD056, - 9109: 0xD057, - 9110: 0xD059, - 9111: 0xD05A, - 9112: 0xD05B, - 9113: 0xD05C, - 9114: 0xD05D, - 9115: 0xD05E, - 9116: 0xD05F, - 9117: 0xD061, - 9118: 0xD062, - 9119: 0xD063, - 9120: 0xD064, - 9121: 0xD065, - 9122: 0xD066, - 9123: 0xD067, - 9124: 0xD068, - 9125: 0xD069, - 9126: 0xD06A, - 9127: 0xD06B, - 9128: 0xD06E, - 9129: 0xD06F, - 9130: 0xD071, - 9131: 0xD072, - 9132: 0xD073, - 9133: 0xD075, - 9134: 0xD076, - 9135: 0xD077, - 9136: 0xD078, - 9137: 0xD079, - 9138: 0xD07A, - 9139: 0xD07B, - 9140: 0xD07E, - 9141: 0xD07F, - 9142: 0xD080, - 9143: 0xD082, - 9144: 0xD083, - 9145: 0xD084, - 9146: 0xD085, - 9147: 0xD086, - 9148: 0xD087, - 9149: 0xD088, - 9150: 0xD089, - 9151: 0xD08A, - 9152: 0xD08B, - 9153: 0xD08C, - 9154: 0xD08D, - 9155: 0xD08E, - 9156: 0xD08F, - 9157: 0xD090, - 9158: 0xD091, - 9159: 0xD092, - 9160: 0xD093, - 9161: 0xD094, - 9162: 0xB1DF, - 9163: 0xB1E8, - 9164: 0xB1E9, - 9165: 0xB1EC, - 9166: 0xB1F0, - 9167: 0xB1F9, - 9168: 0xB1FB, - 9169: 0xB1FD, - 9170: 0xB204, - 9171: 0xB205, - 9172: 0xB208, - 9173: 0xB20B, - 9174: 0xB20C, - 9175: 0xB214, - 9176: 0xB215, - 9177: 0xB217, - 9178: 0xB219, - 9179: 0xB220, - 9180: 0xB234, - 9181: 0xB23C, - 9182: 0xB258, - 9183: 0xB25C, - 9184: 0xB260, - 9185: 0xB268, - 9186: 0xB269, - 9187: 0xB274, - 9188: 0xB275, - 9189: 0xB27C, - 9190: 0xB284, - 9191: 0xB285, - 9192: 0xB289, - 9193: 0xB290, - 9194: 0xB291, - 9195: 0xB294, - 9196: 0xB298, - 9197: 0xB299, - 9198: 0xB29A, - 9199: 0xB2A0, - 9200: 0xB2A1, - 9201: 0xB2A3, - 9202: 0xB2A5, - 9203: 0xB2A6, - 9204: 0xB2AA, - 9205: 0xB2AC, - 9206: 0xB2B0, - 9207: 0xB2B4, - 9208: 0xB2C8, - 9209: 0xB2C9, - 9210: 0xB2CC, - 9211: 0xB2D0, - 9212: 0xB2D2, - 9213: 0xB2D8, - 9214: 0xB2D9, - 9215: 0xB2DB, - 9216: 0xB2DD, - 9217: 0xB2E2, - 9218: 0xB2E4, - 9219: 0xB2E5, - 9220: 0xB2E6, - 9221: 0xB2E8, - 9222: 0xB2EB, - 9223: 0xB2EC, - 9224: 0xB2ED, - 9225: 0xB2EE, - 9226: 0xB2EF, - 9227: 0xB2F3, - 9228: 0xB2F4, - 9229: 0xB2F5, - 9230: 0xB2F7, - 9231: 0xB2F8, - 9232: 0xB2F9, - 9233: 0xB2FA, - 9234: 0xB2FB, - 9235: 0xB2FF, - 9236: 0xB300, - 9237: 0xB301, - 9238: 0xB304, - 9239: 0xB308, - 9240: 0xB310, - 9241: 0xB311, - 9242: 0xB313, - 9243: 0xB314, - 9244: 0xB315, - 9245: 0xB31C, - 9246: 0xB354, - 9247: 0xB355, - 9248: 0xB356, - 9249: 0xB358, - 9250: 0xB35B, - 9251: 0xB35C, - 9252: 0xB35E, - 9253: 0xB35F, - 9254: 0xB364, - 9255: 0xB365, - 9256: 0xD095, - 9257: 0xD096, - 9258: 0xD097, - 9259: 0xD098, - 9260: 0xD099, - 9261: 0xD09A, - 9262: 0xD09B, - 9263: 0xD09C, - 9264: 0xD09D, - 9265: 0xD09E, - 9266: 0xD09F, - 9267: 0xD0A0, - 9268: 0xD0A1, - 9269: 0xD0A2, - 9270: 0xD0A3, - 9271: 0xD0A6, - 9272: 0xD0A7, - 9273: 0xD0A9, - 9274: 0xD0AA, - 9275: 0xD0AB, - 9276: 0xD0AD, - 9277: 0xD0AE, - 9278: 0xD0AF, - 9279: 0xD0B0, - 9280: 0xD0B1, - 9281: 0xD0B2, - 9282: 0xD0B3, - 9283: 0xD0B6, - 9284: 0xD0B8, - 9285: 0xD0BA, - 9286: 0xD0BB, - 9287: 0xD0BC, - 9288: 0xD0BD, - 9289: 0xD0BE, - 9290: 0xD0BF, - 9291: 0xD0C2, - 9292: 0xD0C3, - 9293: 0xD0C5, - 9294: 0xD0C6, - 9295: 0xD0C7, - 9296: 0xD0CA, - 9297: 0xD0CB, - 9298: 0xD0CC, - 9299: 0xD0CD, - 9300: 0xD0CE, - 9301: 0xD0CF, - 9302: 0xD0D2, - 9303: 0xD0D6, - 9304: 0xD0D7, - 9305: 0xD0D8, - 9306: 0xD0D9, - 9307: 0xD0DA, - 9308: 0xD0DB, - 9309: 0xD0DE, - 9310: 0xD0DF, - 9311: 0xD0E1, - 9312: 0xD0E2, - 9313: 0xD0E3, - 9314: 0xD0E5, - 9315: 0xD0E6, - 9316: 0xD0E7, - 9317: 0xD0E8, - 9318: 0xD0E9, - 9319: 0xD0EA, - 9320: 0xD0EB, - 9321: 0xD0EE, - 9322: 0xD0F2, - 9323: 0xD0F3, - 9324: 0xD0F4, - 9325: 0xD0F5, - 9326: 0xD0F6, - 9327: 0xD0F7, - 9328: 0xD0F9, - 9329: 0xD0FA, - 9330: 0xD0FB, - 9331: 0xD0FC, - 9332: 0xD0FD, - 9333: 0xD0FE, - 9334: 0xD0FF, - 9335: 0xD100, - 9336: 0xD101, - 9337: 0xD102, - 9338: 0xD103, - 9339: 0xD104, - 9340: 0xB367, - 9341: 0xB369, - 9342: 0xB36B, - 9343: 0xB36E, - 9344: 0xB370, - 9345: 0xB371, - 9346: 0xB374, - 9347: 0xB378, - 9348: 0xB380, - 9349: 0xB381, - 9350: 0xB383, - 9351: 0xB384, - 9352: 0xB385, - 9353: 0xB38C, - 9354: 0xB390, - 9355: 0xB394, - 9356: 0xB3A0, - 9357: 0xB3A1, - 9358: 0xB3A8, - 9359: 0xB3AC, - 9360: 0xB3C4, - 9361: 0xB3C5, - 9362: 0xB3C8, - 9363: 0xB3CB, - 9364: 0xB3CC, - 9365: 0xB3CE, - 9366: 0xB3D0, - 9367: 0xB3D4, - 9368: 0xB3D5, - 9369: 0xB3D7, - 9370: 0xB3D9, - 9371: 0xB3DB, - 9372: 0xB3DD, - 9373: 0xB3E0, - 9374: 0xB3E4, - 9375: 0xB3E8, - 9376: 0xB3FC, - 9377: 0xB410, - 9378: 0xB418, - 9379: 0xB41C, - 9380: 0xB420, - 9381: 0xB428, - 9382: 0xB429, - 9383: 0xB42B, - 9384: 0xB434, - 9385: 0xB450, - 9386: 0xB451, - 9387: 0xB454, - 9388: 0xB458, - 9389: 0xB460, - 9390: 0xB461, - 9391: 0xB463, - 9392: 0xB465, - 9393: 0xB46C, - 9394: 0xB480, - 9395: 0xB488, - 9396: 0xB49D, - 9397: 0xB4A4, - 9398: 0xB4A8, - 9399: 0xB4AC, - 9400: 0xB4B5, - 9401: 0xB4B7, - 9402: 0xB4B9, - 9403: 0xB4C0, - 9404: 0xB4C4, - 9405: 0xB4C8, - 9406: 0xB4D0, - 9407: 0xB4D5, - 9408: 0xB4DC, - 9409: 0xB4DD, - 9410: 0xB4E0, - 9411: 0xB4E3, - 9412: 0xB4E4, - 9413: 0xB4E6, - 9414: 0xB4EC, - 9415: 0xB4ED, - 9416: 0xB4EF, - 9417: 0xB4F1, - 9418: 0xB4F8, - 9419: 0xB514, - 9420: 0xB515, - 9421: 0xB518, - 9422: 0xB51B, - 9423: 0xB51C, - 9424: 0xB524, - 9425: 0xB525, - 9426: 0xB527, - 9427: 0xB528, - 9428: 0xB529, - 9429: 0xB52A, - 9430: 0xB530, - 9431: 0xB531, - 9432: 0xB534, - 9433: 0xB538, - 9434: 0xD105, - 9435: 0xD106, - 9436: 0xD107, - 9437: 0xD108, - 9438: 0xD109, - 9439: 0xD10A, - 9440: 0xD10B, - 9441: 0xD10C, - 9442: 0xD10E, - 9443: 0xD10F, - 9444: 0xD110, - 9445: 0xD111, - 9446: 0xD112, - 9447: 0xD113, - 9448: 0xD114, - 9449: 0xD115, - 9450: 0xD116, - 9451: 0xD117, - 9452: 0xD118, - 9453: 0xD119, - 9454: 0xD11A, - 9455: 0xD11B, - 9456: 0xD11C, - 9457: 0xD11D, - 9458: 0xD11E, - 9459: 0xD11F, - 9460: 0xD120, - 9461: 0xD121, - 9462: 0xD122, - 9463: 0xD123, - 9464: 0xD124, - 9465: 0xD125, - 9466: 0xD126, - 9467: 0xD127, - 9468: 0xD128, - 9469: 0xD129, - 9470: 0xD12A, - 9471: 0xD12B, - 9472: 0xD12C, - 9473: 0xD12D, - 9474: 0xD12E, - 9475: 0xD12F, - 9476: 0xD132, - 9477: 0xD133, - 9478: 0xD135, - 9479: 0xD136, - 9480: 0xD137, - 9481: 0xD139, - 9482: 0xD13B, - 9483: 0xD13C, - 9484: 0xD13D, - 9485: 0xD13E, - 9486: 0xD13F, - 9487: 0xD142, - 9488: 0xD146, - 9489: 0xD147, - 9490: 0xD148, - 9491: 0xD149, - 9492: 0xD14A, - 9493: 0xD14B, - 9494: 0xD14E, - 9495: 0xD14F, - 9496: 0xD151, - 9497: 0xD152, - 9498: 0xD153, - 9499: 0xD155, - 9500: 0xD156, - 9501: 0xD157, - 9502: 0xD158, - 9503: 0xD159, - 9504: 0xD15A, - 9505: 0xD15B, - 9506: 0xD15E, - 9507: 0xD160, - 9508: 0xD162, - 9509: 0xD163, - 9510: 0xD164, - 9511: 0xD165, - 9512: 0xD166, - 9513: 0xD167, - 9514: 0xD169, - 9515: 0xD16A, - 9516: 0xD16B, - 9517: 0xD16D, - 9518: 0xB540, - 9519: 0xB541, - 9520: 0xB543, - 9521: 0xB544, - 9522: 0xB545, - 9523: 0xB54B, - 9524: 0xB54C, - 9525: 0xB54D, - 9526: 0xB550, - 9527: 0xB554, - 9528: 0xB55C, - 9529: 0xB55D, - 9530: 0xB55F, - 9531: 0xB560, - 9532: 0xB561, - 9533: 0xB5A0, - 9534: 0xB5A1, - 9535: 0xB5A4, - 9536: 0xB5A8, - 9537: 0xB5AA, - 9538: 0xB5AB, - 9539: 0xB5B0, - 9540: 0xB5B1, - 9541: 0xB5B3, - 9542: 0xB5B4, - 9543: 0xB5B5, - 9544: 0xB5BB, - 9545: 0xB5BC, - 9546: 0xB5BD, - 9547: 0xB5C0, - 9548: 0xB5C4, - 9549: 0xB5CC, - 9550: 0xB5CD, - 9551: 0xB5CF, - 9552: 0xB5D0, - 9553: 0xB5D1, - 9554: 0xB5D8, - 9555: 0xB5EC, - 9556: 0xB610, - 9557: 0xB611, - 9558: 0xB614, - 9559: 0xB618, - 9560: 0xB625, - 9561: 0xB62C, - 9562: 0xB634, - 9563: 0xB648, - 9564: 0xB664, - 9565: 0xB668, - 9566: 0xB69C, - 9567: 0xB69D, - 9568: 0xB6A0, - 9569: 0xB6A4, - 9570: 0xB6AB, - 9571: 0xB6AC, - 9572: 0xB6B1, - 9573: 0xB6D4, - 9574: 0xB6F0, - 9575: 0xB6F4, - 9576: 0xB6F8, - 9577: 0xB700, - 9578: 0xB701, - 9579: 0xB705, - 9580: 0xB728, - 9581: 0xB729, - 9582: 0xB72C, - 9583: 0xB72F, - 9584: 0xB730, - 9585: 0xB738, - 9586: 0xB739, - 9587: 0xB73B, - 9588: 0xB744, - 9589: 0xB748, - 9590: 0xB74C, - 9591: 0xB754, - 9592: 0xB755, - 9593: 0xB760, - 9594: 0xB764, - 9595: 0xB768, - 9596: 0xB770, - 9597: 0xB771, - 9598: 0xB773, - 9599: 0xB775, - 9600: 0xB77C, - 9601: 0xB77D, - 9602: 0xB780, - 9603: 0xB784, - 9604: 0xB78C, - 9605: 0xB78D, - 9606: 0xB78F, - 9607: 0xB790, - 9608: 0xB791, - 9609: 0xB792, - 9610: 0xB796, - 9611: 0xB797, - 9612: 0xD16E, - 9613: 0xD16F, - 9614: 0xD170, - 9615: 0xD171, - 9616: 0xD172, - 9617: 0xD173, - 9618: 0xD174, - 9619: 0xD175, - 9620: 0xD176, - 9621: 0xD177, - 9622: 0xD178, - 9623: 0xD179, - 9624: 0xD17A, - 9625: 0xD17B, - 9626: 0xD17D, - 9627: 0xD17E, - 9628: 0xD17F, - 9629: 0xD180, - 9630: 0xD181, - 9631: 0xD182, - 9632: 0xD183, - 9633: 0xD185, - 9634: 0xD186, - 9635: 0xD187, - 9636: 0xD189, - 9637: 0xD18A, - 9638: 0xD18B, - 9639: 0xD18C, - 9640: 0xD18D, - 9641: 0xD18E, - 9642: 0xD18F, - 9643: 0xD190, - 9644: 0xD191, - 9645: 0xD192, - 9646: 0xD193, - 9647: 0xD194, - 9648: 0xD195, - 9649: 0xD196, - 9650: 0xD197, - 9651: 0xD198, - 9652: 0xD199, - 9653: 0xD19A, - 9654: 0xD19B, - 9655: 0xD19C, - 9656: 0xD19D, - 9657: 0xD19E, - 9658: 0xD19F, - 9659: 0xD1A2, - 9660: 0xD1A3, - 9661: 0xD1A5, - 9662: 0xD1A6, - 9663: 0xD1A7, - 9664: 0xD1A9, - 9665: 0xD1AA, - 9666: 0xD1AB, - 9667: 0xD1AC, - 9668: 0xD1AD, - 9669: 0xD1AE, - 9670: 0xD1AF, - 9671: 0xD1B2, - 9672: 0xD1B4, - 9673: 0xD1B6, - 9674: 0xD1B7, - 9675: 0xD1B8, - 9676: 0xD1B9, - 9677: 0xD1BB, - 9678: 0xD1BD, - 9679: 0xD1BE, - 9680: 0xD1BF, - 9681: 0xD1C1, - 9682: 0xD1C2, - 9683: 0xD1C3, - 9684: 0xD1C4, - 9685: 0xD1C5, - 9686: 0xD1C6, - 9687: 0xD1C7, - 9688: 0xD1C8, - 9689: 0xD1C9, - 9690: 0xD1CA, - 9691: 0xD1CB, - 9692: 0xD1CC, - 9693: 0xD1CD, - 9694: 0xD1CE, - 9695: 0xD1CF, - 9696: 0xB798, - 9697: 0xB799, - 9698: 0xB79C, - 9699: 0xB7A0, - 9700: 0xB7A8, - 9701: 0xB7A9, - 9702: 0xB7AB, - 9703: 0xB7AC, - 9704: 0xB7AD, - 9705: 0xB7B4, - 9706: 0xB7B5, - 9707: 0xB7B8, - 9708: 0xB7C7, - 9709: 0xB7C9, - 9710: 0xB7EC, - 9711: 0xB7ED, - 9712: 0xB7F0, - 9713: 0xB7F4, - 9714: 0xB7FC, - 9715: 0xB7FD, - 9716: 0xB7FF, - 9717: 0xB800, - 9718: 0xB801, - 9719: 0xB807, - 9720: 0xB808, - 9721: 0xB809, - 9722: 0xB80C, - 9723: 0xB810, - 9724: 0xB818, - 9725: 0xB819, - 9726: 0xB81B, - 9727: 0xB81D, - 9728: 0xB824, - 9729: 0xB825, - 9730: 0xB828, - 9731: 0xB82C, - 9732: 0xB834, - 9733: 0xB835, - 9734: 0xB837, - 9735: 0xB838, - 9736: 0xB839, - 9737: 0xB840, - 9738: 0xB844, - 9739: 0xB851, - 9740: 0xB853, - 9741: 0xB85C, - 9742: 0xB85D, - 9743: 0xB860, - 9744: 0xB864, - 9745: 0xB86C, - 9746: 0xB86D, - 9747: 0xB86F, - 9748: 0xB871, - 9749: 0xB878, - 9750: 0xB87C, - 9751: 0xB88D, - 9752: 0xB8A8, - 9753: 0xB8B0, - 9754: 0xB8B4, - 9755: 0xB8B8, - 9756: 0xB8C0, - 9757: 0xB8C1, - 9758: 0xB8C3, - 9759: 0xB8C5, - 9760: 0xB8CC, - 9761: 0xB8D0, - 9762: 0xB8D4, - 9763: 0xB8DD, - 9764: 0xB8DF, - 9765: 0xB8E1, - 9766: 0xB8E8, - 9767: 0xB8E9, - 9768: 0xB8EC, - 9769: 0xB8F0, - 9770: 0xB8F8, - 9771: 0xB8F9, - 9772: 0xB8FB, - 9773: 0xB8FD, - 9774: 0xB904, - 9775: 0xB918, - 9776: 0xB920, - 9777: 0xB93C, - 9778: 0xB93D, - 9779: 0xB940, - 9780: 0xB944, - 9781: 0xB94C, - 9782: 0xB94F, - 9783: 0xB951, - 9784: 0xB958, - 9785: 0xB959, - 9786: 0xB95C, - 9787: 0xB960, - 9788: 0xB968, - 9789: 0xB969, - 9790: 0xD1D0, - 9791: 0xD1D1, - 9792: 0xD1D2, - 9793: 0xD1D3, - 9794: 0xD1D4, - 9795: 0xD1D5, - 9796: 0xD1D6, - 9797: 0xD1D7, - 9798: 0xD1D9, - 9799: 0xD1DA, - 9800: 0xD1DB, - 9801: 0xD1DC, - 9802: 0xD1DD, - 9803: 0xD1DE, - 9804: 0xD1DF, - 9805: 0xD1E0, - 9806: 0xD1E1, - 9807: 0xD1E2, - 9808: 0xD1E3, - 9809: 0xD1E4, - 9810: 0xD1E5, - 9811: 0xD1E6, - 9812: 0xD1E7, - 9813: 0xD1E8, - 9814: 0xD1E9, - 9815: 0xD1EA, - 9816: 0xD1EB, - 9817: 0xD1EC, - 9818: 0xD1ED, - 9819: 0xD1EE, - 9820: 0xD1EF, - 9821: 0xD1F0, - 9822: 0xD1F1, - 9823: 0xD1F2, - 9824: 0xD1F3, - 9825: 0xD1F5, - 9826: 0xD1F6, - 9827: 0xD1F7, - 9828: 0xD1F9, - 9829: 0xD1FA, - 9830: 0xD1FB, - 9831: 0xD1FC, - 9832: 0xD1FD, - 9833: 0xD1FE, - 9834: 0xD1FF, - 9835: 0xD200, - 9836: 0xD201, - 9837: 0xD202, - 9838: 0xD203, - 9839: 0xD204, - 9840: 0xD205, - 9841: 0xD206, - 9842: 0xD208, - 9843: 0xD20A, - 9844: 0xD20B, - 9845: 0xD20C, - 9846: 0xD20D, - 9847: 0xD20E, - 9848: 0xD20F, - 9849: 0xD211, - 9850: 0xD212, - 9851: 0xD213, - 9852: 0xD214, - 9853: 0xD215, - 9854: 0xD216, - 9855: 0xD217, - 9856: 0xD218, - 9857: 0xD219, - 9858: 0xD21A, - 9859: 0xD21B, - 9860: 0xD21C, - 9861: 0xD21D, - 9862: 0xD21E, - 9863: 0xD21F, - 9864: 0xD220, - 9865: 0xD221, - 9866: 0xD222, - 9867: 0xD223, - 9868: 0xD224, - 9869: 0xD225, - 9870: 0xD226, - 9871: 0xD227, - 9872: 0xD228, - 9873: 0xD229, - 9874: 0xB96B, - 9875: 0xB96D, - 9876: 0xB974, - 9877: 0xB975, - 9878: 0xB978, - 9879: 0xB97C, - 9880: 0xB984, - 9881: 0xB985, - 9882: 0xB987, - 9883: 0xB989, - 9884: 0xB98A, - 9885: 0xB98D, - 9886: 0xB98E, - 9887: 0xB9AC, - 9888: 0xB9AD, - 9889: 0xB9B0, - 9890: 0xB9B4, - 9891: 0xB9BC, - 9892: 0xB9BD, - 9893: 0xB9BF, - 9894: 0xB9C1, - 9895: 0xB9C8, - 9896: 0xB9C9, - 9897: 0xB9CC, - 9898: 0xB9CE, - 9899: 0xB9CF, - 9900: 0xB9D0, - 9901: 0xB9D1, - 9902: 0xB9D2, - 9903: 0xB9D8, - 9904: 0xB9D9, - 9905: 0xB9DB, - 9906: 0xB9DD, - 9907: 0xB9DE, - 9908: 0xB9E1, - 9909: 0xB9E3, - 9910: 0xB9E4, - 9911: 0xB9E5, - 9912: 0xB9E8, - 9913: 0xB9EC, - 9914: 0xB9F4, - 9915: 0xB9F5, - 9916: 0xB9F7, - 9917: 0xB9F8, - 9918: 0xB9F9, - 9919: 0xB9FA, - 9920: 0xBA00, - 9921: 0xBA01, - 9922: 0xBA08, - 9923: 0xBA15, - 9924: 0xBA38, - 9925: 0xBA39, - 9926: 0xBA3C, - 9927: 0xBA40, - 9928: 0xBA42, - 9929: 0xBA48, - 9930: 0xBA49, - 9931: 0xBA4B, - 9932: 0xBA4D, - 9933: 0xBA4E, - 9934: 0xBA53, - 9935: 0xBA54, - 9936: 0xBA55, - 9937: 0xBA58, - 9938: 0xBA5C, - 9939: 0xBA64, - 9940: 0xBA65, - 9941: 0xBA67, - 9942: 0xBA68, - 9943: 0xBA69, - 9944: 0xBA70, - 9945: 0xBA71, - 9946: 0xBA74, - 9947: 0xBA78, - 9948: 0xBA83, - 9949: 0xBA84, - 9950: 0xBA85, - 9951: 0xBA87, - 9952: 0xBA8C, - 9953: 0xBAA8, - 9954: 0xBAA9, - 9955: 0xBAAB, - 9956: 0xBAAC, - 9957: 0xBAB0, - 9958: 0xBAB2, - 9959: 0xBAB8, - 9960: 0xBAB9, - 9961: 0xBABB, - 9962: 0xBABD, - 9963: 0xBAC4, - 9964: 0xBAC8, - 9965: 0xBAD8, - 9966: 0xBAD9, - 9967: 0xBAFC, - 9968: 0xD22A, - 9969: 0xD22B, - 9970: 0xD22E, - 9971: 0xD22F, - 9972: 0xD231, - 9973: 0xD232, - 9974: 0xD233, - 9975: 0xD235, - 9976: 0xD236, - 9977: 0xD237, - 9978: 0xD238, - 9979: 0xD239, - 9980: 0xD23A, - 9981: 0xD23B, - 9982: 0xD23E, - 9983: 0xD240, - 9984: 0xD242, - 9985: 0xD243, - 9986: 0xD244, - 9987: 0xD245, - 9988: 0xD246, - 9989: 0xD247, - 9990: 0xD249, - 9991: 0xD24A, - 9992: 0xD24B, - 9993: 0xD24C, - 9994: 0xD24D, - 9995: 0xD24E, - 9996: 0xD24F, - 9997: 0xD250, - 9998: 0xD251, - 9999: 0xD252, - 10000: 0xD253, - 10001: 0xD254, - 10002: 0xD255, - 10003: 0xD256, - 10004: 0xD257, - 10005: 0xD258, - 10006: 0xD259, - 10007: 0xD25A, - 10008: 0xD25B, - 10009: 0xD25D, - 10010: 0xD25E, - 10011: 0xD25F, - 10012: 0xD260, - 10013: 0xD261, - 10014: 0xD262, - 10015: 0xD263, - 10016: 0xD265, - 10017: 0xD266, - 10018: 0xD267, - 10019: 0xD268, - 10020: 0xD269, - 10021: 0xD26A, - 10022: 0xD26B, - 10023: 0xD26C, - 10024: 0xD26D, - 10025: 0xD26E, - 10026: 0xD26F, - 10027: 0xD270, - 10028: 0xD271, - 10029: 0xD272, - 10030: 0xD273, - 10031: 0xD274, - 10032: 0xD275, - 10033: 0xD276, - 10034: 0xD277, - 10035: 0xD278, - 10036: 0xD279, - 10037: 0xD27A, - 10038: 0xD27B, - 10039: 0xD27C, - 10040: 0xD27D, - 10041: 0xD27E, - 10042: 0xD27F, - 10043: 0xD282, - 10044: 0xD283, - 10045: 0xD285, - 10046: 0xD286, - 10047: 0xD287, - 10048: 0xD289, - 10049: 0xD28A, - 10050: 0xD28B, - 10051: 0xD28C, - 10052: 0xBB00, - 10053: 0xBB04, - 10054: 0xBB0D, - 10055: 0xBB0F, - 10056: 0xBB11, - 10057: 0xBB18, - 10058: 0xBB1C, - 10059: 0xBB20, - 10060: 0xBB29, - 10061: 0xBB2B, - 10062: 0xBB34, - 10063: 0xBB35, - 10064: 0xBB36, - 10065: 0xBB38, - 10066: 0xBB3B, - 10067: 0xBB3C, - 10068: 0xBB3D, - 10069: 0xBB3E, - 10070: 0xBB44, - 10071: 0xBB45, - 10072: 0xBB47, - 10073: 0xBB49, - 10074: 0xBB4D, - 10075: 0xBB4F, - 10076: 0xBB50, - 10077: 0xBB54, - 10078: 0xBB58, - 10079: 0xBB61, - 10080: 0xBB63, - 10081: 0xBB6C, - 10082: 0xBB88, - 10083: 0xBB8C, - 10084: 0xBB90, - 10085: 0xBBA4, - 10086: 0xBBA8, - 10087: 0xBBAC, - 10088: 0xBBB4, - 10089: 0xBBB7, - 10090: 0xBBC0, - 10091: 0xBBC4, - 10092: 0xBBC8, - 10093: 0xBBD0, - 10094: 0xBBD3, - 10095: 0xBBF8, - 10096: 0xBBF9, - 10097: 0xBBFC, - 10098: 0xBBFF, - 10099: 0xBC00, - 10100: 0xBC02, - 10101: 0xBC08, - 10102: 0xBC09, - 10103: 0xBC0B, - 10104: 0xBC0C, - 10105: 0xBC0D, - 10106: 0xBC0F, - 10107: 0xBC11, - 10108: 0xBC14, - 10109: 0xBC15, - 10110: 0xBC16, - 10111: 0xBC17, - 10112: 0xBC18, - 10113: 0xBC1B, - 10114: 0xBC1C, - 10115: 0xBC1D, - 10116: 0xBC1E, - 10117: 0xBC1F, - 10118: 0xBC24, - 10119: 0xBC25, - 10120: 0xBC27, - 10121: 0xBC29, - 10122: 0xBC2D, - 10123: 0xBC30, - 10124: 0xBC31, - 10125: 0xBC34, - 10126: 0xBC38, - 10127: 0xBC40, - 10128: 0xBC41, - 10129: 0xBC43, - 10130: 0xBC44, - 10131: 0xBC45, - 10132: 0xBC49, - 10133: 0xBC4C, - 10134: 0xBC4D, - 10135: 0xBC50, - 10136: 0xBC5D, - 10137: 0xBC84, - 10138: 0xBC85, - 10139: 0xBC88, - 10140: 0xBC8B, - 10141: 0xBC8C, - 10142: 0xBC8E, - 10143: 0xBC94, - 10144: 0xBC95, - 10145: 0xBC97, - 10146: 0xD28D, - 10147: 0xD28E, - 10148: 0xD28F, - 10149: 0xD292, - 10150: 0xD293, - 10151: 0xD294, - 10152: 0xD296, - 10153: 0xD297, - 10154: 0xD298, - 10155: 0xD299, - 10156: 0xD29A, - 10157: 0xD29B, - 10158: 0xD29D, - 10159: 0xD29E, - 10160: 0xD29F, - 10161: 0xD2A1, - 10162: 0xD2A2, - 10163: 0xD2A3, - 10164: 0xD2A5, - 10165: 0xD2A6, - 10166: 0xD2A7, - 10167: 0xD2A8, - 10168: 0xD2A9, - 10169: 0xD2AA, - 10170: 0xD2AB, - 10171: 0xD2AD, - 10172: 0xD2AE, - 10173: 0xD2AF, - 10174: 0xD2B0, - 10175: 0xD2B2, - 10176: 0xD2B3, - 10177: 0xD2B4, - 10178: 0xD2B5, - 10179: 0xD2B6, - 10180: 0xD2B7, - 10181: 0xD2BA, - 10182: 0xD2BB, - 10183: 0xD2BD, - 10184: 0xD2BE, - 10185: 0xD2C1, - 10186: 0xD2C3, - 10187: 0xD2C4, - 10188: 0xD2C5, - 10189: 0xD2C6, - 10190: 0xD2C7, - 10191: 0xD2CA, - 10192: 0xD2CC, - 10193: 0xD2CD, - 10194: 0xD2CE, - 10195: 0xD2CF, - 10196: 0xD2D0, - 10197: 0xD2D1, - 10198: 0xD2D2, - 10199: 0xD2D3, - 10200: 0xD2D5, - 10201: 0xD2D6, - 10202: 0xD2D7, - 10203: 0xD2D9, - 10204: 0xD2DA, - 10205: 0xD2DB, - 10206: 0xD2DD, - 10207: 0xD2DE, - 10208: 0xD2DF, - 10209: 0xD2E0, - 10210: 0xD2E1, - 10211: 0xD2E2, - 10212: 0xD2E3, - 10213: 0xD2E6, - 10214: 0xD2E7, - 10215: 0xD2E8, - 10216: 0xD2E9, - 10217: 0xD2EA, - 10218: 0xD2EB, - 10219: 0xD2EC, - 10220: 0xD2ED, - 10221: 0xD2EE, - 10222: 0xD2EF, - 10223: 0xD2F2, - 10224: 0xD2F3, - 10225: 0xD2F5, - 10226: 0xD2F6, - 10227: 0xD2F7, - 10228: 0xD2F9, - 10229: 0xD2FA, - 10230: 0xBC99, - 10231: 0xBC9A, - 10232: 0xBCA0, - 10233: 0xBCA1, - 10234: 0xBCA4, - 10235: 0xBCA7, - 10236: 0xBCA8, - 10237: 0xBCB0, - 10238: 0xBCB1, - 10239: 0xBCB3, - 10240: 0xBCB4, - 10241: 0xBCB5, - 10242: 0xBCBC, - 10243: 0xBCBD, - 10244: 0xBCC0, - 10245: 0xBCC4, - 10246: 0xBCCD, - 10247: 0xBCCF, - 10248: 0xBCD0, - 10249: 0xBCD1, - 10250: 0xBCD5, - 10251: 0xBCD8, - 10252: 0xBCDC, - 10253: 0xBCF4, - 10254: 0xBCF5, - 10255: 0xBCF6, - 10256: 0xBCF8, - 10257: 0xBCFC, - 10258: 0xBD04, - 10259: 0xBD05, - 10260: 0xBD07, - 10261: 0xBD09, - 10262: 0xBD10, - 10263: 0xBD14, - 10264: 0xBD24, - 10265: 0xBD2C, - 10266: 0xBD40, - 10267: 0xBD48, - 10268: 0xBD49, - 10269: 0xBD4C, - 10270: 0xBD50, - 10271: 0xBD58, - 10272: 0xBD59, - 10273: 0xBD64, - 10274: 0xBD68, - 10275: 0xBD80, - 10276: 0xBD81, - 10277: 0xBD84, - 10278: 0xBD87, - 10279: 0xBD88, - 10280: 0xBD89, - 10281: 0xBD8A, - 10282: 0xBD90, - 10283: 0xBD91, - 10284: 0xBD93, - 10285: 0xBD95, - 10286: 0xBD99, - 10287: 0xBD9A, - 10288: 0xBD9C, - 10289: 0xBDA4, - 10290: 0xBDB0, - 10291: 0xBDB8, - 10292: 0xBDD4, - 10293: 0xBDD5, - 10294: 0xBDD8, - 10295: 0xBDDC, - 10296: 0xBDE9, - 10297: 0xBDF0, - 10298: 0xBDF4, - 10299: 0xBDF8, - 10300: 0xBE00, - 10301: 0xBE03, - 10302: 0xBE05, - 10303: 0xBE0C, - 10304: 0xBE0D, - 10305: 0xBE10, - 10306: 0xBE14, - 10307: 0xBE1C, - 10308: 0xBE1D, - 10309: 0xBE1F, - 10310: 0xBE44, - 10311: 0xBE45, - 10312: 0xBE48, - 10313: 0xBE4C, - 10314: 0xBE4E, - 10315: 0xBE54, - 10316: 0xBE55, - 10317: 0xBE57, - 10318: 0xBE59, - 10319: 0xBE5A, - 10320: 0xBE5B, - 10321: 0xBE60, - 10322: 0xBE61, - 10323: 0xBE64, - 10324: 0xD2FB, - 10325: 0xD2FC, - 10326: 0xD2FD, - 10327: 0xD2FE, - 10328: 0xD2FF, - 10329: 0xD302, - 10330: 0xD304, - 10331: 0xD306, - 10332: 0xD307, - 10333: 0xD308, - 10334: 0xD309, - 10335: 0xD30A, - 10336: 0xD30B, - 10337: 0xD30F, - 10338: 0xD311, - 10339: 0xD312, - 10340: 0xD313, - 10341: 0xD315, - 10342: 0xD317, - 10343: 0xD318, - 10344: 0xD319, - 10345: 0xD31A, - 10346: 0xD31B, - 10347: 0xD31E, - 10348: 0xD322, - 10349: 0xD323, - 10350: 0xD324, - 10351: 0xD326, - 10352: 0xD327, - 10353: 0xD32A, - 10354: 0xD32B, - 10355: 0xD32D, - 10356: 0xD32E, - 10357: 0xD32F, - 10358: 0xD331, - 10359: 0xD332, - 10360: 0xD333, - 10361: 0xD334, - 10362: 0xD335, - 10363: 0xD336, - 10364: 0xD337, - 10365: 0xD33A, - 10366: 0xD33E, - 10367: 0xD33F, - 10368: 0xD340, - 10369: 0xD341, - 10370: 0xD342, - 10371: 0xD343, - 10372: 0xD346, - 10373: 0xD347, - 10374: 0xD348, - 10375: 0xD349, - 10376: 0xD34A, - 10377: 0xD34B, - 10378: 0xD34C, - 10379: 0xD34D, - 10380: 0xD34E, - 10381: 0xD34F, - 10382: 0xD350, - 10383: 0xD351, - 10384: 0xD352, - 10385: 0xD353, - 10386: 0xD354, - 10387: 0xD355, - 10388: 0xD356, - 10389: 0xD357, - 10390: 0xD358, - 10391: 0xD359, - 10392: 0xD35A, - 10393: 0xD35B, - 10394: 0xD35C, - 10395: 0xD35D, - 10396: 0xD35E, - 10397: 0xD35F, - 10398: 0xD360, - 10399: 0xD361, - 10400: 0xD362, - 10401: 0xD363, - 10402: 0xD364, - 10403: 0xD365, - 10404: 0xD366, - 10405: 0xD367, - 10406: 0xD368, - 10407: 0xD369, - 10408: 0xBE68, - 10409: 0xBE6A, - 10410: 0xBE70, - 10411: 0xBE71, - 10412: 0xBE73, - 10413: 0xBE74, - 10414: 0xBE75, - 10415: 0xBE7B, - 10416: 0xBE7C, - 10417: 0xBE7D, - 10418: 0xBE80, - 10419: 0xBE84, - 10420: 0xBE8C, - 10421: 0xBE8D, - 10422: 0xBE8F, - 10423: 0xBE90, - 10424: 0xBE91, - 10425: 0xBE98, - 10426: 0xBE99, - 10427: 0xBEA8, - 10428: 0xBED0, - 10429: 0xBED1, - 10430: 0xBED4, - 10431: 0xBED7, - 10432: 0xBED8, - 10433: 0xBEE0, - 10434: 0xBEE3, - 10435: 0xBEE4, - 10436: 0xBEE5, - 10437: 0xBEEC, - 10438: 0xBF01, - 10439: 0xBF08, - 10440: 0xBF09, - 10441: 0xBF18, - 10442: 0xBF19, - 10443: 0xBF1B, - 10444: 0xBF1C, - 10445: 0xBF1D, - 10446: 0xBF40, - 10447: 0xBF41, - 10448: 0xBF44, - 10449: 0xBF48, - 10450: 0xBF50, - 10451: 0xBF51, - 10452: 0xBF55, - 10453: 0xBF94, - 10454: 0xBFB0, - 10455: 0xBFC5, - 10456: 0xBFCC, - 10457: 0xBFCD, - 10458: 0xBFD0, - 10459: 0xBFD4, - 10460: 0xBFDC, - 10461: 0xBFDF, - 10462: 0xBFE1, - 10463: 0xC03C, - 10464: 0xC051, - 10465: 0xC058, - 10466: 0xC05C, - 10467: 0xC060, - 10468: 0xC068, - 10469: 0xC069, - 10470: 0xC090, - 10471: 0xC091, - 10472: 0xC094, - 10473: 0xC098, - 10474: 0xC0A0, - 10475: 0xC0A1, - 10476: 0xC0A3, - 10477: 0xC0A5, - 10478: 0xC0AC, - 10479: 0xC0AD, - 10480: 0xC0AF, - 10481: 0xC0B0, - 10482: 0xC0B3, - 10483: 0xC0B4, - 10484: 0xC0B5, - 10485: 0xC0B6, - 10486: 0xC0BC, - 10487: 0xC0BD, - 10488: 0xC0BF, - 10489: 0xC0C0, - 10490: 0xC0C1, - 10491: 0xC0C5, - 10492: 0xC0C8, - 10493: 0xC0C9, - 10494: 0xC0CC, - 10495: 0xC0D0, - 10496: 0xC0D8, - 10497: 0xC0D9, - 10498: 0xC0DB, - 10499: 0xC0DC, - 10500: 0xC0DD, - 10501: 0xC0E4, - 10502: 0xD36A, - 10503: 0xD36B, - 10504: 0xD36C, - 10505: 0xD36D, - 10506: 0xD36E, - 10507: 0xD36F, - 10508: 0xD370, - 10509: 0xD371, - 10510: 0xD372, - 10511: 0xD373, - 10512: 0xD374, - 10513: 0xD375, - 10514: 0xD376, - 10515: 0xD377, - 10516: 0xD378, - 10517: 0xD379, - 10518: 0xD37A, - 10519: 0xD37B, - 10520: 0xD37E, - 10521: 0xD37F, - 10522: 0xD381, - 10523: 0xD382, - 10524: 0xD383, - 10525: 0xD385, - 10526: 0xD386, - 10527: 0xD387, - 10528: 0xD388, - 10529: 0xD389, - 10530: 0xD38A, - 10531: 0xD38B, - 10532: 0xD38E, - 10533: 0xD392, - 10534: 0xD393, - 10535: 0xD394, - 10536: 0xD395, - 10537: 0xD396, - 10538: 0xD397, - 10539: 0xD39A, - 10540: 0xD39B, - 10541: 0xD39D, - 10542: 0xD39E, - 10543: 0xD39F, - 10544: 0xD3A1, - 10545: 0xD3A2, - 10546: 0xD3A3, - 10547: 0xD3A4, - 10548: 0xD3A5, - 10549: 0xD3A6, - 10550: 0xD3A7, - 10551: 0xD3AA, - 10552: 0xD3AC, - 10553: 0xD3AE, - 10554: 0xD3AF, - 10555: 0xD3B0, - 10556: 0xD3B1, - 10557: 0xD3B2, - 10558: 0xD3B3, - 10559: 0xD3B5, - 10560: 0xD3B6, - 10561: 0xD3B7, - 10562: 0xD3B9, - 10563: 0xD3BA, - 10564: 0xD3BB, - 10565: 0xD3BD, - 10566: 0xD3BE, - 10567: 0xD3BF, - 10568: 0xD3C0, - 10569: 0xD3C1, - 10570: 0xD3C2, - 10571: 0xD3C3, - 10572: 0xD3C6, - 10573: 0xD3C7, - 10574: 0xD3CA, - 10575: 0xD3CB, - 10576: 0xD3CC, - 10577: 0xD3CD, - 10578: 0xD3CE, - 10579: 0xD3CF, - 10580: 0xD3D1, - 10581: 0xD3D2, - 10582: 0xD3D3, - 10583: 0xD3D4, - 10584: 0xD3D5, - 10585: 0xD3D6, - 10586: 0xC0E5, - 10587: 0xC0E8, - 10588: 0xC0EC, - 10589: 0xC0F4, - 10590: 0xC0F5, - 10591: 0xC0F7, - 10592: 0xC0F9, - 10593: 0xC100, - 10594: 0xC104, - 10595: 0xC108, - 10596: 0xC110, - 10597: 0xC115, - 10598: 0xC11C, - 10599: 0xC11D, - 10600: 0xC11E, - 10601: 0xC11F, - 10602: 0xC120, - 10603: 0xC123, - 10604: 0xC124, - 10605: 0xC126, - 10606: 0xC127, - 10607: 0xC12C, - 10608: 0xC12D, - 10609: 0xC12F, - 10610: 0xC130, - 10611: 0xC131, - 10612: 0xC136, - 10613: 0xC138, - 10614: 0xC139, - 10615: 0xC13C, - 10616: 0xC140, - 10617: 0xC148, - 10618: 0xC149, - 10619: 0xC14B, - 10620: 0xC14C, - 10621: 0xC14D, - 10622: 0xC154, - 10623: 0xC155, - 10624: 0xC158, - 10625: 0xC15C, - 10626: 0xC164, - 10627: 0xC165, - 10628: 0xC167, - 10629: 0xC168, - 10630: 0xC169, - 10631: 0xC170, - 10632: 0xC174, - 10633: 0xC178, - 10634: 0xC185, - 10635: 0xC18C, - 10636: 0xC18D, - 10637: 0xC18E, - 10638: 0xC190, - 10639: 0xC194, - 10640: 0xC196, - 10641: 0xC19C, - 10642: 0xC19D, - 10643: 0xC19F, - 10644: 0xC1A1, - 10645: 0xC1A5, - 10646: 0xC1A8, - 10647: 0xC1A9, - 10648: 0xC1AC, - 10649: 0xC1B0, - 10650: 0xC1BD, - 10651: 0xC1C4, - 10652: 0xC1C8, - 10653: 0xC1CC, - 10654: 0xC1D4, - 10655: 0xC1D7, - 10656: 0xC1D8, - 10657: 0xC1E0, - 10658: 0xC1E4, - 10659: 0xC1E8, - 10660: 0xC1F0, - 10661: 0xC1F1, - 10662: 0xC1F3, - 10663: 0xC1FC, - 10664: 0xC1FD, - 10665: 0xC200, - 10666: 0xC204, - 10667: 0xC20C, - 10668: 0xC20D, - 10669: 0xC20F, - 10670: 0xC211, - 10671: 0xC218, - 10672: 0xC219, - 10673: 0xC21C, - 10674: 0xC21F, - 10675: 0xC220, - 10676: 0xC228, - 10677: 0xC229, - 10678: 0xC22B, - 10679: 0xC22D, - 10680: 0xD3D7, - 10681: 0xD3D9, - 10682: 0xD3DA, - 10683: 0xD3DB, - 10684: 0xD3DC, - 10685: 0xD3DD, - 10686: 0xD3DE, - 10687: 0xD3DF, - 10688: 0xD3E0, - 10689: 0xD3E2, - 10690: 0xD3E4, - 10691: 0xD3E5, - 10692: 0xD3E6, - 10693: 0xD3E7, - 10694: 0xD3E8, - 10695: 0xD3E9, - 10696: 0xD3EA, - 10697: 0xD3EB, - 10698: 0xD3EE, - 10699: 0xD3EF, - 10700: 0xD3F1, - 10701: 0xD3F2, - 10702: 0xD3F3, - 10703: 0xD3F5, - 10704: 0xD3F6, - 10705: 0xD3F7, - 10706: 0xD3F8, - 10707: 0xD3F9, - 10708: 0xD3FA, - 10709: 0xD3FB, - 10710: 0xD3FE, - 10711: 0xD400, - 10712: 0xD402, - 10713: 0xD403, - 10714: 0xD404, - 10715: 0xD405, - 10716: 0xD406, - 10717: 0xD407, - 10718: 0xD409, - 10719: 0xD40A, - 10720: 0xD40B, - 10721: 0xD40C, - 10722: 0xD40D, - 10723: 0xD40E, - 10724: 0xD40F, - 10725: 0xD410, - 10726: 0xD411, - 10727: 0xD412, - 10728: 0xD413, - 10729: 0xD414, - 10730: 0xD415, - 10731: 0xD416, - 10732: 0xD417, - 10733: 0xD418, - 10734: 0xD419, - 10735: 0xD41A, - 10736: 0xD41B, - 10737: 0xD41C, - 10738: 0xD41E, - 10739: 0xD41F, - 10740: 0xD420, - 10741: 0xD421, - 10742: 0xD422, - 10743: 0xD423, - 10744: 0xD424, - 10745: 0xD425, - 10746: 0xD426, - 10747: 0xD427, - 10748: 0xD428, - 10749: 0xD429, - 10750: 0xD42A, - 10751: 0xD42B, - 10752: 0xD42C, - 10753: 0xD42D, - 10754: 0xD42E, - 10755: 0xD42F, - 10756: 0xD430, - 10757: 0xD431, - 10758: 0xD432, - 10759: 0xD433, - 10760: 0xD434, - 10761: 0xD435, - 10762: 0xD436, - 10763: 0xD437, - 10764: 0xC22F, - 10765: 0xC231, - 10766: 0xC232, - 10767: 0xC234, - 10768: 0xC248, - 10769: 0xC250, - 10770: 0xC251, - 10771: 0xC254, - 10772: 0xC258, - 10773: 0xC260, - 10774: 0xC265, - 10775: 0xC26C, - 10776: 0xC26D, - 10777: 0xC270, - 10778: 0xC274, - 10779: 0xC27C, - 10780: 0xC27D, - 10781: 0xC27F, - 10782: 0xC281, - 10783: 0xC288, - 10784: 0xC289, - 10785: 0xC290, - 10786: 0xC298, - 10787: 0xC29B, - 10788: 0xC29D, - 10789: 0xC2A4, - 10790: 0xC2A5, - 10791: 0xC2A8, - 10792: 0xC2AC, - 10793: 0xC2AD, - 10794: 0xC2B4, - 10795: 0xC2B5, - 10796: 0xC2B7, - 10797: 0xC2B9, - 10798: 0xC2DC, - 10799: 0xC2DD, - 10800: 0xC2E0, - 10801: 0xC2E3, - 10802: 0xC2E4, - 10803: 0xC2EB, - 10804: 0xC2EC, - 10805: 0xC2ED, - 10806: 0xC2EF, - 10807: 0xC2F1, - 10808: 0xC2F6, - 10809: 0xC2F8, - 10810: 0xC2F9, - 10811: 0xC2FB, - 10812: 0xC2FC, - 10813: 0xC300, - 10814: 0xC308, - 10815: 0xC309, - 10816: 0xC30C, - 10817: 0xC30D, - 10818: 0xC313, - 10819: 0xC314, - 10820: 0xC315, - 10821: 0xC318, - 10822: 0xC31C, - 10823: 0xC324, - 10824: 0xC325, - 10825: 0xC328, - 10826: 0xC329, - 10827: 0xC345, - 10828: 0xC368, - 10829: 0xC369, - 10830: 0xC36C, - 10831: 0xC370, - 10832: 0xC372, - 10833: 0xC378, - 10834: 0xC379, - 10835: 0xC37C, - 10836: 0xC37D, - 10837: 0xC384, - 10838: 0xC388, - 10839: 0xC38C, - 10840: 0xC3C0, - 10841: 0xC3D8, - 10842: 0xC3D9, - 10843: 0xC3DC, - 10844: 0xC3DF, - 10845: 0xC3E0, - 10846: 0xC3E2, - 10847: 0xC3E8, - 10848: 0xC3E9, - 10849: 0xC3ED, - 10850: 0xC3F4, - 10851: 0xC3F5, - 10852: 0xC3F8, - 10853: 0xC408, - 10854: 0xC410, - 10855: 0xC424, - 10856: 0xC42C, - 10857: 0xC430, - 10858: 0xD438, - 10859: 0xD439, - 10860: 0xD43A, - 10861: 0xD43B, - 10862: 0xD43C, - 10863: 0xD43D, - 10864: 0xD43E, - 10865: 0xD43F, - 10866: 0xD441, - 10867: 0xD442, - 10868: 0xD443, - 10869: 0xD445, - 10870: 0xD446, - 10871: 0xD447, - 10872: 0xD448, - 10873: 0xD449, - 10874: 0xD44A, - 10875: 0xD44B, - 10876: 0xD44C, - 10877: 0xD44D, - 10878: 0xD44E, - 10879: 0xD44F, - 10880: 0xD450, - 10881: 0xD451, - 10882: 0xD452, - 10883: 0xD453, - 10884: 0xD454, - 10885: 0xD455, - 10886: 0xD456, - 10887: 0xD457, - 10888: 0xD458, - 10889: 0xD459, - 10890: 0xD45A, - 10891: 0xD45B, - 10892: 0xD45D, - 10893: 0xD45E, - 10894: 0xD45F, - 10895: 0xD461, - 10896: 0xD462, - 10897: 0xD463, - 10898: 0xD465, - 10899: 0xD466, - 10900: 0xD467, - 10901: 0xD468, - 10902: 0xD469, - 10903: 0xD46A, - 10904: 0xD46B, - 10905: 0xD46C, - 10906: 0xD46E, - 10907: 0xD470, - 10908: 0xD471, - 10909: 0xD472, - 10910: 0xD473, - 10911: 0xD474, - 10912: 0xD475, - 10913: 0xD476, - 10914: 0xD477, - 10915: 0xD47A, - 10916: 0xD47B, - 10917: 0xD47D, - 10918: 0xD47E, - 10919: 0xD481, - 10920: 0xD483, - 10921: 0xD484, - 10922: 0xD485, - 10923: 0xD486, - 10924: 0xD487, - 10925: 0xD48A, - 10926: 0xD48C, - 10927: 0xD48E, - 10928: 0xD48F, - 10929: 0xD490, - 10930: 0xD491, - 10931: 0xD492, - 10932: 0xD493, - 10933: 0xD495, - 10934: 0xD496, - 10935: 0xD497, - 10936: 0xD498, - 10937: 0xD499, - 10938: 0xD49A, - 10939: 0xD49B, - 10940: 0xD49C, - 10941: 0xD49D, - 10942: 0xC434, - 10943: 0xC43C, - 10944: 0xC43D, - 10945: 0xC448, - 10946: 0xC464, - 10947: 0xC465, - 10948: 0xC468, - 10949: 0xC46C, - 10950: 0xC474, - 10951: 0xC475, - 10952: 0xC479, - 10953: 0xC480, - 10954: 0xC494, - 10955: 0xC49C, - 10956: 0xC4B8, - 10957: 0xC4BC, - 10958: 0xC4E9, - 10959: 0xC4F0, - 10960: 0xC4F1, - 10961: 0xC4F4, - 10962: 0xC4F8, - 10963: 0xC4FA, - 10964: 0xC4FF, - 10965: 0xC500, - 10966: 0xC501, - 10967: 0xC50C, - 10968: 0xC510, - 10969: 0xC514, - 10970: 0xC51C, - 10971: 0xC528, - 10972: 0xC529, - 10973: 0xC52C, - 10974: 0xC530, - 10975: 0xC538, - 10976: 0xC539, - 10977: 0xC53B, - 10978: 0xC53D, - 10979: 0xC544, - 10980: 0xC545, - 10981: 0xC548, - 10982: 0xC549, - 10983: 0xC54A, - 10984: 0xC54C, - 10985: 0xC54D, - 10986: 0xC54E, - 10987: 0xC553, - 10988: 0xC554, - 10989: 0xC555, - 10990: 0xC557, - 10991: 0xC558, - 10992: 0xC559, - 10993: 0xC55D, - 10994: 0xC55E, - 10995: 0xC560, - 10996: 0xC561, - 10997: 0xC564, - 10998: 0xC568, - 10999: 0xC570, - 11000: 0xC571, - 11001: 0xC573, - 11002: 0xC574, - 11003: 0xC575, - 11004: 0xC57C, - 11005: 0xC57D, - 11006: 0xC580, - 11007: 0xC584, - 11008: 0xC587, - 11009: 0xC58C, - 11010: 0xC58D, - 11011: 0xC58F, - 11012: 0xC591, - 11013: 0xC595, - 11014: 0xC597, - 11015: 0xC598, - 11016: 0xC59C, - 11017: 0xC5A0, - 11018: 0xC5A9, - 11019: 0xC5B4, - 11020: 0xC5B5, - 11021: 0xC5B8, - 11022: 0xC5B9, - 11023: 0xC5BB, - 11024: 0xC5BC, - 11025: 0xC5BD, - 11026: 0xC5BE, - 11027: 0xC5C4, - 11028: 0xC5C5, - 11029: 0xC5C6, - 11030: 0xC5C7, - 11031: 0xC5C8, - 11032: 0xC5C9, - 11033: 0xC5CA, - 11034: 0xC5CC, - 11035: 0xC5CE, - 11036: 0xD49E, - 11037: 0xD49F, - 11038: 0xD4A0, - 11039: 0xD4A1, - 11040: 0xD4A2, - 11041: 0xD4A3, - 11042: 0xD4A4, - 11043: 0xD4A5, - 11044: 0xD4A6, - 11045: 0xD4A7, - 11046: 0xD4A8, - 11047: 0xD4AA, - 11048: 0xD4AB, - 11049: 0xD4AC, - 11050: 0xD4AD, - 11051: 0xD4AE, - 11052: 0xD4AF, - 11053: 0xD4B0, - 11054: 0xD4B1, - 11055: 0xD4B2, - 11056: 0xD4B3, - 11057: 0xD4B4, - 11058: 0xD4B5, - 11059: 0xD4B6, - 11060: 0xD4B7, - 11061: 0xD4B8, - 11062: 0xD4B9, - 11063: 0xD4BA, - 11064: 0xD4BB, - 11065: 0xD4BC, - 11066: 0xD4BD, - 11067: 0xD4BE, - 11068: 0xD4BF, - 11069: 0xD4C0, - 11070: 0xD4C1, - 11071: 0xD4C2, - 11072: 0xD4C3, - 11073: 0xD4C4, - 11074: 0xD4C5, - 11075: 0xD4C6, - 11076: 0xD4C7, - 11077: 0xD4C8, - 11078: 0xD4C9, - 11079: 0xD4CA, - 11080: 0xD4CB, - 11081: 0xD4CD, - 11082: 0xD4CE, - 11083: 0xD4CF, - 11084: 0xD4D1, - 11085: 0xD4D2, - 11086: 0xD4D3, - 11087: 0xD4D5, - 11088: 0xD4D6, - 11089: 0xD4D7, - 11090: 0xD4D8, - 11091: 0xD4D9, - 11092: 0xD4DA, - 11093: 0xD4DB, - 11094: 0xD4DD, - 11095: 0xD4DE, - 11096: 0xD4E0, - 11097: 0xD4E1, - 11098: 0xD4E2, - 11099: 0xD4E3, - 11100: 0xD4E4, - 11101: 0xD4E5, - 11102: 0xD4E6, - 11103: 0xD4E7, - 11104: 0xD4E9, - 11105: 0xD4EA, - 11106: 0xD4EB, - 11107: 0xD4ED, - 11108: 0xD4EE, - 11109: 0xD4EF, - 11110: 0xD4F1, - 11111: 0xD4F2, - 11112: 0xD4F3, - 11113: 0xD4F4, - 11114: 0xD4F5, - 11115: 0xD4F6, - 11116: 0xD4F7, - 11117: 0xD4F9, - 11118: 0xD4FA, - 11119: 0xD4FC, - 11120: 0xC5D0, - 11121: 0xC5D1, - 11122: 0xC5D4, - 11123: 0xC5D8, - 11124: 0xC5E0, - 11125: 0xC5E1, - 11126: 0xC5E3, - 11127: 0xC5E5, - 11128: 0xC5EC, - 11129: 0xC5ED, - 11130: 0xC5EE, - 11131: 0xC5F0, - 11132: 0xC5F4, - 11133: 0xC5F6, - 11134: 0xC5F7, - 11135: 0xC5FC, - 11136: 0xC5FD, - 11137: 0xC5FE, - 11138: 0xC5FF, - 11139: 0xC600, - 11140: 0xC601, - 11141: 0xC605, - 11142: 0xC606, - 11143: 0xC607, - 11144: 0xC608, - 11145: 0xC60C, - 11146: 0xC610, - 11147: 0xC618, - 11148: 0xC619, - 11149: 0xC61B, - 11150: 0xC61C, - 11151: 0xC624, - 11152: 0xC625, - 11153: 0xC628, - 11154: 0xC62C, - 11155: 0xC62D, - 11156: 0xC62E, - 11157: 0xC630, - 11158: 0xC633, - 11159: 0xC634, - 11160: 0xC635, - 11161: 0xC637, - 11162: 0xC639, - 11163: 0xC63B, - 11164: 0xC640, - 11165: 0xC641, - 11166: 0xC644, - 11167: 0xC648, - 11168: 0xC650, - 11169: 0xC651, - 11170: 0xC653, - 11171: 0xC654, - 11172: 0xC655, - 11173: 0xC65C, - 11174: 0xC65D, - 11175: 0xC660, - 11176: 0xC66C, - 11177: 0xC66F, - 11178: 0xC671, - 11179: 0xC678, - 11180: 0xC679, - 11181: 0xC67C, - 11182: 0xC680, - 11183: 0xC688, - 11184: 0xC689, - 11185: 0xC68B, - 11186: 0xC68D, - 11187: 0xC694, - 11188: 0xC695, - 11189: 0xC698, - 11190: 0xC69C, - 11191: 0xC6A4, - 11192: 0xC6A5, - 11193: 0xC6A7, - 11194: 0xC6A9, - 11195: 0xC6B0, - 11196: 0xC6B1, - 11197: 0xC6B4, - 11198: 0xC6B8, - 11199: 0xC6B9, - 11200: 0xC6BA, - 11201: 0xC6C0, - 11202: 0xC6C1, - 11203: 0xC6C3, - 11204: 0xC6C5, - 11205: 0xC6CC, - 11206: 0xC6CD, - 11207: 0xC6D0, - 11208: 0xC6D4, - 11209: 0xC6DC, - 11210: 0xC6DD, - 11211: 0xC6E0, - 11212: 0xC6E1, - 11213: 0xC6E8, - 11214: 0xD4FE, - 11215: 0xD4FF, - 11216: 0xD500, - 11217: 0xD501, - 11218: 0xD502, - 11219: 0xD503, - 11220: 0xD505, - 11221: 0xD506, - 11222: 0xD507, - 11223: 0xD509, - 11224: 0xD50A, - 11225: 0xD50B, - 11226: 0xD50D, - 11227: 0xD50E, - 11228: 0xD50F, - 11229: 0xD510, - 11230: 0xD511, - 11231: 0xD512, - 11232: 0xD513, - 11233: 0xD516, - 11234: 0xD518, - 11235: 0xD519, - 11236: 0xD51A, - 11237: 0xD51B, - 11238: 0xD51C, - 11239: 0xD51D, - 11240: 0xD51E, - 11241: 0xD51F, - 11242: 0xD520, - 11243: 0xD521, - 11244: 0xD522, - 11245: 0xD523, - 11246: 0xD524, - 11247: 0xD525, - 11248: 0xD526, - 11249: 0xD527, - 11250: 0xD528, - 11251: 0xD529, - 11252: 0xD52A, - 11253: 0xD52B, - 11254: 0xD52C, - 11255: 0xD52D, - 11256: 0xD52E, - 11257: 0xD52F, - 11258: 0xD530, - 11259: 0xD531, - 11260: 0xD532, - 11261: 0xD533, - 11262: 0xD534, - 11263: 0xD535, - 11264: 0xD536, - 11265: 0xD537, - 11266: 0xD538, - 11267: 0xD539, - 11268: 0xD53A, - 11269: 0xD53B, - 11270: 0xD53E, - 11271: 0xD53F, - 11272: 0xD541, - 11273: 0xD542, - 11274: 0xD543, - 11275: 0xD545, - 11276: 0xD546, - 11277: 0xD547, - 11278: 0xD548, - 11279: 0xD549, - 11280: 0xD54A, - 11281: 0xD54B, - 11282: 0xD54E, - 11283: 0xD550, - 11284: 0xD552, - 11285: 0xD553, - 11286: 0xD554, - 11287: 0xD555, - 11288: 0xD556, - 11289: 0xD557, - 11290: 0xD55A, - 11291: 0xD55B, - 11292: 0xD55D, - 11293: 0xD55E, - 11294: 0xD55F, - 11295: 0xD561, - 11296: 0xD562, - 11297: 0xD563, - 11298: 0xC6E9, - 11299: 0xC6EC, - 11300: 0xC6F0, - 11301: 0xC6F8, - 11302: 0xC6F9, - 11303: 0xC6FD, - 11304: 0xC704, - 11305: 0xC705, - 11306: 0xC708, - 11307: 0xC70C, - 11308: 0xC714, - 11309: 0xC715, - 11310: 0xC717, - 11311: 0xC719, - 11312: 0xC720, - 11313: 0xC721, - 11314: 0xC724, - 11315: 0xC728, - 11316: 0xC730, - 11317: 0xC731, - 11318: 0xC733, - 11319: 0xC735, - 11320: 0xC737, - 11321: 0xC73C, - 11322: 0xC73D, - 11323: 0xC740, - 11324: 0xC744, - 11325: 0xC74A, - 11326: 0xC74C, - 11327: 0xC74D, - 11328: 0xC74F, - 11329: 0xC751, - 11330: 0xC752, - 11331: 0xC753, - 11332: 0xC754, - 11333: 0xC755, - 11334: 0xC756, - 11335: 0xC757, - 11336: 0xC758, - 11337: 0xC75C, - 11338: 0xC760, - 11339: 0xC768, - 11340: 0xC76B, - 11341: 0xC774, - 11342: 0xC775, - 11343: 0xC778, - 11344: 0xC77C, - 11345: 0xC77D, - 11346: 0xC77E, - 11347: 0xC783, - 11348: 0xC784, - 11349: 0xC785, - 11350: 0xC787, - 11351: 0xC788, - 11352: 0xC789, - 11353: 0xC78A, - 11354: 0xC78E, - 11355: 0xC790, - 11356: 0xC791, - 11357: 0xC794, - 11358: 0xC796, - 11359: 0xC797, - 11360: 0xC798, - 11361: 0xC79A, - 11362: 0xC7A0, - 11363: 0xC7A1, - 11364: 0xC7A3, - 11365: 0xC7A4, - 11366: 0xC7A5, - 11367: 0xC7A6, - 11368: 0xC7AC, - 11369: 0xC7AD, - 11370: 0xC7B0, - 11371: 0xC7B4, - 11372: 0xC7BC, - 11373: 0xC7BD, - 11374: 0xC7BF, - 11375: 0xC7C0, - 11376: 0xC7C1, - 11377: 0xC7C8, - 11378: 0xC7C9, - 11379: 0xC7CC, - 11380: 0xC7CE, - 11381: 0xC7D0, - 11382: 0xC7D8, - 11383: 0xC7DD, - 11384: 0xC7E4, - 11385: 0xC7E8, - 11386: 0xC7EC, - 11387: 0xC800, - 11388: 0xC801, - 11389: 0xC804, - 11390: 0xC808, - 11391: 0xC80A, - 11392: 0xD564, - 11393: 0xD566, - 11394: 0xD567, - 11395: 0xD56A, - 11396: 0xD56C, - 11397: 0xD56E, - 11398: 0xD56F, - 11399: 0xD570, - 11400: 0xD571, - 11401: 0xD572, - 11402: 0xD573, - 11403: 0xD576, - 11404: 0xD577, - 11405: 0xD579, - 11406: 0xD57A, - 11407: 0xD57B, - 11408: 0xD57D, - 11409: 0xD57E, - 11410: 0xD57F, - 11411: 0xD580, - 11412: 0xD581, - 11413: 0xD582, - 11414: 0xD583, - 11415: 0xD586, - 11416: 0xD58A, - 11417: 0xD58B, - 11418: 0xD58C, - 11419: 0xD58D, - 11420: 0xD58E, - 11421: 0xD58F, - 11422: 0xD591, - 11423: 0xD592, - 11424: 0xD593, - 11425: 0xD594, - 11426: 0xD595, - 11427: 0xD596, - 11428: 0xD597, - 11429: 0xD598, - 11430: 0xD599, - 11431: 0xD59A, - 11432: 0xD59B, - 11433: 0xD59C, - 11434: 0xD59D, - 11435: 0xD59E, - 11436: 0xD59F, - 11437: 0xD5A0, - 11438: 0xD5A1, - 11439: 0xD5A2, - 11440: 0xD5A3, - 11441: 0xD5A4, - 11442: 0xD5A6, - 11443: 0xD5A7, - 11444: 0xD5A8, - 11445: 0xD5A9, - 11446: 0xD5AA, - 11447: 0xD5AB, - 11448: 0xD5AC, - 11449: 0xD5AD, - 11450: 0xD5AE, - 11451: 0xD5AF, - 11452: 0xD5B0, - 11453: 0xD5B1, - 11454: 0xD5B2, - 11455: 0xD5B3, - 11456: 0xD5B4, - 11457: 0xD5B5, - 11458: 0xD5B6, - 11459: 0xD5B7, - 11460: 0xD5B8, - 11461: 0xD5B9, - 11462: 0xD5BA, - 11463: 0xD5BB, - 11464: 0xD5BC, - 11465: 0xD5BD, - 11466: 0xD5BE, - 11467: 0xD5BF, - 11468: 0xD5C0, - 11469: 0xD5C1, - 11470: 0xD5C2, - 11471: 0xD5C3, - 11472: 0xD5C4, - 11473: 0xD5C5, - 11474: 0xD5C6, - 11475: 0xD5C7, - 11476: 0xC810, - 11477: 0xC811, - 11478: 0xC813, - 11479: 0xC815, - 11480: 0xC816, - 11481: 0xC81C, - 11482: 0xC81D, - 11483: 0xC820, - 11484: 0xC824, - 11485: 0xC82C, - 11486: 0xC82D, - 11487: 0xC82F, - 11488: 0xC831, - 11489: 0xC838, - 11490: 0xC83C, - 11491: 0xC840, - 11492: 0xC848, - 11493: 0xC849, - 11494: 0xC84C, - 11495: 0xC84D, - 11496: 0xC854, - 11497: 0xC870, - 11498: 0xC871, - 11499: 0xC874, - 11500: 0xC878, - 11501: 0xC87A, - 11502: 0xC880, - 11503: 0xC881, - 11504: 0xC883, - 11505: 0xC885, - 11506: 0xC886, - 11507: 0xC887, - 11508: 0xC88B, - 11509: 0xC88C, - 11510: 0xC88D, - 11511: 0xC894, - 11512: 0xC89D, - 11513: 0xC89F, - 11514: 0xC8A1, - 11515: 0xC8A8, - 11516: 0xC8BC, - 11517: 0xC8BD, - 11518: 0xC8C4, - 11519: 0xC8C8, - 11520: 0xC8CC, - 11521: 0xC8D4, - 11522: 0xC8D5, - 11523: 0xC8D7, - 11524: 0xC8D9, - 11525: 0xC8E0, - 11526: 0xC8E1, - 11527: 0xC8E4, - 11528: 0xC8F5, - 11529: 0xC8FC, - 11530: 0xC8FD, - 11531: 0xC900, - 11532: 0xC904, - 11533: 0xC905, - 11534: 0xC906, - 11535: 0xC90C, - 11536: 0xC90D, - 11537: 0xC90F, - 11538: 0xC911, - 11539: 0xC918, - 11540: 0xC92C, - 11541: 0xC934, - 11542: 0xC950, - 11543: 0xC951, - 11544: 0xC954, - 11545: 0xC958, - 11546: 0xC960, - 11547: 0xC961, - 11548: 0xC963, - 11549: 0xC96C, - 11550: 0xC970, - 11551: 0xC974, - 11552: 0xC97C, - 11553: 0xC988, - 11554: 0xC989, - 11555: 0xC98C, - 11556: 0xC990, - 11557: 0xC998, - 11558: 0xC999, - 11559: 0xC99B, - 11560: 0xC99D, - 11561: 0xC9C0, - 11562: 0xC9C1, - 11563: 0xC9C4, - 11564: 0xC9C7, - 11565: 0xC9C8, - 11566: 0xC9CA, - 11567: 0xC9D0, - 11568: 0xC9D1, - 11569: 0xC9D3, - 11570: 0xD5CA, - 11571: 0xD5CB, - 11572: 0xD5CD, - 11573: 0xD5CE, - 11574: 0xD5CF, - 11575: 0xD5D1, - 11576: 0xD5D3, - 11577: 0xD5D4, - 11578: 0xD5D5, - 11579: 0xD5D6, - 11580: 0xD5D7, - 11581: 0xD5DA, - 11582: 0xD5DC, - 11583: 0xD5DE, - 11584: 0xD5DF, - 11585: 0xD5E0, - 11586: 0xD5E1, - 11587: 0xD5E2, - 11588: 0xD5E3, - 11589: 0xD5E6, - 11590: 0xD5E7, - 11591: 0xD5E9, - 11592: 0xD5EA, - 11593: 0xD5EB, - 11594: 0xD5ED, - 11595: 0xD5EE, - 11596: 0xD5EF, - 11597: 0xD5F0, - 11598: 0xD5F1, - 11599: 0xD5F2, - 11600: 0xD5F3, - 11601: 0xD5F6, - 11602: 0xD5F8, - 11603: 0xD5FA, - 11604: 0xD5FB, - 11605: 0xD5FC, - 11606: 0xD5FD, - 11607: 0xD5FE, - 11608: 0xD5FF, - 11609: 0xD602, - 11610: 0xD603, - 11611: 0xD605, - 11612: 0xD606, - 11613: 0xD607, - 11614: 0xD609, - 11615: 0xD60A, - 11616: 0xD60B, - 11617: 0xD60C, - 11618: 0xD60D, - 11619: 0xD60E, - 11620: 0xD60F, - 11621: 0xD612, - 11622: 0xD616, - 11623: 0xD617, - 11624: 0xD618, - 11625: 0xD619, - 11626: 0xD61A, - 11627: 0xD61B, - 11628: 0xD61D, - 11629: 0xD61E, - 11630: 0xD61F, - 11631: 0xD621, - 11632: 0xD622, - 11633: 0xD623, - 11634: 0xD625, - 11635: 0xD626, - 11636: 0xD627, - 11637: 0xD628, - 11638: 0xD629, - 11639: 0xD62A, - 11640: 0xD62B, - 11641: 0xD62C, - 11642: 0xD62E, - 11643: 0xD62F, - 11644: 0xD630, - 11645: 0xD631, - 11646: 0xD632, - 11647: 0xD633, - 11648: 0xD634, - 11649: 0xD635, - 11650: 0xD636, - 11651: 0xD637, - 11652: 0xD63A, - 11653: 0xD63B, - 11654: 0xC9D5, - 11655: 0xC9D6, - 11656: 0xC9D9, - 11657: 0xC9DA, - 11658: 0xC9DC, - 11659: 0xC9DD, - 11660: 0xC9E0, - 11661: 0xC9E2, - 11662: 0xC9E4, - 11663: 0xC9E7, - 11664: 0xC9EC, - 11665: 0xC9ED, - 11666: 0xC9EF, - 11667: 0xC9F0, - 11668: 0xC9F1, - 11669: 0xC9F8, - 11670: 0xC9F9, - 11671: 0xC9FC, - 11672: 0xCA00, - 11673: 0xCA08, - 11674: 0xCA09, - 11675: 0xCA0B, - 11676: 0xCA0C, - 11677: 0xCA0D, - 11678: 0xCA14, - 11679: 0xCA18, - 11680: 0xCA29, - 11681: 0xCA4C, - 11682: 0xCA4D, - 11683: 0xCA50, - 11684: 0xCA54, - 11685: 0xCA5C, - 11686: 0xCA5D, - 11687: 0xCA5F, - 11688: 0xCA60, - 11689: 0xCA61, - 11690: 0xCA68, - 11691: 0xCA7D, - 11692: 0xCA84, - 11693: 0xCA98, - 11694: 0xCABC, - 11695: 0xCABD, - 11696: 0xCAC0, - 11697: 0xCAC4, - 11698: 0xCACC, - 11699: 0xCACD, - 11700: 0xCACF, - 11701: 0xCAD1, - 11702: 0xCAD3, - 11703: 0xCAD8, - 11704: 0xCAD9, - 11705: 0xCAE0, - 11706: 0xCAEC, - 11707: 0xCAF4, - 11708: 0xCB08, - 11709: 0xCB10, - 11710: 0xCB14, - 11711: 0xCB18, - 11712: 0xCB20, - 11713: 0xCB21, - 11714: 0xCB41, - 11715: 0xCB48, - 11716: 0xCB49, - 11717: 0xCB4C, - 11718: 0xCB50, - 11719: 0xCB58, - 11720: 0xCB59, - 11721: 0xCB5D, - 11722: 0xCB64, - 11723: 0xCB78, - 11724: 0xCB79, - 11725: 0xCB9C, - 11726: 0xCBB8, - 11727: 0xCBD4, - 11728: 0xCBE4, - 11729: 0xCBE7, - 11730: 0xCBE9, - 11731: 0xCC0C, - 11732: 0xCC0D, - 11733: 0xCC10, - 11734: 0xCC14, - 11735: 0xCC1C, - 11736: 0xCC1D, - 11737: 0xCC21, - 11738: 0xCC22, - 11739: 0xCC27, - 11740: 0xCC28, - 11741: 0xCC29, - 11742: 0xCC2C, - 11743: 0xCC2E, - 11744: 0xCC30, - 11745: 0xCC38, - 11746: 0xCC39, - 11747: 0xCC3B, - 11748: 0xD63D, - 11749: 0xD63E, - 11750: 0xD63F, - 11751: 0xD641, - 11752: 0xD642, - 11753: 0xD643, - 11754: 0xD644, - 11755: 0xD646, - 11756: 0xD647, - 11757: 0xD64A, - 11758: 0xD64C, - 11759: 0xD64E, - 11760: 0xD64F, - 11761: 0xD650, - 11762: 0xD652, - 11763: 0xD653, - 11764: 0xD656, - 11765: 0xD657, - 11766: 0xD659, - 11767: 0xD65A, - 11768: 0xD65B, - 11769: 0xD65D, - 11770: 0xD65E, - 11771: 0xD65F, - 11772: 0xD660, - 11773: 0xD661, - 11774: 0xD662, - 11775: 0xD663, - 11776: 0xD664, - 11777: 0xD665, - 11778: 0xD666, - 11779: 0xD668, - 11780: 0xD66A, - 11781: 0xD66B, - 11782: 0xD66C, - 11783: 0xD66D, - 11784: 0xD66E, - 11785: 0xD66F, - 11786: 0xD672, - 11787: 0xD673, - 11788: 0xD675, - 11789: 0xD676, - 11790: 0xD677, - 11791: 0xD678, - 11792: 0xD679, - 11793: 0xD67A, - 11794: 0xD67B, - 11795: 0xD67C, - 11796: 0xD67D, - 11797: 0xD67E, - 11798: 0xD67F, - 11799: 0xD680, - 11800: 0xD681, - 11801: 0xD682, - 11802: 0xD684, - 11803: 0xD686, - 11804: 0xD687, - 11805: 0xD688, - 11806: 0xD689, - 11807: 0xD68A, - 11808: 0xD68B, - 11809: 0xD68E, - 11810: 0xD68F, - 11811: 0xD691, - 11812: 0xD692, - 11813: 0xD693, - 11814: 0xD695, - 11815: 0xD696, - 11816: 0xD697, - 11817: 0xD698, - 11818: 0xD699, - 11819: 0xD69A, - 11820: 0xD69B, - 11821: 0xD69C, - 11822: 0xD69E, - 11823: 0xD6A0, - 11824: 0xD6A2, - 11825: 0xD6A3, - 11826: 0xD6A4, - 11827: 0xD6A5, - 11828: 0xD6A6, - 11829: 0xD6A7, - 11830: 0xD6A9, - 11831: 0xD6AA, - 11832: 0xCC3C, - 11833: 0xCC3D, - 11834: 0xCC3E, - 11835: 0xCC44, - 11836: 0xCC45, - 11837: 0xCC48, - 11838: 0xCC4C, - 11839: 0xCC54, - 11840: 0xCC55, - 11841: 0xCC57, - 11842: 0xCC58, - 11843: 0xCC59, - 11844: 0xCC60, - 11845: 0xCC64, - 11846: 0xCC66, - 11847: 0xCC68, - 11848: 0xCC70, - 11849: 0xCC75, - 11850: 0xCC98, - 11851: 0xCC99, - 11852: 0xCC9C, - 11853: 0xCCA0, - 11854: 0xCCA8, - 11855: 0xCCA9, - 11856: 0xCCAB, - 11857: 0xCCAC, - 11858: 0xCCAD, - 11859: 0xCCB4, - 11860: 0xCCB5, - 11861: 0xCCB8, - 11862: 0xCCBC, - 11863: 0xCCC4, - 11864: 0xCCC5, - 11865: 0xCCC7, - 11866: 0xCCC9, - 11867: 0xCCD0, - 11868: 0xCCD4, - 11869: 0xCCE4, - 11870: 0xCCEC, - 11871: 0xCCF0, - 11872: 0xCD01, - 11873: 0xCD08, - 11874: 0xCD09, - 11875: 0xCD0C, - 11876: 0xCD10, - 11877: 0xCD18, - 11878: 0xCD19, - 11879: 0xCD1B, - 11880: 0xCD1D, - 11881: 0xCD24, - 11882: 0xCD28, - 11883: 0xCD2C, - 11884: 0xCD39, - 11885: 0xCD5C, - 11886: 0xCD60, - 11887: 0xCD64, - 11888: 0xCD6C, - 11889: 0xCD6D, - 11890: 0xCD6F, - 11891: 0xCD71, - 11892: 0xCD78, - 11893: 0xCD88, - 11894: 0xCD94, - 11895: 0xCD95, - 11896: 0xCD98, - 11897: 0xCD9C, - 11898: 0xCDA4, - 11899: 0xCDA5, - 11900: 0xCDA7, - 11901: 0xCDA9, - 11902: 0xCDB0, - 11903: 0xCDC4, - 11904: 0xCDCC, - 11905: 0xCDD0, - 11906: 0xCDE8, - 11907: 0xCDEC, - 11908: 0xCDF0, - 11909: 0xCDF8, - 11910: 0xCDF9, - 11911: 0xCDFB, - 11912: 0xCDFD, - 11913: 0xCE04, - 11914: 0xCE08, - 11915: 0xCE0C, - 11916: 0xCE14, - 11917: 0xCE19, - 11918: 0xCE20, - 11919: 0xCE21, - 11920: 0xCE24, - 11921: 0xCE28, - 11922: 0xCE30, - 11923: 0xCE31, - 11924: 0xCE33, - 11925: 0xCE35, - 11926: 0xD6AB, - 11927: 0xD6AD, - 11928: 0xD6AE, - 11929: 0xD6AF, - 11930: 0xD6B1, - 11931: 0xD6B2, - 11932: 0xD6B3, - 11933: 0xD6B4, - 11934: 0xD6B5, - 11935: 0xD6B6, - 11936: 0xD6B7, - 11937: 0xD6B8, - 11938: 0xD6BA, - 11939: 0xD6BC, - 11940: 0xD6BD, - 11941: 0xD6BE, - 11942: 0xD6BF, - 11943: 0xD6C0, - 11944: 0xD6C1, - 11945: 0xD6C2, - 11946: 0xD6C3, - 11947: 0xD6C6, - 11948: 0xD6C7, - 11949: 0xD6C9, - 11950: 0xD6CA, - 11951: 0xD6CB, - 11952: 0xD6CD, - 11953: 0xD6CE, - 11954: 0xD6CF, - 11955: 0xD6D0, - 11956: 0xD6D2, - 11957: 0xD6D3, - 11958: 0xD6D5, - 11959: 0xD6D6, - 11960: 0xD6D8, - 11961: 0xD6DA, - 11962: 0xD6DB, - 11963: 0xD6DC, - 11964: 0xD6DD, - 11965: 0xD6DE, - 11966: 0xD6DF, - 11967: 0xD6E1, - 11968: 0xD6E2, - 11969: 0xD6E3, - 11970: 0xD6E5, - 11971: 0xD6E6, - 11972: 0xD6E7, - 11973: 0xD6E9, - 11974: 0xD6EA, - 11975: 0xD6EB, - 11976: 0xD6EC, - 11977: 0xD6ED, - 11978: 0xD6EE, - 11979: 0xD6EF, - 11980: 0xD6F1, - 11981: 0xD6F2, - 11982: 0xD6F3, - 11983: 0xD6F4, - 11984: 0xD6F6, - 11985: 0xD6F7, - 11986: 0xD6F8, - 11987: 0xD6F9, - 11988: 0xD6FA, - 11989: 0xD6FB, - 11990: 0xD6FE, - 11991: 0xD6FF, - 11992: 0xD701, - 11993: 0xD702, - 11994: 0xD703, - 11995: 0xD705, - 11996: 0xD706, - 11997: 0xD707, - 11998: 0xD708, - 11999: 0xD709, - 12000: 0xD70A, - 12001: 0xD70B, - 12002: 0xD70C, - 12003: 0xD70D, - 12004: 0xD70E, - 12005: 0xD70F, - 12006: 0xD710, - 12007: 0xD712, - 12008: 0xD713, - 12009: 0xD714, - 12010: 0xCE58, - 12011: 0xCE59, - 12012: 0xCE5C, - 12013: 0xCE5F, - 12014: 0xCE60, - 12015: 0xCE61, - 12016: 0xCE68, - 12017: 0xCE69, - 12018: 0xCE6B, - 12019: 0xCE6D, - 12020: 0xCE74, - 12021: 0xCE75, - 12022: 0xCE78, - 12023: 0xCE7C, - 12024: 0xCE84, - 12025: 0xCE85, - 12026: 0xCE87, - 12027: 0xCE89, - 12028: 0xCE90, - 12029: 0xCE91, - 12030: 0xCE94, - 12031: 0xCE98, - 12032: 0xCEA0, - 12033: 0xCEA1, - 12034: 0xCEA3, - 12035: 0xCEA4, - 12036: 0xCEA5, - 12037: 0xCEAC, - 12038: 0xCEAD, - 12039: 0xCEC1, - 12040: 0xCEE4, - 12041: 0xCEE5, - 12042: 0xCEE8, - 12043: 0xCEEB, - 12044: 0xCEEC, - 12045: 0xCEF4, - 12046: 0xCEF5, - 12047: 0xCEF7, - 12048: 0xCEF8, - 12049: 0xCEF9, - 12050: 0xCF00, - 12051: 0xCF01, - 12052: 0xCF04, - 12053: 0xCF08, - 12054: 0xCF10, - 12055: 0xCF11, - 12056: 0xCF13, - 12057: 0xCF15, - 12058: 0xCF1C, - 12059: 0xCF20, - 12060: 0xCF24, - 12061: 0xCF2C, - 12062: 0xCF2D, - 12063: 0xCF2F, - 12064: 0xCF30, - 12065: 0xCF31, - 12066: 0xCF38, - 12067: 0xCF54, - 12068: 0xCF55, - 12069: 0xCF58, - 12070: 0xCF5C, - 12071: 0xCF64, - 12072: 0xCF65, - 12073: 0xCF67, - 12074: 0xCF69, - 12075: 0xCF70, - 12076: 0xCF71, - 12077: 0xCF74, - 12078: 0xCF78, - 12079: 0xCF80, - 12080: 0xCF85, - 12081: 0xCF8C, - 12082: 0xCFA1, - 12083: 0xCFA8, - 12084: 0xCFB0, - 12085: 0xCFC4, - 12086: 0xCFE0, - 12087: 0xCFE1, - 12088: 0xCFE4, - 12089: 0xCFE8, - 12090: 0xCFF0, - 12091: 0xCFF1, - 12092: 0xCFF3, - 12093: 0xCFF5, - 12094: 0xCFFC, - 12095: 0xD000, - 12096: 0xD004, - 12097: 0xD011, - 12098: 0xD018, - 12099: 0xD02D, - 12100: 0xD034, - 12101: 0xD035, - 12102: 0xD038, - 12103: 0xD03C, - 12104: 0xD715, - 12105: 0xD716, - 12106: 0xD717, - 12107: 0xD71A, - 12108: 0xD71B, - 12109: 0xD71D, - 12110: 0xD71E, - 12111: 0xD71F, - 12112: 0xD721, - 12113: 0xD722, - 12114: 0xD723, - 12115: 0xD724, - 12116: 0xD725, - 12117: 0xD726, - 12118: 0xD727, - 12119: 0xD72A, - 12120: 0xD72C, - 12121: 0xD72E, - 12122: 0xD72F, - 12123: 0xD730, - 12124: 0xD731, - 12125: 0xD732, - 12126: 0xD733, - 12127: 0xD736, - 12128: 0xD737, - 12129: 0xD739, - 12130: 0xD73A, - 12131: 0xD73B, - 12132: 0xD73D, - 12133: 0xD73E, - 12134: 0xD73F, - 12135: 0xD740, - 12136: 0xD741, - 12137: 0xD742, - 12138: 0xD743, - 12139: 0xD745, - 12140: 0xD746, - 12141: 0xD748, - 12142: 0xD74A, - 12143: 0xD74B, - 12144: 0xD74C, - 12145: 0xD74D, - 12146: 0xD74E, - 12147: 0xD74F, - 12148: 0xD752, - 12149: 0xD753, - 12150: 0xD755, - 12151: 0xD75A, - 12152: 0xD75B, - 12153: 0xD75C, - 12154: 0xD75D, - 12155: 0xD75E, - 12156: 0xD75F, - 12157: 0xD762, - 12158: 0xD764, - 12159: 0xD766, - 12160: 0xD767, - 12161: 0xD768, - 12162: 0xD76A, - 12163: 0xD76B, - 12164: 0xD76D, - 12165: 0xD76E, - 12166: 0xD76F, - 12167: 0xD771, - 12168: 0xD772, - 12169: 0xD773, - 12170: 0xD775, - 12171: 0xD776, - 12172: 0xD777, - 12173: 0xD778, - 12174: 0xD779, - 12175: 0xD77A, - 12176: 0xD77B, - 12177: 0xD77E, - 12178: 0xD77F, - 12179: 0xD780, - 12180: 0xD782, - 12181: 0xD783, - 12182: 0xD784, - 12183: 0xD785, - 12184: 0xD786, - 12185: 0xD787, - 12186: 0xD78A, - 12187: 0xD78B, - 12188: 0xD044, - 12189: 0xD045, - 12190: 0xD047, - 12191: 0xD049, - 12192: 0xD050, - 12193: 0xD054, - 12194: 0xD058, - 12195: 0xD060, - 12196: 0xD06C, - 12197: 0xD06D, - 12198: 0xD070, - 12199: 0xD074, - 12200: 0xD07C, - 12201: 0xD07D, - 12202: 0xD081, - 12203: 0xD0A4, - 12204: 0xD0A5, - 12205: 0xD0A8, - 12206: 0xD0AC, - 12207: 0xD0B4, - 12208: 0xD0B5, - 12209: 0xD0B7, - 12210: 0xD0B9, - 12211: 0xD0C0, - 12212: 0xD0C1, - 12213: 0xD0C4, - 12214: 0xD0C8, - 12215: 0xD0C9, - 12216: 0xD0D0, - 12217: 0xD0D1, - 12218: 0xD0D3, - 12219: 0xD0D4, - 12220: 0xD0D5, - 12221: 0xD0DC, - 12222: 0xD0DD, - 12223: 0xD0E0, - 12224: 0xD0E4, - 12225: 0xD0EC, - 12226: 0xD0ED, - 12227: 0xD0EF, - 12228: 0xD0F0, - 12229: 0xD0F1, - 12230: 0xD0F8, - 12231: 0xD10D, - 12232: 0xD130, - 12233: 0xD131, - 12234: 0xD134, - 12235: 0xD138, - 12236: 0xD13A, - 12237: 0xD140, - 12238: 0xD141, - 12239: 0xD143, - 12240: 0xD144, - 12241: 0xD145, - 12242: 0xD14C, - 12243: 0xD14D, - 12244: 0xD150, - 12245: 0xD154, - 12246: 0xD15C, - 12247: 0xD15D, - 12248: 0xD15F, - 12249: 0xD161, - 12250: 0xD168, - 12251: 0xD16C, - 12252: 0xD17C, - 12253: 0xD184, - 12254: 0xD188, - 12255: 0xD1A0, - 12256: 0xD1A1, - 12257: 0xD1A4, - 12258: 0xD1A8, - 12259: 0xD1B0, - 12260: 0xD1B1, - 12261: 0xD1B3, - 12262: 0xD1B5, - 12263: 0xD1BA, - 12264: 0xD1BC, - 12265: 0xD1C0, - 12266: 0xD1D8, - 12267: 0xD1F4, - 12268: 0xD1F8, - 12269: 0xD207, - 12270: 0xD209, - 12271: 0xD210, - 12272: 0xD22C, - 12273: 0xD22D, - 12274: 0xD230, - 12275: 0xD234, - 12276: 0xD23C, - 12277: 0xD23D, - 12278: 0xD23F, - 12279: 0xD241, - 12280: 0xD248, - 12281: 0xD25C, - 12282: 0xD78D, - 12283: 0xD78E, - 12284: 0xD78F, - 12285: 0xD791, - 12286: 0xD792, - 12287: 0xD793, - 12288: 0xD794, - 12289: 0xD795, - 12290: 0xD796, - 12291: 0xD797, - 12292: 0xD79A, - 12293: 0xD79C, - 12294: 0xD79E, - 12295: 0xD79F, - 12296: 0xD7A0, - 12297: 0xD7A1, - 12298: 0xD7A2, - 12299: 0xD7A3, - 12366: 0xD264, - 12367: 0xD280, - 12368: 0xD281, - 12369: 0xD284, - 12370: 0xD288, - 12371: 0xD290, - 12372: 0xD291, - 12373: 0xD295, - 12374: 0xD29C, - 12375: 0xD2A0, - 12376: 0xD2A4, - 12377: 0xD2AC, - 12378: 0xD2B1, - 12379: 0xD2B8, - 12380: 0xD2B9, - 12381: 0xD2BC, - 12382: 0xD2BF, - 12383: 0xD2C0, - 12384: 0xD2C2, - 12385: 0xD2C8, - 12386: 0xD2C9, - 12387: 0xD2CB, - 12388: 0xD2D4, - 12389: 0xD2D8, - 12390: 0xD2DC, - 12391: 0xD2E4, - 12392: 0xD2E5, - 12393: 0xD2F0, - 12394: 0xD2F1, - 12395: 0xD2F4, - 12396: 0xD2F8, - 12397: 0xD300, - 12398: 0xD301, - 12399: 0xD303, - 12400: 0xD305, - 12401: 0xD30C, - 12402: 0xD30D, - 12403: 0xD30E, - 12404: 0xD310, - 12405: 0xD314, - 12406: 0xD316, - 12407: 0xD31C, - 12408: 0xD31D, - 12409: 0xD31F, - 12410: 0xD320, - 12411: 0xD321, - 12412: 0xD325, - 12413: 0xD328, - 12414: 0xD329, - 12415: 0xD32C, - 12416: 0xD330, - 12417: 0xD338, - 12418: 0xD339, - 12419: 0xD33B, - 12420: 0xD33C, - 12421: 0xD33D, - 12422: 0xD344, - 12423: 0xD345, - 12424: 0xD37C, - 12425: 0xD37D, - 12426: 0xD380, - 12427: 0xD384, - 12428: 0xD38C, - 12429: 0xD38D, - 12430: 0xD38F, - 12431: 0xD390, - 12432: 0xD391, - 12433: 0xD398, - 12434: 0xD399, - 12435: 0xD39C, - 12436: 0xD3A0, - 12437: 0xD3A8, - 12438: 0xD3A9, - 12439: 0xD3AB, - 12440: 0xD3AD, - 12441: 0xD3B4, - 12442: 0xD3B8, - 12443: 0xD3BC, - 12444: 0xD3C4, - 12445: 0xD3C5, - 12446: 0xD3C8, - 12447: 0xD3C9, - 12448: 0xD3D0, - 12449: 0xD3D8, - 12450: 0xD3E1, - 12451: 0xD3E3, - 12452: 0xD3EC, - 12453: 0xD3ED, - 12454: 0xD3F0, - 12455: 0xD3F4, - 12456: 0xD3FC, - 12457: 0xD3FD, - 12458: 0xD3FF, - 12459: 0xD401, - 12460: 0xD408, - 12461: 0xD41D, - 12462: 0xD440, - 12463: 0xD444, - 12464: 0xD45C, - 12465: 0xD460, - 12466: 0xD464, - 12467: 0xD46D, - 12468: 0xD46F, - 12469: 0xD478, - 12470: 0xD479, - 12471: 0xD47C, - 12472: 0xD47F, - 12473: 0xD480, - 12474: 0xD482, - 12475: 0xD488, - 12476: 0xD489, - 12477: 0xD48B, - 12478: 0xD48D, - 12479: 0xD494, - 12480: 0xD4A9, - 12481: 0xD4CC, - 12482: 0xD4D0, - 12483: 0xD4D4, - 12484: 0xD4DC, - 12485: 0xD4DF, - 12486: 0xD4E8, - 12487: 0xD4EC, - 12488: 0xD4F0, - 12489: 0xD4F8, - 12490: 0xD4FB, - 12491: 0xD4FD, - 12492: 0xD504, - 12493: 0xD508, - 12494: 0xD50C, - 12495: 0xD514, - 12496: 0xD515, - 12497: 0xD517, - 12498: 0xD53C, - 12499: 0xD53D, - 12500: 0xD540, - 12501: 0xD544, - 12502: 0xD54C, - 12503: 0xD54D, - 12504: 0xD54F, - 12505: 0xD551, - 12506: 0xD558, - 12507: 0xD559, - 12508: 0xD55C, - 12509: 0xD560, - 12510: 0xD565, - 12511: 0xD568, - 12512: 0xD569, - 12513: 0xD56B, - 12514: 0xD56D, - 12515: 0xD574, - 12516: 0xD575, - 12517: 0xD578, - 12518: 0xD57C, - 12519: 0xD584, - 12520: 0xD585, - 12521: 0xD587, - 12522: 0xD588, - 12523: 0xD589, - 12524: 0xD590, - 12525: 0xD5A5, - 12526: 0xD5C8, - 12527: 0xD5C9, - 12528: 0xD5CC, - 12529: 0xD5D0, - 12530: 0xD5D2, - 12531: 0xD5D8, - 12532: 0xD5D9, - 12533: 0xD5DB, - 12534: 0xD5DD, - 12535: 0xD5E4, - 12536: 0xD5E5, - 12537: 0xD5E8, - 12538: 0xD5EC, - 12539: 0xD5F4, - 12540: 0xD5F5, - 12541: 0xD5F7, - 12542: 0xD5F9, - 12543: 0xD600, - 12544: 0xD601, - 12545: 0xD604, - 12546: 0xD608, - 12547: 0xD610, - 12548: 0xD611, - 12549: 0xD613, - 12550: 0xD614, - 12551: 0xD615, - 12552: 0xD61C, - 12553: 0xD620, - 12554: 0xD624, - 12555: 0xD62D, - 12556: 0xD638, - 12557: 0xD639, - 12558: 0xD63C, - 12559: 0xD640, - 12560: 0xD645, - 12561: 0xD648, - 12562: 0xD649, - 12563: 0xD64B, - 12564: 0xD64D, - 12565: 0xD651, - 12566: 0xD654, - 12567: 0xD655, - 12568: 0xD658, - 12569: 0xD65C, - 12570: 0xD667, - 12571: 0xD669, - 12572: 0xD670, - 12573: 0xD671, - 12574: 0xD674, - 12575: 0xD683, - 12576: 0xD685, - 12577: 0xD68C, - 12578: 0xD68D, - 12579: 0xD690, - 12580: 0xD694, - 12581: 0xD69D, - 12582: 0xD69F, - 12583: 0xD6A1, - 12584: 0xD6A8, - 12585: 0xD6AC, - 12586: 0xD6B0, - 12587: 0xD6B9, - 12588: 0xD6BB, - 12589: 0xD6C4, - 12590: 0xD6C5, - 12591: 0xD6C8, - 12592: 0xD6CC, - 12593: 0xD6D1, - 12594: 0xD6D4, - 12595: 0xD6D7, - 12596: 0xD6D9, - 12597: 0xD6E0, - 12598: 0xD6E4, - 12599: 0xD6E8, - 12600: 0xD6F0, - 12601: 0xD6F5, - 12602: 0xD6FC, - 12603: 0xD6FD, - 12604: 0xD700, - 12605: 0xD704, - 12606: 0xD711, - 12607: 0xD718, - 12608: 0xD719, - 12609: 0xD71C, - 12610: 0xD720, - 12611: 0xD728, - 12612: 0xD729, - 12613: 0xD72B, - 12614: 0xD72D, - 12615: 0xD734, - 12616: 0xD735, - 12617: 0xD738, - 12618: 0xD73C, - 12619: 0xD744, - 12620: 0xD747, - 12621: 0xD749, - 12622: 0xD750, - 12623: 0xD751, - 12624: 0xD754, - 12625: 0xD756, - 12626: 0xD757, - 12627: 0xD758, - 12628: 0xD759, - 12629: 0xD760, - 12630: 0xD761, - 12631: 0xD763, - 12632: 0xD765, - 12633: 0xD769, - 12634: 0xD76C, - 12635: 0xD770, - 12636: 0xD774, - 12637: 0xD77C, - 12638: 0xD77D, - 12639: 0xD781, - 12640: 0xD788, - 12641: 0xD789, - 12642: 0xD78C, - 12643: 0xD790, - 12644: 0xD798, - 12645: 0xD799, - 12646: 0xD79B, - 12647: 0xD79D, - 12742: 0x4F3D, - 12743: 0x4F73, - 12744: 0x5047, - 12745: 0x50F9, - 12746: 0x52A0, - 12747: 0x53EF, - 12748: 0x5475, - 12749: 0x54E5, - 12750: 0x5609, - 12751: 0x5AC1, - 12752: 0x5BB6, - 12753: 0x6687, - 12754: 0x67B6, - 12755: 0x67B7, - 12756: 0x67EF, - 12757: 0x6B4C, - 12758: 0x73C2, - 12759: 0x75C2, - 12760: 0x7A3C, - 12761: 0x82DB, - 12762: 0x8304, - 12763: 0x8857, - 12764: 0x8888, - 12765: 0x8A36, - 12766: 0x8CC8, - 12767: 0x8DCF, - 12768: 0x8EFB, - 12769: 0x8FE6, - 12770: 0x99D5, - 12771: 0x523B, - 12772: 0x5374, - 12773: 0x5404, - 12774: 0x606A, - 12775: 0x6164, - 12776: 0x6BBC, - 12777: 0x73CF, - 12778: 0x811A, - 12779: 0x89BA, - 12780: 0x89D2, - 12781: 0x95A3, - 12782: 0x4F83, - 12783: 0x520A, - 12784: 0x58BE, - 12785: 0x5978, - 12786: 0x59E6, - 12787: 0x5E72, - 12788: 0x5E79, - 12789: 0x61C7, - 12790: 0x63C0, - 12791: 0x6746, - 12792: 0x67EC, - 12793: 0x687F, - 12794: 0x6F97, - 12795: 0x764E, - 12796: 0x770B, - 12797: 0x78F5, - 12798: 0x7A08, - 12799: 0x7AFF, - 12800: 0x7C21, - 12801: 0x809D, - 12802: 0x826E, - 12803: 0x8271, - 12804: 0x8AEB, - 12805: 0x9593, - 12806: 0x4E6B, - 12807: 0x559D, - 12808: 0x66F7, - 12809: 0x6E34, - 12810: 0x78A3, - 12811: 0x7AED, - 12812: 0x845B, - 12813: 0x8910, - 12814: 0x874E, - 12815: 0x97A8, - 12816: 0x52D8, - 12817: 0x574E, - 12818: 0x582A, - 12819: 0x5D4C, - 12820: 0x611F, - 12821: 0x61BE, - 12822: 0x6221, - 12823: 0x6562, - 12824: 0x67D1, - 12825: 0x6A44, - 12826: 0x6E1B, - 12827: 0x7518, - 12828: 0x75B3, - 12829: 0x76E3, - 12830: 0x77B0, - 12831: 0x7D3A, - 12832: 0x90AF, - 12833: 0x9451, - 12834: 0x9452, - 12835: 0x9F95, - 12836: 0x5323, - 12837: 0x5CAC, - 12838: 0x7532, - 12839: 0x80DB, - 12840: 0x9240, - 12841: 0x9598, - 12842: 0x525B, - 12843: 0x5808, - 12844: 0x59DC, - 12845: 0x5CA1, - 12846: 0x5D17, - 12847: 0x5EB7, - 12848: 0x5F3A, - 12849: 0x5F4A, - 12850: 0x6177, - 12851: 0x6C5F, - 12852: 0x757A, - 12853: 0x7586, - 12854: 0x7CE0, - 12855: 0x7D73, - 12856: 0x7DB1, - 12857: 0x7F8C, - 12858: 0x8154, - 12859: 0x8221, - 12860: 0x8591, - 12861: 0x8941, - 12862: 0x8B1B, - 12863: 0x92FC, - 12864: 0x964D, - 12865: 0x9C47, - 12866: 0x4ECB, - 12867: 0x4EF7, - 12868: 0x500B, - 12869: 0x51F1, - 12870: 0x584F, - 12871: 0x6137, - 12872: 0x613E, - 12873: 0x6168, - 12874: 0x6539, - 12875: 0x69EA, - 12876: 0x6F11, - 12877: 0x75A5, - 12878: 0x7686, - 12879: 0x76D6, - 12880: 0x7B87, - 12881: 0x82A5, - 12882: 0x84CB, - 12883: 0xF900, - 12884: 0x93A7, - 12885: 0x958B, - 12886: 0x5580, - 12887: 0x5BA2, - 12888: 0x5751, - 12889: 0xF901, - 12890: 0x7CB3, - 12891: 0x7FB9, - 12892: 0x91B5, - 12893: 0x5028, - 12894: 0x53BB, - 12895: 0x5C45, - 12896: 0x5DE8, - 12897: 0x62D2, - 12898: 0x636E, - 12899: 0x64DA, - 12900: 0x64E7, - 12901: 0x6E20, - 12902: 0x70AC, - 12903: 0x795B, - 12904: 0x8DDD, - 12905: 0x8E1E, - 12906: 0xF902, - 12907: 0x907D, - 12908: 0x9245, - 12909: 0x92F8, - 12910: 0x4E7E, - 12911: 0x4EF6, - 12912: 0x5065, - 12913: 0x5DFE, - 12914: 0x5EFA, - 12915: 0x6106, - 12916: 0x6957, - 12917: 0x8171, - 12918: 0x8654, - 12919: 0x8E47, - 12920: 0x9375, - 12921: 0x9A2B, - 12922: 0x4E5E, - 12923: 0x5091, - 12924: 0x6770, - 12925: 0x6840, - 12926: 0x5109, - 12927: 0x528D, - 12928: 0x5292, - 12929: 0x6AA2, - 12930: 0x77BC, - 12931: 0x9210, - 12932: 0x9ED4, - 12933: 0x52AB, - 12934: 0x602F, - 12935: 0x8FF2, - 12936: 0x5048, - 12937: 0x61A9, - 12938: 0x63ED, - 12939: 0x64CA, - 12940: 0x683C, - 12941: 0x6A84, - 12942: 0x6FC0, - 12943: 0x8188, - 12944: 0x89A1, - 12945: 0x9694, - 12946: 0x5805, - 12947: 0x727D, - 12948: 0x72AC, - 12949: 0x7504, - 12950: 0x7D79, - 12951: 0x7E6D, - 12952: 0x80A9, - 12953: 0x898B, - 12954: 0x8B74, - 12955: 0x9063, - 12956: 0x9D51, - 12957: 0x6289, - 12958: 0x6C7A, - 12959: 0x6F54, - 12960: 0x7D50, - 12961: 0x7F3A, - 12962: 0x8A23, - 12963: 0x517C, - 12964: 0x614A, - 12965: 0x7B9D, - 12966: 0x8B19, - 12967: 0x9257, - 12968: 0x938C, - 12969: 0x4EAC, - 12970: 0x4FD3, - 12971: 0x501E, - 12972: 0x50BE, - 12973: 0x5106, - 12974: 0x52C1, - 12975: 0x52CD, - 12976: 0x537F, - 12977: 0x5770, - 12978: 0x5883, - 12979: 0x5E9A, - 12980: 0x5F91, - 12981: 0x6176, - 12982: 0x61AC, - 12983: 0x64CE, - 12984: 0x656C, - 12985: 0x666F, - 12986: 0x66BB, - 12987: 0x66F4, - 12988: 0x6897, - 12989: 0x6D87, - 12990: 0x7085, - 12991: 0x70F1, - 12992: 0x749F, - 12993: 0x74A5, - 12994: 0x74CA, - 12995: 0x75D9, - 12996: 0x786C, - 12997: 0x78EC, - 12998: 0x7ADF, - 12999: 0x7AF6, - 13000: 0x7D45, - 13001: 0x7D93, - 13002: 0x8015, - 13003: 0x803F, - 13004: 0x811B, - 13005: 0x8396, - 13006: 0x8B66, - 13007: 0x8F15, - 13008: 0x9015, - 13009: 0x93E1, - 13010: 0x9803, - 13011: 0x9838, - 13012: 0x9A5A, - 13013: 0x9BE8, - 13014: 0x4FC2, - 13015: 0x5553, - 13016: 0x583A, - 13017: 0x5951, - 13018: 0x5B63, - 13019: 0x5C46, - 13020: 0x60B8, - 13021: 0x6212, - 13022: 0x6842, - 13023: 0x68B0, - 13024: 0x68E8, - 13025: 0x6EAA, - 13026: 0x754C, - 13027: 0x7678, - 13028: 0x78CE, - 13029: 0x7A3D, - 13030: 0x7CFB, - 13031: 0x7E6B, - 13032: 0x7E7C, - 13033: 0x8A08, - 13034: 0x8AA1, - 13035: 0x8C3F, - 13036: 0x968E, - 13037: 0x9DC4, - 13038: 0x53E4, - 13039: 0x53E9, - 13040: 0x544A, - 13041: 0x5471, - 13042: 0x56FA, - 13043: 0x59D1, - 13044: 0x5B64, - 13045: 0x5C3B, - 13046: 0x5EAB, - 13047: 0x62F7, - 13048: 0x6537, - 13049: 0x6545, - 13050: 0x6572, - 13051: 0x66A0, - 13052: 0x67AF, - 13053: 0x69C1, - 13054: 0x6CBD, - 13055: 0x75FC, - 13056: 0x7690, - 13057: 0x777E, - 13058: 0x7A3F, - 13059: 0x7F94, - 13060: 0x8003, - 13061: 0x80A1, - 13062: 0x818F, - 13063: 0x82E6, - 13064: 0x82FD, - 13065: 0x83F0, - 13066: 0x85C1, - 13067: 0x8831, - 13068: 0x88B4, - 13069: 0x8AA5, - 13070: 0xF903, - 13071: 0x8F9C, - 13072: 0x932E, - 13073: 0x96C7, - 13074: 0x9867, - 13075: 0x9AD8, - 13076: 0x9F13, - 13077: 0x54ED, - 13078: 0x659B, - 13079: 0x66F2, - 13080: 0x688F, - 13081: 0x7A40, - 13082: 0x8C37, - 13083: 0x9D60, - 13084: 0x56F0, - 13085: 0x5764, - 13086: 0x5D11, - 13087: 0x6606, - 13088: 0x68B1, - 13089: 0x68CD, - 13090: 0x6EFE, - 13091: 0x7428, - 13092: 0x889E, - 13093: 0x9BE4, - 13094: 0x6C68, - 13095: 0xF904, - 13096: 0x9AA8, - 13097: 0x4F9B, - 13098: 0x516C, - 13099: 0x5171, - 13100: 0x529F, - 13101: 0x5B54, - 13102: 0x5DE5, - 13103: 0x6050, - 13104: 0x606D, - 13105: 0x62F1, - 13106: 0x63A7, - 13107: 0x653B, - 13108: 0x73D9, - 13109: 0x7A7A, - 13110: 0x86A3, - 13111: 0x8CA2, - 13112: 0x978F, - 13113: 0x4E32, - 13114: 0x5BE1, - 13115: 0x6208, - 13116: 0x679C, - 13117: 0x74DC, - 13118: 0x79D1, - 13119: 0x83D3, - 13120: 0x8A87, - 13121: 0x8AB2, - 13122: 0x8DE8, - 13123: 0x904E, - 13124: 0x934B, - 13125: 0x9846, - 13126: 0x5ED3, - 13127: 0x69E8, - 13128: 0x85FF, - 13129: 0x90ED, - 13130: 0xF905, - 13131: 0x51A0, - 13132: 0x5B98, - 13133: 0x5BEC, - 13134: 0x6163, - 13135: 0x68FA, - 13136: 0x6B3E, - 13137: 0x704C, - 13138: 0x742F, - 13139: 0x74D8, - 13140: 0x7BA1, - 13141: 0x7F50, - 13142: 0x83C5, - 13143: 0x89C0, - 13144: 0x8CAB, - 13145: 0x95DC, - 13146: 0x9928, - 13147: 0x522E, - 13148: 0x605D, - 13149: 0x62EC, - 13150: 0x9002, - 13151: 0x4F8A, - 13152: 0x5149, - 13153: 0x5321, - 13154: 0x58D9, - 13155: 0x5EE3, - 13156: 0x66E0, - 13157: 0x6D38, - 13158: 0x709A, - 13159: 0x72C2, - 13160: 0x73D6, - 13161: 0x7B50, - 13162: 0x80F1, - 13163: 0x945B, - 13164: 0x5366, - 13165: 0x639B, - 13166: 0x7F6B, - 13167: 0x4E56, - 13168: 0x5080, - 13169: 0x584A, - 13170: 0x58DE, - 13171: 0x602A, - 13172: 0x6127, - 13173: 0x62D0, - 13174: 0x69D0, - 13175: 0x9B41, - 13176: 0x5B8F, - 13177: 0x7D18, - 13178: 0x80B1, - 13179: 0x8F5F, - 13180: 0x4EA4, - 13181: 0x50D1, - 13182: 0x54AC, - 13183: 0x55AC, - 13184: 0x5B0C, - 13185: 0x5DA0, - 13186: 0x5DE7, - 13187: 0x652A, - 13188: 0x654E, - 13189: 0x6821, - 13190: 0x6A4B, - 13191: 0x72E1, - 13192: 0x768E, - 13193: 0x77EF, - 13194: 0x7D5E, - 13195: 0x7FF9, - 13196: 0x81A0, - 13197: 0x854E, - 13198: 0x86DF, - 13199: 0x8F03, - 13200: 0x8F4E, - 13201: 0x90CA, - 13202: 0x9903, - 13203: 0x9A55, - 13204: 0x9BAB, - 13205: 0x4E18, - 13206: 0x4E45, - 13207: 0x4E5D, - 13208: 0x4EC7, - 13209: 0x4FF1, - 13210: 0x5177, - 13211: 0x52FE, - 13212: 0x5340, - 13213: 0x53E3, - 13214: 0x53E5, - 13215: 0x548E, - 13216: 0x5614, - 13217: 0x5775, - 13218: 0x57A2, - 13219: 0x5BC7, - 13220: 0x5D87, - 13221: 0x5ED0, - 13222: 0x61FC, - 13223: 0x62D8, - 13224: 0x6551, - 13225: 0x67B8, - 13226: 0x67E9, - 13227: 0x69CB, - 13228: 0x6B50, - 13229: 0x6BC6, - 13230: 0x6BEC, - 13231: 0x6C42, - 13232: 0x6E9D, - 13233: 0x7078, - 13234: 0x72D7, - 13235: 0x7396, - 13236: 0x7403, - 13237: 0x77BF, - 13238: 0x77E9, - 13239: 0x7A76, - 13240: 0x7D7F, - 13241: 0x8009, - 13242: 0x81FC, - 13243: 0x8205, - 13244: 0x820A, - 13245: 0x82DF, - 13246: 0x8862, - 13247: 0x8B33, - 13248: 0x8CFC, - 13249: 0x8EC0, - 13250: 0x9011, - 13251: 0x90B1, - 13252: 0x9264, - 13253: 0x92B6, - 13254: 0x99D2, - 13255: 0x9A45, - 13256: 0x9CE9, - 13257: 0x9DD7, - 13258: 0x9F9C, - 13259: 0x570B, - 13260: 0x5C40, - 13261: 0x83CA, - 13262: 0x97A0, - 13263: 0x97AB, - 13264: 0x9EB4, - 13265: 0x541B, - 13266: 0x7A98, - 13267: 0x7FA4, - 13268: 0x88D9, - 13269: 0x8ECD, - 13270: 0x90E1, - 13271: 0x5800, - 13272: 0x5C48, - 13273: 0x6398, - 13274: 0x7A9F, - 13275: 0x5BAE, - 13276: 0x5F13, - 13277: 0x7A79, - 13278: 0x7AAE, - 13279: 0x828E, - 13280: 0x8EAC, - 13281: 0x5026, - 13282: 0x5238, - 13283: 0x52F8, - 13284: 0x5377, - 13285: 0x5708, - 13286: 0x62F3, - 13287: 0x6372, - 13288: 0x6B0A, - 13289: 0x6DC3, - 13290: 0x7737, - 13291: 0x53A5, - 13292: 0x7357, - 13293: 0x8568, - 13294: 0x8E76, - 13295: 0x95D5, - 13296: 0x673A, - 13297: 0x6AC3, - 13298: 0x6F70, - 13299: 0x8A6D, - 13300: 0x8ECC, - 13301: 0x994B, - 13302: 0xF906, - 13303: 0x6677, - 13304: 0x6B78, - 13305: 0x8CB4, - 13306: 0x9B3C, - 13307: 0xF907, - 13308: 0x53EB, - 13309: 0x572D, - 13310: 0x594E, - 13311: 0x63C6, - 13312: 0x69FB, - 13313: 0x73EA, - 13314: 0x7845, - 13315: 0x7ABA, - 13316: 0x7AC5, - 13317: 0x7CFE, - 13318: 0x8475, - 13319: 0x898F, - 13320: 0x8D73, - 13321: 0x9035, - 13322: 0x95A8, - 13323: 0x52FB, - 13324: 0x5747, - 13325: 0x7547, - 13326: 0x7B60, - 13327: 0x83CC, - 13328: 0x921E, - 13329: 0xF908, - 13330: 0x6A58, - 13331: 0x514B, - 13332: 0x524B, - 13333: 0x5287, - 13334: 0x621F, - 13335: 0x68D8, - 13336: 0x6975, - 13337: 0x9699, - 13338: 0x50C5, - 13339: 0x52A4, - 13340: 0x52E4, - 13341: 0x61C3, - 13342: 0x65A4, - 13343: 0x6839, - 13344: 0x69FF, - 13345: 0x747E, - 13346: 0x7B4B, - 13347: 0x82B9, - 13348: 0x83EB, - 13349: 0x89B2, - 13350: 0x8B39, - 13351: 0x8FD1, - 13352: 0x9949, - 13353: 0xF909, - 13354: 0x4ECA, - 13355: 0x5997, - 13356: 0x64D2, - 13357: 0x6611, - 13358: 0x6A8E, - 13359: 0x7434, - 13360: 0x7981, - 13361: 0x79BD, - 13362: 0x82A9, - 13363: 0x887E, - 13364: 0x887F, - 13365: 0x895F, - 13366: 0xF90A, - 13367: 0x9326, - 13368: 0x4F0B, - 13369: 0x53CA, - 13370: 0x6025, - 13371: 0x6271, - 13372: 0x6C72, - 13373: 0x7D1A, - 13374: 0x7D66, - 13375: 0x4E98, - 13376: 0x5162, - 13377: 0x77DC, - 13378: 0x80AF, - 13379: 0x4F01, - 13380: 0x4F0E, - 13381: 0x5176, - 13382: 0x5180, - 13383: 0x55DC, - 13384: 0x5668, - 13385: 0x573B, - 13386: 0x57FA, - 13387: 0x57FC, - 13388: 0x5914, - 13389: 0x5947, - 13390: 0x5993, - 13391: 0x5BC4, - 13392: 0x5C90, - 13393: 0x5D0E, - 13394: 0x5DF1, - 13395: 0x5E7E, - 13396: 0x5FCC, - 13397: 0x6280, - 13398: 0x65D7, - 13399: 0x65E3, - 13400: 0x671E, - 13401: 0x671F, - 13402: 0x675E, - 13403: 0x68CB, - 13404: 0x68C4, - 13405: 0x6A5F, - 13406: 0x6B3A, - 13407: 0x6C23, - 13408: 0x6C7D, - 13409: 0x6C82, - 13410: 0x6DC7, - 13411: 0x7398, - 13412: 0x7426, - 13413: 0x742A, - 13414: 0x7482, - 13415: 0x74A3, - 13416: 0x7578, - 13417: 0x757F, - 13418: 0x7881, - 13419: 0x78EF, - 13420: 0x7941, - 13421: 0x7947, - 13422: 0x7948, - 13423: 0x797A, - 13424: 0x7B95, - 13425: 0x7D00, - 13426: 0x7DBA, - 13427: 0x7F88, - 13428: 0x8006, - 13429: 0x802D, - 13430: 0x808C, - 13431: 0x8A18, - 13432: 0x8B4F, - 13433: 0x8C48, - 13434: 0x8D77, - 13435: 0x9321, - 13436: 0x9324, - 13437: 0x98E2, - 13438: 0x9951, - 13439: 0x9A0E, - 13440: 0x9A0F, - 13441: 0x9A65, - 13442: 0x9E92, - 13443: 0x7DCA, - 13444: 0x4F76, - 13445: 0x5409, - 13446: 0x62EE, - 13447: 0x6854, - 13448: 0x91D1, - 13449: 0x55AB, - 13450: 0x513A, - 13451: 0xF90B, - 13452: 0xF90C, - 13453: 0x5A1C, - 13454: 0x61E6, - 13455: 0xF90D, - 13456: 0x62CF, - 13457: 0x62FF, - 13458: 0xF90E, - 13459: 0xF90F, - 13460: 0xF910, - 13461: 0xF911, - 13462: 0xF912, - 13463: 0xF913, - 13464: 0x90A3, - 13465: 0xF914, - 13466: 0xF915, - 13467: 0xF916, - 13468: 0xF917, - 13469: 0xF918, - 13470: 0x8AFE, - 13471: 0xF919, - 13472: 0xF91A, - 13473: 0xF91B, - 13474: 0xF91C, - 13475: 0x6696, - 13476: 0xF91D, - 13477: 0x7156, - 13478: 0xF91E, - 13479: 0xF91F, - 13480: 0x96E3, - 13481: 0xF920, - 13482: 0x634F, - 13483: 0x637A, - 13484: 0x5357, - 13485: 0xF921, - 13486: 0x678F, - 13487: 0x6960, - 13488: 0x6E73, - 13489: 0xF922, - 13490: 0x7537, - 13491: 0xF923, - 13492: 0xF924, - 13493: 0xF925, - 13494: 0x7D0D, - 13495: 0xF926, - 13496: 0xF927, - 13497: 0x8872, - 13498: 0x56CA, - 13499: 0x5A18, - 13500: 0xF928, - 13501: 0xF929, - 13502: 0xF92A, - 13503: 0xF92B, - 13504: 0xF92C, - 13505: 0x4E43, - 13506: 0xF92D, - 13507: 0x5167, - 13508: 0x5948, - 13509: 0x67F0, - 13510: 0x8010, - 13511: 0xF92E, - 13512: 0x5973, - 13513: 0x5E74, - 13514: 0x649A, - 13515: 0x79CA, - 13516: 0x5FF5, - 13517: 0x606C, - 13518: 0x62C8, - 13519: 0x637B, - 13520: 0x5BE7, - 13521: 0x5BD7, - 13522: 0x52AA, - 13523: 0xF92F, - 13524: 0x5974, - 13525: 0x5F29, - 13526: 0x6012, - 13527: 0xF930, - 13528: 0xF931, - 13529: 0xF932, - 13530: 0x7459, - 13531: 0xF933, - 13532: 0xF934, - 13533: 0xF935, - 13534: 0xF936, - 13535: 0xF937, - 13536: 0xF938, - 13537: 0x99D1, - 13538: 0xF939, - 13539: 0xF93A, - 13540: 0xF93B, - 13541: 0xF93C, - 13542: 0xF93D, - 13543: 0xF93E, - 13544: 0xF93F, - 13545: 0xF940, - 13546: 0xF941, - 13547: 0xF942, - 13548: 0xF943, - 13549: 0x6FC3, - 13550: 0xF944, - 13551: 0xF945, - 13552: 0x81BF, - 13553: 0x8FB2, - 13554: 0x60F1, - 13555: 0xF946, - 13556: 0xF947, - 13557: 0x8166, - 13558: 0xF948, - 13559: 0xF949, - 13560: 0x5C3F, - 13561: 0xF94A, - 13562: 0xF94B, - 13563: 0xF94C, - 13564: 0xF94D, - 13565: 0xF94E, - 13566: 0xF94F, - 13567: 0xF950, - 13568: 0xF951, - 13569: 0x5AE9, - 13570: 0x8A25, - 13571: 0x677B, - 13572: 0x7D10, - 13573: 0xF952, - 13574: 0xF953, - 13575: 0xF954, - 13576: 0xF955, - 13577: 0xF956, - 13578: 0xF957, - 13579: 0x80FD, - 13580: 0xF958, - 13581: 0xF959, - 13582: 0x5C3C, - 13583: 0x6CE5, - 13584: 0x533F, - 13585: 0x6EBA, - 13586: 0x591A, - 13587: 0x8336, - 13588: 0x4E39, - 13589: 0x4EB6, - 13590: 0x4F46, - 13591: 0x55AE, - 13592: 0x5718, - 13593: 0x58C7, - 13594: 0x5F56, - 13595: 0x65B7, - 13596: 0x65E6, - 13597: 0x6A80, - 13598: 0x6BB5, - 13599: 0x6E4D, - 13600: 0x77ED, - 13601: 0x7AEF, - 13602: 0x7C1E, - 13603: 0x7DDE, - 13604: 0x86CB, - 13605: 0x8892, - 13606: 0x9132, - 13607: 0x935B, - 13608: 0x64BB, - 13609: 0x6FBE, - 13610: 0x737A, - 13611: 0x75B8, - 13612: 0x9054, - 13613: 0x5556, - 13614: 0x574D, - 13615: 0x61BA, - 13616: 0x64D4, - 13617: 0x66C7, - 13618: 0x6DE1, - 13619: 0x6E5B, - 13620: 0x6F6D, - 13621: 0x6FB9, - 13622: 0x75F0, - 13623: 0x8043, - 13624: 0x81BD, - 13625: 0x8541, - 13626: 0x8983, - 13627: 0x8AC7, - 13628: 0x8B5A, - 13629: 0x931F, - 13630: 0x6C93, - 13631: 0x7553, - 13632: 0x7B54, - 13633: 0x8E0F, - 13634: 0x905D, - 13635: 0x5510, - 13636: 0x5802, - 13637: 0x5858, - 13638: 0x5E62, - 13639: 0x6207, - 13640: 0x649E, - 13641: 0x68E0, - 13642: 0x7576, - 13643: 0x7CD6, - 13644: 0x87B3, - 13645: 0x9EE8, - 13646: 0x4EE3, - 13647: 0x5788, - 13648: 0x576E, - 13649: 0x5927, - 13650: 0x5C0D, - 13651: 0x5CB1, - 13652: 0x5E36, - 13653: 0x5F85, - 13654: 0x6234, - 13655: 0x64E1, - 13656: 0x73B3, - 13657: 0x81FA, - 13658: 0x888B, - 13659: 0x8CB8, - 13660: 0x968A, - 13661: 0x9EDB, - 13662: 0x5B85, - 13663: 0x5FB7, - 13664: 0x60B3, - 13665: 0x5012, - 13666: 0x5200, - 13667: 0x5230, - 13668: 0x5716, - 13669: 0x5835, - 13670: 0x5857, - 13671: 0x5C0E, - 13672: 0x5C60, - 13673: 0x5CF6, - 13674: 0x5D8B, - 13675: 0x5EA6, - 13676: 0x5F92, - 13677: 0x60BC, - 13678: 0x6311, - 13679: 0x6389, - 13680: 0x6417, - 13681: 0x6843, - 13682: 0x68F9, - 13683: 0x6AC2, - 13684: 0x6DD8, - 13685: 0x6E21, - 13686: 0x6ED4, - 13687: 0x6FE4, - 13688: 0x71FE, - 13689: 0x76DC, - 13690: 0x7779, - 13691: 0x79B1, - 13692: 0x7A3B, - 13693: 0x8404, - 13694: 0x89A9, - 13695: 0x8CED, - 13696: 0x8DF3, - 13697: 0x8E48, - 13698: 0x9003, - 13699: 0x9014, - 13700: 0x9053, - 13701: 0x90FD, - 13702: 0x934D, - 13703: 0x9676, - 13704: 0x97DC, - 13705: 0x6BD2, - 13706: 0x7006, - 13707: 0x7258, - 13708: 0x72A2, - 13709: 0x7368, - 13710: 0x7763, - 13711: 0x79BF, - 13712: 0x7BE4, - 13713: 0x7E9B, - 13714: 0x8B80, - 13715: 0x58A9, - 13716: 0x60C7, - 13717: 0x6566, - 13718: 0x65FD, - 13719: 0x66BE, - 13720: 0x6C8C, - 13721: 0x711E, - 13722: 0x71C9, - 13723: 0x8C5A, - 13724: 0x9813, - 13725: 0x4E6D, - 13726: 0x7A81, - 13727: 0x4EDD, - 13728: 0x51AC, - 13729: 0x51CD, - 13730: 0x52D5, - 13731: 0x540C, - 13732: 0x61A7, - 13733: 0x6771, - 13734: 0x6850, - 13735: 0x68DF, - 13736: 0x6D1E, - 13737: 0x6F7C, - 13738: 0x75BC, - 13739: 0x77B3, - 13740: 0x7AE5, - 13741: 0x80F4, - 13742: 0x8463, - 13743: 0x9285, - 13744: 0x515C, - 13745: 0x6597, - 13746: 0x675C, - 13747: 0x6793, - 13748: 0x75D8, - 13749: 0x7AC7, - 13750: 0x8373, - 13751: 0xF95A, - 13752: 0x8C46, - 13753: 0x9017, - 13754: 0x982D, - 13755: 0x5C6F, - 13756: 0x81C0, - 13757: 0x829A, - 13758: 0x9041, - 13759: 0x906F, - 13760: 0x920D, - 13761: 0x5F97, - 13762: 0x5D9D, - 13763: 0x6A59, - 13764: 0x71C8, - 13765: 0x767B, - 13766: 0x7B49, - 13767: 0x85E4, - 13768: 0x8B04, - 13769: 0x9127, - 13770: 0x9A30, - 13771: 0x5587, - 13772: 0x61F6, - 13773: 0xF95B, - 13774: 0x7669, - 13775: 0x7F85, - 13776: 0x863F, - 13777: 0x87BA, - 13778: 0x88F8, - 13779: 0x908F, - 13780: 0xF95C, - 13781: 0x6D1B, - 13782: 0x70D9, - 13783: 0x73DE, - 13784: 0x7D61, - 13785: 0x843D, - 13786: 0xF95D, - 13787: 0x916A, - 13788: 0x99F1, - 13789: 0xF95E, - 13790: 0x4E82, - 13791: 0x5375, - 13792: 0x6B04, - 13793: 0x6B12, - 13794: 0x703E, - 13795: 0x721B, - 13796: 0x862D, - 13797: 0x9E1E, - 13798: 0x524C, - 13799: 0x8FA3, - 13800: 0x5D50, - 13801: 0x64E5, - 13802: 0x652C, - 13803: 0x6B16, - 13804: 0x6FEB, - 13805: 0x7C43, - 13806: 0x7E9C, - 13807: 0x85CD, - 13808: 0x8964, - 13809: 0x89BD, - 13810: 0x62C9, - 13811: 0x81D8, - 13812: 0x881F, - 13813: 0x5ECA, - 13814: 0x6717, - 13815: 0x6D6A, - 13816: 0x72FC, - 13817: 0x7405, - 13818: 0x746F, - 13819: 0x8782, - 13820: 0x90DE, - 13821: 0x4F86, - 13822: 0x5D0D, - 13823: 0x5FA0, - 13824: 0x840A, - 13825: 0x51B7, - 13826: 0x63A0, - 13827: 0x7565, - 13828: 0x4EAE, - 13829: 0x5006, - 13830: 0x5169, - 13831: 0x51C9, - 13832: 0x6881, - 13833: 0x6A11, - 13834: 0x7CAE, - 13835: 0x7CB1, - 13836: 0x7CE7, - 13837: 0x826F, - 13838: 0x8AD2, - 13839: 0x8F1B, - 13840: 0x91CF, - 13841: 0x4FB6, - 13842: 0x5137, - 13843: 0x52F5, - 13844: 0x5442, - 13845: 0x5EEC, - 13846: 0x616E, - 13847: 0x623E, - 13848: 0x65C5, - 13849: 0x6ADA, - 13850: 0x6FFE, - 13851: 0x792A, - 13852: 0x85DC, - 13853: 0x8823, - 13854: 0x95AD, - 13855: 0x9A62, - 13856: 0x9A6A, - 13857: 0x9E97, - 13858: 0x9ECE, - 13859: 0x529B, - 13860: 0x66C6, - 13861: 0x6B77, - 13862: 0x701D, - 13863: 0x792B, - 13864: 0x8F62, - 13865: 0x9742, - 13866: 0x6190, - 13867: 0x6200, - 13868: 0x6523, - 13869: 0x6F23, - 13870: 0x7149, - 13871: 0x7489, - 13872: 0x7DF4, - 13873: 0x806F, - 13874: 0x84EE, - 13875: 0x8F26, - 13876: 0x9023, - 13877: 0x934A, - 13878: 0x51BD, - 13879: 0x5217, - 13880: 0x52A3, - 13881: 0x6D0C, - 13882: 0x70C8, - 13883: 0x88C2, - 13884: 0x5EC9, - 13885: 0x6582, - 13886: 0x6BAE, - 13887: 0x6FC2, - 13888: 0x7C3E, - 13889: 0x7375, - 13890: 0x4EE4, - 13891: 0x4F36, - 13892: 0x56F9, - 13893: 0xF95F, - 13894: 0x5CBA, - 13895: 0x5DBA, - 13896: 0x601C, - 13897: 0x73B2, - 13898: 0x7B2D, - 13899: 0x7F9A, - 13900: 0x7FCE, - 13901: 0x8046, - 13902: 0x901E, - 13903: 0x9234, - 13904: 0x96F6, - 13905: 0x9748, - 13906: 0x9818, - 13907: 0x9F61, - 13908: 0x4F8B, - 13909: 0x6FA7, - 13910: 0x79AE, - 13911: 0x91B4, - 13912: 0x96B7, - 13913: 0x52DE, - 13914: 0xF960, - 13915: 0x6488, - 13916: 0x64C4, - 13917: 0x6AD3, - 13918: 0x6F5E, - 13919: 0x7018, - 13920: 0x7210, - 13921: 0x76E7, - 13922: 0x8001, - 13923: 0x8606, - 13924: 0x865C, - 13925: 0x8DEF, - 13926: 0x8F05, - 13927: 0x9732, - 13928: 0x9B6F, - 13929: 0x9DFA, - 13930: 0x9E75, - 13931: 0x788C, - 13932: 0x797F, - 13933: 0x7DA0, - 13934: 0x83C9, - 13935: 0x9304, - 13936: 0x9E7F, - 13937: 0x9E93, - 13938: 0x8AD6, - 13939: 0x58DF, - 13940: 0x5F04, - 13941: 0x6727, - 13942: 0x7027, - 13943: 0x74CF, - 13944: 0x7C60, - 13945: 0x807E, - 13946: 0x5121, - 13947: 0x7028, - 13948: 0x7262, - 13949: 0x78CA, - 13950: 0x8CC2, - 13951: 0x8CDA, - 13952: 0x8CF4, - 13953: 0x96F7, - 13954: 0x4E86, - 13955: 0x50DA, - 13956: 0x5BEE, - 13957: 0x5ED6, - 13958: 0x6599, - 13959: 0x71CE, - 13960: 0x7642, - 13961: 0x77AD, - 13962: 0x804A, - 13963: 0x84FC, - 13964: 0x907C, - 13965: 0x9B27, - 13966: 0x9F8D, - 13967: 0x58D8, - 13968: 0x5A41, - 13969: 0x5C62, - 13970: 0x6A13, - 13971: 0x6DDA, - 13972: 0x6F0F, - 13973: 0x763B, - 13974: 0x7D2F, - 13975: 0x7E37, - 13976: 0x851E, - 13977: 0x8938, - 13978: 0x93E4, - 13979: 0x964B, - 13980: 0x5289, - 13981: 0x65D2, - 13982: 0x67F3, - 13983: 0x69B4, - 13984: 0x6D41, - 13985: 0x6E9C, - 13986: 0x700F, - 13987: 0x7409, - 13988: 0x7460, - 13989: 0x7559, - 13990: 0x7624, - 13991: 0x786B, - 13992: 0x8B2C, - 13993: 0x985E, - 13994: 0x516D, - 13995: 0x622E, - 13996: 0x9678, - 13997: 0x4F96, - 13998: 0x502B, - 13999: 0x5D19, - 14000: 0x6DEA, - 14001: 0x7DB8, - 14002: 0x8F2A, - 14003: 0x5F8B, - 14004: 0x6144, - 14005: 0x6817, - 14006: 0xF961, - 14007: 0x9686, - 14008: 0x52D2, - 14009: 0x808B, - 14010: 0x51DC, - 14011: 0x51CC, - 14012: 0x695E, - 14013: 0x7A1C, - 14014: 0x7DBE, - 14015: 0x83F1, - 14016: 0x9675, - 14017: 0x4FDA, - 14018: 0x5229, - 14019: 0x5398, - 14020: 0x540F, - 14021: 0x550E, - 14022: 0x5C65, - 14023: 0x60A7, - 14024: 0x674E, - 14025: 0x68A8, - 14026: 0x6D6C, - 14027: 0x7281, - 14028: 0x72F8, - 14029: 0x7406, - 14030: 0x7483, - 14031: 0xF962, - 14032: 0x75E2, - 14033: 0x7C6C, - 14034: 0x7F79, - 14035: 0x7FB8, - 14036: 0x8389, - 14037: 0x88CF, - 14038: 0x88E1, - 14039: 0x91CC, - 14040: 0x91D0, - 14041: 0x96E2, - 14042: 0x9BC9, - 14043: 0x541D, - 14044: 0x6F7E, - 14045: 0x71D0, - 14046: 0x7498, - 14047: 0x85FA, - 14048: 0x8EAA, - 14049: 0x96A3, - 14050: 0x9C57, - 14051: 0x9E9F, - 14052: 0x6797, - 14053: 0x6DCB, - 14054: 0x7433, - 14055: 0x81E8, - 14056: 0x9716, - 14057: 0x782C, - 14058: 0x7ACB, - 14059: 0x7B20, - 14060: 0x7C92, - 14061: 0x6469, - 14062: 0x746A, - 14063: 0x75F2, - 14064: 0x78BC, - 14065: 0x78E8, - 14066: 0x99AC, - 14067: 0x9B54, - 14068: 0x9EBB, - 14069: 0x5BDE, - 14070: 0x5E55, - 14071: 0x6F20, - 14072: 0x819C, - 14073: 0x83AB, - 14074: 0x9088, - 14075: 0x4E07, - 14076: 0x534D, - 14077: 0x5A29, - 14078: 0x5DD2, - 14079: 0x5F4E, - 14080: 0x6162, - 14081: 0x633D, - 14082: 0x6669, - 14083: 0x66FC, - 14084: 0x6EFF, - 14085: 0x6F2B, - 14086: 0x7063, - 14087: 0x779E, - 14088: 0x842C, - 14089: 0x8513, - 14090: 0x883B, - 14091: 0x8F13, - 14092: 0x9945, - 14093: 0x9C3B, - 14094: 0x551C, - 14095: 0x62B9, - 14096: 0x672B, - 14097: 0x6CAB, - 14098: 0x8309, - 14099: 0x896A, - 14100: 0x977A, - 14101: 0x4EA1, - 14102: 0x5984, - 14103: 0x5FD8, - 14104: 0x5FD9, - 14105: 0x671B, - 14106: 0x7DB2, - 14107: 0x7F54, - 14108: 0x8292, - 14109: 0x832B, - 14110: 0x83BD, - 14111: 0x8F1E, - 14112: 0x9099, - 14113: 0x57CB, - 14114: 0x59B9, - 14115: 0x5A92, - 14116: 0x5BD0, - 14117: 0x6627, - 14118: 0x679A, - 14119: 0x6885, - 14120: 0x6BCF, - 14121: 0x7164, - 14122: 0x7F75, - 14123: 0x8CB7, - 14124: 0x8CE3, - 14125: 0x9081, - 14126: 0x9B45, - 14127: 0x8108, - 14128: 0x8C8A, - 14129: 0x964C, - 14130: 0x9A40, - 14131: 0x9EA5, - 14132: 0x5B5F, - 14133: 0x6C13, - 14134: 0x731B, - 14135: 0x76F2, - 14136: 0x76DF, - 14137: 0x840C, - 14138: 0x51AA, - 14139: 0x8993, - 14140: 0x514D, - 14141: 0x5195, - 14142: 0x52C9, - 14143: 0x68C9, - 14144: 0x6C94, - 14145: 0x7704, - 14146: 0x7720, - 14147: 0x7DBF, - 14148: 0x7DEC, - 14149: 0x9762, - 14150: 0x9EB5, - 14151: 0x6EC5, - 14152: 0x8511, - 14153: 0x51A5, - 14154: 0x540D, - 14155: 0x547D, - 14156: 0x660E, - 14157: 0x669D, - 14158: 0x6927, - 14159: 0x6E9F, - 14160: 0x76BF, - 14161: 0x7791, - 14162: 0x8317, - 14163: 0x84C2, - 14164: 0x879F, - 14165: 0x9169, - 14166: 0x9298, - 14167: 0x9CF4, - 14168: 0x8882, - 14169: 0x4FAE, - 14170: 0x5192, - 14171: 0x52DF, - 14172: 0x59C6, - 14173: 0x5E3D, - 14174: 0x6155, - 14175: 0x6478, - 14176: 0x6479, - 14177: 0x66AE, - 14178: 0x67D0, - 14179: 0x6A21, - 14180: 0x6BCD, - 14181: 0x6BDB, - 14182: 0x725F, - 14183: 0x7261, - 14184: 0x7441, - 14185: 0x7738, - 14186: 0x77DB, - 14187: 0x8017, - 14188: 0x82BC, - 14189: 0x8305, - 14190: 0x8B00, - 14191: 0x8B28, - 14192: 0x8C8C, - 14193: 0x6728, - 14194: 0x6C90, - 14195: 0x7267, - 14196: 0x76EE, - 14197: 0x7766, - 14198: 0x7A46, - 14199: 0x9DA9, - 14200: 0x6B7F, - 14201: 0x6C92, - 14202: 0x5922, - 14203: 0x6726, - 14204: 0x8499, - 14205: 0x536F, - 14206: 0x5893, - 14207: 0x5999, - 14208: 0x5EDF, - 14209: 0x63CF, - 14210: 0x6634, - 14211: 0x6773, - 14212: 0x6E3A, - 14213: 0x732B, - 14214: 0x7AD7, - 14215: 0x82D7, - 14216: 0x9328, - 14217: 0x52D9, - 14218: 0x5DEB, - 14219: 0x61AE, - 14220: 0x61CB, - 14221: 0x620A, - 14222: 0x62C7, - 14223: 0x64AB, - 14224: 0x65E0, - 14225: 0x6959, - 14226: 0x6B66, - 14227: 0x6BCB, - 14228: 0x7121, - 14229: 0x73F7, - 14230: 0x755D, - 14231: 0x7E46, - 14232: 0x821E, - 14233: 0x8302, - 14234: 0x856A, - 14235: 0x8AA3, - 14236: 0x8CBF, - 14237: 0x9727, - 14238: 0x9D61, - 14239: 0x58A8, - 14240: 0x9ED8, - 14241: 0x5011, - 14242: 0x520E, - 14243: 0x543B, - 14244: 0x554F, - 14245: 0x6587, - 14246: 0x6C76, - 14247: 0x7D0A, - 14248: 0x7D0B, - 14249: 0x805E, - 14250: 0x868A, - 14251: 0x9580, - 14252: 0x96EF, - 14253: 0x52FF, - 14254: 0x6C95, - 14255: 0x7269, - 14256: 0x5473, - 14257: 0x5A9A, - 14258: 0x5C3E, - 14259: 0x5D4B, - 14260: 0x5F4C, - 14261: 0x5FAE, - 14262: 0x672A, - 14263: 0x68B6, - 14264: 0x6963, - 14265: 0x6E3C, - 14266: 0x6E44, - 14267: 0x7709, - 14268: 0x7C73, - 14269: 0x7F8E, - 14270: 0x8587, - 14271: 0x8B0E, - 14272: 0x8FF7, - 14273: 0x9761, - 14274: 0x9EF4, - 14275: 0x5CB7, - 14276: 0x60B6, - 14277: 0x610D, - 14278: 0x61AB, - 14279: 0x654F, - 14280: 0x65FB, - 14281: 0x65FC, - 14282: 0x6C11, - 14283: 0x6CEF, - 14284: 0x739F, - 14285: 0x73C9, - 14286: 0x7DE1, - 14287: 0x9594, - 14288: 0x5BC6, - 14289: 0x871C, - 14290: 0x8B10, - 14291: 0x525D, - 14292: 0x535A, - 14293: 0x62CD, - 14294: 0x640F, - 14295: 0x64B2, - 14296: 0x6734, - 14297: 0x6A38, - 14298: 0x6CCA, - 14299: 0x73C0, - 14300: 0x749E, - 14301: 0x7B94, - 14302: 0x7C95, - 14303: 0x7E1B, - 14304: 0x818A, - 14305: 0x8236, - 14306: 0x8584, - 14307: 0x8FEB, - 14308: 0x96F9, - 14309: 0x99C1, - 14310: 0x4F34, - 14311: 0x534A, - 14312: 0x53CD, - 14313: 0x53DB, - 14314: 0x62CC, - 14315: 0x642C, - 14316: 0x6500, - 14317: 0x6591, - 14318: 0x69C3, - 14319: 0x6CEE, - 14320: 0x6F58, - 14321: 0x73ED, - 14322: 0x7554, - 14323: 0x7622, - 14324: 0x76E4, - 14325: 0x76FC, - 14326: 0x78D0, - 14327: 0x78FB, - 14328: 0x792C, - 14329: 0x7D46, - 14330: 0x822C, - 14331: 0x87E0, - 14332: 0x8FD4, - 14333: 0x9812, - 14334: 0x98EF, - 14335: 0x52C3, - 14336: 0x62D4, - 14337: 0x64A5, - 14338: 0x6E24, - 14339: 0x6F51, - 14340: 0x767C, - 14341: 0x8DCB, - 14342: 0x91B1, - 14343: 0x9262, - 14344: 0x9AEE, - 14345: 0x9B43, - 14346: 0x5023, - 14347: 0x508D, - 14348: 0x574A, - 14349: 0x59A8, - 14350: 0x5C28, - 14351: 0x5E47, - 14352: 0x5F77, - 14353: 0x623F, - 14354: 0x653E, - 14355: 0x65B9, - 14356: 0x65C1, - 14357: 0x6609, - 14358: 0x678B, - 14359: 0x699C, - 14360: 0x6EC2, - 14361: 0x78C5, - 14362: 0x7D21, - 14363: 0x80AA, - 14364: 0x8180, - 14365: 0x822B, - 14366: 0x82B3, - 14367: 0x84A1, - 14368: 0x868C, - 14369: 0x8A2A, - 14370: 0x8B17, - 14371: 0x90A6, - 14372: 0x9632, - 14373: 0x9F90, - 14374: 0x500D, - 14375: 0x4FF3, - 14376: 0xF963, - 14377: 0x57F9, - 14378: 0x5F98, - 14379: 0x62DC, - 14380: 0x6392, - 14381: 0x676F, - 14382: 0x6E43, - 14383: 0x7119, - 14384: 0x76C3, - 14385: 0x80CC, - 14386: 0x80DA, - 14387: 0x88F4, - 14388: 0x88F5, - 14389: 0x8919, - 14390: 0x8CE0, - 14391: 0x8F29, - 14392: 0x914D, - 14393: 0x966A, - 14394: 0x4F2F, - 14395: 0x4F70, - 14396: 0x5E1B, - 14397: 0x67CF, - 14398: 0x6822, - 14399: 0x767D, - 14400: 0x767E, - 14401: 0x9B44, - 14402: 0x5E61, - 14403: 0x6A0A, - 14404: 0x7169, - 14405: 0x71D4, - 14406: 0x756A, - 14407: 0xF964, - 14408: 0x7E41, - 14409: 0x8543, - 14410: 0x85E9, - 14411: 0x98DC, - 14412: 0x4F10, - 14413: 0x7B4F, - 14414: 0x7F70, - 14415: 0x95A5, - 14416: 0x51E1, - 14417: 0x5E06, - 14418: 0x68B5, - 14419: 0x6C3E, - 14420: 0x6C4E, - 14421: 0x6CDB, - 14422: 0x72AF, - 14423: 0x7BC4, - 14424: 0x8303, - 14425: 0x6CD5, - 14426: 0x743A, - 14427: 0x50FB, - 14428: 0x5288, - 14429: 0x58C1, - 14430: 0x64D8, - 14431: 0x6A97, - 14432: 0x74A7, - 14433: 0x7656, - 14434: 0x78A7, - 14435: 0x8617, - 14436: 0x95E2, - 14437: 0x9739, - 14438: 0xF965, - 14439: 0x535E, - 14440: 0x5F01, - 14441: 0x8B8A, - 14442: 0x8FA8, - 14443: 0x8FAF, - 14444: 0x908A, - 14445: 0x5225, - 14446: 0x77A5, - 14447: 0x9C49, - 14448: 0x9F08, - 14449: 0x4E19, - 14450: 0x5002, - 14451: 0x5175, - 14452: 0x5C5B, - 14453: 0x5E77, - 14454: 0x661E, - 14455: 0x663A, - 14456: 0x67C4, - 14457: 0x68C5, - 14458: 0x70B3, - 14459: 0x7501, - 14460: 0x75C5, - 14461: 0x79C9, - 14462: 0x7ADD, - 14463: 0x8F27, - 14464: 0x9920, - 14465: 0x9A08, - 14466: 0x4FDD, - 14467: 0x5821, - 14468: 0x5831, - 14469: 0x5BF6, - 14470: 0x666E, - 14471: 0x6B65, - 14472: 0x6D11, - 14473: 0x6E7A, - 14474: 0x6F7D, - 14475: 0x73E4, - 14476: 0x752B, - 14477: 0x83E9, - 14478: 0x88DC, - 14479: 0x8913, - 14480: 0x8B5C, - 14481: 0x8F14, - 14482: 0x4F0F, - 14483: 0x50D5, - 14484: 0x5310, - 14485: 0x535C, - 14486: 0x5B93, - 14487: 0x5FA9, - 14488: 0x670D, - 14489: 0x798F, - 14490: 0x8179, - 14491: 0x832F, - 14492: 0x8514, - 14493: 0x8907, - 14494: 0x8986, - 14495: 0x8F39, - 14496: 0x8F3B, - 14497: 0x99A5, - 14498: 0x9C12, - 14499: 0x672C, - 14500: 0x4E76, - 14501: 0x4FF8, - 14502: 0x5949, - 14503: 0x5C01, - 14504: 0x5CEF, - 14505: 0x5CF0, - 14506: 0x6367, - 14507: 0x68D2, - 14508: 0x70FD, - 14509: 0x71A2, - 14510: 0x742B, - 14511: 0x7E2B, - 14512: 0x84EC, - 14513: 0x8702, - 14514: 0x9022, - 14515: 0x92D2, - 14516: 0x9CF3, - 14517: 0x4E0D, - 14518: 0x4ED8, - 14519: 0x4FEF, - 14520: 0x5085, - 14521: 0x5256, - 14522: 0x526F, - 14523: 0x5426, - 14524: 0x5490, - 14525: 0x57E0, - 14526: 0x592B, - 14527: 0x5A66, - 14528: 0x5B5A, - 14529: 0x5B75, - 14530: 0x5BCC, - 14531: 0x5E9C, - 14532: 0xF966, - 14533: 0x6276, - 14534: 0x6577, - 14535: 0x65A7, - 14536: 0x6D6E, - 14537: 0x6EA5, - 14538: 0x7236, - 14539: 0x7B26, - 14540: 0x7C3F, - 14541: 0x7F36, - 14542: 0x8150, - 14543: 0x8151, - 14544: 0x819A, - 14545: 0x8240, - 14546: 0x8299, - 14547: 0x83A9, - 14548: 0x8A03, - 14549: 0x8CA0, - 14550: 0x8CE6, - 14551: 0x8CFB, - 14552: 0x8D74, - 14553: 0x8DBA, - 14554: 0x90E8, - 14555: 0x91DC, - 14556: 0x961C, - 14557: 0x9644, - 14558: 0x99D9, - 14559: 0x9CE7, - 14560: 0x5317, - 14561: 0x5206, - 14562: 0x5429, - 14563: 0x5674, - 14564: 0x58B3, - 14565: 0x5954, - 14566: 0x596E, - 14567: 0x5FFF, - 14568: 0x61A4, - 14569: 0x626E, - 14570: 0x6610, - 14571: 0x6C7E, - 14572: 0x711A, - 14573: 0x76C6, - 14574: 0x7C89, - 14575: 0x7CDE, - 14576: 0x7D1B, - 14577: 0x82AC, - 14578: 0x8CC1, - 14579: 0x96F0, - 14580: 0xF967, - 14581: 0x4F5B, - 14582: 0x5F17, - 14583: 0x5F7F, - 14584: 0x62C2, - 14585: 0x5D29, - 14586: 0x670B, - 14587: 0x68DA, - 14588: 0x787C, - 14589: 0x7E43, - 14590: 0x9D6C, - 14591: 0x4E15, - 14592: 0x5099, - 14593: 0x5315, - 14594: 0x532A, - 14595: 0x5351, - 14596: 0x5983, - 14597: 0x5A62, - 14598: 0x5E87, - 14599: 0x60B2, - 14600: 0x618A, - 14601: 0x6249, - 14602: 0x6279, - 14603: 0x6590, - 14604: 0x6787, - 14605: 0x69A7, - 14606: 0x6BD4, - 14607: 0x6BD6, - 14608: 0x6BD7, - 14609: 0x6BD8, - 14610: 0x6CB8, - 14611: 0xF968, - 14612: 0x7435, - 14613: 0x75FA, - 14614: 0x7812, - 14615: 0x7891, - 14616: 0x79D5, - 14617: 0x79D8, - 14618: 0x7C83, - 14619: 0x7DCB, - 14620: 0x7FE1, - 14621: 0x80A5, - 14622: 0x813E, - 14623: 0x81C2, - 14624: 0x83F2, - 14625: 0x871A, - 14626: 0x88E8, - 14627: 0x8AB9, - 14628: 0x8B6C, - 14629: 0x8CBB, - 14630: 0x9119, - 14631: 0x975E, - 14632: 0x98DB, - 14633: 0x9F3B, - 14634: 0x56AC, - 14635: 0x5B2A, - 14636: 0x5F6C, - 14637: 0x658C, - 14638: 0x6AB3, - 14639: 0x6BAF, - 14640: 0x6D5C, - 14641: 0x6FF1, - 14642: 0x7015, - 14643: 0x725D, - 14644: 0x73AD, - 14645: 0x8CA7, - 14646: 0x8CD3, - 14647: 0x983B, - 14648: 0x6191, - 14649: 0x6C37, - 14650: 0x8058, - 14651: 0x9A01, - 14652: 0x4E4D, - 14653: 0x4E8B, - 14654: 0x4E9B, - 14655: 0x4ED5, - 14656: 0x4F3A, - 14657: 0x4F3C, - 14658: 0x4F7F, - 14659: 0x4FDF, - 14660: 0x50FF, - 14661: 0x53F2, - 14662: 0x53F8, - 14663: 0x5506, - 14664: 0x55E3, - 14665: 0x56DB, - 14666: 0x58EB, - 14667: 0x5962, - 14668: 0x5A11, - 14669: 0x5BEB, - 14670: 0x5BFA, - 14671: 0x5C04, - 14672: 0x5DF3, - 14673: 0x5E2B, - 14674: 0x5F99, - 14675: 0x601D, - 14676: 0x6368, - 14677: 0x659C, - 14678: 0x65AF, - 14679: 0x67F6, - 14680: 0x67FB, - 14681: 0x68AD, - 14682: 0x6B7B, - 14683: 0x6C99, - 14684: 0x6CD7, - 14685: 0x6E23, - 14686: 0x7009, - 14687: 0x7345, - 14688: 0x7802, - 14689: 0x793E, - 14690: 0x7940, - 14691: 0x7960, - 14692: 0x79C1, - 14693: 0x7BE9, - 14694: 0x7D17, - 14695: 0x7D72, - 14696: 0x8086, - 14697: 0x820D, - 14698: 0x838E, - 14699: 0x84D1, - 14700: 0x86C7, - 14701: 0x88DF, - 14702: 0x8A50, - 14703: 0x8A5E, - 14704: 0x8B1D, - 14705: 0x8CDC, - 14706: 0x8D66, - 14707: 0x8FAD, - 14708: 0x90AA, - 14709: 0x98FC, - 14710: 0x99DF, - 14711: 0x9E9D, - 14712: 0x524A, - 14713: 0xF969, - 14714: 0x6714, - 14715: 0xF96A, - 14716: 0x5098, - 14717: 0x522A, - 14718: 0x5C71, - 14719: 0x6563, - 14720: 0x6C55, - 14721: 0x73CA, - 14722: 0x7523, - 14723: 0x759D, - 14724: 0x7B97, - 14725: 0x849C, - 14726: 0x9178, - 14727: 0x9730, - 14728: 0x4E77, - 14729: 0x6492, - 14730: 0x6BBA, - 14731: 0x715E, - 14732: 0x85A9, - 14733: 0x4E09, - 14734: 0xF96B, - 14735: 0x6749, - 14736: 0x68EE, - 14737: 0x6E17, - 14738: 0x829F, - 14739: 0x8518, - 14740: 0x886B, - 14741: 0x63F7, - 14742: 0x6F81, - 14743: 0x9212, - 14744: 0x98AF, - 14745: 0x4E0A, - 14746: 0x50B7, - 14747: 0x50CF, - 14748: 0x511F, - 14749: 0x5546, - 14750: 0x55AA, - 14751: 0x5617, - 14752: 0x5B40, - 14753: 0x5C19, - 14754: 0x5CE0, - 14755: 0x5E38, - 14756: 0x5E8A, - 14757: 0x5EA0, - 14758: 0x5EC2, - 14759: 0x60F3, - 14760: 0x6851, - 14761: 0x6A61, - 14762: 0x6E58, - 14763: 0x723D, - 14764: 0x7240, - 14765: 0x72C0, - 14766: 0x76F8, - 14767: 0x7965, - 14768: 0x7BB1, - 14769: 0x7FD4, - 14770: 0x88F3, - 14771: 0x89F4, - 14772: 0x8A73, - 14773: 0x8C61, - 14774: 0x8CDE, - 14775: 0x971C, - 14776: 0x585E, - 14777: 0x74BD, - 14778: 0x8CFD, - 14779: 0x55C7, - 14780: 0xF96C, - 14781: 0x7A61, - 14782: 0x7D22, - 14783: 0x8272, - 14784: 0x7272, - 14785: 0x751F, - 14786: 0x7525, - 14787: 0xF96D, - 14788: 0x7B19, - 14789: 0x5885, - 14790: 0x58FB, - 14791: 0x5DBC, - 14792: 0x5E8F, - 14793: 0x5EB6, - 14794: 0x5F90, - 14795: 0x6055, - 14796: 0x6292, - 14797: 0x637F, - 14798: 0x654D, - 14799: 0x6691, - 14800: 0x66D9, - 14801: 0x66F8, - 14802: 0x6816, - 14803: 0x68F2, - 14804: 0x7280, - 14805: 0x745E, - 14806: 0x7B6E, - 14807: 0x7D6E, - 14808: 0x7DD6, - 14809: 0x7F72, - 14810: 0x80E5, - 14811: 0x8212, - 14812: 0x85AF, - 14813: 0x897F, - 14814: 0x8A93, - 14815: 0x901D, - 14816: 0x92E4, - 14817: 0x9ECD, - 14818: 0x9F20, - 14819: 0x5915, - 14820: 0x596D, - 14821: 0x5E2D, - 14822: 0x60DC, - 14823: 0x6614, - 14824: 0x6673, - 14825: 0x6790, - 14826: 0x6C50, - 14827: 0x6DC5, - 14828: 0x6F5F, - 14829: 0x77F3, - 14830: 0x78A9, - 14831: 0x84C6, - 14832: 0x91CB, - 14833: 0x932B, - 14834: 0x4ED9, - 14835: 0x50CA, - 14836: 0x5148, - 14837: 0x5584, - 14838: 0x5B0B, - 14839: 0x5BA3, - 14840: 0x6247, - 14841: 0x657E, - 14842: 0x65CB, - 14843: 0x6E32, - 14844: 0x717D, - 14845: 0x7401, - 14846: 0x7444, - 14847: 0x7487, - 14848: 0x74BF, - 14849: 0x766C, - 14850: 0x79AA, - 14851: 0x7DDA, - 14852: 0x7E55, - 14853: 0x7FA8, - 14854: 0x817A, - 14855: 0x81B3, - 14856: 0x8239, - 14857: 0x861A, - 14858: 0x87EC, - 14859: 0x8A75, - 14860: 0x8DE3, - 14861: 0x9078, - 14862: 0x9291, - 14863: 0x9425, - 14864: 0x994D, - 14865: 0x9BAE, - 14866: 0x5368, - 14867: 0x5C51, - 14868: 0x6954, - 14869: 0x6CC4, - 14870: 0x6D29, - 14871: 0x6E2B, - 14872: 0x820C, - 14873: 0x859B, - 14874: 0x893B, - 14875: 0x8A2D, - 14876: 0x8AAA, - 14877: 0x96EA, - 14878: 0x9F67, - 14879: 0x5261, - 14880: 0x66B9, - 14881: 0x6BB2, - 14882: 0x7E96, - 14883: 0x87FE, - 14884: 0x8D0D, - 14885: 0x9583, - 14886: 0x965D, - 14887: 0x651D, - 14888: 0x6D89, - 14889: 0x71EE, - 14890: 0xF96E, - 14891: 0x57CE, - 14892: 0x59D3, - 14893: 0x5BAC, - 14894: 0x6027, - 14895: 0x60FA, - 14896: 0x6210, - 14897: 0x661F, - 14898: 0x665F, - 14899: 0x7329, - 14900: 0x73F9, - 14901: 0x76DB, - 14902: 0x7701, - 14903: 0x7B6C, - 14904: 0x8056, - 14905: 0x8072, - 14906: 0x8165, - 14907: 0x8AA0, - 14908: 0x9192, - 14909: 0x4E16, - 14910: 0x52E2, - 14911: 0x6B72, - 14912: 0x6D17, - 14913: 0x7A05, - 14914: 0x7B39, - 14915: 0x7D30, - 14916: 0xF96F, - 14917: 0x8CB0, - 14918: 0x53EC, - 14919: 0x562F, - 14920: 0x5851, - 14921: 0x5BB5, - 14922: 0x5C0F, - 14923: 0x5C11, - 14924: 0x5DE2, - 14925: 0x6240, - 14926: 0x6383, - 14927: 0x6414, - 14928: 0x662D, - 14929: 0x68B3, - 14930: 0x6CBC, - 14931: 0x6D88, - 14932: 0x6EAF, - 14933: 0x701F, - 14934: 0x70A4, - 14935: 0x71D2, - 14936: 0x7526, - 14937: 0x758F, - 14938: 0x758E, - 14939: 0x7619, - 14940: 0x7B11, - 14941: 0x7BE0, - 14942: 0x7C2B, - 14943: 0x7D20, - 14944: 0x7D39, - 14945: 0x852C, - 14946: 0x856D, - 14947: 0x8607, - 14948: 0x8A34, - 14949: 0x900D, - 14950: 0x9061, - 14951: 0x90B5, - 14952: 0x92B7, - 14953: 0x97F6, - 14954: 0x9A37, - 14955: 0x4FD7, - 14956: 0x5C6C, - 14957: 0x675F, - 14958: 0x6D91, - 14959: 0x7C9F, - 14960: 0x7E8C, - 14961: 0x8B16, - 14962: 0x8D16, - 14963: 0x901F, - 14964: 0x5B6B, - 14965: 0x5DFD, - 14966: 0x640D, - 14967: 0x84C0, - 14968: 0x905C, - 14969: 0x98E1, - 14970: 0x7387, - 14971: 0x5B8B, - 14972: 0x609A, - 14973: 0x677E, - 14974: 0x6DDE, - 14975: 0x8A1F, - 14976: 0x8AA6, - 14977: 0x9001, - 14978: 0x980C, - 14979: 0x5237, - 14980: 0xF970, - 14981: 0x7051, - 14982: 0x788E, - 14983: 0x9396, - 14984: 0x8870, - 14985: 0x91D7, - 14986: 0x4FEE, - 14987: 0x53D7, - 14988: 0x55FD, - 14989: 0x56DA, - 14990: 0x5782, - 14991: 0x58FD, - 14992: 0x5AC2, - 14993: 0x5B88, - 14994: 0x5CAB, - 14995: 0x5CC0, - 14996: 0x5E25, - 14997: 0x6101, - 14998: 0x620D, - 14999: 0x624B, - 15000: 0x6388, - 15001: 0x641C, - 15002: 0x6536, - 15003: 0x6578, - 15004: 0x6A39, - 15005: 0x6B8A, - 15006: 0x6C34, - 15007: 0x6D19, - 15008: 0x6F31, - 15009: 0x71E7, - 15010: 0x72E9, - 15011: 0x7378, - 15012: 0x7407, - 15013: 0x74B2, - 15014: 0x7626, - 15015: 0x7761, - 15016: 0x79C0, - 15017: 0x7A57, - 15018: 0x7AEA, - 15019: 0x7CB9, - 15020: 0x7D8F, - 15021: 0x7DAC, - 15022: 0x7E61, - 15023: 0x7F9E, - 15024: 0x8129, - 15025: 0x8331, - 15026: 0x8490, - 15027: 0x84DA, - 15028: 0x85EA, - 15029: 0x8896, - 15030: 0x8AB0, - 15031: 0x8B90, - 15032: 0x8F38, - 15033: 0x9042, - 15034: 0x9083, - 15035: 0x916C, - 15036: 0x9296, - 15037: 0x92B9, - 15038: 0x968B, - 15039: 0x96A7, - 15040: 0x96A8, - 15041: 0x96D6, - 15042: 0x9700, - 15043: 0x9808, - 15044: 0x9996, - 15045: 0x9AD3, - 15046: 0x9B1A, - 15047: 0x53D4, - 15048: 0x587E, - 15049: 0x5919, - 15050: 0x5B70, - 15051: 0x5BBF, - 15052: 0x6DD1, - 15053: 0x6F5A, - 15054: 0x719F, - 15055: 0x7421, - 15056: 0x74B9, - 15057: 0x8085, - 15058: 0x83FD, - 15059: 0x5DE1, - 15060: 0x5F87, - 15061: 0x5FAA, - 15062: 0x6042, - 15063: 0x65EC, - 15064: 0x6812, - 15065: 0x696F, - 15066: 0x6A53, - 15067: 0x6B89, - 15068: 0x6D35, - 15069: 0x6DF3, - 15070: 0x73E3, - 15071: 0x76FE, - 15072: 0x77AC, - 15073: 0x7B4D, - 15074: 0x7D14, - 15075: 0x8123, - 15076: 0x821C, - 15077: 0x8340, - 15078: 0x84F4, - 15079: 0x8563, - 15080: 0x8A62, - 15081: 0x8AC4, - 15082: 0x9187, - 15083: 0x931E, - 15084: 0x9806, - 15085: 0x99B4, - 15086: 0x620C, - 15087: 0x8853, - 15088: 0x8FF0, - 15089: 0x9265, - 15090: 0x5D07, - 15091: 0x5D27, - 15092: 0x5D69, - 15093: 0x745F, - 15094: 0x819D, - 15095: 0x8768, - 15096: 0x6FD5, - 15097: 0x62FE, - 15098: 0x7FD2, - 15099: 0x8936, - 15100: 0x8972, - 15101: 0x4E1E, - 15102: 0x4E58, - 15103: 0x50E7, - 15104: 0x52DD, - 15105: 0x5347, - 15106: 0x627F, - 15107: 0x6607, - 15108: 0x7E69, - 15109: 0x8805, - 15110: 0x965E, - 15111: 0x4F8D, - 15112: 0x5319, - 15113: 0x5636, - 15114: 0x59CB, - 15115: 0x5AA4, - 15116: 0x5C38, - 15117: 0x5C4E, - 15118: 0x5C4D, - 15119: 0x5E02, - 15120: 0x5F11, - 15121: 0x6043, - 15122: 0x65BD, - 15123: 0x662F, - 15124: 0x6642, - 15125: 0x67BE, - 15126: 0x67F4, - 15127: 0x731C, - 15128: 0x77E2, - 15129: 0x793A, - 15130: 0x7FC5, - 15131: 0x8494, - 15132: 0x84CD, - 15133: 0x8996, - 15134: 0x8A66, - 15135: 0x8A69, - 15136: 0x8AE1, - 15137: 0x8C55, - 15138: 0x8C7A, - 15139: 0x57F4, - 15140: 0x5BD4, - 15141: 0x5F0F, - 15142: 0x606F, - 15143: 0x62ED, - 15144: 0x690D, - 15145: 0x6B96, - 15146: 0x6E5C, - 15147: 0x7184, - 15148: 0x7BD2, - 15149: 0x8755, - 15150: 0x8B58, - 15151: 0x8EFE, - 15152: 0x98DF, - 15153: 0x98FE, - 15154: 0x4F38, - 15155: 0x4F81, - 15156: 0x4FE1, - 15157: 0x547B, - 15158: 0x5A20, - 15159: 0x5BB8, - 15160: 0x613C, - 15161: 0x65B0, - 15162: 0x6668, - 15163: 0x71FC, - 15164: 0x7533, - 15165: 0x795E, - 15166: 0x7D33, - 15167: 0x814E, - 15168: 0x81E3, - 15169: 0x8398, - 15170: 0x85AA, - 15171: 0x85CE, - 15172: 0x8703, - 15173: 0x8A0A, - 15174: 0x8EAB, - 15175: 0x8F9B, - 15176: 0xF971, - 15177: 0x8FC5, - 15178: 0x5931, - 15179: 0x5BA4, - 15180: 0x5BE6, - 15181: 0x6089, - 15182: 0x5BE9, - 15183: 0x5C0B, - 15184: 0x5FC3, - 15185: 0x6C81, - 15186: 0xF972, - 15187: 0x6DF1, - 15188: 0x700B, - 15189: 0x751A, - 15190: 0x82AF, - 15191: 0x8AF6, - 15192: 0x4EC0, - 15193: 0x5341, - 15194: 0xF973, - 15195: 0x96D9, - 15196: 0x6C0F, - 15197: 0x4E9E, - 15198: 0x4FC4, - 15199: 0x5152, - 15200: 0x555E, - 15201: 0x5A25, - 15202: 0x5CE8, - 15203: 0x6211, - 15204: 0x7259, - 15205: 0x82BD, - 15206: 0x83AA, - 15207: 0x86FE, - 15208: 0x8859, - 15209: 0x8A1D, - 15210: 0x963F, - 15211: 0x96C5, - 15212: 0x9913, - 15213: 0x9D09, - 15214: 0x9D5D, - 15215: 0x580A, - 15216: 0x5CB3, - 15217: 0x5DBD, - 15218: 0x5E44, - 15219: 0x60E1, - 15220: 0x6115, - 15221: 0x63E1, - 15222: 0x6A02, - 15223: 0x6E25, - 15224: 0x9102, - 15225: 0x9354, - 15226: 0x984E, - 15227: 0x9C10, - 15228: 0x9F77, - 15229: 0x5B89, - 15230: 0x5CB8, - 15231: 0x6309, - 15232: 0x664F, - 15233: 0x6848, - 15234: 0x773C, - 15235: 0x96C1, - 15236: 0x978D, - 15237: 0x9854, - 15238: 0x9B9F, - 15239: 0x65A1, - 15240: 0x8B01, - 15241: 0x8ECB, - 15242: 0x95BC, - 15243: 0x5535, - 15244: 0x5CA9, - 15245: 0x5DD6, - 15246: 0x5EB5, - 15247: 0x6697, - 15248: 0x764C, - 15249: 0x83F4, - 15250: 0x95C7, - 15251: 0x58D3, - 15252: 0x62BC, - 15253: 0x72CE, - 15254: 0x9D28, - 15255: 0x4EF0, - 15256: 0x592E, - 15257: 0x600F, - 15258: 0x663B, - 15259: 0x6B83, - 15260: 0x79E7, - 15261: 0x9D26, - 15262: 0x5393, - 15263: 0x54C0, - 15264: 0x57C3, - 15265: 0x5D16, - 15266: 0x611B, - 15267: 0x66D6, - 15268: 0x6DAF, - 15269: 0x788D, - 15270: 0x827E, - 15271: 0x9698, - 15272: 0x9744, - 15273: 0x5384, - 15274: 0x627C, - 15275: 0x6396, - 15276: 0x6DB2, - 15277: 0x7E0A, - 15278: 0x814B, - 15279: 0x984D, - 15280: 0x6AFB, - 15281: 0x7F4C, - 15282: 0x9DAF, - 15283: 0x9E1A, - 15284: 0x4E5F, - 15285: 0x503B, - 15286: 0x51B6, - 15287: 0x591C, - 15288: 0x60F9, - 15289: 0x63F6, - 15290: 0x6930, - 15291: 0x723A, - 15292: 0x8036, - 15293: 0xF974, - 15294: 0x91CE, - 15295: 0x5F31, - 15296: 0xF975, - 15297: 0xF976, - 15298: 0x7D04, - 15299: 0x82E5, - 15300: 0x846F, - 15301: 0x84BB, - 15302: 0x85E5, - 15303: 0x8E8D, - 15304: 0xF977, - 15305: 0x4F6F, - 15306: 0xF978, - 15307: 0xF979, - 15308: 0x58E4, - 15309: 0x5B43, - 15310: 0x6059, - 15311: 0x63DA, - 15312: 0x6518, - 15313: 0x656D, - 15314: 0x6698, - 15315: 0xF97A, - 15316: 0x694A, - 15317: 0x6A23, - 15318: 0x6D0B, - 15319: 0x7001, - 15320: 0x716C, - 15321: 0x75D2, - 15322: 0x760D, - 15323: 0x79B3, - 15324: 0x7A70, - 15325: 0xF97B, - 15326: 0x7F8A, - 15327: 0xF97C, - 15328: 0x8944, - 15329: 0xF97D, - 15330: 0x8B93, - 15331: 0x91C0, - 15332: 0x967D, - 15333: 0xF97E, - 15334: 0x990A, - 15335: 0x5704, - 15336: 0x5FA1, - 15337: 0x65BC, - 15338: 0x6F01, - 15339: 0x7600, - 15340: 0x79A6, - 15341: 0x8A9E, - 15342: 0x99AD, - 15343: 0x9B5A, - 15344: 0x9F6C, - 15345: 0x5104, - 15346: 0x61B6, - 15347: 0x6291, - 15348: 0x6A8D, - 15349: 0x81C6, - 15350: 0x5043, - 15351: 0x5830, - 15352: 0x5F66, - 15353: 0x7109, - 15354: 0x8A00, - 15355: 0x8AFA, - 15356: 0x5B7C, - 15357: 0x8616, - 15358: 0x4FFA, - 15359: 0x513C, - 15360: 0x56B4, - 15361: 0x5944, - 15362: 0x63A9, - 15363: 0x6DF9, - 15364: 0x5DAA, - 15365: 0x696D, - 15366: 0x5186, - 15367: 0x4E88, - 15368: 0x4F59, - 15369: 0xF97F, - 15370: 0xF980, - 15371: 0xF981, - 15372: 0x5982, - 15373: 0xF982, - 15374: 0xF983, - 15375: 0x6B5F, - 15376: 0x6C5D, - 15377: 0xF984, - 15378: 0x74B5, - 15379: 0x7916, - 15380: 0xF985, - 15381: 0x8207, - 15382: 0x8245, - 15383: 0x8339, - 15384: 0x8F3F, - 15385: 0x8F5D, - 15386: 0xF986, - 15387: 0x9918, - 15388: 0xF987, - 15389: 0xF988, - 15390: 0xF989, - 15391: 0x4EA6, - 15392: 0xF98A, - 15393: 0x57DF, - 15394: 0x5F79, - 15395: 0x6613, - 15396: 0xF98B, - 15397: 0xF98C, - 15398: 0x75AB, - 15399: 0x7E79, - 15400: 0x8B6F, - 15401: 0xF98D, - 15402: 0x9006, - 15403: 0x9A5B, - 15404: 0x56A5, - 15405: 0x5827, - 15406: 0x59F8, - 15407: 0x5A1F, - 15408: 0x5BB4, - 15409: 0xF98E, - 15410: 0x5EF6, - 15411: 0xF98F, - 15412: 0xF990, - 15413: 0x6350, - 15414: 0x633B, - 15415: 0xF991, - 15416: 0x693D, - 15417: 0x6C87, - 15418: 0x6CBF, - 15419: 0x6D8E, - 15420: 0x6D93, - 15421: 0x6DF5, - 15422: 0x6F14, - 15423: 0xF992, - 15424: 0x70DF, - 15425: 0x7136, - 15426: 0x7159, - 15427: 0xF993, - 15428: 0x71C3, - 15429: 0x71D5, - 15430: 0xF994, - 15431: 0x784F, - 15432: 0x786F, - 15433: 0xF995, - 15434: 0x7B75, - 15435: 0x7DE3, - 15436: 0xF996, - 15437: 0x7E2F, - 15438: 0xF997, - 15439: 0x884D, - 15440: 0x8EDF, - 15441: 0xF998, - 15442: 0xF999, - 15443: 0xF99A, - 15444: 0x925B, - 15445: 0xF99B, - 15446: 0x9CF6, - 15447: 0xF99C, - 15448: 0xF99D, - 15449: 0xF99E, - 15450: 0x6085, - 15451: 0x6D85, - 15452: 0xF99F, - 15453: 0x71B1, - 15454: 0xF9A0, - 15455: 0xF9A1, - 15456: 0x95B1, - 15457: 0x53AD, - 15458: 0xF9A2, - 15459: 0xF9A3, - 15460: 0xF9A4, - 15461: 0x67D3, - 15462: 0xF9A5, - 15463: 0x708E, - 15464: 0x7130, - 15465: 0x7430, - 15466: 0x8276, - 15467: 0x82D2, - 15468: 0xF9A6, - 15469: 0x95BB, - 15470: 0x9AE5, - 15471: 0x9E7D, - 15472: 0x66C4, - 15473: 0xF9A7, - 15474: 0x71C1, - 15475: 0x8449, - 15476: 0xF9A8, - 15477: 0xF9A9, - 15478: 0x584B, - 15479: 0xF9AA, - 15480: 0xF9AB, - 15481: 0x5DB8, - 15482: 0x5F71, - 15483: 0xF9AC, - 15484: 0x6620, - 15485: 0x668E, - 15486: 0x6979, - 15487: 0x69AE, - 15488: 0x6C38, - 15489: 0x6CF3, - 15490: 0x6E36, - 15491: 0x6F41, - 15492: 0x6FDA, - 15493: 0x701B, - 15494: 0x702F, - 15495: 0x7150, - 15496: 0x71DF, - 15497: 0x7370, - 15498: 0xF9AD, - 15499: 0x745B, - 15500: 0xF9AE, - 15501: 0x74D4, - 15502: 0x76C8, - 15503: 0x7A4E, - 15504: 0x7E93, - 15505: 0xF9AF, - 15506: 0xF9B0, - 15507: 0x82F1, - 15508: 0x8A60, - 15509: 0x8FCE, - 15510: 0xF9B1, - 15511: 0x9348, - 15512: 0xF9B2, - 15513: 0x9719, - 15514: 0xF9B3, - 15515: 0xF9B4, - 15516: 0x4E42, - 15517: 0x502A, - 15518: 0xF9B5, - 15519: 0x5208, - 15520: 0x53E1, - 15521: 0x66F3, - 15522: 0x6C6D, - 15523: 0x6FCA, - 15524: 0x730A, - 15525: 0x777F, - 15526: 0x7A62, - 15527: 0x82AE, - 15528: 0x85DD, - 15529: 0x8602, - 15530: 0xF9B6, - 15531: 0x88D4, - 15532: 0x8A63, - 15533: 0x8B7D, - 15534: 0x8C6B, - 15535: 0xF9B7, - 15536: 0x92B3, - 15537: 0xF9B8, - 15538: 0x9713, - 15539: 0x9810, - 15540: 0x4E94, - 15541: 0x4F0D, - 15542: 0x4FC9, - 15543: 0x50B2, - 15544: 0x5348, - 15545: 0x543E, - 15546: 0x5433, - 15547: 0x55DA, - 15548: 0x5862, - 15549: 0x58BA, - 15550: 0x5967, - 15551: 0x5A1B, - 15552: 0x5BE4, - 15553: 0x609F, - 15554: 0xF9B9, - 15555: 0x61CA, - 15556: 0x6556, - 15557: 0x65FF, - 15558: 0x6664, - 15559: 0x68A7, - 15560: 0x6C5A, - 15561: 0x6FB3, - 15562: 0x70CF, - 15563: 0x71AC, - 15564: 0x7352, - 15565: 0x7B7D, - 15566: 0x8708, - 15567: 0x8AA4, - 15568: 0x9C32, - 15569: 0x9F07, - 15570: 0x5C4B, - 15571: 0x6C83, - 15572: 0x7344, - 15573: 0x7389, - 15574: 0x923A, - 15575: 0x6EAB, - 15576: 0x7465, - 15577: 0x761F, - 15578: 0x7A69, - 15579: 0x7E15, - 15580: 0x860A, - 15581: 0x5140, - 15582: 0x58C5, - 15583: 0x64C1, - 15584: 0x74EE, - 15585: 0x7515, - 15586: 0x7670, - 15587: 0x7FC1, - 15588: 0x9095, - 15589: 0x96CD, - 15590: 0x9954, - 15591: 0x6E26, - 15592: 0x74E6, - 15593: 0x7AA9, - 15594: 0x7AAA, - 15595: 0x81E5, - 15596: 0x86D9, - 15597: 0x8778, - 15598: 0x8A1B, - 15599: 0x5A49, - 15600: 0x5B8C, - 15601: 0x5B9B, - 15602: 0x68A1, - 15603: 0x6900, - 15604: 0x6D63, - 15605: 0x73A9, - 15606: 0x7413, - 15607: 0x742C, - 15608: 0x7897, - 15609: 0x7DE9, - 15610: 0x7FEB, - 15611: 0x8118, - 15612: 0x8155, - 15613: 0x839E, - 15614: 0x8C4C, - 15615: 0x962E, - 15616: 0x9811, - 15617: 0x66F0, - 15618: 0x5F80, - 15619: 0x65FA, - 15620: 0x6789, - 15621: 0x6C6A, - 15622: 0x738B, - 15623: 0x502D, - 15624: 0x5A03, - 15625: 0x6B6A, - 15626: 0x77EE, - 15627: 0x5916, - 15628: 0x5D6C, - 15629: 0x5DCD, - 15630: 0x7325, - 15631: 0x754F, - 15632: 0xF9BA, - 15633: 0xF9BB, - 15634: 0x50E5, - 15635: 0x51F9, - 15636: 0x582F, - 15637: 0x592D, - 15638: 0x5996, - 15639: 0x59DA, - 15640: 0x5BE5, - 15641: 0xF9BC, - 15642: 0xF9BD, - 15643: 0x5DA2, - 15644: 0x62D7, - 15645: 0x6416, - 15646: 0x6493, - 15647: 0x64FE, - 15648: 0xF9BE, - 15649: 0x66DC, - 15650: 0xF9BF, - 15651: 0x6A48, - 15652: 0xF9C0, - 15653: 0x71FF, - 15654: 0x7464, - 15655: 0xF9C1, - 15656: 0x7A88, - 15657: 0x7AAF, - 15658: 0x7E47, - 15659: 0x7E5E, - 15660: 0x8000, - 15661: 0x8170, - 15662: 0xF9C2, - 15663: 0x87EF, - 15664: 0x8981, - 15665: 0x8B20, - 15666: 0x9059, - 15667: 0xF9C3, - 15668: 0x9080, - 15669: 0x9952, - 15670: 0x617E, - 15671: 0x6B32, - 15672: 0x6D74, - 15673: 0x7E1F, - 15674: 0x8925, - 15675: 0x8FB1, - 15676: 0x4FD1, - 15677: 0x50AD, - 15678: 0x5197, - 15679: 0x52C7, - 15680: 0x57C7, - 15681: 0x5889, - 15682: 0x5BB9, - 15683: 0x5EB8, - 15684: 0x6142, - 15685: 0x6995, - 15686: 0x6D8C, - 15687: 0x6E67, - 15688: 0x6EB6, - 15689: 0x7194, - 15690: 0x7462, - 15691: 0x7528, - 15692: 0x752C, - 15693: 0x8073, - 15694: 0x8338, - 15695: 0x84C9, - 15696: 0x8E0A, - 15697: 0x9394, - 15698: 0x93DE, - 15699: 0xF9C4, - 15700: 0x4E8E, - 15701: 0x4F51, - 15702: 0x5076, - 15703: 0x512A, - 15704: 0x53C8, - 15705: 0x53CB, - 15706: 0x53F3, - 15707: 0x5B87, - 15708: 0x5BD3, - 15709: 0x5C24, - 15710: 0x611A, - 15711: 0x6182, - 15712: 0x65F4, - 15713: 0x725B, - 15714: 0x7397, - 15715: 0x7440, - 15716: 0x76C2, - 15717: 0x7950, - 15718: 0x7991, - 15719: 0x79B9, - 15720: 0x7D06, - 15721: 0x7FBD, - 15722: 0x828B, - 15723: 0x85D5, - 15724: 0x865E, - 15725: 0x8FC2, - 15726: 0x9047, - 15727: 0x90F5, - 15728: 0x91EA, - 15729: 0x9685, - 15730: 0x96E8, - 15731: 0x96E9, - 15732: 0x52D6, - 15733: 0x5F67, - 15734: 0x65ED, - 15735: 0x6631, - 15736: 0x682F, - 15737: 0x715C, - 15738: 0x7A36, - 15739: 0x90C1, - 15740: 0x980A, - 15741: 0x4E91, - 15742: 0xF9C5, - 15743: 0x6A52, - 15744: 0x6B9E, - 15745: 0x6F90, - 15746: 0x7189, - 15747: 0x8018, - 15748: 0x82B8, - 15749: 0x8553, - 15750: 0x904B, - 15751: 0x9695, - 15752: 0x96F2, - 15753: 0x97FB, - 15754: 0x851A, - 15755: 0x9B31, - 15756: 0x4E90, - 15757: 0x718A, - 15758: 0x96C4, - 15759: 0x5143, - 15760: 0x539F, - 15761: 0x54E1, - 15762: 0x5713, - 15763: 0x5712, - 15764: 0x57A3, - 15765: 0x5A9B, - 15766: 0x5AC4, - 15767: 0x5BC3, - 15768: 0x6028, - 15769: 0x613F, - 15770: 0x63F4, - 15771: 0x6C85, - 15772: 0x6D39, - 15773: 0x6E72, - 15774: 0x6E90, - 15775: 0x7230, - 15776: 0x733F, - 15777: 0x7457, - 15778: 0x82D1, - 15779: 0x8881, - 15780: 0x8F45, - 15781: 0x9060, - 15782: 0xF9C6, - 15783: 0x9662, - 15784: 0x9858, - 15785: 0x9D1B, - 15786: 0x6708, - 15787: 0x8D8A, - 15788: 0x925E, - 15789: 0x4F4D, - 15790: 0x5049, - 15791: 0x50DE, - 15792: 0x5371, - 15793: 0x570D, - 15794: 0x59D4, - 15795: 0x5A01, - 15796: 0x5C09, - 15797: 0x6170, - 15798: 0x6690, - 15799: 0x6E2D, - 15800: 0x7232, - 15801: 0x744B, - 15802: 0x7DEF, - 15803: 0x80C3, - 15804: 0x840E, - 15805: 0x8466, - 15806: 0x853F, - 15807: 0x875F, - 15808: 0x885B, - 15809: 0x8918, - 15810: 0x8B02, - 15811: 0x9055, - 15812: 0x97CB, - 15813: 0x9B4F, - 15814: 0x4E73, - 15815: 0x4F91, - 15816: 0x5112, - 15817: 0x516A, - 15818: 0xF9C7, - 15819: 0x552F, - 15820: 0x55A9, - 15821: 0x5B7A, - 15822: 0x5BA5, - 15823: 0x5E7C, - 15824: 0x5E7D, - 15825: 0x5EBE, - 15826: 0x60A0, - 15827: 0x60DF, - 15828: 0x6108, - 15829: 0x6109, - 15830: 0x63C4, - 15831: 0x6538, - 15832: 0x6709, - 15833: 0xF9C8, - 15834: 0x67D4, - 15835: 0x67DA, - 15836: 0xF9C9, - 15837: 0x6961, - 15838: 0x6962, - 15839: 0x6CB9, - 15840: 0x6D27, - 15841: 0xF9CA, - 15842: 0x6E38, - 15843: 0xF9CB, - 15844: 0x6FE1, - 15845: 0x7336, - 15846: 0x7337, - 15847: 0xF9CC, - 15848: 0x745C, - 15849: 0x7531, - 15850: 0xF9CD, - 15851: 0x7652, - 15852: 0xF9CE, - 15853: 0xF9CF, - 15854: 0x7DAD, - 15855: 0x81FE, - 15856: 0x8438, - 15857: 0x88D5, - 15858: 0x8A98, - 15859: 0x8ADB, - 15860: 0x8AED, - 15861: 0x8E30, - 15862: 0x8E42, - 15863: 0x904A, - 15864: 0x903E, - 15865: 0x907A, - 15866: 0x9149, - 15867: 0x91C9, - 15868: 0x936E, - 15869: 0xF9D0, - 15870: 0xF9D1, - 15871: 0x5809, - 15872: 0xF9D2, - 15873: 0x6BD3, - 15874: 0x8089, - 15875: 0x80B2, - 15876: 0xF9D3, - 15877: 0xF9D4, - 15878: 0x5141, - 15879: 0x596B, - 15880: 0x5C39, - 15881: 0xF9D5, - 15882: 0xF9D6, - 15883: 0x6F64, - 15884: 0x73A7, - 15885: 0x80E4, - 15886: 0x8D07, - 15887: 0xF9D7, - 15888: 0x9217, - 15889: 0x958F, - 15890: 0xF9D8, - 15891: 0xF9D9, - 15892: 0xF9DA, - 15893: 0xF9DB, - 15894: 0x807F, - 15895: 0x620E, - 15896: 0x701C, - 15897: 0x7D68, - 15898: 0x878D, - 15899: 0xF9DC, - 15900: 0x57A0, - 15901: 0x6069, - 15902: 0x6147, - 15903: 0x6BB7, - 15904: 0x8ABE, - 15905: 0x9280, - 15906: 0x96B1, - 15907: 0x4E59, - 15908: 0x541F, - 15909: 0x6DEB, - 15910: 0x852D, - 15911: 0x9670, - 15912: 0x97F3, - 15913: 0x98EE, - 15914: 0x63D6, - 15915: 0x6CE3, - 15916: 0x9091, - 15917: 0x51DD, - 15918: 0x61C9, - 15919: 0x81BA, - 15920: 0x9DF9, - 15921: 0x4F9D, - 15922: 0x501A, - 15923: 0x5100, - 15924: 0x5B9C, - 15925: 0x610F, - 15926: 0x61FF, - 15927: 0x64EC, - 15928: 0x6905, - 15929: 0x6BC5, - 15930: 0x7591, - 15931: 0x77E3, - 15932: 0x7FA9, - 15933: 0x8264, - 15934: 0x858F, - 15935: 0x87FB, - 15936: 0x8863, - 15937: 0x8ABC, - 15938: 0x8B70, - 15939: 0x91AB, - 15940: 0x4E8C, - 15941: 0x4EE5, - 15942: 0x4F0A, - 15943: 0xF9DD, - 15944: 0xF9DE, - 15945: 0x5937, - 15946: 0x59E8, - 15947: 0xF9DF, - 15948: 0x5DF2, - 15949: 0x5F1B, - 15950: 0x5F5B, - 15951: 0x6021, - 15952: 0xF9E0, - 15953: 0xF9E1, - 15954: 0xF9E2, - 15955: 0xF9E3, - 15956: 0x723E, - 15957: 0x73E5, - 15958: 0xF9E4, - 15959: 0x7570, - 15960: 0x75CD, - 15961: 0xF9E5, - 15962: 0x79FB, - 15963: 0xF9E6, - 15964: 0x800C, - 15965: 0x8033, - 15966: 0x8084, - 15967: 0x82E1, - 15968: 0x8351, - 15969: 0xF9E7, - 15970: 0xF9E8, - 15971: 0x8CBD, - 15972: 0x8CB3, - 15973: 0x9087, - 15974: 0xF9E9, - 15975: 0xF9EA, - 15976: 0x98F4, - 15977: 0x990C, - 15978: 0xF9EB, - 15979: 0xF9EC, - 15980: 0x7037, - 15981: 0x76CA, - 15982: 0x7FCA, - 15983: 0x7FCC, - 15984: 0x7FFC, - 15985: 0x8B1A, - 15986: 0x4EBA, - 15987: 0x4EC1, - 15988: 0x5203, - 15989: 0x5370, - 15990: 0xF9ED, - 15991: 0x54BD, - 15992: 0x56E0, - 15993: 0x59FB, - 15994: 0x5BC5, - 15995: 0x5F15, - 15996: 0x5FCD, - 15997: 0x6E6E, - 15998: 0xF9EE, - 15999: 0xF9EF, - 16000: 0x7D6A, - 16001: 0x8335, - 16002: 0xF9F0, - 16003: 0x8693, - 16004: 0x8A8D, - 16005: 0xF9F1, - 16006: 0x976D, - 16007: 0x9777, - 16008: 0xF9F2, - 16009: 0xF9F3, - 16010: 0x4E00, - 16011: 0x4F5A, - 16012: 0x4F7E, - 16013: 0x58F9, - 16014: 0x65E5, - 16015: 0x6EA2, - 16016: 0x9038, - 16017: 0x93B0, - 16018: 0x99B9, - 16019: 0x4EFB, - 16020: 0x58EC, - 16021: 0x598A, - 16022: 0x59D9, - 16023: 0x6041, - 16024: 0xF9F4, - 16025: 0xF9F5, - 16026: 0x7A14, - 16027: 0xF9F6, - 16028: 0x834F, - 16029: 0x8CC3, - 16030: 0x5165, - 16031: 0x5344, - 16032: 0xF9F7, - 16033: 0xF9F8, - 16034: 0xF9F9, - 16035: 0x4ECD, - 16036: 0x5269, - 16037: 0x5B55, - 16038: 0x82BF, - 16039: 0x4ED4, - 16040: 0x523A, - 16041: 0x54A8, - 16042: 0x59C9, - 16043: 0x59FF, - 16044: 0x5B50, - 16045: 0x5B57, - 16046: 0x5B5C, - 16047: 0x6063, - 16048: 0x6148, - 16049: 0x6ECB, - 16050: 0x7099, - 16051: 0x716E, - 16052: 0x7386, - 16053: 0x74F7, - 16054: 0x75B5, - 16055: 0x78C1, - 16056: 0x7D2B, - 16057: 0x8005, - 16058: 0x81EA, - 16059: 0x8328, - 16060: 0x8517, - 16061: 0x85C9, - 16062: 0x8AEE, - 16063: 0x8CC7, - 16064: 0x96CC, - 16065: 0x4F5C, - 16066: 0x52FA, - 16067: 0x56BC, - 16068: 0x65AB, - 16069: 0x6628, - 16070: 0x707C, - 16071: 0x70B8, - 16072: 0x7235, - 16073: 0x7DBD, - 16074: 0x828D, - 16075: 0x914C, - 16076: 0x96C0, - 16077: 0x9D72, - 16078: 0x5B71, - 16079: 0x68E7, - 16080: 0x6B98, - 16081: 0x6F7A, - 16082: 0x76DE, - 16083: 0x5C91, - 16084: 0x66AB, - 16085: 0x6F5B, - 16086: 0x7BB4, - 16087: 0x7C2A, - 16088: 0x8836, - 16089: 0x96DC, - 16090: 0x4E08, - 16091: 0x4ED7, - 16092: 0x5320, - 16093: 0x5834, - 16094: 0x58BB, - 16095: 0x58EF, - 16096: 0x596C, - 16097: 0x5C07, - 16098: 0x5E33, - 16099: 0x5E84, - 16100: 0x5F35, - 16101: 0x638C, - 16102: 0x66B2, - 16103: 0x6756, - 16104: 0x6A1F, - 16105: 0x6AA3, - 16106: 0x6B0C, - 16107: 0x6F3F, - 16108: 0x7246, - 16109: 0xF9FA, - 16110: 0x7350, - 16111: 0x748B, - 16112: 0x7AE0, - 16113: 0x7CA7, - 16114: 0x8178, - 16115: 0x81DF, - 16116: 0x81E7, - 16117: 0x838A, - 16118: 0x846C, - 16119: 0x8523, - 16120: 0x8594, - 16121: 0x85CF, - 16122: 0x88DD, - 16123: 0x8D13, - 16124: 0x91AC, - 16125: 0x9577, - 16126: 0x969C, - 16127: 0x518D, - 16128: 0x54C9, - 16129: 0x5728, - 16130: 0x5BB0, - 16131: 0x624D, - 16132: 0x6750, - 16133: 0x683D, - 16134: 0x6893, - 16135: 0x6E3D, - 16136: 0x6ED3, - 16137: 0x707D, - 16138: 0x7E21, - 16139: 0x88C1, - 16140: 0x8CA1, - 16141: 0x8F09, - 16142: 0x9F4B, - 16143: 0x9F4E, - 16144: 0x722D, - 16145: 0x7B8F, - 16146: 0x8ACD, - 16147: 0x931A, - 16148: 0x4F47, - 16149: 0x4F4E, - 16150: 0x5132, - 16151: 0x5480, - 16152: 0x59D0, - 16153: 0x5E95, - 16154: 0x62B5, - 16155: 0x6775, - 16156: 0x696E, - 16157: 0x6A17, - 16158: 0x6CAE, - 16159: 0x6E1A, - 16160: 0x72D9, - 16161: 0x732A, - 16162: 0x75BD, - 16163: 0x7BB8, - 16164: 0x7D35, - 16165: 0x82E7, - 16166: 0x83F9, - 16167: 0x8457, - 16168: 0x85F7, - 16169: 0x8A5B, - 16170: 0x8CAF, - 16171: 0x8E87, - 16172: 0x9019, - 16173: 0x90B8, - 16174: 0x96CE, - 16175: 0x9F5F, - 16176: 0x52E3, - 16177: 0x540A, - 16178: 0x5AE1, - 16179: 0x5BC2, - 16180: 0x6458, - 16181: 0x6575, - 16182: 0x6EF4, - 16183: 0x72C4, - 16184: 0xF9FB, - 16185: 0x7684, - 16186: 0x7A4D, - 16187: 0x7B1B, - 16188: 0x7C4D, - 16189: 0x7E3E, - 16190: 0x7FDF, - 16191: 0x837B, - 16192: 0x8B2B, - 16193: 0x8CCA, - 16194: 0x8D64, - 16195: 0x8DE1, - 16196: 0x8E5F, - 16197: 0x8FEA, - 16198: 0x8FF9, - 16199: 0x9069, - 16200: 0x93D1, - 16201: 0x4F43, - 16202: 0x4F7A, - 16203: 0x50B3, - 16204: 0x5168, - 16205: 0x5178, - 16206: 0x524D, - 16207: 0x526A, - 16208: 0x5861, - 16209: 0x587C, - 16210: 0x5960, - 16211: 0x5C08, - 16212: 0x5C55, - 16213: 0x5EDB, - 16214: 0x609B, - 16215: 0x6230, - 16216: 0x6813, - 16217: 0x6BBF, - 16218: 0x6C08, - 16219: 0x6FB1, - 16220: 0x714E, - 16221: 0x7420, - 16222: 0x7530, - 16223: 0x7538, - 16224: 0x7551, - 16225: 0x7672, - 16226: 0x7B4C, - 16227: 0x7B8B, - 16228: 0x7BAD, - 16229: 0x7BC6, - 16230: 0x7E8F, - 16231: 0x8A6E, - 16232: 0x8F3E, - 16233: 0x8F49, - 16234: 0x923F, - 16235: 0x9293, - 16236: 0x9322, - 16237: 0x942B, - 16238: 0x96FB, - 16239: 0x985A, - 16240: 0x986B, - 16241: 0x991E, - 16242: 0x5207, - 16243: 0x622A, - 16244: 0x6298, - 16245: 0x6D59, - 16246: 0x7664, - 16247: 0x7ACA, - 16248: 0x7BC0, - 16249: 0x7D76, - 16250: 0x5360, - 16251: 0x5CBE, - 16252: 0x5E97, - 16253: 0x6F38, - 16254: 0x70B9, - 16255: 0x7C98, - 16256: 0x9711, - 16257: 0x9B8E, - 16258: 0x9EDE, - 16259: 0x63A5, - 16260: 0x647A, - 16261: 0x8776, - 16262: 0x4E01, - 16263: 0x4E95, - 16264: 0x4EAD, - 16265: 0x505C, - 16266: 0x5075, - 16267: 0x5448, - 16268: 0x59C3, - 16269: 0x5B9A, - 16270: 0x5E40, - 16271: 0x5EAD, - 16272: 0x5EF7, - 16273: 0x5F81, - 16274: 0x60C5, - 16275: 0x633A, - 16276: 0x653F, - 16277: 0x6574, - 16278: 0x65CC, - 16279: 0x6676, - 16280: 0x6678, - 16281: 0x67FE, - 16282: 0x6968, - 16283: 0x6A89, - 16284: 0x6B63, - 16285: 0x6C40, - 16286: 0x6DC0, - 16287: 0x6DE8, - 16288: 0x6E1F, - 16289: 0x6E5E, - 16290: 0x701E, - 16291: 0x70A1, - 16292: 0x738E, - 16293: 0x73FD, - 16294: 0x753A, - 16295: 0x775B, - 16296: 0x7887, - 16297: 0x798E, - 16298: 0x7A0B, - 16299: 0x7A7D, - 16300: 0x7CBE, - 16301: 0x7D8E, - 16302: 0x8247, - 16303: 0x8A02, - 16304: 0x8AEA, - 16305: 0x8C9E, - 16306: 0x912D, - 16307: 0x914A, - 16308: 0x91D8, - 16309: 0x9266, - 16310: 0x92CC, - 16311: 0x9320, - 16312: 0x9706, - 16313: 0x9756, - 16314: 0x975C, - 16315: 0x9802, - 16316: 0x9F0E, - 16317: 0x5236, - 16318: 0x5291, - 16319: 0x557C, - 16320: 0x5824, - 16321: 0x5E1D, - 16322: 0x5F1F, - 16323: 0x608C, - 16324: 0x63D0, - 16325: 0x68AF, - 16326: 0x6FDF, - 16327: 0x796D, - 16328: 0x7B2C, - 16329: 0x81CD, - 16330: 0x85BA, - 16331: 0x88FD, - 16332: 0x8AF8, - 16333: 0x8E44, - 16334: 0x918D, - 16335: 0x9664, - 16336: 0x969B, - 16337: 0x973D, - 16338: 0x984C, - 16339: 0x9F4A, - 16340: 0x4FCE, - 16341: 0x5146, - 16342: 0x51CB, - 16343: 0x52A9, - 16344: 0x5632, - 16345: 0x5F14, - 16346: 0x5F6B, - 16347: 0x63AA, - 16348: 0x64CD, - 16349: 0x65E9, - 16350: 0x6641, - 16351: 0x66FA, - 16352: 0x66F9, - 16353: 0x671D, - 16354: 0x689D, - 16355: 0x68D7, - 16356: 0x69FD, - 16357: 0x6F15, - 16358: 0x6F6E, - 16359: 0x7167, - 16360: 0x71E5, - 16361: 0x722A, - 16362: 0x74AA, - 16363: 0x773A, - 16364: 0x7956, - 16365: 0x795A, - 16366: 0x79DF, - 16367: 0x7A20, - 16368: 0x7A95, - 16369: 0x7C97, - 16370: 0x7CDF, - 16371: 0x7D44, - 16372: 0x7E70, - 16373: 0x8087, - 16374: 0x85FB, - 16375: 0x86A4, - 16376: 0x8A54, - 16377: 0x8ABF, - 16378: 0x8D99, - 16379: 0x8E81, - 16380: 0x9020, - 16381: 0x906D, - 16382: 0x91E3, - 16383: 0x963B, - 16384: 0x96D5, - 16385: 0x9CE5, - 16386: 0x65CF, - 16387: 0x7C07, - 16388: 0x8DB3, - 16389: 0x93C3, - 16390: 0x5B58, - 16391: 0x5C0A, - 16392: 0x5352, - 16393: 0x62D9, - 16394: 0x731D, - 16395: 0x5027, - 16396: 0x5B97, - 16397: 0x5F9E, - 16398: 0x60B0, - 16399: 0x616B, - 16400: 0x68D5, - 16401: 0x6DD9, - 16402: 0x742E, - 16403: 0x7A2E, - 16404: 0x7D42, - 16405: 0x7D9C, - 16406: 0x7E31, - 16407: 0x816B, - 16408: 0x8E2A, - 16409: 0x8E35, - 16410: 0x937E, - 16411: 0x9418, - 16412: 0x4F50, - 16413: 0x5750, - 16414: 0x5DE6, - 16415: 0x5EA7, - 16416: 0x632B, - 16417: 0x7F6A, - 16418: 0x4E3B, - 16419: 0x4F4F, - 16420: 0x4F8F, - 16421: 0x505A, - 16422: 0x59DD, - 16423: 0x80C4, - 16424: 0x546A, - 16425: 0x5468, - 16426: 0x55FE, - 16427: 0x594F, - 16428: 0x5B99, - 16429: 0x5DDE, - 16430: 0x5EDA, - 16431: 0x665D, - 16432: 0x6731, - 16433: 0x67F1, - 16434: 0x682A, - 16435: 0x6CE8, - 16436: 0x6D32, - 16437: 0x6E4A, - 16438: 0x6F8D, - 16439: 0x70B7, - 16440: 0x73E0, - 16441: 0x7587, - 16442: 0x7C4C, - 16443: 0x7D02, - 16444: 0x7D2C, - 16445: 0x7DA2, - 16446: 0x821F, - 16447: 0x86DB, - 16448: 0x8A3B, - 16449: 0x8A85, - 16450: 0x8D70, - 16451: 0x8E8A, - 16452: 0x8F33, - 16453: 0x9031, - 16454: 0x914E, - 16455: 0x9152, - 16456: 0x9444, - 16457: 0x99D0, - 16458: 0x7AF9, - 16459: 0x7CA5, - 16460: 0x4FCA, - 16461: 0x5101, - 16462: 0x51C6, - 16463: 0x57C8, - 16464: 0x5BEF, - 16465: 0x5CFB, - 16466: 0x6659, - 16467: 0x6A3D, - 16468: 0x6D5A, - 16469: 0x6E96, - 16470: 0x6FEC, - 16471: 0x710C, - 16472: 0x756F, - 16473: 0x7AE3, - 16474: 0x8822, - 16475: 0x9021, - 16476: 0x9075, - 16477: 0x96CB, - 16478: 0x99FF, - 16479: 0x8301, - 16480: 0x4E2D, - 16481: 0x4EF2, - 16482: 0x8846, - 16483: 0x91CD, - 16484: 0x537D, - 16485: 0x6ADB, - 16486: 0x696B, - 16487: 0x6C41, - 16488: 0x847A, - 16489: 0x589E, - 16490: 0x618E, - 16491: 0x66FE, - 16492: 0x62EF, - 16493: 0x70DD, - 16494: 0x7511, - 16495: 0x75C7, - 16496: 0x7E52, - 16497: 0x84B8, - 16498: 0x8B49, - 16499: 0x8D08, - 16500: 0x4E4B, - 16501: 0x53EA, - 16502: 0x54AB, - 16503: 0x5730, - 16504: 0x5740, - 16505: 0x5FD7, - 16506: 0x6301, - 16507: 0x6307, - 16508: 0x646F, - 16509: 0x652F, - 16510: 0x65E8, - 16511: 0x667A, - 16512: 0x679D, - 16513: 0x67B3, - 16514: 0x6B62, - 16515: 0x6C60, - 16516: 0x6C9A, - 16517: 0x6F2C, - 16518: 0x77E5, - 16519: 0x7825, - 16520: 0x7949, - 16521: 0x7957, - 16522: 0x7D19, - 16523: 0x80A2, - 16524: 0x8102, - 16525: 0x81F3, - 16526: 0x829D, - 16527: 0x82B7, - 16528: 0x8718, - 16529: 0x8A8C, - 16530: 0xF9FC, - 16531: 0x8D04, - 16532: 0x8DBE, - 16533: 0x9072, - 16534: 0x76F4, - 16535: 0x7A19, - 16536: 0x7A37, - 16537: 0x7E54, - 16538: 0x8077, - 16539: 0x5507, - 16540: 0x55D4, - 16541: 0x5875, - 16542: 0x632F, - 16543: 0x6422, - 16544: 0x6649, - 16545: 0x664B, - 16546: 0x686D, - 16547: 0x699B, - 16548: 0x6B84, - 16549: 0x6D25, - 16550: 0x6EB1, - 16551: 0x73CD, - 16552: 0x7468, - 16553: 0x74A1, - 16554: 0x755B, - 16555: 0x75B9, - 16556: 0x76E1, - 16557: 0x771E, - 16558: 0x778B, - 16559: 0x79E6, - 16560: 0x7E09, - 16561: 0x7E1D, - 16562: 0x81FB, - 16563: 0x852F, - 16564: 0x8897, - 16565: 0x8A3A, - 16566: 0x8CD1, - 16567: 0x8EEB, - 16568: 0x8FB0, - 16569: 0x9032, - 16570: 0x93AD, - 16571: 0x9663, - 16572: 0x9673, - 16573: 0x9707, - 16574: 0x4F84, - 16575: 0x53F1, - 16576: 0x59EA, - 16577: 0x5AC9, - 16578: 0x5E19, - 16579: 0x684E, - 16580: 0x74C6, - 16581: 0x75BE, - 16582: 0x79E9, - 16583: 0x7A92, - 16584: 0x81A3, - 16585: 0x86ED, - 16586: 0x8CEA, - 16587: 0x8DCC, - 16588: 0x8FED, - 16589: 0x659F, - 16590: 0x6715, - 16591: 0xF9FD, - 16592: 0x57F7, - 16593: 0x6F57, - 16594: 0x7DDD, - 16595: 0x8F2F, - 16596: 0x93F6, - 16597: 0x96C6, - 16598: 0x5FB5, - 16599: 0x61F2, - 16600: 0x6F84, - 16601: 0x4E14, - 16602: 0x4F98, - 16603: 0x501F, - 16604: 0x53C9, - 16605: 0x55DF, - 16606: 0x5D6F, - 16607: 0x5DEE, - 16608: 0x6B21, - 16609: 0x6B64, - 16610: 0x78CB, - 16611: 0x7B9A, - 16612: 0xF9FE, - 16613: 0x8E49, - 16614: 0x8ECA, - 16615: 0x906E, - 16616: 0x6349, - 16617: 0x643E, - 16618: 0x7740, - 16619: 0x7A84, - 16620: 0x932F, - 16621: 0x947F, - 16622: 0x9F6A, - 16623: 0x64B0, - 16624: 0x6FAF, - 16625: 0x71E6, - 16626: 0x74A8, - 16627: 0x74DA, - 16628: 0x7AC4, - 16629: 0x7C12, - 16630: 0x7E82, - 16631: 0x7CB2, - 16632: 0x7E98, - 16633: 0x8B9A, - 16634: 0x8D0A, - 16635: 0x947D, - 16636: 0x9910, - 16637: 0x994C, - 16638: 0x5239, - 16639: 0x5BDF, - 16640: 0x64E6, - 16641: 0x672D, - 16642: 0x7D2E, - 16643: 0x50ED, - 16644: 0x53C3, - 16645: 0x5879, - 16646: 0x6158, - 16647: 0x6159, - 16648: 0x61FA, - 16649: 0x65AC, - 16650: 0x7AD9, - 16651: 0x8B92, - 16652: 0x8B96, - 16653: 0x5009, - 16654: 0x5021, - 16655: 0x5275, - 16656: 0x5531, - 16657: 0x5A3C, - 16658: 0x5EE0, - 16659: 0x5F70, - 16660: 0x6134, - 16661: 0x655E, - 16662: 0x660C, - 16663: 0x6636, - 16664: 0x66A2, - 16665: 0x69CD, - 16666: 0x6EC4, - 16667: 0x6F32, - 16668: 0x7316, - 16669: 0x7621, - 16670: 0x7A93, - 16671: 0x8139, - 16672: 0x8259, - 16673: 0x83D6, - 16674: 0x84BC, - 16675: 0x50B5, - 16676: 0x57F0, - 16677: 0x5BC0, - 16678: 0x5BE8, - 16679: 0x5F69, - 16680: 0x63A1, - 16681: 0x7826, - 16682: 0x7DB5, - 16683: 0x83DC, - 16684: 0x8521, - 16685: 0x91C7, - 16686: 0x91F5, - 16687: 0x518A, - 16688: 0x67F5, - 16689: 0x7B56, - 16690: 0x8CAC, - 16691: 0x51C4, - 16692: 0x59BB, - 16693: 0x60BD, - 16694: 0x8655, - 16695: 0x501C, - 16696: 0xF9FF, - 16697: 0x5254, - 16698: 0x5C3A, - 16699: 0x617D, - 16700: 0x621A, - 16701: 0x62D3, - 16702: 0x64F2, - 16703: 0x65A5, - 16704: 0x6ECC, - 16705: 0x7620, - 16706: 0x810A, - 16707: 0x8E60, - 16708: 0x965F, - 16709: 0x96BB, - 16710: 0x4EDF, - 16711: 0x5343, - 16712: 0x5598, - 16713: 0x5929, - 16714: 0x5DDD, - 16715: 0x64C5, - 16716: 0x6CC9, - 16717: 0x6DFA, - 16718: 0x7394, - 16719: 0x7A7F, - 16720: 0x821B, - 16721: 0x85A6, - 16722: 0x8CE4, - 16723: 0x8E10, - 16724: 0x9077, - 16725: 0x91E7, - 16726: 0x95E1, - 16727: 0x9621, - 16728: 0x97C6, - 16729: 0x51F8, - 16730: 0x54F2, - 16731: 0x5586, - 16732: 0x5FB9, - 16733: 0x64A4, - 16734: 0x6F88, - 16735: 0x7DB4, - 16736: 0x8F1F, - 16737: 0x8F4D, - 16738: 0x9435, - 16739: 0x50C9, - 16740: 0x5C16, - 16741: 0x6CBE, - 16742: 0x6DFB, - 16743: 0x751B, - 16744: 0x77BB, - 16745: 0x7C3D, - 16746: 0x7C64, - 16747: 0x8A79, - 16748: 0x8AC2, - 16749: 0x581E, - 16750: 0x59BE, - 16751: 0x5E16, - 16752: 0x6377, - 16753: 0x7252, - 16754: 0x758A, - 16755: 0x776B, - 16756: 0x8ADC, - 16757: 0x8CBC, - 16758: 0x8F12, - 16759: 0x5EF3, - 16760: 0x6674, - 16761: 0x6DF8, - 16762: 0x807D, - 16763: 0x83C1, - 16764: 0x8ACB, - 16765: 0x9751, - 16766: 0x9BD6, - 16767: 0xFA00, - 16768: 0x5243, - 16769: 0x66FF, - 16770: 0x6D95, - 16771: 0x6EEF, - 16772: 0x7DE0, - 16773: 0x8AE6, - 16774: 0x902E, - 16775: 0x905E, - 16776: 0x9AD4, - 16777: 0x521D, - 16778: 0x527F, - 16779: 0x54E8, - 16780: 0x6194, - 16781: 0x6284, - 16782: 0x62DB, - 16783: 0x68A2, - 16784: 0x6912, - 16785: 0x695A, - 16786: 0x6A35, - 16787: 0x7092, - 16788: 0x7126, - 16789: 0x785D, - 16790: 0x7901, - 16791: 0x790E, - 16792: 0x79D2, - 16793: 0x7A0D, - 16794: 0x8096, - 16795: 0x8278, - 16796: 0x82D5, - 16797: 0x8349, - 16798: 0x8549, - 16799: 0x8C82, - 16800: 0x8D85, - 16801: 0x9162, - 16802: 0x918B, - 16803: 0x91AE, - 16804: 0x4FC3, - 16805: 0x56D1, - 16806: 0x71ED, - 16807: 0x77D7, - 16808: 0x8700, - 16809: 0x89F8, - 16810: 0x5BF8, - 16811: 0x5FD6, - 16812: 0x6751, - 16813: 0x90A8, - 16814: 0x53E2, - 16815: 0x585A, - 16816: 0x5BF5, - 16817: 0x60A4, - 16818: 0x6181, - 16819: 0x6460, - 16820: 0x7E3D, - 16821: 0x8070, - 16822: 0x8525, - 16823: 0x9283, - 16824: 0x64AE, - 16825: 0x50AC, - 16826: 0x5D14, - 16827: 0x6700, - 16828: 0x589C, - 16829: 0x62BD, - 16830: 0x63A8, - 16831: 0x690E, - 16832: 0x6978, - 16833: 0x6A1E, - 16834: 0x6E6B, - 16835: 0x76BA, - 16836: 0x79CB, - 16837: 0x82BB, - 16838: 0x8429, - 16839: 0x8ACF, - 16840: 0x8DA8, - 16841: 0x8FFD, - 16842: 0x9112, - 16843: 0x914B, - 16844: 0x919C, - 16845: 0x9310, - 16846: 0x9318, - 16847: 0x939A, - 16848: 0x96DB, - 16849: 0x9A36, - 16850: 0x9C0D, - 16851: 0x4E11, - 16852: 0x755C, - 16853: 0x795D, - 16854: 0x7AFA, - 16855: 0x7B51, - 16856: 0x7BC9, - 16857: 0x7E2E, - 16858: 0x84C4, - 16859: 0x8E59, - 16860: 0x8E74, - 16861: 0x8EF8, - 16862: 0x9010, - 16863: 0x6625, - 16864: 0x693F, - 16865: 0x7443, - 16866: 0x51FA, - 16867: 0x672E, - 16868: 0x9EDC, - 16869: 0x5145, - 16870: 0x5FE0, - 16871: 0x6C96, - 16872: 0x87F2, - 16873: 0x885D, - 16874: 0x8877, - 16875: 0x60B4, - 16876: 0x81B5, - 16877: 0x8403, - 16878: 0x8D05, - 16879: 0x53D6, - 16880: 0x5439, - 16881: 0x5634, - 16882: 0x5A36, - 16883: 0x5C31, - 16884: 0x708A, - 16885: 0x7FE0, - 16886: 0x805A, - 16887: 0x8106, - 16888: 0x81ED, - 16889: 0x8DA3, - 16890: 0x9189, - 16891: 0x9A5F, - 16892: 0x9DF2, - 16893: 0x5074, - 16894: 0x4EC4, - 16895: 0x53A0, - 16896: 0x60FB, - 16897: 0x6E2C, - 16898: 0x5C64, - 16899: 0x4F88, - 16900: 0x5024, - 16901: 0x55E4, - 16902: 0x5CD9, - 16903: 0x5E5F, - 16904: 0x6065, - 16905: 0x6894, - 16906: 0x6CBB, - 16907: 0x6DC4, - 16908: 0x71BE, - 16909: 0x75D4, - 16910: 0x75F4, - 16911: 0x7661, - 16912: 0x7A1A, - 16913: 0x7A49, - 16914: 0x7DC7, - 16915: 0x7DFB, - 16916: 0x7F6E, - 16917: 0x81F4, - 16918: 0x86A9, - 16919: 0x8F1C, - 16920: 0x96C9, - 16921: 0x99B3, - 16922: 0x9F52, - 16923: 0x5247, - 16924: 0x52C5, - 16925: 0x98ED, - 16926: 0x89AA, - 16927: 0x4E03, - 16928: 0x67D2, - 16929: 0x6F06, - 16930: 0x4FB5, - 16931: 0x5BE2, - 16932: 0x6795, - 16933: 0x6C88, - 16934: 0x6D78, - 16935: 0x741B, - 16936: 0x7827, - 16937: 0x91DD, - 16938: 0x937C, - 16939: 0x87C4, - 16940: 0x79E4, - 16941: 0x7A31, - 16942: 0x5FEB, - 16943: 0x4ED6, - 16944: 0x54A4, - 16945: 0x553E, - 16946: 0x58AE, - 16947: 0x59A5, - 16948: 0x60F0, - 16949: 0x6253, - 16950: 0x62D6, - 16951: 0x6736, - 16952: 0x6955, - 16953: 0x8235, - 16954: 0x9640, - 16955: 0x99B1, - 16956: 0x99DD, - 16957: 0x502C, - 16958: 0x5353, - 16959: 0x5544, - 16960: 0x577C, - 16961: 0xFA01, - 16962: 0x6258, - 16963: 0xFA02, - 16964: 0x64E2, - 16965: 0x666B, - 16966: 0x67DD, - 16967: 0x6FC1, - 16968: 0x6FEF, - 16969: 0x7422, - 16970: 0x7438, - 16971: 0x8A17, - 16972: 0x9438, - 16973: 0x5451, - 16974: 0x5606, - 16975: 0x5766, - 16976: 0x5F48, - 16977: 0x619A, - 16978: 0x6B4E, - 16979: 0x7058, - 16980: 0x70AD, - 16981: 0x7DBB, - 16982: 0x8A95, - 16983: 0x596A, - 16984: 0x812B, - 16985: 0x63A2, - 16986: 0x7708, - 16987: 0x803D, - 16988: 0x8CAA, - 16989: 0x5854, - 16990: 0x642D, - 16991: 0x69BB, - 16992: 0x5B95, - 16993: 0x5E11, - 16994: 0x6E6F, - 16995: 0xFA03, - 16996: 0x8569, - 16997: 0x514C, - 16998: 0x53F0, - 16999: 0x592A, - 17000: 0x6020, - 17001: 0x614B, - 17002: 0x6B86, - 17003: 0x6C70, - 17004: 0x6CF0, - 17005: 0x7B1E, - 17006: 0x80CE, - 17007: 0x82D4, - 17008: 0x8DC6, - 17009: 0x90B0, - 17010: 0x98B1, - 17011: 0xFA04, - 17012: 0x64C7, - 17013: 0x6FA4, - 17014: 0x6491, - 17015: 0x6504, - 17016: 0x514E, - 17017: 0x5410, - 17018: 0x571F, - 17019: 0x8A0E, - 17020: 0x615F, - 17021: 0x6876, - 17022: 0xFA05, - 17023: 0x75DB, - 17024: 0x7B52, - 17025: 0x7D71, - 17026: 0x901A, - 17027: 0x5806, - 17028: 0x69CC, - 17029: 0x817F, - 17030: 0x892A, - 17031: 0x9000, - 17032: 0x9839, - 17033: 0x5078, - 17034: 0x5957, - 17035: 0x59AC, - 17036: 0x6295, - 17037: 0x900F, - 17038: 0x9B2A, - 17039: 0x615D, - 17040: 0x7279, - 17041: 0x95D6, - 17042: 0x5761, - 17043: 0x5A46, - 17044: 0x5DF4, - 17045: 0x628A, - 17046: 0x64AD, - 17047: 0x64FA, - 17048: 0x6777, - 17049: 0x6CE2, - 17050: 0x6D3E, - 17051: 0x722C, - 17052: 0x7436, - 17053: 0x7834, - 17054: 0x7F77, - 17055: 0x82AD, - 17056: 0x8DDB, - 17057: 0x9817, - 17058: 0x5224, - 17059: 0x5742, - 17060: 0x677F, - 17061: 0x7248, - 17062: 0x74E3, - 17063: 0x8CA9, - 17064: 0x8FA6, - 17065: 0x9211, - 17066: 0x962A, - 17067: 0x516B, - 17068: 0x53ED, - 17069: 0x634C, - 17070: 0x4F69, - 17071: 0x5504, - 17072: 0x6096, - 17073: 0x6557, - 17074: 0x6C9B, - 17075: 0x6D7F, - 17076: 0x724C, - 17077: 0x72FD, - 17078: 0x7A17, - 17079: 0x8987, - 17080: 0x8C9D, - 17081: 0x5F6D, - 17082: 0x6F8E, - 17083: 0x70F9, - 17084: 0x81A8, - 17085: 0x610E, - 17086: 0x4FBF, - 17087: 0x504F, - 17088: 0x6241, - 17089: 0x7247, - 17090: 0x7BC7, - 17091: 0x7DE8, - 17092: 0x7FE9, - 17093: 0x904D, - 17094: 0x97AD, - 17095: 0x9A19, - 17096: 0x8CB6, - 17097: 0x576A, - 17098: 0x5E73, - 17099: 0x67B0, - 17100: 0x840D, - 17101: 0x8A55, - 17102: 0x5420, - 17103: 0x5B16, - 17104: 0x5E63, - 17105: 0x5EE2, - 17106: 0x5F0A, - 17107: 0x6583, - 17108: 0x80BA, - 17109: 0x853D, - 17110: 0x9589, - 17111: 0x965B, - 17112: 0x4F48, - 17113: 0x5305, - 17114: 0x530D, - 17115: 0x530F, - 17116: 0x5486, - 17117: 0x54FA, - 17118: 0x5703, - 17119: 0x5E03, - 17120: 0x6016, - 17121: 0x629B, - 17122: 0x62B1, - 17123: 0x6355, - 17124: 0xFA06, - 17125: 0x6CE1, - 17126: 0x6D66, - 17127: 0x75B1, - 17128: 0x7832, - 17129: 0x80DE, - 17130: 0x812F, - 17131: 0x82DE, - 17132: 0x8461, - 17133: 0x84B2, - 17134: 0x888D, - 17135: 0x8912, - 17136: 0x900B, - 17137: 0x92EA, - 17138: 0x98FD, - 17139: 0x9B91, - 17140: 0x5E45, - 17141: 0x66B4, - 17142: 0x66DD, - 17143: 0x7011, - 17144: 0x7206, - 17145: 0xFA07, - 17146: 0x4FF5, - 17147: 0x527D, - 17148: 0x5F6A, - 17149: 0x6153, - 17150: 0x6753, - 17151: 0x6A19, - 17152: 0x6F02, - 17153: 0x74E2, - 17154: 0x7968, - 17155: 0x8868, - 17156: 0x8C79, - 17157: 0x98C7, - 17158: 0x98C4, - 17159: 0x9A43, - 17160: 0x54C1, - 17161: 0x7A1F, - 17162: 0x6953, - 17163: 0x8AF7, - 17164: 0x8C4A, - 17165: 0x98A8, - 17166: 0x99AE, - 17167: 0x5F7C, - 17168: 0x62AB, - 17169: 0x75B2, - 17170: 0x76AE, - 17171: 0x88AB, - 17172: 0x907F, - 17173: 0x9642, - 17174: 0x5339, - 17175: 0x5F3C, - 17176: 0x5FC5, - 17177: 0x6CCC, - 17178: 0x73CC, - 17179: 0x7562, - 17180: 0x758B, - 17181: 0x7B46, - 17182: 0x82FE, - 17183: 0x999D, - 17184: 0x4E4F, - 17185: 0x903C, - 17186: 0x4E0B, - 17187: 0x4F55, - 17188: 0x53A6, - 17189: 0x590F, - 17190: 0x5EC8, - 17191: 0x6630, - 17192: 0x6CB3, - 17193: 0x7455, - 17194: 0x8377, - 17195: 0x8766, - 17196: 0x8CC0, - 17197: 0x9050, - 17198: 0x971E, - 17199: 0x9C15, - 17200: 0x58D1, - 17201: 0x5B78, - 17202: 0x8650, - 17203: 0x8B14, - 17204: 0x9DB4, - 17205: 0x5BD2, - 17206: 0x6068, - 17207: 0x608D, - 17208: 0x65F1, - 17209: 0x6C57, - 17210: 0x6F22, - 17211: 0x6FA3, - 17212: 0x701A, - 17213: 0x7F55, - 17214: 0x7FF0, - 17215: 0x9591, - 17216: 0x9592, - 17217: 0x9650, - 17218: 0x97D3, - 17219: 0x5272, - 17220: 0x8F44, - 17221: 0x51FD, - 17222: 0x542B, - 17223: 0x54B8, - 17224: 0x5563, - 17225: 0x558A, - 17226: 0x6ABB, - 17227: 0x6DB5, - 17228: 0x7DD8, - 17229: 0x8266, - 17230: 0x929C, - 17231: 0x9677, - 17232: 0x9E79, - 17233: 0x5408, - 17234: 0x54C8, - 17235: 0x76D2, - 17236: 0x86E4, - 17237: 0x95A4, - 17238: 0x95D4, - 17239: 0x965C, - 17240: 0x4EA2, - 17241: 0x4F09, - 17242: 0x59EE, - 17243: 0x5AE6, - 17244: 0x5DF7, - 17245: 0x6052, - 17246: 0x6297, - 17247: 0x676D, - 17248: 0x6841, - 17249: 0x6C86, - 17250: 0x6E2F, - 17251: 0x7F38, - 17252: 0x809B, - 17253: 0x822A, - 17254: 0xFA08, - 17255: 0xFA09, - 17256: 0x9805, - 17257: 0x4EA5, - 17258: 0x5055, - 17259: 0x54B3, - 17260: 0x5793, - 17261: 0x595A, - 17262: 0x5B69, - 17263: 0x5BB3, - 17264: 0x61C8, - 17265: 0x6977, - 17266: 0x6D77, - 17267: 0x7023, - 17268: 0x87F9, - 17269: 0x89E3, - 17270: 0x8A72, - 17271: 0x8AE7, - 17272: 0x9082, - 17273: 0x99ED, - 17274: 0x9AB8, - 17275: 0x52BE, - 17276: 0x6838, - 17277: 0x5016, - 17278: 0x5E78, - 17279: 0x674F, - 17280: 0x8347, - 17281: 0x884C, - 17282: 0x4EAB, - 17283: 0x5411, - 17284: 0x56AE, - 17285: 0x73E6, - 17286: 0x9115, - 17287: 0x97FF, - 17288: 0x9909, - 17289: 0x9957, - 17290: 0x9999, - 17291: 0x5653, - 17292: 0x589F, - 17293: 0x865B, - 17294: 0x8A31, - 17295: 0x61B2, - 17296: 0x6AF6, - 17297: 0x737B, - 17298: 0x8ED2, - 17299: 0x6B47, - 17300: 0x96AA, - 17301: 0x9A57, - 17302: 0x5955, - 17303: 0x7200, - 17304: 0x8D6B, - 17305: 0x9769, - 17306: 0x4FD4, - 17307: 0x5CF4, - 17308: 0x5F26, - 17309: 0x61F8, - 17310: 0x665B, - 17311: 0x6CEB, - 17312: 0x70AB, - 17313: 0x7384, - 17314: 0x73B9, - 17315: 0x73FE, - 17316: 0x7729, - 17317: 0x774D, - 17318: 0x7D43, - 17319: 0x7D62, - 17320: 0x7E23, - 17321: 0x8237, - 17322: 0x8852, - 17323: 0xFA0A, - 17324: 0x8CE2, - 17325: 0x9249, - 17326: 0x986F, - 17327: 0x5B51, - 17328: 0x7A74, - 17329: 0x8840, - 17330: 0x9801, - 17331: 0x5ACC, - 17332: 0x4FE0, - 17333: 0x5354, - 17334: 0x593E, - 17335: 0x5CFD, - 17336: 0x633E, - 17337: 0x6D79, - 17338: 0x72F9, - 17339: 0x8105, - 17340: 0x8107, - 17341: 0x83A2, - 17342: 0x92CF, - 17343: 0x9830, - 17344: 0x4EA8, - 17345: 0x5144, - 17346: 0x5211, - 17347: 0x578B, - 17348: 0x5F62, - 17349: 0x6CC2, - 17350: 0x6ECE, - 17351: 0x7005, - 17352: 0x7050, - 17353: 0x70AF, - 17354: 0x7192, - 17355: 0x73E9, - 17356: 0x7469, - 17357: 0x834A, - 17358: 0x87A2, - 17359: 0x8861, - 17360: 0x9008, - 17361: 0x90A2, - 17362: 0x93A3, - 17363: 0x99A8, - 17364: 0x516E, - 17365: 0x5F57, - 17366: 0x60E0, - 17367: 0x6167, - 17368: 0x66B3, - 17369: 0x8559, - 17370: 0x8E4A, - 17371: 0x91AF, - 17372: 0x978B, - 17373: 0x4E4E, - 17374: 0x4E92, - 17375: 0x547C, - 17376: 0x58D5, - 17377: 0x58FA, - 17378: 0x597D, - 17379: 0x5CB5, - 17380: 0x5F27, - 17381: 0x6236, - 17382: 0x6248, - 17383: 0x660A, - 17384: 0x6667, - 17385: 0x6BEB, - 17386: 0x6D69, - 17387: 0x6DCF, - 17388: 0x6E56, - 17389: 0x6EF8, - 17390: 0x6F94, - 17391: 0x6FE0, - 17392: 0x6FE9, - 17393: 0x705D, - 17394: 0x72D0, - 17395: 0x7425, - 17396: 0x745A, - 17397: 0x74E0, - 17398: 0x7693, - 17399: 0x795C, - 17400: 0x7CCA, - 17401: 0x7E1E, - 17402: 0x80E1, - 17403: 0x82A6, - 17404: 0x846B, - 17405: 0x84BF, - 17406: 0x864E, - 17407: 0x865F, - 17408: 0x8774, - 17409: 0x8B77, - 17410: 0x8C6A, - 17411: 0x93AC, - 17412: 0x9800, - 17413: 0x9865, - 17414: 0x60D1, - 17415: 0x6216, - 17416: 0x9177, - 17417: 0x5A5A, - 17418: 0x660F, - 17419: 0x6DF7, - 17420: 0x6E3E, - 17421: 0x743F, - 17422: 0x9B42, - 17423: 0x5FFD, - 17424: 0x60DA, - 17425: 0x7B0F, - 17426: 0x54C4, - 17427: 0x5F18, - 17428: 0x6C5E, - 17429: 0x6CD3, - 17430: 0x6D2A, - 17431: 0x70D8, - 17432: 0x7D05, - 17433: 0x8679, - 17434: 0x8A0C, - 17435: 0x9D3B, - 17436: 0x5316, - 17437: 0x548C, - 17438: 0x5B05, - 17439: 0x6A3A, - 17440: 0x706B, - 17441: 0x7575, - 17442: 0x798D, - 17443: 0x79BE, - 17444: 0x82B1, - 17445: 0x83EF, - 17446: 0x8A71, - 17447: 0x8B41, - 17448: 0x8CA8, - 17449: 0x9774, - 17450: 0xFA0B, - 17451: 0x64F4, - 17452: 0x652B, - 17453: 0x78BA, - 17454: 0x78BB, - 17455: 0x7A6B, - 17456: 0x4E38, - 17457: 0x559A, - 17458: 0x5950, - 17459: 0x5BA6, - 17460: 0x5E7B, - 17461: 0x60A3, - 17462: 0x63DB, - 17463: 0x6B61, - 17464: 0x6665, - 17465: 0x6853, - 17466: 0x6E19, - 17467: 0x7165, - 17468: 0x74B0, - 17469: 0x7D08, - 17470: 0x9084, - 17471: 0x9A69, - 17472: 0x9C25, - 17473: 0x6D3B, - 17474: 0x6ED1, - 17475: 0x733E, - 17476: 0x8C41, - 17477: 0x95CA, - 17478: 0x51F0, - 17479: 0x5E4C, - 17480: 0x5FA8, - 17481: 0x604D, - 17482: 0x60F6, - 17483: 0x6130, - 17484: 0x614C, - 17485: 0x6643, - 17486: 0x6644, - 17487: 0x69A5, - 17488: 0x6CC1, - 17489: 0x6E5F, - 17490: 0x6EC9, - 17491: 0x6F62, - 17492: 0x714C, - 17493: 0x749C, - 17494: 0x7687, - 17495: 0x7BC1, - 17496: 0x7C27, - 17497: 0x8352, - 17498: 0x8757, - 17499: 0x9051, - 17500: 0x968D, - 17501: 0x9EC3, - 17502: 0x532F, - 17503: 0x56DE, - 17504: 0x5EFB, - 17505: 0x5F8A, - 17506: 0x6062, - 17507: 0x6094, - 17508: 0x61F7, - 17509: 0x6666, - 17510: 0x6703, - 17511: 0x6A9C, - 17512: 0x6DEE, - 17513: 0x6FAE, - 17514: 0x7070, - 17515: 0x736A, - 17516: 0x7E6A, - 17517: 0x81BE, - 17518: 0x8334, - 17519: 0x86D4, - 17520: 0x8AA8, - 17521: 0x8CC4, - 17522: 0x5283, - 17523: 0x7372, - 17524: 0x5B96, - 17525: 0x6A6B, - 17526: 0x9404, - 17527: 0x54EE, - 17528: 0x5686, - 17529: 0x5B5D, - 17530: 0x6548, - 17531: 0x6585, - 17532: 0x66C9, - 17533: 0x689F, - 17534: 0x6D8D, - 17535: 0x6DC6, - 17536: 0x723B, - 17537: 0x80B4, - 17538: 0x9175, - 17539: 0x9A4D, - 17540: 0x4FAF, - 17541: 0x5019, - 17542: 0x539A, - 17543: 0x540E, - 17544: 0x543C, - 17545: 0x5589, - 17546: 0x55C5, - 17547: 0x5E3F, - 17548: 0x5F8C, - 17549: 0x673D, - 17550: 0x7166, - 17551: 0x73DD, - 17552: 0x9005, - 17553: 0x52DB, - 17554: 0x52F3, - 17555: 0x5864, - 17556: 0x58CE, - 17557: 0x7104, - 17558: 0x718F, - 17559: 0x71FB, - 17560: 0x85B0, - 17561: 0x8A13, - 17562: 0x6688, - 17563: 0x85A8, - 17564: 0x55A7, - 17565: 0x6684, - 17566: 0x714A, - 17567: 0x8431, - 17568: 0x5349, - 17569: 0x5599, - 17570: 0x6BC1, - 17571: 0x5F59, - 17572: 0x5FBD, - 17573: 0x63EE, - 17574: 0x6689, - 17575: 0x7147, - 17576: 0x8AF1, - 17577: 0x8F1D, - 17578: 0x9EBE, - 17579: 0x4F11, - 17580: 0x643A, - 17581: 0x70CB, - 17582: 0x7566, - 17583: 0x8667, - 17584: 0x6064, - 17585: 0x8B4E, - 17586: 0x9DF8, - 17587: 0x5147, - 17588: 0x51F6, - 17589: 0x5308, - 17590: 0x6D36, - 17591: 0x80F8, - 17592: 0x9ED1, - 17593: 0x6615, - 17594: 0x6B23, - 17595: 0x7098, - 17596: 0x75D5, - 17597: 0x5403, - 17598: 0x5C79, - 17599: 0x7D07, - 17600: 0x8A16, - 17601: 0x6B20, - 17602: 0x6B3D, - 17603: 0x6B46, - 17604: 0x5438, - 17605: 0x6070, - 17606: 0x6D3D, - 17607: 0x7FD5, - 17608: 0x8208, - 17609: 0x50D6, - 17610: 0x51DE, - 17611: 0x559C, - 17612: 0x566B, - 17613: 0x56CD, - 17614: 0x59EC, - 17615: 0x5B09, - 17616: 0x5E0C, - 17617: 0x6199, - 17618: 0x6198, - 17619: 0x6231, - 17620: 0x665E, - 17621: 0x66E6, - 17622: 0x7199, - 17623: 0x71B9, - 17624: 0x71BA, - 17625: 0x72A7, - 17626: 0x79A7, - 17627: 0x7A00, - 17628: 0x7FB2, - 17629: 0x8A70, -} - -const numEncodeTables = 7 - -// encodeX are the encoding tables from Unicode to EUC-KR code, -// sorted by decreasing length. -// encode0: 20893 entries for runes in [19968, 40861). -// encode1: 11172 entries for runes in [44032, 55204). -// encode2: 1625 entries for runes in [ 8213, 9838). -// encode3: 990 entries for runes in [12288, 13278). -// encode4: 945 entries for runes in [ 161, 1106). -// encode5: 268 entries for runes in [63744, 64012). -// encode6: 230 entries for runes in [65281, 65511). - -const encode0Low, encode0High = 19968, 40861 - -var encode0 = [...]uint16{ - 19968 - 19968: 0xECE9, - 19969 - 19968: 0xEFCB, - 19971 - 19968: 0xF6D2, - 19975 - 19968: 0xD8B2, - 19976 - 19968: 0xEDDB, - 19977 - 19968: 0xDFB2, - 19978 - 19968: 0xDFBE, - 19979 - 19968: 0xF9BB, - 19981 - 19968: 0xDCF4, - 19985 - 19968: 0xF5E4, - 19988 - 19968: 0xF3A6, - 19989 - 19968: 0xDDE0, - 19990 - 19968: 0xE1A6, - 19992 - 19968: 0xCEF8, - 19993 - 19968: 0xDCB0, - 19998 - 19968: 0xE3AA, - 20013 - 19968: 0xF1E9, - 20018 - 19968: 0xCDFA, - 20024 - 19968: 0xFCAF, - 20025 - 19968: 0xD3A1, - 20027 - 19968: 0xF1AB, - 20034 - 19968: 0xE7D1, - 20035 - 19968: 0xD2AC, - 20037 - 19968: 0xCEF9, - 20043 - 19968: 0xF1FD, - 20045 - 19968: 0xDEBF, - 20046 - 19968: 0xFBBA, - 20047 - 19968: 0xF9B9, - 20054 - 19968: 0xCED2, - 20056 - 19968: 0xE3AB, - 20057 - 19968: 0xEBE0, - 20061 - 19968: 0xCEFA, - 20062 - 19968: 0xCBF7, - 20063 - 19968: 0xE5A5, - 20075 - 19968: 0xCAE1, - 20077 - 19968: 0xD4CC, - 20083 - 19968: 0xEAE1, - 20086 - 19968: 0xDCE3, - 20087 - 19968: 0xDFAD, - 20094 - 19968: 0xCBEB, - 20098 - 19968: 0xD5AF, - 20102 - 19968: 0xD6F5, - 20104 - 19968: 0xE5F8, - 20107 - 19968: 0xDEC0, - 20108 - 19968: 0xECA3, - 20110 - 19968: 0xE9CD, - 20112 - 19968: 0xEAA7, - 20113 - 19968: 0xE9F6, - 20114 - 19968: 0xFBBB, - 20116 - 19968: 0xE7E9, - 20117 - 19968: 0xEFCC, - 20120 - 19968: 0xD0E6, - 20123 - 19968: 0xDEC1, - 20126 - 19968: 0xE4AC, - 20129 - 19968: 0xD8CC, - 20130 - 19968: 0xF9F1, - 20132 - 19968: 0xCEDF, - 20133 - 19968: 0xFAA4, - 20134 - 19968: 0xE6B2, - 20136 - 19968: 0xFAFB, - 20139 - 19968: 0xFABD, - 20140 - 19968: 0xCCC8, - 20141 - 19968: 0xEFCD, - 20142 - 19968: 0xD5D5, - 20150 - 19968: 0xD3A2, - 20154 - 19968: 0xECD1, - 20160 - 19968: 0xE4A7, - 20161 - 19968: 0xECD2, - 20164 - 19968: 0xF6B1, - 20167 - 19968: 0xCEFB, - 20170 - 19968: 0xD0D1, - 20171 - 19968: 0xCBBF, - 20173 - 19968: 0xEDA4, - 20180 - 19968: 0xEDA8, - 20181 - 19968: 0xDEC2, - 20182 - 19968: 0xF6E2, - 20183 - 19968: 0xEDDC, - 20184 - 19968: 0xDCF5, - 20185 - 19968: 0xE0B9, - 20189 - 19968: 0xD4CE, - 20191 - 19968: 0xF4B5, - 20195 - 19968: 0xD3DB, - 20196 - 19968: 0xD6B5, - 20197 - 19968: 0xECA4, - 20208 - 19968: 0xE4E6, - 20210 - 19968: 0xF1EA, - 20214 - 19968: 0xCBEC, - 20215 - 19968: 0xCBC0, - 20219 - 19968: 0xECF2, - 20225 - 19968: 0xD0EA, - 20233 - 19968: 0xF9F2, - 20234 - 19968: 0xECA5, - 20235 - 19968: 0xD0DF, - 20237 - 19968: 0xE7EA, - 20238 - 19968: 0xD0EB, - 20239 - 19968: 0xDCD1, - 20240 - 19968: 0xDBE9, - 20241 - 19968: 0xFDCC, - 20271 - 19968: 0xDBD7, - 20276 - 19968: 0xDAE1, - 20278 - 19968: 0xD6B6, - 20280 - 19968: 0xE3DF, - 20282 - 19968: 0xDEC3, - 20284 - 19968: 0xDEC4, - 20285 - 19968: 0xCAA1, - 20291 - 19968: 0xEEEC, - 20294 - 19968: 0xD3A3, - 20295 - 19968: 0xEEB7, - 20296 - 19968: 0xF8CF, - 20301 - 19968: 0xEAC8, - 20302 - 19968: 0xEEB8, - 20303 - 19968: 0xF1AC, - 20304 - 19968: 0xF1A5, - 20305 - 19968: 0xE9CE, - 20309 - 19968: 0xF9BC, - 20313 - 19968: 0xE5F9, - 20314 - 19968: 0xECEA, - 20315 - 19968: 0xDDD6, - 20316 - 19968: 0xEDC2, - 20329 - 19968: 0xF8A5, - 20335 - 19968: 0xE5BA, - 20336 - 19968: 0xDBD8, - 20339 - 19968: 0xCAA2, - 20342 - 19968: 0xD1CD, - 20346 - 19968: 0xEEED, - 20350 - 19968: 0xECEB, - 20351 - 19968: 0xDEC5, - 20353 - 19968: 0xE3E0, - 20355 - 19968: 0xCAC9, - 20356 - 19968: 0xF2E9, - 20358 - 19968: 0xD5CE, - 20360 - 19968: 0xF6B6, - 20362 - 19968: 0xCEC2, - 20363 - 19968: 0xD6C7, - 20365 - 19968: 0xE3B4, - 20367 - 19968: 0xF1AD, - 20369 - 19968: 0xEAE2, - 20374 - 19968: 0xD7C2, - 20376 - 19968: 0xF3A7, - 20379 - 19968: 0xCDEA, - 20381 - 19968: 0xEBEE, - 20398 - 19968: 0xD9B2, - 20399 - 19968: 0xFDA5, - 20405 - 19968: 0xF6D5, - 20406 - 19968: 0xD5E2, - 20415 - 19968: 0xF8B5, - 20418 - 19968: 0xCCF5, - 20419 - 19968: 0xF5B5, - 20420 - 19968: 0xE4AD, - 20425 - 19968: 0xE7EB, - 20426 - 19968: 0xF1D5, - 20430 - 19968: 0xF0BB, - 20433 - 19968: 0xE9B5, - 20435 - 19968: 0xCCC9, - 20436 - 19968: 0xFAD5, - 20439 - 19968: 0xE1D4, - 20442 - 19968: 0xD7D6, - 20445 - 19968: 0xDCC1, - 20447 - 19968: 0xDEC6, - 20448 - 19968: 0xFAEF, - 20449 - 19968: 0xE3E1, - 20462 - 19968: 0xE1F3, - 20463 - 19968: 0xDCF6, - 20465 - 19968: 0xCEFC, - 20467 - 19968: 0xDBC4, - 20469 - 19968: 0xF8F1, - 20472 - 19968: 0xDCE4, - 20474 - 19968: 0xE5EF, - 20482 - 19968: 0xDCB1, - 20486 - 19968: 0xD5D6, - 20489 - 19968: 0xF3DA, - 20491 - 19968: 0xCBC1, - 20493 - 19968: 0xDBC3, - 20497 - 19968: 0xD9FA, - 20498 - 19968: 0xD3EE, - 20502 - 19968: 0xFAB8, - 20505 - 19968: 0xFDA6, - 20506 - 19968: 0xEBEF, - 20508 - 19968: 0xF4A6, - 20510 - 19968: 0xCCCA, - 20511 - 19968: 0xF3A8, - 20513 - 19968: 0xF3DB, - 20515 - 19968: 0xDBA7, - 20516 - 19968: 0xF6B7, - 20518 - 19968: 0xCFE6, - 20519 - 19968: 0xF0F2, - 20520 - 19968: 0xCBDA, - 20522 - 19968: 0xE7D2, - 20523 - 19968: 0xD7C3, - 20524 - 19968: 0xF6F0, - 20525 - 19968: 0xE8DE, - 20539 - 19968: 0xE5A6, - 20547 - 19968: 0xE5E7, - 20551 - 19968: 0xCAA3, - 20552 - 19968: 0xCCA7, - 20553 - 19968: 0xEAC9, - 20559 - 19968: 0xF8B6, - 20565 - 19968: 0xFAA5, - 20570 - 19968: 0xF1AE, - 20572 - 19968: 0xEFCE, - 20581 - 19968: 0xCBED, - 20596 - 19968: 0xF6B0, - 20597 - 19968: 0xEFCF, - 20598 - 19968: 0xE9CF, - 20600 - 19968: 0xF7DE, - 20608 - 19968: 0xCED3, - 20613 - 19968: 0xDCF7, - 20621 - 19968: 0xDBA8, - 20625 - 19968: 0xCBF8, - 20632 - 19968: 0xDFA1, - 20633 - 19968: 0xDDE1, - 20652 - 19968: 0xF5CA, - 20653 - 19968: 0xE9B6, - 20658 - 19968: 0xE7EC, - 20659 - 19968: 0xEEEE, - 20661 - 19968: 0xF3F0, - 20663 - 19968: 0xDFBF, - 20670 - 19968: 0xCCCB, - 20677 - 19968: 0xD0C1, - 20681 - 19968: 0xF4D2, - 20682 - 19968: 0xE0BA, - 20687 - 19968: 0xDFC0, - 20689 - 19968: 0xCEE0, - 20693 - 19968: 0xDCD2, - 20694 - 19968: 0xFDEA, - 20698 - 19968: 0xD6F6, - 20702 - 19968: 0xEACA, - 20709 - 19968: 0xE8E9, - 20711 - 19968: 0xE3AC, - 20717 - 19968: 0xF3D0, - 20729 - 19968: 0xCAA4, - 20731 - 19968: 0xDBF8, - 20735 - 19968: 0xDEC7, - 20736 - 19968: 0xEBF0, - 20737 - 19968: 0xF1D6, - 20740 - 19968: 0xE5E2, - 20742 - 19968: 0xCCCC, - 20745 - 19968: 0xCBFB, - 20754 - 19968: 0xEAE3, - 20767 - 19968: 0xDFC1, - 20769 - 19968: 0xD6ED, - 20778 - 19968: 0xE9D0, - 20786 - 19968: 0xEEB9, - 20791 - 19968: 0xD5E3, - 20794 - 19968: 0xD1D3, - 20796 - 19968: 0xE5F0, - 20800 - 19968: 0xE8B4, - 20801 - 19968: 0xEBC3, - 20803 - 19968: 0xEAAA, - 20804 - 19968: 0xFAFC, - 20805 - 19968: 0xF5F6, - 20806 - 19968: 0xF0BC, - 20807 - 19968: 0xFDD4, - 20808 - 19968: 0xE0BB, - 20809 - 19968: 0xCEC3, - 20811 - 19968: 0xD0BA, - 20812 - 19968: 0xF7BA, - 20813 - 19968: 0xD8F3, - 20814 - 19968: 0xF7CD, - 20818 - 19968: 0xE4AE, - 20828 - 19968: 0xD4DF, - 20834 - 19968: 0xD0E7, - 20837 - 19968: 0xECFD, - 20839 - 19968: 0xD2AE, - 20840 - 19968: 0xEEEF, - 20841 - 19968: 0xD5D7, - 20842 - 19968: 0xEAE4, - 20843 - 19968: 0xF8A2, - 20844 - 19968: 0xCDEB, - 20845 - 19968: 0xD7BF, - 20846 - 19968: 0xFBB1, - 20849 - 19968: 0xCDEC, - 20853 - 19968: 0xDCB2, - 20854 - 19968: 0xD0EC, - 20855 - 19968: 0xCEFD, - 20856 - 19968: 0xEEF0, - 20860 - 19968: 0xCCC2, - 20864 - 19968: 0xD0ED, - 20870 - 19968: 0xE5F7, - 20874 - 19968: 0xF3FC, - 20877 - 19968: 0xEEA2, - 20882 - 19968: 0xD9B3, - 20885 - 19968: 0xD8F4, - 20887 - 19968: 0xE9B7, - 20896 - 19968: 0xCEAE, - 20901 - 19968: 0xD9A2, - 20906 - 19968: 0xD8F1, - 20908 - 19968: 0xD4CF, - 20918 - 19968: 0xE5A7, - 20919 - 19968: 0xD5D2, - 20925 - 19968: 0xD6A9, - 20932 - 19968: 0xF4A2, - 20934 - 19968: 0xF1D7, - 20937 - 19968: 0xD5D8, - 20939 - 19968: 0xF0BD, - 20940 - 19968: 0xD7D0, - 20941 - 19968: 0xD4D0, - 20956 - 19968: 0xD7CF, - 20957 - 19968: 0xEBEA, - 20958 - 19968: 0xFDEB, - 20961 - 19968: 0xDBED, - 20976 - 19968: 0xFCC5, - 20977 - 19968: 0xCBC2, - 20982 - 19968: 0xFDD5, - 20984 - 19968: 0xF4C8, - 20985 - 19968: 0xE8EA, - 20986 - 19968: 0xF5F3, - 20989 - 19968: 0xF9DE, - 20992 - 19968: 0xD3EF, - 20995 - 19968: 0xECD3, - 20998 - 19968: 0xDDC2, - 20999 - 19968: 0xEFB7, - 21000 - 19968: 0xE7D4, - 21002 - 19968: 0xCACA, - 21006 - 19968: 0xD9FB, - 21009 - 19968: 0xFAFD, - 21015 - 19968: 0xD6AA, - 21021 - 19968: 0xF4F8, - 21028 - 19968: 0xF7F7, - 21029 - 19968: 0xDCAC, - 21033 - 19968: 0xD7D7, - 21034 - 19968: 0xDFA2, - 21038 - 19968: 0xCEBE, - 21040 - 19968: 0xD3F0, - 21046 - 19968: 0xF0A4, - 21047 - 19968: 0xE1EC, - 21048 - 19968: 0xCFE7, - 21049 - 19968: 0xF3CB, - 21050 - 19968: 0xEDA9, - 21051 - 19968: 0xCABE, - 21059 - 19968: 0xF4EF, - 21063 - 19968: 0xF6CE, - 21066 - 19968: 0xDEFB, - 21067 - 19968: 0xD0BB, - 21068 - 19968: 0xD5B7, - 21069 - 19968: 0xEEF1, - 21076 - 19968: 0xF4A8, - 21078 - 19968: 0xDCF8, - 21083 - 19968: 0xCBA7, - 21085 - 19968: 0xDACE, - 21089 - 19968: 0xE0E6, - 21097 - 19968: 0xEDA5, - 21098 - 19968: 0xEEF2, - 21103 - 19968: 0xDCF9, - 21106 - 19968: 0xF9DC, - 21109 - 19968: 0xF3DC, - 21117 - 19968: 0xF8F2, - 21119 - 19968: 0xF4F9, - 21123 - 19968: 0xFCF1, - 21127 - 19968: 0xD0BC, - 21128 - 19968: 0xDBF9, - 21129 - 19968: 0xD7B1, - 21133 - 19968: 0xCBFC, - 21137 - 19968: 0xF0A5, - 21138 - 19968: 0xCBFD, - 21147 - 19968: 0xD5F4, - 21151 - 19968: 0xCDED, - 21152 - 19968: 0xCAA5, - 21155 - 19968: 0xD6AB, - 21156 - 19968: 0xD0C2, - 21161 - 19968: 0xF0BE, - 21162 - 19968: 0xD2BD, - 21163 - 19968: 0xCCA4, - 21182 - 19968: 0xFAB6, - 21185 - 19968: 0xCCCD, - 21187 - 19968: 0xDAFA, - 21189 - 19968: 0xF6CF, - 21191 - 19968: 0xE9B8, - 21193 - 19968: 0xD8F5, - 21197 - 19968: 0xCCCE, - 21202 - 19968: 0xD7CD, - 21205 - 19968: 0xD4D1, - 21206 - 19968: 0xE9ED, - 21208 - 19968: 0xCAEB, - 21209 - 19968: 0xD9E2, - 21211 - 19968: 0xFDB2, - 21213 - 19968: 0xE3AD, - 21214 - 19968: 0xD6CC, - 21215 - 19968: 0xD9B4, - 21218 - 19968: 0xE1A7, - 21219 - 19968: 0xEED3, - 21220 - 19968: 0xD0C3, - 21235 - 19968: 0xFDB3, - 21237 - 19968: 0xD5E4, - 21240 - 19968: 0xCFE8, - 21242 - 19968: 0xEDC3, - 21243 - 19968: 0xD0B2, - 21246 - 19968: 0xCEFE, - 21247 - 19968: 0xDAA8, - 21253 - 19968: 0xF8D0, - 21256 - 19968: 0xFDD6, - 21261 - 19968: 0xF8D1, - 21263 - 19968: 0xF8D2, - 21264 - 19968: 0xDCD3, - 21269 - 19968: 0xDDE2, - 21270 - 19968: 0xFBF9, - 21271 - 19968: 0xDDC1, - 21273 - 19968: 0xE3B5, - 21280 - 19968: 0xEDDD, - 21281 - 19968: 0xCEC4, - 21283 - 19968: 0xCBA1, - 21290 - 19968: 0xDDE3, - 21295 - 19968: 0xFCDD, - 21305 - 19968: 0xF9AF, - 21311 - 19968: 0xD2FB, - 21312 - 19968: 0xCFA1, - 21313 - 19968: 0xE4A8, - 21315 - 19968: 0xF4B6, - 21316 - 19968: 0xECFE, - 21319 - 19968: 0xE3AE, - 21320 - 19968: 0xE7ED, - 21321 - 19968: 0xFDC1, - 21322 - 19968: 0xDAE2, - 21325 - 19968: 0xD8B3, - 21329 - 19968: 0xDDE4, - 21330 - 19968: 0xF0EF, - 21331 - 19968: 0xF6F1, - 21332 - 19968: 0xFAF0, - 21335 - 19968: 0xD1F5, - 21338 - 19968: 0xDACF, - 21340 - 19968: 0xDCD4, - 21342 - 19968: 0xDCA6, - 21344 - 19968: 0xEFBF, - 21350 - 19968: 0xCECF, - 21352 - 19968: 0xE0D9, - 21359 - 19968: 0xD9D6, - 21360 - 19968: 0xECD4, - 21361 - 19968: 0xEACB, - 21364 - 19968: 0xCABF, - 21365 - 19968: 0xD5B0, - 21367 - 19968: 0xCFE9, - 21373 - 19968: 0xF1ED, - 21375 - 19968: 0xCCCF, - 21380 - 19968: 0xE4F8, - 21395 - 19968: 0xE4ED, - 21400 - 19968: 0xD7D8, - 21402 - 19968: 0xFDA7, - 21407 - 19968: 0xEAAB, - 21408 - 19968: 0xF6B2, - 21413 - 19968: 0xCFF0, - 21414 - 19968: 0xF9BD, - 21421 - 19968: 0xE6F4, - 21435 - 19968: 0xCBDB, - 21443 - 19968: 0xF3D1, - 21448 - 19968: 0xE9D1, - 21449 - 19968: 0xF3A9, - 21450 - 19968: 0xD0E0, - 21451 - 19968: 0xE9D2, - 21453 - 19968: 0xDAE3, - 21460 - 19968: 0xE2D2, - 21462 - 19968: 0xF6A2, - 21463 - 19968: 0xE1F4, - 21467 - 19968: 0xDAE4, - 21473 - 19968: 0xE7D5, - 21474 - 19968: 0xF5BF, - 21475 - 19968: 0xCFA2, - 21476 - 19968: 0xCDAF, - 21477 - 19968: 0xCFA3, - 21481 - 19968: 0xCDB0, - 21482 - 19968: 0xF1FE, - 21483 - 19968: 0xD0A3, - 21484 - 19968: 0xE1AF, - 21485 - 19968: 0xF8A3, - 21487 - 19968: 0xCAA6, - 21488 - 19968: 0xF7BB, - 21489 - 19968: 0xF2EA, - 21490 - 19968: 0xDEC8, - 21491 - 19968: 0xE9D3, - 21496 - 19968: 0xDEC9, - 21507 - 19968: 0xFDDE, - 21508 - 19968: 0xCAC0, - 21512 - 19968: 0xF9EA, - 21513 - 19968: 0xD1CE, - 21514 - 19968: 0xEED4, - 21516 - 19968: 0xD4D2, - 21517 - 19968: 0xD9A3, - 21518 - 19968: 0xFDA8, - 21519 - 19968: 0xD7D9, - 21520 - 19968: 0xF7CE, - 21521 - 19968: 0xFABE, - 21531 - 19968: 0xCFD6, - 21533 - 19968: 0xD7F0, - 21535 - 19968: 0xEBE1, - 21536 - 19968: 0xF8C5, - 21542 - 19968: 0xDCFA, - 21545 - 19968: 0xDDC3, - 21547 - 19968: 0xF9DF, - 21555 - 19968: 0xE7EF, - 21560 - 19968: 0xFDE5, - 21561 - 19968: 0xF6A3, - 21563 - 19968: 0xD9FC, - 21564 - 19968: 0xFDA9, - 21566 - 19968: 0xE7EE, - 21570 - 19968: 0xD5E5, - 21576 - 19968: 0xEFD0, - 21578 - 19968: 0xCDB1, - 21585 - 19968: 0xF7A2, - 21608 - 19968: 0xF1B2, - 21610 - 19968: 0xF1B1, - 21617 - 19968: 0xCDB2, - 21619 - 19968: 0xDAAB, - 21621 - 19968: 0xCAA7, - 21627 - 19968: 0xE3E2, - 21628 - 19968: 0xFBBC, - 21629 - 19968: 0xD9A4, - 21632 - 19968: 0xEEBA, - 21638 - 19968: 0xF8D3, - 21644 - 19968: 0xFBFA, - 21646 - 19968: 0xCFA4, - 21648 - 19968: 0xDCFB, - 21668 - 19968: 0xF6E3, - 21672 - 19968: 0xEDAA, - 21675 - 19968: 0xF2A1, - 21676 - 19968: 0xCEE1, - 21683 - 19968: 0xFAA6, - 21688 - 19968: 0xF9E0, - 21693 - 19968: 0xECD6, - 21696 - 19968: 0xE4EE, - 21697 - 19968: 0xF9A1, - 21700 - 19968: 0xFBEF, - 21704 - 19968: 0xF9EB, - 21705 - 19968: 0xEEA3, - 21729 - 19968: 0xEAAC, - 21733 - 19968: 0xCAA8, - 21736 - 19968: 0xF4FA, - 21741 - 19968: 0xCDD6, - 21742 - 19968: 0xFCF6, - 21746 - 19968: 0xF4C9, - 21754 - 19968: 0xF8D4, - 21764 - 19968: 0xF8A6, - 21766 - 19968: 0xDECA, - 21767 - 19968: 0xF2C6, - 21774 - 19968: 0xD7DA, - 21776 - 19968: 0xD3D0, - 21788 - 19968: 0xD8C5, - 21807 - 19968: 0xEAE6, - 21809 - 19968: 0xF3DD, - 21813 - 19968: 0xE4DA, - 21822 - 19968: 0xF6E4, - 21828 - 19968: 0xF6F2, - 21830 - 19968: 0xDFC2, - 21839 - 19968: 0xD9FD, - 21843 - 19968: 0xCCF6, - 21846 - 19968: 0xD3BA, - 21854 - 19968: 0xE4AF, - 21859 - 19968: 0xF9E1, - 21884 - 19968: 0xF0A6, - 21888 - 19968: 0xCBD3, - 21892 - 19968: 0xE0BC, - 21894 - 19968: 0xF4CA, - 21895 - 19968: 0xD4FA, - 21897 - 19968: 0xFDAA, - 21898 - 19968: 0xF9E2, - 21912 - 19968: 0xF4B7, - 21913 - 19968: 0xFDC2, - 21914 - 19968: 0xFCB0, - 21916 - 19968: 0xFDEC, - 21917 - 19968: 0xCAE2, - 21927 - 19968: 0xFDBD, - 21929 - 19968: 0xEAE7, - 21930 - 19968: 0xDFC3, - 21931 - 19968: 0xD1D2, - 21932 - 19968: 0xCEE2, - 21934 - 19968: 0xD3A4, - 21957 - 19968: 0xFDAB, - 21959 - 19968: 0xDFE0, - 21972 - 19968: 0xF2C7, - 21978 - 19968: 0xE7F0, - 21980 - 19968: 0xD0EE, - 21983 - 19968: 0xF3AA, - 21987 - 19968: 0xDECB, - 21988 - 19968: 0xF6B8, - 22013 - 19968: 0xE1F5, - 22014 - 19968: 0xF1B3, - 22022 - 19968: 0xF7A3, - 22025 - 19968: 0xCAA9, - 22036 - 19968: 0xCFA5, - 22039 - 19968: 0xDFC4, - 22063 - 19968: 0xE1B0, - 22066 - 19968: 0xF0BF, - 22068 - 19968: 0xF6A4, - 22070 - 19968: 0xE3B6, - 22099 - 19968: 0xFAC6, - 22120 - 19968: 0xD0EF, - 22123 - 19968: 0xFDED, - 22132 - 19968: 0xDDC4, - 22150 - 19968: 0xFCF7, - 22181 - 19968: 0xE6BF, - 22188 - 19968: 0xDEAD, - 22190 - 19968: 0xFABF, - 22196 - 19968: 0xE5F1, - 22204 - 19968: 0xEDC4, - 22218 - 19968: 0xD2A5, - 22221 - 19968: 0xFDEE, - 22225 - 19968: 0xF5B6, - 22234 - 19968: 0xE1F6, - 22235 - 19968: 0xDECC, - 22238 - 19968: 0xFCDE, - 22240 - 19968: 0xECD7, - 22256 - 19968: 0xCDDD, - 22265 - 19968: 0xD6B7, - 22266 - 19968: 0xCDB3, - 22275 - 19968: 0xF8D5, - 22276 - 19968: 0xE5D8, - 22280 - 19968: 0xCFEA, - 22283 - 19968: 0xCFD0, - 22285 - 19968: 0xEACC, - 22290 - 19968: 0xEAAE, - 22291 - 19968: 0xEAAD, - 22294 - 19968: 0xD3F1, - 22296 - 19968: 0xD3A5, - 22303 - 19968: 0xF7CF, - 22312 - 19968: 0xEEA4, - 22317 - 19968: 0xD0A4, - 22320 - 19968: 0xF2A2, - 22331 - 19968: 0xD0F0, - 22336 - 19968: 0xF2A3, - 22338 - 19968: 0xF7F8, - 22343 - 19968: 0xD0B3, - 22346 - 19968: 0xDBA9, - 22349 - 19968: 0xD3BB, - 22350 - 19968: 0xCAEC, - 22352 - 19968: 0xF1A6, - 22353 - 19968: 0xCBD5, - 22369 - 19968: 0xF7E7, - 22372 - 19968: 0xCDDE, - 22374 - 19968: 0xF7A4, - 22378 - 19968: 0xF8C0, - 22382 - 19968: 0xD3DD, - 22384 - 19968: 0xCCD0, - 22389 - 19968: 0xCFA6, - 22396 - 19968: 0xF6F3, - 22402 - 19968: 0xE1F7, - 22408 - 19968: 0xD3DC, - 22411 - 19968: 0xFAFE, - 22419 - 19968: 0xFAA7, - 22432 - 19968: 0xEBD9, - 22434 - 19968: 0xCFA7, - 22435 - 19968: 0xEAAF, - 22467 - 19968: 0xE4EF, - 22471 - 19968: 0xE9B9, - 22472 - 19968: 0xF1D8, - 22475 - 19968: 0xD8D8, - 22478 - 19968: 0xE0F2, - 22495 - 19968: 0xE6B4, - 22496 - 19968: 0xDCFC, - 22512 - 19968: 0xF3F1, - 22516 - 19968: 0xE3D0, - 22519 - 19968: 0xF2FB, - 22521 - 19968: 0xDBC6, - 22522 - 19968: 0xD0F1, - 22524 - 19968: 0xD0F2, - 22528 - 19968: 0xCFDC, - 22530 - 19968: 0xD3D1, - 22533 - 19968: 0xCCB1, - 22534 - 19968: 0xF7D8, - 22536 - 19968: 0xCBA8, - 22537 - 19968: 0xEBBC, - 22538 - 19968: 0xE4BE, - 22558 - 19968: 0xF4DC, - 22561 - 19968: 0xDCC2, - 22564 - 19968: 0xF0A7, - 22567 - 19968: 0xE6C0, - 22570 - 19968: 0xCAED, - 22575 - 19968: 0xE8EB, - 22576 - 19968: 0xE5E8, - 22577 - 19968: 0xDCC3, - 22580 - 19968: 0xEDDE, - 22581 - 19968: 0xD3F2, - 22586 - 19968: 0xCCF7, - 22602 - 19968: 0xCED4, - 22603 - 19968: 0xE7AB, - 22607 - 19968: 0xCBC3, - 22609 - 19968: 0xE1B1, - 22612 - 19968: 0xF7B2, - 22615 - 19968: 0xD3F3, - 22616 - 19968: 0xD3D2, - 22618 - 19968: 0xF5C0, - 22622 - 19968: 0xDFDD, - 22625 - 19968: 0xEEF3, - 22626 - 19968: 0xE7F1, - 22628 - 19968: 0xFDB4, - 22645 - 19968: 0xF2C8, - 22649 - 19968: 0xF3D2, - 22652 - 19968: 0xEEF4, - 22654 - 19968: 0xE2D3, - 22659 - 19968: 0xCCD1, - 22661 - 19968: 0xDFEA, - 22665 - 19968: 0xE9BA, - 22675 - 19968: 0xD9D7, - 22684 - 19968: 0xF5CD, - 22686 - 19968: 0xF1F2, - 22687 - 19968: 0xFAC7, - 22696 - 19968: 0xD9F8, - 22697 - 19968: 0xD4C2, - 22702 - 19968: 0xF6E5, - 22707 - 19968: 0xDDC5, - 22714 - 19968: 0xE7F2, - 22715 - 19968: 0xEDDF, - 22718 - 19968: 0xCACB, - 22721 - 19968: 0xDBFA, - 22725 - 19968: 0xE8B5, - 22727 - 19968: 0xD3A6, - 22734 - 19968: 0xFDB5, - 22737 - 19968: 0xF9C9, - 22739 - 19968: 0xE4E2, - 22741 - 19968: 0xFBBD, - 22744 - 19968: 0xD7A4, - 22745 - 19968: 0xCEC5, - 22750 - 19968: 0xCED5, - 22751 - 19968: 0xD6E6, - 22756 - 19968: 0xE5BD, - 22763 - 19968: 0xDECD, - 22764 - 19968: 0xECF3, - 22767 - 19968: 0xEDE0, - 22777 - 19968: 0xECEC, - 22778 - 19968: 0xFBBE, - 22779 - 19968: 0xDFEB, - 22781 - 19968: 0xE1F8, - 22799 - 19968: 0xF9BE, - 22804 - 19968: 0xD0F3, - 22805 - 19968: 0xE0AA, - 22806 - 19968: 0xE8E2, - 22809 - 19968: 0xE2D4, - 22810 - 19968: 0xD2FD, - 22812 - 19968: 0xE5A8, - 22818 - 19968: 0xD9D3, - 22823 - 19968: 0xD3DE, - 22825 - 19968: 0xF4B8, - 22826 - 19968: 0xF7BC, - 22827 - 19968: 0xDCFD, - 22829 - 19968: 0xE8EC, - 22830 - 19968: 0xE4E7, - 22833 - 19968: 0xE3F7, - 22839 - 19968: 0xECA8, - 22846 - 19968: 0xFAF1, - 22852 - 19968: 0xE5F2, - 22855 - 19968: 0xD0F4, - 22856 - 19968: 0xD2AF, - 22857 - 19968: 0xDCE5, - 22862 - 19968: 0xD0A5, - 22863 - 19968: 0xF1B4, - 22864 - 19968: 0xFCB1, - 22865 - 19968: 0xCCF8, - 22868 - 19968: 0xDDC6, - 22869 - 19968: 0xFAD1, - 22871 - 19968: 0xF7DF, - 22874 - 19968: 0xFAA8, - 22880 - 19968: 0xEEF5, - 22882 - 19968: 0xDECE, - 22887 - 19968: 0xE7F3, - 22890 - 19968: 0xF7AC, - 22891 - 19968: 0xEBC4, - 22892 - 19968: 0xEDE1, - 22893 - 19968: 0xE0AB, - 22894 - 19968: 0xDDC7, - 22899 - 19968: 0xD2B3, - 22900 - 19968: 0xD2BF, - 22904 - 19968: 0xCACC, - 22909 - 19968: 0xFBBF, - 22914 - 19968: 0xE5FD, - 22915 - 19968: 0xDDE5, - 22916 - 19968: 0xD8CD, - 22922 - 19968: 0xECF4, - 22931 - 19968: 0xD0F5, - 22934 - 19968: 0xE8ED, - 22935 - 19968: 0xD0D2, - 22937 - 19968: 0xD9D8, - 22949 - 19968: 0xF6E6, - 22952 - 19968: 0xDBAA, - 22956 - 19968: 0xF7E0, - 22969 - 19968: 0xD8D9, - 22971 - 19968: 0xF4A3, - 22974 - 19968: 0xF4DD, - 22979 - 19968: 0xEFD1, - 22982 - 19968: 0xD9B5, - 22985 - 19968: 0xEDAB, - 22987 - 19968: 0xE3B7, - 22992 - 19968: 0xEEBB, - 22993 - 19968: 0xCDB4, - 22995 - 19968: 0xE0F3, - 22996 - 19968: 0xEACD, - 23001 - 19968: 0xECF5, - 23002 - 19968: 0xE8EE, - 23004 - 19968: 0xCBA9, - 23005 - 19968: 0xF1AF, - 23014 - 19968: 0xCACD, - 23016 - 19968: 0xECA9, - 23018 - 19968: 0xF2EB, - 23020 - 19968: 0xFDEF, - 23022 - 19968: 0xF9F3, - 23032 - 19968: 0xE6C1, - 23035 - 19968: 0xECD8, - 23039 - 19968: 0xEDAC, - 23041 - 19968: 0xEACE, - 23043 - 19968: 0xE8DF, - 23057 - 19968: 0xDECF, - 23064 - 19968: 0xD2A6, - 23067 - 19968: 0xE7F4, - 23068 - 19968: 0xD1D6, - 23071 - 19968: 0xE6C2, - 23072 - 19968: 0xE3E3, - 23077 - 19968: 0xE4B0, - 23081 - 19968: 0xD8B4, - 23094 - 19968: 0xF6A5, - 23100 - 19968: 0xF3DE, - 23105 - 19968: 0xD7A5, - 23110 - 19968: 0xF7E8, - 23113 - 19968: 0xE8C6, - 23130 - 19968: 0xFBE6, - 23138 - 19968: 0xDDE6, - 23142 - 19968: 0xDCFE, - 23186 - 19968: 0xD8DA, - 23194 - 19968: 0xDAAC, - 23195 - 19968: 0xEAB0, - 23204 - 19968: 0xE3B8, - 23233 - 19968: 0xCAAA, - 23234 - 19968: 0xE1F9, - 23236 - 19968: 0xEAB1, - 23241 - 19968: 0xF2EC, - 23244 - 19968: 0xFAEE, - 23265 - 19968: 0xEED5, - 23270 - 19968: 0xF9F4, - 23273 - 19968: 0xD2EC, - 23301 - 19968: 0xFBFB, - 23305 - 19968: 0xFDF0, - 23307 - 19968: 0xE0BD, - 23308 - 19968: 0xCEE3, - 23318 - 19968: 0xF8C6, - 23338 - 19968: 0xDEAE, - 23360 - 19968: 0xDFC5, - 23363 - 19968: 0xE5BE, - 23376 - 19968: 0xEDAD, - 23377 - 19968: 0xFAEA, - 23380 - 19968: 0xCDEE, - 23381 - 19968: 0xEDA6, - 23383 - 19968: 0xEDAE, - 23384 - 19968: 0xF0ED, - 23386 - 19968: 0xDDA1, - 23388 - 19968: 0xEDAF, - 23389 - 19968: 0xFCF8, - 23391 - 19968: 0xD8EB, - 23395 - 19968: 0xCCF9, - 23396 - 19968: 0xCDB5, - 23401 - 19968: 0xFAA9, - 23403 - 19968: 0xE1DD, - 23408 - 19968: 0xE2D5, - 23409 - 19968: 0xEDCF, - 23413 - 19968: 0xDDA2, - 23416 - 19968: 0xF9CA, - 23418 - 19968: 0xEAE8, - 23420 - 19968: 0xE5ED, - 23429 - 19968: 0xD3EB, - 23431 - 19968: 0xE9D4, - 23432 - 19968: 0xE1FA, - 23433 - 19968: 0xE4CC, - 23435 - 19968: 0xE1E4, - 23436 - 19968: 0xE8C7, - 23439 - 19968: 0xCEDB, - 23443 - 19968: 0xDCD5, - 23445 - 19968: 0xF7B5, - 23446 - 19968: 0xFCF3, - 23447 - 19968: 0xF0F3, - 23448 - 19968: 0xCEAF, - 23449 - 19968: 0xF1B5, - 23450 - 19968: 0xEFD2, - 23451 - 19968: 0xE8C8, - 23452 - 19968: 0xEBF1, - 23458 - 19968: 0xCBD4, - 23459 - 19968: 0xE0BE, - 23460 - 19968: 0xE3F8, - 23461 - 19968: 0xEAE9, - 23462 - 19968: 0xFCB2, - 23468 - 19968: 0xE0F4, - 23470 - 19968: 0xCFE0, - 23472 - 19968: 0xEEA5, - 23475 - 19968: 0xFAAA, - 23476 - 19968: 0xE6C3, - 23477 - 19968: 0xE1B2, - 23478 - 19968: 0xCAAB, - 23480 - 19968: 0xE3E4, - 23481 - 19968: 0xE9BB, - 23487 - 19968: 0xE2D6, - 23488 - 19968: 0xF3F2, - 23490 - 19968: 0xEED6, - 23491 - 19968: 0xEAB2, - 23492 - 19968: 0xD0F6, - 23493 - 19968: 0xECD9, - 23494 - 19968: 0xDACB, - 23495 - 19968: 0xCFA8, - 23500 - 19968: 0xDDA3, - 23504 - 19968: 0xD8DB, - 23506 - 19968: 0xF9CE, - 23507 - 19968: 0xE9D5, - 23508 - 19968: 0xE3D1, - 23511 - 19968: 0xD2BC, - 23518 - 19968: 0xD8AC, - 23519 - 19968: 0xF3CC, - 23521 - 19968: 0xCDFB, - 23522 - 19968: 0xF6D6, - 23524 - 19968: 0xE7F5, - 23525 - 19968: 0xE8EF, - 23526 - 19968: 0xE3F9, - 23527 - 19968: 0xD2BB, - 23528 - 19968: 0xF3F3, - 23529 - 19968: 0xE3FB, - 23531 - 19968: 0xDED0, - 23532 - 19968: 0xCEB0, - 23534 - 19968: 0xD6F7, - 23535 - 19968: 0xF1D9, - 23541 - 19968: 0xF5C1, - 23542 - 19968: 0xDCC4, - 23544 - 19968: 0xF5BB, - 23546 - 19968: 0xDED1, - 23553 - 19968: 0xDCE6, - 23556 - 19968: 0xDED2, - 23559 - 19968: 0xEDE2, - 23560 - 19968: 0xEEF6, - 23561 - 19968: 0xEACF, - 23562 - 19968: 0xF0EE, - 23563 - 19968: 0xE3FC, - 23565 - 19968: 0xD3DF, - 23566 - 19968: 0xD3F4, - 23567 - 19968: 0xE1B3, - 23569 - 19968: 0xE1B4, - 23574 - 19968: 0xF4D3, - 23577 - 19968: 0xDFC6, - 23588 - 19968: 0xE9D6, - 23592 - 19968: 0xDBAB, - 23601 - 19968: 0xF6A6, - 23608 - 19968: 0xE3B9, - 23609 - 19968: 0xEBC5, - 23610 - 19968: 0xF4A9, - 23611 - 19968: 0xCDB6, - 23612 - 19968: 0xD2F9, - 23614 - 19968: 0xDAAD, - 23615 - 19968: 0xD2E3, - 23616 - 19968: 0xCFD1, - 23621 - 19968: 0xCBDC, - 23622 - 19968: 0xCCFA, - 23624 - 19968: 0xCFDD, - 23627 - 19968: 0xE8A9, - 23629 - 19968: 0xE3BB, - 23630 - 19968: 0xE3BA, - 23633 - 19968: 0xE0DA, - 23637 - 19968: 0xEEF7, - 23643 - 19968: 0xDCB3, - 23648 - 19968: 0xD3F5, - 23650 - 19968: 0xD7A6, - 23652 - 19968: 0xF6B5, - 23653 - 19968: 0xD7DB, - 23660 - 19968: 0xE1D5, - 23663 - 19968: 0xD4EA, - 23665 - 19968: 0xDFA3, - 23673 - 19968: 0xFDDF, - 23696 - 19968: 0xD0F7, - 23697 - 19968: 0xEDD4, - 23713 - 19968: 0xCBAA, - 23721 - 19968: 0xE4DB, - 23723 - 19968: 0xE1FB, - 23724 - 19968: 0xCBA2, - 23729 - 19968: 0xD3E0, - 23731 - 19968: 0xE4BF, - 23733 - 19968: 0xFBC0, - 23735 - 19968: 0xDABE, - 23736 - 19968: 0xE4CD, - 23738 - 19968: 0xD6B9, - 23742 - 19968: 0xEFC0, - 23744 - 19968: 0xE1FC, - 23769 - 19968: 0xF6B9, - 23776 - 19968: 0xDFC7, - 23784 - 19968: 0xE4B1, - 23791 - 19968: 0xDCE7, - 23792 - 19968: 0xDCE8, - 23796 - 19968: 0xFAD6, - 23798 - 19968: 0xD3F6, - 23803 - 19968: 0xF1DA, - 23805 - 19968: 0xFAF2, - 23815 - 19968: 0xE2FD, - 23821 - 19968: 0xD5CF, - 23822 - 19968: 0xD0F8, - 23825 - 19968: 0xCDDF, - 23828 - 19968: 0xF5CB, - 23830 - 19968: 0xE4F0, - 23831 - 19968: 0xCBAB, - 23833 - 19968: 0xD7C4, - 23847 - 19968: 0xE2FE, - 23849 - 19968: 0xDDDA, - 23883 - 19968: 0xDAAE, - 23884 - 19968: 0xCAEE, - 23888 - 19968: 0xD5B9, - 23913 - 19968: 0xE3A1, - 23916 - 19968: 0xE8E3, - 23919 - 19968: 0xF3AB, - 23943 - 19968: 0xCFA9, - 23947 - 19968: 0xD3F7, - 23965 - 19968: 0xD4F1, - 23968 - 19968: 0xCEE4, - 23970 - 19968: 0xE8F2, - 23978 - 19968: 0xE5F5, - 23992 - 19968: 0xE7AE, - 23994 - 19968: 0xD6BA, - 23996 - 19968: 0xDFEC, - 23997 - 19968: 0xE4C0, - 24013 - 19968: 0xE8E4, - 24018 - 19968: 0xD8B5, - 24022 - 19968: 0xE4DC, - 24029 - 19968: 0xF4B9, - 24030 - 19968: 0xF1B6, - 24033 - 19968: 0xE2DE, - 24034 - 19968: 0xE1B5, - 24037 - 19968: 0xCDEF, - 24038 - 19968: 0xF1A7, - 24039 - 19968: 0xCEE5, - 24040 - 19968: 0xCBDD, - 24043 - 19968: 0xD9E3, - 24046 - 19968: 0xF3AC, - 24049 - 19968: 0xD0F9, - 24050 - 19968: 0xECAB, - 24051 - 19968: 0xDED3, - 24052 - 19968: 0xF7E9, - 24055 - 19968: 0xF9F5, - 24061 - 19968: 0xE1DE, - 24062 - 19968: 0xCBEE, - 24066 - 19968: 0xE3BC, - 24067 - 19968: 0xF8D6, - 24070 - 19968: 0xDBEE, - 24076 - 19968: 0xFDF1, - 24081 - 19968: 0xF7B6, - 24086 - 19968: 0xF4DE, - 24089 - 19968: 0xF2ED, - 24091 - 19968: 0xDBD9, - 24093 - 19968: 0xF0A8, - 24101 - 19968: 0xE1FD, - 24107 - 19968: 0xDED4, - 24109 - 19968: 0xE0AC, - 24115 - 19968: 0xEDE3, - 24118 - 19968: 0xD3E1, - 24120 - 19968: 0xDFC8, - 24125 - 19968: 0xD9B6, - 24127 - 19968: 0xFDAC, - 24128 - 19968: 0xEFD3, - 24132 - 19968: 0xE4C1, - 24133 - 19968: 0xF8EB, - 24135 - 19968: 0xDBAC, - 24140 - 19968: 0xFCC6, - 24149 - 19968: 0xD8AD, - 24159 - 19968: 0xF6BA, - 24161 - 19968: 0xDBDF, - 24162 - 19968: 0xD3D3, - 24163 - 19968: 0xF8C7, - 24178 - 19968: 0xCACE, - 24179 - 19968: 0xF8C1, - 24180 - 19968: 0xD2B4, - 24183 - 19968: 0xDCB4, - 24184 - 19968: 0xFAB9, - 24185 - 19968: 0xCACF, - 24187 - 19968: 0xFCB3, - 24188 - 19968: 0xEAEA, - 24189 - 19968: 0xEAEB, - 24190 - 19968: 0xD0FA, - 24196 - 19968: 0xEDE4, - 24199 - 19968: 0xDDE7, - 24202 - 19968: 0xDFC9, - 24207 - 19968: 0xDFED, - 24213 - 19968: 0xEEBC, - 24215 - 19968: 0xEFC1, - 24218 - 19968: 0xCCD2, - 24220 - 19968: 0xDDA4, - 24224 - 19968: 0xDFCA, - 24230 - 19968: 0xD3F8, - 24231 - 19968: 0xF1A8, - 24235 - 19968: 0xCDB7, - 24237 - 19968: 0xEFD4, - 24245 - 19968: 0xE4DD, - 24246 - 19968: 0xDFEE, - 24247 - 19968: 0xCBAC, - 24248 - 19968: 0xE9BC, - 24254 - 19968: 0xEAEC, - 24258 - 19968: 0xDFCB, - 24264 - 19968: 0xF9BF, - 24265 - 19968: 0xD6AF, - 24266 - 19968: 0xD5C6, - 24272 - 19968: 0xCFAA, - 24275 - 19968: 0xCEA9, - 24278 - 19968: 0xD6F8, - 24282 - 19968: 0xF1B7, - 24283 - 19968: 0xEEF8, - 24287 - 19968: 0xD9D9, - 24288 - 19968: 0xF3DF, - 24290 - 19968: 0xF8C8, - 24291 - 19968: 0xCEC6, - 24300 - 19968: 0xD5E6, - 24307 - 19968: 0xF4E6, - 24310 - 19968: 0xE6C5, - 24311 - 19968: 0xEFD5, - 24314 - 19968: 0xCBEF, - 24315 - 19968: 0xFCDF, - 24321 - 19968: 0xDCA7, - 24324 - 19968: 0xD6E7, - 24330 - 19968: 0xF8C9, - 24335 - 19968: 0xE3D2, - 24337 - 19968: 0xE3BD, - 24339 - 19968: 0xCFE1, - 24340 - 19968: 0xF0C0, - 24341 - 19968: 0xECDA, - 24343 - 19968: 0xDDD7, - 24344 - 19968: 0xFBF0, - 24347 - 19968: 0xECAC, - 24351 - 19968: 0xF0A9, - 24358 - 19968: 0xFAD7, - 24359 - 19968: 0xFBC1, - 24361 - 19968: 0xD2C0, - 24369 - 19968: 0xE5B0, - 24373 - 19968: 0xEDE5, - 24378 - 19968: 0xCBAD, - 24380 - 19968: 0xF9B0, - 24392 - 19968: 0xF7A5, - 24394 - 19968: 0xCBAE, - 24396 - 19968: 0xDAAF, - 24398 - 19968: 0xD8B6, - 24406 - 19968: 0xD3A7, - 24407 - 19968: 0xFBB2, - 24409 - 19968: 0xFDC4, - 24411 - 19968: 0xECAD, - 24418 - 19968: 0xFBA1, - 24422 - 19968: 0xE5E9, - 24423 - 19968: 0xE9EE, - 24425 - 19968: 0xF3F4, - 24426 - 19968: 0xF8F3, - 24427 - 19968: 0xF0C1, - 24428 - 19968: 0xDEAF, - 24429 - 19968: 0xF8B0, - 24432 - 19968: 0xF3E0, - 24433 - 19968: 0xE7AF, - 24439 - 19968: 0xDBAD, - 24441 - 19968: 0xE6B5, - 24444 - 19968: 0xF9A8, - 24447 - 19968: 0xDDD8, - 24448 - 19968: 0xE8D9, - 24449 - 19968: 0xEFD6, - 24453 - 19968: 0xD3E2, - 24455 - 19968: 0xE2DF, - 24458 - 19968: 0xFCE0, - 24459 - 19968: 0xD7C8, - 24460 - 19968: 0xFDAD, - 24464 - 19968: 0xDFEF, - 24465 - 19968: 0xCCD3, - 24466 - 19968: 0xD3F9, - 24471 - 19968: 0xD4F0, - 24472 - 19968: 0xDBC7, - 24473 - 19968: 0xDED5, - 24478 - 19968: 0xF0F4, - 24480 - 19968: 0xD5D0, - 24481 - 19968: 0xE5D9, - 24488 - 19968: 0xFCC7, - 24489 - 19968: 0xDCD6, - 24490 - 19968: 0xE2E0, - 24494 - 19968: 0xDAB0, - 24501 - 19968: 0xF3A3, - 24503 - 19968: 0xD3EC, - 24505 - 19968: 0xF4CB, - 24509 - 19968: 0xFDC5, - 24515 - 19968: 0xE3FD, - 24517 - 19968: 0xF9B1, - 24524 - 19968: 0xD0FB, - 24525 - 19968: 0xECDB, - 24534 - 19968: 0xF5BC, - 24535 - 19968: 0xF2A4, - 24536 - 19968: 0xD8CE, - 24537 - 19968: 0xD8CF, - 24544 - 19968: 0xF5F7, - 24555 - 19968: 0xF6E1, - 24565 - 19968: 0xD2B7, - 24573 - 19968: 0xFBEC, - 24575 - 19968: 0xDDC8, - 24591 - 19968: 0xE4E8, - 24594 - 19968: 0xD2C1, - 24598 - 19968: 0xF8D7, - 24604 - 19968: 0xD6BB, - 24605 - 19968: 0xDED6, - 24608 - 19968: 0xF7BD, - 24609 - 19968: 0xECAE, - 24613 - 19968: 0xD0E1, - 24615 - 19968: 0xE0F5, - 24616 - 19968: 0xEAB3, - 24618 - 19968: 0xCED6, - 24623 - 19968: 0xCCA5, - 24641 - 19968: 0xECF6, - 24642 - 19968: 0xE2E1, - 24643 - 19968: 0xE3BE, - 24653 - 19968: 0xFCC8, - 24656 - 19968: 0xCDF0, - 24658 - 19968: 0xF9F6, - 24661 - 19968: 0xDFF0, - 24665 - 19968: 0xE5BF, - 24669 - 19968: 0xCEBF, - 24674 - 19968: 0xFCE1, - 24675 - 19968: 0xEDB0, - 24676 - 19968: 0xFDD1, - 24677 - 19968: 0xF6BB, - 24680 - 19968: 0xF9CF, - 24681 - 19968: 0xEBDA, - 24682 - 19968: 0xCAC1, - 24684 - 19968: 0xD2B8, - 24685 - 19968: 0xCDF1, - 24687 - 19968: 0xE3D3, - 24688 - 19968: 0xFDE6, - 24709 - 19968: 0xE6ED, - 24713 - 19968: 0xE3FA, - 24716 - 19968: 0xF0AA, - 24717 - 19968: 0xF9D0, - 24724 - 19968: 0xFCE2, - 24726 - 19968: 0xF8A7, - 24730 - 19968: 0xE1E5, - 24731 - 19968: 0xEEF9, - 24735 - 19968: 0xE7F6, - 24736 - 19968: 0xEAED, - 24739 - 19968: 0xFCB4, - 24740 - 19968: 0xF5C2, - 24743 - 19968: 0xD7DC, - 24752 - 19968: 0xF0F5, - 24754 - 19968: 0xDDE8, - 24755 - 19968: 0xD3ED, - 24756 - 19968: 0xF5FC, - 24758 - 19968: 0xDABF, - 24760 - 19968: 0xCCFB, - 24764 - 19968: 0xD3FA, - 24765 - 19968: 0xF4A4, - 24773 - 19968: 0xEFD7, - 24775 - 19968: 0xD4C3, - 24785 - 19968: 0xFBE3, - 24794 - 19968: 0xFBED, - 24796 - 19968: 0xE0AD, - 24799 - 19968: 0xEAEE, - 24800 - 19968: 0xFBB3, - 24801 - 19968: 0xE4C2, - 24816 - 19968: 0xF6E7, - 24817 - 19968: 0xD2DD, - 24819 - 19968: 0xDFCC, - 24822 - 19968: 0xFCC9, - 24825 - 19968: 0xE5A9, - 24826 - 19968: 0xE0F6, - 24827 - 19968: 0xF6B3, - 24833 - 19968: 0xE1FE, - 24838 - 19968: 0xCBF0, - 24840 - 19968: 0xEAEF, - 24841 - 19968: 0xEAF0, - 24845 - 19968: 0xDAC0, - 24846 - 19968: 0xF8B4, - 24847 - 19968: 0xEBF2, - 24853 - 19968: 0xE4C3, - 24858 - 19968: 0xE9D7, - 24859 - 19968: 0xE4F1, - 24863 - 19968: 0xCAEF, - 24871 - 19968: 0xCED7, - 24880 - 19968: 0xFCCA, - 24884 - 19968: 0xF3E1, - 24887 - 19968: 0xCBC4, - 24892 - 19968: 0xE3E5, - 24894 - 19968: 0xCBC5, - 24895 - 19968: 0xEAB4, - 24898 - 19968: 0xE9BD, - 24900 - 19968: 0xD7C9, - 24903 - 19968: 0xEBDB, - 24904 - 19968: 0xEDB1, - 24906 - 19968: 0xCCC3, - 24907 - 19968: 0xF7BE, - 24908 - 19968: 0xFCCB, - 24915 - 19968: 0xF8F4, - 24917 - 19968: 0xD9B7, - 24920 - 19968: 0xF3D3, - 24921 - 19968: 0xF3D4, - 24925 - 19968: 0xF7E4, - 24927 - 19968: 0xF7D1, - 24930 - 19968: 0xD8B7, - 24931 - 19968: 0xCEB1, - 24932 - 19968: 0xCAC2, - 24935 - 19968: 0xFBB4, - 24936 - 19968: 0xCBC6, - 24939 - 19968: 0xF0F6, - 24942 - 19968: 0xD5E7, - 24944 - 19968: 0xEAD0, - 24950 - 19968: 0xCCD4, - 24951 - 19968: 0xCBAF, - 24957 - 19968: 0xF4AA, - 24958 - 19968: 0xE9AF, - 24961 - 19968: 0xF5C3, - 24962 - 19968: 0xE9D8, - 24970 - 19968: 0xDDE9, - 24974 - 19968: 0xF1F3, - 24976 - 19968: 0xD5FB, - 24977 - 19968: 0xDEBB, - 24980 - 19968: 0xF4FB, - 24984 - 19968: 0xFDF3, - 24985 - 19968: 0xFDF2, - 24986 - 19968: 0xF7A6, - 24996 - 19968: 0xDDC9, - 24999 - 19968: 0xD4D3, - 25001 - 19968: 0xCCA8, - 25003 - 19968: 0xDAC1, - 25004 - 19968: 0xCCD5, - 25006 - 19968: 0xD9E4, - 25010 - 19968: 0xFACA, - 25014 - 19968: 0xE5E3, - 25018 - 19968: 0xD3BC, - 25022 - 19968: 0xCAF0, - 25027 - 19968: 0xD0C4, - 25031 - 19968: 0xCAD0, - 25032 - 19968: 0xFAAB, - 25033 - 19968: 0xEBEB, - 25034 - 19968: 0xE7F8, - 25035 - 19968: 0xD9E5, - 25062 - 19968: 0xD1D7, - 25074 - 19968: 0xF3A4, - 25078 - 19968: 0xD4FB, - 25079 - 19968: 0xFCE3, - 25080 - 19968: 0xFAD8, - 25082 - 19968: 0xF3D5, - 25084 - 19968: 0xCFAB, - 25087 - 19968: 0xEBF3, - 25088 - 19968: 0xD5FC, - 25095 - 19968: 0xD3D4, - 25096 - 19968: 0xCDFC, - 25098 - 19968: 0xD9E6, - 25100 - 19968: 0xE2F9, - 25101 - 19968: 0xE2A1, - 25102 - 19968: 0xEBD4, - 25104 - 19968: 0xE0F7, - 25105 - 19968: 0xE4B2, - 25106 - 19968: 0xCCFC, - 25110 - 19968: 0xFBE4, - 25114 - 19968: 0xF4AB, - 25119 - 19968: 0xD0BD, - 25121 - 19968: 0xCAF1, - 25130 - 19968: 0xEFB8, - 25134 - 19968: 0xD7C0, - 25136 - 19968: 0xEEFA, - 25137 - 19968: 0xFDF4, - 25140 - 19968: 0xD3E3, - 25142 - 19968: 0xFBC2, - 25150 - 19968: 0xD5E8, - 25151 - 19968: 0xDBAE, - 25152 - 19968: 0xE1B6, - 25153 - 19968: 0xF8B7, - 25159 - 19968: 0xE0BF, - 25160 - 19968: 0xFBC3, - 25161 - 19968: 0xDDEA, - 25163 - 19968: 0xE2A2, - 25165 - 19968: 0xEEA6, - 25171 - 19968: 0xF6E8, - 25176 - 19968: 0xF6F5, - 25198 - 19968: 0xDDCA, - 25201 - 19968: 0xD0E2, - 25206 - 19968: 0xDDA6, - 25209 - 19968: 0xDDEB, - 25212 - 19968: 0xE4F9, - 25215 - 19968: 0xE3AF, - 25216 - 19968: 0xD0FC, - 25220 - 19968: 0xF4FC, - 25225 - 19968: 0xCCBC, - 25226 - 19968: 0xF7EA, - 25233 - 19968: 0xE5E4, - 25234 - 19968: 0xDFF1, - 25237 - 19968: 0xF7E1, - 25239 - 19968: 0xF9F7, - 25240 - 19968: 0xEFB9, - 25243 - 19968: 0xF8D8, - 25259 - 19968: 0xF9A9, - 25265 - 19968: 0xF8D9, - 25269 - 19968: 0xEEBD, - 25273 - 19968: 0xD8C6, - 25276 - 19968: 0xE4E3, - 25277 - 19968: 0xF5CE, - 25282 - 19968: 0xDDD9, - 25287 - 19968: 0xD9E7, - 25288 - 19968: 0xD2B9, - 25289 - 19968: 0xD5C3, - 25292 - 19968: 0xDAE5, - 25293 - 19968: 0xDAD0, - 25295 - 19968: 0xD1D9, - 25296 - 19968: 0xCED8, - 25298 - 19968: 0xCBDE, - 25299 - 19968: 0xF4AC, - 25300 - 19968: 0xDAFB, - 25302 - 19968: 0xF6E9, - 25303 - 19968: 0xE8F3, - 25304 - 19968: 0xCFAC, - 25305 - 19968: 0xF0F0, - 25307 - 19968: 0xF4FD, - 25308 - 19968: 0xDBC8, - 25324 - 19968: 0xCEC0, - 25325 - 19968: 0xE3D4, - 25326 - 19968: 0xD1CF, - 25327 - 19968: 0xF1F5, - 25329 - 19968: 0xCDF2, - 25331 - 19968: 0xCFEB, - 25335 - 19968: 0xCDB8, - 25342 - 19968: 0xE3A6, - 25343 - 19968: 0xD1DA, - 25345 - 19968: 0xF2A5, - 25351 - 19968: 0xF2A6, - 25353 - 19968: 0xE4CE, - 25361 - 19968: 0xD3FB, - 25387 - 19968: 0xF1A9, - 25391 - 19968: 0xF2C9, - 25402 - 19968: 0xEFD8, - 25403 - 19968: 0xE6C9, - 25405 - 19968: 0xD8B8, - 25406 - 19968: 0xFAF3, - 25417 - 19968: 0xF3B5, - 25420 - 19968: 0xF8A4, - 25423 - 19968: 0xD1F3, - 25424 - 19968: 0xE6C8, - 25429 - 19968: 0xF8DA, - 25447 - 19968: 0xDCE9, - 25448 - 19968: 0xDED7, - 25454 - 19968: 0xCBDF, - 25458 - 19968: 0xCFEC, - 25463 - 19968: 0xF4DF, - 25466 - 19968: 0xD1F4, - 25467 - 19968: 0xD2BA, - 25471 - 19968: 0xDFF2, - 25475 - 19968: 0xE1B7, - 25480 - 19968: 0xE2A3, - 25481 - 19968: 0xD3FC, - 25484 - 19968: 0xEDE6, - 25490 - 19968: 0xDBC9, - 25494 - 19968: 0xE4FA, - 25496 - 19968: 0xCFDE, - 25499 - 19968: 0xCED0, - 25504 - 19968: 0xD5D3, - 25505 - 19968: 0xF3F5, - 25506 - 19968: 0xF7AE, - 25509 - 19968: 0xEFC8, - 25511 - 19968: 0xCDF3, - 25512 - 19968: 0xF5CF, - 25513 - 19968: 0xE5F3, - 25514 - 19968: 0xF0C2, - 25536 - 19968: 0xCAD1, - 25540 - 19968: 0xEAF1, - 25542 - 19968: 0xD0A6, - 25551 - 19968: 0xD9DA, - 25552 - 19968: 0xF0AB, - 25558 - 19968: 0xEBE7, - 25562 - 19968: 0xE5C0, - 25563 - 19968: 0xFCB5, - 25569 - 19968: 0xE4C4, - 25581 - 19968: 0xCCA9, - 25582 - 19968: 0xFDC6, - 25588 - 19968: 0xEAB5, - 25590 - 19968: 0xE5AA, - 25591 - 19968: 0xDFBA, - 25613 - 19968: 0xE1DF, - 25615 - 19968: 0xDAD1, - 25620 - 19968: 0xE1B8, - 25622 - 19968: 0xE8F4, - 25623 - 19968: 0xD3FD, - 25628 - 19968: 0xE2A4, - 25634 - 19968: 0xF2CA, - 25644 - 19968: 0xDAE6, - 25645 - 19968: 0xF7B3, - 25658 - 19968: 0xFDCD, - 25662 - 19968: 0xF3B6, - 25688 - 19968: 0xEED7, - 25696 - 19968: 0xF5C4, - 25705 - 19968: 0xD8A4, - 25711 - 19968: 0xF2A7, - 25720 - 19968: 0xD9B8, - 25721 - 19968: 0xD9B9, - 25722 - 19968: 0xEFC9, - 25736 - 19968: 0xD6CE, - 25745 - 19968: 0xF7CB, - 25746 - 19968: 0xDFAE, - 25747 - 19968: 0xE8F5, - 25754 - 19968: 0xD2B5, - 25758 - 19968: 0xD3D5, - 25764 - 19968: 0xF4CC, - 25765 - 19968: 0xDAFC, - 25771 - 19968: 0xD9E8, - 25773 - 19968: 0xF7EB, - 25774 - 19968: 0xF5C9, - 25776 - 19968: 0xF3BC, - 25778 - 19968: 0xDAD2, - 25787 - 19968: 0xD3B5, - 25793 - 19968: 0xE8B6, - 25796 - 19968: 0xD6CF, - 25797 - 19968: 0xF4BA, - 25799 - 19968: 0xF7C9, - 25802 - 19968: 0xCCAA, - 25805 - 19968: 0xF0C3, - 25806 - 19968: 0xCCD6, - 25810 - 19968: 0xD0D3, - 25812 - 19968: 0xD3BD, - 25816 - 19968: 0xDBFB, - 25818 - 19968: 0xCBE0, - 25825 - 19968: 0xD3E4, - 25826 - 19968: 0xF6F7, - 25829 - 19968: 0xD5BA, - 25830 - 19968: 0xF3CD, - 25831 - 19968: 0xCBE1, - 25836 - 19968: 0xEBF4, - 25842 - 19968: 0xF4AD, - 25844 - 19968: 0xFCAA, - 25850 - 19968: 0xF7EC, - 25854 - 19968: 0xE8F6, - 25856 - 19968: 0xDAE7, - 25860 - 19968: 0xF7CC, - 25880 - 19968: 0xE5C1, - 25885 - 19968: 0xE0EE, - 25891 - 19968: 0xD5FD, - 25898 - 19968: 0xCEE6, - 25899 - 19968: 0xFCAB, - 25900 - 19968: 0xD5BB, - 25903 - 19968: 0xF2A8, - 25910 - 19968: 0xE2A5, - 25911 - 19968: 0xCDB9, - 25912 - 19968: 0xEAF2, - 25913 - 19968: 0xCBC7, - 25915 - 19968: 0xCDF4, - 25918 - 19968: 0xDBAF, - 25919 - 19968: 0xEFD9, - 25925 - 19968: 0xCDBA, - 25928 - 19968: 0xFCF9, - 25933 - 19968: 0xDFF3, - 25934 - 19968: 0xCEE7, - 25935 - 19968: 0xDAC2, - 25937 - 19968: 0xCFAD, - 25942 - 19968: 0xE7F9, - 25943 - 19968: 0xF8A8, - 25950 - 19968: 0xF3E2, - 25954 - 19968: 0xCAF2, - 25955 - 19968: 0xDFA4, - 25958 - 19968: 0xD4C4, - 25964 - 19968: 0xCCD7, - 25965 - 19968: 0xE5C2, - 25970 - 19968: 0xCDBB, - 25972 - 19968: 0xEFDA, - 25973 - 19968: 0xEED8, - 25975 - 19968: 0xDDA7, - 25976 - 19968: 0xE2A6, - 25982 - 19968: 0xE0C0, - 25986 - 19968: 0xD6B0, - 25987 - 19968: 0xF8CA, - 25989 - 19968: 0xFCFA, - 25991 - 19968: 0xD9FE, - 25996 - 19968: 0xDEB0, - 26000 - 19968: 0xDDEC, - 26001 - 19968: 0xDAE8, - 26007 - 19968: 0xD4E0, - 26009 - 19968: 0xD6F9, - 26011 - 19968: 0xCDD7, - 26012 - 19968: 0xDED8, - 26015 - 19968: 0xF2F8, - 26017 - 19968: 0xE4D6, - 26020 - 19968: 0xD0C5, - 26021 - 19968: 0xF4AE, - 26023 - 19968: 0xDDA8, - 26027 - 19968: 0xEDC5, - 26028 - 19968: 0xF3D6, - 26031 - 19968: 0xDED9, - 26032 - 19968: 0xE3E6, - 26039 - 19968: 0xD3A8, - 26041 - 19968: 0xDBB0, - 26044 - 19968: 0xE5DA, - 26045 - 19968: 0xE3BF, - 26049 - 19968: 0xDBB1, - 26053 - 19968: 0xD5E9, - 26059 - 19968: 0xE0C1, - 26060 - 19968: 0xEFDB, - 26063 - 19968: 0xF0E9, - 26066 - 19968: 0xD7B2, - 26071 - 19968: 0xD0FD, - 26080 - 19968: 0xD9E9, - 26083 - 19968: 0xD0FE, - 26085 - 19968: 0xECED, - 26086 - 19968: 0xD3A9, - 26088 - 19968: 0xF2A9, - 26089 - 19968: 0xF0C4, - 26092 - 19968: 0xE2E2, - 26093 - 19968: 0xE9EF, - 26097 - 19968: 0xF9D1, - 26100 - 19968: 0xE9D9, - 26106 - 19968: 0xE8DA, - 26107 - 19968: 0xDAC3, - 26108 - 19968: 0xDAC4, - 26109 - 19968: 0xD4C5, - 26111 - 19968: 0xE7FA, - 26118 - 19968: 0xCDE0, - 26119 - 19968: 0xE3B0, - 26121 - 19968: 0xDBB2, - 26122 - 19968: 0xFBC4, - 26124 - 19968: 0xF3E3, - 26126 - 19968: 0xD9A5, - 26127 - 19968: 0xFBE7, - 26128 - 19968: 0xDDCB, - 26129 - 19968: 0xD0D4, - 26131 - 19968: 0xE6B6, - 26132 - 19968: 0xE0AE, - 26133 - 19968: 0xFDDA, - 26142 - 19968: 0xDCB5, - 26143 - 19968: 0xE0F8, - 26144 - 19968: 0xE7B1, - 26149 - 19968: 0xF5F0, - 26151 - 19968: 0xD8DC, - 26152 - 19968: 0xEDC6, - 26157 - 19968: 0xE1B9, - 26159 - 19968: 0xE3C0, - 26160 - 19968: 0xF9C0, - 26161 - 19968: 0xE9F0, - 26164 - 19968: 0xD9DB, - 26166 - 19968: 0xF3E4, - 26170 - 19968: 0xDCB6, - 26171 - 19968: 0xE4E9, - 26177 - 19968: 0xF0C5, - 26178 - 19968: 0xE3C1, - 26179 - 19968: 0xFCCC, - 26180 - 19968: 0xFCCD, - 26185 - 19968: 0xF2CB, - 26187 - 19968: 0xF2CC, - 26191 - 19968: 0xE4CF, - 26201 - 19968: 0xF1DB, - 26203 - 19968: 0xFAD9, - 26205 - 19968: 0xF1B8, - 26206 - 19968: 0xFDF5, - 26207 - 19968: 0xE0F9, - 26212 - 19968: 0xE7FB, - 26213 - 19968: 0xFCB7, - 26214 - 19968: 0xFCE4, - 26215 - 19968: 0xFBC5, - 26216 - 19968: 0xE3E7, - 26217 - 19968: 0xD8B9, - 26219 - 19968: 0xF6F8, - 26222 - 19968: 0xDCC5, - 26223 - 19968: 0xCCD8, - 26227 - 19968: 0xE0AF, - 26228 - 19968: 0xF4E7, - 26230 - 19968: 0xEFDC, - 26231 - 19968: 0xCFFC, - 26232 - 19968: 0xEFDD, - 26234 - 19968: 0xF2AA, - 26244 - 19968: 0xFDBE, - 26247 - 19968: 0xCAAC, - 26248 - 19968: 0xFDBB, - 26249 - 19968: 0xFDC7, - 26254 - 19968: 0xE7B2, - 26256 - 19968: 0xEAD1, - 26257 - 19968: 0xDFF4, - 26262 - 19968: 0xD1EC, - 26263 - 19968: 0xE4DE, - 26264 - 19968: 0xE5C3, - 26269 - 19968: 0xD9A6, - 26272 - 19968: 0xCDBC, - 26274 - 19968: 0xF3E5, - 26283 - 19968: 0xEDD5, - 26286 - 19968: 0xD9BA, - 26290 - 19968: 0xEDE7, - 26291 - 19968: 0xFBB5, - 26292 - 19968: 0xF8EC, - 26297 - 19968: 0xE0E7, - 26299 - 19968: 0xCCD9, - 26302 - 19968: 0xD4C6, - 26308 - 19968: 0xE7A5, - 26310 - 19968: 0xD5F5, - 26311 - 19968: 0xD3BE, - 26313 - 19968: 0xFCFB, - 26326 - 19968: 0xE4F2, - 26329 - 19968: 0xDFF5, - 26332 - 19968: 0xE8F8, - 26333 - 19968: 0xF8ED, - 26336 - 19968: 0xCEC7, - 26342 - 19968: 0xFDF6, - 26352 - 19968: 0xE8D8, - 26354 - 19968: 0xCDD8, - 26355 - 19968: 0xE7D6, - 26356 - 19968: 0xCCDA, - 26359 - 19968: 0xCAE3, - 26360 - 19968: 0xDFF6, - 26361 - 19968: 0xF0C7, - 26362 - 19968: 0xF0C6, - 26364 - 19968: 0xD8BA, - 26366 - 19968: 0xF1F4, - 26367 - 19968: 0xF4F0, - 26368 - 19968: 0xF5CC, - 26371 - 19968: 0xFCE5, - 26376 - 19968: 0xEAC5, - 26377 - 19968: 0xEAF3, - 26379 - 19968: 0xDDDB, - 26381 - 19968: 0xDCD7, - 26388 - 19968: 0xDEFD, - 26389 - 19968: 0xF2F9, - 26391 - 19968: 0xD5C7, - 26395 - 19968: 0xD8D0, - 26397 - 19968: 0xF0C8, - 26398 - 19968: 0xD1A1, - 26399 - 19968: 0xD1A2, - 26406 - 19968: 0xD9D4, - 26407 - 19968: 0xD6E8, - 26408 - 19968: 0xD9CA, - 26410 - 19968: 0xDAB1, - 26411 - 19968: 0xD8C7, - 26412 - 19968: 0xDCE2, - 26413 - 19968: 0xF3CE, - 26414 - 19968: 0xF5F4, - 26417 - 19968: 0xF1B9, - 26420 - 19968: 0xDAD3, - 26422 - 19968: 0xF6EA, - 26426 - 19968: 0xCFF5, - 26429 - 19968: 0xFDAE, - 26438 - 19968: 0xCAD2, - 26441 - 19968: 0xDFB4, - 26446 - 19968: 0xD7DD, - 26447 - 19968: 0xFABA, - 26448 - 19968: 0xEEA7, - 26449 - 19968: 0xF5BD, - 26451 - 19968: 0xF8F5, - 26454 - 19968: 0xEDE8, - 26460 - 19968: 0xD4E1, - 26462 - 19968: 0xD1A3, - 26463 - 19968: 0xE1D6, - 26477 - 19968: 0xF9F8, - 26479 - 19968: 0xDBCA, - 26480 - 19968: 0xCBF9, - 26481 - 19968: 0xD4D4, - 26483 - 19968: 0xD9DC, - 26485 - 19968: 0xEEBE, - 26487 - 19968: 0xF7ED, - 26491 - 19968: 0xD2EE, - 26494 - 19968: 0xE1E6, - 26495 - 19968: 0xF7F9, - 26503 - 19968: 0xDDED, - 26505 - 19968: 0xE8DB, - 26507 - 19968: 0xDBB3, - 26511 - 19968: 0xD1F7, - 26512 - 19968: 0xE0B0, - 26515 - 19968: 0xD4E2, - 26517 - 19968: 0xF6D7, - 26519 - 19968: 0xD7F9, - 26522 - 19968: 0xD8DD, - 26524 - 19968: 0xCDFD, - 26525 - 19968: 0xF2AB, - 26543 - 19968: 0xCDBD, - 26544 - 19968: 0xF8C2, - 26547 - 19968: 0xF2AC, - 26550 - 19968: 0xCAAD, - 26551 - 19968: 0xCAAE, - 26552 - 19968: 0xCFAE, - 26558 - 19968: 0xE3C2, - 26564 - 19968: 0xDCB7, - 26575 - 19968: 0xDBDA, - 26576 - 19968: 0xD9BB, - 26577 - 19968: 0xCAF3, - 26578 - 19968: 0xF6D3, - 26579 - 19968: 0xE6F8, - 26580 - 19968: 0xEAF5, - 26586 - 19968: 0xEAF6, - 26589 - 19968: 0xF6F9, - 26601 - 19968: 0xCFAF, - 26604 - 19968: 0xCAD3, - 26607 - 19968: 0xCAAF, - 26608 - 19968: 0xD2B0, - 26609 - 19968: 0xF1BA, - 26611 - 19968: 0xD7B3, - 26612 - 19968: 0xE3C3, - 26613 - 19968: 0xF3FD, - 26614 - 19968: 0xDEDA, - 26619 - 19968: 0xDEDB, - 26622 - 19968: 0xEFDE, - 26642 - 19968: 0xE2E3, - 26643 - 19968: 0xEEFB, - 26646 - 19968: 0xDFF7, - 26647 - 19968: 0xD7CA, - 26657 - 19968: 0xCEE8, - 26658 - 19968: 0xDBDB, - 26666 - 19968: 0xF1BB, - 26671 - 19968: 0xE9F1, - 26680 - 19968: 0xFAB7, - 26681 - 19968: 0xD0C6, - 26684 - 19968: 0xCCAB, - 26685 - 19968: 0xEEA8, - 26688 - 19968: 0xCBFA, - 26689 - 19968: 0xF9F9, - 26690 - 19968: 0xCCFD, - 26691 - 19968: 0xD3FE, - 26696 - 19968: 0xE4D0, - 26702 - 19968: 0xF2EE, - 26704 - 19968: 0xD4D5, - 26705 - 19968: 0xDFCD, - 26707 - 19968: 0xFCB8, - 26708 - 19968: 0xD1D0, - 26733 - 19968: 0xF2CD, - 26742 - 19968: 0xF7D2, - 26751 - 19968: 0xCAD4, - 26753 - 19968: 0xD5D9, - 26757 - 19968: 0xD8DE, - 26767 - 19968: 0xCDD9, - 26771 - 19968: 0xEEA9, - 26772 - 19968: 0xF6BC, - 26775 - 19968: 0xCCDB, - 26781 - 19968: 0xF0C9, - 26783 - 19968: 0xFCFC, - 26785 - 19968: 0xE8C9, - 26786 - 19968: 0xF4FE, - 26791 - 19968: 0xE7FC, - 26792 - 19968: 0xD7DE, - 26797 - 19968: 0xDEDC, - 26799 - 19968: 0xF0AC, - 26800 - 19968: 0xCCFE, - 26801 - 19968: 0xCDE1, - 26803 - 19968: 0xE1BA, - 26805 - 19968: 0xDBEF, - 26806 - 19968: 0xDAB2, - 26820 - 19968: 0xD1A5, - 26821 - 19968: 0xDCB8, - 26825 - 19968: 0xD8F6, - 26827 - 19968: 0xD1A4, - 26829 - 19968: 0xCDE2, - 26834 - 19968: 0xDCEA, - 26837 - 19968: 0xF0F7, - 26839 - 19968: 0xF0CA, - 26840 - 19968: 0xD0BE, - 26842 - 19968: 0xDDDC, - 26847 - 19968: 0xD4D6, - 26848 - 19968: 0xD3D6, - 26855 - 19968: 0xEDD0, - 26856 - 19968: 0xCDA1, - 26862 - 19968: 0xDFB5, - 26866 - 19968: 0xDFF8, - 26873 - 19968: 0xD4A1, - 26874 - 19968: 0xCEB2, - 26880 - 19968: 0xE8CA, - 26885 - 19968: 0xEBF5, - 26893 - 19968: 0xE3D5, - 26894 - 19968: 0xF5D0, - 26898 - 19968: 0xF5A1, - 26919 - 19968: 0xD9A7, - 26928 - 19968: 0xE5AB, - 26941 - 19968: 0xE6CB, - 26943 - 19968: 0xF5F1, - 26954 - 19968: 0xE5C5, - 26963 - 19968: 0xF9A3, - 26964 - 19968: 0xE0DB, - 26965 - 19968: 0xF6EB, - 26967 - 19968: 0xCBF1, - 26969 - 19968: 0xD9EA, - 26970 - 19968: 0xF5A2, - 26974 - 19968: 0xD7D1, - 26976 - 19968: 0xD1F8, - 26977 - 19968: 0xEAF8, - 26978 - 19968: 0xEAF9, - 26979 - 19968: 0xDAB3, - 26984 - 19968: 0xEFDF, - 26987 - 19968: 0xF1EF, - 26989 - 19968: 0xE5F6, - 26990 - 19968: 0xEEBF, - 26991 - 19968: 0xE2E4, - 26997 - 19968: 0xD0BF, - 26999 - 19968: 0xFAAC, - 27000 - 19968: 0xF5D1, - 27001 - 19968: 0xE7B3, - 27029 - 19968: 0xE9BE, - 27035 - 19968: 0xF2CE, - 27036 - 19968: 0xDBB4, - 27045 - 19968: 0xFCCE, - 27047 - 19968: 0xDDEE, - 27054 - 19968: 0xE7B4, - 27060 - 19968: 0xD7B4, - 27067 - 19968: 0xF7B4, - 27073 - 19968: 0xCDBE, - 27075 - 19968: 0xDAE9, - 27083 - 19968: 0xCFB0, - 27084 - 19968: 0xF7D9, - 27085 - 19968: 0xF3E6, - 27088 - 19968: 0xCED9, - 27112 - 19968: 0xCEAA, - 27114 - 19968: 0xCBC8, - 27131 - 19968: 0xD0A7, - 27133 - 19968: 0xF0CB, - 27135 - 19968: 0xD0C7, - 27138 - 19968: 0xE4C5, - 27146 - 19968: 0xDBE0, - 27153 - 19968: 0xD5DA, - 27155 - 19968: 0xD7A7, - 27159 - 19968: 0xEEC0, - 27161 - 19968: 0xF8F6, - 27166 - 19968: 0xF5D2, - 27167 - 19968: 0xEDE9, - 27169 - 19968: 0xD9BC, - 27171 - 19968: 0xE5C6, - 27189 - 19968: 0xF5A3, - 27192 - 19968: 0xDAD4, - 27193 - 19968: 0xE2A7, - 27194 - 19968: 0xFBFC, - 27197 - 19968: 0xF1DC, - 27204 - 19968: 0xCAF4, - 27208 - 19968: 0xE8FA, - 27211 - 19968: 0xCEE9, - 27218 - 19968: 0xE9F8, - 27219 - 19968: 0xE2E5, - 27224 - 19968: 0xD0B9, - 27225 - 19968: 0xD4F2, - 27231 - 19968: 0xD1A6, - 27233 - 19968: 0xDFCE, - 27243 - 19968: 0xFCF4, - 27264 - 19968: 0xD3AA, - 27268 - 19968: 0xCCAC, - 27273 - 19968: 0xEFE0, - 27277 - 19968: 0xE5E5, - 27278 - 19968: 0xD0D5, - 27287 - 19968: 0xDBFC, - 27292 - 19968: 0xFCE6, - 27298 - 19968: 0xCBFE, - 27299 - 19968: 0xEDEA, - 27315 - 19968: 0xDEB1, - 27323 - 19968: 0xF9E3, - 27330 - 19968: 0xD4A2, - 27331 - 19968: 0xCFF6, - 27347 - 19968: 0xD6D0, - 27354 - 19968: 0xD5EA, - 27355 - 19968: 0xF1EE, - 27382 - 19968: 0xFACB, - 27387 - 19968: 0xE5A1, - 27396 - 19968: 0xD5B1, - 27402 - 19968: 0xCFED, - 27404 - 19968: 0xEDEB, - 27410 - 19968: 0xD5B2, - 27414 - 19968: 0xD5BC, - 27424 - 19968: 0xFDE2, - 27425 - 19968: 0xF3AD, - 27427 - 19968: 0xFDDB, - 27442 - 19968: 0xE9B0, - 27450 - 19968: 0xD1A7, - 27453 - 19968: 0xFDE3, - 27454 - 19968: 0xCEB3, - 27462 - 19968: 0xFDE4, - 27463 - 19968: 0xFACE, - 27468 - 19968: 0xCAB0, - 27470 - 19968: 0xF7A7, - 27472 - 19968: 0xCFB1, - 27487 - 19968: 0xE6A2, - 27489 - 19968: 0xFCB6, - 27490 - 19968: 0xF2AD, - 27491 - 19968: 0xEFE1, - 27492 - 19968: 0xF3AE, - 27493 - 19968: 0xDCC6, - 27494 - 19968: 0xD9EB, - 27498 - 19968: 0xE8E0, - 27506 - 19968: 0xE1A8, - 27511 - 19968: 0xD5F6, - 27512 - 19968: 0xCFFD, - 27515 - 19968: 0xDEDD, - 27519 - 19968: 0xD9D1, - 27523 - 19968: 0xE4EA, - 27524 - 19968: 0xF2CF, - 27526 - 19968: 0xF7BF, - 27529 - 19968: 0xE2E6, - 27530 - 19968: 0xE2A8, - 27542 - 19968: 0xE3D6, - 27544 - 19968: 0xEDD1, - 27550 - 19968: 0xE9F9, - 27566 - 19968: 0xD6B1, - 27567 - 19968: 0xDEB2, - 27570 - 19968: 0xE0E8, - 27573 - 19968: 0xD3AB, - 27575 - 19968: 0xEBDC, - 27578 - 19968: 0xDFAF, - 27580 - 19968: 0xCAC3, - 27583 - 19968: 0xEEFC, - 27585 - 19968: 0xFDC3, - 27589 - 19968: 0xEBF6, - 27590 - 19968: 0xCFB2, - 27595 - 19968: 0xD9EC, - 27597 - 19968: 0xD9BD, - 27599 - 19968: 0xD8DF, - 27602 - 19968: 0xD4B8, - 27603 - 19968: 0xEBBE, - 27604 - 19968: 0xDDEF, - 27606 - 19968: 0xDDF0, - 27607 - 19968: 0xDDF1, - 27608 - 19968: 0xDDF2, - 27611 - 19968: 0xD9BE, - 27627 - 19968: 0xFBC6, - 27628 - 19968: 0xCFB3, - 27656 - 19968: 0xEEFD, - 27663 - 19968: 0xE4AB, - 27665 - 19968: 0xDAC5, - 27667 - 19968: 0xD8EC, - 27683 - 19968: 0xD1A8, - 27700 - 19968: 0xE2A9, - 27703 - 19968: 0xDEBC, - 27704 - 19968: 0xE7B5, - 27710 - 19968: 0xDBF0, - 27712 - 19968: 0xEFE2, - 27713 - 19968: 0xF1F0, - 27714 - 19968: 0xCFB4, - 27726 - 19968: 0xDBF1, - 27728 - 19968: 0xE0B1, - 27733 - 19968: 0xDFA5, - 27735 - 19968: 0xF9D2, - 27738 - 19968: 0xE7FD, - 27741 - 19968: 0xE6A3, - 27742 - 19968: 0xFBF1, - 27743 - 19968: 0xCBB0, - 27744 - 19968: 0xF2AE, - 27752 - 19968: 0xCDE7, - 27754 - 19968: 0xE8DC, - 27757 - 19968: 0xE7D7, - 27760 - 19968: 0xF7C0, - 27762 - 19968: 0xD0E3, - 27766 - 19968: 0xDAA1, - 27770 - 19968: 0xCCBD, - 27773 - 19968: 0xD1A9, - 27774 - 19968: 0xDDCC, - 27777 - 19968: 0xE3FE, - 27778 - 19968: 0xD1AA, - 27779 - 19968: 0xE8AA, - 27781 - 19968: 0xEAB6, - 27782 - 19968: 0xF9FA, - 27783 - 19968: 0xE6CC, - 27784 - 19968: 0xF6D8, - 27788 - 19968: 0xD4C7, - 27792 - 19968: 0xD9CB, - 27794 - 19968: 0xD9D2, - 27795 - 19968: 0xD3CB, - 27796 - 19968: 0xD8F7, - 27797 - 19968: 0xDAA9, - 27798 - 19968: 0xF5F8, - 27801 - 19968: 0xDEDE, - 27802 - 19968: 0xF2AF, - 27803 - 19968: 0xF8A9, - 27819 - 19968: 0xD8C8, - 27822 - 19968: 0xEEC1, - 27827 - 19968: 0xF9C1, - 27832 - 19968: 0xDDF3, - 27833 - 19968: 0xEAFA, - 27835 - 19968: 0xF6BD, - 27836 - 19968: 0xE1BB, - 27837 - 19968: 0xCDBF, - 27838 - 19968: 0xF4D4, - 27839 - 19968: 0xE6CD, - 27841 - 19968: 0xFCCF, - 27842 - 19968: 0xFBA2, - 27844 - 19968: 0xE0DC, - 27849 - 19968: 0xF4BB, - 27850 - 19968: 0xDAD5, - 27852 - 19968: 0xF9B2, - 27859 - 19968: 0xFBF2, - 27861 - 19968: 0xDBF6, - 27863 - 19968: 0xDEDF, - 27867 - 19968: 0xDBF2, - 27873 - 19968: 0xF8DC, - 27874 - 19968: 0xF7EE, - 27875 - 19968: 0xEBE8, - 27877 - 19968: 0xD2FA, - 27880 - 19968: 0xF1BC, - 27883 - 19968: 0xFADA, - 27886 - 19968: 0xDAEA, - 27887 - 19968: 0xDAC6, - 27888 - 19968: 0xF7C1, - 27891 - 19968: 0xE7B6, - 27915 - 19968: 0xE5C7, - 27916 - 19968: 0xD6AC, - 27921 - 19968: 0xDCC7, - 27927 - 19968: 0xE1A9, - 27929 - 19968: 0xE2AA, - 27931 - 19968: 0xD5A6, - 27934 - 19968: 0xD4D7, - 27941 - 19968: 0xF2D0, - 27943 - 19968: 0xEAFB, - 27945 - 19968: 0xE0DD, - 27946 - 19968: 0xFBF3, - 27954 - 19968: 0xF1BD, - 27957 - 19968: 0xE2E7, - 27958 - 19968: 0xFDD7, - 27960 - 19968: 0xCEC8, - 27961 - 19968: 0xEAB7, - 27963 - 19968: 0xFCC0, - 27965 - 19968: 0xFDE7, - 27966 - 19968: 0xF7EF, - 27969 - 19968: 0xD7B5, - 27993 - 19968: 0xEFBA, - 27994 - 19968: 0xF1DD, - 27996 - 19968: 0xDEB3, - 28003 - 19968: 0xE8CB, - 28006 - 19968: 0xF8DD, - 28009 - 19968: 0xFBC7, - 28010 - 19968: 0xD5C8, - 28012 - 19968: 0xD7DF, - 28014 - 19968: 0xDDA9, - 28020 - 19968: 0xE9B1, - 28023 - 19968: 0xFAAD, - 28024 - 19968: 0xF6D9, - 28025 - 19968: 0xFAF4, - 28031 - 19968: 0xF8AA, - 28037 - 19968: 0xE6EE, - 28039 - 19968: 0xCCDC, - 28040 - 19968: 0xE1BC, - 28041 - 19968: 0xE0EF, - 28044 - 19968: 0xE9BF, - 28045 - 19968: 0xFCFD, - 28046 - 19968: 0xE6CE, - 28049 - 19968: 0xE1D7, - 28051 - 19968: 0xE6CF, - 28053 - 19968: 0xF4F1, - 28079 - 19968: 0xE4F3, - 28082 - 19968: 0xE4FB, - 28085 - 19968: 0xF9E4, - 28096 - 19968: 0xEFE3, - 28099 - 19968: 0xCFEE, - 28100 - 19968: 0xF6BE, - 28101 - 19968: 0xE0B2, - 28102 - 19968: 0xFCFE, - 28103 - 19968: 0xD1AB, - 28107 - 19968: 0xD7FA, - 28111 - 19968: 0xFBC8, - 28113 - 19968: 0xE2D7, - 28120 - 19968: 0xD4A3, - 28121 - 19968: 0xF0F8, - 28122 - 19968: 0xD7A8, - 28126 - 19968: 0xE1E7, - 28129 - 19968: 0xD3BF, - 28136 - 19968: 0xEFE4, - 28138 - 19968: 0xD7C5, - 28139 - 19968: 0xEBE2, - 28142 - 19968: 0xFCE7, - 28145 - 19968: 0xE4A2, - 28147 - 19968: 0xE2E8, - 28149 - 19968: 0xE6D0, - 28151 - 19968: 0xFBE8, - 28152 - 19968: 0xF4E8, - 28153 - 19968: 0xE5F4, - 28154 - 19968: 0xF4BC, - 28155 - 19968: 0xF4D5, - 28183 - 19968: 0xDFB6, - 28185 - 19968: 0xFCB9, - 28186 - 19968: 0xEEC2, - 28187 - 19968: 0xCAF5, - 28191 - 19968: 0xEFE5, - 28192 - 19968: 0xCBE2, - 28193 - 19968: 0xD4A4, - 28195 - 19968: 0xDEE0, - 28196 - 19968: 0xDAFD, - 28197 - 19968: 0xE4C6, - 28198 - 19968: 0xE8BE, - 28203 - 19968: 0xE0DE, - 28204 - 19968: 0xF6B4, - 28205 - 19968: 0xEAD2, - 28207 - 19968: 0xF9FB, - 28210 - 19968: 0xE0C2, - 28212 - 19968: 0xCAE4, - 28214 - 19968: 0xE7B7, - 28216 - 19968: 0xEAFD, - 28218 - 19968: 0xD9DD, - 28220 - 19968: 0xDAB4, - 28221 - 19968: 0xEEAA, - 28222 - 19968: 0xFBE9, - 28227 - 19968: 0xDBCB, - 28228 - 19968: 0xDAB5, - 28234 - 19968: 0xF1BE, - 28237 - 19968: 0xD3AC, - 28246 - 19968: 0xFBC9, - 28248 - 19968: 0xDFCF, - 28251 - 19968: 0xD3C0, - 28252 - 19968: 0xE3D7, - 28254 - 19968: 0xEFE6, - 28255 - 19968: 0xFCD0, - 28263 - 19968: 0xE9C0, - 28267 - 19968: 0xF5D3, - 28270 - 19968: 0xECDC, - 28271 - 19968: 0xF7B7, - 28274 - 19968: 0xEAB8, - 28275 - 19968: 0xD1F9, - 28282 - 19968: 0xDCC8, - 28304 - 19968: 0xEAB9, - 28310 - 19968: 0xF1DE, - 28316 - 19968: 0xD7B6, - 28317 - 19968: 0xCFB5, - 28319 - 19968: 0xD9A8, - 28322 - 19968: 0xECEE, - 28325 - 19968: 0xDDAA, - 28330 - 19968: 0xCDA2, - 28331 - 19968: 0xE8AE, - 28335 - 19968: 0xE1BD, - 28337 - 19968: 0xF2D1, - 28342 - 19968: 0xE9C1, - 28346 - 19968: 0xD2FC, - 28354 - 19968: 0xDBB5, - 28356 - 19968: 0xF3E7, - 28357 - 19968: 0xD8FE, - 28361 - 19968: 0xFCD1, - 28363 - 19968: 0xEDB2, - 28364 - 19968: 0xF4AF, - 28366 - 19968: 0xFBA3, - 28369 - 19968: 0xFCC1, - 28371 - 19968: 0xEEAB, - 28372 - 19968: 0xD4A5, - 28399 - 19968: 0xF4F2, - 28404 - 19968: 0xEED9, - 28408 - 19968: 0xFBCA, - 28414 - 19968: 0xCDE3, - 28415 - 19968: 0xD8BB, - 28417 - 19968: 0xE5DB, - 28418 - 19968: 0xF8F7, - 28422 - 19968: 0xF6D4, - 28431 - 19968: 0xD7A9, - 28433 - 19968: 0xCBC9, - 28436 - 19968: 0xE6D1, - 28437 - 19968: 0xF0CC, - 28448 - 19968: 0xD8AE, - 28450 - 19968: 0xF9D3, - 28451 - 19968: 0xD5FE, - 28459 - 19968: 0xD8BC, - 28460 - 19968: 0xF2B0, - 28465 - 19968: 0xE2AB, - 28466 - 19968: 0xF3E8, - 28472 - 19968: 0xEFC2, - 28479 - 19968: 0xEDEC, - 28481 - 19968: 0xE7B8, - 28497 - 19968: 0xDAFE, - 28500 - 19968: 0xCCBE, - 28503 - 19968: 0xF2FC, - 28504 - 19968: 0xDAEB, - 28506 - 19968: 0xE2D8, - 28507 - 19968: 0xEDD6, - 28510 - 19968: 0xD6D1, - 28511 - 19968: 0xE0B3, - 28514 - 19968: 0xFCD2, - 28516 - 19968: 0xEBC8, - 28525 - 19968: 0xD3C1, - 28526 - 19968: 0xF0CD, - 28528 - 19968: 0xCFF7, - 28538 - 19968: 0xEDD2, - 28540 - 19968: 0xD4D8, - 28541 - 19968: 0xDCC9, - 28542 - 19968: 0xD7F1, - 28545 - 19968: 0xDFBB, - 28548 - 19968: 0xF3A5, - 28552 - 19968: 0xF4CD, - 28557 - 19968: 0xF1BF, - 28558 - 19968: 0xF8B1, - 28560 - 19968: 0xE9FA, - 28564 - 19968: 0xFBCB, - 28567 - 19968: 0xCAD5, - 28579 - 19968: 0xF9D4, - 28580 - 19968: 0xF7CA, - 28583 - 19968: 0xD6C8, - 28590 - 19968: 0xFCE8, - 28591 - 19968: 0xF3BD, - 28593 - 19968: 0xEEFE, - 28595 - 19968: 0xE7FE, - 28601 - 19968: 0xD3C2, - 28606 - 19968: 0xD3B6, - 28608 - 19968: 0xCCAD, - 28609 - 19968: 0xF6FA, - 28610 - 19968: 0xD6B2, - 28611 - 19968: 0xD2D8, - 28618 - 19968: 0xE7D8, - 28629 - 19968: 0xE3A5, - 28634 - 19968: 0xE7B9, - 28639 - 19968: 0xF0AD, - 28640 - 19968: 0xFBCC, - 28641 - 19968: 0xEBA1, - 28644 - 19968: 0xD4A6, - 28649 - 19968: 0xFBCD, - 28651 - 19968: 0xD5BD, - 28652 - 19968: 0xF1DF, - 28655 - 19968: 0xF6FB, - 28657 - 19968: 0xDEB4, - 28670 - 19968: 0xD5EB, - 28673 - 19968: 0xE5C8, - 28677 - 19968: 0xFBA4, - 28678 - 19968: 0xD4B9, - 28681 - 19968: 0xDEE1, - 28683 - 19968: 0xE4A3, - 28687 - 19968: 0xD7B7, - 28689 - 19968: 0xF8EE, - 28693 - 19968: 0xDEB5, - 28696 - 19968: 0xD6D2, - 28698 - 19968: 0xF9D5, - 28699 - 19968: 0xE7BA, - 28700 - 19968: 0xEBD5, - 28701 - 19968: 0xD5F7, - 28702 - 19968: 0xEFE7, - 28703 - 19968: 0xE1BE, - 28707 - 19968: 0xFAAE, - 28711 - 19968: 0xD6E9, - 28712 - 19968: 0xD6EE, - 28719 - 19968: 0xE7BB, - 28727 - 19968: 0xECCB, - 28734 - 19968: 0xD5B3, - 28748 - 19968: 0xCEB4, - 28752 - 19968: 0xFBA5, - 28753 - 19968: 0xE1EE, - 28760 - 19968: 0xF7A8, - 28765 - 19968: 0xFBCE, - 28771 - 19968: 0xD8BD, - 28779 - 19968: 0xFBFD, - 28784 - 19968: 0xFCE9, - 28792 - 19968: 0xCFB6, - 28796 - 19968: 0xEDC7, - 28797 - 19968: 0xEEAC, - 28805 - 19968: 0xCCDD, - 28810 - 19968: 0xF6A7, - 28814 - 19968: 0xE6FA, - 28818 - 19968: 0xF5A4, - 28824 - 19968: 0xFDDC, - 28825 - 19968: 0xEDB3, - 28826 - 19968: 0xCEC9, - 28833 - 19968: 0xEFE8, - 28836 - 19968: 0xE1BF, - 28843 - 19968: 0xFADB, - 28844 - 19968: 0xCBE3, - 28845 - 19968: 0xF7A9, - 28847 - 19968: 0xFBA6, - 28851 - 19968: 0xDCB9, - 28855 - 19968: 0xF1C0, - 28856 - 19968: 0xEDC8, - 28857 - 19968: 0xEFC3, - 28872 - 19968: 0xD6AD, - 28875 - 19968: 0xFDCE, - 28879 - 19968: 0xE8A1, - 28888 - 19968: 0xFBF4, - 28889 - 19968: 0xD5A7, - 28893 - 19968: 0xF1F6, - 28895 - 19968: 0xE6D3, - 28913 - 19968: 0xCCDE, - 28921 - 19968: 0xF8B2, - 28925 - 19968: 0xDCEB, - 28932 - 19968: 0xFDB6, - 28937 - 19968: 0xE5EA, - 28940 - 19968: 0xF1E0, - 28953 - 19968: 0xDBCC, - 28954 - 19968: 0xDDCD, - 28958 - 19968: 0xD4C8, - 28961 - 19968: 0xD9ED, - 28966 - 19968: 0xF5A5, - 28976 - 19968: 0xE6FB, - 28982 - 19968: 0xE6D4, - 28999 - 19968: 0xFDC8, - 29001 - 19968: 0xD6A1, - 29002 - 19968: 0xFDBF, - 29004 - 19968: 0xFCD3, - 29006 - 19968: 0xEFA1, - 29008 - 19968: 0xE7BC, - 29014 - 19968: 0xD1EE, - 29017 - 19968: 0xE6D5, - 29020 - 19968: 0xE9F2, - 29022 - 19968: 0xDFB0, - 29028 - 19968: 0xD8E0, - 29029 - 19968: 0xFCBA, - 29030 - 19968: 0xFDAF, - 29031 - 19968: 0xF0CE, - 29033 - 19968: 0xDBE1, - 29036 - 19968: 0xE5C9, - 29038 - 19968: 0xEDB4, - 29053 - 19968: 0xE0C3, - 29060 - 19968: 0xE3D8, - 29065 - 19968: 0xE9FB, - 29066 - 19968: 0xEAA8, - 29071 - 19968: 0xFDB7, - 29074 - 19968: 0xFBA7, - 29076 - 19968: 0xE9C2, - 29081 - 19968: 0xFDF7, - 29087 - 19968: 0xE2D9, - 29090 - 19968: 0xDCEC, - 29100 - 19968: 0xE8A2, - 29105 - 19968: 0xE6F0, - 29113 - 19968: 0xFDF8, - 29114 - 19968: 0xFDF9, - 29118 - 19968: 0xF6BF, - 29121 - 19968: 0xE7A7, - 29123 - 19968: 0xE6D7, - 29128 - 19968: 0xD4F3, - 29129 - 19968: 0xD4C9, - 29134 - 19968: 0xD6FA, - 29136 - 19968: 0xD7F2, - 29138 - 19968: 0xE1C0, - 29140 - 19968: 0xDBE2, - 29141 - 19968: 0xE6D8, - 29151 - 19968: 0xE7BD, - 29157 - 19968: 0xF0CF, - 29158 - 19968: 0xF3BE, - 29159 - 19968: 0xE2AC, - 29165 - 19968: 0xF5B7, - 29166 - 19968: 0xE0F0, - 29179 - 19968: 0xFDB8, - 29180 - 19968: 0xE3E8, - 29182 - 19968: 0xD4A7, - 29183 - 19968: 0xE8FC, - 29184 - 19968: 0xFAD2, - 29190 - 19968: 0xF8EF, - 29200 - 19968: 0xD6D3, - 29211 - 19968: 0xD5B4, - 29226 - 19968: 0xF0D0, - 29228 - 19968: 0xF7F0, - 29229 - 19968: 0xEEB3, - 29232 - 19968: 0xEABA, - 29234 - 19968: 0xEAD3, - 29237 - 19968: 0xEDC9, - 29238 - 19968: 0xDDAB, - 29242 - 19968: 0xE5AC, - 29243 - 19968: 0xFDA1, - 29245 - 19968: 0xDFD0, - 29246 - 19968: 0xECB3, - 29248 - 19968: 0xDFD1, - 29254 - 19968: 0xEDED, - 29255 - 19968: 0xF8B8, - 29256 - 19968: 0xF7FA, - 29260 - 19968: 0xF8AB, - 29266 - 19968: 0xF4E0, - 29272 - 19968: 0xD4BA, - 29273 - 19968: 0xE4B3, - 29275 - 19968: 0xE9DA, - 29277 - 19968: 0xDEB6, - 29279 - 19968: 0xD9BF, - 29281 - 19968: 0xD9C0, - 29282 - 19968: 0xD6EF, - 29287 - 19968: 0xD9CC, - 29289 - 19968: 0xDAAA, - 29298 - 19968: 0xDFE5, - 29305 - 19968: 0xF7E5, - 29309 - 19968: 0xCCB2, - 29312 - 19968: 0xDFF9, - 29313 - 19968: 0xD7E0, - 29346 - 19968: 0xD4BB, - 29351 - 19968: 0xFDFA, - 29356 - 19968: 0xCCB3, - 29359 - 19968: 0xDBF3, - 29376 - 19968: 0xDFD2, - 29378 - 19968: 0xCECA, - 29380 - 19968: 0xEEDA, - 29390 - 19968: 0xE4E4, - 29392 - 19968: 0xFBCF, - 29399 - 19968: 0xCFB7, - 29401 - 19968: 0xEEC3, - 29409 - 19968: 0xCEEA, - 29417 - 19968: 0xE2AD, - 29432 - 19968: 0xD7E1, - 29433 - 19968: 0xFAF5, - 29436 - 19968: 0xD5C9, - 29437 - 19968: 0xF8AC, - 29450 - 19968: 0xE7D9, - 29462 - 19968: 0xF3E9, - 29467 - 19968: 0xD8ED, - 29468 - 19968: 0xE3C4, - 29469 - 19968: 0xF0F1, - 29477 - 19968: 0xE8E5, - 29481 - 19968: 0xE0FA, - 29482 - 19968: 0xEEC4, - 29483 - 19968: 0xD9DE, - 29494 - 19968: 0xEBA2, - 29495 - 19968: 0xEBA3, - 29502 - 19968: 0xFCC2, - 29503 - 19968: 0xEABB, - 29508 - 19968: 0xE8AB, - 29509 - 19968: 0xDEE2, - 29520 - 19968: 0xEDEF, - 29522 - 19968: 0xE8A3, - 29527 - 19968: 0xCFF1, - 29544 - 19968: 0xD4BC, - 29546 - 19968: 0xFCEA, - 29552 - 19968: 0xE7BE, - 29554 - 19968: 0xFCF2, - 29557 - 19968: 0xD6B4, - 29560 - 19968: 0xE2AE, - 29562 - 19968: 0xD3B7, - 29563 - 19968: 0xFACC, - 29572 - 19968: 0xFADC, - 29574 - 19968: 0xEDB5, - 29575 - 19968: 0xE1E3, - 29577 - 19968: 0xE8AC, - 29579 - 19968: 0xE8DD, - 29582 - 19968: 0xEFE9, - 29588 - 19968: 0xF4BD, - 29590 - 19968: 0xCFB8, - 29591 - 19968: 0xE9DB, - 29592 - 19968: 0xD1AC, - 29599 - 19968: 0xDAC7, - 29607 - 19968: 0xEBC9, - 29609 - 19968: 0xE8CC, - 29613 - 19968: 0xDEB7, - 29618 - 19968: 0xD6BC, - 29619 - 19968: 0xD3E5, - 29625 - 19968: 0xFADD, - 29632 - 19968: 0xDAD6, - 29634 - 19968: 0xCAB1, - 29641 - 19968: 0xDAC8, - 29642 - 19968: 0xDFA6, - 29644 - 19968: 0xF9B3, - 29645 - 19968: 0xF2D2, - 29647 - 19968: 0xCAC4, - 29654 - 19968: 0xCECB, - 29657 - 19968: 0xCDF5, - 29661 - 19968: 0xFDB0, - 29662 - 19968: 0xD5A8, - 29664 - 19968: 0xF1C1, - 29667 - 19968: 0xE2E9, - 29668 - 19968: 0xDCCA, - 29669 - 19968: 0xECB4, - 29670 - 19968: 0xFAC0, - 29673 - 19968: 0xFBA8, - 29674 - 19968: 0xD0A8, - 29677 - 19968: 0xDAEC, - 29687 - 19968: 0xD9EE, - 29689 - 19968: 0xE0FB, - 29693 - 19968: 0xEFEA, - 29694 - 19968: 0xFADE, - 29697 - 19968: 0xE0C4, - 29699 - 19968: 0xCFB9, - 29701 - 19968: 0xD5CA, - 29702 - 19968: 0xD7E2, - 29703 - 19968: 0xE2AF, - 29705 - 19968: 0xD7B8, - 29715 - 19968: 0xE8CD, - 29723 - 19968: 0xF6DA, - 29728 - 19968: 0xEFA2, - 29729 - 19968: 0xE2DA, - 29730 - 19968: 0xF6FC, - 29733 - 19968: 0xFBD0, - 29734 - 19968: 0xD1AD, - 29736 - 19968: 0xCDE4, - 29738 - 19968: 0xD1AE, - 29739 - 19968: 0xDCED, - 29740 - 19968: 0xE8CE, - 29742 - 19968: 0xF0F9, - 29743 - 19968: 0xCEB5, - 29744 - 19968: 0xE6FC, - 29747 - 19968: 0xD7FB, - 29748 - 19968: 0xD0D6, - 29749 - 19968: 0xDDF5, - 29750 - 19968: 0xF7F1, - 29752 - 19968: 0xF6FD, - 29754 - 19968: 0xDBF7, - 29759 - 19968: 0xFBEA, - 29760 - 19968: 0xE9DC, - 29761 - 19968: 0xD9C1, - 29763 - 19968: 0xF5F2, - 29764 - 19968: 0xE0C5, - 29771 - 19968: 0xEAD4, - 29781 - 19968: 0xF9C2, - 29783 - 19968: 0xEABC, - 29785 - 19968: 0xD2C5, - 29786 - 19968: 0xFBD1, - 29787 - 19968: 0xE7C0, - 29788 - 19968: 0xEBA5, - 29790 - 19968: 0xDFFA, - 29791 - 19968: 0xE3A2, - 29792 - 19968: 0xD7B9, - 29794 - 19968: 0xE9C3, - 29796 - 19968: 0xE8FD, - 29797 - 19968: 0xE8AF, - 29800 - 19968: 0xF2D3, - 29801 - 19968: 0xFBA9, - 29802 - 19968: 0xD8A5, - 29807 - 19968: 0xD5CB, - 29822 - 19968: 0xD0C8, - 29826 - 19968: 0xD1AF, - 29827 - 19968: 0xD7E3, - 29831 - 19968: 0xE0C6, - 29833 - 19968: 0xD6A2, - 29835 - 19968: 0xEDF0, - 29848 - 19968: 0xD7F3, - 29852 - 19968: 0xFCD4, - 29854 - 19968: 0xDAD7, - 29855 - 19968: 0xCCDF, - 29857 - 19968: 0xF2D4, - 29859 - 19968: 0xD1B0, - 29861 - 19968: 0xCCE0, - 29863 - 19968: 0xDBFD, - 29864 - 19968: 0xF3BF, - 29866 - 19968: 0xF0D1, - 29872 - 19968: 0xFCBB, - 29874 - 19968: 0xE2B0, - 29877 - 19968: 0xE6A5, - 29881 - 19968: 0xE2DB, - 29885 - 19968: 0xDFDE, - 29887 - 19968: 0xE0C7, - 29894 - 19968: 0xF2EF, - 29898 - 19968: 0xCCE1, - 29903 - 19968: 0xD6EA, - 29908 - 19968: 0xE7C2, - 29912 - 19968: 0xCEB6, - 29914 - 19968: 0xF3C0, - 29916 - 19968: 0xCDFE, - 29920 - 19968: 0xFBD2, - 29922 - 19968: 0xF8F8, - 29923 - 19968: 0xF7FB, - 29926 - 19968: 0xE8BF, - 29934 - 19968: 0xE8B7, - 29943 - 19968: 0xEDB6, - 29953 - 19968: 0xDCBA, - 29956 - 19968: 0xCCB4, - 29969 - 19968: 0xF1F7, - 29973 - 19968: 0xE8B8, - 29976 - 19968: 0xCAF6, - 29978 - 19968: 0xE4A4, - 29979 - 19968: 0xF4D6, - 29983 - 19968: 0xDFE6, - 29987 - 19968: 0xDFA7, - 29989 - 19968: 0xDFE7, - 29990 - 19968: 0xE1C1, - 29992 - 19968: 0xE9C4, - 29995 - 19968: 0xDCCB, - 29996 - 19968: 0xE9C5, - 30000 - 19968: 0xEFA3, - 30001 - 19968: 0xEBA6, - 30002 - 19968: 0xCBA3, - 30003 - 19968: 0xE3E9, - 30007 - 19968: 0xD1FB, - 30008 - 19968: 0xEFA4, - 30010 - 19968: 0xEFEB, - 30023 - 19968: 0xD0B4, - 30028 - 19968: 0xCDA3, - 30031 - 19968: 0xE8E6, - 30033 - 19968: 0xEFA5, - 30035 - 19968: 0xD3CC, - 30036 - 19968: 0xDAED, - 30041 - 19968: 0xD7BA, - 30043 - 19968: 0xF2D5, - 30044 - 19968: 0xF5E5, - 30045 - 19968: 0xD9EF, - 30050 - 19968: 0xF9B4, - 30053 - 19968: 0xD5D4, - 30054 - 19968: 0xFDCF, - 30058 - 19968: 0xDBE3, - 30063 - 19968: 0xF1E1, - 30064 - 19968: 0xECB6, - 30069 - 19968: 0xFBFE, - 30070 - 19968: 0xD3D7, - 30072 - 19968: 0xD1B1, - 30074 - 19968: 0xCBB1, - 30079 - 19968: 0xD1B2, - 30086 - 19968: 0xCBB2, - 30087 - 19968: 0xF1C2, - 30090 - 19968: 0xF4E1, - 30091 - 19968: 0xF9B5, - 30094 - 19968: 0xE1C3, - 30095 - 19968: 0xE1C2, - 30097 - 19968: 0xEBF7, - 30109 - 19968: 0xDFA8, - 30117 - 19968: 0xCBCA, - 30123 - 19968: 0xE6B9, - 30129 - 19968: 0xF8DE, - 30130 - 19968: 0xF9AA, - 30131 - 19968: 0xCAF7, - 30133 - 19968: 0xEDB7, - 30136 - 19968: 0xD3B8, - 30137 - 19968: 0xF2D6, - 30140 - 19968: 0xD4D9, - 30141 - 19968: 0xEEC5, - 30142 - 19968: 0xF2F0, - 30146 - 19968: 0xCAB2, - 30149 - 19968: 0xDCBB, - 30151 - 19968: 0xF1F8, - 30157 - 19968: 0xECB7, - 30162 - 19968: 0xE5CA, - 30164 - 19968: 0xF6C0, - 30165 - 19968: 0xFDDD, - 30168 - 19968: 0xD4E3, - 30169 - 19968: 0xCCE2, - 30171 - 19968: 0xF7D4, - 30178 - 19968: 0xD7E5, - 30192 - 19968: 0xD3C3, - 30194 - 19968: 0xD8A6, - 30196 - 19968: 0xF6C1, - 30202 - 19968: 0xDDF6, - 30204 - 19968: 0xCDC0, - 30208 - 19968: 0xE5DC, - 30221 - 19968: 0xE5CB, - 30233 - 19968: 0xE1C4, - 30239 - 19968: 0xE8B0, - 30240 - 19968: 0xF4B0, - 30241 - 19968: 0xF3EA, - 30242 - 19968: 0xDAEE, - 30244 - 19968: 0xD7BB, - 30246 - 19968: 0xE2B1, - 30267 - 19968: 0xD7AA, - 30274 - 19968: 0xD6FB, - 30284 - 19968: 0xE4DF, - 30286 - 19968: 0xCAD6, - 30290 - 19968: 0xEBA8, - 30294 - 19968: 0xDBFE, - 30305 - 19968: 0xF6C2, - 30308 - 19968: 0xEFBB, - 30313 - 19968: 0xD4FD, - 30316 - 19968: 0xE0C8, - 30320 - 19968: 0xE8B9, - 30322 - 19968: 0xEFA6, - 30328 - 19968: 0xCDA4, - 30331 - 19968: 0xD4F4, - 30332 - 19968: 0xDBA1, - 30333 - 19968: 0xDBDC, - 30334 - 19968: 0xDBDD, - 30340 - 19968: 0xEEDC, - 30342 - 19968: 0xCBCB, - 30343 - 19968: 0xFCD5, - 30350 - 19968: 0xCEEB, - 30352 - 19968: 0xCDC1, - 30355 - 19968: 0xFBD3, - 30382 - 19968: 0xF9AB, - 30394 - 19968: 0xF5D4, - 30399 - 19968: 0xD9A9, - 30402 - 19968: 0xE9DD, - 30403 - 19968: 0xDBCD, - 30406 - 19968: 0xDDCE, - 30408 - 19968: 0xE7C3, - 30410 - 19968: 0xECCC, - 30418 - 19968: 0xF9EC, - 30422 - 19968: 0xCBCC, - 30427 - 19968: 0xE0FC, - 30428 - 19968: 0xD4A8, - 30430 - 19968: 0xEDD3, - 30431 - 19968: 0xD8EF, - 30433 - 19968: 0xF2D7, - 30435 - 19968: 0xCAF8, - 30436 - 19968: 0xDAEF, - 30439 - 19968: 0xD6D4, - 30446 - 19968: 0xD9CD, - 30450 - 19968: 0xD8EE, - 30452 - 19968: 0xF2C1, - 30456 - 19968: 0xDFD3, - 30460 - 19968: 0xDAF0, - 30462 - 19968: 0xE2EA, - 30465 - 19968: 0xE0FD, - 30468 - 19968: 0xD8F8, - 30472 - 19968: 0xF7AF, - 30473 - 19968: 0xDAB6, - 30475 - 19968: 0xCAD7, - 30494 - 19968: 0xF2D8, - 30496 - 19968: 0xD8F9, - 30505 - 19968: 0xFADF, - 30519 - 19968: 0xCFEF, - 30520 - 19968: 0xD9C2, - 30522 - 19968: 0xF0D2, - 30524 - 19968: 0xE4D1, - 30528 - 19968: 0xF3B7, - 30541 - 19968: 0xFAE0, - 30555 - 19968: 0xEFEC, - 30561 - 19968: 0xE2B2, - 30563 - 19968: 0xD4BD, - 30566 - 19968: 0xD9CE, - 30571 - 19968: 0xF4E2, - 30585 - 19968: 0xD4A9, - 30590 - 19968: 0xCDC2, - 30591 - 19968: 0xE7DA, - 30603 - 19968: 0xF2D9, - 30609 - 19968: 0xD9AA, - 30622 - 19968: 0xD8BE, - 30629 - 19968: 0xDCAD, - 30636 - 19968: 0xE2EB, - 30637 - 19968: 0xD6FC, - 30640 - 19968: 0xCAF9, - 30643 - 19968: 0xD4DA, - 30651 - 19968: 0xF4D7, - 30652 - 19968: 0xCCA1, - 30655 - 19968: 0xCFBA, - 30679 - 19968: 0xF5B8, - 30683 - 19968: 0xD9C3, - 30684 - 19968: 0xD0E8, - 30690 - 19968: 0xE3C5, - 30691 - 19968: 0xEBF8, - 30693 - 19968: 0xF2B1, - 30697 - 19968: 0xCFBB, - 30701 - 19968: 0xD3AD, - 30702 - 19968: 0xE8E1, - 30703 - 19968: 0xCEEC, - 30707 - 19968: 0xE0B4, - 30722 - 19968: 0xDEE3, - 30738 - 19968: 0xDDF7, - 30757 - 19968: 0xF2B2, - 30758 - 19968: 0xF3F6, - 30759 - 19968: 0xF6DB, - 30764 - 19968: 0xD7FE, - 30770 - 19968: 0xF8DF, - 30772 - 19968: 0xF7F2, - 30789 - 19968: 0xD0A9, - 30799 - 19968: 0xE6DA, - 30813 - 19968: 0xF5A6, - 30827 - 19968: 0xD7BC, - 30828 - 19968: 0xCCE3, - 30831 - 19968: 0xE6DB, - 30844 - 19968: 0xDDDD, - 30849 - 19968: 0xD1B3, - 30855 - 19968: 0xEFED, - 30860 - 19968: 0xD6DE, - 30861 - 19968: 0xE4F4, - 30862 - 19968: 0xE1EF, - 30865 - 19968: 0xDDF8, - 30871 - 19968: 0xE8CF, - 30883 - 19968: 0xCAE5, - 30887 - 19968: 0xDCA1, - 30889 - 19968: 0xE0B5, - 30906 - 19968: 0xFCAC, - 30907 - 19968: 0xFCAD, - 30908 - 19968: 0xD8A7, - 30913 - 19968: 0xEDB8, - 30917 - 19968: 0xDBB6, - 30922 - 19968: 0xD6F0, - 30923 - 19968: 0xF3AF, - 30926 - 19968: 0xCDA5, - 30928 - 19968: 0xDAF1, - 30952 - 19968: 0xD8A8, - 30956 - 19968: 0xCCE4, - 30959 - 19968: 0xD1B4, - 30965 - 19968: 0xCAD8, - 30971 - 19968: 0xDAF2, - 30977 - 19968: 0xF5A7, - 30990 - 19968: 0xF5A8, - 30998 - 19968: 0xE6A6, - 31018 - 19968: 0xD5EC, - 31019 - 19968: 0xD5F8, - 31020 - 19968: 0xDAF3, - 31034 - 19968: 0xE3C6, - 31038 - 19968: 0xDEE4, - 31040 - 19968: 0xDEE5, - 31041 - 19968: 0xD1B5, - 31047 - 19968: 0xD1B6, - 31048 - 19968: 0xD1B7, - 31049 - 19968: 0xF2B3, - 31056 - 19968: 0xE9DE, - 31062 - 19968: 0xF0D3, - 31063 - 19968: 0xF2B4, - 31066 - 19968: 0xF0D4, - 31067 - 19968: 0xCBE4, - 31068 - 19968: 0xFBD4, - 31069 - 19968: 0xF5E6, - 31070 - 19968: 0xE3EA, - 31072 - 19968: 0xDEE6, - 31077 - 19968: 0xDFD4, - 31080 - 19968: 0xF8F9, - 31085 - 19968: 0xF0AE, - 31098 - 19968: 0xD1B8, - 31103 - 19968: 0xD6DF, - 31105 - 19968: 0xD0D7, - 31117 - 19968: 0xFCA1, - 31118 - 19968: 0xEFEE, - 31119 - 19968: 0xDCD8, - 31121 - 19968: 0xE9DF, - 31142 - 19968: 0xE5DD, - 31143 - 19968: 0xFDFB, - 31146 - 19968: 0xE0C9, - 31150 - 19968: 0xD6C9, - 31153 - 19968: 0xD4AA, - 31155 - 19968: 0xE5CC, - 31161 - 19968: 0xE9E0, - 31165 - 19968: 0xD0D8, - 31166 - 19968: 0xFCA2, - 31167 - 19968: 0xD4BE, - 31168 - 19968: 0xE2B3, - 31169 - 19968: 0xDEE7, - 31177 - 19968: 0xDCBC, - 31178 - 19968: 0xD2B6, - 31179 - 19968: 0xF5D5, - 31185 - 19968: 0xCEA1, - 31186 - 19968: 0xF5A9, - 31189 - 19968: 0xDDF9, - 31192 - 19968: 0xDDFA, - 31199 - 19968: 0xF0D5, - 31204 - 19968: 0xF6DF, - 31206 - 19968: 0xF2DA, - 31207 - 19968: 0xE4EB, - 31209 - 19968: 0xF2F1, - 31227 - 19968: 0xECB9, - 31232 - 19968: 0xFDFC, - 31237 - 19968: 0xE1AA, - 31240 - 19968: 0xCAD9, - 31243 - 19968: 0xEFEF, - 31245 - 19968: 0xF5AA, - 31252 - 19968: 0xECF9, - 31255 - 19968: 0xF8AD, - 31257 - 19968: 0xF2C2, - 31258 - 19968: 0xF6C3, - 31260 - 19968: 0xD7D2, - 31263 - 19968: 0xF9A2, - 31264 - 19968: 0xF0D6, - 31278 - 19968: 0xF0FA, - 31281 - 19968: 0xF6E0, - 31286 - 19968: 0xE9F3, - 31287 - 19968: 0xF2C3, - 31291 - 19968: 0xD4AB, - 31292 - 19968: 0xCAB3, - 31293 - 19968: 0xCDA6, - 31295 - 19968: 0xCDC3, - 31296 - 19968: 0xCDDA, - 31302 - 19968: 0xD9CF, - 31305 - 19968: 0xF6C4, - 31309 - 19968: 0xEEDD, - 31310 - 19968: 0xE7C4, - 31319 - 19968: 0xE2B4, - 31329 - 19968: 0xDFE2, - 31330 - 19968: 0xE7DB, - 31337 - 19968: 0xE8B1, - 31339 - 19968: 0xFCAE, - 31344 - 19968: 0xE5CD, - 31348 - 19968: 0xFAEB, - 31350 - 19968: 0xCFBC, - 31353 - 19968: 0xCFE2, - 31354 - 19968: 0xCDF6, - 31357 - 19968: 0xEFF0, - 31359 - 19968: 0xF4BE, - 31361 - 19968: 0xD4CD, - 31364 - 19968: 0xF3B8, - 31368 - 19968: 0xE9A1, - 31378 - 19968: 0xF2F2, - 31379 - 19968: 0xF3EB, - 31381 - 19968: 0xF0D7, - 31384 - 19968: 0xCFD7, - 31391 - 19968: 0xCFDF, - 31401 - 19968: 0xE8C0, - 31402 - 19968: 0xE8C1, - 31406 - 19968: 0xCFE3, - 31407 - 19968: 0xE9A2, - 31418 - 19968: 0xD0AA, - 31428 - 19968: 0xF3C1, - 31429 - 19968: 0xD0AB, - 31431 - 19968: 0xD4E4, - 31434 - 19968: 0xEFBC, - 31435 - 19968: 0xD8A1, - 31447 - 19968: 0xD9DF, - 31449 - 19968: 0xF3D7, - 31453 - 19968: 0xDCBD, - 31455 - 19968: 0xCCE5, - 31456 - 19968: 0xEDF1, - 31459 - 19968: 0xF1E2, - 31461 - 19968: 0xD4DB, - 31466 - 19968: 0xE2B5, - 31469 - 19968: 0xCAE6, - 31471 - 19968: 0xD3AE, - 31478 - 19968: 0xCCE6, - 31481 - 19968: 0xF1D3, - 31482 - 19968: 0xF5E7, - 31487 - 19968: 0xCADA, - 31503 - 19968: 0xFBEE, - 31505 - 19968: 0xE1C5, - 31513 - 19968: 0xDFE9, - 31515 - 19968: 0xEEDE, - 31518 - 19968: 0xF7C2, - 31520 - 19968: 0xD8A2, - 31526 - 19968: 0xDDAC, - 31532 - 19968: 0xF0AF, - 31533 - 19968: 0xD6BD, - 31545 - 19968: 0xE1AB, - 31558 - 19968: 0xF9B6, - 31561 - 19968: 0xD4F5, - 31563 - 19968: 0xD0C9, - 31564 - 19968: 0xEFA7, - 31565 - 19968: 0xE2EC, - 31567 - 19968: 0xDBEA, - 31568 - 19968: 0xCECC, - 31569 - 19968: 0xF5E8, - 31570 - 19968: 0xF7D5, - 31572 - 19968: 0xD3CD, - 31574 - 19968: 0xF3FE, - 31584 - 19968: 0xD0B5, - 31596 - 19968: 0xE0FE, - 31598 - 19968: 0xDFFB, - 31605 - 19968: 0xE6DD, - 31613 - 19968: 0xE8A4, - 31623 - 19968: 0xCBCD, - 31627 - 19968: 0xEFA8, - 31631 - 19968: 0xEEB4, - 31636 - 19968: 0xDAD8, - 31637 - 19968: 0xD1B9, - 31639 - 19968: 0xDFA9, - 31642 - 19968: 0xF3B0, - 31645 - 19968: 0xCCC4, - 31649 - 19968: 0xCEB7, - 31661 - 19968: 0xEFA9, - 31665 - 19968: 0xDFD5, - 31668 - 19968: 0xEDD7, - 31672 - 19968: 0xEEC6, - 31680 - 19968: 0xEFBD, - 31681 - 19968: 0xFCD6, - 31684 - 19968: 0xDBF4, - 31686 - 19968: 0xEFAA, - 31687 - 19968: 0xF8B9, - 31689 - 19968: 0xF5E9, - 31698 - 19968: 0xE3D9, - 31712 - 19968: 0xE1C6, - 31716 - 19968: 0xD4BF, - 31721 - 19968: 0xDEE8, - 31751 - 19968: 0xF0EA, - 31762 - 19968: 0xF3C2, - 31774 - 19968: 0xD3AF, - 31777 - 19968: 0xCADB, - 31783 - 19968: 0xFCD7, - 31786 - 19968: 0xEDD8, - 31787 - 19968: 0xE1C7, - 31805 - 19968: 0xF4D8, - 31806 - 19968: 0xD6B3, - 31807 - 19968: 0xDDAD, - 31811 - 19968: 0xD5BE, - 31820 - 19968: 0xF1C3, - 31821 - 19968: 0xEEDF, - 31840 - 19968: 0xD6EB, - 31844 - 19968: 0xF4D9, - 31852 - 19968: 0xD7E6, - 31859 - 19968: 0xDAB7, - 31875 - 19968: 0xDDFB, - 31881 - 19968: 0xDDCF, - 31890 - 19968: 0xD8A3, - 31893 - 19968: 0xDAD9, - 31895 - 19968: 0xF0D8, - 31896 - 19968: 0xEFC4, - 31903 - 19968: 0xE1D8, - 31909 - 19968: 0xF1D4, - 31911 - 19968: 0xEDF2, - 31918 - 19968: 0xD5DB, - 31921 - 19968: 0xD5DC, - 31922 - 19968: 0xF3C4, - 31923 - 19968: 0xCBD7, - 31929 - 19968: 0xE2B6, - 31934 - 19968: 0xEFF1, - 31946 - 19968: 0xFBD5, - 31958 - 19968: 0xD3D8, - 31966 - 19968: 0xDDD0, - 31967 - 19968: 0xF0D9, - 31968 - 19968: 0xCBB3, - 31975 - 19968: 0xD5DD, - 31995 - 19968: 0xCDA7, - 31998 - 19968: 0xD0AC, - 32000 - 19968: 0xD1BA, - 32002 - 19968: 0xF1C4, - 32004 - 19968: 0xE5B3, - 32005 - 19968: 0xFBF5, - 32006 - 19968: 0xE9E1, - 32007 - 19968: 0xFDE0, - 32008 - 19968: 0xFCBC, - 32010 - 19968: 0xDAA2, - 32011 - 19968: 0xDAA3, - 32013 - 19968: 0xD2A1, - 32016 - 19968: 0xD2EF, - 32020 - 19968: 0xE2ED, - 32023 - 19968: 0xDEE9, - 32024 - 19968: 0xCEDC, - 32025 - 19968: 0xF2B5, - 32026 - 19968: 0xD0E4, - 32027 - 19968: 0xDDD1, - 32032 - 19968: 0xE1C8, - 32033 - 19968: 0xDBB7, - 32034 - 19968: 0xDFE3, - 32043 - 19968: 0xEDB9, - 32044 - 19968: 0xF1C5, - 32046 - 19968: 0xF3CF, - 32047 - 19968: 0xD7AB, - 32048 - 19968: 0xE1AC, - 32051 - 19968: 0xE3EB, - 32053 - 19968: 0xEEC7, - 32057 - 19968: 0xE1C9, - 32058 - 19968: 0xCAFA, - 32066 - 19968: 0xF0FB, - 32067 - 19968: 0xFAE1, - 32068 - 19968: 0xF0DA, - 32069 - 19968: 0xCCE7, - 32070 - 19968: 0xDAF4, - 32080 - 19968: 0xCCBF, - 32094 - 19968: 0xCEED, - 32097 - 19968: 0xD5A9, - 32098 - 19968: 0xFAE2, - 32102 - 19968: 0xD0E5, - 32104 - 19968: 0xEBD6, - 32106 - 19968: 0xECDF, - 32110 - 19968: 0xDFFC, - 32113 - 19968: 0xF7D6, - 32114 - 19968: 0xDEEA, - 32115 - 19968: 0xCBB4, - 32118 - 19968: 0xEFBE, - 32121 - 19968: 0xCCB5, - 32127 - 19968: 0xCFBD, - 32142 - 19968: 0xEFF2, - 32143 - 19968: 0xE2B7, - 32147 - 19968: 0xCCE8, - 32156 - 19968: 0xF0FC, - 32160 - 19968: 0xD6E0, - 32162 - 19968: 0xF1C6, - 32172 - 19968: 0xE2B8, - 32173 - 19968: 0xEBAB, - 32177 - 19968: 0xCBB5, - 32178 - 19968: 0xD8D1, - 32180 - 19968: 0xF4CE, - 32181 - 19968: 0xF3F7, - 32184 - 19968: 0xD7C6, - 32186 - 19968: 0xD1BB, - 32187 - 19968: 0xF7AA, - 32189 - 19968: 0xEDCA, - 32190 - 19968: 0xD7D3, - 32191 - 19968: 0xD8FA, - 32199 - 19968: 0xF6C5, - 32202 - 19968: 0xD1CC, - 32203 - 19968: 0xDDFC, - 32214 - 19968: 0xDFFD, - 32216 - 19968: 0xF9E5, - 32218 - 19968: 0xE0CA, - 32221 - 19968: 0xF2FD, - 32222 - 19968: 0xD3B0, - 32224 - 19968: 0xF4F3, - 32225 - 19968: 0xDAC9, - 32227 - 19968: 0xE6DE, - 32232 - 19968: 0xF8BA, - 32233 - 19968: 0xE8D0, - 32236 - 19968: 0xD8FB, - 32239 - 19968: 0xEAD5, - 32244 - 19968: 0xD6A3, - 32251 - 19968: 0xF6C6, - 32265 - 19968: 0xF2DB, - 32266 - 19968: 0xE4FC, - 32277 - 19968: 0xE8B2, - 32283 - 19968: 0xDADA, - 32285 - 19968: 0xF2DC, - 32286 - 19968: 0xFBD6, - 32287 - 19968: 0xE9B2, - 32289 - 19968: 0xEEAD, - 32291 - 19968: 0xFAE3, - 32299 - 19968: 0xDCEE, - 32302 - 19968: 0xF5EA, - 32303 - 19968: 0xE6E0, - 32305 - 19968: 0xF0FD, - 32311 - 19968: 0xD7AC, - 32317 - 19968: 0xF5C5, - 32318 - 19968: 0xEEE0, - 32321 - 19968: 0xDBE5, - 32323 - 19968: 0xDDDE, - 32326 - 19968: 0xD9F0, - 32327 - 19968: 0xE9A3, - 32338 - 19968: 0xF1F9, - 32340 - 19968: 0xF2C4, - 32341 - 19968: 0xE0CB, - 32350 - 19968: 0xE9A4, - 32353 - 19968: 0xE2B9, - 32361 - 19968: 0xE3B1, - 32362 - 19968: 0xFCEB, - 32363 - 19968: 0xCDA8, - 32365 - 19968: 0xCCB6, - 32368 - 19968: 0xF0DB, - 32377 - 19968: 0xE6BA, - 32380 - 19968: 0xCDA9, - 32386 - 19968: 0xF3C3, - 32396 - 19968: 0xE1D9, - 32399 - 19968: 0xEFAB, - 32403 - 19968: 0xE7C5, - 32406 - 19968: 0xE0E9, - 32408 - 19968: 0xF3C5, - 32411 - 19968: 0xD4C0, - 32412 - 19968: 0xD5BF, - 32566 - 19968: 0xDDAE, - 32568 - 19968: 0xF9FC, - 32570 - 19968: 0xCCC0, - 32588 - 19968: 0xE5A2, - 32592 - 19968: 0xCEB8, - 32596 - 19968: 0xD8D2, - 32597 - 19968: 0xF9D6, - 32618 - 19968: 0xF1AA, - 32619 - 19968: 0xCED1, - 32622 - 19968: 0xF6C7, - 32624 - 19968: 0xDBEB, - 32626 - 19968: 0xDFFE, - 32629 - 19968: 0xD8E1, - 32631 - 19968: 0xF7F3, - 32633 - 19968: 0xD7E7, - 32645 - 19968: 0xD4FE, - 32648 - 19968: 0xD1BC, - 32650 - 19968: 0xE5CF, - 32652 - 19968: 0xCBB6, - 32654 - 19968: 0xDAB8, - 32660 - 19968: 0xCDC4, - 32666 - 19968: 0xD6BE, - 32670 - 19968: 0xE2BA, - 32676 - 19968: 0xCFD8, - 32680 - 19968: 0xE0CC, - 32681 - 19968: 0xEBF9, - 32690 - 19968: 0xFDFD, - 32696 - 19968: 0xD7E8, - 32697 - 19968: 0xCBD8, - 32701 - 19968: 0xE9E2, - 32705 - 19968: 0xE8BA, - 32709 - 19968: 0xE3C7, - 32714 - 19968: 0xECCD, - 32716 - 19968: 0xECCE, - 32718 - 19968: 0xD6BF, - 32722 - 19968: 0xE3A7, - 32724 - 19968: 0xDFD6, - 32725 - 19968: 0xFDE8, - 32735 - 19968: 0xEEE1, - 32736 - 19968: 0xF6A8, - 32737 - 19968: 0xDDFD, - 32745 - 19968: 0xF8BB, - 32747 - 19968: 0xE8D1, - 32752 - 19968: 0xF9D7, - 32761 - 19968: 0xCEEE, - 32764 - 19968: 0xECCF, - 32768 - 19968: 0xE9A5, - 32769 - 19968: 0xD6D5, - 32771 - 19968: 0xCDC5, - 32773 - 19968: 0xEDBA, - 32774 - 19968: 0xD1BD, - 32777 - 19968: 0xCFBE, - 32780 - 19968: 0xECBB, - 32784 - 19968: 0xD2B1, - 32789 - 19968: 0xCCE9, - 32791 - 19968: 0xD9C4, - 32792 - 19968: 0xE9FC, - 32813 - 19968: 0xD1BE, - 32819 - 19968: 0xECBC, - 32822 - 19968: 0xE5AD, - 32829 - 19968: 0xF7B0, - 32831 - 19968: 0xCCEA, - 32835 - 19968: 0xD3C4, - 32838 - 19968: 0xD6C0, - 32842 - 19968: 0xD6FD, - 32854 - 19968: 0xE1A1, - 32856 - 19968: 0xDEBD, - 32858 - 19968: 0xF6A9, - 32862 - 19968: 0xDAA4, - 32879 - 19968: 0xD6A4, - 32880 - 19968: 0xF5C6, - 32882 - 19968: 0xE1A2, - 32883 - 19968: 0xE9C6, - 32887 - 19968: 0xF2C5, - 32893 - 19968: 0xF4E9, - 32894 - 19968: 0xD6EC, - 32895 - 19968: 0xEBD3, - 32900 - 19968: 0xECBD, - 32901 - 19968: 0xE2DC, - 32902 - 19968: 0xDEEB, - 32903 - 19968: 0xF0DC, - 32905 - 19968: 0xEBBF, - 32907 - 19968: 0xD7CE, - 32908 - 19968: 0xD1BF, - 32918 - 19968: 0xF5AB, - 32923 - 19968: 0xF9FD, - 32925 - 19968: 0xCADC, - 32929 - 19968: 0xCDC6, - 32930 - 19968: 0xF2B6, - 32933 - 19968: 0xDDFE, - 32937 - 19968: 0xCCB7, - 32938 - 19968: 0xDBB8, - 32943 - 19968: 0xD0E9, - 32945 - 19968: 0xCEDD, - 32946 - 19968: 0xEBC0, - 32948 - 19968: 0xFDA2, - 32954 - 19968: 0xF8CB, - 32963 - 19968: 0xEAD6, - 32964 - 19968: 0xF1B0, - 32972 - 19968: 0xDBCE, - 32974 - 19968: 0xF7C3, - 32986 - 19968: 0xDBCF, - 32987 - 19968: 0xCBA4, - 32990 - 19968: 0xF8E0, - 32993 - 19968: 0xFBD7, - 32996 - 19968: 0xEBCA, - 32997 - 19968: 0xE0A1, - 33009 - 19968: 0xCECD, - 33012 - 19968: 0xD4DC, - 33016 - 19968: 0xFDD8, - 33021 - 19968: 0xD2F6, - 33026 - 19968: 0xF2B7, - 33029 - 19968: 0xFAF6, - 33030 - 19968: 0xF6AA, - 33031 - 19968: 0xFAF7, - 33032 - 19968: 0xD8E6, - 33034 - 19968: 0xF4B1, - 33048 - 19968: 0xE8D2, - 33050 - 19968: 0xCAC5, - 33051 - 19968: 0xCCEB, - 33059 - 19968: 0xE2EE, - 33065 - 19968: 0xE2BB, - 33067 - 19968: 0xF7AD, - 33071 - 19968: 0xF8E1, - 33081 - 19968: 0xF3EC, - 33086 - 19968: 0xDEA1, - 33099 - 19968: 0xE4FD, - 33102 - 19968: 0xE3EC, - 33104 - 19968: 0xDDAF, - 33105 - 19968: 0xDDB0, - 33108 - 19968: 0xCBB7, - 33109 - 19968: 0xE8D3, - 33125 - 19968: 0xE1A3, - 33126 - 19968: 0xD2E0, - 33131 - 19968: 0xF0FE, - 33136 - 19968: 0xE9A6, - 33137 - 19968: 0xCBF2, - 33144 - 19968: 0xEDF3, - 33145 - 19968: 0xDCD9, - 33146 - 19968: 0xE0CD, - 33151 - 19968: 0xF7DA, - 33152 - 19968: 0xDBB9, - 33160 - 19968: 0xCCAE, - 33162 - 19968: 0xDADB, - 33167 - 19968: 0xCDC7, - 33178 - 19968: 0xDDB1, - 33180 - 19968: 0xD8AF, - 33181 - 19968: 0xE3A3, - 33184 - 19968: 0xCEEF, - 33187 - 19968: 0xF2F3, - 33192 - 19968: 0xF8B3, - 33203 - 19968: 0xE0CE, - 33205 - 19968: 0xF5FD, - 33210 - 19968: 0xEBEC, - 33213 - 19968: 0xD3C5, - 33214 - 19968: 0xFCEC, - 33215 - 19968: 0xD2DB, - 33216 - 19968: 0xD4EB, - 33218 - 19968: 0xDEA2, - 33222 - 19968: 0xE5E6, - 33229 - 19968: 0xF0B0, - 33240 - 19968: 0xD5C4, - 33247 - 19968: 0xEDF4, - 33251 - 19968: 0xE3ED, - 33253 - 19968: 0xE8C2, - 33255 - 19968: 0xEDF5, - 33256 - 19968: 0xD7FC, - 33258 - 19968: 0xEDBB, - 33261 - 19968: 0xF6AB, - 33267 - 19968: 0xF2B8, - 33268 - 19968: 0xF6C8, - 33274 - 19968: 0xD3E6, - 33275 - 19968: 0xF2DD, - 33276 - 19968: 0xCFBF, - 33278 - 19968: 0xEBAC, - 33285 - 19968: 0xCFC0, - 33287 - 19968: 0xE6A8, - 33288 - 19968: 0xFDE9, - 33290 - 19968: 0xCFC1, - 33292 - 19968: 0xE0DF, - 33293 - 19968: 0xDEEC, - 33298 - 19968: 0xE0A2, - 33307 - 19968: 0xF4BF, - 33308 - 19968: 0xE2EF, - 33310 - 19968: 0xD9F1, - 33311 - 19968: 0xF1C7, - 33313 - 19968: 0xCBB8, - 33322 - 19968: 0xF9FE, - 33323 - 19968: 0xDBBA, - 33324 - 19968: 0xDAF5, - 33333 - 19968: 0xF6EC, - 33334 - 19968: 0xDADC, - 33335 - 19968: 0xFAE4, - 33337 - 19968: 0xE0CF, - 33344 - 19968: 0xDDB2, - 33349 - 19968: 0xE6A9, - 33351 - 19968: 0xEFF3, - 33369 - 19968: 0xF3ED, - 33380 - 19968: 0xEBFA, - 33382 - 19968: 0xF9E6, - 33390 - 19968: 0xCADD, - 33391 - 19968: 0xD5DE, - 33393 - 19968: 0xCADE, - 33394 - 19968: 0xDFE4, - 33398 - 19968: 0xE6FD, - 33400 - 19968: 0xF5AC, - 33406 - 19968: 0xE4F5, - 33419 - 19968: 0xE9E3, - 33421 - 19968: 0xEDCB, - 33422 - 19968: 0xCFE4, - 33426 - 19968: 0xD8D3, - 33433 - 19968: 0xDDB3, - 33434 - 19968: 0xD4EC, - 33437 - 19968: 0xF2B9, - 33439 - 19968: 0xDFB7, - 33445 - 19968: 0xCBCE, - 33446 - 19968: 0xFBD8, - 33449 - 19968: 0xD0D9, - 33452 - 19968: 0xDDD2, - 33453 - 19968: 0xF7F4, - 33454 - 19968: 0xE7DC, - 33455 - 19968: 0xE4A5, - 33457 - 19968: 0xFCA3, - 33459 - 19968: 0xDBBB, - 33463 - 19968: 0xF2BA, - 33464 - 19968: 0xE9FD, - 33465 - 19968: 0xD0CA, - 33467 - 19968: 0xF5D6, - 33468 - 19968: 0xD9C5, - 33469 - 19968: 0xE4B4, - 33471 - 19968: 0xEDA7, - 33489 - 19968: 0xEABD, - 33490 - 19968: 0xE6FE, - 33492 - 19968: 0xF7C4, - 33493 - 19968: 0xF5AD, - 33495 - 19968: 0xD9E0, - 33499 - 19968: 0xCAB4, - 33502 - 19968: 0xF8E2, - 33503 - 19968: 0xCFC2, - 33505 - 19968: 0xECBE, - 33509 - 19968: 0xE5B4, - 33510 - 19968: 0xCDC8, - 33511 - 19968: 0xEEC8, - 33521 - 19968: 0xE7C8, - 33533 - 19968: 0xCDC9, - 33534 - 19968: 0xF9B7, - 33537 - 19968: 0xF1E8, - 33538 - 19968: 0xD9F2, - 33539 - 19968: 0xDBF5, - 33540 - 19968: 0xCAB5, - 33541 - 19968: 0xD9C6, - 33545 - 19968: 0xD8C9, - 33559 - 19968: 0xD9AB, - 33576 - 19968: 0xEDBC, - 33579 - 19968: 0xD8D4, - 33583 - 19968: 0xDCDA, - 33585 - 19968: 0xE2BC, - 33588 - 19968: 0xFCED, - 33589 - 19968: 0xECE0, - 33590 - 19968: 0xD2FE, - 33592 - 19968: 0xE9C7, - 33593 - 19968: 0xE6AA, - 33600 - 19968: 0xE2F0, - 33607 - 19968: 0xFABB, - 33609 - 19968: 0xF5AE, - 33610 - 19968: 0xFBAA, - 33615 - 19968: 0xECFB, - 33617 - 19968: 0xECBF, - 33618 - 19968: 0xFCD8, - 33651 - 19968: 0xD4E5, - 33655 - 19968: 0xF9C3, - 33659 - 19968: 0xEEE2, - 33673 - 19968: 0xD7E9, - 33674 - 19968: 0xEDF6, - 33678 - 19968: 0xDEED, - 33686 - 19968: 0xCCEC, - 33688 - 19968: 0xE3EE, - 33694 - 19968: 0xE8D4, - 33698 - 19968: 0xFAF8, - 33705 - 19968: 0xDDB4, - 33706 - 19968: 0xE4B5, - 33707 - 19968: 0xD8B0, - 33725 - 19968: 0xD8D5, - 33729 - 19968: 0xF4EA, - 33733 - 19968: 0xCEB9, - 33737 - 19968: 0xD6E1, - 33738 - 19968: 0xCFD2, - 33740 - 19968: 0xD0B6, - 33747 - 19968: 0xCEA2, - 33750 - 19968: 0xF3EE, - 33756 - 19968: 0xF3F8, - 33769 - 19968: 0xDCCC, - 33771 - 19968: 0xD0CB, - 33775 - 19968: 0xFCA4, - 33776 - 19968: 0xCDCA, - 33777 - 19968: 0xD7D4, - 33778 - 19968: 0xDEA3, - 33780 - 19968: 0xE4E0, - 33785 - 19968: 0xEEC9, - 33789 - 19968: 0xE2DD, - 33795 - 19968: 0xF5FE, - 33796 - 19968: 0xD4AC, - 33802 - 19968: 0xD5D1, - 33804 - 19968: 0xD8F0, - 33805 - 19968: 0xF8C3, - 33806 - 19968: 0xEAD7, - 33833 - 19968: 0xF5D7, - 33836 - 19968: 0xD8BF, - 33841 - 19968: 0xFDC0, - 33848 - 19968: 0xEBAD, - 33853 - 19968: 0xD5AA, - 33865 - 19968: 0xE7A8, - 33879 - 19968: 0xEECA, - 33883 - 19968: 0xCAE7, - 33889 - 19968: 0xF8E3, - 33891 - 19968: 0xD4DD, - 33894 - 19968: 0xEAD8, - 33899 - 19968: 0xFBD9, - 33900 - 19968: 0xEDF7, - 33903 - 19968: 0xE5B5, - 33909 - 19968: 0xD0AD, - 33914 - 19968: 0xF1F1, - 33936 - 19968: 0xE2BD, - 33940 - 19968: 0xE3C8, - 33945 - 19968: 0xD9D5, - 33948 - 19968: 0xDFAA, - 33953 - 19968: 0xDBBC, - 33970 - 19968: 0xF8E4, - 33976 - 19968: 0xF1FA, - 33979 - 19968: 0xE5B6, - 33980 - 19968: 0xF3EF, - 33983 - 19968: 0xFBDA, - 33984 - 19968: 0xE1E0, - 33986 - 19968: 0xD9AC, - 33988 - 19968: 0xF5EB, - 33990 - 19968: 0xE0B6, - 33993 - 19968: 0xE9C8, - 33995 - 19968: 0xCBCF, - 33997 - 19968: 0xE3C9, - 34001 - 19968: 0xDEEE, - 34010 - 19968: 0xE2BE, - 34028 - 19968: 0xDCEF, - 34030 - 19968: 0xD6A5, - 34036 - 19968: 0xE2F1, - 34044 - 19968: 0xD6FE, - 34065 - 19968: 0xD9A1, - 34067 - 19968: 0xD8C0, - 34068 - 19968: 0xDCDB, - 34071 - 19968: 0xEDBD, - 34072 - 19968: 0xDFB8, - 34074 - 19968: 0xEAA5, - 34078 - 19968: 0xD7AD, - 34081 - 19968: 0xF3F9, - 34083 - 19968: 0xEDF8, - 34085 - 19968: 0xF5C7, - 34092 - 19968: 0xE1CA, - 34093 - 19968: 0xEBE3, - 34095 - 19968: 0xF2DE, - 34109 - 19968: 0xF8CC, - 34111 - 19968: 0xEAD9, - 34113 - 19968: 0xD3C6, - 34115 - 19968: 0xDBE6, - 34121 - 19968: 0xF5AF, - 34126 - 19968: 0xCEF0, - 34131 - 19968: 0xE9FE, - 34137 - 19968: 0xFBB6, - 34147 - 19968: 0xE2F2, - 34152 - 19968: 0xCFF2, - 34153 - 19968: 0xF7B9, - 34154 - 19968: 0xD9F3, - 34157 - 19968: 0xE1CB, - 34180 - 19968: 0xDADD, - 34183 - 19968: 0xDAB9, - 34191 - 19968: 0xEBFB, - 34193 - 19968: 0xCBB9, - 34196 - 19968: 0xEDF9, - 34203 - 19968: 0xE0E0, - 34214 - 19968: 0xF4C0, - 34216 - 19968: 0xFDBC, - 34217 - 19968: 0xDFB1, - 34218 - 19968: 0xE3EF, - 34223 - 19968: 0xE0A3, - 34224 - 19968: 0xFDB9, - 34234 - 19968: 0xF0B1, - 34241 - 19968: 0xCDCB, - 34249 - 19968: 0xEDBE, - 34253 - 19968: 0xD5C0, - 34254 - 19968: 0xE3F0, - 34255 - 19968: 0xEDFA, - 34261 - 19968: 0xE9E4, - 34268 - 19968: 0xD5ED, - 34269 - 19968: 0xE7DD, - 34276 - 19968: 0xD4F6, - 34277 - 19968: 0xE5B7, - 34281 - 19968: 0xDBE7, - 34282 - 19968: 0xE2BF, - 34295 - 19968: 0xEECB, - 34298 - 19968: 0xD7F4, - 34299 - 19968: 0xF0DD, - 34303 - 19968: 0xCEAB, - 34306 - 19968: 0xE7DE, - 34310 - 19968: 0xD6D6, - 34311 - 19968: 0xE1CC, - 34314 - 19968: 0xE8B3, - 34326 - 19968: 0xE5EE, - 34327 - 19968: 0xDCA2, - 34330 - 19968: 0xE0D0, - 34349 - 19968: 0xD5B5, - 34367 - 19968: 0xD5A1, - 34382 - 19968: 0xFBDB, - 34384 - 19968: 0xF9CB, - 34388 - 19968: 0xCBF3, - 34389 - 19968: 0xF4A5, - 34395 - 19968: 0xFAC8, - 34396 - 19968: 0xD6D7, - 34398 - 19968: 0xE9E5, - 34399 - 19968: 0xFBDC, - 34407 - 19968: 0xFDD0, - 34425 - 19968: 0xFBF6, - 34442 - 19968: 0xDAA5, - 34444 - 19968: 0xDBBD, - 34451 - 19968: 0xECE2, - 34467 - 19968: 0xCDF7, - 34468 - 19968: 0xF0DE, - 34473 - 19968: 0xF6C9, - 34503 - 19968: 0xDEEF, - 34507 - 19968: 0xD3B1, - 34516 - 19968: 0xFCEE, - 34521 - 19968: 0xE8C3, - 34523 - 19968: 0xF1C8, - 34527 - 19968: 0xCEF1, - 34532 - 19968: 0xF9ED, - 34541 - 19968: 0xF2F4, - 34558 - 19968: 0xE4B6, - 34560 - 19968: 0xF5B9, - 34562 - 19968: 0xDCF0, - 34563 - 19968: 0xE3F1, - 34568 - 19968: 0xE8A5, - 34584 - 19968: 0xF2BB, - 34586 - 19968: 0xDEA4, - 34588 - 19968: 0xDACC, - 34638 - 19968: 0xCAE9, - 34645 - 19968: 0xE3DA, - 34647 - 19968: 0xFCD9, - 34655 - 19968: 0xEADA, - 34662 - 19968: 0xF9C4, - 34664 - 19968: 0xE3A4, - 34676 - 19968: 0xFBDD, - 34678 - 19968: 0xEFCA, - 34680 - 19968: 0xE8C4, - 34690 - 19968: 0xD5CC, - 34701 - 19968: 0xEBD7, - 34719 - 19968: 0xD9AD, - 34722 - 19968: 0xFBAB, - 34739 - 19968: 0xD3D9, - 34746 - 19968: 0xD5A2, - 34756 - 19968: 0xF6DE, - 34784 - 19968: 0xDAF6, - 34796 - 19968: 0xE0D1, - 34799 - 19968: 0xE9A8, - 34802 - 19968: 0xF5F9, - 34809 - 19968: 0xFAAF, - 34811 - 19968: 0xEBFC, - 34814 - 19968: 0xE0EA, - 34821 - 19968: 0xE3B2, - 34847 - 19968: 0xD5C5, - 34850 - 19968: 0xF1E3, - 34851 - 19968: 0xD5EE, - 34865 - 19968: 0xCDCC, - 34870 - 19968: 0xEDD9, - 34875 - 19968: 0xD8C1, - 34880 - 19968: 0xFAEC, - 34886 - 19968: 0xF1EB, - 34892 - 19968: 0xFABC, - 34893 - 19968: 0xE6E2, - 34898 - 19968: 0xFAE5, - 34899 - 19968: 0xE2FA, - 34903 - 19968: 0xCAB6, - 34905 - 19968: 0xE4B7, - 34907 - 19968: 0xEADB, - 34909 - 19968: 0xF5FA, - 34913 - 19968: 0xFBAC, - 34914 - 19968: 0xCFC3, - 34915 - 19968: 0xEBFD, - 34920 - 19968: 0xF8FA, - 34923 - 19968: 0xDFB9, - 34928 - 19968: 0xE1F1, - 34930 - 19968: 0xD2A4, - 34935 - 19968: 0xF5FB, - 34942 - 19968: 0xD0DA, - 34943 - 19968: 0xD0DB, - 34945 - 19968: 0xEABE, - 34946 - 19968: 0xD9B1, - 34952 - 19968: 0xCAB7, - 34955 - 19968: 0xD3E7, - 34957 - 19968: 0xF8E5, - 34962 - 19968: 0xD3B2, - 34966 - 19968: 0xE2C0, - 34967 - 19968: 0xF2DF, - 34974 - 19968: 0xCDE5, - 34987 - 19968: 0xF9AC, - 34996 - 19968: 0xCDCD, - 35009 - 19968: 0xEEAE, - 35010 - 19968: 0xD6AE, - 35023 - 19968: 0xD7EA, - 35028 - 19968: 0xE7E0, - 35029 - 19968: 0xEBAE, - 35033 - 19968: 0xCFD9, - 35036 - 19968: 0xDCCD, - 35037 - 19968: 0xEDFB, - 35039 - 19968: 0xDEF0, - 35041 - 19968: 0xD7EB, - 35048 - 19968: 0xDEA5, - 35059 - 19968: 0xDFD7, - 35060 - 19968: 0xDBD0, - 35061 - 19968: 0xDBD1, - 35064 - 19968: 0xD5A3, - 35069 - 19968: 0xF0B2, - 35079 - 19968: 0xDCDC, - 35088 - 19968: 0xCAE8, - 35090 - 19968: 0xF8E6, - 35091 - 19968: 0xDCCE, - 35096 - 19968: 0xEADC, - 35097 - 19968: 0xDBD2, - 35109 - 19968: 0xE9B3, - 35114 - 19968: 0xF7DB, - 35126 - 19968: 0xE3A8, - 35128 - 19968: 0xD7AE, - 35131 - 19968: 0xE0E1, - 35137 - 19968: 0xCBBA, - 35140 - 19968: 0xE5D1, - 35167 - 19968: 0xD0DC, - 35172 - 19968: 0xD5C1, - 35178 - 19968: 0xD8CA, - 35186 - 19968: 0xE3A9, - 35199 - 19968: 0xE0A4, - 35201 - 19968: 0xE9A9, - 35203 - 19968: 0xD3C7, - 35206 - 19968: 0xDCDD, - 35207 - 19968: 0xF8AE, - 35211 - 19968: 0xCCB8, - 35215 - 19968: 0xD0AE, - 35219 - 19968: 0xD8F2, - 35222 - 19968: 0xE3CA, - 35233 - 19968: 0xCCAF, - 35241 - 19968: 0xD4AD, - 35242 - 19968: 0xF6D1, - 35250 - 19968: 0xD0CC, - 35258 - 19968: 0xCAC6, - 35261 - 19968: 0xD5C2, - 35264 - 19968: 0xCEBA, - 35282 - 19968: 0xCAC7, - 35299 - 19968: 0xFAB0, - 35316 - 19968: 0xDFD8, - 35320 - 19968: 0xF5BA, - 35328 - 19968: 0xE5EB, - 35330 - 19968: 0xEFF4, - 35331 - 19968: 0xDDB5, - 35336 - 19968: 0xCDAA, - 35338 - 19968: 0xE3F2, - 35340 - 19968: 0xFBF7, - 35342 - 19968: 0xF7D0, - 35347 - 19968: 0xFDBA, - 35350 - 19968: 0xFDE1, - 35351 - 19968: 0xF6FE, - 35352 - 19968: 0xD1C0, - 35355 - 19968: 0xE8C5, - 35357 - 19968: 0xE4B8, - 35359 - 19968: 0xE1E8, - 35363 - 19968: 0xCCC1, - 35365 - 19968: 0xD2ED, - 35370 - 19968: 0xDBBE, - 35373 - 19968: 0xE0E2, - 35377 - 19968: 0xFAC9, - 35380 - 19968: 0xE1CD, - 35382 - 19968: 0xCAB8, - 35386 - 19968: 0xF2E0, - 35387 - 19968: 0xF1C9, - 35408 - 19968: 0xDEF1, - 35412 - 19968: 0xF0DF, - 35413 - 19968: 0xF8C4, - 35419 - 19968: 0xEECC, - 35422 - 19968: 0xDEF2, - 35424 - 19968: 0xE7C9, - 35426 - 19968: 0xE2F3, - 35427 - 19968: 0xE7E1, - 35430 - 19968: 0xE3CB, - 35433 - 19968: 0xE3CC, - 35437 - 19968: 0xCFF8, - 35438 - 19968: 0xEFAC, - 35440 - 19968: 0xFDFE, - 35441 - 19968: 0xFCA5, - 35442 - 19968: 0xFAB1, - 35443 - 19968: 0xDFD9, - 35445 - 19968: 0xE0D2, - 35449 - 19968: 0xF4DA, - 35461 - 19968: 0xF1CA, - 35463 - 19968: 0xCEA3, - 35468 - 19968: 0xF2BC, - 35469 - 19968: 0xECE3, - 35475 - 19968: 0xE0A5, - 35477 - 19968: 0xF7AB, - 35480 - 19968: 0xEBAF, - 35486 - 19968: 0xE5DE, - 35488 - 19968: 0xE1A4, - 35489 - 19968: 0xCDAB, - 35491 - 19968: 0xD9F4, - 35492 - 19968: 0xE8A6, - 35493 - 19968: 0xCDCE, - 35494 - 19968: 0xE1E9, - 35496 - 19968: 0xFCEF, - 35498 - 19968: 0xE0E3, - 35504 - 19968: 0xE2C1, - 35506 - 19968: 0xCEA4, - 35513 - 19968: 0xDEA6, - 35516 - 19968: 0xEBFE, - 35518 - 19968: 0xEBDD, - 35519 - 19968: 0xF0E0, - 35522 - 19968: 0xF4DB, - 35524 - 19968: 0xE2F4, - 35527 - 19968: 0xD3C8, - 35531 - 19968: 0xF4EB, - 35533 - 19968: 0xEEB5, - 35535 - 19968: 0xF5D8, - 35538 - 19968: 0xD5DF, - 35542 - 19968: 0xD6E5, - 35547 - 19968: 0xEBB0, - 35548 - 19968: 0xF4E3, - 35553 - 19968: 0xE3CD, - 35558 - 19968: 0xF4F4, - 35559 - 19968: 0xFAB2, - 35562 - 19968: 0xEFF5, - 35563 - 19968: 0xCADF, - 35565 - 19968: 0xEBB1, - 35566 - 19968: 0xEDBF, - 35569 - 19968: 0xFDC9, - 35574 - 19968: 0xE4A6, - 35575 - 19968: 0xF9A4, - 35576 - 19968: 0xF0B3, - 35578 - 19968: 0xE5EC, - 35582 - 19968: 0xD1E7, - 35584 - 19968: 0xD9C7, - 35585 - 19968: 0xE4D7, - 35586 - 19968: 0xEADD, - 35588 - 19968: 0xD4F7, - 35598 - 19968: 0xDABA, - 35600 - 19968: 0xDACD, - 35604 - 19968: 0xF9CC, - 35606 - 19968: 0xE1DA, - 35607 - 19968: 0xDBBF, - 35609 - 19968: 0xCCC5, - 35610 - 19968: 0xECD0, - 35611 - 19968: 0xCBBB, - 35613 - 19968: 0xDEF3, - 35616 - 19968: 0xE9AA, - 35624 - 19968: 0xD9C8, - 35627 - 19968: 0xEEE3, - 35628 - 19968: 0xD7BD, - 35635 - 19968: 0xCFC4, - 35641 - 19968: 0xD0CD, - 35649 - 19968: 0xFCA6, - 35657 - 19968: 0xF1FB, - 35662 - 19968: 0xFDD2, - 35663 - 19968: 0xD1C1, - 35672 - 19968: 0xE3DB, - 35674 - 19968: 0xD3C9, - 35676 - 19968: 0xDCCF, - 35686 - 19968: 0xCCED, - 35692 - 19968: 0xDEA7, - 35695 - 19968: 0xE6BB, - 35696 - 19968: 0xECA1, - 35700 - 19968: 0xCCB9, - 35703 - 19968: 0xFBDE, - 35709 - 19968: 0xE7E2, - 35712 - 19968: 0xD4C1, - 35722 - 19968: 0xDCA8, - 35728 - 19968: 0xE2C2, - 35730 - 19968: 0xF3D8, - 35731 - 19968: 0xE5D3, - 35734 - 19968: 0xF3D9, - 35738 - 19968: 0xF3C6, - 35895 - 19968: 0xCDDB, - 35903 - 19968: 0xCDAC, - 35905 - 19968: 0xFCC3, - 35910 - 19968: 0xD4E7, - 35912 - 19968: 0xD1C2, - 35914 - 19968: 0xF9A5, - 35916 - 19968: 0xE8D5, - 35925 - 19968: 0xE3CE, - 35930 - 19968: 0xD4CA, - 35937 - 19968: 0xDFDA, - 35946 - 19968: 0xFBDF, - 35947 - 19968: 0xE7E3, - 35961 - 19968: 0xF8FB, - 35962 - 19968: 0xE3CF, - 35970 - 19968: 0xF5B0, - 35978 - 19968: 0xD8E7, - 35980 - 19968: 0xD9C9, - 35997 - 19968: 0xF8AF, - 35998 - 19968: 0xEFF6, - 36000 - 19968: 0xDDB6, - 36001 - 19968: 0xEEAF, - 36002 - 19968: 0xCDF8, - 36007 - 19968: 0xDEB8, - 36008 - 19968: 0xFCA7, - 36009 - 19968: 0xF7FC, - 36010 - 19968: 0xF7B1, - 36011 - 19968: 0xCEBB, - 36012 - 19968: 0xF4A1, - 36015 - 19968: 0xEECD, - 36016 - 19968: 0xE1AE, - 36019 - 19968: 0xECC3, - 36020 - 19968: 0xCFFE, - 36022 - 19968: 0xF8BF, - 36023 - 19968: 0xD8E2, - 36024 - 19968: 0xD3E8, - 36027 - 19968: 0xDEA8, - 36028 - 19968: 0xF4E4, - 36029 - 19968: 0xECC2, - 36031 - 19968: 0xD9F5, - 36032 - 19968: 0xF9C5, - 36033 - 19968: 0xDDD3, - 36034 - 19968: 0xD6F1, - 36035 - 19968: 0xECFC, - 36036 - 19968: 0xFCF0, - 36039 - 19968: 0xEDC0, - 36040 - 19968: 0xCAB9, - 36042 - 19968: 0xEEE4, - 36049 - 19968: 0xF2E1, - 36051 - 19968: 0xDEB9, - 36058 - 19968: 0xD6F2, - 36060 - 19968: 0xDEF4, - 36062 - 19968: 0xDFDB, - 36064 - 19968: 0xDBD3, - 36066 - 19968: 0xFAE7, - 36067 - 19968: 0xD8E3, - 36068 - 19968: 0xF4C1, - 36070 - 19968: 0xDDB7, - 36074 - 19968: 0xF2F5, - 36077 - 19968: 0xD4AE, - 36084 - 19968: 0xD6F3, - 36091 - 19968: 0xDDB8, - 36092 - 19968: 0xCFC5, - 36093 - 19968: 0xDFDF, - 36100 - 19968: 0xF2BE, - 36101 - 19968: 0xF6A1, - 36103 - 19968: 0xEBCB, - 36104 - 19968: 0xF1FC, - 36106 - 19968: 0xF3C7, - 36109 - 19968: 0xE0EB, - 36115 - 19968: 0xEDFC, - 36118 - 19968: 0xE1DB, - 36196 - 19968: 0xEEE5, - 36198 - 19968: 0xDEF5, - 36203 - 19968: 0xFAD3, - 36208 - 19968: 0xF1CB, - 36211 - 19968: 0xD0AF, - 36212 - 19968: 0xDDB9, - 36215 - 19968: 0xD1C3, - 36229 - 19968: 0xF5B1, - 36234 - 19968: 0xEAC6, - 36249 - 19968: 0xF0E1, - 36259 - 19968: 0xF6AC, - 36264 - 19968: 0xF5D9, - 36275 - 19968: 0xF0EB, - 36282 - 19968: 0xDDBA, - 36286 - 19968: 0xF2BF, - 36294 - 19968: 0xF7C5, - 36299 - 19968: 0xDBA2, - 36300 - 19968: 0xF2F6, - 36303 - 19968: 0xCABA, - 36315 - 19968: 0xF7F5, - 36317 - 19968: 0xCBE5, - 36321 - 19968: 0xEEE6, - 36323 - 19968: 0xE0D3, - 36328 - 19968: 0xCEA5, - 36335 - 19968: 0xD6D8, - 36339 - 19968: 0xD4AF, - 36362 - 19968: 0xE9C9, - 36367 - 19968: 0xD3CE, - 36368 - 19968: 0xF4C2, - 36382 - 19968: 0xCBE6, - 36394 - 19968: 0xF1A1, - 36400 - 19968: 0xEBB2, - 36405 - 19968: 0xF1A2, - 36418 - 19968: 0xEBB3, - 36420 - 19968: 0xF0B4, - 36423 - 19968: 0xCBF4, - 36424 - 19968: 0xD4B0, - 36425 - 19968: 0xF3B2, - 36426 - 19968: 0xFBB7, - 36441 - 19968: 0xF5EC, - 36447 - 19968: 0xEEE7, - 36448 - 19968: 0xF4B2, - 36468 - 19968: 0xF5ED, - 36470 - 19968: 0xCFF3, - 36481 - 19968: 0xF0E2, - 36487 - 19968: 0xEECE, - 36490 - 19968: 0xF1CC, - 36493 - 19968: 0xE5B8, - 36522 - 19968: 0xD7F5, - 36523 - 19968: 0xE3F3, - 36524 - 19968: 0xCFE5, - 36544 - 19968: 0xCFC6, - 36554 - 19968: 0xF3B3, - 36555 - 19968: 0xE4D8, - 36556 - 19968: 0xCFF9, - 36557 - 19968: 0xCFDA, - 36562 - 19968: 0xFACD, - 36575 - 19968: 0xE6E3, - 36587 - 19968: 0xF2E2, - 36600 - 19968: 0xF5EE, - 36603 - 19968: 0xCABB, - 36606 - 19968: 0xE3DC, - 36611 - 19968: 0xCEF2, - 36613 - 19968: 0xD6D9, - 36617 - 19968: 0xEEB0, - 36626 - 19968: 0xF4E5, - 36627 - 19968: 0xD8C2, - 36628 - 19968: 0xDCD0, - 36629 - 19968: 0xCCEE, - 36635 - 19968: 0xD5E0, - 36636 - 19968: 0xF6CA, - 36637 - 19968: 0xFDCA, - 36638 - 19968: 0xD8D6, - 36639 - 19968: 0xF4CF, - 36646 - 19968: 0xD6A6, - 36647 - 19968: 0xDCBE, - 36649 - 19968: 0xDBD4, - 36650 - 19968: 0xD7C7, - 36655 - 19968: 0xF2FE, - 36659 - 19968: 0xF1CD, - 36664 - 19968: 0xE2C3, - 36665 - 19968: 0xDCDE, - 36667 - 19968: 0xDCDF, - 36670 - 19968: 0xEFAD, - 36671 - 19968: 0xE6AB, - 36676 - 19968: 0xF9DD, - 36677 - 19968: 0xEABF, - 36681 - 19968: 0xEFAE, - 36685 - 19968: 0xF4D0, - 36686 - 19968: 0xCEF3, - 36701 - 19968: 0xE6AC, - 36703 - 19968: 0xCEDE, - 36706 - 19968: 0xD5F9, - 36763 - 19968: 0xE3F4, - 36764 - 19968: 0xCDD0, - 36771 - 19968: 0xD5B8, - 36774 - 19968: 0xF7FD, - 36776 - 19968: 0xDCA9, - 36781 - 19968: 0xDEF6, - 36783 - 19968: 0xDCAA, - 36784 - 19968: 0xF2E3, - 36785 - 19968: 0xE9B4, - 36786 - 19968: 0xD2DC, - 36802 - 19968: 0xE9E6, - 36805 - 19968: 0xE3F6, - 36814 - 19968: 0xE7CA, - 36817 - 19968: 0xD0CE, - 36820 - 19968: 0xDAF7, - 36838 - 19968: 0xCABC, - 36842 - 19968: 0xEEE8, - 36843 - 19968: 0xDADE, - 36845 - 19968: 0xF2F7, - 36848 - 19968: 0xE2FB, - 36850 - 19968: 0xCCA6, - 36855 - 19968: 0xDABB, - 36857 - 19968: 0xEEE9, - 36861 - 19968: 0xF5DA, - 36864 - 19968: 0xF7DC, - 36865 - 19968: 0xE1EA, - 36866 - 19968: 0xCEC1, - 36867 - 19968: 0xD4B1, - 36869 - 19968: 0xFDB1, - 36870 - 19968: 0xE6BD, - 36872 - 19968: 0xFBAD, - 36875 - 19968: 0xF8E7, - 36877 - 19968: 0xE1CE, - 36879 - 19968: 0xF7E2, - 36880 - 19968: 0xF5EF, - 36881 - 19968: 0xCFC7, - 36884 - 19968: 0xD4B2, - 36885 - 19968: 0xCCEF, - 36887 - 19968: 0xD4E8, - 36889 - 19968: 0xEECF, - 36890 - 19968: 0xF7D7, - 36893 - 19968: 0xE0A6, - 36894 - 19968: 0xD6C1, - 36895 - 19968: 0xE1DC, - 36896 - 19968: 0xF0E3, - 36897 - 19968: 0xF1E4, - 36898 - 19968: 0xDCF1, - 36899 - 19968: 0xD6A7, - 36910 - 19968: 0xF4F5, - 36913 - 19968: 0xF1CE, - 36914 - 19968: 0xF2E4, - 36917 - 19968: 0xD0B0, - 36920 - 19968: 0xECEF, - 36924 - 19968: 0xF9BA, - 36926 - 19968: 0xEBB5, - 36929 - 19968: 0xD4ED, - 36930 - 19968: 0xE2C4, - 36935 - 19968: 0xE9E7, - 36938 - 19968: 0xEBB4, - 36939 - 19968: 0xEAA1, - 36941 - 19968: 0xF8BC, - 36942 - 19968: 0xCEA6, - 36944 - 19968: 0xF9C6, - 36945 - 19968: 0xFCDA, - 36947 - 19968: 0xD4B3, - 36948 - 19968: 0xD3B9, - 36949 - 19968: 0xEADE, - 36953 - 19968: 0xE9AB, - 36956 - 19968: 0xE1E1, - 36957 - 19968: 0xD3CF, - 36958 - 19968: 0xF4F6, - 36960 - 19968: 0xEAC0, - 36961 - 19968: 0xE1CF, - 36963 - 19968: 0xCCBA, - 36969 - 19968: 0xEEEA, - 36973 - 19968: 0xF0E4, - 36974 - 19968: 0xF3B4, - 36975 - 19968: 0xD4EE, - 36978 - 19968: 0xF2C0, - 36981 - 19968: 0xF1E5, - 36983 - 19968: 0xF4C3, - 36984 - 19968: 0xE0D4, - 36986 - 19968: 0xEBB6, - 36988 - 19968: 0xD7A1, - 36989 - 19968: 0xCBE8, - 36991 - 19968: 0xF9AD, - 36992 - 19968: 0xE9AD, - 36993 - 19968: 0xD8E4, - 36994 - 19968: 0xFAB3, - 36995 - 19968: 0xE2C5, - 36996 - 19968: 0xFCBD, - 36999 - 19968: 0xECC4, - 37000 - 19968: 0xD8B1, - 37002 - 19968: 0xDCAB, - 37007 - 19968: 0xD5A4, - 37009 - 19968: 0xEBE9, - 37013 - 19968: 0xE8BB, - 37017 - 19968: 0xD8D7, - 37026 - 19968: 0xFBAE, - 37027 - 19968: 0xD1E1, - 37030 - 19968: 0xDBC0, - 37032 - 19968: 0xF5BE, - 37034 - 19968: 0xDEF7, - 37039 - 19968: 0xCAFB, - 37040 - 19968: 0xF7C6, - 37041 - 19968: 0xCFC8, - 37045 - 19968: 0xE1D0, - 37048 - 19968: 0xEED0, - 37057 - 19968: 0xE9F4, - 37066 - 19968: 0xCEF4, - 37086 - 19968: 0xD5CD, - 37089 - 19968: 0xCFDB, - 37096 - 19968: 0xDDBB, - 37101 - 19968: 0xCEAC, - 37109 - 19968: 0xE9E8, - 37117 - 19968: 0xD4B4, - 37122 - 19968: 0xE4C7, - 37138 - 19968: 0xF5DB, - 37141 - 19968: 0xFAC1, - 37145 - 19968: 0xDEA9, - 37159 - 19968: 0xD4F8, - 37165 - 19968: 0xEFF7, - 37170 - 19968: 0xD3B3, - 37193 - 19968: 0xEBB7, - 37194 - 19968: 0xEFF8, - 37195 - 19968: 0xF5DC, - 37196 - 19968: 0xEDCC, - 37197 - 19968: 0xDBD5, - 37198 - 19968: 0xF1CF, - 37202 - 19968: 0xF1D0, - 37218 - 19968: 0xF5B2, - 37225 - 19968: 0xD9AE, - 37226 - 19968: 0xD5AC, - 37228 - 19968: 0xE2C6, - 37237 - 19968: 0xFDA3, - 37239 - 19968: 0xFBE5, - 37240 - 19968: 0xDFAB, - 37255 - 19968: 0xE2F5, - 37257 - 19968: 0xF6AD, - 37259 - 19968: 0xF5B3, - 37261 - 19968: 0xF0B5, - 37266 - 19968: 0xE1A5, - 37276 - 19968: 0xF5DD, - 37291 - 19968: 0xECA2, - 37292 - 19968: 0xEDFD, - 37294 - 19968: 0xF5B4, - 37295 - 19968: 0xFBB8, - 37297 - 19968: 0xDBA3, - 37300 - 19968: 0xD6CA, - 37301 - 19968: 0xCBD9, - 37312 - 19968: 0xE5D4, - 37319 - 19968: 0xF3FA, - 37321 - 19968: 0xEBB8, - 37323 - 19968: 0xE0B7, - 37324 - 19968: 0xD7EC, - 37325 - 19968: 0xF1EC, - 37326 - 19968: 0xE5AF, - 37327 - 19968: 0xD5E1, - 37328 - 19968: 0xD7ED, - 37329 - 19968: 0xD1D1, - 37335 - 19968: 0xE1F2, - 37336 - 19968: 0xEFF9, - 37340 - 19968: 0xDDBC, - 37341 - 19968: 0xF6DC, - 37347 - 19968: 0xF0E5, - 37351 - 19968: 0xF4C4, - 37354 - 19968: 0xE9E9, - 37365 - 19968: 0xF3FB, - 37389 - 19968: 0xD4EF, - 37392 - 19968: 0xCCA2, - 37393 - 19968: 0xF7FE, - 37394 - 19968: 0xDFBC, - 37399 - 19968: 0xEBCD, - 37406 - 19968: 0xD0B7, - 37428 - 19968: 0xD6C2, - 37434 - 19968: 0xE8AD, - 37439 - 19968: 0xEFAF, - 37440 - 19968: 0xCBA5, - 37445 - 19968: 0xCBE9, - 37449 - 19968: 0xFAE8, - 37463 - 19968: 0xCCC6, - 37467 - 19968: 0xE6E7, - 37470 - 19968: 0xEAC7, - 37474 - 19968: 0xDBA4, - 37476 - 19968: 0xCFC9, - 37477 - 19968: 0xE2FC, - 37478 - 19968: 0xEFFA, - 37504 - 19968: 0xEBDE, - 37507 - 19968: 0xF5C8, - 37509 - 19968: 0xD4DE, - 37521 - 19968: 0xE0D5, - 37523 - 19968: 0xEFB0, - 37526 - 19968: 0xE2C7, - 37528 - 19968: 0xD9AF, - 37532 - 19968: 0xF9E7, - 37555 - 19968: 0xE7E5, - 37558 - 19968: 0xCFCA, - 37559 - 19968: 0xE1D1, - 37561 - 19968: 0xE2C8, - 37580 - 19968: 0xEFFB, - 37583 - 19968: 0xFAF9, - 37586 - 19968: 0xDCF2, - 37604 - 19968: 0xE0A7, - 37610 - 19968: 0xF8E8, - 37624 - 19968: 0xCBEA, - 37628 - 19968: 0xCBBC, - 37636 - 19968: 0xD6E2, - 37648 - 19968: 0xF5DE, - 37656 - 19968: 0xF5DF, - 37658 - 19968: 0xEEB6, - 37662 - 19968: 0xE2F6, - 37663 - 19968: 0xD3CA, - 37664 - 19968: 0xEFFC, - 37665 - 19968: 0xD1C4, - 37666 - 19968: 0xEFB1, - 37668 - 19968: 0xD1C5, - 37670 - 19968: 0xD0DE, - 37672 - 19968: 0xD9E1, - 37675 - 19968: 0xE0B8, - 37678 - 19968: 0xCDD1, - 37679 - 19968: 0xF3B9, - 37704 - 19968: 0xE7CC, - 37706 - 19968: 0xD6A8, - 37707 - 19968: 0xCEA7, - 37709 - 19968: 0xD4B5, - 37716 - 19968: 0xE4C8, - 37723 - 19968: 0xD3B4, - 37742 - 19968: 0xEBB9, - 37749 - 19968: 0xCBF5, - 37756 - 19968: 0xF6DD, - 37758 - 19968: 0xF1A3, - 37772 - 19968: 0xCCC7, - 37780 - 19968: 0xE9CA, - 37782 - 19968: 0xE1F0, - 37786 - 19968: 0xF5E0, - 37795 - 19968: 0xFBAF, - 37799 - 19968: 0xCBD1, - 37804 - 19968: 0xFBE0, - 37805 - 19968: 0xF2E5, - 37808 - 19968: 0xECF0, - 37827 - 19968: 0xF0EC, - 37841 - 19968: 0xEEEB, - 37854 - 19968: 0xE9CB, - 37857 - 19968: 0xCCF0, - 37860 - 19968: 0xD7AF, - 37878 - 19968: 0xF3A1, - 37892 - 19968: 0xFCF5, - 37912 - 19968: 0xF1A4, - 37925 - 19968: 0xE0D6, - 37931 - 19968: 0xEFB2, - 37941 - 19968: 0xF4D1, - 37944 - 19968: 0xF7A1, - 37956 - 19968: 0xF1D1, - 37969 - 19968: 0xCAFC, - 37970 - 19968: 0xCAFD, - 37979 - 19968: 0xCECE, - 38013 - 19968: 0xF3C8, - 38015 - 19968: 0xF3BA, - 38263 - 19968: 0xEDFE, - 38272 - 19968: 0xDAA6, - 38275 - 19968: 0xE0EC, - 38281 - 19968: 0xF8CD, - 38283 - 19968: 0xCBD2, - 38287 - 19968: 0xEBCE, - 38289 - 19968: 0xF9D8, - 38290 - 19968: 0xF9D9, - 38291 - 19968: 0xCAE0, - 38292 - 19968: 0xDACA, - 38296 - 19968: 0xCBA6, - 38307 - 19968: 0xCAC8, - 38308 - 19968: 0xF9EE, - 38309 - 19968: 0xDBEC, - 38312 - 19968: 0xD0B1, - 38317 - 19968: 0xD5EF, - 38321 - 19968: 0xE6F3, - 38331 - 19968: 0xE7A2, - 38332 - 19968: 0xE4D9, - 38343 - 19968: 0xE4E1, - 38346 - 19968: 0xFCC4, - 38356 - 19968: 0xF9EF, - 38357 - 19968: 0xCFF4, - 38358 - 19968: 0xF7E6, - 38364 - 19968: 0xCEBC, - 38369 - 19968: 0xF4C5, - 38370 - 19968: 0xDCA3, - 38428 - 19968: 0xDDBD, - 38433 - 19968: 0xF4C6, - 38442 - 19968: 0xF8A1, - 38446 - 19968: 0xE8D6, - 38450 - 19968: 0xDBC1, - 38459 - 19968: 0xF0E6, - 38463 - 19968: 0xE4B9, - 38464 - 19968: 0xF6ED, - 38466 - 19968: 0xF9AE, - 38468 - 19968: 0xDDBE, - 38475 - 19968: 0xD7B0, - 38476 - 19968: 0xD8E8, - 38477 - 19968: 0xCBBD, - 38480 - 19968: 0xF9DA, - 38491 - 19968: 0xF8CE, - 38492 - 19968: 0xF9F0, - 38493 - 19968: 0xE0ED, - 38494 - 19968: 0xE3B3, - 38495 - 19968: 0xF4B3, - 38498 - 19968: 0xEAC2, - 38499 - 19968: 0xF2E6, - 38500 - 19968: 0xF0B6, - 38506 - 19968: 0xDBD6, - 38512 - 19968: 0xEBE4, - 38515 - 19968: 0xF2E7, - 38517 - 19968: 0xD7D5, - 38518 - 19968: 0xD4B6, - 38519 - 19968: 0xF9E8, - 38520 - 19968: 0xD7C1, - 38525 - 19968: 0xE5D5, - 38533 - 19968: 0xE9EA, - 38534 - 19968: 0xD7CC, - 38538 - 19968: 0xD3E9, - 38539 - 19968: 0xE2C9, - 38541 - 19968: 0xFCDB, - 38542 - 19968: 0xCDAD, - 38548 - 19968: 0xCCB0, - 38549 - 19968: 0xEAA2, - 38552 - 19968: 0xE4F6, - 38553 - 19968: 0xD0C0, - 38555 - 19968: 0xF0B7, - 38556 - 19968: 0xEEA1, - 38563 - 19968: 0xD7F6, - 38567 - 19968: 0xE2CA, - 38568 - 19968: 0xE2CB, - 38570 - 19968: 0xFACF, - 38577 - 19968: 0xEBDF, - 38583 - 19968: 0xD6CB, - 38587 - 19968: 0xF4B4, - 38592 - 19968: 0xEDCD, - 38593 - 19968: 0xE4D2, - 38596 - 19968: 0xEAA9, - 38597 - 19968: 0xE4BA, - 38598 - 19968: 0xF3A2, - 38599 - 19968: 0xCDD2, - 38601 - 19968: 0xF6CB, - 38603 - 19968: 0xF1E6, - 38604 - 19968: 0xEDC1, - 38605 - 19968: 0xE8BC, - 38606 - 19968: 0xEED1, - 38613 - 19968: 0xF0E7, - 38614 - 19968: 0xE2CC, - 38617 - 19968: 0xE4AA, - 38619 - 19968: 0xF5E1, - 38620 - 19968: 0xEDDA, - 38626 - 19968: 0xD7EE, - 38627 - 19968: 0xD1F1, - 38632 - 19968: 0xE9EB, - 38633 - 19968: 0xE9EC, - 38634 - 19968: 0xE0E4, - 38639 - 19968: 0xDAA7, - 38640 - 19968: 0xDDD4, - 38642 - 19968: 0xEAA3, - 38646 - 19968: 0xD6C3, - 38647 - 19968: 0xD6F4, - 38649 - 19968: 0xDADF, - 38651 - 19968: 0xEFB3, - 38656 - 19968: 0xE2CD, - 38662 - 19968: 0xEFFD, - 38663 - 19968: 0xF2E8, - 38673 - 19968: 0xEFC5, - 38675 - 19968: 0xE7E7, - 38678 - 19968: 0xD7FD, - 38681 - 19968: 0xE7CE, - 38684 - 19968: 0xDFDC, - 38686 - 19968: 0xF9C7, - 38695 - 19968: 0xD9F6, - 38704 - 19968: 0xDFAC, - 38706 - 19968: 0xD6DA, - 38713 - 19968: 0xDCA4, - 38717 - 19968: 0xF0B8, - 38722 - 19968: 0xD5FA, - 38724 - 19968: 0xE4F7, - 38728 - 19968: 0xD6C4, - 38737 - 19968: 0xF4EC, - 38742 - 19968: 0xEFFE, - 38748 - 19968: 0xF0A1, - 38750 - 19968: 0xDEAA, - 38753 - 19968: 0xDABC, - 38754 - 19968: 0xD8FC, - 38761 - 19968: 0xFAD4, - 38765 - 19968: 0xECE5, - 38772 - 19968: 0xFCA8, - 38775 - 19968: 0xECE6, - 38778 - 19968: 0xD8CB, - 38795 - 19968: 0xFBB9, - 38797 - 19968: 0xE4D3, - 38799 - 19968: 0xCDF9, - 38816 - 19968: 0xCFD3, - 38824 - 19968: 0xCAEA, - 38827 - 19968: 0xCFD4, - 38829 - 19968: 0xF8BD, - 38854 - 19968: 0xF4C7, - 38859 - 19968: 0xEADF, - 38867 - 19968: 0xF9DB, - 38876 - 19968: 0xD4B7, - 38899 - 19968: 0xEBE5, - 38902 - 19968: 0xE1D2, - 38907 - 19968: 0xEAA4, - 38911 - 19968: 0xFAC2, - 38912 - 19968: 0xFBE1, - 38913 - 19968: 0xFAED, - 38914 - 19968: 0xF0A2, - 38915 - 19968: 0xCCF1, - 38917 - 19968: 0xFAA3, - 38918 - 19968: 0xE2F7, - 38920 - 19968: 0xE2CE, - 38922 - 19968: 0xE9F5, - 38924 - 19968: 0xE1EB, - 38928 - 19968: 0xE7E8, - 38929 - 19968: 0xE8D7, - 38930 - 19968: 0xDAF8, - 38931 - 19968: 0xD4CB, - 38935 - 19968: 0xF7F6, - 38936 - 19968: 0xD6C5, - 38957 - 19968: 0xD4E9, - 38960 - 19968: 0xFAFA, - 38968 - 19968: 0xCCF2, - 38969 - 19968: 0xF7DD, - 38971 - 19968: 0xDEBA, - 38982 - 19968: 0xCEA8, - 38988 - 19968: 0xF0B9, - 38989 - 19968: 0xE4FE, - 38990 - 19968: 0xE4C9, - 38996 - 19968: 0xE4D4, - 39000 - 19968: 0xEAC3, - 39002 - 19968: 0xEFB4, - 39006 - 19968: 0xD7BE, - 39013 - 19968: 0xFBE2, - 39015 - 19968: 0xCDD3, - 39019 - 19968: 0xEFB5, - 39023 - 19968: 0xFAE9, - 39080 - 19968: 0xF9A6, - 39087 - 19968: 0xDFBD, - 39089 - 19968: 0xF7C7, - 39108 - 19968: 0xF8FD, - 39111 - 19968: 0xF8FC, - 39131 - 19968: 0xDEAB, - 39132 - 19968: 0xDBE8, - 39135 - 19968: 0xE3DD, - 39137 - 19968: 0xE1E2, - 39138 - 19968: 0xD1C6, - 39149 - 19968: 0xF6D0, - 39150 - 19968: 0xEBE6, - 39151 - 19968: 0xDAF9, - 39156 - 19968: 0xECC7, - 39164 - 19968: 0xDEF8, - 39165 - 19968: 0xF8E9, - 39166 - 19968: 0xE3DE, - 39171 - 19968: 0xCEF5, - 39177 - 19968: 0xFAC3, - 39178 - 19968: 0xE5D7, - 39180 - 19968: 0xECC8, - 39184 - 19968: 0xF3C9, - 39187 - 19968: 0xE4BB, - 39192 - 19968: 0xE6AE, - 39198 - 19968: 0xEFB6, - 39200 - 19968: 0xDCBF, - 39208 - 19968: 0xCEBD, - 39237 - 19968: 0xD8C3, - 39241 - 19968: 0xD0CF, - 39243 - 19968: 0xCFFA, - 39244 - 19968: 0xF3CA, - 39245 - 19968: 0xE0D7, - 39249 - 19968: 0xD1C7, - 39250 - 19968: 0xE9AE, - 39252 - 19968: 0xE8BD, - 39255 - 19968: 0xFAC4, - 39318 - 19968: 0xE2CF, - 39321 - 19968: 0xFAC5, - 39325 - 19968: 0xF9B8, - 39333 - 19968: 0xDCE0, - 39336 - 19968: 0xFBB0, - 39340 - 19968: 0xD8A9, - 39341 - 19968: 0xE5DF, - 39342 - 19968: 0xF9A7, - 39345 - 19968: 0xF6EE, - 39347 - 19968: 0xF6CC, - 39348 - 19968: 0xE2F8, - 39353 - 19968: 0xECF1, - 39361 - 19968: 0xDAE0, - 39376 - 19968: 0xF1D2, - 39377 - 19968: 0xD2CC, - 39378 - 19968: 0xCFCB, - 39381 - 19968: 0xCABD, - 39385 - 19968: 0xDDBF, - 39389 - 19968: 0xF6EF, - 39391 - 19968: 0xDEF9, - 39405 - 19968: 0xFAB4, - 39409 - 19968: 0xD5AD, - 39423 - 19968: 0xF1E7, - 39425 - 19968: 0xDEBE, - 39432 - 19968: 0xDCC0, - 39438 - 19968: 0xD1C8, - 39439 - 19968: 0xD1C9, - 39449 - 19968: 0xF8BE, - 39467 - 19968: 0xCBF6, - 39472 - 19968: 0xD4F9, - 39478 - 19968: 0xF5E2, - 39479 - 19968: 0xE1D3, - 39488 - 19968: 0xD8E9, - 39491 - 19968: 0xF8FE, - 39493 - 19968: 0xCFCC, - 39501 - 19968: 0xFDA4, - 39509 - 19968: 0xCEF6, - 39511 - 19968: 0xFAD0, - 39514 - 19968: 0xCCF3, - 39515 - 19968: 0xE6BE, - 39519 - 19968: 0xF6AE, - 39522 - 19968: 0xD5F0, - 39525 - 19968: 0xD1CA, - 39529 - 19968: 0xFCBE, - 39530 - 19968: 0xD5F1, - 39592 - 19968: 0xCDE9, - 39608 - 19968: 0xFAB5, - 39635 - 19968: 0xE2D0, - 39636 - 19968: 0xF4F7, - 39640 - 19968: 0xCDD4, - 39653 - 19968: 0xE7A3, - 39662 - 19968: 0xDBA5, - 39706 - 19968: 0xE2D1, - 39719 - 19968: 0xD7A2, - 39722 - 19968: 0xF7E3, - 39729 - 19968: 0xEAA6, - 39740 - 19968: 0xD0A1, - 39745 - 19968: 0xCEDA, - 39746 - 19968: 0xFBEB, - 39747 - 19968: 0xDBA6, - 39748 - 19968: 0xDBDE, - 39749 - 19968: 0xD8E5, - 39759 - 19968: 0xEAE0, - 39764 - 19968: 0xD8AA, - 39770 - 19968: 0xE5E0, - 39791 - 19968: 0xD6DB, - 39822 - 19968: 0xEFC6, - 39825 - 19968: 0xF8EA, - 39839 - 19968: 0xE4D5, - 39851 - 19968: 0xCEF7, - 39854 - 19968: 0xE0D8, - 39881 - 19968: 0xD7EF, - 39894 - 19968: 0xF4ED, - 39908 - 19968: 0xCDE6, - 39912 - 19968: 0xCCF4, - 39949 - 19968: 0xF5E3, - 39952 - 19968: 0xE4CA, - 39954 - 19968: 0xDCE1, - 39957 - 19968: 0xF9C8, - 39973 - 19968: 0xFCBF, - 39986 - 19968: 0xE8A7, - 39995 - 19968: 0xD8C4, - 40007 - 19968: 0xCBBE, - 40009 - 19968: 0xDCAE, - 40023 - 19968: 0xD7F7, - 40165 - 19968: 0xF0E8, - 40167 - 19968: 0xDDC0, - 40169 - 19968: 0xCFCD, - 40179 - 19968: 0xDCF3, - 40180 - 19968: 0xD9B0, - 40182 - 19968: 0xE6E9, - 40201 - 19968: 0xE4BC, - 40219 - 19968: 0xEAC4, - 40230 - 19968: 0xE4EC, - 40232 - 19968: 0xE4E5, - 40251 - 19968: 0xFBF8, - 40273 - 19968: 0xCCBB, - 40285 - 19968: 0xE4BD, - 40288 - 19968: 0xCDDC, - 40289 - 19968: 0xD9F7, - 40300 - 19968: 0xDDDF, - 40306 - 19968: 0xEDCE, - 40361 - 19968: 0xD9D0, - 40367 - 19968: 0xE5A3, - 40372 - 19968: 0xF9CD, - 40388 - 19968: 0xCDAE, - 40407 - 19968: 0xCFCE, - 40434 - 19968: 0xF6AF, - 40440 - 19968: 0xFDD3, - 40441 - 19968: 0xEBED, - 40442 - 19968: 0xD6DC, - 40474 - 19968: 0xE5A4, - 40478 - 19968: 0xD5B6, - 40565 - 19968: 0xD6DD, - 40569 - 19968: 0xF9E9, - 40573 - 19968: 0xE7A4, - 40575 - 19968: 0xD6E3, - 40594 - 19968: 0xD1CB, - 40595 - 19968: 0xD6E4, - 40599 - 19968: 0xD5F2, - 40605 - 19968: 0xDEFA, - 40607 - 19968: 0xD7F8, - 40613 - 19968: 0xD8EA, - 40628 - 19968: 0xCFD5, - 40629 - 19968: 0xD8FD, - 40635 - 19968: 0xD8AB, - 40638 - 19968: 0xFDCB, - 40643 - 19968: 0xFCDC, - 40653 - 19968: 0xE0A8, - 40654 - 19968: 0xD5F3, - 40657 - 19968: 0xFDD9, - 40660 - 19968: 0xCCA3, - 40664 - 19968: 0xD9F9, - 40667 - 19968: 0xD3EA, - 40668 - 19968: 0xF5F5, - 40670 - 19968: 0xEFC7, - 40680 - 19968: 0xD3DA, - 40692 - 19968: 0xDABD, - 40711 - 19968: 0xE8A8, - 40712 - 19968: 0xDCAF, - 40718 - 19968: 0xF0A3, - 40723 - 19968: 0xCDD5, - 40736 - 19968: 0xE0A9, - 40763 - 19968: 0xDEAC, - 40778 - 19968: 0xF0BA, - 40779 - 19968: 0xEEB1, - 40782 - 19968: 0xEEB2, - 40786 - 19968: 0xF6CD, - 40799 - 19968: 0xEED2, - 40801 - 19968: 0xD6C6, - 40807 - 19968: 0xE0E5, - 40810 - 19968: 0xF3BB, - 40812 - 19968: 0xE5E1, - 40823 - 19968: 0xE4CB, - 40845 - 19968: 0xD7A3, - 40848 - 19968: 0xDBC2, - 40853 - 19968: 0xCAFE, - 40860 - 19968: 0xCFCF, -} - -const encode1Low, encode1High = 44032, 55204 - -var encode1 = [...]uint16{ - 44032 - 44032: 0xB0A1, - 44033 - 44032: 0xB0A2, - 44034 - 44032: 0x8141, - 44035 - 44032: 0x8142, - 44036 - 44032: 0xB0A3, - 44037 - 44032: 0x8143, - 44038 - 44032: 0x8144, - 44039 - 44032: 0xB0A4, - 44040 - 44032: 0xB0A5, - 44041 - 44032: 0xB0A6, - 44042 - 44032: 0xB0A7, - 44043 - 44032: 0x8145, - 44044 - 44032: 0x8146, - 44045 - 44032: 0x8147, - 44046 - 44032: 0x8148, - 44047 - 44032: 0x8149, - 44048 - 44032: 0xB0A8, - 44049 - 44032: 0xB0A9, - 44050 - 44032: 0xB0AA, - 44051 - 44032: 0xB0AB, - 44052 - 44032: 0xB0AC, - 44053 - 44032: 0xB0AD, - 44054 - 44032: 0xB0AE, - 44055 - 44032: 0xB0AF, - 44056 - 44032: 0x814A, - 44057 - 44032: 0xB0B0, - 44058 - 44032: 0xB0B1, - 44059 - 44032: 0xB0B2, - 44060 - 44032: 0xB0B3, - 44061 - 44032: 0xB0B4, - 44062 - 44032: 0x814B, - 44063 - 44032: 0x814C, - 44064 - 44032: 0xB0B5, - 44065 - 44032: 0x814D, - 44066 - 44032: 0x814E, - 44067 - 44032: 0x814F, - 44068 - 44032: 0xB0B6, - 44069 - 44032: 0x8150, - 44070 - 44032: 0x8151, - 44071 - 44032: 0x8152, - 44072 - 44032: 0x8153, - 44073 - 44032: 0x8154, - 44074 - 44032: 0x8155, - 44075 - 44032: 0x8156, - 44076 - 44032: 0xB0B7, - 44077 - 44032: 0xB0B8, - 44078 - 44032: 0x8157, - 44079 - 44032: 0xB0B9, - 44080 - 44032: 0xB0BA, - 44081 - 44032: 0xB0BB, - 44082 - 44032: 0x8158, - 44083 - 44032: 0x8159, - 44084 - 44032: 0x815A, - 44085 - 44032: 0x8161, - 44086 - 44032: 0x8162, - 44087 - 44032: 0x8163, - 44088 - 44032: 0xB0BC, - 44089 - 44032: 0xB0BD, - 44090 - 44032: 0x8164, - 44091 - 44032: 0x8165, - 44092 - 44032: 0xB0BE, - 44093 - 44032: 0x8166, - 44094 - 44032: 0x8167, - 44095 - 44032: 0x8168, - 44096 - 44032: 0xB0BF, - 44097 - 44032: 0x8169, - 44098 - 44032: 0x816A, - 44099 - 44032: 0x816B, - 44100 - 44032: 0x816C, - 44101 - 44032: 0x816D, - 44102 - 44032: 0x816E, - 44103 - 44032: 0x816F, - 44104 - 44032: 0x8170, - 44105 - 44032: 0x8171, - 44106 - 44032: 0x8172, - 44107 - 44032: 0xB0C0, - 44108 - 44032: 0x8173, - 44109 - 44032: 0xB0C1, - 44110 - 44032: 0x8174, - 44111 - 44032: 0x8175, - 44112 - 44032: 0x8176, - 44113 - 44032: 0x8177, - 44114 - 44032: 0x8178, - 44115 - 44032: 0x8179, - 44116 - 44032: 0xB0C2, - 44117 - 44032: 0x817A, - 44118 - 44032: 0x8181, - 44119 - 44032: 0x8182, - 44120 - 44032: 0xB0C3, - 44121 - 44032: 0x8183, - 44122 - 44032: 0x8184, - 44123 - 44032: 0x8185, - 44124 - 44032: 0xB0C4, - 44125 - 44032: 0x8186, - 44126 - 44032: 0x8187, - 44127 - 44032: 0x8188, - 44128 - 44032: 0x8189, - 44129 - 44032: 0x818A, - 44130 - 44032: 0x818B, - 44131 - 44032: 0x818C, - 44132 - 44032: 0x818D, - 44133 - 44032: 0x818E, - 44134 - 44032: 0x818F, - 44135 - 44032: 0x8190, - 44136 - 44032: 0x8191, - 44137 - 44032: 0x8192, - 44138 - 44032: 0x8193, - 44139 - 44032: 0x8194, - 44140 - 44032: 0x8195, - 44141 - 44032: 0x8196, - 44142 - 44032: 0x8197, - 44143 - 44032: 0x8198, - 44144 - 44032: 0xB0C5, - 44145 - 44032: 0xB0C6, - 44146 - 44032: 0x8199, - 44147 - 44032: 0x819A, - 44148 - 44032: 0xB0C7, - 44149 - 44032: 0x819B, - 44150 - 44032: 0x819C, - 44151 - 44032: 0xB0C8, - 44152 - 44032: 0xB0C9, - 44153 - 44032: 0x819D, - 44154 - 44032: 0xB0CA, - 44155 - 44032: 0x819E, - 44156 - 44032: 0x819F, - 44157 - 44032: 0x81A0, - 44158 - 44032: 0x81A1, - 44159 - 44032: 0x81A2, - 44160 - 44032: 0xB0CB, - 44161 - 44032: 0xB0CC, - 44162 - 44032: 0x81A3, - 44163 - 44032: 0xB0CD, - 44164 - 44032: 0xB0CE, - 44165 - 44032: 0xB0CF, - 44166 - 44032: 0xB0D0, - 44167 - 44032: 0x81A4, - 44168 - 44032: 0x81A5, - 44169 - 44032: 0xB0D1, - 44170 - 44032: 0xB0D2, - 44171 - 44032: 0xB0D3, - 44172 - 44032: 0xB0D4, - 44173 - 44032: 0x81A6, - 44174 - 44032: 0x81A7, - 44175 - 44032: 0x81A8, - 44176 - 44032: 0xB0D5, - 44177 - 44032: 0x81A9, - 44178 - 44032: 0x81AA, - 44179 - 44032: 0x81AB, - 44180 - 44032: 0xB0D6, - 44181 - 44032: 0x81AC, - 44182 - 44032: 0x81AD, - 44183 - 44032: 0x81AE, - 44184 - 44032: 0x81AF, - 44185 - 44032: 0x81B0, - 44186 - 44032: 0x81B1, - 44187 - 44032: 0x81B2, - 44188 - 44032: 0xB0D7, - 44189 - 44032: 0xB0D8, - 44190 - 44032: 0x81B3, - 44191 - 44032: 0xB0D9, - 44192 - 44032: 0xB0DA, - 44193 - 44032: 0xB0DB, - 44194 - 44032: 0x81B4, - 44195 - 44032: 0x81B5, - 44196 - 44032: 0x81B6, - 44197 - 44032: 0x81B7, - 44198 - 44032: 0x81B8, - 44199 - 44032: 0x81B9, - 44200 - 44032: 0xB0DC, - 44201 - 44032: 0xB0DD, - 44202 - 44032: 0xB0DE, - 44203 - 44032: 0x81BA, - 44204 - 44032: 0xB0DF, - 44205 - 44032: 0x81BB, - 44206 - 44032: 0x81BC, - 44207 - 44032: 0xB0E0, - 44208 - 44032: 0xB0E1, - 44209 - 44032: 0x81BD, - 44210 - 44032: 0x81BE, - 44211 - 44032: 0x81BF, - 44212 - 44032: 0x81C0, - 44213 - 44032: 0x81C1, - 44214 - 44032: 0x81C2, - 44215 - 44032: 0x81C3, - 44216 - 44032: 0xB0E2, - 44217 - 44032: 0xB0E3, - 44218 - 44032: 0x81C4, - 44219 - 44032: 0xB0E4, - 44220 - 44032: 0xB0E5, - 44221 - 44032: 0xB0E6, - 44222 - 44032: 0x81C5, - 44223 - 44032: 0x81C6, - 44224 - 44032: 0x81C7, - 44225 - 44032: 0xB0E7, - 44226 - 44032: 0x81C8, - 44227 - 44032: 0x81C9, - 44228 - 44032: 0xB0E8, - 44229 - 44032: 0x81CA, - 44230 - 44032: 0x81CB, - 44231 - 44032: 0x81CC, - 44232 - 44032: 0xB0E9, - 44233 - 44032: 0x81CD, - 44234 - 44032: 0x81CE, - 44235 - 44032: 0x81CF, - 44236 - 44032: 0xB0EA, - 44237 - 44032: 0x81D0, - 44238 - 44032: 0x81D1, - 44239 - 44032: 0x81D2, - 44240 - 44032: 0x81D3, - 44241 - 44032: 0x81D4, - 44242 - 44032: 0x81D5, - 44243 - 44032: 0x81D6, - 44244 - 44032: 0x81D7, - 44245 - 44032: 0xB0EB, - 44246 - 44032: 0x81D8, - 44247 - 44032: 0xB0EC, - 44248 - 44032: 0x81D9, - 44249 - 44032: 0x81DA, - 44250 - 44032: 0x81DB, - 44251 - 44032: 0x81DC, - 44252 - 44032: 0x81DD, - 44253 - 44032: 0x81DE, - 44254 - 44032: 0x81DF, - 44255 - 44032: 0x81E0, - 44256 - 44032: 0xB0ED, - 44257 - 44032: 0xB0EE, - 44258 - 44032: 0x81E1, - 44259 - 44032: 0x81E2, - 44260 - 44032: 0xB0EF, - 44261 - 44032: 0x81E3, - 44262 - 44032: 0x81E4, - 44263 - 44032: 0xB0F0, - 44264 - 44032: 0xB0F1, - 44265 - 44032: 0x81E5, - 44266 - 44032: 0xB0F2, - 44267 - 44032: 0x81E6, - 44268 - 44032: 0xB0F3, - 44269 - 44032: 0x81E7, - 44270 - 44032: 0x81E8, - 44271 - 44032: 0xB0F4, - 44272 - 44032: 0xB0F5, - 44273 - 44032: 0xB0F6, - 44274 - 44032: 0x81E9, - 44275 - 44032: 0xB0F7, - 44276 - 44032: 0x81EA, - 44277 - 44032: 0xB0F8, - 44278 - 44032: 0xB0F9, - 44279 - 44032: 0x81EB, - 44280 - 44032: 0x81EC, - 44281 - 44032: 0x81ED, - 44282 - 44032: 0x81EE, - 44283 - 44032: 0x81EF, - 44284 - 44032: 0xB0FA, - 44285 - 44032: 0xB0FB, - 44286 - 44032: 0x81F0, - 44287 - 44032: 0x81F1, - 44288 - 44032: 0xB0FC, - 44289 - 44032: 0x81F2, - 44290 - 44032: 0x81F3, - 44291 - 44032: 0x81F4, - 44292 - 44032: 0xB0FD, - 44293 - 44032: 0x81F5, - 44294 - 44032: 0xB0FE, - 44295 - 44032: 0x81F6, - 44296 - 44032: 0x81F7, - 44297 - 44032: 0x81F8, - 44298 - 44032: 0x81F9, - 44299 - 44032: 0x81FA, - 44300 - 44032: 0xB1A1, - 44301 - 44032: 0xB1A2, - 44302 - 44032: 0x81FB, - 44303 - 44032: 0xB1A3, - 44304 - 44032: 0x81FC, - 44305 - 44032: 0xB1A4, - 44306 - 44032: 0x81FD, - 44307 - 44032: 0x81FE, - 44308 - 44032: 0x8241, - 44309 - 44032: 0x8242, - 44310 - 44032: 0x8243, - 44311 - 44032: 0x8244, - 44312 - 44032: 0xB1A5, - 44313 - 44032: 0x8245, - 44314 - 44032: 0x8246, - 44315 - 44032: 0x8247, - 44316 - 44032: 0xB1A6, - 44317 - 44032: 0x8248, - 44318 - 44032: 0x8249, - 44319 - 44032: 0x824A, - 44320 - 44032: 0xB1A7, - 44321 - 44032: 0x824B, - 44322 - 44032: 0x824C, - 44323 - 44032: 0x824D, - 44324 - 44032: 0x824E, - 44325 - 44032: 0x824F, - 44326 - 44032: 0x8250, - 44327 - 44032: 0x8251, - 44328 - 44032: 0x8252, - 44329 - 44032: 0xB1A8, - 44330 - 44032: 0x8253, - 44331 - 44032: 0x8254, - 44332 - 44032: 0xB1A9, - 44333 - 44032: 0xB1AA, - 44334 - 44032: 0x8255, - 44335 - 44032: 0x8256, - 44336 - 44032: 0x8257, - 44337 - 44032: 0x8258, - 44338 - 44032: 0x8259, - 44339 - 44032: 0x825A, - 44340 - 44032: 0xB1AB, - 44341 - 44032: 0xB1AC, - 44342 - 44032: 0x8261, - 44343 - 44032: 0x8262, - 44344 - 44032: 0xB1AD, - 44345 - 44032: 0x8263, - 44346 - 44032: 0x8264, - 44347 - 44032: 0x8265, - 44348 - 44032: 0xB1AE, - 44349 - 44032: 0x8266, - 44350 - 44032: 0x8267, - 44351 - 44032: 0x8268, - 44352 - 44032: 0x8269, - 44353 - 44032: 0x826A, - 44354 - 44032: 0x826B, - 44355 - 44032: 0x826C, - 44356 - 44032: 0xB1AF, - 44357 - 44032: 0xB1B0, - 44358 - 44032: 0x826D, - 44359 - 44032: 0xB1B1, - 44360 - 44032: 0x826E, - 44361 - 44032: 0xB1B2, - 44362 - 44032: 0x826F, - 44363 - 44032: 0x8270, - 44364 - 44032: 0x8271, - 44365 - 44032: 0x8272, - 44366 - 44032: 0x8273, - 44367 - 44032: 0x8274, - 44368 - 44032: 0xB1B3, - 44369 - 44032: 0x8275, - 44370 - 44032: 0x8276, - 44371 - 44032: 0x8277, - 44372 - 44032: 0xB1B4, - 44373 - 44032: 0x8278, - 44374 - 44032: 0x8279, - 44375 - 44032: 0x827A, - 44376 - 44032: 0xB1B5, - 44377 - 44032: 0x8281, - 44378 - 44032: 0x8282, - 44379 - 44032: 0x8283, - 44380 - 44032: 0x8284, - 44381 - 44032: 0x8285, - 44382 - 44032: 0x8286, - 44383 - 44032: 0x8287, - 44384 - 44032: 0x8288, - 44385 - 44032: 0xB1B6, - 44386 - 44032: 0x8289, - 44387 - 44032: 0xB1B7, - 44388 - 44032: 0x828A, - 44389 - 44032: 0x828B, - 44390 - 44032: 0x828C, - 44391 - 44032: 0x828D, - 44392 - 44032: 0x828E, - 44393 - 44032: 0x828F, - 44394 - 44032: 0x8290, - 44395 - 44032: 0x8291, - 44396 - 44032: 0xB1B8, - 44397 - 44032: 0xB1B9, - 44398 - 44032: 0x8292, - 44399 - 44032: 0x8293, - 44400 - 44032: 0xB1BA, - 44401 - 44032: 0x8294, - 44402 - 44032: 0x8295, - 44403 - 44032: 0xB1BB, - 44404 - 44032: 0xB1BC, - 44405 - 44032: 0xB1BD, - 44406 - 44032: 0xB1BE, - 44407 - 44032: 0x8296, - 44408 - 44032: 0x8297, - 44409 - 44032: 0x8298, - 44410 - 44032: 0x8299, - 44411 - 44032: 0xB1BF, - 44412 - 44032: 0xB1C0, - 44413 - 44032: 0xB1C1, - 44414 - 44032: 0x829A, - 44415 - 44032: 0xB1C2, - 44416 - 44032: 0x829B, - 44417 - 44032: 0xB1C3, - 44418 - 44032: 0xB1C4, - 44419 - 44032: 0x829C, - 44420 - 44032: 0x829D, - 44421 - 44032: 0x829E, - 44422 - 44032: 0x829F, - 44423 - 44032: 0x82A0, - 44424 - 44032: 0xB1C5, - 44425 - 44032: 0xB1C6, - 44426 - 44032: 0x82A1, - 44427 - 44032: 0x82A2, - 44428 - 44032: 0xB1C7, - 44429 - 44032: 0x82A3, - 44430 - 44032: 0x82A4, - 44431 - 44032: 0x82A5, - 44432 - 44032: 0xB1C8, - 44433 - 44032: 0x82A6, - 44434 - 44032: 0x82A7, - 44435 - 44032: 0x82A8, - 44436 - 44032: 0x82A9, - 44437 - 44032: 0x82AA, - 44438 - 44032: 0x82AB, - 44439 - 44032: 0x82AC, - 44440 - 44032: 0x82AD, - 44441 - 44032: 0x82AE, - 44442 - 44032: 0x82AF, - 44443 - 44032: 0x82B0, - 44444 - 44032: 0xB1C9, - 44445 - 44032: 0xB1CA, - 44446 - 44032: 0x82B1, - 44447 - 44032: 0x82B2, - 44448 - 44032: 0x82B3, - 44449 - 44032: 0x82B4, - 44450 - 44032: 0x82B5, - 44451 - 44032: 0x82B6, - 44452 - 44032: 0xB1CB, - 44453 - 44032: 0x82B7, - 44454 - 44032: 0x82B8, - 44455 - 44032: 0x82B9, - 44456 - 44032: 0x82BA, - 44457 - 44032: 0x82BB, - 44458 - 44032: 0x82BC, - 44459 - 44032: 0x82BD, - 44460 - 44032: 0x82BE, - 44461 - 44032: 0x82BF, - 44462 - 44032: 0x82C0, - 44463 - 44032: 0x82C1, - 44464 - 44032: 0x82C2, - 44465 - 44032: 0x82C3, - 44466 - 44032: 0x82C4, - 44467 - 44032: 0x82C5, - 44468 - 44032: 0x82C6, - 44469 - 44032: 0x82C7, - 44470 - 44032: 0x82C8, - 44471 - 44032: 0xB1CC, - 44472 - 44032: 0x82C9, - 44473 - 44032: 0x82CA, - 44474 - 44032: 0x82CB, - 44475 - 44032: 0x82CC, - 44476 - 44032: 0x82CD, - 44477 - 44032: 0x82CE, - 44478 - 44032: 0x82CF, - 44479 - 44032: 0x82D0, - 44480 - 44032: 0xB1CD, - 44481 - 44032: 0xB1CE, - 44482 - 44032: 0x82D1, - 44483 - 44032: 0x82D2, - 44484 - 44032: 0xB1CF, - 44485 - 44032: 0x82D3, - 44486 - 44032: 0x82D4, - 44487 - 44032: 0x82D5, - 44488 - 44032: 0xB1D0, - 44489 - 44032: 0x82D6, - 44490 - 44032: 0x82D7, - 44491 - 44032: 0x82D8, - 44492 - 44032: 0x82D9, - 44493 - 44032: 0x82DA, - 44494 - 44032: 0x82DB, - 44495 - 44032: 0x82DC, - 44496 - 44032: 0xB1D1, - 44497 - 44032: 0xB1D2, - 44498 - 44032: 0x82DD, - 44499 - 44032: 0xB1D3, - 44500 - 44032: 0x82DE, - 44501 - 44032: 0x82DF, - 44502 - 44032: 0x82E0, - 44503 - 44032: 0x82E1, - 44504 - 44032: 0x82E2, - 44505 - 44032: 0x82E3, - 44506 - 44032: 0x82E4, - 44507 - 44032: 0x82E5, - 44508 - 44032: 0xB1D4, - 44509 - 44032: 0x82E6, - 44510 - 44032: 0x82E7, - 44511 - 44032: 0x82E8, - 44512 - 44032: 0xB1D5, - 44513 - 44032: 0x82E9, - 44514 - 44032: 0x82EA, - 44515 - 44032: 0x82EB, - 44516 - 44032: 0xB1D6, - 44517 - 44032: 0x82EC, - 44518 - 44032: 0x82ED, - 44519 - 44032: 0x82EE, - 44520 - 44032: 0x82EF, - 44521 - 44032: 0x82F0, - 44522 - 44032: 0x82F1, - 44523 - 44032: 0x82F2, - 44524 - 44032: 0x82F3, - 44525 - 44032: 0x82F4, - 44526 - 44032: 0x82F5, - 44527 - 44032: 0x82F6, - 44528 - 44032: 0x82F7, - 44529 - 44032: 0x82F8, - 44530 - 44032: 0x82F9, - 44531 - 44032: 0x82FA, - 44532 - 44032: 0x82FB, - 44533 - 44032: 0x82FC, - 44534 - 44032: 0x82FD, - 44535 - 44032: 0x82FE, - 44536 - 44032: 0xB1D7, - 44537 - 44032: 0xB1D8, - 44538 - 44032: 0x8341, - 44539 - 44032: 0x8342, - 44540 - 44032: 0xB1D9, - 44541 - 44032: 0x8343, - 44542 - 44032: 0x8344, - 44543 - 44032: 0xB1DA, - 44544 - 44032: 0xB1DB, - 44545 - 44032: 0xB1DC, - 44546 - 44032: 0x8345, - 44547 - 44032: 0x8346, - 44548 - 44032: 0x8347, - 44549 - 44032: 0x8348, - 44550 - 44032: 0x8349, - 44551 - 44032: 0x834A, - 44552 - 44032: 0xB1DD, - 44553 - 44032: 0xB1DE, - 44554 - 44032: 0x834B, - 44555 - 44032: 0xB1DF, - 44556 - 44032: 0x834C, - 44557 - 44032: 0xB1E0, - 44558 - 44032: 0x834D, - 44559 - 44032: 0x834E, - 44560 - 44032: 0x834F, - 44561 - 44032: 0x8350, - 44562 - 44032: 0x8351, - 44563 - 44032: 0x8352, - 44564 - 44032: 0xB1E1, - 44565 - 44032: 0x8353, - 44566 - 44032: 0x8354, - 44567 - 44032: 0x8355, - 44568 - 44032: 0x8356, - 44569 - 44032: 0x8357, - 44570 - 44032: 0x8358, - 44571 - 44032: 0x8359, - 44572 - 44032: 0x835A, - 44573 - 44032: 0x8361, - 44574 - 44032: 0x8362, - 44575 - 44032: 0x8363, - 44576 - 44032: 0x8364, - 44577 - 44032: 0x8365, - 44578 - 44032: 0x8366, - 44579 - 44032: 0x8367, - 44580 - 44032: 0x8368, - 44581 - 44032: 0x8369, - 44582 - 44032: 0x836A, - 44583 - 44032: 0x836B, - 44584 - 44032: 0x836C, - 44585 - 44032: 0x836D, - 44586 - 44032: 0x836E, - 44587 - 44032: 0x836F, - 44588 - 44032: 0x8370, - 44589 - 44032: 0x8371, - 44590 - 44032: 0x8372, - 44591 - 44032: 0x8373, - 44592 - 44032: 0xB1E2, - 44593 - 44032: 0xB1E3, - 44594 - 44032: 0x8374, - 44595 - 44032: 0x8375, - 44596 - 44032: 0xB1E4, - 44597 - 44032: 0x8376, - 44598 - 44032: 0x8377, - 44599 - 44032: 0xB1E5, - 44600 - 44032: 0xB1E6, - 44601 - 44032: 0x8378, - 44602 - 44032: 0xB1E7, - 44603 - 44032: 0x8379, - 44604 - 44032: 0x837A, - 44605 - 44032: 0x8381, - 44606 - 44032: 0x8382, - 44607 - 44032: 0x8383, - 44608 - 44032: 0xB1E8, - 44609 - 44032: 0xB1E9, - 44610 - 44032: 0x8384, - 44611 - 44032: 0xB1EA, - 44612 - 44032: 0x8385, - 44613 - 44032: 0xB1EB, - 44614 - 44032: 0xB1EC, - 44615 - 44032: 0x8386, - 44616 - 44032: 0x8387, - 44617 - 44032: 0x8388, - 44618 - 44032: 0xB1ED, - 44619 - 44032: 0x8389, - 44620 - 44032: 0xB1EE, - 44621 - 44032: 0xB1EF, - 44622 - 44032: 0xB1F0, - 44623 - 44032: 0x838A, - 44624 - 44032: 0xB1F1, - 44625 - 44032: 0x838B, - 44626 - 44032: 0x838C, - 44627 - 44032: 0x838D, - 44628 - 44032: 0xB1F2, - 44629 - 44032: 0x838E, - 44630 - 44032: 0xB1F3, - 44631 - 44032: 0x838F, - 44632 - 44032: 0x8390, - 44633 - 44032: 0x8391, - 44634 - 44032: 0x8392, - 44635 - 44032: 0x8393, - 44636 - 44032: 0xB1F4, - 44637 - 44032: 0xB1F5, - 44638 - 44032: 0x8394, - 44639 - 44032: 0xB1F6, - 44640 - 44032: 0xB1F7, - 44641 - 44032: 0xB1F8, - 44642 - 44032: 0x8395, - 44643 - 44032: 0x8396, - 44644 - 44032: 0x8397, - 44645 - 44032: 0xB1F9, - 44646 - 44032: 0x8398, - 44647 - 44032: 0x8399, - 44648 - 44032: 0xB1FA, - 44649 - 44032: 0xB1FB, - 44650 - 44032: 0x839A, - 44651 - 44032: 0x839B, - 44652 - 44032: 0xB1FC, - 44653 - 44032: 0x839C, - 44654 - 44032: 0x839D, - 44655 - 44032: 0x839E, - 44656 - 44032: 0xB1FD, - 44657 - 44032: 0x839F, - 44658 - 44032: 0x83A0, - 44659 - 44032: 0x83A1, - 44660 - 44032: 0x83A2, - 44661 - 44032: 0x83A3, - 44662 - 44032: 0x83A4, - 44663 - 44032: 0x83A5, - 44664 - 44032: 0xB1FE, - 44665 - 44032: 0xB2A1, - 44666 - 44032: 0x83A6, - 44667 - 44032: 0xB2A2, - 44668 - 44032: 0xB2A3, - 44669 - 44032: 0xB2A4, - 44670 - 44032: 0x83A7, - 44671 - 44032: 0x83A8, - 44672 - 44032: 0x83A9, - 44673 - 44032: 0x83AA, - 44674 - 44032: 0x83AB, - 44675 - 44032: 0x83AC, - 44676 - 44032: 0xB2A5, - 44677 - 44032: 0xB2A6, - 44678 - 44032: 0x83AD, - 44679 - 44032: 0x83AE, - 44680 - 44032: 0x83AF, - 44681 - 44032: 0x83B0, - 44682 - 44032: 0x83B1, - 44683 - 44032: 0x83B2, - 44684 - 44032: 0xB2A7, - 44685 - 44032: 0x83B3, - 44686 - 44032: 0x83B4, - 44687 - 44032: 0x83B5, - 44688 - 44032: 0x83B6, - 44689 - 44032: 0x83B7, - 44690 - 44032: 0x83B8, - 44691 - 44032: 0x83B9, - 44692 - 44032: 0x83BA, - 44693 - 44032: 0x83BB, - 44694 - 44032: 0x83BC, - 44695 - 44032: 0x83BD, - 44696 - 44032: 0x83BE, - 44697 - 44032: 0x83BF, - 44698 - 44032: 0x83C0, - 44699 - 44032: 0x83C1, - 44700 - 44032: 0x83C2, - 44701 - 44032: 0x83C3, - 44702 - 44032: 0x83C4, - 44703 - 44032: 0x83C5, - 44704 - 44032: 0x83C6, - 44705 - 44032: 0x83C7, - 44706 - 44032: 0x83C8, - 44707 - 44032: 0x83C9, - 44708 - 44032: 0x83CA, - 44709 - 44032: 0x83CB, - 44710 - 44032: 0x83CC, - 44711 - 44032: 0x83CD, - 44712 - 44032: 0x83CE, - 44713 - 44032: 0x83CF, - 44714 - 44032: 0x83D0, - 44715 - 44032: 0x83D1, - 44716 - 44032: 0x83D2, - 44717 - 44032: 0x83D3, - 44718 - 44032: 0x83D4, - 44719 - 44032: 0x83D5, - 44720 - 44032: 0x83D6, - 44721 - 44032: 0x83D7, - 44722 - 44032: 0x83D8, - 44723 - 44032: 0x83D9, - 44724 - 44032: 0x83DA, - 44725 - 44032: 0x83DB, - 44726 - 44032: 0x83DC, - 44727 - 44032: 0x83DD, - 44728 - 44032: 0x83DE, - 44729 - 44032: 0x83DF, - 44730 - 44032: 0x83E0, - 44731 - 44032: 0x83E1, - 44732 - 44032: 0xB2A8, - 44733 - 44032: 0xB2A9, - 44734 - 44032: 0xB2AA, - 44735 - 44032: 0x83E2, - 44736 - 44032: 0xB2AB, - 44737 - 44032: 0x83E3, - 44738 - 44032: 0x83E4, - 44739 - 44032: 0x83E5, - 44740 - 44032: 0xB2AC, - 44741 - 44032: 0x83E6, - 44742 - 44032: 0x83E7, - 44743 - 44032: 0x83E8, - 44744 - 44032: 0x83E9, - 44745 - 44032: 0x83EA, - 44746 - 44032: 0x83EB, - 44747 - 44032: 0x83EC, - 44748 - 44032: 0xB2AD, - 44749 - 44032: 0xB2AE, - 44750 - 44032: 0x83ED, - 44751 - 44032: 0xB2AF, - 44752 - 44032: 0xB2B0, - 44753 - 44032: 0xB2B1, - 44754 - 44032: 0x83EE, - 44755 - 44032: 0x83EF, - 44756 - 44032: 0x83F0, - 44757 - 44032: 0x83F1, - 44758 - 44032: 0x83F2, - 44759 - 44032: 0x83F3, - 44760 - 44032: 0xB2B2, - 44761 - 44032: 0xB2B3, - 44762 - 44032: 0x83F4, - 44763 - 44032: 0x83F5, - 44764 - 44032: 0xB2B4, - 44765 - 44032: 0x83F6, - 44766 - 44032: 0x83F7, - 44767 - 44032: 0x83F8, - 44768 - 44032: 0x83F9, - 44769 - 44032: 0x83FA, - 44770 - 44032: 0x83FB, - 44771 - 44032: 0x83FC, - 44772 - 44032: 0x83FD, - 44773 - 44032: 0x83FE, - 44774 - 44032: 0x8441, - 44775 - 44032: 0x8442, - 44776 - 44032: 0xB2B5, - 44777 - 44032: 0x8443, - 44778 - 44032: 0x8444, - 44779 - 44032: 0xB2B6, - 44780 - 44032: 0x8445, - 44781 - 44032: 0xB2B7, - 44782 - 44032: 0x8446, - 44783 - 44032: 0x8447, - 44784 - 44032: 0x8448, - 44785 - 44032: 0x8449, - 44786 - 44032: 0x844A, - 44787 - 44032: 0x844B, - 44788 - 44032: 0xB2B8, - 44789 - 44032: 0x844C, - 44790 - 44032: 0x844D, - 44791 - 44032: 0x844E, - 44792 - 44032: 0xB2B9, - 44793 - 44032: 0x844F, - 44794 - 44032: 0x8450, - 44795 - 44032: 0x8451, - 44796 - 44032: 0xB2BA, - 44797 - 44032: 0x8452, - 44798 - 44032: 0x8453, - 44799 - 44032: 0x8454, - 44800 - 44032: 0x8455, - 44801 - 44032: 0x8456, - 44802 - 44032: 0x8457, - 44803 - 44032: 0x8458, - 44804 - 44032: 0x8459, - 44805 - 44032: 0x845A, - 44806 - 44032: 0x8461, - 44807 - 44032: 0xB2BB, - 44808 - 44032: 0xB2BC, - 44809 - 44032: 0x8462, - 44810 - 44032: 0x8463, - 44811 - 44032: 0x8464, - 44812 - 44032: 0x8465, - 44813 - 44032: 0xB2BD, - 44814 - 44032: 0x8466, - 44815 - 44032: 0x8467, - 44816 - 44032: 0xB2BE, - 44817 - 44032: 0x8468, - 44818 - 44032: 0x8469, - 44819 - 44032: 0x846A, - 44820 - 44032: 0x846B, - 44821 - 44032: 0x846C, - 44822 - 44032: 0x846D, - 44823 - 44032: 0x846E, - 44824 - 44032: 0x846F, - 44825 - 44032: 0x8470, - 44826 - 44032: 0x8471, - 44827 - 44032: 0x8472, - 44828 - 44032: 0x8473, - 44829 - 44032: 0x8474, - 44830 - 44032: 0x8475, - 44831 - 44032: 0x8476, - 44832 - 44032: 0x8477, - 44833 - 44032: 0x8478, - 44834 - 44032: 0x8479, - 44835 - 44032: 0x847A, - 44836 - 44032: 0x8481, - 44837 - 44032: 0x8482, - 44838 - 44032: 0x8483, - 44839 - 44032: 0x8484, - 44840 - 44032: 0x8485, - 44841 - 44032: 0x8486, - 44842 - 44032: 0x8487, - 44843 - 44032: 0x8488, - 44844 - 44032: 0xB2BF, - 44845 - 44032: 0xB2C0, - 44846 - 44032: 0x8489, - 44847 - 44032: 0x848A, - 44848 - 44032: 0xB2C1, - 44849 - 44032: 0x848B, - 44850 - 44032: 0xB2C2, - 44851 - 44032: 0x848C, - 44852 - 44032: 0xB2C3, - 44853 - 44032: 0x848D, - 44854 - 44032: 0x848E, - 44855 - 44032: 0x848F, - 44856 - 44032: 0x8490, - 44857 - 44032: 0x8491, - 44858 - 44032: 0x8492, - 44859 - 44032: 0x8493, - 44860 - 44032: 0xB2C4, - 44861 - 44032: 0xB2C5, - 44862 - 44032: 0x8494, - 44863 - 44032: 0xB2C6, - 44864 - 44032: 0x8495, - 44865 - 44032: 0xB2C7, - 44866 - 44032: 0xB2C8, - 44867 - 44032: 0xB2C9, - 44868 - 44032: 0x8496, - 44869 - 44032: 0x8497, - 44870 - 44032: 0x8498, - 44871 - 44032: 0x8499, - 44872 - 44032: 0xB2CA, - 44873 - 44032: 0xB2CB, - 44874 - 44032: 0x849A, - 44875 - 44032: 0x849B, - 44876 - 44032: 0x849C, - 44877 - 44032: 0x849D, - 44878 - 44032: 0x849E, - 44879 - 44032: 0x849F, - 44880 - 44032: 0xB2CC, - 44881 - 44032: 0x84A0, - 44882 - 44032: 0x84A1, - 44883 - 44032: 0x84A2, - 44884 - 44032: 0x84A3, - 44885 - 44032: 0x84A4, - 44886 - 44032: 0x84A5, - 44887 - 44032: 0x84A6, - 44888 - 44032: 0x84A7, - 44889 - 44032: 0x84A8, - 44890 - 44032: 0x84A9, - 44891 - 44032: 0x84AA, - 44892 - 44032: 0xB2CD, - 44893 - 44032: 0xB2CE, - 44894 - 44032: 0x84AB, - 44895 - 44032: 0x84AC, - 44896 - 44032: 0x84AD, - 44897 - 44032: 0x84AE, - 44898 - 44032: 0x84AF, - 44899 - 44032: 0x84B0, - 44900 - 44032: 0xB2CF, - 44901 - 44032: 0xB2D0, - 44902 - 44032: 0x84B1, - 44903 - 44032: 0x84B2, - 44904 - 44032: 0x84B3, - 44905 - 44032: 0x84B4, - 44906 - 44032: 0x84B5, - 44907 - 44032: 0x84B6, - 44908 - 44032: 0x84B7, - 44909 - 44032: 0x84B8, - 44910 - 44032: 0x84B9, - 44911 - 44032: 0x84BA, - 44912 - 44032: 0x84BB, - 44913 - 44032: 0x84BC, - 44914 - 44032: 0x84BD, - 44915 - 44032: 0x84BE, - 44916 - 44032: 0x84BF, - 44917 - 44032: 0x84C0, - 44918 - 44032: 0x84C1, - 44919 - 44032: 0x84C2, - 44920 - 44032: 0x84C3, - 44921 - 44032: 0xB2D1, - 44922 - 44032: 0x84C4, - 44923 - 44032: 0x84C5, - 44924 - 44032: 0x84C6, - 44925 - 44032: 0x84C7, - 44926 - 44032: 0x84C8, - 44927 - 44032: 0x84C9, - 44928 - 44032: 0xB2D2, - 44929 - 44032: 0x84CA, - 44930 - 44032: 0x84CB, - 44931 - 44032: 0x84CC, - 44932 - 44032: 0xB2D3, - 44933 - 44032: 0x84CD, - 44934 - 44032: 0x84CE, - 44935 - 44032: 0x84CF, - 44936 - 44032: 0xB2D4, - 44937 - 44032: 0x84D0, - 44938 - 44032: 0x84D1, - 44939 - 44032: 0x84D2, - 44940 - 44032: 0x84D3, - 44941 - 44032: 0x84D4, - 44942 - 44032: 0x84D5, - 44943 - 44032: 0x84D6, - 44944 - 44032: 0xB2D5, - 44945 - 44032: 0xB2D6, - 44946 - 44032: 0x84D7, - 44947 - 44032: 0x84D8, - 44948 - 44032: 0x84D9, - 44949 - 44032: 0xB2D7, - 44950 - 44032: 0x84DA, - 44951 - 44032: 0x84DB, - 44952 - 44032: 0x84DC, - 44953 - 44032: 0x84DD, - 44954 - 44032: 0x84DE, - 44955 - 44032: 0x84DF, - 44956 - 44032: 0xB2D8, - 44957 - 44032: 0x84E0, - 44958 - 44032: 0x84E1, - 44959 - 44032: 0x84E2, - 44960 - 44032: 0x84E3, - 44961 - 44032: 0x84E4, - 44962 - 44032: 0x84E5, - 44963 - 44032: 0x84E6, - 44964 - 44032: 0x84E7, - 44965 - 44032: 0x84E8, - 44966 - 44032: 0x84E9, - 44967 - 44032: 0x84EA, - 44968 - 44032: 0x84EB, - 44969 - 44032: 0x84EC, - 44970 - 44032: 0x84ED, - 44971 - 44032: 0x84EE, - 44972 - 44032: 0x84EF, - 44973 - 44032: 0x84F0, - 44974 - 44032: 0x84F1, - 44975 - 44032: 0x84F2, - 44976 - 44032: 0x84F3, - 44977 - 44032: 0x84F4, - 44978 - 44032: 0x84F5, - 44979 - 44032: 0x84F6, - 44980 - 44032: 0x84F7, - 44981 - 44032: 0x84F8, - 44982 - 44032: 0x84F9, - 44983 - 44032: 0x84FA, - 44984 - 44032: 0xB2D9, - 44985 - 44032: 0xB2DA, - 44986 - 44032: 0x84FB, - 44987 - 44032: 0x84FC, - 44988 - 44032: 0xB2DB, - 44989 - 44032: 0x84FD, - 44990 - 44032: 0x84FE, - 44991 - 44032: 0x8541, - 44992 - 44032: 0xB2DC, - 44993 - 44032: 0x8542, - 44994 - 44032: 0x8543, - 44995 - 44032: 0x8544, - 44996 - 44032: 0x8545, - 44997 - 44032: 0x8546, - 44998 - 44032: 0x8547, - 44999 - 44032: 0xB2DD, - 45000 - 44032: 0xB2DE, - 45001 - 44032: 0xB2DF, - 45002 - 44032: 0x8548, - 45003 - 44032: 0xB2E0, - 45004 - 44032: 0x8549, - 45005 - 44032: 0xB2E1, - 45006 - 44032: 0xB2E2, - 45007 - 44032: 0x854A, - 45008 - 44032: 0x854B, - 45009 - 44032: 0x854C, - 45010 - 44032: 0x854D, - 45011 - 44032: 0x854E, - 45012 - 44032: 0xB2E3, - 45013 - 44032: 0x854F, - 45014 - 44032: 0x8550, - 45015 - 44032: 0x8551, - 45016 - 44032: 0x8552, - 45017 - 44032: 0x8553, - 45018 - 44032: 0x8554, - 45019 - 44032: 0x8555, - 45020 - 44032: 0xB2E4, - 45021 - 44032: 0x8556, - 45022 - 44032: 0x8557, - 45023 - 44032: 0x8558, - 45024 - 44032: 0x8559, - 45025 - 44032: 0x855A, - 45026 - 44032: 0x8561, - 45027 - 44032: 0x8562, - 45028 - 44032: 0x8563, - 45029 - 44032: 0x8564, - 45030 - 44032: 0x8565, - 45031 - 44032: 0x8566, - 45032 - 44032: 0xB2E5, - 45033 - 44032: 0xB2E6, - 45034 - 44032: 0x8567, - 45035 - 44032: 0x8568, - 45036 - 44032: 0x8569, - 45037 - 44032: 0x856A, - 45038 - 44032: 0x856B, - 45039 - 44032: 0x856C, - 45040 - 44032: 0xB2E7, - 45041 - 44032: 0xB2E8, - 45042 - 44032: 0x856D, - 45043 - 44032: 0x856E, - 45044 - 44032: 0xB2E9, - 45045 - 44032: 0x856F, - 45046 - 44032: 0x8570, - 45047 - 44032: 0x8571, - 45048 - 44032: 0xB2EA, - 45049 - 44032: 0x8572, - 45050 - 44032: 0x8573, - 45051 - 44032: 0x8574, - 45052 - 44032: 0x8575, - 45053 - 44032: 0x8576, - 45054 - 44032: 0x8577, - 45055 - 44032: 0x8578, - 45056 - 44032: 0xB2EB, - 45057 - 44032: 0xB2EC, - 45058 - 44032: 0x8579, - 45059 - 44032: 0x857A, - 45060 - 44032: 0xB2ED, - 45061 - 44032: 0x8581, - 45062 - 44032: 0x8582, - 45063 - 44032: 0x8583, - 45064 - 44032: 0x8584, - 45065 - 44032: 0x8585, - 45066 - 44032: 0x8586, - 45067 - 44032: 0x8587, - 45068 - 44032: 0xB2EE, - 45069 - 44032: 0x8588, - 45070 - 44032: 0x8589, - 45071 - 44032: 0x858A, - 45072 - 44032: 0xB2EF, - 45073 - 44032: 0x858B, - 45074 - 44032: 0x858C, - 45075 - 44032: 0x858D, - 45076 - 44032: 0xB2F0, - 45077 - 44032: 0x858E, - 45078 - 44032: 0x858F, - 45079 - 44032: 0x8590, - 45080 - 44032: 0x8591, - 45081 - 44032: 0x8592, - 45082 - 44032: 0x8593, - 45083 - 44032: 0x8594, - 45084 - 44032: 0xB2F1, - 45085 - 44032: 0xB2F2, - 45086 - 44032: 0x8595, - 45087 - 44032: 0x8596, - 45088 - 44032: 0x8597, - 45089 - 44032: 0x8598, - 45090 - 44032: 0x8599, - 45091 - 44032: 0x859A, - 45092 - 44032: 0x859B, - 45093 - 44032: 0x859C, - 45094 - 44032: 0x859D, - 45095 - 44032: 0x859E, - 45096 - 44032: 0xB2F3, - 45097 - 44032: 0x859F, - 45098 - 44032: 0x85A0, - 45099 - 44032: 0x85A1, - 45100 - 44032: 0x85A2, - 45101 - 44032: 0x85A3, - 45102 - 44032: 0x85A4, - 45103 - 44032: 0x85A5, - 45104 - 44032: 0x85A6, - 45105 - 44032: 0x85A7, - 45106 - 44032: 0x85A8, - 45107 - 44032: 0x85A9, - 45108 - 44032: 0x85AA, - 45109 - 44032: 0x85AB, - 45110 - 44032: 0x85AC, - 45111 - 44032: 0x85AD, - 45112 - 44032: 0x85AE, - 45113 - 44032: 0x85AF, - 45114 - 44032: 0x85B0, - 45115 - 44032: 0x85B1, - 45116 - 44032: 0x85B2, - 45117 - 44032: 0x85B3, - 45118 - 44032: 0x85B4, - 45119 - 44032: 0x85B5, - 45120 - 44032: 0x85B6, - 45121 - 44032: 0x85B7, - 45122 - 44032: 0x85B8, - 45123 - 44032: 0x85B9, - 45124 - 44032: 0xB2F4, - 45125 - 44032: 0xB2F5, - 45126 - 44032: 0x85BA, - 45127 - 44032: 0x85BB, - 45128 - 44032: 0xB2F6, - 45129 - 44032: 0x85BC, - 45130 - 44032: 0xB2F7, - 45131 - 44032: 0x85BD, - 45132 - 44032: 0xB2F8, - 45133 - 44032: 0x85BE, - 45134 - 44032: 0xB2F9, - 45135 - 44032: 0x85BF, - 45136 - 44032: 0x85C0, - 45137 - 44032: 0x85C1, - 45138 - 44032: 0x85C2, - 45139 - 44032: 0xB2FA, - 45140 - 44032: 0xB2FB, - 45141 - 44032: 0xB2FC, - 45142 - 44032: 0x85C3, - 45143 - 44032: 0xB2FD, - 45144 - 44032: 0x85C4, - 45145 - 44032: 0xB2FE, - 45146 - 44032: 0x85C5, - 45147 - 44032: 0x85C6, - 45148 - 44032: 0x85C7, - 45149 - 44032: 0xB3A1, - 45150 - 44032: 0x85C8, - 45151 - 44032: 0x85C9, - 45152 - 44032: 0x85CA, - 45153 - 44032: 0x85CB, - 45154 - 44032: 0x85CC, - 45155 - 44032: 0x85CD, - 45156 - 44032: 0x85CE, - 45157 - 44032: 0x85CF, - 45158 - 44032: 0x85D0, - 45159 - 44032: 0x85D1, - 45160 - 44032: 0x85D2, - 45161 - 44032: 0x85D3, - 45162 - 44032: 0x85D4, - 45163 - 44032: 0x85D5, - 45164 - 44032: 0x85D6, - 45165 - 44032: 0x85D7, - 45166 - 44032: 0x85D8, - 45167 - 44032: 0x85D9, - 45168 - 44032: 0x85DA, - 45169 - 44032: 0x85DB, - 45170 - 44032: 0x85DC, - 45171 - 44032: 0x85DD, - 45172 - 44032: 0x85DE, - 45173 - 44032: 0x85DF, - 45174 - 44032: 0x85E0, - 45175 - 44032: 0x85E1, - 45176 - 44032: 0x85E2, - 45177 - 44032: 0x85E3, - 45178 - 44032: 0x85E4, - 45179 - 44032: 0x85E5, - 45180 - 44032: 0xB3A2, - 45181 - 44032: 0xB3A3, - 45182 - 44032: 0x85E6, - 45183 - 44032: 0x85E7, - 45184 - 44032: 0xB3A4, - 45185 - 44032: 0x85E8, - 45186 - 44032: 0x85E9, - 45187 - 44032: 0x85EA, - 45188 - 44032: 0xB3A5, - 45189 - 44032: 0x85EB, - 45190 - 44032: 0x85EC, - 45191 - 44032: 0x85ED, - 45192 - 44032: 0x85EE, - 45193 - 44032: 0x85EF, - 45194 - 44032: 0x85F0, - 45195 - 44032: 0x85F1, - 45196 - 44032: 0xB3A6, - 45197 - 44032: 0xB3A7, - 45198 - 44032: 0x85F2, - 45199 - 44032: 0xB3A8, - 45200 - 44032: 0x85F3, - 45201 - 44032: 0xB3A9, - 45202 - 44032: 0x85F4, - 45203 - 44032: 0x85F5, - 45204 - 44032: 0x85F6, - 45205 - 44032: 0x85F7, - 45206 - 44032: 0x85F8, - 45207 - 44032: 0x85F9, - 45208 - 44032: 0xB3AA, - 45209 - 44032: 0xB3AB, - 45210 - 44032: 0xB3AC, - 45211 - 44032: 0x85FA, - 45212 - 44032: 0xB3AD, - 45213 - 44032: 0x85FB, - 45214 - 44032: 0x85FC, - 45215 - 44032: 0xB3AE, - 45216 - 44032: 0xB3AF, - 45217 - 44032: 0xB3B0, - 45218 - 44032: 0xB3B1, - 45219 - 44032: 0x85FD, - 45220 - 44032: 0x85FE, - 45221 - 44032: 0x8641, - 45222 - 44032: 0x8642, - 45223 - 44032: 0x8643, - 45224 - 44032: 0xB3B2, - 45225 - 44032: 0xB3B3, - 45226 - 44032: 0x8644, - 45227 - 44032: 0xB3B4, - 45228 - 44032: 0xB3B5, - 45229 - 44032: 0xB3B6, - 45230 - 44032: 0xB3B7, - 45231 - 44032: 0xB3B8, - 45232 - 44032: 0x8645, - 45233 - 44032: 0xB3B9, - 45234 - 44032: 0x8646, - 45235 - 44032: 0xB3BA, - 45236 - 44032: 0xB3BB, - 45237 - 44032: 0xB3BC, - 45238 - 44032: 0x8647, - 45239 - 44032: 0x8648, - 45240 - 44032: 0xB3BD, - 45241 - 44032: 0x8649, - 45242 - 44032: 0x864A, - 45243 - 44032: 0x864B, - 45244 - 44032: 0xB3BE, - 45245 - 44032: 0x864C, - 45246 - 44032: 0x864D, - 45247 - 44032: 0x864E, - 45248 - 44032: 0x864F, - 45249 - 44032: 0x8650, - 45250 - 44032: 0x8651, - 45251 - 44032: 0x8652, - 45252 - 44032: 0xB3BF, - 45253 - 44032: 0xB3C0, - 45254 - 44032: 0x8653, - 45255 - 44032: 0xB3C1, - 45256 - 44032: 0xB3C2, - 45257 - 44032: 0xB3C3, - 45258 - 44032: 0x8654, - 45259 - 44032: 0x8655, - 45260 - 44032: 0x8656, - 45261 - 44032: 0x8657, - 45262 - 44032: 0x8658, - 45263 - 44032: 0x8659, - 45264 - 44032: 0xB3C4, - 45265 - 44032: 0xB3C5, - 45266 - 44032: 0x865A, - 45267 - 44032: 0x8661, - 45268 - 44032: 0xB3C6, - 45269 - 44032: 0x8662, - 45270 - 44032: 0x8663, - 45271 - 44032: 0x8664, - 45272 - 44032: 0xB3C7, - 45273 - 44032: 0x8665, - 45274 - 44032: 0x8666, - 45275 - 44032: 0x8667, - 45276 - 44032: 0x8668, - 45277 - 44032: 0x8669, - 45278 - 44032: 0x866A, - 45279 - 44032: 0x866B, - 45280 - 44032: 0xB3C8, - 45281 - 44032: 0x866C, - 45282 - 44032: 0x866D, - 45283 - 44032: 0x866E, - 45284 - 44032: 0x866F, - 45285 - 44032: 0xB3C9, - 45286 - 44032: 0x8670, - 45287 - 44032: 0x8671, - 45288 - 44032: 0x8672, - 45289 - 44032: 0x8673, - 45290 - 44032: 0x8674, - 45291 - 44032: 0x8675, - 45292 - 44032: 0x8676, - 45293 - 44032: 0x8677, - 45294 - 44032: 0x8678, - 45295 - 44032: 0x8679, - 45296 - 44032: 0x867A, - 45297 - 44032: 0x8681, - 45298 - 44032: 0x8682, - 45299 - 44032: 0x8683, - 45300 - 44032: 0x8684, - 45301 - 44032: 0x8685, - 45302 - 44032: 0x8686, - 45303 - 44032: 0x8687, - 45304 - 44032: 0x8688, - 45305 - 44032: 0x8689, - 45306 - 44032: 0x868A, - 45307 - 44032: 0x868B, - 45308 - 44032: 0x868C, - 45309 - 44032: 0x868D, - 45310 - 44032: 0x868E, - 45311 - 44032: 0x868F, - 45312 - 44032: 0x8690, - 45313 - 44032: 0x8691, - 45314 - 44032: 0x8692, - 45315 - 44032: 0x8693, - 45316 - 44032: 0x8694, - 45317 - 44032: 0x8695, - 45318 - 44032: 0x8696, - 45319 - 44032: 0x8697, - 45320 - 44032: 0xB3CA, - 45321 - 44032: 0xB3CB, - 45322 - 44032: 0x8698, - 45323 - 44032: 0xB3CC, - 45324 - 44032: 0xB3CD, - 45325 - 44032: 0x8699, - 45326 - 44032: 0x869A, - 45327 - 44032: 0x869B, - 45328 - 44032: 0xB3CE, - 45329 - 44032: 0x869C, - 45330 - 44032: 0xB3CF, - 45331 - 44032: 0xB3D0, - 45332 - 44032: 0x869D, - 45333 - 44032: 0x869E, - 45334 - 44032: 0x869F, - 45335 - 44032: 0x86A0, - 45336 - 44032: 0xB3D1, - 45337 - 44032: 0xB3D2, - 45338 - 44032: 0x86A1, - 45339 - 44032: 0xB3D3, - 45340 - 44032: 0xB3D4, - 45341 - 44032: 0xB3D5, - 45342 - 44032: 0x86A2, - 45343 - 44032: 0x86A3, - 45344 - 44032: 0x86A4, - 45345 - 44032: 0x86A5, - 45346 - 44032: 0x86A6, - 45347 - 44032: 0xB3D6, - 45348 - 44032: 0xB3D7, - 45349 - 44032: 0xB3D8, - 45350 - 44032: 0x86A7, - 45351 - 44032: 0x86A8, - 45352 - 44032: 0xB3D9, - 45353 - 44032: 0x86A9, - 45354 - 44032: 0x86AA, - 45355 - 44032: 0x86AB, - 45356 - 44032: 0xB3DA, - 45357 - 44032: 0x86AC, - 45358 - 44032: 0x86AD, - 45359 - 44032: 0x86AE, - 45360 - 44032: 0x86AF, - 45361 - 44032: 0x86B0, - 45362 - 44032: 0x86B1, - 45363 - 44032: 0x86B2, - 45364 - 44032: 0xB3DB, - 45365 - 44032: 0xB3DC, - 45366 - 44032: 0x86B3, - 45367 - 44032: 0xB3DD, - 45368 - 44032: 0xB3DE, - 45369 - 44032: 0xB3DF, - 45370 - 44032: 0x86B4, - 45371 - 44032: 0x86B5, - 45372 - 44032: 0x86B6, - 45373 - 44032: 0x86B7, - 45374 - 44032: 0x86B8, - 45375 - 44032: 0x86B9, - 45376 - 44032: 0xB3E0, - 45377 - 44032: 0xB3E1, - 45378 - 44032: 0x86BA, - 45379 - 44032: 0x86BB, - 45380 - 44032: 0xB3E2, - 45381 - 44032: 0x86BC, - 45382 - 44032: 0x86BD, - 45383 - 44032: 0x86BE, - 45384 - 44032: 0xB3E3, - 45385 - 44032: 0x86BF, - 45386 - 44032: 0x86C0, - 45387 - 44032: 0x86C1, - 45388 - 44032: 0x86C2, - 45389 - 44032: 0x86C3, - 45390 - 44032: 0x86C4, - 45391 - 44032: 0x86C5, - 45392 - 44032: 0xB3E4, - 45393 - 44032: 0xB3E5, - 45394 - 44032: 0x86C6, - 45395 - 44032: 0x86C7, - 45396 - 44032: 0xB3E6, - 45397 - 44032: 0xB3E7, - 45398 - 44032: 0x86C8, - 45399 - 44032: 0x86C9, - 45400 - 44032: 0xB3E8, - 45401 - 44032: 0x86CA, - 45402 - 44032: 0x86CB, - 45403 - 44032: 0x86CC, - 45404 - 44032: 0xB3E9, - 45405 - 44032: 0x86CD, - 45406 - 44032: 0x86CE, - 45407 - 44032: 0x86CF, - 45408 - 44032: 0xB3EA, - 45409 - 44032: 0x86D0, - 45410 - 44032: 0x86D1, - 45411 - 44032: 0x86D2, - 45412 - 44032: 0x86D3, - 45413 - 44032: 0x86D4, - 45414 - 44032: 0x86D5, - 45415 - 44032: 0x86D6, - 45416 - 44032: 0x86D7, - 45417 - 44032: 0x86D8, - 45418 - 44032: 0x86D9, - 45419 - 44032: 0x86DA, - 45420 - 44032: 0x86DB, - 45421 - 44032: 0x86DC, - 45422 - 44032: 0x86DD, - 45423 - 44032: 0x86DE, - 45424 - 44032: 0x86DF, - 45425 - 44032: 0x86E0, - 45426 - 44032: 0x86E1, - 45427 - 44032: 0x86E2, - 45428 - 44032: 0x86E3, - 45429 - 44032: 0x86E4, - 45430 - 44032: 0x86E5, - 45431 - 44032: 0x86E6, - 45432 - 44032: 0xB3EB, - 45433 - 44032: 0xB3EC, - 45434 - 44032: 0x86E7, - 45435 - 44032: 0x86E8, - 45436 - 44032: 0xB3ED, - 45437 - 44032: 0x86E9, - 45438 - 44032: 0x86EA, - 45439 - 44032: 0x86EB, - 45440 - 44032: 0xB3EE, - 45441 - 44032: 0x86EC, - 45442 - 44032: 0xB3EF, - 45443 - 44032: 0x86ED, - 45444 - 44032: 0x86EE, - 45445 - 44032: 0x86EF, - 45446 - 44032: 0x86F0, - 45447 - 44032: 0x86F1, - 45448 - 44032: 0xB3F0, - 45449 - 44032: 0xB3F1, - 45450 - 44032: 0x86F2, - 45451 - 44032: 0xB3F2, - 45452 - 44032: 0x86F3, - 45453 - 44032: 0xB3F3, - 45454 - 44032: 0x86F4, - 45455 - 44032: 0x86F5, - 45456 - 44032: 0x86F6, - 45457 - 44032: 0x86F7, - 45458 - 44032: 0xB3F4, - 45459 - 44032: 0xB3F5, - 45460 - 44032: 0xB3F6, - 45461 - 44032: 0x86F8, - 45462 - 44032: 0x86F9, - 45463 - 44032: 0x86FA, - 45464 - 44032: 0xB3F7, - 45465 - 44032: 0x86FB, - 45466 - 44032: 0x86FC, - 45467 - 44032: 0x86FD, - 45468 - 44032: 0xB3F8, - 45469 - 44032: 0x86FE, - 45470 - 44032: 0x8741, - 45471 - 44032: 0x8742, - 45472 - 44032: 0x8743, - 45473 - 44032: 0x8744, - 45474 - 44032: 0x8745, - 45475 - 44032: 0x8746, - 45476 - 44032: 0x8747, - 45477 - 44032: 0x8748, - 45478 - 44032: 0x8749, - 45479 - 44032: 0x874A, - 45480 - 44032: 0xB3F9, - 45481 - 44032: 0x874B, - 45482 - 44032: 0x874C, - 45483 - 44032: 0x874D, - 45484 - 44032: 0x874E, - 45485 - 44032: 0x874F, - 45486 - 44032: 0x8750, - 45487 - 44032: 0x8751, - 45488 - 44032: 0x8752, - 45489 - 44032: 0x8753, - 45490 - 44032: 0x8754, - 45491 - 44032: 0x8755, - 45492 - 44032: 0x8756, - 45493 - 44032: 0x8757, - 45494 - 44032: 0x8758, - 45495 - 44032: 0x8759, - 45496 - 44032: 0x875A, - 45497 - 44032: 0x8761, - 45498 - 44032: 0x8762, - 45499 - 44032: 0x8763, - 45500 - 44032: 0x8764, - 45501 - 44032: 0x8765, - 45502 - 44032: 0x8766, - 45503 - 44032: 0x8767, - 45504 - 44032: 0x8768, - 45505 - 44032: 0x8769, - 45506 - 44032: 0x876A, - 45507 - 44032: 0x876B, - 45508 - 44032: 0x876C, - 45509 - 44032: 0x876D, - 45510 - 44032: 0x876E, - 45511 - 44032: 0x876F, - 45512 - 44032: 0x8770, - 45513 - 44032: 0x8771, - 45514 - 44032: 0x8772, - 45515 - 44032: 0x8773, - 45516 - 44032: 0xB3FA, - 45517 - 44032: 0x8774, - 45518 - 44032: 0x8775, - 45519 - 44032: 0x8776, - 45520 - 44032: 0xB3FB, - 45521 - 44032: 0x8777, - 45522 - 44032: 0x8778, - 45523 - 44032: 0x8779, - 45524 - 44032: 0xB3FC, - 45525 - 44032: 0x877A, - 45526 - 44032: 0x8781, - 45527 - 44032: 0x8782, - 45528 - 44032: 0x8783, - 45529 - 44032: 0x8784, - 45530 - 44032: 0x8785, - 45531 - 44032: 0x8786, - 45532 - 44032: 0xB3FD, - 45533 - 44032: 0xB3FE, - 45534 - 44032: 0x8787, - 45535 - 44032: 0xB4A1, - 45536 - 44032: 0x8788, - 45537 - 44032: 0x8789, - 45538 - 44032: 0x878A, - 45539 - 44032: 0x878B, - 45540 - 44032: 0x878C, - 45541 - 44032: 0x878D, - 45542 - 44032: 0x878E, - 45543 - 44032: 0x878F, - 45544 - 44032: 0xB4A2, - 45545 - 44032: 0xB4A3, - 45546 - 44032: 0x8790, - 45547 - 44032: 0x8791, - 45548 - 44032: 0xB4A4, - 45549 - 44032: 0x8792, - 45550 - 44032: 0x8793, - 45551 - 44032: 0x8794, - 45552 - 44032: 0xB4A5, - 45553 - 44032: 0x8795, - 45554 - 44032: 0x8796, - 45555 - 44032: 0x8797, - 45556 - 44032: 0x8798, - 45557 - 44032: 0x8799, - 45558 - 44032: 0x879A, - 45559 - 44032: 0x879B, - 45560 - 44032: 0x879C, - 45561 - 44032: 0xB4A6, - 45562 - 44032: 0x879D, - 45563 - 44032: 0xB4A7, - 45564 - 44032: 0x879E, - 45565 - 44032: 0xB4A8, - 45566 - 44032: 0x879F, - 45567 - 44032: 0x87A0, - 45568 - 44032: 0x87A1, - 45569 - 44032: 0x87A2, - 45570 - 44032: 0x87A3, - 45571 - 44032: 0x87A4, - 45572 - 44032: 0xB4A9, - 45573 - 44032: 0xB4AA, - 45574 - 44032: 0x87A5, - 45575 - 44032: 0x87A6, - 45576 - 44032: 0xB4AB, - 45577 - 44032: 0x87A7, - 45578 - 44032: 0x87A8, - 45579 - 44032: 0xB4AC, - 45580 - 44032: 0xB4AD, - 45581 - 44032: 0x87A9, - 45582 - 44032: 0x87AA, - 45583 - 44032: 0x87AB, - 45584 - 44032: 0x87AC, - 45585 - 44032: 0x87AD, - 45586 - 44032: 0x87AE, - 45587 - 44032: 0x87AF, - 45588 - 44032: 0xB4AE, - 45589 - 44032: 0xB4AF, - 45590 - 44032: 0x87B0, - 45591 - 44032: 0xB4B0, - 45592 - 44032: 0x87B1, - 45593 - 44032: 0xB4B1, - 45594 - 44032: 0x87B2, - 45595 - 44032: 0x87B3, - 45596 - 44032: 0x87B4, - 45597 - 44032: 0x87B5, - 45598 - 44032: 0x87B6, - 45599 - 44032: 0x87B7, - 45600 - 44032: 0xB4B2, - 45601 - 44032: 0x87B8, - 45602 - 44032: 0x87B9, - 45603 - 44032: 0x87BA, - 45604 - 44032: 0x87BB, - 45605 - 44032: 0x87BC, - 45606 - 44032: 0x87BD, - 45607 - 44032: 0x87BE, - 45608 - 44032: 0x87BF, - 45609 - 44032: 0x87C0, - 45610 - 44032: 0x87C1, - 45611 - 44032: 0x87C2, - 45612 - 44032: 0x87C3, - 45613 - 44032: 0x87C4, - 45614 - 44032: 0x87C5, - 45615 - 44032: 0x87C6, - 45616 - 44032: 0x87C7, - 45617 - 44032: 0x87C8, - 45618 - 44032: 0x87C9, - 45619 - 44032: 0x87CA, - 45620 - 44032: 0xB4B3, - 45621 - 44032: 0x87CB, - 45622 - 44032: 0x87CC, - 45623 - 44032: 0x87CD, - 45624 - 44032: 0x87CE, - 45625 - 44032: 0x87CF, - 45626 - 44032: 0x87D0, - 45627 - 44032: 0x87D1, - 45628 - 44032: 0xB4B4, - 45629 - 44032: 0x87D2, - 45630 - 44032: 0x87D3, - 45631 - 44032: 0x87D4, - 45632 - 44032: 0x87D5, - 45633 - 44032: 0x87D6, - 45634 - 44032: 0x87D7, - 45635 - 44032: 0x87D8, - 45636 - 44032: 0x87D9, - 45637 - 44032: 0x87DA, - 45638 - 44032: 0x87DB, - 45639 - 44032: 0x87DC, - 45640 - 44032: 0x87DD, - 45641 - 44032: 0x87DE, - 45642 - 44032: 0x87DF, - 45643 - 44032: 0x87E0, - 45644 - 44032: 0x87E1, - 45645 - 44032: 0x87E2, - 45646 - 44032: 0x87E3, - 45647 - 44032: 0x87E4, - 45648 - 44032: 0x87E5, - 45649 - 44032: 0x87E6, - 45650 - 44032: 0x87E7, - 45651 - 44032: 0x87E8, - 45652 - 44032: 0x87E9, - 45653 - 44032: 0x87EA, - 45654 - 44032: 0x87EB, - 45655 - 44032: 0x87EC, - 45656 - 44032: 0xB4B5, - 45657 - 44032: 0x87ED, - 45658 - 44032: 0x87EE, - 45659 - 44032: 0x87EF, - 45660 - 44032: 0xB4B6, - 45661 - 44032: 0x87F0, - 45662 - 44032: 0x87F1, - 45663 - 44032: 0x87F2, - 45664 - 44032: 0xB4B7, - 45665 - 44032: 0x87F3, - 45666 - 44032: 0x87F4, - 45667 - 44032: 0x87F5, - 45668 - 44032: 0x87F6, - 45669 - 44032: 0x87F7, - 45670 - 44032: 0x87F8, - 45671 - 44032: 0x87F9, - 45672 - 44032: 0xB4B8, - 45673 - 44032: 0xB4B9, - 45674 - 44032: 0x87FA, - 45675 - 44032: 0x87FB, - 45676 - 44032: 0x87FC, - 45677 - 44032: 0x87FD, - 45678 - 44032: 0x87FE, - 45679 - 44032: 0x8841, - 45680 - 44032: 0x8842, - 45681 - 44032: 0x8843, - 45682 - 44032: 0x8844, - 45683 - 44032: 0x8845, - 45684 - 44032: 0xB4BA, - 45685 - 44032: 0xB4BB, - 45686 - 44032: 0x8846, - 45687 - 44032: 0x8847, - 45688 - 44032: 0x8848, - 45689 - 44032: 0x8849, - 45690 - 44032: 0x884A, - 45691 - 44032: 0x884B, - 45692 - 44032: 0xB4BC, - 45693 - 44032: 0x884C, - 45694 - 44032: 0x884D, - 45695 - 44032: 0x884E, - 45696 - 44032: 0x884F, - 45697 - 44032: 0x8850, - 45698 - 44032: 0x8851, - 45699 - 44032: 0x8852, - 45700 - 44032: 0xB4BD, - 45701 - 44032: 0xB4BE, - 45702 - 44032: 0x8853, - 45703 - 44032: 0x8854, - 45704 - 44032: 0x8855, - 45705 - 44032: 0xB4BF, - 45706 - 44032: 0x8856, - 45707 - 44032: 0x8857, - 45708 - 44032: 0x8858, - 45709 - 44032: 0x8859, - 45710 - 44032: 0x885A, - 45711 - 44032: 0x8861, - 45712 - 44032: 0xB4C0, - 45713 - 44032: 0xB4C1, - 45714 - 44032: 0x8862, - 45715 - 44032: 0x8863, - 45716 - 44032: 0xB4C2, - 45717 - 44032: 0x8864, - 45718 - 44032: 0x8865, - 45719 - 44032: 0x8866, - 45720 - 44032: 0xB4C3, - 45721 - 44032: 0xB4C4, - 45722 - 44032: 0xB4C5, - 45723 - 44032: 0x8867, - 45724 - 44032: 0x8868, - 45725 - 44032: 0x8869, - 45726 - 44032: 0x886A, - 45727 - 44032: 0x886B, - 45728 - 44032: 0xB4C6, - 45729 - 44032: 0xB4C7, - 45730 - 44032: 0x886C, - 45731 - 44032: 0xB4C8, - 45732 - 44032: 0x886D, - 45733 - 44032: 0xB4C9, - 45734 - 44032: 0xB4CA, - 45735 - 44032: 0x886E, - 45736 - 44032: 0x886F, - 45737 - 44032: 0x8870, - 45738 - 44032: 0xB4CB, - 45739 - 44032: 0x8871, - 45740 - 44032: 0xB4CC, - 45741 - 44032: 0x8872, - 45742 - 44032: 0x8873, - 45743 - 44032: 0x8874, - 45744 - 44032: 0xB4CD, - 45745 - 44032: 0x8875, - 45746 - 44032: 0x8876, - 45747 - 44032: 0x8877, - 45748 - 44032: 0xB4CE, - 45749 - 44032: 0x8878, - 45750 - 44032: 0x8879, - 45751 - 44032: 0x887A, - 45752 - 44032: 0x8881, - 45753 - 44032: 0x8882, - 45754 - 44032: 0x8883, - 45755 - 44032: 0x8884, - 45756 - 44032: 0x8885, - 45757 - 44032: 0x8886, - 45758 - 44032: 0x8887, - 45759 - 44032: 0x8888, - 45760 - 44032: 0x8889, - 45761 - 44032: 0x888A, - 45762 - 44032: 0x888B, - 45763 - 44032: 0x888C, - 45764 - 44032: 0x888D, - 45765 - 44032: 0x888E, - 45766 - 44032: 0x888F, - 45767 - 44032: 0x8890, - 45768 - 44032: 0xB4CF, - 45769 - 44032: 0xB4D0, - 45770 - 44032: 0x8891, - 45771 - 44032: 0x8892, - 45772 - 44032: 0xB4D1, - 45773 - 44032: 0x8893, - 45774 - 44032: 0x8894, - 45775 - 44032: 0x8895, - 45776 - 44032: 0xB4D2, - 45777 - 44032: 0x8896, - 45778 - 44032: 0xB4D3, - 45779 - 44032: 0x8897, - 45780 - 44032: 0x8898, - 45781 - 44032: 0x8899, - 45782 - 44032: 0x889A, - 45783 - 44032: 0x889B, - 45784 - 44032: 0xB4D4, - 45785 - 44032: 0xB4D5, - 45786 - 44032: 0x889C, - 45787 - 44032: 0xB4D6, - 45788 - 44032: 0x889D, - 45789 - 44032: 0xB4D7, - 45790 - 44032: 0x889E, - 45791 - 44032: 0x889F, - 45792 - 44032: 0x88A0, - 45793 - 44032: 0x88A1, - 45794 - 44032: 0xB4D8, - 45795 - 44032: 0x88A2, - 45796 - 44032: 0xB4D9, - 45797 - 44032: 0xB4DA, - 45798 - 44032: 0xB4DB, - 45799 - 44032: 0x88A3, - 45800 - 44032: 0xB4DC, - 45801 - 44032: 0x88A4, - 45802 - 44032: 0x88A5, - 45803 - 44032: 0xB4DD, - 45804 - 44032: 0xB4DE, - 45805 - 44032: 0xB4DF, - 45806 - 44032: 0xB4E0, - 45807 - 44032: 0xB4E1, - 45808 - 44032: 0x88A6, - 45809 - 44032: 0x88A7, - 45810 - 44032: 0x88A8, - 45811 - 44032: 0xB4E2, - 45812 - 44032: 0xB4E3, - 45813 - 44032: 0xB4E4, - 45814 - 44032: 0x88A9, - 45815 - 44032: 0xB4E5, - 45816 - 44032: 0xB4E6, - 45817 - 44032: 0xB4E7, - 45818 - 44032: 0xB4E8, - 45819 - 44032: 0xB4E9, - 45820 - 44032: 0x88AA, - 45821 - 44032: 0x88AB, - 45822 - 44032: 0x88AC, - 45823 - 44032: 0xB4EA, - 45824 - 44032: 0xB4EB, - 45825 - 44032: 0xB4EC, - 45826 - 44032: 0x88AD, - 45827 - 44032: 0x88AE, - 45828 - 44032: 0xB4ED, - 45829 - 44032: 0x88AF, - 45830 - 44032: 0x88B0, - 45831 - 44032: 0x88B1, - 45832 - 44032: 0xB4EE, - 45833 - 44032: 0x88B2, - 45834 - 44032: 0x88B3, - 45835 - 44032: 0x88B4, - 45836 - 44032: 0x88B5, - 45837 - 44032: 0x88B6, - 45838 - 44032: 0x88B7, - 45839 - 44032: 0x88B8, - 45840 - 44032: 0xB4EF, - 45841 - 44032: 0xB4F0, - 45842 - 44032: 0x88B9, - 45843 - 44032: 0xB4F1, - 45844 - 44032: 0xB4F2, - 45845 - 44032: 0xB4F3, - 45846 - 44032: 0x88BA, - 45847 - 44032: 0x88BB, - 45848 - 44032: 0x88BC, - 45849 - 44032: 0x88BD, - 45850 - 44032: 0x88BE, - 45851 - 44032: 0x88BF, - 45852 - 44032: 0xB4F4, - 45853 - 44032: 0x88C0, - 45854 - 44032: 0x88C1, - 45855 - 44032: 0x88C2, - 45856 - 44032: 0x88C3, - 45857 - 44032: 0x88C4, - 45858 - 44032: 0x88C5, - 45859 - 44032: 0x88C6, - 45860 - 44032: 0x88C7, - 45861 - 44032: 0x88C8, - 45862 - 44032: 0x88C9, - 45863 - 44032: 0x88CA, - 45864 - 44032: 0x88CB, - 45865 - 44032: 0x88CC, - 45866 - 44032: 0x88CD, - 45867 - 44032: 0x88CE, - 45868 - 44032: 0x88CF, - 45869 - 44032: 0x88D0, - 45870 - 44032: 0x88D1, - 45871 - 44032: 0x88D2, - 45872 - 44032: 0x88D3, - 45873 - 44032: 0x88D4, - 45874 - 44032: 0x88D5, - 45875 - 44032: 0x88D6, - 45876 - 44032: 0x88D7, - 45877 - 44032: 0x88D8, - 45878 - 44032: 0x88D9, - 45879 - 44032: 0x88DA, - 45880 - 44032: 0x88DB, - 45881 - 44032: 0x88DC, - 45882 - 44032: 0x88DD, - 45883 - 44032: 0x88DE, - 45884 - 44032: 0x88DF, - 45885 - 44032: 0x88E0, - 45886 - 44032: 0x88E1, - 45887 - 44032: 0x88E2, - 45888 - 44032: 0x88E3, - 45889 - 44032: 0x88E4, - 45890 - 44032: 0x88E5, - 45891 - 44032: 0x88E6, - 45892 - 44032: 0x88E7, - 45893 - 44032: 0x88E8, - 45894 - 44032: 0x88E9, - 45895 - 44032: 0x88EA, - 45896 - 44032: 0x88EB, - 45897 - 44032: 0x88EC, - 45898 - 44032: 0x88ED, - 45899 - 44032: 0x88EE, - 45900 - 44032: 0x88EF, - 45901 - 44032: 0x88F0, - 45902 - 44032: 0x88F1, - 45903 - 44032: 0x88F2, - 45904 - 44032: 0x88F3, - 45905 - 44032: 0x88F4, - 45906 - 44032: 0x88F5, - 45907 - 44032: 0x88F6, - 45908 - 44032: 0xB4F5, - 45909 - 44032: 0xB4F6, - 45910 - 44032: 0xB4F7, - 45911 - 44032: 0x88F7, - 45912 - 44032: 0xB4F8, - 45913 - 44032: 0x88F8, - 45914 - 44032: 0x88F9, - 45915 - 44032: 0xB4F9, - 45916 - 44032: 0xB4FA, - 45917 - 44032: 0x88FA, - 45918 - 44032: 0xB4FB, - 45919 - 44032: 0xB4FC, - 45920 - 44032: 0x88FB, - 45921 - 44032: 0x88FC, - 45922 - 44032: 0x88FD, - 45923 - 44032: 0x88FE, - 45924 - 44032: 0xB4FD, - 45925 - 44032: 0xB4FE, - 45926 - 44032: 0x8941, - 45927 - 44032: 0xB5A1, - 45928 - 44032: 0x8942, - 45929 - 44032: 0xB5A2, - 45930 - 44032: 0x8943, - 45931 - 44032: 0xB5A3, - 45932 - 44032: 0x8944, - 45933 - 44032: 0x8945, - 45934 - 44032: 0xB5A4, - 45935 - 44032: 0x8946, - 45936 - 44032: 0xB5A5, - 45937 - 44032: 0xB5A6, - 45938 - 44032: 0x8947, - 45939 - 44032: 0x8948, - 45940 - 44032: 0xB5A7, - 45941 - 44032: 0x8949, - 45942 - 44032: 0x894A, - 45943 - 44032: 0x894B, - 45944 - 44032: 0xB5A8, - 45945 - 44032: 0x894C, - 45946 - 44032: 0x894D, - 45947 - 44032: 0x894E, - 45948 - 44032: 0x894F, - 45949 - 44032: 0x8950, - 45950 - 44032: 0x8951, - 45951 - 44032: 0x8952, - 45952 - 44032: 0xB5A9, - 45953 - 44032: 0xB5AA, - 45954 - 44032: 0x8953, - 45955 - 44032: 0xB5AB, - 45956 - 44032: 0xB5AC, - 45957 - 44032: 0xB5AD, - 45958 - 44032: 0x8954, - 45959 - 44032: 0x8955, - 45960 - 44032: 0x8956, - 45961 - 44032: 0x8957, - 45962 - 44032: 0x8958, - 45963 - 44032: 0x8959, - 45964 - 44032: 0xB5AE, - 45965 - 44032: 0x895A, - 45966 - 44032: 0x8961, - 45967 - 44032: 0x8962, - 45968 - 44032: 0xB5AF, - 45969 - 44032: 0x8963, - 45970 - 44032: 0x8964, - 45971 - 44032: 0x8965, - 45972 - 44032: 0xB5B0, - 45973 - 44032: 0x8966, - 45974 - 44032: 0x8967, - 45975 - 44032: 0x8968, - 45976 - 44032: 0x8969, - 45977 - 44032: 0x896A, - 45978 - 44032: 0x896B, - 45979 - 44032: 0x896C, - 45980 - 44032: 0x896D, - 45981 - 44032: 0x896E, - 45982 - 44032: 0x896F, - 45983 - 44032: 0x8970, - 45984 - 44032: 0xB5B1, - 45985 - 44032: 0xB5B2, - 45986 - 44032: 0x8971, - 45987 - 44032: 0x8972, - 45988 - 44032: 0x8973, - 45989 - 44032: 0x8974, - 45990 - 44032: 0x8975, - 45991 - 44032: 0x8976, - 45992 - 44032: 0xB5B3, - 45993 - 44032: 0x8977, - 45994 - 44032: 0x8978, - 45995 - 44032: 0x8979, - 45996 - 44032: 0xB5B4, - 45997 - 44032: 0x897A, - 45998 - 44032: 0x8981, - 45999 - 44032: 0x8982, - 46000 - 44032: 0x8983, - 46001 - 44032: 0x8984, - 46002 - 44032: 0x8985, - 46003 - 44032: 0x8986, - 46004 - 44032: 0x8987, - 46005 - 44032: 0x8988, - 46006 - 44032: 0x8989, - 46007 - 44032: 0x898A, - 46008 - 44032: 0x898B, - 46009 - 44032: 0x898C, - 46010 - 44032: 0x898D, - 46011 - 44032: 0x898E, - 46012 - 44032: 0x898F, - 46013 - 44032: 0x8990, - 46014 - 44032: 0x8991, - 46015 - 44032: 0x8992, - 46016 - 44032: 0x8993, - 46017 - 44032: 0x8994, - 46018 - 44032: 0x8995, - 46019 - 44032: 0x8996, - 46020 - 44032: 0xB5B5, - 46021 - 44032: 0xB5B6, - 46022 - 44032: 0x8997, - 46023 - 44032: 0x8998, - 46024 - 44032: 0xB5B7, - 46025 - 44032: 0x8999, - 46026 - 44032: 0x899A, - 46027 - 44032: 0xB5B8, - 46028 - 44032: 0xB5B9, - 46029 - 44032: 0x899B, - 46030 - 44032: 0xB5BA, - 46031 - 44032: 0x899C, - 46032 - 44032: 0xB5BB, - 46033 - 44032: 0x899D, - 46034 - 44032: 0x899E, - 46035 - 44032: 0x899F, - 46036 - 44032: 0xB5BC, - 46037 - 44032: 0xB5BD, - 46038 - 44032: 0x89A0, - 46039 - 44032: 0xB5BE, - 46040 - 44032: 0x89A1, - 46041 - 44032: 0xB5BF, - 46042 - 44032: 0x89A2, - 46043 - 44032: 0xB5C0, - 46044 - 44032: 0x89A3, - 46045 - 44032: 0xB5C1, - 46046 - 44032: 0x89A4, - 46047 - 44032: 0x89A5, - 46048 - 44032: 0xB5C2, - 46049 - 44032: 0x89A6, - 46050 - 44032: 0x89A7, - 46051 - 44032: 0x89A8, - 46052 - 44032: 0xB5C3, - 46053 - 44032: 0x89A9, - 46054 - 44032: 0x89AA, - 46055 - 44032: 0x89AB, - 46056 - 44032: 0xB5C4, - 46057 - 44032: 0x89AC, - 46058 - 44032: 0x89AD, - 46059 - 44032: 0x89AE, - 46060 - 44032: 0x89AF, - 46061 - 44032: 0x89B0, - 46062 - 44032: 0x89B1, - 46063 - 44032: 0x89B2, - 46064 - 44032: 0x89B3, - 46065 - 44032: 0x89B4, - 46066 - 44032: 0x89B5, - 46067 - 44032: 0x89B6, - 46068 - 44032: 0x89B7, - 46069 - 44032: 0x89B8, - 46070 - 44032: 0x89B9, - 46071 - 44032: 0x89BA, - 46072 - 44032: 0x89BB, - 46073 - 44032: 0x89BC, - 46074 - 44032: 0x89BD, - 46075 - 44032: 0x89BE, - 46076 - 44032: 0xB5C5, - 46077 - 44032: 0x89BF, - 46078 - 44032: 0x89C0, - 46079 - 44032: 0x89C1, - 46080 - 44032: 0x89C2, - 46081 - 44032: 0x89C3, - 46082 - 44032: 0x89C4, - 46083 - 44032: 0x89C5, - 46084 - 44032: 0x89C6, - 46085 - 44032: 0x89C7, - 46086 - 44032: 0x89C8, - 46087 - 44032: 0x89C9, - 46088 - 44032: 0x89CA, - 46089 - 44032: 0x89CB, - 46090 - 44032: 0x89CC, - 46091 - 44032: 0x89CD, - 46092 - 44032: 0x89CE, - 46093 - 44032: 0x89CF, - 46094 - 44032: 0x89D0, - 46095 - 44032: 0x89D1, - 46096 - 44032: 0xB5C6, - 46097 - 44032: 0x89D2, - 46098 - 44032: 0x89D3, - 46099 - 44032: 0x89D4, - 46100 - 44032: 0x89D5, - 46101 - 44032: 0x89D6, - 46102 - 44032: 0x89D7, - 46103 - 44032: 0x89D8, - 46104 - 44032: 0xB5C7, - 46105 - 44032: 0x89D9, - 46106 - 44032: 0x89DA, - 46107 - 44032: 0x89DB, - 46108 - 44032: 0xB5C8, - 46109 - 44032: 0x89DC, - 46110 - 44032: 0x89DD, - 46111 - 44032: 0x89DE, - 46112 - 44032: 0xB5C9, - 46113 - 44032: 0x89DF, - 46114 - 44032: 0x89E0, - 46115 - 44032: 0x89E1, - 46116 - 44032: 0x89E2, - 46117 - 44032: 0x89E3, - 46118 - 44032: 0x89E4, - 46119 - 44032: 0x89E5, - 46120 - 44032: 0xB5CA, - 46121 - 44032: 0xB5CB, - 46122 - 44032: 0x89E6, - 46123 - 44032: 0xB5CC, - 46124 - 44032: 0x89E7, - 46125 - 44032: 0x89E8, - 46126 - 44032: 0x89E9, - 46127 - 44032: 0x89EA, - 46128 - 44032: 0x89EB, - 46129 - 44032: 0x89EC, - 46130 - 44032: 0x89ED, - 46131 - 44032: 0x89EE, - 46132 - 44032: 0xB5CD, - 46133 - 44032: 0x89EF, - 46134 - 44032: 0x89F0, - 46135 - 44032: 0x89F1, - 46136 - 44032: 0x89F2, - 46137 - 44032: 0x89F3, - 46138 - 44032: 0x89F4, - 46139 - 44032: 0x89F5, - 46140 - 44032: 0x89F6, - 46141 - 44032: 0x89F7, - 46142 - 44032: 0x89F8, - 46143 - 44032: 0x89F9, - 46144 - 44032: 0x89FA, - 46145 - 44032: 0x89FB, - 46146 - 44032: 0x89FC, - 46147 - 44032: 0x89FD, - 46148 - 44032: 0x89FE, - 46149 - 44032: 0x8A41, - 46150 - 44032: 0x8A42, - 46151 - 44032: 0x8A43, - 46152 - 44032: 0x8A44, - 46153 - 44032: 0x8A45, - 46154 - 44032: 0x8A46, - 46155 - 44032: 0x8A47, - 46156 - 44032: 0x8A48, - 46157 - 44032: 0x8A49, - 46158 - 44032: 0x8A4A, - 46159 - 44032: 0x8A4B, - 46160 - 44032: 0xB5CE, - 46161 - 44032: 0xB5CF, - 46162 - 44032: 0x8A4C, - 46163 - 44032: 0x8A4D, - 46164 - 44032: 0xB5D0, - 46165 - 44032: 0x8A4E, - 46166 - 44032: 0x8A4F, - 46167 - 44032: 0x8A50, - 46168 - 44032: 0xB5D1, - 46169 - 44032: 0x8A51, - 46170 - 44032: 0x8A52, - 46171 - 44032: 0x8A53, - 46172 - 44032: 0x8A54, - 46173 - 44032: 0x8A55, - 46174 - 44032: 0x8A56, - 46175 - 44032: 0x8A57, - 46176 - 44032: 0xB5D2, - 46177 - 44032: 0xB5D3, - 46178 - 44032: 0x8A58, - 46179 - 44032: 0xB5D4, - 46180 - 44032: 0x8A59, - 46181 - 44032: 0xB5D5, - 46182 - 44032: 0x8A5A, - 46183 - 44032: 0x8A61, - 46184 - 44032: 0x8A62, - 46185 - 44032: 0x8A63, - 46186 - 44032: 0x8A64, - 46187 - 44032: 0x8A65, - 46188 - 44032: 0xB5D6, - 46189 - 44032: 0x8A66, - 46190 - 44032: 0x8A67, - 46191 - 44032: 0x8A68, - 46192 - 44032: 0x8A69, - 46193 - 44032: 0x8A6A, - 46194 - 44032: 0x8A6B, - 46195 - 44032: 0x8A6C, - 46196 - 44032: 0x8A6D, - 46197 - 44032: 0x8A6E, - 46198 - 44032: 0x8A6F, - 46199 - 44032: 0x8A70, - 46200 - 44032: 0x8A71, - 46201 - 44032: 0x8A72, - 46202 - 44032: 0x8A73, - 46203 - 44032: 0x8A74, - 46204 - 44032: 0x8A75, - 46205 - 44032: 0x8A76, - 46206 - 44032: 0x8A77, - 46207 - 44032: 0x8A78, - 46208 - 44032: 0xB5D7, - 46209 - 44032: 0x8A79, - 46210 - 44032: 0x8A7A, - 46211 - 44032: 0x8A81, - 46212 - 44032: 0x8A82, - 46213 - 44032: 0x8A83, - 46214 - 44032: 0x8A84, - 46215 - 44032: 0x8A85, - 46216 - 44032: 0xB5D8, - 46217 - 44032: 0x8A86, - 46218 - 44032: 0x8A87, - 46219 - 44032: 0x8A88, - 46220 - 44032: 0x8A89, - 46221 - 44032: 0x8A8A, - 46222 - 44032: 0x8A8B, - 46223 - 44032: 0x8A8C, - 46224 - 44032: 0x8A8D, - 46225 - 44032: 0x8A8E, - 46226 - 44032: 0x8A8F, - 46227 - 44032: 0x8A90, - 46228 - 44032: 0x8A91, - 46229 - 44032: 0x8A92, - 46230 - 44032: 0x8A93, - 46231 - 44032: 0x8A94, - 46232 - 44032: 0x8A95, - 46233 - 44032: 0x8A96, - 46234 - 44032: 0x8A97, - 46235 - 44032: 0x8A98, - 46236 - 44032: 0x8A99, - 46237 - 44032: 0xB5D9, - 46238 - 44032: 0x8A9A, - 46239 - 44032: 0x8A9B, - 46240 - 44032: 0x8A9C, - 46241 - 44032: 0x8A9D, - 46242 - 44032: 0x8A9E, - 46243 - 44032: 0x8A9F, - 46244 - 44032: 0xB5DA, - 46245 - 44032: 0x8AA0, - 46246 - 44032: 0x8AA1, - 46247 - 44032: 0x8AA2, - 46248 - 44032: 0xB5DB, - 46249 - 44032: 0x8AA3, - 46250 - 44032: 0x8AA4, - 46251 - 44032: 0x8AA5, - 46252 - 44032: 0xB5DC, - 46253 - 44032: 0x8AA6, - 46254 - 44032: 0x8AA7, - 46255 - 44032: 0x8AA8, - 46256 - 44032: 0x8AA9, - 46257 - 44032: 0x8AAA, - 46258 - 44032: 0x8AAB, - 46259 - 44032: 0x8AAC, - 46260 - 44032: 0x8AAD, - 46261 - 44032: 0xB5DD, - 46262 - 44032: 0x8AAE, - 46263 - 44032: 0xB5DE, - 46264 - 44032: 0x8AAF, - 46265 - 44032: 0xB5DF, - 46266 - 44032: 0x8AB0, - 46267 - 44032: 0x8AB1, - 46268 - 44032: 0x8AB2, - 46269 - 44032: 0x8AB3, - 46270 - 44032: 0x8AB4, - 46271 - 44032: 0x8AB5, - 46272 - 44032: 0xB5E0, - 46273 - 44032: 0x8AB6, - 46274 - 44032: 0x8AB7, - 46275 - 44032: 0x8AB8, - 46276 - 44032: 0xB5E1, - 46277 - 44032: 0x8AB9, - 46278 - 44032: 0x8ABA, - 46279 - 44032: 0x8ABB, - 46280 - 44032: 0xB5E2, - 46281 - 44032: 0x8ABC, - 46282 - 44032: 0x8ABD, - 46283 - 44032: 0x8ABE, - 46284 - 44032: 0x8ABF, - 46285 - 44032: 0x8AC0, - 46286 - 44032: 0x8AC1, - 46287 - 44032: 0x8AC2, - 46288 - 44032: 0xB5E3, - 46289 - 44032: 0x8AC3, - 46290 - 44032: 0x8AC4, - 46291 - 44032: 0x8AC5, - 46292 - 44032: 0x8AC6, - 46293 - 44032: 0xB5E4, - 46294 - 44032: 0x8AC7, - 46295 - 44032: 0x8AC8, - 46296 - 44032: 0x8AC9, - 46297 - 44032: 0x8ACA, - 46298 - 44032: 0x8ACB, - 46299 - 44032: 0x8ACC, - 46300 - 44032: 0xB5E5, - 46301 - 44032: 0xB5E6, - 46302 - 44032: 0x8ACD, - 46303 - 44032: 0x8ACE, - 46304 - 44032: 0xB5E7, - 46305 - 44032: 0x8ACF, - 46306 - 44032: 0x8AD0, - 46307 - 44032: 0xB5E8, - 46308 - 44032: 0xB5E9, - 46309 - 44032: 0x8AD1, - 46310 - 44032: 0xB5EA, - 46311 - 44032: 0x8AD2, - 46312 - 44032: 0x8AD3, - 46313 - 44032: 0x8AD4, - 46314 - 44032: 0x8AD5, - 46315 - 44032: 0x8AD6, - 46316 - 44032: 0xB5EB, - 46317 - 44032: 0xB5EC, - 46318 - 44032: 0x8AD7, - 46319 - 44032: 0xB5ED, - 46320 - 44032: 0x8AD8, - 46321 - 44032: 0xB5EE, - 46322 - 44032: 0x8AD9, - 46323 - 44032: 0x8ADA, - 46324 - 44032: 0x8ADB, - 46325 - 44032: 0x8ADC, - 46326 - 44032: 0x8ADD, - 46327 - 44032: 0x8ADE, - 46328 - 44032: 0xB5EF, - 46329 - 44032: 0x8ADF, - 46330 - 44032: 0x8AE0, - 46331 - 44032: 0x8AE1, - 46332 - 44032: 0x8AE2, - 46333 - 44032: 0x8AE3, - 46334 - 44032: 0x8AE4, - 46335 - 44032: 0x8AE5, - 46336 - 44032: 0x8AE6, - 46337 - 44032: 0x8AE7, - 46338 - 44032: 0x8AE8, - 46339 - 44032: 0x8AE9, - 46340 - 44032: 0x8AEA, - 46341 - 44032: 0x8AEB, - 46342 - 44032: 0x8AEC, - 46343 - 44032: 0x8AED, - 46344 - 44032: 0x8AEE, - 46345 - 44032: 0x8AEF, - 46346 - 44032: 0x8AF0, - 46347 - 44032: 0x8AF1, - 46348 - 44032: 0x8AF2, - 46349 - 44032: 0x8AF3, - 46350 - 44032: 0x8AF4, - 46351 - 44032: 0x8AF5, - 46352 - 44032: 0x8AF6, - 46353 - 44032: 0x8AF7, - 46354 - 44032: 0x8AF8, - 46355 - 44032: 0x8AF9, - 46356 - 44032: 0xB5F0, - 46357 - 44032: 0xB5F1, - 46358 - 44032: 0x8AFA, - 46359 - 44032: 0x8AFB, - 46360 - 44032: 0xB5F2, - 46361 - 44032: 0x8AFC, - 46362 - 44032: 0x8AFD, - 46363 - 44032: 0xB5F3, - 46364 - 44032: 0xB5F4, - 46365 - 44032: 0x8AFE, - 46366 - 44032: 0x8B41, - 46367 - 44032: 0x8B42, - 46368 - 44032: 0x8B43, - 46369 - 44032: 0x8B44, - 46370 - 44032: 0x8B45, - 46371 - 44032: 0x8B46, - 46372 - 44032: 0xB5F5, - 46373 - 44032: 0xB5F6, - 46374 - 44032: 0x8B47, - 46375 - 44032: 0xB5F7, - 46376 - 44032: 0xB5F8, - 46377 - 44032: 0xB5F9, - 46378 - 44032: 0xB5FA, - 46379 - 44032: 0x8B48, - 46380 - 44032: 0x8B49, - 46381 - 44032: 0x8B4A, - 46382 - 44032: 0x8B4B, - 46383 - 44032: 0x8B4C, - 46384 - 44032: 0xB5FB, - 46385 - 44032: 0xB5FC, - 46386 - 44032: 0x8B4D, - 46387 - 44032: 0x8B4E, - 46388 - 44032: 0xB5FD, - 46389 - 44032: 0x8B4F, - 46390 - 44032: 0x8B50, - 46391 - 44032: 0x8B51, - 46392 - 44032: 0xB5FE, - 46393 - 44032: 0x8B52, - 46394 - 44032: 0x8B53, - 46395 - 44032: 0x8B54, - 46396 - 44032: 0x8B55, - 46397 - 44032: 0x8B56, - 46398 - 44032: 0x8B57, - 46399 - 44032: 0x8B58, - 46400 - 44032: 0xB6A1, - 46401 - 44032: 0xB6A2, - 46402 - 44032: 0x8B59, - 46403 - 44032: 0xB6A3, - 46404 - 44032: 0xB6A4, - 46405 - 44032: 0xB6A5, - 46406 - 44032: 0x8B5A, - 46407 - 44032: 0x8B61, - 46408 - 44032: 0x8B62, - 46409 - 44032: 0x8B63, - 46410 - 44032: 0x8B64, - 46411 - 44032: 0xB6A6, - 46412 - 44032: 0xB6A7, - 46413 - 44032: 0xB6A8, - 46414 - 44032: 0x8B65, - 46415 - 44032: 0x8B66, - 46416 - 44032: 0xB6A9, - 46417 - 44032: 0x8B67, - 46418 - 44032: 0x8B68, - 46419 - 44032: 0x8B69, - 46420 - 44032: 0xB6AA, - 46421 - 44032: 0x8B6A, - 46422 - 44032: 0x8B6B, - 46423 - 44032: 0x8B6C, - 46424 - 44032: 0x8B6D, - 46425 - 44032: 0x8B6E, - 46426 - 44032: 0x8B6F, - 46427 - 44032: 0x8B70, - 46428 - 44032: 0xB6AB, - 46429 - 44032: 0xB6AC, - 46430 - 44032: 0x8B71, - 46431 - 44032: 0xB6AD, - 46432 - 44032: 0xB6AE, - 46433 - 44032: 0xB6AF, - 46434 - 44032: 0x8B72, - 46435 - 44032: 0x8B73, - 46436 - 44032: 0x8B74, - 46437 - 44032: 0x8B75, - 46438 - 44032: 0x8B76, - 46439 - 44032: 0x8B77, - 46440 - 44032: 0x8B78, - 46441 - 44032: 0x8B79, - 46442 - 44032: 0x8B7A, - 46443 - 44032: 0x8B81, - 46444 - 44032: 0x8B82, - 46445 - 44032: 0x8B83, - 46446 - 44032: 0x8B84, - 46447 - 44032: 0x8B85, - 46448 - 44032: 0x8B86, - 46449 - 44032: 0x8B87, - 46450 - 44032: 0x8B88, - 46451 - 44032: 0x8B89, - 46452 - 44032: 0x8B8A, - 46453 - 44032: 0x8B8B, - 46454 - 44032: 0x8B8C, - 46455 - 44032: 0x8B8D, - 46456 - 44032: 0x8B8E, - 46457 - 44032: 0x8B8F, - 46458 - 44032: 0x8B90, - 46459 - 44032: 0x8B91, - 46460 - 44032: 0x8B92, - 46461 - 44032: 0x8B93, - 46462 - 44032: 0x8B94, - 46463 - 44032: 0x8B95, - 46464 - 44032: 0x8B96, - 46465 - 44032: 0x8B97, - 46466 - 44032: 0x8B98, - 46467 - 44032: 0x8B99, - 46468 - 44032: 0x8B9A, - 46469 - 44032: 0x8B9B, - 46470 - 44032: 0x8B9C, - 46471 - 44032: 0x8B9D, - 46472 - 44032: 0x8B9E, - 46473 - 44032: 0x8B9F, - 46474 - 44032: 0x8BA0, - 46475 - 44032: 0x8BA1, - 46476 - 44032: 0x8BA2, - 46477 - 44032: 0x8BA3, - 46478 - 44032: 0x8BA4, - 46479 - 44032: 0x8BA5, - 46480 - 44032: 0x8BA6, - 46481 - 44032: 0x8BA7, - 46482 - 44032: 0x8BA8, - 46483 - 44032: 0x8BA9, - 46484 - 44032: 0x8BAA, - 46485 - 44032: 0x8BAB, - 46486 - 44032: 0x8BAC, - 46487 - 44032: 0x8BAD, - 46488 - 44032: 0x8BAE, - 46489 - 44032: 0x8BAF, - 46490 - 44032: 0x8BB0, - 46491 - 44032: 0x8BB1, - 46492 - 44032: 0x8BB2, - 46493 - 44032: 0x8BB3, - 46494 - 44032: 0x8BB4, - 46495 - 44032: 0x8BB5, - 46496 - 44032: 0xB6B0, - 46497 - 44032: 0xB6B1, - 46498 - 44032: 0x8BB6, - 46499 - 44032: 0x8BB7, - 46500 - 44032: 0xB6B2, - 46501 - 44032: 0x8BB8, - 46502 - 44032: 0x8BB9, - 46503 - 44032: 0x8BBA, - 46504 - 44032: 0xB6B3, - 46505 - 44032: 0x8BBB, - 46506 - 44032: 0xB6B4, - 46507 - 44032: 0xB6B5, - 46508 - 44032: 0x8BBC, - 46509 - 44032: 0x8BBD, - 46510 - 44032: 0x8BBE, - 46511 - 44032: 0x8BBF, - 46512 - 44032: 0xB6B6, - 46513 - 44032: 0xB6B7, - 46514 - 44032: 0x8BC0, - 46515 - 44032: 0xB6B8, - 46516 - 44032: 0xB6B9, - 46517 - 44032: 0xB6BA, - 46518 - 44032: 0x8BC1, - 46519 - 44032: 0x8BC2, - 46520 - 44032: 0x8BC3, - 46521 - 44032: 0x8BC4, - 46522 - 44032: 0x8BC5, - 46523 - 44032: 0xB6BB, - 46524 - 44032: 0xB6BC, - 46525 - 44032: 0xB6BD, - 46526 - 44032: 0x8BC6, - 46527 - 44032: 0x8BC7, - 46528 - 44032: 0xB6BE, - 46529 - 44032: 0x8BC8, - 46530 - 44032: 0x8BC9, - 46531 - 44032: 0x8BCA, - 46532 - 44032: 0xB6BF, - 46533 - 44032: 0x8BCB, - 46534 - 44032: 0x8BCC, - 46535 - 44032: 0x8BCD, - 46536 - 44032: 0x8BCE, - 46537 - 44032: 0x8BCF, - 46538 - 44032: 0x8BD0, - 46539 - 44032: 0x8BD1, - 46540 - 44032: 0xB6C0, - 46541 - 44032: 0xB6C1, - 46542 - 44032: 0x8BD2, - 46543 - 44032: 0xB6C2, - 46544 - 44032: 0xB6C3, - 46545 - 44032: 0xB6C4, - 46546 - 44032: 0x8BD3, - 46547 - 44032: 0x8BD4, - 46548 - 44032: 0x8BD5, - 46549 - 44032: 0x8BD6, - 46550 - 44032: 0x8BD7, - 46551 - 44032: 0x8BD8, - 46552 - 44032: 0xB6C5, - 46553 - 44032: 0x8BD9, - 46554 - 44032: 0x8BDA, - 46555 - 44032: 0x8BDB, - 46556 - 44032: 0x8BDC, - 46557 - 44032: 0x8BDD, - 46558 - 44032: 0x8BDE, - 46559 - 44032: 0x8BDF, - 46560 - 44032: 0x8BE0, - 46561 - 44032: 0x8BE1, - 46562 - 44032: 0x8BE2, - 46563 - 44032: 0x8BE3, - 46564 - 44032: 0x8BE4, - 46565 - 44032: 0x8BE5, - 46566 - 44032: 0x8BE6, - 46567 - 44032: 0x8BE7, - 46568 - 44032: 0x8BE8, - 46569 - 44032: 0x8BE9, - 46570 - 44032: 0x8BEA, - 46571 - 44032: 0x8BEB, - 46572 - 44032: 0xB6C6, - 46573 - 44032: 0x8BEC, - 46574 - 44032: 0x8BED, - 46575 - 44032: 0x8BEE, - 46576 - 44032: 0x8BEF, - 46577 - 44032: 0x8BF0, - 46578 - 44032: 0x8BF1, - 46579 - 44032: 0x8BF2, - 46580 - 44032: 0x8BF3, - 46581 - 44032: 0x8BF4, - 46582 - 44032: 0x8BF5, - 46583 - 44032: 0x8BF6, - 46584 - 44032: 0x8BF7, - 46585 - 44032: 0x8BF8, - 46586 - 44032: 0x8BF9, - 46587 - 44032: 0x8BFA, - 46588 - 44032: 0x8BFB, - 46589 - 44032: 0x8BFC, - 46590 - 44032: 0x8BFD, - 46591 - 44032: 0x8BFE, - 46592 - 44032: 0x8C41, - 46593 - 44032: 0x8C42, - 46594 - 44032: 0x8C43, - 46595 - 44032: 0x8C44, - 46596 - 44032: 0x8C45, - 46597 - 44032: 0x8C46, - 46598 - 44032: 0x8C47, - 46599 - 44032: 0x8C48, - 46600 - 44032: 0x8C49, - 46601 - 44032: 0x8C4A, - 46602 - 44032: 0x8C4B, - 46603 - 44032: 0x8C4C, - 46604 - 44032: 0x8C4D, - 46605 - 44032: 0x8C4E, - 46606 - 44032: 0x8C4F, - 46607 - 44032: 0x8C50, - 46608 - 44032: 0xB6C7, - 46609 - 44032: 0xB6C8, - 46610 - 44032: 0x8C51, - 46611 - 44032: 0x8C52, - 46612 - 44032: 0xB6C9, - 46613 - 44032: 0x8C53, - 46614 - 44032: 0x8C54, - 46615 - 44032: 0x8C55, - 46616 - 44032: 0xB6CA, - 46617 - 44032: 0x8C56, - 46618 - 44032: 0x8C57, - 46619 - 44032: 0x8C58, - 46620 - 44032: 0x8C59, - 46621 - 44032: 0x8C5A, - 46622 - 44032: 0x8C61, - 46623 - 44032: 0x8C62, - 46624 - 44032: 0x8C63, - 46625 - 44032: 0x8C64, - 46626 - 44032: 0x8C65, - 46627 - 44032: 0x8C66, - 46628 - 44032: 0x8C67, - 46629 - 44032: 0xB6CB, - 46630 - 44032: 0x8C68, - 46631 - 44032: 0x8C69, - 46632 - 44032: 0x8C6A, - 46633 - 44032: 0x8C6B, - 46634 - 44032: 0x8C6C, - 46635 - 44032: 0x8C6D, - 46636 - 44032: 0xB6CC, - 46637 - 44032: 0x8C6E, - 46638 - 44032: 0x8C6F, - 46639 - 44032: 0x8C70, - 46640 - 44032: 0x8C71, - 46641 - 44032: 0x8C72, - 46642 - 44032: 0x8C73, - 46643 - 44032: 0x8C74, - 46644 - 44032: 0xB6CD, - 46645 - 44032: 0x8C75, - 46646 - 44032: 0x8C76, - 46647 - 44032: 0x8C77, - 46648 - 44032: 0x8C78, - 46649 - 44032: 0x8C79, - 46650 - 44032: 0x8C7A, - 46651 - 44032: 0x8C81, - 46652 - 44032: 0x8C82, - 46653 - 44032: 0x8C83, - 46654 - 44032: 0x8C84, - 46655 - 44032: 0x8C85, - 46656 - 44032: 0x8C86, - 46657 - 44032: 0x8C87, - 46658 - 44032: 0x8C88, - 46659 - 44032: 0x8C89, - 46660 - 44032: 0x8C8A, - 46661 - 44032: 0x8C8B, - 46662 - 44032: 0x8C8C, - 46663 - 44032: 0x8C8D, - 46664 - 44032: 0xB6CE, - 46665 - 44032: 0x8C8E, - 46666 - 44032: 0x8C8F, - 46667 - 44032: 0x8C90, - 46668 - 44032: 0x8C91, - 46669 - 44032: 0x8C92, - 46670 - 44032: 0x8C93, - 46671 - 44032: 0x8C94, - 46672 - 44032: 0x8C95, - 46673 - 44032: 0x8C96, - 46674 - 44032: 0x8C97, - 46675 - 44032: 0x8C98, - 46676 - 44032: 0x8C99, - 46677 - 44032: 0x8C9A, - 46678 - 44032: 0x8C9B, - 46679 - 44032: 0x8C9C, - 46680 - 44032: 0x8C9D, - 46681 - 44032: 0x8C9E, - 46682 - 44032: 0x8C9F, - 46683 - 44032: 0x8CA0, - 46684 - 44032: 0x8CA1, - 46685 - 44032: 0x8CA2, - 46686 - 44032: 0x8CA3, - 46687 - 44032: 0x8CA4, - 46688 - 44032: 0x8CA5, - 46689 - 44032: 0x8CA6, - 46690 - 44032: 0x8CA7, - 46691 - 44032: 0x8CA8, - 46692 - 44032: 0xB6CF, - 46693 - 44032: 0x8CA9, - 46694 - 44032: 0x8CAA, - 46695 - 44032: 0x8CAB, - 46696 - 44032: 0xB6D0, - 46697 - 44032: 0x8CAC, - 46698 - 44032: 0x8CAD, - 46699 - 44032: 0x8CAE, - 46700 - 44032: 0x8CAF, - 46701 - 44032: 0x8CB0, - 46702 - 44032: 0x8CB1, - 46703 - 44032: 0x8CB2, - 46704 - 44032: 0x8CB3, - 46705 - 44032: 0x8CB4, - 46706 - 44032: 0x8CB5, - 46707 - 44032: 0x8CB6, - 46708 - 44032: 0x8CB7, - 46709 - 44032: 0x8CB8, - 46710 - 44032: 0x8CB9, - 46711 - 44032: 0x8CBA, - 46712 - 44032: 0x8CBB, - 46713 - 44032: 0x8CBC, - 46714 - 44032: 0x8CBD, - 46715 - 44032: 0x8CBE, - 46716 - 44032: 0x8CBF, - 46717 - 44032: 0x8CC0, - 46718 - 44032: 0x8CC1, - 46719 - 44032: 0x8CC2, - 46720 - 44032: 0x8CC3, - 46721 - 44032: 0x8CC4, - 46722 - 44032: 0x8CC5, - 46723 - 44032: 0x8CC6, - 46724 - 44032: 0x8CC7, - 46725 - 44032: 0x8CC8, - 46726 - 44032: 0x8CC9, - 46727 - 44032: 0x8CCA, - 46728 - 44032: 0x8CCB, - 46729 - 44032: 0x8CCC, - 46730 - 44032: 0x8CCD, - 46731 - 44032: 0x8CCE, - 46732 - 44032: 0x8CCF, - 46733 - 44032: 0x8CD0, - 46734 - 44032: 0x8CD1, - 46735 - 44032: 0x8CD2, - 46736 - 44032: 0x8CD3, - 46737 - 44032: 0x8CD4, - 46738 - 44032: 0x8CD5, - 46739 - 44032: 0x8CD6, - 46740 - 44032: 0x8CD7, - 46741 - 44032: 0x8CD8, - 46742 - 44032: 0x8CD9, - 46743 - 44032: 0x8CDA, - 46744 - 44032: 0x8CDB, - 46745 - 44032: 0x8CDC, - 46746 - 44032: 0x8CDD, - 46747 - 44032: 0x8CDE, - 46748 - 44032: 0xB6D1, - 46749 - 44032: 0xB6D2, - 46750 - 44032: 0x8CDF, - 46751 - 44032: 0x8CE0, - 46752 - 44032: 0xB6D3, - 46753 - 44032: 0x8CE1, - 46754 - 44032: 0x8CE2, - 46755 - 44032: 0x8CE3, - 46756 - 44032: 0xB6D4, - 46757 - 44032: 0x8CE4, - 46758 - 44032: 0x8CE5, - 46759 - 44032: 0x8CE6, - 46760 - 44032: 0x8CE7, - 46761 - 44032: 0x8CE8, - 46762 - 44032: 0x8CE9, - 46763 - 44032: 0xB6D5, - 46764 - 44032: 0xB6D6, - 46765 - 44032: 0x8CEA, - 46766 - 44032: 0x8CEB, - 46767 - 44032: 0x8CEC, - 46768 - 44032: 0x8CED, - 46769 - 44032: 0xB6D7, - 46770 - 44032: 0x8CEE, - 46771 - 44032: 0x8CEF, - 46772 - 44032: 0x8CF0, - 46773 - 44032: 0x8CF1, - 46774 - 44032: 0x8CF2, - 46775 - 44032: 0x8CF3, - 46776 - 44032: 0x8CF4, - 46777 - 44032: 0x8CF5, - 46778 - 44032: 0x8CF6, - 46779 - 44032: 0x8CF7, - 46780 - 44032: 0x8CF8, - 46781 - 44032: 0x8CF9, - 46782 - 44032: 0x8CFA, - 46783 - 44032: 0x8CFB, - 46784 - 44032: 0x8CFC, - 46785 - 44032: 0x8CFD, - 46786 - 44032: 0x8CFE, - 46787 - 44032: 0x8D41, - 46788 - 44032: 0x8D42, - 46789 - 44032: 0x8D43, - 46790 - 44032: 0x8D44, - 46791 - 44032: 0x8D45, - 46792 - 44032: 0x8D46, - 46793 - 44032: 0x8D47, - 46794 - 44032: 0x8D48, - 46795 - 44032: 0x8D49, - 46796 - 44032: 0x8D4A, - 46797 - 44032: 0x8D4B, - 46798 - 44032: 0x8D4C, - 46799 - 44032: 0x8D4D, - 46800 - 44032: 0x8D4E, - 46801 - 44032: 0x8D4F, - 46802 - 44032: 0x8D50, - 46803 - 44032: 0x8D51, - 46804 - 44032: 0xB6D8, - 46805 - 44032: 0x8D52, - 46806 - 44032: 0x8D53, - 46807 - 44032: 0x8D54, - 46808 - 44032: 0x8D55, - 46809 - 44032: 0x8D56, - 46810 - 44032: 0x8D57, - 46811 - 44032: 0x8D58, - 46812 - 44032: 0x8D59, - 46813 - 44032: 0x8D5A, - 46814 - 44032: 0x8D61, - 46815 - 44032: 0x8D62, - 46816 - 44032: 0x8D63, - 46817 - 44032: 0x8D64, - 46818 - 44032: 0x8D65, - 46819 - 44032: 0x8D66, - 46820 - 44032: 0x8D67, - 46821 - 44032: 0x8D68, - 46822 - 44032: 0x8D69, - 46823 - 44032: 0x8D6A, - 46824 - 44032: 0x8D6B, - 46825 - 44032: 0x8D6C, - 46826 - 44032: 0x8D6D, - 46827 - 44032: 0x8D6E, - 46828 - 44032: 0x8D6F, - 46829 - 44032: 0x8D70, - 46830 - 44032: 0x8D71, - 46831 - 44032: 0x8D72, - 46832 - 44032: 0xB6D9, - 46833 - 44032: 0x8D73, - 46834 - 44032: 0x8D74, - 46835 - 44032: 0x8D75, - 46836 - 44032: 0xB6DA, - 46837 - 44032: 0x8D76, - 46838 - 44032: 0x8D77, - 46839 - 44032: 0x8D78, - 46840 - 44032: 0xB6DB, - 46841 - 44032: 0x8D79, - 46842 - 44032: 0x8D7A, - 46843 - 44032: 0x8D81, - 46844 - 44032: 0x8D82, - 46845 - 44032: 0x8D83, - 46846 - 44032: 0x8D84, - 46847 - 44032: 0x8D85, - 46848 - 44032: 0xB6DC, - 46849 - 44032: 0xB6DD, - 46850 - 44032: 0x8D86, - 46851 - 44032: 0x8D87, - 46852 - 44032: 0x8D88, - 46853 - 44032: 0xB6DE, - 46854 - 44032: 0x8D89, - 46855 - 44032: 0x8D8A, - 46856 - 44032: 0x8D8B, - 46857 - 44032: 0x8D8C, - 46858 - 44032: 0x8D8D, - 46859 - 44032: 0x8D8E, - 46860 - 44032: 0x8D8F, - 46861 - 44032: 0x8D90, - 46862 - 44032: 0x8D91, - 46863 - 44032: 0x8D92, - 46864 - 44032: 0x8D93, - 46865 - 44032: 0x8D94, - 46866 - 44032: 0x8D95, - 46867 - 44032: 0x8D96, - 46868 - 44032: 0x8D97, - 46869 - 44032: 0x8D98, - 46870 - 44032: 0x8D99, - 46871 - 44032: 0x8D9A, - 46872 - 44032: 0x8D9B, - 46873 - 44032: 0x8D9C, - 46874 - 44032: 0x8D9D, - 46875 - 44032: 0x8D9E, - 46876 - 44032: 0x8D9F, - 46877 - 44032: 0x8DA0, - 46878 - 44032: 0x8DA1, - 46879 - 44032: 0x8DA2, - 46880 - 44032: 0x8DA3, - 46881 - 44032: 0x8DA4, - 46882 - 44032: 0x8DA5, - 46883 - 44032: 0x8DA6, - 46884 - 44032: 0x8DA7, - 46885 - 44032: 0x8DA8, - 46886 - 44032: 0x8DA9, - 46887 - 44032: 0x8DAA, - 46888 - 44032: 0xB6DF, - 46889 - 44032: 0xB6E0, - 46890 - 44032: 0x8DAB, - 46891 - 44032: 0x8DAC, - 46892 - 44032: 0xB6E1, - 46893 - 44032: 0x8DAD, - 46894 - 44032: 0x8DAE, - 46895 - 44032: 0xB6E2, - 46896 - 44032: 0xB6E3, - 46897 - 44032: 0x8DAF, - 46898 - 44032: 0x8DB0, - 46899 - 44032: 0x8DB1, - 46900 - 44032: 0x8DB2, - 46901 - 44032: 0x8DB3, - 46902 - 44032: 0x8DB4, - 46903 - 44032: 0x8DB5, - 46904 - 44032: 0xB6E4, - 46905 - 44032: 0xB6E5, - 46906 - 44032: 0x8DB6, - 46907 - 44032: 0xB6E6, - 46908 - 44032: 0x8DB7, - 46909 - 44032: 0x8DB8, - 46910 - 44032: 0x8DB9, - 46911 - 44032: 0x8DBA, - 46912 - 44032: 0x8DBB, - 46913 - 44032: 0x8DBC, - 46914 - 44032: 0x8DBD, - 46915 - 44032: 0x8DBE, - 46916 - 44032: 0xB6E7, - 46917 - 44032: 0x8DBF, - 46918 - 44032: 0x8DC0, - 46919 - 44032: 0x8DC1, - 46920 - 44032: 0xB6E8, - 46921 - 44032: 0x8DC2, - 46922 - 44032: 0x8DC3, - 46923 - 44032: 0x8DC4, - 46924 - 44032: 0xB6E9, - 46925 - 44032: 0x8DC5, - 46926 - 44032: 0x8DC6, - 46927 - 44032: 0x8DC7, - 46928 - 44032: 0x8DC8, - 46929 - 44032: 0x8DC9, - 46930 - 44032: 0x8DCA, - 46931 - 44032: 0x8DCB, - 46932 - 44032: 0xB6EA, - 46933 - 44032: 0xB6EB, - 46934 - 44032: 0x8DCC, - 46935 - 44032: 0x8DCD, - 46936 - 44032: 0x8DCE, - 46937 - 44032: 0x8DCF, - 46938 - 44032: 0x8DD0, - 46939 - 44032: 0x8DD1, - 46940 - 44032: 0x8DD2, - 46941 - 44032: 0x8DD3, - 46942 - 44032: 0x8DD4, - 46943 - 44032: 0x8DD5, - 46944 - 44032: 0xB6EC, - 46945 - 44032: 0x8DD6, - 46946 - 44032: 0x8DD7, - 46947 - 44032: 0x8DD8, - 46948 - 44032: 0xB6ED, - 46949 - 44032: 0x8DD9, - 46950 - 44032: 0x8DDA, - 46951 - 44032: 0x8DDB, - 46952 - 44032: 0xB6EE, - 46953 - 44032: 0x8DDC, - 46954 - 44032: 0x8DDD, - 46955 - 44032: 0x8DDE, - 46956 - 44032: 0x8DDF, - 46957 - 44032: 0x8DE0, - 46958 - 44032: 0x8DE1, - 46959 - 44032: 0x8DE2, - 46960 - 44032: 0xB6EF, - 46961 - 44032: 0xB6F0, - 46962 - 44032: 0x8DE3, - 46963 - 44032: 0xB6F1, - 46964 - 44032: 0x8DE4, - 46965 - 44032: 0xB6F2, - 46966 - 44032: 0x8DE5, - 46967 - 44032: 0x8DE6, - 46968 - 44032: 0x8DE7, - 46969 - 44032: 0x8DE8, - 46970 - 44032: 0x8DE9, - 46971 - 44032: 0x8DEA, - 46972 - 44032: 0xB6F3, - 46973 - 44032: 0xB6F4, - 46974 - 44032: 0x8DEB, - 46975 - 44032: 0x8DEC, - 46976 - 44032: 0xB6F5, - 46977 - 44032: 0x8DED, - 46978 - 44032: 0x8DEE, - 46979 - 44032: 0x8DEF, - 46980 - 44032: 0xB6F6, - 46981 - 44032: 0x8DF0, - 46982 - 44032: 0x8DF1, - 46983 - 44032: 0x8DF2, - 46984 - 44032: 0x8DF3, - 46985 - 44032: 0x8DF4, - 46986 - 44032: 0x8DF5, - 46987 - 44032: 0x8DF6, - 46988 - 44032: 0xB6F7, - 46989 - 44032: 0xB6F8, - 46990 - 44032: 0x8DF7, - 46991 - 44032: 0xB6F9, - 46992 - 44032: 0xB6FA, - 46993 - 44032: 0xB6FB, - 46994 - 44032: 0xB6FC, - 46995 - 44032: 0x8DF8, - 46996 - 44032: 0x8DF9, - 46997 - 44032: 0x8DFA, - 46998 - 44032: 0xB6FD, - 46999 - 44032: 0xB6FE, - 47000 - 44032: 0xB7A1, - 47001 - 44032: 0xB7A2, - 47002 - 44032: 0x8DFB, - 47003 - 44032: 0x8DFC, - 47004 - 44032: 0xB7A3, - 47005 - 44032: 0x8DFD, - 47006 - 44032: 0x8DFE, - 47007 - 44032: 0x8E41, - 47008 - 44032: 0xB7A4, - 47009 - 44032: 0x8E42, - 47010 - 44032: 0x8E43, - 47011 - 44032: 0x8E44, - 47012 - 44032: 0x8E45, - 47013 - 44032: 0x8E46, - 47014 - 44032: 0x8E47, - 47015 - 44032: 0x8E48, - 47016 - 44032: 0xB7A5, - 47017 - 44032: 0xB7A6, - 47018 - 44032: 0x8E49, - 47019 - 44032: 0xB7A7, - 47020 - 44032: 0xB7A8, - 47021 - 44032: 0xB7A9, - 47022 - 44032: 0x8E4A, - 47023 - 44032: 0x8E4B, - 47024 - 44032: 0x8E4C, - 47025 - 44032: 0x8E4D, - 47026 - 44032: 0x8E4E, - 47027 - 44032: 0x8E4F, - 47028 - 44032: 0xB7AA, - 47029 - 44032: 0xB7AB, - 47030 - 44032: 0x8E50, - 47031 - 44032: 0x8E51, - 47032 - 44032: 0xB7AC, - 47033 - 44032: 0x8E52, - 47034 - 44032: 0x8E53, - 47035 - 44032: 0x8E54, - 47036 - 44032: 0x8E55, - 47037 - 44032: 0x8E56, - 47038 - 44032: 0x8E57, - 47039 - 44032: 0x8E58, - 47040 - 44032: 0x8E59, - 47041 - 44032: 0x8E5A, - 47042 - 44032: 0x8E61, - 47043 - 44032: 0x8E62, - 47044 - 44032: 0x8E63, - 47045 - 44032: 0x8E64, - 47046 - 44032: 0x8E65, - 47047 - 44032: 0xB7AD, - 47048 - 44032: 0x8E66, - 47049 - 44032: 0xB7AE, - 47050 - 44032: 0x8E67, - 47051 - 44032: 0x8E68, - 47052 - 44032: 0x8E69, - 47053 - 44032: 0x8E6A, - 47054 - 44032: 0x8E6B, - 47055 - 44032: 0x8E6C, - 47056 - 44032: 0x8E6D, - 47057 - 44032: 0x8E6E, - 47058 - 44032: 0x8E6F, - 47059 - 44032: 0x8E70, - 47060 - 44032: 0x8E71, - 47061 - 44032: 0x8E72, - 47062 - 44032: 0x8E73, - 47063 - 44032: 0x8E74, - 47064 - 44032: 0x8E75, - 47065 - 44032: 0x8E76, - 47066 - 44032: 0x8E77, - 47067 - 44032: 0x8E78, - 47068 - 44032: 0x8E79, - 47069 - 44032: 0x8E7A, - 47070 - 44032: 0x8E81, - 47071 - 44032: 0x8E82, - 47072 - 44032: 0x8E83, - 47073 - 44032: 0x8E84, - 47074 - 44032: 0x8E85, - 47075 - 44032: 0x8E86, - 47076 - 44032: 0x8E87, - 47077 - 44032: 0x8E88, - 47078 - 44032: 0x8E89, - 47079 - 44032: 0x8E8A, - 47080 - 44032: 0x8E8B, - 47081 - 44032: 0x8E8C, - 47082 - 44032: 0x8E8D, - 47083 - 44032: 0x8E8E, - 47084 - 44032: 0xB7AF, - 47085 - 44032: 0xB7B0, - 47086 - 44032: 0x8E8F, - 47087 - 44032: 0x8E90, - 47088 - 44032: 0xB7B1, - 47089 - 44032: 0x8E91, - 47090 - 44032: 0x8E92, - 47091 - 44032: 0x8E93, - 47092 - 44032: 0xB7B2, - 47093 - 44032: 0x8E94, - 47094 - 44032: 0x8E95, - 47095 - 44032: 0x8E96, - 47096 - 44032: 0x8E97, - 47097 - 44032: 0x8E98, - 47098 - 44032: 0x8E99, - 47099 - 44032: 0x8E9A, - 47100 - 44032: 0xB7B3, - 47101 - 44032: 0xB7B4, - 47102 - 44032: 0x8E9B, - 47103 - 44032: 0xB7B5, - 47104 - 44032: 0xB7B6, - 47105 - 44032: 0xB7B7, - 47106 - 44032: 0x8E9C, - 47107 - 44032: 0x8E9D, - 47108 - 44032: 0x8E9E, - 47109 - 44032: 0x8E9F, - 47110 - 44032: 0x8EA0, - 47111 - 44032: 0xB7B8, - 47112 - 44032: 0xB7B9, - 47113 - 44032: 0xB7BA, - 47114 - 44032: 0x8EA1, - 47115 - 44032: 0x8EA2, - 47116 - 44032: 0xB7BB, - 47117 - 44032: 0x8EA3, - 47118 - 44032: 0x8EA4, - 47119 - 44032: 0x8EA5, - 47120 - 44032: 0xB7BC, - 47121 - 44032: 0x8EA6, - 47122 - 44032: 0x8EA7, - 47123 - 44032: 0x8EA8, - 47124 - 44032: 0x8EA9, - 47125 - 44032: 0x8EAA, - 47126 - 44032: 0x8EAB, - 47127 - 44032: 0x8EAC, - 47128 - 44032: 0xB7BD, - 47129 - 44032: 0xB7BE, - 47130 - 44032: 0x8EAD, - 47131 - 44032: 0xB7BF, - 47132 - 44032: 0x8EAE, - 47133 - 44032: 0xB7C0, - 47134 - 44032: 0x8EAF, - 47135 - 44032: 0x8EB0, - 47136 - 44032: 0x8EB1, - 47137 - 44032: 0x8EB2, - 47138 - 44032: 0x8EB3, - 47139 - 44032: 0x8EB4, - 47140 - 44032: 0xB7C1, - 47141 - 44032: 0xB7C2, - 47142 - 44032: 0x8EB5, - 47143 - 44032: 0x8EB6, - 47144 - 44032: 0xB7C3, - 47145 - 44032: 0x8EB7, - 47146 - 44032: 0x8EB8, - 47147 - 44032: 0x8EB9, - 47148 - 44032: 0xB7C4, - 47149 - 44032: 0x8EBA, - 47150 - 44032: 0x8EBB, - 47151 - 44032: 0x8EBC, - 47152 - 44032: 0x8EBD, - 47153 - 44032: 0x8EBE, - 47154 - 44032: 0x8EBF, - 47155 - 44032: 0x8EC0, - 47156 - 44032: 0xB7C5, - 47157 - 44032: 0xB7C6, - 47158 - 44032: 0x8EC1, - 47159 - 44032: 0xB7C7, - 47160 - 44032: 0xB7C8, - 47161 - 44032: 0xB7C9, - 47162 - 44032: 0x8EC2, - 47163 - 44032: 0x8EC3, - 47164 - 44032: 0x8EC4, - 47165 - 44032: 0x8EC5, - 47166 - 44032: 0x8EC6, - 47167 - 44032: 0x8EC7, - 47168 - 44032: 0xB7CA, - 47169 - 44032: 0x8EC8, - 47170 - 44032: 0x8EC9, - 47171 - 44032: 0x8ECA, - 47172 - 44032: 0xB7CB, - 47173 - 44032: 0x8ECB, - 47174 - 44032: 0x8ECC, - 47175 - 44032: 0x8ECD, - 47176 - 44032: 0x8ECE, - 47177 - 44032: 0x8ECF, - 47178 - 44032: 0x8ED0, - 47179 - 44032: 0x8ED1, - 47180 - 44032: 0x8ED2, - 47181 - 44032: 0x8ED3, - 47182 - 44032: 0x8ED4, - 47183 - 44032: 0x8ED5, - 47184 - 44032: 0x8ED6, - 47185 - 44032: 0xB7CC, - 47186 - 44032: 0x8ED7, - 47187 - 44032: 0xB7CD, - 47188 - 44032: 0x8ED8, - 47189 - 44032: 0x8ED9, - 47190 - 44032: 0x8EDA, - 47191 - 44032: 0x8EDB, - 47192 - 44032: 0x8EDC, - 47193 - 44032: 0x8EDD, - 47194 - 44032: 0x8EDE, - 47195 - 44032: 0x8EDF, - 47196 - 44032: 0xB7CE, - 47197 - 44032: 0xB7CF, - 47198 - 44032: 0x8EE0, - 47199 - 44032: 0x8EE1, - 47200 - 44032: 0xB7D0, - 47201 - 44032: 0x8EE2, - 47202 - 44032: 0x8EE3, - 47203 - 44032: 0x8EE4, - 47204 - 44032: 0xB7D1, - 47205 - 44032: 0x8EE5, - 47206 - 44032: 0x8EE6, - 47207 - 44032: 0x8EE7, - 47208 - 44032: 0x8EE8, - 47209 - 44032: 0x8EE9, - 47210 - 44032: 0x8EEA, - 47211 - 44032: 0x8EEB, - 47212 - 44032: 0xB7D2, - 47213 - 44032: 0xB7D3, - 47214 - 44032: 0x8EEC, - 47215 - 44032: 0xB7D4, - 47216 - 44032: 0x8EED, - 47217 - 44032: 0xB7D5, - 47218 - 44032: 0x8EEE, - 47219 - 44032: 0x8EEF, - 47220 - 44032: 0x8EF0, - 47221 - 44032: 0x8EF1, - 47222 - 44032: 0x8EF2, - 47223 - 44032: 0x8EF3, - 47224 - 44032: 0xB7D6, - 47225 - 44032: 0x8EF4, - 47226 - 44032: 0x8EF5, - 47227 - 44032: 0x8EF6, - 47228 - 44032: 0xB7D7, - 47229 - 44032: 0x8EF7, - 47230 - 44032: 0x8EF8, - 47231 - 44032: 0x8EF9, - 47232 - 44032: 0x8EFA, - 47233 - 44032: 0x8EFB, - 47234 - 44032: 0x8EFC, - 47235 - 44032: 0x8EFD, - 47236 - 44032: 0x8EFE, - 47237 - 44032: 0x8F41, - 47238 - 44032: 0x8F42, - 47239 - 44032: 0x8F43, - 47240 - 44032: 0x8F44, - 47241 - 44032: 0x8F45, - 47242 - 44032: 0x8F46, - 47243 - 44032: 0x8F47, - 47244 - 44032: 0x8F48, - 47245 - 44032: 0xB7D8, - 47246 - 44032: 0x8F49, - 47247 - 44032: 0x8F4A, - 47248 - 44032: 0x8F4B, - 47249 - 44032: 0x8F4C, - 47250 - 44032: 0x8F4D, - 47251 - 44032: 0x8F4E, - 47252 - 44032: 0x8F4F, - 47253 - 44032: 0x8F50, - 47254 - 44032: 0x8F51, - 47255 - 44032: 0x8F52, - 47256 - 44032: 0x8F53, - 47257 - 44032: 0x8F54, - 47258 - 44032: 0x8F55, - 47259 - 44032: 0x8F56, - 47260 - 44032: 0x8F57, - 47261 - 44032: 0x8F58, - 47262 - 44032: 0x8F59, - 47263 - 44032: 0x8F5A, - 47264 - 44032: 0x8F61, - 47265 - 44032: 0x8F62, - 47266 - 44032: 0x8F63, - 47267 - 44032: 0x8F64, - 47268 - 44032: 0x8F65, - 47269 - 44032: 0x8F66, - 47270 - 44032: 0x8F67, - 47271 - 44032: 0x8F68, - 47272 - 44032: 0xB7D9, - 47273 - 44032: 0x8F69, - 47274 - 44032: 0x8F6A, - 47275 - 44032: 0x8F6B, - 47276 - 44032: 0x8F6C, - 47277 - 44032: 0x8F6D, - 47278 - 44032: 0x8F6E, - 47279 - 44032: 0x8F6F, - 47280 - 44032: 0xB7DA, - 47281 - 44032: 0x8F70, - 47282 - 44032: 0x8F71, - 47283 - 44032: 0x8F72, - 47284 - 44032: 0xB7DB, - 47285 - 44032: 0x8F73, - 47286 - 44032: 0x8F74, - 47287 - 44032: 0x8F75, - 47288 - 44032: 0xB7DC, - 47289 - 44032: 0x8F76, - 47290 - 44032: 0x8F77, - 47291 - 44032: 0x8F78, - 47292 - 44032: 0x8F79, - 47293 - 44032: 0x8F7A, - 47294 - 44032: 0x8F81, - 47295 - 44032: 0x8F82, - 47296 - 44032: 0xB7DD, - 47297 - 44032: 0xB7DE, - 47298 - 44032: 0x8F83, - 47299 - 44032: 0xB7DF, - 47300 - 44032: 0x8F84, - 47301 - 44032: 0xB7E0, - 47302 - 44032: 0x8F85, - 47303 - 44032: 0x8F86, - 47304 - 44032: 0x8F87, - 47305 - 44032: 0x8F88, - 47306 - 44032: 0x8F89, - 47307 - 44032: 0x8F8A, - 47308 - 44032: 0xB7E1, - 47309 - 44032: 0x8F8B, - 47310 - 44032: 0x8F8C, - 47311 - 44032: 0x8F8D, - 47312 - 44032: 0xB7E2, - 47313 - 44032: 0x8F8E, - 47314 - 44032: 0x8F8F, - 47315 - 44032: 0x8F90, - 47316 - 44032: 0xB7E3, - 47317 - 44032: 0x8F91, - 47318 - 44032: 0x8F92, - 47319 - 44032: 0x8F93, - 47320 - 44032: 0x8F94, - 47321 - 44032: 0x8F95, - 47322 - 44032: 0x8F96, - 47323 - 44032: 0x8F97, - 47324 - 44032: 0x8F98, - 47325 - 44032: 0xB7E4, - 47326 - 44032: 0x8F99, - 47327 - 44032: 0xB7E5, - 47328 - 44032: 0x8F9A, - 47329 - 44032: 0xB7E6, - 47330 - 44032: 0x8F9B, - 47331 - 44032: 0x8F9C, - 47332 - 44032: 0x8F9D, - 47333 - 44032: 0x8F9E, - 47334 - 44032: 0x8F9F, - 47335 - 44032: 0x8FA0, - 47336 - 44032: 0xB7E7, - 47337 - 44032: 0xB7E8, - 47338 - 44032: 0x8FA1, - 47339 - 44032: 0x8FA2, - 47340 - 44032: 0xB7E9, - 47341 - 44032: 0x8FA3, - 47342 - 44032: 0x8FA4, - 47343 - 44032: 0x8FA5, - 47344 - 44032: 0xB7EA, - 47345 - 44032: 0x8FA6, - 47346 - 44032: 0x8FA7, - 47347 - 44032: 0x8FA8, - 47348 - 44032: 0x8FA9, - 47349 - 44032: 0x8FAA, - 47350 - 44032: 0x8FAB, - 47351 - 44032: 0x8FAC, - 47352 - 44032: 0xB7EB, - 47353 - 44032: 0xB7EC, - 47354 - 44032: 0x8FAD, - 47355 - 44032: 0xB7ED, - 47356 - 44032: 0x8FAE, - 47357 - 44032: 0xB7EE, - 47358 - 44032: 0x8FAF, - 47359 - 44032: 0x8FB0, - 47360 - 44032: 0x8FB1, - 47361 - 44032: 0x8FB2, - 47362 - 44032: 0x8FB3, - 47363 - 44032: 0x8FB4, - 47364 - 44032: 0xB7EF, - 47365 - 44032: 0x8FB5, - 47366 - 44032: 0x8FB6, - 47367 - 44032: 0x8FB7, - 47368 - 44032: 0x8FB8, - 47369 - 44032: 0x8FB9, - 47370 - 44032: 0x8FBA, - 47371 - 44032: 0x8FBB, - 47372 - 44032: 0x8FBC, - 47373 - 44032: 0x8FBD, - 47374 - 44032: 0x8FBE, - 47375 - 44032: 0x8FBF, - 47376 - 44032: 0x8FC0, - 47377 - 44032: 0x8FC1, - 47378 - 44032: 0x8FC2, - 47379 - 44032: 0x8FC3, - 47380 - 44032: 0x8FC4, - 47381 - 44032: 0x8FC5, - 47382 - 44032: 0x8FC6, - 47383 - 44032: 0x8FC7, - 47384 - 44032: 0xB7F0, - 47385 - 44032: 0x8FC8, - 47386 - 44032: 0x8FC9, - 47387 - 44032: 0x8FCA, - 47388 - 44032: 0x8FCB, - 47389 - 44032: 0x8FCC, - 47390 - 44032: 0x8FCD, - 47391 - 44032: 0x8FCE, - 47392 - 44032: 0xB7F1, - 47393 - 44032: 0x8FCF, - 47394 - 44032: 0x8FD0, - 47395 - 44032: 0x8FD1, - 47396 - 44032: 0x8FD2, - 47397 - 44032: 0x8FD3, - 47398 - 44032: 0x8FD4, - 47399 - 44032: 0x8FD5, - 47400 - 44032: 0x8FD6, - 47401 - 44032: 0x8FD7, - 47402 - 44032: 0x8FD8, - 47403 - 44032: 0x8FD9, - 47404 - 44032: 0x8FDA, - 47405 - 44032: 0x8FDB, - 47406 - 44032: 0x8FDC, - 47407 - 44032: 0x8FDD, - 47408 - 44032: 0x8FDE, - 47409 - 44032: 0x8FDF, - 47410 - 44032: 0x8FE0, - 47411 - 44032: 0x8FE1, - 47412 - 44032: 0x8FE2, - 47413 - 44032: 0x8FE3, - 47414 - 44032: 0x8FE4, - 47415 - 44032: 0x8FE5, - 47416 - 44032: 0x8FE6, - 47417 - 44032: 0x8FE7, - 47418 - 44032: 0x8FE8, - 47419 - 44032: 0x8FE9, - 47420 - 44032: 0xB7F2, - 47421 - 44032: 0xB7F3, - 47422 - 44032: 0x8FEA, - 47423 - 44032: 0x8FEB, - 47424 - 44032: 0xB7F4, - 47425 - 44032: 0x8FEC, - 47426 - 44032: 0x8FED, - 47427 - 44032: 0x8FEE, - 47428 - 44032: 0xB7F5, - 47429 - 44032: 0x8FEF, - 47430 - 44032: 0x8FF0, - 47431 - 44032: 0x8FF1, - 47432 - 44032: 0x8FF2, - 47433 - 44032: 0x8FF3, - 47434 - 44032: 0x8FF4, - 47435 - 44032: 0x8FF5, - 47436 - 44032: 0xB7F6, - 47437 - 44032: 0x8FF6, - 47438 - 44032: 0x8FF7, - 47439 - 44032: 0xB7F7, - 47440 - 44032: 0x8FF8, - 47441 - 44032: 0xB7F8, - 47442 - 44032: 0x8FF9, - 47443 - 44032: 0x8FFA, - 47444 - 44032: 0x8FFB, - 47445 - 44032: 0x8FFC, - 47446 - 44032: 0x8FFD, - 47447 - 44032: 0x8FFE, - 47448 - 44032: 0xB7F9, - 47449 - 44032: 0xB7FA, - 47450 - 44032: 0x9041, - 47451 - 44032: 0x9042, - 47452 - 44032: 0xB7FB, - 47453 - 44032: 0x9043, - 47454 - 44032: 0x9044, - 47455 - 44032: 0x9045, - 47456 - 44032: 0xB7FC, - 47457 - 44032: 0x9046, - 47458 - 44032: 0x9047, - 47459 - 44032: 0x9048, - 47460 - 44032: 0x9049, - 47461 - 44032: 0x904A, - 47462 - 44032: 0x904B, - 47463 - 44032: 0x904C, - 47464 - 44032: 0xB7FD, - 47465 - 44032: 0xB7FE, - 47466 - 44032: 0x904D, - 47467 - 44032: 0xB8A1, - 47468 - 44032: 0x904E, - 47469 - 44032: 0xB8A2, - 47470 - 44032: 0x904F, - 47471 - 44032: 0x9050, - 47472 - 44032: 0x9051, - 47473 - 44032: 0x9052, - 47474 - 44032: 0x9053, - 47475 - 44032: 0x9054, - 47476 - 44032: 0xB8A3, - 47477 - 44032: 0xB8A4, - 47478 - 44032: 0x9055, - 47479 - 44032: 0x9056, - 47480 - 44032: 0xB8A5, - 47481 - 44032: 0x9057, - 47482 - 44032: 0x9058, - 47483 - 44032: 0x9059, - 47484 - 44032: 0xB8A6, - 47485 - 44032: 0x905A, - 47486 - 44032: 0x9061, - 47487 - 44032: 0x9062, - 47488 - 44032: 0x9063, - 47489 - 44032: 0x9064, - 47490 - 44032: 0x9065, - 47491 - 44032: 0x9066, - 47492 - 44032: 0xB8A7, - 47493 - 44032: 0xB8A8, - 47494 - 44032: 0x9067, - 47495 - 44032: 0xB8A9, - 47496 - 44032: 0x9068, - 47497 - 44032: 0xB8AA, - 47498 - 44032: 0xB8AB, - 47499 - 44032: 0x9069, - 47500 - 44032: 0x906A, - 47501 - 44032: 0xB8AC, - 47502 - 44032: 0xB8AD, - 47503 - 44032: 0x906B, - 47504 - 44032: 0x906C, - 47505 - 44032: 0x906D, - 47506 - 44032: 0x906E, - 47507 - 44032: 0x906F, - 47508 - 44032: 0x9070, - 47509 - 44032: 0x9071, - 47510 - 44032: 0x9072, - 47511 - 44032: 0x9073, - 47512 - 44032: 0x9074, - 47513 - 44032: 0x9075, - 47514 - 44032: 0x9076, - 47515 - 44032: 0x9077, - 47516 - 44032: 0x9078, - 47517 - 44032: 0x9079, - 47518 - 44032: 0x907A, - 47519 - 44032: 0x9081, - 47520 - 44032: 0x9082, - 47521 - 44032: 0x9083, - 47522 - 44032: 0x9084, - 47523 - 44032: 0x9085, - 47524 - 44032: 0x9086, - 47525 - 44032: 0x9087, - 47526 - 44032: 0x9088, - 47527 - 44032: 0x9089, - 47528 - 44032: 0x908A, - 47529 - 44032: 0x908B, - 47530 - 44032: 0x908C, - 47531 - 44032: 0x908D, - 47532 - 44032: 0xB8AE, - 47533 - 44032: 0xB8AF, - 47534 - 44032: 0x908E, - 47535 - 44032: 0x908F, - 47536 - 44032: 0xB8B0, - 47537 - 44032: 0x9090, - 47538 - 44032: 0x9091, - 47539 - 44032: 0x9092, - 47540 - 44032: 0xB8B1, - 47541 - 44032: 0x9093, - 47542 - 44032: 0x9094, - 47543 - 44032: 0x9095, - 47544 - 44032: 0x9096, - 47545 - 44032: 0x9097, - 47546 - 44032: 0x9098, - 47547 - 44032: 0x9099, - 47548 - 44032: 0xB8B2, - 47549 - 44032: 0xB8B3, - 47550 - 44032: 0x909A, - 47551 - 44032: 0xB8B4, - 47552 - 44032: 0x909B, - 47553 - 44032: 0xB8B5, - 47554 - 44032: 0x909C, - 47555 - 44032: 0x909D, - 47556 - 44032: 0x909E, - 47557 - 44032: 0x909F, - 47558 - 44032: 0x90A0, - 47559 - 44032: 0x90A1, - 47560 - 44032: 0xB8B6, - 47561 - 44032: 0xB8B7, - 47562 - 44032: 0x90A2, - 47563 - 44032: 0x90A3, - 47564 - 44032: 0xB8B8, - 47565 - 44032: 0x90A4, - 47566 - 44032: 0xB8B9, - 47567 - 44032: 0xB8BA, - 47568 - 44032: 0xB8BB, - 47569 - 44032: 0xB8BC, - 47570 - 44032: 0xB8BD, - 47571 - 44032: 0x90A5, - 47572 - 44032: 0x90A6, - 47573 - 44032: 0x90A7, - 47574 - 44032: 0x90A8, - 47575 - 44032: 0x90A9, - 47576 - 44032: 0xB8BE, - 47577 - 44032: 0xB8BF, - 47578 - 44032: 0x90AA, - 47579 - 44032: 0xB8C0, - 47580 - 44032: 0x90AB, - 47581 - 44032: 0xB8C1, - 47582 - 44032: 0xB8C2, - 47583 - 44032: 0x90AC, - 47584 - 44032: 0x90AD, - 47585 - 44032: 0xB8C3, - 47586 - 44032: 0x90AE, - 47587 - 44032: 0xB8C4, - 47588 - 44032: 0xB8C5, - 47589 - 44032: 0xB8C6, - 47590 - 44032: 0x90AF, - 47591 - 44032: 0x90B0, - 47592 - 44032: 0xB8C7, - 47593 - 44032: 0x90B1, - 47594 - 44032: 0x90B2, - 47595 - 44032: 0x90B3, - 47596 - 44032: 0xB8C8, - 47597 - 44032: 0x90B4, - 47598 - 44032: 0x90B5, - 47599 - 44032: 0x90B6, - 47600 - 44032: 0x90B7, - 47601 - 44032: 0x90B8, - 47602 - 44032: 0x90B9, - 47603 - 44032: 0x90BA, - 47604 - 44032: 0xB8C9, - 47605 - 44032: 0xB8CA, - 47606 - 44032: 0x90BB, - 47607 - 44032: 0xB8CB, - 47608 - 44032: 0xB8CC, - 47609 - 44032: 0xB8CD, - 47610 - 44032: 0xB8CE, - 47611 - 44032: 0x90BC, - 47612 - 44032: 0x90BD, - 47613 - 44032: 0x90BE, - 47614 - 44032: 0x90BF, - 47615 - 44032: 0x90C0, - 47616 - 44032: 0xB8CF, - 47617 - 44032: 0xB8D0, - 47618 - 44032: 0x90C1, - 47619 - 44032: 0x90C2, - 47620 - 44032: 0x90C3, - 47621 - 44032: 0x90C4, - 47622 - 44032: 0x90C5, - 47623 - 44032: 0x90C6, - 47624 - 44032: 0xB8D1, - 47625 - 44032: 0x90C7, - 47626 - 44032: 0x90C8, - 47627 - 44032: 0x90C9, - 47628 - 44032: 0x90CA, - 47629 - 44032: 0x90CB, - 47630 - 44032: 0x90CC, - 47631 - 44032: 0x90CD, - 47632 - 44032: 0x90CE, - 47633 - 44032: 0x90CF, - 47634 - 44032: 0x90D0, - 47635 - 44032: 0x90D1, - 47636 - 44032: 0x90D2, - 47637 - 44032: 0xB8D2, - 47638 - 44032: 0x90D3, - 47639 - 44032: 0x90D4, - 47640 - 44032: 0x90D5, - 47641 - 44032: 0x90D6, - 47642 - 44032: 0x90D7, - 47643 - 44032: 0x90D8, - 47644 - 44032: 0x90D9, - 47645 - 44032: 0x90DA, - 47646 - 44032: 0x90DB, - 47647 - 44032: 0x90DC, - 47648 - 44032: 0x90DD, - 47649 - 44032: 0x90DE, - 47650 - 44032: 0x90DF, - 47651 - 44032: 0x90E0, - 47652 - 44032: 0x90E1, - 47653 - 44032: 0x90E2, - 47654 - 44032: 0x90E3, - 47655 - 44032: 0x90E4, - 47656 - 44032: 0x90E5, - 47657 - 44032: 0x90E6, - 47658 - 44032: 0x90E7, - 47659 - 44032: 0x90E8, - 47660 - 44032: 0x90E9, - 47661 - 44032: 0x90EA, - 47662 - 44032: 0x90EB, - 47663 - 44032: 0x90EC, - 47664 - 44032: 0x90ED, - 47665 - 44032: 0x90EE, - 47666 - 44032: 0x90EF, - 47667 - 44032: 0x90F0, - 47668 - 44032: 0x90F1, - 47669 - 44032: 0x90F2, - 47670 - 44032: 0x90F3, - 47671 - 44032: 0x90F4, - 47672 - 44032: 0xB8D3, - 47673 - 44032: 0xB8D4, - 47674 - 44032: 0x90F5, - 47675 - 44032: 0x90F6, - 47676 - 44032: 0xB8D5, - 47677 - 44032: 0x90F7, - 47678 - 44032: 0x90F8, - 47679 - 44032: 0x90F9, - 47680 - 44032: 0xB8D6, - 47681 - 44032: 0x90FA, - 47682 - 44032: 0xB8D7, - 47683 - 44032: 0x90FB, - 47684 - 44032: 0x90FC, - 47685 - 44032: 0x90FD, - 47686 - 44032: 0x90FE, - 47687 - 44032: 0x9141, - 47688 - 44032: 0xB8D8, - 47689 - 44032: 0xB8D9, - 47690 - 44032: 0x9142, - 47691 - 44032: 0xB8DA, - 47692 - 44032: 0x9143, - 47693 - 44032: 0xB8DB, - 47694 - 44032: 0xB8DC, - 47695 - 44032: 0x9144, - 47696 - 44032: 0x9145, - 47697 - 44032: 0x9146, - 47698 - 44032: 0x9147, - 47699 - 44032: 0xB8DD, - 47700 - 44032: 0xB8DE, - 47701 - 44032: 0xB8DF, - 47702 - 44032: 0x9148, - 47703 - 44032: 0x9149, - 47704 - 44032: 0xB8E0, - 47705 - 44032: 0x914A, - 47706 - 44032: 0x914B, - 47707 - 44032: 0x914C, - 47708 - 44032: 0xB8E1, - 47709 - 44032: 0x914D, - 47710 - 44032: 0x914E, - 47711 - 44032: 0x914F, - 47712 - 44032: 0x9150, - 47713 - 44032: 0x9151, - 47714 - 44032: 0x9152, - 47715 - 44032: 0x9153, - 47716 - 44032: 0xB8E2, - 47717 - 44032: 0xB8E3, - 47718 - 44032: 0x9154, - 47719 - 44032: 0xB8E4, - 47720 - 44032: 0xB8E5, - 47721 - 44032: 0xB8E6, - 47722 - 44032: 0x9155, - 47723 - 44032: 0x9156, - 47724 - 44032: 0x9157, - 47725 - 44032: 0x9158, - 47726 - 44032: 0x9159, - 47727 - 44032: 0x915A, - 47728 - 44032: 0xB8E7, - 47729 - 44032: 0xB8E8, - 47730 - 44032: 0x9161, - 47731 - 44032: 0x9162, - 47732 - 44032: 0xB8E9, - 47733 - 44032: 0x9163, - 47734 - 44032: 0x9164, - 47735 - 44032: 0x9165, - 47736 - 44032: 0xB8EA, - 47737 - 44032: 0x9166, - 47738 - 44032: 0x9167, - 47739 - 44032: 0x9168, - 47740 - 44032: 0x9169, - 47741 - 44032: 0x916A, - 47742 - 44032: 0x916B, - 47743 - 44032: 0x916C, - 47744 - 44032: 0x916D, - 47745 - 44032: 0x916E, - 47746 - 44032: 0x916F, - 47747 - 44032: 0xB8EB, - 47748 - 44032: 0xB8EC, - 47749 - 44032: 0xB8ED, - 47750 - 44032: 0x9170, - 47751 - 44032: 0xB8EE, - 47752 - 44032: 0x9171, - 47753 - 44032: 0x9172, - 47754 - 44032: 0x9173, - 47755 - 44032: 0x9174, - 47756 - 44032: 0xB8EF, - 47757 - 44032: 0x9175, - 47758 - 44032: 0x9176, - 47759 - 44032: 0x9177, - 47760 - 44032: 0x9178, - 47761 - 44032: 0x9179, - 47762 - 44032: 0x917A, - 47763 - 44032: 0x9181, - 47764 - 44032: 0x9182, - 47765 - 44032: 0x9183, - 47766 - 44032: 0x9184, - 47767 - 44032: 0x9185, - 47768 - 44032: 0x9186, - 47769 - 44032: 0x9187, - 47770 - 44032: 0x9188, - 47771 - 44032: 0x9189, - 47772 - 44032: 0x918A, - 47773 - 44032: 0x918B, - 47774 - 44032: 0x918C, - 47775 - 44032: 0x918D, - 47776 - 44032: 0x918E, - 47777 - 44032: 0x918F, - 47778 - 44032: 0x9190, - 47779 - 44032: 0x9191, - 47780 - 44032: 0x9192, - 47781 - 44032: 0x9193, - 47782 - 44032: 0x9194, - 47783 - 44032: 0x9195, - 47784 - 44032: 0xB8F0, - 47785 - 44032: 0xB8F1, - 47786 - 44032: 0x9196, - 47787 - 44032: 0xB8F2, - 47788 - 44032: 0xB8F3, - 47789 - 44032: 0x9197, - 47790 - 44032: 0x9198, - 47791 - 44032: 0x9199, - 47792 - 44032: 0xB8F4, - 47793 - 44032: 0x919A, - 47794 - 44032: 0xB8F5, - 47795 - 44032: 0x919B, - 47796 - 44032: 0x919C, - 47797 - 44032: 0x919D, - 47798 - 44032: 0x919E, - 47799 - 44032: 0x919F, - 47800 - 44032: 0xB8F6, - 47801 - 44032: 0xB8F7, - 47802 - 44032: 0x91A0, - 47803 - 44032: 0xB8F8, - 47804 - 44032: 0x91A1, - 47805 - 44032: 0xB8F9, - 47806 - 44032: 0x91A2, - 47807 - 44032: 0x91A3, - 47808 - 44032: 0x91A4, - 47809 - 44032: 0x91A5, - 47810 - 44032: 0x91A6, - 47811 - 44032: 0x91A7, - 47812 - 44032: 0xB8FA, - 47813 - 44032: 0x91A8, - 47814 - 44032: 0x91A9, - 47815 - 44032: 0x91AA, - 47816 - 44032: 0xB8FB, - 47817 - 44032: 0x91AB, - 47818 - 44032: 0x91AC, - 47819 - 44032: 0x91AD, - 47820 - 44032: 0x91AE, - 47821 - 44032: 0x91AF, - 47822 - 44032: 0x91B0, - 47823 - 44032: 0x91B1, - 47824 - 44032: 0x91B2, - 47825 - 44032: 0x91B3, - 47826 - 44032: 0x91B4, - 47827 - 44032: 0x91B5, - 47828 - 44032: 0x91B6, - 47829 - 44032: 0x91B7, - 47830 - 44032: 0x91B8, - 47831 - 44032: 0x91B9, - 47832 - 44032: 0xB8FC, - 47833 - 44032: 0xB8FD, - 47834 - 44032: 0x91BA, - 47835 - 44032: 0x91BB, - 47836 - 44032: 0x91BC, - 47837 - 44032: 0x91BD, - 47838 - 44032: 0x91BE, - 47839 - 44032: 0x91BF, - 47840 - 44032: 0x91C0, - 47841 - 44032: 0x91C1, - 47842 - 44032: 0x91C2, - 47843 - 44032: 0x91C3, - 47844 - 44032: 0x91C4, - 47845 - 44032: 0x91C5, - 47846 - 44032: 0x91C6, - 47847 - 44032: 0x91C7, - 47848 - 44032: 0x91C8, - 47849 - 44032: 0x91C9, - 47850 - 44032: 0x91CA, - 47851 - 44032: 0x91CB, - 47852 - 44032: 0x91CC, - 47853 - 44032: 0x91CD, - 47854 - 44032: 0x91CE, - 47855 - 44032: 0x91CF, - 47856 - 44032: 0x91D0, - 47857 - 44032: 0x91D1, - 47858 - 44032: 0x91D2, - 47859 - 44032: 0x91D3, - 47860 - 44032: 0x91D4, - 47861 - 44032: 0x91D5, - 47862 - 44032: 0x91D6, - 47863 - 44032: 0x91D7, - 47864 - 44032: 0x91D8, - 47865 - 44032: 0x91D9, - 47866 - 44032: 0x91DA, - 47867 - 44032: 0x91DB, - 47868 - 44032: 0xB8FE, - 47869 - 44032: 0x91DC, - 47870 - 44032: 0x91DD, - 47871 - 44032: 0x91DE, - 47872 - 44032: 0xB9A1, - 47873 - 44032: 0x91DF, - 47874 - 44032: 0x91E0, - 47875 - 44032: 0x91E1, - 47876 - 44032: 0xB9A2, - 47877 - 44032: 0x91E2, - 47878 - 44032: 0x91E3, - 47879 - 44032: 0x91E4, - 47880 - 44032: 0x91E5, - 47881 - 44032: 0x91E6, - 47882 - 44032: 0x91E7, - 47883 - 44032: 0x91E8, - 47884 - 44032: 0x91E9, - 47885 - 44032: 0xB9A3, - 47886 - 44032: 0x91EA, - 47887 - 44032: 0xB9A4, - 47888 - 44032: 0x91EB, - 47889 - 44032: 0xB9A5, - 47890 - 44032: 0x91EC, - 47891 - 44032: 0x91ED, - 47892 - 44032: 0x91EE, - 47893 - 44032: 0x91EF, - 47894 - 44032: 0x91F0, - 47895 - 44032: 0x91F1, - 47896 - 44032: 0xB9A6, - 47897 - 44032: 0x91F2, - 47898 - 44032: 0x91F3, - 47899 - 44032: 0x91F4, - 47900 - 44032: 0xB9A7, - 47901 - 44032: 0x91F5, - 47902 - 44032: 0x91F6, - 47903 - 44032: 0x91F7, - 47904 - 44032: 0xB9A8, - 47905 - 44032: 0x91F8, - 47906 - 44032: 0x91F9, - 47907 - 44032: 0x91FA, - 47908 - 44032: 0x91FB, - 47909 - 44032: 0x91FC, - 47910 - 44032: 0x91FD, - 47911 - 44032: 0x91FE, - 47912 - 44032: 0x9241, - 47913 - 44032: 0xB9A9, - 47914 - 44032: 0x9242, - 47915 - 44032: 0xB9AA, - 47916 - 44032: 0x9243, - 47917 - 44032: 0x9244, - 47918 - 44032: 0x9245, - 47919 - 44032: 0x9246, - 47920 - 44032: 0x9247, - 47921 - 44032: 0x9248, - 47922 - 44032: 0x9249, - 47923 - 44032: 0x924A, - 47924 - 44032: 0xB9AB, - 47925 - 44032: 0xB9AC, - 47926 - 44032: 0xB9AD, - 47927 - 44032: 0x924B, - 47928 - 44032: 0xB9AE, - 47929 - 44032: 0x924C, - 47930 - 44032: 0x924D, - 47931 - 44032: 0xB9AF, - 47932 - 44032: 0xB9B0, - 47933 - 44032: 0xB9B1, - 47934 - 44032: 0xB9B2, - 47935 - 44032: 0x924E, - 47936 - 44032: 0x924F, - 47937 - 44032: 0x9250, - 47938 - 44032: 0x9251, - 47939 - 44032: 0x9252, - 47940 - 44032: 0xB9B3, - 47941 - 44032: 0xB9B4, - 47942 - 44032: 0x9253, - 47943 - 44032: 0xB9B5, - 47944 - 44032: 0x9254, - 47945 - 44032: 0xB9B6, - 47946 - 44032: 0x9255, - 47947 - 44032: 0x9256, - 47948 - 44032: 0x9257, - 47949 - 44032: 0xB9B7, - 47950 - 44032: 0x9258, - 47951 - 44032: 0xB9B8, - 47952 - 44032: 0xB9B9, - 47953 - 44032: 0x9259, - 47954 - 44032: 0x925A, - 47955 - 44032: 0x9261, - 47956 - 44032: 0xB9BA, - 47957 - 44032: 0x9262, - 47958 - 44032: 0x9263, - 47959 - 44032: 0x9264, - 47960 - 44032: 0xB9BB, - 47961 - 44032: 0x9265, - 47962 - 44032: 0x9266, - 47963 - 44032: 0x9267, - 47964 - 44032: 0x9268, - 47965 - 44032: 0x9269, - 47966 - 44032: 0x926A, - 47967 - 44032: 0x926B, - 47968 - 44032: 0x926C, - 47969 - 44032: 0xB9BC, - 47970 - 44032: 0x926D, - 47971 - 44032: 0xB9BD, - 47972 - 44032: 0x926E, - 47973 - 44032: 0x926F, - 47974 - 44032: 0x9270, - 47975 - 44032: 0x9271, - 47976 - 44032: 0x9272, - 47977 - 44032: 0x9273, - 47978 - 44032: 0x9274, - 47979 - 44032: 0x9275, - 47980 - 44032: 0xB9BE, - 47981 - 44032: 0x9276, - 47982 - 44032: 0x9277, - 47983 - 44032: 0x9278, - 47984 - 44032: 0x9279, - 47985 - 44032: 0x927A, - 47986 - 44032: 0x9281, - 47987 - 44032: 0x9282, - 47988 - 44032: 0x9283, - 47989 - 44032: 0x9284, - 47990 - 44032: 0x9285, - 47991 - 44032: 0x9286, - 47992 - 44032: 0x9287, - 47993 - 44032: 0x9288, - 47994 - 44032: 0x9289, - 47995 - 44032: 0x928A, - 47996 - 44032: 0x928B, - 47997 - 44032: 0x928C, - 47998 - 44032: 0x928D, - 47999 - 44032: 0x928E, - 48000 - 44032: 0x928F, - 48001 - 44032: 0x9290, - 48002 - 44032: 0x9291, - 48003 - 44032: 0x9292, - 48004 - 44032: 0x9293, - 48005 - 44032: 0x9294, - 48006 - 44032: 0x9295, - 48007 - 44032: 0x9296, - 48008 - 44032: 0xB9BF, - 48009 - 44032: 0x9297, - 48010 - 44032: 0x9298, - 48011 - 44032: 0x9299, - 48012 - 44032: 0xB9C0, - 48013 - 44032: 0x929A, - 48014 - 44032: 0x929B, - 48015 - 44032: 0x929C, - 48016 - 44032: 0xB9C1, - 48017 - 44032: 0x929D, - 48018 - 44032: 0x929E, - 48019 - 44032: 0x929F, - 48020 - 44032: 0x92A0, - 48021 - 44032: 0x92A1, - 48022 - 44032: 0x92A2, - 48023 - 44032: 0x92A3, - 48024 - 44032: 0x92A4, - 48025 - 44032: 0x92A5, - 48026 - 44032: 0x92A6, - 48027 - 44032: 0x92A7, - 48028 - 44032: 0x92A8, - 48029 - 44032: 0x92A9, - 48030 - 44032: 0x92AA, - 48031 - 44032: 0x92AB, - 48032 - 44032: 0x92AC, - 48033 - 44032: 0x92AD, - 48034 - 44032: 0x92AE, - 48035 - 44032: 0x92AF, - 48036 - 44032: 0xB9C2, - 48037 - 44032: 0x92B0, - 48038 - 44032: 0x92B1, - 48039 - 44032: 0x92B2, - 48040 - 44032: 0xB9C3, - 48041 - 44032: 0x92B3, - 48042 - 44032: 0x92B4, - 48043 - 44032: 0x92B5, - 48044 - 44032: 0xB9C4, - 48045 - 44032: 0x92B6, - 48046 - 44032: 0x92B7, - 48047 - 44032: 0x92B8, - 48048 - 44032: 0x92B9, - 48049 - 44032: 0x92BA, - 48050 - 44032: 0x92BB, - 48051 - 44032: 0x92BC, - 48052 - 44032: 0xB9C5, - 48053 - 44032: 0x92BD, - 48054 - 44032: 0x92BE, - 48055 - 44032: 0xB9C6, - 48056 - 44032: 0x92BF, - 48057 - 44032: 0x92C0, - 48058 - 44032: 0x92C1, - 48059 - 44032: 0x92C2, - 48060 - 44032: 0x92C3, - 48061 - 44032: 0x92C4, - 48062 - 44032: 0x92C5, - 48063 - 44032: 0x92C6, - 48064 - 44032: 0xB9C7, - 48065 - 44032: 0x92C7, - 48066 - 44032: 0x92C8, - 48067 - 44032: 0x92C9, - 48068 - 44032: 0xB9C8, - 48069 - 44032: 0x92CA, - 48070 - 44032: 0x92CB, - 48071 - 44032: 0x92CC, - 48072 - 44032: 0xB9C9, - 48073 - 44032: 0x92CD, - 48074 - 44032: 0x92CE, - 48075 - 44032: 0x92CF, - 48076 - 44032: 0x92D0, - 48077 - 44032: 0x92D1, - 48078 - 44032: 0x92D2, - 48079 - 44032: 0x92D3, - 48080 - 44032: 0xB9CA, - 48081 - 44032: 0x92D4, - 48082 - 44032: 0x92D5, - 48083 - 44032: 0xB9CB, - 48084 - 44032: 0x92D6, - 48085 - 44032: 0x92D7, - 48086 - 44032: 0x92D8, - 48087 - 44032: 0x92D9, - 48088 - 44032: 0x92DA, - 48089 - 44032: 0x92DB, - 48090 - 44032: 0x92DC, - 48091 - 44032: 0x92DD, - 48092 - 44032: 0x92DE, - 48093 - 44032: 0x92DF, - 48094 - 44032: 0x92E0, - 48095 - 44032: 0x92E1, - 48096 - 44032: 0x92E2, - 48097 - 44032: 0x92E3, - 48098 - 44032: 0x92E4, - 48099 - 44032: 0x92E5, - 48100 - 44032: 0x92E6, - 48101 - 44032: 0x92E7, - 48102 - 44032: 0x92E8, - 48103 - 44032: 0x92E9, - 48104 - 44032: 0x92EA, - 48105 - 44032: 0x92EB, - 48106 - 44032: 0x92EC, - 48107 - 44032: 0x92ED, - 48108 - 44032: 0x92EE, - 48109 - 44032: 0x92EF, - 48110 - 44032: 0x92F0, - 48111 - 44032: 0x92F1, - 48112 - 44032: 0x92F2, - 48113 - 44032: 0x92F3, - 48114 - 44032: 0x92F4, - 48115 - 44032: 0x92F5, - 48116 - 44032: 0x92F6, - 48117 - 44032: 0x92F7, - 48118 - 44032: 0x92F8, - 48119 - 44032: 0x92F9, - 48120 - 44032: 0xB9CC, - 48121 - 44032: 0xB9CD, - 48122 - 44032: 0x92FA, - 48123 - 44032: 0x92FB, - 48124 - 44032: 0xB9CE, - 48125 - 44032: 0x92FC, - 48126 - 44032: 0x92FD, - 48127 - 44032: 0xB9CF, - 48128 - 44032: 0xB9D0, - 48129 - 44032: 0x92FE, - 48130 - 44032: 0xB9D1, - 48131 - 44032: 0x9341, - 48132 - 44032: 0x9342, - 48133 - 44032: 0x9343, - 48134 - 44032: 0x9344, - 48135 - 44032: 0x9345, - 48136 - 44032: 0xB9D2, - 48137 - 44032: 0xB9D3, - 48138 - 44032: 0x9346, - 48139 - 44032: 0xB9D4, - 48140 - 44032: 0xB9D5, - 48141 - 44032: 0xB9D6, - 48142 - 44032: 0x9347, - 48143 - 44032: 0xB9D7, - 48144 - 44032: 0x9348, - 48145 - 44032: 0xB9D8, - 48146 - 44032: 0x9349, - 48147 - 44032: 0x934A, - 48148 - 44032: 0xB9D9, - 48149 - 44032: 0xB9DA, - 48150 - 44032: 0xB9DB, - 48151 - 44032: 0xB9DC, - 48152 - 44032: 0xB9DD, - 48153 - 44032: 0x934B, - 48154 - 44032: 0x934C, - 48155 - 44032: 0xB9DE, - 48156 - 44032: 0xB9DF, - 48157 - 44032: 0xB9E0, - 48158 - 44032: 0xB9E1, - 48159 - 44032: 0xB9E2, - 48160 - 44032: 0x934D, - 48161 - 44032: 0x934E, - 48162 - 44032: 0x934F, - 48163 - 44032: 0x9350, - 48164 - 44032: 0xB9E3, - 48165 - 44032: 0xB9E4, - 48166 - 44032: 0x9351, - 48167 - 44032: 0xB9E5, - 48168 - 44032: 0x9352, - 48169 - 44032: 0xB9E6, - 48170 - 44032: 0x9353, - 48171 - 44032: 0x9354, - 48172 - 44032: 0x9355, - 48173 - 44032: 0xB9E7, - 48174 - 44032: 0x9356, - 48175 - 44032: 0x9357, - 48176 - 44032: 0xB9E8, - 48177 - 44032: 0xB9E9, - 48178 - 44032: 0x9358, - 48179 - 44032: 0x9359, - 48180 - 44032: 0xB9EA, - 48181 - 44032: 0x935A, - 48182 - 44032: 0x9361, - 48183 - 44032: 0x9362, - 48184 - 44032: 0xB9EB, - 48185 - 44032: 0x9363, - 48186 - 44032: 0x9364, - 48187 - 44032: 0x9365, - 48188 - 44032: 0x9366, - 48189 - 44032: 0x9367, - 48190 - 44032: 0x9368, - 48191 - 44032: 0x9369, - 48192 - 44032: 0xB9EC, - 48193 - 44032: 0xB9ED, - 48194 - 44032: 0x936A, - 48195 - 44032: 0xB9EE, - 48196 - 44032: 0xB9EF, - 48197 - 44032: 0xB9F0, - 48198 - 44032: 0x936B, - 48199 - 44032: 0x936C, - 48200 - 44032: 0x936D, - 48201 - 44032: 0xB9F1, - 48202 - 44032: 0x936E, - 48203 - 44032: 0x936F, - 48204 - 44032: 0xB9F2, - 48205 - 44032: 0xB9F3, - 48206 - 44032: 0x9370, - 48207 - 44032: 0x9371, - 48208 - 44032: 0xB9F4, - 48209 - 44032: 0x9372, - 48210 - 44032: 0x9373, - 48211 - 44032: 0x9374, - 48212 - 44032: 0x9375, - 48213 - 44032: 0x9376, - 48214 - 44032: 0x9377, - 48215 - 44032: 0x9378, - 48216 - 44032: 0x9379, - 48217 - 44032: 0x937A, - 48218 - 44032: 0x9381, - 48219 - 44032: 0x9382, - 48220 - 44032: 0x9383, - 48221 - 44032: 0xB9F5, - 48222 - 44032: 0x9384, - 48223 - 44032: 0x9385, - 48224 - 44032: 0x9386, - 48225 - 44032: 0x9387, - 48226 - 44032: 0x9388, - 48227 - 44032: 0x9389, - 48228 - 44032: 0x938A, - 48229 - 44032: 0x938B, - 48230 - 44032: 0x938C, - 48231 - 44032: 0x938D, - 48232 - 44032: 0x938E, - 48233 - 44032: 0x938F, - 48234 - 44032: 0x9390, - 48235 - 44032: 0x9391, - 48236 - 44032: 0x9392, - 48237 - 44032: 0x9393, - 48238 - 44032: 0x9394, - 48239 - 44032: 0x9395, - 48240 - 44032: 0x9396, - 48241 - 44032: 0x9397, - 48242 - 44032: 0x9398, - 48243 - 44032: 0x9399, - 48244 - 44032: 0x939A, - 48245 - 44032: 0x939B, - 48246 - 44032: 0x939C, - 48247 - 44032: 0x939D, - 48248 - 44032: 0x939E, - 48249 - 44032: 0x939F, - 48250 - 44032: 0x93A0, - 48251 - 44032: 0x93A1, - 48252 - 44032: 0x93A2, - 48253 - 44032: 0x93A3, - 48254 - 44032: 0x93A4, - 48255 - 44032: 0x93A5, - 48256 - 44032: 0x93A6, - 48257 - 44032: 0x93A7, - 48258 - 44032: 0x93A8, - 48259 - 44032: 0x93A9, - 48260 - 44032: 0xB9F6, - 48261 - 44032: 0xB9F7, - 48262 - 44032: 0x93AA, - 48263 - 44032: 0x93AB, - 48264 - 44032: 0xB9F8, - 48265 - 44032: 0x93AC, - 48266 - 44032: 0x93AD, - 48267 - 44032: 0xB9F9, - 48268 - 44032: 0xB9FA, - 48269 - 44032: 0x93AE, - 48270 - 44032: 0xB9FB, - 48271 - 44032: 0x93AF, - 48272 - 44032: 0x93B0, - 48273 - 44032: 0x93B1, - 48274 - 44032: 0x93B2, - 48275 - 44032: 0x93B3, - 48276 - 44032: 0xB9FC, - 48277 - 44032: 0xB9FD, - 48278 - 44032: 0x93B4, - 48279 - 44032: 0xB9FE, - 48280 - 44032: 0x93B5, - 48281 - 44032: 0xBAA1, - 48282 - 44032: 0xBAA2, - 48283 - 44032: 0x93B6, - 48284 - 44032: 0x93B7, - 48285 - 44032: 0x93B8, - 48286 - 44032: 0x93B9, - 48287 - 44032: 0x93BA, - 48288 - 44032: 0xBAA3, - 48289 - 44032: 0xBAA4, - 48290 - 44032: 0x93BB, - 48291 - 44032: 0x93BC, - 48292 - 44032: 0xBAA5, - 48293 - 44032: 0x93BD, - 48294 - 44032: 0x93BE, - 48295 - 44032: 0xBAA6, - 48296 - 44032: 0xBAA7, - 48297 - 44032: 0x93BF, - 48298 - 44032: 0x93C0, - 48299 - 44032: 0x93C1, - 48300 - 44032: 0x93C2, - 48301 - 44032: 0x93C3, - 48302 - 44032: 0x93C4, - 48303 - 44032: 0x93C5, - 48304 - 44032: 0xBAA8, - 48305 - 44032: 0xBAA9, - 48306 - 44032: 0x93C6, - 48307 - 44032: 0xBAAA, - 48308 - 44032: 0xBAAB, - 48309 - 44032: 0xBAAC, - 48310 - 44032: 0x93C7, - 48311 - 44032: 0x93C8, - 48312 - 44032: 0x93C9, - 48313 - 44032: 0x93CA, - 48314 - 44032: 0x93CB, - 48315 - 44032: 0x93CC, - 48316 - 44032: 0xBAAD, - 48317 - 44032: 0xBAAE, - 48318 - 44032: 0x93CD, - 48319 - 44032: 0x93CE, - 48320 - 44032: 0xBAAF, - 48321 - 44032: 0x93CF, - 48322 - 44032: 0x93D0, - 48323 - 44032: 0x93D1, - 48324 - 44032: 0xBAB0, - 48325 - 44032: 0x93D2, - 48326 - 44032: 0x93D3, - 48327 - 44032: 0x93D4, - 48328 - 44032: 0x93D5, - 48329 - 44032: 0x93D6, - 48330 - 44032: 0x93D7, - 48331 - 44032: 0x93D8, - 48332 - 44032: 0x93D9, - 48333 - 44032: 0xBAB1, - 48334 - 44032: 0x93DA, - 48335 - 44032: 0xBAB2, - 48336 - 44032: 0xBAB3, - 48337 - 44032: 0xBAB4, - 48338 - 44032: 0x93DB, - 48339 - 44032: 0x93DC, - 48340 - 44032: 0x93DD, - 48341 - 44032: 0xBAB5, - 48342 - 44032: 0x93DE, - 48343 - 44032: 0x93DF, - 48344 - 44032: 0xBAB6, - 48345 - 44032: 0x93E0, - 48346 - 44032: 0x93E1, - 48347 - 44032: 0x93E2, - 48348 - 44032: 0xBAB7, - 48349 - 44032: 0x93E3, - 48350 - 44032: 0x93E4, - 48351 - 44032: 0x93E5, - 48352 - 44032: 0x93E6, - 48353 - 44032: 0x93E7, - 48354 - 44032: 0x93E8, - 48355 - 44032: 0x93E9, - 48356 - 44032: 0x93EA, - 48357 - 44032: 0x93EB, - 48358 - 44032: 0x93EC, - 48359 - 44032: 0x93ED, - 48360 - 44032: 0x93EE, - 48361 - 44032: 0x93EF, - 48362 - 44032: 0x93F0, - 48363 - 44032: 0x93F1, - 48364 - 44032: 0x93F2, - 48365 - 44032: 0x93F3, - 48366 - 44032: 0x93F4, - 48367 - 44032: 0x93F5, - 48368 - 44032: 0x93F6, - 48369 - 44032: 0x93F7, - 48370 - 44032: 0x93F8, - 48371 - 44032: 0x93F9, - 48372 - 44032: 0xBAB8, - 48373 - 44032: 0xBAB9, - 48374 - 44032: 0xBABA, - 48375 - 44032: 0x93FA, - 48376 - 44032: 0xBABB, - 48377 - 44032: 0x93FB, - 48378 - 44032: 0x93FC, - 48379 - 44032: 0x93FD, - 48380 - 44032: 0xBABC, - 48381 - 44032: 0x93FE, - 48382 - 44032: 0x9441, - 48383 - 44032: 0x9442, - 48384 - 44032: 0x9443, - 48385 - 44032: 0x9444, - 48386 - 44032: 0x9445, - 48387 - 44032: 0x9446, - 48388 - 44032: 0xBABD, - 48389 - 44032: 0xBABE, - 48390 - 44032: 0x9447, - 48391 - 44032: 0xBABF, - 48392 - 44032: 0x9448, - 48393 - 44032: 0xBAC0, - 48394 - 44032: 0x9449, - 48395 - 44032: 0x944A, - 48396 - 44032: 0x944B, - 48397 - 44032: 0x944C, - 48398 - 44032: 0x944D, - 48399 - 44032: 0x944E, - 48400 - 44032: 0xBAC1, - 48401 - 44032: 0x944F, - 48402 - 44032: 0x9450, - 48403 - 44032: 0x9451, - 48404 - 44032: 0xBAC2, - 48405 - 44032: 0x9452, - 48406 - 44032: 0x9453, - 48407 - 44032: 0x9454, - 48408 - 44032: 0x9455, - 48409 - 44032: 0x9456, - 48410 - 44032: 0x9457, - 48411 - 44032: 0x9458, - 48412 - 44032: 0x9459, - 48413 - 44032: 0x945A, - 48414 - 44032: 0x9461, - 48415 - 44032: 0x9462, - 48416 - 44032: 0x9463, - 48417 - 44032: 0x9464, - 48418 - 44032: 0x9465, - 48419 - 44032: 0x9466, - 48420 - 44032: 0xBAC3, - 48421 - 44032: 0x9467, - 48422 - 44032: 0x9468, - 48423 - 44032: 0x9469, - 48424 - 44032: 0x946A, - 48425 - 44032: 0x946B, - 48426 - 44032: 0x946C, - 48427 - 44032: 0x946D, - 48428 - 44032: 0xBAC4, - 48429 - 44032: 0x946E, - 48430 - 44032: 0x946F, - 48431 - 44032: 0x9470, - 48432 - 44032: 0x9471, - 48433 - 44032: 0x9472, - 48434 - 44032: 0x9473, - 48435 - 44032: 0x9474, - 48436 - 44032: 0x9475, - 48437 - 44032: 0x9476, - 48438 - 44032: 0x9477, - 48439 - 44032: 0x9478, - 48440 - 44032: 0x9479, - 48441 - 44032: 0x947A, - 48442 - 44032: 0x9481, - 48443 - 44032: 0x9482, - 48444 - 44032: 0x9483, - 48445 - 44032: 0x9484, - 48446 - 44032: 0x9485, - 48447 - 44032: 0x9486, - 48448 - 44032: 0xBAC5, - 48449 - 44032: 0x9487, - 48450 - 44032: 0x9488, - 48451 - 44032: 0x9489, - 48452 - 44032: 0x948A, - 48453 - 44032: 0x948B, - 48454 - 44032: 0x948C, - 48455 - 44032: 0x948D, - 48456 - 44032: 0xBAC6, - 48457 - 44032: 0xBAC7, - 48458 - 44032: 0x948E, - 48459 - 44032: 0x948F, - 48460 - 44032: 0xBAC8, - 48461 - 44032: 0x9490, - 48462 - 44032: 0x9491, - 48463 - 44032: 0x9492, - 48464 - 44032: 0xBAC9, - 48465 - 44032: 0x9493, - 48466 - 44032: 0x9494, - 48467 - 44032: 0x9495, - 48468 - 44032: 0x9496, - 48469 - 44032: 0x9497, - 48470 - 44032: 0x9498, - 48471 - 44032: 0x9499, - 48472 - 44032: 0xBACA, - 48473 - 44032: 0xBACB, - 48474 - 44032: 0x949A, - 48475 - 44032: 0x949B, - 48476 - 44032: 0x949C, - 48477 - 44032: 0x949D, - 48478 - 44032: 0x949E, - 48479 - 44032: 0x949F, - 48480 - 44032: 0x94A0, - 48481 - 44032: 0x94A1, - 48482 - 44032: 0x94A2, - 48483 - 44032: 0x94A3, - 48484 - 44032: 0xBACC, - 48485 - 44032: 0x94A4, - 48486 - 44032: 0x94A5, - 48487 - 44032: 0x94A6, - 48488 - 44032: 0xBACD, - 48489 - 44032: 0x94A7, - 48490 - 44032: 0x94A8, - 48491 - 44032: 0x94A9, - 48492 - 44032: 0x94AA, - 48493 - 44032: 0x94AB, - 48494 - 44032: 0x94AC, - 48495 - 44032: 0x94AD, - 48496 - 44032: 0x94AE, - 48497 - 44032: 0x94AF, - 48498 - 44032: 0x94B0, - 48499 - 44032: 0x94B1, - 48500 - 44032: 0x94B2, - 48501 - 44032: 0x94B3, - 48502 - 44032: 0x94B4, - 48503 - 44032: 0x94B5, - 48504 - 44032: 0x94B6, - 48505 - 44032: 0x94B7, - 48506 - 44032: 0x94B8, - 48507 - 44032: 0x94B9, - 48508 - 44032: 0x94BA, - 48509 - 44032: 0x94BB, - 48510 - 44032: 0x94BC, - 48511 - 44032: 0x94BD, - 48512 - 44032: 0xBACE, - 48513 - 44032: 0xBACF, - 48514 - 44032: 0x94BE, - 48515 - 44032: 0x94BF, - 48516 - 44032: 0xBAD0, - 48517 - 44032: 0x94C0, - 48518 - 44032: 0x94C1, - 48519 - 44032: 0xBAD1, - 48520 - 44032: 0xBAD2, - 48521 - 44032: 0xBAD3, - 48522 - 44032: 0xBAD4, - 48523 - 44032: 0x94C2, - 48524 - 44032: 0x94C3, - 48525 - 44032: 0x94C4, - 48526 - 44032: 0x94C5, - 48527 - 44032: 0x94C6, - 48528 - 44032: 0xBAD5, - 48529 - 44032: 0xBAD6, - 48530 - 44032: 0x94C7, - 48531 - 44032: 0xBAD7, - 48532 - 44032: 0x94C8, - 48533 - 44032: 0xBAD8, - 48534 - 44032: 0x94C9, - 48535 - 44032: 0x94CA, - 48536 - 44032: 0x94CB, - 48537 - 44032: 0xBAD9, - 48538 - 44032: 0xBADA, - 48539 - 44032: 0x94CC, - 48540 - 44032: 0xBADB, - 48541 - 44032: 0x94CD, - 48542 - 44032: 0x94CE, - 48543 - 44032: 0x94CF, - 48544 - 44032: 0x94D0, - 48545 - 44032: 0x94D1, - 48546 - 44032: 0x94D2, - 48547 - 44032: 0x94D3, - 48548 - 44032: 0xBADC, - 48549 - 44032: 0x94D4, - 48550 - 44032: 0x94D5, - 48551 - 44032: 0x94D6, - 48552 - 44032: 0x94D7, - 48553 - 44032: 0x94D8, - 48554 - 44032: 0x94D9, - 48555 - 44032: 0x94DA, - 48556 - 44032: 0x94DB, - 48557 - 44032: 0x94DC, - 48558 - 44032: 0x94DD, - 48559 - 44032: 0x94DE, - 48560 - 44032: 0xBADD, - 48561 - 44032: 0x94DF, - 48562 - 44032: 0x94E0, - 48563 - 44032: 0x94E1, - 48564 - 44032: 0x94E2, - 48565 - 44032: 0x94E3, - 48566 - 44032: 0x94E4, - 48567 - 44032: 0x94E5, - 48568 - 44032: 0xBADE, - 48569 - 44032: 0x94E6, - 48570 - 44032: 0x94E7, - 48571 - 44032: 0x94E8, - 48572 - 44032: 0x94E9, - 48573 - 44032: 0x94EA, - 48574 - 44032: 0x94EB, - 48575 - 44032: 0x94EC, - 48576 - 44032: 0x94ED, - 48577 - 44032: 0x94EE, - 48578 - 44032: 0x94EF, - 48579 - 44032: 0x94F0, - 48580 - 44032: 0x94F1, - 48581 - 44032: 0x94F2, - 48582 - 44032: 0x94F3, - 48583 - 44032: 0x94F4, - 48584 - 44032: 0x94F5, - 48585 - 44032: 0x94F6, - 48586 - 44032: 0x94F7, - 48587 - 44032: 0x94F8, - 48588 - 44032: 0x94F9, - 48589 - 44032: 0x94FA, - 48590 - 44032: 0x94FB, - 48591 - 44032: 0x94FC, - 48592 - 44032: 0x94FD, - 48593 - 44032: 0x94FE, - 48594 - 44032: 0x9541, - 48595 - 44032: 0x9542, - 48596 - 44032: 0xBADF, - 48597 - 44032: 0xBAE0, - 48598 - 44032: 0x9543, - 48599 - 44032: 0x9544, - 48600 - 44032: 0xBAE1, - 48601 - 44032: 0x9545, - 48602 - 44032: 0x9546, - 48603 - 44032: 0x9547, - 48604 - 44032: 0xBAE2, - 48605 - 44032: 0x9548, - 48606 - 44032: 0x9549, - 48607 - 44032: 0x954A, - 48608 - 44032: 0x954B, - 48609 - 44032: 0x954C, - 48610 - 44032: 0x954D, - 48611 - 44032: 0x954E, - 48612 - 44032: 0x954F, - 48613 - 44032: 0x9550, - 48614 - 44032: 0x9551, - 48615 - 44032: 0x9552, - 48616 - 44032: 0x9553, - 48617 - 44032: 0xBAE3, - 48618 - 44032: 0x9554, - 48619 - 44032: 0x9555, - 48620 - 44032: 0x9556, - 48621 - 44032: 0x9557, - 48622 - 44032: 0x9558, - 48623 - 44032: 0x9559, - 48624 - 44032: 0xBAE4, - 48625 - 44032: 0x955A, - 48626 - 44032: 0x9561, - 48627 - 44032: 0x9562, - 48628 - 44032: 0xBAE5, - 48629 - 44032: 0x9563, - 48630 - 44032: 0x9564, - 48631 - 44032: 0x9565, - 48632 - 44032: 0xBAE6, - 48633 - 44032: 0x9566, - 48634 - 44032: 0x9567, - 48635 - 44032: 0x9568, - 48636 - 44032: 0x9569, - 48637 - 44032: 0x956A, - 48638 - 44032: 0x956B, - 48639 - 44032: 0x956C, - 48640 - 44032: 0xBAE7, - 48641 - 44032: 0x956D, - 48642 - 44032: 0x956E, - 48643 - 44032: 0xBAE8, - 48644 - 44032: 0x956F, - 48645 - 44032: 0xBAE9, - 48646 - 44032: 0x9570, - 48647 - 44032: 0x9571, - 48648 - 44032: 0x9572, - 48649 - 44032: 0x9573, - 48650 - 44032: 0x9574, - 48651 - 44032: 0x9575, - 48652 - 44032: 0xBAEA, - 48653 - 44032: 0xBAEB, - 48654 - 44032: 0x9576, - 48655 - 44032: 0x9577, - 48656 - 44032: 0xBAEC, - 48657 - 44032: 0x9578, - 48658 - 44032: 0x9579, - 48659 - 44032: 0x957A, - 48660 - 44032: 0xBAED, - 48661 - 44032: 0x9581, - 48662 - 44032: 0x9582, - 48663 - 44032: 0x9583, - 48664 - 44032: 0x9584, - 48665 - 44032: 0x9585, - 48666 - 44032: 0x9586, - 48667 - 44032: 0x9587, - 48668 - 44032: 0xBAEE, - 48669 - 44032: 0xBAEF, - 48670 - 44032: 0x9588, - 48671 - 44032: 0xBAF0, - 48672 - 44032: 0x9589, - 48673 - 44032: 0x958A, - 48674 - 44032: 0x958B, - 48675 - 44032: 0x958C, - 48676 - 44032: 0x958D, - 48677 - 44032: 0x958E, - 48678 - 44032: 0x958F, - 48679 - 44032: 0x9590, - 48680 - 44032: 0x9591, - 48681 - 44032: 0x9592, - 48682 - 44032: 0x9593, - 48683 - 44032: 0x9594, - 48684 - 44032: 0x9595, - 48685 - 44032: 0x9596, - 48686 - 44032: 0x9597, - 48687 - 44032: 0x9598, - 48688 - 44032: 0x9599, - 48689 - 44032: 0x959A, - 48690 - 44032: 0x959B, - 48691 - 44032: 0x959C, - 48692 - 44032: 0x959D, - 48693 - 44032: 0x959E, - 48694 - 44032: 0x959F, - 48695 - 44032: 0x95A0, - 48696 - 44032: 0x95A1, - 48697 - 44032: 0x95A2, - 48698 - 44032: 0x95A3, - 48699 - 44032: 0x95A4, - 48700 - 44032: 0x95A5, - 48701 - 44032: 0x95A6, - 48702 - 44032: 0x95A7, - 48703 - 44032: 0x95A8, - 48704 - 44032: 0x95A9, - 48705 - 44032: 0x95AA, - 48706 - 44032: 0x95AB, - 48707 - 44032: 0x95AC, - 48708 - 44032: 0xBAF1, - 48709 - 44032: 0xBAF2, - 48710 - 44032: 0x95AD, - 48711 - 44032: 0x95AE, - 48712 - 44032: 0xBAF3, - 48713 - 44032: 0x95AF, - 48714 - 44032: 0x95B0, - 48715 - 44032: 0x95B1, - 48716 - 44032: 0xBAF4, - 48717 - 44032: 0x95B2, - 48718 - 44032: 0xBAF5, - 48719 - 44032: 0x95B3, - 48720 - 44032: 0x95B4, - 48721 - 44032: 0x95B5, - 48722 - 44032: 0x95B6, - 48723 - 44032: 0x95B7, - 48724 - 44032: 0xBAF6, - 48725 - 44032: 0xBAF7, - 48726 - 44032: 0x95B8, - 48727 - 44032: 0xBAF8, - 48728 - 44032: 0x95B9, - 48729 - 44032: 0xBAF9, - 48730 - 44032: 0xBAFA, - 48731 - 44032: 0xBAFB, - 48732 - 44032: 0x95BA, - 48733 - 44032: 0x95BB, - 48734 - 44032: 0x95BC, - 48735 - 44032: 0x95BD, - 48736 - 44032: 0xBAFC, - 48737 - 44032: 0xBAFD, - 48738 - 44032: 0x95BE, - 48739 - 44032: 0x95BF, - 48740 - 44032: 0xBAFE, - 48741 - 44032: 0x95C0, - 48742 - 44032: 0x95C1, - 48743 - 44032: 0x95C2, - 48744 - 44032: 0xBBA1, - 48745 - 44032: 0x95C3, - 48746 - 44032: 0xBBA2, - 48747 - 44032: 0x95C4, - 48748 - 44032: 0x95C5, - 48749 - 44032: 0x95C6, - 48750 - 44032: 0x95C7, - 48751 - 44032: 0x95C8, - 48752 - 44032: 0xBBA3, - 48753 - 44032: 0xBBA4, - 48754 - 44032: 0x95C9, - 48755 - 44032: 0xBBA5, - 48756 - 44032: 0xBBA6, - 48757 - 44032: 0xBBA7, - 48758 - 44032: 0x95CA, - 48759 - 44032: 0x95CB, - 48760 - 44032: 0x95CC, - 48761 - 44032: 0x95CD, - 48762 - 44032: 0x95CE, - 48763 - 44032: 0xBBA8, - 48764 - 44032: 0xBBA9, - 48765 - 44032: 0xBBAA, - 48766 - 44032: 0x95CF, - 48767 - 44032: 0x95D0, - 48768 - 44032: 0xBBAB, - 48769 - 44032: 0x95D1, - 48770 - 44032: 0x95D2, - 48771 - 44032: 0x95D3, - 48772 - 44032: 0xBBAC, - 48773 - 44032: 0x95D4, - 48774 - 44032: 0x95D5, - 48775 - 44032: 0x95D6, - 48776 - 44032: 0x95D7, - 48777 - 44032: 0x95D8, - 48778 - 44032: 0x95D9, - 48779 - 44032: 0x95DA, - 48780 - 44032: 0xBBAD, - 48781 - 44032: 0xBBAE, - 48782 - 44032: 0x95DB, - 48783 - 44032: 0xBBAF, - 48784 - 44032: 0xBBB0, - 48785 - 44032: 0xBBB1, - 48786 - 44032: 0x95DC, - 48787 - 44032: 0x95DD, - 48788 - 44032: 0x95DE, - 48789 - 44032: 0x95DF, - 48790 - 44032: 0x95E0, - 48791 - 44032: 0x95E1, - 48792 - 44032: 0xBBB2, - 48793 - 44032: 0xBBB3, - 48794 - 44032: 0x95E2, - 48795 - 44032: 0x95E3, - 48796 - 44032: 0x95E4, - 48797 - 44032: 0x95E5, - 48798 - 44032: 0x95E6, - 48799 - 44032: 0x95E7, - 48800 - 44032: 0x95E8, - 48801 - 44032: 0x95E9, - 48802 - 44032: 0x95EA, - 48803 - 44032: 0x95EB, - 48804 - 44032: 0x95EC, - 48805 - 44032: 0x95ED, - 48806 - 44032: 0x95EE, - 48807 - 44032: 0x95EF, - 48808 - 44032: 0xBBB4, - 48809 - 44032: 0x95F0, - 48810 - 44032: 0x95F1, - 48811 - 44032: 0x95F2, - 48812 - 44032: 0x95F3, - 48813 - 44032: 0x95F4, - 48814 - 44032: 0x95F5, - 48815 - 44032: 0x95F6, - 48816 - 44032: 0x95F7, - 48817 - 44032: 0x95F8, - 48818 - 44032: 0x95F9, - 48819 - 44032: 0x95FA, - 48820 - 44032: 0x95FB, - 48821 - 44032: 0x95FC, - 48822 - 44032: 0x95FD, - 48823 - 44032: 0x95FE, - 48824 - 44032: 0x9641, - 48825 - 44032: 0x9642, - 48826 - 44032: 0x9643, - 48827 - 44032: 0x9644, - 48828 - 44032: 0x9645, - 48829 - 44032: 0x9646, - 48830 - 44032: 0x9647, - 48831 - 44032: 0x9648, - 48832 - 44032: 0x9649, - 48833 - 44032: 0x964A, - 48834 - 44032: 0x964B, - 48835 - 44032: 0x964C, - 48836 - 44032: 0x964D, - 48837 - 44032: 0x964E, - 48838 - 44032: 0x964F, - 48839 - 44032: 0x9650, - 48840 - 44032: 0x9651, - 48841 - 44032: 0x9652, - 48842 - 44032: 0x9653, - 48843 - 44032: 0x9654, - 48844 - 44032: 0x9655, - 48845 - 44032: 0x9656, - 48846 - 44032: 0x9657, - 48847 - 44032: 0x9658, - 48848 - 44032: 0xBBB5, - 48849 - 44032: 0xBBB6, - 48850 - 44032: 0x9659, - 48851 - 44032: 0x965A, - 48852 - 44032: 0xBBB7, - 48853 - 44032: 0x9661, - 48854 - 44032: 0x9662, - 48855 - 44032: 0xBBB8, - 48856 - 44032: 0xBBB9, - 48857 - 44032: 0x9663, - 48858 - 44032: 0x9664, - 48859 - 44032: 0x9665, - 48860 - 44032: 0x9666, - 48861 - 44032: 0x9667, - 48862 - 44032: 0x9668, - 48863 - 44032: 0x9669, - 48864 - 44032: 0xBBBA, - 48865 - 44032: 0x966A, - 48866 - 44032: 0x966B, - 48867 - 44032: 0xBBBB, - 48868 - 44032: 0xBBBC, - 48869 - 44032: 0xBBBD, - 48870 - 44032: 0x966C, - 48871 - 44032: 0x966D, - 48872 - 44032: 0x966E, - 48873 - 44032: 0x966F, - 48874 - 44032: 0x9670, - 48875 - 44032: 0x9671, - 48876 - 44032: 0xBBBE, - 48877 - 44032: 0x9672, - 48878 - 44032: 0x9673, - 48879 - 44032: 0x9674, - 48880 - 44032: 0x9675, - 48881 - 44032: 0x9676, - 48882 - 44032: 0x9677, - 48883 - 44032: 0x9678, - 48884 - 44032: 0x9679, - 48885 - 44032: 0x967A, - 48886 - 44032: 0x9681, - 48887 - 44032: 0x9682, - 48888 - 44032: 0x9683, - 48889 - 44032: 0x9684, - 48890 - 44032: 0x9685, - 48891 - 44032: 0x9686, - 48892 - 44032: 0x9687, - 48893 - 44032: 0x9688, - 48894 - 44032: 0x9689, - 48895 - 44032: 0x968A, - 48896 - 44032: 0x968B, - 48897 - 44032: 0xBBBF, - 48898 - 44032: 0x968C, - 48899 - 44032: 0x968D, - 48900 - 44032: 0x968E, - 48901 - 44032: 0x968F, - 48902 - 44032: 0x9690, - 48903 - 44032: 0x9691, - 48904 - 44032: 0xBBC0, - 48905 - 44032: 0xBBC1, - 48906 - 44032: 0x9692, - 48907 - 44032: 0x9693, - 48908 - 44032: 0x9694, - 48909 - 44032: 0x9695, - 48910 - 44032: 0x9696, - 48911 - 44032: 0x9697, - 48912 - 44032: 0x9698, - 48913 - 44032: 0x9699, - 48914 - 44032: 0x969A, - 48915 - 44032: 0x969B, - 48916 - 44032: 0x969C, - 48917 - 44032: 0x969D, - 48918 - 44032: 0x969E, - 48919 - 44032: 0x969F, - 48920 - 44032: 0xBBC2, - 48921 - 44032: 0xBBC3, - 48922 - 44032: 0x96A0, - 48923 - 44032: 0xBBC4, - 48924 - 44032: 0xBBC5, - 48925 - 44032: 0xBBC6, - 48926 - 44032: 0x96A1, - 48927 - 44032: 0x96A2, - 48928 - 44032: 0x96A3, - 48929 - 44032: 0x96A4, - 48930 - 44032: 0x96A5, - 48931 - 44032: 0x96A6, - 48932 - 44032: 0x96A7, - 48933 - 44032: 0x96A8, - 48934 - 44032: 0x96A9, - 48935 - 44032: 0x96AA, - 48936 - 44032: 0x96AB, - 48937 - 44032: 0x96AC, - 48938 - 44032: 0x96AD, - 48939 - 44032: 0x96AE, - 48940 - 44032: 0x96AF, - 48941 - 44032: 0x96B0, - 48942 - 44032: 0x96B1, - 48943 - 44032: 0x96B2, - 48944 - 44032: 0x96B3, - 48945 - 44032: 0x96B4, - 48946 - 44032: 0x96B5, - 48947 - 44032: 0x96B6, - 48948 - 44032: 0x96B7, - 48949 - 44032: 0x96B8, - 48950 - 44032: 0x96B9, - 48951 - 44032: 0x96BA, - 48952 - 44032: 0x96BB, - 48953 - 44032: 0x96BC, - 48954 - 44032: 0x96BD, - 48955 - 44032: 0x96BE, - 48956 - 44032: 0x96BF, - 48957 - 44032: 0x96C0, - 48958 - 44032: 0x96C1, - 48959 - 44032: 0x96C2, - 48960 - 44032: 0xBBC7, - 48961 - 44032: 0xBBC8, - 48962 - 44032: 0x96C3, - 48963 - 44032: 0x96C4, - 48964 - 44032: 0xBBC9, - 48965 - 44032: 0x96C5, - 48966 - 44032: 0x96C6, - 48967 - 44032: 0x96C7, - 48968 - 44032: 0xBBCA, - 48969 - 44032: 0x96C8, - 48970 - 44032: 0x96C9, - 48971 - 44032: 0x96CA, - 48972 - 44032: 0x96CB, - 48973 - 44032: 0x96CC, - 48974 - 44032: 0x96CD, - 48975 - 44032: 0x96CE, - 48976 - 44032: 0xBBCB, - 48977 - 44032: 0xBBCC, - 48978 - 44032: 0x96CF, - 48979 - 44032: 0x96D0, - 48980 - 44032: 0x96D1, - 48981 - 44032: 0xBBCD, - 48982 - 44032: 0x96D2, - 48983 - 44032: 0x96D3, - 48984 - 44032: 0x96D4, - 48985 - 44032: 0x96D5, - 48986 - 44032: 0x96D6, - 48987 - 44032: 0x96D7, - 48988 - 44032: 0x96D8, - 48989 - 44032: 0x96D9, - 48990 - 44032: 0x96DA, - 48991 - 44032: 0x96DB, - 48992 - 44032: 0x96DC, - 48993 - 44032: 0x96DD, - 48994 - 44032: 0x96DE, - 48995 - 44032: 0x96DF, - 48996 - 44032: 0x96E0, - 48997 - 44032: 0x96E1, - 48998 - 44032: 0x96E2, - 48999 - 44032: 0x96E3, - 49000 - 44032: 0x96E4, - 49001 - 44032: 0x96E5, - 49002 - 44032: 0x96E6, - 49003 - 44032: 0x96E7, - 49004 - 44032: 0x96E8, - 49005 - 44032: 0x96E9, - 49006 - 44032: 0x96EA, - 49007 - 44032: 0x96EB, - 49008 - 44032: 0x96EC, - 49009 - 44032: 0x96ED, - 49010 - 44032: 0x96EE, - 49011 - 44032: 0x96EF, - 49012 - 44032: 0x96F0, - 49013 - 44032: 0x96F1, - 49014 - 44032: 0x96F2, - 49015 - 44032: 0x96F3, - 49016 - 44032: 0x96F4, - 49017 - 44032: 0x96F5, - 49018 - 44032: 0x96F6, - 49019 - 44032: 0x96F7, - 49020 - 44032: 0x96F8, - 49021 - 44032: 0x96F9, - 49022 - 44032: 0x96FA, - 49023 - 44032: 0x96FB, - 49024 - 44032: 0x96FC, - 49025 - 44032: 0x96FD, - 49026 - 44032: 0x96FE, - 49027 - 44032: 0x9741, - 49028 - 44032: 0x9742, - 49029 - 44032: 0x9743, - 49030 - 44032: 0x9744, - 49031 - 44032: 0x9745, - 49032 - 44032: 0x9746, - 49033 - 44032: 0x9747, - 49034 - 44032: 0x9748, - 49035 - 44032: 0x9749, - 49036 - 44032: 0x974A, - 49037 - 44032: 0x974B, - 49038 - 44032: 0x974C, - 49039 - 44032: 0x974D, - 49040 - 44032: 0x974E, - 49041 - 44032: 0x974F, - 49042 - 44032: 0x9750, - 49043 - 44032: 0x9751, - 49044 - 44032: 0xBBCE, - 49045 - 44032: 0x9752, - 49046 - 44032: 0x9753, - 49047 - 44032: 0x9754, - 49048 - 44032: 0x9755, - 49049 - 44032: 0x9756, - 49050 - 44032: 0x9757, - 49051 - 44032: 0x9758, - 49052 - 44032: 0x9759, - 49053 - 44032: 0x975A, - 49054 - 44032: 0x9761, - 49055 - 44032: 0x9762, - 49056 - 44032: 0x9763, - 49057 - 44032: 0x9764, - 49058 - 44032: 0x9765, - 49059 - 44032: 0x9766, - 49060 - 44032: 0x9767, - 49061 - 44032: 0x9768, - 49062 - 44032: 0x9769, - 49063 - 44032: 0x976A, - 49064 - 44032: 0x976B, - 49065 - 44032: 0x976C, - 49066 - 44032: 0x976D, - 49067 - 44032: 0x976E, - 49068 - 44032: 0x976F, - 49069 - 44032: 0x9770, - 49070 - 44032: 0x9771, - 49071 - 44032: 0x9772, - 49072 - 44032: 0xBBCF, - 49073 - 44032: 0x9773, - 49074 - 44032: 0x9774, - 49075 - 44032: 0x9775, - 49076 - 44032: 0x9776, - 49077 - 44032: 0x9777, - 49078 - 44032: 0x9778, - 49079 - 44032: 0x9779, - 49080 - 44032: 0x977A, - 49081 - 44032: 0x9781, - 49082 - 44032: 0x9782, - 49083 - 44032: 0x9783, - 49084 - 44032: 0x9784, - 49085 - 44032: 0x9785, - 49086 - 44032: 0x9786, - 49087 - 44032: 0x9787, - 49088 - 44032: 0x9788, - 49089 - 44032: 0x9789, - 49090 - 44032: 0x978A, - 49091 - 44032: 0x978B, - 49092 - 44032: 0x978C, - 49093 - 44032: 0xBBD0, - 49094 - 44032: 0x978D, - 49095 - 44032: 0x978E, - 49096 - 44032: 0x978F, - 49097 - 44032: 0x9790, - 49098 - 44032: 0x9791, - 49099 - 44032: 0x9792, - 49100 - 44032: 0xBBD1, - 49101 - 44032: 0xBBD2, - 49102 - 44032: 0x9793, - 49103 - 44032: 0x9794, - 49104 - 44032: 0xBBD3, - 49105 - 44032: 0x9795, - 49106 - 44032: 0x9796, - 49107 - 44032: 0x9797, - 49108 - 44032: 0xBBD4, - 49109 - 44032: 0x9798, - 49110 - 44032: 0x9799, - 49111 - 44032: 0x979A, - 49112 - 44032: 0x979B, - 49113 - 44032: 0x979C, - 49114 - 44032: 0x979D, - 49115 - 44032: 0x979E, - 49116 - 44032: 0xBBD5, - 49117 - 44032: 0x979F, - 49118 - 44032: 0x97A0, - 49119 - 44032: 0xBBD6, - 49120 - 44032: 0x97A1, - 49121 - 44032: 0xBBD7, - 49122 - 44032: 0x97A2, - 49123 - 44032: 0x97A3, - 49124 - 44032: 0x97A4, - 49125 - 44032: 0x97A5, - 49126 - 44032: 0x97A6, - 49127 - 44032: 0x97A7, - 49128 - 44032: 0x97A8, - 49129 - 44032: 0x97A9, - 49130 - 44032: 0x97AA, - 49131 - 44032: 0x97AB, - 49132 - 44032: 0x97AC, - 49133 - 44032: 0x97AD, - 49134 - 44032: 0x97AE, - 49135 - 44032: 0x97AF, - 49136 - 44032: 0x97B0, - 49137 - 44032: 0x97B1, - 49138 - 44032: 0x97B2, - 49139 - 44032: 0x97B3, - 49140 - 44032: 0x97B4, - 49141 - 44032: 0x97B5, - 49142 - 44032: 0x97B6, - 49143 - 44032: 0x97B7, - 49144 - 44032: 0x97B8, - 49145 - 44032: 0x97B9, - 49146 - 44032: 0x97BA, - 49147 - 44032: 0x97BB, - 49148 - 44032: 0x97BC, - 49149 - 44032: 0x97BD, - 49150 - 44032: 0x97BE, - 49151 - 44032: 0x97BF, - 49152 - 44032: 0x97C0, - 49153 - 44032: 0x97C1, - 49154 - 44032: 0x97C2, - 49155 - 44032: 0x97C3, - 49156 - 44032: 0x97C4, - 49157 - 44032: 0x97C5, - 49158 - 44032: 0x97C6, - 49159 - 44032: 0x97C7, - 49160 - 44032: 0x97C8, - 49161 - 44032: 0x97C9, - 49162 - 44032: 0x97CA, - 49163 - 44032: 0x97CB, - 49164 - 44032: 0x97CC, - 49165 - 44032: 0x97CD, - 49166 - 44032: 0x97CE, - 49167 - 44032: 0x97CF, - 49168 - 44032: 0x97D0, - 49169 - 44032: 0x97D1, - 49170 - 44032: 0x97D2, - 49171 - 44032: 0x97D3, - 49172 - 44032: 0x97D4, - 49173 - 44032: 0x97D5, - 49174 - 44032: 0x97D6, - 49175 - 44032: 0x97D7, - 49176 - 44032: 0x97D8, - 49177 - 44032: 0x97D9, - 49178 - 44032: 0x97DA, - 49179 - 44032: 0x97DB, - 49180 - 44032: 0x97DC, - 49181 - 44032: 0x97DD, - 49182 - 44032: 0x97DE, - 49183 - 44032: 0x97DF, - 49184 - 44032: 0x97E0, - 49185 - 44032: 0x97E1, - 49186 - 44032: 0x97E2, - 49187 - 44032: 0x97E3, - 49188 - 44032: 0x97E4, - 49189 - 44032: 0x97E5, - 49190 - 44032: 0x97E6, - 49191 - 44032: 0x97E7, - 49192 - 44032: 0x97E8, - 49193 - 44032: 0x97E9, - 49194 - 44032: 0x97EA, - 49195 - 44032: 0x97EB, - 49196 - 44032: 0x97EC, - 49197 - 44032: 0x97ED, - 49198 - 44032: 0x97EE, - 49199 - 44032: 0x97EF, - 49200 - 44032: 0x97F0, - 49201 - 44032: 0x97F1, - 49202 - 44032: 0x97F2, - 49203 - 44032: 0x97F3, - 49204 - 44032: 0x97F4, - 49205 - 44032: 0x97F5, - 49206 - 44032: 0x97F6, - 49207 - 44032: 0x97F7, - 49208 - 44032: 0x97F8, - 49209 - 44032: 0x97F9, - 49210 - 44032: 0x97FA, - 49211 - 44032: 0x97FB, - 49212 - 44032: 0xBBD8, - 49213 - 44032: 0x97FC, - 49214 - 44032: 0x97FD, - 49215 - 44032: 0x97FE, - 49216 - 44032: 0x9841, - 49217 - 44032: 0x9842, - 49218 - 44032: 0x9843, - 49219 - 44032: 0x9844, - 49220 - 44032: 0x9845, - 49221 - 44032: 0x9846, - 49222 - 44032: 0x9847, - 49223 - 44032: 0x9848, - 49224 - 44032: 0x9849, - 49225 - 44032: 0x984A, - 49226 - 44032: 0x984B, - 49227 - 44032: 0x984C, - 49228 - 44032: 0x984D, - 49229 - 44032: 0x984E, - 49230 - 44032: 0x984F, - 49231 - 44032: 0x9850, - 49232 - 44032: 0x9851, - 49233 - 44032: 0xBBD9, - 49234 - 44032: 0x9852, - 49235 - 44032: 0x9853, - 49236 - 44032: 0x9854, - 49237 - 44032: 0x9855, - 49238 - 44032: 0x9856, - 49239 - 44032: 0x9857, - 49240 - 44032: 0xBBDA, - 49241 - 44032: 0x9858, - 49242 - 44032: 0x9859, - 49243 - 44032: 0x985A, - 49244 - 44032: 0xBBDB, - 49245 - 44032: 0x9861, - 49246 - 44032: 0x9862, - 49247 - 44032: 0x9863, - 49248 - 44032: 0xBBDC, - 49249 - 44032: 0x9864, - 49250 - 44032: 0x9865, - 49251 - 44032: 0x9866, - 49252 - 44032: 0x9867, - 49253 - 44032: 0x9868, - 49254 - 44032: 0x9869, - 49255 - 44032: 0x986A, - 49256 - 44032: 0xBBDD, - 49257 - 44032: 0xBBDE, - 49258 - 44032: 0x986B, - 49259 - 44032: 0x986C, - 49260 - 44032: 0x986D, - 49261 - 44032: 0x986E, - 49262 - 44032: 0x986F, - 49263 - 44032: 0x9870, - 49264 - 44032: 0x9871, - 49265 - 44032: 0x9872, - 49266 - 44032: 0x9873, - 49267 - 44032: 0x9874, - 49268 - 44032: 0x9875, - 49269 - 44032: 0x9876, - 49270 - 44032: 0x9877, - 49271 - 44032: 0x9878, - 49272 - 44032: 0x9879, - 49273 - 44032: 0x987A, - 49274 - 44032: 0x9881, - 49275 - 44032: 0x9882, - 49276 - 44032: 0x9883, - 49277 - 44032: 0x9884, - 49278 - 44032: 0x9885, - 49279 - 44032: 0x9886, - 49280 - 44032: 0x9887, - 49281 - 44032: 0x9888, - 49282 - 44032: 0x9889, - 49283 - 44032: 0x988A, - 49284 - 44032: 0x988B, - 49285 - 44032: 0x988C, - 49286 - 44032: 0x988D, - 49287 - 44032: 0x988E, - 49288 - 44032: 0x988F, - 49289 - 44032: 0x9890, - 49290 - 44032: 0x9891, - 49291 - 44032: 0x9892, - 49292 - 44032: 0x9893, - 49293 - 44032: 0x9894, - 49294 - 44032: 0x9895, - 49295 - 44032: 0x9896, - 49296 - 44032: 0xBBDF, - 49297 - 44032: 0xBBE0, - 49298 - 44032: 0x9897, - 49299 - 44032: 0x9898, - 49300 - 44032: 0xBBE1, - 49301 - 44032: 0x9899, - 49302 - 44032: 0x989A, - 49303 - 44032: 0x989B, - 49304 - 44032: 0xBBE2, - 49305 - 44032: 0x989C, - 49306 - 44032: 0x989D, - 49307 - 44032: 0x989E, - 49308 - 44032: 0x989F, - 49309 - 44032: 0x98A0, - 49310 - 44032: 0x98A1, - 49311 - 44032: 0x98A2, - 49312 - 44032: 0xBBE3, - 49313 - 44032: 0xBBE4, - 49314 - 44032: 0x98A3, - 49315 - 44032: 0xBBE5, - 49316 - 44032: 0x98A4, - 49317 - 44032: 0xBBE6, - 49318 - 44032: 0x98A5, - 49319 - 44032: 0x98A6, - 49320 - 44032: 0x98A7, - 49321 - 44032: 0x98A8, - 49322 - 44032: 0x98A9, - 49323 - 44032: 0x98AA, - 49324 - 44032: 0xBBE7, - 49325 - 44032: 0xBBE8, - 49326 - 44032: 0x98AB, - 49327 - 44032: 0xBBE9, - 49328 - 44032: 0xBBEA, - 49329 - 44032: 0x98AC, - 49330 - 44032: 0x98AD, - 49331 - 44032: 0xBBEB, - 49332 - 44032: 0xBBEC, - 49333 - 44032: 0xBBED, - 49334 - 44032: 0xBBEE, - 49335 - 44032: 0x98AE, - 49336 - 44032: 0x98AF, - 49337 - 44032: 0x98B0, - 49338 - 44032: 0x98B1, - 49339 - 44032: 0x98B2, - 49340 - 44032: 0xBBEF, - 49341 - 44032: 0xBBF0, - 49342 - 44032: 0x98B3, - 49343 - 44032: 0xBBF1, - 49344 - 44032: 0xBBF2, - 49345 - 44032: 0xBBF3, - 49346 - 44032: 0x98B4, - 49347 - 44032: 0x98B5, - 49348 - 44032: 0x98B6, - 49349 - 44032: 0xBBF4, - 49350 - 44032: 0x98B7, - 49351 - 44032: 0x98B8, - 49352 - 44032: 0xBBF5, - 49353 - 44032: 0xBBF6, - 49354 - 44032: 0x98B9, - 49355 - 44032: 0x98BA, - 49356 - 44032: 0xBBF7, - 49357 - 44032: 0x98BB, - 49358 - 44032: 0x98BC, - 49359 - 44032: 0x98BD, - 49360 - 44032: 0xBBF8, - 49361 - 44032: 0x98BE, - 49362 - 44032: 0x98BF, - 49363 - 44032: 0x98C0, - 49364 - 44032: 0x98C1, - 49365 - 44032: 0x98C2, - 49366 - 44032: 0x98C3, - 49367 - 44032: 0x98C4, - 49368 - 44032: 0xBBF9, - 49369 - 44032: 0xBBFA, - 49370 - 44032: 0x98C5, - 49371 - 44032: 0xBBFB, - 49372 - 44032: 0xBBFC, - 49373 - 44032: 0xBBFD, - 49374 - 44032: 0x98C6, - 49375 - 44032: 0x98C7, - 49376 - 44032: 0x98C8, - 49377 - 44032: 0x98C9, - 49378 - 44032: 0x98CA, - 49379 - 44032: 0x98CB, - 49380 - 44032: 0xBBFE, - 49381 - 44032: 0xBCA1, - 49382 - 44032: 0x98CC, - 49383 - 44032: 0x98CD, - 49384 - 44032: 0xBCA2, - 49385 - 44032: 0x98CE, - 49386 - 44032: 0x98CF, - 49387 - 44032: 0x98D0, - 49388 - 44032: 0xBCA3, - 49389 - 44032: 0x98D1, - 49390 - 44032: 0x98D2, - 49391 - 44032: 0x98D3, - 49392 - 44032: 0x98D4, - 49393 - 44032: 0x98D5, - 49394 - 44032: 0x98D6, - 49395 - 44032: 0x98D7, - 49396 - 44032: 0xBCA4, - 49397 - 44032: 0xBCA5, - 49398 - 44032: 0x98D8, - 49399 - 44032: 0xBCA6, - 49400 - 44032: 0x98D9, - 49401 - 44032: 0xBCA7, - 49402 - 44032: 0x98DA, - 49403 - 44032: 0x98DB, - 49404 - 44032: 0x98DC, - 49405 - 44032: 0x98DD, - 49406 - 44032: 0x98DE, - 49407 - 44032: 0x98DF, - 49408 - 44032: 0xBCA8, - 49409 - 44032: 0x98E0, - 49410 - 44032: 0x98E1, - 49411 - 44032: 0x98E2, - 49412 - 44032: 0xBCA9, - 49413 - 44032: 0x98E3, - 49414 - 44032: 0x98E4, - 49415 - 44032: 0x98E5, - 49416 - 44032: 0xBCAA, - 49417 - 44032: 0x98E6, - 49418 - 44032: 0x98E7, - 49419 - 44032: 0x98E8, - 49420 - 44032: 0x98E9, - 49421 - 44032: 0x98EA, - 49422 - 44032: 0x98EB, - 49423 - 44032: 0x98EC, - 49424 - 44032: 0xBCAB, - 49425 - 44032: 0x98ED, - 49426 - 44032: 0x98EE, - 49427 - 44032: 0x98EF, - 49428 - 44032: 0x98F0, - 49429 - 44032: 0xBCAC, - 49430 - 44032: 0x98F1, - 49431 - 44032: 0x98F2, - 49432 - 44032: 0x98F3, - 49433 - 44032: 0x98F4, - 49434 - 44032: 0x98F5, - 49435 - 44032: 0x98F6, - 49436 - 44032: 0xBCAD, - 49437 - 44032: 0xBCAE, - 49438 - 44032: 0xBCAF, - 49439 - 44032: 0xBCB0, - 49440 - 44032: 0xBCB1, - 49441 - 44032: 0x98F7, - 49442 - 44032: 0x98F8, - 49443 - 44032: 0xBCB2, - 49444 - 44032: 0xBCB3, - 49445 - 44032: 0x98F9, - 49446 - 44032: 0xBCB4, - 49447 - 44032: 0xBCB5, - 49448 - 44032: 0x98FA, - 49449 - 44032: 0x98FB, - 49450 - 44032: 0x98FC, - 49451 - 44032: 0x98FD, - 49452 - 44032: 0xBCB6, - 49453 - 44032: 0xBCB7, - 49454 - 44032: 0x98FE, - 49455 - 44032: 0xBCB8, - 49456 - 44032: 0xBCB9, - 49457 - 44032: 0xBCBA, - 49458 - 44032: 0x9941, - 49459 - 44032: 0x9942, - 49460 - 44032: 0x9943, - 49461 - 44032: 0x9944, - 49462 - 44032: 0xBCBB, - 49463 - 44032: 0x9945, - 49464 - 44032: 0xBCBC, - 49465 - 44032: 0xBCBD, - 49466 - 44032: 0x9946, - 49467 - 44032: 0x9947, - 49468 - 44032: 0xBCBE, - 49469 - 44032: 0x9948, - 49470 - 44032: 0x9949, - 49471 - 44032: 0x994A, - 49472 - 44032: 0xBCBF, - 49473 - 44032: 0x994B, - 49474 - 44032: 0x994C, - 49475 - 44032: 0x994D, - 49476 - 44032: 0x994E, - 49477 - 44032: 0x994F, - 49478 - 44032: 0x9950, - 49479 - 44032: 0x9951, - 49480 - 44032: 0xBCC0, - 49481 - 44032: 0xBCC1, - 49482 - 44032: 0x9952, - 49483 - 44032: 0xBCC2, - 49484 - 44032: 0xBCC3, - 49485 - 44032: 0xBCC4, - 49486 - 44032: 0x9953, - 49487 - 44032: 0x9954, - 49488 - 44032: 0x9955, - 49489 - 44032: 0x9956, - 49490 - 44032: 0x9957, - 49491 - 44032: 0x9958, - 49492 - 44032: 0xBCC5, - 49493 - 44032: 0xBCC6, - 49494 - 44032: 0x9959, - 49495 - 44032: 0x995A, - 49496 - 44032: 0xBCC7, - 49497 - 44032: 0x9961, - 49498 - 44032: 0x9962, - 49499 - 44032: 0x9963, - 49500 - 44032: 0xBCC8, - 49501 - 44032: 0x9964, - 49502 - 44032: 0x9965, - 49503 - 44032: 0x9966, - 49504 - 44032: 0x9967, - 49505 - 44032: 0x9968, - 49506 - 44032: 0x9969, - 49507 - 44032: 0x996A, - 49508 - 44032: 0xBCC9, - 49509 - 44032: 0xBCCA, - 49510 - 44032: 0x996B, - 49511 - 44032: 0xBCCB, - 49512 - 44032: 0xBCCC, - 49513 - 44032: 0xBCCD, - 49514 - 44032: 0x996C, - 49515 - 44032: 0x996D, - 49516 - 44032: 0x996E, - 49517 - 44032: 0x996F, - 49518 - 44032: 0x9970, - 49519 - 44032: 0x9971, - 49520 - 44032: 0xBCCE, - 49521 - 44032: 0x9972, - 49522 - 44032: 0x9973, - 49523 - 44032: 0x9974, - 49524 - 44032: 0xBCCF, - 49525 - 44032: 0x9975, - 49526 - 44032: 0x9976, - 49527 - 44032: 0x9977, - 49528 - 44032: 0xBCD0, - 49529 - 44032: 0x9978, - 49530 - 44032: 0x9979, - 49531 - 44032: 0x997A, - 49532 - 44032: 0x9981, - 49533 - 44032: 0x9982, - 49534 - 44032: 0x9983, - 49535 - 44032: 0x9984, - 49536 - 44032: 0x9985, - 49537 - 44032: 0x9986, - 49538 - 44032: 0x9987, - 49539 - 44032: 0x9988, - 49540 - 44032: 0x9989, - 49541 - 44032: 0xBCD1, - 49542 - 44032: 0x998A, - 49543 - 44032: 0x998B, - 49544 - 44032: 0x998C, - 49545 - 44032: 0x998D, - 49546 - 44032: 0x998E, - 49547 - 44032: 0x998F, - 49548 - 44032: 0xBCD2, - 49549 - 44032: 0xBCD3, - 49550 - 44032: 0xBCD4, - 49551 - 44032: 0x9990, - 49552 - 44032: 0xBCD5, - 49553 - 44032: 0x9991, - 49554 - 44032: 0x9992, - 49555 - 44032: 0x9993, - 49556 - 44032: 0xBCD6, - 49557 - 44032: 0x9994, - 49558 - 44032: 0xBCD7, - 49559 - 44032: 0x9995, - 49560 - 44032: 0x9996, - 49561 - 44032: 0x9997, - 49562 - 44032: 0x9998, - 49563 - 44032: 0x9999, - 49564 - 44032: 0xBCD8, - 49565 - 44032: 0xBCD9, - 49566 - 44032: 0x999A, - 49567 - 44032: 0xBCDA, - 49568 - 44032: 0x999B, - 49569 - 44032: 0xBCDB, - 49570 - 44032: 0x999C, - 49571 - 44032: 0x999D, - 49572 - 44032: 0x999E, - 49573 - 44032: 0xBCDC, - 49574 - 44032: 0x999F, - 49575 - 44032: 0x99A0, - 49576 - 44032: 0xBCDD, - 49577 - 44032: 0xBCDE, - 49578 - 44032: 0x99A1, - 49579 - 44032: 0x99A2, - 49580 - 44032: 0xBCDF, - 49581 - 44032: 0x99A3, - 49582 - 44032: 0x99A4, - 49583 - 44032: 0x99A5, - 49584 - 44032: 0xBCE0, - 49585 - 44032: 0x99A6, - 49586 - 44032: 0x99A7, - 49587 - 44032: 0x99A8, - 49588 - 44032: 0x99A9, - 49589 - 44032: 0x99AA, - 49590 - 44032: 0x99AB, - 49591 - 44032: 0x99AC, - 49592 - 44032: 0x99AD, - 49593 - 44032: 0x99AE, - 49594 - 44032: 0x99AF, - 49595 - 44032: 0x99B0, - 49596 - 44032: 0x99B1, - 49597 - 44032: 0xBCE1, - 49598 - 44032: 0x99B2, - 49599 - 44032: 0x99B3, - 49600 - 44032: 0x99B4, - 49601 - 44032: 0x99B5, - 49602 - 44032: 0x99B6, - 49603 - 44032: 0x99B7, - 49604 - 44032: 0xBCE2, - 49605 - 44032: 0x99B8, - 49606 - 44032: 0x99B9, - 49607 - 44032: 0x99BA, - 49608 - 44032: 0xBCE3, - 49609 - 44032: 0x99BB, - 49610 - 44032: 0x99BC, - 49611 - 44032: 0x99BD, - 49612 - 44032: 0xBCE4, - 49613 - 44032: 0x99BE, - 49614 - 44032: 0x99BF, - 49615 - 44032: 0x99C0, - 49616 - 44032: 0x99C1, - 49617 - 44032: 0x99C2, - 49618 - 44032: 0x99C3, - 49619 - 44032: 0x99C4, - 49620 - 44032: 0xBCE5, - 49621 - 44032: 0x99C5, - 49622 - 44032: 0x99C6, - 49623 - 44032: 0xBCE6, - 49624 - 44032: 0xBCE7, - 49625 - 44032: 0x99C7, - 49626 - 44032: 0x99C8, - 49627 - 44032: 0x99C9, - 49628 - 44032: 0x99CA, - 49629 - 44032: 0x99CB, - 49630 - 44032: 0x99CC, - 49631 - 44032: 0x99CD, - 49632 - 44032: 0xBCE8, - 49633 - 44032: 0x99CE, - 49634 - 44032: 0x99CF, - 49635 - 44032: 0x99D0, - 49636 - 44032: 0xBCE9, - 49637 - 44032: 0x99D1, - 49638 - 44032: 0x99D2, - 49639 - 44032: 0x99D3, - 49640 - 44032: 0xBCEA, - 49641 - 44032: 0x99D4, - 49642 - 44032: 0x99D5, - 49643 - 44032: 0x99D6, - 49644 - 44032: 0x99D7, - 49645 - 44032: 0x99D8, - 49646 - 44032: 0x99D9, - 49647 - 44032: 0x99DA, - 49648 - 44032: 0xBCEB, - 49649 - 44032: 0xBCEC, - 49650 - 44032: 0x99DB, - 49651 - 44032: 0xBCED, - 49652 - 44032: 0x99DC, - 49653 - 44032: 0x99DD, - 49654 - 44032: 0x99DE, - 49655 - 44032: 0x99DF, - 49656 - 44032: 0x99E0, - 49657 - 44032: 0x99E1, - 49658 - 44032: 0x99E2, - 49659 - 44032: 0x99E3, - 49660 - 44032: 0xBCEE, - 49661 - 44032: 0xBCEF, - 49662 - 44032: 0x99E4, - 49663 - 44032: 0x99E5, - 49664 - 44032: 0xBCF0, - 49665 - 44032: 0x99E6, - 49666 - 44032: 0x99E7, - 49667 - 44032: 0x99E8, - 49668 - 44032: 0xBCF1, - 49669 - 44032: 0x99E9, - 49670 - 44032: 0x99EA, - 49671 - 44032: 0x99EB, - 49672 - 44032: 0x99EC, - 49673 - 44032: 0x99ED, - 49674 - 44032: 0x99EE, - 49675 - 44032: 0x99EF, - 49676 - 44032: 0xBCF2, - 49677 - 44032: 0xBCF3, - 49678 - 44032: 0x99F0, - 49679 - 44032: 0xBCF4, - 49680 - 44032: 0x99F1, - 49681 - 44032: 0xBCF5, - 49682 - 44032: 0x99F2, - 49683 - 44032: 0x99F3, - 49684 - 44032: 0x99F4, - 49685 - 44032: 0x99F5, - 49686 - 44032: 0x99F6, - 49687 - 44032: 0x99F7, - 49688 - 44032: 0xBCF6, - 49689 - 44032: 0xBCF7, - 49690 - 44032: 0x99F8, - 49691 - 44032: 0x99F9, - 49692 - 44032: 0xBCF8, - 49693 - 44032: 0x99FA, - 49694 - 44032: 0x99FB, - 49695 - 44032: 0xBCF9, - 49696 - 44032: 0xBCFA, - 49697 - 44032: 0x99FC, - 49698 - 44032: 0x99FD, - 49699 - 44032: 0x99FE, - 49700 - 44032: 0x9A41, - 49701 - 44032: 0x9A42, - 49702 - 44032: 0x9A43, - 49703 - 44032: 0x9A44, - 49704 - 44032: 0xBCFB, - 49705 - 44032: 0xBCFC, - 49706 - 44032: 0x9A45, - 49707 - 44032: 0xBCFD, - 49708 - 44032: 0x9A46, - 49709 - 44032: 0xBCFE, - 49710 - 44032: 0x9A47, - 49711 - 44032: 0xBDA1, - 49712 - 44032: 0x9A48, - 49713 - 44032: 0xBDA2, - 49714 - 44032: 0xBDA3, - 49715 - 44032: 0x9A49, - 49716 - 44032: 0xBDA4, - 49717 - 44032: 0x9A4A, - 49718 - 44032: 0x9A4B, - 49719 - 44032: 0x9A4C, - 49720 - 44032: 0x9A4D, - 49721 - 44032: 0x9A4E, - 49722 - 44032: 0x9A4F, - 49723 - 44032: 0x9A50, - 49724 - 44032: 0x9A51, - 49725 - 44032: 0x9A52, - 49726 - 44032: 0x9A53, - 49727 - 44032: 0x9A54, - 49728 - 44032: 0x9A55, - 49729 - 44032: 0x9A56, - 49730 - 44032: 0x9A57, - 49731 - 44032: 0x9A58, - 49732 - 44032: 0x9A59, - 49733 - 44032: 0x9A5A, - 49734 - 44032: 0x9A61, - 49735 - 44032: 0x9A62, - 49736 - 44032: 0xBDA5, - 49737 - 44032: 0x9A63, - 49738 - 44032: 0x9A64, - 49739 - 44032: 0x9A65, - 49740 - 44032: 0x9A66, - 49741 - 44032: 0x9A67, - 49742 - 44032: 0x9A68, - 49743 - 44032: 0x9A69, - 49744 - 44032: 0xBDA6, - 49745 - 44032: 0xBDA7, - 49746 - 44032: 0x9A6A, - 49747 - 44032: 0x9A6B, - 49748 - 44032: 0xBDA8, - 49749 - 44032: 0x9A6C, - 49750 - 44032: 0x9A6D, - 49751 - 44032: 0x9A6E, - 49752 - 44032: 0xBDA9, - 49753 - 44032: 0x9A6F, - 49754 - 44032: 0x9A70, - 49755 - 44032: 0x9A71, - 49756 - 44032: 0x9A72, - 49757 - 44032: 0x9A73, - 49758 - 44032: 0x9A74, - 49759 - 44032: 0x9A75, - 49760 - 44032: 0xBDAA, - 49761 - 44032: 0x9A76, - 49762 - 44032: 0x9A77, - 49763 - 44032: 0x9A78, - 49764 - 44032: 0x9A79, - 49765 - 44032: 0xBDAB, - 49766 - 44032: 0x9A7A, - 49767 - 44032: 0x9A81, - 49768 - 44032: 0x9A82, - 49769 - 44032: 0x9A83, - 49770 - 44032: 0x9A84, - 49771 - 44032: 0x9A85, - 49772 - 44032: 0xBDAC, - 49773 - 44032: 0xBDAD, - 49774 - 44032: 0x9A86, - 49775 - 44032: 0x9A87, - 49776 - 44032: 0xBDAE, - 49777 - 44032: 0x9A88, - 49778 - 44032: 0x9A89, - 49779 - 44032: 0x9A8A, - 49780 - 44032: 0xBDAF, - 49781 - 44032: 0x9A8B, - 49782 - 44032: 0x9A8C, - 49783 - 44032: 0x9A8D, - 49784 - 44032: 0x9A8E, - 49785 - 44032: 0x9A8F, - 49786 - 44032: 0x9A90, - 49787 - 44032: 0x9A91, - 49788 - 44032: 0xBDB0, - 49789 - 44032: 0xBDB1, - 49790 - 44032: 0x9A92, - 49791 - 44032: 0xBDB2, - 49792 - 44032: 0x9A93, - 49793 - 44032: 0xBDB3, - 49794 - 44032: 0x9A94, - 49795 - 44032: 0x9A95, - 49796 - 44032: 0x9A96, - 49797 - 44032: 0x9A97, - 49798 - 44032: 0x9A98, - 49799 - 44032: 0x9A99, - 49800 - 44032: 0xBDB4, - 49801 - 44032: 0xBDB5, - 49802 - 44032: 0x9A9A, - 49803 - 44032: 0x9A9B, - 49804 - 44032: 0x9A9C, - 49805 - 44032: 0x9A9D, - 49806 - 44032: 0x9A9E, - 49807 - 44032: 0x9A9F, - 49808 - 44032: 0xBDB6, - 49809 - 44032: 0x9AA0, - 49810 - 44032: 0x9AA1, - 49811 - 44032: 0x9AA2, - 49812 - 44032: 0x9AA3, - 49813 - 44032: 0x9AA4, - 49814 - 44032: 0x9AA5, - 49815 - 44032: 0x9AA6, - 49816 - 44032: 0xBDB7, - 49817 - 44032: 0x9AA7, - 49818 - 44032: 0x9AA8, - 49819 - 44032: 0xBDB8, - 49820 - 44032: 0x9AA9, - 49821 - 44032: 0xBDB9, - 49822 - 44032: 0x9AAA, - 49823 - 44032: 0x9AAB, - 49824 - 44032: 0x9AAC, - 49825 - 44032: 0x9AAD, - 49826 - 44032: 0x9AAE, - 49827 - 44032: 0x9AAF, - 49828 - 44032: 0xBDBA, - 49829 - 44032: 0xBDBB, - 49830 - 44032: 0x9AB0, - 49831 - 44032: 0x9AB1, - 49832 - 44032: 0xBDBC, - 49833 - 44032: 0x9AB2, - 49834 - 44032: 0x9AB3, - 49835 - 44032: 0x9AB4, - 49836 - 44032: 0xBDBD, - 49837 - 44032: 0xBDBE, - 49838 - 44032: 0x9AB5, - 49839 - 44032: 0x9AB6, - 49840 - 44032: 0x9AB7, - 49841 - 44032: 0x9AB8, - 49842 - 44032: 0x9AB9, - 49843 - 44032: 0x9ABA, - 49844 - 44032: 0xBDBF, - 49845 - 44032: 0xBDC0, - 49846 - 44032: 0x9ABB, - 49847 - 44032: 0xBDC1, - 49848 - 44032: 0x9ABC, - 49849 - 44032: 0xBDC2, - 49850 - 44032: 0x9ABD, - 49851 - 44032: 0x9ABE, - 49852 - 44032: 0x9ABF, - 49853 - 44032: 0x9AC0, - 49854 - 44032: 0x9AC1, - 49855 - 44032: 0x9AC2, - 49856 - 44032: 0x9AC3, - 49857 - 44032: 0x9AC4, - 49858 - 44032: 0x9AC5, - 49859 - 44032: 0x9AC6, - 49860 - 44032: 0x9AC7, - 49861 - 44032: 0x9AC8, - 49862 - 44032: 0x9AC9, - 49863 - 44032: 0x9ACA, - 49864 - 44032: 0x9ACB, - 49865 - 44032: 0x9ACC, - 49866 - 44032: 0x9ACD, - 49867 - 44032: 0x9ACE, - 49868 - 44032: 0x9ACF, - 49869 - 44032: 0x9AD0, - 49870 - 44032: 0x9AD1, - 49871 - 44032: 0x9AD2, - 49872 - 44032: 0x9AD3, - 49873 - 44032: 0x9AD4, - 49874 - 44032: 0x9AD5, - 49875 - 44032: 0x9AD6, - 49876 - 44032: 0x9AD7, - 49877 - 44032: 0x9AD8, - 49878 - 44032: 0x9AD9, - 49879 - 44032: 0x9ADA, - 49880 - 44032: 0x9ADB, - 49881 - 44032: 0x9ADC, - 49882 - 44032: 0x9ADD, - 49883 - 44032: 0x9ADE, - 49884 - 44032: 0xBDC3, - 49885 - 44032: 0xBDC4, - 49886 - 44032: 0x9ADF, - 49887 - 44032: 0x9AE0, - 49888 - 44032: 0xBDC5, - 49889 - 44032: 0x9AE1, - 49890 - 44032: 0x9AE2, - 49891 - 44032: 0xBDC6, - 49892 - 44032: 0xBDC7, - 49893 - 44032: 0x9AE3, - 49894 - 44032: 0x9AE4, - 49895 - 44032: 0x9AE5, - 49896 - 44032: 0x9AE6, - 49897 - 44032: 0x9AE7, - 49898 - 44032: 0x9AE8, - 49899 - 44032: 0xBDC8, - 49900 - 44032: 0xBDC9, - 49901 - 44032: 0xBDCA, - 49902 - 44032: 0x9AE9, - 49903 - 44032: 0xBDCB, - 49904 - 44032: 0x9AEA, - 49905 - 44032: 0xBDCC, - 49906 - 44032: 0x9AEB, - 49907 - 44032: 0x9AEC, - 49908 - 44032: 0x9AED, - 49909 - 44032: 0x9AEE, - 49910 - 44032: 0xBDCD, - 49911 - 44032: 0x9AEF, - 49912 - 44032: 0xBDCE, - 49913 - 44032: 0xBDCF, - 49914 - 44032: 0x9AF0, - 49915 - 44032: 0xBDD0, - 49916 - 44032: 0xBDD1, - 49917 - 44032: 0x9AF1, - 49918 - 44032: 0x9AF2, - 49919 - 44032: 0x9AF3, - 49920 - 44032: 0xBDD2, - 49921 - 44032: 0x9AF4, - 49922 - 44032: 0x9AF5, - 49923 - 44032: 0x9AF6, - 49924 - 44032: 0x9AF7, - 49925 - 44032: 0x9AF8, - 49926 - 44032: 0x9AF9, - 49927 - 44032: 0x9AFA, - 49928 - 44032: 0xBDD3, - 49929 - 44032: 0xBDD4, - 49930 - 44032: 0x9AFB, - 49931 - 44032: 0x9AFC, - 49932 - 44032: 0xBDD5, - 49933 - 44032: 0xBDD6, - 49934 - 44032: 0x9AFD, - 49935 - 44032: 0x9AFE, - 49936 - 44032: 0x9B41, - 49937 - 44032: 0x9B42, - 49938 - 44032: 0x9B43, - 49939 - 44032: 0xBDD7, - 49940 - 44032: 0xBDD8, - 49941 - 44032: 0xBDD9, - 49942 - 44032: 0x9B44, - 49943 - 44032: 0x9B45, - 49944 - 44032: 0xBDDA, - 49945 - 44032: 0x9B46, - 49946 - 44032: 0x9B47, - 49947 - 44032: 0x9B48, - 49948 - 44032: 0xBDDB, - 49949 - 44032: 0x9B49, - 49950 - 44032: 0x9B4A, - 49951 - 44032: 0x9B4B, - 49952 - 44032: 0x9B4C, - 49953 - 44032: 0x9B4D, - 49954 - 44032: 0x9B4E, - 49955 - 44032: 0x9B4F, - 49956 - 44032: 0xBDDC, - 49957 - 44032: 0xBDDD, - 49958 - 44032: 0x9B50, - 49959 - 44032: 0x9B51, - 49960 - 44032: 0xBDDE, - 49961 - 44032: 0xBDDF, - 49962 - 44032: 0x9B52, - 49963 - 44032: 0x9B53, - 49964 - 44032: 0x9B54, - 49965 - 44032: 0x9B55, - 49966 - 44032: 0x9B56, - 49967 - 44032: 0x9B57, - 49968 - 44032: 0x9B58, - 49969 - 44032: 0x9B59, - 49970 - 44032: 0x9B5A, - 49971 - 44032: 0x9B61, - 49972 - 44032: 0x9B62, - 49973 - 44032: 0x9B63, - 49974 - 44032: 0x9B64, - 49975 - 44032: 0x9B65, - 49976 - 44032: 0x9B66, - 49977 - 44032: 0x9B67, - 49978 - 44032: 0x9B68, - 49979 - 44032: 0x9B69, - 49980 - 44032: 0x9B6A, - 49981 - 44032: 0x9B6B, - 49982 - 44032: 0x9B6C, - 49983 - 44032: 0x9B6D, - 49984 - 44032: 0x9B6E, - 49985 - 44032: 0x9B6F, - 49986 - 44032: 0x9B70, - 49987 - 44032: 0x9B71, - 49988 - 44032: 0x9B72, - 49989 - 44032: 0xBDE0, - 49990 - 44032: 0x9B73, - 49991 - 44032: 0x9B74, - 49992 - 44032: 0x9B75, - 49993 - 44032: 0x9B76, - 49994 - 44032: 0x9B77, - 49995 - 44032: 0x9B78, - 49996 - 44032: 0x9B79, - 49997 - 44032: 0x9B7A, - 49998 - 44032: 0x9B81, - 49999 - 44032: 0x9B82, - 50000 - 44032: 0x9B83, - 50001 - 44032: 0x9B84, - 50002 - 44032: 0x9B85, - 50003 - 44032: 0x9B86, - 50004 - 44032: 0x9B87, - 50005 - 44032: 0x9B88, - 50006 - 44032: 0x9B89, - 50007 - 44032: 0x9B8A, - 50008 - 44032: 0x9B8B, - 50009 - 44032: 0x9B8C, - 50010 - 44032: 0x9B8D, - 50011 - 44032: 0x9B8E, - 50012 - 44032: 0x9B8F, - 50013 - 44032: 0x9B90, - 50014 - 44032: 0x9B91, - 50015 - 44032: 0x9B92, - 50016 - 44032: 0x9B93, - 50017 - 44032: 0x9B94, - 50018 - 44032: 0x9B95, - 50019 - 44032: 0x9B96, - 50020 - 44032: 0x9B97, - 50021 - 44032: 0x9B98, - 50022 - 44032: 0x9B99, - 50023 - 44032: 0x9B9A, - 50024 - 44032: 0xBDE1, - 50025 - 44032: 0xBDE2, - 50026 - 44032: 0x9B9B, - 50027 - 44032: 0x9B9C, - 50028 - 44032: 0xBDE3, - 50029 - 44032: 0x9B9D, - 50030 - 44032: 0x9B9E, - 50031 - 44032: 0x9B9F, - 50032 - 44032: 0xBDE4, - 50033 - 44032: 0x9BA0, - 50034 - 44032: 0xBDE5, - 50035 - 44032: 0x9BA1, - 50036 - 44032: 0x9BA2, - 50037 - 44032: 0x9BA3, - 50038 - 44032: 0x9BA4, - 50039 - 44032: 0x9BA5, - 50040 - 44032: 0xBDE6, - 50041 - 44032: 0xBDE7, - 50042 - 44032: 0x9BA6, - 50043 - 44032: 0x9BA7, - 50044 - 44032: 0xBDE8, - 50045 - 44032: 0xBDE9, - 50046 - 44032: 0x9BA8, - 50047 - 44032: 0x9BA9, - 50048 - 44032: 0x9BAA, - 50049 - 44032: 0x9BAB, - 50050 - 44032: 0x9BAC, - 50051 - 44032: 0x9BAD, - 50052 - 44032: 0xBDEA, - 50053 - 44032: 0x9BAE, - 50054 - 44032: 0x9BAF, - 50055 - 44032: 0x9BB0, - 50056 - 44032: 0xBDEB, - 50057 - 44032: 0x9BB1, - 50058 - 44032: 0x9BB2, - 50059 - 44032: 0x9BB3, - 50060 - 44032: 0xBDEC, - 50061 - 44032: 0x9BB4, - 50062 - 44032: 0x9BB5, - 50063 - 44032: 0x9BB6, - 50064 - 44032: 0x9BB7, - 50065 - 44032: 0x9BB8, - 50066 - 44032: 0x9BB9, - 50067 - 44032: 0x9BBA, - 50068 - 44032: 0x9BBB, - 50069 - 44032: 0x9BBC, - 50070 - 44032: 0x9BBD, - 50071 - 44032: 0x9BBE, - 50072 - 44032: 0x9BBF, - 50073 - 44032: 0x9BC0, - 50074 - 44032: 0x9BC1, - 50075 - 44032: 0x9BC2, - 50076 - 44032: 0x9BC3, - 50077 - 44032: 0x9BC4, - 50078 - 44032: 0x9BC5, - 50079 - 44032: 0x9BC6, - 50080 - 44032: 0x9BC7, - 50081 - 44032: 0x9BC8, - 50082 - 44032: 0x9BC9, - 50083 - 44032: 0x9BCA, - 50084 - 44032: 0x9BCB, - 50085 - 44032: 0x9BCC, - 50086 - 44032: 0x9BCD, - 50087 - 44032: 0x9BCE, - 50088 - 44032: 0x9BCF, - 50089 - 44032: 0x9BD0, - 50090 - 44032: 0x9BD1, - 50091 - 44032: 0x9BD2, - 50092 - 44032: 0x9BD3, - 50093 - 44032: 0x9BD4, - 50094 - 44032: 0x9BD5, - 50095 - 44032: 0x9BD6, - 50096 - 44032: 0x9BD7, - 50097 - 44032: 0x9BD8, - 50098 - 44032: 0x9BD9, - 50099 - 44032: 0x9BDA, - 50100 - 44032: 0x9BDB, - 50101 - 44032: 0x9BDC, - 50102 - 44032: 0x9BDD, - 50103 - 44032: 0x9BDE, - 50104 - 44032: 0x9BDF, - 50105 - 44032: 0x9BE0, - 50106 - 44032: 0x9BE1, - 50107 - 44032: 0x9BE2, - 50108 - 44032: 0x9BE3, - 50109 - 44032: 0x9BE4, - 50110 - 44032: 0x9BE5, - 50111 - 44032: 0x9BE6, - 50112 - 44032: 0xBDED, - 50113 - 44032: 0x9BE7, - 50114 - 44032: 0x9BE8, - 50115 - 44032: 0x9BE9, - 50116 - 44032: 0x9BEA, - 50117 - 44032: 0x9BEB, - 50118 - 44032: 0x9BEC, - 50119 - 44032: 0x9BED, - 50120 - 44032: 0x9BEE, - 50121 - 44032: 0x9BEF, - 50122 - 44032: 0x9BF0, - 50123 - 44032: 0x9BF1, - 50124 - 44032: 0x9BF2, - 50125 - 44032: 0x9BF3, - 50126 - 44032: 0x9BF4, - 50127 - 44032: 0x9BF5, - 50128 - 44032: 0x9BF6, - 50129 - 44032: 0x9BF7, - 50130 - 44032: 0x9BF8, - 50131 - 44032: 0x9BF9, - 50132 - 44032: 0x9BFA, - 50133 - 44032: 0x9BFB, - 50134 - 44032: 0x9BFC, - 50135 - 44032: 0x9BFD, - 50136 - 44032: 0xBDEE, - 50137 - 44032: 0xBDEF, - 50138 - 44032: 0x9BFE, - 50139 - 44032: 0x9C41, - 50140 - 44032: 0xBDF0, - 50141 - 44032: 0x9C42, - 50142 - 44032: 0x9C43, - 50143 - 44032: 0xBDF1, - 50144 - 44032: 0xBDF2, - 50145 - 44032: 0x9C44, - 50146 - 44032: 0xBDF3, - 50147 - 44032: 0x9C45, - 50148 - 44032: 0x9C46, - 50149 - 44032: 0x9C47, - 50150 - 44032: 0x9C48, - 50151 - 44032: 0x9C49, - 50152 - 44032: 0xBDF4, - 50153 - 44032: 0xBDF5, - 50154 - 44032: 0x9C4A, - 50155 - 44032: 0x9C4B, - 50156 - 44032: 0x9C4C, - 50157 - 44032: 0xBDF6, - 50158 - 44032: 0x9C4D, - 50159 - 44032: 0x9C4E, - 50160 - 44032: 0x9C4F, - 50161 - 44032: 0x9C50, - 50162 - 44032: 0x9C51, - 50163 - 44032: 0x9C52, - 50164 - 44032: 0xBDF7, - 50165 - 44032: 0xBDF8, - 50166 - 44032: 0x9C53, - 50167 - 44032: 0x9C54, - 50168 - 44032: 0xBDF9, - 50169 - 44032: 0x9C55, - 50170 - 44032: 0x9C56, - 50171 - 44032: 0x9C57, - 50172 - 44032: 0x9C58, - 50173 - 44032: 0x9C59, - 50174 - 44032: 0x9C5A, - 50175 - 44032: 0x9C61, - 50176 - 44032: 0x9C62, - 50177 - 44032: 0x9C63, - 50178 - 44032: 0x9C64, - 50179 - 44032: 0x9C65, - 50180 - 44032: 0x9C66, - 50181 - 44032: 0x9C67, - 50182 - 44032: 0x9C68, - 50183 - 44032: 0x9C69, - 50184 - 44032: 0xBDFA, - 50185 - 44032: 0x9C6A, - 50186 - 44032: 0x9C6B, - 50187 - 44032: 0x9C6C, - 50188 - 44032: 0x9C6D, - 50189 - 44032: 0x9C6E, - 50190 - 44032: 0x9C6F, - 50191 - 44032: 0x9C70, - 50192 - 44032: 0xBDFB, - 50193 - 44032: 0x9C71, - 50194 - 44032: 0x9C72, - 50195 - 44032: 0x9C73, - 50196 - 44032: 0x9C74, - 50197 - 44032: 0x9C75, - 50198 - 44032: 0x9C76, - 50199 - 44032: 0x9C77, - 50200 - 44032: 0x9C78, - 50201 - 44032: 0x9C79, - 50202 - 44032: 0x9C7A, - 50203 - 44032: 0x9C81, - 50204 - 44032: 0x9C82, - 50205 - 44032: 0x9C83, - 50206 - 44032: 0x9C84, - 50207 - 44032: 0x9C85, - 50208 - 44032: 0x9C86, - 50209 - 44032: 0x9C87, - 50210 - 44032: 0x9C88, - 50211 - 44032: 0x9C89, - 50212 - 44032: 0xBDFC, - 50213 - 44032: 0x9C8A, - 50214 - 44032: 0x9C8B, - 50215 - 44032: 0x9C8C, - 50216 - 44032: 0x9C8D, - 50217 - 44032: 0x9C8E, - 50218 - 44032: 0x9C8F, - 50219 - 44032: 0x9C90, - 50220 - 44032: 0xBDFD, - 50221 - 44032: 0x9C91, - 50222 - 44032: 0x9C92, - 50223 - 44032: 0x9C93, - 50224 - 44032: 0xBDFE, - 50225 - 44032: 0x9C94, - 50226 - 44032: 0x9C95, - 50227 - 44032: 0x9C96, - 50228 - 44032: 0xBEA1, - 50229 - 44032: 0x9C97, - 50230 - 44032: 0x9C98, - 50231 - 44032: 0x9C99, - 50232 - 44032: 0x9C9A, - 50233 - 44032: 0x9C9B, - 50234 - 44032: 0x9C9C, - 50235 - 44032: 0x9C9D, - 50236 - 44032: 0xBEA2, - 50237 - 44032: 0xBEA3, - 50238 - 44032: 0x9C9E, - 50239 - 44032: 0x9C9F, - 50240 - 44032: 0x9CA0, - 50241 - 44032: 0x9CA1, - 50242 - 44032: 0x9CA2, - 50243 - 44032: 0x9CA3, - 50244 - 44032: 0x9CA4, - 50245 - 44032: 0x9CA5, - 50246 - 44032: 0x9CA6, - 50247 - 44032: 0x9CA7, - 50248 - 44032: 0xBEA4, - 50249 - 44032: 0x9CA8, - 50250 - 44032: 0x9CA9, - 50251 - 44032: 0x9CAA, - 50252 - 44032: 0x9CAB, - 50253 - 44032: 0x9CAC, - 50254 - 44032: 0x9CAD, - 50255 - 44032: 0x9CAE, - 50256 - 44032: 0x9CAF, - 50257 - 44032: 0x9CB0, - 50258 - 44032: 0x9CB1, - 50259 - 44032: 0x9CB2, - 50260 - 44032: 0x9CB3, - 50261 - 44032: 0x9CB4, - 50262 - 44032: 0x9CB5, - 50263 - 44032: 0x9CB6, - 50264 - 44032: 0x9CB7, - 50265 - 44032: 0x9CB8, - 50266 - 44032: 0x9CB9, - 50267 - 44032: 0x9CBA, - 50268 - 44032: 0x9CBB, - 50269 - 44032: 0x9CBC, - 50270 - 44032: 0x9CBD, - 50271 - 44032: 0x9CBE, - 50272 - 44032: 0x9CBF, - 50273 - 44032: 0x9CC0, - 50274 - 44032: 0x9CC1, - 50275 - 44032: 0x9CC2, - 50276 - 44032: 0xBEA5, - 50277 - 44032: 0xBEA6, - 50278 - 44032: 0x9CC3, - 50279 - 44032: 0x9CC4, - 50280 - 44032: 0xBEA7, - 50281 - 44032: 0x9CC5, - 50282 - 44032: 0x9CC6, - 50283 - 44032: 0x9CC7, - 50284 - 44032: 0xBEA8, - 50285 - 44032: 0x9CC8, - 50286 - 44032: 0x9CC9, - 50287 - 44032: 0x9CCA, - 50288 - 44032: 0x9CCB, - 50289 - 44032: 0x9CCC, - 50290 - 44032: 0x9CCD, - 50291 - 44032: 0x9CCE, - 50292 - 44032: 0xBEA9, - 50293 - 44032: 0xBEAA, - 50294 - 44032: 0x9CCF, - 50295 - 44032: 0x9CD0, - 50296 - 44032: 0x9CD1, - 50297 - 44032: 0xBEAB, - 50298 - 44032: 0x9CD2, - 50299 - 44032: 0x9CD3, - 50300 - 44032: 0x9CD4, - 50301 - 44032: 0x9CD5, - 50302 - 44032: 0x9CD6, - 50303 - 44032: 0x9CD7, - 50304 - 44032: 0xBEAC, - 50305 - 44032: 0x9CD8, - 50306 - 44032: 0x9CD9, - 50307 - 44032: 0x9CDA, - 50308 - 44032: 0x9CDB, - 50309 - 44032: 0x9CDC, - 50310 - 44032: 0x9CDD, - 50311 - 44032: 0x9CDE, - 50312 - 44032: 0x9CDF, - 50313 - 44032: 0x9CE0, - 50314 - 44032: 0x9CE1, - 50315 - 44032: 0x9CE2, - 50316 - 44032: 0x9CE3, - 50317 - 44032: 0x9CE4, - 50318 - 44032: 0x9CE5, - 50319 - 44032: 0x9CE6, - 50320 - 44032: 0x9CE7, - 50321 - 44032: 0x9CE8, - 50322 - 44032: 0x9CE9, - 50323 - 44032: 0x9CEA, - 50324 - 44032: 0xBEAD, - 50325 - 44032: 0x9CEB, - 50326 - 44032: 0x9CEC, - 50327 - 44032: 0x9CED, - 50328 - 44032: 0x9CEE, - 50329 - 44032: 0x9CEF, - 50330 - 44032: 0x9CF0, - 50331 - 44032: 0x9CF1, - 50332 - 44032: 0xBEAE, - 50333 - 44032: 0x9CF2, - 50334 - 44032: 0x9CF3, - 50335 - 44032: 0x9CF4, - 50336 - 44032: 0x9CF5, - 50337 - 44032: 0x9CF6, - 50338 - 44032: 0x9CF7, - 50339 - 44032: 0x9CF8, - 50340 - 44032: 0x9CF9, - 50341 - 44032: 0x9CFA, - 50342 - 44032: 0x9CFB, - 50343 - 44032: 0x9CFC, - 50344 - 44032: 0x9CFD, - 50345 - 44032: 0x9CFE, - 50346 - 44032: 0x9D41, - 50347 - 44032: 0x9D42, - 50348 - 44032: 0x9D43, - 50349 - 44032: 0x9D44, - 50350 - 44032: 0x9D45, - 50351 - 44032: 0x9D46, - 50352 - 44032: 0x9D47, - 50353 - 44032: 0x9D48, - 50354 - 44032: 0x9D49, - 50355 - 44032: 0x9D4A, - 50356 - 44032: 0x9D4B, - 50357 - 44032: 0x9D4C, - 50358 - 44032: 0x9D4D, - 50359 - 44032: 0x9D4E, - 50360 - 44032: 0xBEAF, - 50361 - 44032: 0x9D4F, - 50362 - 44032: 0x9D50, - 50363 - 44032: 0x9D51, - 50364 - 44032: 0xBEB0, - 50365 - 44032: 0x9D52, - 50366 - 44032: 0x9D53, - 50367 - 44032: 0x9D54, - 50368 - 44032: 0x9D55, - 50369 - 44032: 0x9D56, - 50370 - 44032: 0x9D57, - 50371 - 44032: 0x9D58, - 50372 - 44032: 0x9D59, - 50373 - 44032: 0x9D5A, - 50374 - 44032: 0x9D61, - 50375 - 44032: 0x9D62, - 50376 - 44032: 0x9D63, - 50377 - 44032: 0x9D64, - 50378 - 44032: 0x9D65, - 50379 - 44032: 0x9D66, - 50380 - 44032: 0x9D67, - 50381 - 44032: 0x9D68, - 50382 - 44032: 0x9D69, - 50383 - 44032: 0x9D6A, - 50384 - 44032: 0x9D6B, - 50385 - 44032: 0x9D6C, - 50386 - 44032: 0x9D6D, - 50387 - 44032: 0x9D6E, - 50388 - 44032: 0x9D6F, - 50389 - 44032: 0x9D70, - 50390 - 44032: 0x9D71, - 50391 - 44032: 0x9D72, - 50392 - 44032: 0x9D73, - 50393 - 44032: 0x9D74, - 50394 - 44032: 0x9D75, - 50395 - 44032: 0x9D76, - 50396 - 44032: 0x9D77, - 50397 - 44032: 0x9D78, - 50398 - 44032: 0x9D79, - 50399 - 44032: 0x9D7A, - 50400 - 44032: 0x9D81, - 50401 - 44032: 0x9D82, - 50402 - 44032: 0x9D83, - 50403 - 44032: 0x9D84, - 50404 - 44032: 0x9D85, - 50405 - 44032: 0x9D86, - 50406 - 44032: 0x9D87, - 50407 - 44032: 0x9D88, - 50408 - 44032: 0x9D89, - 50409 - 44032: 0xBEB1, - 50410 - 44032: 0x9D8A, - 50411 - 44032: 0x9D8B, - 50412 - 44032: 0x9D8C, - 50413 - 44032: 0x9D8D, - 50414 - 44032: 0x9D8E, - 50415 - 44032: 0x9D8F, - 50416 - 44032: 0xBEB2, - 50417 - 44032: 0xBEB3, - 50418 - 44032: 0x9D90, - 50419 - 44032: 0x9D91, - 50420 - 44032: 0xBEB4, - 50421 - 44032: 0x9D92, - 50422 - 44032: 0x9D93, - 50423 - 44032: 0x9D94, - 50424 - 44032: 0xBEB5, - 50425 - 44032: 0x9D95, - 50426 - 44032: 0xBEB6, - 50427 - 44032: 0x9D96, - 50428 - 44032: 0x9D97, - 50429 - 44032: 0x9D98, - 50430 - 44032: 0x9D99, - 50431 - 44032: 0xBEB7, - 50432 - 44032: 0xBEB8, - 50433 - 44032: 0xBEB9, - 50434 - 44032: 0x9D9A, - 50435 - 44032: 0x9D9B, - 50436 - 44032: 0x9D9C, - 50437 - 44032: 0x9D9D, - 50438 - 44032: 0x9D9E, - 50439 - 44032: 0x9D9F, - 50440 - 44032: 0x9DA0, - 50441 - 44032: 0x9DA1, - 50442 - 44032: 0x9DA2, - 50443 - 44032: 0x9DA3, - 50444 - 44032: 0xBEBA, - 50445 - 44032: 0x9DA4, - 50446 - 44032: 0x9DA5, - 50447 - 44032: 0x9DA6, - 50448 - 44032: 0xBEBB, - 50449 - 44032: 0x9DA7, - 50450 - 44032: 0x9DA8, - 50451 - 44032: 0x9DA9, - 50452 - 44032: 0xBEBC, - 50453 - 44032: 0x9DAA, - 50454 - 44032: 0x9DAB, - 50455 - 44032: 0x9DAC, - 50456 - 44032: 0x9DAD, - 50457 - 44032: 0x9DAE, - 50458 - 44032: 0x9DAF, - 50459 - 44032: 0x9DB0, - 50460 - 44032: 0xBEBD, - 50461 - 44032: 0x9DB1, - 50462 - 44032: 0x9DB2, - 50463 - 44032: 0x9DB3, - 50464 - 44032: 0x9DB4, - 50465 - 44032: 0x9DB5, - 50466 - 44032: 0x9DB6, - 50467 - 44032: 0x9DB7, - 50468 - 44032: 0x9DB8, - 50469 - 44032: 0x9DB9, - 50470 - 44032: 0x9DBA, - 50471 - 44032: 0x9DBB, - 50472 - 44032: 0xBEBE, - 50473 - 44032: 0xBEBF, - 50474 - 44032: 0x9DBC, - 50475 - 44032: 0x9DBD, - 50476 - 44032: 0xBEC0, - 50477 - 44032: 0x9DBE, - 50478 - 44032: 0x9DBF, - 50479 - 44032: 0x9DC0, - 50480 - 44032: 0xBEC1, - 50481 - 44032: 0x9DC1, - 50482 - 44032: 0x9DC2, - 50483 - 44032: 0x9DC3, - 50484 - 44032: 0x9DC4, - 50485 - 44032: 0x9DC5, - 50486 - 44032: 0x9DC6, - 50487 - 44032: 0x9DC7, - 50488 - 44032: 0xBEC2, - 50489 - 44032: 0xBEC3, - 50490 - 44032: 0x9DC8, - 50491 - 44032: 0xBEC4, - 50492 - 44032: 0x9DC9, - 50493 - 44032: 0xBEC5, - 50494 - 44032: 0x9DCA, - 50495 - 44032: 0x9DCB, - 50496 - 44032: 0x9DCC, - 50497 - 44032: 0x9DCD, - 50498 - 44032: 0x9DCE, - 50499 - 44032: 0x9DCF, - 50500 - 44032: 0xBEC6, - 50501 - 44032: 0xBEC7, - 50502 - 44032: 0x9DD0, - 50503 - 44032: 0x9DD1, - 50504 - 44032: 0xBEC8, - 50505 - 44032: 0xBEC9, - 50506 - 44032: 0xBECA, - 50507 - 44032: 0x9DD2, - 50508 - 44032: 0xBECB, - 50509 - 44032: 0xBECC, - 50510 - 44032: 0xBECD, - 50511 - 44032: 0x9DD3, - 50512 - 44032: 0x9DD4, - 50513 - 44032: 0x9DD5, - 50514 - 44032: 0x9DD6, - 50515 - 44032: 0xBECE, - 50516 - 44032: 0xBECF, - 50517 - 44032: 0xBED0, - 50518 - 44032: 0x9DD7, - 50519 - 44032: 0xBED1, - 50520 - 44032: 0xBED2, - 50521 - 44032: 0xBED3, - 50522 - 44032: 0x9DD8, - 50523 - 44032: 0x9DD9, - 50524 - 44032: 0x9DDA, - 50525 - 44032: 0xBED4, - 50526 - 44032: 0xBED5, - 50527 - 44032: 0x9DDB, - 50528 - 44032: 0xBED6, - 50529 - 44032: 0xBED7, - 50530 - 44032: 0x9DDC, - 50531 - 44032: 0x9DDD, - 50532 - 44032: 0xBED8, - 50533 - 44032: 0x9DDE, - 50534 - 44032: 0x9DDF, - 50535 - 44032: 0x9DE0, - 50536 - 44032: 0xBED9, - 50537 - 44032: 0x9DE1, - 50538 - 44032: 0x9DE2, - 50539 - 44032: 0x9DE3, - 50540 - 44032: 0x9DE4, - 50541 - 44032: 0x9DE5, - 50542 - 44032: 0x9DE6, - 50543 - 44032: 0x9DE7, - 50544 - 44032: 0xBEDA, - 50545 - 44032: 0xBEDB, - 50546 - 44032: 0x9DE8, - 50547 - 44032: 0xBEDC, - 50548 - 44032: 0xBEDD, - 50549 - 44032: 0xBEDE, - 50550 - 44032: 0x9DE9, - 50551 - 44032: 0x9DEA, - 50552 - 44032: 0x9DEB, - 50553 - 44032: 0x9DEC, - 50554 - 44032: 0x9DED, - 50555 - 44032: 0x9DEE, - 50556 - 44032: 0xBEDF, - 50557 - 44032: 0xBEE0, - 50558 - 44032: 0x9DEF, - 50559 - 44032: 0x9DF0, - 50560 - 44032: 0xBEE1, - 50561 - 44032: 0x9DF1, - 50562 - 44032: 0x9DF2, - 50563 - 44032: 0x9DF3, - 50564 - 44032: 0xBEE2, - 50565 - 44032: 0x9DF4, - 50566 - 44032: 0x9DF5, - 50567 - 44032: 0xBEE3, - 50568 - 44032: 0x9DF6, - 50569 - 44032: 0x9DF7, - 50570 - 44032: 0x9DF8, - 50571 - 44032: 0x9DF9, - 50572 - 44032: 0xBEE4, - 50573 - 44032: 0xBEE5, - 50574 - 44032: 0x9DFA, - 50575 - 44032: 0xBEE6, - 50576 - 44032: 0x9DFB, - 50577 - 44032: 0xBEE7, - 50578 - 44032: 0x9DFC, - 50579 - 44032: 0x9DFD, - 50580 - 44032: 0x9DFE, - 50581 - 44032: 0xBEE8, - 50582 - 44032: 0x9E41, - 50583 - 44032: 0xBEE9, - 50584 - 44032: 0xBEEA, - 50585 - 44032: 0x9E42, - 50586 - 44032: 0x9E43, - 50587 - 44032: 0x9E44, - 50588 - 44032: 0xBEEB, - 50589 - 44032: 0x9E45, - 50590 - 44032: 0x9E46, - 50591 - 44032: 0x9E47, - 50592 - 44032: 0xBEEC, - 50593 - 44032: 0x9E48, - 50594 - 44032: 0x9E49, - 50595 - 44032: 0x9E4A, - 50596 - 44032: 0x9E4B, - 50597 - 44032: 0x9E4C, - 50598 - 44032: 0x9E4D, - 50599 - 44032: 0x9E4E, - 50600 - 44032: 0x9E4F, - 50601 - 44032: 0xBEED, - 50602 - 44032: 0x9E50, - 50603 - 44032: 0x9E51, - 50604 - 44032: 0x9E52, - 50605 - 44032: 0x9E53, - 50606 - 44032: 0x9E54, - 50607 - 44032: 0x9E55, - 50608 - 44032: 0x9E56, - 50609 - 44032: 0x9E57, - 50610 - 44032: 0x9E58, - 50611 - 44032: 0x9E59, - 50612 - 44032: 0xBEEE, - 50613 - 44032: 0xBEEF, - 50614 - 44032: 0x9E5A, - 50615 - 44032: 0x9E61, - 50616 - 44032: 0xBEF0, - 50617 - 44032: 0xBEF1, - 50618 - 44032: 0x9E62, - 50619 - 44032: 0xBEF2, - 50620 - 44032: 0xBEF3, - 50621 - 44032: 0xBEF4, - 50622 - 44032: 0xBEF5, - 50623 - 44032: 0x9E63, - 50624 - 44032: 0x9E64, - 50625 - 44032: 0x9E65, - 50626 - 44032: 0x9E66, - 50627 - 44032: 0x9E67, - 50628 - 44032: 0xBEF6, - 50629 - 44032: 0xBEF7, - 50630 - 44032: 0xBEF8, - 50631 - 44032: 0xBEF9, - 50632 - 44032: 0xBEFA, - 50633 - 44032: 0xBEFB, - 50634 - 44032: 0xBEFC, - 50635 - 44032: 0x9E68, - 50636 - 44032: 0xBEFD, - 50637 - 44032: 0x9E69, - 50638 - 44032: 0xBEFE, - 50639 - 44032: 0x9E6A, - 50640 - 44032: 0xBFA1, - 50641 - 44032: 0xBFA2, - 50642 - 44032: 0x9E6B, - 50643 - 44032: 0x9E6C, - 50644 - 44032: 0xBFA3, - 50645 - 44032: 0x9E6D, - 50646 - 44032: 0x9E6E, - 50647 - 44032: 0x9E6F, - 50648 - 44032: 0xBFA4, - 50649 - 44032: 0x9E70, - 50650 - 44032: 0x9E71, - 50651 - 44032: 0x9E72, - 50652 - 44032: 0x9E73, - 50653 - 44032: 0x9E74, - 50654 - 44032: 0x9E75, - 50655 - 44032: 0x9E76, - 50656 - 44032: 0xBFA5, - 50657 - 44032: 0xBFA6, - 50658 - 44032: 0x9E77, - 50659 - 44032: 0xBFA7, - 50660 - 44032: 0x9E78, - 50661 - 44032: 0xBFA8, - 50662 - 44032: 0x9E79, - 50663 - 44032: 0x9E7A, - 50664 - 44032: 0x9E81, - 50665 - 44032: 0x9E82, - 50666 - 44032: 0x9E83, - 50667 - 44032: 0x9E84, - 50668 - 44032: 0xBFA9, - 50669 - 44032: 0xBFAA, - 50670 - 44032: 0xBFAB, - 50671 - 44032: 0x9E85, - 50672 - 44032: 0xBFAC, - 50673 - 44032: 0x9E86, - 50674 - 44032: 0x9E87, - 50675 - 44032: 0x9E88, - 50676 - 44032: 0xBFAD, - 50677 - 44032: 0x9E89, - 50678 - 44032: 0xBFAE, - 50679 - 44032: 0xBFAF, - 50680 - 44032: 0x9E8A, - 50681 - 44032: 0x9E8B, - 50682 - 44032: 0x9E8C, - 50683 - 44032: 0x9E8D, - 50684 - 44032: 0xBFB0, - 50685 - 44032: 0xBFB1, - 50686 - 44032: 0xBFB2, - 50687 - 44032: 0xBFB3, - 50688 - 44032: 0xBFB4, - 50689 - 44032: 0xBFB5, - 50690 - 44032: 0x9E8E, - 50691 - 44032: 0x9E8F, - 50692 - 44032: 0x9E90, - 50693 - 44032: 0xBFB6, - 50694 - 44032: 0xBFB7, - 50695 - 44032: 0xBFB8, - 50696 - 44032: 0xBFB9, - 50697 - 44032: 0x9E91, - 50698 - 44032: 0x9E92, - 50699 - 44032: 0x9E93, - 50700 - 44032: 0xBFBA, - 50701 - 44032: 0x9E94, - 50702 - 44032: 0x9E95, - 50703 - 44032: 0x9E96, - 50704 - 44032: 0xBFBB, - 50705 - 44032: 0x9E97, - 50706 - 44032: 0x9E98, - 50707 - 44032: 0x9E99, - 50708 - 44032: 0x9E9A, - 50709 - 44032: 0x9E9B, - 50710 - 44032: 0x9E9C, - 50711 - 44032: 0x9E9D, - 50712 - 44032: 0xBFBC, - 50713 - 44032: 0xBFBD, - 50714 - 44032: 0x9E9E, - 50715 - 44032: 0xBFBE, - 50716 - 44032: 0xBFBF, - 50717 - 44032: 0x9E9F, - 50718 - 44032: 0x9EA0, - 50719 - 44032: 0x9EA1, - 50720 - 44032: 0x9EA2, - 50721 - 44032: 0x9EA3, - 50722 - 44032: 0x9EA4, - 50723 - 44032: 0x9EA5, - 50724 - 44032: 0xBFC0, - 50725 - 44032: 0xBFC1, - 50726 - 44032: 0x9EA6, - 50727 - 44032: 0x9EA7, - 50728 - 44032: 0xBFC2, - 50729 - 44032: 0x9EA8, - 50730 - 44032: 0x9EA9, - 50731 - 44032: 0x9EAA, - 50732 - 44032: 0xBFC3, - 50733 - 44032: 0xBFC4, - 50734 - 44032: 0xBFC5, - 50735 - 44032: 0x9EAB, - 50736 - 44032: 0xBFC6, - 50737 - 44032: 0x9EAC, - 50738 - 44032: 0x9EAD, - 50739 - 44032: 0xBFC7, - 50740 - 44032: 0xBFC8, - 50741 - 44032: 0xBFC9, - 50742 - 44032: 0x9EAE, - 50743 - 44032: 0xBFCA, - 50744 - 44032: 0x9EAF, - 50745 - 44032: 0xBFCB, - 50746 - 44032: 0x9EB0, - 50747 - 44032: 0xBFCC, - 50748 - 44032: 0x9EB1, - 50749 - 44032: 0x9EB2, - 50750 - 44032: 0x9EB3, - 50751 - 44032: 0x9EB4, - 50752 - 44032: 0xBFCD, - 50753 - 44032: 0xBFCE, - 50754 - 44032: 0x9EB5, - 50755 - 44032: 0x9EB6, - 50756 - 44032: 0xBFCF, - 50757 - 44032: 0x9EB7, - 50758 - 44032: 0x9EB8, - 50759 - 44032: 0x9EB9, - 50760 - 44032: 0xBFD0, - 50761 - 44032: 0x9EBA, - 50762 - 44032: 0x9EBB, - 50763 - 44032: 0x9EBC, - 50764 - 44032: 0x9EBD, - 50765 - 44032: 0x9EBE, - 50766 - 44032: 0x9EBF, - 50767 - 44032: 0x9EC0, - 50768 - 44032: 0xBFD1, - 50769 - 44032: 0xBFD2, - 50770 - 44032: 0x9EC1, - 50771 - 44032: 0xBFD3, - 50772 - 44032: 0xBFD4, - 50773 - 44032: 0xBFD5, - 50774 - 44032: 0x9EC2, - 50775 - 44032: 0x9EC3, - 50776 - 44032: 0x9EC4, - 50777 - 44032: 0x9EC5, - 50778 - 44032: 0x9EC6, - 50779 - 44032: 0x9EC7, - 50780 - 44032: 0xBFD6, - 50781 - 44032: 0xBFD7, - 50782 - 44032: 0x9EC8, - 50783 - 44032: 0x9EC9, - 50784 - 44032: 0xBFD8, - 50785 - 44032: 0x9ECA, - 50786 - 44032: 0x9ECB, - 50787 - 44032: 0x9ECC, - 50788 - 44032: 0x9ECD, - 50789 - 44032: 0x9ECE, - 50790 - 44032: 0x9ECF, - 50791 - 44032: 0x9ED0, - 50792 - 44032: 0x9ED1, - 50793 - 44032: 0x9ED2, - 50794 - 44032: 0x9ED3, - 50795 - 44032: 0x9ED4, - 50796 - 44032: 0xBFD9, - 50797 - 44032: 0x9ED5, - 50798 - 44032: 0x9ED6, - 50799 - 44032: 0xBFDA, - 50800 - 44032: 0x9ED7, - 50801 - 44032: 0xBFDB, - 50802 - 44032: 0x9ED8, - 50803 - 44032: 0x9ED9, - 50804 - 44032: 0x9EDA, - 50805 - 44032: 0x9EDB, - 50806 - 44032: 0x9EDC, - 50807 - 44032: 0x9EDD, - 50808 - 44032: 0xBFDC, - 50809 - 44032: 0xBFDD, - 50810 - 44032: 0x9EDE, - 50811 - 44032: 0x9EDF, - 50812 - 44032: 0xBFDE, - 50813 - 44032: 0x9EE0, - 50814 - 44032: 0x9EE1, - 50815 - 44032: 0x9EE2, - 50816 - 44032: 0xBFDF, - 50817 - 44032: 0x9EE3, - 50818 - 44032: 0x9EE4, - 50819 - 44032: 0x9EE5, - 50820 - 44032: 0x9EE6, - 50821 - 44032: 0x9EE7, - 50822 - 44032: 0x9EE8, - 50823 - 44032: 0x9EE9, - 50824 - 44032: 0xBFE0, - 50825 - 44032: 0xBFE1, - 50826 - 44032: 0x9EEA, - 50827 - 44032: 0xBFE2, - 50828 - 44032: 0x9EEB, - 50829 - 44032: 0xBFE3, - 50830 - 44032: 0x9EEC, - 50831 - 44032: 0x9EED, - 50832 - 44032: 0x9EEE, - 50833 - 44032: 0x9EEF, - 50834 - 44032: 0x9EF0, - 50835 - 44032: 0x9EF1, - 50836 - 44032: 0xBFE4, - 50837 - 44032: 0xBFE5, - 50838 - 44032: 0x9EF2, - 50839 - 44032: 0x9EF3, - 50840 - 44032: 0xBFE6, - 50841 - 44032: 0x9EF4, - 50842 - 44032: 0x9EF5, - 50843 - 44032: 0x9EF6, - 50844 - 44032: 0xBFE7, - 50845 - 44032: 0x9EF7, - 50846 - 44032: 0x9EF8, - 50847 - 44032: 0x9EF9, - 50848 - 44032: 0x9EFA, - 50849 - 44032: 0x9EFB, - 50850 - 44032: 0x9EFC, - 50851 - 44032: 0x9EFD, - 50852 - 44032: 0xBFE8, - 50853 - 44032: 0xBFE9, - 50854 - 44032: 0x9EFE, - 50855 - 44032: 0xBFEA, - 50856 - 44032: 0x9F41, - 50857 - 44032: 0xBFEB, - 50858 - 44032: 0x9F42, - 50859 - 44032: 0x9F43, - 50860 - 44032: 0x9F44, - 50861 - 44032: 0x9F45, - 50862 - 44032: 0x9F46, - 50863 - 44032: 0x9F47, - 50864 - 44032: 0xBFEC, - 50865 - 44032: 0xBFED, - 50866 - 44032: 0x9F48, - 50867 - 44032: 0x9F49, - 50868 - 44032: 0xBFEE, - 50869 - 44032: 0x9F4A, - 50870 - 44032: 0x9F4B, - 50871 - 44032: 0x9F4C, - 50872 - 44032: 0xBFEF, - 50873 - 44032: 0xBFF0, - 50874 - 44032: 0xBFF1, - 50875 - 44032: 0x9F4D, - 50876 - 44032: 0x9F4E, - 50877 - 44032: 0x9F4F, - 50878 - 44032: 0x9F50, - 50879 - 44032: 0x9F51, - 50880 - 44032: 0xBFF2, - 50881 - 44032: 0xBFF3, - 50882 - 44032: 0x9F52, - 50883 - 44032: 0xBFF4, - 50884 - 44032: 0x9F53, - 50885 - 44032: 0xBFF5, - 50886 - 44032: 0x9F54, - 50887 - 44032: 0x9F55, - 50888 - 44032: 0x9F56, - 50889 - 44032: 0x9F57, - 50890 - 44032: 0x9F58, - 50891 - 44032: 0x9F59, - 50892 - 44032: 0xBFF6, - 50893 - 44032: 0xBFF7, - 50894 - 44032: 0x9F5A, - 50895 - 44032: 0x9F61, - 50896 - 44032: 0xBFF8, - 50897 - 44032: 0x9F62, - 50898 - 44032: 0x9F63, - 50899 - 44032: 0x9F64, - 50900 - 44032: 0xBFF9, - 50901 - 44032: 0x9F65, - 50902 - 44032: 0x9F66, - 50903 - 44032: 0x9F67, - 50904 - 44032: 0x9F68, - 50905 - 44032: 0x9F69, - 50906 - 44032: 0x9F6A, - 50907 - 44032: 0x9F6B, - 50908 - 44032: 0xBFFA, - 50909 - 44032: 0xBFFB, - 50910 - 44032: 0x9F6C, - 50911 - 44032: 0x9F6D, - 50912 - 44032: 0xBFFC, - 50913 - 44032: 0xBFFD, - 50914 - 44032: 0x9F6E, - 50915 - 44032: 0x9F6F, - 50916 - 44032: 0x9F70, - 50917 - 44032: 0x9F71, - 50918 - 44032: 0x9F72, - 50919 - 44032: 0x9F73, - 50920 - 44032: 0xBFFE, - 50921 - 44032: 0xC0A1, - 50922 - 44032: 0x9F74, - 50923 - 44032: 0x9F75, - 50924 - 44032: 0xC0A2, - 50925 - 44032: 0x9F76, - 50926 - 44032: 0x9F77, - 50927 - 44032: 0x9F78, - 50928 - 44032: 0xC0A3, - 50929 - 44032: 0x9F79, - 50930 - 44032: 0x9F7A, - 50931 - 44032: 0x9F81, - 50932 - 44032: 0x9F82, - 50933 - 44032: 0x9F83, - 50934 - 44032: 0x9F84, - 50935 - 44032: 0x9F85, - 50936 - 44032: 0xC0A4, - 50937 - 44032: 0xC0A5, - 50938 - 44032: 0x9F86, - 50939 - 44032: 0x9F87, - 50940 - 44032: 0x9F88, - 50941 - 44032: 0xC0A6, - 50942 - 44032: 0x9F89, - 50943 - 44032: 0x9F8A, - 50944 - 44032: 0x9F8B, - 50945 - 44032: 0x9F8C, - 50946 - 44032: 0x9F8D, - 50947 - 44032: 0x9F8E, - 50948 - 44032: 0xC0A7, - 50949 - 44032: 0xC0A8, - 50950 - 44032: 0x9F8F, - 50951 - 44032: 0x9F90, - 50952 - 44032: 0xC0A9, - 50953 - 44032: 0x9F91, - 50954 - 44032: 0x9F92, - 50955 - 44032: 0x9F93, - 50956 - 44032: 0xC0AA, - 50957 - 44032: 0x9F94, - 50958 - 44032: 0x9F95, - 50959 - 44032: 0x9F96, - 50960 - 44032: 0x9F97, - 50961 - 44032: 0x9F98, - 50962 - 44032: 0x9F99, - 50963 - 44032: 0x9F9A, - 50964 - 44032: 0xC0AB, - 50965 - 44032: 0xC0AC, - 50966 - 44032: 0x9F9B, - 50967 - 44032: 0xC0AD, - 50968 - 44032: 0x9F9C, - 50969 - 44032: 0xC0AE, - 50970 - 44032: 0x9F9D, - 50971 - 44032: 0x9F9E, - 50972 - 44032: 0x9F9F, - 50973 - 44032: 0x9FA0, - 50974 - 44032: 0x9FA1, - 50975 - 44032: 0x9FA2, - 50976 - 44032: 0xC0AF, - 50977 - 44032: 0xC0B0, - 50978 - 44032: 0x9FA3, - 50979 - 44032: 0x9FA4, - 50980 - 44032: 0xC0B1, - 50981 - 44032: 0x9FA5, - 50982 - 44032: 0x9FA6, - 50983 - 44032: 0x9FA7, - 50984 - 44032: 0xC0B2, - 50985 - 44032: 0x9FA8, - 50986 - 44032: 0x9FA9, - 50987 - 44032: 0x9FAA, - 50988 - 44032: 0x9FAB, - 50989 - 44032: 0x9FAC, - 50990 - 44032: 0x9FAD, - 50991 - 44032: 0x9FAE, - 50992 - 44032: 0xC0B3, - 50993 - 44032: 0xC0B4, - 50994 - 44032: 0x9FAF, - 50995 - 44032: 0xC0B5, - 50996 - 44032: 0x9FB0, - 50997 - 44032: 0xC0B6, - 50998 - 44032: 0x9FB1, - 50999 - 44032: 0xC0B7, - 51000 - 44032: 0x9FB2, - 51001 - 44032: 0x9FB3, - 51002 - 44032: 0x9FB4, - 51003 - 44032: 0x9FB5, - 51004 - 44032: 0xC0B8, - 51005 - 44032: 0xC0B9, - 51006 - 44032: 0x9FB6, - 51007 - 44032: 0x9FB7, - 51008 - 44032: 0xC0BA, - 51009 - 44032: 0x9FB8, - 51010 - 44032: 0x9FB9, - 51011 - 44032: 0x9FBA, - 51012 - 44032: 0xC0BB, - 51013 - 44032: 0x9FBB, - 51014 - 44032: 0x9FBC, - 51015 - 44032: 0x9FBD, - 51016 - 44032: 0x9FBE, - 51017 - 44032: 0x9FBF, - 51018 - 44032: 0xC0BC, - 51019 - 44032: 0x9FC0, - 51020 - 44032: 0xC0BD, - 51021 - 44032: 0xC0BE, - 51022 - 44032: 0x9FC1, - 51023 - 44032: 0xC0BF, - 51024 - 44032: 0x9FC2, - 51025 - 44032: 0xC0C0, - 51026 - 44032: 0xC0C1, - 51027 - 44032: 0xC0C2, - 51028 - 44032: 0xC0C3, - 51029 - 44032: 0xC0C4, - 51030 - 44032: 0xC0C5, - 51031 - 44032: 0xC0C6, - 51032 - 44032: 0xC0C7, - 51033 - 44032: 0x9FC3, - 51034 - 44032: 0x9FC4, - 51035 - 44032: 0x9FC5, - 51036 - 44032: 0xC0C8, - 51037 - 44032: 0x9FC6, - 51038 - 44032: 0x9FC7, - 51039 - 44032: 0x9FC8, - 51040 - 44032: 0xC0C9, - 51041 - 44032: 0x9FC9, - 51042 - 44032: 0x9FCA, - 51043 - 44032: 0x9FCB, - 51044 - 44032: 0x9FCC, - 51045 - 44032: 0x9FCD, - 51046 - 44032: 0x9FCE, - 51047 - 44032: 0x9FCF, - 51048 - 44032: 0xC0CA, - 51049 - 44032: 0x9FD0, - 51050 - 44032: 0x9FD1, - 51051 - 44032: 0xC0CB, - 51052 - 44032: 0x9FD2, - 51053 - 44032: 0x9FD3, - 51054 - 44032: 0x9FD4, - 51055 - 44032: 0x9FD5, - 51056 - 44032: 0x9FD6, - 51057 - 44032: 0x9FD7, - 51058 - 44032: 0x9FD8, - 51059 - 44032: 0x9FD9, - 51060 - 44032: 0xC0CC, - 51061 - 44032: 0xC0CD, - 51062 - 44032: 0x9FDA, - 51063 - 44032: 0x9FDB, - 51064 - 44032: 0xC0CE, - 51065 - 44032: 0x9FDC, - 51066 - 44032: 0x9FDD, - 51067 - 44032: 0x9FDE, - 51068 - 44032: 0xC0CF, - 51069 - 44032: 0xC0D0, - 51070 - 44032: 0xC0D1, - 51071 - 44032: 0x9FDF, - 51072 - 44032: 0x9FE0, - 51073 - 44032: 0x9FE1, - 51074 - 44032: 0x9FE2, - 51075 - 44032: 0xC0D2, - 51076 - 44032: 0xC0D3, - 51077 - 44032: 0xC0D4, - 51078 - 44032: 0x9FE3, - 51079 - 44032: 0xC0D5, - 51080 - 44032: 0xC0D6, - 51081 - 44032: 0xC0D7, - 51082 - 44032: 0xC0D8, - 51083 - 44032: 0x9FE4, - 51084 - 44032: 0x9FE5, - 51085 - 44032: 0x9FE6, - 51086 - 44032: 0xC0D9, - 51087 - 44032: 0x9FE7, - 51088 - 44032: 0xC0DA, - 51089 - 44032: 0xC0DB, - 51090 - 44032: 0x9FE8, - 51091 - 44032: 0x9FE9, - 51092 - 44032: 0xC0DC, - 51093 - 44032: 0x9FEA, - 51094 - 44032: 0xC0DD, - 51095 - 44032: 0xC0DE, - 51096 - 44032: 0xC0DF, - 51097 - 44032: 0x9FEB, - 51098 - 44032: 0xC0E0, - 51099 - 44032: 0x9FEC, - 51100 - 44032: 0x9FED, - 51101 - 44032: 0x9FEE, - 51102 - 44032: 0x9FEF, - 51103 - 44032: 0x9FF0, - 51104 - 44032: 0xC0E1, - 51105 - 44032: 0xC0E2, - 51106 - 44032: 0x9FF1, - 51107 - 44032: 0xC0E3, - 51108 - 44032: 0xC0E4, - 51109 - 44032: 0xC0E5, - 51110 - 44032: 0xC0E6, - 51111 - 44032: 0x9FF2, - 51112 - 44032: 0x9FF3, - 51113 - 44032: 0x9FF4, - 51114 - 44032: 0x9FF5, - 51115 - 44032: 0x9FF6, - 51116 - 44032: 0xC0E7, - 51117 - 44032: 0xC0E8, - 51118 - 44032: 0x9FF7, - 51119 - 44032: 0x9FF8, - 51120 - 44032: 0xC0E9, - 51121 - 44032: 0x9FF9, - 51122 - 44032: 0x9FFA, - 51123 - 44032: 0x9FFB, - 51124 - 44032: 0xC0EA, - 51125 - 44032: 0x9FFC, - 51126 - 44032: 0x9FFD, - 51127 - 44032: 0x9FFE, - 51128 - 44032: 0xA041, - 51129 - 44032: 0xA042, - 51130 - 44032: 0xA043, - 51131 - 44032: 0xA044, - 51132 - 44032: 0xC0EB, - 51133 - 44032: 0xC0EC, - 51134 - 44032: 0xA045, - 51135 - 44032: 0xC0ED, - 51136 - 44032: 0xC0EE, - 51137 - 44032: 0xC0EF, - 51138 - 44032: 0xA046, - 51139 - 44032: 0xA047, - 51140 - 44032: 0xA048, - 51141 - 44032: 0xA049, - 51142 - 44032: 0xA04A, - 51143 - 44032: 0xA04B, - 51144 - 44032: 0xC0F0, - 51145 - 44032: 0xC0F1, - 51146 - 44032: 0xA04C, - 51147 - 44032: 0xA04D, - 51148 - 44032: 0xC0F2, - 51149 - 44032: 0xA04E, - 51150 - 44032: 0xC0F3, - 51151 - 44032: 0xA04F, - 51152 - 44032: 0xC0F4, - 51153 - 44032: 0xA050, - 51154 - 44032: 0xA051, - 51155 - 44032: 0xA052, - 51156 - 44032: 0xA053, - 51157 - 44032: 0xA054, - 51158 - 44032: 0xA055, - 51159 - 44032: 0xA056, - 51160 - 44032: 0xC0F5, - 51161 - 44032: 0xA057, - 51162 - 44032: 0xA058, - 51163 - 44032: 0xA059, - 51164 - 44032: 0xA05A, - 51165 - 44032: 0xC0F6, - 51166 - 44032: 0xA061, - 51167 - 44032: 0xA062, - 51168 - 44032: 0xA063, - 51169 - 44032: 0xA064, - 51170 - 44032: 0xA065, - 51171 - 44032: 0xA066, - 51172 - 44032: 0xC0F7, - 51173 - 44032: 0xA067, - 51174 - 44032: 0xA068, - 51175 - 44032: 0xA069, - 51176 - 44032: 0xC0F8, - 51177 - 44032: 0xA06A, - 51178 - 44032: 0xA06B, - 51179 - 44032: 0xA06C, - 51180 - 44032: 0xC0F9, - 51181 - 44032: 0xA06D, - 51182 - 44032: 0xA06E, - 51183 - 44032: 0xA06F, - 51184 - 44032: 0xA070, - 51185 - 44032: 0xA071, - 51186 - 44032: 0xA072, - 51187 - 44032: 0xA073, - 51188 - 44032: 0xA074, - 51189 - 44032: 0xA075, - 51190 - 44032: 0xA076, - 51191 - 44032: 0xA077, - 51192 - 44032: 0xA078, - 51193 - 44032: 0xA079, - 51194 - 44032: 0xA07A, - 51195 - 44032: 0xA081, - 51196 - 44032: 0xA082, - 51197 - 44032: 0xA083, - 51198 - 44032: 0xA084, - 51199 - 44032: 0xA085, - 51200 - 44032: 0xC0FA, - 51201 - 44032: 0xC0FB, - 51202 - 44032: 0xA086, - 51203 - 44032: 0xA087, - 51204 - 44032: 0xC0FC, - 51205 - 44032: 0xA088, - 51206 - 44032: 0xA089, - 51207 - 44032: 0xA08A, - 51208 - 44032: 0xC0FD, - 51209 - 44032: 0xA08B, - 51210 - 44032: 0xC0FE, - 51211 - 44032: 0xA08C, - 51212 - 44032: 0xA08D, - 51213 - 44032: 0xA08E, - 51214 - 44032: 0xA08F, - 51215 - 44032: 0xA090, - 51216 - 44032: 0xC1A1, - 51217 - 44032: 0xC1A2, - 51218 - 44032: 0xA091, - 51219 - 44032: 0xC1A3, - 51220 - 44032: 0xA092, - 51221 - 44032: 0xC1A4, - 51222 - 44032: 0xC1A5, - 51223 - 44032: 0xA093, - 51224 - 44032: 0xA094, - 51225 - 44032: 0xA095, - 51226 - 44032: 0xA096, - 51227 - 44032: 0xA097, - 51228 - 44032: 0xC1A6, - 51229 - 44032: 0xC1A7, - 51230 - 44032: 0xA098, - 51231 - 44032: 0xA099, - 51232 - 44032: 0xC1A8, - 51233 - 44032: 0xA09A, - 51234 - 44032: 0xA09B, - 51235 - 44032: 0xA09C, - 51236 - 44032: 0xC1A9, - 51237 - 44032: 0xA09D, - 51238 - 44032: 0xA09E, - 51239 - 44032: 0xA09F, - 51240 - 44032: 0xA0A0, - 51241 - 44032: 0xA0A1, - 51242 - 44032: 0xA0A2, - 51243 - 44032: 0xA0A3, - 51244 - 44032: 0xC1AA, - 51245 - 44032: 0xC1AB, - 51246 - 44032: 0xA0A4, - 51247 - 44032: 0xC1AC, - 51248 - 44032: 0xA0A5, - 51249 - 44032: 0xC1AD, - 51250 - 44032: 0xA0A6, - 51251 - 44032: 0xA0A7, - 51252 - 44032: 0xA0A8, - 51253 - 44032: 0xA0A9, - 51254 - 44032: 0xA0AA, - 51255 - 44032: 0xA0AB, - 51256 - 44032: 0xC1AE, - 51257 - 44032: 0xA0AC, - 51258 - 44032: 0xA0AD, - 51259 - 44032: 0xA0AE, - 51260 - 44032: 0xC1AF, - 51261 - 44032: 0xA0AF, - 51262 - 44032: 0xA0B0, - 51263 - 44032: 0xA0B1, - 51264 - 44032: 0xC1B0, - 51265 - 44032: 0xA0B2, - 51266 - 44032: 0xA0B3, - 51267 - 44032: 0xA0B4, - 51268 - 44032: 0xA0B5, - 51269 - 44032: 0xA0B6, - 51270 - 44032: 0xA0B7, - 51271 - 44032: 0xA0B8, - 51272 - 44032: 0xC1B1, - 51273 - 44032: 0xC1B2, - 51274 - 44032: 0xA0B9, - 51275 - 44032: 0xA0BA, - 51276 - 44032: 0xC1B3, - 51277 - 44032: 0xC1B4, - 51278 - 44032: 0xA0BB, - 51279 - 44032: 0xA0BC, - 51280 - 44032: 0xA0BD, - 51281 - 44032: 0xA0BE, - 51282 - 44032: 0xA0BF, - 51283 - 44032: 0xA0C0, - 51284 - 44032: 0xC1B5, - 51285 - 44032: 0xA0C1, - 51286 - 44032: 0xA0C2, - 51287 - 44032: 0xA0C3, - 51288 - 44032: 0xA0C4, - 51289 - 44032: 0xA0C5, - 51290 - 44032: 0xA0C6, - 51291 - 44032: 0xA0C7, - 51292 - 44032: 0xA0C8, - 51293 - 44032: 0xA0C9, - 51294 - 44032: 0xA0CA, - 51295 - 44032: 0xA0CB, - 51296 - 44032: 0xA0CC, - 51297 - 44032: 0xA0CD, - 51298 - 44032: 0xA0CE, - 51299 - 44032: 0xA0CF, - 51300 - 44032: 0xA0D0, - 51301 - 44032: 0xA0D1, - 51302 - 44032: 0xA0D2, - 51303 - 44032: 0xA0D3, - 51304 - 44032: 0xA0D4, - 51305 - 44032: 0xA0D5, - 51306 - 44032: 0xA0D6, - 51307 - 44032: 0xA0D7, - 51308 - 44032: 0xA0D8, - 51309 - 44032: 0xA0D9, - 51310 - 44032: 0xA0DA, - 51311 - 44032: 0xA0DB, - 51312 - 44032: 0xC1B6, - 51313 - 44032: 0xC1B7, - 51314 - 44032: 0xA0DC, - 51315 - 44032: 0xA0DD, - 51316 - 44032: 0xC1B8, - 51317 - 44032: 0xA0DE, - 51318 - 44032: 0xA0DF, - 51319 - 44032: 0xA0E0, - 51320 - 44032: 0xC1B9, - 51321 - 44032: 0xA0E1, - 51322 - 44032: 0xC1BA, - 51323 - 44032: 0xA0E2, - 51324 - 44032: 0xA0E3, - 51325 - 44032: 0xA0E4, - 51326 - 44032: 0xA0E5, - 51327 - 44032: 0xA0E6, - 51328 - 44032: 0xC1BB, - 51329 - 44032: 0xC1BC, - 51330 - 44032: 0xA0E7, - 51331 - 44032: 0xC1BD, - 51332 - 44032: 0xA0E8, - 51333 - 44032: 0xC1BE, - 51334 - 44032: 0xC1BF, - 51335 - 44032: 0xC1C0, - 51336 - 44032: 0xA0E9, - 51337 - 44032: 0xA0EA, - 51338 - 44032: 0xA0EB, - 51339 - 44032: 0xC1C1, - 51340 - 44032: 0xC1C2, - 51341 - 44032: 0xC1C3, - 51342 - 44032: 0xA0EC, - 51343 - 44032: 0xA0ED, - 51344 - 44032: 0xA0EE, - 51345 - 44032: 0xA0EF, - 51346 - 44032: 0xA0F0, - 51347 - 44032: 0xA0F1, - 51348 - 44032: 0xC1C4, - 51349 - 44032: 0xA0F2, - 51350 - 44032: 0xA0F3, - 51351 - 44032: 0xA0F4, - 51352 - 44032: 0xA0F5, - 51353 - 44032: 0xA0F6, - 51354 - 44032: 0xA0F7, - 51355 - 44032: 0xA0F8, - 51356 - 44032: 0xA0F9, - 51357 - 44032: 0xC1C5, - 51358 - 44032: 0xA0FA, - 51359 - 44032: 0xC1C6, - 51360 - 44032: 0xA0FB, - 51361 - 44032: 0xC1C7, - 51362 - 44032: 0xA0FC, - 51363 - 44032: 0xA0FD, - 51364 - 44032: 0xA0FE, - 51365 - 44032: 0xA141, - 51366 - 44032: 0xA142, - 51367 - 44032: 0xA143, - 51368 - 44032: 0xC1C8, - 51369 - 44032: 0xA144, - 51370 - 44032: 0xA145, - 51371 - 44032: 0xA146, - 51372 - 44032: 0xA147, - 51373 - 44032: 0xA148, - 51374 - 44032: 0xA149, - 51375 - 44032: 0xA14A, - 51376 - 44032: 0xA14B, - 51377 - 44032: 0xA14C, - 51378 - 44032: 0xA14D, - 51379 - 44032: 0xA14E, - 51380 - 44032: 0xA14F, - 51381 - 44032: 0xA150, - 51382 - 44032: 0xA151, - 51383 - 44032: 0xA152, - 51384 - 44032: 0xA153, - 51385 - 44032: 0xA154, - 51386 - 44032: 0xA155, - 51387 - 44032: 0xA156, - 51388 - 44032: 0xC1C9, - 51389 - 44032: 0xC1CA, - 51390 - 44032: 0xA157, - 51391 - 44032: 0xA158, - 51392 - 44032: 0xA159, - 51393 - 44032: 0xA15A, - 51394 - 44032: 0xA161, - 51395 - 44032: 0xA162, - 51396 - 44032: 0xC1CB, - 51397 - 44032: 0xA163, - 51398 - 44032: 0xA164, - 51399 - 44032: 0xA165, - 51400 - 44032: 0xC1CC, - 51401 - 44032: 0xA166, - 51402 - 44032: 0xA167, - 51403 - 44032: 0xA168, - 51404 - 44032: 0xC1CD, - 51405 - 44032: 0xA169, - 51406 - 44032: 0xA16A, - 51407 - 44032: 0xA16B, - 51408 - 44032: 0xA16C, - 51409 - 44032: 0xA16D, - 51410 - 44032: 0xA16E, - 51411 - 44032: 0xA16F, - 51412 - 44032: 0xC1CE, - 51413 - 44032: 0xC1CF, - 51414 - 44032: 0xA170, - 51415 - 44032: 0xC1D0, - 51416 - 44032: 0xA171, - 51417 - 44032: 0xC1D1, - 51418 - 44032: 0xA172, - 51419 - 44032: 0xA173, - 51420 - 44032: 0xA174, - 51421 - 44032: 0xA175, - 51422 - 44032: 0xA176, - 51423 - 44032: 0xA177, - 51424 - 44032: 0xC1D2, - 51425 - 44032: 0xC1D3, - 51426 - 44032: 0xA178, - 51427 - 44032: 0xA179, - 51428 - 44032: 0xC1D4, - 51429 - 44032: 0xA17A, - 51430 - 44032: 0xA181, - 51431 - 44032: 0xA182, - 51432 - 44032: 0xA183, - 51433 - 44032: 0xA184, - 51434 - 44032: 0xA185, - 51435 - 44032: 0xA186, - 51436 - 44032: 0xA187, - 51437 - 44032: 0xA188, - 51438 - 44032: 0xA189, - 51439 - 44032: 0xA18A, - 51440 - 44032: 0xA18B, - 51441 - 44032: 0xA18C, - 51442 - 44032: 0xA18D, - 51443 - 44032: 0xA18E, - 51444 - 44032: 0xA18F, - 51445 - 44032: 0xC1D5, - 51446 - 44032: 0xA190, - 51447 - 44032: 0xA191, - 51448 - 44032: 0xA192, - 51449 - 44032: 0xA193, - 51450 - 44032: 0xA194, - 51451 - 44032: 0xA195, - 51452 - 44032: 0xC1D6, - 51453 - 44032: 0xC1D7, - 51454 - 44032: 0xA196, - 51455 - 44032: 0xA197, - 51456 - 44032: 0xC1D8, - 51457 - 44032: 0xA198, - 51458 - 44032: 0xA199, - 51459 - 44032: 0xA19A, - 51460 - 44032: 0xC1D9, - 51461 - 44032: 0xC1DA, - 51462 - 44032: 0xC1DB, - 51463 - 44032: 0xA19B, - 51464 - 44032: 0xA19C, - 51465 - 44032: 0xA19D, - 51466 - 44032: 0xA19E, - 51467 - 44032: 0xA19F, - 51468 - 44032: 0xC1DC, - 51469 - 44032: 0xC1DD, - 51470 - 44032: 0xA1A0, - 51471 - 44032: 0xC1DE, - 51472 - 44032: 0xA241, - 51473 - 44032: 0xC1DF, - 51474 - 44032: 0xA242, - 51475 - 44032: 0xA243, - 51476 - 44032: 0xA244, - 51477 - 44032: 0xA245, - 51478 - 44032: 0xA246, - 51479 - 44032: 0xA247, - 51480 - 44032: 0xC1E0, - 51481 - 44032: 0xA248, - 51482 - 44032: 0xA249, - 51483 - 44032: 0xA24A, - 51484 - 44032: 0xA24B, - 51485 - 44032: 0xA24C, - 51486 - 44032: 0xA24D, - 51487 - 44032: 0xA24E, - 51488 - 44032: 0xA24F, - 51489 - 44032: 0xA250, - 51490 - 44032: 0xA251, - 51491 - 44032: 0xA252, - 51492 - 44032: 0xA253, - 51493 - 44032: 0xA254, - 51494 - 44032: 0xA255, - 51495 - 44032: 0xA256, - 51496 - 44032: 0xA257, - 51497 - 44032: 0xA258, - 51498 - 44032: 0xA259, - 51499 - 44032: 0xA25A, - 51500 - 44032: 0xC1E1, - 51501 - 44032: 0xA261, - 51502 - 44032: 0xA262, - 51503 - 44032: 0xA263, - 51504 - 44032: 0xA264, - 51505 - 44032: 0xA265, - 51506 - 44032: 0xA266, - 51507 - 44032: 0xA267, - 51508 - 44032: 0xC1E2, - 51509 - 44032: 0xA268, - 51510 - 44032: 0xA269, - 51511 - 44032: 0xA26A, - 51512 - 44032: 0xA26B, - 51513 - 44032: 0xA26C, - 51514 - 44032: 0xA26D, - 51515 - 44032: 0xA26E, - 51516 - 44032: 0xA26F, - 51517 - 44032: 0xA270, - 51518 - 44032: 0xA271, - 51519 - 44032: 0xA272, - 51520 - 44032: 0xA273, - 51521 - 44032: 0xA274, - 51522 - 44032: 0xA275, - 51523 - 44032: 0xA276, - 51524 - 44032: 0xA277, - 51525 - 44032: 0xA278, - 51526 - 44032: 0xA279, - 51527 - 44032: 0xA27A, - 51528 - 44032: 0xA281, - 51529 - 44032: 0xA282, - 51530 - 44032: 0xA283, - 51531 - 44032: 0xA284, - 51532 - 44032: 0xA285, - 51533 - 44032: 0xA286, - 51534 - 44032: 0xA287, - 51535 - 44032: 0xA288, - 51536 - 44032: 0xC1E3, - 51537 - 44032: 0xC1E4, - 51538 - 44032: 0xA289, - 51539 - 44032: 0xA28A, - 51540 - 44032: 0xC1E5, - 51541 - 44032: 0xA28B, - 51542 - 44032: 0xA28C, - 51543 - 44032: 0xA28D, - 51544 - 44032: 0xC1E6, - 51545 - 44032: 0xA28E, - 51546 - 44032: 0xA28F, - 51547 - 44032: 0xA290, - 51548 - 44032: 0xA291, - 51549 - 44032: 0xA292, - 51550 - 44032: 0xA293, - 51551 - 44032: 0xA294, - 51552 - 44032: 0xC1E7, - 51553 - 44032: 0xC1E8, - 51554 - 44032: 0xA295, - 51555 - 44032: 0xC1E9, - 51556 - 44032: 0xA296, - 51557 - 44032: 0xA297, - 51558 - 44032: 0xA298, - 51559 - 44032: 0xA299, - 51560 - 44032: 0xA29A, - 51561 - 44032: 0xA29B, - 51562 - 44032: 0xA29C, - 51563 - 44032: 0xA29D, - 51564 - 44032: 0xC1EA, - 51565 - 44032: 0xA29E, - 51566 - 44032: 0xA29F, - 51567 - 44032: 0xA2A0, - 51568 - 44032: 0xC1EB, - 51569 - 44032: 0xA341, - 51570 - 44032: 0xA342, - 51571 - 44032: 0xA343, - 51572 - 44032: 0xC1EC, - 51573 - 44032: 0xA344, - 51574 - 44032: 0xA345, - 51575 - 44032: 0xA346, - 51576 - 44032: 0xA347, - 51577 - 44032: 0xA348, - 51578 - 44032: 0xA349, - 51579 - 44032: 0xA34A, - 51580 - 44032: 0xC1ED, - 51581 - 44032: 0xA34B, - 51582 - 44032: 0xA34C, - 51583 - 44032: 0xA34D, - 51584 - 44032: 0xA34E, - 51585 - 44032: 0xA34F, - 51586 - 44032: 0xA350, - 51587 - 44032: 0xA351, - 51588 - 44032: 0xA352, - 51589 - 44032: 0xA353, - 51590 - 44032: 0xA354, - 51591 - 44032: 0xA355, - 51592 - 44032: 0xC1EE, - 51593 - 44032: 0xC1EF, - 51594 - 44032: 0xA356, - 51595 - 44032: 0xA357, - 51596 - 44032: 0xC1F0, - 51597 - 44032: 0xA358, - 51598 - 44032: 0xA359, - 51599 - 44032: 0xA35A, - 51600 - 44032: 0xC1F1, - 51601 - 44032: 0xA361, - 51602 - 44032: 0xA362, - 51603 - 44032: 0xA363, - 51604 - 44032: 0xA364, - 51605 - 44032: 0xA365, - 51606 - 44032: 0xA366, - 51607 - 44032: 0xA367, - 51608 - 44032: 0xC1F2, - 51609 - 44032: 0xC1F3, - 51610 - 44032: 0xA368, - 51611 - 44032: 0xC1F4, - 51612 - 44032: 0xA369, - 51613 - 44032: 0xC1F5, - 51614 - 44032: 0xA36A, - 51615 - 44032: 0xA36B, - 51616 - 44032: 0xA36C, - 51617 - 44032: 0xA36D, - 51618 - 44032: 0xA36E, - 51619 - 44032: 0xA36F, - 51620 - 44032: 0xA370, - 51621 - 44032: 0xA371, - 51622 - 44032: 0xA372, - 51623 - 44032: 0xA373, - 51624 - 44032: 0xA374, - 51625 - 44032: 0xA375, - 51626 - 44032: 0xA376, - 51627 - 44032: 0xA377, - 51628 - 44032: 0xA378, - 51629 - 44032: 0xA379, - 51630 - 44032: 0xA37A, - 51631 - 44032: 0xA381, - 51632 - 44032: 0xA382, - 51633 - 44032: 0xA383, - 51634 - 44032: 0xA384, - 51635 - 44032: 0xA385, - 51636 - 44032: 0xA386, - 51637 - 44032: 0xA387, - 51638 - 44032: 0xA388, - 51639 - 44032: 0xA389, - 51640 - 44032: 0xA38A, - 51641 - 44032: 0xA38B, - 51642 - 44032: 0xA38C, - 51643 - 44032: 0xA38D, - 51644 - 44032: 0xA38E, - 51645 - 44032: 0xA38F, - 51646 - 44032: 0xA390, - 51647 - 44032: 0xA391, - 51648 - 44032: 0xC1F6, - 51649 - 44032: 0xC1F7, - 51650 - 44032: 0xA392, - 51651 - 44032: 0xA393, - 51652 - 44032: 0xC1F8, - 51653 - 44032: 0xA394, - 51654 - 44032: 0xA395, - 51655 - 44032: 0xC1F9, - 51656 - 44032: 0xC1FA, - 51657 - 44032: 0xA396, - 51658 - 44032: 0xC1FB, - 51659 - 44032: 0xA397, - 51660 - 44032: 0xA398, - 51661 - 44032: 0xA399, - 51662 - 44032: 0xA39A, - 51663 - 44032: 0xA39B, - 51664 - 44032: 0xC1FC, - 51665 - 44032: 0xC1FD, - 51666 - 44032: 0xA39C, - 51667 - 44032: 0xC1FE, - 51668 - 44032: 0xA39D, - 51669 - 44032: 0xC2A1, - 51670 - 44032: 0xC2A2, - 51671 - 44032: 0xA39E, - 51672 - 44032: 0xA39F, - 51673 - 44032: 0xC2A3, - 51674 - 44032: 0xC2A4, - 51675 - 44032: 0xA3A0, - 51676 - 44032: 0xC2A5, - 51677 - 44032: 0xC2A6, - 51678 - 44032: 0xA441, - 51679 - 44032: 0xA442, - 51680 - 44032: 0xC2A7, - 51681 - 44032: 0xA443, - 51682 - 44032: 0xC2A8, - 51683 - 44032: 0xA444, - 51684 - 44032: 0xC2A9, - 51685 - 44032: 0xA445, - 51686 - 44032: 0xA446, - 51687 - 44032: 0xC2AA, - 51688 - 44032: 0xA447, - 51689 - 44032: 0xA448, - 51690 - 44032: 0xA449, - 51691 - 44032: 0xA44A, - 51692 - 44032: 0xC2AB, - 51693 - 44032: 0xC2AC, - 51694 - 44032: 0xA44B, - 51695 - 44032: 0xC2AD, - 51696 - 44032: 0xC2AE, - 51697 - 44032: 0xC2AF, - 51698 - 44032: 0xA44C, - 51699 - 44032: 0xA44D, - 51700 - 44032: 0xA44E, - 51701 - 44032: 0xA44F, - 51702 - 44032: 0xA450, - 51703 - 44032: 0xA451, - 51704 - 44032: 0xC2B0, - 51705 - 44032: 0xC2B1, - 51706 - 44032: 0xA452, - 51707 - 44032: 0xA453, - 51708 - 44032: 0xC2B2, - 51709 - 44032: 0xA454, - 51710 - 44032: 0xA455, - 51711 - 44032: 0xA456, - 51712 - 44032: 0xC2B3, - 51713 - 44032: 0xA457, - 51714 - 44032: 0xA458, - 51715 - 44032: 0xA459, - 51716 - 44032: 0xA45A, - 51717 - 44032: 0xA461, - 51718 - 44032: 0xA462, - 51719 - 44032: 0xA463, - 51720 - 44032: 0xC2B4, - 51721 - 44032: 0xC2B5, - 51722 - 44032: 0xA464, - 51723 - 44032: 0xC2B6, - 51724 - 44032: 0xC2B7, - 51725 - 44032: 0xC2B8, - 51726 - 44032: 0xA465, - 51727 - 44032: 0xA466, - 51728 - 44032: 0xA467, - 51729 - 44032: 0xA468, - 51730 - 44032: 0xA469, - 51731 - 44032: 0xA46A, - 51732 - 44032: 0xC2B9, - 51733 - 44032: 0xA46B, - 51734 - 44032: 0xA46C, - 51735 - 44032: 0xA46D, - 51736 - 44032: 0xC2BA, - 51737 - 44032: 0xA46E, - 51738 - 44032: 0xA46F, - 51739 - 44032: 0xA470, - 51740 - 44032: 0xA471, - 51741 - 44032: 0xA472, - 51742 - 44032: 0xA473, - 51743 - 44032: 0xA474, - 51744 - 44032: 0xA475, - 51745 - 44032: 0xA476, - 51746 - 44032: 0xA477, - 51747 - 44032: 0xA478, - 51748 - 44032: 0xA479, - 51749 - 44032: 0xA47A, - 51750 - 44032: 0xA481, - 51751 - 44032: 0xA482, - 51752 - 44032: 0xA483, - 51753 - 44032: 0xC2BB, - 51754 - 44032: 0xA484, - 51755 - 44032: 0xA485, - 51756 - 44032: 0xA486, - 51757 - 44032: 0xA487, - 51758 - 44032: 0xA488, - 51759 - 44032: 0xA489, - 51760 - 44032: 0xA48A, - 51761 - 44032: 0xA48B, - 51762 - 44032: 0xA48C, - 51763 - 44032: 0xA48D, - 51764 - 44032: 0xA48E, - 51765 - 44032: 0xA48F, - 51766 - 44032: 0xA490, - 51767 - 44032: 0xA491, - 51768 - 44032: 0xA492, - 51769 - 44032: 0xA493, - 51770 - 44032: 0xA494, - 51771 - 44032: 0xA495, - 51772 - 44032: 0xA496, - 51773 - 44032: 0xA497, - 51774 - 44032: 0xA498, - 51775 - 44032: 0xA499, - 51776 - 44032: 0xA49A, - 51777 - 44032: 0xA49B, - 51778 - 44032: 0xA49C, - 51779 - 44032: 0xA49D, - 51780 - 44032: 0xA49E, - 51781 - 44032: 0xA49F, - 51782 - 44032: 0xA4A0, - 51783 - 44032: 0xA541, - 51784 - 44032: 0xA542, - 51785 - 44032: 0xA543, - 51786 - 44032: 0xA544, - 51787 - 44032: 0xA545, - 51788 - 44032: 0xC2BC, - 51789 - 44032: 0xC2BD, - 51790 - 44032: 0xA546, - 51791 - 44032: 0xA547, - 51792 - 44032: 0xC2BE, - 51793 - 44032: 0xA548, - 51794 - 44032: 0xA549, - 51795 - 44032: 0xA54A, - 51796 - 44032: 0xC2BF, - 51797 - 44032: 0xA54B, - 51798 - 44032: 0xA54C, - 51799 - 44032: 0xA54D, - 51800 - 44032: 0xA54E, - 51801 - 44032: 0xA54F, - 51802 - 44032: 0xA550, - 51803 - 44032: 0xA551, - 51804 - 44032: 0xC2C0, - 51805 - 44032: 0xC2C1, - 51806 - 44032: 0xA552, - 51807 - 44032: 0xC2C2, - 51808 - 44032: 0xC2C3, - 51809 - 44032: 0xC2C4, - 51810 - 44032: 0xA553, - 51811 - 44032: 0xA554, - 51812 - 44032: 0xA555, - 51813 - 44032: 0xA556, - 51814 - 44032: 0xA557, - 51815 - 44032: 0xA558, - 51816 - 44032: 0xC2C5, - 51817 - 44032: 0xA559, - 51818 - 44032: 0xA55A, - 51819 - 44032: 0xA561, - 51820 - 44032: 0xA562, - 51821 - 44032: 0xA563, - 51822 - 44032: 0xA564, - 51823 - 44032: 0xA565, - 51824 - 44032: 0xA566, - 51825 - 44032: 0xA567, - 51826 - 44032: 0xA568, - 51827 - 44032: 0xA569, - 51828 - 44032: 0xA56A, - 51829 - 44032: 0xA56B, - 51830 - 44032: 0xA56C, - 51831 - 44032: 0xA56D, - 51832 - 44032: 0xA56E, - 51833 - 44032: 0xA56F, - 51834 - 44032: 0xA570, - 51835 - 44032: 0xA571, - 51836 - 44032: 0xA572, - 51837 - 44032: 0xC2C6, - 51838 - 44032: 0xA573, - 51839 - 44032: 0xA574, - 51840 - 44032: 0xA575, - 51841 - 44032: 0xA576, - 51842 - 44032: 0xA577, - 51843 - 44032: 0xA578, - 51844 - 44032: 0xC2C7, - 51845 - 44032: 0xA579, - 51846 - 44032: 0xA57A, - 51847 - 44032: 0xA581, - 51848 - 44032: 0xA582, - 51849 - 44032: 0xA583, - 51850 - 44032: 0xA584, - 51851 - 44032: 0xA585, - 51852 - 44032: 0xA586, - 51853 - 44032: 0xA587, - 51854 - 44032: 0xA588, - 51855 - 44032: 0xA589, - 51856 - 44032: 0xA58A, - 51857 - 44032: 0xA58B, - 51858 - 44032: 0xA58C, - 51859 - 44032: 0xA58D, - 51860 - 44032: 0xA58E, - 51861 - 44032: 0xA58F, - 51862 - 44032: 0xA590, - 51863 - 44032: 0xA591, - 51864 - 44032: 0xC2C8, - 51865 - 44032: 0xA592, - 51866 - 44032: 0xA593, - 51867 - 44032: 0xA594, - 51868 - 44032: 0xA595, - 51869 - 44032: 0xA596, - 51870 - 44032: 0xA597, - 51871 - 44032: 0xA598, - 51872 - 44032: 0xA599, - 51873 - 44032: 0xA59A, - 51874 - 44032: 0xA59B, - 51875 - 44032: 0xA59C, - 51876 - 44032: 0xA59D, - 51877 - 44032: 0xA59E, - 51878 - 44032: 0xA59F, - 51879 - 44032: 0xA5A0, - 51880 - 44032: 0xA641, - 51881 - 44032: 0xA642, - 51882 - 44032: 0xA643, - 51883 - 44032: 0xA644, - 51884 - 44032: 0xA645, - 51885 - 44032: 0xA646, - 51886 - 44032: 0xA647, - 51887 - 44032: 0xA648, - 51888 - 44032: 0xA649, - 51889 - 44032: 0xA64A, - 51890 - 44032: 0xA64B, - 51891 - 44032: 0xA64C, - 51892 - 44032: 0xA64D, - 51893 - 44032: 0xA64E, - 51894 - 44032: 0xA64F, - 51895 - 44032: 0xA650, - 51896 - 44032: 0xA651, - 51897 - 44032: 0xA652, - 51898 - 44032: 0xA653, - 51899 - 44032: 0xA654, - 51900 - 44032: 0xC2C9, - 51901 - 44032: 0xC2CA, - 51902 - 44032: 0xA655, - 51903 - 44032: 0xA656, - 51904 - 44032: 0xC2CB, - 51905 - 44032: 0xA657, - 51906 - 44032: 0xA658, - 51907 - 44032: 0xA659, - 51908 - 44032: 0xC2CC, - 51909 - 44032: 0xA65A, - 51910 - 44032: 0xA661, - 51911 - 44032: 0xA662, - 51912 - 44032: 0xA663, - 51913 - 44032: 0xA664, - 51914 - 44032: 0xA665, - 51915 - 44032: 0xA666, - 51916 - 44032: 0xC2CD, - 51917 - 44032: 0xC2CE, - 51918 - 44032: 0xA667, - 51919 - 44032: 0xC2CF, - 51920 - 44032: 0xA668, - 51921 - 44032: 0xC2D0, - 51922 - 44032: 0xA669, - 51923 - 44032: 0xC2D1, - 51924 - 44032: 0xA66A, - 51925 - 44032: 0xA66B, - 51926 - 44032: 0xA66C, - 51927 - 44032: 0xA66D, - 51928 - 44032: 0xC2D2, - 51929 - 44032: 0xC2D3, - 51930 - 44032: 0xA66E, - 51931 - 44032: 0xA66F, - 51932 - 44032: 0xA670, - 51933 - 44032: 0xA671, - 51934 - 44032: 0xA672, - 51935 - 44032: 0xA673, - 51936 - 44032: 0xC2D4, - 51937 - 44032: 0xA674, - 51938 - 44032: 0xA675, - 51939 - 44032: 0xA676, - 51940 - 44032: 0xA677, - 51941 - 44032: 0xA678, - 51942 - 44032: 0xA679, - 51943 - 44032: 0xA67A, - 51944 - 44032: 0xA681, - 51945 - 44032: 0xA682, - 51946 - 44032: 0xA683, - 51947 - 44032: 0xA684, - 51948 - 44032: 0xC2D5, - 51949 - 44032: 0xA685, - 51950 - 44032: 0xA686, - 51951 - 44032: 0xA687, - 51952 - 44032: 0xA688, - 51953 - 44032: 0xA689, - 51954 - 44032: 0xA68A, - 51955 - 44032: 0xA68B, - 51956 - 44032: 0xC2D6, - 51957 - 44032: 0xA68C, - 51958 - 44032: 0xA68D, - 51959 - 44032: 0xA68E, - 51960 - 44032: 0xA68F, - 51961 - 44032: 0xA690, - 51962 - 44032: 0xA691, - 51963 - 44032: 0xA692, - 51964 - 44032: 0xA693, - 51965 - 44032: 0xA694, - 51966 - 44032: 0xA695, - 51967 - 44032: 0xA696, - 51968 - 44032: 0xA697, - 51969 - 44032: 0xA698, - 51970 - 44032: 0xA699, - 51971 - 44032: 0xA69A, - 51972 - 44032: 0xA69B, - 51973 - 44032: 0xA69C, - 51974 - 44032: 0xA69D, - 51975 - 44032: 0xA69E, - 51976 - 44032: 0xC2D7, - 51977 - 44032: 0xA69F, - 51978 - 44032: 0xA6A0, - 51979 - 44032: 0xA741, - 51980 - 44032: 0xA742, - 51981 - 44032: 0xA743, - 51982 - 44032: 0xA744, - 51983 - 44032: 0xA745, - 51984 - 44032: 0xC2D8, - 51985 - 44032: 0xA746, - 51986 - 44032: 0xA747, - 51987 - 44032: 0xA748, - 51988 - 44032: 0xC2D9, - 51989 - 44032: 0xA749, - 51990 - 44032: 0xA74A, - 51991 - 44032: 0xA74B, - 51992 - 44032: 0xC2DA, - 51993 - 44032: 0xA74C, - 51994 - 44032: 0xA74D, - 51995 - 44032: 0xA74E, - 51996 - 44032: 0xA74F, - 51997 - 44032: 0xA750, - 51998 - 44032: 0xA751, - 51999 - 44032: 0xA752, - 52000 - 44032: 0xC2DB, - 52001 - 44032: 0xC2DC, - 52002 - 44032: 0xA753, - 52003 - 44032: 0xA754, - 52004 - 44032: 0xA755, - 52005 - 44032: 0xA756, - 52006 - 44032: 0xA757, - 52007 - 44032: 0xA758, - 52008 - 44032: 0xA759, - 52009 - 44032: 0xA75A, - 52010 - 44032: 0xA761, - 52011 - 44032: 0xA762, - 52012 - 44032: 0xA763, - 52013 - 44032: 0xA764, - 52014 - 44032: 0xA765, - 52015 - 44032: 0xA766, - 52016 - 44032: 0xA767, - 52017 - 44032: 0xA768, - 52018 - 44032: 0xA769, - 52019 - 44032: 0xA76A, - 52020 - 44032: 0xA76B, - 52021 - 44032: 0xA76C, - 52022 - 44032: 0xA76D, - 52023 - 44032: 0xA76E, - 52024 - 44032: 0xA76F, - 52025 - 44032: 0xA770, - 52026 - 44032: 0xA771, - 52027 - 44032: 0xA772, - 52028 - 44032: 0xA773, - 52029 - 44032: 0xA774, - 52030 - 44032: 0xA775, - 52031 - 44032: 0xA776, - 52032 - 44032: 0xA777, - 52033 - 44032: 0xC2DD, - 52034 - 44032: 0xA778, - 52035 - 44032: 0xA779, - 52036 - 44032: 0xA77A, - 52037 - 44032: 0xA781, - 52038 - 44032: 0xA782, - 52039 - 44032: 0xA783, - 52040 - 44032: 0xC2DE, - 52041 - 44032: 0xC2DF, - 52042 - 44032: 0xA784, - 52043 - 44032: 0xA785, - 52044 - 44032: 0xC2E0, - 52045 - 44032: 0xA786, - 52046 - 44032: 0xA787, - 52047 - 44032: 0xA788, - 52048 - 44032: 0xC2E1, - 52049 - 44032: 0xA789, - 52050 - 44032: 0xA78A, - 52051 - 44032: 0xA78B, - 52052 - 44032: 0xA78C, - 52053 - 44032: 0xA78D, - 52054 - 44032: 0xA78E, - 52055 - 44032: 0xA78F, - 52056 - 44032: 0xC2E2, - 52057 - 44032: 0xC2E3, - 52058 - 44032: 0xA790, - 52059 - 44032: 0xA791, - 52060 - 44032: 0xA792, - 52061 - 44032: 0xC2E4, - 52062 - 44032: 0xA793, - 52063 - 44032: 0xA794, - 52064 - 44032: 0xA795, - 52065 - 44032: 0xA796, - 52066 - 44032: 0xA797, - 52067 - 44032: 0xA798, - 52068 - 44032: 0xC2E5, - 52069 - 44032: 0xA799, - 52070 - 44032: 0xA79A, - 52071 - 44032: 0xA79B, - 52072 - 44032: 0xA79C, - 52073 - 44032: 0xA79D, - 52074 - 44032: 0xA79E, - 52075 - 44032: 0xA79F, - 52076 - 44032: 0xA7A0, - 52077 - 44032: 0xA841, - 52078 - 44032: 0xA842, - 52079 - 44032: 0xA843, - 52080 - 44032: 0xA844, - 52081 - 44032: 0xA845, - 52082 - 44032: 0xA846, - 52083 - 44032: 0xA847, - 52084 - 44032: 0xA848, - 52085 - 44032: 0xA849, - 52086 - 44032: 0xA84A, - 52087 - 44032: 0xA84B, - 52088 - 44032: 0xC2E6, - 52089 - 44032: 0xC2E7, - 52090 - 44032: 0xA84C, - 52091 - 44032: 0xA84D, - 52092 - 44032: 0xA84E, - 52093 - 44032: 0xA84F, - 52094 - 44032: 0xA850, - 52095 - 44032: 0xA851, - 52096 - 44032: 0xA852, - 52097 - 44032: 0xA853, - 52098 - 44032: 0xA854, - 52099 - 44032: 0xA855, - 52100 - 44032: 0xA856, - 52101 - 44032: 0xA857, - 52102 - 44032: 0xA858, - 52103 - 44032: 0xA859, - 52104 - 44032: 0xA85A, - 52105 - 44032: 0xA861, - 52106 - 44032: 0xA862, - 52107 - 44032: 0xA863, - 52108 - 44032: 0xA864, - 52109 - 44032: 0xA865, - 52110 - 44032: 0xA866, - 52111 - 44032: 0xA867, - 52112 - 44032: 0xA868, - 52113 - 44032: 0xA869, - 52114 - 44032: 0xA86A, - 52115 - 44032: 0xA86B, - 52116 - 44032: 0xA86C, - 52117 - 44032: 0xA86D, - 52118 - 44032: 0xA86E, - 52119 - 44032: 0xA86F, - 52120 - 44032: 0xA870, - 52121 - 44032: 0xA871, - 52122 - 44032: 0xA872, - 52123 - 44032: 0xA873, - 52124 - 44032: 0xC2E8, - 52125 - 44032: 0xA874, - 52126 - 44032: 0xA875, - 52127 - 44032: 0xA876, - 52128 - 44032: 0xA877, - 52129 - 44032: 0xA878, - 52130 - 44032: 0xA879, - 52131 - 44032: 0xA87A, - 52132 - 44032: 0xA881, - 52133 - 44032: 0xA882, - 52134 - 44032: 0xA883, - 52135 - 44032: 0xA884, - 52136 - 44032: 0xA885, - 52137 - 44032: 0xA886, - 52138 - 44032: 0xA887, - 52139 - 44032: 0xA888, - 52140 - 44032: 0xA889, - 52141 - 44032: 0xA88A, - 52142 - 44032: 0xA88B, - 52143 - 44032: 0xA88C, - 52144 - 44032: 0xA88D, - 52145 - 44032: 0xA88E, - 52146 - 44032: 0xA88F, - 52147 - 44032: 0xA890, - 52148 - 44032: 0xA891, - 52149 - 44032: 0xA892, - 52150 - 44032: 0xA893, - 52151 - 44032: 0xA894, - 52152 - 44032: 0xC2E9, - 52153 - 44032: 0xA895, - 52154 - 44032: 0xA896, - 52155 - 44032: 0xA897, - 52156 - 44032: 0xA898, - 52157 - 44032: 0xA899, - 52158 - 44032: 0xA89A, - 52159 - 44032: 0xA89B, - 52160 - 44032: 0xA89C, - 52161 - 44032: 0xA89D, - 52162 - 44032: 0xA89E, - 52163 - 44032: 0xA89F, - 52164 - 44032: 0xA8A0, - 52165 - 44032: 0xA941, - 52166 - 44032: 0xA942, - 52167 - 44032: 0xA943, - 52168 - 44032: 0xA944, - 52169 - 44032: 0xA945, - 52170 - 44032: 0xA946, - 52171 - 44032: 0xA947, - 52172 - 44032: 0xA948, - 52173 - 44032: 0xA949, - 52174 - 44032: 0xA94A, - 52175 - 44032: 0xA94B, - 52176 - 44032: 0xA94C, - 52177 - 44032: 0xA94D, - 52178 - 44032: 0xA94E, - 52179 - 44032: 0xA94F, - 52180 - 44032: 0xC2EA, - 52181 - 44032: 0xA950, - 52182 - 44032: 0xA951, - 52183 - 44032: 0xA952, - 52184 - 44032: 0xA953, - 52185 - 44032: 0xA954, - 52186 - 44032: 0xA955, - 52187 - 44032: 0xA956, - 52188 - 44032: 0xA957, - 52189 - 44032: 0xA958, - 52190 - 44032: 0xA959, - 52191 - 44032: 0xA95A, - 52192 - 44032: 0xA961, - 52193 - 44032: 0xA962, - 52194 - 44032: 0xA963, - 52195 - 44032: 0xA964, - 52196 - 44032: 0xC2EB, - 52197 - 44032: 0xA965, - 52198 - 44032: 0xA966, - 52199 - 44032: 0xC2EC, - 52200 - 44032: 0xA967, - 52201 - 44032: 0xC2ED, - 52202 - 44032: 0xA968, - 52203 - 44032: 0xA969, - 52204 - 44032: 0xA96A, - 52205 - 44032: 0xA96B, - 52206 - 44032: 0xA96C, - 52207 - 44032: 0xA96D, - 52208 - 44032: 0xA96E, - 52209 - 44032: 0xA96F, - 52210 - 44032: 0xA970, - 52211 - 44032: 0xA971, - 52212 - 44032: 0xA972, - 52213 - 44032: 0xA973, - 52214 - 44032: 0xA974, - 52215 - 44032: 0xA975, - 52216 - 44032: 0xA976, - 52217 - 44032: 0xA977, - 52218 - 44032: 0xA978, - 52219 - 44032: 0xA979, - 52220 - 44032: 0xA97A, - 52221 - 44032: 0xA981, - 52222 - 44032: 0xA982, - 52223 - 44032: 0xA983, - 52224 - 44032: 0xA984, - 52225 - 44032: 0xA985, - 52226 - 44032: 0xA986, - 52227 - 44032: 0xA987, - 52228 - 44032: 0xA988, - 52229 - 44032: 0xA989, - 52230 - 44032: 0xA98A, - 52231 - 44032: 0xA98B, - 52232 - 44032: 0xA98C, - 52233 - 44032: 0xA98D, - 52234 - 44032: 0xA98E, - 52235 - 44032: 0xA98F, - 52236 - 44032: 0xC2EE, - 52237 - 44032: 0xC2EF, - 52238 - 44032: 0xA990, - 52239 - 44032: 0xA991, - 52240 - 44032: 0xC2F0, - 52241 - 44032: 0xA992, - 52242 - 44032: 0xA993, - 52243 - 44032: 0xA994, - 52244 - 44032: 0xC2F1, - 52245 - 44032: 0xA995, - 52246 - 44032: 0xA996, - 52247 - 44032: 0xA997, - 52248 - 44032: 0xA998, - 52249 - 44032: 0xA999, - 52250 - 44032: 0xA99A, - 52251 - 44032: 0xA99B, - 52252 - 44032: 0xC2F2, - 52253 - 44032: 0xC2F3, - 52254 - 44032: 0xA99C, - 52255 - 44032: 0xA99D, - 52256 - 44032: 0xA99E, - 52257 - 44032: 0xC2F4, - 52258 - 44032: 0xC2F5, - 52259 - 44032: 0xA99F, - 52260 - 44032: 0xA9A0, - 52261 - 44032: 0xAA41, - 52262 - 44032: 0xAA42, - 52263 - 44032: 0xC2F6, - 52264 - 44032: 0xC2F7, - 52265 - 44032: 0xC2F8, - 52266 - 44032: 0xAA43, - 52267 - 44032: 0xAA44, - 52268 - 44032: 0xC2F9, - 52269 - 44032: 0xAA45, - 52270 - 44032: 0xC2FA, - 52271 - 44032: 0xAA46, - 52272 - 44032: 0xC2FB, - 52273 - 44032: 0xAA47, - 52274 - 44032: 0xAA48, - 52275 - 44032: 0xAA49, - 52276 - 44032: 0xAA4A, - 52277 - 44032: 0xAA4B, - 52278 - 44032: 0xAA4C, - 52279 - 44032: 0xAA4D, - 52280 - 44032: 0xC2FC, - 52281 - 44032: 0xC2FD, - 52282 - 44032: 0xAA4E, - 52283 - 44032: 0xC2FE, - 52284 - 44032: 0xC3A1, - 52285 - 44032: 0xC3A2, - 52286 - 44032: 0xC3A3, - 52287 - 44032: 0xAA4F, - 52288 - 44032: 0xAA50, - 52289 - 44032: 0xAA51, - 52290 - 44032: 0xAA52, - 52291 - 44032: 0xAA53, - 52292 - 44032: 0xC3A4, - 52293 - 44032: 0xC3A5, - 52294 - 44032: 0xAA54, - 52295 - 44032: 0xAA55, - 52296 - 44032: 0xC3A6, - 52297 - 44032: 0xAA56, - 52298 - 44032: 0xAA57, - 52299 - 44032: 0xAA58, - 52300 - 44032: 0xC3A7, - 52301 - 44032: 0xAA59, - 52302 - 44032: 0xAA5A, - 52303 - 44032: 0xAA61, - 52304 - 44032: 0xAA62, - 52305 - 44032: 0xAA63, - 52306 - 44032: 0xAA64, - 52307 - 44032: 0xAA65, - 52308 - 44032: 0xC3A8, - 52309 - 44032: 0xC3A9, - 52310 - 44032: 0xAA66, - 52311 - 44032: 0xC3AA, - 52312 - 44032: 0xC3AB, - 52313 - 44032: 0xC3AC, - 52314 - 44032: 0xAA67, - 52315 - 44032: 0xAA68, - 52316 - 44032: 0xAA69, - 52317 - 44032: 0xAA6A, - 52318 - 44032: 0xAA6B, - 52319 - 44032: 0xAA6C, - 52320 - 44032: 0xC3AD, - 52321 - 44032: 0xAA6D, - 52322 - 44032: 0xAA6E, - 52323 - 44032: 0xAA6F, - 52324 - 44032: 0xC3AE, - 52325 - 44032: 0xAA70, - 52326 - 44032: 0xC3AF, - 52327 - 44032: 0xAA71, - 52328 - 44032: 0xC3B0, - 52329 - 44032: 0xAA72, - 52330 - 44032: 0xAA73, - 52331 - 44032: 0xAA74, - 52332 - 44032: 0xAA75, - 52333 - 44032: 0xAA76, - 52334 - 44032: 0xAA77, - 52335 - 44032: 0xAA78, - 52336 - 44032: 0xC3B1, - 52337 - 44032: 0xAA79, - 52338 - 44032: 0xAA7A, - 52339 - 44032: 0xAA81, - 52340 - 44032: 0xAA82, - 52341 - 44032: 0xC3B2, - 52342 - 44032: 0xAA83, - 52343 - 44032: 0xAA84, - 52344 - 44032: 0xAA85, - 52345 - 44032: 0xAA86, - 52346 - 44032: 0xAA87, - 52347 - 44032: 0xAA88, - 52348 - 44032: 0xAA89, - 52349 - 44032: 0xAA8A, - 52350 - 44032: 0xAA8B, - 52351 - 44032: 0xAA8C, - 52352 - 44032: 0xAA8D, - 52353 - 44032: 0xAA8E, - 52354 - 44032: 0xAA8F, - 52355 - 44032: 0xAA90, - 52356 - 44032: 0xAA91, - 52357 - 44032: 0xAA92, - 52358 - 44032: 0xAA93, - 52359 - 44032: 0xAA94, - 52360 - 44032: 0xAA95, - 52361 - 44032: 0xAA96, - 52362 - 44032: 0xAA97, - 52363 - 44032: 0xAA98, - 52364 - 44032: 0xAA99, - 52365 - 44032: 0xAA9A, - 52366 - 44032: 0xAA9B, - 52367 - 44032: 0xAA9C, - 52368 - 44032: 0xAA9D, - 52369 - 44032: 0xAA9E, - 52370 - 44032: 0xAA9F, - 52371 - 44032: 0xAAA0, - 52372 - 44032: 0xAB41, - 52373 - 44032: 0xAB42, - 52374 - 44032: 0xAB43, - 52375 - 44032: 0xAB44, - 52376 - 44032: 0xC3B3, - 52377 - 44032: 0xC3B4, - 52378 - 44032: 0xAB45, - 52379 - 44032: 0xAB46, - 52380 - 44032: 0xC3B5, - 52381 - 44032: 0xAB47, - 52382 - 44032: 0xAB48, - 52383 - 44032: 0xAB49, - 52384 - 44032: 0xC3B6, - 52385 - 44032: 0xAB4A, - 52386 - 44032: 0xAB4B, - 52387 - 44032: 0xAB4C, - 52388 - 44032: 0xAB4D, - 52389 - 44032: 0xAB4E, - 52390 - 44032: 0xAB4F, - 52391 - 44032: 0xAB50, - 52392 - 44032: 0xC3B7, - 52393 - 44032: 0xC3B8, - 52394 - 44032: 0xAB51, - 52395 - 44032: 0xC3B9, - 52396 - 44032: 0xC3BA, - 52397 - 44032: 0xC3BB, - 52398 - 44032: 0xAB52, - 52399 - 44032: 0xAB53, - 52400 - 44032: 0xAB54, - 52401 - 44032: 0xAB55, - 52402 - 44032: 0xAB56, - 52403 - 44032: 0xAB57, - 52404 - 44032: 0xC3BC, - 52405 - 44032: 0xC3BD, - 52406 - 44032: 0xAB58, - 52407 - 44032: 0xAB59, - 52408 - 44032: 0xC3BE, - 52409 - 44032: 0xAB5A, - 52410 - 44032: 0xAB61, - 52411 - 44032: 0xAB62, - 52412 - 44032: 0xC3BF, - 52413 - 44032: 0xAB63, - 52414 - 44032: 0xAB64, - 52415 - 44032: 0xAB65, - 52416 - 44032: 0xAB66, - 52417 - 44032: 0xAB67, - 52418 - 44032: 0xAB68, - 52419 - 44032: 0xAB69, - 52420 - 44032: 0xC3C0, - 52421 - 44032: 0xC3C1, - 52422 - 44032: 0xAB6A, - 52423 - 44032: 0xC3C2, - 52424 - 44032: 0xAB6B, - 52425 - 44032: 0xC3C3, - 52426 - 44032: 0xAB6C, - 52427 - 44032: 0xAB6D, - 52428 - 44032: 0xAB6E, - 52429 - 44032: 0xAB6F, - 52430 - 44032: 0xAB70, - 52431 - 44032: 0xAB71, - 52432 - 44032: 0xC3C4, - 52433 - 44032: 0xAB72, - 52434 - 44032: 0xAB73, - 52435 - 44032: 0xAB74, - 52436 - 44032: 0xC3C5, - 52437 - 44032: 0xAB75, - 52438 - 44032: 0xAB76, - 52439 - 44032: 0xAB77, - 52440 - 44032: 0xAB78, - 52441 - 44032: 0xAB79, - 52442 - 44032: 0xAB7A, - 52443 - 44032: 0xAB81, - 52444 - 44032: 0xAB82, - 52445 - 44032: 0xAB83, - 52446 - 44032: 0xAB84, - 52447 - 44032: 0xAB85, - 52448 - 44032: 0xAB86, - 52449 - 44032: 0xAB87, - 52450 - 44032: 0xAB88, - 52451 - 44032: 0xAB89, - 52452 - 44032: 0xC3C6, - 52453 - 44032: 0xAB8A, - 52454 - 44032: 0xAB8B, - 52455 - 44032: 0xAB8C, - 52456 - 44032: 0xAB8D, - 52457 - 44032: 0xAB8E, - 52458 - 44032: 0xAB8F, - 52459 - 44032: 0xAB90, - 52460 - 44032: 0xC3C7, - 52461 - 44032: 0xAB91, - 52462 - 44032: 0xAB92, - 52463 - 44032: 0xAB93, - 52464 - 44032: 0xC3C8, - 52465 - 44032: 0xAB94, - 52466 - 44032: 0xAB95, - 52467 - 44032: 0xAB96, - 52468 - 44032: 0xAB97, - 52469 - 44032: 0xAB98, - 52470 - 44032: 0xAB99, - 52471 - 44032: 0xAB9A, - 52472 - 44032: 0xAB9B, - 52473 - 44032: 0xAB9C, - 52474 - 44032: 0xAB9D, - 52475 - 44032: 0xAB9E, - 52476 - 44032: 0xAB9F, - 52477 - 44032: 0xABA0, - 52478 - 44032: 0xAC41, - 52479 - 44032: 0xAC42, - 52480 - 44032: 0xAC43, - 52481 - 44032: 0xC3C9, - 52482 - 44032: 0xAC44, - 52483 - 44032: 0xAC45, - 52484 - 44032: 0xAC46, - 52485 - 44032: 0xAC47, - 52486 - 44032: 0xAC48, - 52487 - 44032: 0xAC49, - 52488 - 44032: 0xC3CA, - 52489 - 44032: 0xC3CB, - 52490 - 44032: 0xAC4A, - 52491 - 44032: 0xAC4B, - 52492 - 44032: 0xC3CC, - 52493 - 44032: 0xAC4C, - 52494 - 44032: 0xAC4D, - 52495 - 44032: 0xAC4E, - 52496 - 44032: 0xC3CD, - 52497 - 44032: 0xAC4F, - 52498 - 44032: 0xAC50, - 52499 - 44032: 0xAC51, - 52500 - 44032: 0xAC52, - 52501 - 44032: 0xAC53, - 52502 - 44032: 0xAC54, - 52503 - 44032: 0xAC55, - 52504 - 44032: 0xC3CE, - 52505 - 44032: 0xC3CF, - 52506 - 44032: 0xAC56, - 52507 - 44032: 0xC3D0, - 52508 - 44032: 0xAC57, - 52509 - 44032: 0xC3D1, - 52510 - 44032: 0xAC58, - 52511 - 44032: 0xAC59, - 52512 - 44032: 0xAC5A, - 52513 - 44032: 0xAC61, - 52514 - 44032: 0xAC62, - 52515 - 44032: 0xAC63, - 52516 - 44032: 0xC3D2, - 52517 - 44032: 0xAC64, - 52518 - 44032: 0xAC65, - 52519 - 44032: 0xAC66, - 52520 - 44032: 0xC3D3, - 52521 - 44032: 0xAC67, - 52522 - 44032: 0xAC68, - 52523 - 44032: 0xAC69, - 52524 - 44032: 0xC3D4, - 52525 - 44032: 0xAC6A, - 52526 - 44032: 0xAC6B, - 52527 - 44032: 0xAC6C, - 52528 - 44032: 0xAC6D, - 52529 - 44032: 0xAC6E, - 52530 - 44032: 0xAC6F, - 52531 - 44032: 0xAC70, - 52532 - 44032: 0xAC71, - 52533 - 44032: 0xAC72, - 52534 - 44032: 0xAC73, - 52535 - 44032: 0xAC74, - 52536 - 44032: 0xAC75, - 52537 - 44032: 0xC3D5, - 52538 - 44032: 0xAC76, - 52539 - 44032: 0xAC77, - 52540 - 44032: 0xAC78, - 52541 - 44032: 0xAC79, - 52542 - 44032: 0xAC7A, - 52543 - 44032: 0xAC81, - 52544 - 44032: 0xAC82, - 52545 - 44032: 0xAC83, - 52546 - 44032: 0xAC84, - 52547 - 44032: 0xAC85, - 52548 - 44032: 0xAC86, - 52549 - 44032: 0xAC87, - 52550 - 44032: 0xAC88, - 52551 - 44032: 0xAC89, - 52552 - 44032: 0xAC8A, - 52553 - 44032: 0xAC8B, - 52554 - 44032: 0xAC8C, - 52555 - 44032: 0xAC8D, - 52556 - 44032: 0xAC8E, - 52557 - 44032: 0xAC8F, - 52558 - 44032: 0xAC90, - 52559 - 44032: 0xAC91, - 52560 - 44032: 0xAC92, - 52561 - 44032: 0xAC93, - 52562 - 44032: 0xAC94, - 52563 - 44032: 0xAC95, - 52564 - 44032: 0xAC96, - 52565 - 44032: 0xAC97, - 52566 - 44032: 0xAC98, - 52567 - 44032: 0xAC99, - 52568 - 44032: 0xAC9A, - 52569 - 44032: 0xAC9B, - 52570 - 44032: 0xAC9C, - 52571 - 44032: 0xAC9D, - 52572 - 44032: 0xC3D6, - 52573 - 44032: 0xAC9E, - 52574 - 44032: 0xAC9F, - 52575 - 44032: 0xACA0, - 52576 - 44032: 0xC3D7, - 52577 - 44032: 0xAD41, - 52578 - 44032: 0xAD42, - 52579 - 44032: 0xAD43, - 52580 - 44032: 0xC3D8, - 52581 - 44032: 0xAD44, - 52582 - 44032: 0xAD45, - 52583 - 44032: 0xAD46, - 52584 - 44032: 0xAD47, - 52585 - 44032: 0xAD48, - 52586 - 44032: 0xAD49, - 52587 - 44032: 0xAD4A, - 52588 - 44032: 0xC3D9, - 52589 - 44032: 0xC3DA, - 52590 - 44032: 0xAD4B, - 52591 - 44032: 0xC3DB, - 52592 - 44032: 0xAD4C, - 52593 - 44032: 0xC3DC, - 52594 - 44032: 0xAD4D, - 52595 - 44032: 0xAD4E, - 52596 - 44032: 0xAD4F, - 52597 - 44032: 0xAD50, - 52598 - 44032: 0xAD51, - 52599 - 44032: 0xAD52, - 52600 - 44032: 0xC3DD, - 52601 - 44032: 0xAD53, - 52602 - 44032: 0xAD54, - 52603 - 44032: 0xAD55, - 52604 - 44032: 0xAD56, - 52605 - 44032: 0xAD57, - 52606 - 44032: 0xAD58, - 52607 - 44032: 0xAD59, - 52608 - 44032: 0xAD5A, - 52609 - 44032: 0xAD61, - 52610 - 44032: 0xAD62, - 52611 - 44032: 0xAD63, - 52612 - 44032: 0xAD64, - 52613 - 44032: 0xAD65, - 52614 - 44032: 0xAD66, - 52615 - 44032: 0xAD67, - 52616 - 44032: 0xC3DE, - 52617 - 44032: 0xAD68, - 52618 - 44032: 0xAD69, - 52619 - 44032: 0xAD6A, - 52620 - 44032: 0xAD6B, - 52621 - 44032: 0xAD6C, - 52622 - 44032: 0xAD6D, - 52623 - 44032: 0xAD6E, - 52624 - 44032: 0xAD6F, - 52625 - 44032: 0xAD70, - 52626 - 44032: 0xAD71, - 52627 - 44032: 0xAD72, - 52628 - 44032: 0xC3DF, - 52629 - 44032: 0xC3E0, - 52630 - 44032: 0xAD73, - 52631 - 44032: 0xAD74, - 52632 - 44032: 0xC3E1, - 52633 - 44032: 0xAD75, - 52634 - 44032: 0xAD76, - 52635 - 44032: 0xAD77, - 52636 - 44032: 0xC3E2, - 52637 - 44032: 0xAD78, - 52638 - 44032: 0xAD79, - 52639 - 44032: 0xAD7A, - 52640 - 44032: 0xAD81, - 52641 - 44032: 0xAD82, - 52642 - 44032: 0xAD83, - 52643 - 44032: 0xAD84, - 52644 - 44032: 0xC3E3, - 52645 - 44032: 0xC3E4, - 52646 - 44032: 0xAD85, - 52647 - 44032: 0xC3E5, - 52648 - 44032: 0xAD86, - 52649 - 44032: 0xC3E6, - 52650 - 44032: 0xAD87, - 52651 - 44032: 0xAD88, - 52652 - 44032: 0xAD89, - 52653 - 44032: 0xAD8A, - 52654 - 44032: 0xAD8B, - 52655 - 44032: 0xAD8C, - 52656 - 44032: 0xC3E7, - 52657 - 44032: 0xAD8D, - 52658 - 44032: 0xAD8E, - 52659 - 44032: 0xAD8F, - 52660 - 44032: 0xAD90, - 52661 - 44032: 0xAD91, - 52662 - 44032: 0xAD92, - 52663 - 44032: 0xAD93, - 52664 - 44032: 0xAD94, - 52665 - 44032: 0xAD95, - 52666 - 44032: 0xAD96, - 52667 - 44032: 0xAD97, - 52668 - 44032: 0xAD98, - 52669 - 44032: 0xAD99, - 52670 - 44032: 0xAD9A, - 52671 - 44032: 0xAD9B, - 52672 - 44032: 0xAD9C, - 52673 - 44032: 0xAD9D, - 52674 - 44032: 0xAD9E, - 52675 - 44032: 0xAD9F, - 52676 - 44032: 0xC3E8, - 52677 - 44032: 0xADA0, - 52678 - 44032: 0xAE41, - 52679 - 44032: 0xAE42, - 52680 - 44032: 0xAE43, - 52681 - 44032: 0xAE44, - 52682 - 44032: 0xAE45, - 52683 - 44032: 0xAE46, - 52684 - 44032: 0xC3E9, - 52685 - 44032: 0xAE47, - 52686 - 44032: 0xAE48, - 52687 - 44032: 0xAE49, - 52688 - 44032: 0xC3EA, - 52689 - 44032: 0xAE4A, - 52690 - 44032: 0xAE4B, - 52691 - 44032: 0xAE4C, - 52692 - 44032: 0xAE4D, - 52693 - 44032: 0xAE4E, - 52694 - 44032: 0xAE4F, - 52695 - 44032: 0xAE50, - 52696 - 44032: 0xAE51, - 52697 - 44032: 0xAE52, - 52698 - 44032: 0xAE53, - 52699 - 44032: 0xAE54, - 52700 - 44032: 0xAE55, - 52701 - 44032: 0xAE56, - 52702 - 44032: 0xAE57, - 52703 - 44032: 0xAE58, - 52704 - 44032: 0xAE59, - 52705 - 44032: 0xAE5A, - 52706 - 44032: 0xAE61, - 52707 - 44032: 0xAE62, - 52708 - 44032: 0xAE63, - 52709 - 44032: 0xAE64, - 52710 - 44032: 0xAE65, - 52711 - 44032: 0xAE66, - 52712 - 44032: 0xC3EB, - 52713 - 44032: 0xAE67, - 52714 - 44032: 0xAE68, - 52715 - 44032: 0xAE69, - 52716 - 44032: 0xC3EC, - 52717 - 44032: 0xAE6A, - 52718 - 44032: 0xAE6B, - 52719 - 44032: 0xAE6C, - 52720 - 44032: 0xC3ED, - 52721 - 44032: 0xAE6D, - 52722 - 44032: 0xAE6E, - 52723 - 44032: 0xAE6F, - 52724 - 44032: 0xAE70, - 52725 - 44032: 0xAE71, - 52726 - 44032: 0xAE72, - 52727 - 44032: 0xAE73, - 52728 - 44032: 0xC3EE, - 52729 - 44032: 0xC3EF, - 52730 - 44032: 0xAE74, - 52731 - 44032: 0xC3F0, - 52732 - 44032: 0xAE75, - 52733 - 44032: 0xC3F1, - 52734 - 44032: 0xAE76, - 52735 - 44032: 0xAE77, - 52736 - 44032: 0xAE78, - 52737 - 44032: 0xAE79, - 52738 - 44032: 0xAE7A, - 52739 - 44032: 0xAE81, - 52740 - 44032: 0xC3F2, - 52741 - 44032: 0xAE82, - 52742 - 44032: 0xAE83, - 52743 - 44032: 0xAE84, - 52744 - 44032: 0xC3F3, - 52745 - 44032: 0xAE85, - 52746 - 44032: 0xAE86, - 52747 - 44032: 0xAE87, - 52748 - 44032: 0xC3F4, - 52749 - 44032: 0xAE88, - 52750 - 44032: 0xAE89, - 52751 - 44032: 0xAE8A, - 52752 - 44032: 0xAE8B, - 52753 - 44032: 0xAE8C, - 52754 - 44032: 0xAE8D, - 52755 - 44032: 0xAE8E, - 52756 - 44032: 0xC3F5, - 52757 - 44032: 0xAE8F, - 52758 - 44032: 0xAE90, - 52759 - 44032: 0xAE91, - 52760 - 44032: 0xAE92, - 52761 - 44032: 0xC3F6, - 52762 - 44032: 0xAE93, - 52763 - 44032: 0xAE94, - 52764 - 44032: 0xAE95, - 52765 - 44032: 0xAE96, - 52766 - 44032: 0xAE97, - 52767 - 44032: 0xAE98, - 52768 - 44032: 0xC3F7, - 52769 - 44032: 0xC3F8, - 52770 - 44032: 0xAE99, - 52771 - 44032: 0xAE9A, - 52772 - 44032: 0xC3F9, - 52773 - 44032: 0xAE9B, - 52774 - 44032: 0xAE9C, - 52775 - 44032: 0xAE9D, - 52776 - 44032: 0xC3FA, - 52777 - 44032: 0xAE9E, - 52778 - 44032: 0xAE9F, - 52779 - 44032: 0xAEA0, - 52780 - 44032: 0xAF41, - 52781 - 44032: 0xAF42, - 52782 - 44032: 0xAF43, - 52783 - 44032: 0xAF44, - 52784 - 44032: 0xC3FB, - 52785 - 44032: 0xC3FC, - 52786 - 44032: 0xAF45, - 52787 - 44032: 0xC3FD, - 52788 - 44032: 0xAF46, - 52789 - 44032: 0xC3FE, - 52790 - 44032: 0xAF47, - 52791 - 44032: 0xAF48, - 52792 - 44032: 0xAF49, - 52793 - 44032: 0xAF4A, - 52794 - 44032: 0xAF4B, - 52795 - 44032: 0xAF4C, - 52796 - 44032: 0xAF4D, - 52797 - 44032: 0xAF4E, - 52798 - 44032: 0xAF4F, - 52799 - 44032: 0xAF50, - 52800 - 44032: 0xAF51, - 52801 - 44032: 0xAF52, - 52802 - 44032: 0xAF53, - 52803 - 44032: 0xAF54, - 52804 - 44032: 0xAF55, - 52805 - 44032: 0xAF56, - 52806 - 44032: 0xAF57, - 52807 - 44032: 0xAF58, - 52808 - 44032: 0xAF59, - 52809 - 44032: 0xAF5A, - 52810 - 44032: 0xAF61, - 52811 - 44032: 0xAF62, - 52812 - 44032: 0xAF63, - 52813 - 44032: 0xAF64, - 52814 - 44032: 0xAF65, - 52815 - 44032: 0xAF66, - 52816 - 44032: 0xAF67, - 52817 - 44032: 0xAF68, - 52818 - 44032: 0xAF69, - 52819 - 44032: 0xAF6A, - 52820 - 44032: 0xAF6B, - 52821 - 44032: 0xAF6C, - 52822 - 44032: 0xAF6D, - 52823 - 44032: 0xAF6E, - 52824 - 44032: 0xC4A1, - 52825 - 44032: 0xC4A2, - 52826 - 44032: 0xAF6F, - 52827 - 44032: 0xAF70, - 52828 - 44032: 0xC4A3, - 52829 - 44032: 0xAF71, - 52830 - 44032: 0xAF72, - 52831 - 44032: 0xC4A4, - 52832 - 44032: 0xC4A5, - 52833 - 44032: 0xC4A6, - 52834 - 44032: 0xAF73, - 52835 - 44032: 0xAF74, - 52836 - 44032: 0xAF75, - 52837 - 44032: 0xAF76, - 52838 - 44032: 0xAF77, - 52839 - 44032: 0xAF78, - 52840 - 44032: 0xC4A7, - 52841 - 44032: 0xC4A8, - 52842 - 44032: 0xAF79, - 52843 - 44032: 0xC4A9, - 52844 - 44032: 0xAF7A, - 52845 - 44032: 0xC4AA, - 52846 - 44032: 0xAF81, - 52847 - 44032: 0xAF82, - 52848 - 44032: 0xAF83, - 52849 - 44032: 0xAF84, - 52850 - 44032: 0xAF85, - 52851 - 44032: 0xAF86, - 52852 - 44032: 0xC4AB, - 52853 - 44032: 0xC4AC, - 52854 - 44032: 0xAF87, - 52855 - 44032: 0xAF88, - 52856 - 44032: 0xC4AD, - 52857 - 44032: 0xAF89, - 52858 - 44032: 0xAF8A, - 52859 - 44032: 0xAF8B, - 52860 - 44032: 0xC4AE, - 52861 - 44032: 0xAF8C, - 52862 - 44032: 0xAF8D, - 52863 - 44032: 0xAF8E, - 52864 - 44032: 0xAF8F, - 52865 - 44032: 0xAF90, - 52866 - 44032: 0xAF91, - 52867 - 44032: 0xAF92, - 52868 - 44032: 0xC4AF, - 52869 - 44032: 0xC4B0, - 52870 - 44032: 0xAF93, - 52871 - 44032: 0xC4B1, - 52872 - 44032: 0xAF94, - 52873 - 44032: 0xC4B2, - 52874 - 44032: 0xAF95, - 52875 - 44032: 0xAF96, - 52876 - 44032: 0xAF97, - 52877 - 44032: 0xAF98, - 52878 - 44032: 0xAF99, - 52879 - 44032: 0xAF9A, - 52880 - 44032: 0xC4B3, - 52881 - 44032: 0xC4B4, - 52882 - 44032: 0xAF9B, - 52883 - 44032: 0xAF9C, - 52884 - 44032: 0xC4B5, - 52885 - 44032: 0xAF9D, - 52886 - 44032: 0xAF9E, - 52887 - 44032: 0xAF9F, - 52888 - 44032: 0xC4B6, - 52889 - 44032: 0xAFA0, - 52890 - 44032: 0xB041, - 52891 - 44032: 0xB042, - 52892 - 44032: 0xB043, - 52893 - 44032: 0xB044, - 52894 - 44032: 0xB045, - 52895 - 44032: 0xB046, - 52896 - 44032: 0xC4B7, - 52897 - 44032: 0xC4B8, - 52898 - 44032: 0xB047, - 52899 - 44032: 0xC4B9, - 52900 - 44032: 0xC4BA, - 52901 - 44032: 0xC4BB, - 52902 - 44032: 0xB048, - 52903 - 44032: 0xB049, - 52904 - 44032: 0xB04A, - 52905 - 44032: 0xB04B, - 52906 - 44032: 0xB04C, - 52907 - 44032: 0xB04D, - 52908 - 44032: 0xC4BC, - 52909 - 44032: 0xC4BD, - 52910 - 44032: 0xB04E, - 52911 - 44032: 0xB04F, - 52912 - 44032: 0xB050, - 52913 - 44032: 0xB051, - 52914 - 44032: 0xB052, - 52915 - 44032: 0xB053, - 52916 - 44032: 0xB054, - 52917 - 44032: 0xB055, - 52918 - 44032: 0xB056, - 52919 - 44032: 0xB057, - 52920 - 44032: 0xB058, - 52921 - 44032: 0xB059, - 52922 - 44032: 0xB05A, - 52923 - 44032: 0xB061, - 52924 - 44032: 0xB062, - 52925 - 44032: 0xB063, - 52926 - 44032: 0xB064, - 52927 - 44032: 0xB065, - 52928 - 44032: 0xB066, - 52929 - 44032: 0xC4BE, - 52930 - 44032: 0xB067, - 52931 - 44032: 0xB068, - 52932 - 44032: 0xB069, - 52933 - 44032: 0xB06A, - 52934 - 44032: 0xB06B, - 52935 - 44032: 0xB06C, - 52936 - 44032: 0xB06D, - 52937 - 44032: 0xB06E, - 52938 - 44032: 0xB06F, - 52939 - 44032: 0xB070, - 52940 - 44032: 0xB071, - 52941 - 44032: 0xB072, - 52942 - 44032: 0xB073, - 52943 - 44032: 0xB074, - 52944 - 44032: 0xB075, - 52945 - 44032: 0xB076, - 52946 - 44032: 0xB077, - 52947 - 44032: 0xB078, - 52948 - 44032: 0xB079, - 52949 - 44032: 0xB07A, - 52950 - 44032: 0xB081, - 52951 - 44032: 0xB082, - 52952 - 44032: 0xB083, - 52953 - 44032: 0xB084, - 52954 - 44032: 0xB085, - 52955 - 44032: 0xB086, - 52956 - 44032: 0xB087, - 52957 - 44032: 0xB088, - 52958 - 44032: 0xB089, - 52959 - 44032: 0xB08A, - 52960 - 44032: 0xB08B, - 52961 - 44032: 0xB08C, - 52962 - 44032: 0xB08D, - 52963 - 44032: 0xB08E, - 52964 - 44032: 0xC4BF, - 52965 - 44032: 0xC4C0, - 52966 - 44032: 0xB08F, - 52967 - 44032: 0xB090, - 52968 - 44032: 0xC4C1, - 52969 - 44032: 0xB091, - 52970 - 44032: 0xB092, - 52971 - 44032: 0xC4C2, - 52972 - 44032: 0xC4C3, - 52973 - 44032: 0xB093, - 52974 - 44032: 0xB094, - 52975 - 44032: 0xB095, - 52976 - 44032: 0xB096, - 52977 - 44032: 0xB097, - 52978 - 44032: 0xB098, - 52979 - 44032: 0xB099, - 52980 - 44032: 0xC4C4, - 52981 - 44032: 0xC4C5, - 52982 - 44032: 0xB09A, - 52983 - 44032: 0xC4C6, - 52984 - 44032: 0xC4C7, - 52985 - 44032: 0xC4C8, - 52986 - 44032: 0xB09B, - 52987 - 44032: 0xB09C, - 52988 - 44032: 0xB09D, - 52989 - 44032: 0xB09E, - 52990 - 44032: 0xB09F, - 52991 - 44032: 0xB0A0, - 52992 - 44032: 0xC4C9, - 52993 - 44032: 0xC4CA, - 52994 - 44032: 0xB141, - 52995 - 44032: 0xB142, - 52996 - 44032: 0xC4CB, - 52997 - 44032: 0xB143, - 52998 - 44032: 0xB144, - 52999 - 44032: 0xB145, - 53000 - 44032: 0xC4CC, - 53001 - 44032: 0xB146, - 53002 - 44032: 0xB147, - 53003 - 44032: 0xB148, - 53004 - 44032: 0xB149, - 53005 - 44032: 0xB14A, - 53006 - 44032: 0xB14B, - 53007 - 44032: 0xB14C, - 53008 - 44032: 0xC4CD, - 53009 - 44032: 0xC4CE, - 53010 - 44032: 0xB14D, - 53011 - 44032: 0xC4CF, - 53012 - 44032: 0xB14E, - 53013 - 44032: 0xC4D0, - 53014 - 44032: 0xB14F, - 53015 - 44032: 0xB150, - 53016 - 44032: 0xB151, - 53017 - 44032: 0xB152, - 53018 - 44032: 0xB153, - 53019 - 44032: 0xB154, - 53020 - 44032: 0xC4D1, - 53021 - 44032: 0xB155, - 53022 - 44032: 0xB156, - 53023 - 44032: 0xB157, - 53024 - 44032: 0xC4D2, - 53025 - 44032: 0xB158, - 53026 - 44032: 0xB159, - 53027 - 44032: 0xB15A, - 53028 - 44032: 0xC4D3, - 53029 - 44032: 0xB161, - 53030 - 44032: 0xB162, - 53031 - 44032: 0xB163, - 53032 - 44032: 0xB164, - 53033 - 44032: 0xB165, - 53034 - 44032: 0xB166, - 53035 - 44032: 0xB167, - 53036 - 44032: 0xC4D4, - 53037 - 44032: 0xC4D5, - 53038 - 44032: 0xB168, - 53039 - 44032: 0xC4D6, - 53040 - 44032: 0xC4D7, - 53041 - 44032: 0xC4D8, - 53042 - 44032: 0xB169, - 53043 - 44032: 0xB16A, - 53044 - 44032: 0xB16B, - 53045 - 44032: 0xB16C, - 53046 - 44032: 0xB16D, - 53047 - 44032: 0xB16E, - 53048 - 44032: 0xC4D9, - 53049 - 44032: 0xB16F, - 53050 - 44032: 0xB170, - 53051 - 44032: 0xB171, - 53052 - 44032: 0xB172, - 53053 - 44032: 0xB173, - 53054 - 44032: 0xB174, - 53055 - 44032: 0xB175, - 53056 - 44032: 0xB176, - 53057 - 44032: 0xB177, - 53058 - 44032: 0xB178, - 53059 - 44032: 0xB179, - 53060 - 44032: 0xB17A, - 53061 - 44032: 0xB181, - 53062 - 44032: 0xB182, - 53063 - 44032: 0xB183, - 53064 - 44032: 0xB184, - 53065 - 44032: 0xB185, - 53066 - 44032: 0xB186, - 53067 - 44032: 0xB187, - 53068 - 44032: 0xB188, - 53069 - 44032: 0xB189, - 53070 - 44032: 0xB18A, - 53071 - 44032: 0xB18B, - 53072 - 44032: 0xB18C, - 53073 - 44032: 0xB18D, - 53074 - 44032: 0xB18E, - 53075 - 44032: 0xB18F, - 53076 - 44032: 0xC4DA, - 53077 - 44032: 0xC4DB, - 53078 - 44032: 0xB190, - 53079 - 44032: 0xB191, - 53080 - 44032: 0xC4DC, - 53081 - 44032: 0xB192, - 53082 - 44032: 0xB193, - 53083 - 44032: 0xB194, - 53084 - 44032: 0xC4DD, - 53085 - 44032: 0xB195, - 53086 - 44032: 0xB196, - 53087 - 44032: 0xB197, - 53088 - 44032: 0xB198, - 53089 - 44032: 0xB199, - 53090 - 44032: 0xB19A, - 53091 - 44032: 0xB19B, - 53092 - 44032: 0xC4DE, - 53093 - 44032: 0xC4DF, - 53094 - 44032: 0xB19C, - 53095 - 44032: 0xC4E0, - 53096 - 44032: 0xB19D, - 53097 - 44032: 0xC4E1, - 53098 - 44032: 0xB19E, - 53099 - 44032: 0xB19F, - 53100 - 44032: 0xB1A0, - 53101 - 44032: 0xB241, - 53102 - 44032: 0xB242, - 53103 - 44032: 0xB243, - 53104 - 44032: 0xC4E2, - 53105 - 44032: 0xC4E3, - 53106 - 44032: 0xB244, - 53107 - 44032: 0xB245, - 53108 - 44032: 0xC4E4, - 53109 - 44032: 0xB246, - 53110 - 44032: 0xB247, - 53111 - 44032: 0xB248, - 53112 - 44032: 0xC4E5, - 53113 - 44032: 0xB249, - 53114 - 44032: 0xB24A, - 53115 - 44032: 0xB24B, - 53116 - 44032: 0xB24C, - 53117 - 44032: 0xB24D, - 53118 - 44032: 0xB24E, - 53119 - 44032: 0xB24F, - 53120 - 44032: 0xC4E6, - 53121 - 44032: 0xB250, - 53122 - 44032: 0xB251, - 53123 - 44032: 0xB252, - 53124 - 44032: 0xB253, - 53125 - 44032: 0xC4E7, - 53126 - 44032: 0xB254, - 53127 - 44032: 0xB255, - 53128 - 44032: 0xB256, - 53129 - 44032: 0xB257, - 53130 - 44032: 0xB258, - 53131 - 44032: 0xB259, - 53132 - 44032: 0xC4E8, - 53133 - 44032: 0xB25A, - 53134 - 44032: 0xB261, - 53135 - 44032: 0xB262, - 53136 - 44032: 0xB263, - 53137 - 44032: 0xB264, - 53138 - 44032: 0xB265, - 53139 - 44032: 0xB266, - 53140 - 44032: 0xB267, - 53141 - 44032: 0xB268, - 53142 - 44032: 0xB269, - 53143 - 44032: 0xB26A, - 53144 - 44032: 0xB26B, - 53145 - 44032: 0xB26C, - 53146 - 44032: 0xB26D, - 53147 - 44032: 0xB26E, - 53148 - 44032: 0xB26F, - 53149 - 44032: 0xB270, - 53150 - 44032: 0xB271, - 53151 - 44032: 0xB272, - 53152 - 44032: 0xB273, - 53153 - 44032: 0xC4E9, - 53154 - 44032: 0xB274, - 53155 - 44032: 0xB275, - 53156 - 44032: 0xB276, - 53157 - 44032: 0xB277, - 53158 - 44032: 0xB278, - 53159 - 44032: 0xB279, - 53160 - 44032: 0xC4EA, - 53161 - 44032: 0xB27A, - 53162 - 44032: 0xB281, - 53163 - 44032: 0xB282, - 53164 - 44032: 0xB283, - 53165 - 44032: 0xB284, - 53166 - 44032: 0xB285, - 53167 - 44032: 0xB286, - 53168 - 44032: 0xC4EB, - 53169 - 44032: 0xB287, - 53170 - 44032: 0xB288, - 53171 - 44032: 0xB289, - 53172 - 44032: 0xB28A, - 53173 - 44032: 0xB28B, - 53174 - 44032: 0xB28C, - 53175 - 44032: 0xB28D, - 53176 - 44032: 0xB28E, - 53177 - 44032: 0xB28F, - 53178 - 44032: 0xB290, - 53179 - 44032: 0xB291, - 53180 - 44032: 0xB292, - 53181 - 44032: 0xB293, - 53182 - 44032: 0xB294, - 53183 - 44032: 0xB295, - 53184 - 44032: 0xB296, - 53185 - 44032: 0xB297, - 53186 - 44032: 0xB298, - 53187 - 44032: 0xB299, - 53188 - 44032: 0xC4EC, - 53189 - 44032: 0xB29A, - 53190 - 44032: 0xB29B, - 53191 - 44032: 0xB29C, - 53192 - 44032: 0xB29D, - 53193 - 44032: 0xB29E, - 53194 - 44032: 0xB29F, - 53195 - 44032: 0xB2A0, - 53196 - 44032: 0xB341, - 53197 - 44032: 0xB342, - 53198 - 44032: 0xB343, - 53199 - 44032: 0xB344, - 53200 - 44032: 0xB345, - 53201 - 44032: 0xB346, - 53202 - 44032: 0xB347, - 53203 - 44032: 0xB348, - 53204 - 44032: 0xB349, - 53205 - 44032: 0xB34A, - 53206 - 44032: 0xB34B, - 53207 - 44032: 0xB34C, - 53208 - 44032: 0xB34D, - 53209 - 44032: 0xB34E, - 53210 - 44032: 0xB34F, - 53211 - 44032: 0xB350, - 53212 - 44032: 0xB351, - 53213 - 44032: 0xB352, - 53214 - 44032: 0xB353, - 53215 - 44032: 0xB354, - 53216 - 44032: 0xC4ED, - 53217 - 44032: 0xC4EE, - 53218 - 44032: 0xB355, - 53219 - 44032: 0xB356, - 53220 - 44032: 0xC4EF, - 53221 - 44032: 0xB357, - 53222 - 44032: 0xB358, - 53223 - 44032: 0xB359, - 53224 - 44032: 0xC4F0, - 53225 - 44032: 0xB35A, - 53226 - 44032: 0xB361, - 53227 - 44032: 0xB362, - 53228 - 44032: 0xB363, - 53229 - 44032: 0xB364, - 53230 - 44032: 0xB365, - 53231 - 44032: 0xB366, - 53232 - 44032: 0xC4F1, - 53233 - 44032: 0xC4F2, - 53234 - 44032: 0xB367, - 53235 - 44032: 0xC4F3, - 53236 - 44032: 0xB368, - 53237 - 44032: 0xC4F4, - 53238 - 44032: 0xB369, - 53239 - 44032: 0xB36A, - 53240 - 44032: 0xB36B, - 53241 - 44032: 0xB36C, - 53242 - 44032: 0xB36D, - 53243 - 44032: 0xB36E, - 53244 - 44032: 0xC4F5, - 53245 - 44032: 0xB36F, - 53246 - 44032: 0xB370, - 53247 - 44032: 0xB371, - 53248 - 44032: 0xC4F6, - 53249 - 44032: 0xB372, - 53250 - 44032: 0xB373, - 53251 - 44032: 0xB374, - 53252 - 44032: 0xC4F7, - 53253 - 44032: 0xB375, - 53254 - 44032: 0xB376, - 53255 - 44032: 0xB377, - 53256 - 44032: 0xB378, - 53257 - 44032: 0xB379, - 53258 - 44032: 0xB37A, - 53259 - 44032: 0xB381, - 53260 - 44032: 0xB382, - 53261 - 44032: 0xB383, - 53262 - 44032: 0xB384, - 53263 - 44032: 0xB385, - 53264 - 44032: 0xB386, - 53265 - 44032: 0xC4F8, - 53266 - 44032: 0xB387, - 53267 - 44032: 0xB388, - 53268 - 44032: 0xB389, - 53269 - 44032: 0xB38A, - 53270 - 44032: 0xB38B, - 53271 - 44032: 0xB38C, - 53272 - 44032: 0xC4F9, - 53273 - 44032: 0xB38D, - 53274 - 44032: 0xB38E, - 53275 - 44032: 0xB38F, - 53276 - 44032: 0xB390, - 53277 - 44032: 0xB391, - 53278 - 44032: 0xB392, - 53279 - 44032: 0xB393, - 53280 - 44032: 0xB394, - 53281 - 44032: 0xB395, - 53282 - 44032: 0xB396, - 53283 - 44032: 0xB397, - 53284 - 44032: 0xB398, - 53285 - 44032: 0xB399, - 53286 - 44032: 0xB39A, - 53287 - 44032: 0xB39B, - 53288 - 44032: 0xB39C, - 53289 - 44032: 0xB39D, - 53290 - 44032: 0xB39E, - 53291 - 44032: 0xB39F, - 53292 - 44032: 0xB3A0, - 53293 - 44032: 0xC4FA, - 53294 - 44032: 0xB441, - 53295 - 44032: 0xB442, - 53296 - 44032: 0xB443, - 53297 - 44032: 0xB444, - 53298 - 44032: 0xB445, - 53299 - 44032: 0xB446, - 53300 - 44032: 0xC4FB, - 53301 - 44032: 0xC4FC, - 53302 - 44032: 0xB447, - 53303 - 44032: 0xB448, - 53304 - 44032: 0xC4FD, - 53305 - 44032: 0xB449, - 53306 - 44032: 0xB44A, - 53307 - 44032: 0xB44B, - 53308 - 44032: 0xC4FE, - 53309 - 44032: 0xB44C, - 53310 - 44032: 0xB44D, - 53311 - 44032: 0xB44E, - 53312 - 44032: 0xB44F, - 53313 - 44032: 0xB450, - 53314 - 44032: 0xB451, - 53315 - 44032: 0xB452, - 53316 - 44032: 0xC5A1, - 53317 - 44032: 0xC5A2, - 53318 - 44032: 0xB453, - 53319 - 44032: 0xC5A3, - 53320 - 44032: 0xB454, - 53321 - 44032: 0xC5A4, - 53322 - 44032: 0xB455, - 53323 - 44032: 0xB456, - 53324 - 44032: 0xB457, - 53325 - 44032: 0xB458, - 53326 - 44032: 0xB459, - 53327 - 44032: 0xB45A, - 53328 - 44032: 0xC5A5, - 53329 - 44032: 0xB461, - 53330 - 44032: 0xB462, - 53331 - 44032: 0xB463, - 53332 - 44032: 0xC5A6, - 53333 - 44032: 0xB464, - 53334 - 44032: 0xB465, - 53335 - 44032: 0xB466, - 53336 - 44032: 0xC5A7, - 53337 - 44032: 0xB467, - 53338 - 44032: 0xB468, - 53339 - 44032: 0xB469, - 53340 - 44032: 0xB46A, - 53341 - 44032: 0xB46B, - 53342 - 44032: 0xB46C, - 53343 - 44032: 0xB46D, - 53344 - 44032: 0xC5A8, - 53345 - 44032: 0xB46E, - 53346 - 44032: 0xB46F, - 53347 - 44032: 0xB470, - 53348 - 44032: 0xB471, - 53349 - 44032: 0xB472, - 53350 - 44032: 0xB473, - 53351 - 44032: 0xB474, - 53352 - 44032: 0xB475, - 53353 - 44032: 0xB476, - 53354 - 44032: 0xB477, - 53355 - 44032: 0xB478, - 53356 - 44032: 0xC5A9, - 53357 - 44032: 0xC5AA, - 53358 - 44032: 0xB479, - 53359 - 44032: 0xB47A, - 53360 - 44032: 0xC5AB, - 53361 - 44032: 0xB481, - 53362 - 44032: 0xB482, - 53363 - 44032: 0xB483, - 53364 - 44032: 0xC5AC, - 53365 - 44032: 0xB484, - 53366 - 44032: 0xB485, - 53367 - 44032: 0xB486, - 53368 - 44032: 0xB487, - 53369 - 44032: 0xB488, - 53370 - 44032: 0xB489, - 53371 - 44032: 0xB48A, - 53372 - 44032: 0xC5AD, - 53373 - 44032: 0xC5AE, - 53374 - 44032: 0xB48B, - 53375 - 44032: 0xB48C, - 53376 - 44032: 0xB48D, - 53377 - 44032: 0xC5AF, - 53378 - 44032: 0xB48E, - 53379 - 44032: 0xB48F, - 53380 - 44032: 0xB490, - 53381 - 44032: 0xB491, - 53382 - 44032: 0xB492, - 53383 - 44032: 0xB493, - 53384 - 44032: 0xB494, - 53385 - 44032: 0xB495, - 53386 - 44032: 0xB496, - 53387 - 44032: 0xB497, - 53388 - 44032: 0xB498, - 53389 - 44032: 0xB499, - 53390 - 44032: 0xB49A, - 53391 - 44032: 0xB49B, - 53392 - 44032: 0xB49C, - 53393 - 44032: 0xB49D, - 53394 - 44032: 0xB49E, - 53395 - 44032: 0xB49F, - 53396 - 44032: 0xB4A0, - 53397 - 44032: 0xB541, - 53398 - 44032: 0xB542, - 53399 - 44032: 0xB543, - 53400 - 44032: 0xB544, - 53401 - 44032: 0xB545, - 53402 - 44032: 0xB546, - 53403 - 44032: 0xB547, - 53404 - 44032: 0xB548, - 53405 - 44032: 0xB549, - 53406 - 44032: 0xB54A, - 53407 - 44032: 0xB54B, - 53408 - 44032: 0xB54C, - 53409 - 44032: 0xB54D, - 53410 - 44032: 0xB54E, - 53411 - 44032: 0xB54F, - 53412 - 44032: 0xC5B0, - 53413 - 44032: 0xC5B1, - 53414 - 44032: 0xB550, - 53415 - 44032: 0xB551, - 53416 - 44032: 0xC5B2, - 53417 - 44032: 0xB552, - 53418 - 44032: 0xB553, - 53419 - 44032: 0xB554, - 53420 - 44032: 0xC5B3, - 53421 - 44032: 0xB555, - 53422 - 44032: 0xB556, - 53423 - 44032: 0xB557, - 53424 - 44032: 0xB558, - 53425 - 44032: 0xB559, - 53426 - 44032: 0xB55A, - 53427 - 44032: 0xB561, - 53428 - 44032: 0xC5B4, - 53429 - 44032: 0xC5B5, - 53430 - 44032: 0xB562, - 53431 - 44032: 0xC5B6, - 53432 - 44032: 0xB563, - 53433 - 44032: 0xC5B7, - 53434 - 44032: 0xB564, - 53435 - 44032: 0xB565, - 53436 - 44032: 0xB566, - 53437 - 44032: 0xB567, - 53438 - 44032: 0xB568, - 53439 - 44032: 0xB569, - 53440 - 44032: 0xC5B8, - 53441 - 44032: 0xC5B9, - 53442 - 44032: 0xB56A, - 53443 - 44032: 0xB56B, - 53444 - 44032: 0xC5BA, - 53445 - 44032: 0xB56C, - 53446 - 44032: 0xB56D, - 53447 - 44032: 0xB56E, - 53448 - 44032: 0xC5BB, - 53449 - 44032: 0xC5BC, - 53450 - 44032: 0xB56F, - 53451 - 44032: 0xB570, - 53452 - 44032: 0xB571, - 53453 - 44032: 0xB572, - 53454 - 44032: 0xB573, - 53455 - 44032: 0xB574, - 53456 - 44032: 0xC5BD, - 53457 - 44032: 0xC5BE, - 53458 - 44032: 0xB575, - 53459 - 44032: 0xC5BF, - 53460 - 44032: 0xC5C0, - 53461 - 44032: 0xC5C1, - 53462 - 44032: 0xB576, - 53463 - 44032: 0xB577, - 53464 - 44032: 0xB578, - 53465 - 44032: 0xB579, - 53466 - 44032: 0xB57A, - 53467 - 44032: 0xB581, - 53468 - 44032: 0xC5C2, - 53469 - 44032: 0xC5C3, - 53470 - 44032: 0xB582, - 53471 - 44032: 0xB583, - 53472 - 44032: 0xC5C4, - 53473 - 44032: 0xB584, - 53474 - 44032: 0xB585, - 53475 - 44032: 0xB586, - 53476 - 44032: 0xC5C5, - 53477 - 44032: 0xB587, - 53478 - 44032: 0xB588, - 53479 - 44032: 0xB589, - 53480 - 44032: 0xB58A, - 53481 - 44032: 0xB58B, - 53482 - 44032: 0xB58C, - 53483 - 44032: 0xB58D, - 53484 - 44032: 0xC5C6, - 53485 - 44032: 0xC5C7, - 53486 - 44032: 0xB58E, - 53487 - 44032: 0xC5C8, - 53488 - 44032: 0xC5C9, - 53489 - 44032: 0xC5CA, - 53490 - 44032: 0xB58F, - 53491 - 44032: 0xB590, - 53492 - 44032: 0xB591, - 53493 - 44032: 0xB592, - 53494 - 44032: 0xB593, - 53495 - 44032: 0xB594, - 53496 - 44032: 0xC5CB, - 53497 - 44032: 0xB595, - 53498 - 44032: 0xB596, - 53499 - 44032: 0xB597, - 53500 - 44032: 0xB598, - 53501 - 44032: 0xB599, - 53502 - 44032: 0xB59A, - 53503 - 44032: 0xB59B, - 53504 - 44032: 0xB59C, - 53505 - 44032: 0xB59D, - 53506 - 44032: 0xB59E, - 53507 - 44032: 0xB59F, - 53508 - 44032: 0xB5A0, - 53509 - 44032: 0xB641, - 53510 - 44032: 0xB642, - 53511 - 44032: 0xB643, - 53512 - 44032: 0xB644, - 53513 - 44032: 0xB645, - 53514 - 44032: 0xB646, - 53515 - 44032: 0xB647, - 53516 - 44032: 0xB648, - 53517 - 44032: 0xC5CC, - 53518 - 44032: 0xB649, - 53519 - 44032: 0xB64A, - 53520 - 44032: 0xB64B, - 53521 - 44032: 0xB64C, - 53522 - 44032: 0xB64D, - 53523 - 44032: 0xB64E, - 53524 - 44032: 0xB64F, - 53525 - 44032: 0xB650, - 53526 - 44032: 0xB651, - 53527 - 44032: 0xB652, - 53528 - 44032: 0xB653, - 53529 - 44032: 0xB654, - 53530 - 44032: 0xB655, - 53531 - 44032: 0xB656, - 53532 - 44032: 0xB657, - 53533 - 44032: 0xB658, - 53534 - 44032: 0xB659, - 53535 - 44032: 0xB65A, - 53536 - 44032: 0xB661, - 53537 - 44032: 0xB662, - 53538 - 44032: 0xB663, - 53539 - 44032: 0xB664, - 53540 - 44032: 0xB665, - 53541 - 44032: 0xB666, - 53542 - 44032: 0xB667, - 53543 - 44032: 0xB668, - 53544 - 44032: 0xB669, - 53545 - 44032: 0xB66A, - 53546 - 44032: 0xB66B, - 53547 - 44032: 0xB66C, - 53548 - 44032: 0xB66D, - 53549 - 44032: 0xB66E, - 53550 - 44032: 0xB66F, - 53551 - 44032: 0xB670, - 53552 - 44032: 0xC5CD, - 53553 - 44032: 0xC5CE, - 53554 - 44032: 0xB671, - 53555 - 44032: 0xB672, - 53556 - 44032: 0xC5CF, - 53557 - 44032: 0xB673, - 53558 - 44032: 0xB674, - 53559 - 44032: 0xB675, - 53560 - 44032: 0xC5D0, - 53561 - 44032: 0xB676, - 53562 - 44032: 0xC5D1, - 53563 - 44032: 0xB677, - 53564 - 44032: 0xB678, - 53565 - 44032: 0xB679, - 53566 - 44032: 0xB67A, - 53567 - 44032: 0xB681, - 53568 - 44032: 0xC5D2, - 53569 - 44032: 0xC5D3, - 53570 - 44032: 0xB682, - 53571 - 44032: 0xC5D4, - 53572 - 44032: 0xC5D5, - 53573 - 44032: 0xC5D6, - 53574 - 44032: 0xB683, - 53575 - 44032: 0xB684, - 53576 - 44032: 0xB685, - 53577 - 44032: 0xB686, - 53578 - 44032: 0xB687, - 53579 - 44032: 0xB688, - 53580 - 44032: 0xC5D7, - 53581 - 44032: 0xC5D8, - 53582 - 44032: 0xB689, - 53583 - 44032: 0xB68A, - 53584 - 44032: 0xC5D9, - 53585 - 44032: 0xB68B, - 53586 - 44032: 0xB68C, - 53587 - 44032: 0xB68D, - 53588 - 44032: 0xC5DA, - 53589 - 44032: 0xB68E, - 53590 - 44032: 0xB68F, - 53591 - 44032: 0xB690, - 53592 - 44032: 0xB691, - 53593 - 44032: 0xB692, - 53594 - 44032: 0xB693, - 53595 - 44032: 0xB694, - 53596 - 44032: 0xC5DB, - 53597 - 44032: 0xC5DC, - 53598 - 44032: 0xB695, - 53599 - 44032: 0xC5DD, - 53600 - 44032: 0xB696, - 53601 - 44032: 0xC5DE, - 53602 - 44032: 0xB697, - 53603 - 44032: 0xB698, - 53604 - 44032: 0xB699, - 53605 - 44032: 0xB69A, - 53606 - 44032: 0xB69B, - 53607 - 44032: 0xB69C, - 53608 - 44032: 0xC5DF, - 53609 - 44032: 0xB69D, - 53610 - 44032: 0xB69E, - 53611 - 44032: 0xB69F, - 53612 - 44032: 0xC5E0, - 53613 - 44032: 0xB6A0, - 53614 - 44032: 0xB741, - 53615 - 44032: 0xB742, - 53616 - 44032: 0xB743, - 53617 - 44032: 0xB744, - 53618 - 44032: 0xB745, - 53619 - 44032: 0xB746, - 53620 - 44032: 0xB747, - 53621 - 44032: 0xB748, - 53622 - 44032: 0xB749, - 53623 - 44032: 0xB74A, - 53624 - 44032: 0xB74B, - 53625 - 44032: 0xB74C, - 53626 - 44032: 0xB74D, - 53627 - 44032: 0xB74E, - 53628 - 44032: 0xC5E1, - 53629 - 44032: 0xB74F, - 53630 - 44032: 0xB750, - 53631 - 44032: 0xB751, - 53632 - 44032: 0xB752, - 53633 - 44032: 0xB753, - 53634 - 44032: 0xB754, - 53635 - 44032: 0xB755, - 53636 - 44032: 0xC5E2, - 53637 - 44032: 0xB756, - 53638 - 44032: 0xB757, - 53639 - 44032: 0xB758, - 53640 - 44032: 0xC5E3, - 53641 - 44032: 0xB759, - 53642 - 44032: 0xB75A, - 53643 - 44032: 0xB761, - 53644 - 44032: 0xB762, - 53645 - 44032: 0xB763, - 53646 - 44032: 0xB764, - 53647 - 44032: 0xB765, - 53648 - 44032: 0xB766, - 53649 - 44032: 0xB767, - 53650 - 44032: 0xB768, - 53651 - 44032: 0xB769, - 53652 - 44032: 0xB76A, - 53653 - 44032: 0xB76B, - 53654 - 44032: 0xB76C, - 53655 - 44032: 0xB76D, - 53656 - 44032: 0xB76E, - 53657 - 44032: 0xB76F, - 53658 - 44032: 0xB770, - 53659 - 44032: 0xB771, - 53660 - 44032: 0xB772, - 53661 - 44032: 0xB773, - 53662 - 44032: 0xB774, - 53663 - 44032: 0xB775, - 53664 - 44032: 0xC5E4, - 53665 - 44032: 0xC5E5, - 53666 - 44032: 0xB776, - 53667 - 44032: 0xB777, - 53668 - 44032: 0xC5E6, - 53669 - 44032: 0xB778, - 53670 - 44032: 0xB779, - 53671 - 44032: 0xB77A, - 53672 - 44032: 0xC5E7, - 53673 - 44032: 0xB781, - 53674 - 44032: 0xB782, - 53675 - 44032: 0xB783, - 53676 - 44032: 0xB784, - 53677 - 44032: 0xB785, - 53678 - 44032: 0xB786, - 53679 - 44032: 0xB787, - 53680 - 44032: 0xC5E8, - 53681 - 44032: 0xC5E9, - 53682 - 44032: 0xB788, - 53683 - 44032: 0xC5EA, - 53684 - 44032: 0xB789, - 53685 - 44032: 0xC5EB, - 53686 - 44032: 0xB78A, - 53687 - 44032: 0xB78B, - 53688 - 44032: 0xB78C, - 53689 - 44032: 0xB78D, - 53690 - 44032: 0xC5EC, - 53691 - 44032: 0xB78E, - 53692 - 44032: 0xC5ED, - 53693 - 44032: 0xB78F, - 53694 - 44032: 0xB790, - 53695 - 44032: 0xB791, - 53696 - 44032: 0xC5EE, - 53697 - 44032: 0xB792, - 53698 - 44032: 0xB793, - 53699 - 44032: 0xB794, - 53700 - 44032: 0xB795, - 53701 - 44032: 0xB796, - 53702 - 44032: 0xB797, - 53703 - 44032: 0xB798, - 53704 - 44032: 0xB799, - 53705 - 44032: 0xB79A, - 53706 - 44032: 0xB79B, - 53707 - 44032: 0xB79C, - 53708 - 44032: 0xB79D, - 53709 - 44032: 0xB79E, - 53710 - 44032: 0xB79F, - 53711 - 44032: 0xB7A0, - 53712 - 44032: 0xB841, - 53713 - 44032: 0xB842, - 53714 - 44032: 0xB843, - 53715 - 44032: 0xB844, - 53716 - 44032: 0xB845, - 53717 - 44032: 0xB846, - 53718 - 44032: 0xB847, - 53719 - 44032: 0xB848, - 53720 - 44032: 0xC5EF, - 53721 - 44032: 0xB849, - 53722 - 44032: 0xB84A, - 53723 - 44032: 0xB84B, - 53724 - 44032: 0xB84C, - 53725 - 44032: 0xB84D, - 53726 - 44032: 0xB84E, - 53727 - 44032: 0xB84F, - 53728 - 44032: 0xB850, - 53729 - 44032: 0xB851, - 53730 - 44032: 0xB852, - 53731 - 44032: 0xB853, - 53732 - 44032: 0xB854, - 53733 - 44032: 0xB855, - 53734 - 44032: 0xB856, - 53735 - 44032: 0xB857, - 53736 - 44032: 0xB858, - 53737 - 44032: 0xB859, - 53738 - 44032: 0xB85A, - 53739 - 44032: 0xB861, - 53740 - 44032: 0xB862, - 53741 - 44032: 0xB863, - 53742 - 44032: 0xB864, - 53743 - 44032: 0xB865, - 53744 - 44032: 0xB866, - 53745 - 44032: 0xB867, - 53746 - 44032: 0xB868, - 53747 - 44032: 0xB869, - 53748 - 44032: 0xC5F0, - 53749 - 44032: 0xB86A, - 53750 - 44032: 0xB86B, - 53751 - 44032: 0xB86C, - 53752 - 44032: 0xC5F1, - 53753 - 44032: 0xB86D, - 53754 - 44032: 0xB86E, - 53755 - 44032: 0xB86F, - 53756 - 44032: 0xB870, - 53757 - 44032: 0xB871, - 53758 - 44032: 0xB872, - 53759 - 44032: 0xB873, - 53760 - 44032: 0xB874, - 53761 - 44032: 0xB875, - 53762 - 44032: 0xB876, - 53763 - 44032: 0xB877, - 53764 - 44032: 0xB878, - 53765 - 44032: 0xB879, - 53766 - 44032: 0xB87A, - 53767 - 44032: 0xC5F2, - 53768 - 44032: 0xB881, - 53769 - 44032: 0xC5F3, - 53770 - 44032: 0xB882, - 53771 - 44032: 0xB883, - 53772 - 44032: 0xB884, - 53773 - 44032: 0xB885, - 53774 - 44032: 0xB886, - 53775 - 44032: 0xB887, - 53776 - 44032: 0xC5F4, - 53777 - 44032: 0xB888, - 53778 - 44032: 0xB889, - 53779 - 44032: 0xB88A, - 53780 - 44032: 0xB88B, - 53781 - 44032: 0xB88C, - 53782 - 44032: 0xB88D, - 53783 - 44032: 0xB88E, - 53784 - 44032: 0xB88F, - 53785 - 44032: 0xB890, - 53786 - 44032: 0xB891, - 53787 - 44032: 0xB892, - 53788 - 44032: 0xB893, - 53789 - 44032: 0xB894, - 53790 - 44032: 0xB895, - 53791 - 44032: 0xB896, - 53792 - 44032: 0xB897, - 53793 - 44032: 0xB898, - 53794 - 44032: 0xB899, - 53795 - 44032: 0xB89A, - 53796 - 44032: 0xB89B, - 53797 - 44032: 0xB89C, - 53798 - 44032: 0xB89D, - 53799 - 44032: 0xB89E, - 53800 - 44032: 0xB89F, - 53801 - 44032: 0xB8A0, - 53802 - 44032: 0xB941, - 53803 - 44032: 0xB942, - 53804 - 44032: 0xC5F5, - 53805 - 44032: 0xC5F6, - 53806 - 44032: 0xB943, - 53807 - 44032: 0xB944, - 53808 - 44032: 0xC5F7, - 53809 - 44032: 0xB945, - 53810 - 44032: 0xB946, - 53811 - 44032: 0xB947, - 53812 - 44032: 0xC5F8, - 53813 - 44032: 0xB948, - 53814 - 44032: 0xB949, - 53815 - 44032: 0xB94A, - 53816 - 44032: 0xB94B, - 53817 - 44032: 0xB94C, - 53818 - 44032: 0xB94D, - 53819 - 44032: 0xB94E, - 53820 - 44032: 0xC5F9, - 53821 - 44032: 0xC5FA, - 53822 - 44032: 0xB94F, - 53823 - 44032: 0xC5FB, - 53824 - 44032: 0xB950, - 53825 - 44032: 0xC5FC, - 53826 - 44032: 0xB951, - 53827 - 44032: 0xB952, - 53828 - 44032: 0xB953, - 53829 - 44032: 0xB954, - 53830 - 44032: 0xB955, - 53831 - 44032: 0xB956, - 53832 - 44032: 0xC5FD, - 53833 - 44032: 0xB957, - 53834 - 44032: 0xB958, - 53835 - 44032: 0xB959, - 53836 - 44032: 0xB95A, - 53837 - 44032: 0xB961, - 53838 - 44032: 0xB962, - 53839 - 44032: 0xB963, - 53840 - 44032: 0xB964, - 53841 - 44032: 0xB965, - 53842 - 44032: 0xB966, - 53843 - 44032: 0xB967, - 53844 - 44032: 0xB968, - 53845 - 44032: 0xB969, - 53846 - 44032: 0xB96A, - 53847 - 44032: 0xB96B, - 53848 - 44032: 0xB96C, - 53849 - 44032: 0xB96D, - 53850 - 44032: 0xB96E, - 53851 - 44032: 0xB96F, - 53852 - 44032: 0xC5FE, - 53853 - 44032: 0xB970, - 53854 - 44032: 0xB971, - 53855 - 44032: 0xB972, - 53856 - 44032: 0xB973, - 53857 - 44032: 0xB974, - 53858 - 44032: 0xB975, - 53859 - 44032: 0xB976, - 53860 - 44032: 0xC6A1, - 53861 - 44032: 0xB977, - 53862 - 44032: 0xB978, - 53863 - 44032: 0xB979, - 53864 - 44032: 0xB97A, - 53865 - 44032: 0xB981, - 53866 - 44032: 0xB982, - 53867 - 44032: 0xB983, - 53868 - 44032: 0xB984, - 53869 - 44032: 0xB985, - 53870 - 44032: 0xB986, - 53871 - 44032: 0xB987, - 53872 - 44032: 0xB988, - 53873 - 44032: 0xB989, - 53874 - 44032: 0xB98A, - 53875 - 44032: 0xB98B, - 53876 - 44032: 0xB98C, - 53877 - 44032: 0xB98D, - 53878 - 44032: 0xB98E, - 53879 - 44032: 0xB98F, - 53880 - 44032: 0xB990, - 53881 - 44032: 0xB991, - 53882 - 44032: 0xB992, - 53883 - 44032: 0xB993, - 53884 - 44032: 0xB994, - 53885 - 44032: 0xB995, - 53886 - 44032: 0xB996, - 53887 - 44032: 0xB997, - 53888 - 44032: 0xC6A2, - 53889 - 44032: 0xC6A3, - 53890 - 44032: 0xB998, - 53891 - 44032: 0xB999, - 53892 - 44032: 0xC6A4, - 53893 - 44032: 0xB99A, - 53894 - 44032: 0xB99B, - 53895 - 44032: 0xB99C, - 53896 - 44032: 0xC6A5, - 53897 - 44032: 0xB99D, - 53898 - 44032: 0xB99E, - 53899 - 44032: 0xB99F, - 53900 - 44032: 0xB9A0, - 53901 - 44032: 0xBA41, - 53902 - 44032: 0xBA42, - 53903 - 44032: 0xBA43, - 53904 - 44032: 0xC6A6, - 53905 - 44032: 0xC6A7, - 53906 - 44032: 0xBA44, - 53907 - 44032: 0xBA45, - 53908 - 44032: 0xBA46, - 53909 - 44032: 0xC6A8, - 53910 - 44032: 0xBA47, - 53911 - 44032: 0xBA48, - 53912 - 44032: 0xBA49, - 53913 - 44032: 0xBA4A, - 53914 - 44032: 0xBA4B, - 53915 - 44032: 0xBA4C, - 53916 - 44032: 0xC6A9, - 53917 - 44032: 0xBA4D, - 53918 - 44032: 0xBA4E, - 53919 - 44032: 0xBA4F, - 53920 - 44032: 0xC6AA, - 53921 - 44032: 0xBA50, - 53922 - 44032: 0xBA51, - 53923 - 44032: 0xBA52, - 53924 - 44032: 0xC6AB, - 53925 - 44032: 0xBA53, - 53926 - 44032: 0xBA54, - 53927 - 44032: 0xBA55, - 53928 - 44032: 0xBA56, - 53929 - 44032: 0xBA57, - 53930 - 44032: 0xBA58, - 53931 - 44032: 0xBA59, - 53932 - 44032: 0xC6AC, - 53933 - 44032: 0xBA5A, - 53934 - 44032: 0xBA61, - 53935 - 44032: 0xBA62, - 53936 - 44032: 0xBA63, - 53937 - 44032: 0xC6AD, - 53938 - 44032: 0xBA64, - 53939 - 44032: 0xBA65, - 53940 - 44032: 0xBA66, - 53941 - 44032: 0xBA67, - 53942 - 44032: 0xBA68, - 53943 - 44032: 0xBA69, - 53944 - 44032: 0xC6AE, - 53945 - 44032: 0xC6AF, - 53946 - 44032: 0xBA6A, - 53947 - 44032: 0xBA6B, - 53948 - 44032: 0xC6B0, - 53949 - 44032: 0xBA6C, - 53950 - 44032: 0xBA6D, - 53951 - 44032: 0xC6B1, - 53952 - 44032: 0xC6B2, - 53953 - 44032: 0xBA6E, - 53954 - 44032: 0xC6B3, - 53955 - 44032: 0xBA6F, - 53956 - 44032: 0xBA70, - 53957 - 44032: 0xBA71, - 53958 - 44032: 0xBA72, - 53959 - 44032: 0xBA73, - 53960 - 44032: 0xC6B4, - 53961 - 44032: 0xC6B5, - 53962 - 44032: 0xBA74, - 53963 - 44032: 0xC6B6, - 53964 - 44032: 0xBA75, - 53965 - 44032: 0xBA76, - 53966 - 44032: 0xBA77, - 53967 - 44032: 0xBA78, - 53968 - 44032: 0xBA79, - 53969 - 44032: 0xBA7A, - 53970 - 44032: 0xBA81, - 53971 - 44032: 0xBA82, - 53972 - 44032: 0xC6B7, - 53973 - 44032: 0xBA83, - 53974 - 44032: 0xBA84, - 53975 - 44032: 0xBA85, - 53976 - 44032: 0xC6B8, - 53977 - 44032: 0xBA86, - 53978 - 44032: 0xBA87, - 53979 - 44032: 0xBA88, - 53980 - 44032: 0xC6B9, - 53981 - 44032: 0xBA89, - 53982 - 44032: 0xBA8A, - 53983 - 44032: 0xBA8B, - 53984 - 44032: 0xBA8C, - 53985 - 44032: 0xBA8D, - 53986 - 44032: 0xBA8E, - 53987 - 44032: 0xBA8F, - 53988 - 44032: 0xC6BA, - 53989 - 44032: 0xC6BB, - 53990 - 44032: 0xBA90, - 53991 - 44032: 0xBA91, - 53992 - 44032: 0xBA92, - 53993 - 44032: 0xBA93, - 53994 - 44032: 0xBA94, - 53995 - 44032: 0xBA95, - 53996 - 44032: 0xBA96, - 53997 - 44032: 0xBA97, - 53998 - 44032: 0xBA98, - 53999 - 44032: 0xBA99, - 54000 - 44032: 0xC6BC, - 54001 - 44032: 0xC6BD, - 54002 - 44032: 0xBA9A, - 54003 - 44032: 0xBA9B, - 54004 - 44032: 0xC6BE, - 54005 - 44032: 0xBA9C, - 54006 - 44032: 0xBA9D, - 54007 - 44032: 0xBA9E, - 54008 - 44032: 0xC6BF, - 54009 - 44032: 0xBA9F, - 54010 - 44032: 0xBAA0, - 54011 - 44032: 0xBB41, - 54012 - 44032: 0xBB42, - 54013 - 44032: 0xBB43, - 54014 - 44032: 0xBB44, - 54015 - 44032: 0xBB45, - 54016 - 44032: 0xC6C0, - 54017 - 44032: 0xC6C1, - 54018 - 44032: 0xBB46, - 54019 - 44032: 0xC6C2, - 54020 - 44032: 0xBB47, - 54021 - 44032: 0xC6C3, - 54022 - 44032: 0xBB48, - 54023 - 44032: 0xBB49, - 54024 - 44032: 0xBB4A, - 54025 - 44032: 0xBB4B, - 54026 - 44032: 0xBB4C, - 54027 - 44032: 0xBB4D, - 54028 - 44032: 0xC6C4, - 54029 - 44032: 0xC6C5, - 54030 - 44032: 0xC6C6, - 54031 - 44032: 0xBB4E, - 54032 - 44032: 0xC6C7, - 54033 - 44032: 0xBB4F, - 54034 - 44032: 0xBB50, - 54035 - 44032: 0xBB51, - 54036 - 44032: 0xC6C8, - 54037 - 44032: 0xBB52, - 54038 - 44032: 0xC6C9, - 54039 - 44032: 0xBB53, - 54040 - 44032: 0xBB54, - 54041 - 44032: 0xBB55, - 54042 - 44032: 0xBB56, - 54043 - 44032: 0xBB57, - 54044 - 44032: 0xC6CA, - 54045 - 44032: 0xC6CB, - 54046 - 44032: 0xBB58, - 54047 - 44032: 0xC6CC, - 54048 - 44032: 0xC6CD, - 54049 - 44032: 0xC6CE, - 54050 - 44032: 0xBB59, - 54051 - 44032: 0xBB5A, - 54052 - 44032: 0xBB61, - 54053 - 44032: 0xC6CF, - 54054 - 44032: 0xBB62, - 54055 - 44032: 0xBB63, - 54056 - 44032: 0xC6D0, - 54057 - 44032: 0xC6D1, - 54058 - 44032: 0xBB64, - 54059 - 44032: 0xBB65, - 54060 - 44032: 0xC6D2, - 54061 - 44032: 0xBB66, - 54062 - 44032: 0xBB67, - 54063 - 44032: 0xBB68, - 54064 - 44032: 0xC6D3, - 54065 - 44032: 0xBB69, - 54066 - 44032: 0xBB6A, - 54067 - 44032: 0xBB6B, - 54068 - 44032: 0xBB6C, - 54069 - 44032: 0xBB6D, - 54070 - 44032: 0xBB6E, - 54071 - 44032: 0xBB6F, - 54072 - 44032: 0xC6D4, - 54073 - 44032: 0xC6D5, - 54074 - 44032: 0xBB70, - 54075 - 44032: 0xC6D6, - 54076 - 44032: 0xC6D7, - 54077 - 44032: 0xC6D8, - 54078 - 44032: 0xBB71, - 54079 - 44032: 0xBB72, - 54080 - 44032: 0xBB73, - 54081 - 44032: 0xBB74, - 54082 - 44032: 0xBB75, - 54083 - 44032: 0xBB76, - 54084 - 44032: 0xC6D9, - 54085 - 44032: 0xC6DA, - 54086 - 44032: 0xBB77, - 54087 - 44032: 0xBB78, - 54088 - 44032: 0xBB79, - 54089 - 44032: 0xBB7A, - 54090 - 44032: 0xBB81, - 54091 - 44032: 0xBB82, - 54092 - 44032: 0xBB83, - 54093 - 44032: 0xBB84, - 54094 - 44032: 0xBB85, - 54095 - 44032: 0xBB86, - 54096 - 44032: 0xBB87, - 54097 - 44032: 0xBB88, - 54098 - 44032: 0xBB89, - 54099 - 44032: 0xBB8A, - 54100 - 44032: 0xBB8B, - 54101 - 44032: 0xBB8C, - 54102 - 44032: 0xBB8D, - 54103 - 44032: 0xBB8E, - 54104 - 44032: 0xBB8F, - 54105 - 44032: 0xBB90, - 54106 - 44032: 0xBB91, - 54107 - 44032: 0xBB92, - 54108 - 44032: 0xBB93, - 54109 - 44032: 0xBB94, - 54110 - 44032: 0xBB95, - 54111 - 44032: 0xBB96, - 54112 - 44032: 0xBB97, - 54113 - 44032: 0xBB98, - 54114 - 44032: 0xBB99, - 54115 - 44032: 0xBB9A, - 54116 - 44032: 0xBB9B, - 54117 - 44032: 0xBB9C, - 54118 - 44032: 0xBB9D, - 54119 - 44032: 0xBB9E, - 54120 - 44032: 0xBB9F, - 54121 - 44032: 0xBBA0, - 54122 - 44032: 0xBC41, - 54123 - 44032: 0xBC42, - 54124 - 44032: 0xBC43, - 54125 - 44032: 0xBC44, - 54126 - 44032: 0xBC45, - 54127 - 44032: 0xBC46, - 54128 - 44032: 0xBC47, - 54129 - 44032: 0xBC48, - 54130 - 44032: 0xBC49, - 54131 - 44032: 0xBC4A, - 54132 - 44032: 0xBC4B, - 54133 - 44032: 0xBC4C, - 54134 - 44032: 0xBC4D, - 54135 - 44032: 0xBC4E, - 54136 - 44032: 0xBC4F, - 54137 - 44032: 0xBC50, - 54138 - 44032: 0xBC51, - 54139 - 44032: 0xBC52, - 54140 - 44032: 0xC6DB, - 54141 - 44032: 0xC6DC, - 54142 - 44032: 0xBC53, - 54143 - 44032: 0xBC54, - 54144 - 44032: 0xC6DD, - 54145 - 44032: 0xBC55, - 54146 - 44032: 0xBC56, - 54147 - 44032: 0xBC57, - 54148 - 44032: 0xC6DE, - 54149 - 44032: 0xBC58, - 54150 - 44032: 0xBC59, - 54151 - 44032: 0xBC5A, - 54152 - 44032: 0xBC61, - 54153 - 44032: 0xBC62, - 54154 - 44032: 0xBC63, - 54155 - 44032: 0xBC64, - 54156 - 44032: 0xC6DF, - 54157 - 44032: 0xC6E0, - 54158 - 44032: 0xBC65, - 54159 - 44032: 0xC6E1, - 54160 - 44032: 0xC6E2, - 54161 - 44032: 0xC6E3, - 54162 - 44032: 0xBC66, - 54163 - 44032: 0xBC67, - 54164 - 44032: 0xBC68, - 54165 - 44032: 0xBC69, - 54166 - 44032: 0xBC6A, - 54167 - 44032: 0xBC6B, - 54168 - 44032: 0xC6E4, - 54169 - 44032: 0xC6E5, - 54170 - 44032: 0xBC6C, - 54171 - 44032: 0xBC6D, - 54172 - 44032: 0xC6E6, - 54173 - 44032: 0xBC6E, - 54174 - 44032: 0xBC6F, - 54175 - 44032: 0xBC70, - 54176 - 44032: 0xC6E7, - 54177 - 44032: 0xBC71, - 54178 - 44032: 0xBC72, - 54179 - 44032: 0xBC73, - 54180 - 44032: 0xBC74, - 54181 - 44032: 0xBC75, - 54182 - 44032: 0xBC76, - 54183 - 44032: 0xBC77, - 54184 - 44032: 0xC6E8, - 54185 - 44032: 0xC6E9, - 54186 - 44032: 0xBC78, - 54187 - 44032: 0xC6EA, - 54188 - 44032: 0xBC79, - 54189 - 44032: 0xC6EB, - 54190 - 44032: 0xBC7A, - 54191 - 44032: 0xBC81, - 54192 - 44032: 0xBC82, - 54193 - 44032: 0xBC83, - 54194 - 44032: 0xBC84, - 54195 - 44032: 0xBC85, - 54196 - 44032: 0xC6EC, - 54197 - 44032: 0xBC86, - 54198 - 44032: 0xBC87, - 54199 - 44032: 0xBC88, - 54200 - 44032: 0xC6ED, - 54201 - 44032: 0xBC89, - 54202 - 44032: 0xBC8A, - 54203 - 44032: 0xBC8B, - 54204 - 44032: 0xC6EE, - 54205 - 44032: 0xBC8C, - 54206 - 44032: 0xBC8D, - 54207 - 44032: 0xBC8E, - 54208 - 44032: 0xBC8F, - 54209 - 44032: 0xBC90, - 54210 - 44032: 0xBC91, - 54211 - 44032: 0xBC92, - 54212 - 44032: 0xC6EF, - 54213 - 44032: 0xC6F0, - 54214 - 44032: 0xBC93, - 54215 - 44032: 0xBC94, - 54216 - 44032: 0xC6F1, - 54217 - 44032: 0xC6F2, - 54218 - 44032: 0xBC95, - 54219 - 44032: 0xBC96, - 54220 - 44032: 0xBC97, - 54221 - 44032: 0xBC98, - 54222 - 44032: 0xBC99, - 54223 - 44032: 0xBC9A, - 54224 - 44032: 0xC6F3, - 54225 - 44032: 0xBC9B, - 54226 - 44032: 0xBC9C, - 54227 - 44032: 0xBC9D, - 54228 - 44032: 0xBC9E, - 54229 - 44032: 0xBC9F, - 54230 - 44032: 0xBCA0, - 54231 - 44032: 0xBD41, - 54232 - 44032: 0xC6F4, - 54233 - 44032: 0xBD42, - 54234 - 44032: 0xBD43, - 54235 - 44032: 0xBD44, - 54236 - 44032: 0xBD45, - 54237 - 44032: 0xBD46, - 54238 - 44032: 0xBD47, - 54239 - 44032: 0xBD48, - 54240 - 44032: 0xBD49, - 54241 - 44032: 0xC6F5, - 54242 - 44032: 0xBD4A, - 54243 - 44032: 0xC6F6, - 54244 - 44032: 0xBD4B, - 54245 - 44032: 0xBD4C, - 54246 - 44032: 0xBD4D, - 54247 - 44032: 0xBD4E, - 54248 - 44032: 0xBD4F, - 54249 - 44032: 0xBD50, - 54250 - 44032: 0xBD51, - 54251 - 44032: 0xBD52, - 54252 - 44032: 0xC6F7, - 54253 - 44032: 0xC6F8, - 54254 - 44032: 0xBD53, - 54255 - 44032: 0xBD54, - 54256 - 44032: 0xC6F9, - 54257 - 44032: 0xBD55, - 54258 - 44032: 0xBD56, - 54259 - 44032: 0xBD57, - 54260 - 44032: 0xC6FA, - 54261 - 44032: 0xBD58, - 54262 - 44032: 0xBD59, - 54263 - 44032: 0xBD5A, - 54264 - 44032: 0xBD61, - 54265 - 44032: 0xBD62, - 54266 - 44032: 0xBD63, - 54267 - 44032: 0xBD64, - 54268 - 44032: 0xC6FB, - 54269 - 44032: 0xC6FC, - 54270 - 44032: 0xBD65, - 54271 - 44032: 0xC6FD, - 54272 - 44032: 0xBD66, - 54273 - 44032: 0xC6FE, - 54274 - 44032: 0xBD67, - 54275 - 44032: 0xBD68, - 54276 - 44032: 0xBD69, - 54277 - 44032: 0xBD6A, - 54278 - 44032: 0xBD6B, - 54279 - 44032: 0xBD6C, - 54280 - 44032: 0xC7A1, - 54281 - 44032: 0xBD6D, - 54282 - 44032: 0xBD6E, - 54283 - 44032: 0xBD6F, - 54284 - 44032: 0xBD70, - 54285 - 44032: 0xBD71, - 54286 - 44032: 0xBD72, - 54287 - 44032: 0xBD73, - 54288 - 44032: 0xBD74, - 54289 - 44032: 0xBD75, - 54290 - 44032: 0xBD76, - 54291 - 44032: 0xBD77, - 54292 - 44032: 0xBD78, - 54293 - 44032: 0xBD79, - 54294 - 44032: 0xBD7A, - 54295 - 44032: 0xBD81, - 54296 - 44032: 0xBD82, - 54297 - 44032: 0xBD83, - 54298 - 44032: 0xBD84, - 54299 - 44032: 0xBD85, - 54300 - 44032: 0xBD86, - 54301 - 44032: 0xC7A2, - 54302 - 44032: 0xBD87, - 54303 - 44032: 0xBD88, - 54304 - 44032: 0xBD89, - 54305 - 44032: 0xBD8A, - 54306 - 44032: 0xBD8B, - 54307 - 44032: 0xBD8C, - 54308 - 44032: 0xBD8D, - 54309 - 44032: 0xBD8E, - 54310 - 44032: 0xBD8F, - 54311 - 44032: 0xBD90, - 54312 - 44032: 0xBD91, - 54313 - 44032: 0xBD92, - 54314 - 44032: 0xBD93, - 54315 - 44032: 0xBD94, - 54316 - 44032: 0xBD95, - 54317 - 44032: 0xBD96, - 54318 - 44032: 0xBD97, - 54319 - 44032: 0xBD98, - 54320 - 44032: 0xBD99, - 54321 - 44032: 0xBD9A, - 54322 - 44032: 0xBD9B, - 54323 - 44032: 0xBD9C, - 54324 - 44032: 0xBD9D, - 54325 - 44032: 0xBD9E, - 54326 - 44032: 0xBD9F, - 54327 - 44032: 0xBDA0, - 54328 - 44032: 0xBE41, - 54329 - 44032: 0xBE42, - 54330 - 44032: 0xBE43, - 54331 - 44032: 0xBE44, - 54332 - 44032: 0xBE45, - 54333 - 44032: 0xBE46, - 54334 - 44032: 0xBE47, - 54335 - 44032: 0xBE48, - 54336 - 44032: 0xC7A3, - 54337 - 44032: 0xBE49, - 54338 - 44032: 0xBE4A, - 54339 - 44032: 0xBE4B, - 54340 - 44032: 0xC7A4, - 54341 - 44032: 0xBE4C, - 54342 - 44032: 0xBE4D, - 54343 - 44032: 0xBE4E, - 54344 - 44032: 0xBE4F, - 54345 - 44032: 0xBE50, - 54346 - 44032: 0xBE51, - 54347 - 44032: 0xBE52, - 54348 - 44032: 0xBE53, - 54349 - 44032: 0xBE54, - 54350 - 44032: 0xBE55, - 54351 - 44032: 0xBE56, - 54352 - 44032: 0xBE57, - 54353 - 44032: 0xBE58, - 54354 - 44032: 0xBE59, - 54355 - 44032: 0xBE5A, - 54356 - 44032: 0xBE61, - 54357 - 44032: 0xBE62, - 54358 - 44032: 0xBE63, - 54359 - 44032: 0xBE64, - 54360 - 44032: 0xBE65, - 54361 - 44032: 0xBE66, - 54362 - 44032: 0xBE67, - 54363 - 44032: 0xBE68, - 54364 - 44032: 0xC7A5, - 54365 - 44032: 0xBE69, - 54366 - 44032: 0xBE6A, - 54367 - 44032: 0xBE6B, - 54368 - 44032: 0xC7A6, - 54369 - 44032: 0xBE6C, - 54370 - 44032: 0xBE6D, - 54371 - 44032: 0xBE6E, - 54372 - 44032: 0xC7A7, - 54373 - 44032: 0xBE6F, - 54374 - 44032: 0xBE70, - 54375 - 44032: 0xBE71, - 54376 - 44032: 0xBE72, - 54377 - 44032: 0xBE73, - 54378 - 44032: 0xBE74, - 54379 - 44032: 0xBE75, - 54380 - 44032: 0xBE76, - 54381 - 44032: 0xC7A8, - 54382 - 44032: 0xBE77, - 54383 - 44032: 0xC7A9, - 54384 - 44032: 0xBE78, - 54385 - 44032: 0xBE79, - 54386 - 44032: 0xBE7A, - 54387 - 44032: 0xBE81, - 54388 - 44032: 0xBE82, - 54389 - 44032: 0xBE83, - 54390 - 44032: 0xBE84, - 54391 - 44032: 0xBE85, - 54392 - 44032: 0xC7AA, - 54393 - 44032: 0xC7AB, - 54394 - 44032: 0xBE86, - 54395 - 44032: 0xBE87, - 54396 - 44032: 0xC7AC, - 54397 - 44032: 0xBE88, - 54398 - 44032: 0xBE89, - 54399 - 44032: 0xC7AD, - 54400 - 44032: 0xC7AE, - 54401 - 44032: 0xBE8A, - 54402 - 44032: 0xC7AF, - 54403 - 44032: 0xBE8B, - 54404 - 44032: 0xBE8C, - 54405 - 44032: 0xBE8D, - 54406 - 44032: 0xBE8E, - 54407 - 44032: 0xBE8F, - 54408 - 44032: 0xC7B0, - 54409 - 44032: 0xC7B1, - 54410 - 44032: 0xBE90, - 54411 - 44032: 0xC7B2, - 54412 - 44032: 0xBE91, - 54413 - 44032: 0xC7B3, - 54414 - 44032: 0xBE92, - 54415 - 44032: 0xBE93, - 54416 - 44032: 0xBE94, - 54417 - 44032: 0xBE95, - 54418 - 44032: 0xBE96, - 54419 - 44032: 0xBE97, - 54420 - 44032: 0xC7B4, - 54421 - 44032: 0xBE98, - 54422 - 44032: 0xBE99, - 54423 - 44032: 0xBE9A, - 54424 - 44032: 0xBE9B, - 54425 - 44032: 0xBE9C, - 54426 - 44032: 0xBE9D, - 54427 - 44032: 0xBE9E, - 54428 - 44032: 0xBE9F, - 54429 - 44032: 0xBEA0, - 54430 - 44032: 0xBF41, - 54431 - 44032: 0xBF42, - 54432 - 44032: 0xBF43, - 54433 - 44032: 0xBF44, - 54434 - 44032: 0xBF45, - 54435 - 44032: 0xBF46, - 54436 - 44032: 0xBF47, - 54437 - 44032: 0xBF48, - 54438 - 44032: 0xBF49, - 54439 - 44032: 0xBF4A, - 54440 - 44032: 0xBF4B, - 54441 - 44032: 0xC7B5, - 54442 - 44032: 0xBF4C, - 54443 - 44032: 0xBF4D, - 54444 - 44032: 0xBF4E, - 54445 - 44032: 0xBF4F, - 54446 - 44032: 0xBF50, - 54447 - 44032: 0xBF51, - 54448 - 44032: 0xBF52, - 54449 - 44032: 0xBF53, - 54450 - 44032: 0xBF54, - 54451 - 44032: 0xBF55, - 54452 - 44032: 0xBF56, - 54453 - 44032: 0xBF57, - 54454 - 44032: 0xBF58, - 54455 - 44032: 0xBF59, - 54456 - 44032: 0xBF5A, - 54457 - 44032: 0xBF61, - 54458 - 44032: 0xBF62, - 54459 - 44032: 0xBF63, - 54460 - 44032: 0xBF64, - 54461 - 44032: 0xBF65, - 54462 - 44032: 0xBF66, - 54463 - 44032: 0xBF67, - 54464 - 44032: 0xBF68, - 54465 - 44032: 0xBF69, - 54466 - 44032: 0xBF6A, - 54467 - 44032: 0xBF6B, - 54468 - 44032: 0xBF6C, - 54469 - 44032: 0xBF6D, - 54470 - 44032: 0xBF6E, - 54471 - 44032: 0xBF6F, - 54472 - 44032: 0xBF70, - 54473 - 44032: 0xBF71, - 54474 - 44032: 0xBF72, - 54475 - 44032: 0xBF73, - 54476 - 44032: 0xC7B6, - 54477 - 44032: 0xBF74, - 54478 - 44032: 0xBF75, - 54479 - 44032: 0xBF76, - 54480 - 44032: 0xC7B7, - 54481 - 44032: 0xBF77, - 54482 - 44032: 0xBF78, - 54483 - 44032: 0xBF79, - 54484 - 44032: 0xC7B8, - 54485 - 44032: 0xBF7A, - 54486 - 44032: 0xBF81, - 54487 - 44032: 0xBF82, - 54488 - 44032: 0xBF83, - 54489 - 44032: 0xBF84, - 54490 - 44032: 0xBF85, - 54491 - 44032: 0xBF86, - 54492 - 44032: 0xC7B9, - 54493 - 44032: 0xBF87, - 54494 - 44032: 0xBF88, - 54495 - 44032: 0xC7BA, - 54496 - 44032: 0xBF89, - 54497 - 44032: 0xBF8A, - 54498 - 44032: 0xBF8B, - 54499 - 44032: 0xBF8C, - 54500 - 44032: 0xBF8D, - 54501 - 44032: 0xBF8E, - 54502 - 44032: 0xBF8F, - 54503 - 44032: 0xBF90, - 54504 - 44032: 0xC7BB, - 54505 - 44032: 0xBF91, - 54506 - 44032: 0xBF92, - 54507 - 44032: 0xBF93, - 54508 - 44032: 0xC7BC, - 54509 - 44032: 0xBF94, - 54510 - 44032: 0xBF95, - 54511 - 44032: 0xBF96, - 54512 - 44032: 0xC7BD, - 54513 - 44032: 0xBF97, - 54514 - 44032: 0xBF98, - 54515 - 44032: 0xBF99, - 54516 - 44032: 0xBF9A, - 54517 - 44032: 0xBF9B, - 54518 - 44032: 0xBF9C, - 54519 - 44032: 0xBF9D, - 54520 - 44032: 0xC7BE, - 54521 - 44032: 0xBF9E, - 54522 - 44032: 0xBF9F, - 54523 - 44032: 0xC7BF, - 54524 - 44032: 0xBFA0, - 54525 - 44032: 0xC7C0, - 54526 - 44032: 0xC041, - 54527 - 44032: 0xC042, - 54528 - 44032: 0xC043, - 54529 - 44032: 0xC044, - 54530 - 44032: 0xC045, - 54531 - 44032: 0xC046, - 54532 - 44032: 0xC7C1, - 54533 - 44032: 0xC047, - 54534 - 44032: 0xC048, - 54535 - 44032: 0xC049, - 54536 - 44032: 0xC7C2, - 54537 - 44032: 0xC04A, - 54538 - 44032: 0xC04B, - 54539 - 44032: 0xC04C, - 54540 - 44032: 0xC7C3, - 54541 - 44032: 0xC04D, - 54542 - 44032: 0xC04E, - 54543 - 44032: 0xC04F, - 54544 - 44032: 0xC050, - 54545 - 44032: 0xC051, - 54546 - 44032: 0xC052, - 54547 - 44032: 0xC053, - 54548 - 44032: 0xC7C4, - 54549 - 44032: 0xC7C5, - 54550 - 44032: 0xC054, - 54551 - 44032: 0xC7C6, - 54552 - 44032: 0xC055, - 54553 - 44032: 0xC056, - 54554 - 44032: 0xC057, - 54555 - 44032: 0xC058, - 54556 - 44032: 0xC059, - 54557 - 44032: 0xC05A, - 54558 - 44032: 0xC061, - 54559 - 44032: 0xC062, - 54560 - 44032: 0xC063, - 54561 - 44032: 0xC064, - 54562 - 44032: 0xC065, - 54563 - 44032: 0xC066, - 54564 - 44032: 0xC067, - 54565 - 44032: 0xC068, - 54566 - 44032: 0xC069, - 54567 - 44032: 0xC06A, - 54568 - 44032: 0xC06B, - 54569 - 44032: 0xC06C, - 54570 - 44032: 0xC06D, - 54571 - 44032: 0xC06E, - 54572 - 44032: 0xC06F, - 54573 - 44032: 0xC070, - 54574 - 44032: 0xC071, - 54575 - 44032: 0xC072, - 54576 - 44032: 0xC073, - 54577 - 44032: 0xC074, - 54578 - 44032: 0xC075, - 54579 - 44032: 0xC076, - 54580 - 44032: 0xC077, - 54581 - 44032: 0xC078, - 54582 - 44032: 0xC079, - 54583 - 44032: 0xC07A, - 54584 - 44032: 0xC081, - 54585 - 44032: 0xC082, - 54586 - 44032: 0xC083, - 54587 - 44032: 0xC084, - 54588 - 44032: 0xC7C7, - 54589 - 44032: 0xC7C8, - 54590 - 44032: 0xC085, - 54591 - 44032: 0xC086, - 54592 - 44032: 0xC7C9, - 54593 - 44032: 0xC087, - 54594 - 44032: 0xC088, - 54595 - 44032: 0xC089, - 54596 - 44032: 0xC7CA, - 54597 - 44032: 0xC08A, - 54598 - 44032: 0xC08B, - 54599 - 44032: 0xC08C, - 54600 - 44032: 0xC08D, - 54601 - 44032: 0xC08E, - 54602 - 44032: 0xC08F, - 54603 - 44032: 0xC090, - 54604 - 44032: 0xC7CB, - 54605 - 44032: 0xC7CC, - 54606 - 44032: 0xC091, - 54607 - 44032: 0xC7CD, - 54608 - 44032: 0xC092, - 54609 - 44032: 0xC7CE, - 54610 - 44032: 0xC093, - 54611 - 44032: 0xC094, - 54612 - 44032: 0xC095, - 54613 - 44032: 0xC096, - 54614 - 44032: 0xC097, - 54615 - 44032: 0xC098, - 54616 - 44032: 0xC7CF, - 54617 - 44032: 0xC7D0, - 54618 - 44032: 0xC099, - 54619 - 44032: 0xC09A, - 54620 - 44032: 0xC7D1, - 54621 - 44032: 0xC09B, - 54622 - 44032: 0xC09C, - 54623 - 44032: 0xC09D, - 54624 - 44032: 0xC7D2, - 54625 - 44032: 0xC09E, - 54626 - 44032: 0xC09F, - 54627 - 44032: 0xC0A0, - 54628 - 44032: 0xC141, - 54629 - 44032: 0xC7D3, - 54630 - 44032: 0xC142, - 54631 - 44032: 0xC143, - 54632 - 44032: 0xC7D4, - 54633 - 44032: 0xC7D5, - 54634 - 44032: 0xC144, - 54635 - 44032: 0xC7D6, - 54636 - 44032: 0xC145, - 54637 - 44032: 0xC7D7, - 54638 - 44032: 0xC146, - 54639 - 44032: 0xC147, - 54640 - 44032: 0xC148, - 54641 - 44032: 0xC149, - 54642 - 44032: 0xC14A, - 54643 - 44032: 0xC14B, - 54644 - 44032: 0xC7D8, - 54645 - 44032: 0xC7D9, - 54646 - 44032: 0xC14C, - 54647 - 44032: 0xC14D, - 54648 - 44032: 0xC7DA, - 54649 - 44032: 0xC14E, - 54650 - 44032: 0xC14F, - 54651 - 44032: 0xC150, - 54652 - 44032: 0xC7DB, - 54653 - 44032: 0xC151, - 54654 - 44032: 0xC152, - 54655 - 44032: 0xC153, - 54656 - 44032: 0xC154, - 54657 - 44032: 0xC155, - 54658 - 44032: 0xC156, - 54659 - 44032: 0xC157, - 54660 - 44032: 0xC7DC, - 54661 - 44032: 0xC7DD, - 54662 - 44032: 0xC158, - 54663 - 44032: 0xC7DE, - 54664 - 44032: 0xC7DF, - 54665 - 44032: 0xC7E0, - 54666 - 44032: 0xC159, - 54667 - 44032: 0xC15A, - 54668 - 44032: 0xC161, - 54669 - 44032: 0xC162, - 54670 - 44032: 0xC163, - 54671 - 44032: 0xC164, - 54672 - 44032: 0xC7E1, - 54673 - 44032: 0xC165, - 54674 - 44032: 0xC166, - 54675 - 44032: 0xC167, - 54676 - 44032: 0xC168, - 54677 - 44032: 0xC169, - 54678 - 44032: 0xC16A, - 54679 - 44032: 0xC16B, - 54680 - 44032: 0xC16C, - 54681 - 44032: 0xC16D, - 54682 - 44032: 0xC16E, - 54683 - 44032: 0xC16F, - 54684 - 44032: 0xC170, - 54685 - 44032: 0xC171, - 54686 - 44032: 0xC172, - 54687 - 44032: 0xC173, - 54688 - 44032: 0xC174, - 54689 - 44032: 0xC175, - 54690 - 44032: 0xC176, - 54691 - 44032: 0xC177, - 54692 - 44032: 0xC178, - 54693 - 44032: 0xC7E2, - 54694 - 44032: 0xC179, - 54695 - 44032: 0xC17A, - 54696 - 44032: 0xC181, - 54697 - 44032: 0xC182, - 54698 - 44032: 0xC183, - 54699 - 44032: 0xC184, - 54700 - 44032: 0xC185, - 54701 - 44032: 0xC186, - 54702 - 44032: 0xC187, - 54703 - 44032: 0xC188, - 54704 - 44032: 0xC189, - 54705 - 44032: 0xC18A, - 54706 - 44032: 0xC18B, - 54707 - 44032: 0xC18C, - 54708 - 44032: 0xC18D, - 54709 - 44032: 0xC18E, - 54710 - 44032: 0xC18F, - 54711 - 44032: 0xC190, - 54712 - 44032: 0xC191, - 54713 - 44032: 0xC192, - 54714 - 44032: 0xC193, - 54715 - 44032: 0xC194, - 54716 - 44032: 0xC195, - 54717 - 44032: 0xC196, - 54718 - 44032: 0xC197, - 54719 - 44032: 0xC198, - 54720 - 44032: 0xC199, - 54721 - 44032: 0xC19A, - 54722 - 44032: 0xC19B, - 54723 - 44032: 0xC19C, - 54724 - 44032: 0xC19D, - 54725 - 44032: 0xC19E, - 54726 - 44032: 0xC19F, - 54727 - 44032: 0xC1A0, - 54728 - 44032: 0xC7E3, - 54729 - 44032: 0xC7E4, - 54730 - 44032: 0xC241, - 54731 - 44032: 0xC242, - 54732 - 44032: 0xC7E5, - 54733 - 44032: 0xC243, - 54734 - 44032: 0xC244, - 54735 - 44032: 0xC245, - 54736 - 44032: 0xC7E6, - 54737 - 44032: 0xC246, - 54738 - 44032: 0xC7E7, - 54739 - 44032: 0xC247, - 54740 - 44032: 0xC248, - 54741 - 44032: 0xC249, - 54742 - 44032: 0xC24A, - 54743 - 44032: 0xC24B, - 54744 - 44032: 0xC7E8, - 54745 - 44032: 0xC7E9, - 54746 - 44032: 0xC24C, - 54747 - 44032: 0xC7EA, - 54748 - 44032: 0xC24D, - 54749 - 44032: 0xC7EB, - 54750 - 44032: 0xC24E, - 54751 - 44032: 0xC24F, - 54752 - 44032: 0xC250, - 54753 - 44032: 0xC251, - 54754 - 44032: 0xC252, - 54755 - 44032: 0xC253, - 54756 - 44032: 0xC7EC, - 54757 - 44032: 0xC7ED, - 54758 - 44032: 0xC254, - 54759 - 44032: 0xC255, - 54760 - 44032: 0xC7EE, - 54761 - 44032: 0xC256, - 54762 - 44032: 0xC257, - 54763 - 44032: 0xC258, - 54764 - 44032: 0xC7EF, - 54765 - 44032: 0xC259, - 54766 - 44032: 0xC25A, - 54767 - 44032: 0xC261, - 54768 - 44032: 0xC262, - 54769 - 44032: 0xC263, - 54770 - 44032: 0xC264, - 54771 - 44032: 0xC265, - 54772 - 44032: 0xC7F0, - 54773 - 44032: 0xC7F1, - 54774 - 44032: 0xC266, - 54775 - 44032: 0xC7F2, - 54776 - 44032: 0xC267, - 54777 - 44032: 0xC7F3, - 54778 - 44032: 0xC268, - 54779 - 44032: 0xC269, - 54780 - 44032: 0xC26A, - 54781 - 44032: 0xC26B, - 54782 - 44032: 0xC26C, - 54783 - 44032: 0xC26D, - 54784 - 44032: 0xC7F4, - 54785 - 44032: 0xC7F5, - 54786 - 44032: 0xC26E, - 54787 - 44032: 0xC26F, - 54788 - 44032: 0xC7F6, - 54789 - 44032: 0xC270, - 54790 - 44032: 0xC271, - 54791 - 44032: 0xC272, - 54792 - 44032: 0xC7F7, - 54793 - 44032: 0xC273, - 54794 - 44032: 0xC274, - 54795 - 44032: 0xC275, - 54796 - 44032: 0xC276, - 54797 - 44032: 0xC277, - 54798 - 44032: 0xC278, - 54799 - 44032: 0xC279, - 54800 - 44032: 0xC7F8, - 54801 - 44032: 0xC7F9, - 54802 - 44032: 0xC27A, - 54803 - 44032: 0xC7FA, - 54804 - 44032: 0xC7FB, - 54805 - 44032: 0xC7FC, - 54806 - 44032: 0xC281, - 54807 - 44032: 0xC282, - 54808 - 44032: 0xC283, - 54809 - 44032: 0xC284, - 54810 - 44032: 0xC285, - 54811 - 44032: 0xC286, - 54812 - 44032: 0xC7FD, - 54813 - 44032: 0xC287, - 54814 - 44032: 0xC288, - 54815 - 44032: 0xC289, - 54816 - 44032: 0xC7FE, - 54817 - 44032: 0xC28A, - 54818 - 44032: 0xC28B, - 54819 - 44032: 0xC28C, - 54820 - 44032: 0xC8A1, - 54821 - 44032: 0xC28D, - 54822 - 44032: 0xC28E, - 54823 - 44032: 0xC28F, - 54824 - 44032: 0xC290, - 54825 - 44032: 0xC291, - 54826 - 44032: 0xC292, - 54827 - 44032: 0xC293, - 54828 - 44032: 0xC294, - 54829 - 44032: 0xC8A2, - 54830 - 44032: 0xC295, - 54831 - 44032: 0xC296, - 54832 - 44032: 0xC297, - 54833 - 44032: 0xC298, - 54834 - 44032: 0xC299, - 54835 - 44032: 0xC29A, - 54836 - 44032: 0xC29B, - 54837 - 44032: 0xC29C, - 54838 - 44032: 0xC29D, - 54839 - 44032: 0xC29E, - 54840 - 44032: 0xC8A3, - 54841 - 44032: 0xC8A4, - 54842 - 44032: 0xC29F, - 54843 - 44032: 0xC2A0, - 54844 - 44032: 0xC8A5, - 54845 - 44032: 0xC341, - 54846 - 44032: 0xC342, - 54847 - 44032: 0xC343, - 54848 - 44032: 0xC8A6, - 54849 - 44032: 0xC344, - 54850 - 44032: 0xC345, - 54851 - 44032: 0xC346, - 54852 - 44032: 0xC347, - 54853 - 44032: 0xC8A7, - 54854 - 44032: 0xC348, - 54855 - 44032: 0xC349, - 54856 - 44032: 0xC8A8, - 54857 - 44032: 0xC8A9, - 54858 - 44032: 0xC34A, - 54859 - 44032: 0xC8AA, - 54860 - 44032: 0xC34B, - 54861 - 44032: 0xC8AB, - 54862 - 44032: 0xC34C, - 54863 - 44032: 0xC34D, - 54864 - 44032: 0xC34E, - 54865 - 44032: 0xC8AC, - 54866 - 44032: 0xC34F, - 54867 - 44032: 0xC350, - 54868 - 44032: 0xC8AD, - 54869 - 44032: 0xC8AE, - 54870 - 44032: 0xC351, - 54871 - 44032: 0xC352, - 54872 - 44032: 0xC8AF, - 54873 - 44032: 0xC353, - 54874 - 44032: 0xC354, - 54875 - 44032: 0xC355, - 54876 - 44032: 0xC8B0, - 54877 - 44032: 0xC356, - 54878 - 44032: 0xC357, - 54879 - 44032: 0xC358, - 54880 - 44032: 0xC359, - 54881 - 44032: 0xC35A, - 54882 - 44032: 0xC361, - 54883 - 44032: 0xC362, - 54884 - 44032: 0xC363, - 54885 - 44032: 0xC364, - 54886 - 44032: 0xC365, - 54887 - 44032: 0xC8B1, - 54888 - 44032: 0xC366, - 54889 - 44032: 0xC8B2, - 54890 - 44032: 0xC367, - 54891 - 44032: 0xC368, - 54892 - 44032: 0xC369, - 54893 - 44032: 0xC36A, - 54894 - 44032: 0xC36B, - 54895 - 44032: 0xC36C, - 54896 - 44032: 0xC8B3, - 54897 - 44032: 0xC8B4, - 54898 - 44032: 0xC36D, - 54899 - 44032: 0xC36E, - 54900 - 44032: 0xC8B5, - 54901 - 44032: 0xC36F, - 54902 - 44032: 0xC370, - 54903 - 44032: 0xC371, - 54904 - 44032: 0xC372, - 54905 - 44032: 0xC373, - 54906 - 44032: 0xC374, - 54907 - 44032: 0xC375, - 54908 - 44032: 0xC376, - 54909 - 44032: 0xC377, - 54910 - 44032: 0xC378, - 54911 - 44032: 0xC379, - 54912 - 44032: 0xC37A, - 54913 - 44032: 0xC381, - 54914 - 44032: 0xC382, - 54915 - 44032: 0xC8B6, - 54916 - 44032: 0xC383, - 54917 - 44032: 0xC8B7, - 54918 - 44032: 0xC384, - 54919 - 44032: 0xC385, - 54920 - 44032: 0xC386, - 54921 - 44032: 0xC387, - 54922 - 44032: 0xC388, - 54923 - 44032: 0xC389, - 54924 - 44032: 0xC8B8, - 54925 - 44032: 0xC8B9, - 54926 - 44032: 0xC38A, - 54927 - 44032: 0xC38B, - 54928 - 44032: 0xC8BA, - 54929 - 44032: 0xC38C, - 54930 - 44032: 0xC38D, - 54931 - 44032: 0xC38E, - 54932 - 44032: 0xC8BB, - 54933 - 44032: 0xC38F, - 54934 - 44032: 0xC390, - 54935 - 44032: 0xC391, - 54936 - 44032: 0xC392, - 54937 - 44032: 0xC393, - 54938 - 44032: 0xC394, - 54939 - 44032: 0xC395, - 54940 - 44032: 0xC396, - 54941 - 44032: 0xC8BC, - 54942 - 44032: 0xC397, - 54943 - 44032: 0xC8BD, - 54944 - 44032: 0xC398, - 54945 - 44032: 0xC8BE, - 54946 - 44032: 0xC399, - 54947 - 44032: 0xC39A, - 54948 - 44032: 0xC39B, - 54949 - 44032: 0xC39C, - 54950 - 44032: 0xC39D, - 54951 - 44032: 0xC39E, - 54952 - 44032: 0xC8BF, - 54953 - 44032: 0xC39F, - 54954 - 44032: 0xC3A0, - 54955 - 44032: 0xC441, - 54956 - 44032: 0xC8C0, - 54957 - 44032: 0xC442, - 54958 - 44032: 0xC443, - 54959 - 44032: 0xC444, - 54960 - 44032: 0xC8C1, - 54961 - 44032: 0xC445, - 54962 - 44032: 0xC446, - 54963 - 44032: 0xC447, - 54964 - 44032: 0xC448, - 54965 - 44032: 0xC449, - 54966 - 44032: 0xC44A, - 54967 - 44032: 0xC44B, - 54968 - 44032: 0xC44C, - 54969 - 44032: 0xC8C2, - 54970 - 44032: 0xC44D, - 54971 - 44032: 0xC8C3, - 54972 - 44032: 0xC44E, - 54973 - 44032: 0xC44F, - 54974 - 44032: 0xC450, - 54975 - 44032: 0xC451, - 54976 - 44032: 0xC452, - 54977 - 44032: 0xC453, - 54978 - 44032: 0xC454, - 54979 - 44032: 0xC455, - 54980 - 44032: 0xC8C4, - 54981 - 44032: 0xC8C5, - 54982 - 44032: 0xC456, - 54983 - 44032: 0xC457, - 54984 - 44032: 0xC8C6, - 54985 - 44032: 0xC458, - 54986 - 44032: 0xC459, - 54987 - 44032: 0xC45A, - 54988 - 44032: 0xC8C7, - 54989 - 44032: 0xC461, - 54990 - 44032: 0xC462, - 54991 - 44032: 0xC463, - 54992 - 44032: 0xC464, - 54993 - 44032: 0xC8C8, - 54994 - 44032: 0xC465, - 54995 - 44032: 0xC466, - 54996 - 44032: 0xC8C9, - 54997 - 44032: 0xC467, - 54998 - 44032: 0xC468, - 54999 - 44032: 0xC8CA, - 55000 - 44032: 0xC469, - 55001 - 44032: 0xC8CB, - 55002 - 44032: 0xC46A, - 55003 - 44032: 0xC46B, - 55004 - 44032: 0xC46C, - 55005 - 44032: 0xC46D, - 55006 - 44032: 0xC46E, - 55007 - 44032: 0xC46F, - 55008 - 44032: 0xC8CC, - 55009 - 44032: 0xC470, - 55010 - 44032: 0xC471, - 55011 - 44032: 0xC472, - 55012 - 44032: 0xC8CD, - 55013 - 44032: 0xC473, - 55014 - 44032: 0xC474, - 55015 - 44032: 0xC475, - 55016 - 44032: 0xC8CE, - 55017 - 44032: 0xC476, - 55018 - 44032: 0xC477, - 55019 - 44032: 0xC478, - 55020 - 44032: 0xC479, - 55021 - 44032: 0xC47A, - 55022 - 44032: 0xC481, - 55023 - 44032: 0xC482, - 55024 - 44032: 0xC8CF, - 55025 - 44032: 0xC483, - 55026 - 44032: 0xC484, - 55027 - 44032: 0xC485, - 55028 - 44032: 0xC486, - 55029 - 44032: 0xC8D0, - 55030 - 44032: 0xC487, - 55031 - 44032: 0xC488, - 55032 - 44032: 0xC489, - 55033 - 44032: 0xC48A, - 55034 - 44032: 0xC48B, - 55035 - 44032: 0xC48C, - 55036 - 44032: 0xC8D1, - 55037 - 44032: 0xC8D2, - 55038 - 44032: 0xC48D, - 55039 - 44032: 0xC48E, - 55040 - 44032: 0xC8D3, - 55041 - 44032: 0xC48F, - 55042 - 44032: 0xC490, - 55043 - 44032: 0xC491, - 55044 - 44032: 0xC8D4, - 55045 - 44032: 0xC492, - 55046 - 44032: 0xC493, - 55047 - 44032: 0xC494, - 55048 - 44032: 0xC495, - 55049 - 44032: 0xC496, - 55050 - 44032: 0xC497, - 55051 - 44032: 0xC498, - 55052 - 44032: 0xC499, - 55053 - 44032: 0xC49A, - 55054 - 44032: 0xC49B, - 55055 - 44032: 0xC49C, - 55056 - 44032: 0xC49D, - 55057 - 44032: 0xC8D5, - 55058 - 44032: 0xC49E, - 55059 - 44032: 0xC49F, - 55060 - 44032: 0xC4A0, - 55061 - 44032: 0xC541, - 55062 - 44032: 0xC542, - 55063 - 44032: 0xC543, - 55064 - 44032: 0xC8D6, - 55065 - 44032: 0xC8D7, - 55066 - 44032: 0xC544, - 55067 - 44032: 0xC545, - 55068 - 44032: 0xC8D8, - 55069 - 44032: 0xC546, - 55070 - 44032: 0xC547, - 55071 - 44032: 0xC548, - 55072 - 44032: 0xC8D9, - 55073 - 44032: 0xC549, - 55074 - 44032: 0xC54A, - 55075 - 44032: 0xC54B, - 55076 - 44032: 0xC54C, - 55077 - 44032: 0xC54D, - 55078 - 44032: 0xC54E, - 55079 - 44032: 0xC54F, - 55080 - 44032: 0xC8DA, - 55081 - 44032: 0xC8DB, - 55082 - 44032: 0xC550, - 55083 - 44032: 0xC8DC, - 55084 - 44032: 0xC551, - 55085 - 44032: 0xC8DD, - 55086 - 44032: 0xC552, - 55087 - 44032: 0xC553, - 55088 - 44032: 0xC554, - 55089 - 44032: 0xC555, - 55090 - 44032: 0xC556, - 55091 - 44032: 0xC557, - 55092 - 44032: 0xC8DE, - 55093 - 44032: 0xC8DF, - 55094 - 44032: 0xC558, - 55095 - 44032: 0xC559, - 55096 - 44032: 0xC8E0, - 55097 - 44032: 0xC55A, - 55098 - 44032: 0xC561, - 55099 - 44032: 0xC562, - 55100 - 44032: 0xC8E1, - 55101 - 44032: 0xC563, - 55102 - 44032: 0xC564, - 55103 - 44032: 0xC565, - 55104 - 44032: 0xC566, - 55105 - 44032: 0xC567, - 55106 - 44032: 0xC568, - 55107 - 44032: 0xC569, - 55108 - 44032: 0xC8E2, - 55109 - 44032: 0xC56A, - 55110 - 44032: 0xC56B, - 55111 - 44032: 0xC8E3, - 55112 - 44032: 0xC56C, - 55113 - 44032: 0xC8E4, - 55114 - 44032: 0xC56D, - 55115 - 44032: 0xC56E, - 55116 - 44032: 0xC56F, - 55117 - 44032: 0xC570, - 55118 - 44032: 0xC571, - 55119 - 44032: 0xC572, - 55120 - 44032: 0xC8E5, - 55121 - 44032: 0xC8E6, - 55122 - 44032: 0xC573, - 55123 - 44032: 0xC574, - 55124 - 44032: 0xC8E7, - 55125 - 44032: 0xC575, - 55126 - 44032: 0xC8E8, - 55127 - 44032: 0xC8E9, - 55128 - 44032: 0xC8EA, - 55129 - 44032: 0xC8EB, - 55130 - 44032: 0xC576, - 55131 - 44032: 0xC577, - 55132 - 44032: 0xC578, - 55133 - 44032: 0xC579, - 55134 - 44032: 0xC57A, - 55135 - 44032: 0xC581, - 55136 - 44032: 0xC8EC, - 55137 - 44032: 0xC8ED, - 55138 - 44032: 0xC582, - 55139 - 44032: 0xC8EE, - 55140 - 44032: 0xC583, - 55141 - 44032: 0xC8EF, - 55142 - 44032: 0xC584, - 55143 - 44032: 0xC585, - 55144 - 44032: 0xC586, - 55145 - 44032: 0xC8F0, - 55146 - 44032: 0xC587, - 55147 - 44032: 0xC588, - 55148 - 44032: 0xC8F1, - 55149 - 44032: 0xC589, - 55150 - 44032: 0xC58A, - 55151 - 44032: 0xC58B, - 55152 - 44032: 0xC8F2, - 55153 - 44032: 0xC58C, - 55154 - 44032: 0xC58D, - 55155 - 44032: 0xC58E, - 55156 - 44032: 0xC8F3, - 55157 - 44032: 0xC58F, - 55158 - 44032: 0xC590, - 55159 - 44032: 0xC591, - 55160 - 44032: 0xC592, - 55161 - 44032: 0xC593, - 55162 - 44032: 0xC594, - 55163 - 44032: 0xC595, - 55164 - 44032: 0xC8F4, - 55165 - 44032: 0xC8F5, - 55166 - 44032: 0xC596, - 55167 - 44032: 0xC597, - 55168 - 44032: 0xC598, - 55169 - 44032: 0xC8F6, - 55170 - 44032: 0xC599, - 55171 - 44032: 0xC59A, - 55172 - 44032: 0xC59B, - 55173 - 44032: 0xC59C, - 55174 - 44032: 0xC59D, - 55175 - 44032: 0xC59E, - 55176 - 44032: 0xC8F7, - 55177 - 44032: 0xC8F8, - 55178 - 44032: 0xC59F, - 55179 - 44032: 0xC5A0, - 55180 - 44032: 0xC8F9, - 55181 - 44032: 0xC641, - 55182 - 44032: 0xC642, - 55183 - 44032: 0xC643, - 55184 - 44032: 0xC8FA, - 55185 - 44032: 0xC644, - 55186 - 44032: 0xC645, - 55187 - 44032: 0xC646, - 55188 - 44032: 0xC647, - 55189 - 44032: 0xC648, - 55190 - 44032: 0xC649, - 55191 - 44032: 0xC64A, - 55192 - 44032: 0xC8FB, - 55193 - 44032: 0xC8FC, - 55194 - 44032: 0xC64B, - 55195 - 44032: 0xC8FD, - 55196 - 44032: 0xC64C, - 55197 - 44032: 0xC8FE, - 55198 - 44032: 0xC64D, - 55199 - 44032: 0xC64E, - 55200 - 44032: 0xC64F, - 55201 - 44032: 0xC650, - 55202 - 44032: 0xC651, - 55203 - 44032: 0xC652, -} - -const encode2Low, encode2High = 8213, 9838 - -var encode2 = [...]uint16{ - 8213 - 8213: 0xA1AA, - 8216 - 8213: 0xA1AE, - 8217 - 8213: 0xA1AF, - 8220 - 8213: 0xA1B0, - 8221 - 8213: 0xA1B1, - 8224 - 8213: 0xA2D3, - 8225 - 8213: 0xA2D4, - 8229 - 8213: 0xA1A5, - 8230 - 8213: 0xA1A6, - 8240 - 8213: 0xA2B6, - 8242 - 8213: 0xA1C7, - 8243 - 8213: 0xA1C8, - 8251 - 8213: 0xA1D8, - 8308 - 8213: 0xA9F9, - 8319 - 8213: 0xA9FA, - 8321 - 8213: 0xA9FB, - 8322 - 8213: 0xA9FC, - 8323 - 8213: 0xA9FD, - 8324 - 8213: 0xA9FE, - 8364 - 8213: 0xA2E6, - 8451 - 8213: 0xA1C9, - 8457 - 8213: 0xA2B5, - 8467 - 8213: 0xA7A4, - 8470 - 8213: 0xA2E0, - 8481 - 8213: 0xA2E5, - 8482 - 8213: 0xA2E2, - 8486 - 8213: 0xA7D9, - 8491 - 8213: 0xA1CA, - 8531 - 8213: 0xA8F7, - 8532 - 8213: 0xA8F8, - 8539 - 8213: 0xA8FB, - 8540 - 8213: 0xA8FC, - 8541 - 8213: 0xA8FD, - 8542 - 8213: 0xA8FE, - 8544 - 8213: 0xA5B0, - 8545 - 8213: 0xA5B1, - 8546 - 8213: 0xA5B2, - 8547 - 8213: 0xA5B3, - 8548 - 8213: 0xA5B4, - 8549 - 8213: 0xA5B5, - 8550 - 8213: 0xA5B6, - 8551 - 8213: 0xA5B7, - 8552 - 8213: 0xA5B8, - 8553 - 8213: 0xA5B9, - 8560 - 8213: 0xA5A1, - 8561 - 8213: 0xA5A2, - 8562 - 8213: 0xA5A3, - 8563 - 8213: 0xA5A4, - 8564 - 8213: 0xA5A5, - 8565 - 8213: 0xA5A6, - 8566 - 8213: 0xA5A7, - 8567 - 8213: 0xA5A8, - 8568 - 8213: 0xA5A9, - 8569 - 8213: 0xA5AA, - 8592 - 8213: 0xA1E7, - 8593 - 8213: 0xA1E8, - 8594 - 8213: 0xA1E6, - 8595 - 8213: 0xA1E9, - 8596 - 8213: 0xA1EA, - 8597 - 8213: 0xA2D5, - 8598 - 8213: 0xA2D8, - 8599 - 8213: 0xA2D6, - 8600 - 8213: 0xA2D9, - 8601 - 8213: 0xA2D7, - 8658 - 8213: 0xA2A1, - 8660 - 8213: 0xA2A2, - 8704 - 8213: 0xA2A3, - 8706 - 8213: 0xA1D3, - 8707 - 8213: 0xA2A4, - 8711 - 8213: 0xA1D4, - 8712 - 8213: 0xA1F4, - 8715 - 8213: 0xA1F5, - 8719 - 8213: 0xA2B3, - 8721 - 8213: 0xA2B2, - 8730 - 8213: 0xA1EE, - 8733 - 8213: 0xA1F0, - 8734 - 8213: 0xA1C4, - 8736 - 8213: 0xA1D0, - 8741 - 8213: 0xA1AB, - 8743 - 8213: 0xA1FC, - 8744 - 8213: 0xA1FD, - 8745 - 8213: 0xA1FB, - 8746 - 8213: 0xA1FA, - 8747 - 8213: 0xA1F2, - 8748 - 8213: 0xA1F3, - 8750 - 8213: 0xA2B1, - 8756 - 8213: 0xA1C5, - 8757 - 8213: 0xA1F1, - 8764 - 8213: 0xA1AD, - 8765 - 8213: 0xA1EF, - 8786 - 8213: 0xA1D6, - 8800 - 8213: 0xA1C1, - 8801 - 8213: 0xA1D5, - 8804 - 8213: 0xA1C2, - 8805 - 8213: 0xA1C3, - 8810 - 8213: 0xA1EC, - 8811 - 8213: 0xA1ED, - 8834 - 8213: 0xA1F8, - 8835 - 8213: 0xA1F9, - 8838 - 8213: 0xA1F6, - 8839 - 8213: 0xA1F7, - 8857 - 8213: 0xA2C1, - 8869 - 8213: 0xA1D1, - 8978 - 8213: 0xA1D2, - 9312 - 8213: 0xA8E7, - 9313 - 8213: 0xA8E8, - 9314 - 8213: 0xA8E9, - 9315 - 8213: 0xA8EA, - 9316 - 8213: 0xA8EB, - 9317 - 8213: 0xA8EC, - 9318 - 8213: 0xA8ED, - 9319 - 8213: 0xA8EE, - 9320 - 8213: 0xA8EF, - 9321 - 8213: 0xA8F0, - 9322 - 8213: 0xA8F1, - 9323 - 8213: 0xA8F2, - 9324 - 8213: 0xA8F3, - 9325 - 8213: 0xA8F4, - 9326 - 8213: 0xA8F5, - 9332 - 8213: 0xA9E7, - 9333 - 8213: 0xA9E8, - 9334 - 8213: 0xA9E9, - 9335 - 8213: 0xA9EA, - 9336 - 8213: 0xA9EB, - 9337 - 8213: 0xA9EC, - 9338 - 8213: 0xA9ED, - 9339 - 8213: 0xA9EE, - 9340 - 8213: 0xA9EF, - 9341 - 8213: 0xA9F0, - 9342 - 8213: 0xA9F1, - 9343 - 8213: 0xA9F2, - 9344 - 8213: 0xA9F3, - 9345 - 8213: 0xA9F4, - 9346 - 8213: 0xA9F5, - 9372 - 8213: 0xA9CD, - 9373 - 8213: 0xA9CE, - 9374 - 8213: 0xA9CF, - 9375 - 8213: 0xA9D0, - 9376 - 8213: 0xA9D1, - 9377 - 8213: 0xA9D2, - 9378 - 8213: 0xA9D3, - 9379 - 8213: 0xA9D4, - 9380 - 8213: 0xA9D5, - 9381 - 8213: 0xA9D6, - 9382 - 8213: 0xA9D7, - 9383 - 8213: 0xA9D8, - 9384 - 8213: 0xA9D9, - 9385 - 8213: 0xA9DA, - 9386 - 8213: 0xA9DB, - 9387 - 8213: 0xA9DC, - 9388 - 8213: 0xA9DD, - 9389 - 8213: 0xA9DE, - 9390 - 8213: 0xA9DF, - 9391 - 8213: 0xA9E0, - 9392 - 8213: 0xA9E1, - 9393 - 8213: 0xA9E2, - 9394 - 8213: 0xA9E3, - 9395 - 8213: 0xA9E4, - 9396 - 8213: 0xA9E5, - 9397 - 8213: 0xA9E6, - 9424 - 8213: 0xA8CD, - 9425 - 8213: 0xA8CE, - 9426 - 8213: 0xA8CF, - 9427 - 8213: 0xA8D0, - 9428 - 8213: 0xA8D1, - 9429 - 8213: 0xA8D2, - 9430 - 8213: 0xA8D3, - 9431 - 8213: 0xA8D4, - 9432 - 8213: 0xA8D5, - 9433 - 8213: 0xA8D6, - 9434 - 8213: 0xA8D7, - 9435 - 8213: 0xA8D8, - 9436 - 8213: 0xA8D9, - 9437 - 8213: 0xA8DA, - 9438 - 8213: 0xA8DB, - 9439 - 8213: 0xA8DC, - 9440 - 8213: 0xA8DD, - 9441 - 8213: 0xA8DE, - 9442 - 8213: 0xA8DF, - 9443 - 8213: 0xA8E0, - 9444 - 8213: 0xA8E1, - 9445 - 8213: 0xA8E2, - 9446 - 8213: 0xA8E3, - 9447 - 8213: 0xA8E4, - 9448 - 8213: 0xA8E5, - 9449 - 8213: 0xA8E6, - 9472 - 8213: 0xA6A1, - 9473 - 8213: 0xA6AC, - 9474 - 8213: 0xA6A2, - 9475 - 8213: 0xA6AD, - 9484 - 8213: 0xA6A3, - 9485 - 8213: 0xA6C8, - 9486 - 8213: 0xA6C7, - 9487 - 8213: 0xA6AE, - 9488 - 8213: 0xA6A4, - 9489 - 8213: 0xA6C2, - 9490 - 8213: 0xA6C1, - 9491 - 8213: 0xA6AF, - 9492 - 8213: 0xA6A6, - 9493 - 8213: 0xA6C6, - 9494 - 8213: 0xA6C5, - 9495 - 8213: 0xA6B1, - 9496 - 8213: 0xA6A5, - 9497 - 8213: 0xA6C4, - 9498 - 8213: 0xA6C3, - 9499 - 8213: 0xA6B0, - 9500 - 8213: 0xA6A7, - 9501 - 8213: 0xA6BC, - 9502 - 8213: 0xA6C9, - 9503 - 8213: 0xA6CA, - 9504 - 8213: 0xA6B7, - 9505 - 8213: 0xA6CB, - 9506 - 8213: 0xA6CC, - 9507 - 8213: 0xA6B2, - 9508 - 8213: 0xA6A9, - 9509 - 8213: 0xA6BE, - 9510 - 8213: 0xA6CD, - 9511 - 8213: 0xA6CE, - 9512 - 8213: 0xA6B9, - 9513 - 8213: 0xA6CF, - 9514 - 8213: 0xA6D0, - 9515 - 8213: 0xA6B4, - 9516 - 8213: 0xA6A8, - 9517 - 8213: 0xA6D1, - 9518 - 8213: 0xA6D2, - 9519 - 8213: 0xA6B8, - 9520 - 8213: 0xA6BD, - 9521 - 8213: 0xA6D3, - 9522 - 8213: 0xA6D4, - 9523 - 8213: 0xA6B3, - 9524 - 8213: 0xA6AA, - 9525 - 8213: 0xA6D5, - 9526 - 8213: 0xA6D6, - 9527 - 8213: 0xA6BA, - 9528 - 8213: 0xA6BF, - 9529 - 8213: 0xA6D7, - 9530 - 8213: 0xA6D8, - 9531 - 8213: 0xA6B5, - 9532 - 8213: 0xA6AB, - 9533 - 8213: 0xA6D9, - 9534 - 8213: 0xA6DA, - 9535 - 8213: 0xA6BB, - 9536 - 8213: 0xA6DB, - 9537 - 8213: 0xA6DC, - 9538 - 8213: 0xA6C0, - 9539 - 8213: 0xA6DD, - 9540 - 8213: 0xA6DE, - 9541 - 8213: 0xA6DF, - 9542 - 8213: 0xA6E0, - 9543 - 8213: 0xA6E1, - 9544 - 8213: 0xA6E2, - 9545 - 8213: 0xA6E3, - 9546 - 8213: 0xA6E4, - 9547 - 8213: 0xA6B6, - 9618 - 8213: 0xA2C6, - 9632 - 8213: 0xA1E1, - 9633 - 8213: 0xA1E0, - 9635 - 8213: 0xA2C3, - 9636 - 8213: 0xA2C7, - 9637 - 8213: 0xA2C8, - 9638 - 8213: 0xA2CB, - 9639 - 8213: 0xA2CA, - 9640 - 8213: 0xA2C9, - 9641 - 8213: 0xA2CC, - 9650 - 8213: 0xA1E3, - 9651 - 8213: 0xA1E2, - 9654 - 8213: 0xA2BA, - 9655 - 8213: 0xA2B9, - 9660 - 8213: 0xA1E5, - 9661 - 8213: 0xA1E4, - 9664 - 8213: 0xA2B8, - 9665 - 8213: 0xA2B7, - 9670 - 8213: 0xA1DF, - 9671 - 8213: 0xA1DE, - 9672 - 8213: 0xA2C2, - 9675 - 8213: 0xA1DB, - 9678 - 8213: 0xA1DD, - 9679 - 8213: 0xA1DC, - 9680 - 8213: 0xA2C4, - 9681 - 8213: 0xA2C5, - 9733 - 8213: 0xA1DA, - 9734 - 8213: 0xA1D9, - 9742 - 8213: 0xA2CF, - 9743 - 8213: 0xA2CE, - 9756 - 8213: 0xA2D0, - 9758 - 8213: 0xA2D1, - 9792 - 8213: 0xA1CF, - 9794 - 8213: 0xA1CE, - 9824 - 8213: 0xA2BC, - 9825 - 8213: 0xA2BD, - 9827 - 8213: 0xA2C0, - 9828 - 8213: 0xA2BB, - 9829 - 8213: 0xA2BE, - 9831 - 8213: 0xA2BF, - 9832 - 8213: 0xA2CD, - 9833 - 8213: 0xA2DB, - 9834 - 8213: 0xA2DC, - 9836 - 8213: 0xA2DD, - 9837 - 8213: 0xA2DA, -} - -const encode3Low, encode3High = 12288, 13278 - -var encode3 = [...]uint16{ - 12288 - 12288: 0xA1A1, - 12289 - 12288: 0xA1A2, - 12290 - 12288: 0xA1A3, - 12291 - 12288: 0xA1A8, - 12296 - 12288: 0xA1B4, - 12297 - 12288: 0xA1B5, - 12298 - 12288: 0xA1B6, - 12299 - 12288: 0xA1B7, - 12300 - 12288: 0xA1B8, - 12301 - 12288: 0xA1B9, - 12302 - 12288: 0xA1BA, - 12303 - 12288: 0xA1BB, - 12304 - 12288: 0xA1BC, - 12305 - 12288: 0xA1BD, - 12307 - 12288: 0xA1EB, - 12308 - 12288: 0xA1B2, - 12309 - 12288: 0xA1B3, - 12353 - 12288: 0xAAA1, - 12354 - 12288: 0xAAA2, - 12355 - 12288: 0xAAA3, - 12356 - 12288: 0xAAA4, - 12357 - 12288: 0xAAA5, - 12358 - 12288: 0xAAA6, - 12359 - 12288: 0xAAA7, - 12360 - 12288: 0xAAA8, - 12361 - 12288: 0xAAA9, - 12362 - 12288: 0xAAAA, - 12363 - 12288: 0xAAAB, - 12364 - 12288: 0xAAAC, - 12365 - 12288: 0xAAAD, - 12366 - 12288: 0xAAAE, - 12367 - 12288: 0xAAAF, - 12368 - 12288: 0xAAB0, - 12369 - 12288: 0xAAB1, - 12370 - 12288: 0xAAB2, - 12371 - 12288: 0xAAB3, - 12372 - 12288: 0xAAB4, - 12373 - 12288: 0xAAB5, - 12374 - 12288: 0xAAB6, - 12375 - 12288: 0xAAB7, - 12376 - 12288: 0xAAB8, - 12377 - 12288: 0xAAB9, - 12378 - 12288: 0xAABA, - 12379 - 12288: 0xAABB, - 12380 - 12288: 0xAABC, - 12381 - 12288: 0xAABD, - 12382 - 12288: 0xAABE, - 12383 - 12288: 0xAABF, - 12384 - 12288: 0xAAC0, - 12385 - 12288: 0xAAC1, - 12386 - 12288: 0xAAC2, - 12387 - 12288: 0xAAC3, - 12388 - 12288: 0xAAC4, - 12389 - 12288: 0xAAC5, - 12390 - 12288: 0xAAC6, - 12391 - 12288: 0xAAC7, - 12392 - 12288: 0xAAC8, - 12393 - 12288: 0xAAC9, - 12394 - 12288: 0xAACA, - 12395 - 12288: 0xAACB, - 12396 - 12288: 0xAACC, - 12397 - 12288: 0xAACD, - 12398 - 12288: 0xAACE, - 12399 - 12288: 0xAACF, - 12400 - 12288: 0xAAD0, - 12401 - 12288: 0xAAD1, - 12402 - 12288: 0xAAD2, - 12403 - 12288: 0xAAD3, - 12404 - 12288: 0xAAD4, - 12405 - 12288: 0xAAD5, - 12406 - 12288: 0xAAD6, - 12407 - 12288: 0xAAD7, - 12408 - 12288: 0xAAD8, - 12409 - 12288: 0xAAD9, - 12410 - 12288: 0xAADA, - 12411 - 12288: 0xAADB, - 12412 - 12288: 0xAADC, - 12413 - 12288: 0xAADD, - 12414 - 12288: 0xAADE, - 12415 - 12288: 0xAADF, - 12416 - 12288: 0xAAE0, - 12417 - 12288: 0xAAE1, - 12418 - 12288: 0xAAE2, - 12419 - 12288: 0xAAE3, - 12420 - 12288: 0xAAE4, - 12421 - 12288: 0xAAE5, - 12422 - 12288: 0xAAE6, - 12423 - 12288: 0xAAE7, - 12424 - 12288: 0xAAE8, - 12425 - 12288: 0xAAE9, - 12426 - 12288: 0xAAEA, - 12427 - 12288: 0xAAEB, - 12428 - 12288: 0xAAEC, - 12429 - 12288: 0xAAED, - 12430 - 12288: 0xAAEE, - 12431 - 12288: 0xAAEF, - 12432 - 12288: 0xAAF0, - 12433 - 12288: 0xAAF1, - 12434 - 12288: 0xAAF2, - 12435 - 12288: 0xAAF3, - 12449 - 12288: 0xABA1, - 12450 - 12288: 0xABA2, - 12451 - 12288: 0xABA3, - 12452 - 12288: 0xABA4, - 12453 - 12288: 0xABA5, - 12454 - 12288: 0xABA6, - 12455 - 12288: 0xABA7, - 12456 - 12288: 0xABA8, - 12457 - 12288: 0xABA9, - 12458 - 12288: 0xABAA, - 12459 - 12288: 0xABAB, - 12460 - 12288: 0xABAC, - 12461 - 12288: 0xABAD, - 12462 - 12288: 0xABAE, - 12463 - 12288: 0xABAF, - 12464 - 12288: 0xABB0, - 12465 - 12288: 0xABB1, - 12466 - 12288: 0xABB2, - 12467 - 12288: 0xABB3, - 12468 - 12288: 0xABB4, - 12469 - 12288: 0xABB5, - 12470 - 12288: 0xABB6, - 12471 - 12288: 0xABB7, - 12472 - 12288: 0xABB8, - 12473 - 12288: 0xABB9, - 12474 - 12288: 0xABBA, - 12475 - 12288: 0xABBB, - 12476 - 12288: 0xABBC, - 12477 - 12288: 0xABBD, - 12478 - 12288: 0xABBE, - 12479 - 12288: 0xABBF, - 12480 - 12288: 0xABC0, - 12481 - 12288: 0xABC1, - 12482 - 12288: 0xABC2, - 12483 - 12288: 0xABC3, - 12484 - 12288: 0xABC4, - 12485 - 12288: 0xABC5, - 12486 - 12288: 0xABC6, - 12487 - 12288: 0xABC7, - 12488 - 12288: 0xABC8, - 12489 - 12288: 0xABC9, - 12490 - 12288: 0xABCA, - 12491 - 12288: 0xABCB, - 12492 - 12288: 0xABCC, - 12493 - 12288: 0xABCD, - 12494 - 12288: 0xABCE, - 12495 - 12288: 0xABCF, - 12496 - 12288: 0xABD0, - 12497 - 12288: 0xABD1, - 12498 - 12288: 0xABD2, - 12499 - 12288: 0xABD3, - 12500 - 12288: 0xABD4, - 12501 - 12288: 0xABD5, - 12502 - 12288: 0xABD6, - 12503 - 12288: 0xABD7, - 12504 - 12288: 0xABD8, - 12505 - 12288: 0xABD9, - 12506 - 12288: 0xABDA, - 12507 - 12288: 0xABDB, - 12508 - 12288: 0xABDC, - 12509 - 12288: 0xABDD, - 12510 - 12288: 0xABDE, - 12511 - 12288: 0xABDF, - 12512 - 12288: 0xABE0, - 12513 - 12288: 0xABE1, - 12514 - 12288: 0xABE2, - 12515 - 12288: 0xABE3, - 12516 - 12288: 0xABE4, - 12517 - 12288: 0xABE5, - 12518 - 12288: 0xABE6, - 12519 - 12288: 0xABE7, - 12520 - 12288: 0xABE8, - 12521 - 12288: 0xABE9, - 12522 - 12288: 0xABEA, - 12523 - 12288: 0xABEB, - 12524 - 12288: 0xABEC, - 12525 - 12288: 0xABED, - 12526 - 12288: 0xABEE, - 12527 - 12288: 0xABEF, - 12528 - 12288: 0xABF0, - 12529 - 12288: 0xABF1, - 12530 - 12288: 0xABF2, - 12531 - 12288: 0xABF3, - 12532 - 12288: 0xABF4, - 12533 - 12288: 0xABF5, - 12534 - 12288: 0xABF6, - 12593 - 12288: 0xA4A1, - 12594 - 12288: 0xA4A2, - 12595 - 12288: 0xA4A3, - 12596 - 12288: 0xA4A4, - 12597 - 12288: 0xA4A5, - 12598 - 12288: 0xA4A6, - 12599 - 12288: 0xA4A7, - 12600 - 12288: 0xA4A8, - 12601 - 12288: 0xA4A9, - 12602 - 12288: 0xA4AA, - 12603 - 12288: 0xA4AB, - 12604 - 12288: 0xA4AC, - 12605 - 12288: 0xA4AD, - 12606 - 12288: 0xA4AE, - 12607 - 12288: 0xA4AF, - 12608 - 12288: 0xA4B0, - 12609 - 12288: 0xA4B1, - 12610 - 12288: 0xA4B2, - 12611 - 12288: 0xA4B3, - 12612 - 12288: 0xA4B4, - 12613 - 12288: 0xA4B5, - 12614 - 12288: 0xA4B6, - 12615 - 12288: 0xA4B7, - 12616 - 12288: 0xA4B8, - 12617 - 12288: 0xA4B9, - 12618 - 12288: 0xA4BA, - 12619 - 12288: 0xA4BB, - 12620 - 12288: 0xA4BC, - 12621 - 12288: 0xA4BD, - 12622 - 12288: 0xA4BE, - 12623 - 12288: 0xA4BF, - 12624 - 12288: 0xA4C0, - 12625 - 12288: 0xA4C1, - 12626 - 12288: 0xA4C2, - 12627 - 12288: 0xA4C3, - 12628 - 12288: 0xA4C4, - 12629 - 12288: 0xA4C5, - 12630 - 12288: 0xA4C6, - 12631 - 12288: 0xA4C7, - 12632 - 12288: 0xA4C8, - 12633 - 12288: 0xA4C9, - 12634 - 12288: 0xA4CA, - 12635 - 12288: 0xA4CB, - 12636 - 12288: 0xA4CC, - 12637 - 12288: 0xA4CD, - 12638 - 12288: 0xA4CE, - 12639 - 12288: 0xA4CF, - 12640 - 12288: 0xA4D0, - 12641 - 12288: 0xA4D1, - 12642 - 12288: 0xA4D2, - 12643 - 12288: 0xA4D3, - 12644 - 12288: 0xA4D4, - 12645 - 12288: 0xA4D5, - 12646 - 12288: 0xA4D6, - 12647 - 12288: 0xA4D7, - 12648 - 12288: 0xA4D8, - 12649 - 12288: 0xA4D9, - 12650 - 12288: 0xA4DA, - 12651 - 12288: 0xA4DB, - 12652 - 12288: 0xA4DC, - 12653 - 12288: 0xA4DD, - 12654 - 12288: 0xA4DE, - 12655 - 12288: 0xA4DF, - 12656 - 12288: 0xA4E0, - 12657 - 12288: 0xA4E1, - 12658 - 12288: 0xA4E2, - 12659 - 12288: 0xA4E3, - 12660 - 12288: 0xA4E4, - 12661 - 12288: 0xA4E5, - 12662 - 12288: 0xA4E6, - 12663 - 12288: 0xA4E7, - 12664 - 12288: 0xA4E8, - 12665 - 12288: 0xA4E9, - 12666 - 12288: 0xA4EA, - 12667 - 12288: 0xA4EB, - 12668 - 12288: 0xA4EC, - 12669 - 12288: 0xA4ED, - 12670 - 12288: 0xA4EE, - 12671 - 12288: 0xA4EF, - 12672 - 12288: 0xA4F0, - 12673 - 12288: 0xA4F1, - 12674 - 12288: 0xA4F2, - 12675 - 12288: 0xA4F3, - 12676 - 12288: 0xA4F4, - 12677 - 12288: 0xA4F5, - 12678 - 12288: 0xA4F6, - 12679 - 12288: 0xA4F7, - 12680 - 12288: 0xA4F8, - 12681 - 12288: 0xA4F9, - 12682 - 12288: 0xA4FA, - 12683 - 12288: 0xA4FB, - 12684 - 12288: 0xA4FC, - 12685 - 12288: 0xA4FD, - 12686 - 12288: 0xA4FE, - 12800 - 12288: 0xA9B1, - 12801 - 12288: 0xA9B2, - 12802 - 12288: 0xA9B3, - 12803 - 12288: 0xA9B4, - 12804 - 12288: 0xA9B5, - 12805 - 12288: 0xA9B6, - 12806 - 12288: 0xA9B7, - 12807 - 12288: 0xA9B8, - 12808 - 12288: 0xA9B9, - 12809 - 12288: 0xA9BA, - 12810 - 12288: 0xA9BB, - 12811 - 12288: 0xA9BC, - 12812 - 12288: 0xA9BD, - 12813 - 12288: 0xA9BE, - 12814 - 12288: 0xA9BF, - 12815 - 12288: 0xA9C0, - 12816 - 12288: 0xA9C1, - 12817 - 12288: 0xA9C2, - 12818 - 12288: 0xA9C3, - 12819 - 12288: 0xA9C4, - 12820 - 12288: 0xA9C5, - 12821 - 12288: 0xA9C6, - 12822 - 12288: 0xA9C7, - 12823 - 12288: 0xA9C8, - 12824 - 12288: 0xA9C9, - 12825 - 12288: 0xA9CA, - 12826 - 12288: 0xA9CB, - 12827 - 12288: 0xA9CC, - 12828 - 12288: 0xA2DF, - 12896 - 12288: 0xA8B1, - 12897 - 12288: 0xA8B2, - 12898 - 12288: 0xA8B3, - 12899 - 12288: 0xA8B4, - 12900 - 12288: 0xA8B5, - 12901 - 12288: 0xA8B6, - 12902 - 12288: 0xA8B7, - 12903 - 12288: 0xA8B8, - 12904 - 12288: 0xA8B9, - 12905 - 12288: 0xA8BA, - 12906 - 12288: 0xA8BB, - 12907 - 12288: 0xA8BC, - 12908 - 12288: 0xA8BD, - 12909 - 12288: 0xA8BE, - 12910 - 12288: 0xA8BF, - 12911 - 12288: 0xA8C0, - 12912 - 12288: 0xA8C1, - 12913 - 12288: 0xA8C2, - 12914 - 12288: 0xA8C3, - 12915 - 12288: 0xA8C4, - 12916 - 12288: 0xA8C5, - 12917 - 12288: 0xA8C6, - 12918 - 12288: 0xA8C7, - 12919 - 12288: 0xA8C8, - 12920 - 12288: 0xA8C9, - 12921 - 12288: 0xA8CA, - 12922 - 12288: 0xA8CB, - 12923 - 12288: 0xA8CC, - 12927 - 12288: 0xA2DE, - 13184 - 12288: 0xA7C9, - 13185 - 12288: 0xA7CA, - 13186 - 12288: 0xA7CB, - 13187 - 12288: 0xA7CC, - 13188 - 12288: 0xA7CD, - 13192 - 12288: 0xA7BA, - 13193 - 12288: 0xA7BB, - 13194 - 12288: 0xA7DC, - 13195 - 12288: 0xA7DD, - 13196 - 12288: 0xA7DE, - 13197 - 12288: 0xA7B6, - 13198 - 12288: 0xA7B7, - 13199 - 12288: 0xA7B8, - 13200 - 12288: 0xA7D4, - 13201 - 12288: 0xA7D5, - 13202 - 12288: 0xA7D6, - 13203 - 12288: 0xA7D7, - 13204 - 12288: 0xA7D8, - 13205 - 12288: 0xA7A1, - 13206 - 12288: 0xA7A2, - 13207 - 12288: 0xA7A3, - 13208 - 12288: 0xA7A5, - 13209 - 12288: 0xA7AB, - 13210 - 12288: 0xA7AC, - 13211 - 12288: 0xA7AD, - 13212 - 12288: 0xA7AE, - 13213 - 12288: 0xA7AF, - 13214 - 12288: 0xA7B0, - 13215 - 12288: 0xA7B1, - 13216 - 12288: 0xA7B2, - 13217 - 12288: 0xA7B3, - 13218 - 12288: 0xA7B4, - 13219 - 12288: 0xA7A7, - 13220 - 12288: 0xA7A8, - 13221 - 12288: 0xA7A9, - 13222 - 12288: 0xA7AA, - 13223 - 12288: 0xA7BD, - 13224 - 12288: 0xA7BE, - 13225 - 12288: 0xA7E5, - 13226 - 12288: 0xA7E6, - 13227 - 12288: 0xA7E7, - 13228 - 12288: 0xA7E8, - 13229 - 12288: 0xA7E1, - 13230 - 12288: 0xA7E2, - 13231 - 12288: 0xA7E3, - 13232 - 12288: 0xA7BF, - 13233 - 12288: 0xA7C0, - 13234 - 12288: 0xA7C1, - 13235 - 12288: 0xA7C2, - 13236 - 12288: 0xA7C3, - 13237 - 12288: 0xA7C4, - 13238 - 12288: 0xA7C5, - 13239 - 12288: 0xA7C6, - 13240 - 12288: 0xA7C7, - 13241 - 12288: 0xA7C8, - 13242 - 12288: 0xA7CE, - 13243 - 12288: 0xA7CF, - 13244 - 12288: 0xA7D0, - 13245 - 12288: 0xA7D1, - 13246 - 12288: 0xA7D2, - 13247 - 12288: 0xA7D3, - 13248 - 12288: 0xA7DA, - 13249 - 12288: 0xA7DB, - 13250 - 12288: 0xA2E3, - 13251 - 12288: 0xA7EC, - 13252 - 12288: 0xA7A6, - 13253 - 12288: 0xA7E0, - 13254 - 12288: 0xA7EF, - 13255 - 12288: 0xA2E1, - 13256 - 12288: 0xA7BC, - 13257 - 12288: 0xA7ED, - 13258 - 12288: 0xA7B5, - 13263 - 12288: 0xA7B9, - 13264 - 12288: 0xA7EA, - 13267 - 12288: 0xA7EB, - 13270 - 12288: 0xA7DF, - 13272 - 12288: 0xA2E4, - 13275 - 12288: 0xA7E4, - 13276 - 12288: 0xA7EE, - 13277 - 12288: 0xA7E9, -} - -const encode4Low, encode4High = 161, 1106 - -var encode4 = [...]uint16{ - 161 - 161: 0xA2AE, - 164 - 161: 0xA2B4, - 167 - 161: 0xA1D7, - 168 - 161: 0xA1A7, - 170 - 161: 0xA8A3, - 173 - 161: 0xA1A9, - 174 - 161: 0xA2E7, - 176 - 161: 0xA1C6, - 177 - 161: 0xA1BE, - 178 - 161: 0xA9F7, - 179 - 161: 0xA9F8, - 180 - 161: 0xA2A5, - 182 - 161: 0xA2D2, - 183 - 161: 0xA1A4, - 184 - 161: 0xA2AC, - 185 - 161: 0xA9F6, - 186 - 161: 0xA8AC, - 188 - 161: 0xA8F9, - 189 - 161: 0xA8F6, - 190 - 161: 0xA8FA, - 191 - 161: 0xA2AF, - 198 - 161: 0xA8A1, - 208 - 161: 0xA8A2, - 215 - 161: 0xA1BF, - 216 - 161: 0xA8AA, - 222 - 161: 0xA8AD, - 223 - 161: 0xA9AC, - 230 - 161: 0xA9A1, - 240 - 161: 0xA9A3, - 247 - 161: 0xA1C0, - 248 - 161: 0xA9AA, - 254 - 161: 0xA9AD, - 273 - 161: 0xA9A2, - 294 - 161: 0xA8A4, - 295 - 161: 0xA9A4, - 305 - 161: 0xA9A5, - 306 - 161: 0xA8A6, - 307 - 161: 0xA9A6, - 312 - 161: 0xA9A7, - 319 - 161: 0xA8A8, - 320 - 161: 0xA9A8, - 321 - 161: 0xA8A9, - 322 - 161: 0xA9A9, - 329 - 161: 0xA9B0, - 330 - 161: 0xA8AF, - 331 - 161: 0xA9AF, - 338 - 161: 0xA8AB, - 339 - 161: 0xA9AB, - 358 - 161: 0xA8AE, - 359 - 161: 0xA9AE, - 711 - 161: 0xA2A7, - 720 - 161: 0xA2B0, - 728 - 161: 0xA2A8, - 729 - 161: 0xA2AB, - 730 - 161: 0xA2AA, - 731 - 161: 0xA2AD, - 733 - 161: 0xA2A9, - 913 - 161: 0xA5C1, - 914 - 161: 0xA5C2, - 915 - 161: 0xA5C3, - 916 - 161: 0xA5C4, - 917 - 161: 0xA5C5, - 918 - 161: 0xA5C6, - 919 - 161: 0xA5C7, - 920 - 161: 0xA5C8, - 921 - 161: 0xA5C9, - 922 - 161: 0xA5CA, - 923 - 161: 0xA5CB, - 924 - 161: 0xA5CC, - 925 - 161: 0xA5CD, - 926 - 161: 0xA5CE, - 927 - 161: 0xA5CF, - 928 - 161: 0xA5D0, - 929 - 161: 0xA5D1, - 931 - 161: 0xA5D2, - 932 - 161: 0xA5D3, - 933 - 161: 0xA5D4, - 934 - 161: 0xA5D5, - 935 - 161: 0xA5D6, - 936 - 161: 0xA5D7, - 937 - 161: 0xA5D8, - 945 - 161: 0xA5E1, - 946 - 161: 0xA5E2, - 947 - 161: 0xA5E3, - 948 - 161: 0xA5E4, - 949 - 161: 0xA5E5, - 950 - 161: 0xA5E6, - 951 - 161: 0xA5E7, - 952 - 161: 0xA5E8, - 953 - 161: 0xA5E9, - 954 - 161: 0xA5EA, - 955 - 161: 0xA5EB, - 956 - 161: 0xA5EC, - 957 - 161: 0xA5ED, - 958 - 161: 0xA5EE, - 959 - 161: 0xA5EF, - 960 - 161: 0xA5F0, - 961 - 161: 0xA5F1, - 963 - 161: 0xA5F2, - 964 - 161: 0xA5F3, - 965 - 161: 0xA5F4, - 966 - 161: 0xA5F5, - 967 - 161: 0xA5F6, - 968 - 161: 0xA5F7, - 969 - 161: 0xA5F8, - 1025 - 161: 0xACA7, - 1040 - 161: 0xACA1, - 1041 - 161: 0xACA2, - 1042 - 161: 0xACA3, - 1043 - 161: 0xACA4, - 1044 - 161: 0xACA5, - 1045 - 161: 0xACA6, - 1046 - 161: 0xACA8, - 1047 - 161: 0xACA9, - 1048 - 161: 0xACAA, - 1049 - 161: 0xACAB, - 1050 - 161: 0xACAC, - 1051 - 161: 0xACAD, - 1052 - 161: 0xACAE, - 1053 - 161: 0xACAF, - 1054 - 161: 0xACB0, - 1055 - 161: 0xACB1, - 1056 - 161: 0xACB2, - 1057 - 161: 0xACB3, - 1058 - 161: 0xACB4, - 1059 - 161: 0xACB5, - 1060 - 161: 0xACB6, - 1061 - 161: 0xACB7, - 1062 - 161: 0xACB8, - 1063 - 161: 0xACB9, - 1064 - 161: 0xACBA, - 1065 - 161: 0xACBB, - 1066 - 161: 0xACBC, - 1067 - 161: 0xACBD, - 1068 - 161: 0xACBE, - 1069 - 161: 0xACBF, - 1070 - 161: 0xACC0, - 1071 - 161: 0xACC1, - 1072 - 161: 0xACD1, - 1073 - 161: 0xACD2, - 1074 - 161: 0xACD3, - 1075 - 161: 0xACD4, - 1076 - 161: 0xACD5, - 1077 - 161: 0xACD6, - 1078 - 161: 0xACD8, - 1079 - 161: 0xACD9, - 1080 - 161: 0xACDA, - 1081 - 161: 0xACDB, - 1082 - 161: 0xACDC, - 1083 - 161: 0xACDD, - 1084 - 161: 0xACDE, - 1085 - 161: 0xACDF, - 1086 - 161: 0xACE0, - 1087 - 161: 0xACE1, - 1088 - 161: 0xACE2, - 1089 - 161: 0xACE3, - 1090 - 161: 0xACE4, - 1091 - 161: 0xACE5, - 1092 - 161: 0xACE6, - 1093 - 161: 0xACE7, - 1094 - 161: 0xACE8, - 1095 - 161: 0xACE9, - 1096 - 161: 0xACEA, - 1097 - 161: 0xACEB, - 1098 - 161: 0xACEC, - 1099 - 161: 0xACED, - 1100 - 161: 0xACEE, - 1101 - 161: 0xACEF, - 1102 - 161: 0xACF0, - 1103 - 161: 0xACF1, - 1105 - 161: 0xACD7, -} - -const encode5Low, encode5High = 63744, 64012 - -var encode5 = [...]uint16{ - 63744 - 63744: 0xCBD0, - 63745 - 63744: 0xCBD6, - 63746 - 63744: 0xCBE7, - 63747 - 63744: 0xCDCF, - 63748 - 63744: 0xCDE8, - 63749 - 63744: 0xCEAD, - 63750 - 63744: 0xCFFB, - 63751 - 63744: 0xD0A2, - 63752 - 63744: 0xD0B8, - 63753 - 63744: 0xD0D0, - 63754 - 63744: 0xD0DD, - 63755 - 63744: 0xD1D4, - 63756 - 63744: 0xD1D5, - 63757 - 63744: 0xD1D8, - 63758 - 63744: 0xD1DB, - 63759 - 63744: 0xD1DC, - 63760 - 63744: 0xD1DD, - 63761 - 63744: 0xD1DE, - 63762 - 63744: 0xD1DF, - 63763 - 63744: 0xD1E0, - 63764 - 63744: 0xD1E2, - 63765 - 63744: 0xD1E3, - 63766 - 63744: 0xD1E4, - 63767 - 63744: 0xD1E5, - 63768 - 63744: 0xD1E6, - 63769 - 63744: 0xD1E8, - 63770 - 63744: 0xD1E9, - 63771 - 63744: 0xD1EA, - 63772 - 63744: 0xD1EB, - 63773 - 63744: 0xD1ED, - 63774 - 63744: 0xD1EF, - 63775 - 63744: 0xD1F0, - 63776 - 63744: 0xD1F2, - 63777 - 63744: 0xD1F6, - 63778 - 63744: 0xD1FA, - 63779 - 63744: 0xD1FC, - 63780 - 63744: 0xD1FD, - 63781 - 63744: 0xD1FE, - 63782 - 63744: 0xD2A2, - 63783 - 63744: 0xD2A3, - 63784 - 63744: 0xD2A7, - 63785 - 63744: 0xD2A8, - 63786 - 63744: 0xD2A9, - 63787 - 63744: 0xD2AA, - 63788 - 63744: 0xD2AB, - 63789 - 63744: 0xD2AD, - 63790 - 63744: 0xD2B2, - 63791 - 63744: 0xD2BE, - 63792 - 63744: 0xD2C2, - 63793 - 63744: 0xD2C3, - 63794 - 63744: 0xD2C4, - 63795 - 63744: 0xD2C6, - 63796 - 63744: 0xD2C7, - 63797 - 63744: 0xD2C8, - 63798 - 63744: 0xD2C9, - 63799 - 63744: 0xD2CA, - 63800 - 63744: 0xD2CB, - 63801 - 63744: 0xD2CD, - 63802 - 63744: 0xD2CE, - 63803 - 63744: 0xD2CF, - 63804 - 63744: 0xD2D0, - 63805 - 63744: 0xD2D1, - 63806 - 63744: 0xD2D2, - 63807 - 63744: 0xD2D3, - 63808 - 63744: 0xD2D4, - 63809 - 63744: 0xD2D5, - 63810 - 63744: 0xD2D6, - 63811 - 63744: 0xD2D7, - 63812 - 63744: 0xD2D9, - 63813 - 63744: 0xD2DA, - 63814 - 63744: 0xD2DE, - 63815 - 63744: 0xD2DF, - 63816 - 63744: 0xD2E1, - 63817 - 63744: 0xD2E2, - 63818 - 63744: 0xD2E4, - 63819 - 63744: 0xD2E5, - 63820 - 63744: 0xD2E6, - 63821 - 63744: 0xD2E7, - 63822 - 63744: 0xD2E8, - 63823 - 63744: 0xD2E9, - 63824 - 63744: 0xD2EA, - 63825 - 63744: 0xD2EB, - 63826 - 63744: 0xD2F0, - 63827 - 63744: 0xD2F1, - 63828 - 63744: 0xD2F2, - 63829 - 63744: 0xD2F3, - 63830 - 63744: 0xD2F4, - 63831 - 63744: 0xD2F5, - 63832 - 63744: 0xD2F7, - 63833 - 63744: 0xD2F8, - 63834 - 63744: 0xD4E6, - 63835 - 63744: 0xD4FC, - 63836 - 63744: 0xD5A5, - 63837 - 63744: 0xD5AB, - 63838 - 63744: 0xD5AE, - 63839 - 63744: 0xD6B8, - 63840 - 63744: 0xD6CD, - 63841 - 63744: 0xD7CB, - 63842 - 63744: 0xD7E4, - 63843 - 63744: 0xDBC5, - 63844 - 63744: 0xDBE4, - 63845 - 63744: 0xDCA5, - 63846 - 63744: 0xDDA5, - 63847 - 63744: 0xDDD5, - 63848 - 63744: 0xDDF4, - 63849 - 63744: 0xDEFC, - 63850 - 63744: 0xDEFE, - 63851 - 63744: 0xDFB3, - 63852 - 63744: 0xDFE1, - 63853 - 63744: 0xDFE8, - 63854 - 63744: 0xE0F1, - 63855 - 63744: 0xE1AD, - 63856 - 63744: 0xE1ED, - 63857 - 63744: 0xE3F5, - 63858 - 63744: 0xE4A1, - 63859 - 63744: 0xE4A9, - 63860 - 63744: 0xE5AE, - 63861 - 63744: 0xE5B1, - 63862 - 63744: 0xE5B2, - 63863 - 63744: 0xE5B9, - 63864 - 63744: 0xE5BB, - 63865 - 63744: 0xE5BC, - 63866 - 63744: 0xE5C4, - 63867 - 63744: 0xE5CE, - 63868 - 63744: 0xE5D0, - 63869 - 63744: 0xE5D2, - 63870 - 63744: 0xE5D6, - 63871 - 63744: 0xE5FA, - 63872 - 63744: 0xE5FB, - 63873 - 63744: 0xE5FC, - 63874 - 63744: 0xE5FE, - 63875 - 63744: 0xE6A1, - 63876 - 63744: 0xE6A4, - 63877 - 63744: 0xE6A7, - 63878 - 63744: 0xE6AD, - 63879 - 63744: 0xE6AF, - 63880 - 63744: 0xE6B0, - 63881 - 63744: 0xE6B1, - 63882 - 63744: 0xE6B3, - 63883 - 63744: 0xE6B7, - 63884 - 63744: 0xE6B8, - 63885 - 63744: 0xE6BC, - 63886 - 63744: 0xE6C4, - 63887 - 63744: 0xE6C6, - 63888 - 63744: 0xE6C7, - 63889 - 63744: 0xE6CA, - 63890 - 63744: 0xE6D2, - 63891 - 63744: 0xE6D6, - 63892 - 63744: 0xE6D9, - 63893 - 63744: 0xE6DC, - 63894 - 63744: 0xE6DF, - 63895 - 63744: 0xE6E1, - 63896 - 63744: 0xE6E4, - 63897 - 63744: 0xE6E5, - 63898 - 63744: 0xE6E6, - 63899 - 63744: 0xE6E8, - 63900 - 63744: 0xE6EA, - 63901 - 63744: 0xE6EB, - 63902 - 63744: 0xE6EC, - 63903 - 63744: 0xE6EF, - 63904 - 63744: 0xE6F1, - 63905 - 63744: 0xE6F2, - 63906 - 63744: 0xE6F5, - 63907 - 63744: 0xE6F6, - 63908 - 63744: 0xE6F7, - 63909 - 63744: 0xE6F9, - 63910 - 63744: 0xE7A1, - 63911 - 63744: 0xE7A6, - 63912 - 63744: 0xE7A9, - 63913 - 63744: 0xE7AA, - 63914 - 63744: 0xE7AC, - 63915 - 63744: 0xE7AD, - 63916 - 63744: 0xE7B0, - 63917 - 63744: 0xE7BF, - 63918 - 63744: 0xE7C1, - 63919 - 63744: 0xE7C6, - 63920 - 63744: 0xE7C7, - 63921 - 63744: 0xE7CB, - 63922 - 63744: 0xE7CD, - 63923 - 63744: 0xE7CF, - 63924 - 63744: 0xE7D0, - 63925 - 63744: 0xE7D3, - 63926 - 63744: 0xE7DF, - 63927 - 63744: 0xE7E4, - 63928 - 63744: 0xE7E6, - 63929 - 63744: 0xE7F7, - 63930 - 63744: 0xE8E7, - 63931 - 63744: 0xE8E8, - 63932 - 63744: 0xE8F0, - 63933 - 63744: 0xE8F1, - 63934 - 63744: 0xE8F7, - 63935 - 63744: 0xE8F9, - 63936 - 63744: 0xE8FB, - 63937 - 63744: 0xE8FE, - 63938 - 63744: 0xE9A7, - 63939 - 63744: 0xE9AC, - 63940 - 63744: 0xE9CC, - 63941 - 63744: 0xE9F7, - 63942 - 63744: 0xEAC1, - 63943 - 63744: 0xEAE5, - 63944 - 63744: 0xEAF4, - 63945 - 63744: 0xEAF7, - 63946 - 63744: 0xEAFC, - 63947 - 63744: 0xEAFE, - 63948 - 63744: 0xEBA4, - 63949 - 63744: 0xEBA7, - 63950 - 63744: 0xEBA9, - 63951 - 63744: 0xEBAA, - 63952 - 63744: 0xEBBA, - 63953 - 63744: 0xEBBB, - 63954 - 63744: 0xEBBD, - 63955 - 63744: 0xEBC1, - 63956 - 63744: 0xEBC2, - 63957 - 63744: 0xEBC6, - 63958 - 63744: 0xEBC7, - 63959 - 63744: 0xEBCC, - 63960 - 63744: 0xEBCF, - 63961 - 63744: 0xEBD0, - 63962 - 63744: 0xEBD1, - 63963 - 63744: 0xEBD2, - 63964 - 63744: 0xEBD8, - 63965 - 63744: 0xECA6, - 63966 - 63744: 0xECA7, - 63967 - 63744: 0xECAA, - 63968 - 63744: 0xECAF, - 63969 - 63744: 0xECB0, - 63970 - 63744: 0xECB1, - 63971 - 63744: 0xECB2, - 63972 - 63744: 0xECB5, - 63973 - 63744: 0xECB8, - 63974 - 63744: 0xECBA, - 63975 - 63744: 0xECC0, - 63976 - 63744: 0xECC1, - 63977 - 63744: 0xECC5, - 63978 - 63744: 0xECC6, - 63979 - 63744: 0xECC9, - 63980 - 63744: 0xECCA, - 63981 - 63744: 0xECD5, - 63982 - 63744: 0xECDD, - 63983 - 63744: 0xECDE, - 63984 - 63744: 0xECE1, - 63985 - 63744: 0xECE4, - 63986 - 63744: 0xECE7, - 63987 - 63744: 0xECE8, - 63988 - 63744: 0xECF7, - 63989 - 63744: 0xECF8, - 63990 - 63744: 0xECFA, - 63991 - 63744: 0xEDA1, - 63992 - 63744: 0xEDA2, - 63993 - 63744: 0xEDA3, - 63994 - 63744: 0xEDEE, - 63995 - 63744: 0xEEDB, - 63996 - 63744: 0xF2BD, - 63997 - 63744: 0xF2FA, - 63998 - 63744: 0xF3B1, - 63999 - 63744: 0xF4A7, - 64000 - 63744: 0xF4EE, - 64001 - 63744: 0xF6F4, - 64002 - 63744: 0xF6F6, - 64003 - 63744: 0xF7B8, - 64004 - 63744: 0xF7C8, - 64005 - 63744: 0xF7D3, - 64006 - 63744: 0xF8DB, - 64007 - 63744: 0xF8F0, - 64008 - 63744: 0xFAA1, - 64009 - 63744: 0xFAA2, - 64010 - 63744: 0xFAE6, - 64011 - 63744: 0xFCA9, -} - -const encode6Low, encode6High = 65281, 65511 - -var encode6 = [...]uint16{ - 65281 - 65281: 0xA3A1, - 65282 - 65281: 0xA3A2, - 65283 - 65281: 0xA3A3, - 65284 - 65281: 0xA3A4, - 65285 - 65281: 0xA3A5, - 65286 - 65281: 0xA3A6, - 65287 - 65281: 0xA3A7, - 65288 - 65281: 0xA3A8, - 65289 - 65281: 0xA3A9, - 65290 - 65281: 0xA3AA, - 65291 - 65281: 0xA3AB, - 65292 - 65281: 0xA3AC, - 65293 - 65281: 0xA3AD, - 65294 - 65281: 0xA3AE, - 65295 - 65281: 0xA3AF, - 65296 - 65281: 0xA3B0, - 65297 - 65281: 0xA3B1, - 65298 - 65281: 0xA3B2, - 65299 - 65281: 0xA3B3, - 65300 - 65281: 0xA3B4, - 65301 - 65281: 0xA3B5, - 65302 - 65281: 0xA3B6, - 65303 - 65281: 0xA3B7, - 65304 - 65281: 0xA3B8, - 65305 - 65281: 0xA3B9, - 65306 - 65281: 0xA3BA, - 65307 - 65281: 0xA3BB, - 65308 - 65281: 0xA3BC, - 65309 - 65281: 0xA3BD, - 65310 - 65281: 0xA3BE, - 65311 - 65281: 0xA3BF, - 65312 - 65281: 0xA3C0, - 65313 - 65281: 0xA3C1, - 65314 - 65281: 0xA3C2, - 65315 - 65281: 0xA3C3, - 65316 - 65281: 0xA3C4, - 65317 - 65281: 0xA3C5, - 65318 - 65281: 0xA3C6, - 65319 - 65281: 0xA3C7, - 65320 - 65281: 0xA3C8, - 65321 - 65281: 0xA3C9, - 65322 - 65281: 0xA3CA, - 65323 - 65281: 0xA3CB, - 65324 - 65281: 0xA3CC, - 65325 - 65281: 0xA3CD, - 65326 - 65281: 0xA3CE, - 65327 - 65281: 0xA3CF, - 65328 - 65281: 0xA3D0, - 65329 - 65281: 0xA3D1, - 65330 - 65281: 0xA3D2, - 65331 - 65281: 0xA3D3, - 65332 - 65281: 0xA3D4, - 65333 - 65281: 0xA3D5, - 65334 - 65281: 0xA3D6, - 65335 - 65281: 0xA3D7, - 65336 - 65281: 0xA3D8, - 65337 - 65281: 0xA3D9, - 65338 - 65281: 0xA3DA, - 65339 - 65281: 0xA3DB, - 65340 - 65281: 0xA1AC, - 65341 - 65281: 0xA3DD, - 65342 - 65281: 0xA3DE, - 65343 - 65281: 0xA3DF, - 65344 - 65281: 0xA3E0, - 65345 - 65281: 0xA3E1, - 65346 - 65281: 0xA3E2, - 65347 - 65281: 0xA3E3, - 65348 - 65281: 0xA3E4, - 65349 - 65281: 0xA3E5, - 65350 - 65281: 0xA3E6, - 65351 - 65281: 0xA3E7, - 65352 - 65281: 0xA3E8, - 65353 - 65281: 0xA3E9, - 65354 - 65281: 0xA3EA, - 65355 - 65281: 0xA3EB, - 65356 - 65281: 0xA3EC, - 65357 - 65281: 0xA3ED, - 65358 - 65281: 0xA3EE, - 65359 - 65281: 0xA3EF, - 65360 - 65281: 0xA3F0, - 65361 - 65281: 0xA3F1, - 65362 - 65281: 0xA3F2, - 65363 - 65281: 0xA3F3, - 65364 - 65281: 0xA3F4, - 65365 - 65281: 0xA3F5, - 65366 - 65281: 0xA3F6, - 65367 - 65281: 0xA3F7, - 65368 - 65281: 0xA3F8, - 65369 - 65281: 0xA3F9, - 65370 - 65281: 0xA3FA, - 65371 - 65281: 0xA3FB, - 65372 - 65281: 0xA3FC, - 65373 - 65281: 0xA3FD, - 65374 - 65281: 0xA2A6, - 65504 - 65281: 0xA1CB, - 65505 - 65281: 0xA1CC, - 65506 - 65281: 0xA1FE, - 65507 - 65281: 0xA3FE, - 65509 - 65281: 0xA1CD, - 65510 - 65281: 0xA3DC, -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go deleted file mode 100644 index 5ecc526..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "golang.org/x/text/encoding" -) - -// All is a list of all defined encodings in this package. -var All = []encoding.Encoding{GB18030, GBK, HZGB2312} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go deleted file mode 100644 index 0e0fabf..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -var ( - // GB18030 is the GB18030 encoding. - GB18030 encoding.Encoding = &gbk18030 - // GBK is the GBK encoding. It encodes an extension of the GB2312 character set - // and is also known as Code Page 936. - GBK encoding.Encoding = &gbk -) - -var gbk = internal.Encoding{ - &internal.SimpleEncoding{ - gbkDecoder{gb18030: false}, - gbkEncoder{gb18030: false}, - }, - "GBK", - identifier.GBK, -} - -var gbk18030 = internal.Encoding{ - &internal.SimpleEncoding{ - gbkDecoder{gb18030: true}, - gbkEncoder{gb18030: true}, - }, - "GB18030", - identifier.GB18030, -} - -type gbkDecoder struct { - transform.NopResetter - gb18030 bool -} - -func (d gbkDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC - // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk - // says to treat "gbk" as Code Page 936. - // GBK’s decoder is gb18030’s decoder. https://encoding.spec.whatwg.org/#gbk-decoder - // If byte is 0x80, return code point U+20AC. https://encoding.spec.whatwg.org/#gb18030-decoder - case c0 == 0x80: - r, size = '€', 1 - - case c0 < 0xff: - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - goto write - } - c1 := src[nSrc+1] - switch { - case 0x40 <= c1 && c1 < 0x7f: - c1 -= 0x40 - case 0x80 <= c1 && c1 < 0xff: - c1 -= 0x41 - case d.gb18030 && 0x30 <= c1 && c1 < 0x40: - if nSrc+3 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - // The second byte here is always ASCII, so we can set size - // to 1 in all cases. - r, size = utf8.RuneError, 1 - goto write - } - c2 := src[nSrc+2] - if c2 < 0x81 || 0xff <= c2 { - r, size = utf8.RuneError, 1 - goto write - } - c3 := src[nSrc+3] - if c3 < 0x30 || 0x3a <= c3 { - r, size = utf8.RuneError, 1 - goto write - } - size = 4 - r = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30) - if r < 39420 { - i, j := 0, len(gb18030) - for i < j { - h := i + (j-i)/2 - if r >= rune(gb18030[h][0]) { - i = h + 1 - } else { - j = h - } - } - dec := &gb18030[i-1] - r += rune(dec[1]) - rune(dec[0]) - goto write - } - r -= 189000 - if 0 <= r && r < 0x100000 { - r += 0x10000 - } else { - r, size = utf8.RuneError, 1 - } - goto write - default: - r, size = utf8.RuneError, 1 - goto write - } - r, size = '\ufffd', 2 - if i := int(c0-0x81)*190 + int(c1); i < len(decode) { - r = rune(decode[i]) - if r == 0 { - r = '\ufffd' - } - } - - default: - r, size = utf8.RuneError, 1 - } - - write: - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type gbkEncoder struct { - transform.NopResetter - gb18030 bool -} - -func (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, r2, size := rune(0), rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r2 = rune(encode0[r-encode0Low]); r2 != 0 { - goto write2 - } - case encode1Low <= r && r < encode1High: - // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC - // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk - // says to treat "gbk" as Code Page 936. - // GBK’s encoder is gb18030’s encoder with its _is GBK_ set to true. https://encoding.spec.whatwg.org/#gbk-encoder - // If _is GBK_ is true and code point is U+20AC, return byte 0x80. https://encoding.spec.whatwg.org/#gb18030-encoder - if !e.gb18030 && r == '€' { - r = 0x80 - goto write1 - } - if r2 = rune(encode1[r-encode1Low]); r2 != 0 { - goto write2 - } - case encode2Low <= r && r < encode2High: - if r2 = rune(encode2[r-encode2Low]); r2 != 0 { - goto write2 - } - case encode3Low <= r && r < encode3High: - if r2 = rune(encode3[r-encode3Low]); r2 != 0 { - goto write2 - } - case encode4Low <= r && r < encode4High: - if r2 = rune(encode4[r-encode4Low]); r2 != 0 { - goto write2 - } - } - - if e.gb18030 { - if r < 0x10000 { - i, j := 0, len(gb18030) - for i < j { - h := i + (j-i)/2 - if r >= rune(gb18030[h][1]) { - i = h + 1 - } else { - j = h - } - } - dec := &gb18030[i-1] - r += rune(dec[0]) - rune(dec[1]) - goto write4 - } else if r < 0x110000 { - r += 189000 - 0x10000 - goto write4 - } - } - err = internal.ErrASCIIReplacement - break - } - - write1: - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - write2: - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = uint8(r2 >> 8) - dst[nDst+1] = uint8(r2) - nDst += 2 - continue - - write4: - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+3] = uint8(r%10 + 0x30) - r /= 10 - dst[nDst+2] = uint8(r%126 + 0x81) - r /= 126 - dst[nDst+1] = uint8(r%10 + 0x30) - r /= 10 - dst[nDst+0] = uint8(r + 0x81) - nDst += 4 - continue - } - return nDst, nSrc, err -} - -func init() { - // Check that the hard-coded encode switch covers all tables. - if numEncodeTables != 5 { - panic("bad numEncodeTables") - } -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go deleted file mode 100644 index e15b7bf..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package simplifiedchinese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// HZGB2312 is the HZ-GB2312 encoding. -var HZGB2312 encoding.Encoding = &hzGB2312 - -var hzGB2312 = internal.Encoding{ - internal.FuncEncoding{hzGB2312NewDecoder, hzGB2312NewEncoder}, - "HZ-GB2312", - identifier.HZGB2312, -} - -func hzGB2312NewDecoder() transform.Transformer { - return new(hzGB2312Decoder) -} - -func hzGB2312NewEncoder() transform.Transformer { - return new(hzGB2312Encoder) -} - -const ( - asciiState = iota - gbState -) - -type hzGB2312Decoder int - -func (d *hzGB2312Decoder) Reset() { - *d = asciiState -} - -func (d *hzGB2312Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 -loop: - for ; nSrc < len(src); nSrc += size { - c0 := src[nSrc] - if c0 >= utf8.RuneSelf { - r, size = utf8.RuneError, 1 - goto write - } - - if c0 == '~' { - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - goto write - } - size = 2 - switch src[nSrc+1] { - case '{': - *d = gbState - continue - case '}': - *d = asciiState - continue - case '~': - if nDst >= len(dst) { - err = transform.ErrShortDst - break loop - } - dst[nDst] = '~' - nDst++ - continue - case '\n': - continue - default: - r = utf8.RuneError - goto write - } - } - - if *d == asciiState { - r, size = rune(c0), 1 - } else { - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - goto write - } - size = 2 - c1 := src[nSrc+1] - if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { - // error - } else if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) { - r = rune(decode[i]) - if r != 0 { - goto write - } - } - if c1 > utf8.RuneSelf { - // Be consistent and always treat non-ASCII as a single error. - size = 1 - } - r = utf8.RuneError - } - - write: - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - } - return nDst, nSrc, err -} - -type hzGB2312Encoder int - -func (d *hzGB2312Encoder) Reset() { - *d = asciiState -} - -func (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - if r == '~' { - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = '~' - dst[nDst+1] = '~' - nDst += 2 - continue - } else if *e != asciiState { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - *e = asciiState - dst[nDst+0] = '~' - dst[nDst+1] = '}' - nDst += 2 - } else if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst += 1 - continue - - } - - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r != 0 { - goto writeGB - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r != 0 { - goto writeGB - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r != 0 { - goto writeGB - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r != 0 { - goto writeGB - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r != 0 { - goto writeGB - } - } - - terminateInASCIIState: - // Switch back to ASCII state in case of error so that an ASCII - // replacement character can be written in the correct state. - if *e != asciiState { - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = '~' - dst[nDst+1] = '}' - nDst += 2 - } - err = internal.ErrASCIIReplacement - break - - writeGB: - c0 := uint8(r>>8) - 0x80 - c1 := uint8(r) - 0x80 - if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { - goto terminateInASCIIState - } - if *e == asciiState { - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - *e = gbState - dst[nDst+0] = '~' - dst[nDst+1] = '{' - nDst += 2 - } else if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = c0 - dst[nDst+1] = c1 - nDst += 2 - continue - } - // TODO: should one always terminate in ASCII state to make it safe to - // concatenate two HZ-GB2312-encoded strings? - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go deleted file mode 100644 index 415f52a..0000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +++ /dev/null @@ -1,43999 +0,0 @@ -// generated by go run maketables.go; DO NOT EDIT - -// Package simplifiedchinese provides Simplified Chinese encodings such as GBK. -package simplifiedchinese // import "golang.org/x/text/encoding/simplifiedchinese" - -// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt -var gb18030 = [...][2]uint16{ - {0x0000, 0x0080}, - {0x0024, 0x00a5}, - {0x0026, 0x00a9}, - {0x002d, 0x00b2}, - {0x0032, 0x00b8}, - {0x0051, 0x00d8}, - {0x0059, 0x00e2}, - {0x005f, 0x00eb}, - {0x0060, 0x00ee}, - {0x0064, 0x00f4}, - {0x0067, 0x00f8}, - {0x0068, 0x00fb}, - {0x0069, 0x00fd}, - {0x006d, 0x0102}, - {0x007e, 0x0114}, - {0x0085, 0x011c}, - {0x0094, 0x012c}, - {0x00ac, 0x0145}, - {0x00af, 0x0149}, - {0x00b3, 0x014e}, - {0x00d0, 0x016c}, - {0x0132, 0x01cf}, - {0x0133, 0x01d1}, - {0x0134, 0x01d3}, - {0x0135, 0x01d5}, - {0x0136, 0x01d7}, - {0x0137, 0x01d9}, - {0x0138, 0x01db}, - {0x0139, 0x01dd}, - {0x0155, 0x01fa}, - {0x01ac, 0x0252}, - {0x01bb, 0x0262}, - {0x0220, 0x02c8}, - {0x0221, 0x02cc}, - {0x022e, 0x02da}, - {0x02e5, 0x03a2}, - {0x02e6, 0x03aa}, - {0x02ed, 0x03c2}, - {0x02ee, 0x03ca}, - {0x0325, 0x0402}, - {0x0333, 0x0450}, - {0x0334, 0x0452}, - {0x1ef2, 0x2011}, - {0x1ef4, 0x2017}, - {0x1ef5, 0x201a}, - {0x1ef7, 0x201e}, - {0x1efe, 0x2027}, - {0x1f07, 0x2031}, - {0x1f08, 0x2034}, - {0x1f09, 0x2036}, - {0x1f0e, 0x203c}, - {0x1f7e, 0x20ad}, - {0x1fd4, 0x2104}, - {0x1fd5, 0x2106}, - {0x1fd8, 0x210a}, - {0x1fe4, 0x2117}, - {0x1fee, 0x2122}, - {0x202c, 0x216c}, - {0x2030, 0x217a}, - {0x2046, 0x2194}, - {0x2048, 0x219a}, - {0x20b6, 0x2209}, - {0x20bc, 0x2210}, - {0x20bd, 0x2212}, - {0x20c0, 0x2216}, - {0x20c4, 0x221b}, - {0x20c6, 0x2221}, - {0x20c8, 0x2224}, - {0x20c9, 0x2226}, - {0x20ca, 0x222c}, - {0x20cc, 0x222f}, - {0x20d1, 0x2238}, - {0x20d6, 0x223e}, - {0x20e0, 0x2249}, - {0x20e3, 0x224d}, - {0x20e8, 0x2253}, - {0x20f5, 0x2262}, - {0x20f7, 0x2268}, - {0x20fd, 0x2270}, - {0x2122, 0x2296}, - {0x2125, 0x229a}, - {0x2130, 0x22a6}, - {0x2149, 0x22c0}, - {0x219b, 0x2313}, - {0x22e8, 0x246a}, - {0x22f2, 0x249c}, - {0x2356, 0x254c}, - {0x235a, 0x2574}, - {0x2367, 0x2590}, - {0x236a, 0x2596}, - {0x2374, 0x25a2}, - {0x2384, 0x25b4}, - {0x238c, 0x25be}, - {0x2394, 0x25c8}, - {0x2397, 0x25cc}, - {0x2399, 0x25d0}, - {0x23ab, 0x25e6}, - {0x23ca, 0x2607}, - {0x23cc, 0x260a}, - {0x2402, 0x2641}, - {0x2403, 0x2643}, - {0x2c41, 0x2e82}, - {0x2c43, 0x2e85}, - {0x2c46, 0x2e89}, - {0x2c48, 0x2e8d}, - {0x2c52, 0x2e98}, - {0x2c61, 0x2ea8}, - {0x2c63, 0x2eab}, - {0x2c66, 0x2eaf}, - {0x2c6a, 0x2eb4}, - {0x2c6c, 0x2eb8}, - {0x2c6f, 0x2ebc}, - {0x2c7d, 0x2ecb}, - {0x2da2, 0x2ffc}, - {0x2da6, 0x3004}, - {0x2da7, 0x3018}, - {0x2dac, 0x301f}, - {0x2dae, 0x302a}, - {0x2dc2, 0x303f}, - {0x2dc4, 0x3094}, - {0x2dcb, 0x309f}, - {0x2dcd, 0x30f7}, - {0x2dd2, 0x30ff}, - {0x2dd8, 0x312a}, - {0x2ece, 0x322a}, - {0x2ed5, 0x3232}, - {0x2f46, 0x32a4}, - {0x3030, 0x3390}, - {0x303c, 0x339f}, - {0x303e, 0x33a2}, - {0x3060, 0x33c5}, - {0x3069, 0x33cf}, - {0x306b, 0x33d3}, - {0x306d, 0x33d6}, - {0x30de, 0x3448}, - {0x3109, 0x3474}, - {0x3233, 0x359f}, - {0x32a2, 0x360f}, - {0x32ad, 0x361b}, - {0x35aa, 0x3919}, - {0x35ff, 0x396f}, - {0x365f, 0x39d1}, - {0x366d, 0x39e0}, - {0x3700, 0x3a74}, - {0x37da, 0x3b4f}, - {0x38f9, 0x3c6f}, - {0x396a, 0x3ce1}, - {0x3cdf, 0x4057}, - {0x3de7, 0x4160}, - {0x3fbe, 0x4338}, - {0x4032, 0x43ad}, - {0x4036, 0x43b2}, - {0x4061, 0x43de}, - {0x4159, 0x44d7}, - {0x42ce, 0x464d}, - {0x42e2, 0x4662}, - {0x43a3, 0x4724}, - {0x43a8, 0x472a}, - {0x43fa, 0x477d}, - {0x440a, 0x478e}, - {0x45c3, 0x4948}, - {0x45f5, 0x497b}, - {0x45f7, 0x497e}, - {0x45fb, 0x4984}, - {0x45fc, 0x4987}, - {0x4610, 0x499c}, - {0x4613, 0x49a0}, - {0x4629, 0x49b8}, - {0x48e8, 0x4c78}, - {0x490f, 0x4ca4}, - {0x497e, 0x4d1a}, - {0x4a12, 0x4daf}, - {0x4a63, 0x9fa6}, - {0x82bd, 0xe76c}, - {0x82be, 0xe7c8}, - {0x82bf, 0xe7e7}, - {0x82cc, 0xe815}, - {0x82cd, 0xe819}, - {0x82d2, 0xe81f}, - {0x82d9, 0xe827}, - {0x82dd, 0xe82d}, - {0x82e1, 0xe833}, - {0x82e9, 0xe83c}, - {0x82f0, 0xe844}, - {0x8300, 0xe856}, - {0x830e, 0xe865}, - {0x93d5, 0xf92d}, - {0x9421, 0xf97a}, - {0x943c, 0xf996}, - {0x948d, 0xf9e8}, - {0x9496, 0xf9f2}, - {0x94b0, 0xfa10}, - {0x94b1, 0xfa12}, - {0x94b2, 0xfa15}, - {0x94b5, 0xfa19}, - {0x94bb, 0xfa22}, - {0x94bc, 0xfa25}, - {0x94be, 0xfa2a}, - {0x98c4, 0xfe32}, - {0x98c5, 0xfe45}, - {0x98c9, 0xfe53}, - {0x98ca, 0xfe58}, - {0x98cb, 0xfe67}, - {0x98cc, 0xfe6c}, - {0x9961, 0xff5f}, - {0x99e2, 0xffe6}, -} - -// decode is the decoding table from GBK code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt -var decode = [...]uint16{ - 0: 0x4E02, - 1: 0x4E04, - 2: 0x4E05, - 3: 0x4E06, - 4: 0x4E0F, - 5: 0x4E12, - 6: 0x4E17, - 7: 0x4E1F, - 8: 0x4E20, - 9: 0x4E21, - 10: 0x4E23, - 11: 0x4E26, - 12: 0x4E29, - 13: 0x4E2E, - 14: 0x4E2F, - 15: 0x4E31, - 16: 0x4E33, - 17: 0x4E35, - 18: 0x4E37, - 19: 0x4E3C, - 20: 0x4E40, - 21: 0x4E41, - 22: 0x4E42, - 23: 0x4E44, - 24: 0x4E46, - 25: 0x4E4A, - 26: 0x4E51, - 27: 0x4E55, - 28: 0x4E57, - 29: 0x4E5A, - 30: 0x4E5B, - 31: 0x4E62, - 32: 0x4E63, - 33: 0x4E64, - 34: 0x4E65, - 35: 0x4E67, - 36: 0x4E68, - 37: 0x4E6A, - 38: 0x4E6B, - 39: 0x4E6C, - 40: 0x4E6D, - 41: 0x4E6E, - 42: 0x4E6F, - 43: 0x4E72, - 44: 0x4E74, - 45: 0x4E75, - 46: 0x4E76, - 47: 0x4E77, - 48: 0x4E78, - 49: 0x4E79, - 50: 0x4E7A, - 51: 0x4E7B, - 52: 0x4E7C, - 53: 0x4E7D, - 54: 0x4E7F, - 55: 0x4E80, - 56: 0x4E81, - 57: 0x4E82, - 58: 0x4E83, - 59: 0x4E84, - 60: 0x4E85, - 61: 0x4E87, - 62: 0x4E8A, - 63: 0x4E90, - 64: 0x4E96, - 65: 0x4E97, - 66: 0x4E99, - 67: 0x4E9C, - 68: 0x4E9D, - 69: 0x4E9E, - 70: 0x4EA3, - 71: 0x4EAA, - 72: 0x4EAF, - 73: 0x4EB0, - 74: 0x4EB1, - 75: 0x4EB4, - 76: 0x4EB6, - 77: 0x4EB7, - 78: 0x4EB8, - 79: 0x4EB9, - 80: 0x4EBC, - 81: 0x4EBD, - 82: 0x4EBE, - 83: 0x4EC8, - 84: 0x4ECC, - 85: 0x4ECF, - 86: 0x4ED0, - 87: 0x4ED2, - 88: 0x4EDA, - 89: 0x4EDB, - 90: 0x4EDC, - 91: 0x4EE0, - 92: 0x4EE2, - 93: 0x4EE6, - 94: 0x4EE7, - 95: 0x4EE9, - 96: 0x4EED, - 97: 0x4EEE, - 98: 0x4EEF, - 99: 0x4EF1, - 100: 0x4EF4, - 101: 0x4EF8, - 102: 0x4EF9, - 103: 0x4EFA, - 104: 0x4EFC, - 105: 0x4EFE, - 106: 0x4F00, - 107: 0x4F02, - 108: 0x4F03, - 109: 0x4F04, - 110: 0x4F05, - 111: 0x4F06, - 112: 0x4F07, - 113: 0x4F08, - 114: 0x4F0B, - 115: 0x4F0C, - 116: 0x4F12, - 117: 0x4F13, - 118: 0x4F14, - 119: 0x4F15, - 120: 0x4F16, - 121: 0x4F1C, - 122: 0x4F1D, - 123: 0x4F21, - 124: 0x4F23, - 125: 0x4F28, - 126: 0x4F29, - 127: 0x4F2C, - 128: 0x4F2D, - 129: 0x4F2E, - 130: 0x4F31, - 131: 0x4F33, - 132: 0x4F35, - 133: 0x4F37, - 134: 0x4F39, - 135: 0x4F3B, - 136: 0x4F3E, - 137: 0x4F3F, - 138: 0x4F40, - 139: 0x4F41, - 140: 0x4F42, - 141: 0x4F44, - 142: 0x4F45, - 143: 0x4F47, - 144: 0x4F48, - 145: 0x4F49, - 146: 0x4F4A, - 147: 0x4F4B, - 148: 0x4F4C, - 149: 0x4F52, - 150: 0x4F54, - 151: 0x4F56, - 152: 0x4F61, - 153: 0x4F62, - 154: 0x4F66, - 155: 0x4F68, - 156: 0x4F6A, - 157: 0x4F6B, - 158: 0x4F6D, - 159: 0x4F6E, - 160: 0x4F71, - 161: 0x4F72, - 162: 0x4F75, - 163: 0x4F77, - 164: 0x4F78, - 165: 0x4F79, - 166: 0x4F7A, - 167: 0x4F7D, - 168: 0x4F80, - 169: 0x4F81, - 170: 0x4F82, - 171: 0x4F85, - 172: 0x4F86, - 173: 0x4F87, - 174: 0x4F8A, - 175: 0x4F8C, - 176: 0x4F8E, - 177: 0x4F90, - 178: 0x4F92, - 179: 0x4F93, - 180: 0x4F95, - 181: 0x4F96, - 182: 0x4F98, - 183: 0x4F99, - 184: 0x4F9A, - 185: 0x4F9C, - 186: 0x4F9E, - 187: 0x4F9F, - 188: 0x4FA1, - 189: 0x4FA2, - 190: 0x4FA4, - 191: 0x4FAB, - 192: 0x4FAD, - 193: 0x4FB0, - 194: 0x4FB1, - 195: 0x4FB2, - 196: 0x4FB3, - 197: 0x4FB4, - 198: 0x4FB6, - 199: 0x4FB7, - 200: 0x4FB8, - 201: 0x4FB9, - 202: 0x4FBA, - 203: 0x4FBB, - 204: 0x4FBC, - 205: 0x4FBD, - 206: 0x4FBE, - 207: 0x4FC0, - 208: 0x4FC1, - 209: 0x4FC2, - 210: 0x4FC6, - 211: 0x4FC7, - 212: 0x4FC8, - 213: 0x4FC9, - 214: 0x4FCB, - 215: 0x4FCC, - 216: 0x4FCD, - 217: 0x4FD2, - 218: 0x4FD3, - 219: 0x4FD4, - 220: 0x4FD5, - 221: 0x4FD6, - 222: 0x4FD9, - 223: 0x4FDB, - 224: 0x4FE0, - 225: 0x4FE2, - 226: 0x4FE4, - 227: 0x4FE5, - 228: 0x4FE7, - 229: 0x4FEB, - 230: 0x4FEC, - 231: 0x4FF0, - 232: 0x4FF2, - 233: 0x4FF4, - 234: 0x4FF5, - 235: 0x4FF6, - 236: 0x4FF7, - 237: 0x4FF9, - 238: 0x4FFB, - 239: 0x4FFC, - 240: 0x4FFD, - 241: 0x4FFF, - 242: 0x5000, - 243: 0x5001, - 244: 0x5002, - 245: 0x5003, - 246: 0x5004, - 247: 0x5005, - 248: 0x5006, - 249: 0x5007, - 250: 0x5008, - 251: 0x5009, - 252: 0x500A, - 253: 0x500B, - 254: 0x500E, - 255: 0x5010, - 256: 0x5011, - 257: 0x5013, - 258: 0x5015, - 259: 0x5016, - 260: 0x5017, - 261: 0x501B, - 262: 0x501D, - 263: 0x501E, - 264: 0x5020, - 265: 0x5022, - 266: 0x5023, - 267: 0x5024, - 268: 0x5027, - 269: 0x502B, - 270: 0x502F, - 271: 0x5030, - 272: 0x5031, - 273: 0x5032, - 274: 0x5033, - 275: 0x5034, - 276: 0x5035, - 277: 0x5036, - 278: 0x5037, - 279: 0x5038, - 280: 0x5039, - 281: 0x503B, - 282: 0x503D, - 283: 0x503F, - 284: 0x5040, - 285: 0x5041, - 286: 0x5042, - 287: 0x5044, - 288: 0x5045, - 289: 0x5046, - 290: 0x5049, - 291: 0x504A, - 292: 0x504B, - 293: 0x504D, - 294: 0x5050, - 295: 0x5051, - 296: 0x5052, - 297: 0x5053, - 298: 0x5054, - 299: 0x5056, - 300: 0x5057, - 301: 0x5058, - 302: 0x5059, - 303: 0x505B, - 304: 0x505D, - 305: 0x505E, - 306: 0x505F, - 307: 0x5060, - 308: 0x5061, - 309: 0x5062, - 310: 0x5063, - 311: 0x5064, - 312: 0x5066, - 313: 0x5067, - 314: 0x5068, - 315: 0x5069, - 316: 0x506A, - 317: 0x506B, - 318: 0x506D, - 319: 0x506E, - 320: 0x506F, - 321: 0x5070, - 322: 0x5071, - 323: 0x5072, - 324: 0x5073, - 325: 0x5074, - 326: 0x5075, - 327: 0x5078, - 328: 0x5079, - 329: 0x507A, - 330: 0x507C, - 331: 0x507D, - 332: 0x5081, - 333: 0x5082, - 334: 0x5083, - 335: 0x5084, - 336: 0x5086, - 337: 0x5087, - 338: 0x5089, - 339: 0x508A, - 340: 0x508B, - 341: 0x508C, - 342: 0x508E, - 343: 0x508F, - 344: 0x5090, - 345: 0x5091, - 346: 0x5092, - 347: 0x5093, - 348: 0x5094, - 349: 0x5095, - 350: 0x5096, - 351: 0x5097, - 352: 0x5098, - 353: 0x5099, - 354: 0x509A, - 355: 0x509B, - 356: 0x509C, - 357: 0x509D, - 358: 0x509E, - 359: 0x509F, - 360: 0x50A0, - 361: 0x50A1, - 362: 0x50A2, - 363: 0x50A4, - 364: 0x50A6, - 365: 0x50AA, - 366: 0x50AB, - 367: 0x50AD, - 368: 0x50AE, - 369: 0x50AF, - 370: 0x50B0, - 371: 0x50B1, - 372: 0x50B3, - 373: 0x50B4, - 374: 0x50B5, - 375: 0x50B6, - 376: 0x50B7, - 377: 0x50B8, - 378: 0x50B9, - 379: 0x50BC, - 380: 0x50BD, - 381: 0x50BE, - 382: 0x50BF, - 383: 0x50C0, - 384: 0x50C1, - 385: 0x50C2, - 386: 0x50C3, - 387: 0x50C4, - 388: 0x50C5, - 389: 0x50C6, - 390: 0x50C7, - 391: 0x50C8, - 392: 0x50C9, - 393: 0x50CA, - 394: 0x50CB, - 395: 0x50CC, - 396: 0x50CD, - 397: 0x50CE, - 398: 0x50D0, - 399: 0x50D1, - 400: 0x50D2, - 401: 0x50D3, - 402: 0x50D4, - 403: 0x50D5, - 404: 0x50D7, - 405: 0x50D8, - 406: 0x50D9, - 407: 0x50DB, - 408: 0x50DC, - 409: 0x50DD, - 410: 0x50DE, - 411: 0x50DF, - 412: 0x50E0, - 413: 0x50E1, - 414: 0x50E2, - 415: 0x50E3, - 416: 0x50E4, - 417: 0x50E5, - 418: 0x50E8, - 419: 0x50E9, - 420: 0x50EA, - 421: 0x50EB, - 422: 0x50EF, - 423: 0x50F0, - 424: 0x50F1, - 425: 0x50F2, - 426: 0x50F4, - 427: 0x50F6, - 428: 0x50F7, - 429: 0x50F8, - 430: 0x50F9, - 431: 0x50FA, - 432: 0x50FC, - 433: 0x50FD, - 434: 0x50FE, - 435: 0x50FF, - 436: 0x5100, - 437: 0x5101, - 438: 0x5102, - 439: 0x5103, - 440: 0x5104, - 441: 0x5105, - 442: 0x5108, - 443: 0x5109, - 444: 0x510A, - 445: 0x510C, - 446: 0x510D, - 447: 0x510E, - 448: 0x510F, - 449: 0x5110, - 450: 0x5111, - 451: 0x5113, - 452: 0x5114, - 453: 0x5115, - 454: 0x5116, - 455: 0x5117, - 456: 0x5118, - 457: 0x5119, - 458: 0x511A, - 459: 0x511B, - 460: 0x511C, - 461: 0x511D, - 462: 0x511E, - 463: 0x511F, - 464: 0x5120, - 465: 0x5122, - 466: 0x5123, - 467: 0x5124, - 468: 0x5125, - 469: 0x5126, - 470: 0x5127, - 471: 0x5128, - 472: 0x5129, - 473: 0x512A, - 474: 0x512B, - 475: 0x512C, - 476: 0x512D, - 477: 0x512E, - 478: 0x512F, - 479: 0x5130, - 480: 0x5131, - 481: 0x5132, - 482: 0x5133, - 483: 0x5134, - 484: 0x5135, - 485: 0x5136, - 486: 0x5137, - 487: 0x5138, - 488: 0x5139, - 489: 0x513A, - 490: 0x513B, - 491: 0x513C, - 492: 0x513D, - 493: 0x513E, - 494: 0x5142, - 495: 0x5147, - 496: 0x514A, - 497: 0x514C, - 498: 0x514E, - 499: 0x514F, - 500: 0x5150, - 501: 0x5152, - 502: 0x5153, - 503: 0x5157, - 504: 0x5158, - 505: 0x5159, - 506: 0x515B, - 507: 0x515D, - 508: 0x515E, - 509: 0x515F, - 510: 0x5160, - 511: 0x5161, - 512: 0x5163, - 513: 0x5164, - 514: 0x5166, - 515: 0x5167, - 516: 0x5169, - 517: 0x516A, - 518: 0x516F, - 519: 0x5172, - 520: 0x517A, - 521: 0x517E, - 522: 0x517F, - 523: 0x5183, - 524: 0x5184, - 525: 0x5186, - 526: 0x5187, - 527: 0x518A, - 528: 0x518B, - 529: 0x518E, - 530: 0x518F, - 531: 0x5190, - 532: 0x5191, - 533: 0x5193, - 534: 0x5194, - 535: 0x5198, - 536: 0x519A, - 537: 0x519D, - 538: 0x519E, - 539: 0x519F, - 540: 0x51A1, - 541: 0x51A3, - 542: 0x51A6, - 543: 0x51A7, - 544: 0x51A8, - 545: 0x51A9, - 546: 0x51AA, - 547: 0x51AD, - 548: 0x51AE, - 549: 0x51B4, - 550: 0x51B8, - 551: 0x51B9, - 552: 0x51BA, - 553: 0x51BE, - 554: 0x51BF, - 555: 0x51C1, - 556: 0x51C2, - 557: 0x51C3, - 558: 0x51C5, - 559: 0x51C8, - 560: 0x51CA, - 561: 0x51CD, - 562: 0x51CE, - 563: 0x51D0, - 564: 0x51D2, - 565: 0x51D3, - 566: 0x51D4, - 567: 0x51D5, - 568: 0x51D6, - 569: 0x51D7, - 570: 0x51D8, - 571: 0x51D9, - 572: 0x51DA, - 573: 0x51DC, - 574: 0x51DE, - 575: 0x51DF, - 576: 0x51E2, - 577: 0x51E3, - 578: 0x51E5, - 579: 0x51E6, - 580: 0x51E7, - 581: 0x51E8, - 582: 0x51E9, - 583: 0x51EA, - 584: 0x51EC, - 585: 0x51EE, - 586: 0x51F1, - 587: 0x51F2, - 588: 0x51F4, - 589: 0x51F7, - 590: 0x51FE, - 591: 0x5204, - 592: 0x5205, - 593: 0x5209, - 594: 0x520B, - 595: 0x520C, - 596: 0x520F, - 597: 0x5210, - 598: 0x5213, - 599: 0x5214, - 600: 0x5215, - 601: 0x521C, - 602: 0x521E, - 603: 0x521F, - 604: 0x5221, - 605: 0x5222, - 606: 0x5223, - 607: 0x5225, - 608: 0x5226, - 609: 0x5227, - 610: 0x522A, - 611: 0x522C, - 612: 0x522F, - 613: 0x5231, - 614: 0x5232, - 615: 0x5234, - 616: 0x5235, - 617: 0x523C, - 618: 0x523E, - 619: 0x5244, - 620: 0x5245, - 621: 0x5246, - 622: 0x5247, - 623: 0x5248, - 624: 0x5249, - 625: 0x524B, - 626: 0x524E, - 627: 0x524F, - 628: 0x5252, - 629: 0x5253, - 630: 0x5255, - 631: 0x5257, - 632: 0x5258, - 633: 0x5259, - 634: 0x525A, - 635: 0x525B, - 636: 0x525D, - 637: 0x525F, - 638: 0x5260, - 639: 0x5262, - 640: 0x5263, - 641: 0x5264, - 642: 0x5266, - 643: 0x5268, - 644: 0x526B, - 645: 0x526C, - 646: 0x526D, - 647: 0x526E, - 648: 0x5270, - 649: 0x5271, - 650: 0x5273, - 651: 0x5274, - 652: 0x5275, - 653: 0x5276, - 654: 0x5277, - 655: 0x5278, - 656: 0x5279, - 657: 0x527A, - 658: 0x527B, - 659: 0x527C, - 660: 0x527E, - 661: 0x5280, - 662: 0x5283, - 663: 0x5284, - 664: 0x5285, - 665: 0x5286, - 666: 0x5287, - 667: 0x5289, - 668: 0x528A, - 669: 0x528B, - 670: 0x528C, - 671: 0x528D, - 672: 0x528E, - 673: 0x528F, - 674: 0x5291, - 675: 0x5292, - 676: 0x5294, - 677: 0x5295, - 678: 0x5296, - 679: 0x5297, - 680: 0x5298, - 681: 0x5299, - 682: 0x529A, - 683: 0x529C, - 684: 0x52A4, - 685: 0x52A5, - 686: 0x52A6, - 687: 0x52A7, - 688: 0x52AE, - 689: 0x52AF, - 690: 0x52B0, - 691: 0x52B4, - 692: 0x52B5, - 693: 0x52B6, - 694: 0x52B7, - 695: 0x52B8, - 696: 0x52B9, - 697: 0x52BA, - 698: 0x52BB, - 699: 0x52BC, - 700: 0x52BD, - 701: 0x52C0, - 702: 0x52C1, - 703: 0x52C2, - 704: 0x52C4, - 705: 0x52C5, - 706: 0x52C6, - 707: 0x52C8, - 708: 0x52CA, - 709: 0x52CC, - 710: 0x52CD, - 711: 0x52CE, - 712: 0x52CF, - 713: 0x52D1, - 714: 0x52D3, - 715: 0x52D4, - 716: 0x52D5, - 717: 0x52D7, - 718: 0x52D9, - 719: 0x52DA, - 720: 0x52DB, - 721: 0x52DC, - 722: 0x52DD, - 723: 0x52DE, - 724: 0x52E0, - 725: 0x52E1, - 726: 0x52E2, - 727: 0x52E3, - 728: 0x52E5, - 729: 0x52E6, - 730: 0x52E7, - 731: 0x52E8, - 732: 0x52E9, - 733: 0x52EA, - 734: 0x52EB, - 735: 0x52EC, - 736: 0x52ED, - 737: 0x52EE, - 738: 0x52EF, - 739: 0x52F1, - 740: 0x52F2, - 741: 0x52F3, - 742: 0x52F4, - 743: 0x52F5, - 744: 0x52F6, - 745: 0x52F7, - 746: 0x52F8, - 747: 0x52FB, - 748: 0x52FC, - 749: 0x52FD, - 750: 0x5301, - 751: 0x5302, - 752: 0x5303, - 753: 0x5304, - 754: 0x5307, - 755: 0x5309, - 756: 0x530A, - 757: 0x530B, - 758: 0x530C, - 759: 0x530E, - 760: 0x5311, - 761: 0x5312, - 762: 0x5313, - 763: 0x5314, - 764: 0x5318, - 765: 0x531B, - 766: 0x531C, - 767: 0x531E, - 768: 0x531F, - 769: 0x5322, - 770: 0x5324, - 771: 0x5325, - 772: 0x5327, - 773: 0x5328, - 774: 0x5329, - 775: 0x532B, - 776: 0x532C, - 777: 0x532D, - 778: 0x532F, - 779: 0x5330, - 780: 0x5331, - 781: 0x5332, - 782: 0x5333, - 783: 0x5334, - 784: 0x5335, - 785: 0x5336, - 786: 0x5337, - 787: 0x5338, - 788: 0x533C, - 789: 0x533D, - 790: 0x5340, - 791: 0x5342, - 792: 0x5344, - 793: 0x5346, - 794: 0x534B, - 795: 0x534C, - 796: 0x534D, - 797: 0x5350, - 798: 0x5354, - 799: 0x5358, - 800: 0x5359, - 801: 0x535B, - 802: 0x535D, - 803: 0x5365, - 804: 0x5368, - 805: 0x536A, - 806: 0x536C, - 807: 0x536D, - 808: 0x5372, - 809: 0x5376, - 810: 0x5379, - 811: 0x537B, - 812: 0x537C, - 813: 0x537D, - 814: 0x537E, - 815: 0x5380, - 816: 0x5381, - 817: 0x5383, - 818: 0x5387, - 819: 0x5388, - 820: 0x538A, - 821: 0x538E, - 822: 0x538F, - 823: 0x5390, - 824: 0x5391, - 825: 0x5392, - 826: 0x5393, - 827: 0x5394, - 828: 0x5396, - 829: 0x5397, - 830: 0x5399, - 831: 0x539B, - 832: 0x539C, - 833: 0x539E, - 834: 0x53A0, - 835: 0x53A1, - 836: 0x53A4, - 837: 0x53A7, - 838: 0x53AA, - 839: 0x53AB, - 840: 0x53AC, - 841: 0x53AD, - 842: 0x53AF, - 843: 0x53B0, - 844: 0x53B1, - 845: 0x53B2, - 846: 0x53B3, - 847: 0x53B4, - 848: 0x53B5, - 849: 0x53B7, - 850: 0x53B8, - 851: 0x53B9, - 852: 0x53BA, - 853: 0x53BC, - 854: 0x53BD, - 855: 0x53BE, - 856: 0x53C0, - 857: 0x53C3, - 858: 0x53C4, - 859: 0x53C5, - 860: 0x53C6, - 861: 0x53C7, - 862: 0x53CE, - 863: 0x53CF, - 864: 0x53D0, - 865: 0x53D2, - 866: 0x53D3, - 867: 0x53D5, - 868: 0x53DA, - 869: 0x53DC, - 870: 0x53DD, - 871: 0x53DE, - 872: 0x53E1, - 873: 0x53E2, - 874: 0x53E7, - 875: 0x53F4, - 876: 0x53FA, - 877: 0x53FE, - 878: 0x53FF, - 879: 0x5400, - 880: 0x5402, - 881: 0x5405, - 882: 0x5407, - 883: 0x540B, - 884: 0x5414, - 885: 0x5418, - 886: 0x5419, - 887: 0x541A, - 888: 0x541C, - 889: 0x5422, - 890: 0x5424, - 891: 0x5425, - 892: 0x542A, - 893: 0x5430, - 894: 0x5433, - 895: 0x5436, - 896: 0x5437, - 897: 0x543A, - 898: 0x543D, - 899: 0x543F, - 900: 0x5441, - 901: 0x5442, - 902: 0x5444, - 903: 0x5445, - 904: 0x5447, - 905: 0x5449, - 906: 0x544C, - 907: 0x544D, - 908: 0x544E, - 909: 0x544F, - 910: 0x5451, - 911: 0x545A, - 912: 0x545D, - 913: 0x545E, - 914: 0x545F, - 915: 0x5460, - 916: 0x5461, - 917: 0x5463, - 918: 0x5465, - 919: 0x5467, - 920: 0x5469, - 921: 0x546A, - 922: 0x546B, - 923: 0x546C, - 924: 0x546D, - 925: 0x546E, - 926: 0x546F, - 927: 0x5470, - 928: 0x5474, - 929: 0x5479, - 930: 0x547A, - 931: 0x547E, - 932: 0x547F, - 933: 0x5481, - 934: 0x5483, - 935: 0x5485, - 936: 0x5487, - 937: 0x5488, - 938: 0x5489, - 939: 0x548A, - 940: 0x548D, - 941: 0x5491, - 942: 0x5493, - 943: 0x5497, - 944: 0x5498, - 945: 0x549C, - 946: 0x549E, - 947: 0x549F, - 948: 0x54A0, - 949: 0x54A1, - 950: 0x54A2, - 951: 0x54A5, - 952: 0x54AE, - 953: 0x54B0, - 954: 0x54B2, - 955: 0x54B5, - 956: 0x54B6, - 957: 0x54B7, - 958: 0x54B9, - 959: 0x54BA, - 960: 0x54BC, - 961: 0x54BE, - 962: 0x54C3, - 963: 0x54C5, - 964: 0x54CA, - 965: 0x54CB, - 966: 0x54D6, - 967: 0x54D8, - 968: 0x54DB, - 969: 0x54E0, - 970: 0x54E1, - 971: 0x54E2, - 972: 0x54E3, - 973: 0x54E4, - 974: 0x54EB, - 975: 0x54EC, - 976: 0x54EF, - 977: 0x54F0, - 978: 0x54F1, - 979: 0x54F4, - 980: 0x54F5, - 981: 0x54F6, - 982: 0x54F7, - 983: 0x54F8, - 984: 0x54F9, - 985: 0x54FB, - 986: 0x54FE, - 987: 0x5500, - 988: 0x5502, - 989: 0x5503, - 990: 0x5504, - 991: 0x5505, - 992: 0x5508, - 993: 0x550A, - 994: 0x550B, - 995: 0x550C, - 996: 0x550D, - 997: 0x550E, - 998: 0x5512, - 999: 0x5513, - 1000: 0x5515, - 1001: 0x5516, - 1002: 0x5517, - 1003: 0x5518, - 1004: 0x5519, - 1005: 0x551A, - 1006: 0x551C, - 1007: 0x551D, - 1008: 0x551E, - 1009: 0x551F, - 1010: 0x5521, - 1011: 0x5525, - 1012: 0x5526, - 1013: 0x5528, - 1014: 0x5529, - 1015: 0x552B, - 1016: 0x552D, - 1017: 0x5532, - 1018: 0x5534, - 1019: 0x5535, - 1020: 0x5536, - 1021: 0x5538, - 1022: 0x5539, - 1023: 0x553A, - 1024: 0x553B, - 1025: 0x553D, - 1026: 0x5540, - 1027: 0x5542, - 1028: 0x5545, - 1029: 0x5547, - 1030: 0x5548, - 1031: 0x554B, - 1032: 0x554C, - 1033: 0x554D, - 1034: 0x554E, - 1035: 0x554F, - 1036: 0x5551, - 1037: 0x5552, - 1038: 0x5553, - 1039: 0x5554, - 1040: 0x5557, - 1041: 0x5558, - 1042: 0x5559, - 1043: 0x555A, - 1044: 0x555B, - 1045: 0x555D, - 1046: 0x555E, - 1047: 0x555F, - 1048: 0x5560, - 1049: 0x5562, - 1050: 0x5563, - 1051: 0x5568, - 1052: 0x5569, - 1053: 0x556B, - 1054: 0x556F, - 1055: 0x5570, - 1056: 0x5571, - 1057: 0x5572, - 1058: 0x5573, - 1059: 0x5574, - 1060: 0x5579, - 1061: 0x557A, - 1062: 0x557D, - 1063: 0x557F, - 1064: 0x5585, - 1065: 0x5586, - 1066: 0x558C, - 1067: 0x558D, - 1068: 0x558E, - 1069: 0x5590, - 1070: 0x5592, - 1071: 0x5593, - 1072: 0x5595, - 1073: 0x5596, - 1074: 0x5597, - 1075: 0x559A, - 1076: 0x559B, - 1077: 0x559E, - 1078: 0x55A0, - 1079: 0x55A1, - 1080: 0x55A2, - 1081: 0x55A3, - 1082: 0x55A4, - 1083: 0x55A5, - 1084: 0x55A6, - 1085: 0x55A8, - 1086: 0x55A9, - 1087: 0x55AA, - 1088: 0x55AB, - 1089: 0x55AC, - 1090: 0x55AD, - 1091: 0x55AE, - 1092: 0x55AF, - 1093: 0x55B0, - 1094: 0x55B2, - 1095: 0x55B4, - 1096: 0x55B6, - 1097: 0x55B8, - 1098: 0x55BA, - 1099: 0x55BC, - 1100: 0x55BF, - 1101: 0x55C0, - 1102: 0x55C1, - 1103: 0x55C2, - 1104: 0x55C3, - 1105: 0x55C6, - 1106: 0x55C7, - 1107: 0x55C8, - 1108: 0x55CA, - 1109: 0x55CB, - 1110: 0x55CE, - 1111: 0x55CF, - 1112: 0x55D0, - 1113: 0x55D5, - 1114: 0x55D7, - 1115: 0x55D8, - 1116: 0x55D9, - 1117: 0x55DA, - 1118: 0x55DB, - 1119: 0x55DE, - 1120: 0x55E0, - 1121: 0x55E2, - 1122: 0x55E7, - 1123: 0x55E9, - 1124: 0x55ED, - 1125: 0x55EE, - 1126: 0x55F0, - 1127: 0x55F1, - 1128: 0x55F4, - 1129: 0x55F6, - 1130: 0x55F8, - 1131: 0x55F9, - 1132: 0x55FA, - 1133: 0x55FB, - 1134: 0x55FC, - 1135: 0x55FF, - 1136: 0x5602, - 1137: 0x5603, - 1138: 0x5604, - 1139: 0x5605, - 1140: 0x5606, - 1141: 0x5607, - 1142: 0x560A, - 1143: 0x560B, - 1144: 0x560D, - 1145: 0x5610, - 1146: 0x5611, - 1147: 0x5612, - 1148: 0x5613, - 1149: 0x5614, - 1150: 0x5615, - 1151: 0x5616, - 1152: 0x5617, - 1153: 0x5619, - 1154: 0x561A, - 1155: 0x561C, - 1156: 0x561D, - 1157: 0x5620, - 1158: 0x5621, - 1159: 0x5622, - 1160: 0x5625, - 1161: 0x5626, - 1162: 0x5628, - 1163: 0x5629, - 1164: 0x562A, - 1165: 0x562B, - 1166: 0x562E, - 1167: 0x562F, - 1168: 0x5630, - 1169: 0x5633, - 1170: 0x5635, - 1171: 0x5637, - 1172: 0x5638, - 1173: 0x563A, - 1174: 0x563C, - 1175: 0x563D, - 1176: 0x563E, - 1177: 0x5640, - 1178: 0x5641, - 1179: 0x5642, - 1180: 0x5643, - 1181: 0x5644, - 1182: 0x5645, - 1183: 0x5646, - 1184: 0x5647, - 1185: 0x5648, - 1186: 0x5649, - 1187: 0x564A, - 1188: 0x564B, - 1189: 0x564F, - 1190: 0x5650, - 1191: 0x5651, - 1192: 0x5652, - 1193: 0x5653, - 1194: 0x5655, - 1195: 0x5656, - 1196: 0x565A, - 1197: 0x565B, - 1198: 0x565D, - 1199: 0x565E, - 1200: 0x565F, - 1201: 0x5660, - 1202: 0x5661, - 1203: 0x5663, - 1204: 0x5665, - 1205: 0x5666, - 1206: 0x5667, - 1207: 0x566D, - 1208: 0x566E, - 1209: 0x566F, - 1210: 0x5670, - 1211: 0x5672, - 1212: 0x5673, - 1213: 0x5674, - 1214: 0x5675, - 1215: 0x5677, - 1216: 0x5678, - 1217: 0x5679, - 1218: 0x567A, - 1219: 0x567D, - 1220: 0x567E, - 1221: 0x567F, - 1222: 0x5680, - 1223: 0x5681, - 1224: 0x5682, - 1225: 0x5683, - 1226: 0x5684, - 1227: 0x5687, - 1228: 0x5688, - 1229: 0x5689, - 1230: 0x568A, - 1231: 0x568B, - 1232: 0x568C, - 1233: 0x568D, - 1234: 0x5690, - 1235: 0x5691, - 1236: 0x5692, - 1237: 0x5694, - 1238: 0x5695, - 1239: 0x5696, - 1240: 0x5697, - 1241: 0x5698, - 1242: 0x5699, - 1243: 0x569A, - 1244: 0x569B, - 1245: 0x569C, - 1246: 0x569D, - 1247: 0x569E, - 1248: 0x569F, - 1249: 0x56A0, - 1250: 0x56A1, - 1251: 0x56A2, - 1252: 0x56A4, - 1253: 0x56A5, - 1254: 0x56A6, - 1255: 0x56A7, - 1256: 0x56A8, - 1257: 0x56A9, - 1258: 0x56AA, - 1259: 0x56AB, - 1260: 0x56AC, - 1261: 0x56AD, - 1262: 0x56AE, - 1263: 0x56B0, - 1264: 0x56B1, - 1265: 0x56B2, - 1266: 0x56B3, - 1267: 0x56B4, - 1268: 0x56B5, - 1269: 0x56B6, - 1270: 0x56B8, - 1271: 0x56B9, - 1272: 0x56BA, - 1273: 0x56BB, - 1274: 0x56BD, - 1275: 0x56BE, - 1276: 0x56BF, - 1277: 0x56C0, - 1278: 0x56C1, - 1279: 0x56C2, - 1280: 0x56C3, - 1281: 0x56C4, - 1282: 0x56C5, - 1283: 0x56C6, - 1284: 0x56C7, - 1285: 0x56C8, - 1286: 0x56C9, - 1287: 0x56CB, - 1288: 0x56CC, - 1289: 0x56CD, - 1290: 0x56CE, - 1291: 0x56CF, - 1292: 0x56D0, - 1293: 0x56D1, - 1294: 0x56D2, - 1295: 0x56D3, - 1296: 0x56D5, - 1297: 0x56D6, - 1298: 0x56D8, - 1299: 0x56D9, - 1300: 0x56DC, - 1301: 0x56E3, - 1302: 0x56E5, - 1303: 0x56E6, - 1304: 0x56E7, - 1305: 0x56E8, - 1306: 0x56E9, - 1307: 0x56EA, - 1308: 0x56EC, - 1309: 0x56EE, - 1310: 0x56EF, - 1311: 0x56F2, - 1312: 0x56F3, - 1313: 0x56F6, - 1314: 0x56F7, - 1315: 0x56F8, - 1316: 0x56FB, - 1317: 0x56FC, - 1318: 0x5700, - 1319: 0x5701, - 1320: 0x5702, - 1321: 0x5705, - 1322: 0x5707, - 1323: 0x570B, - 1324: 0x570C, - 1325: 0x570D, - 1326: 0x570E, - 1327: 0x570F, - 1328: 0x5710, - 1329: 0x5711, - 1330: 0x5712, - 1331: 0x5713, - 1332: 0x5714, - 1333: 0x5715, - 1334: 0x5716, - 1335: 0x5717, - 1336: 0x5718, - 1337: 0x5719, - 1338: 0x571A, - 1339: 0x571B, - 1340: 0x571D, - 1341: 0x571E, - 1342: 0x5720, - 1343: 0x5721, - 1344: 0x5722, - 1345: 0x5724, - 1346: 0x5725, - 1347: 0x5726, - 1348: 0x5727, - 1349: 0x572B, - 1350: 0x5731, - 1351: 0x5732, - 1352: 0x5734, - 1353: 0x5735, - 1354: 0x5736, - 1355: 0x5737, - 1356: 0x5738, - 1357: 0x573C, - 1358: 0x573D, - 1359: 0x573F, - 1360: 0x5741, - 1361: 0x5743, - 1362: 0x5744, - 1363: 0x5745, - 1364: 0x5746, - 1365: 0x5748, - 1366: 0x5749, - 1367: 0x574B, - 1368: 0x5752, - 1369: 0x5753, - 1370: 0x5754, - 1371: 0x5755, - 1372: 0x5756, - 1373: 0x5758, - 1374: 0x5759, - 1375: 0x5762, - 1376: 0x5763, - 1377: 0x5765, - 1378: 0x5767, - 1379: 0x576C, - 1380: 0x576E, - 1381: 0x5770, - 1382: 0x5771, - 1383: 0x5772, - 1384: 0x5774, - 1385: 0x5775, - 1386: 0x5778, - 1387: 0x5779, - 1388: 0x577A, - 1389: 0x577D, - 1390: 0x577E, - 1391: 0x577F, - 1392: 0x5780, - 1393: 0x5781, - 1394: 0x5787, - 1395: 0x5788, - 1396: 0x5789, - 1397: 0x578A, - 1398: 0x578D, - 1399: 0x578E, - 1400: 0x578F, - 1401: 0x5790, - 1402: 0x5791, - 1403: 0x5794, - 1404: 0x5795, - 1405: 0x5796, - 1406: 0x5797, - 1407: 0x5798, - 1408: 0x5799, - 1409: 0x579A, - 1410: 0x579C, - 1411: 0x579D, - 1412: 0x579E, - 1413: 0x579F, - 1414: 0x57A5, - 1415: 0x57A8, - 1416: 0x57AA, - 1417: 0x57AC, - 1418: 0x57AF, - 1419: 0x57B0, - 1420: 0x57B1, - 1421: 0x57B3, - 1422: 0x57B5, - 1423: 0x57B6, - 1424: 0x57B7, - 1425: 0x57B9, - 1426: 0x57BA, - 1427: 0x57BB, - 1428: 0x57BC, - 1429: 0x57BD, - 1430: 0x57BE, - 1431: 0x57BF, - 1432: 0x57C0, - 1433: 0x57C1, - 1434: 0x57C4, - 1435: 0x57C5, - 1436: 0x57C6, - 1437: 0x57C7, - 1438: 0x57C8, - 1439: 0x57C9, - 1440: 0x57CA, - 1441: 0x57CC, - 1442: 0x57CD, - 1443: 0x57D0, - 1444: 0x57D1, - 1445: 0x57D3, - 1446: 0x57D6, - 1447: 0x57D7, - 1448: 0x57DB, - 1449: 0x57DC, - 1450: 0x57DE, - 1451: 0x57E1, - 1452: 0x57E2, - 1453: 0x57E3, - 1454: 0x57E5, - 1455: 0x57E6, - 1456: 0x57E7, - 1457: 0x57E8, - 1458: 0x57E9, - 1459: 0x57EA, - 1460: 0x57EB, - 1461: 0x57EC, - 1462: 0x57EE, - 1463: 0x57F0, - 1464: 0x57F1, - 1465: 0x57F2, - 1466: 0x57F3, - 1467: 0x57F5, - 1468: 0x57F6, - 1469: 0x57F7, - 1470: 0x57FB, - 1471: 0x57FC, - 1472: 0x57FE, - 1473: 0x57FF, - 1474: 0x5801, - 1475: 0x5803, - 1476: 0x5804, - 1477: 0x5805, - 1478: 0x5808, - 1479: 0x5809, - 1480: 0x580A, - 1481: 0x580C, - 1482: 0x580E, - 1483: 0x580F, - 1484: 0x5810, - 1485: 0x5812, - 1486: 0x5813, - 1487: 0x5814, - 1488: 0x5816, - 1489: 0x5817, - 1490: 0x5818, - 1491: 0x581A, - 1492: 0x581B, - 1493: 0x581C, - 1494: 0x581D, - 1495: 0x581F, - 1496: 0x5822, - 1497: 0x5823, - 1498: 0x5825, - 1499: 0x5826, - 1500: 0x5827, - 1501: 0x5828, - 1502: 0x5829, - 1503: 0x582B, - 1504: 0x582C, - 1505: 0x582D, - 1506: 0x582E, - 1507: 0x582F, - 1508: 0x5831, - 1509: 0x5832, - 1510: 0x5833, - 1511: 0x5834, - 1512: 0x5836, - 1513: 0x5837, - 1514: 0x5838, - 1515: 0x5839, - 1516: 0x583A, - 1517: 0x583B, - 1518: 0x583C, - 1519: 0x583D, - 1520: 0x583E, - 1521: 0x583F, - 1522: 0x5840, - 1523: 0x5841, - 1524: 0x5842, - 1525: 0x5843, - 1526: 0x5845, - 1527: 0x5846, - 1528: 0x5847, - 1529: 0x5848, - 1530: 0x5849, - 1531: 0x584A, - 1532: 0x584B, - 1533: 0x584E, - 1534: 0x584F, - 1535: 0x5850, - 1536: 0x5852, - 1537: 0x5853, - 1538: 0x5855, - 1539: 0x5856, - 1540: 0x5857, - 1541: 0x5859, - 1542: 0x585A, - 1543: 0x585B, - 1544: 0x585C, - 1545: 0x585D, - 1546: 0x585F, - 1547: 0x5860, - 1548: 0x5861, - 1549: 0x5862, - 1550: 0x5863, - 1551: 0x5864, - 1552: 0x5866, - 1553: 0x5867, - 1554: 0x5868, - 1555: 0x5869, - 1556: 0x586A, - 1557: 0x586D, - 1558: 0x586E, - 1559: 0x586F, - 1560: 0x5870, - 1561: 0x5871, - 1562: 0x5872, - 1563: 0x5873, - 1564: 0x5874, - 1565: 0x5875, - 1566: 0x5876, - 1567: 0x5877, - 1568: 0x5878, - 1569: 0x5879, - 1570: 0x587A, - 1571: 0x587B, - 1572: 0x587C, - 1573: 0x587D, - 1574: 0x587F, - 1575: 0x5882, - 1576: 0x5884, - 1577: 0x5886, - 1578: 0x5887, - 1579: 0x5888, - 1580: 0x588A, - 1581: 0x588B, - 1582: 0x588C, - 1583: 0x588D, - 1584: 0x588E, - 1585: 0x588F, - 1586: 0x5890, - 1587: 0x5891, - 1588: 0x5894, - 1589: 0x5895, - 1590: 0x5896, - 1591: 0x5897, - 1592: 0x5898, - 1593: 0x589B, - 1594: 0x589C, - 1595: 0x589D, - 1596: 0x58A0, - 1597: 0x58A1, - 1598: 0x58A2, - 1599: 0x58A3, - 1600: 0x58A4, - 1601: 0x58A5, - 1602: 0x58A6, - 1603: 0x58A7, - 1604: 0x58AA, - 1605: 0x58AB, - 1606: 0x58AC, - 1607: 0x58AD, - 1608: 0x58AE, - 1609: 0x58AF, - 1610: 0x58B0, - 1611: 0x58B1, - 1612: 0x58B2, - 1613: 0x58B3, - 1614: 0x58B4, - 1615: 0x58B5, - 1616: 0x58B6, - 1617: 0x58B7, - 1618: 0x58B8, - 1619: 0x58B9, - 1620: 0x58BA, - 1621: 0x58BB, - 1622: 0x58BD, - 1623: 0x58BE, - 1624: 0x58BF, - 1625: 0x58C0, - 1626: 0x58C2, - 1627: 0x58C3, - 1628: 0x58C4, - 1629: 0x58C6, - 1630: 0x58C7, - 1631: 0x58C8, - 1632: 0x58C9, - 1633: 0x58CA, - 1634: 0x58CB, - 1635: 0x58CC, - 1636: 0x58CD, - 1637: 0x58CE, - 1638: 0x58CF, - 1639: 0x58D0, - 1640: 0x58D2, - 1641: 0x58D3, - 1642: 0x58D4, - 1643: 0x58D6, - 1644: 0x58D7, - 1645: 0x58D8, - 1646: 0x58D9, - 1647: 0x58DA, - 1648: 0x58DB, - 1649: 0x58DC, - 1650: 0x58DD, - 1651: 0x58DE, - 1652: 0x58DF, - 1653: 0x58E0, - 1654: 0x58E1, - 1655: 0x58E2, - 1656: 0x58E3, - 1657: 0x58E5, - 1658: 0x58E6, - 1659: 0x58E7, - 1660: 0x58E8, - 1661: 0x58E9, - 1662: 0x58EA, - 1663: 0x58ED, - 1664: 0x58EF, - 1665: 0x58F1, - 1666: 0x58F2, - 1667: 0x58F4, - 1668: 0x58F5, - 1669: 0x58F7, - 1670: 0x58F8, - 1671: 0x58FA, - 1672: 0x58FB, - 1673: 0x58FC, - 1674: 0x58FD, - 1675: 0x58FE, - 1676: 0x58FF, - 1677: 0x5900, - 1678: 0x5901, - 1679: 0x5903, - 1680: 0x5905, - 1681: 0x5906, - 1682: 0x5908, - 1683: 0x5909, - 1684: 0x590A, - 1685: 0x590B, - 1686: 0x590C, - 1687: 0x590E, - 1688: 0x5910, - 1689: 0x5911, - 1690: 0x5912, - 1691: 0x5913, - 1692: 0x5917, - 1693: 0x5918, - 1694: 0x591B, - 1695: 0x591D, - 1696: 0x591E, - 1697: 0x5920, - 1698: 0x5921, - 1699: 0x5922, - 1700: 0x5923, - 1701: 0x5926, - 1702: 0x5928, - 1703: 0x592C, - 1704: 0x5930, - 1705: 0x5932, - 1706: 0x5933, - 1707: 0x5935, - 1708: 0x5936, - 1709: 0x593B, - 1710: 0x593D, - 1711: 0x593E, - 1712: 0x593F, - 1713: 0x5940, - 1714: 0x5943, - 1715: 0x5945, - 1716: 0x5946, - 1717: 0x594A, - 1718: 0x594C, - 1719: 0x594D, - 1720: 0x5950, - 1721: 0x5952, - 1722: 0x5953, - 1723: 0x5959, - 1724: 0x595B, - 1725: 0x595C, - 1726: 0x595D, - 1727: 0x595E, - 1728: 0x595F, - 1729: 0x5961, - 1730: 0x5963, - 1731: 0x5964, - 1732: 0x5966, - 1733: 0x5967, - 1734: 0x5968, - 1735: 0x5969, - 1736: 0x596A, - 1737: 0x596B, - 1738: 0x596C, - 1739: 0x596D, - 1740: 0x596E, - 1741: 0x596F, - 1742: 0x5970, - 1743: 0x5971, - 1744: 0x5972, - 1745: 0x5975, - 1746: 0x5977, - 1747: 0x597A, - 1748: 0x597B, - 1749: 0x597C, - 1750: 0x597E, - 1751: 0x597F, - 1752: 0x5980, - 1753: 0x5985, - 1754: 0x5989, - 1755: 0x598B, - 1756: 0x598C, - 1757: 0x598E, - 1758: 0x598F, - 1759: 0x5990, - 1760: 0x5991, - 1761: 0x5994, - 1762: 0x5995, - 1763: 0x5998, - 1764: 0x599A, - 1765: 0x599B, - 1766: 0x599C, - 1767: 0x599D, - 1768: 0x599F, - 1769: 0x59A0, - 1770: 0x59A1, - 1771: 0x59A2, - 1772: 0x59A6, - 1773: 0x59A7, - 1774: 0x59AC, - 1775: 0x59AD, - 1776: 0x59B0, - 1777: 0x59B1, - 1778: 0x59B3, - 1779: 0x59B4, - 1780: 0x59B5, - 1781: 0x59B6, - 1782: 0x59B7, - 1783: 0x59B8, - 1784: 0x59BA, - 1785: 0x59BC, - 1786: 0x59BD, - 1787: 0x59BF, - 1788: 0x59C0, - 1789: 0x59C1, - 1790: 0x59C2, - 1791: 0x59C3, - 1792: 0x59C4, - 1793: 0x59C5, - 1794: 0x59C7, - 1795: 0x59C8, - 1796: 0x59C9, - 1797: 0x59CC, - 1798: 0x59CD, - 1799: 0x59CE, - 1800: 0x59CF, - 1801: 0x59D5, - 1802: 0x59D6, - 1803: 0x59D9, - 1804: 0x59DB, - 1805: 0x59DE, - 1806: 0x59DF, - 1807: 0x59E0, - 1808: 0x59E1, - 1809: 0x59E2, - 1810: 0x59E4, - 1811: 0x59E6, - 1812: 0x59E7, - 1813: 0x59E9, - 1814: 0x59EA, - 1815: 0x59EB, - 1816: 0x59ED, - 1817: 0x59EE, - 1818: 0x59EF, - 1819: 0x59F0, - 1820: 0x59F1, - 1821: 0x59F2, - 1822: 0x59F3, - 1823: 0x59F4, - 1824: 0x59F5, - 1825: 0x59F6, - 1826: 0x59F7, - 1827: 0x59F8, - 1828: 0x59FA, - 1829: 0x59FC, - 1830: 0x59FD, - 1831: 0x59FE, - 1832: 0x5A00, - 1833: 0x5A02, - 1834: 0x5A0A, - 1835: 0x5A0B, - 1836: 0x5A0D, - 1837: 0x5A0E, - 1838: 0x5A0F, - 1839: 0x5A10, - 1840: 0x5A12, - 1841: 0x5A14, - 1842: 0x5A15, - 1843: 0x5A16, - 1844: 0x5A17, - 1845: 0x5A19, - 1846: 0x5A1A, - 1847: 0x5A1B, - 1848: 0x5A1D, - 1849: 0x5A1E, - 1850: 0x5A21, - 1851: 0x5A22, - 1852: 0x5A24, - 1853: 0x5A26, - 1854: 0x5A27, - 1855: 0x5A28, - 1856: 0x5A2A, - 1857: 0x5A2B, - 1858: 0x5A2C, - 1859: 0x5A2D, - 1860: 0x5A2E, - 1861: 0x5A2F, - 1862: 0x5A30, - 1863: 0x5A33, - 1864: 0x5A35, - 1865: 0x5A37, - 1866: 0x5A38, - 1867: 0x5A39, - 1868: 0x5A3A, - 1869: 0x5A3B, - 1870: 0x5A3D, - 1871: 0x5A3E, - 1872: 0x5A3F, - 1873: 0x5A41, - 1874: 0x5A42, - 1875: 0x5A43, - 1876: 0x5A44, - 1877: 0x5A45, - 1878: 0x5A47, - 1879: 0x5A48, - 1880: 0x5A4B, - 1881: 0x5A4C, - 1882: 0x5A4D, - 1883: 0x5A4E, - 1884: 0x5A4F, - 1885: 0x5A50, - 1886: 0x5A51, - 1887: 0x5A52, - 1888: 0x5A53, - 1889: 0x5A54, - 1890: 0x5A56, - 1891: 0x5A57, - 1892: 0x5A58, - 1893: 0x5A59, - 1894: 0x5A5B, - 1895: 0x5A5C, - 1896: 0x5A5D, - 1897: 0x5A5E, - 1898: 0x5A5F, - 1899: 0x5A60, - 1900: 0x5A61, - 1901: 0x5A63, - 1902: 0x5A64, - 1903: 0x5A65, - 1904: 0x5A66, - 1905: 0x5A68, - 1906: 0x5A69, - 1907: 0x5A6B, - 1908: 0x5A6C, - 1909: 0x5A6D, - 1910: 0x5A6E, - 1911: 0x5A6F, - 1912: 0x5A70, - 1913: 0x5A71, - 1914: 0x5A72, - 1915: 0x5A73, - 1916: 0x5A78, - 1917: 0x5A79, - 1918: 0x5A7B, - 1919: 0x5A7C, - 1920: 0x5A7D, - 1921: 0x5A7E, - 1922: 0x5A80, - 1923: 0x5A81, - 1924: 0x5A82, - 1925: 0x5A83, - 1926: 0x5A84, - 1927: 0x5A85, - 1928: 0x5A86, - 1929: 0x5A87, - 1930: 0x5A88, - 1931: 0x5A89, - 1932: 0x5A8A, - 1933: 0x5A8B, - 1934: 0x5A8C, - 1935: 0x5A8D, - 1936: 0x5A8E, - 1937: 0x5A8F, - 1938: 0x5A90, - 1939: 0x5A91, - 1940: 0x5A93, - 1941: 0x5A94, - 1942: 0x5A95, - 1943: 0x5A96, - 1944: 0x5A97, - 1945: 0x5A98, - 1946: 0x5A99, - 1947: 0x5A9C, - 1948: 0x5A9D, - 1949: 0x5A9E, - 1950: 0x5A9F, - 1951: 0x5AA0, - 1952: 0x5AA1, - 1953: 0x5AA2, - 1954: 0x5AA3, - 1955: 0x5AA4, - 1956: 0x5AA5, - 1957: 0x5AA6, - 1958: 0x5AA7, - 1959: 0x5AA8, - 1960: 0x5AA9, - 1961: 0x5AAB, - 1962: 0x5AAC, - 1963: 0x5AAD, - 1964: 0x5AAE, - 1965: 0x5AAF, - 1966: 0x5AB0, - 1967: 0x5AB1, - 1968: 0x5AB4, - 1969: 0x5AB6, - 1970: 0x5AB7, - 1971: 0x5AB9, - 1972: 0x5ABA, - 1973: 0x5ABB, - 1974: 0x5ABC, - 1975: 0x5ABD, - 1976: 0x5ABF, - 1977: 0x5AC0, - 1978: 0x5AC3, - 1979: 0x5AC4, - 1980: 0x5AC5, - 1981: 0x5AC6, - 1982: 0x5AC7, - 1983: 0x5AC8, - 1984: 0x5ACA, - 1985: 0x5ACB, - 1986: 0x5ACD, - 1987: 0x5ACE, - 1988: 0x5ACF, - 1989: 0x5AD0, - 1990: 0x5AD1, - 1991: 0x5AD3, - 1992: 0x5AD5, - 1993: 0x5AD7, - 1994: 0x5AD9, - 1995: 0x5ADA, - 1996: 0x5ADB, - 1997: 0x5ADD, - 1998: 0x5ADE, - 1999: 0x5ADF, - 2000: 0x5AE2, - 2001: 0x5AE4, - 2002: 0x5AE5, - 2003: 0x5AE7, - 2004: 0x5AE8, - 2005: 0x5AEA, - 2006: 0x5AEC, - 2007: 0x5AED, - 2008: 0x5AEE, - 2009: 0x5AEF, - 2010: 0x5AF0, - 2011: 0x5AF2, - 2012: 0x5AF3, - 2013: 0x5AF4, - 2014: 0x5AF5, - 2015: 0x5AF6, - 2016: 0x5AF7, - 2017: 0x5AF8, - 2018: 0x5AF9, - 2019: 0x5AFA, - 2020: 0x5AFB, - 2021: 0x5AFC, - 2022: 0x5AFD, - 2023: 0x5AFE, - 2024: 0x5AFF, - 2025: 0x5B00, - 2026: 0x5B01, - 2027: 0x5B02, - 2028: 0x5B03, - 2029: 0x5B04, - 2030: 0x5B05, - 2031: 0x5B06, - 2032: 0x5B07, - 2033: 0x5B08, - 2034: 0x5B0A, - 2035: 0x5B0B, - 2036: 0x5B0C, - 2037: 0x5B0D, - 2038: 0x5B0E, - 2039: 0x5B0F, - 2040: 0x5B10, - 2041: 0x5B11, - 2042: 0x5B12, - 2043: 0x5B13, - 2044: 0x5B14, - 2045: 0x5B15, - 2046: 0x5B18, - 2047: 0x5B19, - 2048: 0x5B1A, - 2049: 0x5B1B, - 2050: 0x5B1C, - 2051: 0x5B1D, - 2052: 0x5B1E, - 2053: 0x5B1F, - 2054: 0x5B20, - 2055: 0x5B21, - 2056: 0x5B22, - 2057: 0x5B23, - 2058: 0x5B24, - 2059: 0x5B25, - 2060: 0x5B26, - 2061: 0x5B27, - 2062: 0x5B28, - 2063: 0x5B29, - 2064: 0x5B2A, - 2065: 0x5B2B, - 2066: 0x5B2C, - 2067: 0x5B2D, - 2068: 0x5B2E, - 2069: 0x5B2F, - 2070: 0x5B30, - 2071: 0x5B31, - 2072: 0x5B33, - 2073: 0x5B35, - 2074: 0x5B36, - 2075: 0x5B38, - 2076: 0x5B39, - 2077: 0x5B3A, - 2078: 0x5B3B, - 2079: 0x5B3C, - 2080: 0x5B3D, - 2081: 0x5B3E, - 2082: 0x5B3F, - 2083: 0x5B41, - 2084: 0x5B42, - 2085: 0x5B43, - 2086: 0x5B44, - 2087: 0x5B45, - 2088: 0x5B46, - 2089: 0x5B47, - 2090: 0x5B48, - 2091: 0x5B49, - 2092: 0x5B4A, - 2093: 0x5B4B, - 2094: 0x5B4C, - 2095: 0x5B4D, - 2096: 0x5B4E, - 2097: 0x5B4F, - 2098: 0x5B52, - 2099: 0x5B56, - 2100: 0x5B5E, - 2101: 0x5B60, - 2102: 0x5B61, - 2103: 0x5B67, - 2104: 0x5B68, - 2105: 0x5B6B, - 2106: 0x5B6D, - 2107: 0x5B6E, - 2108: 0x5B6F, - 2109: 0x5B72, - 2110: 0x5B74, - 2111: 0x5B76, - 2112: 0x5B77, - 2113: 0x5B78, - 2114: 0x5B79, - 2115: 0x5B7B, - 2116: 0x5B7C, - 2117: 0x5B7E, - 2118: 0x5B7F, - 2119: 0x5B82, - 2120: 0x5B86, - 2121: 0x5B8A, - 2122: 0x5B8D, - 2123: 0x5B8E, - 2124: 0x5B90, - 2125: 0x5B91, - 2126: 0x5B92, - 2127: 0x5B94, - 2128: 0x5B96, - 2129: 0x5B9F, - 2130: 0x5BA7, - 2131: 0x5BA8, - 2132: 0x5BA9, - 2133: 0x5BAC, - 2134: 0x5BAD, - 2135: 0x5BAE, - 2136: 0x5BAF, - 2137: 0x5BB1, - 2138: 0x5BB2, - 2139: 0x5BB7, - 2140: 0x5BBA, - 2141: 0x5BBB, - 2142: 0x5BBC, - 2143: 0x5BC0, - 2144: 0x5BC1, - 2145: 0x5BC3, - 2146: 0x5BC8, - 2147: 0x5BC9, - 2148: 0x5BCA, - 2149: 0x5BCB, - 2150: 0x5BCD, - 2151: 0x5BCE, - 2152: 0x5BCF, - 2153: 0x5BD1, - 2154: 0x5BD4, - 2155: 0x5BD5, - 2156: 0x5BD6, - 2157: 0x5BD7, - 2158: 0x5BD8, - 2159: 0x5BD9, - 2160: 0x5BDA, - 2161: 0x5BDB, - 2162: 0x5BDC, - 2163: 0x5BE0, - 2164: 0x5BE2, - 2165: 0x5BE3, - 2166: 0x5BE6, - 2167: 0x5BE7, - 2168: 0x5BE9, - 2169: 0x5BEA, - 2170: 0x5BEB, - 2171: 0x5BEC, - 2172: 0x5BED, - 2173: 0x5BEF, - 2174: 0x5BF1, - 2175: 0x5BF2, - 2176: 0x5BF3, - 2177: 0x5BF4, - 2178: 0x5BF5, - 2179: 0x5BF6, - 2180: 0x5BF7, - 2181: 0x5BFD, - 2182: 0x5BFE, - 2183: 0x5C00, - 2184: 0x5C02, - 2185: 0x5C03, - 2186: 0x5C05, - 2187: 0x5C07, - 2188: 0x5C08, - 2189: 0x5C0B, - 2190: 0x5C0C, - 2191: 0x5C0D, - 2192: 0x5C0E, - 2193: 0x5C10, - 2194: 0x5C12, - 2195: 0x5C13, - 2196: 0x5C17, - 2197: 0x5C19, - 2198: 0x5C1B, - 2199: 0x5C1E, - 2200: 0x5C1F, - 2201: 0x5C20, - 2202: 0x5C21, - 2203: 0x5C23, - 2204: 0x5C26, - 2205: 0x5C28, - 2206: 0x5C29, - 2207: 0x5C2A, - 2208: 0x5C2B, - 2209: 0x5C2D, - 2210: 0x5C2E, - 2211: 0x5C2F, - 2212: 0x5C30, - 2213: 0x5C32, - 2214: 0x5C33, - 2215: 0x5C35, - 2216: 0x5C36, - 2217: 0x5C37, - 2218: 0x5C43, - 2219: 0x5C44, - 2220: 0x5C46, - 2221: 0x5C47, - 2222: 0x5C4C, - 2223: 0x5C4D, - 2224: 0x5C52, - 2225: 0x5C53, - 2226: 0x5C54, - 2227: 0x5C56, - 2228: 0x5C57, - 2229: 0x5C58, - 2230: 0x5C5A, - 2231: 0x5C5B, - 2232: 0x5C5C, - 2233: 0x5C5D, - 2234: 0x5C5F, - 2235: 0x5C62, - 2236: 0x5C64, - 2237: 0x5C67, - 2238: 0x5C68, - 2239: 0x5C69, - 2240: 0x5C6A, - 2241: 0x5C6B, - 2242: 0x5C6C, - 2243: 0x5C6D, - 2244: 0x5C70, - 2245: 0x5C72, - 2246: 0x5C73, - 2247: 0x5C74, - 2248: 0x5C75, - 2249: 0x5C76, - 2250: 0x5C77, - 2251: 0x5C78, - 2252: 0x5C7B, - 2253: 0x5C7C, - 2254: 0x5C7D, - 2255: 0x5C7E, - 2256: 0x5C80, - 2257: 0x5C83, - 2258: 0x5C84, - 2259: 0x5C85, - 2260: 0x5C86, - 2261: 0x5C87, - 2262: 0x5C89, - 2263: 0x5C8A, - 2264: 0x5C8B, - 2265: 0x5C8E, - 2266: 0x5C8F, - 2267: 0x5C92, - 2268: 0x5C93, - 2269: 0x5C95, - 2270: 0x5C9D, - 2271: 0x5C9E, - 2272: 0x5C9F, - 2273: 0x5CA0, - 2274: 0x5CA1, - 2275: 0x5CA4, - 2276: 0x5CA5, - 2277: 0x5CA6, - 2278: 0x5CA7, - 2279: 0x5CA8, - 2280: 0x5CAA, - 2281: 0x5CAE, - 2282: 0x5CAF, - 2283: 0x5CB0, - 2284: 0x5CB2, - 2285: 0x5CB4, - 2286: 0x5CB6, - 2287: 0x5CB9, - 2288: 0x5CBA, - 2289: 0x5CBB, - 2290: 0x5CBC, - 2291: 0x5CBE, - 2292: 0x5CC0, - 2293: 0x5CC2, - 2294: 0x5CC3, - 2295: 0x5CC5, - 2296: 0x5CC6, - 2297: 0x5CC7, - 2298: 0x5CC8, - 2299: 0x5CC9, - 2300: 0x5CCA, - 2301: 0x5CCC, - 2302: 0x5CCD, - 2303: 0x5CCE, - 2304: 0x5CCF, - 2305: 0x5CD0, - 2306: 0x5CD1, - 2307: 0x5CD3, - 2308: 0x5CD4, - 2309: 0x5CD5, - 2310: 0x5CD6, - 2311: 0x5CD7, - 2312: 0x5CD8, - 2313: 0x5CDA, - 2314: 0x5CDB, - 2315: 0x5CDC, - 2316: 0x5CDD, - 2317: 0x5CDE, - 2318: 0x5CDF, - 2319: 0x5CE0, - 2320: 0x5CE2, - 2321: 0x5CE3, - 2322: 0x5CE7, - 2323: 0x5CE9, - 2324: 0x5CEB, - 2325: 0x5CEC, - 2326: 0x5CEE, - 2327: 0x5CEF, - 2328: 0x5CF1, - 2329: 0x5CF2, - 2330: 0x5CF3, - 2331: 0x5CF4, - 2332: 0x5CF5, - 2333: 0x5CF6, - 2334: 0x5CF7, - 2335: 0x5CF8, - 2336: 0x5CF9, - 2337: 0x5CFA, - 2338: 0x5CFC, - 2339: 0x5CFD, - 2340: 0x5CFE, - 2341: 0x5CFF, - 2342: 0x5D00, - 2343: 0x5D01, - 2344: 0x5D04, - 2345: 0x5D05, - 2346: 0x5D08, - 2347: 0x5D09, - 2348: 0x5D0A, - 2349: 0x5D0B, - 2350: 0x5D0C, - 2351: 0x5D0D, - 2352: 0x5D0F, - 2353: 0x5D10, - 2354: 0x5D11, - 2355: 0x5D12, - 2356: 0x5D13, - 2357: 0x5D15, - 2358: 0x5D17, - 2359: 0x5D18, - 2360: 0x5D19, - 2361: 0x5D1A, - 2362: 0x5D1C, - 2363: 0x5D1D, - 2364: 0x5D1F, - 2365: 0x5D20, - 2366: 0x5D21, - 2367: 0x5D22, - 2368: 0x5D23, - 2369: 0x5D25, - 2370: 0x5D28, - 2371: 0x5D2A, - 2372: 0x5D2B, - 2373: 0x5D2C, - 2374: 0x5D2F, - 2375: 0x5D30, - 2376: 0x5D31, - 2377: 0x5D32, - 2378: 0x5D33, - 2379: 0x5D35, - 2380: 0x5D36, - 2381: 0x5D37, - 2382: 0x5D38, - 2383: 0x5D39, - 2384: 0x5D3A, - 2385: 0x5D3B, - 2386: 0x5D3C, - 2387: 0x5D3F, - 2388: 0x5D40, - 2389: 0x5D41, - 2390: 0x5D42, - 2391: 0x5D43, - 2392: 0x5D44, - 2393: 0x5D45, - 2394: 0x5D46, - 2395: 0x5D48, - 2396: 0x5D49, - 2397: 0x5D4D, - 2398: 0x5D4E, - 2399: 0x5D4F, - 2400: 0x5D50, - 2401: 0x5D51, - 2402: 0x5D52, - 2403: 0x5D53, - 2404: 0x5D54, - 2405: 0x5D55, - 2406: 0x5D56, - 2407: 0x5D57, - 2408: 0x5D59, - 2409: 0x5D5A, - 2410: 0x5D5C, - 2411: 0x5D5E, - 2412: 0x5D5F, - 2413: 0x5D60, - 2414: 0x5D61, - 2415: 0x5D62, - 2416: 0x5D63, - 2417: 0x5D64, - 2418: 0x5D65, - 2419: 0x5D66, - 2420: 0x5D67, - 2421: 0x5D68, - 2422: 0x5D6A, - 2423: 0x5D6D, - 2424: 0x5D6E, - 2425: 0x5D70, - 2426: 0x5D71, - 2427: 0x5D72, - 2428: 0x5D73, - 2429: 0x5D75, - 2430: 0x5D76, - 2431: 0x5D77, - 2432: 0x5D78, - 2433: 0x5D79, - 2434: 0x5D7A, - 2435: 0x5D7B, - 2436: 0x5D7C, - 2437: 0x5D7D, - 2438: 0x5D7E, - 2439: 0x5D7F, - 2440: 0x5D80, - 2441: 0x5D81, - 2442: 0x5D83, - 2443: 0x5D84, - 2444: 0x5D85, - 2445: 0x5D86, - 2446: 0x5D87, - 2447: 0x5D88, - 2448: 0x5D89, - 2449: 0x5D8A, - 2450: 0x5D8B, - 2451: 0x5D8C, - 2452: 0x5D8D, - 2453: 0x5D8E, - 2454: 0x5D8F, - 2455: 0x5D90, - 2456: 0x5D91, - 2457: 0x5D92, - 2458: 0x5D93, - 2459: 0x5D94, - 2460: 0x5D95, - 2461: 0x5D96, - 2462: 0x5D97, - 2463: 0x5D98, - 2464: 0x5D9A, - 2465: 0x5D9B, - 2466: 0x5D9C, - 2467: 0x5D9E, - 2468: 0x5D9F, - 2469: 0x5DA0, - 2470: 0x5DA1, - 2471: 0x5DA2, - 2472: 0x5DA3, - 2473: 0x5DA4, - 2474: 0x5DA5, - 2475: 0x5DA6, - 2476: 0x5DA7, - 2477: 0x5DA8, - 2478: 0x5DA9, - 2479: 0x5DAA, - 2480: 0x5DAB, - 2481: 0x5DAC, - 2482: 0x5DAD, - 2483: 0x5DAE, - 2484: 0x5DAF, - 2485: 0x5DB0, - 2486: 0x5DB1, - 2487: 0x5DB2, - 2488: 0x5DB3, - 2489: 0x5DB4, - 2490: 0x5DB5, - 2491: 0x5DB6, - 2492: 0x5DB8, - 2493: 0x5DB9, - 2494: 0x5DBA, - 2495: 0x5DBB, - 2496: 0x5DBC, - 2497: 0x5DBD, - 2498: 0x5DBE, - 2499: 0x5DBF, - 2500: 0x5DC0, - 2501: 0x5DC1, - 2502: 0x5DC2, - 2503: 0x5DC3, - 2504: 0x5DC4, - 2505: 0x5DC6, - 2506: 0x5DC7, - 2507: 0x5DC8, - 2508: 0x5DC9, - 2509: 0x5DCA, - 2510: 0x5DCB, - 2511: 0x5DCC, - 2512: 0x5DCE, - 2513: 0x5DCF, - 2514: 0x5DD0, - 2515: 0x5DD1, - 2516: 0x5DD2, - 2517: 0x5DD3, - 2518: 0x5DD4, - 2519: 0x5DD5, - 2520: 0x5DD6, - 2521: 0x5DD7, - 2522: 0x5DD8, - 2523: 0x5DD9, - 2524: 0x5DDA, - 2525: 0x5DDC, - 2526: 0x5DDF, - 2527: 0x5DE0, - 2528: 0x5DE3, - 2529: 0x5DE4, - 2530: 0x5DEA, - 2531: 0x5DEC, - 2532: 0x5DED, - 2533: 0x5DF0, - 2534: 0x5DF5, - 2535: 0x5DF6, - 2536: 0x5DF8, - 2537: 0x5DF9, - 2538: 0x5DFA, - 2539: 0x5DFB, - 2540: 0x5DFC, - 2541: 0x5DFF, - 2542: 0x5E00, - 2543: 0x5E04, - 2544: 0x5E07, - 2545: 0x5E09, - 2546: 0x5E0A, - 2547: 0x5E0B, - 2548: 0x5E0D, - 2549: 0x5E0E, - 2550: 0x5E12, - 2551: 0x5E13, - 2552: 0x5E17, - 2553: 0x5E1E, - 2554: 0x5E1F, - 2555: 0x5E20, - 2556: 0x5E21, - 2557: 0x5E22, - 2558: 0x5E23, - 2559: 0x5E24, - 2560: 0x5E25, - 2561: 0x5E28, - 2562: 0x5E29, - 2563: 0x5E2A, - 2564: 0x5E2B, - 2565: 0x5E2C, - 2566: 0x5E2F, - 2567: 0x5E30, - 2568: 0x5E32, - 2569: 0x5E33, - 2570: 0x5E34, - 2571: 0x5E35, - 2572: 0x5E36, - 2573: 0x5E39, - 2574: 0x5E3A, - 2575: 0x5E3E, - 2576: 0x5E3F, - 2577: 0x5E40, - 2578: 0x5E41, - 2579: 0x5E43, - 2580: 0x5E46, - 2581: 0x5E47, - 2582: 0x5E48, - 2583: 0x5E49, - 2584: 0x5E4A, - 2585: 0x5E4B, - 2586: 0x5E4D, - 2587: 0x5E4E, - 2588: 0x5E4F, - 2589: 0x5E50, - 2590: 0x5E51, - 2591: 0x5E52, - 2592: 0x5E53, - 2593: 0x5E56, - 2594: 0x5E57, - 2595: 0x5E58, - 2596: 0x5E59, - 2597: 0x5E5A, - 2598: 0x5E5C, - 2599: 0x5E5D, - 2600: 0x5E5F, - 2601: 0x5E60, - 2602: 0x5E63, - 2603: 0x5E64, - 2604: 0x5E65, - 2605: 0x5E66, - 2606: 0x5E67, - 2607: 0x5E68, - 2608: 0x5E69, - 2609: 0x5E6A, - 2610: 0x5E6B, - 2611: 0x5E6C, - 2612: 0x5E6D, - 2613: 0x5E6E, - 2614: 0x5E6F, - 2615: 0x5E70, - 2616: 0x5E71, - 2617: 0x5E75, - 2618: 0x5E77, - 2619: 0x5E79, - 2620: 0x5E7E, - 2621: 0x5E81, - 2622: 0x5E82, - 2623: 0x5E83, - 2624: 0x5E85, - 2625: 0x5E88, - 2626: 0x5E89, - 2627: 0x5E8C, - 2628: 0x5E8D, - 2629: 0x5E8E, - 2630: 0x5E92, - 2631: 0x5E98, - 2632: 0x5E9B, - 2633: 0x5E9D, - 2634: 0x5EA1, - 2635: 0x5EA2, - 2636: 0x5EA3, - 2637: 0x5EA4, - 2638: 0x5EA8, - 2639: 0x5EA9, - 2640: 0x5EAA, - 2641: 0x5EAB, - 2642: 0x5EAC, - 2643: 0x5EAE, - 2644: 0x5EAF, - 2645: 0x5EB0, - 2646: 0x5EB1, - 2647: 0x5EB2, - 2648: 0x5EB4, - 2649: 0x5EBA, - 2650: 0x5EBB, - 2651: 0x5EBC, - 2652: 0x5EBD, - 2653: 0x5EBF, - 2654: 0x5EC0, - 2655: 0x5EC1, - 2656: 0x5EC2, - 2657: 0x5EC3, - 2658: 0x5EC4, - 2659: 0x5EC5, - 2660: 0x5EC6, - 2661: 0x5EC7, - 2662: 0x5EC8, - 2663: 0x5ECB, - 2664: 0x5ECC, - 2665: 0x5ECD, - 2666: 0x5ECE, - 2667: 0x5ECF, - 2668: 0x5ED0, - 2669: 0x5ED4, - 2670: 0x5ED5, - 2671: 0x5ED7, - 2672: 0x5ED8, - 2673: 0x5ED9, - 2674: 0x5EDA, - 2675: 0x5EDC, - 2676: 0x5EDD, - 2677: 0x5EDE, - 2678: 0x5EDF, - 2679: 0x5EE0, - 2680: 0x5EE1, - 2681: 0x5EE2, - 2682: 0x5EE3, - 2683: 0x5EE4, - 2684: 0x5EE5, - 2685: 0x5EE6, - 2686: 0x5EE7, - 2687: 0x5EE9, - 2688: 0x5EEB, - 2689: 0x5EEC, - 2690: 0x5EED, - 2691: 0x5EEE, - 2692: 0x5EEF, - 2693: 0x5EF0, - 2694: 0x5EF1, - 2695: 0x5EF2, - 2696: 0x5EF3, - 2697: 0x5EF5, - 2698: 0x5EF8, - 2699: 0x5EF9, - 2700: 0x5EFB, - 2701: 0x5EFC, - 2702: 0x5EFD, - 2703: 0x5F05, - 2704: 0x5F06, - 2705: 0x5F07, - 2706: 0x5F09, - 2707: 0x5F0C, - 2708: 0x5F0D, - 2709: 0x5F0E, - 2710: 0x5F10, - 2711: 0x5F12, - 2712: 0x5F14, - 2713: 0x5F16, - 2714: 0x5F19, - 2715: 0x5F1A, - 2716: 0x5F1C, - 2717: 0x5F1D, - 2718: 0x5F1E, - 2719: 0x5F21, - 2720: 0x5F22, - 2721: 0x5F23, - 2722: 0x5F24, - 2723: 0x5F28, - 2724: 0x5F2B, - 2725: 0x5F2C, - 2726: 0x5F2E, - 2727: 0x5F30, - 2728: 0x5F32, - 2729: 0x5F33, - 2730: 0x5F34, - 2731: 0x5F35, - 2732: 0x5F36, - 2733: 0x5F37, - 2734: 0x5F38, - 2735: 0x5F3B, - 2736: 0x5F3D, - 2737: 0x5F3E, - 2738: 0x5F3F, - 2739: 0x5F41, - 2740: 0x5F42, - 2741: 0x5F43, - 2742: 0x5F44, - 2743: 0x5F45, - 2744: 0x5F46, - 2745: 0x5F47, - 2746: 0x5F48, - 2747: 0x5F49, - 2748: 0x5F4A, - 2749: 0x5F4B, - 2750: 0x5F4C, - 2751: 0x5F4D, - 2752: 0x5F4E, - 2753: 0x5F4F, - 2754: 0x5F51, - 2755: 0x5F54, - 2756: 0x5F59, - 2757: 0x5F5A, - 2758: 0x5F5B, - 2759: 0x5F5C, - 2760: 0x5F5E, - 2761: 0x5F5F, - 2762: 0x5F60, - 2763: 0x5F63, - 2764: 0x5F65, - 2765: 0x5F67, - 2766: 0x5F68, - 2767: 0x5F6B, - 2768: 0x5F6E, - 2769: 0x5F6F, - 2770: 0x5F72, - 2771: 0x5F74, - 2772: 0x5F75, - 2773: 0x5F76, - 2774: 0x5F78, - 2775: 0x5F7A, - 2776: 0x5F7D, - 2777: 0x5F7E, - 2778: 0x5F7F, - 2779: 0x5F83, - 2780: 0x5F86, - 2781: 0x5F8D, - 2782: 0x5F8E, - 2783: 0x5F8F, - 2784: 0x5F91, - 2785: 0x5F93, - 2786: 0x5F94, - 2787: 0x5F96, - 2788: 0x5F9A, - 2789: 0x5F9B, - 2790: 0x5F9D, - 2791: 0x5F9E, - 2792: 0x5F9F, - 2793: 0x5FA0, - 2794: 0x5FA2, - 2795: 0x5FA3, - 2796: 0x5FA4, - 2797: 0x5FA5, - 2798: 0x5FA6, - 2799: 0x5FA7, - 2800: 0x5FA9, - 2801: 0x5FAB, - 2802: 0x5FAC, - 2803: 0x5FAF, - 2804: 0x5FB0, - 2805: 0x5FB1, - 2806: 0x5FB2, - 2807: 0x5FB3, - 2808: 0x5FB4, - 2809: 0x5FB6, - 2810: 0x5FB8, - 2811: 0x5FB9, - 2812: 0x5FBA, - 2813: 0x5FBB, - 2814: 0x5FBE, - 2815: 0x5FBF, - 2816: 0x5FC0, - 2817: 0x5FC1, - 2818: 0x5FC2, - 2819: 0x5FC7, - 2820: 0x5FC8, - 2821: 0x5FCA, - 2822: 0x5FCB, - 2823: 0x5FCE, - 2824: 0x5FD3, - 2825: 0x5FD4, - 2826: 0x5FD5, - 2827: 0x5FDA, - 2828: 0x5FDB, - 2829: 0x5FDC, - 2830: 0x5FDE, - 2831: 0x5FDF, - 2832: 0x5FE2, - 2833: 0x5FE3, - 2834: 0x5FE5, - 2835: 0x5FE6, - 2836: 0x5FE8, - 2837: 0x5FE9, - 2838: 0x5FEC, - 2839: 0x5FEF, - 2840: 0x5FF0, - 2841: 0x5FF2, - 2842: 0x5FF3, - 2843: 0x5FF4, - 2844: 0x5FF6, - 2845: 0x5FF7, - 2846: 0x5FF9, - 2847: 0x5FFA, - 2848: 0x5FFC, - 2849: 0x6007, - 2850: 0x6008, - 2851: 0x6009, - 2852: 0x600B, - 2853: 0x600C, - 2854: 0x6010, - 2855: 0x6011, - 2856: 0x6013, - 2857: 0x6017, - 2858: 0x6018, - 2859: 0x601A, - 2860: 0x601E, - 2861: 0x601F, - 2862: 0x6022, - 2863: 0x6023, - 2864: 0x6024, - 2865: 0x602C, - 2866: 0x602D, - 2867: 0x602E, - 2868: 0x6030, - 2869: 0x6031, - 2870: 0x6032, - 2871: 0x6033, - 2872: 0x6034, - 2873: 0x6036, - 2874: 0x6037, - 2875: 0x6038, - 2876: 0x6039, - 2877: 0x603A, - 2878: 0x603D, - 2879: 0x603E, - 2880: 0x6040, - 2881: 0x6044, - 2882: 0x6045, - 2883: 0x6046, - 2884: 0x6047, - 2885: 0x6048, - 2886: 0x6049, - 2887: 0x604A, - 2888: 0x604C, - 2889: 0x604E, - 2890: 0x604F, - 2891: 0x6051, - 2892: 0x6053, - 2893: 0x6054, - 2894: 0x6056, - 2895: 0x6057, - 2896: 0x6058, - 2897: 0x605B, - 2898: 0x605C, - 2899: 0x605E, - 2900: 0x605F, - 2901: 0x6060, - 2902: 0x6061, - 2903: 0x6065, - 2904: 0x6066, - 2905: 0x606E, - 2906: 0x6071, - 2907: 0x6072, - 2908: 0x6074, - 2909: 0x6075, - 2910: 0x6077, - 2911: 0x607E, - 2912: 0x6080, - 2913: 0x6081, - 2914: 0x6082, - 2915: 0x6085, - 2916: 0x6086, - 2917: 0x6087, - 2918: 0x6088, - 2919: 0x608A, - 2920: 0x608B, - 2921: 0x608E, - 2922: 0x608F, - 2923: 0x6090, - 2924: 0x6091, - 2925: 0x6093, - 2926: 0x6095, - 2927: 0x6097, - 2928: 0x6098, - 2929: 0x6099, - 2930: 0x609C, - 2931: 0x609E, - 2932: 0x60A1, - 2933: 0x60A2, - 2934: 0x60A4, - 2935: 0x60A5, - 2936: 0x60A7, - 2937: 0x60A9, - 2938: 0x60AA, - 2939: 0x60AE, - 2940: 0x60B0, - 2941: 0x60B3, - 2942: 0x60B5, - 2943: 0x60B6, - 2944: 0x60B7, - 2945: 0x60B9, - 2946: 0x60BA, - 2947: 0x60BD, - 2948: 0x60BE, - 2949: 0x60BF, - 2950: 0x60C0, - 2951: 0x60C1, - 2952: 0x60C2, - 2953: 0x60C3, - 2954: 0x60C4, - 2955: 0x60C7, - 2956: 0x60C8, - 2957: 0x60C9, - 2958: 0x60CC, - 2959: 0x60CD, - 2960: 0x60CE, - 2961: 0x60CF, - 2962: 0x60D0, - 2963: 0x60D2, - 2964: 0x60D3, - 2965: 0x60D4, - 2966: 0x60D6, - 2967: 0x60D7, - 2968: 0x60D9, - 2969: 0x60DB, - 2970: 0x60DE, - 2971: 0x60E1, - 2972: 0x60E2, - 2973: 0x60E3, - 2974: 0x60E4, - 2975: 0x60E5, - 2976: 0x60EA, - 2977: 0x60F1, - 2978: 0x60F2, - 2979: 0x60F5, - 2980: 0x60F7, - 2981: 0x60F8, - 2982: 0x60FB, - 2983: 0x60FC, - 2984: 0x60FD, - 2985: 0x60FE, - 2986: 0x60FF, - 2987: 0x6102, - 2988: 0x6103, - 2989: 0x6104, - 2990: 0x6105, - 2991: 0x6107, - 2992: 0x610A, - 2993: 0x610B, - 2994: 0x610C, - 2995: 0x6110, - 2996: 0x6111, - 2997: 0x6112, - 2998: 0x6113, - 2999: 0x6114, - 3000: 0x6116, - 3001: 0x6117, - 3002: 0x6118, - 3003: 0x6119, - 3004: 0x611B, - 3005: 0x611C, - 3006: 0x611D, - 3007: 0x611E, - 3008: 0x6121, - 3009: 0x6122, - 3010: 0x6125, - 3011: 0x6128, - 3012: 0x6129, - 3013: 0x612A, - 3014: 0x612C, - 3015: 0x612D, - 3016: 0x612E, - 3017: 0x612F, - 3018: 0x6130, - 3019: 0x6131, - 3020: 0x6132, - 3021: 0x6133, - 3022: 0x6134, - 3023: 0x6135, - 3024: 0x6136, - 3025: 0x6137, - 3026: 0x6138, - 3027: 0x6139, - 3028: 0x613A, - 3029: 0x613B, - 3030: 0x613C, - 3031: 0x613D, - 3032: 0x613E, - 3033: 0x6140, - 3034: 0x6141, - 3035: 0x6142, - 3036: 0x6143, - 3037: 0x6144, - 3038: 0x6145, - 3039: 0x6146, - 3040: 0x6147, - 3041: 0x6149, - 3042: 0x614B, - 3043: 0x614D, - 3044: 0x614F, - 3045: 0x6150, - 3046: 0x6152, - 3047: 0x6153, - 3048: 0x6154, - 3049: 0x6156, - 3050: 0x6157, - 3051: 0x6158, - 3052: 0x6159, - 3053: 0x615A, - 3054: 0x615B, - 3055: 0x615C, - 3056: 0x615E, - 3057: 0x615F, - 3058: 0x6160, - 3059: 0x6161, - 3060: 0x6163, - 3061: 0x6164, - 3062: 0x6165, - 3063: 0x6166, - 3064: 0x6169, - 3065: 0x616A, - 3066: 0x616B, - 3067: 0x616C, - 3068: 0x616D, - 3069: 0x616E, - 3070: 0x616F, - 3071: 0x6171, - 3072: 0x6172, - 3073: 0x6173, - 3074: 0x6174, - 3075: 0x6176, - 3076: 0x6178, - 3077: 0x6179, - 3078: 0x617A, - 3079: 0x617B, - 3080: 0x617C, - 3081: 0x617D, - 3082: 0x617E, - 3083: 0x617F, - 3084: 0x6180, - 3085: 0x6181, - 3086: 0x6182, - 3087: 0x6183, - 3088: 0x6184, - 3089: 0x6185, - 3090: 0x6186, - 3091: 0x6187, - 3092: 0x6188, - 3093: 0x6189, - 3094: 0x618A, - 3095: 0x618C, - 3096: 0x618D, - 3097: 0x618F, - 3098: 0x6190, - 3099: 0x6191, - 3100: 0x6192, - 3101: 0x6193, - 3102: 0x6195, - 3103: 0x6196, - 3104: 0x6197, - 3105: 0x6198, - 3106: 0x6199, - 3107: 0x619A, - 3108: 0x619B, - 3109: 0x619C, - 3110: 0x619E, - 3111: 0x619F, - 3112: 0x61A0, - 3113: 0x61A1, - 3114: 0x61A2, - 3115: 0x61A3, - 3116: 0x61A4, - 3117: 0x61A5, - 3118: 0x61A6, - 3119: 0x61AA, - 3120: 0x61AB, - 3121: 0x61AD, - 3122: 0x61AE, - 3123: 0x61AF, - 3124: 0x61B0, - 3125: 0x61B1, - 3126: 0x61B2, - 3127: 0x61B3, - 3128: 0x61B4, - 3129: 0x61B5, - 3130: 0x61B6, - 3131: 0x61B8, - 3132: 0x61B9, - 3133: 0x61BA, - 3134: 0x61BB, - 3135: 0x61BC, - 3136: 0x61BD, - 3137: 0x61BF, - 3138: 0x61C0, - 3139: 0x61C1, - 3140: 0x61C3, - 3141: 0x61C4, - 3142: 0x61C5, - 3143: 0x61C6, - 3144: 0x61C7, - 3145: 0x61C9, - 3146: 0x61CC, - 3147: 0x61CD, - 3148: 0x61CE, - 3149: 0x61CF, - 3150: 0x61D0, - 3151: 0x61D3, - 3152: 0x61D5, - 3153: 0x61D6, - 3154: 0x61D7, - 3155: 0x61D8, - 3156: 0x61D9, - 3157: 0x61DA, - 3158: 0x61DB, - 3159: 0x61DC, - 3160: 0x61DD, - 3161: 0x61DE, - 3162: 0x61DF, - 3163: 0x61E0, - 3164: 0x61E1, - 3165: 0x61E2, - 3166: 0x61E3, - 3167: 0x61E4, - 3168: 0x61E5, - 3169: 0x61E7, - 3170: 0x61E8, - 3171: 0x61E9, - 3172: 0x61EA, - 3173: 0x61EB, - 3174: 0x61EC, - 3175: 0x61ED, - 3176: 0x61EE, - 3177: 0x61EF, - 3178: 0x61F0, - 3179: 0x61F1, - 3180: 0x61F2, - 3181: 0x61F3, - 3182: 0x61F4, - 3183: 0x61F6, - 3184: 0x61F7, - 3185: 0x61F8, - 3186: 0x61F9, - 3187: 0x61FA, - 3188: 0x61FB, - 3189: 0x61FC, - 3190: 0x61FD, - 3191: 0x61FE, - 3192: 0x6200, - 3193: 0x6201, - 3194: 0x6202, - 3195: 0x6203, - 3196: 0x6204, - 3197: 0x6205, - 3198: 0x6207, - 3199: 0x6209, - 3200: 0x6213, - 3201: 0x6214, - 3202: 0x6219, - 3203: 0x621C, - 3204: 0x621D, - 3205: 0x621E, - 3206: 0x6220, - 3207: 0x6223, - 3208: 0x6226, - 3209: 0x6227, - 3210: 0x6228, - 3211: 0x6229, - 3212: 0x622B, - 3213: 0x622D, - 3214: 0x622F, - 3215: 0x6230, - 3216: 0x6231, - 3217: 0x6232, - 3218: 0x6235, - 3219: 0x6236, - 3220: 0x6238, - 3221: 0x6239, - 3222: 0x623A, - 3223: 0x623B, - 3224: 0x623C, - 3225: 0x6242, - 3226: 0x6244, - 3227: 0x6245, - 3228: 0x6246, - 3229: 0x624A, - 3230: 0x624F, - 3231: 0x6250, - 3232: 0x6255, - 3233: 0x6256, - 3234: 0x6257, - 3235: 0x6259, - 3236: 0x625A, - 3237: 0x625C, - 3238: 0x625D, - 3239: 0x625E, - 3240: 0x625F, - 3241: 0x6260, - 3242: 0x6261, - 3243: 0x6262, - 3244: 0x6264, - 3245: 0x6265, - 3246: 0x6268, - 3247: 0x6271, - 3248: 0x6272, - 3249: 0x6274, - 3250: 0x6275, - 3251: 0x6277, - 3252: 0x6278, - 3253: 0x627A, - 3254: 0x627B, - 3255: 0x627D, - 3256: 0x6281, - 3257: 0x6282, - 3258: 0x6283, - 3259: 0x6285, - 3260: 0x6286, - 3261: 0x6287, - 3262: 0x6288, - 3263: 0x628B, - 3264: 0x628C, - 3265: 0x628D, - 3266: 0x628E, - 3267: 0x628F, - 3268: 0x6290, - 3269: 0x6294, - 3270: 0x6299, - 3271: 0x629C, - 3272: 0x629D, - 3273: 0x629E, - 3274: 0x62A3, - 3275: 0x62A6, - 3276: 0x62A7, - 3277: 0x62A9, - 3278: 0x62AA, - 3279: 0x62AD, - 3280: 0x62AE, - 3281: 0x62AF, - 3282: 0x62B0, - 3283: 0x62B2, - 3284: 0x62B3, - 3285: 0x62B4, - 3286: 0x62B6, - 3287: 0x62B7, - 3288: 0x62B8, - 3289: 0x62BA, - 3290: 0x62BE, - 3291: 0x62C0, - 3292: 0x62C1, - 3293: 0x62C3, - 3294: 0x62CB, - 3295: 0x62CF, - 3296: 0x62D1, - 3297: 0x62D5, - 3298: 0x62DD, - 3299: 0x62DE, - 3300: 0x62E0, - 3301: 0x62E1, - 3302: 0x62E4, - 3303: 0x62EA, - 3304: 0x62EB, - 3305: 0x62F0, - 3306: 0x62F2, - 3307: 0x62F5, - 3308: 0x62F8, - 3309: 0x62F9, - 3310: 0x62FA, - 3311: 0x62FB, - 3312: 0x6300, - 3313: 0x6303, - 3314: 0x6304, - 3315: 0x6305, - 3316: 0x6306, - 3317: 0x630A, - 3318: 0x630B, - 3319: 0x630C, - 3320: 0x630D, - 3321: 0x630F, - 3322: 0x6310, - 3323: 0x6312, - 3324: 0x6313, - 3325: 0x6314, - 3326: 0x6315, - 3327: 0x6317, - 3328: 0x6318, - 3329: 0x6319, - 3330: 0x631C, - 3331: 0x6326, - 3332: 0x6327, - 3333: 0x6329, - 3334: 0x632C, - 3335: 0x632D, - 3336: 0x632E, - 3337: 0x6330, - 3338: 0x6331, - 3339: 0x6333, - 3340: 0x6334, - 3341: 0x6335, - 3342: 0x6336, - 3343: 0x6337, - 3344: 0x6338, - 3345: 0x633B, - 3346: 0x633C, - 3347: 0x633E, - 3348: 0x633F, - 3349: 0x6340, - 3350: 0x6341, - 3351: 0x6344, - 3352: 0x6347, - 3353: 0x6348, - 3354: 0x634A, - 3355: 0x6351, - 3356: 0x6352, - 3357: 0x6353, - 3358: 0x6354, - 3359: 0x6356, - 3360: 0x6357, - 3361: 0x6358, - 3362: 0x6359, - 3363: 0x635A, - 3364: 0x635B, - 3365: 0x635C, - 3366: 0x635D, - 3367: 0x6360, - 3368: 0x6364, - 3369: 0x6365, - 3370: 0x6366, - 3371: 0x6368, - 3372: 0x636A, - 3373: 0x636B, - 3374: 0x636C, - 3375: 0x636F, - 3376: 0x6370, - 3377: 0x6372, - 3378: 0x6373, - 3379: 0x6374, - 3380: 0x6375, - 3381: 0x6378, - 3382: 0x6379, - 3383: 0x637C, - 3384: 0x637D, - 3385: 0x637E, - 3386: 0x637F, - 3387: 0x6381, - 3388: 0x6383, - 3389: 0x6384, - 3390: 0x6385, - 3391: 0x6386, - 3392: 0x638B, - 3393: 0x638D, - 3394: 0x6391, - 3395: 0x6393, - 3396: 0x6394, - 3397: 0x6395, - 3398: 0x6397, - 3399: 0x6399, - 3400: 0x639A, - 3401: 0x639B, - 3402: 0x639C, - 3403: 0x639D, - 3404: 0x639E, - 3405: 0x639F, - 3406: 0x63A1, - 3407: 0x63A4, - 3408: 0x63A6, - 3409: 0x63AB, - 3410: 0x63AF, - 3411: 0x63B1, - 3412: 0x63B2, - 3413: 0x63B5, - 3414: 0x63B6, - 3415: 0x63B9, - 3416: 0x63BB, - 3417: 0x63BD, - 3418: 0x63BF, - 3419: 0x63C0, - 3420: 0x63C1, - 3421: 0x63C2, - 3422: 0x63C3, - 3423: 0x63C5, - 3424: 0x63C7, - 3425: 0x63C8, - 3426: 0x63CA, - 3427: 0x63CB, - 3428: 0x63CC, - 3429: 0x63D1, - 3430: 0x63D3, - 3431: 0x63D4, - 3432: 0x63D5, - 3433: 0x63D7, - 3434: 0x63D8, - 3435: 0x63D9, - 3436: 0x63DA, - 3437: 0x63DB, - 3438: 0x63DC, - 3439: 0x63DD, - 3440: 0x63DF, - 3441: 0x63E2, - 3442: 0x63E4, - 3443: 0x63E5, - 3444: 0x63E6, - 3445: 0x63E7, - 3446: 0x63E8, - 3447: 0x63EB, - 3448: 0x63EC, - 3449: 0x63EE, - 3450: 0x63EF, - 3451: 0x63F0, - 3452: 0x63F1, - 3453: 0x63F3, - 3454: 0x63F5, - 3455: 0x63F7, - 3456: 0x63F9, - 3457: 0x63FA, - 3458: 0x63FB, - 3459: 0x63FC, - 3460: 0x63FE, - 3461: 0x6403, - 3462: 0x6404, - 3463: 0x6406, - 3464: 0x6407, - 3465: 0x6408, - 3466: 0x6409, - 3467: 0x640A, - 3468: 0x640D, - 3469: 0x640E, - 3470: 0x6411, - 3471: 0x6412, - 3472: 0x6415, - 3473: 0x6416, - 3474: 0x6417, - 3475: 0x6418, - 3476: 0x6419, - 3477: 0x641A, - 3478: 0x641D, - 3479: 0x641F, - 3480: 0x6422, - 3481: 0x6423, - 3482: 0x6424, - 3483: 0x6425, - 3484: 0x6427, - 3485: 0x6428, - 3486: 0x6429, - 3487: 0x642B, - 3488: 0x642E, - 3489: 0x642F, - 3490: 0x6430, - 3491: 0x6431, - 3492: 0x6432, - 3493: 0x6433, - 3494: 0x6435, - 3495: 0x6436, - 3496: 0x6437, - 3497: 0x6438, - 3498: 0x6439, - 3499: 0x643B, - 3500: 0x643C, - 3501: 0x643E, - 3502: 0x6440, - 3503: 0x6442, - 3504: 0x6443, - 3505: 0x6449, - 3506: 0x644B, - 3507: 0x644C, - 3508: 0x644D, - 3509: 0x644E, - 3510: 0x644F, - 3511: 0x6450, - 3512: 0x6451, - 3513: 0x6453, - 3514: 0x6455, - 3515: 0x6456, - 3516: 0x6457, - 3517: 0x6459, - 3518: 0x645A, - 3519: 0x645B, - 3520: 0x645C, - 3521: 0x645D, - 3522: 0x645F, - 3523: 0x6460, - 3524: 0x6461, - 3525: 0x6462, - 3526: 0x6463, - 3527: 0x6464, - 3528: 0x6465, - 3529: 0x6466, - 3530: 0x6468, - 3531: 0x646A, - 3532: 0x646B, - 3533: 0x646C, - 3534: 0x646E, - 3535: 0x646F, - 3536: 0x6470, - 3537: 0x6471, - 3538: 0x6472, - 3539: 0x6473, - 3540: 0x6474, - 3541: 0x6475, - 3542: 0x6476, - 3543: 0x6477, - 3544: 0x647B, - 3545: 0x647C, - 3546: 0x647D, - 3547: 0x647E, - 3548: 0x647F, - 3549: 0x6480, - 3550: 0x6481, - 3551: 0x6483, - 3552: 0x6486, - 3553: 0x6488, - 3554: 0x6489, - 3555: 0x648A, - 3556: 0x648B, - 3557: 0x648C, - 3558: 0x648D, - 3559: 0x648E, - 3560: 0x648F, - 3561: 0x6490, - 3562: 0x6493, - 3563: 0x6494, - 3564: 0x6497, - 3565: 0x6498, - 3566: 0x649A, - 3567: 0x649B, - 3568: 0x649C, - 3569: 0x649D, - 3570: 0x649F, - 3571: 0x64A0, - 3572: 0x64A1, - 3573: 0x64A2, - 3574: 0x64A3, - 3575: 0x64A5, - 3576: 0x64A6, - 3577: 0x64A7, - 3578: 0x64A8, - 3579: 0x64AA, - 3580: 0x64AB, - 3581: 0x64AF, - 3582: 0x64B1, - 3583: 0x64B2, - 3584: 0x64B3, - 3585: 0x64B4, - 3586: 0x64B6, - 3587: 0x64B9, - 3588: 0x64BB, - 3589: 0x64BD, - 3590: 0x64BE, - 3591: 0x64BF, - 3592: 0x64C1, - 3593: 0x64C3, - 3594: 0x64C4, - 3595: 0x64C6, - 3596: 0x64C7, - 3597: 0x64C8, - 3598: 0x64C9, - 3599: 0x64CA, - 3600: 0x64CB, - 3601: 0x64CC, - 3602: 0x64CF, - 3603: 0x64D1, - 3604: 0x64D3, - 3605: 0x64D4, - 3606: 0x64D5, - 3607: 0x64D6, - 3608: 0x64D9, - 3609: 0x64DA, - 3610: 0x64DB, - 3611: 0x64DC, - 3612: 0x64DD, - 3613: 0x64DF, - 3614: 0x64E0, - 3615: 0x64E1, - 3616: 0x64E3, - 3617: 0x64E5, - 3618: 0x64E7, - 3619: 0x64E8, - 3620: 0x64E9, - 3621: 0x64EA, - 3622: 0x64EB, - 3623: 0x64EC, - 3624: 0x64ED, - 3625: 0x64EE, - 3626: 0x64EF, - 3627: 0x64F0, - 3628: 0x64F1, - 3629: 0x64F2, - 3630: 0x64F3, - 3631: 0x64F4, - 3632: 0x64F5, - 3633: 0x64F6, - 3634: 0x64F7, - 3635: 0x64F8, - 3636: 0x64F9, - 3637: 0x64FA, - 3638: 0x64FB, - 3639: 0x64FC, - 3640: 0x64FD, - 3641: 0x64FE, - 3642: 0x64FF, - 3643: 0x6501, - 3644: 0x6502, - 3645: 0x6503, - 3646: 0x6504, - 3647: 0x6505, - 3648: 0x6506, - 3649: 0x6507, - 3650: 0x6508, - 3651: 0x650A, - 3652: 0x650B, - 3653: 0x650C, - 3654: 0x650D, - 3655: 0x650E, - 3656: 0x650F, - 3657: 0x6510, - 3658: 0x6511, - 3659: 0x6513, - 3660: 0x6514, - 3661: 0x6515, - 3662: 0x6516, - 3663: 0x6517, - 3664: 0x6519, - 3665: 0x651A, - 3666: 0x651B, - 3667: 0x651C, - 3668: 0x651D, - 3669: 0x651E, - 3670: 0x651F, - 3671: 0x6520, - 3672: 0x6521, - 3673: 0x6522, - 3674: 0x6523, - 3675: 0x6524, - 3676: 0x6526, - 3677: 0x6527, - 3678: 0x6528, - 3679: 0x6529, - 3680: 0x652A, - 3681: 0x652C, - 3682: 0x652D, - 3683: 0x6530, - 3684: 0x6531, - 3685: 0x6532, - 3686: 0x6533, - 3687: 0x6537, - 3688: 0x653A, - 3689: 0x653C, - 3690: 0x653D, - 3691: 0x6540, - 3692: 0x6541, - 3693: 0x6542, - 3694: 0x6543, - 3695: 0x6544, - 3696: 0x6546, - 3697: 0x6547, - 3698: 0x654A, - 3699: 0x654B, - 3700: 0x654D, - 3701: 0x654E, - 3702: 0x6550, - 3703: 0x6552, - 3704: 0x6553, - 3705: 0x6554, - 3706: 0x6557, - 3707: 0x6558, - 3708: 0x655A, - 3709: 0x655C, - 3710: 0x655F, - 3711: 0x6560, - 3712: 0x6561, - 3713: 0x6564, - 3714: 0x6565, - 3715: 0x6567, - 3716: 0x6568, - 3717: 0x6569, - 3718: 0x656A, - 3719: 0x656D, - 3720: 0x656E, - 3721: 0x656F, - 3722: 0x6571, - 3723: 0x6573, - 3724: 0x6575, - 3725: 0x6576, - 3726: 0x6578, - 3727: 0x6579, - 3728: 0x657A, - 3729: 0x657B, - 3730: 0x657C, - 3731: 0x657D, - 3732: 0x657E, - 3733: 0x657F, - 3734: 0x6580, - 3735: 0x6581, - 3736: 0x6582, - 3737: 0x6583, - 3738: 0x6584, - 3739: 0x6585, - 3740: 0x6586, - 3741: 0x6588, - 3742: 0x6589, - 3743: 0x658A, - 3744: 0x658D, - 3745: 0x658E, - 3746: 0x658F, - 3747: 0x6592, - 3748: 0x6594, - 3749: 0x6595, - 3750: 0x6596, - 3751: 0x6598, - 3752: 0x659A, - 3753: 0x659D, - 3754: 0x659E, - 3755: 0x65A0, - 3756: 0x65A2, - 3757: 0x65A3, - 3758: 0x65A6, - 3759: 0x65A8, - 3760: 0x65AA, - 3761: 0x65AC, - 3762: 0x65AE, - 3763: 0x65B1, - 3764: 0x65B2, - 3765: 0x65B3, - 3766: 0x65B4, - 3767: 0x65B5, - 3768: 0x65B6, - 3769: 0x65B7, - 3770: 0x65B8, - 3771: 0x65BA, - 3772: 0x65BB, - 3773: 0x65BE, - 3774: 0x65BF, - 3775: 0x65C0, - 3776: 0x65C2, - 3777: 0x65C7, - 3778: 0x65C8, - 3779: 0x65C9, - 3780: 0x65CA, - 3781: 0x65CD, - 3782: 0x65D0, - 3783: 0x65D1, - 3784: 0x65D3, - 3785: 0x65D4, - 3786: 0x65D5, - 3787: 0x65D8, - 3788: 0x65D9, - 3789: 0x65DA, - 3790: 0x65DB, - 3791: 0x65DC, - 3792: 0x65DD, - 3793: 0x65DE, - 3794: 0x65DF, - 3795: 0x65E1, - 3796: 0x65E3, - 3797: 0x65E4, - 3798: 0x65EA, - 3799: 0x65EB, - 3800: 0x65F2, - 3801: 0x65F3, - 3802: 0x65F4, - 3803: 0x65F5, - 3804: 0x65F8, - 3805: 0x65F9, - 3806: 0x65FB, - 3807: 0x65FC, - 3808: 0x65FD, - 3809: 0x65FE, - 3810: 0x65FF, - 3811: 0x6601, - 3812: 0x6604, - 3813: 0x6605, - 3814: 0x6607, - 3815: 0x6608, - 3816: 0x6609, - 3817: 0x660B, - 3818: 0x660D, - 3819: 0x6610, - 3820: 0x6611, - 3821: 0x6612, - 3822: 0x6616, - 3823: 0x6617, - 3824: 0x6618, - 3825: 0x661A, - 3826: 0x661B, - 3827: 0x661C, - 3828: 0x661E, - 3829: 0x6621, - 3830: 0x6622, - 3831: 0x6623, - 3832: 0x6624, - 3833: 0x6626, - 3834: 0x6629, - 3835: 0x662A, - 3836: 0x662B, - 3837: 0x662C, - 3838: 0x662E, - 3839: 0x6630, - 3840: 0x6632, - 3841: 0x6633, - 3842: 0x6637, - 3843: 0x6638, - 3844: 0x6639, - 3845: 0x663A, - 3846: 0x663B, - 3847: 0x663D, - 3848: 0x663F, - 3849: 0x6640, - 3850: 0x6642, - 3851: 0x6644, - 3852: 0x6645, - 3853: 0x6646, - 3854: 0x6647, - 3855: 0x6648, - 3856: 0x6649, - 3857: 0x664A, - 3858: 0x664D, - 3859: 0x664E, - 3860: 0x6650, - 3861: 0x6651, - 3862: 0x6658, - 3863: 0x6659, - 3864: 0x665B, - 3865: 0x665C, - 3866: 0x665D, - 3867: 0x665E, - 3868: 0x6660, - 3869: 0x6662, - 3870: 0x6663, - 3871: 0x6665, - 3872: 0x6667, - 3873: 0x6669, - 3874: 0x666A, - 3875: 0x666B, - 3876: 0x666C, - 3877: 0x666D, - 3878: 0x6671, - 3879: 0x6672, - 3880: 0x6673, - 3881: 0x6675, - 3882: 0x6678, - 3883: 0x6679, - 3884: 0x667B, - 3885: 0x667C, - 3886: 0x667D, - 3887: 0x667F, - 3888: 0x6680, - 3889: 0x6681, - 3890: 0x6683, - 3891: 0x6685, - 3892: 0x6686, - 3893: 0x6688, - 3894: 0x6689, - 3895: 0x668A, - 3896: 0x668B, - 3897: 0x668D, - 3898: 0x668E, - 3899: 0x668F, - 3900: 0x6690, - 3901: 0x6692, - 3902: 0x6693, - 3903: 0x6694, - 3904: 0x6695, - 3905: 0x6698, - 3906: 0x6699, - 3907: 0x669A, - 3908: 0x669B, - 3909: 0x669C, - 3910: 0x669E, - 3911: 0x669F, - 3912: 0x66A0, - 3913: 0x66A1, - 3914: 0x66A2, - 3915: 0x66A3, - 3916: 0x66A4, - 3917: 0x66A5, - 3918: 0x66A6, - 3919: 0x66A9, - 3920: 0x66AA, - 3921: 0x66AB, - 3922: 0x66AC, - 3923: 0x66AD, - 3924: 0x66AF, - 3925: 0x66B0, - 3926: 0x66B1, - 3927: 0x66B2, - 3928: 0x66B3, - 3929: 0x66B5, - 3930: 0x66B6, - 3931: 0x66B7, - 3932: 0x66B8, - 3933: 0x66BA, - 3934: 0x66BB, - 3935: 0x66BC, - 3936: 0x66BD, - 3937: 0x66BF, - 3938: 0x66C0, - 3939: 0x66C1, - 3940: 0x66C2, - 3941: 0x66C3, - 3942: 0x66C4, - 3943: 0x66C5, - 3944: 0x66C6, - 3945: 0x66C7, - 3946: 0x66C8, - 3947: 0x66C9, - 3948: 0x66CA, - 3949: 0x66CB, - 3950: 0x66CC, - 3951: 0x66CD, - 3952: 0x66CE, - 3953: 0x66CF, - 3954: 0x66D0, - 3955: 0x66D1, - 3956: 0x66D2, - 3957: 0x66D3, - 3958: 0x66D4, - 3959: 0x66D5, - 3960: 0x66D6, - 3961: 0x66D7, - 3962: 0x66D8, - 3963: 0x66DA, - 3964: 0x66DE, - 3965: 0x66DF, - 3966: 0x66E0, - 3967: 0x66E1, - 3968: 0x66E2, - 3969: 0x66E3, - 3970: 0x66E4, - 3971: 0x66E5, - 3972: 0x66E7, - 3973: 0x66E8, - 3974: 0x66EA, - 3975: 0x66EB, - 3976: 0x66EC, - 3977: 0x66ED, - 3978: 0x66EE, - 3979: 0x66EF, - 3980: 0x66F1, - 3981: 0x66F5, - 3982: 0x66F6, - 3983: 0x66F8, - 3984: 0x66FA, - 3985: 0x66FB, - 3986: 0x66FD, - 3987: 0x6701, - 3988: 0x6702, - 3989: 0x6703, - 3990: 0x6704, - 3991: 0x6705, - 3992: 0x6706, - 3993: 0x6707, - 3994: 0x670C, - 3995: 0x670E, - 3996: 0x670F, - 3997: 0x6711, - 3998: 0x6712, - 3999: 0x6713, - 4000: 0x6716, - 4001: 0x6718, - 4002: 0x6719, - 4003: 0x671A, - 4004: 0x671C, - 4005: 0x671E, - 4006: 0x6720, - 4007: 0x6721, - 4008: 0x6722, - 4009: 0x6723, - 4010: 0x6724, - 4011: 0x6725, - 4012: 0x6727, - 4013: 0x6729, - 4014: 0x672E, - 4015: 0x6730, - 4016: 0x6732, - 4017: 0x6733, - 4018: 0x6736, - 4019: 0x6737, - 4020: 0x6738, - 4021: 0x6739, - 4022: 0x673B, - 4023: 0x673C, - 4024: 0x673E, - 4025: 0x673F, - 4026: 0x6741, - 4027: 0x6744, - 4028: 0x6745, - 4029: 0x6747, - 4030: 0x674A, - 4031: 0x674B, - 4032: 0x674D, - 4033: 0x6752, - 4034: 0x6754, - 4035: 0x6755, - 4036: 0x6757, - 4037: 0x6758, - 4038: 0x6759, - 4039: 0x675A, - 4040: 0x675B, - 4041: 0x675D, - 4042: 0x6762, - 4043: 0x6763, - 4044: 0x6764, - 4045: 0x6766, - 4046: 0x6767, - 4047: 0x676B, - 4048: 0x676C, - 4049: 0x676E, - 4050: 0x6771, - 4051: 0x6774, - 4052: 0x6776, - 4053: 0x6778, - 4054: 0x6779, - 4055: 0x677A, - 4056: 0x677B, - 4057: 0x677D, - 4058: 0x6780, - 4059: 0x6782, - 4060: 0x6783, - 4061: 0x6785, - 4062: 0x6786, - 4063: 0x6788, - 4064: 0x678A, - 4065: 0x678C, - 4066: 0x678D, - 4067: 0x678E, - 4068: 0x678F, - 4069: 0x6791, - 4070: 0x6792, - 4071: 0x6793, - 4072: 0x6794, - 4073: 0x6796, - 4074: 0x6799, - 4075: 0x679B, - 4076: 0x679F, - 4077: 0x67A0, - 4078: 0x67A1, - 4079: 0x67A4, - 4080: 0x67A6, - 4081: 0x67A9, - 4082: 0x67AC, - 4083: 0x67AE, - 4084: 0x67B1, - 4085: 0x67B2, - 4086: 0x67B4, - 4087: 0x67B9, - 4088: 0x67BA, - 4089: 0x67BB, - 4090: 0x67BC, - 4091: 0x67BD, - 4092: 0x67BE, - 4093: 0x67BF, - 4094: 0x67C0, - 4095: 0x67C2, - 4096: 0x67C5, - 4097: 0x67C6, - 4098: 0x67C7, - 4099: 0x67C8, - 4100: 0x67C9, - 4101: 0x67CA, - 4102: 0x67CB, - 4103: 0x67CC, - 4104: 0x67CD, - 4105: 0x67CE, - 4106: 0x67D5, - 4107: 0x67D6, - 4108: 0x67D7, - 4109: 0x67DB, - 4110: 0x67DF, - 4111: 0x67E1, - 4112: 0x67E3, - 4113: 0x67E4, - 4114: 0x67E6, - 4115: 0x67E7, - 4116: 0x67E8, - 4117: 0x67EA, - 4118: 0x67EB, - 4119: 0x67ED, - 4120: 0x67EE, - 4121: 0x67F2, - 4122: 0x67F5, - 4123: 0x67F6, - 4124: 0x67F7, - 4125: 0x67F8, - 4126: 0x67F9, - 4127: 0x67FA, - 4128: 0x67FB, - 4129: 0x67FC, - 4130: 0x67FE, - 4131: 0x6801, - 4132: 0x6802, - 4133: 0x6803, - 4134: 0x6804, - 4135: 0x6806, - 4136: 0x680D, - 4137: 0x6810, - 4138: 0x6812, - 4139: 0x6814, - 4140: 0x6815, - 4141: 0x6818, - 4142: 0x6819, - 4143: 0x681A, - 4144: 0x681B, - 4145: 0x681C, - 4146: 0x681E, - 4147: 0x681F, - 4148: 0x6820, - 4149: 0x6822, - 4150: 0x6823, - 4151: 0x6824, - 4152: 0x6825, - 4153: 0x6826, - 4154: 0x6827, - 4155: 0x6828, - 4156: 0x682B, - 4157: 0x682C, - 4158: 0x682D, - 4159: 0x682E, - 4160: 0x682F, - 4161: 0x6830, - 4162: 0x6831, - 4163: 0x6834, - 4164: 0x6835, - 4165: 0x6836, - 4166: 0x683A, - 4167: 0x683B, - 4168: 0x683F, - 4169: 0x6847, - 4170: 0x684B, - 4171: 0x684D, - 4172: 0x684F, - 4173: 0x6852, - 4174: 0x6856, - 4175: 0x6857, - 4176: 0x6858, - 4177: 0x6859, - 4178: 0x685A, - 4179: 0x685B, - 4180: 0x685C, - 4181: 0x685D, - 4182: 0x685E, - 4183: 0x685F, - 4184: 0x686A, - 4185: 0x686C, - 4186: 0x686D, - 4187: 0x686E, - 4188: 0x686F, - 4189: 0x6870, - 4190: 0x6871, - 4191: 0x6872, - 4192: 0x6873, - 4193: 0x6875, - 4194: 0x6878, - 4195: 0x6879, - 4196: 0x687A, - 4197: 0x687B, - 4198: 0x687C, - 4199: 0x687D, - 4200: 0x687E, - 4201: 0x687F, - 4202: 0x6880, - 4203: 0x6882, - 4204: 0x6884, - 4205: 0x6887, - 4206: 0x6888, - 4207: 0x6889, - 4208: 0x688A, - 4209: 0x688B, - 4210: 0x688C, - 4211: 0x688D, - 4212: 0x688E, - 4213: 0x6890, - 4214: 0x6891, - 4215: 0x6892, - 4216: 0x6894, - 4217: 0x6895, - 4218: 0x6896, - 4219: 0x6898, - 4220: 0x6899, - 4221: 0x689A, - 4222: 0x689B, - 4223: 0x689C, - 4224: 0x689D, - 4225: 0x689E, - 4226: 0x689F, - 4227: 0x68A0, - 4228: 0x68A1, - 4229: 0x68A3, - 4230: 0x68A4, - 4231: 0x68A5, - 4232: 0x68A9, - 4233: 0x68AA, - 4234: 0x68AB, - 4235: 0x68AC, - 4236: 0x68AE, - 4237: 0x68B1, - 4238: 0x68B2, - 4239: 0x68B4, - 4240: 0x68B6, - 4241: 0x68B7, - 4242: 0x68B8, - 4243: 0x68B9, - 4244: 0x68BA, - 4245: 0x68BB, - 4246: 0x68BC, - 4247: 0x68BD, - 4248: 0x68BE, - 4249: 0x68BF, - 4250: 0x68C1, - 4251: 0x68C3, - 4252: 0x68C4, - 4253: 0x68C5, - 4254: 0x68C6, - 4255: 0x68C7, - 4256: 0x68C8, - 4257: 0x68CA, - 4258: 0x68CC, - 4259: 0x68CE, - 4260: 0x68CF, - 4261: 0x68D0, - 4262: 0x68D1, - 4263: 0x68D3, - 4264: 0x68D4, - 4265: 0x68D6, - 4266: 0x68D7, - 4267: 0x68D9, - 4268: 0x68DB, - 4269: 0x68DC, - 4270: 0x68DD, - 4271: 0x68DE, - 4272: 0x68DF, - 4273: 0x68E1, - 4274: 0x68E2, - 4275: 0x68E4, - 4276: 0x68E5, - 4277: 0x68E6, - 4278: 0x68E7, - 4279: 0x68E8, - 4280: 0x68E9, - 4281: 0x68EA, - 4282: 0x68EB, - 4283: 0x68EC, - 4284: 0x68ED, - 4285: 0x68EF, - 4286: 0x68F2, - 4287: 0x68F3, - 4288: 0x68F4, - 4289: 0x68F6, - 4290: 0x68F7, - 4291: 0x68F8, - 4292: 0x68FB, - 4293: 0x68FD, - 4294: 0x68FE, - 4295: 0x68FF, - 4296: 0x6900, - 4297: 0x6902, - 4298: 0x6903, - 4299: 0x6904, - 4300: 0x6906, - 4301: 0x6907, - 4302: 0x6908, - 4303: 0x6909, - 4304: 0x690A, - 4305: 0x690C, - 4306: 0x690F, - 4307: 0x6911, - 4308: 0x6913, - 4309: 0x6914, - 4310: 0x6915, - 4311: 0x6916, - 4312: 0x6917, - 4313: 0x6918, - 4314: 0x6919, - 4315: 0x691A, - 4316: 0x691B, - 4317: 0x691C, - 4318: 0x691D, - 4319: 0x691E, - 4320: 0x6921, - 4321: 0x6922, - 4322: 0x6923, - 4323: 0x6925, - 4324: 0x6926, - 4325: 0x6927, - 4326: 0x6928, - 4327: 0x6929, - 4328: 0x692A, - 4329: 0x692B, - 4330: 0x692C, - 4331: 0x692E, - 4332: 0x692F, - 4333: 0x6931, - 4334: 0x6932, - 4335: 0x6933, - 4336: 0x6935, - 4337: 0x6936, - 4338: 0x6937, - 4339: 0x6938, - 4340: 0x693A, - 4341: 0x693B, - 4342: 0x693C, - 4343: 0x693E, - 4344: 0x6940, - 4345: 0x6941, - 4346: 0x6943, - 4347: 0x6944, - 4348: 0x6945, - 4349: 0x6946, - 4350: 0x6947, - 4351: 0x6948, - 4352: 0x6949, - 4353: 0x694A, - 4354: 0x694B, - 4355: 0x694C, - 4356: 0x694D, - 4357: 0x694E, - 4358: 0x694F, - 4359: 0x6950, - 4360: 0x6951, - 4361: 0x6952, - 4362: 0x6953, - 4363: 0x6955, - 4364: 0x6956, - 4365: 0x6958, - 4366: 0x6959, - 4367: 0x695B, - 4368: 0x695C, - 4369: 0x695F, - 4370: 0x6961, - 4371: 0x6962, - 4372: 0x6964, - 4373: 0x6965, - 4374: 0x6967, - 4375: 0x6968, - 4376: 0x6969, - 4377: 0x696A, - 4378: 0x696C, - 4379: 0x696D, - 4380: 0x696F, - 4381: 0x6970, - 4382: 0x6972, - 4383: 0x6973, - 4384: 0x6974, - 4385: 0x6975, - 4386: 0x6976, - 4387: 0x697A, - 4388: 0x697B, - 4389: 0x697D, - 4390: 0x697E, - 4391: 0x697F, - 4392: 0x6981, - 4393: 0x6983, - 4394: 0x6985, - 4395: 0x698A, - 4396: 0x698B, - 4397: 0x698C, - 4398: 0x698E, - 4399: 0x698F, - 4400: 0x6990, - 4401: 0x6991, - 4402: 0x6992, - 4403: 0x6993, - 4404: 0x6996, - 4405: 0x6997, - 4406: 0x6999, - 4407: 0x699A, - 4408: 0x699D, - 4409: 0x699E, - 4410: 0x699F, - 4411: 0x69A0, - 4412: 0x69A1, - 4413: 0x69A2, - 4414: 0x69A3, - 4415: 0x69A4, - 4416: 0x69A5, - 4417: 0x69A6, - 4418: 0x69A9, - 4419: 0x69AA, - 4420: 0x69AC, - 4421: 0x69AE, - 4422: 0x69AF, - 4423: 0x69B0, - 4424: 0x69B2, - 4425: 0x69B3, - 4426: 0x69B5, - 4427: 0x69B6, - 4428: 0x69B8, - 4429: 0x69B9, - 4430: 0x69BA, - 4431: 0x69BC, - 4432: 0x69BD, - 4433: 0x69BE, - 4434: 0x69BF, - 4435: 0x69C0, - 4436: 0x69C2, - 4437: 0x69C3, - 4438: 0x69C4, - 4439: 0x69C5, - 4440: 0x69C6, - 4441: 0x69C7, - 4442: 0x69C8, - 4443: 0x69C9, - 4444: 0x69CB, - 4445: 0x69CD, - 4446: 0x69CF, - 4447: 0x69D1, - 4448: 0x69D2, - 4449: 0x69D3, - 4450: 0x69D5, - 4451: 0x69D6, - 4452: 0x69D7, - 4453: 0x69D8, - 4454: 0x69D9, - 4455: 0x69DA, - 4456: 0x69DC, - 4457: 0x69DD, - 4458: 0x69DE, - 4459: 0x69E1, - 4460: 0x69E2, - 4461: 0x69E3, - 4462: 0x69E4, - 4463: 0x69E5, - 4464: 0x69E6, - 4465: 0x69E7, - 4466: 0x69E8, - 4467: 0x69E9, - 4468: 0x69EA, - 4469: 0x69EB, - 4470: 0x69EC, - 4471: 0x69EE, - 4472: 0x69EF, - 4473: 0x69F0, - 4474: 0x69F1, - 4475: 0x69F3, - 4476: 0x69F4, - 4477: 0x69F5, - 4478: 0x69F6, - 4479: 0x69F7, - 4480: 0x69F8, - 4481: 0x69F9, - 4482: 0x69FA, - 4483: 0x69FB, - 4484: 0x69FC, - 4485: 0x69FE, - 4486: 0x6A00, - 4487: 0x6A01, - 4488: 0x6A02, - 4489: 0x6A03, - 4490: 0x6A04, - 4491: 0x6A05, - 4492: 0x6A06, - 4493: 0x6A07, - 4494: 0x6A08, - 4495: 0x6A09, - 4496: 0x6A0B, - 4497: 0x6A0C, - 4498: 0x6A0D, - 4499: 0x6A0E, - 4500: 0x6A0F, - 4501: 0x6A10, - 4502: 0x6A11, - 4503: 0x6A12, - 4504: 0x6A13, - 4505: 0x6A14, - 4506: 0x6A15, - 4507: 0x6A16, - 4508: 0x6A19, - 4509: 0x6A1A, - 4510: 0x6A1B, - 4511: 0x6A1C, - 4512: 0x6A1D, - 4513: 0x6A1E, - 4514: 0x6A20, - 4515: 0x6A22, - 4516: 0x6A23, - 4517: 0x6A24, - 4518: 0x6A25, - 4519: 0x6A26, - 4520: 0x6A27, - 4521: 0x6A29, - 4522: 0x6A2B, - 4523: 0x6A2C, - 4524: 0x6A2D, - 4525: 0x6A2E, - 4526: 0x6A30, - 4527: 0x6A32, - 4528: 0x6A33, - 4529: 0x6A34, - 4530: 0x6A36, - 4531: 0x6A37, - 4532: 0x6A38, - 4533: 0x6A39, - 4534: 0x6A3A, - 4535: 0x6A3B, - 4536: 0x6A3C, - 4537: 0x6A3F, - 4538: 0x6A40, - 4539: 0x6A41, - 4540: 0x6A42, - 4541: 0x6A43, - 4542: 0x6A45, - 4543: 0x6A46, - 4544: 0x6A48, - 4545: 0x6A49, - 4546: 0x6A4A, - 4547: 0x6A4B, - 4548: 0x6A4C, - 4549: 0x6A4D, - 4550: 0x6A4E, - 4551: 0x6A4F, - 4552: 0x6A51, - 4553: 0x6A52, - 4554: 0x6A53, - 4555: 0x6A54, - 4556: 0x6A55, - 4557: 0x6A56, - 4558: 0x6A57, - 4559: 0x6A5A, - 4560: 0x6A5C, - 4561: 0x6A5D, - 4562: 0x6A5E, - 4563: 0x6A5F, - 4564: 0x6A60, - 4565: 0x6A62, - 4566: 0x6A63, - 4567: 0x6A64, - 4568: 0x6A66, - 4569: 0x6A67, - 4570: 0x6A68, - 4571: 0x6A69, - 4572: 0x6A6A, - 4573: 0x6A6B, - 4574: 0x6A6C, - 4575: 0x6A6D, - 4576: 0x6A6E, - 4577: 0x6A6F, - 4578: 0x6A70, - 4579: 0x6A72, - 4580: 0x6A73, - 4581: 0x6A74, - 4582: 0x6A75, - 4583: 0x6A76, - 4584: 0x6A77, - 4585: 0x6A78, - 4586: 0x6A7A, - 4587: 0x6A7B, - 4588: 0x6A7D, - 4589: 0x6A7E, - 4590: 0x6A7F, - 4591: 0x6A81, - 4592: 0x6A82, - 4593: 0x6A83, - 4594: 0x6A85, - 4595: 0x6A86, - 4596: 0x6A87, - 4597: 0x6A88, - 4598: 0x6A89, - 4599: 0x6A8A, - 4600: 0x6A8B, - 4601: 0x6A8C, - 4602: 0x6A8D, - 4603: 0x6A8F, - 4604: 0x6A92, - 4605: 0x6A93, - 4606: 0x6A94, - 4607: 0x6A95, - 4608: 0x6A96, - 4609: 0x6A98, - 4610: 0x6A99, - 4611: 0x6A9A, - 4612: 0x6A9B, - 4613: 0x6A9C, - 4614: 0x6A9D, - 4615: 0x6A9E, - 4616: 0x6A9F, - 4617: 0x6AA1, - 4618: 0x6AA2, - 4619: 0x6AA3, - 4620: 0x6AA4, - 4621: 0x6AA5, - 4622: 0x6AA6, - 4623: 0x6AA7, - 4624: 0x6AA8, - 4625: 0x6AAA, - 4626: 0x6AAD, - 4627: 0x6AAE, - 4628: 0x6AAF, - 4629: 0x6AB0, - 4630: 0x6AB1, - 4631: 0x6AB2, - 4632: 0x6AB3, - 4633: 0x6AB4, - 4634: 0x6AB5, - 4635: 0x6AB6, - 4636: 0x6AB7, - 4637: 0x6AB8, - 4638: 0x6AB9, - 4639: 0x6ABA, - 4640: 0x6ABB, - 4641: 0x6ABC, - 4642: 0x6ABD, - 4643: 0x6ABE, - 4644: 0x6ABF, - 4645: 0x6AC0, - 4646: 0x6AC1, - 4647: 0x6AC2, - 4648: 0x6AC3, - 4649: 0x6AC4, - 4650: 0x6AC5, - 4651: 0x6AC6, - 4652: 0x6AC7, - 4653: 0x6AC8, - 4654: 0x6AC9, - 4655: 0x6ACA, - 4656: 0x6ACB, - 4657: 0x6ACC, - 4658: 0x6ACD, - 4659: 0x6ACE, - 4660: 0x6ACF, - 4661: 0x6AD0, - 4662: 0x6AD1, - 4663: 0x6AD2, - 4664: 0x6AD3, - 4665: 0x6AD4, - 4666: 0x6AD5, - 4667: 0x6AD6, - 4668: 0x6AD7, - 4669: 0x6AD8, - 4670: 0x6AD9, - 4671: 0x6ADA, - 4672: 0x6ADB, - 4673: 0x6ADC, - 4674: 0x6ADD, - 4675: 0x6ADE, - 4676: 0x6ADF, - 4677: 0x6AE0, - 4678: 0x6AE1, - 4679: 0x6AE2, - 4680: 0x6AE3, - 4681: 0x6AE4, - 4682: 0x6AE5, - 4683: 0x6AE6, - 4684: 0x6AE7, - 4685: 0x6AE8, - 4686: 0x6AE9, - 4687: 0x6AEA, - 4688: 0x6AEB, - 4689: 0x6AEC, - 4690: 0x6AED, - 4691: 0x6AEE, - 4692: 0x6AEF, - 4693: 0x6AF0, - 4694: 0x6AF1, - 4695: 0x6AF2, - 4696: 0x6AF3, - 4697: 0x6AF4, - 4698: 0x6AF5, - 4699: 0x6AF6, - 4700: 0x6AF7, - 4701: 0x6AF8, - 4702: 0x6AF9, - 4703: 0x6AFA, - 4704: 0x6AFB, - 4705: 0x6AFC, - 4706: 0x6AFD, - 4707: 0x6AFE, - 4708: 0x6AFF, - 4709: 0x6B00, - 4710: 0x6B01, - 4711: 0x6B02, - 4712: 0x6B03, - 4713: 0x6B04, - 4714: 0x6B05, - 4715: 0x6B06, - 4716: 0x6B07, - 4717: 0x6B08, - 4718: 0x6B09, - 4719: 0x6B0A, - 4720: 0x6B0B, - 4721: 0x6B0C, - 4722: 0x6B0D, - 4723: 0x6B0E, - 4724: 0x6B0F, - 4725: 0x6B10, - 4726: 0x6B11, - 4727: 0x6B12, - 4728: 0x6B13, - 4729: 0x6B14, - 4730: 0x6B15, - 4731: 0x6B16, - 4732: 0x6B17, - 4733: 0x6B18, - 4734: 0x6B19, - 4735: 0x6B1A, - 4736: 0x6B1B, - 4737: 0x6B1C, - 4738: 0x6B1D, - 4739: 0x6B1E, - 4740: 0x6B1F, - 4741: 0x6B25, - 4742: 0x6B26, - 4743: 0x6B28, - 4744: 0x6B29, - 4745: 0x6B2A, - 4746: 0x6B2B, - 4747: 0x6B2C, - 4748: 0x6B2D, - 4749: 0x6B2E, - 4750: 0x6B2F, - 4751: 0x6B30, - 4752: 0x6B31, - 4753: 0x6B33, - 4754: 0x6B34, - 4755: 0x6B35, - 4756: 0x6B36, - 4757: 0x6B38, - 4758: 0x6B3B, - 4759: 0x6B3C, - 4760: 0x6B3D, - 4761: 0x6B3F, - 4762: 0x6B40, - 4763: 0x6B41, - 4764: 0x6B42, - 4765: 0x6B44, - 4766: 0x6B45, - 4767: 0x6B48, - 4768: 0x6B4A, - 4769: 0x6B4B, - 4770: 0x6B4D, - 4771: 0x6B4E, - 4772: 0x6B4F, - 4773: 0x6B50, - 4774: 0x6B51, - 4775: 0x6B52, - 4776: 0x6B53, - 4777: 0x6B54, - 4778: 0x6B55, - 4779: 0x6B56, - 4780: 0x6B57, - 4781: 0x6B58, - 4782: 0x6B5A, - 4783: 0x6B5B, - 4784: 0x6B5C, - 4785: 0x6B5D, - 4786: 0x6B5E, - 4787: 0x6B5F, - 4788: 0x6B60, - 4789: 0x6B61, - 4790: 0x6B68, - 4791: 0x6B69, - 4792: 0x6B6B, - 4793: 0x6B6C, - 4794: 0x6B6D, - 4795: 0x6B6E, - 4796: 0x6B6F, - 4797: 0x6B70, - 4798: 0x6B71, - 4799: 0x6B72, - 4800: 0x6B73, - 4801: 0x6B74, - 4802: 0x6B75, - 4803: 0x6B76, - 4804: 0x6B77, - 4805: 0x6B78, - 4806: 0x6B7A, - 4807: 0x6B7D, - 4808: 0x6B7E, - 4809: 0x6B7F, - 4810: 0x6B80, - 4811: 0x6B85, - 4812: 0x6B88, - 4813: 0x6B8C, - 4814: 0x6B8E, - 4815: 0x6B8F, - 4816: 0x6B90, - 4817: 0x6B91, - 4818: 0x6B94, - 4819: 0x6B95, - 4820: 0x6B97, - 4821: 0x6B98, - 4822: 0x6B99, - 4823: 0x6B9C, - 4824: 0x6B9D, - 4825: 0x6B9E, - 4826: 0x6B9F, - 4827: 0x6BA0, - 4828: 0x6BA2, - 4829: 0x6BA3, - 4830: 0x6BA4, - 4831: 0x6BA5, - 4832: 0x6BA6, - 4833: 0x6BA7, - 4834: 0x6BA8, - 4835: 0x6BA9, - 4836: 0x6BAB, - 4837: 0x6BAC, - 4838: 0x6BAD, - 4839: 0x6BAE, - 4840: 0x6BAF, - 4841: 0x6BB0, - 4842: 0x6BB1, - 4843: 0x6BB2, - 4844: 0x6BB6, - 4845: 0x6BB8, - 4846: 0x6BB9, - 4847: 0x6BBA, - 4848: 0x6BBB, - 4849: 0x6BBC, - 4850: 0x6BBD, - 4851: 0x6BBE, - 4852: 0x6BC0, - 4853: 0x6BC3, - 4854: 0x6BC4, - 4855: 0x6BC6, - 4856: 0x6BC7, - 4857: 0x6BC8, - 4858: 0x6BC9, - 4859: 0x6BCA, - 4860: 0x6BCC, - 4861: 0x6BCE, - 4862: 0x6BD0, - 4863: 0x6BD1, - 4864: 0x6BD8, - 4865: 0x6BDA, - 4866: 0x6BDC, - 4867: 0x6BDD, - 4868: 0x6BDE, - 4869: 0x6BDF, - 4870: 0x6BE0, - 4871: 0x6BE2, - 4872: 0x6BE3, - 4873: 0x6BE4, - 4874: 0x6BE5, - 4875: 0x6BE6, - 4876: 0x6BE7, - 4877: 0x6BE8, - 4878: 0x6BE9, - 4879: 0x6BEC, - 4880: 0x6BED, - 4881: 0x6BEE, - 4882: 0x6BF0, - 4883: 0x6BF1, - 4884: 0x6BF2, - 4885: 0x6BF4, - 4886: 0x6BF6, - 4887: 0x6BF7, - 4888: 0x6BF8, - 4889: 0x6BFA, - 4890: 0x6BFB, - 4891: 0x6BFC, - 4892: 0x6BFE, - 4893: 0x6BFF, - 4894: 0x6C00, - 4895: 0x6C01, - 4896: 0x6C02, - 4897: 0x6C03, - 4898: 0x6C04, - 4899: 0x6C08, - 4900: 0x6C09, - 4901: 0x6C0A, - 4902: 0x6C0B, - 4903: 0x6C0C, - 4904: 0x6C0E, - 4905: 0x6C12, - 4906: 0x6C17, - 4907: 0x6C1C, - 4908: 0x6C1D, - 4909: 0x6C1E, - 4910: 0x6C20, - 4911: 0x6C23, - 4912: 0x6C25, - 4913: 0x6C2B, - 4914: 0x6C2C, - 4915: 0x6C2D, - 4916: 0x6C31, - 4917: 0x6C33, - 4918: 0x6C36, - 4919: 0x6C37, - 4920: 0x6C39, - 4921: 0x6C3A, - 4922: 0x6C3B, - 4923: 0x6C3C, - 4924: 0x6C3E, - 4925: 0x6C3F, - 4926: 0x6C43, - 4927: 0x6C44, - 4928: 0x6C45, - 4929: 0x6C48, - 4930: 0x6C4B, - 4931: 0x6C4C, - 4932: 0x6C4D, - 4933: 0x6C4E, - 4934: 0x6C4F, - 4935: 0x6C51, - 4936: 0x6C52, - 4937: 0x6C53, - 4938: 0x6C56, - 4939: 0x6C58, - 4940: 0x6C59, - 4941: 0x6C5A, - 4942: 0x6C62, - 4943: 0x6C63, - 4944: 0x6C65, - 4945: 0x6C66, - 4946: 0x6C67, - 4947: 0x6C6B, - 4948: 0x6C6C, - 4949: 0x6C6D, - 4950: 0x6C6E, - 4951: 0x6C6F, - 4952: 0x6C71, - 4953: 0x6C73, - 4954: 0x6C75, - 4955: 0x6C77, - 4956: 0x6C78, - 4957: 0x6C7A, - 4958: 0x6C7B, - 4959: 0x6C7C, - 4960: 0x6C7F, - 4961: 0x6C80, - 4962: 0x6C84, - 4963: 0x6C87, - 4964: 0x6C8A, - 4965: 0x6C8B, - 4966: 0x6C8D, - 4967: 0x6C8E, - 4968: 0x6C91, - 4969: 0x6C92, - 4970: 0x6C95, - 4971: 0x6C96, - 4972: 0x6C97, - 4973: 0x6C98, - 4974: 0x6C9A, - 4975: 0x6C9C, - 4976: 0x6C9D, - 4977: 0x6C9E, - 4978: 0x6CA0, - 4979: 0x6CA2, - 4980: 0x6CA8, - 4981: 0x6CAC, - 4982: 0x6CAF, - 4983: 0x6CB0, - 4984: 0x6CB4, - 4985: 0x6CB5, - 4986: 0x6CB6, - 4987: 0x6CB7, - 4988: 0x6CBA, - 4989: 0x6CC0, - 4990: 0x6CC1, - 4991: 0x6CC2, - 4992: 0x6CC3, - 4993: 0x6CC6, - 4994: 0x6CC7, - 4995: 0x6CC8, - 4996: 0x6CCB, - 4997: 0x6CCD, - 4998: 0x6CCE, - 4999: 0x6CCF, - 5000: 0x6CD1, - 5001: 0x6CD2, - 5002: 0x6CD8, - 5003: 0x6CD9, - 5004: 0x6CDA, - 5005: 0x6CDC, - 5006: 0x6CDD, - 5007: 0x6CDF, - 5008: 0x6CE4, - 5009: 0x6CE6, - 5010: 0x6CE7, - 5011: 0x6CE9, - 5012: 0x6CEC, - 5013: 0x6CED, - 5014: 0x6CF2, - 5015: 0x6CF4, - 5016: 0x6CF9, - 5017: 0x6CFF, - 5018: 0x6D00, - 5019: 0x6D02, - 5020: 0x6D03, - 5021: 0x6D05, - 5022: 0x6D06, - 5023: 0x6D08, - 5024: 0x6D09, - 5025: 0x6D0A, - 5026: 0x6D0D, - 5027: 0x6D0F, - 5028: 0x6D10, - 5029: 0x6D11, - 5030: 0x6D13, - 5031: 0x6D14, - 5032: 0x6D15, - 5033: 0x6D16, - 5034: 0x6D18, - 5035: 0x6D1C, - 5036: 0x6D1D, - 5037: 0x6D1F, - 5038: 0x6D20, - 5039: 0x6D21, - 5040: 0x6D22, - 5041: 0x6D23, - 5042: 0x6D24, - 5043: 0x6D26, - 5044: 0x6D28, - 5045: 0x6D29, - 5046: 0x6D2C, - 5047: 0x6D2D, - 5048: 0x6D2F, - 5049: 0x6D30, - 5050: 0x6D34, - 5051: 0x6D36, - 5052: 0x6D37, - 5053: 0x6D38, - 5054: 0x6D3A, - 5055: 0x6D3F, - 5056: 0x6D40, - 5057: 0x6D42, - 5058: 0x6D44, - 5059: 0x6D49, - 5060: 0x6D4C, - 5061: 0x6D50, - 5062: 0x6D55, - 5063: 0x6D56, - 5064: 0x6D57, - 5065: 0x6D58, - 5066: 0x6D5B, - 5067: 0x6D5D, - 5068: 0x6D5F, - 5069: 0x6D61, - 5070: 0x6D62, - 5071: 0x6D64, - 5072: 0x6D65, - 5073: 0x6D67, - 5074: 0x6D68, - 5075: 0x6D6B, - 5076: 0x6D6C, - 5077: 0x6D6D, - 5078: 0x6D70, - 5079: 0x6D71, - 5080: 0x6D72, - 5081: 0x6D73, - 5082: 0x6D75, - 5083: 0x6D76, - 5084: 0x6D79, - 5085: 0x6D7A, - 5086: 0x6D7B, - 5087: 0x6D7D, - 5088: 0x6D7E, - 5089: 0x6D7F, - 5090: 0x6D80, - 5091: 0x6D81, - 5092: 0x6D83, - 5093: 0x6D84, - 5094: 0x6D86, - 5095: 0x6D87, - 5096: 0x6D8A, - 5097: 0x6D8B, - 5098: 0x6D8D, - 5099: 0x6D8F, - 5100: 0x6D90, - 5101: 0x6D92, - 5102: 0x6D96, - 5103: 0x6D97, - 5104: 0x6D98, - 5105: 0x6D99, - 5106: 0x6D9A, - 5107: 0x6D9C, - 5108: 0x6DA2, - 5109: 0x6DA5, - 5110: 0x6DAC, - 5111: 0x6DAD, - 5112: 0x6DB0, - 5113: 0x6DB1, - 5114: 0x6DB3, - 5115: 0x6DB4, - 5116: 0x6DB6, - 5117: 0x6DB7, - 5118: 0x6DB9, - 5119: 0x6DBA, - 5120: 0x6DBB, - 5121: 0x6DBC, - 5122: 0x6DBD, - 5123: 0x6DBE, - 5124: 0x6DC1, - 5125: 0x6DC2, - 5126: 0x6DC3, - 5127: 0x6DC8, - 5128: 0x6DC9, - 5129: 0x6DCA, - 5130: 0x6DCD, - 5131: 0x6DCE, - 5132: 0x6DCF, - 5133: 0x6DD0, - 5134: 0x6DD2, - 5135: 0x6DD3, - 5136: 0x6DD4, - 5137: 0x6DD5, - 5138: 0x6DD7, - 5139: 0x6DDA, - 5140: 0x6DDB, - 5141: 0x6DDC, - 5142: 0x6DDF, - 5143: 0x6DE2, - 5144: 0x6DE3, - 5145: 0x6DE5, - 5146: 0x6DE7, - 5147: 0x6DE8, - 5148: 0x6DE9, - 5149: 0x6DEA, - 5150: 0x6DED, - 5151: 0x6DEF, - 5152: 0x6DF0, - 5153: 0x6DF2, - 5154: 0x6DF4, - 5155: 0x6DF5, - 5156: 0x6DF6, - 5157: 0x6DF8, - 5158: 0x6DFA, - 5159: 0x6DFD, - 5160: 0x6DFE, - 5161: 0x6DFF, - 5162: 0x6E00, - 5163: 0x6E01, - 5164: 0x6E02, - 5165: 0x6E03, - 5166: 0x6E04, - 5167: 0x6E06, - 5168: 0x6E07, - 5169: 0x6E08, - 5170: 0x6E09, - 5171: 0x6E0B, - 5172: 0x6E0F, - 5173: 0x6E12, - 5174: 0x6E13, - 5175: 0x6E15, - 5176: 0x6E18, - 5177: 0x6E19, - 5178: 0x6E1B, - 5179: 0x6E1C, - 5180: 0x6E1E, - 5181: 0x6E1F, - 5182: 0x6E22, - 5183: 0x6E26, - 5184: 0x6E27, - 5185: 0x6E28, - 5186: 0x6E2A, - 5187: 0x6E2C, - 5188: 0x6E2E, - 5189: 0x6E30, - 5190: 0x6E31, - 5191: 0x6E33, - 5192: 0x6E35, - 5193: 0x6E36, - 5194: 0x6E37, - 5195: 0x6E39, - 5196: 0x6E3B, - 5197: 0x6E3C, - 5198: 0x6E3D, - 5199: 0x6E3E, - 5200: 0x6E3F, - 5201: 0x6E40, - 5202: 0x6E41, - 5203: 0x6E42, - 5204: 0x6E45, - 5205: 0x6E46, - 5206: 0x6E47, - 5207: 0x6E48, - 5208: 0x6E49, - 5209: 0x6E4A, - 5210: 0x6E4B, - 5211: 0x6E4C, - 5212: 0x6E4F, - 5213: 0x6E50, - 5214: 0x6E51, - 5215: 0x6E52, - 5216: 0x6E55, - 5217: 0x6E57, - 5218: 0x6E59, - 5219: 0x6E5A, - 5220: 0x6E5C, - 5221: 0x6E5D, - 5222: 0x6E5E, - 5223: 0x6E60, - 5224: 0x6E61, - 5225: 0x6E62, - 5226: 0x6E63, - 5227: 0x6E64, - 5228: 0x6E65, - 5229: 0x6E66, - 5230: 0x6E67, - 5231: 0x6E68, - 5232: 0x6E69, - 5233: 0x6E6A, - 5234: 0x6E6C, - 5235: 0x6E6D, - 5236: 0x6E6F, - 5237: 0x6E70, - 5238: 0x6E71, - 5239: 0x6E72, - 5240: 0x6E73, - 5241: 0x6E74, - 5242: 0x6E75, - 5243: 0x6E76, - 5244: 0x6E77, - 5245: 0x6E78, - 5246: 0x6E79, - 5247: 0x6E7A, - 5248: 0x6E7B, - 5249: 0x6E7C, - 5250: 0x6E7D, - 5251: 0x6E80, - 5252: 0x6E81, - 5253: 0x6E82, - 5254: 0x6E84, - 5255: 0x6E87, - 5256: 0x6E88, - 5257: 0x6E8A, - 5258: 0x6E8B, - 5259: 0x6E8C, - 5260: 0x6E8D, - 5261: 0x6E8E, - 5262: 0x6E91, - 5263: 0x6E92, - 5264: 0x6E93, - 5265: 0x6E94, - 5266: 0x6E95, - 5267: 0x6E96, - 5268: 0x6E97, - 5269: 0x6E99, - 5270: 0x6E9A, - 5271: 0x6E9B, - 5272: 0x6E9D, - 5273: 0x6E9E, - 5274: 0x6EA0, - 5275: 0x6EA1, - 5276: 0x6EA3, - 5277: 0x6EA4, - 5278: 0x6EA6, - 5279: 0x6EA8, - 5280: 0x6EA9, - 5281: 0x6EAB, - 5282: 0x6EAC, - 5283: 0x6EAD, - 5284: 0x6EAE, - 5285: 0x6EB0, - 5286: 0x6EB3, - 5287: 0x6EB5, - 5288: 0x6EB8, - 5289: 0x6EB9, - 5290: 0x6EBC, - 5291: 0x6EBE, - 5292: 0x6EBF, - 5293: 0x6EC0, - 5294: 0x6EC3, - 5295: 0x6EC4, - 5296: 0x6EC5, - 5297: 0x6EC6, - 5298: 0x6EC8, - 5299: 0x6EC9, - 5300: 0x6ECA, - 5301: 0x6ECC, - 5302: 0x6ECD, - 5303: 0x6ECE, - 5304: 0x6ED0, - 5305: 0x6ED2, - 5306: 0x6ED6, - 5307: 0x6ED8, - 5308: 0x6ED9, - 5309: 0x6EDB, - 5310: 0x6EDC, - 5311: 0x6EDD, - 5312: 0x6EE3, - 5313: 0x6EE7, - 5314: 0x6EEA, - 5315: 0x6EEB, - 5316: 0x6EEC, - 5317: 0x6EED, - 5318: 0x6EEE, - 5319: 0x6EEF, - 5320: 0x6EF0, - 5321: 0x6EF1, - 5322: 0x6EF2, - 5323: 0x6EF3, - 5324: 0x6EF5, - 5325: 0x6EF6, - 5326: 0x6EF7, - 5327: 0x6EF8, - 5328: 0x6EFA, - 5329: 0x6EFB, - 5330: 0x6EFC, - 5331: 0x6EFD, - 5332: 0x6EFE, - 5333: 0x6EFF, - 5334: 0x6F00, - 5335: 0x6F01, - 5336: 0x6F03, - 5337: 0x6F04, - 5338: 0x6F05, - 5339: 0x6F07, - 5340: 0x6F08, - 5341: 0x6F0A, - 5342: 0x6F0B, - 5343: 0x6F0C, - 5344: 0x6F0D, - 5345: 0x6F0E, - 5346: 0x6F10, - 5347: 0x6F11, - 5348: 0x6F12, - 5349: 0x6F16, - 5350: 0x6F17, - 5351: 0x6F18, - 5352: 0x6F19, - 5353: 0x6F1A, - 5354: 0x6F1B, - 5355: 0x6F1C, - 5356: 0x6F1D, - 5357: 0x6F1E, - 5358: 0x6F1F, - 5359: 0x6F21, - 5360: 0x6F22, - 5361: 0x6F23, - 5362: 0x6F25, - 5363: 0x6F26, - 5364: 0x6F27, - 5365: 0x6F28, - 5366: 0x6F2C, - 5367: 0x6F2E, - 5368: 0x6F30, - 5369: 0x6F32, - 5370: 0x6F34, - 5371: 0x6F35, - 5372: 0x6F37, - 5373: 0x6F38, - 5374: 0x6F39, - 5375: 0x6F3A, - 5376: 0x6F3B, - 5377: 0x6F3C, - 5378: 0x6F3D, - 5379: 0x6F3F, - 5380: 0x6F40, - 5381: 0x6F41, - 5382: 0x6F42, - 5383: 0x6F43, - 5384: 0x6F44, - 5385: 0x6F45, - 5386: 0x6F48, - 5387: 0x6F49, - 5388: 0x6F4A, - 5389: 0x6F4C, - 5390: 0x6F4E, - 5391: 0x6F4F, - 5392: 0x6F50, - 5393: 0x6F51, - 5394: 0x6F52, - 5395: 0x6F53, - 5396: 0x6F54, - 5397: 0x6F55, - 5398: 0x6F56, - 5399: 0x6F57, - 5400: 0x6F59, - 5401: 0x6F5A, - 5402: 0x6F5B, - 5403: 0x6F5D, - 5404: 0x6F5F, - 5405: 0x6F60, - 5406: 0x6F61, - 5407: 0x6F63, - 5408: 0x6F64, - 5409: 0x6F65, - 5410: 0x6F67, - 5411: 0x6F68, - 5412: 0x6F69, - 5413: 0x6F6A, - 5414: 0x6F6B, - 5415: 0x6F6C, - 5416: 0x6F6F, - 5417: 0x6F70, - 5418: 0x6F71, - 5419: 0x6F73, - 5420: 0x6F75, - 5421: 0x6F76, - 5422: 0x6F77, - 5423: 0x6F79, - 5424: 0x6F7B, - 5425: 0x6F7D, - 5426: 0x6F7E, - 5427: 0x6F7F, - 5428: 0x6F80, - 5429: 0x6F81, - 5430: 0x6F82, - 5431: 0x6F83, - 5432: 0x6F85, - 5433: 0x6F86, - 5434: 0x6F87, - 5435: 0x6F8A, - 5436: 0x6F8B, - 5437: 0x6F8F, - 5438: 0x6F90, - 5439: 0x6F91, - 5440: 0x6F92, - 5441: 0x6F93, - 5442: 0x6F94, - 5443: 0x6F95, - 5444: 0x6F96, - 5445: 0x6F97, - 5446: 0x6F98, - 5447: 0x6F99, - 5448: 0x6F9A, - 5449: 0x6F9B, - 5450: 0x6F9D, - 5451: 0x6F9E, - 5452: 0x6F9F, - 5453: 0x6FA0, - 5454: 0x6FA2, - 5455: 0x6FA3, - 5456: 0x6FA4, - 5457: 0x6FA5, - 5458: 0x6FA6, - 5459: 0x6FA8, - 5460: 0x6FA9, - 5461: 0x6FAA, - 5462: 0x6FAB, - 5463: 0x6FAC, - 5464: 0x6FAD, - 5465: 0x6FAE, - 5466: 0x6FAF, - 5467: 0x6FB0, - 5468: 0x6FB1, - 5469: 0x6FB2, - 5470: 0x6FB4, - 5471: 0x6FB5, - 5472: 0x6FB7, - 5473: 0x6FB8, - 5474: 0x6FBA, - 5475: 0x6FBB, - 5476: 0x6FBC, - 5477: 0x6FBD, - 5478: 0x6FBE, - 5479: 0x6FBF, - 5480: 0x6FC1, - 5481: 0x6FC3, - 5482: 0x6FC4, - 5483: 0x6FC5, - 5484: 0x6FC6, - 5485: 0x6FC7, - 5486: 0x6FC8, - 5487: 0x6FCA, - 5488: 0x6FCB, - 5489: 0x6FCC, - 5490: 0x6FCD, - 5491: 0x6FCE, - 5492: 0x6FCF, - 5493: 0x6FD0, - 5494: 0x6FD3, - 5495: 0x6FD4, - 5496: 0x6FD5, - 5497: 0x6FD6, - 5498: 0x6FD7, - 5499: 0x6FD8, - 5500: 0x6FD9, - 5501: 0x6FDA, - 5502: 0x6FDB, - 5503: 0x6FDC, - 5504: 0x6FDD, - 5505: 0x6FDF, - 5506: 0x6FE2, - 5507: 0x6FE3, - 5508: 0x6FE4, - 5509: 0x6FE5, - 5510: 0x6FE6, - 5511: 0x6FE7, - 5512: 0x6FE8, - 5513: 0x6FE9, - 5514: 0x6FEA, - 5515: 0x6FEB, - 5516: 0x6FEC, - 5517: 0x6FED, - 5518: 0x6FF0, - 5519: 0x6FF1, - 5520: 0x6FF2, - 5521: 0x6FF3, - 5522: 0x6FF4, - 5523: 0x6FF5, - 5524: 0x6FF6, - 5525: 0x6FF7, - 5526: 0x6FF8, - 5527: 0x6FF9, - 5528: 0x6FFA, - 5529: 0x6FFB, - 5530: 0x6FFC, - 5531: 0x6FFD, - 5532: 0x6FFE, - 5533: 0x6FFF, - 5534: 0x7000, - 5535: 0x7001, - 5536: 0x7002, - 5537: 0x7003, - 5538: 0x7004, - 5539: 0x7005, - 5540: 0x7006, - 5541: 0x7007, - 5542: 0x7008, - 5543: 0x7009, - 5544: 0x700A, - 5545: 0x700B, - 5546: 0x700C, - 5547: 0x700D, - 5548: 0x700E, - 5549: 0x700F, - 5550: 0x7010, - 5551: 0x7012, - 5552: 0x7013, - 5553: 0x7014, - 5554: 0x7015, - 5555: 0x7016, - 5556: 0x7017, - 5557: 0x7018, - 5558: 0x7019, - 5559: 0x701C, - 5560: 0x701D, - 5561: 0x701E, - 5562: 0x701F, - 5563: 0x7020, - 5564: 0x7021, - 5565: 0x7022, - 5566: 0x7024, - 5567: 0x7025, - 5568: 0x7026, - 5569: 0x7027, - 5570: 0x7028, - 5571: 0x7029, - 5572: 0x702A, - 5573: 0x702B, - 5574: 0x702C, - 5575: 0x702D, - 5576: 0x702E, - 5577: 0x702F, - 5578: 0x7030, - 5579: 0x7031, - 5580: 0x7032, - 5581: 0x7033, - 5582: 0x7034, - 5583: 0x7036, - 5584: 0x7037, - 5585: 0x7038, - 5586: 0x703A, - 5587: 0x703B, - 5588: 0x703C, - 5589: 0x703D, - 5590: 0x703E, - 5591: 0x703F, - 5592: 0x7040, - 5593: 0x7041, - 5594: 0x7042, - 5595: 0x7043, - 5596: 0x7044, - 5597: 0x7045, - 5598: 0x7046, - 5599: 0x7047, - 5600: 0x7048, - 5601: 0x7049, - 5602: 0x704A, - 5603: 0x704B, - 5604: 0x704D, - 5605: 0x704E, - 5606: 0x7050, - 5607: 0x7051, - 5608: 0x7052, - 5609: 0x7053, - 5610: 0x7054, - 5611: 0x7055, - 5612: 0x7056, - 5613: 0x7057, - 5614: 0x7058, - 5615: 0x7059, - 5616: 0x705A, - 5617: 0x705B, - 5618: 0x705C, - 5619: 0x705D, - 5620: 0x705F, - 5621: 0x7060, - 5622: 0x7061, - 5623: 0x7062, - 5624: 0x7063, - 5625: 0x7064, - 5626: 0x7065, - 5627: 0x7066, - 5628: 0x7067, - 5629: 0x7068, - 5630: 0x7069, - 5631: 0x706A, - 5632: 0x706E, - 5633: 0x7071, - 5634: 0x7072, - 5635: 0x7073, - 5636: 0x7074, - 5637: 0x7077, - 5638: 0x7079, - 5639: 0x707A, - 5640: 0x707B, - 5641: 0x707D, - 5642: 0x7081, - 5643: 0x7082, - 5644: 0x7083, - 5645: 0x7084, - 5646: 0x7086, - 5647: 0x7087, - 5648: 0x7088, - 5649: 0x708B, - 5650: 0x708C, - 5651: 0x708D, - 5652: 0x708F, - 5653: 0x7090, - 5654: 0x7091, - 5655: 0x7093, - 5656: 0x7097, - 5657: 0x7098, - 5658: 0x709A, - 5659: 0x709B, - 5660: 0x709E, - 5661: 0x709F, - 5662: 0x70A0, - 5663: 0x70A1, - 5664: 0x70A2, - 5665: 0x70A3, - 5666: 0x70A4, - 5667: 0x70A5, - 5668: 0x70A6, - 5669: 0x70A7, - 5670: 0x70A8, - 5671: 0x70A9, - 5672: 0x70AA, - 5673: 0x70B0, - 5674: 0x70B2, - 5675: 0x70B4, - 5676: 0x70B5, - 5677: 0x70B6, - 5678: 0x70BA, - 5679: 0x70BE, - 5680: 0x70BF, - 5681: 0x70C4, - 5682: 0x70C5, - 5683: 0x70C6, - 5684: 0x70C7, - 5685: 0x70C9, - 5686: 0x70CB, - 5687: 0x70CC, - 5688: 0x70CD, - 5689: 0x70CE, - 5690: 0x70CF, - 5691: 0x70D0, - 5692: 0x70D1, - 5693: 0x70D2, - 5694: 0x70D3, - 5695: 0x70D4, - 5696: 0x70D5, - 5697: 0x70D6, - 5698: 0x70D7, - 5699: 0x70DA, - 5700: 0x70DC, - 5701: 0x70DD, - 5702: 0x70DE, - 5703: 0x70E0, - 5704: 0x70E1, - 5705: 0x70E2, - 5706: 0x70E3, - 5707: 0x70E5, - 5708: 0x70EA, - 5709: 0x70EE, - 5710: 0x70F0, - 5711: 0x70F1, - 5712: 0x70F2, - 5713: 0x70F3, - 5714: 0x70F4, - 5715: 0x70F5, - 5716: 0x70F6, - 5717: 0x70F8, - 5718: 0x70FA, - 5719: 0x70FB, - 5720: 0x70FC, - 5721: 0x70FE, - 5722: 0x70FF, - 5723: 0x7100, - 5724: 0x7101, - 5725: 0x7102, - 5726: 0x7103, - 5727: 0x7104, - 5728: 0x7105, - 5729: 0x7106, - 5730: 0x7107, - 5731: 0x7108, - 5732: 0x710B, - 5733: 0x710C, - 5734: 0x710D, - 5735: 0x710E, - 5736: 0x710F, - 5737: 0x7111, - 5738: 0x7112, - 5739: 0x7114, - 5740: 0x7117, - 5741: 0x711B, - 5742: 0x711C, - 5743: 0x711D, - 5744: 0x711E, - 5745: 0x711F, - 5746: 0x7120, - 5747: 0x7121, - 5748: 0x7122, - 5749: 0x7123, - 5750: 0x7124, - 5751: 0x7125, - 5752: 0x7127, - 5753: 0x7128, - 5754: 0x7129, - 5755: 0x712A, - 5756: 0x712B, - 5757: 0x712C, - 5758: 0x712D, - 5759: 0x712E, - 5760: 0x7132, - 5761: 0x7133, - 5762: 0x7134, - 5763: 0x7135, - 5764: 0x7137, - 5765: 0x7138, - 5766: 0x7139, - 5767: 0x713A, - 5768: 0x713B, - 5769: 0x713C, - 5770: 0x713D, - 5771: 0x713E, - 5772: 0x713F, - 5773: 0x7140, - 5774: 0x7141, - 5775: 0x7142, - 5776: 0x7143, - 5777: 0x7144, - 5778: 0x7146, - 5779: 0x7147, - 5780: 0x7148, - 5781: 0x7149, - 5782: 0x714B, - 5783: 0x714D, - 5784: 0x714F, - 5785: 0x7150, - 5786: 0x7151, - 5787: 0x7152, - 5788: 0x7153, - 5789: 0x7154, - 5790: 0x7155, - 5791: 0x7156, - 5792: 0x7157, - 5793: 0x7158, - 5794: 0x7159, - 5795: 0x715A, - 5796: 0x715B, - 5797: 0x715D, - 5798: 0x715F, - 5799: 0x7160, - 5800: 0x7161, - 5801: 0x7162, - 5802: 0x7163, - 5803: 0x7165, - 5804: 0x7169, - 5805: 0x716A, - 5806: 0x716B, - 5807: 0x716C, - 5808: 0x716D, - 5809: 0x716F, - 5810: 0x7170, - 5811: 0x7171, - 5812: 0x7174, - 5813: 0x7175, - 5814: 0x7176, - 5815: 0x7177, - 5816: 0x7179, - 5817: 0x717B, - 5818: 0x717C, - 5819: 0x717E, - 5820: 0x717F, - 5821: 0x7180, - 5822: 0x7181, - 5823: 0x7182, - 5824: 0x7183, - 5825: 0x7185, - 5826: 0x7186, - 5827: 0x7187, - 5828: 0x7188, - 5829: 0x7189, - 5830: 0x718B, - 5831: 0x718C, - 5832: 0x718D, - 5833: 0x718E, - 5834: 0x7190, - 5835: 0x7191, - 5836: 0x7192, - 5837: 0x7193, - 5838: 0x7195, - 5839: 0x7196, - 5840: 0x7197, - 5841: 0x719A, - 5842: 0x719B, - 5843: 0x719C, - 5844: 0x719D, - 5845: 0x719E, - 5846: 0x71A1, - 5847: 0x71A2, - 5848: 0x71A3, - 5849: 0x71A4, - 5850: 0x71A5, - 5851: 0x71A6, - 5852: 0x71A7, - 5853: 0x71A9, - 5854: 0x71AA, - 5855: 0x71AB, - 5856: 0x71AD, - 5857: 0x71AE, - 5858: 0x71AF, - 5859: 0x71B0, - 5860: 0x71B1, - 5861: 0x71B2, - 5862: 0x71B4, - 5863: 0x71B6, - 5864: 0x71B7, - 5865: 0x71B8, - 5866: 0x71BA, - 5867: 0x71BB, - 5868: 0x71BC, - 5869: 0x71BD, - 5870: 0x71BE, - 5871: 0x71BF, - 5872: 0x71C0, - 5873: 0x71C1, - 5874: 0x71C2, - 5875: 0x71C4, - 5876: 0x71C5, - 5877: 0x71C6, - 5878: 0x71C7, - 5879: 0x71C8, - 5880: 0x71C9, - 5881: 0x71CA, - 5882: 0x71CB, - 5883: 0x71CC, - 5884: 0x71CD, - 5885: 0x71CF, - 5886: 0x71D0, - 5887: 0x71D1, - 5888: 0x71D2, - 5889: 0x71D3, - 5890: 0x71D6, - 5891: 0x71D7, - 5892: 0x71D8, - 5893: 0x71D9, - 5894: 0x71DA, - 5895: 0x71DB, - 5896: 0x71DC, - 5897: 0x71DD, - 5898: 0x71DE, - 5899: 0x71DF, - 5900: 0x71E1, - 5901: 0x71E2, - 5902: 0x71E3, - 5903: 0x71E4, - 5904: 0x71E6, - 5905: 0x71E8, - 5906: 0x71E9, - 5907: 0x71EA, - 5908: 0x71EB, - 5909: 0x71EC, - 5910: 0x71ED, - 5911: 0x71EF, - 5912: 0x71F0, - 5913: 0x71F1, - 5914: 0x71F2, - 5915: 0x71F3, - 5916: 0x71F4, - 5917: 0x71F5, - 5918: 0x71F6, - 5919: 0x71F7, - 5920: 0x71F8, - 5921: 0x71FA, - 5922: 0x71FB, - 5923: 0x71FC, - 5924: 0x71FD, - 5925: 0x71FE, - 5926: 0x71FF, - 5927: 0x7200, - 5928: 0x7201, - 5929: 0x7202, - 5930: 0x7203, - 5931: 0x7204, - 5932: 0x7205, - 5933: 0x7207, - 5934: 0x7208, - 5935: 0x7209, - 5936: 0x720A, - 5937: 0x720B, - 5938: 0x720C, - 5939: 0x720D, - 5940: 0x720E, - 5941: 0x720F, - 5942: 0x7210, - 5943: 0x7211, - 5944: 0x7212, - 5945: 0x7213, - 5946: 0x7214, - 5947: 0x7215, - 5948: 0x7216, - 5949: 0x7217, - 5950: 0x7218, - 5951: 0x7219, - 5952: 0x721A, - 5953: 0x721B, - 5954: 0x721C, - 5955: 0x721E, - 5956: 0x721F, - 5957: 0x7220, - 5958: 0x7221, - 5959: 0x7222, - 5960: 0x7223, - 5961: 0x7224, - 5962: 0x7225, - 5963: 0x7226, - 5964: 0x7227, - 5965: 0x7229, - 5966: 0x722B, - 5967: 0x722D, - 5968: 0x722E, - 5969: 0x722F, - 5970: 0x7232, - 5971: 0x7233, - 5972: 0x7234, - 5973: 0x723A, - 5974: 0x723C, - 5975: 0x723E, - 5976: 0x7240, - 5977: 0x7241, - 5978: 0x7242, - 5979: 0x7243, - 5980: 0x7244, - 5981: 0x7245, - 5982: 0x7246, - 5983: 0x7249, - 5984: 0x724A, - 5985: 0x724B, - 5986: 0x724E, - 5987: 0x724F, - 5988: 0x7250, - 5989: 0x7251, - 5990: 0x7253, - 5991: 0x7254, - 5992: 0x7255, - 5993: 0x7257, - 5994: 0x7258, - 5995: 0x725A, - 5996: 0x725C, - 5997: 0x725E, - 5998: 0x7260, - 5999: 0x7263, - 6000: 0x7264, - 6001: 0x7265, - 6002: 0x7268, - 6003: 0x726A, - 6004: 0x726B, - 6005: 0x726C, - 6006: 0x726D, - 6007: 0x7270, - 6008: 0x7271, - 6009: 0x7273, - 6010: 0x7274, - 6011: 0x7276, - 6012: 0x7277, - 6013: 0x7278, - 6014: 0x727B, - 6015: 0x727C, - 6016: 0x727D, - 6017: 0x7282, - 6018: 0x7283, - 6019: 0x7285, - 6020: 0x7286, - 6021: 0x7287, - 6022: 0x7288, - 6023: 0x7289, - 6024: 0x728C, - 6025: 0x728E, - 6026: 0x7290, - 6027: 0x7291, - 6028: 0x7293, - 6029: 0x7294, - 6030: 0x7295, - 6031: 0x7296, - 6032: 0x7297, - 6033: 0x7298, - 6034: 0x7299, - 6035: 0x729A, - 6036: 0x729B, - 6037: 0x729C, - 6038: 0x729D, - 6039: 0x729E, - 6040: 0x72A0, - 6041: 0x72A1, - 6042: 0x72A2, - 6043: 0x72A3, - 6044: 0x72A4, - 6045: 0x72A5, - 6046: 0x72A6, - 6047: 0x72A7, - 6048: 0x72A8, - 6049: 0x72A9, - 6050: 0x72AA, - 6051: 0x72AB, - 6052: 0x72AE, - 6053: 0x72B1, - 6054: 0x72B2, - 6055: 0x72B3, - 6056: 0x72B5, - 6057: 0x72BA, - 6058: 0x72BB, - 6059: 0x72BC, - 6060: 0x72BD, - 6061: 0x72BE, - 6062: 0x72BF, - 6063: 0x72C0, - 6064: 0x72C5, - 6065: 0x72C6, - 6066: 0x72C7, - 6067: 0x72C9, - 6068: 0x72CA, - 6069: 0x72CB, - 6070: 0x72CC, - 6071: 0x72CF, - 6072: 0x72D1, - 6073: 0x72D3, - 6074: 0x72D4, - 6075: 0x72D5, - 6076: 0x72D6, - 6077: 0x72D8, - 6078: 0x72DA, - 6079: 0x72DB, - 6176: 0x3000, - 6177: 0x3001, - 6178: 0x3002, - 6179: 0x00B7, - 6180: 0x02C9, - 6181: 0x02C7, - 6182: 0x00A8, - 6183: 0x3003, - 6184: 0x3005, - 6185: 0x2014, - 6186: 0xFF5E, - 6187: 0x2016, - 6188: 0x2026, - 6189: 0x2018, - 6190: 0x2019, - 6191: 0x201C, - 6192: 0x201D, - 6193: 0x3014, - 6194: 0x3015, - 6195: 0x3008, - 6196: 0x3009, - 6197: 0x300A, - 6198: 0x300B, - 6199: 0x300C, - 6200: 0x300D, - 6201: 0x300E, - 6202: 0x300F, - 6203: 0x3016, - 6204: 0x3017, - 6205: 0x3010, - 6206: 0x3011, - 6207: 0x00B1, - 6208: 0x00D7, - 6209: 0x00F7, - 6210: 0x2236, - 6211: 0x2227, - 6212: 0x2228, - 6213: 0x2211, - 6214: 0x220F, - 6215: 0x222A, - 6216: 0x2229, - 6217: 0x2208, - 6218: 0x2237, - 6219: 0x221A, - 6220: 0x22A5, - 6221: 0x2225, - 6222: 0x2220, - 6223: 0x2312, - 6224: 0x2299, - 6225: 0x222B, - 6226: 0x222E, - 6227: 0x2261, - 6228: 0x224C, - 6229: 0x2248, - 6230: 0x223D, - 6231: 0x221D, - 6232: 0x2260, - 6233: 0x226E, - 6234: 0x226F, - 6235: 0x2264, - 6236: 0x2265, - 6237: 0x221E, - 6238: 0x2235, - 6239: 0x2234, - 6240: 0x2642, - 6241: 0x2640, - 6242: 0x00B0, - 6243: 0x2032, - 6244: 0x2033, - 6245: 0x2103, - 6246: 0xFF04, - 6247: 0x00A4, - 6248: 0xFFE0, - 6249: 0xFFE1, - 6250: 0x2030, - 6251: 0x00A7, - 6252: 0x2116, - 6253: 0x2606, - 6254: 0x2605, - 6255: 0x25CB, - 6256: 0x25CF, - 6257: 0x25CE, - 6258: 0x25C7, - 6259: 0x25C6, - 6260: 0x25A1, - 6261: 0x25A0, - 6262: 0x25B3, - 6263: 0x25B2, - 6264: 0x203B, - 6265: 0x2192, - 6266: 0x2190, - 6267: 0x2191, - 6268: 0x2193, - 6269: 0x3013, - 6366: 0x2170, - 6367: 0x2171, - 6368: 0x2172, - 6369: 0x2173, - 6370: 0x2174, - 6371: 0x2175, - 6372: 0x2176, - 6373: 0x2177, - 6374: 0x2178, - 6375: 0x2179, - 6382: 0x2488, - 6383: 0x2489, - 6384: 0x248A, - 6385: 0x248B, - 6386: 0x248C, - 6387: 0x248D, - 6388: 0x248E, - 6389: 0x248F, - 6390: 0x2490, - 6391: 0x2491, - 6392: 0x2492, - 6393: 0x2493, - 6394: 0x2494, - 6395: 0x2495, - 6396: 0x2496, - 6397: 0x2497, - 6398: 0x2498, - 6399: 0x2499, - 6400: 0x249A, - 6401: 0x249B, - 6402: 0x2474, - 6403: 0x2475, - 6404: 0x2476, - 6405: 0x2477, - 6406: 0x2478, - 6407: 0x2479, - 6408: 0x247A, - 6409: 0x247B, - 6410: 0x247C, - 6411: 0x247D, - 6412: 0x247E, - 6413: 0x247F, - 6414: 0x2480, - 6415: 0x2481, - 6416: 0x2482, - 6417: 0x2483, - 6418: 0x2484, - 6419: 0x2485, - 6420: 0x2486, - 6421: 0x2487, - 6422: 0x2460, - 6423: 0x2461, - 6424: 0x2462, - 6425: 0x2463, - 6426: 0x2464, - 6427: 0x2465, - 6428: 0x2466, - 6429: 0x2467, - 6430: 0x2468, - 6431: 0x2469, - 6432: 0x20AC, - 6434: 0x3220, - 6435: 0x3221, - 6436: 0x3222, - 6437: 0x3223, - 6438: 0x3224, - 6439: 0x3225, - 6440: 0x3226, - 6441: 0x3227, - 6442: 0x3228, - 6443: 0x3229, - 6446: 0x2160, - 6447: 0x2161, - 6448: 0x2162, - 6449: 0x2163, - 6450: 0x2164, - 6451: 0x2165, - 6452: 0x2166, - 6453: 0x2167, - 6454: 0x2168, - 6455: 0x2169, - 6456: 0x216A, - 6457: 0x216B, - 6555: 0x3000, - 6556: 0xFF01, - 6557: 0xFF02, - 6558: 0xFF03, - 6559: 0xFFE5, - 6560: 0xFF05, - 6561: 0xFF06, - 6562: 0xFF07, - 6563: 0xFF08, - 6564: 0xFF09, - 6565: 0xFF0A, - 6566: 0xFF0B, - 6567: 0xFF0C, - 6568: 0xFF0D, - 6569: 0xFF0E, - 6570: 0xFF0F, - 6571: 0xFF10, - 6572: 0xFF11, - 6573: 0xFF12, - 6574: 0xFF13, - 6575: 0xFF14, - 6576: 0xFF15, - 6577: 0xFF16, - 6578: 0xFF17, - 6579: 0xFF18, - 6580: 0xFF19, - 6581: 0xFF1A, - 6582: 0xFF1B, - 6583: 0xFF1C, - 6584: 0xFF1D, - 6585: 0xFF1E, - 6586: 0xFF1F, - 6587: 0xFF20, - 6588: 0xFF21, - 6589: 0xFF22, - 6590: 0xFF23, - 6591: 0xFF24, - 6592: 0xFF25, - 6593: 0xFF26, - 6594: 0xFF27, - 6595: 0xFF28, - 6596: 0xFF29, - 6597: 0xFF2A, - 6598: 0xFF2B, - 6599: 0xFF2C, - 6600: 0xFF2D, - 6601: 0xFF2E, - 6602: 0xFF2F, - 6603: 0xFF30, - 6604: 0xFF31, - 6605: 0xFF32, - 6606: 0xFF33, - 6607: 0xFF34, - 6608: 0xFF35, - 6609: 0xFF36, - 6610: 0xFF37, - 6611: 0xFF38, - 6612: 0xFF39, - 6613: 0xFF3A, - 6614: 0xFF3B, - 6615: 0xFF3C, - 6616: 0xFF3D, - 6617: 0xFF3E, - 6618: 0xFF3F, - 6619: 0xFF40, - 6620: 0xFF41, - 6621: 0xFF42, - 6622: 0xFF43, - 6623: 0xFF44, - 6624: 0xFF45, - 6625: 0xFF46, - 6626: 0xFF47, - 6627: 0xFF48, - 6628: 0xFF49, - 6629: 0xFF4A, - 6630: 0xFF4B, - 6631: 0xFF4C, - 6632: 0xFF4D, - 6633: 0xFF4E, - 6634: 0xFF4F, - 6635: 0xFF50, - 6636: 0xFF51, - 6637: 0xFF52, - 6638: 0xFF53, - 6639: 0xFF54, - 6640: 0xFF55, - 6641: 0xFF56, - 6642: 0xFF57, - 6643: 0xFF58, - 6644: 0xFF59, - 6645: 0xFF5A, - 6646: 0xFF5B, - 6647: 0xFF5C, - 6648: 0xFF5D, - 6649: 0xFFE3, - 6746: 0x3041, - 6747: 0x3042, - 6748: 0x3043, - 6749: 0x3044, - 6750: 0x3045, - 6751: 0x3046, - 6752: 0x3047, - 6753: 0x3048, - 6754: 0x3049, - 6755: 0x304A, - 6756: 0x304B, - 6757: 0x304C, - 6758: 0x304D, - 6759: 0x304E, - 6760: 0x304F, - 6761: 0x3050, - 6762: 0x3051, - 6763: 0x3052, - 6764: 0x3053, - 6765: 0x3054, - 6766: 0x3055, - 6767: 0x3056, - 6768: 0x3057, - 6769: 0x3058, - 6770: 0x3059, - 6771: 0x305A, - 6772: 0x305B, - 6773: 0x305C, - 6774: 0x305D, - 6775: 0x305E, - 6776: 0x305F, - 6777: 0x3060, - 6778: 0x3061, - 6779: 0x3062, - 6780: 0x3063, - 6781: 0x3064, - 6782: 0x3065, - 6783: 0x3066, - 6784: 0x3067, - 6785: 0x3068, - 6786: 0x3069, - 6787: 0x306A, - 6788: 0x306B, - 6789: 0x306C, - 6790: 0x306D, - 6791: 0x306E, - 6792: 0x306F, - 6793: 0x3070, - 6794: 0x3071, - 6795: 0x3072, - 6796: 0x3073, - 6797: 0x3074, - 6798: 0x3075, - 6799: 0x3076, - 6800: 0x3077, - 6801: 0x3078, - 6802: 0x3079, - 6803: 0x307A, - 6804: 0x307B, - 6805: 0x307C, - 6806: 0x307D, - 6807: 0x307E, - 6808: 0x307F, - 6809: 0x3080, - 6810: 0x3081, - 6811: 0x3082, - 6812: 0x3083, - 6813: 0x3084, - 6814: 0x3085, - 6815: 0x3086, - 6816: 0x3087, - 6817: 0x3088, - 6818: 0x3089, - 6819: 0x308A, - 6820: 0x308B, - 6821: 0x308C, - 6822: 0x308D, - 6823: 0x308E, - 6824: 0x308F, - 6825: 0x3090, - 6826: 0x3091, - 6827: 0x3092, - 6828: 0x3093, - 6936: 0x30A1, - 6937: 0x30A2, - 6938: 0x30A3, - 6939: 0x30A4, - 6940: 0x30A5, - 6941: 0x30A6, - 6942: 0x30A7, - 6943: 0x30A8, - 6944: 0x30A9, - 6945: 0x30AA, - 6946: 0x30AB, - 6947: 0x30AC, - 6948: 0x30AD, - 6949: 0x30AE, - 6950: 0x30AF, - 6951: 0x30B0, - 6952: 0x30B1, - 6953: 0x30B2, - 6954: 0x30B3, - 6955: 0x30B4, - 6956: 0x30B5, - 6957: 0x30B6, - 6958: 0x30B7, - 6959: 0x30B8, - 6960: 0x30B9, - 6961: 0x30BA, - 6962: 0x30BB, - 6963: 0x30BC, - 6964: 0x30BD, - 6965: 0x30BE, - 6966: 0x30BF, - 6967: 0x30C0, - 6968: 0x30C1, - 6969: 0x30C2, - 6970: 0x30C3, - 6971: 0x30C4, - 6972: 0x30C5, - 6973: 0x30C6, - 6974: 0x30C7, - 6975: 0x30C8, - 6976: 0x30C9, - 6977: 0x30CA, - 6978: 0x30CB, - 6979: 0x30CC, - 6980: 0x30CD, - 6981: 0x30CE, - 6982: 0x30CF, - 6983: 0x30D0, - 6984: 0x30D1, - 6985: 0x30D2, - 6986: 0x30D3, - 6987: 0x30D4, - 6988: 0x30D5, - 6989: 0x30D6, - 6990: 0x30D7, - 6991: 0x30D8, - 6992: 0x30D9, - 6993: 0x30DA, - 6994: 0x30DB, - 6995: 0x30DC, - 6996: 0x30DD, - 6997: 0x30DE, - 6998: 0x30DF, - 6999: 0x30E0, - 7000: 0x30E1, - 7001: 0x30E2, - 7002: 0x30E3, - 7003: 0x30E4, - 7004: 0x30E5, - 7005: 0x30E6, - 7006: 0x30E7, - 7007: 0x30E8, - 7008: 0x30E9, - 7009: 0x30EA, - 7010: 0x30EB, - 7011: 0x30EC, - 7012: 0x30ED, - 7013: 0x30EE, - 7014: 0x30EF, - 7015: 0x30F0, - 7016: 0x30F1, - 7017: 0x30F2, - 7018: 0x30F3, - 7019: 0x30F4, - 7020: 0x30F5, - 7021: 0x30F6, - 7126: 0x0391, - 7127: 0x0392, - 7128: 0x0393, - 7129: 0x0394, - 7130: 0x0395, - 7131: 0x0396, - 7132: 0x0397, - 7133: 0x0398, - 7134: 0x0399, - 7135: 0x039A, - 7136: 0x039B, - 7137: 0x039C, - 7138: 0x039D, - 7139: 0x039E, - 7140: 0x039F, - 7141: 0x03A0, - 7142: 0x03A1, - 7143: 0x03A3, - 7144: 0x03A4, - 7145: 0x03A5, - 7146: 0x03A6, - 7147: 0x03A7, - 7148: 0x03A8, - 7149: 0x03A9, - 7158: 0x03B1, - 7159: 0x03B2, - 7160: 0x03B3, - 7161: 0x03B4, - 7162: 0x03B5, - 7163: 0x03B6, - 7164: 0x03B7, - 7165: 0x03B8, - 7166: 0x03B9, - 7167: 0x03BA, - 7168: 0x03BB, - 7169: 0x03BC, - 7170: 0x03BD, - 7171: 0x03BE, - 7172: 0x03BF, - 7173: 0x03C0, - 7174: 0x03C1, - 7175: 0x03C3, - 7176: 0x03C4, - 7177: 0x03C5, - 7178: 0x03C6, - 7179: 0x03C7, - 7180: 0x03C8, - 7181: 0x03C9, - 7189: 0xFE35, - 7190: 0xFE36, - 7191: 0xFE39, - 7192: 0xFE3A, - 7193: 0xFE3F, - 7194: 0xFE40, - 7195: 0xFE3D, - 7196: 0xFE3E, - 7197: 0xFE41, - 7198: 0xFE42, - 7199: 0xFE43, - 7200: 0xFE44, - 7203: 0xFE3B, - 7204: 0xFE3C, - 7205: 0xFE37, - 7206: 0xFE38, - 7207: 0xFE31, - 7209: 0xFE33, - 7210: 0xFE34, - 7316: 0x0410, - 7317: 0x0411, - 7318: 0x0412, - 7319: 0x0413, - 7320: 0x0414, - 7321: 0x0415, - 7322: 0x0401, - 7323: 0x0416, - 7324: 0x0417, - 7325: 0x0418, - 7326: 0x0419, - 7327: 0x041A, - 7328: 0x041B, - 7329: 0x041C, - 7330: 0x041D, - 7331: 0x041E, - 7332: 0x041F, - 7333: 0x0420, - 7334: 0x0421, - 7335: 0x0422, - 7336: 0x0423, - 7337: 0x0424, - 7338: 0x0425, - 7339: 0x0426, - 7340: 0x0427, - 7341: 0x0428, - 7342: 0x0429, - 7343: 0x042A, - 7344: 0x042B, - 7345: 0x042C, - 7346: 0x042D, - 7347: 0x042E, - 7348: 0x042F, - 7364: 0x0430, - 7365: 0x0431, - 7366: 0x0432, - 7367: 0x0433, - 7368: 0x0434, - 7369: 0x0435, - 7370: 0x0451, - 7371: 0x0436, - 7372: 0x0437, - 7373: 0x0438, - 7374: 0x0439, - 7375: 0x043A, - 7376: 0x043B, - 7377: 0x043C, - 7378: 0x043D, - 7379: 0x043E, - 7380: 0x043F, - 7381: 0x0440, - 7382: 0x0441, - 7383: 0x0442, - 7384: 0x0443, - 7385: 0x0444, - 7386: 0x0445, - 7387: 0x0446, - 7388: 0x0447, - 7389: 0x0448, - 7390: 0x0449, - 7391: 0x044A, - 7392: 0x044B, - 7393: 0x044C, - 7394: 0x044D, - 7395: 0x044E, - 7396: 0x044F, - 7410: 0x02CA, - 7411: 0x02CB, - 7412: 0x02D9, - 7413: 0x2013, - 7414: 0x2015, - 7415: 0x2025, - 7416: 0x2035, - 7417: 0x2105, - 7418: 0x2109, - 7419: 0x2196, - 7420: 0x2197, - 7421: 0x2198, - 7422: 0x2199, - 7423: 0x2215, - 7424: 0x221F, - 7425: 0x2223, - 7426: 0x2252, - 7427: 0x2266, - 7428: 0x2267, - 7429: 0x22BF, - 7430: 0x2550, - 7431: 0x2551, - 7432: 0x2552, - 7433: 0x2553, - 7434: 0x2554, - 7435: 0x2555, - 7436: 0x2556, - 7437: 0x2557, - 7438: 0x2558, - 7439: 0x2559, - 7440: 0x255A, - 7441: 0x255B, - 7442: 0x255C, - 7443: 0x255D, - 7444: 0x255E, - 7445: 0x255F, - 7446: 0x2560, - 7447: 0x2561, - 7448: 0x2562, - 7449: 0x2563, - 7450: 0x2564, - 7451: 0x2565, - 7452: 0x2566, - 7453: 0x2567, - 7454: 0x2568, - 7455: 0x2569, - 7456: 0x256A, - 7457: 0x256B, - 7458: 0x256C, - 7459: 0x256D, - 7460: 0x256E, - 7461: 0x256F, - 7462: 0x2570, - 7463: 0x2571, - 7464: 0x2572, - 7465: 0x2573, - 7466: 0x2581, - 7467: 0x2582, - 7468: 0x2583, - 7469: 0x2584, - 7470: 0x2585, - 7471: 0x2586, - 7472: 0x2587, - 7473: 0x2588, - 7474: 0x2589, - 7475: 0x258A, - 7476: 0x258B, - 7477: 0x258C, - 7478: 0x258D, - 7479: 0x258E, - 7480: 0x258F, - 7481: 0x2593, - 7482: 0x2594, - 7483: 0x2595, - 7484: 0x25BC, - 7485: 0x25BD, - 7486: 0x25E2, - 7487: 0x25E3, - 7488: 0x25E4, - 7489: 0x25E5, - 7490: 0x2609, - 7491: 0x2295, - 7492: 0x3012, - 7493: 0x301D, - 7494: 0x301E, - 7506: 0x0101, - 7507: 0x00E1, - 7508: 0x01CE, - 7509: 0x00E0, - 7510: 0x0113, - 7511: 0x00E9, - 7512: 0x011B, - 7513: 0x00E8, - 7514: 0x012B, - 7515: 0x00ED, - 7516: 0x01D0, - 7517: 0x00EC, - 7518: 0x014D, - 7519: 0x00F3, - 7520: 0x01D2, - 7521: 0x00F2, - 7522: 0x016B, - 7523: 0x00FA, - 7524: 0x01D4, - 7525: 0x00F9, - 7526: 0x01D6, - 7527: 0x01D8, - 7528: 0x01DA, - 7529: 0x01DC, - 7530: 0x00FC, - 7531: 0x00EA, - 7532: 0x0251, - 7534: 0x0144, - 7535: 0x0148, - 7536: 0x01F9, - 7537: 0x0261, - 7542: 0x3105, - 7543: 0x3106, - 7544: 0x3107, - 7545: 0x3108, - 7546: 0x3109, - 7547: 0x310A, - 7548: 0x310B, - 7549: 0x310C, - 7550: 0x310D, - 7551: 0x310E, - 7552: 0x310F, - 7553: 0x3110, - 7554: 0x3111, - 7555: 0x3112, - 7556: 0x3113, - 7557: 0x3114, - 7558: 0x3115, - 7559: 0x3116, - 7560: 0x3117, - 7561: 0x3118, - 7562: 0x3119, - 7563: 0x311A, - 7564: 0x311B, - 7565: 0x311C, - 7566: 0x311D, - 7567: 0x311E, - 7568: 0x311F, - 7569: 0x3120, - 7570: 0x3121, - 7571: 0x3122, - 7572: 0x3123, - 7573: 0x3124, - 7574: 0x3125, - 7575: 0x3126, - 7576: 0x3127, - 7577: 0x3128, - 7578: 0x3129, - 7600: 0x3021, - 7601: 0x3022, - 7602: 0x3023, - 7603: 0x3024, - 7604: 0x3025, - 7605: 0x3026, - 7606: 0x3027, - 7607: 0x3028, - 7608: 0x3029, - 7609: 0x32A3, - 7610: 0x338E, - 7611: 0x338F, - 7612: 0x339C, - 7613: 0x339D, - 7614: 0x339E, - 7615: 0x33A1, - 7616: 0x33C4, - 7617: 0x33CE, - 7618: 0x33D1, - 7619: 0x33D2, - 7620: 0x33D5, - 7621: 0xFE30, - 7622: 0xFFE2, - 7623: 0xFFE4, - 7625: 0x2121, - 7626: 0x3231, - 7628: 0x2010, - 7632: 0x30FC, - 7633: 0x309B, - 7634: 0x309C, - 7635: 0x30FD, - 7636: 0x30FE, - 7637: 0x3006, - 7638: 0x309D, - 7639: 0x309E, - 7640: 0xFE49, - 7641: 0xFE4A, - 7642: 0xFE4B, - 7643: 0xFE4C, - 7644: 0xFE4D, - 7645: 0xFE4E, - 7646: 0xFE4F, - 7647: 0xFE50, - 7648: 0xFE51, - 7649: 0xFE52, - 7650: 0xFE54, - 7651: 0xFE55, - 7652: 0xFE56, - 7653: 0xFE57, - 7654: 0xFE59, - 7655: 0xFE5A, - 7656: 0xFE5B, - 7657: 0xFE5C, - 7658: 0xFE5D, - 7659: 0xFE5E, - 7660: 0xFE5F, - 7661: 0xFE60, - 7662: 0xFE61, - 7663: 0xFE62, - 7664: 0xFE63, - 7665: 0xFE64, - 7666: 0xFE65, - 7667: 0xFE66, - 7668: 0xFE68, - 7669: 0xFE69, - 7670: 0xFE6A, - 7671: 0xFE6B, - 7672: 0x303E, - 7673: 0x2FF0, - 7674: 0x2FF1, - 7675: 0x2FF2, - 7676: 0x2FF3, - 7677: 0x2FF4, - 7678: 0x2FF5, - 7679: 0x2FF6, - 7680: 0x2FF7, - 7681: 0x2FF8, - 7682: 0x2FF9, - 7683: 0x2FFA, - 7684: 0x2FFB, - 7685: 0x3007, - 7699: 0x2500, - 7700: 0x2501, - 7701: 0x2502, - 7702: 0x2503, - 7703: 0x2504, - 7704: 0x2505, - 7705: 0x2506, - 7706: 0x2507, - 7707: 0x2508, - 7708: 0x2509, - 7709: 0x250A, - 7710: 0x250B, - 7711: 0x250C, - 7712: 0x250D, - 7713: 0x250E, - 7714: 0x250F, - 7715: 0x2510, - 7716: 0x2511, - 7717: 0x2512, - 7718: 0x2513, - 7719: 0x2514, - 7720: 0x2515, - 7721: 0x2516, - 7722: 0x2517, - 7723: 0x2518, - 7724: 0x2519, - 7725: 0x251A, - 7726: 0x251B, - 7727: 0x251C, - 7728: 0x251D, - 7729: 0x251E, - 7730: 0x251F, - 7731: 0x2520, - 7732: 0x2521, - 7733: 0x2522, - 7734: 0x2523, - 7735: 0x2524, - 7736: 0x2525, - 7737: 0x2526, - 7738: 0x2527, - 7739: 0x2528, - 7740: 0x2529, - 7741: 0x252A, - 7742: 0x252B, - 7743: 0x252C, - 7744: 0x252D, - 7745: 0x252E, - 7746: 0x252F, - 7747: 0x2530, - 7748: 0x2531, - 7749: 0x2532, - 7750: 0x2533, - 7751: 0x2534, - 7752: 0x2535, - 7753: 0x2536, - 7754: 0x2537, - 7755: 0x2538, - 7756: 0x2539, - 7757: 0x253A, - 7758: 0x253B, - 7759: 0x253C, - 7760: 0x253D, - 7761: 0x253E, - 7762: 0x253F, - 7763: 0x2540, - 7764: 0x2541, - 7765: 0x2542, - 7766: 0x2543, - 7767: 0x2544, - 7768: 0x2545, - 7769: 0x2546, - 7770: 0x2547, - 7771: 0x2548, - 7772: 0x2549, - 7773: 0x254A, - 7774: 0x254B, - 7790: 0x72DC, - 7791: 0x72DD, - 7792: 0x72DF, - 7793: 0x72E2, - 7794: 0x72E3, - 7795: 0x72E4, - 7796: 0x72E5, - 7797: 0x72E6, - 7798: 0x72E7, - 7799: 0x72EA, - 7800: 0x72EB, - 7801: 0x72F5, - 7802: 0x72F6, - 7803: 0x72F9, - 7804: 0x72FD, - 7805: 0x72FE, - 7806: 0x72FF, - 7807: 0x7300, - 7808: 0x7302, - 7809: 0x7304, - 7810: 0x7305, - 7811: 0x7306, - 7812: 0x7307, - 7813: 0x7308, - 7814: 0x7309, - 7815: 0x730B, - 7816: 0x730C, - 7817: 0x730D, - 7818: 0x730F, - 7819: 0x7310, - 7820: 0x7311, - 7821: 0x7312, - 7822: 0x7314, - 7823: 0x7318, - 7824: 0x7319, - 7825: 0x731A, - 7826: 0x731F, - 7827: 0x7320, - 7828: 0x7323, - 7829: 0x7324, - 7830: 0x7326, - 7831: 0x7327, - 7832: 0x7328, - 7833: 0x732D, - 7834: 0x732F, - 7835: 0x7330, - 7836: 0x7332, - 7837: 0x7333, - 7838: 0x7335, - 7839: 0x7336, - 7840: 0x733A, - 7841: 0x733B, - 7842: 0x733C, - 7843: 0x733D, - 7844: 0x7340, - 7845: 0x7341, - 7846: 0x7342, - 7847: 0x7343, - 7848: 0x7344, - 7849: 0x7345, - 7850: 0x7346, - 7851: 0x7347, - 7852: 0x7348, - 7853: 0x7349, - 7854: 0x734A, - 7855: 0x734B, - 7856: 0x734C, - 7857: 0x734E, - 7858: 0x734F, - 7859: 0x7351, - 7860: 0x7353, - 7861: 0x7354, - 7862: 0x7355, - 7863: 0x7356, - 7864: 0x7358, - 7865: 0x7359, - 7866: 0x735A, - 7867: 0x735B, - 7868: 0x735C, - 7869: 0x735D, - 7870: 0x735E, - 7871: 0x735F, - 7872: 0x7361, - 7873: 0x7362, - 7874: 0x7363, - 7875: 0x7364, - 7876: 0x7365, - 7877: 0x7366, - 7878: 0x7367, - 7879: 0x7368, - 7880: 0x7369, - 7881: 0x736A, - 7882: 0x736B, - 7883: 0x736E, - 7884: 0x7370, - 7885: 0x7371, - 7980: 0x7372, - 7981: 0x7373, - 7982: 0x7374, - 7983: 0x7375, - 7984: 0x7376, - 7985: 0x7377, - 7986: 0x7378, - 7987: 0x7379, - 7988: 0x737A, - 7989: 0x737B, - 7990: 0x737C, - 7991: 0x737D, - 7992: 0x737F, - 7993: 0x7380, - 7994: 0x7381, - 7995: 0x7382, - 7996: 0x7383, - 7997: 0x7385, - 7998: 0x7386, - 7999: 0x7388, - 8000: 0x738A, - 8001: 0x738C, - 8002: 0x738D, - 8003: 0x738F, - 8004: 0x7390, - 8005: 0x7392, - 8006: 0x7393, - 8007: 0x7394, - 8008: 0x7395, - 8009: 0x7397, - 8010: 0x7398, - 8011: 0x7399, - 8012: 0x739A, - 8013: 0x739C, - 8014: 0x739D, - 8015: 0x739E, - 8016: 0x73A0, - 8017: 0x73A1, - 8018: 0x73A3, - 8019: 0x73A4, - 8020: 0x73A5, - 8021: 0x73A6, - 8022: 0x73A7, - 8023: 0x73A8, - 8024: 0x73AA, - 8025: 0x73AC, - 8026: 0x73AD, - 8027: 0x73B1, - 8028: 0x73B4, - 8029: 0x73B5, - 8030: 0x73B6, - 8031: 0x73B8, - 8032: 0x73B9, - 8033: 0x73BC, - 8034: 0x73BD, - 8035: 0x73BE, - 8036: 0x73BF, - 8037: 0x73C1, - 8038: 0x73C3, - 8039: 0x73C4, - 8040: 0x73C5, - 8041: 0x73C6, - 8042: 0x73C7, - 8043: 0x73CB, - 8044: 0x73CC, - 8045: 0x73CE, - 8046: 0x73D2, - 8047: 0x73D3, - 8048: 0x73D4, - 8049: 0x73D5, - 8050: 0x73D6, - 8051: 0x73D7, - 8052: 0x73D8, - 8053: 0x73DA, - 8054: 0x73DB, - 8055: 0x73DC, - 8056: 0x73DD, - 8057: 0x73DF, - 8058: 0x73E1, - 8059: 0x73E2, - 8060: 0x73E3, - 8061: 0x73E4, - 8062: 0x73E6, - 8063: 0x73E8, - 8064: 0x73EA, - 8065: 0x73EB, - 8066: 0x73EC, - 8067: 0x73EE, - 8068: 0x73EF, - 8069: 0x73F0, - 8070: 0x73F1, - 8071: 0x73F3, - 8072: 0x73F4, - 8073: 0x73F5, - 8074: 0x73F6, - 8075: 0x73F7, - 8170: 0x73F8, - 8171: 0x73F9, - 8172: 0x73FA, - 8173: 0x73FB, - 8174: 0x73FC, - 8175: 0x73FD, - 8176: 0x73FE, - 8177: 0x73FF, - 8178: 0x7400, - 8179: 0x7401, - 8180: 0x7402, - 8181: 0x7404, - 8182: 0x7407, - 8183: 0x7408, - 8184: 0x740B, - 8185: 0x740C, - 8186: 0x740D, - 8187: 0x740E, - 8188: 0x7411, - 8189: 0x7412, - 8190: 0x7413, - 8191: 0x7414, - 8192: 0x7415, - 8193: 0x7416, - 8194: 0x7417, - 8195: 0x7418, - 8196: 0x7419, - 8197: 0x741C, - 8198: 0x741D, - 8199: 0x741E, - 8200: 0x741F, - 8201: 0x7420, - 8202: 0x7421, - 8203: 0x7423, - 8204: 0x7424, - 8205: 0x7427, - 8206: 0x7429, - 8207: 0x742B, - 8208: 0x742D, - 8209: 0x742F, - 8210: 0x7431, - 8211: 0x7432, - 8212: 0x7437, - 8213: 0x7438, - 8214: 0x7439, - 8215: 0x743A, - 8216: 0x743B, - 8217: 0x743D, - 8218: 0x743E, - 8219: 0x743F, - 8220: 0x7440, - 8221: 0x7442, - 8222: 0x7443, - 8223: 0x7444, - 8224: 0x7445, - 8225: 0x7446, - 8226: 0x7447, - 8227: 0x7448, - 8228: 0x7449, - 8229: 0x744A, - 8230: 0x744B, - 8231: 0x744C, - 8232: 0x744D, - 8233: 0x744E, - 8234: 0x744F, - 8235: 0x7450, - 8236: 0x7451, - 8237: 0x7452, - 8238: 0x7453, - 8239: 0x7454, - 8240: 0x7456, - 8241: 0x7458, - 8242: 0x745D, - 8243: 0x7460, - 8244: 0x7461, - 8245: 0x7462, - 8246: 0x7463, - 8247: 0x7464, - 8248: 0x7465, - 8249: 0x7466, - 8250: 0x7467, - 8251: 0x7468, - 8252: 0x7469, - 8253: 0x746A, - 8254: 0x746B, - 8255: 0x746C, - 8256: 0x746E, - 8257: 0x746F, - 8258: 0x7471, - 8259: 0x7472, - 8260: 0x7473, - 8261: 0x7474, - 8262: 0x7475, - 8263: 0x7478, - 8264: 0x7479, - 8265: 0x747A, - 8360: 0x747B, - 8361: 0x747C, - 8362: 0x747D, - 8363: 0x747F, - 8364: 0x7482, - 8365: 0x7484, - 8366: 0x7485, - 8367: 0x7486, - 8368: 0x7488, - 8369: 0x7489, - 8370: 0x748A, - 8371: 0x748C, - 8372: 0x748D, - 8373: 0x748F, - 8374: 0x7491, - 8375: 0x7492, - 8376: 0x7493, - 8377: 0x7494, - 8378: 0x7495, - 8379: 0x7496, - 8380: 0x7497, - 8381: 0x7498, - 8382: 0x7499, - 8383: 0x749A, - 8384: 0x749B, - 8385: 0x749D, - 8386: 0x749F, - 8387: 0x74A0, - 8388: 0x74A1, - 8389: 0x74A2, - 8390: 0x74A3, - 8391: 0x74A4, - 8392: 0x74A5, - 8393: 0x74A6, - 8394: 0x74AA, - 8395: 0x74AB, - 8396: 0x74AC, - 8397: 0x74AD, - 8398: 0x74AE, - 8399: 0x74AF, - 8400: 0x74B0, - 8401: 0x74B1, - 8402: 0x74B2, - 8403: 0x74B3, - 8404: 0x74B4, - 8405: 0x74B5, - 8406: 0x74B6, - 8407: 0x74B7, - 8408: 0x74B8, - 8409: 0x74B9, - 8410: 0x74BB, - 8411: 0x74BC, - 8412: 0x74BD, - 8413: 0x74BE, - 8414: 0x74BF, - 8415: 0x74C0, - 8416: 0x74C1, - 8417: 0x74C2, - 8418: 0x74C3, - 8419: 0x74C4, - 8420: 0x74C5, - 8421: 0x74C6, - 8422: 0x74C7, - 8423: 0x74C8, - 8424: 0x74C9, - 8425: 0x74CA, - 8426: 0x74CB, - 8427: 0x74CC, - 8428: 0x74CD, - 8429: 0x74CE, - 8430: 0x74CF, - 8431: 0x74D0, - 8432: 0x74D1, - 8433: 0x74D3, - 8434: 0x74D4, - 8435: 0x74D5, - 8436: 0x74D6, - 8437: 0x74D7, - 8438: 0x74D8, - 8439: 0x74D9, - 8440: 0x74DA, - 8441: 0x74DB, - 8442: 0x74DD, - 8443: 0x74DF, - 8444: 0x74E1, - 8445: 0x74E5, - 8446: 0x74E7, - 8447: 0x74E8, - 8448: 0x74E9, - 8449: 0x74EA, - 8450: 0x74EB, - 8451: 0x74EC, - 8452: 0x74ED, - 8453: 0x74F0, - 8454: 0x74F1, - 8455: 0x74F2, - 8550: 0x74F3, - 8551: 0x74F5, - 8552: 0x74F8, - 8553: 0x74F9, - 8554: 0x74FA, - 8555: 0x74FB, - 8556: 0x74FC, - 8557: 0x74FD, - 8558: 0x74FE, - 8559: 0x7500, - 8560: 0x7501, - 8561: 0x7502, - 8562: 0x7503, - 8563: 0x7505, - 8564: 0x7506, - 8565: 0x7507, - 8566: 0x7508, - 8567: 0x7509, - 8568: 0x750A, - 8569: 0x750B, - 8570: 0x750C, - 8571: 0x750E, - 8572: 0x7510, - 8573: 0x7512, - 8574: 0x7514, - 8575: 0x7515, - 8576: 0x7516, - 8577: 0x7517, - 8578: 0x751B, - 8579: 0x751D, - 8580: 0x751E, - 8581: 0x7520, - 8582: 0x7521, - 8583: 0x7522, - 8584: 0x7523, - 8585: 0x7524, - 8586: 0x7526, - 8587: 0x7527, - 8588: 0x752A, - 8589: 0x752E, - 8590: 0x7534, - 8591: 0x7536, - 8592: 0x7539, - 8593: 0x753C, - 8594: 0x753D, - 8595: 0x753F, - 8596: 0x7541, - 8597: 0x7542, - 8598: 0x7543, - 8599: 0x7544, - 8600: 0x7546, - 8601: 0x7547, - 8602: 0x7549, - 8603: 0x754A, - 8604: 0x754D, - 8605: 0x7550, - 8606: 0x7551, - 8607: 0x7552, - 8608: 0x7553, - 8609: 0x7555, - 8610: 0x7556, - 8611: 0x7557, - 8612: 0x7558, - 8613: 0x755D, - 8614: 0x755E, - 8615: 0x755F, - 8616: 0x7560, - 8617: 0x7561, - 8618: 0x7562, - 8619: 0x7563, - 8620: 0x7564, - 8621: 0x7567, - 8622: 0x7568, - 8623: 0x7569, - 8624: 0x756B, - 8625: 0x756C, - 8626: 0x756D, - 8627: 0x756E, - 8628: 0x756F, - 8629: 0x7570, - 8630: 0x7571, - 8631: 0x7573, - 8632: 0x7575, - 8633: 0x7576, - 8634: 0x7577, - 8635: 0x757A, - 8636: 0x757B, - 8637: 0x757C, - 8638: 0x757D, - 8639: 0x757E, - 8640: 0x7580, - 8641: 0x7581, - 8642: 0x7582, - 8643: 0x7584, - 8644: 0x7585, - 8645: 0x7587, - 8740: 0x7588, - 8741: 0x7589, - 8742: 0x758A, - 8743: 0x758C, - 8744: 0x758D, - 8745: 0x758E, - 8746: 0x7590, - 8747: 0x7593, - 8748: 0x7595, - 8749: 0x7598, - 8750: 0x759B, - 8751: 0x759C, - 8752: 0x759E, - 8753: 0x75A2, - 8754: 0x75A6, - 8755: 0x75A7, - 8756: 0x75A8, - 8757: 0x75A9, - 8758: 0x75AA, - 8759: 0x75AD, - 8760: 0x75B6, - 8761: 0x75B7, - 8762: 0x75BA, - 8763: 0x75BB, - 8764: 0x75BF, - 8765: 0x75C0, - 8766: 0x75C1, - 8767: 0x75C6, - 8768: 0x75CB, - 8769: 0x75CC, - 8770: 0x75CE, - 8771: 0x75CF, - 8772: 0x75D0, - 8773: 0x75D1, - 8774: 0x75D3, - 8775: 0x75D7, - 8776: 0x75D9, - 8777: 0x75DA, - 8778: 0x75DC, - 8779: 0x75DD, - 8780: 0x75DF, - 8781: 0x75E0, - 8782: 0x75E1, - 8783: 0x75E5, - 8784: 0x75E9, - 8785: 0x75EC, - 8786: 0x75ED, - 8787: 0x75EE, - 8788: 0x75EF, - 8789: 0x75F2, - 8790: 0x75F3, - 8791: 0x75F5, - 8792: 0x75F6, - 8793: 0x75F7, - 8794: 0x75F8, - 8795: 0x75FA, - 8796: 0x75FB, - 8797: 0x75FD, - 8798: 0x75FE, - 8799: 0x7602, - 8800: 0x7604, - 8801: 0x7606, - 8802: 0x7607, - 8803: 0x7608, - 8804: 0x7609, - 8805: 0x760B, - 8806: 0x760D, - 8807: 0x760E, - 8808: 0x760F, - 8809: 0x7611, - 8810: 0x7612, - 8811: 0x7613, - 8812: 0x7614, - 8813: 0x7616, - 8814: 0x761A, - 8815: 0x761C, - 8816: 0x761D, - 8817: 0x761E, - 8818: 0x7621, - 8819: 0x7623, - 8820: 0x7627, - 8821: 0x7628, - 8822: 0x762C, - 8823: 0x762E, - 8824: 0x762F, - 8825: 0x7631, - 8826: 0x7632, - 8827: 0x7636, - 8828: 0x7637, - 8829: 0x7639, - 8830: 0x763A, - 8831: 0x763B, - 8832: 0x763D, - 8833: 0x7641, - 8834: 0x7642, - 8835: 0x7644, - 8930: 0x7645, - 8931: 0x7646, - 8932: 0x7647, - 8933: 0x7648, - 8934: 0x7649, - 8935: 0x764A, - 8936: 0x764B, - 8937: 0x764E, - 8938: 0x764F, - 8939: 0x7650, - 8940: 0x7651, - 8941: 0x7652, - 8942: 0x7653, - 8943: 0x7655, - 8944: 0x7657, - 8945: 0x7658, - 8946: 0x7659, - 8947: 0x765A, - 8948: 0x765B, - 8949: 0x765D, - 8950: 0x765F, - 8951: 0x7660, - 8952: 0x7661, - 8953: 0x7662, - 8954: 0x7664, - 8955: 0x7665, - 8956: 0x7666, - 8957: 0x7667, - 8958: 0x7668, - 8959: 0x7669, - 8960: 0x766A, - 8961: 0x766C, - 8962: 0x766D, - 8963: 0x766E, - 8964: 0x7670, - 8965: 0x7671, - 8966: 0x7672, - 8967: 0x7673, - 8968: 0x7674, - 8969: 0x7675, - 8970: 0x7676, - 8971: 0x7677, - 8972: 0x7679, - 8973: 0x767A, - 8974: 0x767C, - 8975: 0x767F, - 8976: 0x7680, - 8977: 0x7681, - 8978: 0x7683, - 8979: 0x7685, - 8980: 0x7689, - 8981: 0x768A, - 8982: 0x768C, - 8983: 0x768D, - 8984: 0x768F, - 8985: 0x7690, - 8986: 0x7692, - 8987: 0x7694, - 8988: 0x7695, - 8989: 0x7697, - 8990: 0x7698, - 8991: 0x769A, - 8992: 0x769B, - 8993: 0x769C, - 8994: 0x769D, - 8995: 0x769E, - 8996: 0x769F, - 8997: 0x76A0, - 8998: 0x76A1, - 8999: 0x76A2, - 9000: 0x76A3, - 9001: 0x76A5, - 9002: 0x76A6, - 9003: 0x76A7, - 9004: 0x76A8, - 9005: 0x76A9, - 9006: 0x76AA, - 9007: 0x76AB, - 9008: 0x76AC, - 9009: 0x76AD, - 9010: 0x76AF, - 9011: 0x76B0, - 9012: 0x76B3, - 9013: 0x76B5, - 9014: 0x76B6, - 9015: 0x76B7, - 9016: 0x76B8, - 9017: 0x76B9, - 9018: 0x76BA, - 9019: 0x76BB, - 9020: 0x76BC, - 9021: 0x76BD, - 9022: 0x76BE, - 9023: 0x76C0, - 9024: 0x76C1, - 9025: 0x76C3, - 9026: 0x554A, - 9027: 0x963F, - 9028: 0x57C3, - 9029: 0x6328, - 9030: 0x54CE, - 9031: 0x5509, - 9032: 0x54C0, - 9033: 0x7691, - 9034: 0x764C, - 9035: 0x853C, - 9036: 0x77EE, - 9037: 0x827E, - 9038: 0x788D, - 9039: 0x7231, - 9040: 0x9698, - 9041: 0x978D, - 9042: 0x6C28, - 9043: 0x5B89, - 9044: 0x4FFA, - 9045: 0x6309, - 9046: 0x6697, - 9047: 0x5CB8, - 9048: 0x80FA, - 9049: 0x6848, - 9050: 0x80AE, - 9051: 0x6602, - 9052: 0x76CE, - 9053: 0x51F9, - 9054: 0x6556, - 9055: 0x71AC, - 9056: 0x7FF1, - 9057: 0x8884, - 9058: 0x50B2, - 9059: 0x5965, - 9060: 0x61CA, - 9061: 0x6FB3, - 9062: 0x82AD, - 9063: 0x634C, - 9064: 0x6252, - 9065: 0x53ED, - 9066: 0x5427, - 9067: 0x7B06, - 9068: 0x516B, - 9069: 0x75A4, - 9070: 0x5DF4, - 9071: 0x62D4, - 9072: 0x8DCB, - 9073: 0x9776, - 9074: 0x628A, - 9075: 0x8019, - 9076: 0x575D, - 9077: 0x9738, - 9078: 0x7F62, - 9079: 0x7238, - 9080: 0x767D, - 9081: 0x67CF, - 9082: 0x767E, - 9083: 0x6446, - 9084: 0x4F70, - 9085: 0x8D25, - 9086: 0x62DC, - 9087: 0x7A17, - 9088: 0x6591, - 9089: 0x73ED, - 9090: 0x642C, - 9091: 0x6273, - 9092: 0x822C, - 9093: 0x9881, - 9094: 0x677F, - 9095: 0x7248, - 9096: 0x626E, - 9097: 0x62CC, - 9098: 0x4F34, - 9099: 0x74E3, - 9100: 0x534A, - 9101: 0x529E, - 9102: 0x7ECA, - 9103: 0x90A6, - 9104: 0x5E2E, - 9105: 0x6886, - 9106: 0x699C, - 9107: 0x8180, - 9108: 0x7ED1, - 9109: 0x68D2, - 9110: 0x78C5, - 9111: 0x868C, - 9112: 0x9551, - 9113: 0x508D, - 9114: 0x8C24, - 9115: 0x82DE, - 9116: 0x80DE, - 9117: 0x5305, - 9118: 0x8912, - 9119: 0x5265, - 9120: 0x76C4, - 9121: 0x76C7, - 9122: 0x76C9, - 9123: 0x76CB, - 9124: 0x76CC, - 9125: 0x76D3, - 9126: 0x76D5, - 9127: 0x76D9, - 9128: 0x76DA, - 9129: 0x76DC, - 9130: 0x76DD, - 9131: 0x76DE, - 9132: 0x76E0, - 9133: 0x76E1, - 9134: 0x76E2, - 9135: 0x76E3, - 9136: 0x76E4, - 9137: 0x76E6, - 9138: 0x76E7, - 9139: 0x76E8, - 9140: 0x76E9, - 9141: 0x76EA, - 9142: 0x76EB, - 9143: 0x76EC, - 9144: 0x76ED, - 9145: 0x76F0, - 9146: 0x76F3, - 9147: 0x76F5, - 9148: 0x76F6, - 9149: 0x76F7, - 9150: 0x76FA, - 9151: 0x76FB, - 9152: 0x76FD, - 9153: 0x76FF, - 9154: 0x7700, - 9155: 0x7702, - 9156: 0x7703, - 9157: 0x7705, - 9158: 0x7706, - 9159: 0x770A, - 9160: 0x770C, - 9161: 0x770E, - 9162: 0x770F, - 9163: 0x7710, - 9164: 0x7711, - 9165: 0x7712, - 9166: 0x7713, - 9167: 0x7714, - 9168: 0x7715, - 9169: 0x7716, - 9170: 0x7717, - 9171: 0x7718, - 9172: 0x771B, - 9173: 0x771C, - 9174: 0x771D, - 9175: 0x771E, - 9176: 0x7721, - 9177: 0x7723, - 9178: 0x7724, - 9179: 0x7725, - 9180: 0x7727, - 9181: 0x772A, - 9182: 0x772B, - 9183: 0x772C, - 9184: 0x772E, - 9185: 0x7730, - 9186: 0x7731, - 9187: 0x7732, - 9188: 0x7733, - 9189: 0x7734, - 9190: 0x7739, - 9191: 0x773B, - 9192: 0x773D, - 9193: 0x773E, - 9194: 0x773F, - 9195: 0x7742, - 9196: 0x7744, - 9197: 0x7745, - 9198: 0x7746, - 9199: 0x7748, - 9200: 0x7749, - 9201: 0x774A, - 9202: 0x774B, - 9203: 0x774C, - 9204: 0x774D, - 9205: 0x774E, - 9206: 0x774F, - 9207: 0x7752, - 9208: 0x7753, - 9209: 0x7754, - 9210: 0x7755, - 9211: 0x7756, - 9212: 0x7757, - 9213: 0x7758, - 9214: 0x7759, - 9215: 0x775C, - 9216: 0x8584, - 9217: 0x96F9, - 9218: 0x4FDD, - 9219: 0x5821, - 9220: 0x9971, - 9221: 0x5B9D, - 9222: 0x62B1, - 9223: 0x62A5, - 9224: 0x66B4, - 9225: 0x8C79, - 9226: 0x9C8D, - 9227: 0x7206, - 9228: 0x676F, - 9229: 0x7891, - 9230: 0x60B2, - 9231: 0x5351, - 9232: 0x5317, - 9233: 0x8F88, - 9234: 0x80CC, - 9235: 0x8D1D, - 9236: 0x94A1, - 9237: 0x500D, - 9238: 0x72C8, - 9239: 0x5907, - 9240: 0x60EB, - 9241: 0x7119, - 9242: 0x88AB, - 9243: 0x5954, - 9244: 0x82EF, - 9245: 0x672C, - 9246: 0x7B28, - 9247: 0x5D29, - 9248: 0x7EF7, - 9249: 0x752D, - 9250: 0x6CF5, - 9251: 0x8E66, - 9252: 0x8FF8, - 9253: 0x903C, - 9254: 0x9F3B, - 9255: 0x6BD4, - 9256: 0x9119, - 9257: 0x7B14, - 9258: 0x5F7C, - 9259: 0x78A7, - 9260: 0x84D6, - 9261: 0x853D, - 9262: 0x6BD5, - 9263: 0x6BD9, - 9264: 0x6BD6, - 9265: 0x5E01, - 9266: 0x5E87, - 9267: 0x75F9, - 9268: 0x95ED, - 9269: 0x655D, - 9270: 0x5F0A, - 9271: 0x5FC5, - 9272: 0x8F9F, - 9273: 0x58C1, - 9274: 0x81C2, - 9275: 0x907F, - 9276: 0x965B, - 9277: 0x97AD, - 9278: 0x8FB9, - 9279: 0x7F16, - 9280: 0x8D2C, - 9281: 0x6241, - 9282: 0x4FBF, - 9283: 0x53D8, - 9284: 0x535E, - 9285: 0x8FA8, - 9286: 0x8FA9, - 9287: 0x8FAB, - 9288: 0x904D, - 9289: 0x6807, - 9290: 0x5F6A, - 9291: 0x8198, - 9292: 0x8868, - 9293: 0x9CD6, - 9294: 0x618B, - 9295: 0x522B, - 9296: 0x762A, - 9297: 0x5F6C, - 9298: 0x658C, - 9299: 0x6FD2, - 9300: 0x6EE8, - 9301: 0x5BBE, - 9302: 0x6448, - 9303: 0x5175, - 9304: 0x51B0, - 9305: 0x67C4, - 9306: 0x4E19, - 9307: 0x79C9, - 9308: 0x997C, - 9309: 0x70B3, - 9310: 0x775D, - 9311: 0x775E, - 9312: 0x775F, - 9313: 0x7760, - 9314: 0x7764, - 9315: 0x7767, - 9316: 0x7769, - 9317: 0x776A, - 9318: 0x776D, - 9319: 0x776E, - 9320: 0x776F, - 9321: 0x7770, - 9322: 0x7771, - 9323: 0x7772, - 9324: 0x7773, - 9325: 0x7774, - 9326: 0x7775, - 9327: 0x7776, - 9328: 0x7777, - 9329: 0x7778, - 9330: 0x777A, - 9331: 0x777B, - 9332: 0x777C, - 9333: 0x7781, - 9334: 0x7782, - 9335: 0x7783, - 9336: 0x7786, - 9337: 0x7787, - 9338: 0x7788, - 9339: 0x7789, - 9340: 0x778A, - 9341: 0x778B, - 9342: 0x778F, - 9343: 0x7790, - 9344: 0x7793, - 9345: 0x7794, - 9346: 0x7795, - 9347: 0x7796, - 9348: 0x7797, - 9349: 0x7798, - 9350: 0x7799, - 9351: 0x779A, - 9352: 0x779B, - 9353: 0x779C, - 9354: 0x779D, - 9355: 0x779E, - 9356: 0x77A1, - 9357: 0x77A3, - 9358: 0x77A4, - 9359: 0x77A6, - 9360: 0x77A8, - 9361: 0x77AB, - 9362: 0x77AD, - 9363: 0x77AE, - 9364: 0x77AF, - 9365: 0x77B1, - 9366: 0x77B2, - 9367: 0x77B4, - 9368: 0x77B6, - 9369: 0x77B7, - 9370: 0x77B8, - 9371: 0x77B9, - 9372: 0x77BA, - 9373: 0x77BC, - 9374: 0x77BE, - 9375: 0x77C0, - 9376: 0x77C1, - 9377: 0x77C2, - 9378: 0x77C3, - 9379: 0x77C4, - 9380: 0x77C5, - 9381: 0x77C6, - 9382: 0x77C7, - 9383: 0x77C8, - 9384: 0x77C9, - 9385: 0x77CA, - 9386: 0x77CB, - 9387: 0x77CC, - 9388: 0x77CE, - 9389: 0x77CF, - 9390: 0x77D0, - 9391: 0x77D1, - 9392: 0x77D2, - 9393: 0x77D3, - 9394: 0x77D4, - 9395: 0x77D5, - 9396: 0x77D6, - 9397: 0x77D8, - 9398: 0x77D9, - 9399: 0x77DA, - 9400: 0x77DD, - 9401: 0x77DE, - 9402: 0x77DF, - 9403: 0x77E0, - 9404: 0x77E1, - 9405: 0x77E4, - 9406: 0x75C5, - 9407: 0x5E76, - 9408: 0x73BB, - 9409: 0x83E0, - 9410: 0x64AD, - 9411: 0x62E8, - 9412: 0x94B5, - 9413: 0x6CE2, - 9414: 0x535A, - 9415: 0x52C3, - 9416: 0x640F, - 9417: 0x94C2, - 9418: 0x7B94, - 9419: 0x4F2F, - 9420: 0x5E1B, - 9421: 0x8236, - 9422: 0x8116, - 9423: 0x818A, - 9424: 0x6E24, - 9425: 0x6CCA, - 9426: 0x9A73, - 9427: 0x6355, - 9428: 0x535C, - 9429: 0x54FA, - 9430: 0x8865, - 9431: 0x57E0, - 9432: 0x4E0D, - 9433: 0x5E03, - 9434: 0x6B65, - 9435: 0x7C3F, - 9436: 0x90E8, - 9437: 0x6016, - 9438: 0x64E6, - 9439: 0x731C, - 9440: 0x88C1, - 9441: 0x6750, - 9442: 0x624D, - 9443: 0x8D22, - 9444: 0x776C, - 9445: 0x8E29, - 9446: 0x91C7, - 9447: 0x5F69, - 9448: 0x83DC, - 9449: 0x8521, - 9450: 0x9910, - 9451: 0x53C2, - 9452: 0x8695, - 9453: 0x6B8B, - 9454: 0x60ED, - 9455: 0x60E8, - 9456: 0x707F, - 9457: 0x82CD, - 9458: 0x8231, - 9459: 0x4ED3, - 9460: 0x6CA7, - 9461: 0x85CF, - 9462: 0x64CD, - 9463: 0x7CD9, - 9464: 0x69FD, - 9465: 0x66F9, - 9466: 0x8349, - 9467: 0x5395, - 9468: 0x7B56, - 9469: 0x4FA7, - 9470: 0x518C, - 9471: 0x6D4B, - 9472: 0x5C42, - 9473: 0x8E6D, - 9474: 0x63D2, - 9475: 0x53C9, - 9476: 0x832C, - 9477: 0x8336, - 9478: 0x67E5, - 9479: 0x78B4, - 9480: 0x643D, - 9481: 0x5BDF, - 9482: 0x5C94, - 9483: 0x5DEE, - 9484: 0x8BE7, - 9485: 0x62C6, - 9486: 0x67F4, - 9487: 0x8C7A, - 9488: 0x6400, - 9489: 0x63BA, - 9490: 0x8749, - 9491: 0x998B, - 9492: 0x8C17, - 9493: 0x7F20, - 9494: 0x94F2, - 9495: 0x4EA7, - 9496: 0x9610, - 9497: 0x98A4, - 9498: 0x660C, - 9499: 0x7316, - 9500: 0x77E6, - 9501: 0x77E8, - 9502: 0x77EA, - 9503: 0x77EF, - 9504: 0x77F0, - 9505: 0x77F1, - 9506: 0x77F2, - 9507: 0x77F4, - 9508: 0x77F5, - 9509: 0x77F7, - 9510: 0x77F9, - 9511: 0x77FA, - 9512: 0x77FB, - 9513: 0x77FC, - 9514: 0x7803, - 9515: 0x7804, - 9516: 0x7805, - 9517: 0x7806, - 9518: 0x7807, - 9519: 0x7808, - 9520: 0x780A, - 9521: 0x780B, - 9522: 0x780E, - 9523: 0x780F, - 9524: 0x7810, - 9525: 0x7813, - 9526: 0x7815, - 9527: 0x7819, - 9528: 0x781B, - 9529: 0x781E, - 9530: 0x7820, - 9531: 0x7821, - 9532: 0x7822, - 9533: 0x7824, - 9534: 0x7828, - 9535: 0x782A, - 9536: 0x782B, - 9537: 0x782E, - 9538: 0x782F, - 9539: 0x7831, - 9540: 0x7832, - 9541: 0x7833, - 9542: 0x7835, - 9543: 0x7836, - 9544: 0x783D, - 9545: 0x783F, - 9546: 0x7841, - 9547: 0x7842, - 9548: 0x7843, - 9549: 0x7844, - 9550: 0x7846, - 9551: 0x7848, - 9552: 0x7849, - 9553: 0x784A, - 9554: 0x784B, - 9555: 0x784D, - 9556: 0x784F, - 9557: 0x7851, - 9558: 0x7853, - 9559: 0x7854, - 9560: 0x7858, - 9561: 0x7859, - 9562: 0x785A, - 9563: 0x785B, - 9564: 0x785C, - 9565: 0x785E, - 9566: 0x785F, - 9567: 0x7860, - 9568: 0x7861, - 9569: 0x7862, - 9570: 0x7863, - 9571: 0x7864, - 9572: 0x7865, - 9573: 0x7866, - 9574: 0x7867, - 9575: 0x7868, - 9576: 0x7869, - 9577: 0x786F, - 9578: 0x7870, - 9579: 0x7871, - 9580: 0x7872, - 9581: 0x7873, - 9582: 0x7874, - 9583: 0x7875, - 9584: 0x7876, - 9585: 0x7878, - 9586: 0x7879, - 9587: 0x787A, - 9588: 0x787B, - 9589: 0x787D, - 9590: 0x787E, - 9591: 0x787F, - 9592: 0x7880, - 9593: 0x7881, - 9594: 0x7882, - 9595: 0x7883, - 9596: 0x573A, - 9597: 0x5C1D, - 9598: 0x5E38, - 9599: 0x957F, - 9600: 0x507F, - 9601: 0x80A0, - 9602: 0x5382, - 9603: 0x655E, - 9604: 0x7545, - 9605: 0x5531, - 9606: 0x5021, - 9607: 0x8D85, - 9608: 0x6284, - 9609: 0x949E, - 9610: 0x671D, - 9611: 0x5632, - 9612: 0x6F6E, - 9613: 0x5DE2, - 9614: 0x5435, - 9615: 0x7092, - 9616: 0x8F66, - 9617: 0x626F, - 9618: 0x64A4, - 9619: 0x63A3, - 9620: 0x5F7B, - 9621: 0x6F88, - 9622: 0x90F4, - 9623: 0x81E3, - 9624: 0x8FB0, - 9625: 0x5C18, - 9626: 0x6668, - 9627: 0x5FF1, - 9628: 0x6C89, - 9629: 0x9648, - 9630: 0x8D81, - 9631: 0x886C, - 9632: 0x6491, - 9633: 0x79F0, - 9634: 0x57CE, - 9635: 0x6A59, - 9636: 0x6210, - 9637: 0x5448, - 9638: 0x4E58, - 9639: 0x7A0B, - 9640: 0x60E9, - 9641: 0x6F84, - 9642: 0x8BDA, - 9643: 0x627F, - 9644: 0x901E, - 9645: 0x9A8B, - 9646: 0x79E4, - 9647: 0x5403, - 9648: 0x75F4, - 9649: 0x6301, - 9650: 0x5319, - 9651: 0x6C60, - 9652: 0x8FDF, - 9653: 0x5F1B, - 9654: 0x9A70, - 9655: 0x803B, - 9656: 0x9F7F, - 9657: 0x4F88, - 9658: 0x5C3A, - 9659: 0x8D64, - 9660: 0x7FC5, - 9661: 0x65A5, - 9662: 0x70BD, - 9663: 0x5145, - 9664: 0x51B2, - 9665: 0x866B, - 9666: 0x5D07, - 9667: 0x5BA0, - 9668: 0x62BD, - 9669: 0x916C, - 9670: 0x7574, - 9671: 0x8E0C, - 9672: 0x7A20, - 9673: 0x6101, - 9674: 0x7B79, - 9675: 0x4EC7, - 9676: 0x7EF8, - 9677: 0x7785, - 9678: 0x4E11, - 9679: 0x81ED, - 9680: 0x521D, - 9681: 0x51FA, - 9682: 0x6A71, - 9683: 0x53A8, - 9684: 0x8E87, - 9685: 0x9504, - 9686: 0x96CF, - 9687: 0x6EC1, - 9688: 0x9664, - 9689: 0x695A, - 9690: 0x7884, - 9691: 0x7885, - 9692: 0x7886, - 9693: 0x7888, - 9694: 0x788A, - 9695: 0x788B, - 9696: 0x788F, - 9697: 0x7890, - 9698: 0x7892, - 9699: 0x7894, - 9700: 0x7895, - 9701: 0x7896, - 9702: 0x7899, - 9703: 0x789D, - 9704: 0x789E, - 9705: 0x78A0, - 9706: 0x78A2, - 9707: 0x78A4, - 9708: 0x78A6, - 9709: 0x78A8, - 9710: 0x78A9, - 9711: 0x78AA, - 9712: 0x78AB, - 9713: 0x78AC, - 9714: 0x78AD, - 9715: 0x78AE, - 9716: 0x78AF, - 9717: 0x78B5, - 9718: 0x78B6, - 9719: 0x78B7, - 9720: 0x78B8, - 9721: 0x78BA, - 9722: 0x78BB, - 9723: 0x78BC, - 9724: 0x78BD, - 9725: 0x78BF, - 9726: 0x78C0, - 9727: 0x78C2, - 9728: 0x78C3, - 9729: 0x78C4, - 9730: 0x78C6, - 9731: 0x78C7, - 9732: 0x78C8, - 9733: 0x78CC, - 9734: 0x78CD, - 9735: 0x78CE, - 9736: 0x78CF, - 9737: 0x78D1, - 9738: 0x78D2, - 9739: 0x78D3, - 9740: 0x78D6, - 9741: 0x78D7, - 9742: 0x78D8, - 9743: 0x78DA, - 9744: 0x78DB, - 9745: 0x78DC, - 9746: 0x78DD, - 9747: 0x78DE, - 9748: 0x78DF, - 9749: 0x78E0, - 9750: 0x78E1, - 9751: 0x78E2, - 9752: 0x78E3, - 9753: 0x78E4, - 9754: 0x78E5, - 9755: 0x78E6, - 9756: 0x78E7, - 9757: 0x78E9, - 9758: 0x78EA, - 9759: 0x78EB, - 9760: 0x78ED, - 9761: 0x78EE, - 9762: 0x78EF, - 9763: 0x78F0, - 9764: 0x78F1, - 9765: 0x78F3, - 9766: 0x78F5, - 9767: 0x78F6, - 9768: 0x78F8, - 9769: 0x78F9, - 9770: 0x78FB, - 9771: 0x78FC, - 9772: 0x78FD, - 9773: 0x78FE, - 9774: 0x78FF, - 9775: 0x7900, - 9776: 0x7902, - 9777: 0x7903, - 9778: 0x7904, - 9779: 0x7906, - 9780: 0x7907, - 9781: 0x7908, - 9782: 0x7909, - 9783: 0x790A, - 9784: 0x790B, - 9785: 0x790C, - 9786: 0x7840, - 9787: 0x50A8, - 9788: 0x77D7, - 9789: 0x6410, - 9790: 0x89E6, - 9791: 0x5904, - 9792: 0x63E3, - 9793: 0x5DDD, - 9794: 0x7A7F, - 9795: 0x693D, - 9796: 0x4F20, - 9797: 0x8239, - 9798: 0x5598, - 9799: 0x4E32, - 9800: 0x75AE, - 9801: 0x7A97, - 9802: 0x5E62, - 9803: 0x5E8A, - 9804: 0x95EF, - 9805: 0x521B, - 9806: 0x5439, - 9807: 0x708A, - 9808: 0x6376, - 9809: 0x9524, - 9810: 0x5782, - 9811: 0x6625, - 9812: 0x693F, - 9813: 0x9187, - 9814: 0x5507, - 9815: 0x6DF3, - 9816: 0x7EAF, - 9817: 0x8822, - 9818: 0x6233, - 9819: 0x7EF0, - 9820: 0x75B5, - 9821: 0x8328, - 9822: 0x78C1, - 9823: 0x96CC, - 9824: 0x8F9E, - 9825: 0x6148, - 9826: 0x74F7, - 9827: 0x8BCD, - 9828: 0x6B64, - 9829: 0x523A, - 9830: 0x8D50, - 9831: 0x6B21, - 9832: 0x806A, - 9833: 0x8471, - 9834: 0x56F1, - 9835: 0x5306, - 9836: 0x4ECE, - 9837: 0x4E1B, - 9838: 0x51D1, - 9839: 0x7C97, - 9840: 0x918B, - 9841: 0x7C07, - 9842: 0x4FC3, - 9843: 0x8E7F, - 9844: 0x7BE1, - 9845: 0x7A9C, - 9846: 0x6467, - 9847: 0x5D14, - 9848: 0x50AC, - 9849: 0x8106, - 9850: 0x7601, - 9851: 0x7CB9, - 9852: 0x6DEC, - 9853: 0x7FE0, - 9854: 0x6751, - 9855: 0x5B58, - 9856: 0x5BF8, - 9857: 0x78CB, - 9858: 0x64AE, - 9859: 0x6413, - 9860: 0x63AA, - 9861: 0x632B, - 9862: 0x9519, - 9863: 0x642D, - 9864: 0x8FBE, - 9865: 0x7B54, - 9866: 0x7629, - 9867: 0x6253, - 9868: 0x5927, - 9869: 0x5446, - 9870: 0x6B79, - 9871: 0x50A3, - 9872: 0x6234, - 9873: 0x5E26, - 9874: 0x6B86, - 9875: 0x4EE3, - 9876: 0x8D37, - 9877: 0x888B, - 9878: 0x5F85, - 9879: 0x902E, - 9880: 0x790D, - 9881: 0x790E, - 9882: 0x790F, - 9883: 0x7910, - 9884: 0x7911, - 9885: 0x7912, - 9886: 0x7914, - 9887: 0x7915, - 9888: 0x7916, - 9889: 0x7917, - 9890: 0x7918, - 9891: 0x7919, - 9892: 0x791A, - 9893: 0x791B, - 9894: 0x791C, - 9895: 0x791D, - 9896: 0x791F, - 9897: 0x7920, - 9898: 0x7921, - 9899: 0x7922, - 9900: 0x7923, - 9901: 0x7925, - 9902: 0x7926, - 9903: 0x7927, - 9904: 0x7928, - 9905: 0x7929, - 9906: 0x792A, - 9907: 0x792B, - 9908: 0x792C, - 9909: 0x792D, - 9910: 0x792E, - 9911: 0x792F, - 9912: 0x7930, - 9913: 0x7931, - 9914: 0x7932, - 9915: 0x7933, - 9916: 0x7935, - 9917: 0x7936, - 9918: 0x7937, - 9919: 0x7938, - 9920: 0x7939, - 9921: 0x793D, - 9922: 0x793F, - 9923: 0x7942, - 9924: 0x7943, - 9925: 0x7944, - 9926: 0x7945, - 9927: 0x7947, - 9928: 0x794A, - 9929: 0x794B, - 9930: 0x794C, - 9931: 0x794D, - 9932: 0x794E, - 9933: 0x794F, - 9934: 0x7950, - 9935: 0x7951, - 9936: 0x7952, - 9937: 0x7954, - 9938: 0x7955, - 9939: 0x7958, - 9940: 0x7959, - 9941: 0x7961, - 9942: 0x7963, - 9943: 0x7964, - 9944: 0x7966, - 9945: 0x7969, - 9946: 0x796A, - 9947: 0x796B, - 9948: 0x796C, - 9949: 0x796E, - 9950: 0x7970, - 9951: 0x7971, - 9952: 0x7972, - 9953: 0x7973, - 9954: 0x7974, - 9955: 0x7975, - 9956: 0x7976, - 9957: 0x7979, - 9958: 0x797B, - 9959: 0x797C, - 9960: 0x797D, - 9961: 0x797E, - 9962: 0x797F, - 9963: 0x7982, - 9964: 0x7983, - 9965: 0x7986, - 9966: 0x7987, - 9967: 0x7988, - 9968: 0x7989, - 9969: 0x798B, - 9970: 0x798C, - 9971: 0x798D, - 9972: 0x798E, - 9973: 0x7990, - 9974: 0x7991, - 9975: 0x7992, - 9976: 0x6020, - 9977: 0x803D, - 9978: 0x62C5, - 9979: 0x4E39, - 9980: 0x5355, - 9981: 0x90F8, - 9982: 0x63B8, - 9983: 0x80C6, - 9984: 0x65E6, - 9985: 0x6C2E, - 9986: 0x4F46, - 9987: 0x60EE, - 9988: 0x6DE1, - 9989: 0x8BDE, - 9990: 0x5F39, - 9991: 0x86CB, - 9992: 0x5F53, - 9993: 0x6321, - 9994: 0x515A, - 9995: 0x8361, - 9996: 0x6863, - 9997: 0x5200, - 9998: 0x6363, - 9999: 0x8E48, - 10000: 0x5012, - 10001: 0x5C9B, - 10002: 0x7977, - 10003: 0x5BFC, - 10004: 0x5230, - 10005: 0x7A3B, - 10006: 0x60BC, - 10007: 0x9053, - 10008: 0x76D7, - 10009: 0x5FB7, - 10010: 0x5F97, - 10011: 0x7684, - 10012: 0x8E6C, - 10013: 0x706F, - 10014: 0x767B, - 10015: 0x7B49, - 10016: 0x77AA, - 10017: 0x51F3, - 10018: 0x9093, - 10019: 0x5824, - 10020: 0x4F4E, - 10021: 0x6EF4, - 10022: 0x8FEA, - 10023: 0x654C, - 10024: 0x7B1B, - 10025: 0x72C4, - 10026: 0x6DA4, - 10027: 0x7FDF, - 10028: 0x5AE1, - 10029: 0x62B5, - 10030: 0x5E95, - 10031: 0x5730, - 10032: 0x8482, - 10033: 0x7B2C, - 10034: 0x5E1D, - 10035: 0x5F1F, - 10036: 0x9012, - 10037: 0x7F14, - 10038: 0x98A0, - 10039: 0x6382, - 10040: 0x6EC7, - 10041: 0x7898, - 10042: 0x70B9, - 10043: 0x5178, - 10044: 0x975B, - 10045: 0x57AB, - 10046: 0x7535, - 10047: 0x4F43, - 10048: 0x7538, - 10049: 0x5E97, - 10050: 0x60E6, - 10051: 0x5960, - 10052: 0x6DC0, - 10053: 0x6BBF, - 10054: 0x7889, - 10055: 0x53FC, - 10056: 0x96D5, - 10057: 0x51CB, - 10058: 0x5201, - 10059: 0x6389, - 10060: 0x540A, - 10061: 0x9493, - 10062: 0x8C03, - 10063: 0x8DCC, - 10064: 0x7239, - 10065: 0x789F, - 10066: 0x8776, - 10067: 0x8FED, - 10068: 0x8C0D, - 10069: 0x53E0, - 10070: 0x7993, - 10071: 0x7994, - 10072: 0x7995, - 10073: 0x7996, - 10074: 0x7997, - 10075: 0x7998, - 10076: 0x7999, - 10077: 0x799B, - 10078: 0x799C, - 10079: 0x799D, - 10080: 0x799E, - 10081: 0x799F, - 10082: 0x79A0, - 10083: 0x79A1, - 10084: 0x79A2, - 10085: 0x79A3, - 10086: 0x79A4, - 10087: 0x79A5, - 10088: 0x79A6, - 10089: 0x79A8, - 10090: 0x79A9, - 10091: 0x79AA, - 10092: 0x79AB, - 10093: 0x79AC, - 10094: 0x79AD, - 10095: 0x79AE, - 10096: 0x79AF, - 10097: 0x79B0, - 10098: 0x79B1, - 10099: 0x79B2, - 10100: 0x79B4, - 10101: 0x79B5, - 10102: 0x79B6, - 10103: 0x79B7, - 10104: 0x79B8, - 10105: 0x79BC, - 10106: 0x79BF, - 10107: 0x79C2, - 10108: 0x79C4, - 10109: 0x79C5, - 10110: 0x79C7, - 10111: 0x79C8, - 10112: 0x79CA, - 10113: 0x79CC, - 10114: 0x79CE, - 10115: 0x79CF, - 10116: 0x79D0, - 10117: 0x79D3, - 10118: 0x79D4, - 10119: 0x79D6, - 10120: 0x79D7, - 10121: 0x79D9, - 10122: 0x79DA, - 10123: 0x79DB, - 10124: 0x79DC, - 10125: 0x79DD, - 10126: 0x79DE, - 10127: 0x79E0, - 10128: 0x79E1, - 10129: 0x79E2, - 10130: 0x79E5, - 10131: 0x79E8, - 10132: 0x79EA, - 10133: 0x79EC, - 10134: 0x79EE, - 10135: 0x79F1, - 10136: 0x79F2, - 10137: 0x79F3, - 10138: 0x79F4, - 10139: 0x79F5, - 10140: 0x79F6, - 10141: 0x79F7, - 10142: 0x79F9, - 10143: 0x79FA, - 10144: 0x79FC, - 10145: 0x79FE, - 10146: 0x79FF, - 10147: 0x7A01, - 10148: 0x7A04, - 10149: 0x7A05, - 10150: 0x7A07, - 10151: 0x7A08, - 10152: 0x7A09, - 10153: 0x7A0A, - 10154: 0x7A0C, - 10155: 0x7A0F, - 10156: 0x7A10, - 10157: 0x7A11, - 10158: 0x7A12, - 10159: 0x7A13, - 10160: 0x7A15, - 10161: 0x7A16, - 10162: 0x7A18, - 10163: 0x7A19, - 10164: 0x7A1B, - 10165: 0x7A1C, - 10166: 0x4E01, - 10167: 0x76EF, - 10168: 0x53EE, - 10169: 0x9489, - 10170: 0x9876, - 10171: 0x9F0E, - 10172: 0x952D, - 10173: 0x5B9A, - 10174: 0x8BA2, - 10175: 0x4E22, - 10176: 0x4E1C, - 10177: 0x51AC, - 10178: 0x8463, - 10179: 0x61C2, - 10180: 0x52A8, - 10181: 0x680B, - 10182: 0x4F97, - 10183: 0x606B, - 10184: 0x51BB, - 10185: 0x6D1E, - 10186: 0x515C, - 10187: 0x6296, - 10188: 0x6597, - 10189: 0x9661, - 10190: 0x8C46, - 10191: 0x9017, - 10192: 0x75D8, - 10193: 0x90FD, - 10194: 0x7763, - 10195: 0x6BD2, - 10196: 0x728A, - 10197: 0x72EC, - 10198: 0x8BFB, - 10199: 0x5835, - 10200: 0x7779, - 10201: 0x8D4C, - 10202: 0x675C, - 10203: 0x9540, - 10204: 0x809A, - 10205: 0x5EA6, - 10206: 0x6E21, - 10207: 0x5992, - 10208: 0x7AEF, - 10209: 0x77ED, - 10210: 0x953B, - 10211: 0x6BB5, - 10212: 0x65AD, - 10213: 0x7F0E, - 10214: 0x5806, - 10215: 0x5151, - 10216: 0x961F, - 10217: 0x5BF9, - 10218: 0x58A9, - 10219: 0x5428, - 10220: 0x8E72, - 10221: 0x6566, - 10222: 0x987F, - 10223: 0x56E4, - 10224: 0x949D, - 10225: 0x76FE, - 10226: 0x9041, - 10227: 0x6387, - 10228: 0x54C6, - 10229: 0x591A, - 10230: 0x593A, - 10231: 0x579B, - 10232: 0x8EB2, - 10233: 0x6735, - 10234: 0x8DFA, - 10235: 0x8235, - 10236: 0x5241, - 10237: 0x60F0, - 10238: 0x5815, - 10239: 0x86FE, - 10240: 0x5CE8, - 10241: 0x9E45, - 10242: 0x4FC4, - 10243: 0x989D, - 10244: 0x8BB9, - 10245: 0x5A25, - 10246: 0x6076, - 10247: 0x5384, - 10248: 0x627C, - 10249: 0x904F, - 10250: 0x9102, - 10251: 0x997F, - 10252: 0x6069, - 10253: 0x800C, - 10254: 0x513F, - 10255: 0x8033, - 10256: 0x5C14, - 10257: 0x9975, - 10258: 0x6D31, - 10259: 0x4E8C, - 10260: 0x7A1D, - 10261: 0x7A1F, - 10262: 0x7A21, - 10263: 0x7A22, - 10264: 0x7A24, - 10265: 0x7A25, - 10266: 0x7A26, - 10267: 0x7A27, - 10268: 0x7A28, - 10269: 0x7A29, - 10270: 0x7A2A, - 10271: 0x7A2B, - 10272: 0x7A2C, - 10273: 0x7A2D, - 10274: 0x7A2E, - 10275: 0x7A2F, - 10276: 0x7A30, - 10277: 0x7A31, - 10278: 0x7A32, - 10279: 0x7A34, - 10280: 0x7A35, - 10281: 0x7A36, - 10282: 0x7A38, - 10283: 0x7A3A, - 10284: 0x7A3E, - 10285: 0x7A40, - 10286: 0x7A41, - 10287: 0x7A42, - 10288: 0x7A43, - 10289: 0x7A44, - 10290: 0x7A45, - 10291: 0x7A47, - 10292: 0x7A48, - 10293: 0x7A49, - 10294: 0x7A4A, - 10295: 0x7A4B, - 10296: 0x7A4C, - 10297: 0x7A4D, - 10298: 0x7A4E, - 10299: 0x7A4F, - 10300: 0x7A50, - 10301: 0x7A52, - 10302: 0x7A53, - 10303: 0x7A54, - 10304: 0x7A55, - 10305: 0x7A56, - 10306: 0x7A58, - 10307: 0x7A59, - 10308: 0x7A5A, - 10309: 0x7A5B, - 10310: 0x7A5C, - 10311: 0x7A5D, - 10312: 0x7A5E, - 10313: 0x7A5F, - 10314: 0x7A60, - 10315: 0x7A61, - 10316: 0x7A62, - 10317: 0x7A63, - 10318: 0x7A64, - 10319: 0x7A65, - 10320: 0x7A66, - 10321: 0x7A67, - 10322: 0x7A68, - 10323: 0x7A69, - 10324: 0x7A6A, - 10325: 0x7A6B, - 10326: 0x7A6C, - 10327: 0x7A6D, - 10328: 0x7A6E, - 10329: 0x7A6F, - 10330: 0x7A71, - 10331: 0x7A72, - 10332: 0x7A73, - 10333: 0x7A75, - 10334: 0x7A7B, - 10335: 0x7A7C, - 10336: 0x7A7D, - 10337: 0x7A7E, - 10338: 0x7A82, - 10339: 0x7A85, - 10340: 0x7A87, - 10341: 0x7A89, - 10342: 0x7A8A, - 10343: 0x7A8B, - 10344: 0x7A8C, - 10345: 0x7A8E, - 10346: 0x7A8F, - 10347: 0x7A90, - 10348: 0x7A93, - 10349: 0x7A94, - 10350: 0x7A99, - 10351: 0x7A9A, - 10352: 0x7A9B, - 10353: 0x7A9E, - 10354: 0x7AA1, - 10355: 0x7AA2, - 10356: 0x8D30, - 10357: 0x53D1, - 10358: 0x7F5A, - 10359: 0x7B4F, - 10360: 0x4F10, - 10361: 0x4E4F, - 10362: 0x9600, - 10363: 0x6CD5, - 10364: 0x73D0, - 10365: 0x85E9, - 10366: 0x5E06, - 10367: 0x756A, - 10368: 0x7FFB, - 10369: 0x6A0A, - 10370: 0x77FE, - 10371: 0x9492, - 10372: 0x7E41, - 10373: 0x51E1, - 10374: 0x70E6, - 10375: 0x53CD, - 10376: 0x8FD4, - 10377: 0x8303, - 10378: 0x8D29, - 10379: 0x72AF, - 10380: 0x996D, - 10381: 0x6CDB, - 10382: 0x574A, - 10383: 0x82B3, - 10384: 0x65B9, - 10385: 0x80AA, - 10386: 0x623F, - 10387: 0x9632, - 10388: 0x59A8, - 10389: 0x4EFF, - 10390: 0x8BBF, - 10391: 0x7EBA, - 10392: 0x653E, - 10393: 0x83F2, - 10394: 0x975E, - 10395: 0x5561, - 10396: 0x98DE, - 10397: 0x80A5, - 10398: 0x532A, - 10399: 0x8BFD, - 10400: 0x5420, - 10401: 0x80BA, - 10402: 0x5E9F, - 10403: 0x6CB8, - 10404: 0x8D39, - 10405: 0x82AC, - 10406: 0x915A, - 10407: 0x5429, - 10408: 0x6C1B, - 10409: 0x5206, - 10410: 0x7EB7, - 10411: 0x575F, - 10412: 0x711A, - 10413: 0x6C7E, - 10414: 0x7C89, - 10415: 0x594B, - 10416: 0x4EFD, - 10417: 0x5FFF, - 10418: 0x6124, - 10419: 0x7CAA, - 10420: 0x4E30, - 10421: 0x5C01, - 10422: 0x67AB, - 10423: 0x8702, - 10424: 0x5CF0, - 10425: 0x950B, - 10426: 0x98CE, - 10427: 0x75AF, - 10428: 0x70FD, - 10429: 0x9022, - 10430: 0x51AF, - 10431: 0x7F1D, - 10432: 0x8BBD, - 10433: 0x5949, - 10434: 0x51E4, - 10435: 0x4F5B, - 10436: 0x5426, - 10437: 0x592B, - 10438: 0x6577, - 10439: 0x80A4, - 10440: 0x5B75, - 10441: 0x6276, - 10442: 0x62C2, - 10443: 0x8F90, - 10444: 0x5E45, - 10445: 0x6C1F, - 10446: 0x7B26, - 10447: 0x4F0F, - 10448: 0x4FD8, - 10449: 0x670D, - 10450: 0x7AA3, - 10451: 0x7AA4, - 10452: 0x7AA7, - 10453: 0x7AA9, - 10454: 0x7AAA, - 10455: 0x7AAB, - 10456: 0x7AAE, - 10457: 0x7AAF, - 10458: 0x7AB0, - 10459: 0x7AB1, - 10460: 0x7AB2, - 10461: 0x7AB4, - 10462: 0x7AB5, - 10463: 0x7AB6, - 10464: 0x7AB7, - 10465: 0x7AB8, - 10466: 0x7AB9, - 10467: 0x7ABA, - 10468: 0x7ABB, - 10469: 0x7ABC, - 10470: 0x7ABD, - 10471: 0x7ABE, - 10472: 0x7AC0, - 10473: 0x7AC1, - 10474: 0x7AC2, - 10475: 0x7AC3, - 10476: 0x7AC4, - 10477: 0x7AC5, - 10478: 0x7AC6, - 10479: 0x7AC7, - 10480: 0x7AC8, - 10481: 0x7AC9, - 10482: 0x7ACA, - 10483: 0x7ACC, - 10484: 0x7ACD, - 10485: 0x7ACE, - 10486: 0x7ACF, - 10487: 0x7AD0, - 10488: 0x7AD1, - 10489: 0x7AD2, - 10490: 0x7AD3, - 10491: 0x7AD4, - 10492: 0x7AD5, - 10493: 0x7AD7, - 10494: 0x7AD8, - 10495: 0x7ADA, - 10496: 0x7ADB, - 10497: 0x7ADC, - 10498: 0x7ADD, - 10499: 0x7AE1, - 10500: 0x7AE2, - 10501: 0x7AE4, - 10502: 0x7AE7, - 10503: 0x7AE8, - 10504: 0x7AE9, - 10505: 0x7AEA, - 10506: 0x7AEB, - 10507: 0x7AEC, - 10508: 0x7AEE, - 10509: 0x7AF0, - 10510: 0x7AF1, - 10511: 0x7AF2, - 10512: 0x7AF3, - 10513: 0x7AF4, - 10514: 0x7AF5, - 10515: 0x7AF6, - 10516: 0x7AF7, - 10517: 0x7AF8, - 10518: 0x7AFB, - 10519: 0x7AFC, - 10520: 0x7AFE, - 10521: 0x7B00, - 10522: 0x7B01, - 10523: 0x7B02, - 10524: 0x7B05, - 10525: 0x7B07, - 10526: 0x7B09, - 10527: 0x7B0C, - 10528: 0x7B0D, - 10529: 0x7B0E, - 10530: 0x7B10, - 10531: 0x7B12, - 10532: 0x7B13, - 10533: 0x7B16, - 10534: 0x7B17, - 10535: 0x7B18, - 10536: 0x7B1A, - 10537: 0x7B1C, - 10538: 0x7B1D, - 10539: 0x7B1F, - 10540: 0x7B21, - 10541: 0x7B22, - 10542: 0x7B23, - 10543: 0x7B27, - 10544: 0x7B29, - 10545: 0x7B2D, - 10546: 0x6D6E, - 10547: 0x6DAA, - 10548: 0x798F, - 10549: 0x88B1, - 10550: 0x5F17, - 10551: 0x752B, - 10552: 0x629A, - 10553: 0x8F85, - 10554: 0x4FEF, - 10555: 0x91DC, - 10556: 0x65A7, - 10557: 0x812F, - 10558: 0x8151, - 10559: 0x5E9C, - 10560: 0x8150, - 10561: 0x8D74, - 10562: 0x526F, - 10563: 0x8986, - 10564: 0x8D4B, - 10565: 0x590D, - 10566: 0x5085, - 10567: 0x4ED8, - 10568: 0x961C, - 10569: 0x7236, - 10570: 0x8179, - 10571: 0x8D1F, - 10572: 0x5BCC, - 10573: 0x8BA3, - 10574: 0x9644, - 10575: 0x5987, - 10576: 0x7F1A, - 10577: 0x5490, - 10578: 0x5676, - 10579: 0x560E, - 10580: 0x8BE5, - 10581: 0x6539, - 10582: 0x6982, - 10583: 0x9499, - 10584: 0x76D6, - 10585: 0x6E89, - 10586: 0x5E72, - 10587: 0x7518, - 10588: 0x6746, - 10589: 0x67D1, - 10590: 0x7AFF, - 10591: 0x809D, - 10592: 0x8D76, - 10593: 0x611F, - 10594: 0x79C6, - 10595: 0x6562, - 10596: 0x8D63, - 10597: 0x5188, - 10598: 0x521A, - 10599: 0x94A2, - 10600: 0x7F38, - 10601: 0x809B, - 10602: 0x7EB2, - 10603: 0x5C97, - 10604: 0x6E2F, - 10605: 0x6760, - 10606: 0x7BD9, - 10607: 0x768B, - 10608: 0x9AD8, - 10609: 0x818F, - 10610: 0x7F94, - 10611: 0x7CD5, - 10612: 0x641E, - 10613: 0x9550, - 10614: 0x7A3F, - 10615: 0x544A, - 10616: 0x54E5, - 10617: 0x6B4C, - 10618: 0x6401, - 10619: 0x6208, - 10620: 0x9E3D, - 10621: 0x80F3, - 10622: 0x7599, - 10623: 0x5272, - 10624: 0x9769, - 10625: 0x845B, - 10626: 0x683C, - 10627: 0x86E4, - 10628: 0x9601, - 10629: 0x9694, - 10630: 0x94EC, - 10631: 0x4E2A, - 10632: 0x5404, - 10633: 0x7ED9, - 10634: 0x6839, - 10635: 0x8DDF, - 10636: 0x8015, - 10637: 0x66F4, - 10638: 0x5E9A, - 10639: 0x7FB9, - 10640: 0x7B2F, - 10641: 0x7B30, - 10642: 0x7B32, - 10643: 0x7B34, - 10644: 0x7B35, - 10645: 0x7B36, - 10646: 0x7B37, - 10647: 0x7B39, - 10648: 0x7B3B, - 10649: 0x7B3D, - 10650: 0x7B3F, - 10651: 0x7B40, - 10652: 0x7B41, - 10653: 0x7B42, - 10654: 0x7B43, - 10655: 0x7B44, - 10656: 0x7B46, - 10657: 0x7B48, - 10658: 0x7B4A, - 10659: 0x7B4D, - 10660: 0x7B4E, - 10661: 0x7B53, - 10662: 0x7B55, - 10663: 0x7B57, - 10664: 0x7B59, - 10665: 0x7B5C, - 10666: 0x7B5E, - 10667: 0x7B5F, - 10668: 0x7B61, - 10669: 0x7B63, - 10670: 0x7B64, - 10671: 0x7B65, - 10672: 0x7B66, - 10673: 0x7B67, - 10674: 0x7B68, - 10675: 0x7B69, - 10676: 0x7B6A, - 10677: 0x7B6B, - 10678: 0x7B6C, - 10679: 0x7B6D, - 10680: 0x7B6F, - 10681: 0x7B70, - 10682: 0x7B73, - 10683: 0x7B74, - 10684: 0x7B76, - 10685: 0x7B78, - 10686: 0x7B7A, - 10687: 0x7B7C, - 10688: 0x7B7D, - 10689: 0x7B7F, - 10690: 0x7B81, - 10691: 0x7B82, - 10692: 0x7B83, - 10693: 0x7B84, - 10694: 0x7B86, - 10695: 0x7B87, - 10696: 0x7B88, - 10697: 0x7B89, - 10698: 0x7B8A, - 10699: 0x7B8B, - 10700: 0x7B8C, - 10701: 0x7B8E, - 10702: 0x7B8F, - 10703: 0x7B91, - 10704: 0x7B92, - 10705: 0x7B93, - 10706: 0x7B96, - 10707: 0x7B98, - 10708: 0x7B99, - 10709: 0x7B9A, - 10710: 0x7B9B, - 10711: 0x7B9E, - 10712: 0x7B9F, - 10713: 0x7BA0, - 10714: 0x7BA3, - 10715: 0x7BA4, - 10716: 0x7BA5, - 10717: 0x7BAE, - 10718: 0x7BAF, - 10719: 0x7BB0, - 10720: 0x7BB2, - 10721: 0x7BB3, - 10722: 0x7BB5, - 10723: 0x7BB6, - 10724: 0x7BB7, - 10725: 0x7BB9, - 10726: 0x7BBA, - 10727: 0x7BBB, - 10728: 0x7BBC, - 10729: 0x7BBD, - 10730: 0x7BBE, - 10731: 0x7BBF, - 10732: 0x7BC0, - 10733: 0x7BC2, - 10734: 0x7BC3, - 10735: 0x7BC4, - 10736: 0x57C2, - 10737: 0x803F, - 10738: 0x6897, - 10739: 0x5DE5, - 10740: 0x653B, - 10741: 0x529F, - 10742: 0x606D, - 10743: 0x9F9A, - 10744: 0x4F9B, - 10745: 0x8EAC, - 10746: 0x516C, - 10747: 0x5BAB, - 10748: 0x5F13, - 10749: 0x5DE9, - 10750: 0x6C5E, - 10751: 0x62F1, - 10752: 0x8D21, - 10753: 0x5171, - 10754: 0x94A9, - 10755: 0x52FE, - 10756: 0x6C9F, - 10757: 0x82DF, - 10758: 0x72D7, - 10759: 0x57A2, - 10760: 0x6784, - 10761: 0x8D2D, - 10762: 0x591F, - 10763: 0x8F9C, - 10764: 0x83C7, - 10765: 0x5495, - 10766: 0x7B8D, - 10767: 0x4F30, - 10768: 0x6CBD, - 10769: 0x5B64, - 10770: 0x59D1, - 10771: 0x9F13, - 10772: 0x53E4, - 10773: 0x86CA, - 10774: 0x9AA8, - 10775: 0x8C37, - 10776: 0x80A1, - 10777: 0x6545, - 10778: 0x987E, - 10779: 0x56FA, - 10780: 0x96C7, - 10781: 0x522E, - 10782: 0x74DC, - 10783: 0x5250, - 10784: 0x5BE1, - 10785: 0x6302, - 10786: 0x8902, - 10787: 0x4E56, - 10788: 0x62D0, - 10789: 0x602A, - 10790: 0x68FA, - 10791: 0x5173, - 10792: 0x5B98, - 10793: 0x51A0, - 10794: 0x89C2, - 10795: 0x7BA1, - 10796: 0x9986, - 10797: 0x7F50, - 10798: 0x60EF, - 10799: 0x704C, - 10800: 0x8D2F, - 10801: 0x5149, - 10802: 0x5E7F, - 10803: 0x901B, - 10804: 0x7470, - 10805: 0x89C4, - 10806: 0x572D, - 10807: 0x7845, - 10808: 0x5F52, - 10809: 0x9F9F, - 10810: 0x95FA, - 10811: 0x8F68, - 10812: 0x9B3C, - 10813: 0x8BE1, - 10814: 0x7678, - 10815: 0x6842, - 10816: 0x67DC, - 10817: 0x8DEA, - 10818: 0x8D35, - 10819: 0x523D, - 10820: 0x8F8A, - 10821: 0x6EDA, - 10822: 0x68CD, - 10823: 0x9505, - 10824: 0x90ED, - 10825: 0x56FD, - 10826: 0x679C, - 10827: 0x88F9, - 10828: 0x8FC7, - 10829: 0x54C8, - 10830: 0x7BC5, - 10831: 0x7BC8, - 10832: 0x7BC9, - 10833: 0x7BCA, - 10834: 0x7BCB, - 10835: 0x7BCD, - 10836: 0x7BCE, - 10837: 0x7BCF, - 10838: 0x7BD0, - 10839: 0x7BD2, - 10840: 0x7BD4, - 10841: 0x7BD5, - 10842: 0x7BD6, - 10843: 0x7BD7, - 10844: 0x7BD8, - 10845: 0x7BDB, - 10846: 0x7BDC, - 10847: 0x7BDE, - 10848: 0x7BDF, - 10849: 0x7BE0, - 10850: 0x7BE2, - 10851: 0x7BE3, - 10852: 0x7BE4, - 10853: 0x7BE7, - 10854: 0x7BE8, - 10855: 0x7BE9, - 10856: 0x7BEB, - 10857: 0x7BEC, - 10858: 0x7BED, - 10859: 0x7BEF, - 10860: 0x7BF0, - 10861: 0x7BF2, - 10862: 0x7BF3, - 10863: 0x7BF4, - 10864: 0x7BF5, - 10865: 0x7BF6, - 10866: 0x7BF8, - 10867: 0x7BF9, - 10868: 0x7BFA, - 10869: 0x7BFB, - 10870: 0x7BFD, - 10871: 0x7BFF, - 10872: 0x7C00, - 10873: 0x7C01, - 10874: 0x7C02, - 10875: 0x7C03, - 10876: 0x7C04, - 10877: 0x7C05, - 10878: 0x7C06, - 10879: 0x7C08, - 10880: 0x7C09, - 10881: 0x7C0A, - 10882: 0x7C0D, - 10883: 0x7C0E, - 10884: 0x7C10, - 10885: 0x7C11, - 10886: 0x7C12, - 10887: 0x7C13, - 10888: 0x7C14, - 10889: 0x7C15, - 10890: 0x7C17, - 10891: 0x7C18, - 10892: 0x7C19, - 10893: 0x7C1A, - 10894: 0x7C1B, - 10895: 0x7C1C, - 10896: 0x7C1D, - 10897: 0x7C1E, - 10898: 0x7C20, - 10899: 0x7C21, - 10900: 0x7C22, - 10901: 0x7C23, - 10902: 0x7C24, - 10903: 0x7C25, - 10904: 0x7C28, - 10905: 0x7C29, - 10906: 0x7C2B, - 10907: 0x7C2C, - 10908: 0x7C2D, - 10909: 0x7C2E, - 10910: 0x7C2F, - 10911: 0x7C30, - 10912: 0x7C31, - 10913: 0x7C32, - 10914: 0x7C33, - 10915: 0x7C34, - 10916: 0x7C35, - 10917: 0x7C36, - 10918: 0x7C37, - 10919: 0x7C39, - 10920: 0x7C3A, - 10921: 0x7C3B, - 10922: 0x7C3C, - 10923: 0x7C3D, - 10924: 0x7C3E, - 10925: 0x7C42, - 10926: 0x9AB8, - 10927: 0x5B69, - 10928: 0x6D77, - 10929: 0x6C26, - 10930: 0x4EA5, - 10931: 0x5BB3, - 10932: 0x9A87, - 10933: 0x9163, - 10934: 0x61A8, - 10935: 0x90AF, - 10936: 0x97E9, - 10937: 0x542B, - 10938: 0x6DB5, - 10939: 0x5BD2, - 10940: 0x51FD, - 10941: 0x558A, - 10942: 0x7F55, - 10943: 0x7FF0, - 10944: 0x64BC, - 10945: 0x634D, - 10946: 0x65F1, - 10947: 0x61BE, - 10948: 0x608D, - 10949: 0x710A, - 10950: 0x6C57, - 10951: 0x6C49, - 10952: 0x592F, - 10953: 0x676D, - 10954: 0x822A, - 10955: 0x58D5, - 10956: 0x568E, - 10957: 0x8C6A, - 10958: 0x6BEB, - 10959: 0x90DD, - 10960: 0x597D, - 10961: 0x8017, - 10962: 0x53F7, - 10963: 0x6D69, - 10964: 0x5475, - 10965: 0x559D, - 10966: 0x8377, - 10967: 0x83CF, - 10968: 0x6838, - 10969: 0x79BE, - 10970: 0x548C, - 10971: 0x4F55, - 10972: 0x5408, - 10973: 0x76D2, - 10974: 0x8C89, - 10975: 0x9602, - 10976: 0x6CB3, - 10977: 0x6DB8, - 10978: 0x8D6B, - 10979: 0x8910, - 10980: 0x9E64, - 10981: 0x8D3A, - 10982: 0x563F, - 10983: 0x9ED1, - 10984: 0x75D5, - 10985: 0x5F88, - 10986: 0x72E0, - 10987: 0x6068, - 10988: 0x54FC, - 10989: 0x4EA8, - 10990: 0x6A2A, - 10991: 0x8861, - 10992: 0x6052, - 10993: 0x8F70, - 10994: 0x54C4, - 10995: 0x70D8, - 10996: 0x8679, - 10997: 0x9E3F, - 10998: 0x6D2A, - 10999: 0x5B8F, - 11000: 0x5F18, - 11001: 0x7EA2, - 11002: 0x5589, - 11003: 0x4FAF, - 11004: 0x7334, - 11005: 0x543C, - 11006: 0x539A, - 11007: 0x5019, - 11008: 0x540E, - 11009: 0x547C, - 11010: 0x4E4E, - 11011: 0x5FFD, - 11012: 0x745A, - 11013: 0x58F6, - 11014: 0x846B, - 11015: 0x80E1, - 11016: 0x8774, - 11017: 0x72D0, - 11018: 0x7CCA, - 11019: 0x6E56, - 11020: 0x7C43, - 11021: 0x7C44, - 11022: 0x7C45, - 11023: 0x7C46, - 11024: 0x7C47, - 11025: 0x7C48, - 11026: 0x7C49, - 11027: 0x7C4A, - 11028: 0x7C4B, - 11029: 0x7C4C, - 11030: 0x7C4E, - 11031: 0x7C4F, - 11032: 0x7C50, - 11033: 0x7C51, - 11034: 0x7C52, - 11035: 0x7C53, - 11036: 0x7C54, - 11037: 0x7C55, - 11038: 0x7C56, - 11039: 0x7C57, - 11040: 0x7C58, - 11041: 0x7C59, - 11042: 0x7C5A, - 11043: 0x7C5B, - 11044: 0x7C5C, - 11045: 0x7C5D, - 11046: 0x7C5E, - 11047: 0x7C5F, - 11048: 0x7C60, - 11049: 0x7C61, - 11050: 0x7C62, - 11051: 0x7C63, - 11052: 0x7C64, - 11053: 0x7C65, - 11054: 0x7C66, - 11055: 0x7C67, - 11056: 0x7C68, - 11057: 0x7C69, - 11058: 0x7C6A, - 11059: 0x7C6B, - 11060: 0x7C6C, - 11061: 0x7C6D, - 11062: 0x7C6E, - 11063: 0x7C6F, - 11064: 0x7C70, - 11065: 0x7C71, - 11066: 0x7C72, - 11067: 0x7C75, - 11068: 0x7C76, - 11069: 0x7C77, - 11070: 0x7C78, - 11071: 0x7C79, - 11072: 0x7C7A, - 11073: 0x7C7E, - 11074: 0x7C7F, - 11075: 0x7C80, - 11076: 0x7C81, - 11077: 0x7C82, - 11078: 0x7C83, - 11079: 0x7C84, - 11080: 0x7C85, - 11081: 0x7C86, - 11082: 0x7C87, - 11083: 0x7C88, - 11084: 0x7C8A, - 11085: 0x7C8B, - 11086: 0x7C8C, - 11087: 0x7C8D, - 11088: 0x7C8E, - 11089: 0x7C8F, - 11090: 0x7C90, - 11091: 0x7C93, - 11092: 0x7C94, - 11093: 0x7C96, - 11094: 0x7C99, - 11095: 0x7C9A, - 11096: 0x7C9B, - 11097: 0x7CA0, - 11098: 0x7CA1, - 11099: 0x7CA3, - 11100: 0x7CA6, - 11101: 0x7CA7, - 11102: 0x7CA8, - 11103: 0x7CA9, - 11104: 0x7CAB, - 11105: 0x7CAC, - 11106: 0x7CAD, - 11107: 0x7CAF, - 11108: 0x7CB0, - 11109: 0x7CB4, - 11110: 0x7CB5, - 11111: 0x7CB6, - 11112: 0x7CB7, - 11113: 0x7CB8, - 11114: 0x7CBA, - 11115: 0x7CBB, - 11116: 0x5F27, - 11117: 0x864E, - 11118: 0x552C, - 11119: 0x62A4, - 11120: 0x4E92, - 11121: 0x6CAA, - 11122: 0x6237, - 11123: 0x82B1, - 11124: 0x54D7, - 11125: 0x534E, - 11126: 0x733E, - 11127: 0x6ED1, - 11128: 0x753B, - 11129: 0x5212, - 11130: 0x5316, - 11131: 0x8BDD, - 11132: 0x69D0, - 11133: 0x5F8A, - 11134: 0x6000, - 11135: 0x6DEE, - 11136: 0x574F, - 11137: 0x6B22, - 11138: 0x73AF, - 11139: 0x6853, - 11140: 0x8FD8, - 11141: 0x7F13, - 11142: 0x6362, - 11143: 0x60A3, - 11144: 0x5524, - 11145: 0x75EA, - 11146: 0x8C62, - 11147: 0x7115, - 11148: 0x6DA3, - 11149: 0x5BA6, - 11150: 0x5E7B, - 11151: 0x8352, - 11152: 0x614C, - 11153: 0x9EC4, - 11154: 0x78FA, - 11155: 0x8757, - 11156: 0x7C27, - 11157: 0x7687, - 11158: 0x51F0, - 11159: 0x60F6, - 11160: 0x714C, - 11161: 0x6643, - 11162: 0x5E4C, - 11163: 0x604D, - 11164: 0x8C0E, - 11165: 0x7070, - 11166: 0x6325, - 11167: 0x8F89, - 11168: 0x5FBD, - 11169: 0x6062, - 11170: 0x86D4, - 11171: 0x56DE, - 11172: 0x6BC1, - 11173: 0x6094, - 11174: 0x6167, - 11175: 0x5349, - 11176: 0x60E0, - 11177: 0x6666, - 11178: 0x8D3F, - 11179: 0x79FD, - 11180: 0x4F1A, - 11181: 0x70E9, - 11182: 0x6C47, - 11183: 0x8BB3, - 11184: 0x8BF2, - 11185: 0x7ED8, - 11186: 0x8364, - 11187: 0x660F, - 11188: 0x5A5A, - 11189: 0x9B42, - 11190: 0x6D51, - 11191: 0x6DF7, - 11192: 0x8C41, - 11193: 0x6D3B, - 11194: 0x4F19, - 11195: 0x706B, - 11196: 0x83B7, - 11197: 0x6216, - 11198: 0x60D1, - 11199: 0x970D, - 11200: 0x8D27, - 11201: 0x7978, - 11202: 0x51FB, - 11203: 0x573E, - 11204: 0x57FA, - 11205: 0x673A, - 11206: 0x7578, - 11207: 0x7A3D, - 11208: 0x79EF, - 11209: 0x7B95, - 11210: 0x7CBF, - 11211: 0x7CC0, - 11212: 0x7CC2, - 11213: 0x7CC3, - 11214: 0x7CC4, - 11215: 0x7CC6, - 11216: 0x7CC9, - 11217: 0x7CCB, - 11218: 0x7CCE, - 11219: 0x7CCF, - 11220: 0x7CD0, - 11221: 0x7CD1, - 11222: 0x7CD2, - 11223: 0x7CD3, - 11224: 0x7CD4, - 11225: 0x7CD8, - 11226: 0x7CDA, - 11227: 0x7CDB, - 11228: 0x7CDD, - 11229: 0x7CDE, - 11230: 0x7CE1, - 11231: 0x7CE2, - 11232: 0x7CE3, - 11233: 0x7CE4, - 11234: 0x7CE5, - 11235: 0x7CE6, - 11236: 0x7CE7, - 11237: 0x7CE9, - 11238: 0x7CEA, - 11239: 0x7CEB, - 11240: 0x7CEC, - 11241: 0x7CED, - 11242: 0x7CEE, - 11243: 0x7CF0, - 11244: 0x7CF1, - 11245: 0x7CF2, - 11246: 0x7CF3, - 11247: 0x7CF4, - 11248: 0x7CF5, - 11249: 0x7CF6, - 11250: 0x7CF7, - 11251: 0x7CF9, - 11252: 0x7CFA, - 11253: 0x7CFC, - 11254: 0x7CFD, - 11255: 0x7CFE, - 11256: 0x7CFF, - 11257: 0x7D00, - 11258: 0x7D01, - 11259: 0x7D02, - 11260: 0x7D03, - 11261: 0x7D04, - 11262: 0x7D05, - 11263: 0x7D06, - 11264: 0x7D07, - 11265: 0x7D08, - 11266: 0x7D09, - 11267: 0x7D0B, - 11268: 0x7D0C, - 11269: 0x7D0D, - 11270: 0x7D0E, - 11271: 0x7D0F, - 11272: 0x7D10, - 11273: 0x7D11, - 11274: 0x7D12, - 11275: 0x7D13, - 11276: 0x7D14, - 11277: 0x7D15, - 11278: 0x7D16, - 11279: 0x7D17, - 11280: 0x7D18, - 11281: 0x7D19, - 11282: 0x7D1A, - 11283: 0x7D1B, - 11284: 0x7D1C, - 11285: 0x7D1D, - 11286: 0x7D1E, - 11287: 0x7D1F, - 11288: 0x7D21, - 11289: 0x7D23, - 11290: 0x7D24, - 11291: 0x7D25, - 11292: 0x7D26, - 11293: 0x7D28, - 11294: 0x7D29, - 11295: 0x7D2A, - 11296: 0x7D2C, - 11297: 0x7D2D, - 11298: 0x7D2E, - 11299: 0x7D30, - 11300: 0x7D31, - 11301: 0x7D32, - 11302: 0x7D33, - 11303: 0x7D34, - 11304: 0x7D35, - 11305: 0x7D36, - 11306: 0x808C, - 11307: 0x9965, - 11308: 0x8FF9, - 11309: 0x6FC0, - 11310: 0x8BA5, - 11311: 0x9E21, - 11312: 0x59EC, - 11313: 0x7EE9, - 11314: 0x7F09, - 11315: 0x5409, - 11316: 0x6781, - 11317: 0x68D8, - 11318: 0x8F91, - 11319: 0x7C4D, - 11320: 0x96C6, - 11321: 0x53CA, - 11322: 0x6025, - 11323: 0x75BE, - 11324: 0x6C72, - 11325: 0x5373, - 11326: 0x5AC9, - 11327: 0x7EA7, - 11328: 0x6324, - 11329: 0x51E0, - 11330: 0x810A, - 11331: 0x5DF1, - 11332: 0x84DF, - 11333: 0x6280, - 11334: 0x5180, - 11335: 0x5B63, - 11336: 0x4F0E, - 11337: 0x796D, - 11338: 0x5242, - 11339: 0x60B8, - 11340: 0x6D4E, - 11341: 0x5BC4, - 11342: 0x5BC2, - 11343: 0x8BA1, - 11344: 0x8BB0, - 11345: 0x65E2, - 11346: 0x5FCC, - 11347: 0x9645, - 11348: 0x5993, - 11349: 0x7EE7, - 11350: 0x7EAA, - 11351: 0x5609, - 11352: 0x67B7, - 11353: 0x5939, - 11354: 0x4F73, - 11355: 0x5BB6, - 11356: 0x52A0, - 11357: 0x835A, - 11358: 0x988A, - 11359: 0x8D3E, - 11360: 0x7532, - 11361: 0x94BE, - 11362: 0x5047, - 11363: 0x7A3C, - 11364: 0x4EF7, - 11365: 0x67B6, - 11366: 0x9A7E, - 11367: 0x5AC1, - 11368: 0x6B7C, - 11369: 0x76D1, - 11370: 0x575A, - 11371: 0x5C16, - 11372: 0x7B3A, - 11373: 0x95F4, - 11374: 0x714E, - 11375: 0x517C, - 11376: 0x80A9, - 11377: 0x8270, - 11378: 0x5978, - 11379: 0x7F04, - 11380: 0x8327, - 11381: 0x68C0, - 11382: 0x67EC, - 11383: 0x78B1, - 11384: 0x7877, - 11385: 0x62E3, - 11386: 0x6361, - 11387: 0x7B80, - 11388: 0x4FED, - 11389: 0x526A, - 11390: 0x51CF, - 11391: 0x8350, - 11392: 0x69DB, - 11393: 0x9274, - 11394: 0x8DF5, - 11395: 0x8D31, - 11396: 0x89C1, - 11397: 0x952E, - 11398: 0x7BAD, - 11399: 0x4EF6, - 11400: 0x7D37, - 11401: 0x7D38, - 11402: 0x7D39, - 11403: 0x7D3A, - 11404: 0x7D3B, - 11405: 0x7D3C, - 11406: 0x7D3D, - 11407: 0x7D3E, - 11408: 0x7D3F, - 11409: 0x7D40, - 11410: 0x7D41, - 11411: 0x7D42, - 11412: 0x7D43, - 11413: 0x7D44, - 11414: 0x7D45, - 11415: 0x7D46, - 11416: 0x7D47, - 11417: 0x7D48, - 11418: 0x7D49, - 11419: 0x7D4A, - 11420: 0x7D4B, - 11421: 0x7D4C, - 11422: 0x7D4D, - 11423: 0x7D4E, - 11424: 0x7D4F, - 11425: 0x7D50, - 11426: 0x7D51, - 11427: 0x7D52, - 11428: 0x7D53, - 11429: 0x7D54, - 11430: 0x7D55, - 11431: 0x7D56, - 11432: 0x7D57, - 11433: 0x7D58, - 11434: 0x7D59, - 11435: 0x7D5A, - 11436: 0x7D5B, - 11437: 0x7D5C, - 11438: 0x7D5D, - 11439: 0x7D5E, - 11440: 0x7D5F, - 11441: 0x7D60, - 11442: 0x7D61, - 11443: 0x7D62, - 11444: 0x7D63, - 11445: 0x7D64, - 11446: 0x7D65, - 11447: 0x7D66, - 11448: 0x7D67, - 11449: 0x7D68, - 11450: 0x7D69, - 11451: 0x7D6A, - 11452: 0x7D6B, - 11453: 0x7D6C, - 11454: 0x7D6D, - 11455: 0x7D6F, - 11456: 0x7D70, - 11457: 0x7D71, - 11458: 0x7D72, - 11459: 0x7D73, - 11460: 0x7D74, - 11461: 0x7D75, - 11462: 0x7D76, - 11463: 0x7D78, - 11464: 0x7D79, - 11465: 0x7D7A, - 11466: 0x7D7B, - 11467: 0x7D7C, - 11468: 0x7D7D, - 11469: 0x7D7E, - 11470: 0x7D7F, - 11471: 0x7D80, - 11472: 0x7D81, - 11473: 0x7D82, - 11474: 0x7D83, - 11475: 0x7D84, - 11476: 0x7D85, - 11477: 0x7D86, - 11478: 0x7D87, - 11479: 0x7D88, - 11480: 0x7D89, - 11481: 0x7D8A, - 11482: 0x7D8B, - 11483: 0x7D8C, - 11484: 0x7D8D, - 11485: 0x7D8E, - 11486: 0x7D8F, - 11487: 0x7D90, - 11488: 0x7D91, - 11489: 0x7D92, - 11490: 0x7D93, - 11491: 0x7D94, - 11492: 0x7D95, - 11493: 0x7D96, - 11494: 0x7D97, - 11495: 0x7D98, - 11496: 0x5065, - 11497: 0x8230, - 11498: 0x5251, - 11499: 0x996F, - 11500: 0x6E10, - 11501: 0x6E85, - 11502: 0x6DA7, - 11503: 0x5EFA, - 11504: 0x50F5, - 11505: 0x59DC, - 11506: 0x5C06, - 11507: 0x6D46, - 11508: 0x6C5F, - 11509: 0x7586, - 11510: 0x848B, - 11511: 0x6868, - 11512: 0x5956, - 11513: 0x8BB2, - 11514: 0x5320, - 11515: 0x9171, - 11516: 0x964D, - 11517: 0x8549, - 11518: 0x6912, - 11519: 0x7901, - 11520: 0x7126, - 11521: 0x80F6, - 11522: 0x4EA4, - 11523: 0x90CA, - 11524: 0x6D47, - 11525: 0x9A84, - 11526: 0x5A07, - 11527: 0x56BC, - 11528: 0x6405, - 11529: 0x94F0, - 11530: 0x77EB, - 11531: 0x4FA5, - 11532: 0x811A, - 11533: 0x72E1, - 11534: 0x89D2, - 11535: 0x997A, - 11536: 0x7F34, - 11537: 0x7EDE, - 11538: 0x527F, - 11539: 0x6559, - 11540: 0x9175, - 11541: 0x8F7F, - 11542: 0x8F83, - 11543: 0x53EB, - 11544: 0x7A96, - 11545: 0x63ED, - 11546: 0x63A5, - 11547: 0x7686, - 11548: 0x79F8, - 11549: 0x8857, - 11550: 0x9636, - 11551: 0x622A, - 11552: 0x52AB, - 11553: 0x8282, - 11554: 0x6854, - 11555: 0x6770, - 11556: 0x6377, - 11557: 0x776B, - 11558: 0x7AED, - 11559: 0x6D01, - 11560: 0x7ED3, - 11561: 0x89E3, - 11562: 0x59D0, - 11563: 0x6212, - 11564: 0x85C9, - 11565: 0x82A5, - 11566: 0x754C, - 11567: 0x501F, - 11568: 0x4ECB, - 11569: 0x75A5, - 11570: 0x8BEB, - 11571: 0x5C4A, - 11572: 0x5DFE, - 11573: 0x7B4B, - 11574: 0x65A4, - 11575: 0x91D1, - 11576: 0x4ECA, - 11577: 0x6D25, - 11578: 0x895F, - 11579: 0x7D27, - 11580: 0x9526, - 11581: 0x4EC5, - 11582: 0x8C28, - 11583: 0x8FDB, - 11584: 0x9773, - 11585: 0x664B, - 11586: 0x7981, - 11587: 0x8FD1, - 11588: 0x70EC, - 11589: 0x6D78, - 11590: 0x7D99, - 11591: 0x7D9A, - 11592: 0x7D9B, - 11593: 0x7D9C, - 11594: 0x7D9D, - 11595: 0x7D9E, - 11596: 0x7D9F, - 11597: 0x7DA0, - 11598: 0x7DA1, - 11599: 0x7DA2, - 11600: 0x7DA3, - 11601: 0x7DA4, - 11602: 0x7DA5, - 11603: 0x7DA7, - 11604: 0x7DA8, - 11605: 0x7DA9, - 11606: 0x7DAA, - 11607: 0x7DAB, - 11608: 0x7DAC, - 11609: 0x7DAD, - 11610: 0x7DAF, - 11611: 0x7DB0, - 11612: 0x7DB1, - 11613: 0x7DB2, - 11614: 0x7DB3, - 11615: 0x7DB4, - 11616: 0x7DB5, - 11617: 0x7DB6, - 11618: 0x7DB7, - 11619: 0x7DB8, - 11620: 0x7DB9, - 11621: 0x7DBA, - 11622: 0x7DBB, - 11623: 0x7DBC, - 11624: 0x7DBD, - 11625: 0x7DBE, - 11626: 0x7DBF, - 11627: 0x7DC0, - 11628: 0x7DC1, - 11629: 0x7DC2, - 11630: 0x7DC3, - 11631: 0x7DC4, - 11632: 0x7DC5, - 11633: 0x7DC6, - 11634: 0x7DC7, - 11635: 0x7DC8, - 11636: 0x7DC9, - 11637: 0x7DCA, - 11638: 0x7DCB, - 11639: 0x7DCC, - 11640: 0x7DCD, - 11641: 0x7DCE, - 11642: 0x7DCF, - 11643: 0x7DD0, - 11644: 0x7DD1, - 11645: 0x7DD2, - 11646: 0x7DD3, - 11647: 0x7DD4, - 11648: 0x7DD5, - 11649: 0x7DD6, - 11650: 0x7DD7, - 11651: 0x7DD8, - 11652: 0x7DD9, - 11653: 0x7DDA, - 11654: 0x7DDB, - 11655: 0x7DDC, - 11656: 0x7DDD, - 11657: 0x7DDE, - 11658: 0x7DDF, - 11659: 0x7DE0, - 11660: 0x7DE1, - 11661: 0x7DE2, - 11662: 0x7DE3, - 11663: 0x7DE4, - 11664: 0x7DE5, - 11665: 0x7DE6, - 11666: 0x7DE7, - 11667: 0x7DE8, - 11668: 0x7DE9, - 11669: 0x7DEA, - 11670: 0x7DEB, - 11671: 0x7DEC, - 11672: 0x7DED, - 11673: 0x7DEE, - 11674: 0x7DEF, - 11675: 0x7DF0, - 11676: 0x7DF1, - 11677: 0x7DF2, - 11678: 0x7DF3, - 11679: 0x7DF4, - 11680: 0x7DF5, - 11681: 0x7DF6, - 11682: 0x7DF7, - 11683: 0x7DF8, - 11684: 0x7DF9, - 11685: 0x7DFA, - 11686: 0x5C3D, - 11687: 0x52B2, - 11688: 0x8346, - 11689: 0x5162, - 11690: 0x830E, - 11691: 0x775B, - 11692: 0x6676, - 11693: 0x9CB8, - 11694: 0x4EAC, - 11695: 0x60CA, - 11696: 0x7CBE, - 11697: 0x7CB3, - 11698: 0x7ECF, - 11699: 0x4E95, - 11700: 0x8B66, - 11701: 0x666F, - 11702: 0x9888, - 11703: 0x9759, - 11704: 0x5883, - 11705: 0x656C, - 11706: 0x955C, - 11707: 0x5F84, - 11708: 0x75C9, - 11709: 0x9756, - 11710: 0x7ADF, - 11711: 0x7ADE, - 11712: 0x51C0, - 11713: 0x70AF, - 11714: 0x7A98, - 11715: 0x63EA, - 11716: 0x7A76, - 11717: 0x7EA0, - 11718: 0x7396, - 11719: 0x97ED, - 11720: 0x4E45, - 11721: 0x7078, - 11722: 0x4E5D, - 11723: 0x9152, - 11724: 0x53A9, - 11725: 0x6551, - 11726: 0x65E7, - 11727: 0x81FC, - 11728: 0x8205, - 11729: 0x548E, - 11730: 0x5C31, - 11731: 0x759A, - 11732: 0x97A0, - 11733: 0x62D8, - 11734: 0x72D9, - 11735: 0x75BD, - 11736: 0x5C45, - 11737: 0x9A79, - 11738: 0x83CA, - 11739: 0x5C40, - 11740: 0x5480, - 11741: 0x77E9, - 11742: 0x4E3E, - 11743: 0x6CAE, - 11744: 0x805A, - 11745: 0x62D2, - 11746: 0x636E, - 11747: 0x5DE8, - 11748: 0x5177, - 11749: 0x8DDD, - 11750: 0x8E1E, - 11751: 0x952F, - 11752: 0x4FF1, - 11753: 0x53E5, - 11754: 0x60E7, - 11755: 0x70AC, - 11756: 0x5267, - 11757: 0x6350, - 11758: 0x9E43, - 11759: 0x5A1F, - 11760: 0x5026, - 11761: 0x7737, - 11762: 0x5377, - 11763: 0x7EE2, - 11764: 0x6485, - 11765: 0x652B, - 11766: 0x6289, - 11767: 0x6398, - 11768: 0x5014, - 11769: 0x7235, - 11770: 0x89C9, - 11771: 0x51B3, - 11772: 0x8BC0, - 11773: 0x7EDD, - 11774: 0x5747, - 11775: 0x83CC, - 11776: 0x94A7, - 11777: 0x519B, - 11778: 0x541B, - 11779: 0x5CFB, - 11780: 0x7DFB, - 11781: 0x7DFC, - 11782: 0x7DFD, - 11783: 0x7DFE, - 11784: 0x7DFF, - 11785: 0x7E00, - 11786: 0x7E01, - 11787: 0x7E02, - 11788: 0x7E03, - 11789: 0x7E04, - 11790: 0x7E05, - 11791: 0x7E06, - 11792: 0x7E07, - 11793: 0x7E08, - 11794: 0x7E09, - 11795: 0x7E0A, - 11796: 0x7E0B, - 11797: 0x7E0C, - 11798: 0x7E0D, - 11799: 0x7E0E, - 11800: 0x7E0F, - 11801: 0x7E10, - 11802: 0x7E11, - 11803: 0x7E12, - 11804: 0x7E13, - 11805: 0x7E14, - 11806: 0x7E15, - 11807: 0x7E16, - 11808: 0x7E17, - 11809: 0x7E18, - 11810: 0x7E19, - 11811: 0x7E1A, - 11812: 0x7E1B, - 11813: 0x7E1C, - 11814: 0x7E1D, - 11815: 0x7E1E, - 11816: 0x7E1F, - 11817: 0x7E20, - 11818: 0x7E21, - 11819: 0x7E22, - 11820: 0x7E23, - 11821: 0x7E24, - 11822: 0x7E25, - 11823: 0x7E26, - 11824: 0x7E27, - 11825: 0x7E28, - 11826: 0x7E29, - 11827: 0x7E2A, - 11828: 0x7E2B, - 11829: 0x7E2C, - 11830: 0x7E2D, - 11831: 0x7E2E, - 11832: 0x7E2F, - 11833: 0x7E30, - 11834: 0x7E31, - 11835: 0x7E32, - 11836: 0x7E33, - 11837: 0x7E34, - 11838: 0x7E35, - 11839: 0x7E36, - 11840: 0x7E37, - 11841: 0x7E38, - 11842: 0x7E39, - 11843: 0x7E3A, - 11844: 0x7E3C, - 11845: 0x7E3D, - 11846: 0x7E3E, - 11847: 0x7E3F, - 11848: 0x7E40, - 11849: 0x7E42, - 11850: 0x7E43, - 11851: 0x7E44, - 11852: 0x7E45, - 11853: 0x7E46, - 11854: 0x7E48, - 11855: 0x7E49, - 11856: 0x7E4A, - 11857: 0x7E4B, - 11858: 0x7E4C, - 11859: 0x7E4D, - 11860: 0x7E4E, - 11861: 0x7E4F, - 11862: 0x7E50, - 11863: 0x7E51, - 11864: 0x7E52, - 11865: 0x7E53, - 11866: 0x7E54, - 11867: 0x7E55, - 11868: 0x7E56, - 11869: 0x7E57, - 11870: 0x7E58, - 11871: 0x7E59, - 11872: 0x7E5A, - 11873: 0x7E5B, - 11874: 0x7E5C, - 11875: 0x7E5D, - 11876: 0x4FCA, - 11877: 0x7AE3, - 11878: 0x6D5A, - 11879: 0x90E1, - 11880: 0x9A8F, - 11881: 0x5580, - 11882: 0x5496, - 11883: 0x5361, - 11884: 0x54AF, - 11885: 0x5F00, - 11886: 0x63E9, - 11887: 0x6977, - 11888: 0x51EF, - 11889: 0x6168, - 11890: 0x520A, - 11891: 0x582A, - 11892: 0x52D8, - 11893: 0x574E, - 11894: 0x780D, - 11895: 0x770B, - 11896: 0x5EB7, - 11897: 0x6177, - 11898: 0x7CE0, - 11899: 0x625B, - 11900: 0x6297, - 11901: 0x4EA2, - 11902: 0x7095, - 11903: 0x8003, - 11904: 0x62F7, - 11905: 0x70E4, - 11906: 0x9760, - 11907: 0x5777, - 11908: 0x82DB, - 11909: 0x67EF, - 11910: 0x68F5, - 11911: 0x78D5, - 11912: 0x9897, - 11913: 0x79D1, - 11914: 0x58F3, - 11915: 0x54B3, - 11916: 0x53EF, - 11917: 0x6E34, - 11918: 0x514B, - 11919: 0x523B, - 11920: 0x5BA2, - 11921: 0x8BFE, - 11922: 0x80AF, - 11923: 0x5543, - 11924: 0x57A6, - 11925: 0x6073, - 11926: 0x5751, - 11927: 0x542D, - 11928: 0x7A7A, - 11929: 0x6050, - 11930: 0x5B54, - 11931: 0x63A7, - 11932: 0x62A0, - 11933: 0x53E3, - 11934: 0x6263, - 11935: 0x5BC7, - 11936: 0x67AF, - 11937: 0x54ED, - 11938: 0x7A9F, - 11939: 0x82E6, - 11940: 0x9177, - 11941: 0x5E93, - 11942: 0x88E4, - 11943: 0x5938, - 11944: 0x57AE, - 11945: 0x630E, - 11946: 0x8DE8, - 11947: 0x80EF, - 11948: 0x5757, - 11949: 0x7B77, - 11950: 0x4FA9, - 11951: 0x5FEB, - 11952: 0x5BBD, - 11953: 0x6B3E, - 11954: 0x5321, - 11955: 0x7B50, - 11956: 0x72C2, - 11957: 0x6846, - 11958: 0x77FF, - 11959: 0x7736, - 11960: 0x65F7, - 11961: 0x51B5, - 11962: 0x4E8F, - 11963: 0x76D4, - 11964: 0x5CBF, - 11965: 0x7AA5, - 11966: 0x8475, - 11967: 0x594E, - 11968: 0x9B41, - 11969: 0x5080, - 11970: 0x7E5E, - 11971: 0x7E5F, - 11972: 0x7E60, - 11973: 0x7E61, - 11974: 0x7E62, - 11975: 0x7E63, - 11976: 0x7E64, - 11977: 0x7E65, - 11978: 0x7E66, - 11979: 0x7E67, - 11980: 0x7E68, - 11981: 0x7E69, - 11982: 0x7E6A, - 11983: 0x7E6B, - 11984: 0x7E6C, - 11985: 0x7E6D, - 11986: 0x7E6E, - 11987: 0x7E6F, - 11988: 0x7E70, - 11989: 0x7E71, - 11990: 0x7E72, - 11991: 0x7E73, - 11992: 0x7E74, - 11993: 0x7E75, - 11994: 0x7E76, - 11995: 0x7E77, - 11996: 0x7E78, - 11997: 0x7E79, - 11998: 0x7E7A, - 11999: 0x7E7B, - 12000: 0x7E7C, - 12001: 0x7E7D, - 12002: 0x7E7E, - 12003: 0x7E7F, - 12004: 0x7E80, - 12005: 0x7E81, - 12006: 0x7E83, - 12007: 0x7E84, - 12008: 0x7E85, - 12009: 0x7E86, - 12010: 0x7E87, - 12011: 0x7E88, - 12012: 0x7E89, - 12013: 0x7E8A, - 12014: 0x7E8B, - 12015: 0x7E8C, - 12016: 0x7E8D, - 12017: 0x7E8E, - 12018: 0x7E8F, - 12019: 0x7E90, - 12020: 0x7E91, - 12021: 0x7E92, - 12022: 0x7E93, - 12023: 0x7E94, - 12024: 0x7E95, - 12025: 0x7E96, - 12026: 0x7E97, - 12027: 0x7E98, - 12028: 0x7E99, - 12029: 0x7E9A, - 12030: 0x7E9C, - 12031: 0x7E9D, - 12032: 0x7E9E, - 12033: 0x7EAE, - 12034: 0x7EB4, - 12035: 0x7EBB, - 12036: 0x7EBC, - 12037: 0x7ED6, - 12038: 0x7EE4, - 12039: 0x7EEC, - 12040: 0x7EF9, - 12041: 0x7F0A, - 12042: 0x7F10, - 12043: 0x7F1E, - 12044: 0x7F37, - 12045: 0x7F39, - 12046: 0x7F3B, - 12047: 0x7F3C, - 12048: 0x7F3D, - 12049: 0x7F3E, - 12050: 0x7F3F, - 12051: 0x7F40, - 12052: 0x7F41, - 12053: 0x7F43, - 12054: 0x7F46, - 12055: 0x7F47, - 12056: 0x7F48, - 12057: 0x7F49, - 12058: 0x7F4A, - 12059: 0x7F4B, - 12060: 0x7F4C, - 12061: 0x7F4D, - 12062: 0x7F4E, - 12063: 0x7F4F, - 12064: 0x7F52, - 12065: 0x7F53, - 12066: 0x9988, - 12067: 0x6127, - 12068: 0x6E83, - 12069: 0x5764, - 12070: 0x6606, - 12071: 0x6346, - 12072: 0x56F0, - 12073: 0x62EC, - 12074: 0x6269, - 12075: 0x5ED3, - 12076: 0x9614, - 12077: 0x5783, - 12078: 0x62C9, - 12079: 0x5587, - 12080: 0x8721, - 12081: 0x814A, - 12082: 0x8FA3, - 12083: 0x5566, - 12084: 0x83B1, - 12085: 0x6765, - 12086: 0x8D56, - 12087: 0x84DD, - 12088: 0x5A6A, - 12089: 0x680F, - 12090: 0x62E6, - 12091: 0x7BEE, - 12092: 0x9611, - 12093: 0x5170, - 12094: 0x6F9C, - 12095: 0x8C30, - 12096: 0x63FD, - 12097: 0x89C8, - 12098: 0x61D2, - 12099: 0x7F06, - 12100: 0x70C2, - 12101: 0x6EE5, - 12102: 0x7405, - 12103: 0x6994, - 12104: 0x72FC, - 12105: 0x5ECA, - 12106: 0x90CE, - 12107: 0x6717, - 12108: 0x6D6A, - 12109: 0x635E, - 12110: 0x52B3, - 12111: 0x7262, - 12112: 0x8001, - 12113: 0x4F6C, - 12114: 0x59E5, - 12115: 0x916A, - 12116: 0x70D9, - 12117: 0x6D9D, - 12118: 0x52D2, - 12119: 0x4E50, - 12120: 0x96F7, - 12121: 0x956D, - 12122: 0x857E, - 12123: 0x78CA, - 12124: 0x7D2F, - 12125: 0x5121, - 12126: 0x5792, - 12127: 0x64C2, - 12128: 0x808B, - 12129: 0x7C7B, - 12130: 0x6CEA, - 12131: 0x68F1, - 12132: 0x695E, - 12133: 0x51B7, - 12134: 0x5398, - 12135: 0x68A8, - 12136: 0x7281, - 12137: 0x9ECE, - 12138: 0x7BF1, - 12139: 0x72F8, - 12140: 0x79BB, - 12141: 0x6F13, - 12142: 0x7406, - 12143: 0x674E, - 12144: 0x91CC, - 12145: 0x9CA4, - 12146: 0x793C, - 12147: 0x8389, - 12148: 0x8354, - 12149: 0x540F, - 12150: 0x6817, - 12151: 0x4E3D, - 12152: 0x5389, - 12153: 0x52B1, - 12154: 0x783E, - 12155: 0x5386, - 12156: 0x5229, - 12157: 0x5088, - 12158: 0x4F8B, - 12159: 0x4FD0, - 12160: 0x7F56, - 12161: 0x7F59, - 12162: 0x7F5B, - 12163: 0x7F5C, - 12164: 0x7F5D, - 12165: 0x7F5E, - 12166: 0x7F60, - 12167: 0x7F63, - 12168: 0x7F64, - 12169: 0x7F65, - 12170: 0x7F66, - 12171: 0x7F67, - 12172: 0x7F6B, - 12173: 0x7F6C, - 12174: 0x7F6D, - 12175: 0x7F6F, - 12176: 0x7F70, - 12177: 0x7F73, - 12178: 0x7F75, - 12179: 0x7F76, - 12180: 0x7F77, - 12181: 0x7F78, - 12182: 0x7F7A, - 12183: 0x7F7B, - 12184: 0x7F7C, - 12185: 0x7F7D, - 12186: 0x7F7F, - 12187: 0x7F80, - 12188: 0x7F82, - 12189: 0x7F83, - 12190: 0x7F84, - 12191: 0x7F85, - 12192: 0x7F86, - 12193: 0x7F87, - 12194: 0x7F88, - 12195: 0x7F89, - 12196: 0x7F8B, - 12197: 0x7F8D, - 12198: 0x7F8F, - 12199: 0x7F90, - 12200: 0x7F91, - 12201: 0x7F92, - 12202: 0x7F93, - 12203: 0x7F95, - 12204: 0x7F96, - 12205: 0x7F97, - 12206: 0x7F98, - 12207: 0x7F99, - 12208: 0x7F9B, - 12209: 0x7F9C, - 12210: 0x7FA0, - 12211: 0x7FA2, - 12212: 0x7FA3, - 12213: 0x7FA5, - 12214: 0x7FA6, - 12215: 0x7FA8, - 12216: 0x7FA9, - 12217: 0x7FAA, - 12218: 0x7FAB, - 12219: 0x7FAC, - 12220: 0x7FAD, - 12221: 0x7FAE, - 12222: 0x7FB1, - 12223: 0x7FB3, - 12224: 0x7FB4, - 12225: 0x7FB5, - 12226: 0x7FB6, - 12227: 0x7FB7, - 12228: 0x7FBA, - 12229: 0x7FBB, - 12230: 0x7FBE, - 12231: 0x7FC0, - 12232: 0x7FC2, - 12233: 0x7FC3, - 12234: 0x7FC4, - 12235: 0x7FC6, - 12236: 0x7FC7, - 12237: 0x7FC8, - 12238: 0x7FC9, - 12239: 0x7FCB, - 12240: 0x7FCD, - 12241: 0x7FCF, - 12242: 0x7FD0, - 12243: 0x7FD1, - 12244: 0x7FD2, - 12245: 0x7FD3, - 12246: 0x7FD6, - 12247: 0x7FD7, - 12248: 0x7FD9, - 12249: 0x7FDA, - 12250: 0x7FDB, - 12251: 0x7FDC, - 12252: 0x7FDD, - 12253: 0x7FDE, - 12254: 0x7FE2, - 12255: 0x7FE3, - 12256: 0x75E2, - 12257: 0x7ACB, - 12258: 0x7C92, - 12259: 0x6CA5, - 12260: 0x96B6, - 12261: 0x529B, - 12262: 0x7483, - 12263: 0x54E9, - 12264: 0x4FE9, - 12265: 0x8054, - 12266: 0x83B2, - 12267: 0x8FDE, - 12268: 0x9570, - 12269: 0x5EC9, - 12270: 0x601C, - 12271: 0x6D9F, - 12272: 0x5E18, - 12273: 0x655B, - 12274: 0x8138, - 12275: 0x94FE, - 12276: 0x604B, - 12277: 0x70BC, - 12278: 0x7EC3, - 12279: 0x7CAE, - 12280: 0x51C9, - 12281: 0x6881, - 12282: 0x7CB1, - 12283: 0x826F, - 12284: 0x4E24, - 12285: 0x8F86, - 12286: 0x91CF, - 12287: 0x667E, - 12288: 0x4EAE, - 12289: 0x8C05, - 12290: 0x64A9, - 12291: 0x804A, - 12292: 0x50DA, - 12293: 0x7597, - 12294: 0x71CE, - 12295: 0x5BE5, - 12296: 0x8FBD, - 12297: 0x6F66, - 12298: 0x4E86, - 12299: 0x6482, - 12300: 0x9563, - 12301: 0x5ED6, - 12302: 0x6599, - 12303: 0x5217, - 12304: 0x88C2, - 12305: 0x70C8, - 12306: 0x52A3, - 12307: 0x730E, - 12308: 0x7433, - 12309: 0x6797, - 12310: 0x78F7, - 12311: 0x9716, - 12312: 0x4E34, - 12313: 0x90BB, - 12314: 0x9CDE, - 12315: 0x6DCB, - 12316: 0x51DB, - 12317: 0x8D41, - 12318: 0x541D, - 12319: 0x62CE, - 12320: 0x73B2, - 12321: 0x83F1, - 12322: 0x96F6, - 12323: 0x9F84, - 12324: 0x94C3, - 12325: 0x4F36, - 12326: 0x7F9A, - 12327: 0x51CC, - 12328: 0x7075, - 12329: 0x9675, - 12330: 0x5CAD, - 12331: 0x9886, - 12332: 0x53E6, - 12333: 0x4EE4, - 12334: 0x6E9C, - 12335: 0x7409, - 12336: 0x69B4, - 12337: 0x786B, - 12338: 0x998F, - 12339: 0x7559, - 12340: 0x5218, - 12341: 0x7624, - 12342: 0x6D41, - 12343: 0x67F3, - 12344: 0x516D, - 12345: 0x9F99, - 12346: 0x804B, - 12347: 0x5499, - 12348: 0x7B3C, - 12349: 0x7ABF, - 12350: 0x7FE4, - 12351: 0x7FE7, - 12352: 0x7FE8, - 12353: 0x7FEA, - 12354: 0x7FEB, - 12355: 0x7FEC, - 12356: 0x7FED, - 12357: 0x7FEF, - 12358: 0x7FF2, - 12359: 0x7FF4, - 12360: 0x7FF5, - 12361: 0x7FF6, - 12362: 0x7FF7, - 12363: 0x7FF8, - 12364: 0x7FF9, - 12365: 0x7FFA, - 12366: 0x7FFD, - 12367: 0x7FFE, - 12368: 0x7FFF, - 12369: 0x8002, - 12370: 0x8007, - 12371: 0x8008, - 12372: 0x8009, - 12373: 0x800A, - 12374: 0x800E, - 12375: 0x800F, - 12376: 0x8011, - 12377: 0x8013, - 12378: 0x801A, - 12379: 0x801B, - 12380: 0x801D, - 12381: 0x801E, - 12382: 0x801F, - 12383: 0x8021, - 12384: 0x8023, - 12385: 0x8024, - 12386: 0x802B, - 12387: 0x802C, - 12388: 0x802D, - 12389: 0x802E, - 12390: 0x802F, - 12391: 0x8030, - 12392: 0x8032, - 12393: 0x8034, - 12394: 0x8039, - 12395: 0x803A, - 12396: 0x803C, - 12397: 0x803E, - 12398: 0x8040, - 12399: 0x8041, - 12400: 0x8044, - 12401: 0x8045, - 12402: 0x8047, - 12403: 0x8048, - 12404: 0x8049, - 12405: 0x804E, - 12406: 0x804F, - 12407: 0x8050, - 12408: 0x8051, - 12409: 0x8053, - 12410: 0x8055, - 12411: 0x8056, - 12412: 0x8057, - 12413: 0x8059, - 12414: 0x805B, - 12415: 0x805C, - 12416: 0x805D, - 12417: 0x805E, - 12418: 0x805F, - 12419: 0x8060, - 12420: 0x8061, - 12421: 0x8062, - 12422: 0x8063, - 12423: 0x8064, - 12424: 0x8065, - 12425: 0x8066, - 12426: 0x8067, - 12427: 0x8068, - 12428: 0x806B, - 12429: 0x806C, - 12430: 0x806D, - 12431: 0x806E, - 12432: 0x806F, - 12433: 0x8070, - 12434: 0x8072, - 12435: 0x8073, - 12436: 0x8074, - 12437: 0x8075, - 12438: 0x8076, - 12439: 0x8077, - 12440: 0x8078, - 12441: 0x8079, - 12442: 0x807A, - 12443: 0x807B, - 12444: 0x807C, - 12445: 0x807D, - 12446: 0x9686, - 12447: 0x5784, - 12448: 0x62E2, - 12449: 0x9647, - 12450: 0x697C, - 12451: 0x5A04, - 12452: 0x6402, - 12453: 0x7BD3, - 12454: 0x6F0F, - 12455: 0x964B, - 12456: 0x82A6, - 12457: 0x5362, - 12458: 0x9885, - 12459: 0x5E90, - 12460: 0x7089, - 12461: 0x63B3, - 12462: 0x5364, - 12463: 0x864F, - 12464: 0x9C81, - 12465: 0x9E93, - 12466: 0x788C, - 12467: 0x9732, - 12468: 0x8DEF, - 12469: 0x8D42, - 12470: 0x9E7F, - 12471: 0x6F5E, - 12472: 0x7984, - 12473: 0x5F55, - 12474: 0x9646, - 12475: 0x622E, - 12476: 0x9A74, - 12477: 0x5415, - 12478: 0x94DD, - 12479: 0x4FA3, - 12480: 0x65C5, - 12481: 0x5C65, - 12482: 0x5C61, - 12483: 0x7F15, - 12484: 0x8651, - 12485: 0x6C2F, - 12486: 0x5F8B, - 12487: 0x7387, - 12488: 0x6EE4, - 12489: 0x7EFF, - 12490: 0x5CE6, - 12491: 0x631B, - 12492: 0x5B6A, - 12493: 0x6EE6, - 12494: 0x5375, - 12495: 0x4E71, - 12496: 0x63A0, - 12497: 0x7565, - 12498: 0x62A1, - 12499: 0x8F6E, - 12500: 0x4F26, - 12501: 0x4ED1, - 12502: 0x6CA6, - 12503: 0x7EB6, - 12504: 0x8BBA, - 12505: 0x841D, - 12506: 0x87BA, - 12507: 0x7F57, - 12508: 0x903B, - 12509: 0x9523, - 12510: 0x7BA9, - 12511: 0x9AA1, - 12512: 0x88F8, - 12513: 0x843D, - 12514: 0x6D1B, - 12515: 0x9A86, - 12516: 0x7EDC, - 12517: 0x5988, - 12518: 0x9EBB, - 12519: 0x739B, - 12520: 0x7801, - 12521: 0x8682, - 12522: 0x9A6C, - 12523: 0x9A82, - 12524: 0x561B, - 12525: 0x5417, - 12526: 0x57CB, - 12527: 0x4E70, - 12528: 0x9EA6, - 12529: 0x5356, - 12530: 0x8FC8, - 12531: 0x8109, - 12532: 0x7792, - 12533: 0x9992, - 12534: 0x86EE, - 12535: 0x6EE1, - 12536: 0x8513, - 12537: 0x66FC, - 12538: 0x6162, - 12539: 0x6F2B, - 12540: 0x807E, - 12541: 0x8081, - 12542: 0x8082, - 12543: 0x8085, - 12544: 0x8088, - 12545: 0x808A, - 12546: 0x808D, - 12547: 0x808E, - 12548: 0x808F, - 12549: 0x8090, - 12550: 0x8091, - 12551: 0x8092, - 12552: 0x8094, - 12553: 0x8095, - 12554: 0x8097, - 12555: 0x8099, - 12556: 0x809E, - 12557: 0x80A3, - 12558: 0x80A6, - 12559: 0x80A7, - 12560: 0x80A8, - 12561: 0x80AC, - 12562: 0x80B0, - 12563: 0x80B3, - 12564: 0x80B5, - 12565: 0x80B6, - 12566: 0x80B8, - 12567: 0x80B9, - 12568: 0x80BB, - 12569: 0x80C5, - 12570: 0x80C7, - 12571: 0x80C8, - 12572: 0x80C9, - 12573: 0x80CA, - 12574: 0x80CB, - 12575: 0x80CF, - 12576: 0x80D0, - 12577: 0x80D1, - 12578: 0x80D2, - 12579: 0x80D3, - 12580: 0x80D4, - 12581: 0x80D5, - 12582: 0x80D8, - 12583: 0x80DF, - 12584: 0x80E0, - 12585: 0x80E2, - 12586: 0x80E3, - 12587: 0x80E6, - 12588: 0x80EE, - 12589: 0x80F5, - 12590: 0x80F7, - 12591: 0x80F9, - 12592: 0x80FB, - 12593: 0x80FE, - 12594: 0x80FF, - 12595: 0x8100, - 12596: 0x8101, - 12597: 0x8103, - 12598: 0x8104, - 12599: 0x8105, - 12600: 0x8107, - 12601: 0x8108, - 12602: 0x810B, - 12603: 0x810C, - 12604: 0x8115, - 12605: 0x8117, - 12606: 0x8119, - 12607: 0x811B, - 12608: 0x811C, - 12609: 0x811D, - 12610: 0x811F, - 12611: 0x8120, - 12612: 0x8121, - 12613: 0x8122, - 12614: 0x8123, - 12615: 0x8124, - 12616: 0x8125, - 12617: 0x8126, - 12618: 0x8127, - 12619: 0x8128, - 12620: 0x8129, - 12621: 0x812A, - 12622: 0x812B, - 12623: 0x812D, - 12624: 0x812E, - 12625: 0x8130, - 12626: 0x8133, - 12627: 0x8134, - 12628: 0x8135, - 12629: 0x8137, - 12630: 0x8139, - 12631: 0x813A, - 12632: 0x813B, - 12633: 0x813C, - 12634: 0x813D, - 12635: 0x813F, - 12636: 0x8C29, - 12637: 0x8292, - 12638: 0x832B, - 12639: 0x76F2, - 12640: 0x6C13, - 12641: 0x5FD9, - 12642: 0x83BD, - 12643: 0x732B, - 12644: 0x8305, - 12645: 0x951A, - 12646: 0x6BDB, - 12647: 0x77DB, - 12648: 0x94C6, - 12649: 0x536F, - 12650: 0x8302, - 12651: 0x5192, - 12652: 0x5E3D, - 12653: 0x8C8C, - 12654: 0x8D38, - 12655: 0x4E48, - 12656: 0x73AB, - 12657: 0x679A, - 12658: 0x6885, - 12659: 0x9176, - 12660: 0x9709, - 12661: 0x7164, - 12662: 0x6CA1, - 12663: 0x7709, - 12664: 0x5A92, - 12665: 0x9541, - 12666: 0x6BCF, - 12667: 0x7F8E, - 12668: 0x6627, - 12669: 0x5BD0, - 12670: 0x59B9, - 12671: 0x5A9A, - 12672: 0x95E8, - 12673: 0x95F7, - 12674: 0x4EEC, - 12675: 0x840C, - 12676: 0x8499, - 12677: 0x6AAC, - 12678: 0x76DF, - 12679: 0x9530, - 12680: 0x731B, - 12681: 0x68A6, - 12682: 0x5B5F, - 12683: 0x772F, - 12684: 0x919A, - 12685: 0x9761, - 12686: 0x7CDC, - 12687: 0x8FF7, - 12688: 0x8C1C, - 12689: 0x5F25, - 12690: 0x7C73, - 12691: 0x79D8, - 12692: 0x89C5, - 12693: 0x6CCC, - 12694: 0x871C, - 12695: 0x5BC6, - 12696: 0x5E42, - 12697: 0x68C9, - 12698: 0x7720, - 12699: 0x7EF5, - 12700: 0x5195, - 12701: 0x514D, - 12702: 0x52C9, - 12703: 0x5A29, - 12704: 0x7F05, - 12705: 0x9762, - 12706: 0x82D7, - 12707: 0x63CF, - 12708: 0x7784, - 12709: 0x85D0, - 12710: 0x79D2, - 12711: 0x6E3A, - 12712: 0x5E99, - 12713: 0x5999, - 12714: 0x8511, - 12715: 0x706D, - 12716: 0x6C11, - 12717: 0x62BF, - 12718: 0x76BF, - 12719: 0x654F, - 12720: 0x60AF, - 12721: 0x95FD, - 12722: 0x660E, - 12723: 0x879F, - 12724: 0x9E23, - 12725: 0x94ED, - 12726: 0x540D, - 12727: 0x547D, - 12728: 0x8C2C, - 12729: 0x6478, - 12730: 0x8140, - 12731: 0x8141, - 12732: 0x8142, - 12733: 0x8143, - 12734: 0x8144, - 12735: 0x8145, - 12736: 0x8147, - 12737: 0x8149, - 12738: 0x814D, - 12739: 0x814E, - 12740: 0x814F, - 12741: 0x8152, - 12742: 0x8156, - 12743: 0x8157, - 12744: 0x8158, - 12745: 0x815B, - 12746: 0x815C, - 12747: 0x815D, - 12748: 0x815E, - 12749: 0x815F, - 12750: 0x8161, - 12751: 0x8162, - 12752: 0x8163, - 12753: 0x8164, - 12754: 0x8166, - 12755: 0x8168, - 12756: 0x816A, - 12757: 0x816B, - 12758: 0x816C, - 12759: 0x816F, - 12760: 0x8172, - 12761: 0x8173, - 12762: 0x8175, - 12763: 0x8176, - 12764: 0x8177, - 12765: 0x8178, - 12766: 0x8181, - 12767: 0x8183, - 12768: 0x8184, - 12769: 0x8185, - 12770: 0x8186, - 12771: 0x8187, - 12772: 0x8189, - 12773: 0x818B, - 12774: 0x818C, - 12775: 0x818D, - 12776: 0x818E, - 12777: 0x8190, - 12778: 0x8192, - 12779: 0x8193, - 12780: 0x8194, - 12781: 0x8195, - 12782: 0x8196, - 12783: 0x8197, - 12784: 0x8199, - 12785: 0x819A, - 12786: 0x819E, - 12787: 0x819F, - 12788: 0x81A0, - 12789: 0x81A1, - 12790: 0x81A2, - 12791: 0x81A4, - 12792: 0x81A5, - 12793: 0x81A7, - 12794: 0x81A9, - 12795: 0x81AB, - 12796: 0x81AC, - 12797: 0x81AD, - 12798: 0x81AE, - 12799: 0x81AF, - 12800: 0x81B0, - 12801: 0x81B1, - 12802: 0x81B2, - 12803: 0x81B4, - 12804: 0x81B5, - 12805: 0x81B6, - 12806: 0x81B7, - 12807: 0x81B8, - 12808: 0x81B9, - 12809: 0x81BC, - 12810: 0x81BD, - 12811: 0x81BE, - 12812: 0x81BF, - 12813: 0x81C4, - 12814: 0x81C5, - 12815: 0x81C7, - 12816: 0x81C8, - 12817: 0x81C9, - 12818: 0x81CB, - 12819: 0x81CD, - 12820: 0x81CE, - 12821: 0x81CF, - 12822: 0x81D0, - 12823: 0x81D1, - 12824: 0x81D2, - 12825: 0x81D3, - 12826: 0x6479, - 12827: 0x8611, - 12828: 0x6A21, - 12829: 0x819C, - 12830: 0x78E8, - 12831: 0x6469, - 12832: 0x9B54, - 12833: 0x62B9, - 12834: 0x672B, - 12835: 0x83AB, - 12836: 0x58A8, - 12837: 0x9ED8, - 12838: 0x6CAB, - 12839: 0x6F20, - 12840: 0x5BDE, - 12841: 0x964C, - 12842: 0x8C0B, - 12843: 0x725F, - 12844: 0x67D0, - 12845: 0x62C7, - 12846: 0x7261, - 12847: 0x4EA9, - 12848: 0x59C6, - 12849: 0x6BCD, - 12850: 0x5893, - 12851: 0x66AE, - 12852: 0x5E55, - 12853: 0x52DF, - 12854: 0x6155, - 12855: 0x6728, - 12856: 0x76EE, - 12857: 0x7766, - 12858: 0x7267, - 12859: 0x7A46, - 12860: 0x62FF, - 12861: 0x54EA, - 12862: 0x5450, - 12863: 0x94A0, - 12864: 0x90A3, - 12865: 0x5A1C, - 12866: 0x7EB3, - 12867: 0x6C16, - 12868: 0x4E43, - 12869: 0x5976, - 12870: 0x8010, - 12871: 0x5948, - 12872: 0x5357, - 12873: 0x7537, - 12874: 0x96BE, - 12875: 0x56CA, - 12876: 0x6320, - 12877: 0x8111, - 12878: 0x607C, - 12879: 0x95F9, - 12880: 0x6DD6, - 12881: 0x5462, - 12882: 0x9981, - 12883: 0x5185, - 12884: 0x5AE9, - 12885: 0x80FD, - 12886: 0x59AE, - 12887: 0x9713, - 12888: 0x502A, - 12889: 0x6CE5, - 12890: 0x5C3C, - 12891: 0x62DF, - 12892: 0x4F60, - 12893: 0x533F, - 12894: 0x817B, - 12895: 0x9006, - 12896: 0x6EBA, - 12897: 0x852B, - 12898: 0x62C8, - 12899: 0x5E74, - 12900: 0x78BE, - 12901: 0x64B5, - 12902: 0x637B, - 12903: 0x5FF5, - 12904: 0x5A18, - 12905: 0x917F, - 12906: 0x9E1F, - 12907: 0x5C3F, - 12908: 0x634F, - 12909: 0x8042, - 12910: 0x5B7D, - 12911: 0x556E, - 12912: 0x954A, - 12913: 0x954D, - 12914: 0x6D85, - 12915: 0x60A8, - 12916: 0x67E0, - 12917: 0x72DE, - 12918: 0x51DD, - 12919: 0x5B81, - 12920: 0x81D4, - 12921: 0x81D5, - 12922: 0x81D6, - 12923: 0x81D7, - 12924: 0x81D8, - 12925: 0x81D9, - 12926: 0x81DA, - 12927: 0x81DB, - 12928: 0x81DC, - 12929: 0x81DD, - 12930: 0x81DE, - 12931: 0x81DF, - 12932: 0x81E0, - 12933: 0x81E1, - 12934: 0x81E2, - 12935: 0x81E4, - 12936: 0x81E5, - 12937: 0x81E6, - 12938: 0x81E8, - 12939: 0x81E9, - 12940: 0x81EB, - 12941: 0x81EE, - 12942: 0x81EF, - 12943: 0x81F0, - 12944: 0x81F1, - 12945: 0x81F2, - 12946: 0x81F5, - 12947: 0x81F6, - 12948: 0x81F7, - 12949: 0x81F8, - 12950: 0x81F9, - 12951: 0x81FA, - 12952: 0x81FD, - 12953: 0x81FF, - 12954: 0x8203, - 12955: 0x8207, - 12956: 0x8208, - 12957: 0x8209, - 12958: 0x820A, - 12959: 0x820B, - 12960: 0x820E, - 12961: 0x820F, - 12962: 0x8211, - 12963: 0x8213, - 12964: 0x8215, - 12965: 0x8216, - 12966: 0x8217, - 12967: 0x8218, - 12968: 0x8219, - 12969: 0x821A, - 12970: 0x821D, - 12971: 0x8220, - 12972: 0x8224, - 12973: 0x8225, - 12974: 0x8226, - 12975: 0x8227, - 12976: 0x8229, - 12977: 0x822E, - 12978: 0x8232, - 12979: 0x823A, - 12980: 0x823C, - 12981: 0x823D, - 12982: 0x823F, - 12983: 0x8240, - 12984: 0x8241, - 12985: 0x8242, - 12986: 0x8243, - 12987: 0x8245, - 12988: 0x8246, - 12989: 0x8248, - 12990: 0x824A, - 12991: 0x824C, - 12992: 0x824D, - 12993: 0x824E, - 12994: 0x8250, - 12995: 0x8251, - 12996: 0x8252, - 12997: 0x8253, - 12998: 0x8254, - 12999: 0x8255, - 13000: 0x8256, - 13001: 0x8257, - 13002: 0x8259, - 13003: 0x825B, - 13004: 0x825C, - 13005: 0x825D, - 13006: 0x825E, - 13007: 0x8260, - 13008: 0x8261, - 13009: 0x8262, - 13010: 0x8263, - 13011: 0x8264, - 13012: 0x8265, - 13013: 0x8266, - 13014: 0x8267, - 13015: 0x8269, - 13016: 0x62E7, - 13017: 0x6CDE, - 13018: 0x725B, - 13019: 0x626D, - 13020: 0x94AE, - 13021: 0x7EBD, - 13022: 0x8113, - 13023: 0x6D53, - 13024: 0x519C, - 13025: 0x5F04, - 13026: 0x5974, - 13027: 0x52AA, - 13028: 0x6012, - 13029: 0x5973, - 13030: 0x6696, - 13031: 0x8650, - 13032: 0x759F, - 13033: 0x632A, - 13034: 0x61E6, - 13035: 0x7CEF, - 13036: 0x8BFA, - 13037: 0x54E6, - 13038: 0x6B27, - 13039: 0x9E25, - 13040: 0x6BB4, - 13041: 0x85D5, - 13042: 0x5455, - 13043: 0x5076, - 13044: 0x6CA4, - 13045: 0x556A, - 13046: 0x8DB4, - 13047: 0x722C, - 13048: 0x5E15, - 13049: 0x6015, - 13050: 0x7436, - 13051: 0x62CD, - 13052: 0x6392, - 13053: 0x724C, - 13054: 0x5F98, - 13055: 0x6E43, - 13056: 0x6D3E, - 13057: 0x6500, - 13058: 0x6F58, - 13059: 0x76D8, - 13060: 0x78D0, - 13061: 0x76FC, - 13062: 0x7554, - 13063: 0x5224, - 13064: 0x53DB, - 13065: 0x4E53, - 13066: 0x5E9E, - 13067: 0x65C1, - 13068: 0x802A, - 13069: 0x80D6, - 13070: 0x629B, - 13071: 0x5486, - 13072: 0x5228, - 13073: 0x70AE, - 13074: 0x888D, - 13075: 0x8DD1, - 13076: 0x6CE1, - 13077: 0x5478, - 13078: 0x80DA, - 13079: 0x57F9, - 13080: 0x88F4, - 13081: 0x8D54, - 13082: 0x966A, - 13083: 0x914D, - 13084: 0x4F69, - 13085: 0x6C9B, - 13086: 0x55B7, - 13087: 0x76C6, - 13088: 0x7830, - 13089: 0x62A8, - 13090: 0x70F9, - 13091: 0x6F8E, - 13092: 0x5F6D, - 13093: 0x84EC, - 13094: 0x68DA, - 13095: 0x787C, - 13096: 0x7BF7, - 13097: 0x81A8, - 13098: 0x670B, - 13099: 0x9E4F, - 13100: 0x6367, - 13101: 0x78B0, - 13102: 0x576F, - 13103: 0x7812, - 13104: 0x9739, - 13105: 0x6279, - 13106: 0x62AB, - 13107: 0x5288, - 13108: 0x7435, - 13109: 0x6BD7, - 13110: 0x826A, - 13111: 0x826B, - 13112: 0x826C, - 13113: 0x826D, - 13114: 0x8271, - 13115: 0x8275, - 13116: 0x8276, - 13117: 0x8277, - 13118: 0x8278, - 13119: 0x827B, - 13120: 0x827C, - 13121: 0x8280, - 13122: 0x8281, - 13123: 0x8283, - 13124: 0x8285, - 13125: 0x8286, - 13126: 0x8287, - 13127: 0x8289, - 13128: 0x828C, - 13129: 0x8290, - 13130: 0x8293, - 13131: 0x8294, - 13132: 0x8295, - 13133: 0x8296, - 13134: 0x829A, - 13135: 0x829B, - 13136: 0x829E, - 13137: 0x82A0, - 13138: 0x82A2, - 13139: 0x82A3, - 13140: 0x82A7, - 13141: 0x82B2, - 13142: 0x82B5, - 13143: 0x82B6, - 13144: 0x82BA, - 13145: 0x82BB, - 13146: 0x82BC, - 13147: 0x82BF, - 13148: 0x82C0, - 13149: 0x82C2, - 13150: 0x82C3, - 13151: 0x82C5, - 13152: 0x82C6, - 13153: 0x82C9, - 13154: 0x82D0, - 13155: 0x82D6, - 13156: 0x82D9, - 13157: 0x82DA, - 13158: 0x82DD, - 13159: 0x82E2, - 13160: 0x82E7, - 13161: 0x82E8, - 13162: 0x82E9, - 13163: 0x82EA, - 13164: 0x82EC, - 13165: 0x82ED, - 13166: 0x82EE, - 13167: 0x82F0, - 13168: 0x82F2, - 13169: 0x82F3, - 13170: 0x82F5, - 13171: 0x82F6, - 13172: 0x82F8, - 13173: 0x82FA, - 13174: 0x82FC, - 13175: 0x82FD, - 13176: 0x82FE, - 13177: 0x82FF, - 13178: 0x8300, - 13179: 0x830A, - 13180: 0x830B, - 13181: 0x830D, - 13182: 0x8310, - 13183: 0x8312, - 13184: 0x8313, - 13185: 0x8316, - 13186: 0x8318, - 13187: 0x8319, - 13188: 0x831D, - 13189: 0x831E, - 13190: 0x831F, - 13191: 0x8320, - 13192: 0x8321, - 13193: 0x8322, - 13194: 0x8323, - 13195: 0x8324, - 13196: 0x8325, - 13197: 0x8326, - 13198: 0x8329, - 13199: 0x832A, - 13200: 0x832E, - 13201: 0x8330, - 13202: 0x8332, - 13203: 0x8337, - 13204: 0x833B, - 13205: 0x833D, - 13206: 0x5564, - 13207: 0x813E, - 13208: 0x75B2, - 13209: 0x76AE, - 13210: 0x5339, - 13211: 0x75DE, - 13212: 0x50FB, - 13213: 0x5C41, - 13214: 0x8B6C, - 13215: 0x7BC7, - 13216: 0x504F, - 13217: 0x7247, - 13218: 0x9A97, - 13219: 0x98D8, - 13220: 0x6F02, - 13221: 0x74E2, - 13222: 0x7968, - 13223: 0x6487, - 13224: 0x77A5, - 13225: 0x62FC, - 13226: 0x9891, - 13227: 0x8D2B, - 13228: 0x54C1, - 13229: 0x8058, - 13230: 0x4E52, - 13231: 0x576A, - 13232: 0x82F9, - 13233: 0x840D, - 13234: 0x5E73, - 13235: 0x51ED, - 13236: 0x74F6, - 13237: 0x8BC4, - 13238: 0x5C4F, - 13239: 0x5761, - 13240: 0x6CFC, - 13241: 0x9887, - 13242: 0x5A46, - 13243: 0x7834, - 13244: 0x9B44, - 13245: 0x8FEB, - 13246: 0x7C95, - 13247: 0x5256, - 13248: 0x6251, - 13249: 0x94FA, - 13250: 0x4EC6, - 13251: 0x8386, - 13252: 0x8461, - 13253: 0x83E9, - 13254: 0x84B2, - 13255: 0x57D4, - 13256: 0x6734, - 13257: 0x5703, - 13258: 0x666E, - 13259: 0x6D66, - 13260: 0x8C31, - 13261: 0x66DD, - 13262: 0x7011, - 13263: 0x671F, - 13264: 0x6B3A, - 13265: 0x6816, - 13266: 0x621A, - 13267: 0x59BB, - 13268: 0x4E03, - 13269: 0x51C4, - 13270: 0x6F06, - 13271: 0x67D2, - 13272: 0x6C8F, - 13273: 0x5176, - 13274: 0x68CB, - 13275: 0x5947, - 13276: 0x6B67, - 13277: 0x7566, - 13278: 0x5D0E, - 13279: 0x8110, - 13280: 0x9F50, - 13281: 0x65D7, - 13282: 0x7948, - 13283: 0x7941, - 13284: 0x9A91, - 13285: 0x8D77, - 13286: 0x5C82, - 13287: 0x4E5E, - 13288: 0x4F01, - 13289: 0x542F, - 13290: 0x5951, - 13291: 0x780C, - 13292: 0x5668, - 13293: 0x6C14, - 13294: 0x8FC4, - 13295: 0x5F03, - 13296: 0x6C7D, - 13297: 0x6CE3, - 13298: 0x8BAB, - 13299: 0x6390, - 13300: 0x833E, - 13301: 0x833F, - 13302: 0x8341, - 13303: 0x8342, - 13304: 0x8344, - 13305: 0x8345, - 13306: 0x8348, - 13307: 0x834A, - 13308: 0x834B, - 13309: 0x834C, - 13310: 0x834D, - 13311: 0x834E, - 13312: 0x8353, - 13313: 0x8355, - 13314: 0x8356, - 13315: 0x8357, - 13316: 0x8358, - 13317: 0x8359, - 13318: 0x835D, - 13319: 0x8362, - 13320: 0x8370, - 13321: 0x8371, - 13322: 0x8372, - 13323: 0x8373, - 13324: 0x8374, - 13325: 0x8375, - 13326: 0x8376, - 13327: 0x8379, - 13328: 0x837A, - 13329: 0x837E, - 13330: 0x837F, - 13331: 0x8380, - 13332: 0x8381, - 13333: 0x8382, - 13334: 0x8383, - 13335: 0x8384, - 13336: 0x8387, - 13337: 0x8388, - 13338: 0x838A, - 13339: 0x838B, - 13340: 0x838C, - 13341: 0x838D, - 13342: 0x838F, - 13343: 0x8390, - 13344: 0x8391, - 13345: 0x8394, - 13346: 0x8395, - 13347: 0x8396, - 13348: 0x8397, - 13349: 0x8399, - 13350: 0x839A, - 13351: 0x839D, - 13352: 0x839F, - 13353: 0x83A1, - 13354: 0x83A2, - 13355: 0x83A3, - 13356: 0x83A4, - 13357: 0x83A5, - 13358: 0x83A6, - 13359: 0x83A7, - 13360: 0x83AC, - 13361: 0x83AD, - 13362: 0x83AE, - 13363: 0x83AF, - 13364: 0x83B5, - 13365: 0x83BB, - 13366: 0x83BE, - 13367: 0x83BF, - 13368: 0x83C2, - 13369: 0x83C3, - 13370: 0x83C4, - 13371: 0x83C6, - 13372: 0x83C8, - 13373: 0x83C9, - 13374: 0x83CB, - 13375: 0x83CD, - 13376: 0x83CE, - 13377: 0x83D0, - 13378: 0x83D1, - 13379: 0x83D2, - 13380: 0x83D3, - 13381: 0x83D5, - 13382: 0x83D7, - 13383: 0x83D9, - 13384: 0x83DA, - 13385: 0x83DB, - 13386: 0x83DE, - 13387: 0x83E2, - 13388: 0x83E3, - 13389: 0x83E4, - 13390: 0x83E6, - 13391: 0x83E7, - 13392: 0x83E8, - 13393: 0x83EB, - 13394: 0x83EC, - 13395: 0x83ED, - 13396: 0x6070, - 13397: 0x6D3D, - 13398: 0x7275, - 13399: 0x6266, - 13400: 0x948E, - 13401: 0x94C5, - 13402: 0x5343, - 13403: 0x8FC1, - 13404: 0x7B7E, - 13405: 0x4EDF, - 13406: 0x8C26, - 13407: 0x4E7E, - 13408: 0x9ED4, - 13409: 0x94B1, - 13410: 0x94B3, - 13411: 0x524D, - 13412: 0x6F5C, - 13413: 0x9063, - 13414: 0x6D45, - 13415: 0x8C34, - 13416: 0x5811, - 13417: 0x5D4C, - 13418: 0x6B20, - 13419: 0x6B49, - 13420: 0x67AA, - 13421: 0x545B, - 13422: 0x8154, - 13423: 0x7F8C, - 13424: 0x5899, - 13425: 0x8537, - 13426: 0x5F3A, - 13427: 0x62A2, - 13428: 0x6A47, - 13429: 0x9539, - 13430: 0x6572, - 13431: 0x6084, - 13432: 0x6865, - 13433: 0x77A7, - 13434: 0x4E54, - 13435: 0x4FA8, - 13436: 0x5DE7, - 13437: 0x9798, - 13438: 0x64AC, - 13439: 0x7FD8, - 13440: 0x5CED, - 13441: 0x4FCF, - 13442: 0x7A8D, - 13443: 0x5207, - 13444: 0x8304, - 13445: 0x4E14, - 13446: 0x602F, - 13447: 0x7A83, - 13448: 0x94A6, - 13449: 0x4FB5, - 13450: 0x4EB2, - 13451: 0x79E6, - 13452: 0x7434, - 13453: 0x52E4, - 13454: 0x82B9, - 13455: 0x64D2, - 13456: 0x79BD, - 13457: 0x5BDD, - 13458: 0x6C81, - 13459: 0x9752, - 13460: 0x8F7B, - 13461: 0x6C22, - 13462: 0x503E, - 13463: 0x537F, - 13464: 0x6E05, - 13465: 0x64CE, - 13466: 0x6674, - 13467: 0x6C30, - 13468: 0x60C5, - 13469: 0x9877, - 13470: 0x8BF7, - 13471: 0x5E86, - 13472: 0x743C, - 13473: 0x7A77, - 13474: 0x79CB, - 13475: 0x4E18, - 13476: 0x90B1, - 13477: 0x7403, - 13478: 0x6C42, - 13479: 0x56DA, - 13480: 0x914B, - 13481: 0x6CC5, - 13482: 0x8D8B, - 13483: 0x533A, - 13484: 0x86C6, - 13485: 0x66F2, - 13486: 0x8EAF, - 13487: 0x5C48, - 13488: 0x9A71, - 13489: 0x6E20, - 13490: 0x83EE, - 13491: 0x83EF, - 13492: 0x83F3, - 13493: 0x83F4, - 13494: 0x83F5, - 13495: 0x83F6, - 13496: 0x83F7, - 13497: 0x83FA, - 13498: 0x83FB, - 13499: 0x83FC, - 13500: 0x83FE, - 13501: 0x83FF, - 13502: 0x8400, - 13503: 0x8402, - 13504: 0x8405, - 13505: 0x8407, - 13506: 0x8408, - 13507: 0x8409, - 13508: 0x840A, - 13509: 0x8410, - 13510: 0x8412, - 13511: 0x8413, - 13512: 0x8414, - 13513: 0x8415, - 13514: 0x8416, - 13515: 0x8417, - 13516: 0x8419, - 13517: 0x841A, - 13518: 0x841B, - 13519: 0x841E, - 13520: 0x841F, - 13521: 0x8420, - 13522: 0x8421, - 13523: 0x8422, - 13524: 0x8423, - 13525: 0x8429, - 13526: 0x842A, - 13527: 0x842B, - 13528: 0x842C, - 13529: 0x842D, - 13530: 0x842E, - 13531: 0x842F, - 13532: 0x8430, - 13533: 0x8432, - 13534: 0x8433, - 13535: 0x8434, - 13536: 0x8435, - 13537: 0x8436, - 13538: 0x8437, - 13539: 0x8439, - 13540: 0x843A, - 13541: 0x843B, - 13542: 0x843E, - 13543: 0x843F, - 13544: 0x8440, - 13545: 0x8441, - 13546: 0x8442, - 13547: 0x8443, - 13548: 0x8444, - 13549: 0x8445, - 13550: 0x8447, - 13551: 0x8448, - 13552: 0x8449, - 13553: 0x844A, - 13554: 0x844B, - 13555: 0x844C, - 13556: 0x844D, - 13557: 0x844E, - 13558: 0x844F, - 13559: 0x8450, - 13560: 0x8452, - 13561: 0x8453, - 13562: 0x8454, - 13563: 0x8455, - 13564: 0x8456, - 13565: 0x8458, - 13566: 0x845D, - 13567: 0x845E, - 13568: 0x845F, - 13569: 0x8460, - 13570: 0x8462, - 13571: 0x8464, - 13572: 0x8465, - 13573: 0x8466, - 13574: 0x8467, - 13575: 0x8468, - 13576: 0x846A, - 13577: 0x846E, - 13578: 0x846F, - 13579: 0x8470, - 13580: 0x8472, - 13581: 0x8474, - 13582: 0x8477, - 13583: 0x8479, - 13584: 0x847B, - 13585: 0x847C, - 13586: 0x53D6, - 13587: 0x5A36, - 13588: 0x9F8B, - 13589: 0x8DA3, - 13590: 0x53BB, - 13591: 0x5708, - 13592: 0x98A7, - 13593: 0x6743, - 13594: 0x919B, - 13595: 0x6CC9, - 13596: 0x5168, - 13597: 0x75CA, - 13598: 0x62F3, - 13599: 0x72AC, - 13600: 0x5238, - 13601: 0x529D, - 13602: 0x7F3A, - 13603: 0x7094, - 13604: 0x7638, - 13605: 0x5374, - 13606: 0x9E4A, - 13607: 0x69B7, - 13608: 0x786E, - 13609: 0x96C0, - 13610: 0x88D9, - 13611: 0x7FA4, - 13612: 0x7136, - 13613: 0x71C3, - 13614: 0x5189, - 13615: 0x67D3, - 13616: 0x74E4, - 13617: 0x58E4, - 13618: 0x6518, - 13619: 0x56B7, - 13620: 0x8BA9, - 13621: 0x9976, - 13622: 0x6270, - 13623: 0x7ED5, - 13624: 0x60F9, - 13625: 0x70ED, - 13626: 0x58EC, - 13627: 0x4EC1, - 13628: 0x4EBA, - 13629: 0x5FCD, - 13630: 0x97E7, - 13631: 0x4EFB, - 13632: 0x8BA4, - 13633: 0x5203, - 13634: 0x598A, - 13635: 0x7EAB, - 13636: 0x6254, - 13637: 0x4ECD, - 13638: 0x65E5, - 13639: 0x620E, - 13640: 0x8338, - 13641: 0x84C9, - 13642: 0x8363, - 13643: 0x878D, - 13644: 0x7194, - 13645: 0x6EB6, - 13646: 0x5BB9, - 13647: 0x7ED2, - 13648: 0x5197, - 13649: 0x63C9, - 13650: 0x67D4, - 13651: 0x8089, - 13652: 0x8339, - 13653: 0x8815, - 13654: 0x5112, - 13655: 0x5B7A, - 13656: 0x5982, - 13657: 0x8FB1, - 13658: 0x4E73, - 13659: 0x6C5D, - 13660: 0x5165, - 13661: 0x8925, - 13662: 0x8F6F, - 13663: 0x962E, - 13664: 0x854A, - 13665: 0x745E, - 13666: 0x9510, - 13667: 0x95F0, - 13668: 0x6DA6, - 13669: 0x82E5, - 13670: 0x5F31, - 13671: 0x6492, - 13672: 0x6D12, - 13673: 0x8428, - 13674: 0x816E, - 13675: 0x9CC3, - 13676: 0x585E, - 13677: 0x8D5B, - 13678: 0x4E09, - 13679: 0x53C1, - 13680: 0x847D, - 13681: 0x847E, - 13682: 0x847F, - 13683: 0x8480, - 13684: 0x8481, - 13685: 0x8483, - 13686: 0x8484, - 13687: 0x8485, - 13688: 0x8486, - 13689: 0x848A, - 13690: 0x848D, - 13691: 0x848F, - 13692: 0x8490, - 13693: 0x8491, - 13694: 0x8492, - 13695: 0x8493, - 13696: 0x8494, - 13697: 0x8495, - 13698: 0x8496, - 13699: 0x8498, - 13700: 0x849A, - 13701: 0x849B, - 13702: 0x849D, - 13703: 0x849E, - 13704: 0x849F, - 13705: 0x84A0, - 13706: 0x84A2, - 13707: 0x84A3, - 13708: 0x84A4, - 13709: 0x84A5, - 13710: 0x84A6, - 13711: 0x84A7, - 13712: 0x84A8, - 13713: 0x84A9, - 13714: 0x84AA, - 13715: 0x84AB, - 13716: 0x84AC, - 13717: 0x84AD, - 13718: 0x84AE, - 13719: 0x84B0, - 13720: 0x84B1, - 13721: 0x84B3, - 13722: 0x84B5, - 13723: 0x84B6, - 13724: 0x84B7, - 13725: 0x84BB, - 13726: 0x84BC, - 13727: 0x84BE, - 13728: 0x84C0, - 13729: 0x84C2, - 13730: 0x84C3, - 13731: 0x84C5, - 13732: 0x84C6, - 13733: 0x84C7, - 13734: 0x84C8, - 13735: 0x84CB, - 13736: 0x84CC, - 13737: 0x84CE, - 13738: 0x84CF, - 13739: 0x84D2, - 13740: 0x84D4, - 13741: 0x84D5, - 13742: 0x84D7, - 13743: 0x84D8, - 13744: 0x84D9, - 13745: 0x84DA, - 13746: 0x84DB, - 13747: 0x84DC, - 13748: 0x84DE, - 13749: 0x84E1, - 13750: 0x84E2, - 13751: 0x84E4, - 13752: 0x84E7, - 13753: 0x84E8, - 13754: 0x84E9, - 13755: 0x84EA, - 13756: 0x84EB, - 13757: 0x84ED, - 13758: 0x84EE, - 13759: 0x84EF, - 13760: 0x84F1, - 13761: 0x84F2, - 13762: 0x84F3, - 13763: 0x84F4, - 13764: 0x84F5, - 13765: 0x84F6, - 13766: 0x84F7, - 13767: 0x84F8, - 13768: 0x84F9, - 13769: 0x84FA, - 13770: 0x84FB, - 13771: 0x84FD, - 13772: 0x84FE, - 13773: 0x8500, - 13774: 0x8501, - 13775: 0x8502, - 13776: 0x4F1E, - 13777: 0x6563, - 13778: 0x6851, - 13779: 0x55D3, - 13780: 0x4E27, - 13781: 0x6414, - 13782: 0x9A9A, - 13783: 0x626B, - 13784: 0x5AC2, - 13785: 0x745F, - 13786: 0x8272, - 13787: 0x6DA9, - 13788: 0x68EE, - 13789: 0x50E7, - 13790: 0x838E, - 13791: 0x7802, - 13792: 0x6740, - 13793: 0x5239, - 13794: 0x6C99, - 13795: 0x7EB1, - 13796: 0x50BB, - 13797: 0x5565, - 13798: 0x715E, - 13799: 0x7B5B, - 13800: 0x6652, - 13801: 0x73CA, - 13802: 0x82EB, - 13803: 0x6749, - 13804: 0x5C71, - 13805: 0x5220, - 13806: 0x717D, - 13807: 0x886B, - 13808: 0x95EA, - 13809: 0x9655, - 13810: 0x64C5, - 13811: 0x8D61, - 13812: 0x81B3, - 13813: 0x5584, - 13814: 0x6C55, - 13815: 0x6247, - 13816: 0x7F2E, - 13817: 0x5892, - 13818: 0x4F24, - 13819: 0x5546, - 13820: 0x8D4F, - 13821: 0x664C, - 13822: 0x4E0A, - 13823: 0x5C1A, - 13824: 0x88F3, - 13825: 0x68A2, - 13826: 0x634E, - 13827: 0x7A0D, - 13828: 0x70E7, - 13829: 0x828D, - 13830: 0x52FA, - 13831: 0x97F6, - 13832: 0x5C11, - 13833: 0x54E8, - 13834: 0x90B5, - 13835: 0x7ECD, - 13836: 0x5962, - 13837: 0x8D4A, - 13838: 0x86C7, - 13839: 0x820C, - 13840: 0x820D, - 13841: 0x8D66, - 13842: 0x6444, - 13843: 0x5C04, - 13844: 0x6151, - 13845: 0x6D89, - 13846: 0x793E, - 13847: 0x8BBE, - 13848: 0x7837, - 13849: 0x7533, - 13850: 0x547B, - 13851: 0x4F38, - 13852: 0x8EAB, - 13853: 0x6DF1, - 13854: 0x5A20, - 13855: 0x7EC5, - 13856: 0x795E, - 13857: 0x6C88, - 13858: 0x5BA1, - 13859: 0x5A76, - 13860: 0x751A, - 13861: 0x80BE, - 13862: 0x614E, - 13863: 0x6E17, - 13864: 0x58F0, - 13865: 0x751F, - 13866: 0x7525, - 13867: 0x7272, - 13868: 0x5347, - 13869: 0x7EF3, - 13870: 0x8503, - 13871: 0x8504, - 13872: 0x8505, - 13873: 0x8506, - 13874: 0x8507, - 13875: 0x8508, - 13876: 0x8509, - 13877: 0x850A, - 13878: 0x850B, - 13879: 0x850D, - 13880: 0x850E, - 13881: 0x850F, - 13882: 0x8510, - 13883: 0x8512, - 13884: 0x8514, - 13885: 0x8515, - 13886: 0x8516, - 13887: 0x8518, - 13888: 0x8519, - 13889: 0x851B, - 13890: 0x851C, - 13891: 0x851D, - 13892: 0x851E, - 13893: 0x8520, - 13894: 0x8522, - 13895: 0x8523, - 13896: 0x8524, - 13897: 0x8525, - 13898: 0x8526, - 13899: 0x8527, - 13900: 0x8528, - 13901: 0x8529, - 13902: 0x852A, - 13903: 0x852D, - 13904: 0x852E, - 13905: 0x852F, - 13906: 0x8530, - 13907: 0x8531, - 13908: 0x8532, - 13909: 0x8533, - 13910: 0x8534, - 13911: 0x8535, - 13912: 0x8536, - 13913: 0x853E, - 13914: 0x853F, - 13915: 0x8540, - 13916: 0x8541, - 13917: 0x8542, - 13918: 0x8544, - 13919: 0x8545, - 13920: 0x8546, - 13921: 0x8547, - 13922: 0x854B, - 13923: 0x854C, - 13924: 0x854D, - 13925: 0x854E, - 13926: 0x854F, - 13927: 0x8550, - 13928: 0x8551, - 13929: 0x8552, - 13930: 0x8553, - 13931: 0x8554, - 13932: 0x8555, - 13933: 0x8557, - 13934: 0x8558, - 13935: 0x855A, - 13936: 0x855B, - 13937: 0x855C, - 13938: 0x855D, - 13939: 0x855F, - 13940: 0x8560, - 13941: 0x8561, - 13942: 0x8562, - 13943: 0x8563, - 13944: 0x8565, - 13945: 0x8566, - 13946: 0x8567, - 13947: 0x8569, - 13948: 0x856A, - 13949: 0x856B, - 13950: 0x856C, - 13951: 0x856D, - 13952: 0x856E, - 13953: 0x856F, - 13954: 0x8570, - 13955: 0x8571, - 13956: 0x8573, - 13957: 0x8575, - 13958: 0x8576, - 13959: 0x8577, - 13960: 0x8578, - 13961: 0x857C, - 13962: 0x857D, - 13963: 0x857F, - 13964: 0x8580, - 13965: 0x8581, - 13966: 0x7701, - 13967: 0x76DB, - 13968: 0x5269, - 13969: 0x80DC, - 13970: 0x5723, - 13971: 0x5E08, - 13972: 0x5931, - 13973: 0x72EE, - 13974: 0x65BD, - 13975: 0x6E7F, - 13976: 0x8BD7, - 13977: 0x5C38, - 13978: 0x8671, - 13979: 0x5341, - 13980: 0x77F3, - 13981: 0x62FE, - 13982: 0x65F6, - 13983: 0x4EC0, - 13984: 0x98DF, - 13985: 0x8680, - 13986: 0x5B9E, - 13987: 0x8BC6, - 13988: 0x53F2, - 13989: 0x77E2, - 13990: 0x4F7F, - 13991: 0x5C4E, - 13992: 0x9A76, - 13993: 0x59CB, - 13994: 0x5F0F, - 13995: 0x793A, - 13996: 0x58EB, - 13997: 0x4E16, - 13998: 0x67FF, - 13999: 0x4E8B, - 14000: 0x62ED, - 14001: 0x8A93, - 14002: 0x901D, - 14003: 0x52BF, - 14004: 0x662F, - 14005: 0x55DC, - 14006: 0x566C, - 14007: 0x9002, - 14008: 0x4ED5, - 14009: 0x4F8D, - 14010: 0x91CA, - 14011: 0x9970, - 14012: 0x6C0F, - 14013: 0x5E02, - 14014: 0x6043, - 14015: 0x5BA4, - 14016: 0x89C6, - 14017: 0x8BD5, - 14018: 0x6536, - 14019: 0x624B, - 14020: 0x9996, - 14021: 0x5B88, - 14022: 0x5BFF, - 14023: 0x6388, - 14024: 0x552E, - 14025: 0x53D7, - 14026: 0x7626, - 14027: 0x517D, - 14028: 0x852C, - 14029: 0x67A2, - 14030: 0x68B3, - 14031: 0x6B8A, - 14032: 0x6292, - 14033: 0x8F93, - 14034: 0x53D4, - 14035: 0x8212, - 14036: 0x6DD1, - 14037: 0x758F, - 14038: 0x4E66, - 14039: 0x8D4E, - 14040: 0x5B70, - 14041: 0x719F, - 14042: 0x85AF, - 14043: 0x6691, - 14044: 0x66D9, - 14045: 0x7F72, - 14046: 0x8700, - 14047: 0x9ECD, - 14048: 0x9F20, - 14049: 0x5C5E, - 14050: 0x672F, - 14051: 0x8FF0, - 14052: 0x6811, - 14053: 0x675F, - 14054: 0x620D, - 14055: 0x7AD6, - 14056: 0x5885, - 14057: 0x5EB6, - 14058: 0x6570, - 14059: 0x6F31, - 14060: 0x8582, - 14061: 0x8583, - 14062: 0x8586, - 14063: 0x8588, - 14064: 0x8589, - 14065: 0x858A, - 14066: 0x858B, - 14067: 0x858C, - 14068: 0x858D, - 14069: 0x858E, - 14070: 0x8590, - 14071: 0x8591, - 14072: 0x8592, - 14073: 0x8593, - 14074: 0x8594, - 14075: 0x8595, - 14076: 0x8596, - 14077: 0x8597, - 14078: 0x8598, - 14079: 0x8599, - 14080: 0x859A, - 14081: 0x859D, - 14082: 0x859E, - 14083: 0x859F, - 14084: 0x85A0, - 14085: 0x85A1, - 14086: 0x85A2, - 14087: 0x85A3, - 14088: 0x85A5, - 14089: 0x85A6, - 14090: 0x85A7, - 14091: 0x85A9, - 14092: 0x85AB, - 14093: 0x85AC, - 14094: 0x85AD, - 14095: 0x85B1, - 14096: 0x85B2, - 14097: 0x85B3, - 14098: 0x85B4, - 14099: 0x85B5, - 14100: 0x85B6, - 14101: 0x85B8, - 14102: 0x85BA, - 14103: 0x85BB, - 14104: 0x85BC, - 14105: 0x85BD, - 14106: 0x85BE, - 14107: 0x85BF, - 14108: 0x85C0, - 14109: 0x85C2, - 14110: 0x85C3, - 14111: 0x85C4, - 14112: 0x85C5, - 14113: 0x85C6, - 14114: 0x85C7, - 14115: 0x85C8, - 14116: 0x85CA, - 14117: 0x85CB, - 14118: 0x85CC, - 14119: 0x85CD, - 14120: 0x85CE, - 14121: 0x85D1, - 14122: 0x85D2, - 14123: 0x85D4, - 14124: 0x85D6, - 14125: 0x85D7, - 14126: 0x85D8, - 14127: 0x85D9, - 14128: 0x85DA, - 14129: 0x85DB, - 14130: 0x85DD, - 14131: 0x85DE, - 14132: 0x85DF, - 14133: 0x85E0, - 14134: 0x85E1, - 14135: 0x85E2, - 14136: 0x85E3, - 14137: 0x85E5, - 14138: 0x85E6, - 14139: 0x85E7, - 14140: 0x85E8, - 14141: 0x85EA, - 14142: 0x85EB, - 14143: 0x85EC, - 14144: 0x85ED, - 14145: 0x85EE, - 14146: 0x85EF, - 14147: 0x85F0, - 14148: 0x85F1, - 14149: 0x85F2, - 14150: 0x85F3, - 14151: 0x85F4, - 14152: 0x85F5, - 14153: 0x85F6, - 14154: 0x85F7, - 14155: 0x85F8, - 14156: 0x6055, - 14157: 0x5237, - 14158: 0x800D, - 14159: 0x6454, - 14160: 0x8870, - 14161: 0x7529, - 14162: 0x5E05, - 14163: 0x6813, - 14164: 0x62F4, - 14165: 0x971C, - 14166: 0x53CC, - 14167: 0x723D, - 14168: 0x8C01, - 14169: 0x6C34, - 14170: 0x7761, - 14171: 0x7A0E, - 14172: 0x542E, - 14173: 0x77AC, - 14174: 0x987A, - 14175: 0x821C, - 14176: 0x8BF4, - 14177: 0x7855, - 14178: 0x6714, - 14179: 0x70C1, - 14180: 0x65AF, - 14181: 0x6495, - 14182: 0x5636, - 14183: 0x601D, - 14184: 0x79C1, - 14185: 0x53F8, - 14186: 0x4E1D, - 14187: 0x6B7B, - 14188: 0x8086, - 14189: 0x5BFA, - 14190: 0x55E3, - 14191: 0x56DB, - 14192: 0x4F3A, - 14193: 0x4F3C, - 14194: 0x9972, - 14195: 0x5DF3, - 14196: 0x677E, - 14197: 0x8038, - 14198: 0x6002, - 14199: 0x9882, - 14200: 0x9001, - 14201: 0x5B8B, - 14202: 0x8BBC, - 14203: 0x8BF5, - 14204: 0x641C, - 14205: 0x8258, - 14206: 0x64DE, - 14207: 0x55FD, - 14208: 0x82CF, - 14209: 0x9165, - 14210: 0x4FD7, - 14211: 0x7D20, - 14212: 0x901F, - 14213: 0x7C9F, - 14214: 0x50F3, - 14215: 0x5851, - 14216: 0x6EAF, - 14217: 0x5BBF, - 14218: 0x8BC9, - 14219: 0x8083, - 14220: 0x9178, - 14221: 0x849C, - 14222: 0x7B97, - 14223: 0x867D, - 14224: 0x968B, - 14225: 0x968F, - 14226: 0x7EE5, - 14227: 0x9AD3, - 14228: 0x788E, - 14229: 0x5C81, - 14230: 0x7A57, - 14231: 0x9042, - 14232: 0x96A7, - 14233: 0x795F, - 14234: 0x5B59, - 14235: 0x635F, - 14236: 0x7B0B, - 14237: 0x84D1, - 14238: 0x68AD, - 14239: 0x5506, - 14240: 0x7F29, - 14241: 0x7410, - 14242: 0x7D22, - 14243: 0x9501, - 14244: 0x6240, - 14245: 0x584C, - 14246: 0x4ED6, - 14247: 0x5B83, - 14248: 0x5979, - 14249: 0x5854, - 14250: 0x85F9, - 14251: 0x85FA, - 14252: 0x85FC, - 14253: 0x85FD, - 14254: 0x85FE, - 14255: 0x8600, - 14256: 0x8601, - 14257: 0x8602, - 14258: 0x8603, - 14259: 0x8604, - 14260: 0x8606, - 14261: 0x8607, - 14262: 0x8608, - 14263: 0x8609, - 14264: 0x860A, - 14265: 0x860B, - 14266: 0x860C, - 14267: 0x860D, - 14268: 0x860E, - 14269: 0x860F, - 14270: 0x8610, - 14271: 0x8612, - 14272: 0x8613, - 14273: 0x8614, - 14274: 0x8615, - 14275: 0x8617, - 14276: 0x8618, - 14277: 0x8619, - 14278: 0x861A, - 14279: 0x861B, - 14280: 0x861C, - 14281: 0x861D, - 14282: 0x861E, - 14283: 0x861F, - 14284: 0x8620, - 14285: 0x8621, - 14286: 0x8622, - 14287: 0x8623, - 14288: 0x8624, - 14289: 0x8625, - 14290: 0x8626, - 14291: 0x8628, - 14292: 0x862A, - 14293: 0x862B, - 14294: 0x862C, - 14295: 0x862D, - 14296: 0x862E, - 14297: 0x862F, - 14298: 0x8630, - 14299: 0x8631, - 14300: 0x8632, - 14301: 0x8633, - 14302: 0x8634, - 14303: 0x8635, - 14304: 0x8636, - 14305: 0x8637, - 14306: 0x8639, - 14307: 0x863A, - 14308: 0x863B, - 14309: 0x863D, - 14310: 0x863E, - 14311: 0x863F, - 14312: 0x8640, - 14313: 0x8641, - 14314: 0x8642, - 14315: 0x8643, - 14316: 0x8644, - 14317: 0x8645, - 14318: 0x8646, - 14319: 0x8647, - 14320: 0x8648, - 14321: 0x8649, - 14322: 0x864A, - 14323: 0x864B, - 14324: 0x864C, - 14325: 0x8652, - 14326: 0x8653, - 14327: 0x8655, - 14328: 0x8656, - 14329: 0x8657, - 14330: 0x8658, - 14331: 0x8659, - 14332: 0x865B, - 14333: 0x865C, - 14334: 0x865D, - 14335: 0x865F, - 14336: 0x8660, - 14337: 0x8661, - 14338: 0x8663, - 14339: 0x8664, - 14340: 0x8665, - 14341: 0x8666, - 14342: 0x8667, - 14343: 0x8668, - 14344: 0x8669, - 14345: 0x866A, - 14346: 0x736D, - 14347: 0x631E, - 14348: 0x8E4B, - 14349: 0x8E0F, - 14350: 0x80CE, - 14351: 0x82D4, - 14352: 0x62AC, - 14353: 0x53F0, - 14354: 0x6CF0, - 14355: 0x915E, - 14356: 0x592A, - 14357: 0x6001, - 14358: 0x6C70, - 14359: 0x574D, - 14360: 0x644A, - 14361: 0x8D2A, - 14362: 0x762B, - 14363: 0x6EE9, - 14364: 0x575B, - 14365: 0x6A80, - 14366: 0x75F0, - 14367: 0x6F6D, - 14368: 0x8C2D, - 14369: 0x8C08, - 14370: 0x5766, - 14371: 0x6BEF, - 14372: 0x8892, - 14373: 0x78B3, - 14374: 0x63A2, - 14375: 0x53F9, - 14376: 0x70AD, - 14377: 0x6C64, - 14378: 0x5858, - 14379: 0x642A, - 14380: 0x5802, - 14381: 0x68E0, - 14382: 0x819B, - 14383: 0x5510, - 14384: 0x7CD6, - 14385: 0x5018, - 14386: 0x8EBA, - 14387: 0x6DCC, - 14388: 0x8D9F, - 14389: 0x70EB, - 14390: 0x638F, - 14391: 0x6D9B, - 14392: 0x6ED4, - 14393: 0x7EE6, - 14394: 0x8404, - 14395: 0x6843, - 14396: 0x9003, - 14397: 0x6DD8, - 14398: 0x9676, - 14399: 0x8BA8, - 14400: 0x5957, - 14401: 0x7279, - 14402: 0x85E4, - 14403: 0x817E, - 14404: 0x75BC, - 14405: 0x8A8A, - 14406: 0x68AF, - 14407: 0x5254, - 14408: 0x8E22, - 14409: 0x9511, - 14410: 0x63D0, - 14411: 0x9898, - 14412: 0x8E44, - 14413: 0x557C, - 14414: 0x4F53, - 14415: 0x66FF, - 14416: 0x568F, - 14417: 0x60D5, - 14418: 0x6D95, - 14419: 0x5243, - 14420: 0x5C49, - 14421: 0x5929, - 14422: 0x6DFB, - 14423: 0x586B, - 14424: 0x7530, - 14425: 0x751C, - 14426: 0x606C, - 14427: 0x8214, - 14428: 0x8146, - 14429: 0x6311, - 14430: 0x6761, - 14431: 0x8FE2, - 14432: 0x773A, - 14433: 0x8DF3, - 14434: 0x8D34, - 14435: 0x94C1, - 14436: 0x5E16, - 14437: 0x5385, - 14438: 0x542C, - 14439: 0x70C3, - 14440: 0x866D, - 14441: 0x866F, - 14442: 0x8670, - 14443: 0x8672, - 14444: 0x8673, - 14445: 0x8674, - 14446: 0x8675, - 14447: 0x8676, - 14448: 0x8677, - 14449: 0x8678, - 14450: 0x8683, - 14451: 0x8684, - 14452: 0x8685, - 14453: 0x8686, - 14454: 0x8687, - 14455: 0x8688, - 14456: 0x8689, - 14457: 0x868E, - 14458: 0x868F, - 14459: 0x8690, - 14460: 0x8691, - 14461: 0x8692, - 14462: 0x8694, - 14463: 0x8696, - 14464: 0x8697, - 14465: 0x8698, - 14466: 0x8699, - 14467: 0x869A, - 14468: 0x869B, - 14469: 0x869E, - 14470: 0x869F, - 14471: 0x86A0, - 14472: 0x86A1, - 14473: 0x86A2, - 14474: 0x86A5, - 14475: 0x86A6, - 14476: 0x86AB, - 14477: 0x86AD, - 14478: 0x86AE, - 14479: 0x86B2, - 14480: 0x86B3, - 14481: 0x86B7, - 14482: 0x86B8, - 14483: 0x86B9, - 14484: 0x86BB, - 14485: 0x86BC, - 14486: 0x86BD, - 14487: 0x86BE, - 14488: 0x86BF, - 14489: 0x86C1, - 14490: 0x86C2, - 14491: 0x86C3, - 14492: 0x86C5, - 14493: 0x86C8, - 14494: 0x86CC, - 14495: 0x86CD, - 14496: 0x86D2, - 14497: 0x86D3, - 14498: 0x86D5, - 14499: 0x86D6, - 14500: 0x86D7, - 14501: 0x86DA, - 14502: 0x86DC, - 14503: 0x86DD, - 14504: 0x86E0, - 14505: 0x86E1, - 14506: 0x86E2, - 14507: 0x86E3, - 14508: 0x86E5, - 14509: 0x86E6, - 14510: 0x86E7, - 14511: 0x86E8, - 14512: 0x86EA, - 14513: 0x86EB, - 14514: 0x86EC, - 14515: 0x86EF, - 14516: 0x86F5, - 14517: 0x86F6, - 14518: 0x86F7, - 14519: 0x86FA, - 14520: 0x86FB, - 14521: 0x86FC, - 14522: 0x86FD, - 14523: 0x86FF, - 14524: 0x8701, - 14525: 0x8704, - 14526: 0x8705, - 14527: 0x8706, - 14528: 0x870B, - 14529: 0x870C, - 14530: 0x870E, - 14531: 0x870F, - 14532: 0x8710, - 14533: 0x8711, - 14534: 0x8714, - 14535: 0x8716, - 14536: 0x6C40, - 14537: 0x5EF7, - 14538: 0x505C, - 14539: 0x4EAD, - 14540: 0x5EAD, - 14541: 0x633A, - 14542: 0x8247, - 14543: 0x901A, - 14544: 0x6850, - 14545: 0x916E, - 14546: 0x77B3, - 14547: 0x540C, - 14548: 0x94DC, - 14549: 0x5F64, - 14550: 0x7AE5, - 14551: 0x6876, - 14552: 0x6345, - 14553: 0x7B52, - 14554: 0x7EDF, - 14555: 0x75DB, - 14556: 0x5077, - 14557: 0x6295, - 14558: 0x5934, - 14559: 0x900F, - 14560: 0x51F8, - 14561: 0x79C3, - 14562: 0x7A81, - 14563: 0x56FE, - 14564: 0x5F92, - 14565: 0x9014, - 14566: 0x6D82, - 14567: 0x5C60, - 14568: 0x571F, - 14569: 0x5410, - 14570: 0x5154, - 14571: 0x6E4D, - 14572: 0x56E2, - 14573: 0x63A8, - 14574: 0x9893, - 14575: 0x817F, - 14576: 0x8715, - 14577: 0x892A, - 14578: 0x9000, - 14579: 0x541E, - 14580: 0x5C6F, - 14581: 0x81C0, - 14582: 0x62D6, - 14583: 0x6258, - 14584: 0x8131, - 14585: 0x9E35, - 14586: 0x9640, - 14587: 0x9A6E, - 14588: 0x9A7C, - 14589: 0x692D, - 14590: 0x59A5, - 14591: 0x62D3, - 14592: 0x553E, - 14593: 0x6316, - 14594: 0x54C7, - 14595: 0x86D9, - 14596: 0x6D3C, - 14597: 0x5A03, - 14598: 0x74E6, - 14599: 0x889C, - 14600: 0x6B6A, - 14601: 0x5916, - 14602: 0x8C4C, - 14603: 0x5F2F, - 14604: 0x6E7E, - 14605: 0x73A9, - 14606: 0x987D, - 14607: 0x4E38, - 14608: 0x70F7, - 14609: 0x5B8C, - 14610: 0x7897, - 14611: 0x633D, - 14612: 0x665A, - 14613: 0x7696, - 14614: 0x60CB, - 14615: 0x5B9B, - 14616: 0x5A49, - 14617: 0x4E07, - 14618: 0x8155, - 14619: 0x6C6A, - 14620: 0x738B, - 14621: 0x4EA1, - 14622: 0x6789, - 14623: 0x7F51, - 14624: 0x5F80, - 14625: 0x65FA, - 14626: 0x671B, - 14627: 0x5FD8, - 14628: 0x5984, - 14629: 0x5A01, - 14630: 0x8719, - 14631: 0x871B, - 14632: 0x871D, - 14633: 0x871F, - 14634: 0x8720, - 14635: 0x8724, - 14636: 0x8726, - 14637: 0x8727, - 14638: 0x8728, - 14639: 0x872A, - 14640: 0x872B, - 14641: 0x872C, - 14642: 0x872D, - 14643: 0x872F, - 14644: 0x8730, - 14645: 0x8732, - 14646: 0x8733, - 14647: 0x8735, - 14648: 0x8736, - 14649: 0x8738, - 14650: 0x8739, - 14651: 0x873A, - 14652: 0x873C, - 14653: 0x873D, - 14654: 0x8740, - 14655: 0x8741, - 14656: 0x8742, - 14657: 0x8743, - 14658: 0x8744, - 14659: 0x8745, - 14660: 0x8746, - 14661: 0x874A, - 14662: 0x874B, - 14663: 0x874D, - 14664: 0x874F, - 14665: 0x8750, - 14666: 0x8751, - 14667: 0x8752, - 14668: 0x8754, - 14669: 0x8755, - 14670: 0x8756, - 14671: 0x8758, - 14672: 0x875A, - 14673: 0x875B, - 14674: 0x875C, - 14675: 0x875D, - 14676: 0x875E, - 14677: 0x875F, - 14678: 0x8761, - 14679: 0x8762, - 14680: 0x8766, - 14681: 0x8767, - 14682: 0x8768, - 14683: 0x8769, - 14684: 0x876A, - 14685: 0x876B, - 14686: 0x876C, - 14687: 0x876D, - 14688: 0x876F, - 14689: 0x8771, - 14690: 0x8772, - 14691: 0x8773, - 14692: 0x8775, - 14693: 0x8777, - 14694: 0x8778, - 14695: 0x8779, - 14696: 0x877A, - 14697: 0x877F, - 14698: 0x8780, - 14699: 0x8781, - 14700: 0x8784, - 14701: 0x8786, - 14702: 0x8787, - 14703: 0x8789, - 14704: 0x878A, - 14705: 0x878C, - 14706: 0x878E, - 14707: 0x878F, - 14708: 0x8790, - 14709: 0x8791, - 14710: 0x8792, - 14711: 0x8794, - 14712: 0x8795, - 14713: 0x8796, - 14714: 0x8798, - 14715: 0x8799, - 14716: 0x879A, - 14717: 0x879B, - 14718: 0x879C, - 14719: 0x879D, - 14720: 0x879E, - 14721: 0x87A0, - 14722: 0x87A1, - 14723: 0x87A2, - 14724: 0x87A3, - 14725: 0x87A4, - 14726: 0x5DCD, - 14727: 0x5FAE, - 14728: 0x5371, - 14729: 0x97E6, - 14730: 0x8FDD, - 14731: 0x6845, - 14732: 0x56F4, - 14733: 0x552F, - 14734: 0x60DF, - 14735: 0x4E3A, - 14736: 0x6F4D, - 14737: 0x7EF4, - 14738: 0x82C7, - 14739: 0x840E, - 14740: 0x59D4, - 14741: 0x4F1F, - 14742: 0x4F2A, - 14743: 0x5C3E, - 14744: 0x7EAC, - 14745: 0x672A, - 14746: 0x851A, - 14747: 0x5473, - 14748: 0x754F, - 14749: 0x80C3, - 14750: 0x5582, - 14751: 0x9B4F, - 14752: 0x4F4D, - 14753: 0x6E2D, - 14754: 0x8C13, - 14755: 0x5C09, - 14756: 0x6170, - 14757: 0x536B, - 14758: 0x761F, - 14759: 0x6E29, - 14760: 0x868A, - 14761: 0x6587, - 14762: 0x95FB, - 14763: 0x7EB9, - 14764: 0x543B, - 14765: 0x7A33, - 14766: 0x7D0A, - 14767: 0x95EE, - 14768: 0x55E1, - 14769: 0x7FC1, - 14770: 0x74EE, - 14771: 0x631D, - 14772: 0x8717, - 14773: 0x6DA1, - 14774: 0x7A9D, - 14775: 0x6211, - 14776: 0x65A1, - 14777: 0x5367, - 14778: 0x63E1, - 14779: 0x6C83, - 14780: 0x5DEB, - 14781: 0x545C, - 14782: 0x94A8, - 14783: 0x4E4C, - 14784: 0x6C61, - 14785: 0x8BEC, - 14786: 0x5C4B, - 14787: 0x65E0, - 14788: 0x829C, - 14789: 0x68A7, - 14790: 0x543E, - 14791: 0x5434, - 14792: 0x6BCB, - 14793: 0x6B66, - 14794: 0x4E94, - 14795: 0x6342, - 14796: 0x5348, - 14797: 0x821E, - 14798: 0x4F0D, - 14799: 0x4FAE, - 14800: 0x575E, - 14801: 0x620A, - 14802: 0x96FE, - 14803: 0x6664, - 14804: 0x7269, - 14805: 0x52FF, - 14806: 0x52A1, - 14807: 0x609F, - 14808: 0x8BEF, - 14809: 0x6614, - 14810: 0x7199, - 14811: 0x6790, - 14812: 0x897F, - 14813: 0x7852, - 14814: 0x77FD, - 14815: 0x6670, - 14816: 0x563B, - 14817: 0x5438, - 14818: 0x9521, - 14819: 0x727A, - 14820: 0x87A5, - 14821: 0x87A6, - 14822: 0x87A7, - 14823: 0x87A9, - 14824: 0x87AA, - 14825: 0x87AE, - 14826: 0x87B0, - 14827: 0x87B1, - 14828: 0x87B2, - 14829: 0x87B4, - 14830: 0x87B6, - 14831: 0x87B7, - 14832: 0x87B8, - 14833: 0x87B9, - 14834: 0x87BB, - 14835: 0x87BC, - 14836: 0x87BE, - 14837: 0x87BF, - 14838: 0x87C1, - 14839: 0x87C2, - 14840: 0x87C3, - 14841: 0x87C4, - 14842: 0x87C5, - 14843: 0x87C7, - 14844: 0x87C8, - 14845: 0x87C9, - 14846: 0x87CC, - 14847: 0x87CD, - 14848: 0x87CE, - 14849: 0x87CF, - 14850: 0x87D0, - 14851: 0x87D4, - 14852: 0x87D5, - 14853: 0x87D6, - 14854: 0x87D7, - 14855: 0x87D8, - 14856: 0x87D9, - 14857: 0x87DA, - 14858: 0x87DC, - 14859: 0x87DD, - 14860: 0x87DE, - 14861: 0x87DF, - 14862: 0x87E1, - 14863: 0x87E2, - 14864: 0x87E3, - 14865: 0x87E4, - 14866: 0x87E6, - 14867: 0x87E7, - 14868: 0x87E8, - 14869: 0x87E9, - 14870: 0x87EB, - 14871: 0x87EC, - 14872: 0x87ED, - 14873: 0x87EF, - 14874: 0x87F0, - 14875: 0x87F1, - 14876: 0x87F2, - 14877: 0x87F3, - 14878: 0x87F4, - 14879: 0x87F5, - 14880: 0x87F6, - 14881: 0x87F7, - 14882: 0x87F8, - 14883: 0x87FA, - 14884: 0x87FB, - 14885: 0x87FC, - 14886: 0x87FD, - 14887: 0x87FF, - 14888: 0x8800, - 14889: 0x8801, - 14890: 0x8802, - 14891: 0x8804, - 14892: 0x8805, - 14893: 0x8806, - 14894: 0x8807, - 14895: 0x8808, - 14896: 0x8809, - 14897: 0x880B, - 14898: 0x880C, - 14899: 0x880D, - 14900: 0x880E, - 14901: 0x880F, - 14902: 0x8810, - 14903: 0x8811, - 14904: 0x8812, - 14905: 0x8814, - 14906: 0x8817, - 14907: 0x8818, - 14908: 0x8819, - 14909: 0x881A, - 14910: 0x881C, - 14911: 0x881D, - 14912: 0x881E, - 14913: 0x881F, - 14914: 0x8820, - 14915: 0x8823, - 14916: 0x7A00, - 14917: 0x606F, - 14918: 0x5E0C, - 14919: 0x6089, - 14920: 0x819D, - 14921: 0x5915, - 14922: 0x60DC, - 14923: 0x7184, - 14924: 0x70EF, - 14925: 0x6EAA, - 14926: 0x6C50, - 14927: 0x7280, - 14928: 0x6A84, - 14929: 0x88AD, - 14930: 0x5E2D, - 14931: 0x4E60, - 14932: 0x5AB3, - 14933: 0x559C, - 14934: 0x94E3, - 14935: 0x6D17, - 14936: 0x7CFB, - 14937: 0x9699, - 14938: 0x620F, - 14939: 0x7EC6, - 14940: 0x778E, - 14941: 0x867E, - 14942: 0x5323, - 14943: 0x971E, - 14944: 0x8F96, - 14945: 0x6687, - 14946: 0x5CE1, - 14947: 0x4FA0, - 14948: 0x72ED, - 14949: 0x4E0B, - 14950: 0x53A6, - 14951: 0x590F, - 14952: 0x5413, - 14953: 0x6380, - 14954: 0x9528, - 14955: 0x5148, - 14956: 0x4ED9, - 14957: 0x9C9C, - 14958: 0x7EA4, - 14959: 0x54B8, - 14960: 0x8D24, - 14961: 0x8854, - 14962: 0x8237, - 14963: 0x95F2, - 14964: 0x6D8E, - 14965: 0x5F26, - 14966: 0x5ACC, - 14967: 0x663E, - 14968: 0x9669, - 14969: 0x73B0, - 14970: 0x732E, - 14971: 0x53BF, - 14972: 0x817A, - 14973: 0x9985, - 14974: 0x7FA1, - 14975: 0x5BAA, - 14976: 0x9677, - 14977: 0x9650, - 14978: 0x7EBF, - 14979: 0x76F8, - 14980: 0x53A2, - 14981: 0x9576, - 14982: 0x9999, - 14983: 0x7BB1, - 14984: 0x8944, - 14985: 0x6E58, - 14986: 0x4E61, - 14987: 0x7FD4, - 14988: 0x7965, - 14989: 0x8BE6, - 14990: 0x60F3, - 14991: 0x54CD, - 14992: 0x4EAB, - 14993: 0x9879, - 14994: 0x5DF7, - 14995: 0x6A61, - 14996: 0x50CF, - 14997: 0x5411, - 14998: 0x8C61, - 14999: 0x8427, - 15000: 0x785D, - 15001: 0x9704, - 15002: 0x524A, - 15003: 0x54EE, - 15004: 0x56A3, - 15005: 0x9500, - 15006: 0x6D88, - 15007: 0x5BB5, - 15008: 0x6DC6, - 15009: 0x6653, - 15010: 0x8824, - 15011: 0x8825, - 15012: 0x8826, - 15013: 0x8827, - 15014: 0x8828, - 15015: 0x8829, - 15016: 0x882A, - 15017: 0x882B, - 15018: 0x882C, - 15019: 0x882D, - 15020: 0x882E, - 15021: 0x882F, - 15022: 0x8830, - 15023: 0x8831, - 15024: 0x8833, - 15025: 0x8834, - 15026: 0x8835, - 15027: 0x8836, - 15028: 0x8837, - 15029: 0x8838, - 15030: 0x883A, - 15031: 0x883B, - 15032: 0x883D, - 15033: 0x883E, - 15034: 0x883F, - 15035: 0x8841, - 15036: 0x8842, - 15037: 0x8843, - 15038: 0x8846, - 15039: 0x8847, - 15040: 0x8848, - 15041: 0x8849, - 15042: 0x884A, - 15043: 0x884B, - 15044: 0x884E, - 15045: 0x884F, - 15046: 0x8850, - 15047: 0x8851, - 15048: 0x8852, - 15049: 0x8853, - 15050: 0x8855, - 15051: 0x8856, - 15052: 0x8858, - 15053: 0x885A, - 15054: 0x885B, - 15055: 0x885C, - 15056: 0x885D, - 15057: 0x885E, - 15058: 0x885F, - 15059: 0x8860, - 15060: 0x8866, - 15061: 0x8867, - 15062: 0x886A, - 15063: 0x886D, - 15064: 0x886F, - 15065: 0x8871, - 15066: 0x8873, - 15067: 0x8874, - 15068: 0x8875, - 15069: 0x8876, - 15070: 0x8878, - 15071: 0x8879, - 15072: 0x887A, - 15073: 0x887B, - 15074: 0x887C, - 15075: 0x8880, - 15076: 0x8883, - 15077: 0x8886, - 15078: 0x8887, - 15079: 0x8889, - 15080: 0x888A, - 15081: 0x888C, - 15082: 0x888E, - 15083: 0x888F, - 15084: 0x8890, - 15085: 0x8891, - 15086: 0x8893, - 15087: 0x8894, - 15088: 0x8895, - 15089: 0x8897, - 15090: 0x8898, - 15091: 0x8899, - 15092: 0x889A, - 15093: 0x889B, - 15094: 0x889D, - 15095: 0x889E, - 15096: 0x889F, - 15097: 0x88A0, - 15098: 0x88A1, - 15099: 0x88A3, - 15100: 0x88A5, - 15101: 0x88A6, - 15102: 0x88A7, - 15103: 0x88A8, - 15104: 0x88A9, - 15105: 0x88AA, - 15106: 0x5C0F, - 15107: 0x5B5D, - 15108: 0x6821, - 15109: 0x8096, - 15110: 0x5578, - 15111: 0x7B11, - 15112: 0x6548, - 15113: 0x6954, - 15114: 0x4E9B, - 15115: 0x6B47, - 15116: 0x874E, - 15117: 0x978B, - 15118: 0x534F, - 15119: 0x631F, - 15120: 0x643A, - 15121: 0x90AA, - 15122: 0x659C, - 15123: 0x80C1, - 15124: 0x8C10, - 15125: 0x5199, - 15126: 0x68B0, - 15127: 0x5378, - 15128: 0x87F9, - 15129: 0x61C8, - 15130: 0x6CC4, - 15131: 0x6CFB, - 15132: 0x8C22, - 15133: 0x5C51, - 15134: 0x85AA, - 15135: 0x82AF, - 15136: 0x950C, - 15137: 0x6B23, - 15138: 0x8F9B, - 15139: 0x65B0, - 15140: 0x5FFB, - 15141: 0x5FC3, - 15142: 0x4FE1, - 15143: 0x8845, - 15144: 0x661F, - 15145: 0x8165, - 15146: 0x7329, - 15147: 0x60FA, - 15148: 0x5174, - 15149: 0x5211, - 15150: 0x578B, - 15151: 0x5F62, - 15152: 0x90A2, - 15153: 0x884C, - 15154: 0x9192, - 15155: 0x5E78, - 15156: 0x674F, - 15157: 0x6027, - 15158: 0x59D3, - 15159: 0x5144, - 15160: 0x51F6, - 15161: 0x80F8, - 15162: 0x5308, - 15163: 0x6C79, - 15164: 0x96C4, - 15165: 0x718A, - 15166: 0x4F11, - 15167: 0x4FEE, - 15168: 0x7F9E, - 15169: 0x673D, - 15170: 0x55C5, - 15171: 0x9508, - 15172: 0x79C0, - 15173: 0x8896, - 15174: 0x7EE3, - 15175: 0x589F, - 15176: 0x620C, - 15177: 0x9700, - 15178: 0x865A, - 15179: 0x5618, - 15180: 0x987B, - 15181: 0x5F90, - 15182: 0x8BB8, - 15183: 0x84C4, - 15184: 0x9157, - 15185: 0x53D9, - 15186: 0x65ED, - 15187: 0x5E8F, - 15188: 0x755C, - 15189: 0x6064, - 15190: 0x7D6E, - 15191: 0x5A7F, - 15192: 0x7EEA, - 15193: 0x7EED, - 15194: 0x8F69, - 15195: 0x55A7, - 15196: 0x5BA3, - 15197: 0x60AC, - 15198: 0x65CB, - 15199: 0x7384, - 15200: 0x88AC, - 15201: 0x88AE, - 15202: 0x88AF, - 15203: 0x88B0, - 15204: 0x88B2, - 15205: 0x88B3, - 15206: 0x88B4, - 15207: 0x88B5, - 15208: 0x88B6, - 15209: 0x88B8, - 15210: 0x88B9, - 15211: 0x88BA, - 15212: 0x88BB, - 15213: 0x88BD, - 15214: 0x88BE, - 15215: 0x88BF, - 15216: 0x88C0, - 15217: 0x88C3, - 15218: 0x88C4, - 15219: 0x88C7, - 15220: 0x88C8, - 15221: 0x88CA, - 15222: 0x88CB, - 15223: 0x88CC, - 15224: 0x88CD, - 15225: 0x88CF, - 15226: 0x88D0, - 15227: 0x88D1, - 15228: 0x88D3, - 15229: 0x88D6, - 15230: 0x88D7, - 15231: 0x88DA, - 15232: 0x88DB, - 15233: 0x88DC, - 15234: 0x88DD, - 15235: 0x88DE, - 15236: 0x88E0, - 15237: 0x88E1, - 15238: 0x88E6, - 15239: 0x88E7, - 15240: 0x88E9, - 15241: 0x88EA, - 15242: 0x88EB, - 15243: 0x88EC, - 15244: 0x88ED, - 15245: 0x88EE, - 15246: 0x88EF, - 15247: 0x88F2, - 15248: 0x88F5, - 15249: 0x88F6, - 15250: 0x88F7, - 15251: 0x88FA, - 15252: 0x88FB, - 15253: 0x88FD, - 15254: 0x88FF, - 15255: 0x8900, - 15256: 0x8901, - 15257: 0x8903, - 15258: 0x8904, - 15259: 0x8905, - 15260: 0x8906, - 15261: 0x8907, - 15262: 0x8908, - 15263: 0x8909, - 15264: 0x890B, - 15265: 0x890C, - 15266: 0x890D, - 15267: 0x890E, - 15268: 0x890F, - 15269: 0x8911, - 15270: 0x8914, - 15271: 0x8915, - 15272: 0x8916, - 15273: 0x8917, - 15274: 0x8918, - 15275: 0x891C, - 15276: 0x891D, - 15277: 0x891E, - 15278: 0x891F, - 15279: 0x8920, - 15280: 0x8922, - 15281: 0x8923, - 15282: 0x8924, - 15283: 0x8926, - 15284: 0x8927, - 15285: 0x8928, - 15286: 0x8929, - 15287: 0x892C, - 15288: 0x892D, - 15289: 0x892E, - 15290: 0x892F, - 15291: 0x8931, - 15292: 0x8932, - 15293: 0x8933, - 15294: 0x8935, - 15295: 0x8937, - 15296: 0x9009, - 15297: 0x7663, - 15298: 0x7729, - 15299: 0x7EDA, - 15300: 0x9774, - 15301: 0x859B, - 15302: 0x5B66, - 15303: 0x7A74, - 15304: 0x96EA, - 15305: 0x8840, - 15306: 0x52CB, - 15307: 0x718F, - 15308: 0x5FAA, - 15309: 0x65EC, - 15310: 0x8BE2, - 15311: 0x5BFB, - 15312: 0x9A6F, - 15313: 0x5DE1, - 15314: 0x6B89, - 15315: 0x6C5B, - 15316: 0x8BAD, - 15317: 0x8BAF, - 15318: 0x900A, - 15319: 0x8FC5, - 15320: 0x538B, - 15321: 0x62BC, - 15322: 0x9E26, - 15323: 0x9E2D, - 15324: 0x5440, - 15325: 0x4E2B, - 15326: 0x82BD, - 15327: 0x7259, - 15328: 0x869C, - 15329: 0x5D16, - 15330: 0x8859, - 15331: 0x6DAF, - 15332: 0x96C5, - 15333: 0x54D1, - 15334: 0x4E9A, - 15335: 0x8BB6, - 15336: 0x7109, - 15337: 0x54BD, - 15338: 0x9609, - 15339: 0x70DF, - 15340: 0x6DF9, - 15341: 0x76D0, - 15342: 0x4E25, - 15343: 0x7814, - 15344: 0x8712, - 15345: 0x5CA9, - 15346: 0x5EF6, - 15347: 0x8A00, - 15348: 0x989C, - 15349: 0x960E, - 15350: 0x708E, - 15351: 0x6CBF, - 15352: 0x5944, - 15353: 0x63A9, - 15354: 0x773C, - 15355: 0x884D, - 15356: 0x6F14, - 15357: 0x8273, - 15358: 0x5830, - 15359: 0x71D5, - 15360: 0x538C, - 15361: 0x781A, - 15362: 0x96C1, - 15363: 0x5501, - 15364: 0x5F66, - 15365: 0x7130, - 15366: 0x5BB4, - 15367: 0x8C1A, - 15368: 0x9A8C, - 15369: 0x6B83, - 15370: 0x592E, - 15371: 0x9E2F, - 15372: 0x79E7, - 15373: 0x6768, - 15374: 0x626C, - 15375: 0x4F6F, - 15376: 0x75A1, - 15377: 0x7F8A, - 15378: 0x6D0B, - 15379: 0x9633, - 15380: 0x6C27, - 15381: 0x4EF0, - 15382: 0x75D2, - 15383: 0x517B, - 15384: 0x6837, - 15385: 0x6F3E, - 15386: 0x9080, - 15387: 0x8170, - 15388: 0x5996, - 15389: 0x7476, - 15390: 0x8938, - 15391: 0x8939, - 15392: 0x893A, - 15393: 0x893B, - 15394: 0x893C, - 15395: 0x893D, - 15396: 0x893E, - 15397: 0x893F, - 15398: 0x8940, - 15399: 0x8942, - 15400: 0x8943, - 15401: 0x8945, - 15402: 0x8946, - 15403: 0x8947, - 15404: 0x8948, - 15405: 0x8949, - 15406: 0x894A, - 15407: 0x894B, - 15408: 0x894C, - 15409: 0x894D, - 15410: 0x894E, - 15411: 0x894F, - 15412: 0x8950, - 15413: 0x8951, - 15414: 0x8952, - 15415: 0x8953, - 15416: 0x8954, - 15417: 0x8955, - 15418: 0x8956, - 15419: 0x8957, - 15420: 0x8958, - 15421: 0x8959, - 15422: 0x895A, - 15423: 0x895B, - 15424: 0x895C, - 15425: 0x895D, - 15426: 0x8960, - 15427: 0x8961, - 15428: 0x8962, - 15429: 0x8963, - 15430: 0x8964, - 15431: 0x8965, - 15432: 0x8967, - 15433: 0x8968, - 15434: 0x8969, - 15435: 0x896A, - 15436: 0x896B, - 15437: 0x896C, - 15438: 0x896D, - 15439: 0x896E, - 15440: 0x896F, - 15441: 0x8970, - 15442: 0x8971, - 15443: 0x8972, - 15444: 0x8973, - 15445: 0x8974, - 15446: 0x8975, - 15447: 0x8976, - 15448: 0x8977, - 15449: 0x8978, - 15450: 0x8979, - 15451: 0x897A, - 15452: 0x897C, - 15453: 0x897D, - 15454: 0x897E, - 15455: 0x8980, - 15456: 0x8982, - 15457: 0x8984, - 15458: 0x8985, - 15459: 0x8987, - 15460: 0x8988, - 15461: 0x8989, - 15462: 0x898A, - 15463: 0x898B, - 15464: 0x898C, - 15465: 0x898D, - 15466: 0x898E, - 15467: 0x898F, - 15468: 0x8990, - 15469: 0x8991, - 15470: 0x8992, - 15471: 0x8993, - 15472: 0x8994, - 15473: 0x8995, - 15474: 0x8996, - 15475: 0x8997, - 15476: 0x8998, - 15477: 0x8999, - 15478: 0x899A, - 15479: 0x899B, - 15480: 0x899C, - 15481: 0x899D, - 15482: 0x899E, - 15483: 0x899F, - 15484: 0x89A0, - 15485: 0x89A1, - 15486: 0x6447, - 15487: 0x5C27, - 15488: 0x9065, - 15489: 0x7A91, - 15490: 0x8C23, - 15491: 0x59DA, - 15492: 0x54AC, - 15493: 0x8200, - 15494: 0x836F, - 15495: 0x8981, - 15496: 0x8000, - 15497: 0x6930, - 15498: 0x564E, - 15499: 0x8036, - 15500: 0x7237, - 15501: 0x91CE, - 15502: 0x51B6, - 15503: 0x4E5F, - 15504: 0x9875, - 15505: 0x6396, - 15506: 0x4E1A, - 15507: 0x53F6, - 15508: 0x66F3, - 15509: 0x814B, - 15510: 0x591C, - 15511: 0x6DB2, - 15512: 0x4E00, - 15513: 0x58F9, - 15514: 0x533B, - 15515: 0x63D6, - 15516: 0x94F1, - 15517: 0x4F9D, - 15518: 0x4F0A, - 15519: 0x8863, - 15520: 0x9890, - 15521: 0x5937, - 15522: 0x9057, - 15523: 0x79FB, - 15524: 0x4EEA, - 15525: 0x80F0, - 15526: 0x7591, - 15527: 0x6C82, - 15528: 0x5B9C, - 15529: 0x59E8, - 15530: 0x5F5D, - 15531: 0x6905, - 15532: 0x8681, - 15533: 0x501A, - 15534: 0x5DF2, - 15535: 0x4E59, - 15536: 0x77E3, - 15537: 0x4EE5, - 15538: 0x827A, - 15539: 0x6291, - 15540: 0x6613, - 15541: 0x9091, - 15542: 0x5C79, - 15543: 0x4EBF, - 15544: 0x5F79, - 15545: 0x81C6, - 15546: 0x9038, - 15547: 0x8084, - 15548: 0x75AB, - 15549: 0x4EA6, - 15550: 0x88D4, - 15551: 0x610F, - 15552: 0x6BC5, - 15553: 0x5FC6, - 15554: 0x4E49, - 15555: 0x76CA, - 15556: 0x6EA2, - 15557: 0x8BE3, - 15558: 0x8BAE, - 15559: 0x8C0A, - 15560: 0x8BD1, - 15561: 0x5F02, - 15562: 0x7FFC, - 15563: 0x7FCC, - 15564: 0x7ECE, - 15565: 0x8335, - 15566: 0x836B, - 15567: 0x56E0, - 15568: 0x6BB7, - 15569: 0x97F3, - 15570: 0x9634, - 15571: 0x59FB, - 15572: 0x541F, - 15573: 0x94F6, - 15574: 0x6DEB, - 15575: 0x5BC5, - 15576: 0x996E, - 15577: 0x5C39, - 15578: 0x5F15, - 15579: 0x9690, - 15580: 0x89A2, - 15581: 0x89A3, - 15582: 0x89A4, - 15583: 0x89A5, - 15584: 0x89A6, - 15585: 0x89A7, - 15586: 0x89A8, - 15587: 0x89A9, - 15588: 0x89AA, - 15589: 0x89AB, - 15590: 0x89AC, - 15591: 0x89AD, - 15592: 0x89AE, - 15593: 0x89AF, - 15594: 0x89B0, - 15595: 0x89B1, - 15596: 0x89B2, - 15597: 0x89B3, - 15598: 0x89B4, - 15599: 0x89B5, - 15600: 0x89B6, - 15601: 0x89B7, - 15602: 0x89B8, - 15603: 0x89B9, - 15604: 0x89BA, - 15605: 0x89BB, - 15606: 0x89BC, - 15607: 0x89BD, - 15608: 0x89BE, - 15609: 0x89BF, - 15610: 0x89C0, - 15611: 0x89C3, - 15612: 0x89CD, - 15613: 0x89D3, - 15614: 0x89D4, - 15615: 0x89D5, - 15616: 0x89D7, - 15617: 0x89D8, - 15618: 0x89D9, - 15619: 0x89DB, - 15620: 0x89DD, - 15621: 0x89DF, - 15622: 0x89E0, - 15623: 0x89E1, - 15624: 0x89E2, - 15625: 0x89E4, - 15626: 0x89E7, - 15627: 0x89E8, - 15628: 0x89E9, - 15629: 0x89EA, - 15630: 0x89EC, - 15631: 0x89ED, - 15632: 0x89EE, - 15633: 0x89F0, - 15634: 0x89F1, - 15635: 0x89F2, - 15636: 0x89F4, - 15637: 0x89F5, - 15638: 0x89F6, - 15639: 0x89F7, - 15640: 0x89F8, - 15641: 0x89F9, - 15642: 0x89FA, - 15643: 0x89FB, - 15644: 0x89FC, - 15645: 0x89FD, - 15646: 0x89FE, - 15647: 0x89FF, - 15648: 0x8A01, - 15649: 0x8A02, - 15650: 0x8A03, - 15651: 0x8A04, - 15652: 0x8A05, - 15653: 0x8A06, - 15654: 0x8A08, - 15655: 0x8A09, - 15656: 0x8A0A, - 15657: 0x8A0B, - 15658: 0x8A0C, - 15659: 0x8A0D, - 15660: 0x8A0E, - 15661: 0x8A0F, - 15662: 0x8A10, - 15663: 0x8A11, - 15664: 0x8A12, - 15665: 0x8A13, - 15666: 0x8A14, - 15667: 0x8A15, - 15668: 0x8A16, - 15669: 0x8A17, - 15670: 0x8A18, - 15671: 0x8A19, - 15672: 0x8A1A, - 15673: 0x8A1B, - 15674: 0x8A1C, - 15675: 0x8A1D, - 15676: 0x5370, - 15677: 0x82F1, - 15678: 0x6A31, - 15679: 0x5A74, - 15680: 0x9E70, - 15681: 0x5E94, - 15682: 0x7F28, - 15683: 0x83B9, - 15684: 0x8424, - 15685: 0x8425, - 15686: 0x8367, - 15687: 0x8747, - 15688: 0x8FCE, - 15689: 0x8D62, - 15690: 0x76C8, - 15691: 0x5F71, - 15692: 0x9896, - 15693: 0x786C, - 15694: 0x6620, - 15695: 0x54DF, - 15696: 0x62E5, - 15697: 0x4F63, - 15698: 0x81C3, - 15699: 0x75C8, - 15700: 0x5EB8, - 15701: 0x96CD, - 15702: 0x8E0A, - 15703: 0x86F9, - 15704: 0x548F, - 15705: 0x6CF3, - 15706: 0x6D8C, - 15707: 0x6C38, - 15708: 0x607F, - 15709: 0x52C7, - 15710: 0x7528, - 15711: 0x5E7D, - 15712: 0x4F18, - 15713: 0x60A0, - 15714: 0x5FE7, - 15715: 0x5C24, - 15716: 0x7531, - 15717: 0x90AE, - 15718: 0x94C0, - 15719: 0x72B9, - 15720: 0x6CB9, - 15721: 0x6E38, - 15722: 0x9149, - 15723: 0x6709, - 15724: 0x53CB, - 15725: 0x53F3, - 15726: 0x4F51, - 15727: 0x91C9, - 15728: 0x8BF1, - 15729: 0x53C8, - 15730: 0x5E7C, - 15731: 0x8FC2, - 15732: 0x6DE4, - 15733: 0x4E8E, - 15734: 0x76C2, - 15735: 0x6986, - 15736: 0x865E, - 15737: 0x611A, - 15738: 0x8206, - 15739: 0x4F59, - 15740: 0x4FDE, - 15741: 0x903E, - 15742: 0x9C7C, - 15743: 0x6109, - 15744: 0x6E1D, - 15745: 0x6E14, - 15746: 0x9685, - 15747: 0x4E88, - 15748: 0x5A31, - 15749: 0x96E8, - 15750: 0x4E0E, - 15751: 0x5C7F, - 15752: 0x79B9, - 15753: 0x5B87, - 15754: 0x8BED, - 15755: 0x7FBD, - 15756: 0x7389, - 15757: 0x57DF, - 15758: 0x828B, - 15759: 0x90C1, - 15760: 0x5401, - 15761: 0x9047, - 15762: 0x55BB, - 15763: 0x5CEA, - 15764: 0x5FA1, - 15765: 0x6108, - 15766: 0x6B32, - 15767: 0x72F1, - 15768: 0x80B2, - 15769: 0x8A89, - 15770: 0x8A1E, - 15771: 0x8A1F, - 15772: 0x8A20, - 15773: 0x8A21, - 15774: 0x8A22, - 15775: 0x8A23, - 15776: 0x8A24, - 15777: 0x8A25, - 15778: 0x8A26, - 15779: 0x8A27, - 15780: 0x8A28, - 15781: 0x8A29, - 15782: 0x8A2A, - 15783: 0x8A2B, - 15784: 0x8A2C, - 15785: 0x8A2D, - 15786: 0x8A2E, - 15787: 0x8A2F, - 15788: 0x8A30, - 15789: 0x8A31, - 15790: 0x8A32, - 15791: 0x8A33, - 15792: 0x8A34, - 15793: 0x8A35, - 15794: 0x8A36, - 15795: 0x8A37, - 15796: 0x8A38, - 15797: 0x8A39, - 15798: 0x8A3A, - 15799: 0x8A3B, - 15800: 0x8A3C, - 15801: 0x8A3D, - 15802: 0x8A3F, - 15803: 0x8A40, - 15804: 0x8A41, - 15805: 0x8A42, - 15806: 0x8A43, - 15807: 0x8A44, - 15808: 0x8A45, - 15809: 0x8A46, - 15810: 0x8A47, - 15811: 0x8A49, - 15812: 0x8A4A, - 15813: 0x8A4B, - 15814: 0x8A4C, - 15815: 0x8A4D, - 15816: 0x8A4E, - 15817: 0x8A4F, - 15818: 0x8A50, - 15819: 0x8A51, - 15820: 0x8A52, - 15821: 0x8A53, - 15822: 0x8A54, - 15823: 0x8A55, - 15824: 0x8A56, - 15825: 0x8A57, - 15826: 0x8A58, - 15827: 0x8A59, - 15828: 0x8A5A, - 15829: 0x8A5B, - 15830: 0x8A5C, - 15831: 0x8A5D, - 15832: 0x8A5E, - 15833: 0x8A5F, - 15834: 0x8A60, - 15835: 0x8A61, - 15836: 0x8A62, - 15837: 0x8A63, - 15838: 0x8A64, - 15839: 0x8A65, - 15840: 0x8A66, - 15841: 0x8A67, - 15842: 0x8A68, - 15843: 0x8A69, - 15844: 0x8A6A, - 15845: 0x8A6B, - 15846: 0x8A6C, - 15847: 0x8A6D, - 15848: 0x8A6E, - 15849: 0x8A6F, - 15850: 0x8A70, - 15851: 0x8A71, - 15852: 0x8A72, - 15853: 0x8A73, - 15854: 0x8A74, - 15855: 0x8A75, - 15856: 0x8A76, - 15857: 0x8A77, - 15858: 0x8A78, - 15859: 0x8A7A, - 15860: 0x8A7B, - 15861: 0x8A7C, - 15862: 0x8A7D, - 15863: 0x8A7E, - 15864: 0x8A7F, - 15865: 0x8A80, - 15866: 0x6D74, - 15867: 0x5BD3, - 15868: 0x88D5, - 15869: 0x9884, - 15870: 0x8C6B, - 15871: 0x9A6D, - 15872: 0x9E33, - 15873: 0x6E0A, - 15874: 0x51A4, - 15875: 0x5143, - 15876: 0x57A3, - 15877: 0x8881, - 15878: 0x539F, - 15879: 0x63F4, - 15880: 0x8F95, - 15881: 0x56ED, - 15882: 0x5458, - 15883: 0x5706, - 15884: 0x733F, - 15885: 0x6E90, - 15886: 0x7F18, - 15887: 0x8FDC, - 15888: 0x82D1, - 15889: 0x613F, - 15890: 0x6028, - 15891: 0x9662, - 15892: 0x66F0, - 15893: 0x7EA6, - 15894: 0x8D8A, - 15895: 0x8DC3, - 15896: 0x94A5, - 15897: 0x5CB3, - 15898: 0x7CA4, - 15899: 0x6708, - 15900: 0x60A6, - 15901: 0x9605, - 15902: 0x8018, - 15903: 0x4E91, - 15904: 0x90E7, - 15905: 0x5300, - 15906: 0x9668, - 15907: 0x5141, - 15908: 0x8FD0, - 15909: 0x8574, - 15910: 0x915D, - 15911: 0x6655, - 15912: 0x97F5, - 15913: 0x5B55, - 15914: 0x531D, - 15915: 0x7838, - 15916: 0x6742, - 15917: 0x683D, - 15918: 0x54C9, - 15919: 0x707E, - 15920: 0x5BB0, - 15921: 0x8F7D, - 15922: 0x518D, - 15923: 0x5728, - 15924: 0x54B1, - 15925: 0x6512, - 15926: 0x6682, - 15927: 0x8D5E, - 15928: 0x8D43, - 15929: 0x810F, - 15930: 0x846C, - 15931: 0x906D, - 15932: 0x7CDF, - 15933: 0x51FF, - 15934: 0x85FB, - 15935: 0x67A3, - 15936: 0x65E9, - 15937: 0x6FA1, - 15938: 0x86A4, - 15939: 0x8E81, - 15940: 0x566A, - 15941: 0x9020, - 15942: 0x7682, - 15943: 0x7076, - 15944: 0x71E5, - 15945: 0x8D23, - 15946: 0x62E9, - 15947: 0x5219, - 15948: 0x6CFD, - 15949: 0x8D3C, - 15950: 0x600E, - 15951: 0x589E, - 15952: 0x618E, - 15953: 0x66FE, - 15954: 0x8D60, - 15955: 0x624E, - 15956: 0x55B3, - 15957: 0x6E23, - 15958: 0x672D, - 15959: 0x8F67, - 15960: 0x8A81, - 15961: 0x8A82, - 15962: 0x8A83, - 15963: 0x8A84, - 15964: 0x8A85, - 15965: 0x8A86, - 15966: 0x8A87, - 15967: 0x8A88, - 15968: 0x8A8B, - 15969: 0x8A8C, - 15970: 0x8A8D, - 15971: 0x8A8E, - 15972: 0x8A8F, - 15973: 0x8A90, - 15974: 0x8A91, - 15975: 0x8A92, - 15976: 0x8A94, - 15977: 0x8A95, - 15978: 0x8A96, - 15979: 0x8A97, - 15980: 0x8A98, - 15981: 0x8A99, - 15982: 0x8A9A, - 15983: 0x8A9B, - 15984: 0x8A9C, - 15985: 0x8A9D, - 15986: 0x8A9E, - 15987: 0x8A9F, - 15988: 0x8AA0, - 15989: 0x8AA1, - 15990: 0x8AA2, - 15991: 0x8AA3, - 15992: 0x8AA4, - 15993: 0x8AA5, - 15994: 0x8AA6, - 15995: 0x8AA7, - 15996: 0x8AA8, - 15997: 0x8AA9, - 15998: 0x8AAA, - 15999: 0x8AAB, - 16000: 0x8AAC, - 16001: 0x8AAD, - 16002: 0x8AAE, - 16003: 0x8AAF, - 16004: 0x8AB0, - 16005: 0x8AB1, - 16006: 0x8AB2, - 16007: 0x8AB3, - 16008: 0x8AB4, - 16009: 0x8AB5, - 16010: 0x8AB6, - 16011: 0x8AB7, - 16012: 0x8AB8, - 16013: 0x8AB9, - 16014: 0x8ABA, - 16015: 0x8ABB, - 16016: 0x8ABC, - 16017: 0x8ABD, - 16018: 0x8ABE, - 16019: 0x8ABF, - 16020: 0x8AC0, - 16021: 0x8AC1, - 16022: 0x8AC2, - 16023: 0x8AC3, - 16024: 0x8AC4, - 16025: 0x8AC5, - 16026: 0x8AC6, - 16027: 0x8AC7, - 16028: 0x8AC8, - 16029: 0x8AC9, - 16030: 0x8ACA, - 16031: 0x8ACB, - 16032: 0x8ACC, - 16033: 0x8ACD, - 16034: 0x8ACE, - 16035: 0x8ACF, - 16036: 0x8AD0, - 16037: 0x8AD1, - 16038: 0x8AD2, - 16039: 0x8AD3, - 16040: 0x8AD4, - 16041: 0x8AD5, - 16042: 0x8AD6, - 16043: 0x8AD7, - 16044: 0x8AD8, - 16045: 0x8AD9, - 16046: 0x8ADA, - 16047: 0x8ADB, - 16048: 0x8ADC, - 16049: 0x8ADD, - 16050: 0x8ADE, - 16051: 0x8ADF, - 16052: 0x8AE0, - 16053: 0x8AE1, - 16054: 0x8AE2, - 16055: 0x8AE3, - 16056: 0x94E1, - 16057: 0x95F8, - 16058: 0x7728, - 16059: 0x6805, - 16060: 0x69A8, - 16061: 0x548B, - 16062: 0x4E4D, - 16063: 0x70B8, - 16064: 0x8BC8, - 16065: 0x6458, - 16066: 0x658B, - 16067: 0x5B85, - 16068: 0x7A84, - 16069: 0x503A, - 16070: 0x5BE8, - 16071: 0x77BB, - 16072: 0x6BE1, - 16073: 0x8A79, - 16074: 0x7C98, - 16075: 0x6CBE, - 16076: 0x76CF, - 16077: 0x65A9, - 16078: 0x8F97, - 16079: 0x5D2D, - 16080: 0x5C55, - 16081: 0x8638, - 16082: 0x6808, - 16083: 0x5360, - 16084: 0x6218, - 16085: 0x7AD9, - 16086: 0x6E5B, - 16087: 0x7EFD, - 16088: 0x6A1F, - 16089: 0x7AE0, - 16090: 0x5F70, - 16091: 0x6F33, - 16092: 0x5F20, - 16093: 0x638C, - 16094: 0x6DA8, - 16095: 0x6756, - 16096: 0x4E08, - 16097: 0x5E10, - 16098: 0x8D26, - 16099: 0x4ED7, - 16100: 0x80C0, - 16101: 0x7634, - 16102: 0x969C, - 16103: 0x62DB, - 16104: 0x662D, - 16105: 0x627E, - 16106: 0x6CBC, - 16107: 0x8D75, - 16108: 0x7167, - 16109: 0x7F69, - 16110: 0x5146, - 16111: 0x8087, - 16112: 0x53EC, - 16113: 0x906E, - 16114: 0x6298, - 16115: 0x54F2, - 16116: 0x86F0, - 16117: 0x8F99, - 16118: 0x8005, - 16119: 0x9517, - 16120: 0x8517, - 16121: 0x8FD9, - 16122: 0x6D59, - 16123: 0x73CD, - 16124: 0x659F, - 16125: 0x771F, - 16126: 0x7504, - 16127: 0x7827, - 16128: 0x81FB, - 16129: 0x8D1E, - 16130: 0x9488, - 16131: 0x4FA6, - 16132: 0x6795, - 16133: 0x75B9, - 16134: 0x8BCA, - 16135: 0x9707, - 16136: 0x632F, - 16137: 0x9547, - 16138: 0x9635, - 16139: 0x84B8, - 16140: 0x6323, - 16141: 0x7741, - 16142: 0x5F81, - 16143: 0x72F0, - 16144: 0x4E89, - 16145: 0x6014, - 16146: 0x6574, - 16147: 0x62EF, - 16148: 0x6B63, - 16149: 0x653F, - 16150: 0x8AE4, - 16151: 0x8AE5, - 16152: 0x8AE6, - 16153: 0x8AE7, - 16154: 0x8AE8, - 16155: 0x8AE9, - 16156: 0x8AEA, - 16157: 0x8AEB, - 16158: 0x8AEC, - 16159: 0x8AED, - 16160: 0x8AEE, - 16161: 0x8AEF, - 16162: 0x8AF0, - 16163: 0x8AF1, - 16164: 0x8AF2, - 16165: 0x8AF3, - 16166: 0x8AF4, - 16167: 0x8AF5, - 16168: 0x8AF6, - 16169: 0x8AF7, - 16170: 0x8AF8, - 16171: 0x8AF9, - 16172: 0x8AFA, - 16173: 0x8AFB, - 16174: 0x8AFC, - 16175: 0x8AFD, - 16176: 0x8AFE, - 16177: 0x8AFF, - 16178: 0x8B00, - 16179: 0x8B01, - 16180: 0x8B02, - 16181: 0x8B03, - 16182: 0x8B04, - 16183: 0x8B05, - 16184: 0x8B06, - 16185: 0x8B08, - 16186: 0x8B09, - 16187: 0x8B0A, - 16188: 0x8B0B, - 16189: 0x8B0C, - 16190: 0x8B0D, - 16191: 0x8B0E, - 16192: 0x8B0F, - 16193: 0x8B10, - 16194: 0x8B11, - 16195: 0x8B12, - 16196: 0x8B13, - 16197: 0x8B14, - 16198: 0x8B15, - 16199: 0x8B16, - 16200: 0x8B17, - 16201: 0x8B18, - 16202: 0x8B19, - 16203: 0x8B1A, - 16204: 0x8B1B, - 16205: 0x8B1C, - 16206: 0x8B1D, - 16207: 0x8B1E, - 16208: 0x8B1F, - 16209: 0x8B20, - 16210: 0x8B21, - 16211: 0x8B22, - 16212: 0x8B23, - 16213: 0x8B24, - 16214: 0x8B25, - 16215: 0x8B27, - 16216: 0x8B28, - 16217: 0x8B29, - 16218: 0x8B2A, - 16219: 0x8B2B, - 16220: 0x8B2C, - 16221: 0x8B2D, - 16222: 0x8B2E, - 16223: 0x8B2F, - 16224: 0x8B30, - 16225: 0x8B31, - 16226: 0x8B32, - 16227: 0x8B33, - 16228: 0x8B34, - 16229: 0x8B35, - 16230: 0x8B36, - 16231: 0x8B37, - 16232: 0x8B38, - 16233: 0x8B39, - 16234: 0x8B3A, - 16235: 0x8B3B, - 16236: 0x8B3C, - 16237: 0x8B3D, - 16238: 0x8B3E, - 16239: 0x8B3F, - 16240: 0x8B40, - 16241: 0x8B41, - 16242: 0x8B42, - 16243: 0x8B43, - 16244: 0x8B44, - 16245: 0x8B45, - 16246: 0x5E27, - 16247: 0x75C7, - 16248: 0x90D1, - 16249: 0x8BC1, - 16250: 0x829D, - 16251: 0x679D, - 16252: 0x652F, - 16253: 0x5431, - 16254: 0x8718, - 16255: 0x77E5, - 16256: 0x80A2, - 16257: 0x8102, - 16258: 0x6C41, - 16259: 0x4E4B, - 16260: 0x7EC7, - 16261: 0x804C, - 16262: 0x76F4, - 16263: 0x690D, - 16264: 0x6B96, - 16265: 0x6267, - 16266: 0x503C, - 16267: 0x4F84, - 16268: 0x5740, - 16269: 0x6307, - 16270: 0x6B62, - 16271: 0x8DBE, - 16272: 0x53EA, - 16273: 0x65E8, - 16274: 0x7EB8, - 16275: 0x5FD7, - 16276: 0x631A, - 16277: 0x63B7, - 16278: 0x81F3, - 16279: 0x81F4, - 16280: 0x7F6E, - 16281: 0x5E1C, - 16282: 0x5CD9, - 16283: 0x5236, - 16284: 0x667A, - 16285: 0x79E9, - 16286: 0x7A1A, - 16287: 0x8D28, - 16288: 0x7099, - 16289: 0x75D4, - 16290: 0x6EDE, - 16291: 0x6CBB, - 16292: 0x7A92, - 16293: 0x4E2D, - 16294: 0x76C5, - 16295: 0x5FE0, - 16296: 0x949F, - 16297: 0x8877, - 16298: 0x7EC8, - 16299: 0x79CD, - 16300: 0x80BF, - 16301: 0x91CD, - 16302: 0x4EF2, - 16303: 0x4F17, - 16304: 0x821F, - 16305: 0x5468, - 16306: 0x5DDE, - 16307: 0x6D32, - 16308: 0x8BCC, - 16309: 0x7CA5, - 16310: 0x8F74, - 16311: 0x8098, - 16312: 0x5E1A, - 16313: 0x5492, - 16314: 0x76B1, - 16315: 0x5B99, - 16316: 0x663C, - 16317: 0x9AA4, - 16318: 0x73E0, - 16319: 0x682A, - 16320: 0x86DB, - 16321: 0x6731, - 16322: 0x732A, - 16323: 0x8BF8, - 16324: 0x8BDB, - 16325: 0x9010, - 16326: 0x7AF9, - 16327: 0x70DB, - 16328: 0x716E, - 16329: 0x62C4, - 16330: 0x77A9, - 16331: 0x5631, - 16332: 0x4E3B, - 16333: 0x8457, - 16334: 0x67F1, - 16335: 0x52A9, - 16336: 0x86C0, - 16337: 0x8D2E, - 16338: 0x94F8, - 16339: 0x7B51, - 16340: 0x8B46, - 16341: 0x8B47, - 16342: 0x8B48, - 16343: 0x8B49, - 16344: 0x8B4A, - 16345: 0x8B4B, - 16346: 0x8B4C, - 16347: 0x8B4D, - 16348: 0x8B4E, - 16349: 0x8B4F, - 16350: 0x8B50, - 16351: 0x8B51, - 16352: 0x8B52, - 16353: 0x8B53, - 16354: 0x8B54, - 16355: 0x8B55, - 16356: 0x8B56, - 16357: 0x8B57, - 16358: 0x8B58, - 16359: 0x8B59, - 16360: 0x8B5A, - 16361: 0x8B5B, - 16362: 0x8B5C, - 16363: 0x8B5D, - 16364: 0x8B5E, - 16365: 0x8B5F, - 16366: 0x8B60, - 16367: 0x8B61, - 16368: 0x8B62, - 16369: 0x8B63, - 16370: 0x8B64, - 16371: 0x8B65, - 16372: 0x8B67, - 16373: 0x8B68, - 16374: 0x8B69, - 16375: 0x8B6A, - 16376: 0x8B6B, - 16377: 0x8B6D, - 16378: 0x8B6E, - 16379: 0x8B6F, - 16380: 0x8B70, - 16381: 0x8B71, - 16382: 0x8B72, - 16383: 0x8B73, - 16384: 0x8B74, - 16385: 0x8B75, - 16386: 0x8B76, - 16387: 0x8B77, - 16388: 0x8B78, - 16389: 0x8B79, - 16390: 0x8B7A, - 16391: 0x8B7B, - 16392: 0x8B7C, - 16393: 0x8B7D, - 16394: 0x8B7E, - 16395: 0x8B7F, - 16396: 0x8B80, - 16397: 0x8B81, - 16398: 0x8B82, - 16399: 0x8B83, - 16400: 0x8B84, - 16401: 0x8B85, - 16402: 0x8B86, - 16403: 0x8B87, - 16404: 0x8B88, - 16405: 0x8B89, - 16406: 0x8B8A, - 16407: 0x8B8B, - 16408: 0x8B8C, - 16409: 0x8B8D, - 16410: 0x8B8E, - 16411: 0x8B8F, - 16412: 0x8B90, - 16413: 0x8B91, - 16414: 0x8B92, - 16415: 0x8B93, - 16416: 0x8B94, - 16417: 0x8B95, - 16418: 0x8B96, - 16419: 0x8B97, - 16420: 0x8B98, - 16421: 0x8B99, - 16422: 0x8B9A, - 16423: 0x8B9B, - 16424: 0x8B9C, - 16425: 0x8B9D, - 16426: 0x8B9E, - 16427: 0x8B9F, - 16428: 0x8BAC, - 16429: 0x8BB1, - 16430: 0x8BBB, - 16431: 0x8BC7, - 16432: 0x8BD0, - 16433: 0x8BEA, - 16434: 0x8C09, - 16435: 0x8C1E, - 16436: 0x4F4F, - 16437: 0x6CE8, - 16438: 0x795D, - 16439: 0x9A7B, - 16440: 0x6293, - 16441: 0x722A, - 16442: 0x62FD, - 16443: 0x4E13, - 16444: 0x7816, - 16445: 0x8F6C, - 16446: 0x64B0, - 16447: 0x8D5A, - 16448: 0x7BC6, - 16449: 0x6869, - 16450: 0x5E84, - 16451: 0x88C5, - 16452: 0x5986, - 16453: 0x649E, - 16454: 0x58EE, - 16455: 0x72B6, - 16456: 0x690E, - 16457: 0x9525, - 16458: 0x8FFD, - 16459: 0x8D58, - 16460: 0x5760, - 16461: 0x7F00, - 16462: 0x8C06, - 16463: 0x51C6, - 16464: 0x6349, - 16465: 0x62D9, - 16466: 0x5353, - 16467: 0x684C, - 16468: 0x7422, - 16469: 0x8301, - 16470: 0x914C, - 16471: 0x5544, - 16472: 0x7740, - 16473: 0x707C, - 16474: 0x6D4A, - 16475: 0x5179, - 16476: 0x54A8, - 16477: 0x8D44, - 16478: 0x59FF, - 16479: 0x6ECB, - 16480: 0x6DC4, - 16481: 0x5B5C, - 16482: 0x7D2B, - 16483: 0x4ED4, - 16484: 0x7C7D, - 16485: 0x6ED3, - 16486: 0x5B50, - 16487: 0x81EA, - 16488: 0x6E0D, - 16489: 0x5B57, - 16490: 0x9B03, - 16491: 0x68D5, - 16492: 0x8E2A, - 16493: 0x5B97, - 16494: 0x7EFC, - 16495: 0x603B, - 16496: 0x7EB5, - 16497: 0x90B9, - 16498: 0x8D70, - 16499: 0x594F, - 16500: 0x63CD, - 16501: 0x79DF, - 16502: 0x8DB3, - 16503: 0x5352, - 16504: 0x65CF, - 16505: 0x7956, - 16506: 0x8BC5, - 16507: 0x963B, - 16508: 0x7EC4, - 16509: 0x94BB, - 16510: 0x7E82, - 16511: 0x5634, - 16512: 0x9189, - 16513: 0x6700, - 16514: 0x7F6A, - 16515: 0x5C0A, - 16516: 0x9075, - 16517: 0x6628, - 16518: 0x5DE6, - 16519: 0x4F50, - 16520: 0x67DE, - 16521: 0x505A, - 16522: 0x4F5C, - 16523: 0x5750, - 16524: 0x5EA7, - 16530: 0x8C38, - 16531: 0x8C39, - 16532: 0x8C3A, - 16533: 0x8C3B, - 16534: 0x8C3C, - 16535: 0x8C3D, - 16536: 0x8C3E, - 16537: 0x8C3F, - 16538: 0x8C40, - 16539: 0x8C42, - 16540: 0x8C43, - 16541: 0x8C44, - 16542: 0x8C45, - 16543: 0x8C48, - 16544: 0x8C4A, - 16545: 0x8C4B, - 16546: 0x8C4D, - 16547: 0x8C4E, - 16548: 0x8C4F, - 16549: 0x8C50, - 16550: 0x8C51, - 16551: 0x8C52, - 16552: 0x8C53, - 16553: 0x8C54, - 16554: 0x8C56, - 16555: 0x8C57, - 16556: 0x8C58, - 16557: 0x8C59, - 16558: 0x8C5B, - 16559: 0x8C5C, - 16560: 0x8C5D, - 16561: 0x8C5E, - 16562: 0x8C5F, - 16563: 0x8C60, - 16564: 0x8C63, - 16565: 0x8C64, - 16566: 0x8C65, - 16567: 0x8C66, - 16568: 0x8C67, - 16569: 0x8C68, - 16570: 0x8C69, - 16571: 0x8C6C, - 16572: 0x8C6D, - 16573: 0x8C6E, - 16574: 0x8C6F, - 16575: 0x8C70, - 16576: 0x8C71, - 16577: 0x8C72, - 16578: 0x8C74, - 16579: 0x8C75, - 16580: 0x8C76, - 16581: 0x8C77, - 16582: 0x8C7B, - 16583: 0x8C7C, - 16584: 0x8C7D, - 16585: 0x8C7E, - 16586: 0x8C7F, - 16587: 0x8C80, - 16588: 0x8C81, - 16589: 0x8C83, - 16590: 0x8C84, - 16591: 0x8C86, - 16592: 0x8C87, - 16593: 0x8C88, - 16594: 0x8C8B, - 16595: 0x8C8D, - 16596: 0x8C8E, - 16597: 0x8C8F, - 16598: 0x8C90, - 16599: 0x8C91, - 16600: 0x8C92, - 16601: 0x8C93, - 16602: 0x8C95, - 16603: 0x8C96, - 16604: 0x8C97, - 16605: 0x8C99, - 16606: 0x8C9A, - 16607: 0x8C9B, - 16608: 0x8C9C, - 16609: 0x8C9D, - 16610: 0x8C9E, - 16611: 0x8C9F, - 16612: 0x8CA0, - 16613: 0x8CA1, - 16614: 0x8CA2, - 16615: 0x8CA3, - 16616: 0x8CA4, - 16617: 0x8CA5, - 16618: 0x8CA6, - 16619: 0x8CA7, - 16620: 0x8CA8, - 16621: 0x8CA9, - 16622: 0x8CAA, - 16623: 0x8CAB, - 16624: 0x8CAC, - 16625: 0x8CAD, - 16626: 0x4E8D, - 16627: 0x4E0C, - 16628: 0x5140, - 16629: 0x4E10, - 16630: 0x5EFF, - 16631: 0x5345, - 16632: 0x4E15, - 16633: 0x4E98, - 16634: 0x4E1E, - 16635: 0x9B32, - 16636: 0x5B6C, - 16637: 0x5669, - 16638: 0x4E28, - 16639: 0x79BA, - 16640: 0x4E3F, - 16641: 0x5315, - 16642: 0x4E47, - 16643: 0x592D, - 16644: 0x723B, - 16645: 0x536E, - 16646: 0x6C10, - 16647: 0x56DF, - 16648: 0x80E4, - 16649: 0x9997, - 16650: 0x6BD3, - 16651: 0x777E, - 16652: 0x9F17, - 16653: 0x4E36, - 16654: 0x4E9F, - 16655: 0x9F10, - 16656: 0x4E5C, - 16657: 0x4E69, - 16658: 0x4E93, - 16659: 0x8288, - 16660: 0x5B5B, - 16661: 0x556C, - 16662: 0x560F, - 16663: 0x4EC4, - 16664: 0x538D, - 16665: 0x539D, - 16666: 0x53A3, - 16667: 0x53A5, - 16668: 0x53AE, - 16669: 0x9765, - 16670: 0x8D5D, - 16671: 0x531A, - 16672: 0x53F5, - 16673: 0x5326, - 16674: 0x532E, - 16675: 0x533E, - 16676: 0x8D5C, - 16677: 0x5366, - 16678: 0x5363, - 16679: 0x5202, - 16680: 0x5208, - 16681: 0x520E, - 16682: 0x522D, - 16683: 0x5233, - 16684: 0x523F, - 16685: 0x5240, - 16686: 0x524C, - 16687: 0x525E, - 16688: 0x5261, - 16689: 0x525C, - 16690: 0x84AF, - 16691: 0x527D, - 16692: 0x5282, - 16693: 0x5281, - 16694: 0x5290, - 16695: 0x5293, - 16696: 0x5182, - 16697: 0x7F54, - 16698: 0x4EBB, - 16699: 0x4EC3, - 16700: 0x4EC9, - 16701: 0x4EC2, - 16702: 0x4EE8, - 16703: 0x4EE1, - 16704: 0x4EEB, - 16705: 0x4EDE, - 16706: 0x4F1B, - 16707: 0x4EF3, - 16708: 0x4F22, - 16709: 0x4F64, - 16710: 0x4EF5, - 16711: 0x4F25, - 16712: 0x4F27, - 16713: 0x4F09, - 16714: 0x4F2B, - 16715: 0x4F5E, - 16716: 0x4F67, - 16717: 0x6538, - 16718: 0x4F5A, - 16719: 0x4F5D, - 16720: 0x8CAE, - 16721: 0x8CAF, - 16722: 0x8CB0, - 16723: 0x8CB1, - 16724: 0x8CB2, - 16725: 0x8CB3, - 16726: 0x8CB4, - 16727: 0x8CB5, - 16728: 0x8CB6, - 16729: 0x8CB7, - 16730: 0x8CB8, - 16731: 0x8CB9, - 16732: 0x8CBA, - 16733: 0x8CBB, - 16734: 0x8CBC, - 16735: 0x8CBD, - 16736: 0x8CBE, - 16737: 0x8CBF, - 16738: 0x8CC0, - 16739: 0x8CC1, - 16740: 0x8CC2, - 16741: 0x8CC3, - 16742: 0x8CC4, - 16743: 0x8CC5, - 16744: 0x8CC6, - 16745: 0x8CC7, - 16746: 0x8CC8, - 16747: 0x8CC9, - 16748: 0x8CCA, - 16749: 0x8CCB, - 16750: 0x8CCC, - 16751: 0x8CCD, - 16752: 0x8CCE, - 16753: 0x8CCF, - 16754: 0x8CD0, - 16755: 0x8CD1, - 16756: 0x8CD2, - 16757: 0x8CD3, - 16758: 0x8CD4, - 16759: 0x8CD5, - 16760: 0x8CD6, - 16761: 0x8CD7, - 16762: 0x8CD8, - 16763: 0x8CD9, - 16764: 0x8CDA, - 16765: 0x8CDB, - 16766: 0x8CDC, - 16767: 0x8CDD, - 16768: 0x8CDE, - 16769: 0x8CDF, - 16770: 0x8CE0, - 16771: 0x8CE1, - 16772: 0x8CE2, - 16773: 0x8CE3, - 16774: 0x8CE4, - 16775: 0x8CE5, - 16776: 0x8CE6, - 16777: 0x8CE7, - 16778: 0x8CE8, - 16779: 0x8CE9, - 16780: 0x8CEA, - 16781: 0x8CEB, - 16782: 0x8CEC, - 16783: 0x8CED, - 16784: 0x8CEE, - 16785: 0x8CEF, - 16786: 0x8CF0, - 16787: 0x8CF1, - 16788: 0x8CF2, - 16789: 0x8CF3, - 16790: 0x8CF4, - 16791: 0x8CF5, - 16792: 0x8CF6, - 16793: 0x8CF7, - 16794: 0x8CF8, - 16795: 0x8CF9, - 16796: 0x8CFA, - 16797: 0x8CFB, - 16798: 0x8CFC, - 16799: 0x8CFD, - 16800: 0x8CFE, - 16801: 0x8CFF, - 16802: 0x8D00, - 16803: 0x8D01, - 16804: 0x8D02, - 16805: 0x8D03, - 16806: 0x8D04, - 16807: 0x8D05, - 16808: 0x8D06, - 16809: 0x8D07, - 16810: 0x8D08, - 16811: 0x8D09, - 16812: 0x8D0A, - 16813: 0x8D0B, - 16814: 0x8D0C, - 16815: 0x8D0D, - 16816: 0x4F5F, - 16817: 0x4F57, - 16818: 0x4F32, - 16819: 0x4F3D, - 16820: 0x4F76, - 16821: 0x4F74, - 16822: 0x4F91, - 16823: 0x4F89, - 16824: 0x4F83, - 16825: 0x4F8F, - 16826: 0x4F7E, - 16827: 0x4F7B, - 16828: 0x4FAA, - 16829: 0x4F7C, - 16830: 0x4FAC, - 16831: 0x4F94, - 16832: 0x4FE6, - 16833: 0x4FE8, - 16834: 0x4FEA, - 16835: 0x4FC5, - 16836: 0x4FDA, - 16837: 0x4FE3, - 16838: 0x4FDC, - 16839: 0x4FD1, - 16840: 0x4FDF, - 16841: 0x4FF8, - 16842: 0x5029, - 16843: 0x504C, - 16844: 0x4FF3, - 16845: 0x502C, - 16846: 0x500F, - 16847: 0x502E, - 16848: 0x502D, - 16849: 0x4FFE, - 16850: 0x501C, - 16851: 0x500C, - 16852: 0x5025, - 16853: 0x5028, - 16854: 0x507E, - 16855: 0x5043, - 16856: 0x5055, - 16857: 0x5048, - 16858: 0x504E, - 16859: 0x506C, - 16860: 0x507B, - 16861: 0x50A5, - 16862: 0x50A7, - 16863: 0x50A9, - 16864: 0x50BA, - 16865: 0x50D6, - 16866: 0x5106, - 16867: 0x50ED, - 16868: 0x50EC, - 16869: 0x50E6, - 16870: 0x50EE, - 16871: 0x5107, - 16872: 0x510B, - 16873: 0x4EDD, - 16874: 0x6C3D, - 16875: 0x4F58, - 16876: 0x4F65, - 16877: 0x4FCE, - 16878: 0x9FA0, - 16879: 0x6C46, - 16880: 0x7C74, - 16881: 0x516E, - 16882: 0x5DFD, - 16883: 0x9EC9, - 16884: 0x9998, - 16885: 0x5181, - 16886: 0x5914, - 16887: 0x52F9, - 16888: 0x530D, - 16889: 0x8A07, - 16890: 0x5310, - 16891: 0x51EB, - 16892: 0x5919, - 16893: 0x5155, - 16894: 0x4EA0, - 16895: 0x5156, - 16896: 0x4EB3, - 16897: 0x886E, - 16898: 0x88A4, - 16899: 0x4EB5, - 16900: 0x8114, - 16901: 0x88D2, - 16902: 0x7980, - 16903: 0x5B34, - 16904: 0x8803, - 16905: 0x7FB8, - 16906: 0x51AB, - 16907: 0x51B1, - 16908: 0x51BD, - 16909: 0x51BC, - 16910: 0x8D0E, - 16911: 0x8D0F, - 16912: 0x8D10, - 16913: 0x8D11, - 16914: 0x8D12, - 16915: 0x8D13, - 16916: 0x8D14, - 16917: 0x8D15, - 16918: 0x8D16, - 16919: 0x8D17, - 16920: 0x8D18, - 16921: 0x8D19, - 16922: 0x8D1A, - 16923: 0x8D1B, - 16924: 0x8D1C, - 16925: 0x8D20, - 16926: 0x8D51, - 16927: 0x8D52, - 16928: 0x8D57, - 16929: 0x8D5F, - 16930: 0x8D65, - 16931: 0x8D68, - 16932: 0x8D69, - 16933: 0x8D6A, - 16934: 0x8D6C, - 16935: 0x8D6E, - 16936: 0x8D6F, - 16937: 0x8D71, - 16938: 0x8D72, - 16939: 0x8D78, - 16940: 0x8D79, - 16941: 0x8D7A, - 16942: 0x8D7B, - 16943: 0x8D7C, - 16944: 0x8D7D, - 16945: 0x8D7E, - 16946: 0x8D7F, - 16947: 0x8D80, - 16948: 0x8D82, - 16949: 0x8D83, - 16950: 0x8D86, - 16951: 0x8D87, - 16952: 0x8D88, - 16953: 0x8D89, - 16954: 0x8D8C, - 16955: 0x8D8D, - 16956: 0x8D8E, - 16957: 0x8D8F, - 16958: 0x8D90, - 16959: 0x8D92, - 16960: 0x8D93, - 16961: 0x8D95, - 16962: 0x8D96, - 16963: 0x8D97, - 16964: 0x8D98, - 16965: 0x8D99, - 16966: 0x8D9A, - 16967: 0x8D9B, - 16968: 0x8D9C, - 16969: 0x8D9D, - 16970: 0x8D9E, - 16971: 0x8DA0, - 16972: 0x8DA1, - 16973: 0x8DA2, - 16974: 0x8DA4, - 16975: 0x8DA5, - 16976: 0x8DA6, - 16977: 0x8DA7, - 16978: 0x8DA8, - 16979: 0x8DA9, - 16980: 0x8DAA, - 16981: 0x8DAB, - 16982: 0x8DAC, - 16983: 0x8DAD, - 16984: 0x8DAE, - 16985: 0x8DAF, - 16986: 0x8DB0, - 16987: 0x8DB2, - 16988: 0x8DB6, - 16989: 0x8DB7, - 16990: 0x8DB9, - 16991: 0x8DBB, - 16992: 0x8DBD, - 16993: 0x8DC0, - 16994: 0x8DC1, - 16995: 0x8DC2, - 16996: 0x8DC5, - 16997: 0x8DC7, - 16998: 0x8DC8, - 16999: 0x8DC9, - 17000: 0x8DCA, - 17001: 0x8DCD, - 17002: 0x8DD0, - 17003: 0x8DD2, - 17004: 0x8DD3, - 17005: 0x8DD4, - 17006: 0x51C7, - 17007: 0x5196, - 17008: 0x51A2, - 17009: 0x51A5, - 17010: 0x8BA0, - 17011: 0x8BA6, - 17012: 0x8BA7, - 17013: 0x8BAA, - 17014: 0x8BB4, - 17015: 0x8BB5, - 17016: 0x8BB7, - 17017: 0x8BC2, - 17018: 0x8BC3, - 17019: 0x8BCB, - 17020: 0x8BCF, - 17021: 0x8BCE, - 17022: 0x8BD2, - 17023: 0x8BD3, - 17024: 0x8BD4, - 17025: 0x8BD6, - 17026: 0x8BD8, - 17027: 0x8BD9, - 17028: 0x8BDC, - 17029: 0x8BDF, - 17030: 0x8BE0, - 17031: 0x8BE4, - 17032: 0x8BE8, - 17033: 0x8BE9, - 17034: 0x8BEE, - 17035: 0x8BF0, - 17036: 0x8BF3, - 17037: 0x8BF6, - 17038: 0x8BF9, - 17039: 0x8BFC, - 17040: 0x8BFF, - 17041: 0x8C00, - 17042: 0x8C02, - 17043: 0x8C04, - 17044: 0x8C07, - 17045: 0x8C0C, - 17046: 0x8C0F, - 17047: 0x8C11, - 17048: 0x8C12, - 17049: 0x8C14, - 17050: 0x8C15, - 17051: 0x8C16, - 17052: 0x8C19, - 17053: 0x8C1B, - 17054: 0x8C18, - 17055: 0x8C1D, - 17056: 0x8C1F, - 17057: 0x8C20, - 17058: 0x8C21, - 17059: 0x8C25, - 17060: 0x8C27, - 17061: 0x8C2A, - 17062: 0x8C2B, - 17063: 0x8C2E, - 17064: 0x8C2F, - 17065: 0x8C32, - 17066: 0x8C33, - 17067: 0x8C35, - 17068: 0x8C36, - 17069: 0x5369, - 17070: 0x537A, - 17071: 0x961D, - 17072: 0x9622, - 17073: 0x9621, - 17074: 0x9631, - 17075: 0x962A, - 17076: 0x963D, - 17077: 0x963C, - 17078: 0x9642, - 17079: 0x9649, - 17080: 0x9654, - 17081: 0x965F, - 17082: 0x9667, - 17083: 0x966C, - 17084: 0x9672, - 17085: 0x9674, - 17086: 0x9688, - 17087: 0x968D, - 17088: 0x9697, - 17089: 0x96B0, - 17090: 0x9097, - 17091: 0x909B, - 17092: 0x909D, - 17093: 0x9099, - 17094: 0x90AC, - 17095: 0x90A1, - 17096: 0x90B4, - 17097: 0x90B3, - 17098: 0x90B6, - 17099: 0x90BA, - 17100: 0x8DD5, - 17101: 0x8DD8, - 17102: 0x8DD9, - 17103: 0x8DDC, - 17104: 0x8DE0, - 17105: 0x8DE1, - 17106: 0x8DE2, - 17107: 0x8DE5, - 17108: 0x8DE6, - 17109: 0x8DE7, - 17110: 0x8DE9, - 17111: 0x8DED, - 17112: 0x8DEE, - 17113: 0x8DF0, - 17114: 0x8DF1, - 17115: 0x8DF2, - 17116: 0x8DF4, - 17117: 0x8DF6, - 17118: 0x8DFC, - 17119: 0x8DFE, - 17120: 0x8DFF, - 17121: 0x8E00, - 17122: 0x8E01, - 17123: 0x8E02, - 17124: 0x8E03, - 17125: 0x8E04, - 17126: 0x8E06, - 17127: 0x8E07, - 17128: 0x8E08, - 17129: 0x8E0B, - 17130: 0x8E0D, - 17131: 0x8E0E, - 17132: 0x8E10, - 17133: 0x8E11, - 17134: 0x8E12, - 17135: 0x8E13, - 17136: 0x8E15, - 17137: 0x8E16, - 17138: 0x8E17, - 17139: 0x8E18, - 17140: 0x8E19, - 17141: 0x8E1A, - 17142: 0x8E1B, - 17143: 0x8E1C, - 17144: 0x8E20, - 17145: 0x8E21, - 17146: 0x8E24, - 17147: 0x8E25, - 17148: 0x8E26, - 17149: 0x8E27, - 17150: 0x8E28, - 17151: 0x8E2B, - 17152: 0x8E2D, - 17153: 0x8E30, - 17154: 0x8E32, - 17155: 0x8E33, - 17156: 0x8E34, - 17157: 0x8E36, - 17158: 0x8E37, - 17159: 0x8E38, - 17160: 0x8E3B, - 17161: 0x8E3C, - 17162: 0x8E3E, - 17163: 0x8E3F, - 17164: 0x8E43, - 17165: 0x8E45, - 17166: 0x8E46, - 17167: 0x8E4C, - 17168: 0x8E4D, - 17169: 0x8E4E, - 17170: 0x8E4F, - 17171: 0x8E50, - 17172: 0x8E53, - 17173: 0x8E54, - 17174: 0x8E55, - 17175: 0x8E56, - 17176: 0x8E57, - 17177: 0x8E58, - 17178: 0x8E5A, - 17179: 0x8E5B, - 17180: 0x8E5C, - 17181: 0x8E5D, - 17182: 0x8E5E, - 17183: 0x8E5F, - 17184: 0x8E60, - 17185: 0x8E61, - 17186: 0x8E62, - 17187: 0x8E63, - 17188: 0x8E64, - 17189: 0x8E65, - 17190: 0x8E67, - 17191: 0x8E68, - 17192: 0x8E6A, - 17193: 0x8E6B, - 17194: 0x8E6E, - 17195: 0x8E71, - 17196: 0x90B8, - 17197: 0x90B0, - 17198: 0x90CF, - 17199: 0x90C5, - 17200: 0x90BE, - 17201: 0x90D0, - 17202: 0x90C4, - 17203: 0x90C7, - 17204: 0x90D3, - 17205: 0x90E6, - 17206: 0x90E2, - 17207: 0x90DC, - 17208: 0x90D7, - 17209: 0x90DB, - 17210: 0x90EB, - 17211: 0x90EF, - 17212: 0x90FE, - 17213: 0x9104, - 17214: 0x9122, - 17215: 0x911E, - 17216: 0x9123, - 17217: 0x9131, - 17218: 0x912F, - 17219: 0x9139, - 17220: 0x9143, - 17221: 0x9146, - 17222: 0x520D, - 17223: 0x5942, - 17224: 0x52A2, - 17225: 0x52AC, - 17226: 0x52AD, - 17227: 0x52BE, - 17228: 0x54FF, - 17229: 0x52D0, - 17230: 0x52D6, - 17231: 0x52F0, - 17232: 0x53DF, - 17233: 0x71EE, - 17234: 0x77CD, - 17235: 0x5EF4, - 17236: 0x51F5, - 17237: 0x51FC, - 17238: 0x9B2F, - 17239: 0x53B6, - 17240: 0x5F01, - 17241: 0x755A, - 17242: 0x5DEF, - 17243: 0x574C, - 17244: 0x57A9, - 17245: 0x57A1, - 17246: 0x587E, - 17247: 0x58BC, - 17248: 0x58C5, - 17249: 0x58D1, - 17250: 0x5729, - 17251: 0x572C, - 17252: 0x572A, - 17253: 0x5733, - 17254: 0x5739, - 17255: 0x572E, - 17256: 0x572F, - 17257: 0x575C, - 17258: 0x573B, - 17259: 0x5742, - 17260: 0x5769, - 17261: 0x5785, - 17262: 0x576B, - 17263: 0x5786, - 17264: 0x577C, - 17265: 0x577B, - 17266: 0x5768, - 17267: 0x576D, - 17268: 0x5776, - 17269: 0x5773, - 17270: 0x57AD, - 17271: 0x57A4, - 17272: 0x578C, - 17273: 0x57B2, - 17274: 0x57CF, - 17275: 0x57A7, - 17276: 0x57B4, - 17277: 0x5793, - 17278: 0x57A0, - 17279: 0x57D5, - 17280: 0x57D8, - 17281: 0x57DA, - 17282: 0x57D9, - 17283: 0x57D2, - 17284: 0x57B8, - 17285: 0x57F4, - 17286: 0x57EF, - 17287: 0x57F8, - 17288: 0x57E4, - 17289: 0x57DD, - 17290: 0x8E73, - 17291: 0x8E75, - 17292: 0x8E77, - 17293: 0x8E78, - 17294: 0x8E79, - 17295: 0x8E7A, - 17296: 0x8E7B, - 17297: 0x8E7D, - 17298: 0x8E7E, - 17299: 0x8E80, - 17300: 0x8E82, - 17301: 0x8E83, - 17302: 0x8E84, - 17303: 0x8E86, - 17304: 0x8E88, - 17305: 0x8E89, - 17306: 0x8E8A, - 17307: 0x8E8B, - 17308: 0x8E8C, - 17309: 0x8E8D, - 17310: 0x8E8E, - 17311: 0x8E91, - 17312: 0x8E92, - 17313: 0x8E93, - 17314: 0x8E95, - 17315: 0x8E96, - 17316: 0x8E97, - 17317: 0x8E98, - 17318: 0x8E99, - 17319: 0x8E9A, - 17320: 0x8E9B, - 17321: 0x8E9D, - 17322: 0x8E9F, - 17323: 0x8EA0, - 17324: 0x8EA1, - 17325: 0x8EA2, - 17326: 0x8EA3, - 17327: 0x8EA4, - 17328: 0x8EA5, - 17329: 0x8EA6, - 17330: 0x8EA7, - 17331: 0x8EA8, - 17332: 0x8EA9, - 17333: 0x8EAA, - 17334: 0x8EAD, - 17335: 0x8EAE, - 17336: 0x8EB0, - 17337: 0x8EB1, - 17338: 0x8EB3, - 17339: 0x8EB4, - 17340: 0x8EB5, - 17341: 0x8EB6, - 17342: 0x8EB7, - 17343: 0x8EB8, - 17344: 0x8EB9, - 17345: 0x8EBB, - 17346: 0x8EBC, - 17347: 0x8EBD, - 17348: 0x8EBE, - 17349: 0x8EBF, - 17350: 0x8EC0, - 17351: 0x8EC1, - 17352: 0x8EC2, - 17353: 0x8EC3, - 17354: 0x8EC4, - 17355: 0x8EC5, - 17356: 0x8EC6, - 17357: 0x8EC7, - 17358: 0x8EC8, - 17359: 0x8EC9, - 17360: 0x8ECA, - 17361: 0x8ECB, - 17362: 0x8ECC, - 17363: 0x8ECD, - 17364: 0x8ECF, - 17365: 0x8ED0, - 17366: 0x8ED1, - 17367: 0x8ED2, - 17368: 0x8ED3, - 17369: 0x8ED4, - 17370: 0x8ED5, - 17371: 0x8ED6, - 17372: 0x8ED7, - 17373: 0x8ED8, - 17374: 0x8ED9, - 17375: 0x8EDA, - 17376: 0x8EDB, - 17377: 0x8EDC, - 17378: 0x8EDD, - 17379: 0x8EDE, - 17380: 0x8EDF, - 17381: 0x8EE0, - 17382: 0x8EE1, - 17383: 0x8EE2, - 17384: 0x8EE3, - 17385: 0x8EE4, - 17386: 0x580B, - 17387: 0x580D, - 17388: 0x57FD, - 17389: 0x57ED, - 17390: 0x5800, - 17391: 0x581E, - 17392: 0x5819, - 17393: 0x5844, - 17394: 0x5820, - 17395: 0x5865, - 17396: 0x586C, - 17397: 0x5881, - 17398: 0x5889, - 17399: 0x589A, - 17400: 0x5880, - 17401: 0x99A8, - 17402: 0x9F19, - 17403: 0x61FF, - 17404: 0x8279, - 17405: 0x827D, - 17406: 0x827F, - 17407: 0x828F, - 17408: 0x828A, - 17409: 0x82A8, - 17410: 0x8284, - 17411: 0x828E, - 17412: 0x8291, - 17413: 0x8297, - 17414: 0x8299, - 17415: 0x82AB, - 17416: 0x82B8, - 17417: 0x82BE, - 17418: 0x82B0, - 17419: 0x82C8, - 17420: 0x82CA, - 17421: 0x82E3, - 17422: 0x8298, - 17423: 0x82B7, - 17424: 0x82AE, - 17425: 0x82CB, - 17426: 0x82CC, - 17427: 0x82C1, - 17428: 0x82A9, - 17429: 0x82B4, - 17430: 0x82A1, - 17431: 0x82AA, - 17432: 0x829F, - 17433: 0x82C4, - 17434: 0x82CE, - 17435: 0x82A4, - 17436: 0x82E1, - 17437: 0x8309, - 17438: 0x82F7, - 17439: 0x82E4, - 17440: 0x830F, - 17441: 0x8307, - 17442: 0x82DC, - 17443: 0x82F4, - 17444: 0x82D2, - 17445: 0x82D8, - 17446: 0x830C, - 17447: 0x82FB, - 17448: 0x82D3, - 17449: 0x8311, - 17450: 0x831A, - 17451: 0x8306, - 17452: 0x8314, - 17453: 0x8315, - 17454: 0x82E0, - 17455: 0x82D5, - 17456: 0x831C, - 17457: 0x8351, - 17458: 0x835B, - 17459: 0x835C, - 17460: 0x8308, - 17461: 0x8392, - 17462: 0x833C, - 17463: 0x8334, - 17464: 0x8331, - 17465: 0x839B, - 17466: 0x835E, - 17467: 0x832F, - 17468: 0x834F, - 17469: 0x8347, - 17470: 0x8343, - 17471: 0x835F, - 17472: 0x8340, - 17473: 0x8317, - 17474: 0x8360, - 17475: 0x832D, - 17476: 0x833A, - 17477: 0x8333, - 17478: 0x8366, - 17479: 0x8365, - 17480: 0x8EE5, - 17481: 0x8EE6, - 17482: 0x8EE7, - 17483: 0x8EE8, - 17484: 0x8EE9, - 17485: 0x8EEA, - 17486: 0x8EEB, - 17487: 0x8EEC, - 17488: 0x8EED, - 17489: 0x8EEE, - 17490: 0x8EEF, - 17491: 0x8EF0, - 17492: 0x8EF1, - 17493: 0x8EF2, - 17494: 0x8EF3, - 17495: 0x8EF4, - 17496: 0x8EF5, - 17497: 0x8EF6, - 17498: 0x8EF7, - 17499: 0x8EF8, - 17500: 0x8EF9, - 17501: 0x8EFA, - 17502: 0x8EFB, - 17503: 0x8EFC, - 17504: 0x8EFD, - 17505: 0x8EFE, - 17506: 0x8EFF, - 17507: 0x8F00, - 17508: 0x8F01, - 17509: 0x8F02, - 17510: 0x8F03, - 17511: 0x8F04, - 17512: 0x8F05, - 17513: 0x8F06, - 17514: 0x8F07, - 17515: 0x8F08, - 17516: 0x8F09, - 17517: 0x8F0A, - 17518: 0x8F0B, - 17519: 0x8F0C, - 17520: 0x8F0D, - 17521: 0x8F0E, - 17522: 0x8F0F, - 17523: 0x8F10, - 17524: 0x8F11, - 17525: 0x8F12, - 17526: 0x8F13, - 17527: 0x8F14, - 17528: 0x8F15, - 17529: 0x8F16, - 17530: 0x8F17, - 17531: 0x8F18, - 17532: 0x8F19, - 17533: 0x8F1A, - 17534: 0x8F1B, - 17535: 0x8F1C, - 17536: 0x8F1D, - 17537: 0x8F1E, - 17538: 0x8F1F, - 17539: 0x8F20, - 17540: 0x8F21, - 17541: 0x8F22, - 17542: 0x8F23, - 17543: 0x8F24, - 17544: 0x8F25, - 17545: 0x8F26, - 17546: 0x8F27, - 17547: 0x8F28, - 17548: 0x8F29, - 17549: 0x8F2A, - 17550: 0x8F2B, - 17551: 0x8F2C, - 17552: 0x8F2D, - 17553: 0x8F2E, - 17554: 0x8F2F, - 17555: 0x8F30, - 17556: 0x8F31, - 17557: 0x8F32, - 17558: 0x8F33, - 17559: 0x8F34, - 17560: 0x8F35, - 17561: 0x8F36, - 17562: 0x8F37, - 17563: 0x8F38, - 17564: 0x8F39, - 17565: 0x8F3A, - 17566: 0x8F3B, - 17567: 0x8F3C, - 17568: 0x8F3D, - 17569: 0x8F3E, - 17570: 0x8F3F, - 17571: 0x8F40, - 17572: 0x8F41, - 17573: 0x8F42, - 17574: 0x8F43, - 17575: 0x8F44, - 17576: 0x8368, - 17577: 0x831B, - 17578: 0x8369, - 17579: 0x836C, - 17580: 0x836A, - 17581: 0x836D, - 17582: 0x836E, - 17583: 0x83B0, - 17584: 0x8378, - 17585: 0x83B3, - 17586: 0x83B4, - 17587: 0x83A0, - 17588: 0x83AA, - 17589: 0x8393, - 17590: 0x839C, - 17591: 0x8385, - 17592: 0x837C, - 17593: 0x83B6, - 17594: 0x83A9, - 17595: 0x837D, - 17596: 0x83B8, - 17597: 0x837B, - 17598: 0x8398, - 17599: 0x839E, - 17600: 0x83A8, - 17601: 0x83BA, - 17602: 0x83BC, - 17603: 0x83C1, - 17604: 0x8401, - 17605: 0x83E5, - 17606: 0x83D8, - 17607: 0x5807, - 17608: 0x8418, - 17609: 0x840B, - 17610: 0x83DD, - 17611: 0x83FD, - 17612: 0x83D6, - 17613: 0x841C, - 17614: 0x8438, - 17615: 0x8411, - 17616: 0x8406, - 17617: 0x83D4, - 17618: 0x83DF, - 17619: 0x840F, - 17620: 0x8403, - 17621: 0x83F8, - 17622: 0x83F9, - 17623: 0x83EA, - 17624: 0x83C5, - 17625: 0x83C0, - 17626: 0x8426, - 17627: 0x83F0, - 17628: 0x83E1, - 17629: 0x845C, - 17630: 0x8451, - 17631: 0x845A, - 17632: 0x8459, - 17633: 0x8473, - 17634: 0x8487, - 17635: 0x8488, - 17636: 0x847A, - 17637: 0x8489, - 17638: 0x8478, - 17639: 0x843C, - 17640: 0x8446, - 17641: 0x8469, - 17642: 0x8476, - 17643: 0x848C, - 17644: 0x848E, - 17645: 0x8431, - 17646: 0x846D, - 17647: 0x84C1, - 17648: 0x84CD, - 17649: 0x84D0, - 17650: 0x84E6, - 17651: 0x84BD, - 17652: 0x84D3, - 17653: 0x84CA, - 17654: 0x84BF, - 17655: 0x84BA, - 17656: 0x84E0, - 17657: 0x84A1, - 17658: 0x84B9, - 17659: 0x84B4, - 17660: 0x8497, - 17661: 0x84E5, - 17662: 0x84E3, - 17663: 0x850C, - 17664: 0x750D, - 17665: 0x8538, - 17666: 0x84F0, - 17667: 0x8539, - 17668: 0x851F, - 17669: 0x853A, - 17670: 0x8F45, - 17671: 0x8F46, - 17672: 0x8F47, - 17673: 0x8F48, - 17674: 0x8F49, - 17675: 0x8F4A, - 17676: 0x8F4B, - 17677: 0x8F4C, - 17678: 0x8F4D, - 17679: 0x8F4E, - 17680: 0x8F4F, - 17681: 0x8F50, - 17682: 0x8F51, - 17683: 0x8F52, - 17684: 0x8F53, - 17685: 0x8F54, - 17686: 0x8F55, - 17687: 0x8F56, - 17688: 0x8F57, - 17689: 0x8F58, - 17690: 0x8F59, - 17691: 0x8F5A, - 17692: 0x8F5B, - 17693: 0x8F5C, - 17694: 0x8F5D, - 17695: 0x8F5E, - 17696: 0x8F5F, - 17697: 0x8F60, - 17698: 0x8F61, - 17699: 0x8F62, - 17700: 0x8F63, - 17701: 0x8F64, - 17702: 0x8F65, - 17703: 0x8F6A, - 17704: 0x8F80, - 17705: 0x8F8C, - 17706: 0x8F92, - 17707: 0x8F9D, - 17708: 0x8FA0, - 17709: 0x8FA1, - 17710: 0x8FA2, - 17711: 0x8FA4, - 17712: 0x8FA5, - 17713: 0x8FA6, - 17714: 0x8FA7, - 17715: 0x8FAA, - 17716: 0x8FAC, - 17717: 0x8FAD, - 17718: 0x8FAE, - 17719: 0x8FAF, - 17720: 0x8FB2, - 17721: 0x8FB3, - 17722: 0x8FB4, - 17723: 0x8FB5, - 17724: 0x8FB7, - 17725: 0x8FB8, - 17726: 0x8FBA, - 17727: 0x8FBB, - 17728: 0x8FBC, - 17729: 0x8FBF, - 17730: 0x8FC0, - 17731: 0x8FC3, - 17732: 0x8FC6, - 17733: 0x8FC9, - 17734: 0x8FCA, - 17735: 0x8FCB, - 17736: 0x8FCC, - 17737: 0x8FCD, - 17738: 0x8FCF, - 17739: 0x8FD2, - 17740: 0x8FD6, - 17741: 0x8FD7, - 17742: 0x8FDA, - 17743: 0x8FE0, - 17744: 0x8FE1, - 17745: 0x8FE3, - 17746: 0x8FE7, - 17747: 0x8FEC, - 17748: 0x8FEF, - 17749: 0x8FF1, - 17750: 0x8FF2, - 17751: 0x8FF4, - 17752: 0x8FF5, - 17753: 0x8FF6, - 17754: 0x8FFA, - 17755: 0x8FFB, - 17756: 0x8FFC, - 17757: 0x8FFE, - 17758: 0x8FFF, - 17759: 0x9007, - 17760: 0x9008, - 17761: 0x900C, - 17762: 0x900E, - 17763: 0x9013, - 17764: 0x9015, - 17765: 0x9018, - 17766: 0x8556, - 17767: 0x853B, - 17768: 0x84FF, - 17769: 0x84FC, - 17770: 0x8559, - 17771: 0x8548, - 17772: 0x8568, - 17773: 0x8564, - 17774: 0x855E, - 17775: 0x857A, - 17776: 0x77A2, - 17777: 0x8543, - 17778: 0x8572, - 17779: 0x857B, - 17780: 0x85A4, - 17781: 0x85A8, - 17782: 0x8587, - 17783: 0x858F, - 17784: 0x8579, - 17785: 0x85AE, - 17786: 0x859C, - 17787: 0x8585, - 17788: 0x85B9, - 17789: 0x85B7, - 17790: 0x85B0, - 17791: 0x85D3, - 17792: 0x85C1, - 17793: 0x85DC, - 17794: 0x85FF, - 17795: 0x8627, - 17796: 0x8605, - 17797: 0x8629, - 17798: 0x8616, - 17799: 0x863C, - 17800: 0x5EFE, - 17801: 0x5F08, - 17802: 0x593C, - 17803: 0x5941, - 17804: 0x8037, - 17805: 0x5955, - 17806: 0x595A, - 17807: 0x5958, - 17808: 0x530F, - 17809: 0x5C22, - 17810: 0x5C25, - 17811: 0x5C2C, - 17812: 0x5C34, - 17813: 0x624C, - 17814: 0x626A, - 17815: 0x629F, - 17816: 0x62BB, - 17817: 0x62CA, - 17818: 0x62DA, - 17819: 0x62D7, - 17820: 0x62EE, - 17821: 0x6322, - 17822: 0x62F6, - 17823: 0x6339, - 17824: 0x634B, - 17825: 0x6343, - 17826: 0x63AD, - 17827: 0x63F6, - 17828: 0x6371, - 17829: 0x637A, - 17830: 0x638E, - 17831: 0x63B4, - 17832: 0x636D, - 17833: 0x63AC, - 17834: 0x638A, - 17835: 0x6369, - 17836: 0x63AE, - 17837: 0x63BC, - 17838: 0x63F2, - 17839: 0x63F8, - 17840: 0x63E0, - 17841: 0x63FF, - 17842: 0x63C4, - 17843: 0x63DE, - 17844: 0x63CE, - 17845: 0x6452, - 17846: 0x63C6, - 17847: 0x63BE, - 17848: 0x6445, - 17849: 0x6441, - 17850: 0x640B, - 17851: 0x641B, - 17852: 0x6420, - 17853: 0x640C, - 17854: 0x6426, - 17855: 0x6421, - 17856: 0x645E, - 17857: 0x6484, - 17858: 0x646D, - 17859: 0x6496, - 17860: 0x9019, - 17861: 0x901C, - 17862: 0x9023, - 17863: 0x9024, - 17864: 0x9025, - 17865: 0x9027, - 17866: 0x9028, - 17867: 0x9029, - 17868: 0x902A, - 17869: 0x902B, - 17870: 0x902C, - 17871: 0x9030, - 17872: 0x9031, - 17873: 0x9032, - 17874: 0x9033, - 17875: 0x9034, - 17876: 0x9037, - 17877: 0x9039, - 17878: 0x903A, - 17879: 0x903D, - 17880: 0x903F, - 17881: 0x9040, - 17882: 0x9043, - 17883: 0x9045, - 17884: 0x9046, - 17885: 0x9048, - 17886: 0x9049, - 17887: 0x904A, - 17888: 0x904B, - 17889: 0x904C, - 17890: 0x904E, - 17891: 0x9054, - 17892: 0x9055, - 17893: 0x9056, - 17894: 0x9059, - 17895: 0x905A, - 17896: 0x905C, - 17897: 0x905D, - 17898: 0x905E, - 17899: 0x905F, - 17900: 0x9060, - 17901: 0x9061, - 17902: 0x9064, - 17903: 0x9066, - 17904: 0x9067, - 17905: 0x9069, - 17906: 0x906A, - 17907: 0x906B, - 17908: 0x906C, - 17909: 0x906F, - 17910: 0x9070, - 17911: 0x9071, - 17912: 0x9072, - 17913: 0x9073, - 17914: 0x9076, - 17915: 0x9077, - 17916: 0x9078, - 17917: 0x9079, - 17918: 0x907A, - 17919: 0x907B, - 17920: 0x907C, - 17921: 0x907E, - 17922: 0x9081, - 17923: 0x9084, - 17924: 0x9085, - 17925: 0x9086, - 17926: 0x9087, - 17927: 0x9089, - 17928: 0x908A, - 17929: 0x908C, - 17930: 0x908D, - 17931: 0x908E, - 17932: 0x908F, - 17933: 0x9090, - 17934: 0x9092, - 17935: 0x9094, - 17936: 0x9096, - 17937: 0x9098, - 17938: 0x909A, - 17939: 0x909C, - 17940: 0x909E, - 17941: 0x909F, - 17942: 0x90A0, - 17943: 0x90A4, - 17944: 0x90A5, - 17945: 0x90A7, - 17946: 0x90A8, - 17947: 0x90A9, - 17948: 0x90AB, - 17949: 0x90AD, - 17950: 0x90B2, - 17951: 0x90B7, - 17952: 0x90BC, - 17953: 0x90BD, - 17954: 0x90BF, - 17955: 0x90C0, - 17956: 0x647A, - 17957: 0x64B7, - 17958: 0x64B8, - 17959: 0x6499, - 17960: 0x64BA, - 17961: 0x64C0, - 17962: 0x64D0, - 17963: 0x64D7, - 17964: 0x64E4, - 17965: 0x64E2, - 17966: 0x6509, - 17967: 0x6525, - 17968: 0x652E, - 17969: 0x5F0B, - 17970: 0x5FD2, - 17971: 0x7519, - 17972: 0x5F11, - 17973: 0x535F, - 17974: 0x53F1, - 17975: 0x53FD, - 17976: 0x53E9, - 17977: 0x53E8, - 17978: 0x53FB, - 17979: 0x5412, - 17980: 0x5416, - 17981: 0x5406, - 17982: 0x544B, - 17983: 0x5452, - 17984: 0x5453, - 17985: 0x5454, - 17986: 0x5456, - 17987: 0x5443, - 17988: 0x5421, - 17989: 0x5457, - 17990: 0x5459, - 17991: 0x5423, - 17992: 0x5432, - 17993: 0x5482, - 17994: 0x5494, - 17995: 0x5477, - 17996: 0x5471, - 17997: 0x5464, - 17998: 0x549A, - 17999: 0x549B, - 18000: 0x5484, - 18001: 0x5476, - 18002: 0x5466, - 18003: 0x549D, - 18004: 0x54D0, - 18005: 0x54AD, - 18006: 0x54C2, - 18007: 0x54B4, - 18008: 0x54D2, - 18009: 0x54A7, - 18010: 0x54A6, - 18011: 0x54D3, - 18012: 0x54D4, - 18013: 0x5472, - 18014: 0x54A3, - 18015: 0x54D5, - 18016: 0x54BB, - 18017: 0x54BF, - 18018: 0x54CC, - 18019: 0x54D9, - 18020: 0x54DA, - 18021: 0x54DC, - 18022: 0x54A9, - 18023: 0x54AA, - 18024: 0x54A4, - 18025: 0x54DD, - 18026: 0x54CF, - 18027: 0x54DE, - 18028: 0x551B, - 18029: 0x54E7, - 18030: 0x5520, - 18031: 0x54FD, - 18032: 0x5514, - 18033: 0x54F3, - 18034: 0x5522, - 18035: 0x5523, - 18036: 0x550F, - 18037: 0x5511, - 18038: 0x5527, - 18039: 0x552A, - 18040: 0x5567, - 18041: 0x558F, - 18042: 0x55B5, - 18043: 0x5549, - 18044: 0x556D, - 18045: 0x5541, - 18046: 0x5555, - 18047: 0x553F, - 18048: 0x5550, - 18049: 0x553C, - 18050: 0x90C2, - 18051: 0x90C3, - 18052: 0x90C6, - 18053: 0x90C8, - 18054: 0x90C9, - 18055: 0x90CB, - 18056: 0x90CC, - 18057: 0x90CD, - 18058: 0x90D2, - 18059: 0x90D4, - 18060: 0x90D5, - 18061: 0x90D6, - 18062: 0x90D8, - 18063: 0x90D9, - 18064: 0x90DA, - 18065: 0x90DE, - 18066: 0x90DF, - 18067: 0x90E0, - 18068: 0x90E3, - 18069: 0x90E4, - 18070: 0x90E5, - 18071: 0x90E9, - 18072: 0x90EA, - 18073: 0x90EC, - 18074: 0x90EE, - 18075: 0x90F0, - 18076: 0x90F1, - 18077: 0x90F2, - 18078: 0x90F3, - 18079: 0x90F5, - 18080: 0x90F6, - 18081: 0x90F7, - 18082: 0x90F9, - 18083: 0x90FA, - 18084: 0x90FB, - 18085: 0x90FC, - 18086: 0x90FF, - 18087: 0x9100, - 18088: 0x9101, - 18089: 0x9103, - 18090: 0x9105, - 18091: 0x9106, - 18092: 0x9107, - 18093: 0x9108, - 18094: 0x9109, - 18095: 0x910A, - 18096: 0x910B, - 18097: 0x910C, - 18098: 0x910D, - 18099: 0x910E, - 18100: 0x910F, - 18101: 0x9110, - 18102: 0x9111, - 18103: 0x9112, - 18104: 0x9113, - 18105: 0x9114, - 18106: 0x9115, - 18107: 0x9116, - 18108: 0x9117, - 18109: 0x9118, - 18110: 0x911A, - 18111: 0x911B, - 18112: 0x911C, - 18113: 0x911D, - 18114: 0x911F, - 18115: 0x9120, - 18116: 0x9121, - 18117: 0x9124, - 18118: 0x9125, - 18119: 0x9126, - 18120: 0x9127, - 18121: 0x9128, - 18122: 0x9129, - 18123: 0x912A, - 18124: 0x912B, - 18125: 0x912C, - 18126: 0x912D, - 18127: 0x912E, - 18128: 0x9130, - 18129: 0x9132, - 18130: 0x9133, - 18131: 0x9134, - 18132: 0x9135, - 18133: 0x9136, - 18134: 0x9137, - 18135: 0x9138, - 18136: 0x913A, - 18137: 0x913B, - 18138: 0x913C, - 18139: 0x913D, - 18140: 0x913E, - 18141: 0x913F, - 18142: 0x9140, - 18143: 0x9141, - 18144: 0x9142, - 18145: 0x9144, - 18146: 0x5537, - 18147: 0x5556, - 18148: 0x5575, - 18149: 0x5576, - 18150: 0x5577, - 18151: 0x5533, - 18152: 0x5530, - 18153: 0x555C, - 18154: 0x558B, - 18155: 0x55D2, - 18156: 0x5583, - 18157: 0x55B1, - 18158: 0x55B9, - 18159: 0x5588, - 18160: 0x5581, - 18161: 0x559F, - 18162: 0x557E, - 18163: 0x55D6, - 18164: 0x5591, - 18165: 0x557B, - 18166: 0x55DF, - 18167: 0x55BD, - 18168: 0x55BE, - 18169: 0x5594, - 18170: 0x5599, - 18171: 0x55EA, - 18172: 0x55F7, - 18173: 0x55C9, - 18174: 0x561F, - 18175: 0x55D1, - 18176: 0x55EB, - 18177: 0x55EC, - 18178: 0x55D4, - 18179: 0x55E6, - 18180: 0x55DD, - 18181: 0x55C4, - 18182: 0x55EF, - 18183: 0x55E5, - 18184: 0x55F2, - 18185: 0x55F3, - 18186: 0x55CC, - 18187: 0x55CD, - 18188: 0x55E8, - 18189: 0x55F5, - 18190: 0x55E4, - 18191: 0x8F94, - 18192: 0x561E, - 18193: 0x5608, - 18194: 0x560C, - 18195: 0x5601, - 18196: 0x5624, - 18197: 0x5623, - 18198: 0x55FE, - 18199: 0x5600, - 18200: 0x5627, - 18201: 0x562D, - 18202: 0x5658, - 18203: 0x5639, - 18204: 0x5657, - 18205: 0x562C, - 18206: 0x564D, - 18207: 0x5662, - 18208: 0x5659, - 18209: 0x565C, - 18210: 0x564C, - 18211: 0x5654, - 18212: 0x5686, - 18213: 0x5664, - 18214: 0x5671, - 18215: 0x566B, - 18216: 0x567B, - 18217: 0x567C, - 18218: 0x5685, - 18219: 0x5693, - 18220: 0x56AF, - 18221: 0x56D4, - 18222: 0x56D7, - 18223: 0x56DD, - 18224: 0x56E1, - 18225: 0x56F5, - 18226: 0x56EB, - 18227: 0x56F9, - 18228: 0x56FF, - 18229: 0x5704, - 18230: 0x570A, - 18231: 0x5709, - 18232: 0x571C, - 18233: 0x5E0F, - 18234: 0x5E19, - 18235: 0x5E14, - 18236: 0x5E11, - 18237: 0x5E31, - 18238: 0x5E3B, - 18239: 0x5E3C, - 18240: 0x9145, - 18241: 0x9147, - 18242: 0x9148, - 18243: 0x9151, - 18244: 0x9153, - 18245: 0x9154, - 18246: 0x9155, - 18247: 0x9156, - 18248: 0x9158, - 18249: 0x9159, - 18250: 0x915B, - 18251: 0x915C, - 18252: 0x915F, - 18253: 0x9160, - 18254: 0x9166, - 18255: 0x9167, - 18256: 0x9168, - 18257: 0x916B, - 18258: 0x916D, - 18259: 0x9173, - 18260: 0x917A, - 18261: 0x917B, - 18262: 0x917C, - 18263: 0x9180, - 18264: 0x9181, - 18265: 0x9182, - 18266: 0x9183, - 18267: 0x9184, - 18268: 0x9186, - 18269: 0x9188, - 18270: 0x918A, - 18271: 0x918E, - 18272: 0x918F, - 18273: 0x9193, - 18274: 0x9194, - 18275: 0x9195, - 18276: 0x9196, - 18277: 0x9197, - 18278: 0x9198, - 18279: 0x9199, - 18280: 0x919C, - 18281: 0x919D, - 18282: 0x919E, - 18283: 0x919F, - 18284: 0x91A0, - 18285: 0x91A1, - 18286: 0x91A4, - 18287: 0x91A5, - 18288: 0x91A6, - 18289: 0x91A7, - 18290: 0x91A8, - 18291: 0x91A9, - 18292: 0x91AB, - 18293: 0x91AC, - 18294: 0x91B0, - 18295: 0x91B1, - 18296: 0x91B2, - 18297: 0x91B3, - 18298: 0x91B6, - 18299: 0x91B7, - 18300: 0x91B8, - 18301: 0x91B9, - 18302: 0x91BB, - 18303: 0x91BC, - 18304: 0x91BD, - 18305: 0x91BE, - 18306: 0x91BF, - 18307: 0x91C0, - 18308: 0x91C1, - 18309: 0x91C2, - 18310: 0x91C3, - 18311: 0x91C4, - 18312: 0x91C5, - 18313: 0x91C6, - 18314: 0x91C8, - 18315: 0x91CB, - 18316: 0x91D0, - 18317: 0x91D2, - 18318: 0x91D3, - 18319: 0x91D4, - 18320: 0x91D5, - 18321: 0x91D6, - 18322: 0x91D7, - 18323: 0x91D8, - 18324: 0x91D9, - 18325: 0x91DA, - 18326: 0x91DB, - 18327: 0x91DD, - 18328: 0x91DE, - 18329: 0x91DF, - 18330: 0x91E0, - 18331: 0x91E1, - 18332: 0x91E2, - 18333: 0x91E3, - 18334: 0x91E4, - 18335: 0x91E5, - 18336: 0x5E37, - 18337: 0x5E44, - 18338: 0x5E54, - 18339: 0x5E5B, - 18340: 0x5E5E, - 18341: 0x5E61, - 18342: 0x5C8C, - 18343: 0x5C7A, - 18344: 0x5C8D, - 18345: 0x5C90, - 18346: 0x5C96, - 18347: 0x5C88, - 18348: 0x5C98, - 18349: 0x5C99, - 18350: 0x5C91, - 18351: 0x5C9A, - 18352: 0x5C9C, - 18353: 0x5CB5, - 18354: 0x5CA2, - 18355: 0x5CBD, - 18356: 0x5CAC, - 18357: 0x5CAB, - 18358: 0x5CB1, - 18359: 0x5CA3, - 18360: 0x5CC1, - 18361: 0x5CB7, - 18362: 0x5CC4, - 18363: 0x5CD2, - 18364: 0x5CE4, - 18365: 0x5CCB, - 18366: 0x5CE5, - 18367: 0x5D02, - 18368: 0x5D03, - 18369: 0x5D27, - 18370: 0x5D26, - 18371: 0x5D2E, - 18372: 0x5D24, - 18373: 0x5D1E, - 18374: 0x5D06, - 18375: 0x5D1B, - 18376: 0x5D58, - 18377: 0x5D3E, - 18378: 0x5D34, - 18379: 0x5D3D, - 18380: 0x5D6C, - 18381: 0x5D5B, - 18382: 0x5D6F, - 18383: 0x5D5D, - 18384: 0x5D6B, - 18385: 0x5D4B, - 18386: 0x5D4A, - 18387: 0x5D69, - 18388: 0x5D74, - 18389: 0x5D82, - 18390: 0x5D99, - 18391: 0x5D9D, - 18392: 0x8C73, - 18393: 0x5DB7, - 18394: 0x5DC5, - 18395: 0x5F73, - 18396: 0x5F77, - 18397: 0x5F82, - 18398: 0x5F87, - 18399: 0x5F89, - 18400: 0x5F8C, - 18401: 0x5F95, - 18402: 0x5F99, - 18403: 0x5F9C, - 18404: 0x5FA8, - 18405: 0x5FAD, - 18406: 0x5FB5, - 18407: 0x5FBC, - 18408: 0x8862, - 18409: 0x5F61, - 18410: 0x72AD, - 18411: 0x72B0, - 18412: 0x72B4, - 18413: 0x72B7, - 18414: 0x72B8, - 18415: 0x72C3, - 18416: 0x72C1, - 18417: 0x72CE, - 18418: 0x72CD, - 18419: 0x72D2, - 18420: 0x72E8, - 18421: 0x72EF, - 18422: 0x72E9, - 18423: 0x72F2, - 18424: 0x72F4, - 18425: 0x72F7, - 18426: 0x7301, - 18427: 0x72F3, - 18428: 0x7303, - 18429: 0x72FA, - 18430: 0x91E6, - 18431: 0x91E7, - 18432: 0x91E8, - 18433: 0x91E9, - 18434: 0x91EA, - 18435: 0x91EB, - 18436: 0x91EC, - 18437: 0x91ED, - 18438: 0x91EE, - 18439: 0x91EF, - 18440: 0x91F0, - 18441: 0x91F1, - 18442: 0x91F2, - 18443: 0x91F3, - 18444: 0x91F4, - 18445: 0x91F5, - 18446: 0x91F6, - 18447: 0x91F7, - 18448: 0x91F8, - 18449: 0x91F9, - 18450: 0x91FA, - 18451: 0x91FB, - 18452: 0x91FC, - 18453: 0x91FD, - 18454: 0x91FE, - 18455: 0x91FF, - 18456: 0x9200, - 18457: 0x9201, - 18458: 0x9202, - 18459: 0x9203, - 18460: 0x9204, - 18461: 0x9205, - 18462: 0x9206, - 18463: 0x9207, - 18464: 0x9208, - 18465: 0x9209, - 18466: 0x920A, - 18467: 0x920B, - 18468: 0x920C, - 18469: 0x920D, - 18470: 0x920E, - 18471: 0x920F, - 18472: 0x9210, - 18473: 0x9211, - 18474: 0x9212, - 18475: 0x9213, - 18476: 0x9214, - 18477: 0x9215, - 18478: 0x9216, - 18479: 0x9217, - 18480: 0x9218, - 18481: 0x9219, - 18482: 0x921A, - 18483: 0x921B, - 18484: 0x921C, - 18485: 0x921D, - 18486: 0x921E, - 18487: 0x921F, - 18488: 0x9220, - 18489: 0x9221, - 18490: 0x9222, - 18491: 0x9223, - 18492: 0x9224, - 18493: 0x9225, - 18494: 0x9226, - 18495: 0x9227, - 18496: 0x9228, - 18497: 0x9229, - 18498: 0x922A, - 18499: 0x922B, - 18500: 0x922C, - 18501: 0x922D, - 18502: 0x922E, - 18503: 0x922F, - 18504: 0x9230, - 18505: 0x9231, - 18506: 0x9232, - 18507: 0x9233, - 18508: 0x9234, - 18509: 0x9235, - 18510: 0x9236, - 18511: 0x9237, - 18512: 0x9238, - 18513: 0x9239, - 18514: 0x923A, - 18515: 0x923B, - 18516: 0x923C, - 18517: 0x923D, - 18518: 0x923E, - 18519: 0x923F, - 18520: 0x9240, - 18521: 0x9241, - 18522: 0x9242, - 18523: 0x9243, - 18524: 0x9244, - 18525: 0x9245, - 18526: 0x72FB, - 18527: 0x7317, - 18528: 0x7313, - 18529: 0x7321, - 18530: 0x730A, - 18531: 0x731E, - 18532: 0x731D, - 18533: 0x7315, - 18534: 0x7322, - 18535: 0x7339, - 18536: 0x7325, - 18537: 0x732C, - 18538: 0x7338, - 18539: 0x7331, - 18540: 0x7350, - 18541: 0x734D, - 18542: 0x7357, - 18543: 0x7360, - 18544: 0x736C, - 18545: 0x736F, - 18546: 0x737E, - 18547: 0x821B, - 18548: 0x5925, - 18549: 0x98E7, - 18550: 0x5924, - 18551: 0x5902, - 18552: 0x9963, - 18553: 0x9967, - 18554: 0x9968, - 18555: 0x9969, - 18556: 0x996A, - 18557: 0x996B, - 18558: 0x996C, - 18559: 0x9974, - 18560: 0x9977, - 18561: 0x997D, - 18562: 0x9980, - 18563: 0x9984, - 18564: 0x9987, - 18565: 0x998A, - 18566: 0x998D, - 18567: 0x9990, - 18568: 0x9991, - 18569: 0x9993, - 18570: 0x9994, - 18571: 0x9995, - 18572: 0x5E80, - 18573: 0x5E91, - 18574: 0x5E8B, - 18575: 0x5E96, - 18576: 0x5EA5, - 18577: 0x5EA0, - 18578: 0x5EB9, - 18579: 0x5EB5, - 18580: 0x5EBE, - 18581: 0x5EB3, - 18582: 0x8D53, - 18583: 0x5ED2, - 18584: 0x5ED1, - 18585: 0x5EDB, - 18586: 0x5EE8, - 18587: 0x5EEA, - 18588: 0x81BA, - 18589: 0x5FC4, - 18590: 0x5FC9, - 18591: 0x5FD6, - 18592: 0x5FCF, - 18593: 0x6003, - 18594: 0x5FEE, - 18595: 0x6004, - 18596: 0x5FE1, - 18597: 0x5FE4, - 18598: 0x5FFE, - 18599: 0x6005, - 18600: 0x6006, - 18601: 0x5FEA, - 18602: 0x5FED, - 18603: 0x5FF8, - 18604: 0x6019, - 18605: 0x6035, - 18606: 0x6026, - 18607: 0x601B, - 18608: 0x600F, - 18609: 0x600D, - 18610: 0x6029, - 18611: 0x602B, - 18612: 0x600A, - 18613: 0x603F, - 18614: 0x6021, - 18615: 0x6078, - 18616: 0x6079, - 18617: 0x607B, - 18618: 0x607A, - 18619: 0x6042, - 18620: 0x9246, - 18621: 0x9247, - 18622: 0x9248, - 18623: 0x9249, - 18624: 0x924A, - 18625: 0x924B, - 18626: 0x924C, - 18627: 0x924D, - 18628: 0x924E, - 18629: 0x924F, - 18630: 0x9250, - 18631: 0x9251, - 18632: 0x9252, - 18633: 0x9253, - 18634: 0x9254, - 18635: 0x9255, - 18636: 0x9256, - 18637: 0x9257, - 18638: 0x9258, - 18639: 0x9259, - 18640: 0x925A, - 18641: 0x925B, - 18642: 0x925C, - 18643: 0x925D, - 18644: 0x925E, - 18645: 0x925F, - 18646: 0x9260, - 18647: 0x9261, - 18648: 0x9262, - 18649: 0x9263, - 18650: 0x9264, - 18651: 0x9265, - 18652: 0x9266, - 18653: 0x9267, - 18654: 0x9268, - 18655: 0x9269, - 18656: 0x926A, - 18657: 0x926B, - 18658: 0x926C, - 18659: 0x926D, - 18660: 0x926E, - 18661: 0x926F, - 18662: 0x9270, - 18663: 0x9271, - 18664: 0x9272, - 18665: 0x9273, - 18666: 0x9275, - 18667: 0x9276, - 18668: 0x9277, - 18669: 0x9278, - 18670: 0x9279, - 18671: 0x927A, - 18672: 0x927B, - 18673: 0x927C, - 18674: 0x927D, - 18675: 0x927E, - 18676: 0x927F, - 18677: 0x9280, - 18678: 0x9281, - 18679: 0x9282, - 18680: 0x9283, - 18681: 0x9284, - 18682: 0x9285, - 18683: 0x9286, - 18684: 0x9287, - 18685: 0x9288, - 18686: 0x9289, - 18687: 0x928A, - 18688: 0x928B, - 18689: 0x928C, - 18690: 0x928D, - 18691: 0x928F, - 18692: 0x9290, - 18693: 0x9291, - 18694: 0x9292, - 18695: 0x9293, - 18696: 0x9294, - 18697: 0x9295, - 18698: 0x9296, - 18699: 0x9297, - 18700: 0x9298, - 18701: 0x9299, - 18702: 0x929A, - 18703: 0x929B, - 18704: 0x929C, - 18705: 0x929D, - 18706: 0x929E, - 18707: 0x929F, - 18708: 0x92A0, - 18709: 0x92A1, - 18710: 0x92A2, - 18711: 0x92A3, - 18712: 0x92A4, - 18713: 0x92A5, - 18714: 0x92A6, - 18715: 0x92A7, - 18716: 0x606A, - 18717: 0x607D, - 18718: 0x6096, - 18719: 0x609A, - 18720: 0x60AD, - 18721: 0x609D, - 18722: 0x6083, - 18723: 0x6092, - 18724: 0x608C, - 18725: 0x609B, - 18726: 0x60EC, - 18727: 0x60BB, - 18728: 0x60B1, - 18729: 0x60DD, - 18730: 0x60D8, - 18731: 0x60C6, - 18732: 0x60DA, - 18733: 0x60B4, - 18734: 0x6120, - 18735: 0x6126, - 18736: 0x6115, - 18737: 0x6123, - 18738: 0x60F4, - 18739: 0x6100, - 18740: 0x610E, - 18741: 0x612B, - 18742: 0x614A, - 18743: 0x6175, - 18744: 0x61AC, - 18745: 0x6194, - 18746: 0x61A7, - 18747: 0x61B7, - 18748: 0x61D4, - 18749: 0x61F5, - 18750: 0x5FDD, - 18751: 0x96B3, - 18752: 0x95E9, - 18753: 0x95EB, - 18754: 0x95F1, - 18755: 0x95F3, - 18756: 0x95F5, - 18757: 0x95F6, - 18758: 0x95FC, - 18759: 0x95FE, - 18760: 0x9603, - 18761: 0x9604, - 18762: 0x9606, - 18763: 0x9608, - 18764: 0x960A, - 18765: 0x960B, - 18766: 0x960C, - 18767: 0x960D, - 18768: 0x960F, - 18769: 0x9612, - 18770: 0x9615, - 18771: 0x9616, - 18772: 0x9617, - 18773: 0x9619, - 18774: 0x961A, - 18775: 0x4E2C, - 18776: 0x723F, - 18777: 0x6215, - 18778: 0x6C35, - 18779: 0x6C54, - 18780: 0x6C5C, - 18781: 0x6C4A, - 18782: 0x6CA3, - 18783: 0x6C85, - 18784: 0x6C90, - 18785: 0x6C94, - 18786: 0x6C8C, - 18787: 0x6C68, - 18788: 0x6C69, - 18789: 0x6C74, - 18790: 0x6C76, - 18791: 0x6C86, - 18792: 0x6CA9, - 18793: 0x6CD0, - 18794: 0x6CD4, - 18795: 0x6CAD, - 18796: 0x6CF7, - 18797: 0x6CF8, - 18798: 0x6CF1, - 18799: 0x6CD7, - 18800: 0x6CB2, - 18801: 0x6CE0, - 18802: 0x6CD6, - 18803: 0x6CFA, - 18804: 0x6CEB, - 18805: 0x6CEE, - 18806: 0x6CB1, - 18807: 0x6CD3, - 18808: 0x6CEF, - 18809: 0x6CFE, - 18810: 0x92A8, - 18811: 0x92A9, - 18812: 0x92AA, - 18813: 0x92AB, - 18814: 0x92AC, - 18815: 0x92AD, - 18816: 0x92AF, - 18817: 0x92B0, - 18818: 0x92B1, - 18819: 0x92B2, - 18820: 0x92B3, - 18821: 0x92B4, - 18822: 0x92B5, - 18823: 0x92B6, - 18824: 0x92B7, - 18825: 0x92B8, - 18826: 0x92B9, - 18827: 0x92BA, - 18828: 0x92BB, - 18829: 0x92BC, - 18830: 0x92BD, - 18831: 0x92BE, - 18832: 0x92BF, - 18833: 0x92C0, - 18834: 0x92C1, - 18835: 0x92C2, - 18836: 0x92C3, - 18837: 0x92C4, - 18838: 0x92C5, - 18839: 0x92C6, - 18840: 0x92C7, - 18841: 0x92C9, - 18842: 0x92CA, - 18843: 0x92CB, - 18844: 0x92CC, - 18845: 0x92CD, - 18846: 0x92CE, - 18847: 0x92CF, - 18848: 0x92D0, - 18849: 0x92D1, - 18850: 0x92D2, - 18851: 0x92D3, - 18852: 0x92D4, - 18853: 0x92D5, - 18854: 0x92D6, - 18855: 0x92D7, - 18856: 0x92D8, - 18857: 0x92D9, - 18858: 0x92DA, - 18859: 0x92DB, - 18860: 0x92DC, - 18861: 0x92DD, - 18862: 0x92DE, - 18863: 0x92DF, - 18864: 0x92E0, - 18865: 0x92E1, - 18866: 0x92E2, - 18867: 0x92E3, - 18868: 0x92E4, - 18869: 0x92E5, - 18870: 0x92E6, - 18871: 0x92E7, - 18872: 0x92E8, - 18873: 0x92E9, - 18874: 0x92EA, - 18875: 0x92EB, - 18876: 0x92EC, - 18877: 0x92ED, - 18878: 0x92EE, - 18879: 0x92EF, - 18880: 0x92F0, - 18881: 0x92F1, - 18882: 0x92F2, - 18883: 0x92F3, - 18884: 0x92F4, - 18885: 0x92F5, - 18886: 0x92F6, - 18887: 0x92F7, - 18888: 0x92F8, - 18889: 0x92F9, - 18890: 0x92FA, - 18891: 0x92FB, - 18892: 0x92FC, - 18893: 0x92FD, - 18894: 0x92FE, - 18895: 0x92FF, - 18896: 0x9300, - 18897: 0x9301, - 18898: 0x9302, - 18899: 0x9303, - 18900: 0x9304, - 18901: 0x9305, - 18902: 0x9306, - 18903: 0x9307, - 18904: 0x9308, - 18905: 0x9309, - 18906: 0x6D39, - 18907: 0x6D27, - 18908: 0x6D0C, - 18909: 0x6D43, - 18910: 0x6D48, - 18911: 0x6D07, - 18912: 0x6D04, - 18913: 0x6D19, - 18914: 0x6D0E, - 18915: 0x6D2B, - 18916: 0x6D4D, - 18917: 0x6D2E, - 18918: 0x6D35, - 18919: 0x6D1A, - 18920: 0x6D4F, - 18921: 0x6D52, - 18922: 0x6D54, - 18923: 0x6D33, - 18924: 0x6D91, - 18925: 0x6D6F, - 18926: 0x6D9E, - 18927: 0x6DA0, - 18928: 0x6D5E, - 18929: 0x6D93, - 18930: 0x6D94, - 18931: 0x6D5C, - 18932: 0x6D60, - 18933: 0x6D7C, - 18934: 0x6D63, - 18935: 0x6E1A, - 18936: 0x6DC7, - 18937: 0x6DC5, - 18938: 0x6DDE, - 18939: 0x6E0E, - 18940: 0x6DBF, - 18941: 0x6DE0, - 18942: 0x6E11, - 18943: 0x6DE6, - 18944: 0x6DDD, - 18945: 0x6DD9, - 18946: 0x6E16, - 18947: 0x6DAB, - 18948: 0x6E0C, - 18949: 0x6DAE, - 18950: 0x6E2B, - 18951: 0x6E6E, - 18952: 0x6E4E, - 18953: 0x6E6B, - 18954: 0x6EB2, - 18955: 0x6E5F, - 18956: 0x6E86, - 18957: 0x6E53, - 18958: 0x6E54, - 18959: 0x6E32, - 18960: 0x6E25, - 18961: 0x6E44, - 18962: 0x6EDF, - 18963: 0x6EB1, - 18964: 0x6E98, - 18965: 0x6EE0, - 18966: 0x6F2D, - 18967: 0x6EE2, - 18968: 0x6EA5, - 18969: 0x6EA7, - 18970: 0x6EBD, - 18971: 0x6EBB, - 18972: 0x6EB7, - 18973: 0x6ED7, - 18974: 0x6EB4, - 18975: 0x6ECF, - 18976: 0x6E8F, - 18977: 0x6EC2, - 18978: 0x6E9F, - 18979: 0x6F62, - 18980: 0x6F46, - 18981: 0x6F47, - 18982: 0x6F24, - 18983: 0x6F15, - 18984: 0x6EF9, - 18985: 0x6F2F, - 18986: 0x6F36, - 18987: 0x6F4B, - 18988: 0x6F74, - 18989: 0x6F2A, - 18990: 0x6F09, - 18991: 0x6F29, - 18992: 0x6F89, - 18993: 0x6F8D, - 18994: 0x6F8C, - 18995: 0x6F78, - 18996: 0x6F72, - 18997: 0x6F7C, - 18998: 0x6F7A, - 18999: 0x6FD1, - 19000: 0x930A, - 19001: 0x930B, - 19002: 0x930C, - 19003: 0x930D, - 19004: 0x930E, - 19005: 0x930F, - 19006: 0x9310, - 19007: 0x9311, - 19008: 0x9312, - 19009: 0x9313, - 19010: 0x9314, - 19011: 0x9315, - 19012: 0x9316, - 19013: 0x9317, - 19014: 0x9318, - 19015: 0x9319, - 19016: 0x931A, - 19017: 0x931B, - 19018: 0x931C, - 19019: 0x931D, - 19020: 0x931E, - 19021: 0x931F, - 19022: 0x9320, - 19023: 0x9321, - 19024: 0x9322, - 19025: 0x9323, - 19026: 0x9324, - 19027: 0x9325, - 19028: 0x9326, - 19029: 0x9327, - 19030: 0x9328, - 19031: 0x9329, - 19032: 0x932A, - 19033: 0x932B, - 19034: 0x932C, - 19035: 0x932D, - 19036: 0x932E, - 19037: 0x932F, - 19038: 0x9330, - 19039: 0x9331, - 19040: 0x9332, - 19041: 0x9333, - 19042: 0x9334, - 19043: 0x9335, - 19044: 0x9336, - 19045: 0x9337, - 19046: 0x9338, - 19047: 0x9339, - 19048: 0x933A, - 19049: 0x933B, - 19050: 0x933C, - 19051: 0x933D, - 19052: 0x933F, - 19053: 0x9340, - 19054: 0x9341, - 19055: 0x9342, - 19056: 0x9343, - 19057: 0x9344, - 19058: 0x9345, - 19059: 0x9346, - 19060: 0x9347, - 19061: 0x9348, - 19062: 0x9349, - 19063: 0x934A, - 19064: 0x934B, - 19065: 0x934C, - 19066: 0x934D, - 19067: 0x934E, - 19068: 0x934F, - 19069: 0x9350, - 19070: 0x9351, - 19071: 0x9352, - 19072: 0x9353, - 19073: 0x9354, - 19074: 0x9355, - 19075: 0x9356, - 19076: 0x9357, - 19077: 0x9358, - 19078: 0x9359, - 19079: 0x935A, - 19080: 0x935B, - 19081: 0x935C, - 19082: 0x935D, - 19083: 0x935E, - 19084: 0x935F, - 19085: 0x9360, - 19086: 0x9361, - 19087: 0x9362, - 19088: 0x9363, - 19089: 0x9364, - 19090: 0x9365, - 19091: 0x9366, - 19092: 0x9367, - 19093: 0x9368, - 19094: 0x9369, - 19095: 0x936B, - 19096: 0x6FC9, - 19097: 0x6FA7, - 19098: 0x6FB9, - 19099: 0x6FB6, - 19100: 0x6FC2, - 19101: 0x6FE1, - 19102: 0x6FEE, - 19103: 0x6FDE, - 19104: 0x6FE0, - 19105: 0x6FEF, - 19106: 0x701A, - 19107: 0x7023, - 19108: 0x701B, - 19109: 0x7039, - 19110: 0x7035, - 19111: 0x704F, - 19112: 0x705E, - 19113: 0x5B80, - 19114: 0x5B84, - 19115: 0x5B95, - 19116: 0x5B93, - 19117: 0x5BA5, - 19118: 0x5BB8, - 19119: 0x752F, - 19120: 0x9A9E, - 19121: 0x6434, - 19122: 0x5BE4, - 19123: 0x5BEE, - 19124: 0x8930, - 19125: 0x5BF0, - 19126: 0x8E47, - 19127: 0x8B07, - 19128: 0x8FB6, - 19129: 0x8FD3, - 19130: 0x8FD5, - 19131: 0x8FE5, - 19132: 0x8FEE, - 19133: 0x8FE4, - 19134: 0x8FE9, - 19135: 0x8FE6, - 19136: 0x8FF3, - 19137: 0x8FE8, - 19138: 0x9005, - 19139: 0x9004, - 19140: 0x900B, - 19141: 0x9026, - 19142: 0x9011, - 19143: 0x900D, - 19144: 0x9016, - 19145: 0x9021, - 19146: 0x9035, - 19147: 0x9036, - 19148: 0x902D, - 19149: 0x902F, - 19150: 0x9044, - 19151: 0x9051, - 19152: 0x9052, - 19153: 0x9050, - 19154: 0x9068, - 19155: 0x9058, - 19156: 0x9062, - 19157: 0x905B, - 19158: 0x66B9, - 19159: 0x9074, - 19160: 0x907D, - 19161: 0x9082, - 19162: 0x9088, - 19163: 0x9083, - 19164: 0x908B, - 19165: 0x5F50, - 19166: 0x5F57, - 19167: 0x5F56, - 19168: 0x5F58, - 19169: 0x5C3B, - 19170: 0x54AB, - 19171: 0x5C50, - 19172: 0x5C59, - 19173: 0x5B71, - 19174: 0x5C63, - 19175: 0x5C66, - 19176: 0x7FBC, - 19177: 0x5F2A, - 19178: 0x5F29, - 19179: 0x5F2D, - 19180: 0x8274, - 19181: 0x5F3C, - 19182: 0x9B3B, - 19183: 0x5C6E, - 19184: 0x5981, - 19185: 0x5983, - 19186: 0x598D, - 19187: 0x59A9, - 19188: 0x59AA, - 19189: 0x59A3, - 19190: 0x936C, - 19191: 0x936D, - 19192: 0x936E, - 19193: 0x936F, - 19194: 0x9370, - 19195: 0x9371, - 19196: 0x9372, - 19197: 0x9373, - 19198: 0x9374, - 19199: 0x9375, - 19200: 0x9376, - 19201: 0x9377, - 19202: 0x9378, - 19203: 0x9379, - 19204: 0x937A, - 19205: 0x937B, - 19206: 0x937C, - 19207: 0x937D, - 19208: 0x937E, - 19209: 0x937F, - 19210: 0x9380, - 19211: 0x9381, - 19212: 0x9382, - 19213: 0x9383, - 19214: 0x9384, - 19215: 0x9385, - 19216: 0x9386, - 19217: 0x9387, - 19218: 0x9388, - 19219: 0x9389, - 19220: 0x938A, - 19221: 0x938B, - 19222: 0x938C, - 19223: 0x938D, - 19224: 0x938E, - 19225: 0x9390, - 19226: 0x9391, - 19227: 0x9392, - 19228: 0x9393, - 19229: 0x9394, - 19230: 0x9395, - 19231: 0x9396, - 19232: 0x9397, - 19233: 0x9398, - 19234: 0x9399, - 19235: 0x939A, - 19236: 0x939B, - 19237: 0x939C, - 19238: 0x939D, - 19239: 0x939E, - 19240: 0x939F, - 19241: 0x93A0, - 19242: 0x93A1, - 19243: 0x93A2, - 19244: 0x93A3, - 19245: 0x93A4, - 19246: 0x93A5, - 19247: 0x93A6, - 19248: 0x93A7, - 19249: 0x93A8, - 19250: 0x93A9, - 19251: 0x93AA, - 19252: 0x93AB, - 19253: 0x93AC, - 19254: 0x93AD, - 19255: 0x93AE, - 19256: 0x93AF, - 19257: 0x93B0, - 19258: 0x93B1, - 19259: 0x93B2, - 19260: 0x93B3, - 19261: 0x93B4, - 19262: 0x93B5, - 19263: 0x93B6, - 19264: 0x93B7, - 19265: 0x93B8, - 19266: 0x93B9, - 19267: 0x93BA, - 19268: 0x93BB, - 19269: 0x93BC, - 19270: 0x93BD, - 19271: 0x93BE, - 19272: 0x93BF, - 19273: 0x93C0, - 19274: 0x93C1, - 19275: 0x93C2, - 19276: 0x93C3, - 19277: 0x93C4, - 19278: 0x93C5, - 19279: 0x93C6, - 19280: 0x93C7, - 19281: 0x93C8, - 19282: 0x93C9, - 19283: 0x93CB, - 19284: 0x93CC, - 19285: 0x93CD, - 19286: 0x5997, - 19287: 0x59CA, - 19288: 0x59AB, - 19289: 0x599E, - 19290: 0x59A4, - 19291: 0x59D2, - 19292: 0x59B2, - 19293: 0x59AF, - 19294: 0x59D7, - 19295: 0x59BE, - 19296: 0x5A05, - 19297: 0x5A06, - 19298: 0x59DD, - 19299: 0x5A08, - 19300: 0x59E3, - 19301: 0x59D8, - 19302: 0x59F9, - 19303: 0x5A0C, - 19304: 0x5A09, - 19305: 0x5A32, - 19306: 0x5A34, - 19307: 0x5A11, - 19308: 0x5A23, - 19309: 0x5A13, - 19310: 0x5A40, - 19311: 0x5A67, - 19312: 0x5A4A, - 19313: 0x5A55, - 19314: 0x5A3C, - 19315: 0x5A62, - 19316: 0x5A75, - 19317: 0x80EC, - 19318: 0x5AAA, - 19319: 0x5A9B, - 19320: 0x5A77, - 19321: 0x5A7A, - 19322: 0x5ABE, - 19323: 0x5AEB, - 19324: 0x5AB2, - 19325: 0x5AD2, - 19326: 0x5AD4, - 19327: 0x5AB8, - 19328: 0x5AE0, - 19329: 0x5AE3, - 19330: 0x5AF1, - 19331: 0x5AD6, - 19332: 0x5AE6, - 19333: 0x5AD8, - 19334: 0x5ADC, - 19335: 0x5B09, - 19336: 0x5B17, - 19337: 0x5B16, - 19338: 0x5B32, - 19339: 0x5B37, - 19340: 0x5B40, - 19341: 0x5C15, - 19342: 0x5C1C, - 19343: 0x5B5A, - 19344: 0x5B65, - 19345: 0x5B73, - 19346: 0x5B51, - 19347: 0x5B53, - 19348: 0x5B62, - 19349: 0x9A75, - 19350: 0x9A77, - 19351: 0x9A78, - 19352: 0x9A7A, - 19353: 0x9A7F, - 19354: 0x9A7D, - 19355: 0x9A80, - 19356: 0x9A81, - 19357: 0x9A85, - 19358: 0x9A88, - 19359: 0x9A8A, - 19360: 0x9A90, - 19361: 0x9A92, - 19362: 0x9A93, - 19363: 0x9A96, - 19364: 0x9A98, - 19365: 0x9A9B, - 19366: 0x9A9C, - 19367: 0x9A9D, - 19368: 0x9A9F, - 19369: 0x9AA0, - 19370: 0x9AA2, - 19371: 0x9AA3, - 19372: 0x9AA5, - 19373: 0x9AA7, - 19374: 0x7E9F, - 19375: 0x7EA1, - 19376: 0x7EA3, - 19377: 0x7EA5, - 19378: 0x7EA8, - 19379: 0x7EA9, - 19380: 0x93CE, - 19381: 0x93CF, - 19382: 0x93D0, - 19383: 0x93D1, - 19384: 0x93D2, - 19385: 0x93D3, - 19386: 0x93D4, - 19387: 0x93D5, - 19388: 0x93D7, - 19389: 0x93D8, - 19390: 0x93D9, - 19391: 0x93DA, - 19392: 0x93DB, - 19393: 0x93DC, - 19394: 0x93DD, - 19395: 0x93DE, - 19396: 0x93DF, - 19397: 0x93E0, - 19398: 0x93E1, - 19399: 0x93E2, - 19400: 0x93E3, - 19401: 0x93E4, - 19402: 0x93E5, - 19403: 0x93E6, - 19404: 0x93E7, - 19405: 0x93E8, - 19406: 0x93E9, - 19407: 0x93EA, - 19408: 0x93EB, - 19409: 0x93EC, - 19410: 0x93ED, - 19411: 0x93EE, - 19412: 0x93EF, - 19413: 0x93F0, - 19414: 0x93F1, - 19415: 0x93F2, - 19416: 0x93F3, - 19417: 0x93F4, - 19418: 0x93F5, - 19419: 0x93F6, - 19420: 0x93F7, - 19421: 0x93F8, - 19422: 0x93F9, - 19423: 0x93FA, - 19424: 0x93FB, - 19425: 0x93FC, - 19426: 0x93FD, - 19427: 0x93FE, - 19428: 0x93FF, - 19429: 0x9400, - 19430: 0x9401, - 19431: 0x9402, - 19432: 0x9403, - 19433: 0x9404, - 19434: 0x9405, - 19435: 0x9406, - 19436: 0x9407, - 19437: 0x9408, - 19438: 0x9409, - 19439: 0x940A, - 19440: 0x940B, - 19441: 0x940C, - 19442: 0x940D, - 19443: 0x940E, - 19444: 0x940F, - 19445: 0x9410, - 19446: 0x9411, - 19447: 0x9412, - 19448: 0x9413, - 19449: 0x9414, - 19450: 0x9415, - 19451: 0x9416, - 19452: 0x9417, - 19453: 0x9418, - 19454: 0x9419, - 19455: 0x941A, - 19456: 0x941B, - 19457: 0x941C, - 19458: 0x941D, - 19459: 0x941E, - 19460: 0x941F, - 19461: 0x9420, - 19462: 0x9421, - 19463: 0x9422, - 19464: 0x9423, - 19465: 0x9424, - 19466: 0x9425, - 19467: 0x9426, - 19468: 0x9427, - 19469: 0x9428, - 19470: 0x9429, - 19471: 0x942A, - 19472: 0x942B, - 19473: 0x942C, - 19474: 0x942D, - 19475: 0x942E, - 19476: 0x7EAD, - 19477: 0x7EB0, - 19478: 0x7EBE, - 19479: 0x7EC0, - 19480: 0x7EC1, - 19481: 0x7EC2, - 19482: 0x7EC9, - 19483: 0x7ECB, - 19484: 0x7ECC, - 19485: 0x7ED0, - 19486: 0x7ED4, - 19487: 0x7ED7, - 19488: 0x7EDB, - 19489: 0x7EE0, - 19490: 0x7EE1, - 19491: 0x7EE8, - 19492: 0x7EEB, - 19493: 0x7EEE, - 19494: 0x7EEF, - 19495: 0x7EF1, - 19496: 0x7EF2, - 19497: 0x7F0D, - 19498: 0x7EF6, - 19499: 0x7EFA, - 19500: 0x7EFB, - 19501: 0x7EFE, - 19502: 0x7F01, - 19503: 0x7F02, - 19504: 0x7F03, - 19505: 0x7F07, - 19506: 0x7F08, - 19507: 0x7F0B, - 19508: 0x7F0C, - 19509: 0x7F0F, - 19510: 0x7F11, - 19511: 0x7F12, - 19512: 0x7F17, - 19513: 0x7F19, - 19514: 0x7F1C, - 19515: 0x7F1B, - 19516: 0x7F1F, - 19517: 0x7F21, - 19518: 0x7F22, - 19519: 0x7F23, - 19520: 0x7F24, - 19521: 0x7F25, - 19522: 0x7F26, - 19523: 0x7F27, - 19524: 0x7F2A, - 19525: 0x7F2B, - 19526: 0x7F2C, - 19527: 0x7F2D, - 19528: 0x7F2F, - 19529: 0x7F30, - 19530: 0x7F31, - 19531: 0x7F32, - 19532: 0x7F33, - 19533: 0x7F35, - 19534: 0x5E7A, - 19535: 0x757F, - 19536: 0x5DDB, - 19537: 0x753E, - 19538: 0x9095, - 19539: 0x738E, - 19540: 0x7391, - 19541: 0x73AE, - 19542: 0x73A2, - 19543: 0x739F, - 19544: 0x73CF, - 19545: 0x73C2, - 19546: 0x73D1, - 19547: 0x73B7, - 19548: 0x73B3, - 19549: 0x73C0, - 19550: 0x73C9, - 19551: 0x73C8, - 19552: 0x73E5, - 19553: 0x73D9, - 19554: 0x987C, - 19555: 0x740A, - 19556: 0x73E9, - 19557: 0x73E7, - 19558: 0x73DE, - 19559: 0x73BA, - 19560: 0x73F2, - 19561: 0x740F, - 19562: 0x742A, - 19563: 0x745B, - 19564: 0x7426, - 19565: 0x7425, - 19566: 0x7428, - 19567: 0x7430, - 19568: 0x742E, - 19569: 0x742C, - 19570: 0x942F, - 19571: 0x9430, - 19572: 0x9431, - 19573: 0x9432, - 19574: 0x9433, - 19575: 0x9434, - 19576: 0x9435, - 19577: 0x9436, - 19578: 0x9437, - 19579: 0x9438, - 19580: 0x9439, - 19581: 0x943A, - 19582: 0x943B, - 19583: 0x943C, - 19584: 0x943D, - 19585: 0x943F, - 19586: 0x9440, - 19587: 0x9441, - 19588: 0x9442, - 19589: 0x9443, - 19590: 0x9444, - 19591: 0x9445, - 19592: 0x9446, - 19593: 0x9447, - 19594: 0x9448, - 19595: 0x9449, - 19596: 0x944A, - 19597: 0x944B, - 19598: 0x944C, - 19599: 0x944D, - 19600: 0x944E, - 19601: 0x944F, - 19602: 0x9450, - 19603: 0x9451, - 19604: 0x9452, - 19605: 0x9453, - 19606: 0x9454, - 19607: 0x9455, - 19608: 0x9456, - 19609: 0x9457, - 19610: 0x9458, - 19611: 0x9459, - 19612: 0x945A, - 19613: 0x945B, - 19614: 0x945C, - 19615: 0x945D, - 19616: 0x945E, - 19617: 0x945F, - 19618: 0x9460, - 19619: 0x9461, - 19620: 0x9462, - 19621: 0x9463, - 19622: 0x9464, - 19623: 0x9465, - 19624: 0x9466, - 19625: 0x9467, - 19626: 0x9468, - 19627: 0x9469, - 19628: 0x946A, - 19629: 0x946C, - 19630: 0x946D, - 19631: 0x946E, - 19632: 0x946F, - 19633: 0x9470, - 19634: 0x9471, - 19635: 0x9472, - 19636: 0x9473, - 19637: 0x9474, - 19638: 0x9475, - 19639: 0x9476, - 19640: 0x9477, - 19641: 0x9478, - 19642: 0x9479, - 19643: 0x947A, - 19644: 0x947B, - 19645: 0x947C, - 19646: 0x947D, - 19647: 0x947E, - 19648: 0x947F, - 19649: 0x9480, - 19650: 0x9481, - 19651: 0x9482, - 19652: 0x9483, - 19653: 0x9484, - 19654: 0x9491, - 19655: 0x9496, - 19656: 0x9498, - 19657: 0x94C7, - 19658: 0x94CF, - 19659: 0x94D3, - 19660: 0x94D4, - 19661: 0x94DA, - 19662: 0x94E6, - 19663: 0x94FB, - 19664: 0x951C, - 19665: 0x9520, - 19666: 0x741B, - 19667: 0x741A, - 19668: 0x7441, - 19669: 0x745C, - 19670: 0x7457, - 19671: 0x7455, - 19672: 0x7459, - 19673: 0x7477, - 19674: 0x746D, - 19675: 0x747E, - 19676: 0x749C, - 19677: 0x748E, - 19678: 0x7480, - 19679: 0x7481, - 19680: 0x7487, - 19681: 0x748B, - 19682: 0x749E, - 19683: 0x74A8, - 19684: 0x74A9, - 19685: 0x7490, - 19686: 0x74A7, - 19687: 0x74D2, - 19688: 0x74BA, - 19689: 0x97EA, - 19690: 0x97EB, - 19691: 0x97EC, - 19692: 0x674C, - 19693: 0x6753, - 19694: 0x675E, - 19695: 0x6748, - 19696: 0x6769, - 19697: 0x67A5, - 19698: 0x6787, - 19699: 0x676A, - 19700: 0x6773, - 19701: 0x6798, - 19702: 0x67A7, - 19703: 0x6775, - 19704: 0x67A8, - 19705: 0x679E, - 19706: 0x67AD, - 19707: 0x678B, - 19708: 0x6777, - 19709: 0x677C, - 19710: 0x67F0, - 19711: 0x6809, - 19712: 0x67D8, - 19713: 0x680A, - 19714: 0x67E9, - 19715: 0x67B0, - 19716: 0x680C, - 19717: 0x67D9, - 19718: 0x67B5, - 19719: 0x67DA, - 19720: 0x67B3, - 19721: 0x67DD, - 19722: 0x6800, - 19723: 0x67C3, - 19724: 0x67B8, - 19725: 0x67E2, - 19726: 0x680E, - 19727: 0x67C1, - 19728: 0x67FD, - 19729: 0x6832, - 19730: 0x6833, - 19731: 0x6860, - 19732: 0x6861, - 19733: 0x684E, - 19734: 0x6862, - 19735: 0x6844, - 19736: 0x6864, - 19737: 0x6883, - 19738: 0x681D, - 19739: 0x6855, - 19740: 0x6866, - 19741: 0x6841, - 19742: 0x6867, - 19743: 0x6840, - 19744: 0x683E, - 19745: 0x684A, - 19746: 0x6849, - 19747: 0x6829, - 19748: 0x68B5, - 19749: 0x688F, - 19750: 0x6874, - 19751: 0x6877, - 19752: 0x6893, - 19753: 0x686B, - 19754: 0x68C2, - 19755: 0x696E, - 19756: 0x68FC, - 19757: 0x691F, - 19758: 0x6920, - 19759: 0x68F9, - 19760: 0x9527, - 19761: 0x9533, - 19762: 0x953D, - 19763: 0x9543, - 19764: 0x9548, - 19765: 0x954B, - 19766: 0x9555, - 19767: 0x955A, - 19768: 0x9560, - 19769: 0x956E, - 19770: 0x9574, - 19771: 0x9575, - 19772: 0x9577, - 19773: 0x9578, - 19774: 0x9579, - 19775: 0x957A, - 19776: 0x957B, - 19777: 0x957C, - 19778: 0x957D, - 19779: 0x957E, - 19780: 0x9580, - 19781: 0x9581, - 19782: 0x9582, - 19783: 0x9583, - 19784: 0x9584, - 19785: 0x9585, - 19786: 0x9586, - 19787: 0x9587, - 19788: 0x9588, - 19789: 0x9589, - 19790: 0x958A, - 19791: 0x958B, - 19792: 0x958C, - 19793: 0x958D, - 19794: 0x958E, - 19795: 0x958F, - 19796: 0x9590, - 19797: 0x9591, - 19798: 0x9592, - 19799: 0x9593, - 19800: 0x9594, - 19801: 0x9595, - 19802: 0x9596, - 19803: 0x9597, - 19804: 0x9598, - 19805: 0x9599, - 19806: 0x959A, - 19807: 0x959B, - 19808: 0x959C, - 19809: 0x959D, - 19810: 0x959E, - 19811: 0x959F, - 19812: 0x95A0, - 19813: 0x95A1, - 19814: 0x95A2, - 19815: 0x95A3, - 19816: 0x95A4, - 19817: 0x95A5, - 19818: 0x95A6, - 19819: 0x95A7, - 19820: 0x95A8, - 19821: 0x95A9, - 19822: 0x95AA, - 19823: 0x95AB, - 19824: 0x95AC, - 19825: 0x95AD, - 19826: 0x95AE, - 19827: 0x95AF, - 19828: 0x95B0, - 19829: 0x95B1, - 19830: 0x95B2, - 19831: 0x95B3, - 19832: 0x95B4, - 19833: 0x95B5, - 19834: 0x95B6, - 19835: 0x95B7, - 19836: 0x95B8, - 19837: 0x95B9, - 19838: 0x95BA, - 19839: 0x95BB, - 19840: 0x95BC, - 19841: 0x95BD, - 19842: 0x95BE, - 19843: 0x95BF, - 19844: 0x95C0, - 19845: 0x95C1, - 19846: 0x95C2, - 19847: 0x95C3, - 19848: 0x95C4, - 19849: 0x95C5, - 19850: 0x95C6, - 19851: 0x95C7, - 19852: 0x95C8, - 19853: 0x95C9, - 19854: 0x95CA, - 19855: 0x95CB, - 19856: 0x6924, - 19857: 0x68F0, - 19858: 0x690B, - 19859: 0x6901, - 19860: 0x6957, - 19861: 0x68E3, - 19862: 0x6910, - 19863: 0x6971, - 19864: 0x6939, - 19865: 0x6960, - 19866: 0x6942, - 19867: 0x695D, - 19868: 0x6984, - 19869: 0x696B, - 19870: 0x6980, - 19871: 0x6998, - 19872: 0x6978, - 19873: 0x6934, - 19874: 0x69CC, - 19875: 0x6987, - 19876: 0x6988, - 19877: 0x69CE, - 19878: 0x6989, - 19879: 0x6966, - 19880: 0x6963, - 19881: 0x6979, - 19882: 0x699B, - 19883: 0x69A7, - 19884: 0x69BB, - 19885: 0x69AB, - 19886: 0x69AD, - 19887: 0x69D4, - 19888: 0x69B1, - 19889: 0x69C1, - 19890: 0x69CA, - 19891: 0x69DF, - 19892: 0x6995, - 19893: 0x69E0, - 19894: 0x698D, - 19895: 0x69FF, - 19896: 0x6A2F, - 19897: 0x69ED, - 19898: 0x6A17, - 19899: 0x6A18, - 19900: 0x6A65, - 19901: 0x69F2, - 19902: 0x6A44, - 19903: 0x6A3E, - 19904: 0x6AA0, - 19905: 0x6A50, - 19906: 0x6A5B, - 19907: 0x6A35, - 19908: 0x6A8E, - 19909: 0x6A79, - 19910: 0x6A3D, - 19911: 0x6A28, - 19912: 0x6A58, - 19913: 0x6A7C, - 19914: 0x6A91, - 19915: 0x6A90, - 19916: 0x6AA9, - 19917: 0x6A97, - 19918: 0x6AAB, - 19919: 0x7337, - 19920: 0x7352, - 19921: 0x6B81, - 19922: 0x6B82, - 19923: 0x6B87, - 19924: 0x6B84, - 19925: 0x6B92, - 19926: 0x6B93, - 19927: 0x6B8D, - 19928: 0x6B9A, - 19929: 0x6B9B, - 19930: 0x6BA1, - 19931: 0x6BAA, - 19932: 0x8F6B, - 19933: 0x8F6D, - 19934: 0x8F71, - 19935: 0x8F72, - 19936: 0x8F73, - 19937: 0x8F75, - 19938: 0x8F76, - 19939: 0x8F78, - 19940: 0x8F77, - 19941: 0x8F79, - 19942: 0x8F7A, - 19943: 0x8F7C, - 19944: 0x8F7E, - 19945: 0x8F81, - 19946: 0x8F82, - 19947: 0x8F84, - 19948: 0x8F87, - 19949: 0x8F8B, - 19950: 0x95CC, - 19951: 0x95CD, - 19952: 0x95CE, - 19953: 0x95CF, - 19954: 0x95D0, - 19955: 0x95D1, - 19956: 0x95D2, - 19957: 0x95D3, - 19958: 0x95D4, - 19959: 0x95D5, - 19960: 0x95D6, - 19961: 0x95D7, - 19962: 0x95D8, - 19963: 0x95D9, - 19964: 0x95DA, - 19965: 0x95DB, - 19966: 0x95DC, - 19967: 0x95DD, - 19968: 0x95DE, - 19969: 0x95DF, - 19970: 0x95E0, - 19971: 0x95E1, - 19972: 0x95E2, - 19973: 0x95E3, - 19974: 0x95E4, - 19975: 0x95E5, - 19976: 0x95E6, - 19977: 0x95E7, - 19978: 0x95EC, - 19979: 0x95FF, - 19980: 0x9607, - 19981: 0x9613, - 19982: 0x9618, - 19983: 0x961B, - 19984: 0x961E, - 19985: 0x9620, - 19986: 0x9623, - 19987: 0x9624, - 19988: 0x9625, - 19989: 0x9626, - 19990: 0x9627, - 19991: 0x9628, - 19992: 0x9629, - 19993: 0x962B, - 19994: 0x962C, - 19995: 0x962D, - 19996: 0x962F, - 19997: 0x9630, - 19998: 0x9637, - 19999: 0x9638, - 20000: 0x9639, - 20001: 0x963A, - 20002: 0x963E, - 20003: 0x9641, - 20004: 0x9643, - 20005: 0x964A, - 20006: 0x964E, - 20007: 0x964F, - 20008: 0x9651, - 20009: 0x9652, - 20010: 0x9653, - 20011: 0x9656, - 20012: 0x9657, - 20013: 0x9658, - 20014: 0x9659, - 20015: 0x965A, - 20016: 0x965C, - 20017: 0x965D, - 20018: 0x965E, - 20019: 0x9660, - 20020: 0x9663, - 20021: 0x9665, - 20022: 0x9666, - 20023: 0x966B, - 20024: 0x966D, - 20025: 0x966E, - 20026: 0x966F, - 20027: 0x9670, - 20028: 0x9671, - 20029: 0x9673, - 20030: 0x9678, - 20031: 0x9679, - 20032: 0x967A, - 20033: 0x967B, - 20034: 0x967C, - 20035: 0x967D, - 20036: 0x967E, - 20037: 0x967F, - 20038: 0x9680, - 20039: 0x9681, - 20040: 0x9682, - 20041: 0x9683, - 20042: 0x9684, - 20043: 0x9687, - 20044: 0x9689, - 20045: 0x968A, - 20046: 0x8F8D, - 20047: 0x8F8E, - 20048: 0x8F8F, - 20049: 0x8F98, - 20050: 0x8F9A, - 20051: 0x8ECE, - 20052: 0x620B, - 20053: 0x6217, - 20054: 0x621B, - 20055: 0x621F, - 20056: 0x6222, - 20057: 0x6221, - 20058: 0x6225, - 20059: 0x6224, - 20060: 0x622C, - 20061: 0x81E7, - 20062: 0x74EF, - 20063: 0x74F4, - 20064: 0x74FF, - 20065: 0x750F, - 20066: 0x7511, - 20067: 0x7513, - 20068: 0x6534, - 20069: 0x65EE, - 20070: 0x65EF, - 20071: 0x65F0, - 20072: 0x660A, - 20073: 0x6619, - 20074: 0x6772, - 20075: 0x6603, - 20076: 0x6615, - 20077: 0x6600, - 20078: 0x7085, - 20079: 0x66F7, - 20080: 0x661D, - 20081: 0x6634, - 20082: 0x6631, - 20083: 0x6636, - 20084: 0x6635, - 20085: 0x8006, - 20086: 0x665F, - 20087: 0x6654, - 20088: 0x6641, - 20089: 0x664F, - 20090: 0x6656, - 20091: 0x6661, - 20092: 0x6657, - 20093: 0x6677, - 20094: 0x6684, - 20095: 0x668C, - 20096: 0x66A7, - 20097: 0x669D, - 20098: 0x66BE, - 20099: 0x66DB, - 20100: 0x66DC, - 20101: 0x66E6, - 20102: 0x66E9, - 20103: 0x8D32, - 20104: 0x8D33, - 20105: 0x8D36, - 20106: 0x8D3B, - 20107: 0x8D3D, - 20108: 0x8D40, - 20109: 0x8D45, - 20110: 0x8D46, - 20111: 0x8D48, - 20112: 0x8D49, - 20113: 0x8D47, - 20114: 0x8D4D, - 20115: 0x8D55, - 20116: 0x8D59, - 20117: 0x89C7, - 20118: 0x89CA, - 20119: 0x89CB, - 20120: 0x89CC, - 20121: 0x89CE, - 20122: 0x89CF, - 20123: 0x89D0, - 20124: 0x89D1, - 20125: 0x726E, - 20126: 0x729F, - 20127: 0x725D, - 20128: 0x7266, - 20129: 0x726F, - 20130: 0x727E, - 20131: 0x727F, - 20132: 0x7284, - 20133: 0x728B, - 20134: 0x728D, - 20135: 0x728F, - 20136: 0x7292, - 20137: 0x6308, - 20138: 0x6332, - 20139: 0x63B0, - 20140: 0x968C, - 20141: 0x968E, - 20142: 0x9691, - 20143: 0x9692, - 20144: 0x9693, - 20145: 0x9695, - 20146: 0x9696, - 20147: 0x969A, - 20148: 0x969B, - 20149: 0x969D, - 20150: 0x969E, - 20151: 0x969F, - 20152: 0x96A0, - 20153: 0x96A1, - 20154: 0x96A2, - 20155: 0x96A3, - 20156: 0x96A4, - 20157: 0x96A5, - 20158: 0x96A6, - 20159: 0x96A8, - 20160: 0x96A9, - 20161: 0x96AA, - 20162: 0x96AB, - 20163: 0x96AC, - 20164: 0x96AD, - 20165: 0x96AE, - 20166: 0x96AF, - 20167: 0x96B1, - 20168: 0x96B2, - 20169: 0x96B4, - 20170: 0x96B5, - 20171: 0x96B7, - 20172: 0x96B8, - 20173: 0x96BA, - 20174: 0x96BB, - 20175: 0x96BF, - 20176: 0x96C2, - 20177: 0x96C3, - 20178: 0x96C8, - 20179: 0x96CA, - 20180: 0x96CB, - 20181: 0x96D0, - 20182: 0x96D1, - 20183: 0x96D3, - 20184: 0x96D4, - 20185: 0x96D6, - 20186: 0x96D7, - 20187: 0x96D8, - 20188: 0x96D9, - 20189: 0x96DA, - 20190: 0x96DB, - 20191: 0x96DC, - 20192: 0x96DD, - 20193: 0x96DE, - 20194: 0x96DF, - 20195: 0x96E1, - 20196: 0x96E2, - 20197: 0x96E3, - 20198: 0x96E4, - 20199: 0x96E5, - 20200: 0x96E6, - 20201: 0x96E7, - 20202: 0x96EB, - 20203: 0x96EC, - 20204: 0x96ED, - 20205: 0x96EE, - 20206: 0x96F0, - 20207: 0x96F1, - 20208: 0x96F2, - 20209: 0x96F4, - 20210: 0x96F5, - 20211: 0x96F8, - 20212: 0x96FA, - 20213: 0x96FB, - 20214: 0x96FC, - 20215: 0x96FD, - 20216: 0x96FF, - 20217: 0x9702, - 20218: 0x9703, - 20219: 0x9705, - 20220: 0x970A, - 20221: 0x970B, - 20222: 0x970C, - 20223: 0x9710, - 20224: 0x9711, - 20225: 0x9712, - 20226: 0x9714, - 20227: 0x9715, - 20228: 0x9717, - 20229: 0x9718, - 20230: 0x9719, - 20231: 0x971A, - 20232: 0x971B, - 20233: 0x971D, - 20234: 0x971F, - 20235: 0x9720, - 20236: 0x643F, - 20237: 0x64D8, - 20238: 0x8004, - 20239: 0x6BEA, - 20240: 0x6BF3, - 20241: 0x6BFD, - 20242: 0x6BF5, - 20243: 0x6BF9, - 20244: 0x6C05, - 20245: 0x6C07, - 20246: 0x6C06, - 20247: 0x6C0D, - 20248: 0x6C15, - 20249: 0x6C18, - 20250: 0x6C19, - 20251: 0x6C1A, - 20252: 0x6C21, - 20253: 0x6C29, - 20254: 0x6C24, - 20255: 0x6C2A, - 20256: 0x6C32, - 20257: 0x6535, - 20258: 0x6555, - 20259: 0x656B, - 20260: 0x724D, - 20261: 0x7252, - 20262: 0x7256, - 20263: 0x7230, - 20264: 0x8662, - 20265: 0x5216, - 20266: 0x809F, - 20267: 0x809C, - 20268: 0x8093, - 20269: 0x80BC, - 20270: 0x670A, - 20271: 0x80BD, - 20272: 0x80B1, - 20273: 0x80AB, - 20274: 0x80AD, - 20275: 0x80B4, - 20276: 0x80B7, - 20277: 0x80E7, - 20278: 0x80E8, - 20279: 0x80E9, - 20280: 0x80EA, - 20281: 0x80DB, - 20282: 0x80C2, - 20283: 0x80C4, - 20284: 0x80D9, - 20285: 0x80CD, - 20286: 0x80D7, - 20287: 0x6710, - 20288: 0x80DD, - 20289: 0x80EB, - 20290: 0x80F1, - 20291: 0x80F4, - 20292: 0x80ED, - 20293: 0x810D, - 20294: 0x810E, - 20295: 0x80F2, - 20296: 0x80FC, - 20297: 0x6715, - 20298: 0x8112, - 20299: 0x8C5A, - 20300: 0x8136, - 20301: 0x811E, - 20302: 0x812C, - 20303: 0x8118, - 20304: 0x8132, - 20305: 0x8148, - 20306: 0x814C, - 20307: 0x8153, - 20308: 0x8174, - 20309: 0x8159, - 20310: 0x815A, - 20311: 0x8171, - 20312: 0x8160, - 20313: 0x8169, - 20314: 0x817C, - 20315: 0x817D, - 20316: 0x816D, - 20317: 0x8167, - 20318: 0x584D, - 20319: 0x5AB5, - 20320: 0x8188, - 20321: 0x8182, - 20322: 0x8191, - 20323: 0x6ED5, - 20324: 0x81A3, - 20325: 0x81AA, - 20326: 0x81CC, - 20327: 0x6726, - 20328: 0x81CA, - 20329: 0x81BB, - 20330: 0x9721, - 20331: 0x9722, - 20332: 0x9723, - 20333: 0x9724, - 20334: 0x9725, - 20335: 0x9726, - 20336: 0x9727, - 20337: 0x9728, - 20338: 0x9729, - 20339: 0x972B, - 20340: 0x972C, - 20341: 0x972E, - 20342: 0x972F, - 20343: 0x9731, - 20344: 0x9733, - 20345: 0x9734, - 20346: 0x9735, - 20347: 0x9736, - 20348: 0x9737, - 20349: 0x973A, - 20350: 0x973B, - 20351: 0x973C, - 20352: 0x973D, - 20353: 0x973F, - 20354: 0x9740, - 20355: 0x9741, - 20356: 0x9742, - 20357: 0x9743, - 20358: 0x9744, - 20359: 0x9745, - 20360: 0x9746, - 20361: 0x9747, - 20362: 0x9748, - 20363: 0x9749, - 20364: 0x974A, - 20365: 0x974B, - 20366: 0x974C, - 20367: 0x974D, - 20368: 0x974E, - 20369: 0x974F, - 20370: 0x9750, - 20371: 0x9751, - 20372: 0x9754, - 20373: 0x9755, - 20374: 0x9757, - 20375: 0x9758, - 20376: 0x975A, - 20377: 0x975C, - 20378: 0x975D, - 20379: 0x975F, - 20380: 0x9763, - 20381: 0x9764, - 20382: 0x9766, - 20383: 0x9767, - 20384: 0x9768, - 20385: 0x976A, - 20386: 0x976B, - 20387: 0x976C, - 20388: 0x976D, - 20389: 0x976E, - 20390: 0x976F, - 20391: 0x9770, - 20392: 0x9771, - 20393: 0x9772, - 20394: 0x9775, - 20395: 0x9777, - 20396: 0x9778, - 20397: 0x9779, - 20398: 0x977A, - 20399: 0x977B, - 20400: 0x977D, - 20401: 0x977E, - 20402: 0x977F, - 20403: 0x9780, - 20404: 0x9781, - 20405: 0x9782, - 20406: 0x9783, - 20407: 0x9784, - 20408: 0x9786, - 20409: 0x9787, - 20410: 0x9788, - 20411: 0x9789, - 20412: 0x978A, - 20413: 0x978C, - 20414: 0x978E, - 20415: 0x978F, - 20416: 0x9790, - 20417: 0x9793, - 20418: 0x9795, - 20419: 0x9796, - 20420: 0x9797, - 20421: 0x9799, - 20422: 0x979A, - 20423: 0x979B, - 20424: 0x979C, - 20425: 0x979D, - 20426: 0x81C1, - 20427: 0x81A6, - 20428: 0x6B24, - 20429: 0x6B37, - 20430: 0x6B39, - 20431: 0x6B43, - 20432: 0x6B46, - 20433: 0x6B59, - 20434: 0x98D1, - 20435: 0x98D2, - 20436: 0x98D3, - 20437: 0x98D5, - 20438: 0x98D9, - 20439: 0x98DA, - 20440: 0x6BB3, - 20441: 0x5F40, - 20442: 0x6BC2, - 20443: 0x89F3, - 20444: 0x6590, - 20445: 0x9F51, - 20446: 0x6593, - 20447: 0x65BC, - 20448: 0x65C6, - 20449: 0x65C4, - 20450: 0x65C3, - 20451: 0x65CC, - 20452: 0x65CE, - 20453: 0x65D2, - 20454: 0x65D6, - 20455: 0x7080, - 20456: 0x709C, - 20457: 0x7096, - 20458: 0x709D, - 20459: 0x70BB, - 20460: 0x70C0, - 20461: 0x70B7, - 20462: 0x70AB, - 20463: 0x70B1, - 20464: 0x70E8, - 20465: 0x70CA, - 20466: 0x7110, - 20467: 0x7113, - 20468: 0x7116, - 20469: 0x712F, - 20470: 0x7131, - 20471: 0x7173, - 20472: 0x715C, - 20473: 0x7168, - 20474: 0x7145, - 20475: 0x7172, - 20476: 0x714A, - 20477: 0x7178, - 20478: 0x717A, - 20479: 0x7198, - 20480: 0x71B3, - 20481: 0x71B5, - 20482: 0x71A8, - 20483: 0x71A0, - 20484: 0x71E0, - 20485: 0x71D4, - 20486: 0x71E7, - 20487: 0x71F9, - 20488: 0x721D, - 20489: 0x7228, - 20490: 0x706C, - 20491: 0x7118, - 20492: 0x7166, - 20493: 0x71B9, - 20494: 0x623E, - 20495: 0x623D, - 20496: 0x6243, - 20497: 0x6248, - 20498: 0x6249, - 20499: 0x793B, - 20500: 0x7940, - 20501: 0x7946, - 20502: 0x7949, - 20503: 0x795B, - 20504: 0x795C, - 20505: 0x7953, - 20506: 0x795A, - 20507: 0x7962, - 20508: 0x7957, - 20509: 0x7960, - 20510: 0x796F, - 20511: 0x7967, - 20512: 0x797A, - 20513: 0x7985, - 20514: 0x798A, - 20515: 0x799A, - 20516: 0x79A7, - 20517: 0x79B3, - 20518: 0x5FD1, - 20519: 0x5FD0, - 20520: 0x979E, - 20521: 0x979F, - 20522: 0x97A1, - 20523: 0x97A2, - 20524: 0x97A4, - 20525: 0x97A5, - 20526: 0x97A6, - 20527: 0x97A7, - 20528: 0x97A8, - 20529: 0x97A9, - 20530: 0x97AA, - 20531: 0x97AC, - 20532: 0x97AE, - 20533: 0x97B0, - 20534: 0x97B1, - 20535: 0x97B3, - 20536: 0x97B5, - 20537: 0x97B6, - 20538: 0x97B7, - 20539: 0x97B8, - 20540: 0x97B9, - 20541: 0x97BA, - 20542: 0x97BB, - 20543: 0x97BC, - 20544: 0x97BD, - 20545: 0x97BE, - 20546: 0x97BF, - 20547: 0x97C0, - 20548: 0x97C1, - 20549: 0x97C2, - 20550: 0x97C3, - 20551: 0x97C4, - 20552: 0x97C5, - 20553: 0x97C6, - 20554: 0x97C7, - 20555: 0x97C8, - 20556: 0x97C9, - 20557: 0x97CA, - 20558: 0x97CB, - 20559: 0x97CC, - 20560: 0x97CD, - 20561: 0x97CE, - 20562: 0x97CF, - 20563: 0x97D0, - 20564: 0x97D1, - 20565: 0x97D2, - 20566: 0x97D3, - 20567: 0x97D4, - 20568: 0x97D5, - 20569: 0x97D6, - 20570: 0x97D7, - 20571: 0x97D8, - 20572: 0x97D9, - 20573: 0x97DA, - 20574: 0x97DB, - 20575: 0x97DC, - 20576: 0x97DD, - 20577: 0x97DE, - 20578: 0x97DF, - 20579: 0x97E0, - 20580: 0x97E1, - 20581: 0x97E2, - 20582: 0x97E3, - 20583: 0x97E4, - 20584: 0x97E5, - 20585: 0x97E8, - 20586: 0x97EE, - 20587: 0x97EF, - 20588: 0x97F0, - 20589: 0x97F1, - 20590: 0x97F2, - 20591: 0x97F4, - 20592: 0x97F7, - 20593: 0x97F8, - 20594: 0x97F9, - 20595: 0x97FA, - 20596: 0x97FB, - 20597: 0x97FC, - 20598: 0x97FD, - 20599: 0x97FE, - 20600: 0x97FF, - 20601: 0x9800, - 20602: 0x9801, - 20603: 0x9802, - 20604: 0x9803, - 20605: 0x9804, - 20606: 0x9805, - 20607: 0x9806, - 20608: 0x9807, - 20609: 0x9808, - 20610: 0x9809, - 20611: 0x980A, - 20612: 0x980B, - 20613: 0x980C, - 20614: 0x980D, - 20615: 0x980E, - 20616: 0x603C, - 20617: 0x605D, - 20618: 0x605A, - 20619: 0x6067, - 20620: 0x6041, - 20621: 0x6059, - 20622: 0x6063, - 20623: 0x60AB, - 20624: 0x6106, - 20625: 0x610D, - 20626: 0x615D, - 20627: 0x61A9, - 20628: 0x619D, - 20629: 0x61CB, - 20630: 0x61D1, - 20631: 0x6206, - 20632: 0x8080, - 20633: 0x807F, - 20634: 0x6C93, - 20635: 0x6CF6, - 20636: 0x6DFC, - 20637: 0x77F6, - 20638: 0x77F8, - 20639: 0x7800, - 20640: 0x7809, - 20641: 0x7817, - 20642: 0x7818, - 20643: 0x7811, - 20644: 0x65AB, - 20645: 0x782D, - 20646: 0x781C, - 20647: 0x781D, - 20648: 0x7839, - 20649: 0x783A, - 20650: 0x783B, - 20651: 0x781F, - 20652: 0x783C, - 20653: 0x7825, - 20654: 0x782C, - 20655: 0x7823, - 20656: 0x7829, - 20657: 0x784E, - 20658: 0x786D, - 20659: 0x7856, - 20660: 0x7857, - 20661: 0x7826, - 20662: 0x7850, - 20663: 0x7847, - 20664: 0x784C, - 20665: 0x786A, - 20666: 0x789B, - 20667: 0x7893, - 20668: 0x789A, - 20669: 0x7887, - 20670: 0x789C, - 20671: 0x78A1, - 20672: 0x78A3, - 20673: 0x78B2, - 20674: 0x78B9, - 20675: 0x78A5, - 20676: 0x78D4, - 20677: 0x78D9, - 20678: 0x78C9, - 20679: 0x78EC, - 20680: 0x78F2, - 20681: 0x7905, - 20682: 0x78F4, - 20683: 0x7913, - 20684: 0x7924, - 20685: 0x791E, - 20686: 0x7934, - 20687: 0x9F9B, - 20688: 0x9EF9, - 20689: 0x9EFB, - 20690: 0x9EFC, - 20691: 0x76F1, - 20692: 0x7704, - 20693: 0x770D, - 20694: 0x76F9, - 20695: 0x7707, - 20696: 0x7708, - 20697: 0x771A, - 20698: 0x7722, - 20699: 0x7719, - 20700: 0x772D, - 20701: 0x7726, - 20702: 0x7735, - 20703: 0x7738, - 20704: 0x7750, - 20705: 0x7751, - 20706: 0x7747, - 20707: 0x7743, - 20708: 0x775A, - 20709: 0x7768, - 20710: 0x980F, - 20711: 0x9810, - 20712: 0x9811, - 20713: 0x9812, - 20714: 0x9813, - 20715: 0x9814, - 20716: 0x9815, - 20717: 0x9816, - 20718: 0x9817, - 20719: 0x9818, - 20720: 0x9819, - 20721: 0x981A, - 20722: 0x981B, - 20723: 0x981C, - 20724: 0x981D, - 20725: 0x981E, - 20726: 0x981F, - 20727: 0x9820, - 20728: 0x9821, - 20729: 0x9822, - 20730: 0x9823, - 20731: 0x9824, - 20732: 0x9825, - 20733: 0x9826, - 20734: 0x9827, - 20735: 0x9828, - 20736: 0x9829, - 20737: 0x982A, - 20738: 0x982B, - 20739: 0x982C, - 20740: 0x982D, - 20741: 0x982E, - 20742: 0x982F, - 20743: 0x9830, - 20744: 0x9831, - 20745: 0x9832, - 20746: 0x9833, - 20747: 0x9834, - 20748: 0x9835, - 20749: 0x9836, - 20750: 0x9837, - 20751: 0x9838, - 20752: 0x9839, - 20753: 0x983A, - 20754: 0x983B, - 20755: 0x983C, - 20756: 0x983D, - 20757: 0x983E, - 20758: 0x983F, - 20759: 0x9840, - 20760: 0x9841, - 20761: 0x9842, - 20762: 0x9843, - 20763: 0x9844, - 20764: 0x9845, - 20765: 0x9846, - 20766: 0x9847, - 20767: 0x9848, - 20768: 0x9849, - 20769: 0x984A, - 20770: 0x984B, - 20771: 0x984C, - 20772: 0x984D, - 20773: 0x984E, - 20774: 0x984F, - 20775: 0x9850, - 20776: 0x9851, - 20777: 0x9852, - 20778: 0x9853, - 20779: 0x9854, - 20780: 0x9855, - 20781: 0x9856, - 20782: 0x9857, - 20783: 0x9858, - 20784: 0x9859, - 20785: 0x985A, - 20786: 0x985B, - 20787: 0x985C, - 20788: 0x985D, - 20789: 0x985E, - 20790: 0x985F, - 20791: 0x9860, - 20792: 0x9861, - 20793: 0x9862, - 20794: 0x9863, - 20795: 0x9864, - 20796: 0x9865, - 20797: 0x9866, - 20798: 0x9867, - 20799: 0x9868, - 20800: 0x9869, - 20801: 0x986A, - 20802: 0x986B, - 20803: 0x986C, - 20804: 0x986D, - 20805: 0x986E, - 20806: 0x7762, - 20807: 0x7765, - 20808: 0x777F, - 20809: 0x778D, - 20810: 0x777D, - 20811: 0x7780, - 20812: 0x778C, - 20813: 0x7791, - 20814: 0x779F, - 20815: 0x77A0, - 20816: 0x77B0, - 20817: 0x77B5, - 20818: 0x77BD, - 20819: 0x753A, - 20820: 0x7540, - 20821: 0x754E, - 20822: 0x754B, - 20823: 0x7548, - 20824: 0x755B, - 20825: 0x7572, - 20826: 0x7579, - 20827: 0x7583, - 20828: 0x7F58, - 20829: 0x7F61, - 20830: 0x7F5F, - 20831: 0x8A48, - 20832: 0x7F68, - 20833: 0x7F74, - 20834: 0x7F71, - 20835: 0x7F79, - 20836: 0x7F81, - 20837: 0x7F7E, - 20838: 0x76CD, - 20839: 0x76E5, - 20840: 0x8832, - 20841: 0x9485, - 20842: 0x9486, - 20843: 0x9487, - 20844: 0x948B, - 20845: 0x948A, - 20846: 0x948C, - 20847: 0x948D, - 20848: 0x948F, - 20849: 0x9490, - 20850: 0x9494, - 20851: 0x9497, - 20852: 0x9495, - 20853: 0x949A, - 20854: 0x949B, - 20855: 0x949C, - 20856: 0x94A3, - 20857: 0x94A4, - 20858: 0x94AB, - 20859: 0x94AA, - 20860: 0x94AD, - 20861: 0x94AC, - 20862: 0x94AF, - 20863: 0x94B0, - 20864: 0x94B2, - 20865: 0x94B4, - 20866: 0x94B6, - 20867: 0x94B7, - 20868: 0x94B8, - 20869: 0x94B9, - 20870: 0x94BA, - 20871: 0x94BC, - 20872: 0x94BD, - 20873: 0x94BF, - 20874: 0x94C4, - 20875: 0x94C8, - 20876: 0x94C9, - 20877: 0x94CA, - 20878: 0x94CB, - 20879: 0x94CC, - 20880: 0x94CD, - 20881: 0x94CE, - 20882: 0x94D0, - 20883: 0x94D1, - 20884: 0x94D2, - 20885: 0x94D5, - 20886: 0x94D6, - 20887: 0x94D7, - 20888: 0x94D9, - 20889: 0x94D8, - 20890: 0x94DB, - 20891: 0x94DE, - 20892: 0x94DF, - 20893: 0x94E0, - 20894: 0x94E2, - 20895: 0x94E4, - 20896: 0x94E5, - 20897: 0x94E7, - 20898: 0x94E8, - 20899: 0x94EA, - 20900: 0x986F, - 20901: 0x9870, - 20902: 0x9871, - 20903: 0x9872, - 20904: 0x9873, - 20905: 0x9874, - 20906: 0x988B, - 20907: 0x988E, - 20908: 0x9892, - 20909: 0x9895, - 20910: 0x9899, - 20911: 0x98A3, - 20912: 0x98A8, - 20913: 0x98A9, - 20914: 0x98AA, - 20915: 0x98AB, - 20916: 0x98AC, - 20917: 0x98AD, - 20918: 0x98AE, - 20919: 0x98AF, - 20920: 0x98B0, - 20921: 0x98B1, - 20922: 0x98B2, - 20923: 0x98B3, - 20924: 0x98B4, - 20925: 0x98B5, - 20926: 0x98B6, - 20927: 0x98B7, - 20928: 0x98B8, - 20929: 0x98B9, - 20930: 0x98BA, - 20931: 0x98BB, - 20932: 0x98BC, - 20933: 0x98BD, - 20934: 0x98BE, - 20935: 0x98BF, - 20936: 0x98C0, - 20937: 0x98C1, - 20938: 0x98C2, - 20939: 0x98C3, - 20940: 0x98C4, - 20941: 0x98C5, - 20942: 0x98C6, - 20943: 0x98C7, - 20944: 0x98C8, - 20945: 0x98C9, - 20946: 0x98CA, - 20947: 0x98CB, - 20948: 0x98CC, - 20949: 0x98CD, - 20950: 0x98CF, - 20951: 0x98D0, - 20952: 0x98D4, - 20953: 0x98D6, - 20954: 0x98D7, - 20955: 0x98DB, - 20956: 0x98DC, - 20957: 0x98DD, - 20958: 0x98E0, - 20959: 0x98E1, - 20960: 0x98E2, - 20961: 0x98E3, - 20962: 0x98E4, - 20963: 0x98E5, - 20964: 0x98E6, - 20965: 0x98E9, - 20966: 0x98EA, - 20967: 0x98EB, - 20968: 0x98EC, - 20969: 0x98ED, - 20970: 0x98EE, - 20971: 0x98EF, - 20972: 0x98F0, - 20973: 0x98F1, - 20974: 0x98F2, - 20975: 0x98F3, - 20976: 0x98F4, - 20977: 0x98F5, - 20978: 0x98F6, - 20979: 0x98F7, - 20980: 0x98F8, - 20981: 0x98F9, - 20982: 0x98FA, - 20983: 0x98FB, - 20984: 0x98FC, - 20985: 0x98FD, - 20986: 0x98FE, - 20987: 0x98FF, - 20988: 0x9900, - 20989: 0x9901, - 20990: 0x9902, - 20991: 0x9903, - 20992: 0x9904, - 20993: 0x9905, - 20994: 0x9906, - 20995: 0x9907, - 20996: 0x94E9, - 20997: 0x94EB, - 20998: 0x94EE, - 20999: 0x94EF, - 21000: 0x94F3, - 21001: 0x94F4, - 21002: 0x94F5, - 21003: 0x94F7, - 21004: 0x94F9, - 21005: 0x94FC, - 21006: 0x94FD, - 21007: 0x94FF, - 21008: 0x9503, - 21009: 0x9502, - 21010: 0x9506, - 21011: 0x9507, - 21012: 0x9509, - 21013: 0x950A, - 21014: 0x950D, - 21015: 0x950E, - 21016: 0x950F, - 21017: 0x9512, - 21018: 0x9513, - 21019: 0x9514, - 21020: 0x9515, - 21021: 0x9516, - 21022: 0x9518, - 21023: 0x951B, - 21024: 0x951D, - 21025: 0x951E, - 21026: 0x951F, - 21027: 0x9522, - 21028: 0x952A, - 21029: 0x952B, - 21030: 0x9529, - 21031: 0x952C, - 21032: 0x9531, - 21033: 0x9532, - 21034: 0x9534, - 21035: 0x9536, - 21036: 0x9537, - 21037: 0x9538, - 21038: 0x953C, - 21039: 0x953E, - 21040: 0x953F, - 21041: 0x9542, - 21042: 0x9535, - 21043: 0x9544, - 21044: 0x9545, - 21045: 0x9546, - 21046: 0x9549, - 21047: 0x954C, - 21048: 0x954E, - 21049: 0x954F, - 21050: 0x9552, - 21051: 0x9553, - 21052: 0x9554, - 21053: 0x9556, - 21054: 0x9557, - 21055: 0x9558, - 21056: 0x9559, - 21057: 0x955B, - 21058: 0x955E, - 21059: 0x955F, - 21060: 0x955D, - 21061: 0x9561, - 21062: 0x9562, - 21063: 0x9564, - 21064: 0x9565, - 21065: 0x9566, - 21066: 0x9567, - 21067: 0x9568, - 21068: 0x9569, - 21069: 0x956A, - 21070: 0x956B, - 21071: 0x956C, - 21072: 0x956F, - 21073: 0x9571, - 21074: 0x9572, - 21075: 0x9573, - 21076: 0x953A, - 21077: 0x77E7, - 21078: 0x77EC, - 21079: 0x96C9, - 21080: 0x79D5, - 21081: 0x79ED, - 21082: 0x79E3, - 21083: 0x79EB, - 21084: 0x7A06, - 21085: 0x5D47, - 21086: 0x7A03, - 21087: 0x7A02, - 21088: 0x7A1E, - 21089: 0x7A14, - 21090: 0x9908, - 21091: 0x9909, - 21092: 0x990A, - 21093: 0x990B, - 21094: 0x990C, - 21095: 0x990E, - 21096: 0x990F, - 21097: 0x9911, - 21098: 0x9912, - 21099: 0x9913, - 21100: 0x9914, - 21101: 0x9915, - 21102: 0x9916, - 21103: 0x9917, - 21104: 0x9918, - 21105: 0x9919, - 21106: 0x991A, - 21107: 0x991B, - 21108: 0x991C, - 21109: 0x991D, - 21110: 0x991E, - 21111: 0x991F, - 21112: 0x9920, - 21113: 0x9921, - 21114: 0x9922, - 21115: 0x9923, - 21116: 0x9924, - 21117: 0x9925, - 21118: 0x9926, - 21119: 0x9927, - 21120: 0x9928, - 21121: 0x9929, - 21122: 0x992A, - 21123: 0x992B, - 21124: 0x992C, - 21125: 0x992D, - 21126: 0x992F, - 21127: 0x9930, - 21128: 0x9931, - 21129: 0x9932, - 21130: 0x9933, - 21131: 0x9934, - 21132: 0x9935, - 21133: 0x9936, - 21134: 0x9937, - 21135: 0x9938, - 21136: 0x9939, - 21137: 0x993A, - 21138: 0x993B, - 21139: 0x993C, - 21140: 0x993D, - 21141: 0x993E, - 21142: 0x993F, - 21143: 0x9940, - 21144: 0x9941, - 21145: 0x9942, - 21146: 0x9943, - 21147: 0x9944, - 21148: 0x9945, - 21149: 0x9946, - 21150: 0x9947, - 21151: 0x9948, - 21152: 0x9949, - 21153: 0x994A, - 21154: 0x994B, - 21155: 0x994C, - 21156: 0x994D, - 21157: 0x994E, - 21158: 0x994F, - 21159: 0x9950, - 21160: 0x9951, - 21161: 0x9952, - 21162: 0x9953, - 21163: 0x9956, - 21164: 0x9957, - 21165: 0x9958, - 21166: 0x9959, - 21167: 0x995A, - 21168: 0x995B, - 21169: 0x995C, - 21170: 0x995D, - 21171: 0x995E, - 21172: 0x995F, - 21173: 0x9960, - 21174: 0x9961, - 21175: 0x9962, - 21176: 0x9964, - 21177: 0x9966, - 21178: 0x9973, - 21179: 0x9978, - 21180: 0x9979, - 21181: 0x997B, - 21182: 0x997E, - 21183: 0x9982, - 21184: 0x9983, - 21185: 0x9989, - 21186: 0x7A39, - 21187: 0x7A37, - 21188: 0x7A51, - 21189: 0x9ECF, - 21190: 0x99A5, - 21191: 0x7A70, - 21192: 0x7688, - 21193: 0x768E, - 21194: 0x7693, - 21195: 0x7699, - 21196: 0x76A4, - 21197: 0x74DE, - 21198: 0x74E0, - 21199: 0x752C, - 21200: 0x9E20, - 21201: 0x9E22, - 21202: 0x9E28, - 21203: 0x9E29, - 21204: 0x9E2A, - 21205: 0x9E2B, - 21206: 0x9E2C, - 21207: 0x9E32, - 21208: 0x9E31, - 21209: 0x9E36, - 21210: 0x9E38, - 21211: 0x9E37, - 21212: 0x9E39, - 21213: 0x9E3A, - 21214: 0x9E3E, - 21215: 0x9E41, - 21216: 0x9E42, - 21217: 0x9E44, - 21218: 0x9E46, - 21219: 0x9E47, - 21220: 0x9E48, - 21221: 0x9E49, - 21222: 0x9E4B, - 21223: 0x9E4C, - 21224: 0x9E4E, - 21225: 0x9E51, - 21226: 0x9E55, - 21227: 0x9E57, - 21228: 0x9E5A, - 21229: 0x9E5B, - 21230: 0x9E5C, - 21231: 0x9E5E, - 21232: 0x9E63, - 21233: 0x9E66, - 21234: 0x9E67, - 21235: 0x9E68, - 21236: 0x9E69, - 21237: 0x9E6A, - 21238: 0x9E6B, - 21239: 0x9E6C, - 21240: 0x9E71, - 21241: 0x9E6D, - 21242: 0x9E73, - 21243: 0x7592, - 21244: 0x7594, - 21245: 0x7596, - 21246: 0x75A0, - 21247: 0x759D, - 21248: 0x75AC, - 21249: 0x75A3, - 21250: 0x75B3, - 21251: 0x75B4, - 21252: 0x75B8, - 21253: 0x75C4, - 21254: 0x75B1, - 21255: 0x75B0, - 21256: 0x75C3, - 21257: 0x75C2, - 21258: 0x75D6, - 21259: 0x75CD, - 21260: 0x75E3, - 21261: 0x75E8, - 21262: 0x75E6, - 21263: 0x75E4, - 21264: 0x75EB, - 21265: 0x75E7, - 21266: 0x7603, - 21267: 0x75F1, - 21268: 0x75FC, - 21269: 0x75FF, - 21270: 0x7610, - 21271: 0x7600, - 21272: 0x7605, - 21273: 0x760C, - 21274: 0x7617, - 21275: 0x760A, - 21276: 0x7625, - 21277: 0x7618, - 21278: 0x7615, - 21279: 0x7619, - 21280: 0x998C, - 21281: 0x998E, - 21282: 0x999A, - 21283: 0x999B, - 21284: 0x999C, - 21285: 0x999D, - 21286: 0x999E, - 21287: 0x999F, - 21288: 0x99A0, - 21289: 0x99A1, - 21290: 0x99A2, - 21291: 0x99A3, - 21292: 0x99A4, - 21293: 0x99A6, - 21294: 0x99A7, - 21295: 0x99A9, - 21296: 0x99AA, - 21297: 0x99AB, - 21298: 0x99AC, - 21299: 0x99AD, - 21300: 0x99AE, - 21301: 0x99AF, - 21302: 0x99B0, - 21303: 0x99B1, - 21304: 0x99B2, - 21305: 0x99B3, - 21306: 0x99B4, - 21307: 0x99B5, - 21308: 0x99B6, - 21309: 0x99B7, - 21310: 0x99B8, - 21311: 0x99B9, - 21312: 0x99BA, - 21313: 0x99BB, - 21314: 0x99BC, - 21315: 0x99BD, - 21316: 0x99BE, - 21317: 0x99BF, - 21318: 0x99C0, - 21319: 0x99C1, - 21320: 0x99C2, - 21321: 0x99C3, - 21322: 0x99C4, - 21323: 0x99C5, - 21324: 0x99C6, - 21325: 0x99C7, - 21326: 0x99C8, - 21327: 0x99C9, - 21328: 0x99CA, - 21329: 0x99CB, - 21330: 0x99CC, - 21331: 0x99CD, - 21332: 0x99CE, - 21333: 0x99CF, - 21334: 0x99D0, - 21335: 0x99D1, - 21336: 0x99D2, - 21337: 0x99D3, - 21338: 0x99D4, - 21339: 0x99D5, - 21340: 0x99D6, - 21341: 0x99D7, - 21342: 0x99D8, - 21343: 0x99D9, - 21344: 0x99DA, - 21345: 0x99DB, - 21346: 0x99DC, - 21347: 0x99DD, - 21348: 0x99DE, - 21349: 0x99DF, - 21350: 0x99E0, - 21351: 0x99E1, - 21352: 0x99E2, - 21353: 0x99E3, - 21354: 0x99E4, - 21355: 0x99E5, - 21356: 0x99E6, - 21357: 0x99E7, - 21358: 0x99E8, - 21359: 0x99E9, - 21360: 0x99EA, - 21361: 0x99EB, - 21362: 0x99EC, - 21363: 0x99ED, - 21364: 0x99EE, - 21365: 0x99EF, - 21366: 0x99F0, - 21367: 0x99F1, - 21368: 0x99F2, - 21369: 0x99F3, - 21370: 0x99F4, - 21371: 0x99F5, - 21372: 0x99F6, - 21373: 0x99F7, - 21374: 0x99F8, - 21375: 0x99F9, - 21376: 0x761B, - 21377: 0x763C, - 21378: 0x7622, - 21379: 0x7620, - 21380: 0x7640, - 21381: 0x762D, - 21382: 0x7630, - 21383: 0x763F, - 21384: 0x7635, - 21385: 0x7643, - 21386: 0x763E, - 21387: 0x7633, - 21388: 0x764D, - 21389: 0x765E, - 21390: 0x7654, - 21391: 0x765C, - 21392: 0x7656, - 21393: 0x766B, - 21394: 0x766F, - 21395: 0x7FCA, - 21396: 0x7AE6, - 21397: 0x7A78, - 21398: 0x7A79, - 21399: 0x7A80, - 21400: 0x7A86, - 21401: 0x7A88, - 21402: 0x7A95, - 21403: 0x7AA6, - 21404: 0x7AA0, - 21405: 0x7AAC, - 21406: 0x7AA8, - 21407: 0x7AAD, - 21408: 0x7AB3, - 21409: 0x8864, - 21410: 0x8869, - 21411: 0x8872, - 21412: 0x887D, - 21413: 0x887F, - 21414: 0x8882, - 21415: 0x88A2, - 21416: 0x88C6, - 21417: 0x88B7, - 21418: 0x88BC, - 21419: 0x88C9, - 21420: 0x88E2, - 21421: 0x88CE, - 21422: 0x88E3, - 21423: 0x88E5, - 21424: 0x88F1, - 21425: 0x891A, - 21426: 0x88FC, - 21427: 0x88E8, - 21428: 0x88FE, - 21429: 0x88F0, - 21430: 0x8921, - 21431: 0x8919, - 21432: 0x8913, - 21433: 0x891B, - 21434: 0x890A, - 21435: 0x8934, - 21436: 0x892B, - 21437: 0x8936, - 21438: 0x8941, - 21439: 0x8966, - 21440: 0x897B, - 21441: 0x758B, - 21442: 0x80E5, - 21443: 0x76B2, - 21444: 0x76B4, - 21445: 0x77DC, - 21446: 0x8012, - 21447: 0x8014, - 21448: 0x8016, - 21449: 0x801C, - 21450: 0x8020, - 21451: 0x8022, - 21452: 0x8025, - 21453: 0x8026, - 21454: 0x8027, - 21455: 0x8029, - 21456: 0x8028, - 21457: 0x8031, - 21458: 0x800B, - 21459: 0x8035, - 21460: 0x8043, - 21461: 0x8046, - 21462: 0x804D, - 21463: 0x8052, - 21464: 0x8069, - 21465: 0x8071, - 21466: 0x8983, - 21467: 0x9878, - 21468: 0x9880, - 21469: 0x9883, - 21470: 0x99FA, - 21471: 0x99FB, - 21472: 0x99FC, - 21473: 0x99FD, - 21474: 0x99FE, - 21475: 0x99FF, - 21476: 0x9A00, - 21477: 0x9A01, - 21478: 0x9A02, - 21479: 0x9A03, - 21480: 0x9A04, - 21481: 0x9A05, - 21482: 0x9A06, - 21483: 0x9A07, - 21484: 0x9A08, - 21485: 0x9A09, - 21486: 0x9A0A, - 21487: 0x9A0B, - 21488: 0x9A0C, - 21489: 0x9A0D, - 21490: 0x9A0E, - 21491: 0x9A0F, - 21492: 0x9A10, - 21493: 0x9A11, - 21494: 0x9A12, - 21495: 0x9A13, - 21496: 0x9A14, - 21497: 0x9A15, - 21498: 0x9A16, - 21499: 0x9A17, - 21500: 0x9A18, - 21501: 0x9A19, - 21502: 0x9A1A, - 21503: 0x9A1B, - 21504: 0x9A1C, - 21505: 0x9A1D, - 21506: 0x9A1E, - 21507: 0x9A1F, - 21508: 0x9A20, - 21509: 0x9A21, - 21510: 0x9A22, - 21511: 0x9A23, - 21512: 0x9A24, - 21513: 0x9A25, - 21514: 0x9A26, - 21515: 0x9A27, - 21516: 0x9A28, - 21517: 0x9A29, - 21518: 0x9A2A, - 21519: 0x9A2B, - 21520: 0x9A2C, - 21521: 0x9A2D, - 21522: 0x9A2E, - 21523: 0x9A2F, - 21524: 0x9A30, - 21525: 0x9A31, - 21526: 0x9A32, - 21527: 0x9A33, - 21528: 0x9A34, - 21529: 0x9A35, - 21530: 0x9A36, - 21531: 0x9A37, - 21532: 0x9A38, - 21533: 0x9A39, - 21534: 0x9A3A, - 21535: 0x9A3B, - 21536: 0x9A3C, - 21537: 0x9A3D, - 21538: 0x9A3E, - 21539: 0x9A3F, - 21540: 0x9A40, - 21541: 0x9A41, - 21542: 0x9A42, - 21543: 0x9A43, - 21544: 0x9A44, - 21545: 0x9A45, - 21546: 0x9A46, - 21547: 0x9A47, - 21548: 0x9A48, - 21549: 0x9A49, - 21550: 0x9A4A, - 21551: 0x9A4B, - 21552: 0x9A4C, - 21553: 0x9A4D, - 21554: 0x9A4E, - 21555: 0x9A4F, - 21556: 0x9A50, - 21557: 0x9A51, - 21558: 0x9A52, - 21559: 0x9A53, - 21560: 0x9A54, - 21561: 0x9A55, - 21562: 0x9A56, - 21563: 0x9A57, - 21564: 0x9A58, - 21565: 0x9A59, - 21566: 0x9889, - 21567: 0x988C, - 21568: 0x988D, - 21569: 0x988F, - 21570: 0x9894, - 21571: 0x989A, - 21572: 0x989B, - 21573: 0x989E, - 21574: 0x989F, - 21575: 0x98A1, - 21576: 0x98A2, - 21577: 0x98A5, - 21578: 0x98A6, - 21579: 0x864D, - 21580: 0x8654, - 21581: 0x866C, - 21582: 0x866E, - 21583: 0x867F, - 21584: 0x867A, - 21585: 0x867C, - 21586: 0x867B, - 21587: 0x86A8, - 21588: 0x868D, - 21589: 0x868B, - 21590: 0x86AC, - 21591: 0x869D, - 21592: 0x86A7, - 21593: 0x86A3, - 21594: 0x86AA, - 21595: 0x8693, - 21596: 0x86A9, - 21597: 0x86B6, - 21598: 0x86C4, - 21599: 0x86B5, - 21600: 0x86CE, - 21601: 0x86B0, - 21602: 0x86BA, - 21603: 0x86B1, - 21604: 0x86AF, - 21605: 0x86C9, - 21606: 0x86CF, - 21607: 0x86B4, - 21608: 0x86E9, - 21609: 0x86F1, - 21610: 0x86F2, - 21611: 0x86ED, - 21612: 0x86F3, - 21613: 0x86D0, - 21614: 0x8713, - 21615: 0x86DE, - 21616: 0x86F4, - 21617: 0x86DF, - 21618: 0x86D8, - 21619: 0x86D1, - 21620: 0x8703, - 21621: 0x8707, - 21622: 0x86F8, - 21623: 0x8708, - 21624: 0x870A, - 21625: 0x870D, - 21626: 0x8709, - 21627: 0x8723, - 21628: 0x873B, - 21629: 0x871E, - 21630: 0x8725, - 21631: 0x872E, - 21632: 0x871A, - 21633: 0x873E, - 21634: 0x8748, - 21635: 0x8734, - 21636: 0x8731, - 21637: 0x8729, - 21638: 0x8737, - 21639: 0x873F, - 21640: 0x8782, - 21641: 0x8722, - 21642: 0x877D, - 21643: 0x877E, - 21644: 0x877B, - 21645: 0x8760, - 21646: 0x8770, - 21647: 0x874C, - 21648: 0x876E, - 21649: 0x878B, - 21650: 0x8753, - 21651: 0x8763, - 21652: 0x877C, - 21653: 0x8764, - 21654: 0x8759, - 21655: 0x8765, - 21656: 0x8793, - 21657: 0x87AF, - 21658: 0x87A8, - 21659: 0x87D2, - 21660: 0x9A5A, - 21661: 0x9A5B, - 21662: 0x9A5C, - 21663: 0x9A5D, - 21664: 0x9A5E, - 21665: 0x9A5F, - 21666: 0x9A60, - 21667: 0x9A61, - 21668: 0x9A62, - 21669: 0x9A63, - 21670: 0x9A64, - 21671: 0x9A65, - 21672: 0x9A66, - 21673: 0x9A67, - 21674: 0x9A68, - 21675: 0x9A69, - 21676: 0x9A6A, - 21677: 0x9A6B, - 21678: 0x9A72, - 21679: 0x9A83, - 21680: 0x9A89, - 21681: 0x9A8D, - 21682: 0x9A8E, - 21683: 0x9A94, - 21684: 0x9A95, - 21685: 0x9A99, - 21686: 0x9AA6, - 21687: 0x9AA9, - 21688: 0x9AAA, - 21689: 0x9AAB, - 21690: 0x9AAC, - 21691: 0x9AAD, - 21692: 0x9AAE, - 21693: 0x9AAF, - 21694: 0x9AB2, - 21695: 0x9AB3, - 21696: 0x9AB4, - 21697: 0x9AB5, - 21698: 0x9AB9, - 21699: 0x9ABB, - 21700: 0x9ABD, - 21701: 0x9ABE, - 21702: 0x9ABF, - 21703: 0x9AC3, - 21704: 0x9AC4, - 21705: 0x9AC6, - 21706: 0x9AC7, - 21707: 0x9AC8, - 21708: 0x9AC9, - 21709: 0x9ACA, - 21710: 0x9ACD, - 21711: 0x9ACE, - 21712: 0x9ACF, - 21713: 0x9AD0, - 21714: 0x9AD2, - 21715: 0x9AD4, - 21716: 0x9AD5, - 21717: 0x9AD6, - 21718: 0x9AD7, - 21719: 0x9AD9, - 21720: 0x9ADA, - 21721: 0x9ADB, - 21722: 0x9ADC, - 21723: 0x9ADD, - 21724: 0x9ADE, - 21725: 0x9AE0, - 21726: 0x9AE2, - 21727: 0x9AE3, - 21728: 0x9AE4, - 21729: 0x9AE5, - 21730: 0x9AE7, - 21731: 0x9AE8, - 21732: 0x9AE9, - 21733: 0x9AEA, - 21734: 0x9AEC, - 21735: 0x9AEE, - 21736: 0x9AF0, - 21737: 0x9AF1, - 21738: 0x9AF2, - 21739: 0x9AF3, - 21740: 0x9AF4, - 21741: 0x9AF5, - 21742: 0x9AF6, - 21743: 0x9AF7, - 21744: 0x9AF8, - 21745: 0x9AFA, - 21746: 0x9AFC, - 21747: 0x9AFD, - 21748: 0x9AFE, - 21749: 0x9AFF, - 21750: 0x9B00, - 21751: 0x9B01, - 21752: 0x9B02, - 21753: 0x9B04, - 21754: 0x9B05, - 21755: 0x9B06, - 21756: 0x87C6, - 21757: 0x8788, - 21758: 0x8785, - 21759: 0x87AD, - 21760: 0x8797, - 21761: 0x8783, - 21762: 0x87AB, - 21763: 0x87E5, - 21764: 0x87AC, - 21765: 0x87B5, - 21766: 0x87B3, - 21767: 0x87CB, - 21768: 0x87D3, - 21769: 0x87BD, - 21770: 0x87D1, - 21771: 0x87C0, - 21772: 0x87CA, - 21773: 0x87DB, - 21774: 0x87EA, - 21775: 0x87E0, - 21776: 0x87EE, - 21777: 0x8816, - 21778: 0x8813, - 21779: 0x87FE, - 21780: 0x880A, - 21781: 0x881B, - 21782: 0x8821, - 21783: 0x8839, - 21784: 0x883C, - 21785: 0x7F36, - 21786: 0x7F42, - 21787: 0x7F44, - 21788: 0x7F45, - 21789: 0x8210, - 21790: 0x7AFA, - 21791: 0x7AFD, - 21792: 0x7B08, - 21793: 0x7B03, - 21794: 0x7B04, - 21795: 0x7B15, - 21796: 0x7B0A, - 21797: 0x7B2B, - 21798: 0x7B0F, - 21799: 0x7B47, - 21800: 0x7B38, - 21801: 0x7B2A, - 21802: 0x7B19, - 21803: 0x7B2E, - 21804: 0x7B31, - 21805: 0x7B20, - 21806: 0x7B25, - 21807: 0x7B24, - 21808: 0x7B33, - 21809: 0x7B3E, - 21810: 0x7B1E, - 21811: 0x7B58, - 21812: 0x7B5A, - 21813: 0x7B45, - 21814: 0x7B75, - 21815: 0x7B4C, - 21816: 0x7B5D, - 21817: 0x7B60, - 21818: 0x7B6E, - 21819: 0x7B7B, - 21820: 0x7B62, - 21821: 0x7B72, - 21822: 0x7B71, - 21823: 0x7B90, - 21824: 0x7BA6, - 21825: 0x7BA7, - 21826: 0x7BB8, - 21827: 0x7BAC, - 21828: 0x7B9D, - 21829: 0x7BA8, - 21830: 0x7B85, - 21831: 0x7BAA, - 21832: 0x7B9C, - 21833: 0x7BA2, - 21834: 0x7BAB, - 21835: 0x7BB4, - 21836: 0x7BD1, - 21837: 0x7BC1, - 21838: 0x7BCC, - 21839: 0x7BDD, - 21840: 0x7BDA, - 21841: 0x7BE5, - 21842: 0x7BE6, - 21843: 0x7BEA, - 21844: 0x7C0C, - 21845: 0x7BFE, - 21846: 0x7BFC, - 21847: 0x7C0F, - 21848: 0x7C16, - 21849: 0x7C0B, - 21850: 0x9B07, - 21851: 0x9B09, - 21852: 0x9B0A, - 21853: 0x9B0B, - 21854: 0x9B0C, - 21855: 0x9B0D, - 21856: 0x9B0E, - 21857: 0x9B10, - 21858: 0x9B11, - 21859: 0x9B12, - 21860: 0x9B14, - 21861: 0x9B15, - 21862: 0x9B16, - 21863: 0x9B17, - 21864: 0x9B18, - 21865: 0x9B19, - 21866: 0x9B1A, - 21867: 0x9B1B, - 21868: 0x9B1C, - 21869: 0x9B1D, - 21870: 0x9B1E, - 21871: 0x9B20, - 21872: 0x9B21, - 21873: 0x9B22, - 21874: 0x9B24, - 21875: 0x9B25, - 21876: 0x9B26, - 21877: 0x9B27, - 21878: 0x9B28, - 21879: 0x9B29, - 21880: 0x9B2A, - 21881: 0x9B2B, - 21882: 0x9B2C, - 21883: 0x9B2D, - 21884: 0x9B2E, - 21885: 0x9B30, - 21886: 0x9B31, - 21887: 0x9B33, - 21888: 0x9B34, - 21889: 0x9B35, - 21890: 0x9B36, - 21891: 0x9B37, - 21892: 0x9B38, - 21893: 0x9B39, - 21894: 0x9B3A, - 21895: 0x9B3D, - 21896: 0x9B3E, - 21897: 0x9B3F, - 21898: 0x9B40, - 21899: 0x9B46, - 21900: 0x9B4A, - 21901: 0x9B4B, - 21902: 0x9B4C, - 21903: 0x9B4E, - 21904: 0x9B50, - 21905: 0x9B52, - 21906: 0x9B53, - 21907: 0x9B55, - 21908: 0x9B56, - 21909: 0x9B57, - 21910: 0x9B58, - 21911: 0x9B59, - 21912: 0x9B5A, - 21913: 0x9B5B, - 21914: 0x9B5C, - 21915: 0x9B5D, - 21916: 0x9B5E, - 21917: 0x9B5F, - 21918: 0x9B60, - 21919: 0x9B61, - 21920: 0x9B62, - 21921: 0x9B63, - 21922: 0x9B64, - 21923: 0x9B65, - 21924: 0x9B66, - 21925: 0x9B67, - 21926: 0x9B68, - 21927: 0x9B69, - 21928: 0x9B6A, - 21929: 0x9B6B, - 21930: 0x9B6C, - 21931: 0x9B6D, - 21932: 0x9B6E, - 21933: 0x9B6F, - 21934: 0x9B70, - 21935: 0x9B71, - 21936: 0x9B72, - 21937: 0x9B73, - 21938: 0x9B74, - 21939: 0x9B75, - 21940: 0x9B76, - 21941: 0x9B77, - 21942: 0x9B78, - 21943: 0x9B79, - 21944: 0x9B7A, - 21945: 0x9B7B, - 21946: 0x7C1F, - 21947: 0x7C2A, - 21948: 0x7C26, - 21949: 0x7C38, - 21950: 0x7C41, - 21951: 0x7C40, - 21952: 0x81FE, - 21953: 0x8201, - 21954: 0x8202, - 21955: 0x8204, - 21956: 0x81EC, - 21957: 0x8844, - 21958: 0x8221, - 21959: 0x8222, - 21960: 0x8223, - 21961: 0x822D, - 21962: 0x822F, - 21963: 0x8228, - 21964: 0x822B, - 21965: 0x8238, - 21966: 0x823B, - 21967: 0x8233, - 21968: 0x8234, - 21969: 0x823E, - 21970: 0x8244, - 21971: 0x8249, - 21972: 0x824B, - 21973: 0x824F, - 21974: 0x825A, - 21975: 0x825F, - 21976: 0x8268, - 21977: 0x887E, - 21978: 0x8885, - 21979: 0x8888, - 21980: 0x88D8, - 21981: 0x88DF, - 21982: 0x895E, - 21983: 0x7F9D, - 21984: 0x7F9F, - 21985: 0x7FA7, - 21986: 0x7FAF, - 21987: 0x7FB0, - 21988: 0x7FB2, - 21989: 0x7C7C, - 21990: 0x6549, - 21991: 0x7C91, - 21992: 0x7C9D, - 21993: 0x7C9C, - 21994: 0x7C9E, - 21995: 0x7CA2, - 21996: 0x7CB2, - 21997: 0x7CBC, - 21998: 0x7CBD, - 21999: 0x7CC1, - 22000: 0x7CC7, - 22001: 0x7CCC, - 22002: 0x7CCD, - 22003: 0x7CC8, - 22004: 0x7CC5, - 22005: 0x7CD7, - 22006: 0x7CE8, - 22007: 0x826E, - 22008: 0x66A8, - 22009: 0x7FBF, - 22010: 0x7FCE, - 22011: 0x7FD5, - 22012: 0x7FE5, - 22013: 0x7FE1, - 22014: 0x7FE6, - 22015: 0x7FE9, - 22016: 0x7FEE, - 22017: 0x7FF3, - 22018: 0x7CF8, - 22019: 0x7D77, - 22020: 0x7DA6, - 22021: 0x7DAE, - 22022: 0x7E47, - 22023: 0x7E9B, - 22024: 0x9EB8, - 22025: 0x9EB4, - 22026: 0x8D73, - 22027: 0x8D84, - 22028: 0x8D94, - 22029: 0x8D91, - 22030: 0x8DB1, - 22031: 0x8D67, - 22032: 0x8D6D, - 22033: 0x8C47, - 22034: 0x8C49, - 22035: 0x914A, - 22036: 0x9150, - 22037: 0x914E, - 22038: 0x914F, - 22039: 0x9164, - 22040: 0x9B7C, - 22041: 0x9B7D, - 22042: 0x9B7E, - 22043: 0x9B7F, - 22044: 0x9B80, - 22045: 0x9B81, - 22046: 0x9B82, - 22047: 0x9B83, - 22048: 0x9B84, - 22049: 0x9B85, - 22050: 0x9B86, - 22051: 0x9B87, - 22052: 0x9B88, - 22053: 0x9B89, - 22054: 0x9B8A, - 22055: 0x9B8B, - 22056: 0x9B8C, - 22057: 0x9B8D, - 22058: 0x9B8E, - 22059: 0x9B8F, - 22060: 0x9B90, - 22061: 0x9B91, - 22062: 0x9B92, - 22063: 0x9B93, - 22064: 0x9B94, - 22065: 0x9B95, - 22066: 0x9B96, - 22067: 0x9B97, - 22068: 0x9B98, - 22069: 0x9B99, - 22070: 0x9B9A, - 22071: 0x9B9B, - 22072: 0x9B9C, - 22073: 0x9B9D, - 22074: 0x9B9E, - 22075: 0x9B9F, - 22076: 0x9BA0, - 22077: 0x9BA1, - 22078: 0x9BA2, - 22079: 0x9BA3, - 22080: 0x9BA4, - 22081: 0x9BA5, - 22082: 0x9BA6, - 22083: 0x9BA7, - 22084: 0x9BA8, - 22085: 0x9BA9, - 22086: 0x9BAA, - 22087: 0x9BAB, - 22088: 0x9BAC, - 22089: 0x9BAD, - 22090: 0x9BAE, - 22091: 0x9BAF, - 22092: 0x9BB0, - 22093: 0x9BB1, - 22094: 0x9BB2, - 22095: 0x9BB3, - 22096: 0x9BB4, - 22097: 0x9BB5, - 22098: 0x9BB6, - 22099: 0x9BB7, - 22100: 0x9BB8, - 22101: 0x9BB9, - 22102: 0x9BBA, - 22103: 0x9BBB, - 22104: 0x9BBC, - 22105: 0x9BBD, - 22106: 0x9BBE, - 22107: 0x9BBF, - 22108: 0x9BC0, - 22109: 0x9BC1, - 22110: 0x9BC2, - 22111: 0x9BC3, - 22112: 0x9BC4, - 22113: 0x9BC5, - 22114: 0x9BC6, - 22115: 0x9BC7, - 22116: 0x9BC8, - 22117: 0x9BC9, - 22118: 0x9BCA, - 22119: 0x9BCB, - 22120: 0x9BCC, - 22121: 0x9BCD, - 22122: 0x9BCE, - 22123: 0x9BCF, - 22124: 0x9BD0, - 22125: 0x9BD1, - 22126: 0x9BD2, - 22127: 0x9BD3, - 22128: 0x9BD4, - 22129: 0x9BD5, - 22130: 0x9BD6, - 22131: 0x9BD7, - 22132: 0x9BD8, - 22133: 0x9BD9, - 22134: 0x9BDA, - 22135: 0x9BDB, - 22136: 0x9162, - 22137: 0x9161, - 22138: 0x9170, - 22139: 0x9169, - 22140: 0x916F, - 22141: 0x917D, - 22142: 0x917E, - 22143: 0x9172, - 22144: 0x9174, - 22145: 0x9179, - 22146: 0x918C, - 22147: 0x9185, - 22148: 0x9190, - 22149: 0x918D, - 22150: 0x9191, - 22151: 0x91A2, - 22152: 0x91A3, - 22153: 0x91AA, - 22154: 0x91AD, - 22155: 0x91AE, - 22156: 0x91AF, - 22157: 0x91B5, - 22158: 0x91B4, - 22159: 0x91BA, - 22160: 0x8C55, - 22161: 0x9E7E, - 22162: 0x8DB8, - 22163: 0x8DEB, - 22164: 0x8E05, - 22165: 0x8E59, - 22166: 0x8E69, - 22167: 0x8DB5, - 22168: 0x8DBF, - 22169: 0x8DBC, - 22170: 0x8DBA, - 22171: 0x8DC4, - 22172: 0x8DD6, - 22173: 0x8DD7, - 22174: 0x8DDA, - 22175: 0x8DDE, - 22176: 0x8DCE, - 22177: 0x8DCF, - 22178: 0x8DDB, - 22179: 0x8DC6, - 22180: 0x8DEC, - 22181: 0x8DF7, - 22182: 0x8DF8, - 22183: 0x8DE3, - 22184: 0x8DF9, - 22185: 0x8DFB, - 22186: 0x8DE4, - 22187: 0x8E09, - 22188: 0x8DFD, - 22189: 0x8E14, - 22190: 0x8E1D, - 22191: 0x8E1F, - 22192: 0x8E2C, - 22193: 0x8E2E, - 22194: 0x8E23, - 22195: 0x8E2F, - 22196: 0x8E3A, - 22197: 0x8E40, - 22198: 0x8E39, - 22199: 0x8E35, - 22200: 0x8E3D, - 22201: 0x8E31, - 22202: 0x8E49, - 22203: 0x8E41, - 22204: 0x8E42, - 22205: 0x8E51, - 22206: 0x8E52, - 22207: 0x8E4A, - 22208: 0x8E70, - 22209: 0x8E76, - 22210: 0x8E7C, - 22211: 0x8E6F, - 22212: 0x8E74, - 22213: 0x8E85, - 22214: 0x8E8F, - 22215: 0x8E94, - 22216: 0x8E90, - 22217: 0x8E9C, - 22218: 0x8E9E, - 22219: 0x8C78, - 22220: 0x8C82, - 22221: 0x8C8A, - 22222: 0x8C85, - 22223: 0x8C98, - 22224: 0x8C94, - 22225: 0x659B, - 22226: 0x89D6, - 22227: 0x89DE, - 22228: 0x89DA, - 22229: 0x89DC, - 22230: 0x9BDC, - 22231: 0x9BDD, - 22232: 0x9BDE, - 22233: 0x9BDF, - 22234: 0x9BE0, - 22235: 0x9BE1, - 22236: 0x9BE2, - 22237: 0x9BE3, - 22238: 0x9BE4, - 22239: 0x9BE5, - 22240: 0x9BE6, - 22241: 0x9BE7, - 22242: 0x9BE8, - 22243: 0x9BE9, - 22244: 0x9BEA, - 22245: 0x9BEB, - 22246: 0x9BEC, - 22247: 0x9BED, - 22248: 0x9BEE, - 22249: 0x9BEF, - 22250: 0x9BF0, - 22251: 0x9BF1, - 22252: 0x9BF2, - 22253: 0x9BF3, - 22254: 0x9BF4, - 22255: 0x9BF5, - 22256: 0x9BF6, - 22257: 0x9BF7, - 22258: 0x9BF8, - 22259: 0x9BF9, - 22260: 0x9BFA, - 22261: 0x9BFB, - 22262: 0x9BFC, - 22263: 0x9BFD, - 22264: 0x9BFE, - 22265: 0x9BFF, - 22266: 0x9C00, - 22267: 0x9C01, - 22268: 0x9C02, - 22269: 0x9C03, - 22270: 0x9C04, - 22271: 0x9C05, - 22272: 0x9C06, - 22273: 0x9C07, - 22274: 0x9C08, - 22275: 0x9C09, - 22276: 0x9C0A, - 22277: 0x9C0B, - 22278: 0x9C0C, - 22279: 0x9C0D, - 22280: 0x9C0E, - 22281: 0x9C0F, - 22282: 0x9C10, - 22283: 0x9C11, - 22284: 0x9C12, - 22285: 0x9C13, - 22286: 0x9C14, - 22287: 0x9C15, - 22288: 0x9C16, - 22289: 0x9C17, - 22290: 0x9C18, - 22291: 0x9C19, - 22292: 0x9C1A, - 22293: 0x9C1B, - 22294: 0x9C1C, - 22295: 0x9C1D, - 22296: 0x9C1E, - 22297: 0x9C1F, - 22298: 0x9C20, - 22299: 0x9C21, - 22300: 0x9C22, - 22301: 0x9C23, - 22302: 0x9C24, - 22303: 0x9C25, - 22304: 0x9C26, - 22305: 0x9C27, - 22306: 0x9C28, - 22307: 0x9C29, - 22308: 0x9C2A, - 22309: 0x9C2B, - 22310: 0x9C2C, - 22311: 0x9C2D, - 22312: 0x9C2E, - 22313: 0x9C2F, - 22314: 0x9C30, - 22315: 0x9C31, - 22316: 0x9C32, - 22317: 0x9C33, - 22318: 0x9C34, - 22319: 0x9C35, - 22320: 0x9C36, - 22321: 0x9C37, - 22322: 0x9C38, - 22323: 0x9C39, - 22324: 0x9C3A, - 22325: 0x9C3B, - 22326: 0x89E5, - 22327: 0x89EB, - 22328: 0x89EF, - 22329: 0x8A3E, - 22330: 0x8B26, - 22331: 0x9753, - 22332: 0x96E9, - 22333: 0x96F3, - 22334: 0x96EF, - 22335: 0x9706, - 22336: 0x9701, - 22337: 0x9708, - 22338: 0x970F, - 22339: 0x970E, - 22340: 0x972A, - 22341: 0x972D, - 22342: 0x9730, - 22343: 0x973E, - 22344: 0x9F80, - 22345: 0x9F83, - 22346: 0x9F85, - 22347: 0x9F86, - 22348: 0x9F87, - 22349: 0x9F88, - 22350: 0x9F89, - 22351: 0x9F8A, - 22352: 0x9F8C, - 22353: 0x9EFE, - 22354: 0x9F0B, - 22355: 0x9F0D, - 22356: 0x96B9, - 22357: 0x96BC, - 22358: 0x96BD, - 22359: 0x96CE, - 22360: 0x96D2, - 22361: 0x77BF, - 22362: 0x96E0, - 22363: 0x928E, - 22364: 0x92AE, - 22365: 0x92C8, - 22366: 0x933E, - 22367: 0x936A, - 22368: 0x93CA, - 22369: 0x938F, - 22370: 0x943E, - 22371: 0x946B, - 22372: 0x9C7F, - 22373: 0x9C82, - 22374: 0x9C85, - 22375: 0x9C86, - 22376: 0x9C87, - 22377: 0x9C88, - 22378: 0x7A23, - 22379: 0x9C8B, - 22380: 0x9C8E, - 22381: 0x9C90, - 22382: 0x9C91, - 22383: 0x9C92, - 22384: 0x9C94, - 22385: 0x9C95, - 22386: 0x9C9A, - 22387: 0x9C9B, - 22388: 0x9C9E, - 22389: 0x9C9F, - 22390: 0x9CA0, - 22391: 0x9CA1, - 22392: 0x9CA2, - 22393: 0x9CA3, - 22394: 0x9CA5, - 22395: 0x9CA6, - 22396: 0x9CA7, - 22397: 0x9CA8, - 22398: 0x9CA9, - 22399: 0x9CAB, - 22400: 0x9CAD, - 22401: 0x9CAE, - 22402: 0x9CB0, - 22403: 0x9CB1, - 22404: 0x9CB2, - 22405: 0x9CB3, - 22406: 0x9CB4, - 22407: 0x9CB5, - 22408: 0x9CB6, - 22409: 0x9CB7, - 22410: 0x9CBA, - 22411: 0x9CBB, - 22412: 0x9CBC, - 22413: 0x9CBD, - 22414: 0x9CC4, - 22415: 0x9CC5, - 22416: 0x9CC6, - 22417: 0x9CC7, - 22418: 0x9CCA, - 22419: 0x9CCB, - 22420: 0x9C3C, - 22421: 0x9C3D, - 22422: 0x9C3E, - 22423: 0x9C3F, - 22424: 0x9C40, - 22425: 0x9C41, - 22426: 0x9C42, - 22427: 0x9C43, - 22428: 0x9C44, - 22429: 0x9C45, - 22430: 0x9C46, - 22431: 0x9C47, - 22432: 0x9C48, - 22433: 0x9C49, - 22434: 0x9C4A, - 22435: 0x9C4B, - 22436: 0x9C4C, - 22437: 0x9C4D, - 22438: 0x9C4E, - 22439: 0x9C4F, - 22440: 0x9C50, - 22441: 0x9C51, - 22442: 0x9C52, - 22443: 0x9C53, - 22444: 0x9C54, - 22445: 0x9C55, - 22446: 0x9C56, - 22447: 0x9C57, - 22448: 0x9C58, - 22449: 0x9C59, - 22450: 0x9C5A, - 22451: 0x9C5B, - 22452: 0x9C5C, - 22453: 0x9C5D, - 22454: 0x9C5E, - 22455: 0x9C5F, - 22456: 0x9C60, - 22457: 0x9C61, - 22458: 0x9C62, - 22459: 0x9C63, - 22460: 0x9C64, - 22461: 0x9C65, - 22462: 0x9C66, - 22463: 0x9C67, - 22464: 0x9C68, - 22465: 0x9C69, - 22466: 0x9C6A, - 22467: 0x9C6B, - 22468: 0x9C6C, - 22469: 0x9C6D, - 22470: 0x9C6E, - 22471: 0x9C6F, - 22472: 0x9C70, - 22473: 0x9C71, - 22474: 0x9C72, - 22475: 0x9C73, - 22476: 0x9C74, - 22477: 0x9C75, - 22478: 0x9C76, - 22479: 0x9C77, - 22480: 0x9C78, - 22481: 0x9C79, - 22482: 0x9C7A, - 22483: 0x9C7B, - 22484: 0x9C7D, - 22485: 0x9C7E, - 22486: 0x9C80, - 22487: 0x9C83, - 22488: 0x9C84, - 22489: 0x9C89, - 22490: 0x9C8A, - 22491: 0x9C8C, - 22492: 0x9C8F, - 22493: 0x9C93, - 22494: 0x9C96, - 22495: 0x9C97, - 22496: 0x9C98, - 22497: 0x9C99, - 22498: 0x9C9D, - 22499: 0x9CAA, - 22500: 0x9CAC, - 22501: 0x9CAF, - 22502: 0x9CB9, - 22503: 0x9CBE, - 22504: 0x9CBF, - 22505: 0x9CC0, - 22506: 0x9CC1, - 22507: 0x9CC2, - 22508: 0x9CC8, - 22509: 0x9CC9, - 22510: 0x9CD1, - 22511: 0x9CD2, - 22512: 0x9CDA, - 22513: 0x9CDB, - 22514: 0x9CE0, - 22515: 0x9CE1, - 22516: 0x9CCC, - 22517: 0x9CCD, - 22518: 0x9CCE, - 22519: 0x9CCF, - 22520: 0x9CD0, - 22521: 0x9CD3, - 22522: 0x9CD4, - 22523: 0x9CD5, - 22524: 0x9CD7, - 22525: 0x9CD8, - 22526: 0x9CD9, - 22527: 0x9CDC, - 22528: 0x9CDD, - 22529: 0x9CDF, - 22530: 0x9CE2, - 22531: 0x977C, - 22532: 0x9785, - 22533: 0x9791, - 22534: 0x9792, - 22535: 0x9794, - 22536: 0x97AF, - 22537: 0x97AB, - 22538: 0x97A3, - 22539: 0x97B2, - 22540: 0x97B4, - 22541: 0x9AB1, - 22542: 0x9AB0, - 22543: 0x9AB7, - 22544: 0x9E58, - 22545: 0x9AB6, - 22546: 0x9ABA, - 22547: 0x9ABC, - 22548: 0x9AC1, - 22549: 0x9AC0, - 22550: 0x9AC5, - 22551: 0x9AC2, - 22552: 0x9ACB, - 22553: 0x9ACC, - 22554: 0x9AD1, - 22555: 0x9B45, - 22556: 0x9B43, - 22557: 0x9B47, - 22558: 0x9B49, - 22559: 0x9B48, - 22560: 0x9B4D, - 22561: 0x9B51, - 22562: 0x98E8, - 22563: 0x990D, - 22564: 0x992E, - 22565: 0x9955, - 22566: 0x9954, - 22567: 0x9ADF, - 22568: 0x9AE1, - 22569: 0x9AE6, - 22570: 0x9AEF, - 22571: 0x9AEB, - 22572: 0x9AFB, - 22573: 0x9AED, - 22574: 0x9AF9, - 22575: 0x9B08, - 22576: 0x9B0F, - 22577: 0x9B13, - 22578: 0x9B1F, - 22579: 0x9B23, - 22580: 0x9EBD, - 22581: 0x9EBE, - 22582: 0x7E3B, - 22583: 0x9E82, - 22584: 0x9E87, - 22585: 0x9E88, - 22586: 0x9E8B, - 22587: 0x9E92, - 22588: 0x93D6, - 22589: 0x9E9D, - 22590: 0x9E9F, - 22591: 0x9EDB, - 22592: 0x9EDC, - 22593: 0x9EDD, - 22594: 0x9EE0, - 22595: 0x9EDF, - 22596: 0x9EE2, - 22597: 0x9EE9, - 22598: 0x9EE7, - 22599: 0x9EE5, - 22600: 0x9EEA, - 22601: 0x9EEF, - 22602: 0x9F22, - 22603: 0x9F2C, - 22604: 0x9F2F, - 22605: 0x9F39, - 22606: 0x9F37, - 22607: 0x9F3D, - 22608: 0x9F3E, - 22609: 0x9F44, - 22610: 0x9CE3, - 22611: 0x9CE4, - 22612: 0x9CE5, - 22613: 0x9CE6, - 22614: 0x9CE7, - 22615: 0x9CE8, - 22616: 0x9CE9, - 22617: 0x9CEA, - 22618: 0x9CEB, - 22619: 0x9CEC, - 22620: 0x9CED, - 22621: 0x9CEE, - 22622: 0x9CEF, - 22623: 0x9CF0, - 22624: 0x9CF1, - 22625: 0x9CF2, - 22626: 0x9CF3, - 22627: 0x9CF4, - 22628: 0x9CF5, - 22629: 0x9CF6, - 22630: 0x9CF7, - 22631: 0x9CF8, - 22632: 0x9CF9, - 22633: 0x9CFA, - 22634: 0x9CFB, - 22635: 0x9CFC, - 22636: 0x9CFD, - 22637: 0x9CFE, - 22638: 0x9CFF, - 22639: 0x9D00, - 22640: 0x9D01, - 22641: 0x9D02, - 22642: 0x9D03, - 22643: 0x9D04, - 22644: 0x9D05, - 22645: 0x9D06, - 22646: 0x9D07, - 22647: 0x9D08, - 22648: 0x9D09, - 22649: 0x9D0A, - 22650: 0x9D0B, - 22651: 0x9D0C, - 22652: 0x9D0D, - 22653: 0x9D0E, - 22654: 0x9D0F, - 22655: 0x9D10, - 22656: 0x9D11, - 22657: 0x9D12, - 22658: 0x9D13, - 22659: 0x9D14, - 22660: 0x9D15, - 22661: 0x9D16, - 22662: 0x9D17, - 22663: 0x9D18, - 22664: 0x9D19, - 22665: 0x9D1A, - 22666: 0x9D1B, - 22667: 0x9D1C, - 22668: 0x9D1D, - 22669: 0x9D1E, - 22670: 0x9D1F, - 22671: 0x9D20, - 22672: 0x9D21, - 22673: 0x9D22, - 22674: 0x9D23, - 22675: 0x9D24, - 22676: 0x9D25, - 22677: 0x9D26, - 22678: 0x9D27, - 22679: 0x9D28, - 22680: 0x9D29, - 22681: 0x9D2A, - 22682: 0x9D2B, - 22683: 0x9D2C, - 22684: 0x9D2D, - 22685: 0x9D2E, - 22686: 0x9D2F, - 22687: 0x9D30, - 22688: 0x9D31, - 22689: 0x9D32, - 22690: 0x9D33, - 22691: 0x9D34, - 22692: 0x9D35, - 22693: 0x9D36, - 22694: 0x9D37, - 22695: 0x9D38, - 22696: 0x9D39, - 22697: 0x9D3A, - 22698: 0x9D3B, - 22699: 0x9D3C, - 22700: 0x9D3D, - 22701: 0x9D3E, - 22702: 0x9D3F, - 22703: 0x9D40, - 22704: 0x9D41, - 22705: 0x9D42, - 22800: 0x9D43, - 22801: 0x9D44, - 22802: 0x9D45, - 22803: 0x9D46, - 22804: 0x9D47, - 22805: 0x9D48, - 22806: 0x9D49, - 22807: 0x9D4A, - 22808: 0x9D4B, - 22809: 0x9D4C, - 22810: 0x9D4D, - 22811: 0x9D4E, - 22812: 0x9D4F, - 22813: 0x9D50, - 22814: 0x9D51, - 22815: 0x9D52, - 22816: 0x9D53, - 22817: 0x9D54, - 22818: 0x9D55, - 22819: 0x9D56, - 22820: 0x9D57, - 22821: 0x9D58, - 22822: 0x9D59, - 22823: 0x9D5A, - 22824: 0x9D5B, - 22825: 0x9D5C, - 22826: 0x9D5D, - 22827: 0x9D5E, - 22828: 0x9D5F, - 22829: 0x9D60, - 22830: 0x9D61, - 22831: 0x9D62, - 22832: 0x9D63, - 22833: 0x9D64, - 22834: 0x9D65, - 22835: 0x9D66, - 22836: 0x9D67, - 22837: 0x9D68, - 22838: 0x9D69, - 22839: 0x9D6A, - 22840: 0x9D6B, - 22841: 0x9D6C, - 22842: 0x9D6D, - 22843: 0x9D6E, - 22844: 0x9D6F, - 22845: 0x9D70, - 22846: 0x9D71, - 22847: 0x9D72, - 22848: 0x9D73, - 22849: 0x9D74, - 22850: 0x9D75, - 22851: 0x9D76, - 22852: 0x9D77, - 22853: 0x9D78, - 22854: 0x9D79, - 22855: 0x9D7A, - 22856: 0x9D7B, - 22857: 0x9D7C, - 22858: 0x9D7D, - 22859: 0x9D7E, - 22860: 0x9D7F, - 22861: 0x9D80, - 22862: 0x9D81, - 22863: 0x9D82, - 22864: 0x9D83, - 22865: 0x9D84, - 22866: 0x9D85, - 22867: 0x9D86, - 22868: 0x9D87, - 22869: 0x9D88, - 22870: 0x9D89, - 22871: 0x9D8A, - 22872: 0x9D8B, - 22873: 0x9D8C, - 22874: 0x9D8D, - 22875: 0x9D8E, - 22876: 0x9D8F, - 22877: 0x9D90, - 22878: 0x9D91, - 22879: 0x9D92, - 22880: 0x9D93, - 22881: 0x9D94, - 22882: 0x9D95, - 22883: 0x9D96, - 22884: 0x9D97, - 22885: 0x9D98, - 22886: 0x9D99, - 22887: 0x9D9A, - 22888: 0x9D9B, - 22889: 0x9D9C, - 22890: 0x9D9D, - 22891: 0x9D9E, - 22892: 0x9D9F, - 22893: 0x9DA0, - 22894: 0x9DA1, - 22895: 0x9DA2, - 22990: 0x9DA3, - 22991: 0x9DA4, - 22992: 0x9DA5, - 22993: 0x9DA6, - 22994: 0x9DA7, - 22995: 0x9DA8, - 22996: 0x9DA9, - 22997: 0x9DAA, - 22998: 0x9DAB, - 22999: 0x9DAC, - 23000: 0x9DAD, - 23001: 0x9DAE, - 23002: 0x9DAF, - 23003: 0x9DB0, - 23004: 0x9DB1, - 23005: 0x9DB2, - 23006: 0x9DB3, - 23007: 0x9DB4, - 23008: 0x9DB5, - 23009: 0x9DB6, - 23010: 0x9DB7, - 23011: 0x9DB8, - 23012: 0x9DB9, - 23013: 0x9DBA, - 23014: 0x9DBB, - 23015: 0x9DBC, - 23016: 0x9DBD, - 23017: 0x9DBE, - 23018: 0x9DBF, - 23019: 0x9DC0, - 23020: 0x9DC1, - 23021: 0x9DC2, - 23022: 0x9DC3, - 23023: 0x9DC4, - 23024: 0x9DC5, - 23025: 0x9DC6, - 23026: 0x9DC7, - 23027: 0x9DC8, - 23028: 0x9DC9, - 23029: 0x9DCA, - 23030: 0x9DCB, - 23031: 0x9DCC, - 23032: 0x9DCD, - 23033: 0x9DCE, - 23034: 0x9DCF, - 23035: 0x9DD0, - 23036: 0x9DD1, - 23037: 0x9DD2, - 23038: 0x9DD3, - 23039: 0x9DD4, - 23040: 0x9DD5, - 23041: 0x9DD6, - 23042: 0x9DD7, - 23043: 0x9DD8, - 23044: 0x9DD9, - 23045: 0x9DDA, - 23046: 0x9DDB, - 23047: 0x9DDC, - 23048: 0x9DDD, - 23049: 0x9DDE, - 23050: 0x9DDF, - 23051: 0x9DE0, - 23052: 0x9DE1, - 23053: 0x9DE2, - 23054: 0x9DE3, - 23055: 0x9DE4, - 23056: 0x9DE5, - 23057: 0x9DE6, - 23058: 0x9DE7, - 23059: 0x9DE8, - 23060: 0x9DE9, - 23061: 0x9DEA, - 23062: 0x9DEB, - 23063: 0x9DEC, - 23064: 0x9DED, - 23065: 0x9DEE, - 23066: 0x9DEF, - 23067: 0x9DF0, - 23068: 0x9DF1, - 23069: 0x9DF2, - 23070: 0x9DF3, - 23071: 0x9DF4, - 23072: 0x9DF5, - 23073: 0x9DF6, - 23074: 0x9DF7, - 23075: 0x9DF8, - 23076: 0x9DF9, - 23077: 0x9DFA, - 23078: 0x9DFB, - 23079: 0x9DFC, - 23080: 0x9DFD, - 23081: 0x9DFE, - 23082: 0x9DFF, - 23083: 0x9E00, - 23084: 0x9E01, - 23085: 0x9E02, - 23180: 0x9E03, - 23181: 0x9E04, - 23182: 0x9E05, - 23183: 0x9E06, - 23184: 0x9E07, - 23185: 0x9E08, - 23186: 0x9E09, - 23187: 0x9E0A, - 23188: 0x9E0B, - 23189: 0x9E0C, - 23190: 0x9E0D, - 23191: 0x9E0E, - 23192: 0x9E0F, - 23193: 0x9E10, - 23194: 0x9E11, - 23195: 0x9E12, - 23196: 0x9E13, - 23197: 0x9E14, - 23198: 0x9E15, - 23199: 0x9E16, - 23200: 0x9E17, - 23201: 0x9E18, - 23202: 0x9E19, - 23203: 0x9E1A, - 23204: 0x9E1B, - 23205: 0x9E1C, - 23206: 0x9E1D, - 23207: 0x9E1E, - 23208: 0x9E24, - 23209: 0x9E27, - 23210: 0x9E2E, - 23211: 0x9E30, - 23212: 0x9E34, - 23213: 0x9E3B, - 23214: 0x9E3C, - 23215: 0x9E40, - 23216: 0x9E4D, - 23217: 0x9E50, - 23218: 0x9E52, - 23219: 0x9E53, - 23220: 0x9E54, - 23221: 0x9E56, - 23222: 0x9E59, - 23223: 0x9E5D, - 23224: 0x9E5F, - 23225: 0x9E60, - 23226: 0x9E61, - 23227: 0x9E62, - 23228: 0x9E65, - 23229: 0x9E6E, - 23230: 0x9E6F, - 23231: 0x9E72, - 23232: 0x9E74, - 23233: 0x9E75, - 23234: 0x9E76, - 23235: 0x9E77, - 23236: 0x9E78, - 23237: 0x9E79, - 23238: 0x9E7A, - 23239: 0x9E7B, - 23240: 0x9E7C, - 23241: 0x9E7D, - 23242: 0x9E80, - 23243: 0x9E81, - 23244: 0x9E83, - 23245: 0x9E84, - 23246: 0x9E85, - 23247: 0x9E86, - 23248: 0x9E89, - 23249: 0x9E8A, - 23250: 0x9E8C, - 23251: 0x9E8D, - 23252: 0x9E8E, - 23253: 0x9E8F, - 23254: 0x9E90, - 23255: 0x9E91, - 23256: 0x9E94, - 23257: 0x9E95, - 23258: 0x9E96, - 23259: 0x9E97, - 23260: 0x9E98, - 23261: 0x9E99, - 23262: 0x9E9A, - 23263: 0x9E9B, - 23264: 0x9E9C, - 23265: 0x9E9E, - 23266: 0x9EA0, - 23267: 0x9EA1, - 23268: 0x9EA2, - 23269: 0x9EA3, - 23270: 0x9EA4, - 23271: 0x9EA5, - 23272: 0x9EA7, - 23273: 0x9EA8, - 23274: 0x9EA9, - 23275: 0x9EAA, - 23370: 0x9EAB, - 23371: 0x9EAC, - 23372: 0x9EAD, - 23373: 0x9EAE, - 23374: 0x9EAF, - 23375: 0x9EB0, - 23376: 0x9EB1, - 23377: 0x9EB2, - 23378: 0x9EB3, - 23379: 0x9EB5, - 23380: 0x9EB6, - 23381: 0x9EB7, - 23382: 0x9EB9, - 23383: 0x9EBA, - 23384: 0x9EBC, - 23385: 0x9EBF, - 23386: 0x9EC0, - 23387: 0x9EC1, - 23388: 0x9EC2, - 23389: 0x9EC3, - 23390: 0x9EC5, - 23391: 0x9EC6, - 23392: 0x9EC7, - 23393: 0x9EC8, - 23394: 0x9ECA, - 23395: 0x9ECB, - 23396: 0x9ECC, - 23397: 0x9ED0, - 23398: 0x9ED2, - 23399: 0x9ED3, - 23400: 0x9ED5, - 23401: 0x9ED6, - 23402: 0x9ED7, - 23403: 0x9ED9, - 23404: 0x9EDA, - 23405: 0x9EDE, - 23406: 0x9EE1, - 23407: 0x9EE3, - 23408: 0x9EE4, - 23409: 0x9EE6, - 23410: 0x9EE8, - 23411: 0x9EEB, - 23412: 0x9EEC, - 23413: 0x9EED, - 23414: 0x9EEE, - 23415: 0x9EF0, - 23416: 0x9EF1, - 23417: 0x9EF2, - 23418: 0x9EF3, - 23419: 0x9EF4, - 23420: 0x9EF5, - 23421: 0x9EF6, - 23422: 0x9EF7, - 23423: 0x9EF8, - 23424: 0x9EFA, - 23425: 0x9EFD, - 23426: 0x9EFF, - 23427: 0x9F00, - 23428: 0x9F01, - 23429: 0x9F02, - 23430: 0x9F03, - 23431: 0x9F04, - 23432: 0x9F05, - 23433: 0x9F06, - 23434: 0x9F07, - 23435: 0x9F08, - 23436: 0x9F09, - 23437: 0x9F0A, - 23438: 0x9F0C, - 23439: 0x9F0F, - 23440: 0x9F11, - 23441: 0x9F12, - 23442: 0x9F14, - 23443: 0x9F15, - 23444: 0x9F16, - 23445: 0x9F18, - 23446: 0x9F1A, - 23447: 0x9F1B, - 23448: 0x9F1C, - 23449: 0x9F1D, - 23450: 0x9F1E, - 23451: 0x9F1F, - 23452: 0x9F21, - 23453: 0x9F23, - 23454: 0x9F24, - 23455: 0x9F25, - 23456: 0x9F26, - 23457: 0x9F27, - 23458: 0x9F28, - 23459: 0x9F29, - 23460: 0x9F2A, - 23461: 0x9F2B, - 23462: 0x9F2D, - 23463: 0x9F2E, - 23464: 0x9F30, - 23465: 0x9F31, - 23560: 0x9F32, - 23561: 0x9F33, - 23562: 0x9F34, - 23563: 0x9F35, - 23564: 0x9F36, - 23565: 0x9F38, - 23566: 0x9F3A, - 23567: 0x9F3C, - 23568: 0x9F3F, - 23569: 0x9F40, - 23570: 0x9F41, - 23571: 0x9F42, - 23572: 0x9F43, - 23573: 0x9F45, - 23574: 0x9F46, - 23575: 0x9F47, - 23576: 0x9F48, - 23577: 0x9F49, - 23578: 0x9F4A, - 23579: 0x9F4B, - 23580: 0x9F4C, - 23581: 0x9F4D, - 23582: 0x9F4E, - 23583: 0x9F4F, - 23584: 0x9F52, - 23585: 0x9F53, - 23586: 0x9F54, - 23587: 0x9F55, - 23588: 0x9F56, - 23589: 0x9F57, - 23590: 0x9F58, - 23591: 0x9F59, - 23592: 0x9F5A, - 23593: 0x9F5B, - 23594: 0x9F5C, - 23595: 0x9F5D, - 23596: 0x9F5E, - 23597: 0x9F5F, - 23598: 0x9F60, - 23599: 0x9F61, - 23600: 0x9F62, - 23601: 0x9F63, - 23602: 0x9F64, - 23603: 0x9F65, - 23604: 0x9F66, - 23605: 0x9F67, - 23606: 0x9F68, - 23607: 0x9F69, - 23608: 0x9F6A, - 23609: 0x9F6B, - 23610: 0x9F6C, - 23611: 0x9F6D, - 23612: 0x9F6E, - 23613: 0x9F6F, - 23614: 0x9F70, - 23615: 0x9F71, - 23616: 0x9F72, - 23617: 0x9F73, - 23618: 0x9F74, - 23619: 0x9F75, - 23620: 0x9F76, - 23621: 0x9F77, - 23622: 0x9F78, - 23623: 0x9F79, - 23624: 0x9F7A, - 23625: 0x9F7B, - 23626: 0x9F7C, - 23627: 0x9F7D, - 23628: 0x9F7E, - 23629: 0x9F81, - 23630: 0x9F82, - 23631: 0x9F8D, - 23632: 0x9F8E, - 23633: 0x9F8F, - 23634: 0x9F90, - 23635: 0x9F91, - 23636: 0x9F92, - 23637: 0x9F93, - 23638: 0x9F94, - 23639: 0x9F95, - 23640: 0x9F96, - 23641: 0x9F97, - 23642: 0x9F98, - 23643: 0x9F9C, - 23644: 0x9F9D, - 23645: 0x9F9E, - 23646: 0x9FA1, - 23647: 0x9FA2, - 23648: 0x9FA3, - 23649: 0x9FA4, - 23650: 0x9FA5, - 23651: 0xF92C, - 23652: 0xF979, - 23653: 0xF995, - 23654: 0xF9E7, - 23655: 0xF9F1, - 23750: 0xFA0C, - 23751: 0xFA0D, - 23752: 0xFA0E, - 23753: 0xFA0F, - 23754: 0xFA11, - 23755: 0xFA13, - 23756: 0xFA14, - 23757: 0xFA18, - 23758: 0xFA1F, - 23759: 0xFA20, - 23760: 0xFA21, - 23761: 0xFA23, - 23762: 0xFA24, - 23763: 0xFA27, - 23764: 0xFA28, - 23765: 0xFA29, - 23766: 0x2E81, - 23770: 0x2E84, - 23771: 0x3473, - 23772: 0x3447, - 23773: 0x2E88, - 23774: 0x2E8B, - 23776: 0x359E, - 23777: 0x361A, - 23778: 0x360E, - 23779: 0x2E8C, - 23780: 0x2E97, - 23781: 0x396E, - 23782: 0x3918, - 23784: 0x39CF, - 23785: 0x39DF, - 23786: 0x3A73, - 23787: 0x39D0, - 23790: 0x3B4E, - 23791: 0x3C6E, - 23792: 0x3CE0, - 23793: 0x2EA7, - 23796: 0x2EAA, - 23797: 0x4056, - 23798: 0x415F, - 23799: 0x2EAE, - 23800: 0x4337, - 23801: 0x2EB3, - 23802: 0x2EB6, - 23803: 0x2EB7, - 23805: 0x43B1, - 23806: 0x43AC, - 23807: 0x2EBB, - 23808: 0x43DD, - 23809: 0x44D6, - 23810: 0x4661, - 23811: 0x464C, - 23813: 0x4723, - 23814: 0x4729, - 23815: 0x477C, - 23816: 0x478D, - 23817: 0x2ECA, - 23818: 0x4947, - 23819: 0x497A, - 23820: 0x497D, - 23821: 0x4982, - 23822: 0x4983, - 23823: 0x4985, - 23824: 0x4986, - 23825: 0x499F, - 23826: 0x499B, - 23827: 0x49B7, - 23828: 0x49B6, - 23831: 0x4CA3, - 23832: 0x4C9F, - 23833: 0x4CA0, - 23834: 0x4CA1, - 23835: 0x4C77, - 23836: 0x4CA2, - 23837: 0x4D13, - 23838: 0x4D14, - 23839: 0x4D15, - 23840: 0x4D16, - 23841: 0x4D17, - 23842: 0x4D18, - 23843: 0x4D19, - 23844: 0x4DAE, -} - -const numEncodeTables = 5 - -// encodeX are the encoding tables from Unicode to GBK code, -// sorted by decreasing length. -// encode0: 28965 entries for runes in [11905, 40870). -// encode1: 1587 entries for runes in [ 8208, 9795). -// encode2: 942 entries for runes in [ 164, 1106). -// encode3: 438 entries for runes in [65072, 65510). -// encode4: 254 entries for runes in [63788, 64042). - -const encode0Low, encode0High = 11905, 40870 - -var encode0 = [...]uint16{ - 11905 - 11905: 0xFE50, - 11908 - 11905: 0xFE54, - 11912 - 11905: 0xFE57, - 11915 - 11905: 0xFE58, - 11916 - 11905: 0xFE5D, - 11927 - 11905: 0xFE5E, - 11943 - 11905: 0xFE6B, - 11946 - 11905: 0xFE6E, - 11950 - 11905: 0xFE71, - 11955 - 11905: 0xFE73, - 11958 - 11905: 0xFE74, - 11959 - 11905: 0xFE75, - 11963 - 11905: 0xFE79, - 11978 - 11905: 0xFE84, - 12272 - 11905: 0xA98A, - 12273 - 11905: 0xA98B, - 12274 - 11905: 0xA98C, - 12275 - 11905: 0xA98D, - 12276 - 11905: 0xA98E, - 12277 - 11905: 0xA98F, - 12278 - 11905: 0xA990, - 12279 - 11905: 0xA991, - 12280 - 11905: 0xA992, - 12281 - 11905: 0xA993, - 12282 - 11905: 0xA994, - 12283 - 11905: 0xA995, - 12288 - 11905: 0xA1A1, - 12289 - 11905: 0xA1A2, - 12290 - 11905: 0xA1A3, - 12291 - 11905: 0xA1A8, - 12293 - 11905: 0xA1A9, - 12294 - 11905: 0xA965, - 12295 - 11905: 0xA996, - 12296 - 11905: 0xA1B4, - 12297 - 11905: 0xA1B5, - 12298 - 11905: 0xA1B6, - 12299 - 11905: 0xA1B7, - 12300 - 11905: 0xA1B8, - 12301 - 11905: 0xA1B9, - 12302 - 11905: 0xA1BA, - 12303 - 11905: 0xA1BB, - 12304 - 11905: 0xA1BE, - 12305 - 11905: 0xA1BF, - 12306 - 11905: 0xA893, - 12307 - 11905: 0xA1FE, - 12308 - 11905: 0xA1B2, - 12309 - 11905: 0xA1B3, - 12310 - 11905: 0xA1BC, - 12311 - 11905: 0xA1BD, - 12317 - 11905: 0xA894, - 12318 - 11905: 0xA895, - 12321 - 11905: 0xA940, - 12322 - 11905: 0xA941, - 12323 - 11905: 0xA942, - 12324 - 11905: 0xA943, - 12325 - 11905: 0xA944, - 12326 - 11905: 0xA945, - 12327 - 11905: 0xA946, - 12328 - 11905: 0xA947, - 12329 - 11905: 0xA948, - 12350 - 11905: 0xA989, - 12353 - 11905: 0xA4A1, - 12354 - 11905: 0xA4A2, - 12355 - 11905: 0xA4A3, - 12356 - 11905: 0xA4A4, - 12357 - 11905: 0xA4A5, - 12358 - 11905: 0xA4A6, - 12359 - 11905: 0xA4A7, - 12360 - 11905: 0xA4A8, - 12361 - 11905: 0xA4A9, - 12362 - 11905: 0xA4AA, - 12363 - 11905: 0xA4AB, - 12364 - 11905: 0xA4AC, - 12365 - 11905: 0xA4AD, - 12366 - 11905: 0xA4AE, - 12367 - 11905: 0xA4AF, - 12368 - 11905: 0xA4B0, - 12369 - 11905: 0xA4B1, - 12370 - 11905: 0xA4B2, - 12371 - 11905: 0xA4B3, - 12372 - 11905: 0xA4B4, - 12373 - 11905: 0xA4B5, - 12374 - 11905: 0xA4B6, - 12375 - 11905: 0xA4B7, - 12376 - 11905: 0xA4B8, - 12377 - 11905: 0xA4B9, - 12378 - 11905: 0xA4BA, - 12379 - 11905: 0xA4BB, - 12380 - 11905: 0xA4BC, - 12381 - 11905: 0xA4BD, - 12382 - 11905: 0xA4BE, - 12383 - 11905: 0xA4BF, - 12384 - 11905: 0xA4C0, - 12385 - 11905: 0xA4C1, - 12386 - 11905: 0xA4C2, - 12387 - 11905: 0xA4C3, - 12388 - 11905: 0xA4C4, - 12389 - 11905: 0xA4C5, - 12390 - 11905: 0xA4C6, - 12391 - 11905: 0xA4C7, - 12392 - 11905: 0xA4C8, - 12393 - 11905: 0xA4C9, - 12394 - 11905: 0xA4CA, - 12395 - 11905: 0xA4CB, - 12396 - 11905: 0xA4CC, - 12397 - 11905: 0xA4CD, - 12398 - 11905: 0xA4CE, - 12399 - 11905: 0xA4CF, - 12400 - 11905: 0xA4D0, - 12401 - 11905: 0xA4D1, - 12402 - 11905: 0xA4D2, - 12403 - 11905: 0xA4D3, - 12404 - 11905: 0xA4D4, - 12405 - 11905: 0xA4D5, - 12406 - 11905: 0xA4D6, - 12407 - 11905: 0xA4D7, - 12408 - 11905: 0xA4D8, - 12409 - 11905: 0xA4D9, - 12410 - 11905: 0xA4DA, - 12411 - 11905: 0xA4DB, - 12412 - 11905: 0xA4DC, - 12413 - 11905: 0xA4DD, - 12414 - 11905: 0xA4DE, - 12415 - 11905: 0xA4DF, - 12416 - 11905: 0xA4E0, - 12417 - 11905: 0xA4E1, - 12418 - 11905: 0xA4E2, - 12419 - 11905: 0xA4E3, - 12420 - 11905: 0xA4E4, - 12421 - 11905: 0xA4E5, - 12422 - 11905: 0xA4E6, - 12423 - 11905: 0xA4E7, - 12424 - 11905: 0xA4E8, - 12425 - 11905: 0xA4E9, - 12426 - 11905: 0xA4EA, - 12427 - 11905: 0xA4EB, - 12428 - 11905: 0xA4EC, - 12429 - 11905: 0xA4ED, - 12430 - 11905: 0xA4EE, - 12431 - 11905: 0xA4EF, - 12432 - 11905: 0xA4F0, - 12433 - 11905: 0xA4F1, - 12434 - 11905: 0xA4F2, - 12435 - 11905: 0xA4F3, - 12443 - 11905: 0xA961, - 12444 - 11905: 0xA962, - 12445 - 11905: 0xA966, - 12446 - 11905: 0xA967, - 12449 - 11905: 0xA5A1, - 12450 - 11905: 0xA5A2, - 12451 - 11905: 0xA5A3, - 12452 - 11905: 0xA5A4, - 12453 - 11905: 0xA5A5, - 12454 - 11905: 0xA5A6, - 12455 - 11905: 0xA5A7, - 12456 - 11905: 0xA5A8, - 12457 - 11905: 0xA5A9, - 12458 - 11905: 0xA5AA, - 12459 - 11905: 0xA5AB, - 12460 - 11905: 0xA5AC, - 12461 - 11905: 0xA5AD, - 12462 - 11905: 0xA5AE, - 12463 - 11905: 0xA5AF, - 12464 - 11905: 0xA5B0, - 12465 - 11905: 0xA5B1, - 12466 - 11905: 0xA5B2, - 12467 - 11905: 0xA5B3, - 12468 - 11905: 0xA5B4, - 12469 - 11905: 0xA5B5, - 12470 - 11905: 0xA5B6, - 12471 - 11905: 0xA5B7, - 12472 - 11905: 0xA5B8, - 12473 - 11905: 0xA5B9, - 12474 - 11905: 0xA5BA, - 12475 - 11905: 0xA5BB, - 12476 - 11905: 0xA5BC, - 12477 - 11905: 0xA5BD, - 12478 - 11905: 0xA5BE, - 12479 - 11905: 0xA5BF, - 12480 - 11905: 0xA5C0, - 12481 - 11905: 0xA5C1, - 12482 - 11905: 0xA5C2, - 12483 - 11905: 0xA5C3, - 12484 - 11905: 0xA5C4, - 12485 - 11905: 0xA5C5, - 12486 - 11905: 0xA5C6, - 12487 - 11905: 0xA5C7, - 12488 - 11905: 0xA5C8, - 12489 - 11905: 0xA5C9, - 12490 - 11905: 0xA5CA, - 12491 - 11905: 0xA5CB, - 12492 - 11905: 0xA5CC, - 12493 - 11905: 0xA5CD, - 12494 - 11905: 0xA5CE, - 12495 - 11905: 0xA5CF, - 12496 - 11905: 0xA5D0, - 12497 - 11905: 0xA5D1, - 12498 - 11905: 0xA5D2, - 12499 - 11905: 0xA5D3, - 12500 - 11905: 0xA5D4, - 12501 - 11905: 0xA5D5, - 12502 - 11905: 0xA5D6, - 12503 - 11905: 0xA5D7, - 12504 - 11905: 0xA5D8, - 12505 - 11905: 0xA5D9, - 12506 - 11905: 0xA5DA, - 12507 - 11905: 0xA5DB, - 12508 - 11905: 0xA5DC, - 12509 - 11905: 0xA5DD, - 12510 - 11905: 0xA5DE, - 12511 - 11905: 0xA5DF, - 12512 - 11905: 0xA5E0, - 12513 - 11905: 0xA5E1, - 12514 - 11905: 0xA5E2, - 12515 - 11905: 0xA5E3, - 12516 - 11905: 0xA5E4, - 12517 - 11905: 0xA5E5, - 12518 - 11905: 0xA5E6, - 12519 - 11905: 0xA5E7, - 12520 - 11905: 0xA5E8, - 12521 - 11905: 0xA5E9, - 12522 - 11905: 0xA5EA, - 12523 - 11905: 0xA5EB, - 12524 - 11905: 0xA5EC, - 12525 - 11905: 0xA5ED, - 12526 - 11905: 0xA5EE, - 12527 - 11905: 0xA5EF, - 12528 - 11905: 0xA5F0, - 12529 - 11905: 0xA5F1, - 12530 - 11905: 0xA5F2, - 12531 - 11905: 0xA5F3, - 12532 - 11905: 0xA5F4, - 12533 - 11905: 0xA5F5, - 12534 - 11905: 0xA5F6, - 12540 - 11905: 0xA960, - 12541 - 11905: 0xA963, - 12542 - 11905: 0xA964, - 12549 - 11905: 0xA8C5, - 12550 - 11905: 0xA8C6, - 12551 - 11905: 0xA8C7, - 12552 - 11905: 0xA8C8, - 12553 - 11905: 0xA8C9, - 12554 - 11905: 0xA8CA, - 12555 - 11905: 0xA8CB, - 12556 - 11905: 0xA8CC, - 12557 - 11905: 0xA8CD, - 12558 - 11905: 0xA8CE, - 12559 - 11905: 0xA8CF, - 12560 - 11905: 0xA8D0, - 12561 - 11905: 0xA8D1, - 12562 - 11905: 0xA8D2, - 12563 - 11905: 0xA8D3, - 12564 - 11905: 0xA8D4, - 12565 - 11905: 0xA8D5, - 12566 - 11905: 0xA8D6, - 12567 - 11905: 0xA8D7, - 12568 - 11905: 0xA8D8, - 12569 - 11905: 0xA8D9, - 12570 - 11905: 0xA8DA, - 12571 - 11905: 0xA8DB, - 12572 - 11905: 0xA8DC, - 12573 - 11905: 0xA8DD, - 12574 - 11905: 0xA8DE, - 12575 - 11905: 0xA8DF, - 12576 - 11905: 0xA8E0, - 12577 - 11905: 0xA8E1, - 12578 - 11905: 0xA8E2, - 12579 - 11905: 0xA8E3, - 12580 - 11905: 0xA8E4, - 12581 - 11905: 0xA8E5, - 12582 - 11905: 0xA8E6, - 12583 - 11905: 0xA8E7, - 12584 - 11905: 0xA8E8, - 12585 - 11905: 0xA8E9, - 12832 - 11905: 0xA2E5, - 12833 - 11905: 0xA2E6, - 12834 - 11905: 0xA2E7, - 12835 - 11905: 0xA2E8, - 12836 - 11905: 0xA2E9, - 12837 - 11905: 0xA2EA, - 12838 - 11905: 0xA2EB, - 12839 - 11905: 0xA2EC, - 12840 - 11905: 0xA2ED, - 12841 - 11905: 0xA2EE, - 12849 - 11905: 0xA95A, - 12963 - 11905: 0xA949, - 13198 - 11905: 0xA94A, - 13199 - 11905: 0xA94B, - 13212 - 11905: 0xA94C, - 13213 - 11905: 0xA94D, - 13214 - 11905: 0xA94E, - 13217 - 11905: 0xA94F, - 13252 - 11905: 0xA950, - 13262 - 11905: 0xA951, - 13265 - 11905: 0xA952, - 13266 - 11905: 0xA953, - 13269 - 11905: 0xA954, - 13383 - 11905: 0xFE56, - 13427 - 11905: 0xFE55, - 13726 - 11905: 0xFE5A, - 13838 - 11905: 0xFE5C, - 13850 - 11905: 0xFE5B, - 14616 - 11905: 0xFE60, - 14702 - 11905: 0xFE5F, - 14799 - 11905: 0xFE62, - 14800 - 11905: 0xFE65, - 14815 - 11905: 0xFE63, - 14963 - 11905: 0xFE64, - 15182 - 11905: 0xFE68, - 15470 - 11905: 0xFE69, - 15584 - 11905: 0xFE6A, - 16470 - 11905: 0xFE6F, - 16735 - 11905: 0xFE70, - 17207 - 11905: 0xFE72, - 17324 - 11905: 0xFE78, - 17329 - 11905: 0xFE77, - 17373 - 11905: 0xFE7A, - 17622 - 11905: 0xFE7B, - 17996 - 11905: 0xFE7D, - 18017 - 11905: 0xFE7C, - 18211 - 11905: 0xFE80, - 18217 - 11905: 0xFE81, - 18300 - 11905: 0xFE82, - 18317 - 11905: 0xFE83, - 18759 - 11905: 0xFE85, - 18810 - 11905: 0xFE86, - 18813 - 11905: 0xFE87, - 18818 - 11905: 0xFE88, - 18819 - 11905: 0xFE89, - 18821 - 11905: 0xFE8A, - 18822 - 11905: 0xFE8B, - 18843 - 11905: 0xFE8D, - 18847 - 11905: 0xFE8C, - 18870 - 11905: 0xFE8F, - 18871 - 11905: 0xFE8E, - 19575 - 11905: 0xFE96, - 19615 - 11905: 0xFE93, - 19616 - 11905: 0xFE94, - 19617 - 11905: 0xFE95, - 19618 - 11905: 0xFE97, - 19619 - 11905: 0xFE92, - 19731 - 11905: 0xFE98, - 19732 - 11905: 0xFE99, - 19733 - 11905: 0xFE9A, - 19734 - 11905: 0xFE9B, - 19735 - 11905: 0xFE9C, - 19736 - 11905: 0xFE9D, - 19737 - 11905: 0xFE9E, - 19886 - 11905: 0xFE9F, - 19968 - 11905: 0xD2BB, - 19969 - 11905: 0xB6A1, - 19970 - 11905: 0x8140, - 19971 - 11905: 0xC6DF, - 19972 - 11905: 0x8141, - 19973 - 11905: 0x8142, - 19974 - 11905: 0x8143, - 19975 - 11905: 0xCDF2, - 19976 - 11905: 0xD5C9, - 19977 - 11905: 0xC8FD, - 19978 - 11905: 0xC9CF, - 19979 - 11905: 0xCFC2, - 19980 - 11905: 0xD8A2, - 19981 - 11905: 0xB2BB, - 19982 - 11905: 0xD3EB, - 19983 - 11905: 0x8144, - 19984 - 11905: 0xD8A4, - 19985 - 11905: 0xB3F3, - 19986 - 11905: 0x8145, - 19987 - 11905: 0xD7A8, - 19988 - 11905: 0xC7D2, - 19989 - 11905: 0xD8A7, - 19990 - 11905: 0xCAC0, - 19991 - 11905: 0x8146, - 19992 - 11905: 0xC7F0, - 19993 - 11905: 0xB1FB, - 19994 - 11905: 0xD2B5, - 19995 - 11905: 0xB4D4, - 19996 - 11905: 0xB6AB, - 19997 - 11905: 0xCBBF, - 19998 - 11905: 0xD8A9, - 19999 - 11905: 0x8147, - 20000 - 11905: 0x8148, - 20001 - 11905: 0x8149, - 20002 - 11905: 0xB6AA, - 20003 - 11905: 0x814A, - 20004 - 11905: 0xC1BD, - 20005 - 11905: 0xD1CF, - 20006 - 11905: 0x814B, - 20007 - 11905: 0xC9A5, - 20008 - 11905: 0xD8AD, - 20009 - 11905: 0x814C, - 20010 - 11905: 0xB8F6, - 20011 - 11905: 0xD1BE, - 20012 - 11905: 0xE3DC, - 20013 - 11905: 0xD6D0, - 20014 - 11905: 0x814D, - 20015 - 11905: 0x814E, - 20016 - 11905: 0xB7E1, - 20017 - 11905: 0x814F, - 20018 - 11905: 0xB4AE, - 20019 - 11905: 0x8150, - 20020 - 11905: 0xC1D9, - 20021 - 11905: 0x8151, - 20022 - 11905: 0xD8BC, - 20023 - 11905: 0x8152, - 20024 - 11905: 0xCDE8, - 20025 - 11905: 0xB5A4, - 20026 - 11905: 0xCEAA, - 20027 - 11905: 0xD6F7, - 20028 - 11905: 0x8153, - 20029 - 11905: 0xC0F6, - 20030 - 11905: 0xBED9, - 20031 - 11905: 0xD8AF, - 20032 - 11905: 0x8154, - 20033 - 11905: 0x8155, - 20034 - 11905: 0x8156, - 20035 - 11905: 0xC4CB, - 20036 - 11905: 0x8157, - 20037 - 11905: 0xBEC3, - 20038 - 11905: 0x8158, - 20039 - 11905: 0xD8B1, - 20040 - 11905: 0xC3B4, - 20041 - 11905: 0xD2E5, - 20042 - 11905: 0x8159, - 20043 - 11905: 0xD6AE, - 20044 - 11905: 0xCEDA, - 20045 - 11905: 0xD5A7, - 20046 - 11905: 0xBAF5, - 20047 - 11905: 0xB7A6, - 20048 - 11905: 0xC0D6, - 20049 - 11905: 0x815A, - 20050 - 11905: 0xC6B9, - 20051 - 11905: 0xC5D2, - 20052 - 11905: 0xC7C7, - 20053 - 11905: 0x815B, - 20054 - 11905: 0xB9D4, - 20055 - 11905: 0x815C, - 20056 - 11905: 0xB3CB, - 20057 - 11905: 0xD2D2, - 20058 - 11905: 0x815D, - 20059 - 11905: 0x815E, - 20060 - 11905: 0xD8BF, - 20061 - 11905: 0xBEC5, - 20062 - 11905: 0xC6F2, - 20063 - 11905: 0xD2B2, - 20064 - 11905: 0xCFB0, - 20065 - 11905: 0xCFE7, - 20066 - 11905: 0x815F, - 20067 - 11905: 0x8160, - 20068 - 11905: 0x8161, - 20069 - 11905: 0x8162, - 20070 - 11905: 0xCAE9, - 20071 - 11905: 0x8163, - 20072 - 11905: 0x8164, - 20073 - 11905: 0xD8C0, - 20074 - 11905: 0x8165, - 20075 - 11905: 0x8166, - 20076 - 11905: 0x8167, - 20077 - 11905: 0x8168, - 20078 - 11905: 0x8169, - 20079 - 11905: 0x816A, - 20080 - 11905: 0xC2F2, - 20081 - 11905: 0xC2D2, - 20082 - 11905: 0x816B, - 20083 - 11905: 0xC8E9, - 20084 - 11905: 0x816C, - 20085 - 11905: 0x816D, - 20086 - 11905: 0x816E, - 20087 - 11905: 0x816F, - 20088 - 11905: 0x8170, - 20089 - 11905: 0x8171, - 20090 - 11905: 0x8172, - 20091 - 11905: 0x8173, - 20092 - 11905: 0x8174, - 20093 - 11905: 0x8175, - 20094 - 11905: 0xC7AC, - 20095 - 11905: 0x8176, - 20096 - 11905: 0x8177, - 20097 - 11905: 0x8178, - 20098 - 11905: 0x8179, - 20099 - 11905: 0x817A, - 20100 - 11905: 0x817B, - 20101 - 11905: 0x817C, - 20102 - 11905: 0xC1CB, - 20103 - 11905: 0x817D, - 20104 - 11905: 0xD3E8, - 20105 - 11905: 0xD5F9, - 20106 - 11905: 0x817E, - 20107 - 11905: 0xCAC2, - 20108 - 11905: 0xB6FE, - 20109 - 11905: 0xD8A1, - 20110 - 11905: 0xD3DA, - 20111 - 11905: 0xBFF7, - 20112 - 11905: 0x8180, - 20113 - 11905: 0xD4C6, - 20114 - 11905: 0xBBA5, - 20115 - 11905: 0xD8C1, - 20116 - 11905: 0xCEE5, - 20117 - 11905: 0xBEAE, - 20118 - 11905: 0x8181, - 20119 - 11905: 0x8182, - 20120 - 11905: 0xD8A8, - 20121 - 11905: 0x8183, - 20122 - 11905: 0xD1C7, - 20123 - 11905: 0xD0A9, - 20124 - 11905: 0x8184, - 20125 - 11905: 0x8185, - 20126 - 11905: 0x8186, - 20127 - 11905: 0xD8BD, - 20128 - 11905: 0xD9EF, - 20129 - 11905: 0xCDF6, - 20130 - 11905: 0xBFBA, - 20131 - 11905: 0x8187, - 20132 - 11905: 0xBDBB, - 20133 - 11905: 0xBAA5, - 20134 - 11905: 0xD2E0, - 20135 - 11905: 0xB2FA, - 20136 - 11905: 0xBAE0, - 20137 - 11905: 0xC4B6, - 20138 - 11905: 0x8188, - 20139 - 11905: 0xCFED, - 20140 - 11905: 0xBEA9, - 20141 - 11905: 0xCDA4, - 20142 - 11905: 0xC1C1, - 20143 - 11905: 0x8189, - 20144 - 11905: 0x818A, - 20145 - 11905: 0x818B, - 20146 - 11905: 0xC7D7, - 20147 - 11905: 0xD9F1, - 20148 - 11905: 0x818C, - 20149 - 11905: 0xD9F4, - 20150 - 11905: 0x818D, - 20151 - 11905: 0x818E, - 20152 - 11905: 0x818F, - 20153 - 11905: 0x8190, - 20154 - 11905: 0xC8CB, - 20155 - 11905: 0xD8E9, - 20156 - 11905: 0x8191, - 20157 - 11905: 0x8192, - 20158 - 11905: 0x8193, - 20159 - 11905: 0xD2DA, - 20160 - 11905: 0xCAB2, - 20161 - 11905: 0xC8CA, - 20162 - 11905: 0xD8EC, - 20163 - 11905: 0xD8EA, - 20164 - 11905: 0xD8C6, - 20165 - 11905: 0xBDF6, - 20166 - 11905: 0xC6CD, - 20167 - 11905: 0xB3F0, - 20168 - 11905: 0x8194, - 20169 - 11905: 0xD8EB, - 20170 - 11905: 0xBDF1, - 20171 - 11905: 0xBDE9, - 20172 - 11905: 0x8195, - 20173 - 11905: 0xC8D4, - 20174 - 11905: 0xB4D3, - 20175 - 11905: 0x8196, - 20176 - 11905: 0x8197, - 20177 - 11905: 0xC2D8, - 20178 - 11905: 0x8198, - 20179 - 11905: 0xB2D6, - 20180 - 11905: 0xD7D0, - 20181 - 11905: 0xCACB, - 20182 - 11905: 0xCBFB, - 20183 - 11905: 0xD5CC, - 20184 - 11905: 0xB8B6, - 20185 - 11905: 0xCFC9, - 20186 - 11905: 0x8199, - 20187 - 11905: 0x819A, - 20188 - 11905: 0x819B, - 20189 - 11905: 0xD9DA, - 20190 - 11905: 0xD8F0, - 20191 - 11905: 0xC7AA, - 20192 - 11905: 0x819C, - 20193 - 11905: 0xD8EE, - 20194 - 11905: 0x819D, - 20195 - 11905: 0xB4FA, - 20196 - 11905: 0xC1EE, - 20197 - 11905: 0xD2D4, - 20198 - 11905: 0x819E, - 20199 - 11905: 0x819F, - 20200 - 11905: 0xD8ED, - 20201 - 11905: 0x81A0, - 20202 - 11905: 0xD2C7, - 20203 - 11905: 0xD8EF, - 20204 - 11905: 0xC3C7, - 20205 - 11905: 0x81A1, - 20206 - 11905: 0x81A2, - 20207 - 11905: 0x81A3, - 20208 - 11905: 0xD1F6, - 20209 - 11905: 0x81A4, - 20210 - 11905: 0xD6D9, - 20211 - 11905: 0xD8F2, - 20212 - 11905: 0x81A5, - 20213 - 11905: 0xD8F5, - 20214 - 11905: 0xBCFE, - 20215 - 11905: 0xBCDB, - 20216 - 11905: 0x81A6, - 20217 - 11905: 0x81A7, - 20218 - 11905: 0x81A8, - 20219 - 11905: 0xC8CE, - 20220 - 11905: 0x81A9, - 20221 - 11905: 0xB7DD, - 20222 - 11905: 0x81AA, - 20223 - 11905: 0xB7C2, - 20224 - 11905: 0x81AB, - 20225 - 11905: 0xC6F3, - 20226 - 11905: 0x81AC, - 20227 - 11905: 0x81AD, - 20228 - 11905: 0x81AE, - 20229 - 11905: 0x81AF, - 20230 - 11905: 0x81B0, - 20231 - 11905: 0x81B1, - 20232 - 11905: 0x81B2, - 20233 - 11905: 0xD8F8, - 20234 - 11905: 0xD2C1, - 20235 - 11905: 0x81B3, - 20236 - 11905: 0x81B4, - 20237 - 11905: 0xCEE9, - 20238 - 11905: 0xBCBF, - 20239 - 11905: 0xB7FC, - 20240 - 11905: 0xB7A5, - 20241 - 11905: 0xD0DD, - 20242 - 11905: 0x81B5, - 20243 - 11905: 0x81B6, - 20244 - 11905: 0x81B7, - 20245 - 11905: 0x81B8, - 20246 - 11905: 0x81B9, - 20247 - 11905: 0xD6DA, - 20248 - 11905: 0xD3C5, - 20249 - 11905: 0xBBEF, - 20250 - 11905: 0xBBE1, - 20251 - 11905: 0xD8F1, - 20252 - 11905: 0x81BA, - 20253 - 11905: 0x81BB, - 20254 - 11905: 0xC9A1, - 20255 - 11905: 0xCEB0, - 20256 - 11905: 0xB4AB, - 20257 - 11905: 0x81BC, - 20258 - 11905: 0xD8F3, - 20259 - 11905: 0x81BD, - 20260 - 11905: 0xC9CB, - 20261 - 11905: 0xD8F6, - 20262 - 11905: 0xC2D7, - 20263 - 11905: 0xD8F7, - 20264 - 11905: 0x81BE, - 20265 - 11905: 0x81BF, - 20266 - 11905: 0xCEB1, - 20267 - 11905: 0xD8F9, - 20268 - 11905: 0x81C0, - 20269 - 11905: 0x81C1, - 20270 - 11905: 0x81C2, - 20271 - 11905: 0xB2AE, - 20272 - 11905: 0xB9C0, - 20273 - 11905: 0x81C3, - 20274 - 11905: 0xD9A3, - 20275 - 11905: 0x81C4, - 20276 - 11905: 0xB0E9, - 20277 - 11905: 0x81C5, - 20278 - 11905: 0xC1E6, - 20279 - 11905: 0x81C6, - 20280 - 11905: 0xC9EC, - 20281 - 11905: 0x81C7, - 20282 - 11905: 0xCBC5, - 20283 - 11905: 0x81C8, - 20284 - 11905: 0xCBC6, - 20285 - 11905: 0xD9A4, - 20286 - 11905: 0x81C9, - 20287 - 11905: 0x81CA, - 20288 - 11905: 0x81CB, - 20289 - 11905: 0x81CC, - 20290 - 11905: 0x81CD, - 20291 - 11905: 0xB5E8, - 20292 - 11905: 0x81CE, - 20293 - 11905: 0x81CF, - 20294 - 11905: 0xB5AB, - 20295 - 11905: 0x81D0, - 20296 - 11905: 0x81D1, - 20297 - 11905: 0x81D2, - 20298 - 11905: 0x81D3, - 20299 - 11905: 0x81D4, - 20300 - 11905: 0x81D5, - 20301 - 11905: 0xCEBB, - 20302 - 11905: 0xB5CD, - 20303 - 11905: 0xD7A1, - 20304 - 11905: 0xD7F4, - 20305 - 11905: 0xD3D3, - 20306 - 11905: 0x81D6, - 20307 - 11905: 0xCCE5, - 20308 - 11905: 0x81D7, - 20309 - 11905: 0xBACE, - 20310 - 11905: 0x81D8, - 20311 - 11905: 0xD9A2, - 20312 - 11905: 0xD9DC, - 20313 - 11905: 0xD3E0, - 20314 - 11905: 0xD8FD, - 20315 - 11905: 0xB7F0, - 20316 - 11905: 0xD7F7, - 20317 - 11905: 0xD8FE, - 20318 - 11905: 0xD8FA, - 20319 - 11905: 0xD9A1, - 20320 - 11905: 0xC4E3, - 20321 - 11905: 0x81D9, - 20322 - 11905: 0x81DA, - 20323 - 11905: 0xD3B6, - 20324 - 11905: 0xD8F4, - 20325 - 11905: 0xD9DD, - 20326 - 11905: 0x81DB, - 20327 - 11905: 0xD8FB, - 20328 - 11905: 0x81DC, - 20329 - 11905: 0xC5E5, - 20330 - 11905: 0x81DD, - 20331 - 11905: 0x81DE, - 20332 - 11905: 0xC0D0, - 20333 - 11905: 0x81DF, - 20334 - 11905: 0x81E0, - 20335 - 11905: 0xD1F0, - 20336 - 11905: 0xB0DB, - 20337 - 11905: 0x81E1, - 20338 - 11905: 0x81E2, - 20339 - 11905: 0xBCD1, - 20340 - 11905: 0xD9A6, - 20341 - 11905: 0x81E3, - 20342 - 11905: 0xD9A5, - 20343 - 11905: 0x81E4, - 20344 - 11905: 0x81E5, - 20345 - 11905: 0x81E6, - 20346 - 11905: 0x81E7, - 20347 - 11905: 0xD9AC, - 20348 - 11905: 0xD9AE, - 20349 - 11905: 0x81E8, - 20350 - 11905: 0xD9AB, - 20351 - 11905: 0xCAB9, - 20352 - 11905: 0x81E9, - 20353 - 11905: 0x81EA, - 20354 - 11905: 0x81EB, - 20355 - 11905: 0xD9A9, - 20356 - 11905: 0xD6B6, - 20357 - 11905: 0x81EC, - 20358 - 11905: 0x81ED, - 20359 - 11905: 0x81EE, - 20360 - 11905: 0xB3DE, - 20361 - 11905: 0xD9A8, - 20362 - 11905: 0x81EF, - 20363 - 11905: 0xC0FD, - 20364 - 11905: 0x81F0, - 20365 - 11905: 0xCACC, - 20366 - 11905: 0x81F1, - 20367 - 11905: 0xD9AA, - 20368 - 11905: 0x81F2, - 20369 - 11905: 0xD9A7, - 20370 - 11905: 0x81F3, - 20371 - 11905: 0x81F4, - 20372 - 11905: 0xD9B0, - 20373 - 11905: 0x81F5, - 20374 - 11905: 0x81F6, - 20375 - 11905: 0xB6B1, - 20376 - 11905: 0x81F7, - 20377 - 11905: 0x81F8, - 20378 - 11905: 0x81F9, - 20379 - 11905: 0xB9A9, - 20380 - 11905: 0x81FA, - 20381 - 11905: 0xD2C0, - 20382 - 11905: 0x81FB, - 20383 - 11905: 0x81FC, - 20384 - 11905: 0xCFC0, - 20385 - 11905: 0x81FD, - 20386 - 11905: 0x81FE, - 20387 - 11905: 0xC2C2, - 20388 - 11905: 0x8240, - 20389 - 11905: 0xBDC4, - 20390 - 11905: 0xD5EC, - 20391 - 11905: 0xB2E0, - 20392 - 11905: 0xC7C8, - 20393 - 11905: 0xBFEB, - 20394 - 11905: 0xD9AD, - 20395 - 11905: 0x8241, - 20396 - 11905: 0xD9AF, - 20397 - 11905: 0x8242, - 20398 - 11905: 0xCEEA, - 20399 - 11905: 0xBAEE, - 20400 - 11905: 0x8243, - 20401 - 11905: 0x8244, - 20402 - 11905: 0x8245, - 20403 - 11905: 0x8246, - 20404 - 11905: 0x8247, - 20405 - 11905: 0xC7D6, - 20406 - 11905: 0x8248, - 20407 - 11905: 0x8249, - 20408 - 11905: 0x824A, - 20409 - 11905: 0x824B, - 20410 - 11905: 0x824C, - 20411 - 11905: 0x824D, - 20412 - 11905: 0x824E, - 20413 - 11905: 0x824F, - 20414 - 11905: 0x8250, - 20415 - 11905: 0xB1E3, - 20416 - 11905: 0x8251, - 20417 - 11905: 0x8252, - 20418 - 11905: 0x8253, - 20419 - 11905: 0xB4D9, - 20420 - 11905: 0xB6ED, - 20421 - 11905: 0xD9B4, - 20422 - 11905: 0x8254, - 20423 - 11905: 0x8255, - 20424 - 11905: 0x8256, - 20425 - 11905: 0x8257, - 20426 - 11905: 0xBFA1, - 20427 - 11905: 0x8258, - 20428 - 11905: 0x8259, - 20429 - 11905: 0x825A, - 20430 - 11905: 0xD9DE, - 20431 - 11905: 0xC7CE, - 20432 - 11905: 0xC0FE, - 20433 - 11905: 0xD9B8, - 20434 - 11905: 0x825B, - 20435 - 11905: 0x825C, - 20436 - 11905: 0x825D, - 20437 - 11905: 0x825E, - 20438 - 11905: 0x825F, - 20439 - 11905: 0xCBD7, - 20440 - 11905: 0xB7FD, - 20441 - 11905: 0x8260, - 20442 - 11905: 0xD9B5, - 20443 - 11905: 0x8261, - 20444 - 11905: 0xD9B7, - 20445 - 11905: 0xB1A3, - 20446 - 11905: 0xD3E1, - 20447 - 11905: 0xD9B9, - 20448 - 11905: 0x8262, - 20449 - 11905: 0xD0C5, - 20450 - 11905: 0x8263, - 20451 - 11905: 0xD9B6, - 20452 - 11905: 0x8264, - 20453 - 11905: 0x8265, - 20454 - 11905: 0xD9B1, - 20455 - 11905: 0x8266, - 20456 - 11905: 0xD9B2, - 20457 - 11905: 0xC1A9, - 20458 - 11905: 0xD9B3, - 20459 - 11905: 0x8267, - 20460 - 11905: 0x8268, - 20461 - 11905: 0xBCF3, - 20462 - 11905: 0xD0DE, - 20463 - 11905: 0xB8A9, - 20464 - 11905: 0x8269, - 20465 - 11905: 0xBEE3, - 20466 - 11905: 0x826A, - 20467 - 11905: 0xD9BD, - 20468 - 11905: 0x826B, - 20469 - 11905: 0x826C, - 20470 - 11905: 0x826D, - 20471 - 11905: 0x826E, - 20472 - 11905: 0xD9BA, - 20473 - 11905: 0x826F, - 20474 - 11905: 0xB0B3, - 20475 - 11905: 0x8270, - 20476 - 11905: 0x8271, - 20477 - 11905: 0x8272, - 20478 - 11905: 0xD9C2, - 20479 - 11905: 0x8273, - 20480 - 11905: 0x8274, - 20481 - 11905: 0x8275, - 20482 - 11905: 0x8276, - 20483 - 11905: 0x8277, - 20484 - 11905: 0x8278, - 20485 - 11905: 0x8279, - 20486 - 11905: 0x827A, - 20487 - 11905: 0x827B, - 20488 - 11905: 0x827C, - 20489 - 11905: 0x827D, - 20490 - 11905: 0x827E, - 20491 - 11905: 0x8280, - 20492 - 11905: 0xD9C4, - 20493 - 11905: 0xB1B6, - 20494 - 11905: 0x8281, - 20495 - 11905: 0xD9BF, - 20496 - 11905: 0x8282, - 20497 - 11905: 0x8283, - 20498 - 11905: 0xB5B9, - 20499 - 11905: 0x8284, - 20500 - 11905: 0xBEF3, - 20501 - 11905: 0x8285, - 20502 - 11905: 0x8286, - 20503 - 11905: 0x8287, - 20504 - 11905: 0xCCC8, - 20505 - 11905: 0xBAF2, - 20506 - 11905: 0xD2D0, - 20507 - 11905: 0x8288, - 20508 - 11905: 0xD9C3, - 20509 - 11905: 0x8289, - 20510 - 11905: 0x828A, - 20511 - 11905: 0xBDE8, - 20512 - 11905: 0x828B, - 20513 - 11905: 0xB3AB, - 20514 - 11905: 0x828C, - 20515 - 11905: 0x828D, - 20516 - 11905: 0x828E, - 20517 - 11905: 0xD9C5, - 20518 - 11905: 0xBEEB, - 20519 - 11905: 0x828F, - 20520 - 11905: 0xD9C6, - 20521 - 11905: 0xD9BB, - 20522 - 11905: 0xC4DF, - 20523 - 11905: 0x8290, - 20524 - 11905: 0xD9BE, - 20525 - 11905: 0xD9C1, - 20526 - 11905: 0xD9C0, - 20527 - 11905: 0x8291, - 20528 - 11905: 0x8292, - 20529 - 11905: 0x8293, - 20530 - 11905: 0x8294, - 20531 - 11905: 0x8295, - 20532 - 11905: 0x8296, - 20533 - 11905: 0x8297, - 20534 - 11905: 0x8298, - 20535 - 11905: 0x8299, - 20536 - 11905: 0x829A, - 20537 - 11905: 0x829B, - 20538 - 11905: 0xD5AE, - 20539 - 11905: 0x829C, - 20540 - 11905: 0xD6B5, - 20541 - 11905: 0x829D, - 20542 - 11905: 0xC7E3, - 20543 - 11905: 0x829E, - 20544 - 11905: 0x829F, - 20545 - 11905: 0x82A0, - 20546 - 11905: 0x82A1, - 20547 - 11905: 0xD9C8, - 20548 - 11905: 0x82A2, - 20549 - 11905: 0x82A3, - 20550 - 11905: 0x82A4, - 20551 - 11905: 0xBCD9, - 20552 - 11905: 0xD9CA, - 20553 - 11905: 0x82A5, - 20554 - 11905: 0x82A6, - 20555 - 11905: 0x82A7, - 20556 - 11905: 0xD9BC, - 20557 - 11905: 0x82A8, - 20558 - 11905: 0xD9CB, - 20559 - 11905: 0xC6AB, - 20560 - 11905: 0x82A9, - 20561 - 11905: 0x82AA, - 20562 - 11905: 0x82AB, - 20563 - 11905: 0x82AC, - 20564 - 11905: 0x82AD, - 20565 - 11905: 0xD9C9, - 20566 - 11905: 0x82AE, - 20567 - 11905: 0x82AF, - 20568 - 11905: 0x82B0, - 20569 - 11905: 0x82B1, - 20570 - 11905: 0xD7F6, - 20571 - 11905: 0x82B2, - 20572 - 11905: 0xCDA3, - 20573 - 11905: 0x82B3, - 20574 - 11905: 0x82B4, - 20575 - 11905: 0x82B5, - 20576 - 11905: 0x82B6, - 20577 - 11905: 0x82B7, - 20578 - 11905: 0x82B8, - 20579 - 11905: 0x82B9, - 20580 - 11905: 0x82BA, - 20581 - 11905: 0xBDA1, - 20582 - 11905: 0x82BB, - 20583 - 11905: 0x82BC, - 20584 - 11905: 0x82BD, - 20585 - 11905: 0x82BE, - 20586 - 11905: 0x82BF, - 20587 - 11905: 0x82C0, - 20588 - 11905: 0xD9CC, - 20589 - 11905: 0x82C1, - 20590 - 11905: 0x82C2, - 20591 - 11905: 0x82C3, - 20592 - 11905: 0x82C4, - 20593 - 11905: 0x82C5, - 20594 - 11905: 0x82C6, - 20595 - 11905: 0x82C7, - 20596 - 11905: 0x82C8, - 20597 - 11905: 0x82C9, - 20598 - 11905: 0xC5BC, - 20599 - 11905: 0xCDB5, - 20600 - 11905: 0x82CA, - 20601 - 11905: 0x82CB, - 20602 - 11905: 0x82CC, - 20603 - 11905: 0xD9CD, - 20604 - 11905: 0x82CD, - 20605 - 11905: 0x82CE, - 20606 - 11905: 0xD9C7, - 20607 - 11905: 0xB3A5, - 20608 - 11905: 0xBFFE, - 20609 - 11905: 0x82CF, - 20610 - 11905: 0x82D0, - 20611 - 11905: 0x82D1, - 20612 - 11905: 0x82D2, - 20613 - 11905: 0xB8B5, - 20614 - 11905: 0x82D3, - 20615 - 11905: 0x82D4, - 20616 - 11905: 0xC0FC, - 20617 - 11905: 0x82D5, - 20618 - 11905: 0x82D6, - 20619 - 11905: 0x82D7, - 20620 - 11905: 0x82D8, - 20621 - 11905: 0xB0F8, - 20622 - 11905: 0x82D9, - 20623 - 11905: 0x82DA, - 20624 - 11905: 0x82DB, - 20625 - 11905: 0x82DC, - 20626 - 11905: 0x82DD, - 20627 - 11905: 0x82DE, - 20628 - 11905: 0x82DF, - 20629 - 11905: 0x82E0, - 20630 - 11905: 0x82E1, - 20631 - 11905: 0x82E2, - 20632 - 11905: 0x82E3, - 20633 - 11905: 0x82E4, - 20634 - 11905: 0x82E5, - 20635 - 11905: 0x82E6, - 20636 - 11905: 0x82E7, - 20637 - 11905: 0x82E8, - 20638 - 11905: 0x82E9, - 20639 - 11905: 0x82EA, - 20640 - 11905: 0x82EB, - 20641 - 11905: 0x82EC, - 20642 - 11905: 0x82ED, - 20643 - 11905: 0xB4F6, - 20644 - 11905: 0x82EE, - 20645 - 11905: 0xD9CE, - 20646 - 11905: 0x82EF, - 20647 - 11905: 0xD9CF, - 20648 - 11905: 0xB4A2, - 20649 - 11905: 0xD9D0, - 20650 - 11905: 0x82F0, - 20651 - 11905: 0x82F1, - 20652 - 11905: 0xB4DF, - 20653 - 11905: 0x82F2, - 20654 - 11905: 0x82F3, - 20655 - 11905: 0x82F4, - 20656 - 11905: 0x82F5, - 20657 - 11905: 0x82F6, - 20658 - 11905: 0xB0C1, - 20659 - 11905: 0x82F7, - 20660 - 11905: 0x82F8, - 20661 - 11905: 0x82F9, - 20662 - 11905: 0x82FA, - 20663 - 11905: 0x82FB, - 20664 - 11905: 0x82FC, - 20665 - 11905: 0x82FD, - 20666 - 11905: 0xD9D1, - 20667 - 11905: 0xC9B5, - 20668 - 11905: 0x82FE, - 20669 - 11905: 0x8340, - 20670 - 11905: 0x8341, - 20671 - 11905: 0x8342, - 20672 - 11905: 0x8343, - 20673 - 11905: 0x8344, - 20674 - 11905: 0x8345, - 20675 - 11905: 0x8346, - 20676 - 11905: 0x8347, - 20677 - 11905: 0x8348, - 20678 - 11905: 0x8349, - 20679 - 11905: 0x834A, - 20680 - 11905: 0x834B, - 20681 - 11905: 0x834C, - 20682 - 11905: 0x834D, - 20683 - 11905: 0x834E, - 20684 - 11905: 0x834F, - 20685 - 11905: 0x8350, - 20686 - 11905: 0x8351, - 20687 - 11905: 0xCFF1, - 20688 - 11905: 0x8352, - 20689 - 11905: 0x8353, - 20690 - 11905: 0x8354, - 20691 - 11905: 0x8355, - 20692 - 11905: 0x8356, - 20693 - 11905: 0x8357, - 20694 - 11905: 0xD9D2, - 20695 - 11905: 0x8358, - 20696 - 11905: 0x8359, - 20697 - 11905: 0x835A, - 20698 - 11905: 0xC1C5, - 20699 - 11905: 0x835B, - 20700 - 11905: 0x835C, - 20701 - 11905: 0x835D, - 20702 - 11905: 0x835E, - 20703 - 11905: 0x835F, - 20704 - 11905: 0x8360, - 20705 - 11905: 0x8361, - 20706 - 11905: 0x8362, - 20707 - 11905: 0x8363, - 20708 - 11905: 0x8364, - 20709 - 11905: 0x8365, - 20710 - 11905: 0xD9D6, - 20711 - 11905: 0xC9AE, - 20712 - 11905: 0x8366, - 20713 - 11905: 0x8367, - 20714 - 11905: 0x8368, - 20715 - 11905: 0x8369, - 20716 - 11905: 0xD9D5, - 20717 - 11905: 0xD9D4, - 20718 - 11905: 0xD9D7, - 20719 - 11905: 0x836A, - 20720 - 11905: 0x836B, - 20721 - 11905: 0x836C, - 20722 - 11905: 0x836D, - 20723 - 11905: 0xCBDB, - 20724 - 11905: 0x836E, - 20725 - 11905: 0xBDA9, - 20726 - 11905: 0x836F, - 20727 - 11905: 0x8370, - 20728 - 11905: 0x8371, - 20729 - 11905: 0x8372, - 20730 - 11905: 0x8373, - 20731 - 11905: 0xC6A7, - 20732 - 11905: 0x8374, - 20733 - 11905: 0x8375, - 20734 - 11905: 0x8376, - 20735 - 11905: 0x8377, - 20736 - 11905: 0x8378, - 20737 - 11905: 0x8379, - 20738 - 11905: 0x837A, - 20739 - 11905: 0x837B, - 20740 - 11905: 0x837C, - 20741 - 11905: 0x837D, - 20742 - 11905: 0xD9D3, - 20743 - 11905: 0xD9D8, - 20744 - 11905: 0x837E, - 20745 - 11905: 0x8380, - 20746 - 11905: 0x8381, - 20747 - 11905: 0xD9D9, - 20748 - 11905: 0x8382, - 20749 - 11905: 0x8383, - 20750 - 11905: 0x8384, - 20751 - 11905: 0x8385, - 20752 - 11905: 0x8386, - 20753 - 11905: 0x8387, - 20754 - 11905: 0xC8E5, - 20755 - 11905: 0x8388, - 20756 - 11905: 0x8389, - 20757 - 11905: 0x838A, - 20758 - 11905: 0x838B, - 20759 - 11905: 0x838C, - 20760 - 11905: 0x838D, - 20761 - 11905: 0x838E, - 20762 - 11905: 0x838F, - 20763 - 11905: 0x8390, - 20764 - 11905: 0x8391, - 20765 - 11905: 0x8392, - 20766 - 11905: 0x8393, - 20767 - 11905: 0x8394, - 20768 - 11905: 0x8395, - 20769 - 11905: 0xC0DC, - 20770 - 11905: 0x8396, - 20771 - 11905: 0x8397, - 20772 - 11905: 0x8398, - 20773 - 11905: 0x8399, - 20774 - 11905: 0x839A, - 20775 - 11905: 0x839B, - 20776 - 11905: 0x839C, - 20777 - 11905: 0x839D, - 20778 - 11905: 0x839E, - 20779 - 11905: 0x839F, - 20780 - 11905: 0x83A0, - 20781 - 11905: 0x83A1, - 20782 - 11905: 0x83A2, - 20783 - 11905: 0x83A3, - 20784 - 11905: 0x83A4, - 20785 - 11905: 0x83A5, - 20786 - 11905: 0x83A6, - 20787 - 11905: 0x83A7, - 20788 - 11905: 0x83A8, - 20789 - 11905: 0x83A9, - 20790 - 11905: 0x83AA, - 20791 - 11905: 0x83AB, - 20792 - 11905: 0x83AC, - 20793 - 11905: 0x83AD, - 20794 - 11905: 0x83AE, - 20795 - 11905: 0x83AF, - 20796 - 11905: 0x83B0, - 20797 - 11905: 0x83B1, - 20798 - 11905: 0x83B2, - 20799 - 11905: 0xB6F9, - 20800 - 11905: 0xD8A3, - 20801 - 11905: 0xD4CA, - 20802 - 11905: 0x83B3, - 20803 - 11905: 0xD4AA, - 20804 - 11905: 0xD0D6, - 20805 - 11905: 0xB3E4, - 20806 - 11905: 0xD5D7, - 20807 - 11905: 0x83B4, - 20808 - 11905: 0xCFC8, - 20809 - 11905: 0xB9E2, - 20810 - 11905: 0x83B5, - 20811 - 11905: 0xBFCB, - 20812 - 11905: 0x83B6, - 20813 - 11905: 0xC3E2, - 20814 - 11905: 0x83B7, - 20815 - 11905: 0x83B8, - 20816 - 11905: 0x83B9, - 20817 - 11905: 0xB6D2, - 20818 - 11905: 0x83BA, - 20819 - 11905: 0x83BB, - 20820 - 11905: 0xCDC3, - 20821 - 11905: 0xD9EE, - 20822 - 11905: 0xD9F0, - 20823 - 11905: 0x83BC, - 20824 - 11905: 0x83BD, - 20825 - 11905: 0x83BE, - 20826 - 11905: 0xB5B3, - 20827 - 11905: 0x83BF, - 20828 - 11905: 0xB6B5, - 20829 - 11905: 0x83C0, - 20830 - 11905: 0x83C1, - 20831 - 11905: 0x83C2, - 20832 - 11905: 0x83C3, - 20833 - 11905: 0x83C4, - 20834 - 11905: 0xBEA4, - 20835 - 11905: 0x83C5, - 20836 - 11905: 0x83C6, - 20837 - 11905: 0xC8EB, - 20838 - 11905: 0x83C7, - 20839 - 11905: 0x83C8, - 20840 - 11905: 0xC8AB, - 20841 - 11905: 0x83C9, - 20842 - 11905: 0x83CA, - 20843 - 11905: 0xB0CB, - 20844 - 11905: 0xB9AB, - 20845 - 11905: 0xC1F9, - 20846 - 11905: 0xD9E2, - 20847 - 11905: 0x83CB, - 20848 - 11905: 0xC0BC, - 20849 - 11905: 0xB9B2, - 20850 - 11905: 0x83CC, - 20851 - 11905: 0xB9D8, - 20852 - 11905: 0xD0CB, - 20853 - 11905: 0xB1F8, - 20854 - 11905: 0xC6E4, - 20855 - 11905: 0xBEDF, - 20856 - 11905: 0xB5E4, - 20857 - 11905: 0xD7C8, - 20858 - 11905: 0x83CD, - 20859 - 11905: 0xD1F8, - 20860 - 11905: 0xBCE6, - 20861 - 11905: 0xCADE, - 20862 - 11905: 0x83CE, - 20863 - 11905: 0x83CF, - 20864 - 11905: 0xBCBD, - 20865 - 11905: 0xD9E6, - 20866 - 11905: 0xD8E7, - 20867 - 11905: 0x83D0, - 20868 - 11905: 0x83D1, - 20869 - 11905: 0xC4DA, - 20870 - 11905: 0x83D2, - 20871 - 11905: 0x83D3, - 20872 - 11905: 0xB8D4, - 20873 - 11905: 0xC8BD, - 20874 - 11905: 0x83D4, - 20875 - 11905: 0x83D5, - 20876 - 11905: 0xB2E1, - 20877 - 11905: 0xD4D9, - 20878 - 11905: 0x83D6, - 20879 - 11905: 0x83D7, - 20880 - 11905: 0x83D8, - 20881 - 11905: 0x83D9, - 20882 - 11905: 0xC3B0, - 20883 - 11905: 0x83DA, - 20884 - 11905: 0x83DB, - 20885 - 11905: 0xC3E1, - 20886 - 11905: 0xDAA2, - 20887 - 11905: 0xC8DF, - 20888 - 11905: 0x83DC, - 20889 - 11905: 0xD0B4, - 20890 - 11905: 0x83DD, - 20891 - 11905: 0xBEFC, - 20892 - 11905: 0xC5A9, - 20893 - 11905: 0x83DE, - 20894 - 11905: 0x83DF, - 20895 - 11905: 0x83E0, - 20896 - 11905: 0xB9DA, - 20897 - 11905: 0x83E1, - 20898 - 11905: 0xDAA3, - 20899 - 11905: 0x83E2, - 20900 - 11905: 0xD4A9, - 20901 - 11905: 0xDAA4, - 20902 - 11905: 0x83E3, - 20903 - 11905: 0x83E4, - 20904 - 11905: 0x83E5, - 20905 - 11905: 0x83E6, - 20906 - 11905: 0x83E7, - 20907 - 11905: 0xD9FB, - 20908 - 11905: 0xB6AC, - 20909 - 11905: 0x83E8, - 20910 - 11905: 0x83E9, - 20911 - 11905: 0xB7EB, - 20912 - 11905: 0xB1F9, - 20913 - 11905: 0xD9FC, - 20914 - 11905: 0xB3E5, - 20915 - 11905: 0xBEF6, - 20916 - 11905: 0x83EA, - 20917 - 11905: 0xBFF6, - 20918 - 11905: 0xD2B1, - 20919 - 11905: 0xC0E4, - 20920 - 11905: 0x83EB, - 20921 - 11905: 0x83EC, - 20922 - 11905: 0x83ED, - 20923 - 11905: 0xB6B3, - 20924 - 11905: 0xD9FE, - 20925 - 11905: 0xD9FD, - 20926 - 11905: 0x83EE, - 20927 - 11905: 0x83EF, - 20928 - 11905: 0xBEBB, - 20929 - 11905: 0x83F0, - 20930 - 11905: 0x83F1, - 20931 - 11905: 0x83F2, - 20932 - 11905: 0xC6E0, - 20933 - 11905: 0x83F3, - 20934 - 11905: 0xD7BC, - 20935 - 11905: 0xDAA1, - 20936 - 11905: 0x83F4, - 20937 - 11905: 0xC1B9, - 20938 - 11905: 0x83F5, - 20939 - 11905: 0xB5F2, - 20940 - 11905: 0xC1E8, - 20941 - 11905: 0x83F6, - 20942 - 11905: 0x83F7, - 20943 - 11905: 0xBCF5, - 20944 - 11905: 0x83F8, - 20945 - 11905: 0xB4D5, - 20946 - 11905: 0x83F9, - 20947 - 11905: 0x83FA, - 20948 - 11905: 0x83FB, - 20949 - 11905: 0x83FC, - 20950 - 11905: 0x83FD, - 20951 - 11905: 0x83FE, - 20952 - 11905: 0x8440, - 20953 - 11905: 0x8441, - 20954 - 11905: 0x8442, - 20955 - 11905: 0xC1DD, - 20956 - 11905: 0x8443, - 20957 - 11905: 0xC4FD, - 20958 - 11905: 0x8444, - 20959 - 11905: 0x8445, - 20960 - 11905: 0xBCB8, - 20961 - 11905: 0xB7B2, - 20962 - 11905: 0x8446, - 20963 - 11905: 0x8447, - 20964 - 11905: 0xB7EF, - 20965 - 11905: 0x8448, - 20966 - 11905: 0x8449, - 20967 - 11905: 0x844A, - 20968 - 11905: 0x844B, - 20969 - 11905: 0x844C, - 20970 - 11905: 0x844D, - 20971 - 11905: 0xD9EC, - 20972 - 11905: 0x844E, - 20973 - 11905: 0xC6BE, - 20974 - 11905: 0x844F, - 20975 - 11905: 0xBFAD, - 20976 - 11905: 0xBBCB, - 20977 - 11905: 0x8450, - 20978 - 11905: 0x8451, - 20979 - 11905: 0xB5CA, - 20980 - 11905: 0x8452, - 20981 - 11905: 0xDBC9, - 20982 - 11905: 0xD0D7, - 20983 - 11905: 0x8453, - 20984 - 11905: 0xCDB9, - 20985 - 11905: 0xB0BC, - 20986 - 11905: 0xB3F6, - 20987 - 11905: 0xBBF7, - 20988 - 11905: 0xDBCA, - 20989 - 11905: 0xBAAF, - 20990 - 11905: 0x8454, - 20991 - 11905: 0xD4E4, - 20992 - 11905: 0xB5B6, - 20993 - 11905: 0xB5F3, - 20994 - 11905: 0xD8D6, - 20995 - 11905: 0xC8D0, - 20996 - 11905: 0x8455, - 20997 - 11905: 0x8456, - 20998 - 11905: 0xB7D6, - 20999 - 11905: 0xC7D0, - 21000 - 11905: 0xD8D7, - 21001 - 11905: 0x8457, - 21002 - 11905: 0xBFAF, - 21003 - 11905: 0x8458, - 21004 - 11905: 0x8459, - 21005 - 11905: 0xDBBB, - 21006 - 11905: 0xD8D8, - 21007 - 11905: 0x845A, - 21008 - 11905: 0x845B, - 21009 - 11905: 0xD0CC, - 21010 - 11905: 0xBBAE, - 21011 - 11905: 0x845C, - 21012 - 11905: 0x845D, - 21013 - 11905: 0x845E, - 21014 - 11905: 0xEBBE, - 21015 - 11905: 0xC1D0, - 21016 - 11905: 0xC1F5, - 21017 - 11905: 0xD4F2, - 21018 - 11905: 0xB8D5, - 21019 - 11905: 0xB4B4, - 21020 - 11905: 0x845F, - 21021 - 11905: 0xB3F5, - 21022 - 11905: 0x8460, - 21023 - 11905: 0x8461, - 21024 - 11905: 0xC9BE, - 21025 - 11905: 0x8462, - 21026 - 11905: 0x8463, - 21027 - 11905: 0x8464, - 21028 - 11905: 0xC5D0, - 21029 - 11905: 0x8465, - 21030 - 11905: 0x8466, - 21031 - 11905: 0x8467, - 21032 - 11905: 0xC5D9, - 21033 - 11905: 0xC0FB, - 21034 - 11905: 0x8468, - 21035 - 11905: 0xB1F0, - 21036 - 11905: 0x8469, - 21037 - 11905: 0xD8D9, - 21038 - 11905: 0xB9CE, - 21039 - 11905: 0x846A, - 21040 - 11905: 0xB5BD, - 21041 - 11905: 0x846B, - 21042 - 11905: 0x846C, - 21043 - 11905: 0xD8DA, - 21044 - 11905: 0x846D, - 21045 - 11905: 0x846E, - 21046 - 11905: 0xD6C6, - 21047 - 11905: 0xCBA2, - 21048 - 11905: 0xC8AF, - 21049 - 11905: 0xC9B2, - 21050 - 11905: 0xB4CC, - 21051 - 11905: 0xBFCC, - 21052 - 11905: 0x846F, - 21053 - 11905: 0xB9F4, - 21054 - 11905: 0x8470, - 21055 - 11905: 0xD8DB, - 21056 - 11905: 0xD8DC, - 21057 - 11905: 0xB6E7, - 21058 - 11905: 0xBCC1, - 21059 - 11905: 0xCCEA, - 21060 - 11905: 0x8471, - 21061 - 11905: 0x8472, - 21062 - 11905: 0x8473, - 21063 - 11905: 0x8474, - 21064 - 11905: 0x8475, - 21065 - 11905: 0x8476, - 21066 - 11905: 0xCFF7, - 21067 - 11905: 0x8477, - 21068 - 11905: 0xD8DD, - 21069 - 11905: 0xC7B0, - 21070 - 11905: 0x8478, - 21071 - 11905: 0x8479, - 21072 - 11905: 0xB9D0, - 21073 - 11905: 0xBDA3, - 21074 - 11905: 0x847A, - 21075 - 11905: 0x847B, - 21076 - 11905: 0xCCDE, - 21077 - 11905: 0x847C, - 21078 - 11905: 0xC6CA, - 21079 - 11905: 0x847D, - 21080 - 11905: 0x847E, - 21081 - 11905: 0x8480, - 21082 - 11905: 0x8481, - 21083 - 11905: 0x8482, - 21084 - 11905: 0xD8E0, - 21085 - 11905: 0x8483, - 21086 - 11905: 0xD8DE, - 21087 - 11905: 0x8484, - 21088 - 11905: 0x8485, - 21089 - 11905: 0xD8DF, - 21090 - 11905: 0x8486, - 21091 - 11905: 0x8487, - 21092 - 11905: 0x8488, - 21093 - 11905: 0xB0FE, - 21094 - 11905: 0x8489, - 21095 - 11905: 0xBEE7, - 21096 - 11905: 0x848A, - 21097 - 11905: 0xCAA3, - 21098 - 11905: 0xBCF4, - 21099 - 11905: 0x848B, - 21100 - 11905: 0x848C, - 21101 - 11905: 0x848D, - 21102 - 11905: 0x848E, - 21103 - 11905: 0xB8B1, - 21104 - 11905: 0x848F, - 21105 - 11905: 0x8490, - 21106 - 11905: 0xB8EE, - 21107 - 11905: 0x8491, - 21108 - 11905: 0x8492, - 21109 - 11905: 0x8493, - 21110 - 11905: 0x8494, - 21111 - 11905: 0x8495, - 21112 - 11905: 0x8496, - 21113 - 11905: 0x8497, - 21114 - 11905: 0x8498, - 21115 - 11905: 0x8499, - 21116 - 11905: 0x849A, - 21117 - 11905: 0xD8E2, - 21118 - 11905: 0x849B, - 21119 - 11905: 0xBDCB, - 21120 - 11905: 0x849C, - 21121 - 11905: 0xD8E4, - 21122 - 11905: 0xD8E3, - 21123 - 11905: 0x849D, - 21124 - 11905: 0x849E, - 21125 - 11905: 0x849F, - 21126 - 11905: 0x84A0, - 21127 - 11905: 0x84A1, - 21128 - 11905: 0xC5FC, - 21129 - 11905: 0x84A2, - 21130 - 11905: 0x84A3, - 21131 - 11905: 0x84A4, - 21132 - 11905: 0x84A5, - 21133 - 11905: 0x84A6, - 21134 - 11905: 0x84A7, - 21135 - 11905: 0x84A8, - 21136 - 11905: 0xD8E5, - 21137 - 11905: 0x84A9, - 21138 - 11905: 0x84AA, - 21139 - 11905: 0xD8E6, - 21140 - 11905: 0x84AB, - 21141 - 11905: 0x84AC, - 21142 - 11905: 0x84AD, - 21143 - 11905: 0x84AE, - 21144 - 11905: 0x84AF, - 21145 - 11905: 0x84B0, - 21146 - 11905: 0x84B1, - 21147 - 11905: 0xC1A6, - 21148 - 11905: 0x84B2, - 21149 - 11905: 0xC8B0, - 21150 - 11905: 0xB0EC, - 21151 - 11905: 0xB9A6, - 21152 - 11905: 0xBCD3, - 21153 - 11905: 0xCEF1, - 21154 - 11905: 0xDBBD, - 21155 - 11905: 0xC1D3, - 21156 - 11905: 0x84B3, - 21157 - 11905: 0x84B4, - 21158 - 11905: 0x84B5, - 21159 - 11905: 0x84B6, - 21160 - 11905: 0xB6AF, - 21161 - 11905: 0xD6FA, - 21162 - 11905: 0xC5AC, - 21163 - 11905: 0xBDD9, - 21164 - 11905: 0xDBBE, - 21165 - 11905: 0xDBBF, - 21166 - 11905: 0x84B7, - 21167 - 11905: 0x84B8, - 21168 - 11905: 0x84B9, - 21169 - 11905: 0xC0F8, - 21170 - 11905: 0xBEA2, - 21171 - 11905: 0xC0CD, - 21172 - 11905: 0x84BA, - 21173 - 11905: 0x84BB, - 21174 - 11905: 0x84BC, - 21175 - 11905: 0x84BD, - 21176 - 11905: 0x84BE, - 21177 - 11905: 0x84BF, - 21178 - 11905: 0x84C0, - 21179 - 11905: 0x84C1, - 21180 - 11905: 0x84C2, - 21181 - 11905: 0x84C3, - 21182 - 11905: 0xDBC0, - 21183 - 11905: 0xCAC6, - 21184 - 11905: 0x84C4, - 21185 - 11905: 0x84C5, - 21186 - 11905: 0x84C6, - 21187 - 11905: 0xB2AA, - 21188 - 11905: 0x84C7, - 21189 - 11905: 0x84C8, - 21190 - 11905: 0x84C9, - 21191 - 11905: 0xD3C2, - 21192 - 11905: 0x84CA, - 21193 - 11905: 0xC3E3, - 21194 - 11905: 0x84CB, - 21195 - 11905: 0xD1AB, - 21196 - 11905: 0x84CC, - 21197 - 11905: 0x84CD, - 21198 - 11905: 0x84CE, - 21199 - 11905: 0x84CF, - 21200 - 11905: 0xDBC2, - 21201 - 11905: 0x84D0, - 21202 - 11905: 0xC0D5, - 21203 - 11905: 0x84D1, - 21204 - 11905: 0x84D2, - 21205 - 11905: 0x84D3, - 21206 - 11905: 0xDBC3, - 21207 - 11905: 0x84D4, - 21208 - 11905: 0xBFB1, - 21209 - 11905: 0x84D5, - 21210 - 11905: 0x84D6, - 21211 - 11905: 0x84D7, - 21212 - 11905: 0x84D8, - 21213 - 11905: 0x84D9, - 21214 - 11905: 0x84DA, - 21215 - 11905: 0xC4BC, - 21216 - 11905: 0x84DB, - 21217 - 11905: 0x84DC, - 21218 - 11905: 0x84DD, - 21219 - 11905: 0x84DE, - 21220 - 11905: 0xC7DA, - 21221 - 11905: 0x84DF, - 21222 - 11905: 0x84E0, - 21223 - 11905: 0x84E1, - 21224 - 11905: 0x84E2, - 21225 - 11905: 0x84E3, - 21226 - 11905: 0x84E4, - 21227 - 11905: 0x84E5, - 21228 - 11905: 0x84E6, - 21229 - 11905: 0x84E7, - 21230 - 11905: 0x84E8, - 21231 - 11905: 0x84E9, - 21232 - 11905: 0xDBC4, - 21233 - 11905: 0x84EA, - 21234 - 11905: 0x84EB, - 21235 - 11905: 0x84EC, - 21236 - 11905: 0x84ED, - 21237 - 11905: 0x84EE, - 21238 - 11905: 0x84EF, - 21239 - 11905: 0x84F0, - 21240 - 11905: 0x84F1, - 21241 - 11905: 0xD9E8, - 21242 - 11905: 0xC9D7, - 21243 - 11905: 0x84F2, - 21244 - 11905: 0x84F3, - 21245 - 11905: 0x84F4, - 21246 - 11905: 0xB9B4, - 21247 - 11905: 0xCEF0, - 21248 - 11905: 0xD4C8, - 21249 - 11905: 0x84F5, - 21250 - 11905: 0x84F6, - 21251 - 11905: 0x84F7, - 21252 - 11905: 0x84F8, - 21253 - 11905: 0xB0FC, - 21254 - 11905: 0xB4D2, - 21255 - 11905: 0x84F9, - 21256 - 11905: 0xD0D9, - 21257 - 11905: 0x84FA, - 21258 - 11905: 0x84FB, - 21259 - 11905: 0x84FC, - 21260 - 11905: 0x84FD, - 21261 - 11905: 0xD9E9, - 21262 - 11905: 0x84FE, - 21263 - 11905: 0xDECB, - 21264 - 11905: 0xD9EB, - 21265 - 11905: 0x8540, - 21266 - 11905: 0x8541, - 21267 - 11905: 0x8542, - 21268 - 11905: 0x8543, - 21269 - 11905: 0xD8B0, - 21270 - 11905: 0xBBAF, - 21271 - 11905: 0xB1B1, - 21272 - 11905: 0x8544, - 21273 - 11905: 0xB3D7, - 21274 - 11905: 0xD8CE, - 21275 - 11905: 0x8545, - 21276 - 11905: 0x8546, - 21277 - 11905: 0xD4D1, - 21278 - 11905: 0x8547, - 21279 - 11905: 0x8548, - 21280 - 11905: 0xBDB3, - 21281 - 11905: 0xBFEF, - 21282 - 11905: 0x8549, - 21283 - 11905: 0xCFBB, - 21284 - 11905: 0x854A, - 21285 - 11905: 0x854B, - 21286 - 11905: 0xD8D0, - 21287 - 11905: 0x854C, - 21288 - 11905: 0x854D, - 21289 - 11905: 0x854E, - 21290 - 11905: 0xB7CB, - 21291 - 11905: 0x854F, - 21292 - 11905: 0x8550, - 21293 - 11905: 0x8551, - 21294 - 11905: 0xD8D1, - 21295 - 11905: 0x8552, - 21296 - 11905: 0x8553, - 21297 - 11905: 0x8554, - 21298 - 11905: 0x8555, - 21299 - 11905: 0x8556, - 21300 - 11905: 0x8557, - 21301 - 11905: 0x8558, - 21302 - 11905: 0x8559, - 21303 - 11905: 0x855A, - 21304 - 11905: 0x855B, - 21305 - 11905: 0xC6A5, - 21306 - 11905: 0xC7F8, - 21307 - 11905: 0xD2BD, - 21308 - 11905: 0x855C, - 21309 - 11905: 0x855D, - 21310 - 11905: 0xD8D2, - 21311 - 11905: 0xC4E4, - 21312 - 11905: 0x855E, - 21313 - 11905: 0xCAAE, - 21314 - 11905: 0x855F, - 21315 - 11905: 0xC7A7, - 21316 - 11905: 0x8560, - 21317 - 11905: 0xD8A6, - 21318 - 11905: 0x8561, - 21319 - 11905: 0xC9FD, - 21320 - 11905: 0xCEE7, - 21321 - 11905: 0xBBDC, - 21322 - 11905: 0xB0EB, - 21323 - 11905: 0x8562, - 21324 - 11905: 0x8563, - 21325 - 11905: 0x8564, - 21326 - 11905: 0xBBAA, - 21327 - 11905: 0xD0AD, - 21328 - 11905: 0x8565, - 21329 - 11905: 0xB1B0, - 21330 - 11905: 0xD7E4, - 21331 - 11905: 0xD7BF, - 21332 - 11905: 0x8566, - 21333 - 11905: 0xB5A5, - 21334 - 11905: 0xC2F4, - 21335 - 11905: 0xC4CF, - 21336 - 11905: 0x8567, - 21337 - 11905: 0x8568, - 21338 - 11905: 0xB2A9, - 21339 - 11905: 0x8569, - 21340 - 11905: 0xB2B7, - 21341 - 11905: 0x856A, - 21342 - 11905: 0xB1E5, - 21343 - 11905: 0xDFB2, - 21344 - 11905: 0xD5BC, - 21345 - 11905: 0xBFA8, - 21346 - 11905: 0xC2AC, - 21347 - 11905: 0xD8D5, - 21348 - 11905: 0xC2B1, - 21349 - 11905: 0x856B, - 21350 - 11905: 0xD8D4, - 21351 - 11905: 0xCED4, - 21352 - 11905: 0x856C, - 21353 - 11905: 0xDAE0, - 21354 - 11905: 0x856D, - 21355 - 11905: 0xCEC0, - 21356 - 11905: 0x856E, - 21357 - 11905: 0x856F, - 21358 - 11905: 0xD8B4, - 21359 - 11905: 0xC3AE, - 21360 - 11905: 0xD3A1, - 21361 - 11905: 0xCEA3, - 21362 - 11905: 0x8570, - 21363 - 11905: 0xBCB4, - 21364 - 11905: 0xC8B4, - 21365 - 11905: 0xC2D1, - 21366 - 11905: 0x8571, - 21367 - 11905: 0xBEED, - 21368 - 11905: 0xD0B6, - 21369 - 11905: 0x8572, - 21370 - 11905: 0xDAE1, - 21371 - 11905: 0x8573, - 21372 - 11905: 0x8574, - 21373 - 11905: 0x8575, - 21374 - 11905: 0x8576, - 21375 - 11905: 0xC7E4, - 21376 - 11905: 0x8577, - 21377 - 11905: 0x8578, - 21378 - 11905: 0xB3A7, - 21379 - 11905: 0x8579, - 21380 - 11905: 0xB6F2, - 21381 - 11905: 0xCCFC, - 21382 - 11905: 0xC0FA, - 21383 - 11905: 0x857A, - 21384 - 11905: 0x857B, - 21385 - 11905: 0xC0F7, - 21386 - 11905: 0x857C, - 21387 - 11905: 0xD1B9, - 21388 - 11905: 0xD1E1, - 21389 - 11905: 0xD8C7, - 21390 - 11905: 0x857D, - 21391 - 11905: 0x857E, - 21392 - 11905: 0x8580, - 21393 - 11905: 0x8581, - 21394 - 11905: 0x8582, - 21395 - 11905: 0x8583, - 21396 - 11905: 0x8584, - 21397 - 11905: 0xB2DE, - 21398 - 11905: 0x8585, - 21399 - 11905: 0x8586, - 21400 - 11905: 0xC0E5, - 21401 - 11905: 0x8587, - 21402 - 11905: 0xBAF1, - 21403 - 11905: 0x8588, - 21404 - 11905: 0x8589, - 21405 - 11905: 0xD8C8, - 21406 - 11905: 0x858A, - 21407 - 11905: 0xD4AD, - 21408 - 11905: 0x858B, - 21409 - 11905: 0x858C, - 21410 - 11905: 0xCFE1, - 21411 - 11905: 0xD8C9, - 21412 - 11905: 0x858D, - 21413 - 11905: 0xD8CA, - 21414 - 11905: 0xCFC3, - 21415 - 11905: 0x858E, - 21416 - 11905: 0xB3F8, - 21417 - 11905: 0xBEC7, - 21418 - 11905: 0x858F, - 21419 - 11905: 0x8590, - 21420 - 11905: 0x8591, - 21421 - 11905: 0x8592, - 21422 - 11905: 0xD8CB, - 21423 - 11905: 0x8593, - 21424 - 11905: 0x8594, - 21425 - 11905: 0x8595, - 21426 - 11905: 0x8596, - 21427 - 11905: 0x8597, - 21428 - 11905: 0x8598, - 21429 - 11905: 0x8599, - 21430 - 11905: 0xDBCC, - 21431 - 11905: 0x859A, - 21432 - 11905: 0x859B, - 21433 - 11905: 0x859C, - 21434 - 11905: 0x859D, - 21435 - 11905: 0xC8A5, - 21436 - 11905: 0x859E, - 21437 - 11905: 0x859F, - 21438 - 11905: 0x85A0, - 21439 - 11905: 0xCFD8, - 21440 - 11905: 0x85A1, - 21441 - 11905: 0xC8FE, - 21442 - 11905: 0xB2CE, - 21443 - 11905: 0x85A2, - 21444 - 11905: 0x85A3, - 21445 - 11905: 0x85A4, - 21446 - 11905: 0x85A5, - 21447 - 11905: 0x85A6, - 21448 - 11905: 0xD3D6, - 21449 - 11905: 0xB2E6, - 21450 - 11905: 0xBCB0, - 21451 - 11905: 0xD3D1, - 21452 - 11905: 0xCBAB, - 21453 - 11905: 0xB7B4, - 21454 - 11905: 0x85A7, - 21455 - 11905: 0x85A8, - 21456 - 11905: 0x85A9, - 21457 - 11905: 0xB7A2, - 21458 - 11905: 0x85AA, - 21459 - 11905: 0x85AB, - 21460 - 11905: 0xCAE5, - 21461 - 11905: 0x85AC, - 21462 - 11905: 0xC8A1, - 21463 - 11905: 0xCADC, - 21464 - 11905: 0xB1E4, - 21465 - 11905: 0xD0F0, - 21466 - 11905: 0x85AD, - 21467 - 11905: 0xC5D1, - 21468 - 11905: 0x85AE, - 21469 - 11905: 0x85AF, - 21470 - 11905: 0x85B0, - 21471 - 11905: 0xDBC5, - 21472 - 11905: 0xB5FE, - 21473 - 11905: 0x85B1, - 21474 - 11905: 0x85B2, - 21475 - 11905: 0xBFDA, - 21476 - 11905: 0xB9C5, - 21477 - 11905: 0xBEE4, - 21478 - 11905: 0xC1ED, - 21479 - 11905: 0x85B3, - 21480 - 11905: 0xDFB6, - 21481 - 11905: 0xDFB5, - 21482 - 11905: 0xD6BB, - 21483 - 11905: 0xBDD0, - 21484 - 11905: 0xD5D9, - 21485 - 11905: 0xB0C8, - 21486 - 11905: 0xB6A3, - 21487 - 11905: 0xBFC9, - 21488 - 11905: 0xCCA8, - 21489 - 11905: 0xDFB3, - 21490 - 11905: 0xCAB7, - 21491 - 11905: 0xD3D2, - 21492 - 11905: 0x85B4, - 21493 - 11905: 0xD8CF, - 21494 - 11905: 0xD2B6, - 21495 - 11905: 0xBAC5, - 21496 - 11905: 0xCBBE, - 21497 - 11905: 0xCCBE, - 21498 - 11905: 0x85B5, - 21499 - 11905: 0xDFB7, - 21500 - 11905: 0xB5F0, - 21501 - 11905: 0xDFB4, - 21502 - 11905: 0x85B6, - 21503 - 11905: 0x85B7, - 21504 - 11905: 0x85B8, - 21505 - 11905: 0xD3F5, - 21506 - 11905: 0x85B9, - 21507 - 11905: 0xB3D4, - 21508 - 11905: 0xB8F7, - 21509 - 11905: 0x85BA, - 21510 - 11905: 0xDFBA, - 21511 - 11905: 0x85BB, - 21512 - 11905: 0xBACF, - 21513 - 11905: 0xBCAA, - 21514 - 11905: 0xB5F5, - 21515 - 11905: 0x85BC, - 21516 - 11905: 0xCDAC, - 21517 - 11905: 0xC3FB, - 21518 - 11905: 0xBAF3, - 21519 - 11905: 0xC0F4, - 21520 - 11905: 0xCDC2, - 21521 - 11905: 0xCFF2, - 21522 - 11905: 0xDFB8, - 21523 - 11905: 0xCFC5, - 21524 - 11905: 0x85BD, - 21525 - 11905: 0xC2C0, - 21526 - 11905: 0xDFB9, - 21527 - 11905: 0xC2F0, - 21528 - 11905: 0x85BE, - 21529 - 11905: 0x85BF, - 21530 - 11905: 0x85C0, - 21531 - 11905: 0xBEFD, - 21532 - 11905: 0x85C1, - 21533 - 11905: 0xC1DF, - 21534 - 11905: 0xCDCC, - 21535 - 11905: 0xD2F7, - 21536 - 11905: 0xB7CD, - 21537 - 11905: 0xDFC1, - 21538 - 11905: 0x85C2, - 21539 - 11905: 0xDFC4, - 21540 - 11905: 0x85C3, - 21541 - 11905: 0x85C4, - 21542 - 11905: 0xB7F1, - 21543 - 11905: 0xB0C9, - 21544 - 11905: 0xB6D6, - 21545 - 11905: 0xB7D4, - 21546 - 11905: 0x85C5, - 21547 - 11905: 0xBAAC, - 21548 - 11905: 0xCCFD, - 21549 - 11905: 0xBFD4, - 21550 - 11905: 0xCBB1, - 21551 - 11905: 0xC6F4, - 21552 - 11905: 0x85C6, - 21553 - 11905: 0xD6A8, - 21554 - 11905: 0xDFC5, - 21555 - 11905: 0x85C7, - 21556 - 11905: 0xCEE2, - 21557 - 11905: 0xB3B3, - 21558 - 11905: 0x85C8, - 21559 - 11905: 0x85C9, - 21560 - 11905: 0xCEFC, - 21561 - 11905: 0xB4B5, - 21562 - 11905: 0x85CA, - 21563 - 11905: 0xCEC7, - 21564 - 11905: 0xBAF0, - 21565 - 11905: 0x85CB, - 21566 - 11905: 0xCEE1, - 21567 - 11905: 0x85CC, - 21568 - 11905: 0xD1BD, - 21569 - 11905: 0x85CD, - 21570 - 11905: 0x85CE, - 21571 - 11905: 0xDFC0, - 21572 - 11905: 0x85CF, - 21573 - 11905: 0x85D0, - 21574 - 11905: 0xB4F4, - 21575 - 11905: 0x85D1, - 21576 - 11905: 0xB3CA, - 21577 - 11905: 0x85D2, - 21578 - 11905: 0xB8E6, - 21579 - 11905: 0xDFBB, - 21580 - 11905: 0x85D3, - 21581 - 11905: 0x85D4, - 21582 - 11905: 0x85D5, - 21583 - 11905: 0x85D6, - 21584 - 11905: 0xC4C5, - 21585 - 11905: 0x85D7, - 21586 - 11905: 0xDFBC, - 21587 - 11905: 0xDFBD, - 21588 - 11905: 0xDFBE, - 21589 - 11905: 0xC5BB, - 21590 - 11905: 0xDFBF, - 21591 - 11905: 0xDFC2, - 21592 - 11905: 0xD4B1, - 21593 - 11905: 0xDFC3, - 21594 - 11905: 0x85D8, - 21595 - 11905: 0xC7BA, - 21596 - 11905: 0xCED8, - 21597 - 11905: 0x85D9, - 21598 - 11905: 0x85DA, - 21599 - 11905: 0x85DB, - 21600 - 11905: 0x85DC, - 21601 - 11905: 0x85DD, - 21602 - 11905: 0xC4D8, - 21603 - 11905: 0x85DE, - 21604 - 11905: 0xDFCA, - 21605 - 11905: 0x85DF, - 21606 - 11905: 0xDFCF, - 21607 - 11905: 0x85E0, - 21608 - 11905: 0xD6DC, - 21609 - 11905: 0x85E1, - 21610 - 11905: 0x85E2, - 21611 - 11905: 0x85E3, - 21612 - 11905: 0x85E4, - 21613 - 11905: 0x85E5, - 21614 - 11905: 0x85E6, - 21615 - 11905: 0x85E7, - 21616 - 11905: 0x85E8, - 21617 - 11905: 0xDFC9, - 21618 - 11905: 0xDFDA, - 21619 - 11905: 0xCEB6, - 21620 - 11905: 0x85E9, - 21621 - 11905: 0xBAC7, - 21622 - 11905: 0xDFCE, - 21623 - 11905: 0xDFC8, - 21624 - 11905: 0xC5DE, - 21625 - 11905: 0x85EA, - 21626 - 11905: 0x85EB, - 21627 - 11905: 0xC9EB, - 21628 - 11905: 0xBAF4, - 21629 - 11905: 0xC3FC, - 21630 - 11905: 0x85EC, - 21631 - 11905: 0x85ED, - 21632 - 11905: 0xBED7, - 21633 - 11905: 0x85EE, - 21634 - 11905: 0xDFC6, - 21635 - 11905: 0x85EF, - 21636 - 11905: 0xDFCD, - 21637 - 11905: 0x85F0, - 21638 - 11905: 0xC5D8, - 21639 - 11905: 0x85F1, - 21640 - 11905: 0x85F2, - 21641 - 11905: 0x85F3, - 21642 - 11905: 0x85F4, - 21643 - 11905: 0xD5A6, - 21644 - 11905: 0xBACD, - 21645 - 11905: 0x85F5, - 21646 - 11905: 0xBECC, - 21647 - 11905: 0xD3BD, - 21648 - 11905: 0xB8C0, - 21649 - 11905: 0x85F6, - 21650 - 11905: 0xD6E4, - 21651 - 11905: 0x85F7, - 21652 - 11905: 0xDFC7, - 21653 - 11905: 0xB9BE, - 21654 - 11905: 0xBFA7, - 21655 - 11905: 0x85F8, - 21656 - 11905: 0x85F9, - 21657 - 11905: 0xC1FC, - 21658 - 11905: 0xDFCB, - 21659 - 11905: 0xDFCC, - 21660 - 11905: 0x85FA, - 21661 - 11905: 0xDFD0, - 21662 - 11905: 0x85FB, - 21663 - 11905: 0x85FC, - 21664 - 11905: 0x85FD, - 21665 - 11905: 0x85FE, - 21666 - 11905: 0x8640, - 21667 - 11905: 0xDFDB, - 21668 - 11905: 0xDFE5, - 21669 - 11905: 0x8641, - 21670 - 11905: 0xDFD7, - 21671 - 11905: 0xDFD6, - 21672 - 11905: 0xD7C9, - 21673 - 11905: 0xDFE3, - 21674 - 11905: 0xDFE4, - 21675 - 11905: 0xE5EB, - 21676 - 11905: 0xD2A7, - 21677 - 11905: 0xDFD2, - 21678 - 11905: 0x8642, - 21679 - 11905: 0xBFA9, - 21680 - 11905: 0x8643, - 21681 - 11905: 0xD4DB, - 21682 - 11905: 0x8644, - 21683 - 11905: 0xBFC8, - 21684 - 11905: 0xDFD4, - 21685 - 11905: 0x8645, - 21686 - 11905: 0x8646, - 21687 - 11905: 0x8647, - 21688 - 11905: 0xCFCC, - 21689 - 11905: 0x8648, - 21690 - 11905: 0x8649, - 21691 - 11905: 0xDFDD, - 21692 - 11905: 0x864A, - 21693 - 11905: 0xD1CA, - 21694 - 11905: 0x864B, - 21695 - 11905: 0xDFDE, - 21696 - 11905: 0xB0A7, - 21697 - 11905: 0xC6B7, - 21698 - 11905: 0xDFD3, - 21699 - 11905: 0x864C, - 21700 - 11905: 0xBAE5, - 21701 - 11905: 0x864D, - 21702 - 11905: 0xB6DF, - 21703 - 11905: 0xCDDB, - 21704 - 11905: 0xB9FE, - 21705 - 11905: 0xD4D5, - 21706 - 11905: 0x864E, - 21707 - 11905: 0x864F, - 21708 - 11905: 0xDFDF, - 21709 - 11905: 0xCFEC, - 21710 - 11905: 0xB0A5, - 21711 - 11905: 0xDFE7, - 21712 - 11905: 0xDFD1, - 21713 - 11905: 0xD1C6, - 21714 - 11905: 0xDFD5, - 21715 - 11905: 0xDFD8, - 21716 - 11905: 0xDFD9, - 21717 - 11905: 0xDFDC, - 21718 - 11905: 0x8650, - 21719 - 11905: 0xBBA9, - 21720 - 11905: 0x8651, - 21721 - 11905: 0xDFE0, - 21722 - 11905: 0xDFE1, - 21723 - 11905: 0x8652, - 21724 - 11905: 0xDFE2, - 21725 - 11905: 0xDFE6, - 21726 - 11905: 0xDFE8, - 21727 - 11905: 0xD3B4, - 21728 - 11905: 0x8653, - 21729 - 11905: 0x8654, - 21730 - 11905: 0x8655, - 21731 - 11905: 0x8656, - 21732 - 11905: 0x8657, - 21733 - 11905: 0xB8E7, - 21734 - 11905: 0xC5B6, - 21735 - 11905: 0xDFEA, - 21736 - 11905: 0xC9DA, - 21737 - 11905: 0xC1A8, - 21738 - 11905: 0xC4C4, - 21739 - 11905: 0x8658, - 21740 - 11905: 0x8659, - 21741 - 11905: 0xBFDE, - 21742 - 11905: 0xCFF8, - 21743 - 11905: 0x865A, - 21744 - 11905: 0x865B, - 21745 - 11905: 0x865C, - 21746 - 11905: 0xD5DC, - 21747 - 11905: 0xDFEE, - 21748 - 11905: 0x865D, - 21749 - 11905: 0x865E, - 21750 - 11905: 0x865F, - 21751 - 11905: 0x8660, - 21752 - 11905: 0x8661, - 21753 - 11905: 0x8662, - 21754 - 11905: 0xB2B8, - 21755 - 11905: 0x8663, - 21756 - 11905: 0xBADF, - 21757 - 11905: 0xDFEC, - 21758 - 11905: 0x8664, - 21759 - 11905: 0xDBC1, - 21760 - 11905: 0x8665, - 21761 - 11905: 0xD1E4, - 21762 - 11905: 0x8666, - 21763 - 11905: 0x8667, - 21764 - 11905: 0x8668, - 21765 - 11905: 0x8669, - 21766 - 11905: 0xCBF4, - 21767 - 11905: 0xB4BD, - 21768 - 11905: 0x866A, - 21769 - 11905: 0xB0A6, - 21770 - 11905: 0x866B, - 21771 - 11905: 0x866C, - 21772 - 11905: 0x866D, - 21773 - 11905: 0x866E, - 21774 - 11905: 0x866F, - 21775 - 11905: 0xDFF1, - 21776 - 11905: 0xCCC6, - 21777 - 11905: 0xDFF2, - 21778 - 11905: 0x8670, - 21779 - 11905: 0x8671, - 21780 - 11905: 0xDFED, - 21781 - 11905: 0x8672, - 21782 - 11905: 0x8673, - 21783 - 11905: 0x8674, - 21784 - 11905: 0x8675, - 21785 - 11905: 0x8676, - 21786 - 11905: 0x8677, - 21787 - 11905: 0xDFE9, - 21788 - 11905: 0x8678, - 21789 - 11905: 0x8679, - 21790 - 11905: 0x867A, - 21791 - 11905: 0x867B, - 21792 - 11905: 0xDFEB, - 21793 - 11905: 0x867C, - 21794 - 11905: 0xDFEF, - 21795 - 11905: 0xDFF0, - 21796 - 11905: 0xBBBD, - 21797 - 11905: 0x867D, - 21798 - 11905: 0x867E, - 21799 - 11905: 0xDFF3, - 21800 - 11905: 0x8680, - 21801 - 11905: 0x8681, - 21802 - 11905: 0xDFF4, - 21803 - 11905: 0x8682, - 21804 - 11905: 0xBBA3, - 21805 - 11905: 0x8683, - 21806 - 11905: 0xCADB, - 21807 - 11905: 0xCEA8, - 21808 - 11905: 0xE0A7, - 21809 - 11905: 0xB3AA, - 21810 - 11905: 0x8684, - 21811 - 11905: 0xE0A6, - 21812 - 11905: 0x8685, - 21813 - 11905: 0x8686, - 21814 - 11905: 0x8687, - 21815 - 11905: 0xE0A1, - 21816 - 11905: 0x8688, - 21817 - 11905: 0x8689, - 21818 - 11905: 0x868A, - 21819 - 11905: 0x868B, - 21820 - 11905: 0xDFFE, - 21821 - 11905: 0x868C, - 21822 - 11905: 0xCDD9, - 21823 - 11905: 0xDFFC, - 21824 - 11905: 0x868D, - 21825 - 11905: 0xDFFA, - 21826 - 11905: 0x868E, - 21827 - 11905: 0xBFD0, - 21828 - 11905: 0xD7C4, - 21829 - 11905: 0x868F, - 21830 - 11905: 0xC9CC, - 21831 - 11905: 0x8690, - 21832 - 11905: 0x8691, - 21833 - 11905: 0xDFF8, - 21834 - 11905: 0xB0A1, - 21835 - 11905: 0x8692, - 21836 - 11905: 0x8693, - 21837 - 11905: 0x8694, - 21838 - 11905: 0x8695, - 21839 - 11905: 0x8696, - 21840 - 11905: 0xDFFD, - 21841 - 11905: 0x8697, - 21842 - 11905: 0x8698, - 21843 - 11905: 0x8699, - 21844 - 11905: 0x869A, - 21845 - 11905: 0xDFFB, - 21846 - 11905: 0xE0A2, - 21847 - 11905: 0x869B, - 21848 - 11905: 0x869C, - 21849 - 11905: 0x869D, - 21850 - 11905: 0x869E, - 21851 - 11905: 0x869F, - 21852 - 11905: 0xE0A8, - 21853 - 11905: 0x86A0, - 21854 - 11905: 0x86A1, - 21855 - 11905: 0x86A2, - 21856 - 11905: 0x86A3, - 21857 - 11905: 0xB7C8, - 21858 - 11905: 0x86A4, - 21859 - 11905: 0x86A5, - 21860 - 11905: 0xC6A1, - 21861 - 11905: 0xC9B6, - 21862 - 11905: 0xC0B2, - 21863 - 11905: 0xDFF5, - 21864 - 11905: 0x86A6, - 21865 - 11905: 0x86A7, - 21866 - 11905: 0xC5BE, - 21867 - 11905: 0x86A8, - 21868 - 11905: 0xD8C4, - 21869 - 11905: 0xDFF9, - 21870 - 11905: 0xC4F6, - 21871 - 11905: 0x86A9, - 21872 - 11905: 0x86AA, - 21873 - 11905: 0x86AB, - 21874 - 11905: 0x86AC, - 21875 - 11905: 0x86AD, - 21876 - 11905: 0x86AE, - 21877 - 11905: 0xE0A3, - 21878 - 11905: 0xE0A4, - 21879 - 11905: 0xE0A5, - 21880 - 11905: 0xD0A5, - 21881 - 11905: 0x86AF, - 21882 - 11905: 0x86B0, - 21883 - 11905: 0xE0B4, - 21884 - 11905: 0xCCE4, - 21885 - 11905: 0x86B1, - 21886 - 11905: 0xE0B1, - 21887 - 11905: 0x86B2, - 21888 - 11905: 0xBFA6, - 21889 - 11905: 0xE0AF, - 21890 - 11905: 0xCEB9, - 21891 - 11905: 0xE0AB, - 21892 - 11905: 0xC9C6, - 21893 - 11905: 0x86B3, - 21894 - 11905: 0x86B4, - 21895 - 11905: 0xC0AE, - 21896 - 11905: 0xE0AE, - 21897 - 11905: 0xBAED, - 21898 - 11905: 0xBAB0, - 21899 - 11905: 0xE0A9, - 21900 - 11905: 0x86B5, - 21901 - 11905: 0x86B6, - 21902 - 11905: 0x86B7, - 21903 - 11905: 0xDFF6, - 21904 - 11905: 0x86B8, - 21905 - 11905: 0xE0B3, - 21906 - 11905: 0x86B9, - 21907 - 11905: 0x86BA, - 21908 - 11905: 0xE0B8, - 21909 - 11905: 0x86BB, - 21910 - 11905: 0x86BC, - 21911 - 11905: 0x86BD, - 21912 - 11905: 0xB4AD, - 21913 - 11905: 0xE0B9, - 21914 - 11905: 0x86BE, - 21915 - 11905: 0x86BF, - 21916 - 11905: 0xCFB2, - 21917 - 11905: 0xBAC8, - 21918 - 11905: 0x86C0, - 21919 - 11905: 0xE0B0, - 21920 - 11905: 0x86C1, - 21921 - 11905: 0x86C2, - 21922 - 11905: 0x86C3, - 21923 - 11905: 0x86C4, - 21924 - 11905: 0x86C5, - 21925 - 11905: 0x86C6, - 21926 - 11905: 0x86C7, - 21927 - 11905: 0xD0FA, - 21928 - 11905: 0x86C8, - 21929 - 11905: 0x86C9, - 21930 - 11905: 0x86CA, - 21931 - 11905: 0x86CB, - 21932 - 11905: 0x86CC, - 21933 - 11905: 0x86CD, - 21934 - 11905: 0x86CE, - 21935 - 11905: 0x86CF, - 21936 - 11905: 0x86D0, - 21937 - 11905: 0xE0AC, - 21938 - 11905: 0x86D1, - 21939 - 11905: 0xD4FB, - 21940 - 11905: 0x86D2, - 21941 - 11905: 0xDFF7, - 21942 - 11905: 0x86D3, - 21943 - 11905: 0xC5E7, - 21944 - 11905: 0x86D4, - 21945 - 11905: 0xE0AD, - 21946 - 11905: 0x86D5, - 21947 - 11905: 0xD3F7, - 21948 - 11905: 0x86D6, - 21949 - 11905: 0xE0B6, - 21950 - 11905: 0xE0B7, - 21951 - 11905: 0x86D7, - 21952 - 11905: 0x86D8, - 21953 - 11905: 0x86D9, - 21954 - 11905: 0x86DA, - 21955 - 11905: 0x86DB, - 21956 - 11905: 0xE0C4, - 21957 - 11905: 0xD0E1, - 21958 - 11905: 0x86DC, - 21959 - 11905: 0x86DD, - 21960 - 11905: 0x86DE, - 21961 - 11905: 0xE0BC, - 21962 - 11905: 0x86DF, - 21963 - 11905: 0x86E0, - 21964 - 11905: 0xE0C9, - 21965 - 11905: 0xE0CA, - 21966 - 11905: 0x86E1, - 21967 - 11905: 0x86E2, - 21968 - 11905: 0x86E3, - 21969 - 11905: 0xE0BE, - 21970 - 11905: 0xE0AA, - 21971 - 11905: 0xC9A4, - 21972 - 11905: 0xE0C1, - 21973 - 11905: 0x86E4, - 21974 - 11905: 0xE0B2, - 21975 - 11905: 0x86E5, - 21976 - 11905: 0x86E6, - 21977 - 11905: 0x86E7, - 21978 - 11905: 0x86E8, - 21979 - 11905: 0x86E9, - 21980 - 11905: 0xCAC8, - 21981 - 11905: 0xE0C3, - 21982 - 11905: 0x86EA, - 21983 - 11905: 0xE0B5, - 21984 - 11905: 0x86EB, - 21985 - 11905: 0xCECB, - 21986 - 11905: 0x86EC, - 21987 - 11905: 0xCBC3, - 21988 - 11905: 0xE0CD, - 21989 - 11905: 0xE0C6, - 21990 - 11905: 0xE0C2, - 21991 - 11905: 0x86ED, - 21992 - 11905: 0xE0CB, - 21993 - 11905: 0x86EE, - 21994 - 11905: 0xE0BA, - 21995 - 11905: 0xE0BF, - 21996 - 11905: 0xE0C0, - 21997 - 11905: 0x86EF, - 21998 - 11905: 0x86F0, - 21999 - 11905: 0xE0C5, - 22000 - 11905: 0x86F1, - 22001 - 11905: 0x86F2, - 22002 - 11905: 0xE0C7, - 22003 - 11905: 0xE0C8, - 22004 - 11905: 0x86F3, - 22005 - 11905: 0xE0CC, - 22006 - 11905: 0x86F4, - 22007 - 11905: 0xE0BB, - 22008 - 11905: 0x86F5, - 22009 - 11905: 0x86F6, - 22010 - 11905: 0x86F7, - 22011 - 11905: 0x86F8, - 22012 - 11905: 0x86F9, - 22013 - 11905: 0xCBD4, - 22014 - 11905: 0xE0D5, - 22015 - 11905: 0x86FA, - 22016 - 11905: 0xE0D6, - 22017 - 11905: 0xE0D2, - 22018 - 11905: 0x86FB, - 22019 - 11905: 0x86FC, - 22020 - 11905: 0x86FD, - 22021 - 11905: 0x86FE, - 22022 - 11905: 0x8740, - 22023 - 11905: 0x8741, - 22024 - 11905: 0xE0D0, - 22025 - 11905: 0xBCCE, - 22026 - 11905: 0x8742, - 22027 - 11905: 0x8743, - 22028 - 11905: 0xE0D1, - 22029 - 11905: 0x8744, - 22030 - 11905: 0xB8C2, - 22031 - 11905: 0xD8C5, - 22032 - 11905: 0x8745, - 22033 - 11905: 0x8746, - 22034 - 11905: 0x8747, - 22035 - 11905: 0x8748, - 22036 - 11905: 0x8749, - 22037 - 11905: 0x874A, - 22038 - 11905: 0x874B, - 22039 - 11905: 0x874C, - 22040 - 11905: 0xD0EA, - 22041 - 11905: 0x874D, - 22042 - 11905: 0x874E, - 22043 - 11905: 0xC2EF, - 22044 - 11905: 0x874F, - 22045 - 11905: 0x8750, - 22046 - 11905: 0xE0CF, - 22047 - 11905: 0xE0BD, - 22048 - 11905: 0x8751, - 22049 - 11905: 0x8752, - 22050 - 11905: 0x8753, - 22051 - 11905: 0xE0D4, - 22052 - 11905: 0xE0D3, - 22053 - 11905: 0x8754, - 22054 - 11905: 0x8755, - 22055 - 11905: 0xE0D7, - 22056 - 11905: 0x8756, - 22057 - 11905: 0x8757, - 22058 - 11905: 0x8758, - 22059 - 11905: 0x8759, - 22060 - 11905: 0xE0DC, - 22061 - 11905: 0xE0D8, - 22062 - 11905: 0x875A, - 22063 - 11905: 0x875B, - 22064 - 11905: 0x875C, - 22065 - 11905: 0xD6F6, - 22066 - 11905: 0xB3B0, - 22067 - 11905: 0x875D, - 22068 - 11905: 0xD7EC, - 22069 - 11905: 0x875E, - 22070 - 11905: 0xCBBB, - 22071 - 11905: 0x875F, - 22072 - 11905: 0x8760, - 22073 - 11905: 0xE0DA, - 22074 - 11905: 0x8761, - 22075 - 11905: 0xCEFB, - 22076 - 11905: 0x8762, - 22077 - 11905: 0x8763, - 22078 - 11905: 0x8764, - 22079 - 11905: 0xBAD9, - 22080 - 11905: 0x8765, - 22081 - 11905: 0x8766, - 22082 - 11905: 0x8767, - 22083 - 11905: 0x8768, - 22084 - 11905: 0x8769, - 22085 - 11905: 0x876A, - 22086 - 11905: 0x876B, - 22087 - 11905: 0x876C, - 22088 - 11905: 0x876D, - 22089 - 11905: 0x876E, - 22090 - 11905: 0x876F, - 22091 - 11905: 0x8770, - 22092 - 11905: 0xE0E1, - 22093 - 11905: 0xE0DD, - 22094 - 11905: 0xD2AD, - 22095 - 11905: 0x8771, - 22096 - 11905: 0x8772, - 22097 - 11905: 0x8773, - 22098 - 11905: 0x8774, - 22099 - 11905: 0x8775, - 22100 - 11905: 0xE0E2, - 22101 - 11905: 0x8776, - 22102 - 11905: 0x8777, - 22103 - 11905: 0xE0DB, - 22104 - 11905: 0xE0D9, - 22105 - 11905: 0xE0DF, - 22106 - 11905: 0x8778, - 22107 - 11905: 0x8779, - 22108 - 11905: 0xE0E0, - 22109 - 11905: 0x877A, - 22110 - 11905: 0x877B, - 22111 - 11905: 0x877C, - 22112 - 11905: 0x877D, - 22113 - 11905: 0x877E, - 22114 - 11905: 0xE0DE, - 22115 - 11905: 0x8780, - 22116 - 11905: 0xE0E4, - 22117 - 11905: 0x8781, - 22118 - 11905: 0x8782, - 22119 - 11905: 0x8783, - 22120 - 11905: 0xC6F7, - 22121 - 11905: 0xD8AC, - 22122 - 11905: 0xD4EB, - 22123 - 11905: 0xE0E6, - 22124 - 11905: 0xCAC9, - 22125 - 11905: 0x8784, - 22126 - 11905: 0x8785, - 22127 - 11905: 0x8786, - 22128 - 11905: 0x8787, - 22129 - 11905: 0xE0E5, - 22130 - 11905: 0x8788, - 22131 - 11905: 0x8789, - 22132 - 11905: 0x878A, - 22133 - 11905: 0x878B, - 22134 - 11905: 0xB8C1, - 22135 - 11905: 0x878C, - 22136 - 11905: 0x878D, - 22137 - 11905: 0x878E, - 22138 - 11905: 0x878F, - 22139 - 11905: 0xE0E7, - 22140 - 11905: 0xE0E8, - 22141 - 11905: 0x8790, - 22142 - 11905: 0x8791, - 22143 - 11905: 0x8792, - 22144 - 11905: 0x8793, - 22145 - 11905: 0x8794, - 22146 - 11905: 0x8795, - 22147 - 11905: 0x8796, - 22148 - 11905: 0x8797, - 22149 - 11905: 0xE0E9, - 22150 - 11905: 0xE0E3, - 22151 - 11905: 0x8798, - 22152 - 11905: 0x8799, - 22153 - 11905: 0x879A, - 22154 - 11905: 0x879B, - 22155 - 11905: 0x879C, - 22156 - 11905: 0x879D, - 22157 - 11905: 0x879E, - 22158 - 11905: 0xBABF, - 22159 - 11905: 0xCCE7, - 22160 - 11905: 0x879F, - 22161 - 11905: 0x87A0, - 22162 - 11905: 0x87A1, - 22163 - 11905: 0xE0EA, - 22164 - 11905: 0x87A2, - 22165 - 11905: 0x87A3, - 22166 - 11905: 0x87A4, - 22167 - 11905: 0x87A5, - 22168 - 11905: 0x87A6, - 22169 - 11905: 0x87A7, - 22170 - 11905: 0x87A8, - 22171 - 11905: 0x87A9, - 22172 - 11905: 0x87AA, - 22173 - 11905: 0x87AB, - 22174 - 11905: 0x87AC, - 22175 - 11905: 0x87AD, - 22176 - 11905: 0x87AE, - 22177 - 11905: 0x87AF, - 22178 - 11905: 0x87B0, - 22179 - 11905: 0xCFF9, - 22180 - 11905: 0x87B1, - 22181 - 11905: 0x87B2, - 22182 - 11905: 0x87B3, - 22183 - 11905: 0x87B4, - 22184 - 11905: 0x87B5, - 22185 - 11905: 0x87B6, - 22186 - 11905: 0x87B7, - 22187 - 11905: 0x87B8, - 22188 - 11905: 0x87B9, - 22189 - 11905: 0x87BA, - 22190 - 11905: 0x87BB, - 22191 - 11905: 0xE0EB, - 22192 - 11905: 0x87BC, - 22193 - 11905: 0x87BD, - 22194 - 11905: 0x87BE, - 22195 - 11905: 0x87BF, - 22196 - 11905: 0x87C0, - 22197 - 11905: 0x87C1, - 22198 - 11905: 0x87C2, - 22199 - 11905: 0xC8C2, - 22200 - 11905: 0x87C3, - 22201 - 11905: 0x87C4, - 22202 - 11905: 0x87C5, - 22203 - 11905: 0x87C6, - 22204 - 11905: 0xBDC0, - 22205 - 11905: 0x87C7, - 22206 - 11905: 0x87C8, - 22207 - 11905: 0x87C9, - 22208 - 11905: 0x87CA, - 22209 - 11905: 0x87CB, - 22210 - 11905: 0x87CC, - 22211 - 11905: 0x87CD, - 22212 - 11905: 0x87CE, - 22213 - 11905: 0x87CF, - 22214 - 11905: 0x87D0, - 22215 - 11905: 0x87D1, - 22216 - 11905: 0x87D2, - 22217 - 11905: 0x87D3, - 22218 - 11905: 0xC4D2, - 22219 - 11905: 0x87D4, - 22220 - 11905: 0x87D5, - 22221 - 11905: 0x87D6, - 22222 - 11905: 0x87D7, - 22223 - 11905: 0x87D8, - 22224 - 11905: 0x87D9, - 22225 - 11905: 0x87DA, - 22226 - 11905: 0x87DB, - 22227 - 11905: 0x87DC, - 22228 - 11905: 0xE0EC, - 22229 - 11905: 0x87DD, - 22230 - 11905: 0x87DE, - 22231 - 11905: 0xE0ED, - 22232 - 11905: 0x87DF, - 22233 - 11905: 0x87E0, - 22234 - 11905: 0xC7F4, - 22235 - 11905: 0xCBC4, - 22236 - 11905: 0x87E1, - 22237 - 11905: 0xE0EE, - 22238 - 11905: 0xBBD8, - 22239 - 11905: 0xD8B6, - 22240 - 11905: 0xD2F2, - 22241 - 11905: 0xE0EF, - 22242 - 11905: 0xCDC5, - 22243 - 11905: 0x87E2, - 22244 - 11905: 0xB6DA, - 22245 - 11905: 0x87E3, - 22246 - 11905: 0x87E4, - 22247 - 11905: 0x87E5, - 22248 - 11905: 0x87E6, - 22249 - 11905: 0x87E7, - 22250 - 11905: 0x87E8, - 22251 - 11905: 0xE0F1, - 22252 - 11905: 0x87E9, - 22253 - 11905: 0xD4B0, - 22254 - 11905: 0x87EA, - 22255 - 11905: 0x87EB, - 22256 - 11905: 0xC0A7, - 22257 - 11905: 0xB4D1, - 22258 - 11905: 0x87EC, - 22259 - 11905: 0x87ED, - 22260 - 11905: 0xCEA7, - 22261 - 11905: 0xE0F0, - 22262 - 11905: 0x87EE, - 22263 - 11905: 0x87EF, - 22264 - 11905: 0x87F0, - 22265 - 11905: 0xE0F2, - 22266 - 11905: 0xB9CC, - 22267 - 11905: 0x87F1, - 22268 - 11905: 0x87F2, - 22269 - 11905: 0xB9FA, - 22270 - 11905: 0xCDBC, - 22271 - 11905: 0xE0F3, - 22272 - 11905: 0x87F3, - 22273 - 11905: 0x87F4, - 22274 - 11905: 0x87F5, - 22275 - 11905: 0xC6D4, - 22276 - 11905: 0xE0F4, - 22277 - 11905: 0x87F6, - 22278 - 11905: 0xD4B2, - 22279 - 11905: 0x87F7, - 22280 - 11905: 0xC8A6, - 22281 - 11905: 0xE0F6, - 22282 - 11905: 0xE0F5, - 22283 - 11905: 0x87F8, - 22284 - 11905: 0x87F9, - 22285 - 11905: 0x87FA, - 22286 - 11905: 0x87FB, - 22287 - 11905: 0x87FC, - 22288 - 11905: 0x87FD, - 22289 - 11905: 0x87FE, - 22290 - 11905: 0x8840, - 22291 - 11905: 0x8841, - 22292 - 11905: 0x8842, - 22293 - 11905: 0x8843, - 22294 - 11905: 0x8844, - 22295 - 11905: 0x8845, - 22296 - 11905: 0x8846, - 22297 - 11905: 0x8847, - 22298 - 11905: 0x8848, - 22299 - 11905: 0x8849, - 22300 - 11905: 0xE0F7, - 22301 - 11905: 0x884A, - 22302 - 11905: 0x884B, - 22303 - 11905: 0xCDC1, - 22304 - 11905: 0x884C, - 22305 - 11905: 0x884D, - 22306 - 11905: 0x884E, - 22307 - 11905: 0xCAA5, - 22308 - 11905: 0x884F, - 22309 - 11905: 0x8850, - 22310 - 11905: 0x8851, - 22311 - 11905: 0x8852, - 22312 - 11905: 0xD4DA, - 22313 - 11905: 0xDBD7, - 22314 - 11905: 0xDBD9, - 22315 - 11905: 0x8853, - 22316 - 11905: 0xDBD8, - 22317 - 11905: 0xB9E7, - 22318 - 11905: 0xDBDC, - 22319 - 11905: 0xDBDD, - 22320 - 11905: 0xB5D8, - 22321 - 11905: 0x8854, - 22322 - 11905: 0x8855, - 22323 - 11905: 0xDBDA, - 22324 - 11905: 0x8856, - 22325 - 11905: 0x8857, - 22326 - 11905: 0x8858, - 22327 - 11905: 0x8859, - 22328 - 11905: 0x885A, - 22329 - 11905: 0xDBDB, - 22330 - 11905: 0xB3A1, - 22331 - 11905: 0xDBDF, - 22332 - 11905: 0x885B, - 22333 - 11905: 0x885C, - 22334 - 11905: 0xBBF8, - 22335 - 11905: 0x885D, - 22336 - 11905: 0xD6B7, - 22337 - 11905: 0x885E, - 22338 - 11905: 0xDBE0, - 22339 - 11905: 0x885F, - 22340 - 11905: 0x8860, - 22341 - 11905: 0x8861, - 22342 - 11905: 0x8862, - 22343 - 11905: 0xBEF9, - 22344 - 11905: 0x8863, - 22345 - 11905: 0x8864, - 22346 - 11905: 0xB7BB, - 22347 - 11905: 0x8865, - 22348 - 11905: 0xDBD0, - 22349 - 11905: 0xCCAE, - 22350 - 11905: 0xBFB2, - 22351 - 11905: 0xBBB5, - 22352 - 11905: 0xD7F8, - 22353 - 11905: 0xBFD3, - 22354 - 11905: 0x8866, - 22355 - 11905: 0x8867, - 22356 - 11905: 0x8868, - 22357 - 11905: 0x8869, - 22358 - 11905: 0x886A, - 22359 - 11905: 0xBFE9, - 22360 - 11905: 0x886B, - 22361 - 11905: 0x886C, - 22362 - 11905: 0xBCE1, - 22363 - 11905: 0xCCB3, - 22364 - 11905: 0xDBDE, - 22365 - 11905: 0xB0D3, - 22366 - 11905: 0xCEEB, - 22367 - 11905: 0xB7D8, - 22368 - 11905: 0xD7B9, - 22369 - 11905: 0xC6C2, - 22370 - 11905: 0x886D, - 22371 - 11905: 0x886E, - 22372 - 11905: 0xC0A4, - 22373 - 11905: 0x886F, - 22374 - 11905: 0xCCB9, - 22375 - 11905: 0x8870, - 22376 - 11905: 0xDBE7, - 22377 - 11905: 0xDBE1, - 22378 - 11905: 0xC6BA, - 22379 - 11905: 0xDBE3, - 22380 - 11905: 0x8871, - 22381 - 11905: 0xDBE8, - 22382 - 11905: 0x8872, - 22383 - 11905: 0xC5F7, - 22384 - 11905: 0x8873, - 22385 - 11905: 0x8874, - 22386 - 11905: 0x8875, - 22387 - 11905: 0xDBEA, - 22388 - 11905: 0x8876, - 22389 - 11905: 0x8877, - 22390 - 11905: 0xDBE9, - 22391 - 11905: 0xBFC0, - 22392 - 11905: 0x8878, - 22393 - 11905: 0x8879, - 22394 - 11905: 0x887A, - 22395 - 11905: 0xDBE6, - 22396 - 11905: 0xDBE5, - 22397 - 11905: 0x887B, - 22398 - 11905: 0x887C, - 22399 - 11905: 0x887D, - 22400 - 11905: 0x887E, - 22401 - 11905: 0x8880, - 22402 - 11905: 0xB4B9, - 22403 - 11905: 0xC0AC, - 22404 - 11905: 0xC2A2, - 22405 - 11905: 0xDBE2, - 22406 - 11905: 0xDBE4, - 22407 - 11905: 0x8881, - 22408 - 11905: 0x8882, - 22409 - 11905: 0x8883, - 22410 - 11905: 0x8884, - 22411 - 11905: 0xD0CD, - 22412 - 11905: 0xDBED, - 22413 - 11905: 0x8885, - 22414 - 11905: 0x8886, - 22415 - 11905: 0x8887, - 22416 - 11905: 0x8888, - 22417 - 11905: 0x8889, - 22418 - 11905: 0xC0DD, - 22419 - 11905: 0xDBF2, - 22420 - 11905: 0x888A, - 22421 - 11905: 0x888B, - 22422 - 11905: 0x888C, - 22423 - 11905: 0x888D, - 22424 - 11905: 0x888E, - 22425 - 11905: 0x888F, - 22426 - 11905: 0x8890, - 22427 - 11905: 0xB6E2, - 22428 - 11905: 0x8891, - 22429 - 11905: 0x8892, - 22430 - 11905: 0x8893, - 22431 - 11905: 0x8894, - 22432 - 11905: 0xDBF3, - 22433 - 11905: 0xDBD2, - 22434 - 11905: 0xB9B8, - 22435 - 11905: 0xD4AB, - 22436 - 11905: 0xDBEC, - 22437 - 11905: 0x8895, - 22438 - 11905: 0xBFD1, - 22439 - 11905: 0xDBF0, - 22440 - 11905: 0x8896, - 22441 - 11905: 0xDBD1, - 22442 - 11905: 0x8897, - 22443 - 11905: 0xB5E6, - 22444 - 11905: 0x8898, - 22445 - 11905: 0xDBEB, - 22446 - 11905: 0xBFE5, - 22447 - 11905: 0x8899, - 22448 - 11905: 0x889A, - 22449 - 11905: 0x889B, - 22450 - 11905: 0xDBEE, - 22451 - 11905: 0x889C, - 22452 - 11905: 0xDBF1, - 22453 - 11905: 0x889D, - 22454 - 11905: 0x889E, - 22455 - 11905: 0x889F, - 22456 - 11905: 0xDBF9, - 22457 - 11905: 0x88A0, - 22458 - 11905: 0x88A1, - 22459 - 11905: 0x88A2, - 22460 - 11905: 0x88A3, - 22461 - 11905: 0x88A4, - 22462 - 11905: 0x88A5, - 22463 - 11905: 0x88A6, - 22464 - 11905: 0x88A7, - 22465 - 11905: 0x88A8, - 22466 - 11905: 0xB9A1, - 22467 - 11905: 0xB0A3, - 22468 - 11905: 0x88A9, - 22469 - 11905: 0x88AA, - 22470 - 11905: 0x88AB, - 22471 - 11905: 0x88AC, - 22472 - 11905: 0x88AD, - 22473 - 11905: 0x88AE, - 22474 - 11905: 0x88AF, - 22475 - 11905: 0xC2F1, - 22476 - 11905: 0x88B0, - 22477 - 11905: 0x88B1, - 22478 - 11905: 0xB3C7, - 22479 - 11905: 0xDBEF, - 22480 - 11905: 0x88B2, - 22481 - 11905: 0x88B3, - 22482 - 11905: 0xDBF8, - 22483 - 11905: 0x88B4, - 22484 - 11905: 0xC6D2, - 22485 - 11905: 0xDBF4, - 22486 - 11905: 0x88B5, - 22487 - 11905: 0x88B6, - 22488 - 11905: 0xDBF5, - 22489 - 11905: 0xDBF7, - 22490 - 11905: 0xDBF6, - 22491 - 11905: 0x88B7, - 22492 - 11905: 0x88B8, - 22493 - 11905: 0xDBFE, - 22494 - 11905: 0x88B9, - 22495 - 11905: 0xD3F2, - 22496 - 11905: 0xB2BA, - 22497 - 11905: 0x88BA, - 22498 - 11905: 0x88BB, - 22499 - 11905: 0x88BC, - 22500 - 11905: 0xDBFD, - 22501 - 11905: 0x88BD, - 22502 - 11905: 0x88BE, - 22503 - 11905: 0x88BF, - 22504 - 11905: 0x88C0, - 22505 - 11905: 0x88C1, - 22506 - 11905: 0x88C2, - 22507 - 11905: 0x88C3, - 22508 - 11905: 0x88C4, - 22509 - 11905: 0xDCA4, - 22510 - 11905: 0x88C5, - 22511 - 11905: 0xDBFB, - 22512 - 11905: 0x88C6, - 22513 - 11905: 0x88C7, - 22514 - 11905: 0x88C8, - 22515 - 11905: 0x88C9, - 22516 - 11905: 0xDBFA, - 22517 - 11905: 0x88CA, - 22518 - 11905: 0x88CB, - 22519 - 11905: 0x88CC, - 22520 - 11905: 0xDBFC, - 22521 - 11905: 0xC5E0, - 22522 - 11905: 0xBBF9, - 22523 - 11905: 0x88CD, - 22524 - 11905: 0x88CE, - 22525 - 11905: 0xDCA3, - 22526 - 11905: 0x88CF, - 22527 - 11905: 0x88D0, - 22528 - 11905: 0xDCA5, - 22529 - 11905: 0x88D1, - 22530 - 11905: 0xCCC3, - 22531 - 11905: 0x88D2, - 22532 - 11905: 0x88D3, - 22533 - 11905: 0x88D4, - 22534 - 11905: 0xB6D1, - 22535 - 11905: 0xDDC0, - 22536 - 11905: 0x88D5, - 22537 - 11905: 0x88D6, - 22538 - 11905: 0x88D7, - 22539 - 11905: 0xDCA1, - 22540 - 11905: 0x88D8, - 22541 - 11905: 0xDCA2, - 22542 - 11905: 0x88D9, - 22543 - 11905: 0x88DA, - 22544 - 11905: 0x88DB, - 22545 - 11905: 0xC7B5, - 22546 - 11905: 0x88DC, - 22547 - 11905: 0x88DD, - 22548 - 11905: 0x88DE, - 22549 - 11905: 0xB6E9, - 22550 - 11905: 0x88DF, - 22551 - 11905: 0x88E0, - 22552 - 11905: 0x88E1, - 22553 - 11905: 0xDCA7, - 22554 - 11905: 0x88E2, - 22555 - 11905: 0x88E3, - 22556 - 11905: 0x88E4, - 22557 - 11905: 0x88E5, - 22558 - 11905: 0xDCA6, - 22559 - 11905: 0x88E6, - 22560 - 11905: 0xDCA9, - 22561 - 11905: 0xB1A4, - 22562 - 11905: 0x88E7, - 22563 - 11905: 0x88E8, - 22564 - 11905: 0xB5CC, - 22565 - 11905: 0x88E9, - 22566 - 11905: 0x88EA, - 22567 - 11905: 0x88EB, - 22568 - 11905: 0x88EC, - 22569 - 11905: 0x88ED, - 22570 - 11905: 0xBFB0, - 22571 - 11905: 0x88EE, - 22572 - 11905: 0x88EF, - 22573 - 11905: 0x88F0, - 22574 - 11905: 0x88F1, - 22575 - 11905: 0x88F2, - 22576 - 11905: 0xD1DF, - 22577 - 11905: 0x88F3, - 22578 - 11905: 0x88F4, - 22579 - 11905: 0x88F5, - 22580 - 11905: 0x88F6, - 22581 - 11905: 0xB6C2, - 22582 - 11905: 0x88F7, - 22583 - 11905: 0x88F8, - 22584 - 11905: 0x88F9, - 22585 - 11905: 0x88FA, - 22586 - 11905: 0x88FB, - 22587 - 11905: 0x88FC, - 22588 - 11905: 0x88FD, - 22589 - 11905: 0x88FE, - 22590 - 11905: 0x8940, - 22591 - 11905: 0x8941, - 22592 - 11905: 0x8942, - 22593 - 11905: 0x8943, - 22594 - 11905: 0x8944, - 22595 - 11905: 0x8945, - 22596 - 11905: 0xDCA8, - 22597 - 11905: 0x8946, - 22598 - 11905: 0x8947, - 22599 - 11905: 0x8948, - 22600 - 11905: 0x8949, - 22601 - 11905: 0x894A, - 22602 - 11905: 0x894B, - 22603 - 11905: 0x894C, - 22604 - 11905: 0xCBFA, - 22605 - 11905: 0xEBF3, - 22606 - 11905: 0x894D, - 22607 - 11905: 0x894E, - 22608 - 11905: 0x894F, - 22609 - 11905: 0xCBDC, - 22610 - 11905: 0x8950, - 22611 - 11905: 0x8951, - 22612 - 11905: 0xCBFE, - 22613 - 11905: 0x8952, - 22614 - 11905: 0x8953, - 22615 - 11905: 0x8954, - 22616 - 11905: 0xCCC1, - 22617 - 11905: 0x8955, - 22618 - 11905: 0x8956, - 22619 - 11905: 0x8957, - 22620 - 11905: 0x8958, - 22621 - 11905: 0x8959, - 22622 - 11905: 0xC8FB, - 22623 - 11905: 0x895A, - 22624 - 11905: 0x895B, - 22625 - 11905: 0x895C, - 22626 - 11905: 0x895D, - 22627 - 11905: 0x895E, - 22628 - 11905: 0x895F, - 22629 - 11905: 0xDCAA, - 22630 - 11905: 0x8960, - 22631 - 11905: 0x8961, - 22632 - 11905: 0x8962, - 22633 - 11905: 0x8963, - 22634 - 11905: 0x8964, - 22635 - 11905: 0xCCEE, - 22636 - 11905: 0xDCAB, - 22637 - 11905: 0x8965, - 22638 - 11905: 0x8966, - 22639 - 11905: 0x8967, - 22640 - 11905: 0x8968, - 22641 - 11905: 0x8969, - 22642 - 11905: 0x896A, - 22643 - 11905: 0x896B, - 22644 - 11905: 0x896C, - 22645 - 11905: 0x896D, - 22646 - 11905: 0x896E, - 22647 - 11905: 0x896F, - 22648 - 11905: 0x8970, - 22649 - 11905: 0x8971, - 22650 - 11905: 0x8972, - 22651 - 11905: 0x8973, - 22652 - 11905: 0x8974, - 22653 - 11905: 0x8975, - 22654 - 11905: 0xDBD3, - 22655 - 11905: 0x8976, - 22656 - 11905: 0xDCAF, - 22657 - 11905: 0xDCAC, - 22658 - 11905: 0x8977, - 22659 - 11905: 0xBEB3, - 22660 - 11905: 0x8978, - 22661 - 11905: 0xCAFB, - 22662 - 11905: 0x8979, - 22663 - 11905: 0x897A, - 22664 - 11905: 0x897B, - 22665 - 11905: 0xDCAD, - 22666 - 11905: 0x897C, - 22667 - 11905: 0x897D, - 22668 - 11905: 0x897E, - 22669 - 11905: 0x8980, - 22670 - 11905: 0x8981, - 22671 - 11905: 0x8982, - 22672 - 11905: 0x8983, - 22673 - 11905: 0x8984, - 22674 - 11905: 0xC9CA, - 22675 - 11905: 0xC4B9, - 22676 - 11905: 0x8985, - 22677 - 11905: 0x8986, - 22678 - 11905: 0x8987, - 22679 - 11905: 0x8988, - 22680 - 11905: 0x8989, - 22681 - 11905: 0xC7BD, - 22682 - 11905: 0xDCAE, - 22683 - 11905: 0x898A, - 22684 - 11905: 0x898B, - 22685 - 11905: 0x898C, - 22686 - 11905: 0xD4F6, - 22687 - 11905: 0xD0E6, - 22688 - 11905: 0x898D, - 22689 - 11905: 0x898E, - 22690 - 11905: 0x898F, - 22691 - 11905: 0x8990, - 22692 - 11905: 0x8991, - 22693 - 11905: 0x8992, - 22694 - 11905: 0x8993, - 22695 - 11905: 0x8994, - 22696 - 11905: 0xC4AB, - 22697 - 11905: 0xB6D5, - 22698 - 11905: 0x8995, - 22699 - 11905: 0x8996, - 22700 - 11905: 0x8997, - 22701 - 11905: 0x8998, - 22702 - 11905: 0x8999, - 22703 - 11905: 0x899A, - 22704 - 11905: 0x899B, - 22705 - 11905: 0x899C, - 22706 - 11905: 0x899D, - 22707 - 11905: 0x899E, - 22708 - 11905: 0x899F, - 22709 - 11905: 0x89A0, - 22710 - 11905: 0x89A1, - 22711 - 11905: 0x89A2, - 22712 - 11905: 0x89A3, - 22713 - 11905: 0x89A4, - 22714 - 11905: 0x89A5, - 22715 - 11905: 0x89A6, - 22716 - 11905: 0xDBD4, - 22717 - 11905: 0x89A7, - 22718 - 11905: 0x89A8, - 22719 - 11905: 0x89A9, - 22720 - 11905: 0x89AA, - 22721 - 11905: 0xB1DA, - 22722 - 11905: 0x89AB, - 22723 - 11905: 0x89AC, - 22724 - 11905: 0x89AD, - 22725 - 11905: 0xDBD5, - 22726 - 11905: 0x89AE, - 22727 - 11905: 0x89AF, - 22728 - 11905: 0x89B0, - 22729 - 11905: 0x89B1, - 22730 - 11905: 0x89B2, - 22731 - 11905: 0x89B3, - 22732 - 11905: 0x89B4, - 22733 - 11905: 0x89B5, - 22734 - 11905: 0x89B6, - 22735 - 11905: 0x89B7, - 22736 - 11905: 0x89B8, - 22737 - 11905: 0xDBD6, - 22738 - 11905: 0x89B9, - 22739 - 11905: 0x89BA, - 22740 - 11905: 0x89BB, - 22741 - 11905: 0xBABE, - 22742 - 11905: 0x89BC, - 22743 - 11905: 0x89BD, - 22744 - 11905: 0x89BE, - 22745 - 11905: 0x89BF, - 22746 - 11905: 0x89C0, - 22747 - 11905: 0x89C1, - 22748 - 11905: 0x89C2, - 22749 - 11905: 0x89C3, - 22750 - 11905: 0x89C4, - 22751 - 11905: 0x89C5, - 22752 - 11905: 0x89C6, - 22753 - 11905: 0x89C7, - 22754 - 11905: 0x89C8, - 22755 - 11905: 0x89C9, - 22756 - 11905: 0xC8C0, - 22757 - 11905: 0x89CA, - 22758 - 11905: 0x89CB, - 22759 - 11905: 0x89CC, - 22760 - 11905: 0x89CD, - 22761 - 11905: 0x89CE, - 22762 - 11905: 0x89CF, - 22763 - 11905: 0xCABF, - 22764 - 11905: 0xC8C9, - 22765 - 11905: 0x89D0, - 22766 - 11905: 0xD7B3, - 22767 - 11905: 0x89D1, - 22768 - 11905: 0xC9F9, - 22769 - 11905: 0x89D2, - 22770 - 11905: 0x89D3, - 22771 - 11905: 0xBFC7, - 22772 - 11905: 0x89D4, - 22773 - 11905: 0x89D5, - 22774 - 11905: 0xBAF8, - 22775 - 11905: 0x89D6, - 22776 - 11905: 0x89D7, - 22777 - 11905: 0xD2BC, - 22778 - 11905: 0x89D8, - 22779 - 11905: 0x89D9, - 22780 - 11905: 0x89DA, - 22781 - 11905: 0x89DB, - 22782 - 11905: 0x89DC, - 22783 - 11905: 0x89DD, - 22784 - 11905: 0x89DE, - 22785 - 11905: 0x89DF, - 22786 - 11905: 0xE2BA, - 22787 - 11905: 0x89E0, - 22788 - 11905: 0xB4A6, - 22789 - 11905: 0x89E1, - 22790 - 11905: 0x89E2, - 22791 - 11905: 0xB1B8, - 22792 - 11905: 0x89E3, - 22793 - 11905: 0x89E4, - 22794 - 11905: 0x89E5, - 22795 - 11905: 0x89E6, - 22796 - 11905: 0x89E7, - 22797 - 11905: 0xB8B4, - 22798 - 11905: 0x89E8, - 22799 - 11905: 0xCFC4, - 22800 - 11905: 0x89E9, - 22801 - 11905: 0x89EA, - 22802 - 11905: 0x89EB, - 22803 - 11905: 0x89EC, - 22804 - 11905: 0xD9E7, - 22805 - 11905: 0xCFA6, - 22806 - 11905: 0xCDE2, - 22807 - 11905: 0x89ED, - 22808 - 11905: 0x89EE, - 22809 - 11905: 0xD9ED, - 22810 - 11905: 0xB6E0, - 22811 - 11905: 0x89EF, - 22812 - 11905: 0xD2B9, - 22813 - 11905: 0x89F0, - 22814 - 11905: 0x89F1, - 22815 - 11905: 0xB9BB, - 22816 - 11905: 0x89F2, - 22817 - 11905: 0x89F3, - 22818 - 11905: 0x89F4, - 22819 - 11905: 0x89F5, - 22820 - 11905: 0xE2B9, - 22821 - 11905: 0xE2B7, - 22822 - 11905: 0x89F6, - 22823 - 11905: 0xB4F3, - 22824 - 11905: 0x89F7, - 22825 - 11905: 0xCCEC, - 22826 - 11905: 0xCCAB, - 22827 - 11905: 0xB7F2, - 22828 - 11905: 0x89F8, - 22829 - 11905: 0xD8B2, - 22830 - 11905: 0xD1EB, - 22831 - 11905: 0xBABB, - 22832 - 11905: 0x89F9, - 22833 - 11905: 0xCAA7, - 22834 - 11905: 0x89FA, - 22835 - 11905: 0x89FB, - 22836 - 11905: 0xCDB7, - 22837 - 11905: 0x89FC, - 22838 - 11905: 0x89FD, - 22839 - 11905: 0xD2C4, - 22840 - 11905: 0xBFE4, - 22841 - 11905: 0xBCD0, - 22842 - 11905: 0xB6E1, - 22843 - 11905: 0x89FE, - 22844 - 11905: 0xDEC5, - 22845 - 11905: 0x8A40, - 22846 - 11905: 0x8A41, - 22847 - 11905: 0x8A42, - 22848 - 11905: 0x8A43, - 22849 - 11905: 0xDEC6, - 22850 - 11905: 0xDBBC, - 22851 - 11905: 0x8A44, - 22852 - 11905: 0xD1D9, - 22853 - 11905: 0x8A45, - 22854 - 11905: 0x8A46, - 22855 - 11905: 0xC6E6, - 22856 - 11905: 0xC4CE, - 22857 - 11905: 0xB7EE, - 22858 - 11905: 0x8A47, - 22859 - 11905: 0xB7DC, - 22860 - 11905: 0x8A48, - 22861 - 11905: 0x8A49, - 22862 - 11905: 0xBFFC, - 22863 - 11905: 0xD7E0, - 22864 - 11905: 0x8A4A, - 22865 - 11905: 0xC6F5, - 22866 - 11905: 0x8A4B, - 22867 - 11905: 0x8A4C, - 22868 - 11905: 0xB1BC, - 22869 - 11905: 0xDEC8, - 22870 - 11905: 0xBDB1, - 22871 - 11905: 0xCCD7, - 22872 - 11905: 0xDECA, - 22873 - 11905: 0x8A4D, - 22874 - 11905: 0xDEC9, - 22875 - 11905: 0x8A4E, - 22876 - 11905: 0x8A4F, - 22877 - 11905: 0x8A50, - 22878 - 11905: 0x8A51, - 22879 - 11905: 0x8A52, - 22880 - 11905: 0xB5EC, - 22881 - 11905: 0x8A53, - 22882 - 11905: 0xC9DD, - 22883 - 11905: 0x8A54, - 22884 - 11905: 0x8A55, - 22885 - 11905: 0xB0C2, - 22886 - 11905: 0x8A56, - 22887 - 11905: 0x8A57, - 22888 - 11905: 0x8A58, - 22889 - 11905: 0x8A59, - 22890 - 11905: 0x8A5A, - 22891 - 11905: 0x8A5B, - 22892 - 11905: 0x8A5C, - 22893 - 11905: 0x8A5D, - 22894 - 11905: 0x8A5E, - 22895 - 11905: 0x8A5F, - 22896 - 11905: 0x8A60, - 22897 - 11905: 0x8A61, - 22898 - 11905: 0x8A62, - 22899 - 11905: 0xC5AE, - 22900 - 11905: 0xC5AB, - 22901 - 11905: 0x8A63, - 22902 - 11905: 0xC4CC, - 22903 - 11905: 0x8A64, - 22904 - 11905: 0xBCE9, - 22905 - 11905: 0xCBFD, - 22906 - 11905: 0x8A65, - 22907 - 11905: 0x8A66, - 22908 - 11905: 0x8A67, - 22909 - 11905: 0xBAC3, - 22910 - 11905: 0x8A68, - 22911 - 11905: 0x8A69, - 22912 - 11905: 0x8A6A, - 22913 - 11905: 0xE5F9, - 22914 - 11905: 0xC8E7, - 22915 - 11905: 0xE5FA, - 22916 - 11905: 0xCDFD, - 22917 - 11905: 0x8A6B, - 22918 - 11905: 0xD7B1, - 22919 - 11905: 0xB8BE, - 22920 - 11905: 0xC2E8, - 22921 - 11905: 0x8A6C, - 22922 - 11905: 0xC8D1, - 22923 - 11905: 0x8A6D, - 22924 - 11905: 0x8A6E, - 22925 - 11905: 0xE5FB, - 22926 - 11905: 0x8A6F, - 22927 - 11905: 0x8A70, - 22928 - 11905: 0x8A71, - 22929 - 11905: 0x8A72, - 22930 - 11905: 0xB6CA, - 22931 - 11905: 0xBCCB, - 22932 - 11905: 0x8A73, - 22933 - 11905: 0x8A74, - 22934 - 11905: 0xD1FD, - 22935 - 11905: 0xE6A1, - 22936 - 11905: 0x8A75, - 22937 - 11905: 0xC3EE, - 22938 - 11905: 0x8A76, - 22939 - 11905: 0x8A77, - 22940 - 11905: 0x8A78, - 22941 - 11905: 0x8A79, - 22942 - 11905: 0xE6A4, - 22943 - 11905: 0x8A7A, - 22944 - 11905: 0x8A7B, - 22945 - 11905: 0x8A7C, - 22946 - 11905: 0x8A7D, - 22947 - 11905: 0xE5FE, - 22948 - 11905: 0xE6A5, - 22949 - 11905: 0xCDD7, - 22950 - 11905: 0x8A7E, - 22951 - 11905: 0x8A80, - 22952 - 11905: 0xB7C1, - 22953 - 11905: 0xE5FC, - 22954 - 11905: 0xE5FD, - 22955 - 11905: 0xE6A3, - 22956 - 11905: 0x8A81, - 22957 - 11905: 0x8A82, - 22958 - 11905: 0xC4DD, - 22959 - 11905: 0xE6A8, - 22960 - 11905: 0x8A83, - 22961 - 11905: 0x8A84, - 22962 - 11905: 0xE6A7, - 22963 - 11905: 0x8A85, - 22964 - 11905: 0x8A86, - 22965 - 11905: 0x8A87, - 22966 - 11905: 0x8A88, - 22967 - 11905: 0x8A89, - 22968 - 11905: 0x8A8A, - 22969 - 11905: 0xC3C3, - 22970 - 11905: 0x8A8B, - 22971 - 11905: 0xC6DE, - 22972 - 11905: 0x8A8C, - 22973 - 11905: 0x8A8D, - 22974 - 11905: 0xE6AA, - 22975 - 11905: 0x8A8E, - 22976 - 11905: 0x8A8F, - 22977 - 11905: 0x8A90, - 22978 - 11905: 0x8A91, - 22979 - 11905: 0x8A92, - 22980 - 11905: 0x8A93, - 22981 - 11905: 0x8A94, - 22982 - 11905: 0xC4B7, - 22983 - 11905: 0x8A95, - 22984 - 11905: 0x8A96, - 22985 - 11905: 0x8A97, - 22986 - 11905: 0xE6A2, - 22987 - 11905: 0xCABC, - 22988 - 11905: 0x8A98, - 22989 - 11905: 0x8A99, - 22990 - 11905: 0x8A9A, - 22991 - 11905: 0x8A9B, - 22992 - 11905: 0xBDE3, - 22993 - 11905: 0xB9C3, - 22994 - 11905: 0xE6A6, - 22995 - 11905: 0xD0D5, - 22996 - 11905: 0xCEAF, - 22997 - 11905: 0x8A9C, - 22998 - 11905: 0x8A9D, - 22999 - 11905: 0xE6A9, - 23000 - 11905: 0xE6B0, - 23001 - 11905: 0x8A9E, - 23002 - 11905: 0xD2A6, - 23003 - 11905: 0x8A9F, - 23004 - 11905: 0xBDAA, - 23005 - 11905: 0xE6AD, - 23006 - 11905: 0x8AA0, - 23007 - 11905: 0x8AA1, - 23008 - 11905: 0x8AA2, - 23009 - 11905: 0x8AA3, - 23010 - 11905: 0x8AA4, - 23011 - 11905: 0xE6AF, - 23012 - 11905: 0x8AA5, - 23013 - 11905: 0xC0D1, - 23014 - 11905: 0x8AA6, - 23015 - 11905: 0x8AA7, - 23016 - 11905: 0xD2CC, - 23017 - 11905: 0x8AA8, - 23018 - 11905: 0x8AA9, - 23019 - 11905: 0x8AAA, - 23020 - 11905: 0xBCA7, - 23021 - 11905: 0x8AAB, - 23022 - 11905: 0x8AAC, - 23023 - 11905: 0x8AAD, - 23024 - 11905: 0x8AAE, - 23025 - 11905: 0x8AAF, - 23026 - 11905: 0x8AB0, - 23027 - 11905: 0x8AB1, - 23028 - 11905: 0x8AB2, - 23029 - 11905: 0x8AB3, - 23030 - 11905: 0x8AB4, - 23031 - 11905: 0x8AB5, - 23032 - 11905: 0x8AB6, - 23033 - 11905: 0xE6B1, - 23034 - 11905: 0x8AB7, - 23035 - 11905: 0xD2F6, - 23036 - 11905: 0x8AB8, - 23037 - 11905: 0x8AB9, - 23038 - 11905: 0x8ABA, - 23039 - 11905: 0xD7CB, - 23040 - 11905: 0x8ABB, - 23041 - 11905: 0xCDFE, - 23042 - 11905: 0x8ABC, - 23043 - 11905: 0xCDDE, - 23044 - 11905: 0xC2A6, - 23045 - 11905: 0xE6AB, - 23046 - 11905: 0xE6AC, - 23047 - 11905: 0xBDBF, - 23048 - 11905: 0xE6AE, - 23049 - 11905: 0xE6B3, - 23050 - 11905: 0x8ABD, - 23051 - 11905: 0x8ABE, - 23052 - 11905: 0xE6B2, - 23053 - 11905: 0x8ABF, - 23054 - 11905: 0x8AC0, - 23055 - 11905: 0x8AC1, - 23056 - 11905: 0x8AC2, - 23057 - 11905: 0xE6B6, - 23058 - 11905: 0x8AC3, - 23059 - 11905: 0xE6B8, - 23060 - 11905: 0x8AC4, - 23061 - 11905: 0x8AC5, - 23062 - 11905: 0x8AC6, - 23063 - 11905: 0x8AC7, - 23064 - 11905: 0xC4EF, - 23065 - 11905: 0x8AC8, - 23066 - 11905: 0x8AC9, - 23067 - 11905: 0x8ACA, - 23068 - 11905: 0xC4C8, - 23069 - 11905: 0x8ACB, - 23070 - 11905: 0x8ACC, - 23071 - 11905: 0xBEEA, - 23072 - 11905: 0xC9EF, - 23073 - 11905: 0x8ACD, - 23074 - 11905: 0x8ACE, - 23075 - 11905: 0xE6B7, - 23076 - 11905: 0x8ACF, - 23077 - 11905: 0xB6F0, - 23078 - 11905: 0x8AD0, - 23079 - 11905: 0x8AD1, - 23080 - 11905: 0x8AD2, - 23081 - 11905: 0xC3E4, - 23082 - 11905: 0x8AD3, - 23083 - 11905: 0x8AD4, - 23084 - 11905: 0x8AD5, - 23085 - 11905: 0x8AD6, - 23086 - 11905: 0x8AD7, - 23087 - 11905: 0x8AD8, - 23088 - 11905: 0x8AD9, - 23089 - 11905: 0xD3E9, - 23090 - 11905: 0xE6B4, - 23091 - 11905: 0x8ADA, - 23092 - 11905: 0xE6B5, - 23093 - 11905: 0x8ADB, - 23094 - 11905: 0xC8A2, - 23095 - 11905: 0x8ADC, - 23096 - 11905: 0x8ADD, - 23097 - 11905: 0x8ADE, - 23098 - 11905: 0x8ADF, - 23099 - 11905: 0x8AE0, - 23100 - 11905: 0xE6BD, - 23101 - 11905: 0x8AE1, - 23102 - 11905: 0x8AE2, - 23103 - 11905: 0x8AE3, - 23104 - 11905: 0xE6B9, - 23105 - 11905: 0x8AE4, - 23106 - 11905: 0x8AE5, - 23107 - 11905: 0x8AE6, - 23108 - 11905: 0x8AE7, - 23109 - 11905: 0x8AE8, - 23110 - 11905: 0xC6C5, - 23111 - 11905: 0x8AE9, - 23112 - 11905: 0x8AEA, - 23113 - 11905: 0xCDF1, - 23114 - 11905: 0xE6BB, - 23115 - 11905: 0x8AEB, - 23116 - 11905: 0x8AEC, - 23117 - 11905: 0x8AED, - 23118 - 11905: 0x8AEE, - 23119 - 11905: 0x8AEF, - 23120 - 11905: 0x8AF0, - 23121 - 11905: 0x8AF1, - 23122 - 11905: 0x8AF2, - 23123 - 11905: 0x8AF3, - 23124 - 11905: 0x8AF4, - 23125 - 11905: 0xE6BC, - 23126 - 11905: 0x8AF5, - 23127 - 11905: 0x8AF6, - 23128 - 11905: 0x8AF7, - 23129 - 11905: 0x8AF8, - 23130 - 11905: 0xBBE9, - 23131 - 11905: 0x8AF9, - 23132 - 11905: 0x8AFA, - 23133 - 11905: 0x8AFB, - 23134 - 11905: 0x8AFC, - 23135 - 11905: 0x8AFD, - 23136 - 11905: 0x8AFE, - 23137 - 11905: 0x8B40, - 23138 - 11905: 0xE6BE, - 23139 - 11905: 0x8B41, - 23140 - 11905: 0x8B42, - 23141 - 11905: 0x8B43, - 23142 - 11905: 0x8B44, - 23143 - 11905: 0xE6BA, - 23144 - 11905: 0x8B45, - 23145 - 11905: 0x8B46, - 23146 - 11905: 0xC0B7, - 23147 - 11905: 0x8B47, - 23148 - 11905: 0x8B48, - 23149 - 11905: 0x8B49, - 23150 - 11905: 0x8B4A, - 23151 - 11905: 0x8B4B, - 23152 - 11905: 0x8B4C, - 23153 - 11905: 0x8B4D, - 23154 - 11905: 0x8B4E, - 23155 - 11905: 0x8B4F, - 23156 - 11905: 0xD3A4, - 23157 - 11905: 0xE6BF, - 23158 - 11905: 0xC9F4, - 23159 - 11905: 0xE6C3, - 23160 - 11905: 0x8B50, - 23161 - 11905: 0x8B51, - 23162 - 11905: 0xE6C4, - 23163 - 11905: 0x8B52, - 23164 - 11905: 0x8B53, - 23165 - 11905: 0x8B54, - 23166 - 11905: 0x8B55, - 23167 - 11905: 0xD0F6, - 23168 - 11905: 0x8B56, - 23169 - 11905: 0x8B57, - 23170 - 11905: 0x8B58, - 23171 - 11905: 0x8B59, - 23172 - 11905: 0x8B5A, - 23173 - 11905: 0x8B5B, - 23174 - 11905: 0x8B5C, - 23175 - 11905: 0x8B5D, - 23176 - 11905: 0x8B5E, - 23177 - 11905: 0x8B5F, - 23178 - 11905: 0x8B60, - 23179 - 11905: 0x8B61, - 23180 - 11905: 0x8B62, - 23181 - 11905: 0x8B63, - 23182 - 11905: 0x8B64, - 23183 - 11905: 0x8B65, - 23184 - 11905: 0x8B66, - 23185 - 11905: 0x8B67, - 23186 - 11905: 0xC3BD, - 23187 - 11905: 0x8B68, - 23188 - 11905: 0x8B69, - 23189 - 11905: 0x8B6A, - 23190 - 11905: 0x8B6B, - 23191 - 11905: 0x8B6C, - 23192 - 11905: 0x8B6D, - 23193 - 11905: 0x8B6E, - 23194 - 11905: 0xC3C4, - 23195 - 11905: 0xE6C2, - 23196 - 11905: 0x8B6F, - 23197 - 11905: 0x8B70, - 23198 - 11905: 0x8B71, - 23199 - 11905: 0x8B72, - 23200 - 11905: 0x8B73, - 23201 - 11905: 0x8B74, - 23202 - 11905: 0x8B75, - 23203 - 11905: 0x8B76, - 23204 - 11905: 0x8B77, - 23205 - 11905: 0x8B78, - 23206 - 11905: 0x8B79, - 23207 - 11905: 0x8B7A, - 23208 - 11905: 0x8B7B, - 23209 - 11905: 0x8B7C, - 23210 - 11905: 0xE6C1, - 23211 - 11905: 0x8B7D, - 23212 - 11905: 0x8B7E, - 23213 - 11905: 0x8B80, - 23214 - 11905: 0x8B81, - 23215 - 11905: 0x8B82, - 23216 - 11905: 0x8B83, - 23217 - 11905: 0x8B84, - 23218 - 11905: 0xE6C7, - 23219 - 11905: 0xCFB1, - 23220 - 11905: 0x8B85, - 23221 - 11905: 0xEBF4, - 23222 - 11905: 0x8B86, - 23223 - 11905: 0x8B87, - 23224 - 11905: 0xE6CA, - 23225 - 11905: 0x8B88, - 23226 - 11905: 0x8B89, - 23227 - 11905: 0x8B8A, - 23228 - 11905: 0x8B8B, - 23229 - 11905: 0x8B8C, - 23230 - 11905: 0xE6C5, - 23231 - 11905: 0x8B8D, - 23232 - 11905: 0x8B8E, - 23233 - 11905: 0xBCDE, - 23234 - 11905: 0xC9A9, - 23235 - 11905: 0x8B8F, - 23236 - 11905: 0x8B90, - 23237 - 11905: 0x8B91, - 23238 - 11905: 0x8B92, - 23239 - 11905: 0x8B93, - 23240 - 11905: 0x8B94, - 23241 - 11905: 0xBCB5, - 23242 - 11905: 0x8B95, - 23243 - 11905: 0x8B96, - 23244 - 11905: 0xCFD3, - 23245 - 11905: 0x8B97, - 23246 - 11905: 0x8B98, - 23247 - 11905: 0x8B99, - 23248 - 11905: 0x8B9A, - 23249 - 11905: 0x8B9B, - 23250 - 11905: 0xE6C8, - 23251 - 11905: 0x8B9C, - 23252 - 11905: 0xE6C9, - 23253 - 11905: 0x8B9D, - 23254 - 11905: 0xE6CE, - 23255 - 11905: 0x8B9E, - 23256 - 11905: 0xE6D0, - 23257 - 11905: 0x8B9F, - 23258 - 11905: 0x8BA0, - 23259 - 11905: 0x8BA1, - 23260 - 11905: 0xE6D1, - 23261 - 11905: 0x8BA2, - 23262 - 11905: 0x8BA3, - 23263 - 11905: 0x8BA4, - 23264 - 11905: 0xE6CB, - 23265 - 11905: 0xB5D5, - 23266 - 11905: 0x8BA5, - 23267 - 11905: 0xE6CC, - 23268 - 11905: 0x8BA6, - 23269 - 11905: 0x8BA7, - 23270 - 11905: 0xE6CF, - 23271 - 11905: 0x8BA8, - 23272 - 11905: 0x8BA9, - 23273 - 11905: 0xC4DB, - 23274 - 11905: 0x8BAA, - 23275 - 11905: 0xE6C6, - 23276 - 11905: 0x8BAB, - 23277 - 11905: 0x8BAC, - 23278 - 11905: 0x8BAD, - 23279 - 11905: 0x8BAE, - 23280 - 11905: 0x8BAF, - 23281 - 11905: 0xE6CD, - 23282 - 11905: 0x8BB0, - 23283 - 11905: 0x8BB1, - 23284 - 11905: 0x8BB2, - 23285 - 11905: 0x8BB3, - 23286 - 11905: 0x8BB4, - 23287 - 11905: 0x8BB5, - 23288 - 11905: 0x8BB6, - 23289 - 11905: 0x8BB7, - 23290 - 11905: 0x8BB8, - 23291 - 11905: 0x8BB9, - 23292 - 11905: 0x8BBA, - 23293 - 11905: 0x8BBB, - 23294 - 11905: 0x8BBC, - 23295 - 11905: 0x8BBD, - 23296 - 11905: 0x8BBE, - 23297 - 11905: 0x8BBF, - 23298 - 11905: 0x8BC0, - 23299 - 11905: 0x8BC1, - 23300 - 11905: 0x8BC2, - 23301 - 11905: 0x8BC3, - 23302 - 11905: 0x8BC4, - 23303 - 11905: 0x8BC5, - 23304 - 11905: 0x8BC6, - 23305 - 11905: 0xE6D2, - 23306 - 11905: 0x8BC7, - 23307 - 11905: 0x8BC8, - 23308 - 11905: 0x8BC9, - 23309 - 11905: 0x8BCA, - 23310 - 11905: 0x8BCB, - 23311 - 11905: 0x8BCC, - 23312 - 11905: 0x8BCD, - 23313 - 11905: 0x8BCE, - 23314 - 11905: 0x8BCF, - 23315 - 11905: 0x8BD0, - 23316 - 11905: 0x8BD1, - 23317 - 11905: 0x8BD2, - 23318 - 11905: 0xE6D4, - 23319 - 11905: 0xE6D3, - 23320 - 11905: 0x8BD3, - 23321 - 11905: 0x8BD4, - 23322 - 11905: 0x8BD5, - 23323 - 11905: 0x8BD6, - 23324 - 11905: 0x8BD7, - 23325 - 11905: 0x8BD8, - 23326 - 11905: 0x8BD9, - 23327 - 11905: 0x8BDA, - 23328 - 11905: 0x8BDB, - 23329 - 11905: 0x8BDC, - 23330 - 11905: 0x8BDD, - 23331 - 11905: 0x8BDE, - 23332 - 11905: 0x8BDF, - 23333 - 11905: 0x8BE0, - 23334 - 11905: 0x8BE1, - 23335 - 11905: 0x8BE2, - 23336 - 11905: 0x8BE3, - 23337 - 11905: 0x8BE4, - 23338 - 11905: 0x8BE5, - 23339 - 11905: 0x8BE6, - 23340 - 11905: 0x8BE7, - 23341 - 11905: 0x8BE8, - 23342 - 11905: 0x8BE9, - 23343 - 11905: 0x8BEA, - 23344 - 11905: 0x8BEB, - 23345 - 11905: 0x8BEC, - 23346 - 11905: 0xE6D5, - 23347 - 11905: 0x8BED, - 23348 - 11905: 0xD9F8, - 23349 - 11905: 0x8BEE, - 23350 - 11905: 0x8BEF, - 23351 - 11905: 0xE6D6, - 23352 - 11905: 0x8BF0, - 23353 - 11905: 0x8BF1, - 23354 - 11905: 0x8BF2, - 23355 - 11905: 0x8BF3, - 23356 - 11905: 0x8BF4, - 23357 - 11905: 0x8BF5, - 23358 - 11905: 0x8BF6, - 23359 - 11905: 0x8BF7, - 23360 - 11905: 0xE6D7, - 23361 - 11905: 0x8BF8, - 23362 - 11905: 0x8BF9, - 23363 - 11905: 0x8BFA, - 23364 - 11905: 0x8BFB, - 23365 - 11905: 0x8BFC, - 23366 - 11905: 0x8BFD, - 23367 - 11905: 0x8BFE, - 23368 - 11905: 0x8C40, - 23369 - 11905: 0x8C41, - 23370 - 11905: 0x8C42, - 23371 - 11905: 0x8C43, - 23372 - 11905: 0x8C44, - 23373 - 11905: 0x8C45, - 23374 - 11905: 0x8C46, - 23375 - 11905: 0x8C47, - 23376 - 11905: 0xD7D3, - 23377 - 11905: 0xE6DD, - 23378 - 11905: 0x8C48, - 23379 - 11905: 0xE6DE, - 23380 - 11905: 0xBFD7, - 23381 - 11905: 0xD4D0, - 23382 - 11905: 0x8C49, - 23383 - 11905: 0xD7D6, - 23384 - 11905: 0xB4E6, - 23385 - 11905: 0xCBEF, - 23386 - 11905: 0xE6DA, - 23387 - 11905: 0xD8C3, - 23388 - 11905: 0xD7CE, - 23389 - 11905: 0xD0A2, - 23390 - 11905: 0x8C4A, - 23391 - 11905: 0xC3CF, - 23392 - 11905: 0x8C4B, - 23393 - 11905: 0x8C4C, - 23394 - 11905: 0xE6DF, - 23395 - 11905: 0xBCBE, - 23396 - 11905: 0xB9C2, - 23397 - 11905: 0xE6DB, - 23398 - 11905: 0xD1A7, - 23399 - 11905: 0x8C4D, - 23400 - 11905: 0x8C4E, - 23401 - 11905: 0xBAA2, - 23402 - 11905: 0xC2CF, - 23403 - 11905: 0x8C4F, - 23404 - 11905: 0xD8AB, - 23405 - 11905: 0x8C50, - 23406 - 11905: 0x8C51, - 23407 - 11905: 0x8C52, - 23408 - 11905: 0xCAEB, - 23409 - 11905: 0xE5EE, - 23410 - 11905: 0x8C53, - 23411 - 11905: 0xE6DC, - 23412 - 11905: 0x8C54, - 23413 - 11905: 0xB7F5, - 23414 - 11905: 0x8C55, - 23415 - 11905: 0x8C56, - 23416 - 11905: 0x8C57, - 23417 - 11905: 0x8C58, - 23418 - 11905: 0xC8E6, - 23419 - 11905: 0x8C59, - 23420 - 11905: 0x8C5A, - 23421 - 11905: 0xC4F5, - 23422 - 11905: 0x8C5B, - 23423 - 11905: 0x8C5C, - 23424 - 11905: 0xE5B2, - 23425 - 11905: 0xC4FE, - 23426 - 11905: 0x8C5D, - 23427 - 11905: 0xCBFC, - 23428 - 11905: 0xE5B3, - 23429 - 11905: 0xD5AC, - 23430 - 11905: 0x8C5E, - 23431 - 11905: 0xD3EE, - 23432 - 11905: 0xCAD8, - 23433 - 11905: 0xB0B2, - 23434 - 11905: 0x8C5F, - 23435 - 11905: 0xCBCE, - 23436 - 11905: 0xCDEA, - 23437 - 11905: 0x8C60, - 23438 - 11905: 0x8C61, - 23439 - 11905: 0xBAEA, - 23440 - 11905: 0x8C62, - 23441 - 11905: 0x8C63, - 23442 - 11905: 0x8C64, - 23443 - 11905: 0xE5B5, - 23444 - 11905: 0x8C65, - 23445 - 11905: 0xE5B4, - 23446 - 11905: 0x8C66, - 23447 - 11905: 0xD7DA, - 23448 - 11905: 0xB9D9, - 23449 - 11905: 0xD6E6, - 23450 - 11905: 0xB6A8, - 23451 - 11905: 0xCDF0, - 23452 - 11905: 0xD2CB, - 23453 - 11905: 0xB1A6, - 23454 - 11905: 0xCAB5, - 23455 - 11905: 0x8C67, - 23456 - 11905: 0xB3E8, - 23457 - 11905: 0xC9F3, - 23458 - 11905: 0xBFCD, - 23459 - 11905: 0xD0FB, - 23460 - 11905: 0xCAD2, - 23461 - 11905: 0xE5B6, - 23462 - 11905: 0xBBC2, - 23463 - 11905: 0x8C68, - 23464 - 11905: 0x8C69, - 23465 - 11905: 0x8C6A, - 23466 - 11905: 0xCFDC, - 23467 - 11905: 0xB9AC, - 23468 - 11905: 0x8C6B, - 23469 - 11905: 0x8C6C, - 23470 - 11905: 0x8C6D, - 23471 - 11905: 0x8C6E, - 23472 - 11905: 0xD4D7, - 23473 - 11905: 0x8C6F, - 23474 - 11905: 0x8C70, - 23475 - 11905: 0xBAA6, - 23476 - 11905: 0xD1E7, - 23477 - 11905: 0xCFFC, - 23478 - 11905: 0xBCD2, - 23479 - 11905: 0x8C71, - 23480 - 11905: 0xE5B7, - 23481 - 11905: 0xC8DD, - 23482 - 11905: 0x8C72, - 23483 - 11905: 0x8C73, - 23484 - 11905: 0x8C74, - 23485 - 11905: 0xBFED, - 23486 - 11905: 0xB1F6, - 23487 - 11905: 0xCBDE, - 23488 - 11905: 0x8C75, - 23489 - 11905: 0x8C76, - 23490 - 11905: 0xBCC5, - 23491 - 11905: 0x8C77, - 23492 - 11905: 0xBCC4, - 23493 - 11905: 0xD2FA, - 23494 - 11905: 0xC3DC, - 23495 - 11905: 0xBFDC, - 23496 - 11905: 0x8C78, - 23497 - 11905: 0x8C79, - 23498 - 11905: 0x8C7A, - 23499 - 11905: 0x8C7B, - 23500 - 11905: 0xB8BB, - 23501 - 11905: 0x8C7C, - 23502 - 11905: 0x8C7D, - 23503 - 11905: 0x8C7E, - 23504 - 11905: 0xC3C2, - 23505 - 11905: 0x8C80, - 23506 - 11905: 0xBAAE, - 23507 - 11905: 0xD4A2, - 23508 - 11905: 0x8C81, - 23509 - 11905: 0x8C82, - 23510 - 11905: 0x8C83, - 23511 - 11905: 0x8C84, - 23512 - 11905: 0x8C85, - 23513 - 11905: 0x8C86, - 23514 - 11905: 0x8C87, - 23515 - 11905: 0x8C88, - 23516 - 11905: 0x8C89, - 23517 - 11905: 0xC7DE, - 23518 - 11905: 0xC4AF, - 23519 - 11905: 0xB2EC, - 23520 - 11905: 0x8C8A, - 23521 - 11905: 0xB9D1, - 23522 - 11905: 0x8C8B, - 23523 - 11905: 0x8C8C, - 23524 - 11905: 0xE5BB, - 23525 - 11905: 0xC1C8, - 23526 - 11905: 0x8C8D, - 23527 - 11905: 0x8C8E, - 23528 - 11905: 0xD5AF, - 23529 - 11905: 0x8C8F, - 23530 - 11905: 0x8C90, - 23531 - 11905: 0x8C91, - 23532 - 11905: 0x8C92, - 23533 - 11905: 0x8C93, - 23534 - 11905: 0xE5BC, - 23535 - 11905: 0x8C94, - 23536 - 11905: 0xE5BE, - 23537 - 11905: 0x8C95, - 23538 - 11905: 0x8C96, - 23539 - 11905: 0x8C97, - 23540 - 11905: 0x8C98, - 23541 - 11905: 0x8C99, - 23542 - 11905: 0x8C9A, - 23543 - 11905: 0x8C9B, - 23544 - 11905: 0xB4E7, - 23545 - 11905: 0xB6D4, - 23546 - 11905: 0xCBC2, - 23547 - 11905: 0xD1B0, - 23548 - 11905: 0xB5BC, - 23549 - 11905: 0x8C9C, - 23550 - 11905: 0x8C9D, - 23551 - 11905: 0xCAD9, - 23552 - 11905: 0x8C9E, - 23553 - 11905: 0xB7E2, - 23554 - 11905: 0x8C9F, - 23555 - 11905: 0x8CA0, - 23556 - 11905: 0xC9E4, - 23557 - 11905: 0x8CA1, - 23558 - 11905: 0xBDAB, - 23559 - 11905: 0x8CA2, - 23560 - 11905: 0x8CA3, - 23561 - 11905: 0xCEBE, - 23562 - 11905: 0xD7F0, - 23563 - 11905: 0x8CA4, - 23564 - 11905: 0x8CA5, - 23565 - 11905: 0x8CA6, - 23566 - 11905: 0x8CA7, - 23567 - 11905: 0xD0A1, - 23568 - 11905: 0x8CA8, - 23569 - 11905: 0xC9D9, - 23570 - 11905: 0x8CA9, - 23571 - 11905: 0x8CAA, - 23572 - 11905: 0xB6FB, - 23573 - 11905: 0xE6D8, - 23574 - 11905: 0xBCE2, - 23575 - 11905: 0x8CAB, - 23576 - 11905: 0xB3BE, - 23577 - 11905: 0x8CAC, - 23578 - 11905: 0xC9D0, - 23579 - 11905: 0x8CAD, - 23580 - 11905: 0xE6D9, - 23581 - 11905: 0xB3A2, - 23582 - 11905: 0x8CAE, - 23583 - 11905: 0x8CAF, - 23584 - 11905: 0x8CB0, - 23585 - 11905: 0x8CB1, - 23586 - 11905: 0xDECC, - 23587 - 11905: 0x8CB2, - 23588 - 11905: 0xD3C8, - 23589 - 11905: 0xDECD, - 23590 - 11905: 0x8CB3, - 23591 - 11905: 0xD2A2, - 23592 - 11905: 0x8CB4, - 23593 - 11905: 0x8CB5, - 23594 - 11905: 0x8CB6, - 23595 - 11905: 0x8CB7, - 23596 - 11905: 0xDECE, - 23597 - 11905: 0x8CB8, - 23598 - 11905: 0x8CB9, - 23599 - 11905: 0x8CBA, - 23600 - 11905: 0x8CBB, - 23601 - 11905: 0xBECD, - 23602 - 11905: 0x8CBC, - 23603 - 11905: 0x8CBD, - 23604 - 11905: 0xDECF, - 23605 - 11905: 0x8CBE, - 23606 - 11905: 0x8CBF, - 23607 - 11905: 0x8CC0, - 23608 - 11905: 0xCAAC, - 23609 - 11905: 0xD2FC, - 23610 - 11905: 0xB3DF, - 23611 - 11905: 0xE5EA, - 23612 - 11905: 0xC4E1, - 23613 - 11905: 0xBEA1, - 23614 - 11905: 0xCEB2, - 23615 - 11905: 0xC4F2, - 23616 - 11905: 0xBED6, - 23617 - 11905: 0xC6A8, - 23618 - 11905: 0xB2E3, - 23619 - 11905: 0x8CC1, - 23620 - 11905: 0x8CC2, - 23621 - 11905: 0xBED3, - 23622 - 11905: 0x8CC3, - 23623 - 11905: 0x8CC4, - 23624 - 11905: 0xC7FC, - 23625 - 11905: 0xCCEB, - 23626 - 11905: 0xBDEC, - 23627 - 11905: 0xCEDD, - 23628 - 11905: 0x8CC5, - 23629 - 11905: 0x8CC6, - 23630 - 11905: 0xCABA, - 23631 - 11905: 0xC6C1, - 23632 - 11905: 0xE5EC, - 23633 - 11905: 0xD0BC, - 23634 - 11905: 0x8CC7, - 23635 - 11905: 0x8CC8, - 23636 - 11905: 0x8CC9, - 23637 - 11905: 0xD5B9, - 23638 - 11905: 0x8CCA, - 23639 - 11905: 0x8CCB, - 23640 - 11905: 0x8CCC, - 23641 - 11905: 0xE5ED, - 23642 - 11905: 0x8CCD, - 23643 - 11905: 0x8CCE, - 23644 - 11905: 0x8CCF, - 23645 - 11905: 0x8CD0, - 23646 - 11905: 0xCAF4, - 23647 - 11905: 0x8CD1, - 23648 - 11905: 0xCDC0, - 23649 - 11905: 0xC2C5, - 23650 - 11905: 0x8CD2, - 23651 - 11905: 0xE5EF, - 23652 - 11905: 0x8CD3, - 23653 - 11905: 0xC2C4, - 23654 - 11905: 0xE5F0, - 23655 - 11905: 0x8CD4, - 23656 - 11905: 0x8CD5, - 23657 - 11905: 0x8CD6, - 23658 - 11905: 0x8CD7, - 23659 - 11905: 0x8CD8, - 23660 - 11905: 0x8CD9, - 23661 - 11905: 0x8CDA, - 23662 - 11905: 0xE5F8, - 23663 - 11905: 0xCDCD, - 23664 - 11905: 0x8CDB, - 23665 - 11905: 0xC9BD, - 23666 - 11905: 0x8CDC, - 23667 - 11905: 0x8CDD, - 23668 - 11905: 0x8CDE, - 23669 - 11905: 0x8CDF, - 23670 - 11905: 0x8CE0, - 23671 - 11905: 0x8CE1, - 23672 - 11905: 0x8CE2, - 23673 - 11905: 0xD2D9, - 23674 - 11905: 0xE1A8, - 23675 - 11905: 0x8CE3, - 23676 - 11905: 0x8CE4, - 23677 - 11905: 0x8CE5, - 23678 - 11905: 0x8CE6, - 23679 - 11905: 0xD3EC, - 23680 - 11905: 0x8CE7, - 23681 - 11905: 0xCBEA, - 23682 - 11905: 0xC6F1, - 23683 - 11905: 0x8CE8, - 23684 - 11905: 0x8CE9, - 23685 - 11905: 0x8CEA, - 23686 - 11905: 0x8CEB, - 23687 - 11905: 0x8CEC, - 23688 - 11905: 0xE1AC, - 23689 - 11905: 0x8CED, - 23690 - 11905: 0x8CEE, - 23691 - 11905: 0x8CEF, - 23692 - 11905: 0xE1A7, - 23693 - 11905: 0xE1A9, - 23694 - 11905: 0x8CF0, - 23695 - 11905: 0x8CF1, - 23696 - 11905: 0xE1AA, - 23697 - 11905: 0xE1AF, - 23698 - 11905: 0x8CF2, - 23699 - 11905: 0x8CF3, - 23700 - 11905: 0xB2ED, - 23701 - 11905: 0x8CF4, - 23702 - 11905: 0xE1AB, - 23703 - 11905: 0xB8DA, - 23704 - 11905: 0xE1AD, - 23705 - 11905: 0xE1AE, - 23706 - 11905: 0xE1B0, - 23707 - 11905: 0xB5BA, - 23708 - 11905: 0xE1B1, - 23709 - 11905: 0x8CF5, - 23710 - 11905: 0x8CF6, - 23711 - 11905: 0x8CF7, - 23712 - 11905: 0x8CF8, - 23713 - 11905: 0x8CF9, - 23714 - 11905: 0xE1B3, - 23715 - 11905: 0xE1B8, - 23716 - 11905: 0x8CFA, - 23717 - 11905: 0x8CFB, - 23718 - 11905: 0x8CFC, - 23719 - 11905: 0x8CFD, - 23720 - 11905: 0x8CFE, - 23721 - 11905: 0xD1D2, - 23722 - 11905: 0x8D40, - 23723 - 11905: 0xE1B6, - 23724 - 11905: 0xE1B5, - 23725 - 11905: 0xC1EB, - 23726 - 11905: 0x8D41, - 23727 - 11905: 0x8D42, - 23728 - 11905: 0x8D43, - 23729 - 11905: 0xE1B7, - 23730 - 11905: 0x8D44, - 23731 - 11905: 0xD4C0, - 23732 - 11905: 0x8D45, - 23733 - 11905: 0xE1B2, - 23734 - 11905: 0x8D46, - 23735 - 11905: 0xE1BA, - 23736 - 11905: 0xB0B6, - 23737 - 11905: 0x8D47, - 23738 - 11905: 0x8D48, - 23739 - 11905: 0x8D49, - 23740 - 11905: 0x8D4A, - 23741 - 11905: 0xE1B4, - 23742 - 11905: 0x8D4B, - 23743 - 11905: 0xBFF9, - 23744 - 11905: 0x8D4C, - 23745 - 11905: 0xE1B9, - 23746 - 11905: 0x8D4D, - 23747 - 11905: 0x8D4E, - 23748 - 11905: 0xE1BB, - 23749 - 11905: 0x8D4F, - 23750 - 11905: 0x8D50, - 23751 - 11905: 0x8D51, - 23752 - 11905: 0x8D52, - 23753 - 11905: 0x8D53, - 23754 - 11905: 0x8D54, - 23755 - 11905: 0xE1BE, - 23756 - 11905: 0x8D55, - 23757 - 11905: 0x8D56, - 23758 - 11905: 0x8D57, - 23759 - 11905: 0x8D58, - 23760 - 11905: 0x8D59, - 23761 - 11905: 0x8D5A, - 23762 - 11905: 0xE1BC, - 23763 - 11905: 0x8D5B, - 23764 - 11905: 0x8D5C, - 23765 - 11905: 0x8D5D, - 23766 - 11905: 0x8D5E, - 23767 - 11905: 0x8D5F, - 23768 - 11905: 0x8D60, - 23769 - 11905: 0xD6C5, - 23770 - 11905: 0x8D61, - 23771 - 11905: 0x8D62, - 23772 - 11905: 0x8D63, - 23773 - 11905: 0x8D64, - 23774 - 11905: 0x8D65, - 23775 - 11905: 0x8D66, - 23776 - 11905: 0x8D67, - 23777 - 11905: 0xCFBF, - 23778 - 11905: 0x8D68, - 23779 - 11905: 0x8D69, - 23780 - 11905: 0xE1BD, - 23781 - 11905: 0xE1BF, - 23782 - 11905: 0xC2CD, - 23783 - 11905: 0x8D6A, - 23784 - 11905: 0xB6EB, - 23785 - 11905: 0x8D6B, - 23786 - 11905: 0xD3F8, - 23787 - 11905: 0x8D6C, - 23788 - 11905: 0x8D6D, - 23789 - 11905: 0xC7CD, - 23790 - 11905: 0x8D6E, - 23791 - 11905: 0x8D6F, - 23792 - 11905: 0xB7E5, - 23793 - 11905: 0x8D70, - 23794 - 11905: 0x8D71, - 23795 - 11905: 0x8D72, - 23796 - 11905: 0x8D73, - 23797 - 11905: 0x8D74, - 23798 - 11905: 0x8D75, - 23799 - 11905: 0x8D76, - 23800 - 11905: 0x8D77, - 23801 - 11905: 0x8D78, - 23802 - 11905: 0x8D79, - 23803 - 11905: 0xBEFE, - 23804 - 11905: 0x8D7A, - 23805 - 11905: 0x8D7B, - 23806 - 11905: 0x8D7C, - 23807 - 11905: 0x8D7D, - 23808 - 11905: 0x8D7E, - 23809 - 11905: 0x8D80, - 23810 - 11905: 0xE1C0, - 23811 - 11905: 0xE1C1, - 23812 - 11905: 0x8D81, - 23813 - 11905: 0x8D82, - 23814 - 11905: 0xE1C7, - 23815 - 11905: 0xB3E7, - 23816 - 11905: 0x8D83, - 23817 - 11905: 0x8D84, - 23818 - 11905: 0x8D85, - 23819 - 11905: 0x8D86, - 23820 - 11905: 0x8D87, - 23821 - 11905: 0x8D88, - 23822 - 11905: 0xC6E9, - 23823 - 11905: 0x8D89, - 23824 - 11905: 0x8D8A, - 23825 - 11905: 0x8D8B, - 23826 - 11905: 0x8D8C, - 23827 - 11905: 0x8D8D, - 23828 - 11905: 0xB4DE, - 23829 - 11905: 0x8D8E, - 23830 - 11905: 0xD1C2, - 23831 - 11905: 0x8D8F, - 23832 - 11905: 0x8D90, - 23833 - 11905: 0x8D91, - 23834 - 11905: 0x8D92, - 23835 - 11905: 0xE1C8, - 23836 - 11905: 0x8D93, - 23837 - 11905: 0x8D94, - 23838 - 11905: 0xE1C6, - 23839 - 11905: 0x8D95, - 23840 - 11905: 0x8D96, - 23841 - 11905: 0x8D97, - 23842 - 11905: 0x8D98, - 23843 - 11905: 0x8D99, - 23844 - 11905: 0xE1C5, - 23845 - 11905: 0x8D9A, - 23846 - 11905: 0xE1C3, - 23847 - 11905: 0xE1C2, - 23848 - 11905: 0x8D9B, - 23849 - 11905: 0xB1C0, - 23850 - 11905: 0x8D9C, - 23851 - 11905: 0x8D9D, - 23852 - 11905: 0x8D9E, - 23853 - 11905: 0xD5B8, - 23854 - 11905: 0xE1C4, - 23855 - 11905: 0x8D9F, - 23856 - 11905: 0x8DA0, - 23857 - 11905: 0x8DA1, - 23858 - 11905: 0x8DA2, - 23859 - 11905: 0x8DA3, - 23860 - 11905: 0xE1CB, - 23861 - 11905: 0x8DA4, - 23862 - 11905: 0x8DA5, - 23863 - 11905: 0x8DA6, - 23864 - 11905: 0x8DA7, - 23865 - 11905: 0x8DA8, - 23866 - 11905: 0x8DA9, - 23867 - 11905: 0x8DAA, - 23868 - 11905: 0x8DAB, - 23869 - 11905: 0xE1CC, - 23870 - 11905: 0xE1CA, - 23871 - 11905: 0x8DAC, - 23872 - 11905: 0x8DAD, - 23873 - 11905: 0x8DAE, - 23874 - 11905: 0x8DAF, - 23875 - 11905: 0x8DB0, - 23876 - 11905: 0x8DB1, - 23877 - 11905: 0x8DB2, - 23878 - 11905: 0x8DB3, - 23879 - 11905: 0xEFFA, - 23880 - 11905: 0x8DB4, - 23881 - 11905: 0x8DB5, - 23882 - 11905: 0xE1D3, - 23883 - 11905: 0xE1D2, - 23884 - 11905: 0xC7B6, - 23885 - 11905: 0x8DB6, - 23886 - 11905: 0x8DB7, - 23887 - 11905: 0x8DB8, - 23888 - 11905: 0x8DB9, - 23889 - 11905: 0x8DBA, - 23890 - 11905: 0x8DBB, - 23891 - 11905: 0x8DBC, - 23892 - 11905: 0x8DBD, - 23893 - 11905: 0x8DBE, - 23894 - 11905: 0x8DBF, - 23895 - 11905: 0x8DC0, - 23896 - 11905: 0xE1C9, - 23897 - 11905: 0x8DC1, - 23898 - 11905: 0x8DC2, - 23899 - 11905: 0xE1CE, - 23900 - 11905: 0x8DC3, - 23901 - 11905: 0xE1D0, - 23902 - 11905: 0x8DC4, - 23903 - 11905: 0x8DC5, - 23904 - 11905: 0x8DC6, - 23905 - 11905: 0x8DC7, - 23906 - 11905: 0x8DC8, - 23907 - 11905: 0x8DC9, - 23908 - 11905: 0x8DCA, - 23909 - 11905: 0x8DCB, - 23910 - 11905: 0x8DCC, - 23911 - 11905: 0x8DCD, - 23912 - 11905: 0x8DCE, - 23913 - 11905: 0xE1D4, - 23914 - 11905: 0x8DCF, - 23915 - 11905: 0xE1D1, - 23916 - 11905: 0xE1CD, - 23917 - 11905: 0x8DD0, - 23918 - 11905: 0x8DD1, - 23919 - 11905: 0xE1CF, - 23920 - 11905: 0x8DD2, - 23921 - 11905: 0x8DD3, - 23922 - 11905: 0x8DD4, - 23923 - 11905: 0x8DD5, - 23924 - 11905: 0xE1D5, - 23925 - 11905: 0x8DD6, - 23926 - 11905: 0x8DD7, - 23927 - 11905: 0x8DD8, - 23928 - 11905: 0x8DD9, - 23929 - 11905: 0x8DDA, - 23930 - 11905: 0x8DDB, - 23931 - 11905: 0x8DDC, - 23932 - 11905: 0x8DDD, - 23933 - 11905: 0x8DDE, - 23934 - 11905: 0x8DDF, - 23935 - 11905: 0x8DE0, - 23936 - 11905: 0x8DE1, - 23937 - 11905: 0x8DE2, - 23938 - 11905: 0xE1D6, - 23939 - 11905: 0x8DE3, - 23940 - 11905: 0x8DE4, - 23941 - 11905: 0x8DE5, - 23942 - 11905: 0x8DE6, - 23943 - 11905: 0x8DE7, - 23944 - 11905: 0x8DE8, - 23945 - 11905: 0x8DE9, - 23946 - 11905: 0x8DEA, - 23947 - 11905: 0x8DEB, - 23948 - 11905: 0x8DEC, - 23949 - 11905: 0x8DED, - 23950 - 11905: 0x8DEE, - 23951 - 11905: 0x8DEF, - 23952 - 11905: 0x8DF0, - 23953 - 11905: 0x8DF1, - 23954 - 11905: 0x8DF2, - 23955 - 11905: 0x8DF3, - 23956 - 11905: 0x8DF4, - 23957 - 11905: 0x8DF5, - 23958 - 11905: 0x8DF6, - 23959 - 11905: 0x8DF7, - 23960 - 11905: 0x8DF8, - 23961 - 11905: 0xE1D7, - 23962 - 11905: 0x8DF9, - 23963 - 11905: 0x8DFA, - 23964 - 11905: 0x8DFB, - 23965 - 11905: 0xE1D8, - 23966 - 11905: 0x8DFC, - 23967 - 11905: 0x8DFD, - 23968 - 11905: 0x8DFE, - 23969 - 11905: 0x8E40, - 23970 - 11905: 0x8E41, - 23971 - 11905: 0x8E42, - 23972 - 11905: 0x8E43, - 23973 - 11905: 0x8E44, - 23974 - 11905: 0x8E45, - 23975 - 11905: 0x8E46, - 23976 - 11905: 0x8E47, - 23977 - 11905: 0x8E48, - 23978 - 11905: 0x8E49, - 23979 - 11905: 0x8E4A, - 23980 - 11905: 0x8E4B, - 23981 - 11905: 0x8E4C, - 23982 - 11905: 0x8E4D, - 23983 - 11905: 0x8E4E, - 23984 - 11905: 0x8E4F, - 23985 - 11905: 0x8E50, - 23986 - 11905: 0x8E51, - 23987 - 11905: 0x8E52, - 23988 - 11905: 0x8E53, - 23989 - 11905: 0x8E54, - 23990 - 11905: 0x8E55, - 23991 - 11905: 0xE1DA, - 23992 - 11905: 0x8E56, - 23993 - 11905: 0x8E57, - 23994 - 11905: 0x8E58, - 23995 - 11905: 0x8E59, - 23996 - 11905: 0x8E5A, - 23997 - 11905: 0x8E5B, - 23998 - 11905: 0x8E5C, - 23999 - 11905: 0x8E5D, - 24000 - 11905: 0x8E5E, - 24001 - 11905: 0x8E5F, - 24002 - 11905: 0x8E60, - 24003 - 11905: 0x8E61, - 24004 - 11905: 0x8E62, - 24005 - 11905: 0xE1DB, - 24006 - 11905: 0x8E63, - 24007 - 11905: 0x8E64, - 24008 - 11905: 0x8E65, - 24009 - 11905: 0x8E66, - 24010 - 11905: 0x8E67, - 24011 - 11905: 0x8E68, - 24012 - 11905: 0x8E69, - 24013 - 11905: 0xCEA1, - 24014 - 11905: 0x8E6A, - 24015 - 11905: 0x8E6B, - 24016 - 11905: 0x8E6C, - 24017 - 11905: 0x8E6D, - 24018 - 11905: 0x8E6E, - 24019 - 11905: 0x8E6F, - 24020 - 11905: 0x8E70, - 24021 - 11905: 0x8E71, - 24022 - 11905: 0x8E72, - 24023 - 11905: 0x8E73, - 24024 - 11905: 0x8E74, - 24025 - 11905: 0x8E75, - 24026 - 11905: 0x8E76, - 24027 - 11905: 0xE7DD, - 24028 - 11905: 0x8E77, - 24029 - 11905: 0xB4A8, - 24030 - 11905: 0xD6DD, - 24031 - 11905: 0x8E78, - 24032 - 11905: 0x8E79, - 24033 - 11905: 0xD1B2, - 24034 - 11905: 0xB3B2, - 24035 - 11905: 0x8E7A, - 24036 - 11905: 0x8E7B, - 24037 - 11905: 0xB9A4, - 24038 - 11905: 0xD7F3, - 24039 - 11905: 0xC7C9, - 24040 - 11905: 0xBEDE, - 24041 - 11905: 0xB9AE, - 24042 - 11905: 0x8E7C, - 24043 - 11905: 0xCED7, - 24044 - 11905: 0x8E7D, - 24045 - 11905: 0x8E7E, - 24046 - 11905: 0xB2EE, - 24047 - 11905: 0xDBCF, - 24048 - 11905: 0x8E80, - 24049 - 11905: 0xBCBA, - 24050 - 11905: 0xD2D1, - 24051 - 11905: 0xCBC8, - 24052 - 11905: 0xB0CD, - 24053 - 11905: 0x8E81, - 24054 - 11905: 0x8E82, - 24055 - 11905: 0xCFEF, - 24056 - 11905: 0x8E83, - 24057 - 11905: 0x8E84, - 24058 - 11905: 0x8E85, - 24059 - 11905: 0x8E86, - 24060 - 11905: 0x8E87, - 24061 - 11905: 0xD9E3, - 24062 - 11905: 0xBDED, - 24063 - 11905: 0x8E88, - 24064 - 11905: 0x8E89, - 24065 - 11905: 0xB1D2, - 24066 - 11905: 0xCAD0, - 24067 - 11905: 0xB2BC, - 24068 - 11905: 0x8E8A, - 24069 - 11905: 0xCBA7, - 24070 - 11905: 0xB7AB, - 24071 - 11905: 0x8E8B, - 24072 - 11905: 0xCAA6, - 24073 - 11905: 0x8E8C, - 24074 - 11905: 0x8E8D, - 24075 - 11905: 0x8E8E, - 24076 - 11905: 0xCFA3, - 24077 - 11905: 0x8E8F, - 24078 - 11905: 0x8E90, - 24079 - 11905: 0xE0F8, - 24080 - 11905: 0xD5CA, - 24081 - 11905: 0xE0FB, - 24082 - 11905: 0x8E91, - 24083 - 11905: 0x8E92, - 24084 - 11905: 0xE0FA, - 24085 - 11905: 0xC5C1, - 24086 - 11905: 0xCCFB, - 24087 - 11905: 0x8E93, - 24088 - 11905: 0xC1B1, - 24089 - 11905: 0xE0F9, - 24090 - 11905: 0xD6E3, - 24091 - 11905: 0xB2AF, - 24092 - 11905: 0xD6C4, - 24093 - 11905: 0xB5DB, - 24094 - 11905: 0x8E94, - 24095 - 11905: 0x8E95, - 24096 - 11905: 0x8E96, - 24097 - 11905: 0x8E97, - 24098 - 11905: 0x8E98, - 24099 - 11905: 0x8E99, - 24100 - 11905: 0x8E9A, - 24101 - 11905: 0x8E9B, - 24102 - 11905: 0xB4F8, - 24103 - 11905: 0xD6A1, - 24104 - 11905: 0x8E9C, - 24105 - 11905: 0x8E9D, - 24106 - 11905: 0x8E9E, - 24107 - 11905: 0x8E9F, - 24108 - 11905: 0x8EA0, - 24109 - 11905: 0xCFAF, - 24110 - 11905: 0xB0EF, - 24111 - 11905: 0x8EA1, - 24112 - 11905: 0x8EA2, - 24113 - 11905: 0xE0FC, - 24114 - 11905: 0x8EA3, - 24115 - 11905: 0x8EA4, - 24116 - 11905: 0x8EA5, - 24117 - 11905: 0x8EA6, - 24118 - 11905: 0x8EA7, - 24119 - 11905: 0xE1A1, - 24120 - 11905: 0xB3A3, - 24121 - 11905: 0x8EA8, - 24122 - 11905: 0x8EA9, - 24123 - 11905: 0xE0FD, - 24124 - 11905: 0xE0FE, - 24125 - 11905: 0xC3B1, - 24126 - 11905: 0x8EAA, - 24127 - 11905: 0x8EAB, - 24128 - 11905: 0x8EAC, - 24129 - 11905: 0x8EAD, - 24130 - 11905: 0xC3DD, - 24131 - 11905: 0x8EAE, - 24132 - 11905: 0xE1A2, - 24133 - 11905: 0xB7F9, - 24134 - 11905: 0x8EAF, - 24135 - 11905: 0x8EB0, - 24136 - 11905: 0x8EB1, - 24137 - 11905: 0x8EB2, - 24138 - 11905: 0x8EB3, - 24139 - 11905: 0x8EB4, - 24140 - 11905: 0xBBCF, - 24141 - 11905: 0x8EB5, - 24142 - 11905: 0x8EB6, - 24143 - 11905: 0x8EB7, - 24144 - 11905: 0x8EB8, - 24145 - 11905: 0x8EB9, - 24146 - 11905: 0x8EBA, - 24147 - 11905: 0x8EBB, - 24148 - 11905: 0xE1A3, - 24149 - 11905: 0xC4BB, - 24150 - 11905: 0x8EBC, - 24151 - 11905: 0x8EBD, - 24152 - 11905: 0x8EBE, - 24153 - 11905: 0x8EBF, - 24154 - 11905: 0x8EC0, - 24155 - 11905: 0xE1A4, - 24156 - 11905: 0x8EC1, - 24157 - 11905: 0x8EC2, - 24158 - 11905: 0xE1A5, - 24159 - 11905: 0x8EC3, - 24160 - 11905: 0x8EC4, - 24161 - 11905: 0xE1A6, - 24162 - 11905: 0xB4B1, - 24163 - 11905: 0x8EC5, - 24164 - 11905: 0x8EC6, - 24165 - 11905: 0x8EC7, - 24166 - 11905: 0x8EC8, - 24167 - 11905: 0x8EC9, - 24168 - 11905: 0x8ECA, - 24169 - 11905: 0x8ECB, - 24170 - 11905: 0x8ECC, - 24171 - 11905: 0x8ECD, - 24172 - 11905: 0x8ECE, - 24173 - 11905: 0x8ECF, - 24174 - 11905: 0x8ED0, - 24175 - 11905: 0x8ED1, - 24176 - 11905: 0x8ED2, - 24177 - 11905: 0x8ED3, - 24178 - 11905: 0xB8C9, - 24179 - 11905: 0xC6BD, - 24180 - 11905: 0xC4EA, - 24181 - 11905: 0x8ED4, - 24182 - 11905: 0xB2A2, - 24183 - 11905: 0x8ED5, - 24184 - 11905: 0xD0D2, - 24185 - 11905: 0x8ED6, - 24186 - 11905: 0xE7DB, - 24187 - 11905: 0xBBC3, - 24188 - 11905: 0xD3D7, - 24189 - 11905: 0xD3C4, - 24190 - 11905: 0x8ED7, - 24191 - 11905: 0xB9E3, - 24192 - 11905: 0xE2CF, - 24193 - 11905: 0x8ED8, - 24194 - 11905: 0x8ED9, - 24195 - 11905: 0x8EDA, - 24196 - 11905: 0xD7AF, - 24197 - 11905: 0x8EDB, - 24198 - 11905: 0xC7EC, - 24199 - 11905: 0xB1D3, - 24200 - 11905: 0x8EDC, - 24201 - 11905: 0x8EDD, - 24202 - 11905: 0xB4B2, - 24203 - 11905: 0xE2D1, - 24204 - 11905: 0x8EDE, - 24205 - 11905: 0x8EDF, - 24206 - 11905: 0x8EE0, - 24207 - 11905: 0xD0F2, - 24208 - 11905: 0xC2AE, - 24209 - 11905: 0xE2D0, - 24210 - 11905: 0x8EE1, - 24211 - 11905: 0xBFE2, - 24212 - 11905: 0xD3A6, - 24213 - 11905: 0xB5D7, - 24214 - 11905: 0xE2D2, - 24215 - 11905: 0xB5EA, - 24216 - 11905: 0x8EE2, - 24217 - 11905: 0xC3ED, - 24218 - 11905: 0xB8FD, - 24219 - 11905: 0x8EE3, - 24220 - 11905: 0xB8AE, - 24221 - 11905: 0x8EE4, - 24222 - 11905: 0xC5D3, - 24223 - 11905: 0xB7CF, - 24224 - 11905: 0xE2D4, - 24225 - 11905: 0x8EE5, - 24226 - 11905: 0x8EE6, - 24227 - 11905: 0x8EE7, - 24228 - 11905: 0x8EE8, - 24229 - 11905: 0xE2D3, - 24230 - 11905: 0xB6C8, - 24231 - 11905: 0xD7F9, - 24232 - 11905: 0x8EE9, - 24233 - 11905: 0x8EEA, - 24234 - 11905: 0x8EEB, - 24235 - 11905: 0x8EEC, - 24236 - 11905: 0x8EED, - 24237 - 11905: 0xCDA5, - 24238 - 11905: 0x8EEE, - 24239 - 11905: 0x8EEF, - 24240 - 11905: 0x8EF0, - 24241 - 11905: 0x8EF1, - 24242 - 11905: 0x8EF2, - 24243 - 11905: 0xE2D8, - 24244 - 11905: 0x8EF3, - 24245 - 11905: 0xE2D6, - 24246 - 11905: 0xCAFC, - 24247 - 11905: 0xBFB5, - 24248 - 11905: 0xD3B9, - 24249 - 11905: 0xE2D5, - 24250 - 11905: 0x8EF4, - 24251 - 11905: 0x8EF5, - 24252 - 11905: 0x8EF6, - 24253 - 11905: 0x8EF7, - 24254 - 11905: 0xE2D7, - 24255 - 11905: 0x8EF8, - 24256 - 11905: 0x8EF9, - 24257 - 11905: 0x8EFA, - 24258 - 11905: 0x8EFB, - 24259 - 11905: 0x8EFC, - 24260 - 11905: 0x8EFD, - 24261 - 11905: 0x8EFE, - 24262 - 11905: 0x8F40, - 24263 - 11905: 0x8F41, - 24264 - 11905: 0x8F42, - 24265 - 11905: 0xC1AE, - 24266 - 11905: 0xC0C8, - 24267 - 11905: 0x8F43, - 24268 - 11905: 0x8F44, - 24269 - 11905: 0x8F45, - 24270 - 11905: 0x8F46, - 24271 - 11905: 0x8F47, - 24272 - 11905: 0x8F48, - 24273 - 11905: 0xE2DB, - 24274 - 11905: 0xE2DA, - 24275 - 11905: 0xC0AA, - 24276 - 11905: 0x8F49, - 24277 - 11905: 0x8F4A, - 24278 - 11905: 0xC1CE, - 24279 - 11905: 0x8F4B, - 24280 - 11905: 0x8F4C, - 24281 - 11905: 0x8F4D, - 24282 - 11905: 0x8F4E, - 24283 - 11905: 0xE2DC, - 24284 - 11905: 0x8F4F, - 24285 - 11905: 0x8F50, - 24286 - 11905: 0x8F51, - 24287 - 11905: 0x8F52, - 24288 - 11905: 0x8F53, - 24289 - 11905: 0x8F54, - 24290 - 11905: 0x8F55, - 24291 - 11905: 0x8F56, - 24292 - 11905: 0x8F57, - 24293 - 11905: 0x8F58, - 24294 - 11905: 0x8F59, - 24295 - 11905: 0x8F5A, - 24296 - 11905: 0xE2DD, - 24297 - 11905: 0x8F5B, - 24298 - 11905: 0xE2DE, - 24299 - 11905: 0x8F5C, - 24300 - 11905: 0x8F5D, - 24301 - 11905: 0x8F5E, - 24302 - 11905: 0x8F5F, - 24303 - 11905: 0x8F60, - 24304 - 11905: 0x8F61, - 24305 - 11905: 0x8F62, - 24306 - 11905: 0x8F63, - 24307 - 11905: 0x8F64, - 24308 - 11905: 0xDBC8, - 24309 - 11905: 0x8F65, - 24310 - 11905: 0xD1D3, - 24311 - 11905: 0xCDA2, - 24312 - 11905: 0x8F66, - 24313 - 11905: 0x8F67, - 24314 - 11905: 0xBDA8, - 24315 - 11905: 0x8F68, - 24316 - 11905: 0x8F69, - 24317 - 11905: 0x8F6A, - 24318 - 11905: 0xDEC3, - 24319 - 11905: 0xD8A5, - 24320 - 11905: 0xBFAA, - 24321 - 11905: 0xDBCD, - 24322 - 11905: 0xD2EC, - 24323 - 11905: 0xC6FA, - 24324 - 11905: 0xC5AA, - 24325 - 11905: 0x8F6B, - 24326 - 11905: 0x8F6C, - 24327 - 11905: 0x8F6D, - 24328 - 11905: 0xDEC4, - 24329 - 11905: 0x8F6E, - 24330 - 11905: 0xB1D7, - 24331 - 11905: 0xDFAE, - 24332 - 11905: 0x8F6F, - 24333 - 11905: 0x8F70, - 24334 - 11905: 0x8F71, - 24335 - 11905: 0xCABD, - 24336 - 11905: 0x8F72, - 24337 - 11905: 0xDFB1, - 24338 - 11905: 0x8F73, - 24339 - 11905: 0xB9AD, - 24340 - 11905: 0x8F74, - 24341 - 11905: 0xD2FD, - 24342 - 11905: 0x8F75, - 24343 - 11905: 0xB8A5, - 24344 - 11905: 0xBAEB, - 24345 - 11905: 0x8F76, - 24346 - 11905: 0x8F77, - 24347 - 11905: 0xB3DA, - 24348 - 11905: 0x8F78, - 24349 - 11905: 0x8F79, - 24350 - 11905: 0x8F7A, - 24351 - 11905: 0xB5DC, - 24352 - 11905: 0xD5C5, - 24353 - 11905: 0x8F7B, - 24354 - 11905: 0x8F7C, - 24355 - 11905: 0x8F7D, - 24356 - 11905: 0x8F7E, - 24357 - 11905: 0xC3D6, - 24358 - 11905: 0xCFD2, - 24359 - 11905: 0xBBA1, - 24360 - 11905: 0x8F80, - 24361 - 11905: 0xE5F3, - 24362 - 11905: 0xE5F2, - 24363 - 11905: 0x8F81, - 24364 - 11905: 0x8F82, - 24365 - 11905: 0xE5F4, - 24366 - 11905: 0x8F83, - 24367 - 11905: 0xCDE4, - 24368 - 11905: 0x8F84, - 24369 - 11905: 0xC8F5, - 24370 - 11905: 0x8F85, - 24371 - 11905: 0x8F86, - 24372 - 11905: 0x8F87, - 24373 - 11905: 0x8F88, - 24374 - 11905: 0x8F89, - 24375 - 11905: 0x8F8A, - 24376 - 11905: 0x8F8B, - 24377 - 11905: 0xB5AF, - 24378 - 11905: 0xC7BF, - 24379 - 11905: 0x8F8C, - 24380 - 11905: 0xE5F6, - 24381 - 11905: 0x8F8D, - 24382 - 11905: 0x8F8E, - 24383 - 11905: 0x8F8F, - 24384 - 11905: 0xECB0, - 24385 - 11905: 0x8F90, - 24386 - 11905: 0x8F91, - 24387 - 11905: 0x8F92, - 24388 - 11905: 0x8F93, - 24389 - 11905: 0x8F94, - 24390 - 11905: 0x8F95, - 24391 - 11905: 0x8F96, - 24392 - 11905: 0x8F97, - 24393 - 11905: 0x8F98, - 24394 - 11905: 0x8F99, - 24395 - 11905: 0x8F9A, - 24396 - 11905: 0x8F9B, - 24397 - 11905: 0x8F9C, - 24398 - 11905: 0x8F9D, - 24399 - 11905: 0x8F9E, - 24400 - 11905: 0xE5E6, - 24401 - 11905: 0x8F9F, - 24402 - 11905: 0xB9E9, - 24403 - 11905: 0xB5B1, - 24404 - 11905: 0x8FA0, - 24405 - 11905: 0xC2BC, - 24406 - 11905: 0xE5E8, - 24407 - 11905: 0xE5E7, - 24408 - 11905: 0xE5E9, - 24409 - 11905: 0x8FA1, - 24410 - 11905: 0x8FA2, - 24411 - 11905: 0x8FA3, - 24412 - 11905: 0x8FA4, - 24413 - 11905: 0xD2CD, - 24414 - 11905: 0x8FA5, - 24415 - 11905: 0x8FA6, - 24416 - 11905: 0x8FA7, - 24417 - 11905: 0xE1EA, - 24418 - 11905: 0xD0CE, - 24419 - 11905: 0x8FA8, - 24420 - 11905: 0xCDAE, - 24421 - 11905: 0x8FA9, - 24422 - 11905: 0xD1E5, - 24423 - 11905: 0x8FAA, - 24424 - 11905: 0x8FAB, - 24425 - 11905: 0xB2CA, - 24426 - 11905: 0xB1EB, - 24427 - 11905: 0x8FAC, - 24428 - 11905: 0xB1F2, - 24429 - 11905: 0xC5ED, - 24430 - 11905: 0x8FAD, - 24431 - 11905: 0x8FAE, - 24432 - 11905: 0xD5C3, - 24433 - 11905: 0xD3B0, - 24434 - 11905: 0x8FAF, - 24435 - 11905: 0xE1DC, - 24436 - 11905: 0x8FB0, - 24437 - 11905: 0x8FB1, - 24438 - 11905: 0x8FB2, - 24439 - 11905: 0xE1DD, - 24440 - 11905: 0x8FB3, - 24441 - 11905: 0xD2DB, - 24442 - 11905: 0x8FB4, - 24443 - 11905: 0xB3B9, - 24444 - 11905: 0xB1CB, - 24445 - 11905: 0x8FB5, - 24446 - 11905: 0x8FB6, - 24447 - 11905: 0x8FB7, - 24448 - 11905: 0xCDF9, - 24449 - 11905: 0xD5F7, - 24450 - 11905: 0xE1DE, - 24451 - 11905: 0x8FB8, - 24452 - 11905: 0xBEB6, - 24453 - 11905: 0xB4FD, - 24454 - 11905: 0x8FB9, - 24455 - 11905: 0xE1DF, - 24456 - 11905: 0xBADC, - 24457 - 11905: 0xE1E0, - 24458 - 11905: 0xBBB2, - 24459 - 11905: 0xC2C9, - 24460 - 11905: 0xE1E1, - 24461 - 11905: 0x8FBA, - 24462 - 11905: 0x8FBB, - 24463 - 11905: 0x8FBC, - 24464 - 11905: 0xD0EC, - 24465 - 11905: 0x8FBD, - 24466 - 11905: 0xCDBD, - 24467 - 11905: 0x8FBE, - 24468 - 11905: 0x8FBF, - 24469 - 11905: 0xE1E2, - 24470 - 11905: 0x8FC0, - 24471 - 11905: 0xB5C3, - 24472 - 11905: 0xC5C7, - 24473 - 11905: 0xE1E3, - 24474 - 11905: 0x8FC1, - 24475 - 11905: 0x8FC2, - 24476 - 11905: 0xE1E4, - 24477 - 11905: 0x8FC3, - 24478 - 11905: 0x8FC4, - 24479 - 11905: 0x8FC5, - 24480 - 11905: 0x8FC6, - 24481 - 11905: 0xD3F9, - 24482 - 11905: 0x8FC7, - 24483 - 11905: 0x8FC8, - 24484 - 11905: 0x8FC9, - 24485 - 11905: 0x8FCA, - 24486 - 11905: 0x8FCB, - 24487 - 11905: 0x8FCC, - 24488 - 11905: 0xE1E5, - 24489 - 11905: 0x8FCD, - 24490 - 11905: 0xD1AD, - 24491 - 11905: 0x8FCE, - 24492 - 11905: 0x8FCF, - 24493 - 11905: 0xE1E6, - 24494 - 11905: 0xCEA2, - 24495 - 11905: 0x8FD0, - 24496 - 11905: 0x8FD1, - 24497 - 11905: 0x8FD2, - 24498 - 11905: 0x8FD3, - 24499 - 11905: 0x8FD4, - 24500 - 11905: 0x8FD5, - 24501 - 11905: 0xE1E7, - 24502 - 11905: 0x8FD6, - 24503 - 11905: 0xB5C2, - 24504 - 11905: 0x8FD7, - 24505 - 11905: 0x8FD8, - 24506 - 11905: 0x8FD9, - 24507 - 11905: 0x8FDA, - 24508 - 11905: 0xE1E8, - 24509 - 11905: 0xBBD5, - 24510 - 11905: 0x8FDB, - 24511 - 11905: 0x8FDC, - 24512 - 11905: 0x8FDD, - 24513 - 11905: 0x8FDE, - 24514 - 11905: 0x8FDF, - 24515 - 11905: 0xD0C4, - 24516 - 11905: 0xE2E0, - 24517 - 11905: 0xB1D8, - 24518 - 11905: 0xD2E4, - 24519 - 11905: 0x8FE0, - 24520 - 11905: 0x8FE1, - 24521 - 11905: 0xE2E1, - 24522 - 11905: 0x8FE2, - 24523 - 11905: 0x8FE3, - 24524 - 11905: 0xBCC9, - 24525 - 11905: 0xC8CC, - 24526 - 11905: 0x8FE4, - 24527 - 11905: 0xE2E3, - 24528 - 11905: 0xECFE, - 24529 - 11905: 0xECFD, - 24530 - 11905: 0xDFAF, - 24531 - 11905: 0x8FE5, - 24532 - 11905: 0x8FE6, - 24533 - 11905: 0x8FE7, - 24534 - 11905: 0xE2E2, - 24535 - 11905: 0xD6BE, - 24536 - 11905: 0xCDFC, - 24537 - 11905: 0xC3A6, - 24538 - 11905: 0x8FE8, - 24539 - 11905: 0x8FE9, - 24540 - 11905: 0x8FEA, - 24541 - 11905: 0xE3C3, - 24542 - 11905: 0x8FEB, - 24543 - 11905: 0x8FEC, - 24544 - 11905: 0xD6D2, - 24545 - 11905: 0xE2E7, - 24546 - 11905: 0x8FED, - 24547 - 11905: 0x8FEE, - 24548 - 11905: 0xE2E8, - 24549 - 11905: 0x8FEF, - 24550 - 11905: 0x8FF0, - 24551 - 11905: 0xD3C7, - 24552 - 11905: 0x8FF1, - 24553 - 11905: 0x8FF2, - 24554 - 11905: 0xE2EC, - 24555 - 11905: 0xBFEC, - 24556 - 11905: 0x8FF3, - 24557 - 11905: 0xE2ED, - 24558 - 11905: 0xE2E5, - 24559 - 11905: 0x8FF4, - 24560 - 11905: 0x8FF5, - 24561 - 11905: 0xB3C0, - 24562 - 11905: 0x8FF6, - 24563 - 11905: 0x8FF7, - 24564 - 11905: 0x8FF8, - 24565 - 11905: 0xC4EE, - 24566 - 11905: 0x8FF9, - 24567 - 11905: 0x8FFA, - 24568 - 11905: 0xE2EE, - 24569 - 11905: 0x8FFB, - 24570 - 11905: 0x8FFC, - 24571 - 11905: 0xD0C3, - 24572 - 11905: 0x8FFD, - 24573 - 11905: 0xBAF6, - 24574 - 11905: 0xE2E9, - 24575 - 11905: 0xB7DE, - 24576 - 11905: 0xBBB3, - 24577 - 11905: 0xCCAC, - 24578 - 11905: 0xCBCB, - 24579 - 11905: 0xE2E4, - 24580 - 11905: 0xE2E6, - 24581 - 11905: 0xE2EA, - 24582 - 11905: 0xE2EB, - 24583 - 11905: 0x8FFE, - 24584 - 11905: 0x9040, - 24585 - 11905: 0x9041, - 24586 - 11905: 0xE2F7, - 24587 - 11905: 0x9042, - 24588 - 11905: 0x9043, - 24589 - 11905: 0xE2F4, - 24590 - 11905: 0xD4F5, - 24591 - 11905: 0xE2F3, - 24592 - 11905: 0x9044, - 24593 - 11905: 0x9045, - 24594 - 11905: 0xC5AD, - 24595 - 11905: 0x9046, - 24596 - 11905: 0xD5FA, - 24597 - 11905: 0xC5C2, - 24598 - 11905: 0xB2C0, - 24599 - 11905: 0x9047, - 24600 - 11905: 0x9048, - 24601 - 11905: 0xE2EF, - 24602 - 11905: 0x9049, - 24603 - 11905: 0xE2F2, - 24604 - 11905: 0xC1AF, - 24605 - 11905: 0xCBBC, - 24606 - 11905: 0x904A, - 24607 - 11905: 0x904B, - 24608 - 11905: 0xB5A1, - 24609 - 11905: 0xE2F9, - 24610 - 11905: 0x904C, - 24611 - 11905: 0x904D, - 24612 - 11905: 0x904E, - 24613 - 11905: 0xBCB1, - 24614 - 11905: 0xE2F1, - 24615 - 11905: 0xD0D4, - 24616 - 11905: 0xD4B9, - 24617 - 11905: 0xE2F5, - 24618 - 11905: 0xB9D6, - 24619 - 11905: 0xE2F6, - 24620 - 11905: 0x904F, - 24621 - 11905: 0x9050, - 24622 - 11905: 0x9051, - 24623 - 11905: 0xC7D3, - 24624 - 11905: 0x9052, - 24625 - 11905: 0x9053, - 24626 - 11905: 0x9054, - 24627 - 11905: 0x9055, - 24628 - 11905: 0x9056, - 24629 - 11905: 0xE2F0, - 24630 - 11905: 0x9057, - 24631 - 11905: 0x9058, - 24632 - 11905: 0x9059, - 24633 - 11905: 0x905A, - 24634 - 11905: 0x905B, - 24635 - 11905: 0xD7DC, - 24636 - 11905: 0xEDA1, - 24637 - 11905: 0x905C, - 24638 - 11905: 0x905D, - 24639 - 11905: 0xE2F8, - 24640 - 11905: 0x905E, - 24641 - 11905: 0xEDA5, - 24642 - 11905: 0xE2FE, - 24643 - 11905: 0xCAD1, - 24644 - 11905: 0x905F, - 24645 - 11905: 0x9060, - 24646 - 11905: 0x9061, - 24647 - 11905: 0x9062, - 24648 - 11905: 0x9063, - 24649 - 11905: 0x9064, - 24650 - 11905: 0x9065, - 24651 - 11905: 0xC1B5, - 24652 - 11905: 0x9066, - 24653 - 11905: 0xBBD0, - 24654 - 11905: 0x9067, - 24655 - 11905: 0x9068, - 24656 - 11905: 0xBFD6, - 24657 - 11905: 0x9069, - 24658 - 11905: 0xBAE3, - 24659 - 11905: 0x906A, - 24660 - 11905: 0x906B, - 24661 - 11905: 0xCBA1, - 24662 - 11905: 0x906C, - 24663 - 11905: 0x906D, - 24664 - 11905: 0x906E, - 24665 - 11905: 0xEDA6, - 24666 - 11905: 0xEDA3, - 24667 - 11905: 0x906F, - 24668 - 11905: 0x9070, - 24669 - 11905: 0xEDA2, - 24670 - 11905: 0x9071, - 24671 - 11905: 0x9072, - 24672 - 11905: 0x9073, - 24673 - 11905: 0x9074, - 24674 - 11905: 0xBBD6, - 24675 - 11905: 0xEDA7, - 24676 - 11905: 0xD0F4, - 24677 - 11905: 0x9075, - 24678 - 11905: 0x9076, - 24679 - 11905: 0xEDA4, - 24680 - 11905: 0xBADE, - 24681 - 11905: 0xB6F7, - 24682 - 11905: 0xE3A1, - 24683 - 11905: 0xB6B2, - 24684 - 11905: 0xCCF1, - 24685 - 11905: 0xB9A7, - 24686 - 11905: 0x9077, - 24687 - 11905: 0xCFA2, - 24688 - 11905: 0xC7A1, - 24689 - 11905: 0x9078, - 24690 - 11905: 0x9079, - 24691 - 11905: 0xBFD2, - 24692 - 11905: 0x907A, - 24693 - 11905: 0x907B, - 24694 - 11905: 0xB6F1, - 24695 - 11905: 0x907C, - 24696 - 11905: 0xE2FA, - 24697 - 11905: 0xE2FB, - 24698 - 11905: 0xE2FD, - 24699 - 11905: 0xE2FC, - 24700 - 11905: 0xC4D5, - 24701 - 11905: 0xE3A2, - 24702 - 11905: 0x907D, - 24703 - 11905: 0xD3C1, - 24704 - 11905: 0x907E, - 24705 - 11905: 0x9080, - 24706 - 11905: 0x9081, - 24707 - 11905: 0xE3A7, - 24708 - 11905: 0xC7C4, - 24709 - 11905: 0x9082, - 24710 - 11905: 0x9083, - 24711 - 11905: 0x9084, - 24712 - 11905: 0x9085, - 24713 - 11905: 0xCFA4, - 24714 - 11905: 0x9086, - 24715 - 11905: 0x9087, - 24716 - 11905: 0xE3A9, - 24717 - 11905: 0xBAB7, - 24718 - 11905: 0x9088, - 24719 - 11905: 0x9089, - 24720 - 11905: 0x908A, - 24721 - 11905: 0x908B, - 24722 - 11905: 0xE3A8, - 24723 - 11905: 0x908C, - 24724 - 11905: 0xBBDA, - 24725 - 11905: 0x908D, - 24726 - 11905: 0xE3A3, - 24727 - 11905: 0x908E, - 24728 - 11905: 0x908F, - 24729 - 11905: 0x9090, - 24730 - 11905: 0xE3A4, - 24731 - 11905: 0xE3AA, - 24732 - 11905: 0x9091, - 24733 - 11905: 0xE3A6, - 24734 - 11905: 0x9092, - 24735 - 11905: 0xCEF2, - 24736 - 11905: 0xD3C6, - 24737 - 11905: 0x9093, - 24738 - 11905: 0x9094, - 24739 - 11905: 0xBBBC, - 24740 - 11905: 0x9095, - 24741 - 11905: 0x9096, - 24742 - 11905: 0xD4C3, - 24743 - 11905: 0x9097, - 24744 - 11905: 0xC4FA, - 24745 - 11905: 0x9098, - 24746 - 11905: 0x9099, - 24747 - 11905: 0xEDA8, - 24748 - 11905: 0xD0FC, - 24749 - 11905: 0xE3A5, - 24750 - 11905: 0x909A, - 24751 - 11905: 0xC3F5, - 24752 - 11905: 0x909B, - 24753 - 11905: 0xE3AD, - 24754 - 11905: 0xB1AF, - 24755 - 11905: 0x909C, - 24756 - 11905: 0xE3B2, - 24757 - 11905: 0x909D, - 24758 - 11905: 0x909E, - 24759 - 11905: 0x909F, - 24760 - 11905: 0xBCC2, - 24761 - 11905: 0x90A0, - 24762 - 11905: 0x90A1, - 24763 - 11905: 0xE3AC, - 24764 - 11905: 0xB5BF, - 24765 - 11905: 0x90A2, - 24766 - 11905: 0x90A3, - 24767 - 11905: 0x90A4, - 24768 - 11905: 0x90A5, - 24769 - 11905: 0x90A6, - 24770 - 11905: 0x90A7, - 24771 - 11905: 0x90A8, - 24772 - 11905: 0x90A9, - 24773 - 11905: 0xC7E9, - 24774 - 11905: 0xE3B0, - 24775 - 11905: 0x90AA, - 24776 - 11905: 0x90AB, - 24777 - 11905: 0x90AC, - 24778 - 11905: 0xBEAA, - 24779 - 11905: 0xCDEF, - 24780 - 11905: 0x90AD, - 24781 - 11905: 0x90AE, - 24782 - 11905: 0x90AF, - 24783 - 11905: 0x90B0, - 24784 - 11905: 0x90B1, - 24785 - 11905: 0xBBF3, - 24786 - 11905: 0x90B2, - 24787 - 11905: 0x90B3, - 24788 - 11905: 0x90B4, - 24789 - 11905: 0xCCE8, - 24790 - 11905: 0x90B5, - 24791 - 11905: 0x90B6, - 24792 - 11905: 0xE3AF, - 24793 - 11905: 0x90B7, - 24794 - 11905: 0xE3B1, - 24795 - 11905: 0x90B8, - 24796 - 11905: 0xCFA7, - 24797 - 11905: 0xE3AE, - 24798 - 11905: 0x90B9, - 24799 - 11905: 0xCEA9, - 24800 - 11905: 0xBBDD, - 24801 - 11905: 0x90BA, - 24802 - 11905: 0x90BB, - 24803 - 11905: 0x90BC, - 24804 - 11905: 0x90BD, - 24805 - 11905: 0x90BE, - 24806 - 11905: 0xB5EB, - 24807 - 11905: 0xBEE5, - 24808 - 11905: 0xB2D2, - 24809 - 11905: 0xB3CD, - 24810 - 11905: 0x90BF, - 24811 - 11905: 0xB1B9, - 24812 - 11905: 0xE3AB, - 24813 - 11905: 0xB2D1, - 24814 - 11905: 0xB5AC, - 24815 - 11905: 0xB9DF, - 24816 - 11905: 0xB6E8, - 24817 - 11905: 0x90C0, - 24818 - 11905: 0x90C1, - 24819 - 11905: 0xCFEB, - 24820 - 11905: 0xE3B7, - 24821 - 11905: 0x90C2, - 24822 - 11905: 0xBBCC, - 24823 - 11905: 0x90C3, - 24824 - 11905: 0x90C4, - 24825 - 11905: 0xC8C7, - 24826 - 11905: 0xD0CA, - 24827 - 11905: 0x90C5, - 24828 - 11905: 0x90C6, - 24829 - 11905: 0x90C7, - 24830 - 11905: 0x90C8, - 24831 - 11905: 0x90C9, - 24832 - 11905: 0xE3B8, - 24833 - 11905: 0xB3EE, - 24834 - 11905: 0x90CA, - 24835 - 11905: 0x90CB, - 24836 - 11905: 0x90CC, - 24837 - 11905: 0x90CD, - 24838 - 11905: 0xEDA9, - 24839 - 11905: 0x90CE, - 24840 - 11905: 0xD3FA, - 24841 - 11905: 0xD3E4, - 24842 - 11905: 0x90CF, - 24843 - 11905: 0x90D0, - 24844 - 11905: 0x90D1, - 24845 - 11905: 0xEDAA, - 24846 - 11905: 0xE3B9, - 24847 - 11905: 0xD2E2, - 24848 - 11905: 0x90D2, - 24849 - 11905: 0x90D3, - 24850 - 11905: 0x90D4, - 24851 - 11905: 0x90D5, - 24852 - 11905: 0x90D6, - 24853 - 11905: 0xE3B5, - 24854 - 11905: 0x90D7, - 24855 - 11905: 0x90D8, - 24856 - 11905: 0x90D9, - 24857 - 11905: 0x90DA, - 24858 - 11905: 0xD3DE, - 24859 - 11905: 0x90DB, - 24860 - 11905: 0x90DC, - 24861 - 11905: 0x90DD, - 24862 - 11905: 0x90DE, - 24863 - 11905: 0xB8D0, - 24864 - 11905: 0xE3B3, - 24865 - 11905: 0x90DF, - 24866 - 11905: 0x90E0, - 24867 - 11905: 0xE3B6, - 24868 - 11905: 0xB7DF, - 24869 - 11905: 0x90E1, - 24870 - 11905: 0xE3B4, - 24871 - 11905: 0xC0A2, - 24872 - 11905: 0x90E2, - 24873 - 11905: 0x90E3, - 24874 - 11905: 0x90E4, - 24875 - 11905: 0xE3BA, - 24876 - 11905: 0x90E5, - 24877 - 11905: 0x90E6, - 24878 - 11905: 0x90E7, - 24879 - 11905: 0x90E8, - 24880 - 11905: 0x90E9, - 24881 - 11905: 0x90EA, - 24882 - 11905: 0x90EB, - 24883 - 11905: 0x90EC, - 24884 - 11905: 0x90ED, - 24885 - 11905: 0x90EE, - 24886 - 11905: 0x90EF, - 24887 - 11905: 0x90F0, - 24888 - 11905: 0x90F1, - 24889 - 11905: 0x90F2, - 24890 - 11905: 0x90F3, - 24891 - 11905: 0x90F4, - 24892 - 11905: 0x90F5, - 24893 - 11905: 0x90F6, - 24894 - 11905: 0x90F7, - 24895 - 11905: 0xD4B8, - 24896 - 11905: 0x90F8, - 24897 - 11905: 0x90F9, - 24898 - 11905: 0x90FA, - 24899 - 11905: 0x90FB, - 24900 - 11905: 0x90FC, - 24901 - 11905: 0x90FD, - 24902 - 11905: 0x90FE, - 24903 - 11905: 0x9140, - 24904 - 11905: 0xB4C8, - 24905 - 11905: 0x9141, - 24906 - 11905: 0xE3BB, - 24907 - 11905: 0x9142, - 24908 - 11905: 0xBBC5, - 24909 - 11905: 0x9143, - 24910 - 11905: 0xC9F7, - 24911 - 11905: 0x9144, - 24912 - 11905: 0x9145, - 24913 - 11905: 0xC9E5, - 24914 - 11905: 0x9146, - 24915 - 11905: 0x9147, - 24916 - 11905: 0x9148, - 24917 - 11905: 0xC4BD, - 24918 - 11905: 0x9149, - 24919 - 11905: 0x914A, - 24920 - 11905: 0x914B, - 24921 - 11905: 0x914C, - 24922 - 11905: 0x914D, - 24923 - 11905: 0x914E, - 24924 - 11905: 0x914F, - 24925 - 11905: 0xEDAB, - 24926 - 11905: 0x9150, - 24927 - 11905: 0x9151, - 24928 - 11905: 0x9152, - 24929 - 11905: 0x9153, - 24930 - 11905: 0xC2FD, - 24931 - 11905: 0x9154, - 24932 - 11905: 0x9155, - 24933 - 11905: 0x9156, - 24934 - 11905: 0x9157, - 24935 - 11905: 0xBBDB, - 24936 - 11905: 0xBFAE, - 24937 - 11905: 0x9158, - 24938 - 11905: 0x9159, - 24939 - 11905: 0x915A, - 24940 - 11905: 0x915B, - 24941 - 11905: 0x915C, - 24942 - 11905: 0x915D, - 24943 - 11905: 0x915E, - 24944 - 11905: 0xCEBF, - 24945 - 11905: 0x915F, - 24946 - 11905: 0x9160, - 24947 - 11905: 0x9161, - 24948 - 11905: 0x9162, - 24949 - 11905: 0xE3BC, - 24950 - 11905: 0x9163, - 24951 - 11905: 0xBFB6, - 24952 - 11905: 0x9164, - 24953 - 11905: 0x9165, - 24954 - 11905: 0x9166, - 24955 - 11905: 0x9167, - 24956 - 11905: 0x9168, - 24957 - 11905: 0x9169, - 24958 - 11905: 0x916A, - 24959 - 11905: 0x916B, - 24960 - 11905: 0x916C, - 24961 - 11905: 0x916D, - 24962 - 11905: 0x916E, - 24963 - 11905: 0x916F, - 24964 - 11905: 0x9170, - 24965 - 11905: 0x9171, - 24966 - 11905: 0x9172, - 24967 - 11905: 0x9173, - 24968 - 11905: 0x9174, - 24969 - 11905: 0x9175, - 24970 - 11905: 0x9176, - 24971 - 11905: 0xB1EF, - 24972 - 11905: 0x9177, - 24973 - 11905: 0x9178, - 24974 - 11905: 0xD4F7, - 24975 - 11905: 0x9179, - 24976 - 11905: 0x917A, - 24977 - 11905: 0x917B, - 24978 - 11905: 0x917C, - 24979 - 11905: 0x917D, - 24980 - 11905: 0xE3BE, - 24981 - 11905: 0x917E, - 24982 - 11905: 0x9180, - 24983 - 11905: 0x9181, - 24984 - 11905: 0x9182, - 24985 - 11905: 0x9183, - 24986 - 11905: 0x9184, - 24987 - 11905: 0x9185, - 24988 - 11905: 0x9186, - 24989 - 11905: 0xEDAD, - 24990 - 11905: 0x9187, - 24991 - 11905: 0x9188, - 24992 - 11905: 0x9189, - 24993 - 11905: 0x918A, - 24994 - 11905: 0x918B, - 24995 - 11905: 0x918C, - 24996 - 11905: 0x918D, - 24997 - 11905: 0x918E, - 24998 - 11905: 0x918F, - 24999 - 11905: 0xE3BF, - 25000 - 11905: 0xBAA9, - 25001 - 11905: 0xEDAC, - 25002 - 11905: 0x9190, - 25003 - 11905: 0x9191, - 25004 - 11905: 0xE3BD, - 25005 - 11905: 0x9192, - 25006 - 11905: 0x9193, - 25007 - 11905: 0x9194, - 25008 - 11905: 0x9195, - 25009 - 11905: 0x9196, - 25010 - 11905: 0x9197, - 25011 - 11905: 0x9198, - 25012 - 11905: 0x9199, - 25013 - 11905: 0x919A, - 25014 - 11905: 0x919B, - 25015 - 11905: 0xE3C0, - 25016 - 11905: 0x919C, - 25017 - 11905: 0x919D, - 25018 - 11905: 0x919E, - 25019 - 11905: 0x919F, - 25020 - 11905: 0x91A0, - 25021 - 11905: 0x91A1, - 25022 - 11905: 0xBAB6, - 25023 - 11905: 0x91A2, - 25024 - 11905: 0x91A3, - 25025 - 11905: 0x91A4, - 25026 - 11905: 0xB6AE, - 25027 - 11905: 0x91A5, - 25028 - 11905: 0x91A6, - 25029 - 11905: 0x91A7, - 25030 - 11905: 0x91A8, - 25031 - 11905: 0x91A9, - 25032 - 11905: 0xD0B8, - 25033 - 11905: 0x91AA, - 25034 - 11905: 0xB0C3, - 25035 - 11905: 0xEDAE, - 25036 - 11905: 0x91AB, - 25037 - 11905: 0x91AC, - 25038 - 11905: 0x91AD, - 25039 - 11905: 0x91AE, - 25040 - 11905: 0x91AF, - 25041 - 11905: 0xEDAF, - 25042 - 11905: 0xC0C1, - 25043 - 11905: 0x91B0, - 25044 - 11905: 0xE3C1, - 25045 - 11905: 0x91B1, - 25046 - 11905: 0x91B2, - 25047 - 11905: 0x91B3, - 25048 - 11905: 0x91B4, - 25049 - 11905: 0x91B5, - 25050 - 11905: 0x91B6, - 25051 - 11905: 0x91B7, - 25052 - 11905: 0x91B8, - 25053 - 11905: 0x91B9, - 25054 - 11905: 0x91BA, - 25055 - 11905: 0x91BB, - 25056 - 11905: 0x91BC, - 25057 - 11905: 0x91BD, - 25058 - 11905: 0x91BE, - 25059 - 11905: 0x91BF, - 25060 - 11905: 0x91C0, - 25061 - 11905: 0x91C1, - 25062 - 11905: 0xC5B3, - 25063 - 11905: 0x91C2, - 25064 - 11905: 0x91C3, - 25065 - 11905: 0x91C4, - 25066 - 11905: 0x91C5, - 25067 - 11905: 0x91C6, - 25068 - 11905: 0x91C7, - 25069 - 11905: 0x91C8, - 25070 - 11905: 0x91C9, - 25071 - 11905: 0x91CA, - 25072 - 11905: 0x91CB, - 25073 - 11905: 0x91CC, - 25074 - 11905: 0x91CD, - 25075 - 11905: 0x91CE, - 25076 - 11905: 0x91CF, - 25077 - 11905: 0xE3C2, - 25078 - 11905: 0x91D0, - 25079 - 11905: 0x91D1, - 25080 - 11905: 0x91D2, - 25081 - 11905: 0x91D3, - 25082 - 11905: 0x91D4, - 25083 - 11905: 0x91D5, - 25084 - 11905: 0x91D6, - 25085 - 11905: 0x91D7, - 25086 - 11905: 0x91D8, - 25087 - 11905: 0xDCB2, - 25088 - 11905: 0x91D9, - 25089 - 11905: 0x91DA, - 25090 - 11905: 0x91DB, - 25091 - 11905: 0x91DC, - 25092 - 11905: 0x91DD, - 25093 - 11905: 0x91DE, - 25094 - 11905: 0xEDB0, - 25095 - 11905: 0x91DF, - 25096 - 11905: 0xB8EA, - 25097 - 11905: 0x91E0, - 25098 - 11905: 0xCEEC, - 25099 - 11905: 0xEAA7, - 25100 - 11905: 0xD0E7, - 25101 - 11905: 0xCAF9, - 25102 - 11905: 0xC8D6, - 25103 - 11905: 0xCFB7, - 25104 - 11905: 0xB3C9, - 25105 - 11905: 0xCED2, - 25106 - 11905: 0xBDE4, - 25107 - 11905: 0x91E1, - 25108 - 11905: 0x91E2, - 25109 - 11905: 0xE3DE, - 25110 - 11905: 0xBBF2, - 25111 - 11905: 0xEAA8, - 25112 - 11905: 0xD5BD, - 25113 - 11905: 0x91E3, - 25114 - 11905: 0xC6DD, - 25115 - 11905: 0xEAA9, - 25116 - 11905: 0x91E4, - 25117 - 11905: 0x91E5, - 25118 - 11905: 0x91E6, - 25119 - 11905: 0xEAAA, - 25120 - 11905: 0x91E7, - 25121 - 11905: 0xEAAC, - 25122 - 11905: 0xEAAB, - 25123 - 11905: 0x91E8, - 25124 - 11905: 0xEAAE, - 25125 - 11905: 0xEAAD, - 25126 - 11905: 0x91E9, - 25127 - 11905: 0x91EA, - 25128 - 11905: 0x91EB, - 25129 - 11905: 0x91EC, - 25130 - 11905: 0xBDD8, - 25131 - 11905: 0x91ED, - 25132 - 11905: 0xEAAF, - 25133 - 11905: 0x91EE, - 25134 - 11905: 0xC2BE, - 25135 - 11905: 0x91EF, - 25136 - 11905: 0x91F0, - 25137 - 11905: 0x91F1, - 25138 - 11905: 0x91F2, - 25139 - 11905: 0xB4C1, - 25140 - 11905: 0xB4F7, - 25141 - 11905: 0x91F3, - 25142 - 11905: 0x91F4, - 25143 - 11905: 0xBBA7, - 25144 - 11905: 0x91F5, - 25145 - 11905: 0x91F6, - 25146 - 11905: 0x91F7, - 25147 - 11905: 0x91F8, - 25148 - 11905: 0x91F9, - 25149 - 11905: 0xECE6, - 25150 - 11905: 0xECE5, - 25151 - 11905: 0xB7BF, - 25152 - 11905: 0xCBF9, - 25153 - 11905: 0xB1E2, - 25154 - 11905: 0x91FA, - 25155 - 11905: 0xECE7, - 25156 - 11905: 0x91FB, - 25157 - 11905: 0x91FC, - 25158 - 11905: 0x91FD, - 25159 - 11905: 0xC9C8, - 25160 - 11905: 0xECE8, - 25161 - 11905: 0xECE9, - 25162 - 11905: 0x91FE, - 25163 - 11905: 0xCAD6, - 25164 - 11905: 0xDED0, - 25165 - 11905: 0xB2C5, - 25166 - 11905: 0xD4FA, - 25167 - 11905: 0x9240, - 25168 - 11905: 0x9241, - 25169 - 11905: 0xC6CB, - 25170 - 11905: 0xB0C7, - 25171 - 11905: 0xB4F2, - 25172 - 11905: 0xC8D3, - 25173 - 11905: 0x9242, - 25174 - 11905: 0x9243, - 25175 - 11905: 0x9244, - 25176 - 11905: 0xCDD0, - 25177 - 11905: 0x9245, - 25178 - 11905: 0x9246, - 25179 - 11905: 0xBFB8, - 25180 - 11905: 0x9247, - 25181 - 11905: 0x9248, - 25182 - 11905: 0x9249, - 25183 - 11905: 0x924A, - 25184 - 11905: 0x924B, - 25185 - 11905: 0x924C, - 25186 - 11905: 0x924D, - 25187 - 11905: 0xBFDB, - 25188 - 11905: 0x924E, - 25189 - 11905: 0x924F, - 25190 - 11905: 0xC7A4, - 25191 - 11905: 0xD6B4, - 25192 - 11905: 0x9250, - 25193 - 11905: 0xC0A9, - 25194 - 11905: 0xDED1, - 25195 - 11905: 0xC9A8, - 25196 - 11905: 0xD1EF, - 25197 - 11905: 0xC5A4, - 25198 - 11905: 0xB0E7, - 25199 - 11905: 0xB3B6, - 25200 - 11905: 0xC8C5, - 25201 - 11905: 0x9251, - 25202 - 11905: 0x9252, - 25203 - 11905: 0xB0E2, - 25204 - 11905: 0x9253, - 25205 - 11905: 0x9254, - 25206 - 11905: 0xB7F6, - 25207 - 11905: 0x9255, - 25208 - 11905: 0x9256, - 25209 - 11905: 0xC5FA, - 25210 - 11905: 0x9257, - 25211 - 11905: 0x9258, - 25212 - 11905: 0xB6F3, - 25213 - 11905: 0x9259, - 25214 - 11905: 0xD5D2, - 25215 - 11905: 0xB3D0, - 25216 - 11905: 0xBCBC, - 25217 - 11905: 0x925A, - 25218 - 11905: 0x925B, - 25219 - 11905: 0x925C, - 25220 - 11905: 0xB3AD, - 25221 - 11905: 0x925D, - 25222 - 11905: 0x925E, - 25223 - 11905: 0x925F, - 25224 - 11905: 0x9260, - 25225 - 11905: 0xBEF1, - 25226 - 11905: 0xB0D1, - 25227 - 11905: 0x9261, - 25228 - 11905: 0x9262, - 25229 - 11905: 0x9263, - 25230 - 11905: 0x9264, - 25231 - 11905: 0x9265, - 25232 - 11905: 0x9266, - 25233 - 11905: 0xD2D6, - 25234 - 11905: 0xCAE3, - 25235 - 11905: 0xD7A5, - 25236 - 11905: 0x9267, - 25237 - 11905: 0xCDB6, - 25238 - 11905: 0xB6B6, - 25239 - 11905: 0xBFB9, - 25240 - 11905: 0xD5DB, - 25241 - 11905: 0x9268, - 25242 - 11905: 0xB8A7, - 25243 - 11905: 0xC5D7, - 25244 - 11905: 0x9269, - 25245 - 11905: 0x926A, - 25246 - 11905: 0x926B, - 25247 - 11905: 0xDED2, - 25248 - 11905: 0xBFD9, - 25249 - 11905: 0xC2D5, - 25250 - 11905: 0xC7C0, - 25251 - 11905: 0x926C, - 25252 - 11905: 0xBBA4, - 25253 - 11905: 0xB1A8, - 25254 - 11905: 0x926D, - 25255 - 11905: 0x926E, - 25256 - 11905: 0xC5EA, - 25257 - 11905: 0x926F, - 25258 - 11905: 0x9270, - 25259 - 11905: 0xC5FB, - 25260 - 11905: 0xCCA7, - 25261 - 11905: 0x9271, - 25262 - 11905: 0x9272, - 25263 - 11905: 0x9273, - 25264 - 11905: 0x9274, - 25265 - 11905: 0xB1A7, - 25266 - 11905: 0x9275, - 25267 - 11905: 0x9276, - 25268 - 11905: 0x9277, - 25269 - 11905: 0xB5D6, - 25270 - 11905: 0x9278, - 25271 - 11905: 0x9279, - 25272 - 11905: 0x927A, - 25273 - 11905: 0xC4A8, - 25274 - 11905: 0x927B, - 25275 - 11905: 0xDED3, - 25276 - 11905: 0xD1BA, - 25277 - 11905: 0xB3E9, - 25278 - 11905: 0x927C, - 25279 - 11905: 0xC3F2, - 25280 - 11905: 0x927D, - 25281 - 11905: 0x927E, - 25282 - 11905: 0xB7F7, - 25283 - 11905: 0x9280, - 25284 - 11905: 0xD6F4, - 25285 - 11905: 0xB5A3, - 25286 - 11905: 0xB2F0, - 25287 - 11905: 0xC4B4, - 25288 - 11905: 0xC4E9, - 25289 - 11905: 0xC0AD, - 25290 - 11905: 0xDED4, - 25291 - 11905: 0x9281, - 25292 - 11905: 0xB0E8, - 25293 - 11905: 0xC5C4, - 25294 - 11905: 0xC1E0, - 25295 - 11905: 0x9282, - 25296 - 11905: 0xB9D5, - 25297 - 11905: 0x9283, - 25298 - 11905: 0xBEDC, - 25299 - 11905: 0xCDD8, - 25300 - 11905: 0xB0CE, - 25301 - 11905: 0x9284, - 25302 - 11905: 0xCDCF, - 25303 - 11905: 0xDED6, - 25304 - 11905: 0xBED0, - 25305 - 11905: 0xD7BE, - 25306 - 11905: 0xDED5, - 25307 - 11905: 0xD5D0, - 25308 - 11905: 0xB0DD, - 25309 - 11905: 0x9285, - 25310 - 11905: 0x9286, - 25311 - 11905: 0xC4E2, - 25312 - 11905: 0x9287, - 25313 - 11905: 0x9288, - 25314 - 11905: 0xC2A3, - 25315 - 11905: 0xBCF0, - 25316 - 11905: 0x9289, - 25317 - 11905: 0xD3B5, - 25318 - 11905: 0xC0B9, - 25319 - 11905: 0xC5A1, - 25320 - 11905: 0xB2A6, - 25321 - 11905: 0xD4F1, - 25322 - 11905: 0x928A, - 25323 - 11905: 0x928B, - 25324 - 11905: 0xC0A8, - 25325 - 11905: 0xCAC3, - 25326 - 11905: 0xDED7, - 25327 - 11905: 0xD5FC, - 25328 - 11905: 0x928C, - 25329 - 11905: 0xB9B0, - 25330 - 11905: 0x928D, - 25331 - 11905: 0xC8AD, - 25332 - 11905: 0xCBA9, - 25333 - 11905: 0x928E, - 25334 - 11905: 0xDED9, - 25335 - 11905: 0xBFBD, - 25336 - 11905: 0x928F, - 25337 - 11905: 0x9290, - 25338 - 11905: 0x9291, - 25339 - 11905: 0x9292, - 25340 - 11905: 0xC6B4, - 25341 - 11905: 0xD7A7, - 25342 - 11905: 0xCAB0, - 25343 - 11905: 0xC4C3, - 25344 - 11905: 0x9293, - 25345 - 11905: 0xB3D6, - 25346 - 11905: 0xB9D2, - 25347 - 11905: 0x9294, - 25348 - 11905: 0x9295, - 25349 - 11905: 0x9296, - 25350 - 11905: 0x9297, - 25351 - 11905: 0xD6B8, - 25352 - 11905: 0xEAFC, - 25353 - 11905: 0xB0B4, - 25354 - 11905: 0x9298, - 25355 - 11905: 0x9299, - 25356 - 11905: 0x929A, - 25357 - 11905: 0x929B, - 25358 - 11905: 0xBFE6, - 25359 - 11905: 0x929C, - 25360 - 11905: 0x929D, - 25361 - 11905: 0xCCF4, - 25362 - 11905: 0x929E, - 25363 - 11905: 0x929F, - 25364 - 11905: 0x92A0, - 25365 - 11905: 0x92A1, - 25366 - 11905: 0xCDDA, - 25367 - 11905: 0x92A2, - 25368 - 11905: 0x92A3, - 25369 - 11905: 0x92A4, - 25370 - 11905: 0xD6BF, - 25371 - 11905: 0xC2CE, - 25372 - 11905: 0x92A5, - 25373 - 11905: 0xCECE, - 25374 - 11905: 0xCCA2, - 25375 - 11905: 0xD0AE, - 25376 - 11905: 0xC4D3, - 25377 - 11905: 0xB5B2, - 25378 - 11905: 0xDED8, - 25379 - 11905: 0xD5F5, - 25380 - 11905: 0xBCB7, - 25381 - 11905: 0xBBD3, - 25382 - 11905: 0x92A6, - 25383 - 11905: 0x92A7, - 25384 - 11905: 0xB0A4, - 25385 - 11905: 0x92A8, - 25386 - 11905: 0xC5B2, - 25387 - 11905: 0xB4EC, - 25388 - 11905: 0x92A9, - 25389 - 11905: 0x92AA, - 25390 - 11905: 0x92AB, - 25391 - 11905: 0xD5F1, - 25392 - 11905: 0x92AC, - 25393 - 11905: 0x92AD, - 25394 - 11905: 0xEAFD, - 25395 - 11905: 0x92AE, - 25396 - 11905: 0x92AF, - 25397 - 11905: 0x92B0, - 25398 - 11905: 0x92B1, - 25399 - 11905: 0x92B2, - 25400 - 11905: 0x92B3, - 25401 - 11905: 0xDEDA, - 25402 - 11905: 0xCDA6, - 25403 - 11905: 0x92B4, - 25404 - 11905: 0x92B5, - 25405 - 11905: 0xCDEC, - 25406 - 11905: 0x92B6, - 25407 - 11905: 0x92B7, - 25408 - 11905: 0x92B8, - 25409 - 11905: 0x92B9, - 25410 - 11905: 0xCEE6, - 25411 - 11905: 0xDEDC, - 25412 - 11905: 0x92BA, - 25413 - 11905: 0xCDB1, - 25414 - 11905: 0xC0A6, - 25415 - 11905: 0x92BB, - 25416 - 11905: 0x92BC, - 25417 - 11905: 0xD7BD, - 25418 - 11905: 0x92BD, - 25419 - 11905: 0xDEDB, - 25420 - 11905: 0xB0C6, - 25421 - 11905: 0xBAB4, - 25422 - 11905: 0xC9D3, - 25423 - 11905: 0xC4F3, - 25424 - 11905: 0xBEE8, - 25425 - 11905: 0x92BE, - 25426 - 11905: 0x92BF, - 25427 - 11905: 0x92C0, - 25428 - 11905: 0x92C1, - 25429 - 11905: 0xB2B6, - 25430 - 11905: 0x92C2, - 25431 - 11905: 0x92C3, - 25432 - 11905: 0x92C4, - 25433 - 11905: 0x92C5, - 25434 - 11905: 0x92C6, - 25435 - 11905: 0x92C7, - 25436 - 11905: 0x92C8, - 25437 - 11905: 0x92C9, - 25438 - 11905: 0xC0CC, - 25439 - 11905: 0xCBF0, - 25440 - 11905: 0x92CA, - 25441 - 11905: 0xBCF1, - 25442 - 11905: 0xBBBB, - 25443 - 11905: 0xB5B7, - 25444 - 11905: 0x92CB, - 25445 - 11905: 0x92CC, - 25446 - 11905: 0x92CD, - 25447 - 11905: 0xC5F5, - 25448 - 11905: 0x92CE, - 25449 - 11905: 0xDEE6, - 25450 - 11905: 0x92CF, - 25451 - 11905: 0x92D0, - 25452 - 11905: 0x92D1, - 25453 - 11905: 0xDEE3, - 25454 - 11905: 0xBEDD, - 25455 - 11905: 0x92D2, - 25456 - 11905: 0x92D3, - 25457 - 11905: 0xDEDF, - 25458 - 11905: 0x92D4, - 25459 - 11905: 0x92D5, - 25460 - 11905: 0x92D6, - 25461 - 11905: 0x92D7, - 25462 - 11905: 0xB4B7, - 25463 - 11905: 0xBDDD, - 25464 - 11905: 0x92D8, - 25465 - 11905: 0x92D9, - 25466 - 11905: 0xDEE0, - 25467 - 11905: 0xC4ED, - 25468 - 11905: 0x92DA, - 25469 - 11905: 0x92DB, - 25470 - 11905: 0x92DC, - 25471 - 11905: 0x92DD, - 25472 - 11905: 0xCFC6, - 25473 - 11905: 0x92DE, - 25474 - 11905: 0xB5E0, - 25475 - 11905: 0x92DF, - 25476 - 11905: 0x92E0, - 25477 - 11905: 0x92E1, - 25478 - 11905: 0x92E2, - 25479 - 11905: 0xB6DE, - 25480 - 11905: 0xCADA, - 25481 - 11905: 0xB5F4, - 25482 - 11905: 0xDEE5, - 25483 - 11905: 0x92E3, - 25484 - 11905: 0xD5C6, - 25485 - 11905: 0x92E4, - 25486 - 11905: 0xDEE1, - 25487 - 11905: 0xCCCD, - 25488 - 11905: 0xC6FE, - 25489 - 11905: 0x92E5, - 25490 - 11905: 0xC5C5, - 25491 - 11905: 0x92E6, - 25492 - 11905: 0x92E7, - 25493 - 11905: 0x92E8, - 25494 - 11905: 0xD2B4, - 25495 - 11905: 0x92E9, - 25496 - 11905: 0xBEF2, - 25497 - 11905: 0x92EA, - 25498 - 11905: 0x92EB, - 25499 - 11905: 0x92EC, - 25500 - 11905: 0x92ED, - 25501 - 11905: 0x92EE, - 25502 - 11905: 0x92EF, - 25503 - 11905: 0x92F0, - 25504 - 11905: 0xC2D3, - 25505 - 11905: 0x92F1, - 25506 - 11905: 0xCCBD, - 25507 - 11905: 0xB3B8, - 25508 - 11905: 0x92F2, - 25509 - 11905: 0xBDD3, - 25510 - 11905: 0x92F3, - 25511 - 11905: 0xBFD8, - 25512 - 11905: 0xCDC6, - 25513 - 11905: 0xD1DA, - 25514 - 11905: 0xB4EB, - 25515 - 11905: 0x92F4, - 25516 - 11905: 0xDEE4, - 25517 - 11905: 0xDEDD, - 25518 - 11905: 0xDEE7, - 25519 - 11905: 0x92F5, - 25520 - 11905: 0xEAFE, - 25521 - 11905: 0x92F6, - 25522 - 11905: 0x92F7, - 25523 - 11905: 0xC2B0, - 25524 - 11905: 0xDEE2, - 25525 - 11905: 0x92F8, - 25526 - 11905: 0x92F9, - 25527 - 11905: 0xD6C0, - 25528 - 11905: 0xB5A7, - 25529 - 11905: 0x92FA, - 25530 - 11905: 0xB2F4, - 25531 - 11905: 0x92FB, - 25532 - 11905: 0xDEE8, - 25533 - 11905: 0x92FC, - 25534 - 11905: 0xDEF2, - 25535 - 11905: 0x92FD, - 25536 - 11905: 0x92FE, - 25537 - 11905: 0x9340, - 25538 - 11905: 0x9341, - 25539 - 11905: 0x9342, - 25540 - 11905: 0xDEED, - 25541 - 11905: 0x9343, - 25542 - 11905: 0xDEF1, - 25543 - 11905: 0x9344, - 25544 - 11905: 0x9345, - 25545 - 11905: 0xC8E0, - 25546 - 11905: 0x9346, - 25547 - 11905: 0x9347, - 25548 - 11905: 0x9348, - 25549 - 11905: 0xD7E1, - 25550 - 11905: 0xDEEF, - 25551 - 11905: 0xC3E8, - 25552 - 11905: 0xCCE1, - 25553 - 11905: 0x9349, - 25554 - 11905: 0xB2E5, - 25555 - 11905: 0x934A, - 25556 - 11905: 0x934B, - 25557 - 11905: 0x934C, - 25558 - 11905: 0xD2BE, - 25559 - 11905: 0x934D, - 25560 - 11905: 0x934E, - 25561 - 11905: 0x934F, - 25562 - 11905: 0x9350, - 25563 - 11905: 0x9351, - 25564 - 11905: 0x9352, - 25565 - 11905: 0x9353, - 25566 - 11905: 0xDEEE, - 25567 - 11905: 0x9354, - 25568 - 11905: 0xDEEB, - 25569 - 11905: 0xCED5, - 25570 - 11905: 0x9355, - 25571 - 11905: 0xB4A7, - 25572 - 11905: 0x9356, - 25573 - 11905: 0x9357, - 25574 - 11905: 0x9358, - 25575 - 11905: 0x9359, - 25576 - 11905: 0x935A, - 25577 - 11905: 0xBFAB, - 25578 - 11905: 0xBEBE, - 25579 - 11905: 0x935B, - 25580 - 11905: 0x935C, - 25581 - 11905: 0xBDD2, - 25582 - 11905: 0x935D, - 25583 - 11905: 0x935E, - 25584 - 11905: 0x935F, - 25585 - 11905: 0x9360, - 25586 - 11905: 0xDEE9, - 25587 - 11905: 0x9361, - 25588 - 11905: 0xD4AE, - 25589 - 11905: 0x9362, - 25590 - 11905: 0xDEDE, - 25591 - 11905: 0x9363, - 25592 - 11905: 0xDEEA, - 25593 - 11905: 0x9364, - 25594 - 11905: 0x9365, - 25595 - 11905: 0x9366, - 25596 - 11905: 0x9367, - 25597 - 11905: 0xC0BF, - 25598 - 11905: 0x9368, - 25599 - 11905: 0xDEEC, - 25600 - 11905: 0xB2F3, - 25601 - 11905: 0xB8E9, - 25602 - 11905: 0xC2A7, - 25603 - 11905: 0x9369, - 25604 - 11905: 0x936A, - 25605 - 11905: 0xBDC1, - 25606 - 11905: 0x936B, - 25607 - 11905: 0x936C, - 25608 - 11905: 0x936D, - 25609 - 11905: 0x936E, - 25610 - 11905: 0x936F, - 25611 - 11905: 0xDEF5, - 25612 - 11905: 0xDEF8, - 25613 - 11905: 0x9370, - 25614 - 11905: 0x9371, - 25615 - 11905: 0xB2AB, - 25616 - 11905: 0xB4A4, - 25617 - 11905: 0x9372, - 25618 - 11905: 0x9373, - 25619 - 11905: 0xB4EA, - 25620 - 11905: 0xC9A6, - 25621 - 11905: 0x9374, - 25622 - 11905: 0x9375, - 25623 - 11905: 0x9376, - 25624 - 11905: 0x9377, - 25625 - 11905: 0x9378, - 25626 - 11905: 0x9379, - 25627 - 11905: 0xDEF6, - 25628 - 11905: 0xCBD1, - 25629 - 11905: 0x937A, - 25630 - 11905: 0xB8E3, - 25631 - 11905: 0x937B, - 25632 - 11905: 0xDEF7, - 25633 - 11905: 0xDEFA, - 25634 - 11905: 0x937C, - 25635 - 11905: 0x937D, - 25636 - 11905: 0x937E, - 25637 - 11905: 0x9380, - 25638 - 11905: 0xDEF9, - 25639 - 11905: 0x9381, - 25640 - 11905: 0x9382, - 25641 - 11905: 0x9383, - 25642 - 11905: 0xCCC2, - 25643 - 11905: 0x9384, - 25644 - 11905: 0xB0E1, - 25645 - 11905: 0xB4EE, - 25646 - 11905: 0x9385, - 25647 - 11905: 0x9386, - 25648 - 11905: 0x9387, - 25649 - 11905: 0x9388, - 25650 - 11905: 0x9389, - 25651 - 11905: 0x938A, - 25652 - 11905: 0xE5BA, - 25653 - 11905: 0x938B, - 25654 - 11905: 0x938C, - 25655 - 11905: 0x938D, - 25656 - 11905: 0x938E, - 25657 - 11905: 0x938F, - 25658 - 11905: 0xD0AF, - 25659 - 11905: 0x9390, - 25660 - 11905: 0x9391, - 25661 - 11905: 0xB2EB, - 25662 - 11905: 0x9392, - 25663 - 11905: 0xEBA1, - 25664 - 11905: 0x9393, - 25665 - 11905: 0xDEF4, - 25666 - 11905: 0x9394, - 25667 - 11905: 0x9395, - 25668 - 11905: 0xC9E3, - 25669 - 11905: 0xDEF3, - 25670 - 11905: 0xB0DA, - 25671 - 11905: 0xD2A1, - 25672 - 11905: 0xB1F7, - 25673 - 11905: 0x9396, - 25674 - 11905: 0xCCAF, - 25675 - 11905: 0x9397, - 25676 - 11905: 0x9398, - 25677 - 11905: 0x9399, - 25678 - 11905: 0x939A, - 25679 - 11905: 0x939B, - 25680 - 11905: 0x939C, - 25681 - 11905: 0x939D, - 25682 - 11905: 0xDEF0, - 25683 - 11905: 0x939E, - 25684 - 11905: 0xCBA4, - 25685 - 11905: 0x939F, - 25686 - 11905: 0x93A0, - 25687 - 11905: 0x93A1, - 25688 - 11905: 0xD5AA, - 25689 - 11905: 0x93A2, - 25690 - 11905: 0x93A3, - 25691 - 11905: 0x93A4, - 25692 - 11905: 0x93A5, - 25693 - 11905: 0x93A6, - 25694 - 11905: 0xDEFB, - 25695 - 11905: 0x93A7, - 25696 - 11905: 0x93A8, - 25697 - 11905: 0x93A9, - 25698 - 11905: 0x93AA, - 25699 - 11905: 0x93AB, - 25700 - 11905: 0x93AC, - 25701 - 11905: 0x93AD, - 25702 - 11905: 0x93AE, - 25703 - 11905: 0xB4DD, - 25704 - 11905: 0x93AF, - 25705 - 11905: 0xC4A6, - 25706 - 11905: 0x93B0, - 25707 - 11905: 0x93B1, - 25708 - 11905: 0x93B2, - 25709 - 11905: 0xDEFD, - 25710 - 11905: 0x93B3, - 25711 - 11905: 0x93B4, - 25712 - 11905: 0x93B5, - 25713 - 11905: 0x93B6, - 25714 - 11905: 0x93B7, - 25715 - 11905: 0x93B8, - 25716 - 11905: 0x93B9, - 25717 - 11905: 0x93BA, - 25718 - 11905: 0x93BB, - 25719 - 11905: 0x93BC, - 25720 - 11905: 0xC3FE, - 25721 - 11905: 0xC4A1, - 25722 - 11905: 0xDFA1, - 25723 - 11905: 0x93BD, - 25724 - 11905: 0x93BE, - 25725 - 11905: 0x93BF, - 25726 - 11905: 0x93C0, - 25727 - 11905: 0x93C1, - 25728 - 11905: 0x93C2, - 25729 - 11905: 0x93C3, - 25730 - 11905: 0xC1CC, - 25731 - 11905: 0x93C4, - 25732 - 11905: 0xDEFC, - 25733 - 11905: 0xBEEF, - 25734 - 11905: 0x93C5, - 25735 - 11905: 0xC6B2, - 25736 - 11905: 0x93C6, - 25737 - 11905: 0x93C7, - 25738 - 11905: 0x93C8, - 25739 - 11905: 0x93C9, - 25740 - 11905: 0x93CA, - 25741 - 11905: 0x93CB, - 25742 - 11905: 0x93CC, - 25743 - 11905: 0x93CD, - 25744 - 11905: 0x93CE, - 25745 - 11905: 0xB3C5, - 25746 - 11905: 0xC8F6, - 25747 - 11905: 0x93CF, - 25748 - 11905: 0x93D0, - 25749 - 11905: 0xCBBA, - 25750 - 11905: 0xDEFE, - 25751 - 11905: 0x93D1, - 25752 - 11905: 0x93D2, - 25753 - 11905: 0xDFA4, - 25754 - 11905: 0x93D3, - 25755 - 11905: 0x93D4, - 25756 - 11905: 0x93D5, - 25757 - 11905: 0x93D6, - 25758 - 11905: 0xD7B2, - 25759 - 11905: 0x93D7, - 25760 - 11905: 0x93D8, - 25761 - 11905: 0x93D9, - 25762 - 11905: 0x93DA, - 25763 - 11905: 0x93DB, - 25764 - 11905: 0xB3B7, - 25765 - 11905: 0x93DC, - 25766 - 11905: 0x93DD, - 25767 - 11905: 0x93DE, - 25768 - 11905: 0x93DF, - 25769 - 11905: 0xC1C3, - 25770 - 11905: 0x93E0, - 25771 - 11905: 0x93E1, - 25772 - 11905: 0xC7CB, - 25773 - 11905: 0xB2A5, - 25774 - 11905: 0xB4E9, - 25775 - 11905: 0x93E2, - 25776 - 11905: 0xD7AB, - 25777 - 11905: 0x93E3, - 25778 - 11905: 0x93E4, - 25779 - 11905: 0x93E5, - 25780 - 11905: 0x93E6, - 25781 - 11905: 0xC4EC, - 25782 - 11905: 0x93E7, - 25783 - 11905: 0xDFA2, - 25784 - 11905: 0xDFA3, - 25785 - 11905: 0x93E8, - 25786 - 11905: 0xDFA5, - 25787 - 11905: 0x93E9, - 25788 - 11905: 0xBAB3, - 25789 - 11905: 0x93EA, - 25790 - 11905: 0x93EB, - 25791 - 11905: 0x93EC, - 25792 - 11905: 0xDFA6, - 25793 - 11905: 0x93ED, - 25794 - 11905: 0xC0DE, - 25795 - 11905: 0x93EE, - 25796 - 11905: 0x93EF, - 25797 - 11905: 0xC9C3, - 25798 - 11905: 0x93F0, - 25799 - 11905: 0x93F1, - 25800 - 11905: 0x93F2, - 25801 - 11905: 0x93F3, - 25802 - 11905: 0x93F4, - 25803 - 11905: 0x93F5, - 25804 - 11905: 0x93F6, - 25805 - 11905: 0xB2D9, - 25806 - 11905: 0xC7E6, - 25807 - 11905: 0x93F7, - 25808 - 11905: 0xDFA7, - 25809 - 11905: 0x93F8, - 25810 - 11905: 0xC7DC, - 25811 - 11905: 0x93F9, - 25812 - 11905: 0x93FA, - 25813 - 11905: 0x93FB, - 25814 - 11905: 0x93FC, - 25815 - 11905: 0xDFA8, - 25816 - 11905: 0xEBA2, - 25817 - 11905: 0x93FD, - 25818 - 11905: 0x93FE, - 25819 - 11905: 0x9440, - 25820 - 11905: 0x9441, - 25821 - 11905: 0x9442, - 25822 - 11905: 0xCBD3, - 25823 - 11905: 0x9443, - 25824 - 11905: 0x9444, - 25825 - 11905: 0x9445, - 25826 - 11905: 0xDFAA, - 25827 - 11905: 0x9446, - 25828 - 11905: 0xDFA9, - 25829 - 11905: 0x9447, - 25830 - 11905: 0xB2C1, - 25831 - 11905: 0x9448, - 25832 - 11905: 0x9449, - 25833 - 11905: 0x944A, - 25834 - 11905: 0x944B, - 25835 - 11905: 0x944C, - 25836 - 11905: 0x944D, - 25837 - 11905: 0x944E, - 25838 - 11905: 0x944F, - 25839 - 11905: 0x9450, - 25840 - 11905: 0x9451, - 25841 - 11905: 0x9452, - 25842 - 11905: 0x9453, - 25843 - 11905: 0x9454, - 25844 - 11905: 0x9455, - 25845 - 11905: 0x9456, - 25846 - 11905: 0x9457, - 25847 - 11905: 0x9458, - 25848 - 11905: 0x9459, - 25849 - 11905: 0x945A, - 25850 - 11905: 0x945B, - 25851 - 11905: 0x945C, - 25852 - 11905: 0x945D, - 25853 - 11905: 0x945E, - 25854 - 11905: 0x945F, - 25855 - 11905: 0x9460, - 25856 - 11905: 0xC5CA, - 25857 - 11905: 0x9461, - 25858 - 11905: 0x9462, - 25859 - 11905: 0x9463, - 25860 - 11905: 0x9464, - 25861 - 11905: 0x9465, - 25862 - 11905: 0x9466, - 25863 - 11905: 0x9467, - 25864 - 11905: 0x9468, - 25865 - 11905: 0xDFAB, - 25866 - 11905: 0x9469, - 25867 - 11905: 0x946A, - 25868 - 11905: 0x946B, - 25869 - 11905: 0x946C, - 25870 - 11905: 0x946D, - 25871 - 11905: 0x946E, - 25872 - 11905: 0x946F, - 25873 - 11905: 0x9470, - 25874 - 11905: 0xD4DC, - 25875 - 11905: 0x9471, - 25876 - 11905: 0x9472, - 25877 - 11905: 0x9473, - 25878 - 11905: 0x9474, - 25879 - 11905: 0x9475, - 25880 - 11905: 0xC8C1, - 25881 - 11905: 0x9476, - 25882 - 11905: 0x9477, - 25883 - 11905: 0x9478, - 25884 - 11905: 0x9479, - 25885 - 11905: 0x947A, - 25886 - 11905: 0x947B, - 25887 - 11905: 0x947C, - 25888 - 11905: 0x947D, - 25889 - 11905: 0x947E, - 25890 - 11905: 0x9480, - 25891 - 11905: 0x9481, - 25892 - 11905: 0x9482, - 25893 - 11905: 0xDFAC, - 25894 - 11905: 0x9483, - 25895 - 11905: 0x9484, - 25896 - 11905: 0x9485, - 25897 - 11905: 0x9486, - 25898 - 11905: 0x9487, - 25899 - 11905: 0xBEF0, - 25900 - 11905: 0x9488, - 25901 - 11905: 0x9489, - 25902 - 11905: 0xDFAD, - 25903 - 11905: 0xD6A7, - 25904 - 11905: 0x948A, - 25905 - 11905: 0x948B, - 25906 - 11905: 0x948C, - 25907 - 11905: 0x948D, - 25908 - 11905: 0xEAB7, - 25909 - 11905: 0xEBB6, - 25910 - 11905: 0xCAD5, - 25911 - 11905: 0x948E, - 25912 - 11905: 0xD8FC, - 25913 - 11905: 0xB8C4, - 25914 - 11905: 0x948F, - 25915 - 11905: 0xB9A5, - 25916 - 11905: 0x9490, - 25917 - 11905: 0x9491, - 25918 - 11905: 0xB7C5, - 25919 - 11905: 0xD5FE, - 25920 - 11905: 0x9492, - 25921 - 11905: 0x9493, - 25922 - 11905: 0x9494, - 25923 - 11905: 0x9495, - 25924 - 11905: 0x9496, - 25925 - 11905: 0xB9CA, - 25926 - 11905: 0x9497, - 25927 - 11905: 0x9498, - 25928 - 11905: 0xD0A7, - 25929 - 11905: 0xF4CD, - 25930 - 11905: 0x9499, - 25931 - 11905: 0x949A, - 25932 - 11905: 0xB5D0, - 25933 - 11905: 0x949B, - 25934 - 11905: 0x949C, - 25935 - 11905: 0xC3F4, - 25936 - 11905: 0x949D, - 25937 - 11905: 0xBEC8, - 25938 - 11905: 0x949E, - 25939 - 11905: 0x949F, - 25940 - 11905: 0x94A0, - 25941 - 11905: 0xEBB7, - 25942 - 11905: 0xB0BD, - 25943 - 11905: 0x94A1, - 25944 - 11905: 0x94A2, - 25945 - 11905: 0xBDCC, - 25946 - 11905: 0x94A3, - 25947 - 11905: 0xC1B2, - 25948 - 11905: 0x94A4, - 25949 - 11905: 0xB1D6, - 25950 - 11905: 0xB3A8, - 25951 - 11905: 0x94A5, - 25952 - 11905: 0x94A6, - 25953 - 11905: 0x94A7, - 25954 - 11905: 0xB8D2, - 25955 - 11905: 0xC9A2, - 25956 - 11905: 0x94A8, - 25957 - 11905: 0x94A9, - 25958 - 11905: 0xB6D8, - 25959 - 11905: 0x94AA, - 25960 - 11905: 0x94AB, - 25961 - 11905: 0x94AC, - 25962 - 11905: 0x94AD, - 25963 - 11905: 0xEBB8, - 25964 - 11905: 0xBEB4, - 25965 - 11905: 0x94AE, - 25966 - 11905: 0x94AF, - 25967 - 11905: 0x94B0, - 25968 - 11905: 0xCAFD, - 25969 - 11905: 0x94B1, - 25970 - 11905: 0xC7C3, - 25971 - 11905: 0x94B2, - 25972 - 11905: 0xD5FB, - 25973 - 11905: 0x94B3, - 25974 - 11905: 0x94B4, - 25975 - 11905: 0xB7F3, - 25976 - 11905: 0x94B5, - 25977 - 11905: 0x94B6, - 25978 - 11905: 0x94B7, - 25979 - 11905: 0x94B8, - 25980 - 11905: 0x94B9, - 25981 - 11905: 0x94BA, - 25982 - 11905: 0x94BB, - 25983 - 11905: 0x94BC, - 25984 - 11905: 0x94BD, - 25985 - 11905: 0x94BE, - 25986 - 11905: 0x94BF, - 25987 - 11905: 0x94C0, - 25988 - 11905: 0x94C1, - 25989 - 11905: 0x94C2, - 25990 - 11905: 0x94C3, - 25991 - 11905: 0xCEC4, - 25992 - 11905: 0x94C4, - 25993 - 11905: 0x94C5, - 25994 - 11905: 0x94C6, - 25995 - 11905: 0xD5AB, - 25996 - 11905: 0xB1F3, - 25997 - 11905: 0x94C7, - 25998 - 11905: 0x94C8, - 25999 - 11905: 0x94C9, - 26000 - 11905: 0xECB3, - 26001 - 11905: 0xB0DF, - 26002 - 11905: 0x94CA, - 26003 - 11905: 0xECB5, - 26004 - 11905: 0x94CB, - 26005 - 11905: 0x94CC, - 26006 - 11905: 0x94CD, - 26007 - 11905: 0xB6B7, - 26008 - 11905: 0x94CE, - 26009 - 11905: 0xC1CF, - 26010 - 11905: 0x94CF, - 26011 - 11905: 0xF5FA, - 26012 - 11905: 0xD0B1, - 26013 - 11905: 0x94D0, - 26014 - 11905: 0x94D1, - 26015 - 11905: 0xD5E5, - 26016 - 11905: 0x94D2, - 26017 - 11905: 0xCED3, - 26018 - 11905: 0x94D3, - 26019 - 11905: 0x94D4, - 26020 - 11905: 0xBDEF, - 26021 - 11905: 0xB3E2, - 26022 - 11905: 0x94D5, - 26023 - 11905: 0xB8AB, - 26024 - 11905: 0x94D6, - 26025 - 11905: 0xD5B6, - 26026 - 11905: 0x94D7, - 26027 - 11905: 0xEDBD, - 26028 - 11905: 0x94D8, - 26029 - 11905: 0xB6CF, - 26030 - 11905: 0x94D9, - 26031 - 11905: 0xCBB9, - 26032 - 11905: 0xD0C2, - 26033 - 11905: 0x94DA, - 26034 - 11905: 0x94DB, - 26035 - 11905: 0x94DC, - 26036 - 11905: 0x94DD, - 26037 - 11905: 0x94DE, - 26038 - 11905: 0x94DF, - 26039 - 11905: 0x94E0, - 26040 - 11905: 0x94E1, - 26041 - 11905: 0xB7BD, - 26042 - 11905: 0x94E2, - 26043 - 11905: 0x94E3, - 26044 - 11905: 0xECB6, - 26045 - 11905: 0xCAA9, - 26046 - 11905: 0x94E4, - 26047 - 11905: 0x94E5, - 26048 - 11905: 0x94E6, - 26049 - 11905: 0xC5D4, - 26050 - 11905: 0x94E7, - 26051 - 11905: 0xECB9, - 26052 - 11905: 0xECB8, - 26053 - 11905: 0xC2C3, - 26054 - 11905: 0xECB7, - 26055 - 11905: 0x94E8, - 26056 - 11905: 0x94E9, - 26057 - 11905: 0x94EA, - 26058 - 11905: 0x94EB, - 26059 - 11905: 0xD0FD, - 26060 - 11905: 0xECBA, - 26061 - 11905: 0x94EC, - 26062 - 11905: 0xECBB, - 26063 - 11905: 0xD7E5, - 26064 - 11905: 0x94ED, - 26065 - 11905: 0x94EE, - 26066 - 11905: 0xECBC, - 26067 - 11905: 0x94EF, - 26068 - 11905: 0x94F0, - 26069 - 11905: 0x94F1, - 26070 - 11905: 0xECBD, - 26071 - 11905: 0xC6EC, - 26072 - 11905: 0x94F2, - 26073 - 11905: 0x94F3, - 26074 - 11905: 0x94F4, - 26075 - 11905: 0x94F5, - 26076 - 11905: 0x94F6, - 26077 - 11905: 0x94F7, - 26078 - 11905: 0x94F8, - 26079 - 11905: 0x94F9, - 26080 - 11905: 0xCEDE, - 26081 - 11905: 0x94FA, - 26082 - 11905: 0xBCC8, - 26083 - 11905: 0x94FB, - 26084 - 11905: 0x94FC, - 26085 - 11905: 0xC8D5, - 26086 - 11905: 0xB5A9, - 26087 - 11905: 0xBEC9, - 26088 - 11905: 0xD6BC, - 26089 - 11905: 0xD4E7, - 26090 - 11905: 0x94FD, - 26091 - 11905: 0x94FE, - 26092 - 11905: 0xD1AE, - 26093 - 11905: 0xD0F1, - 26094 - 11905: 0xEAB8, - 26095 - 11905: 0xEAB9, - 26096 - 11905: 0xEABA, - 26097 - 11905: 0xBAB5, - 26098 - 11905: 0x9540, - 26099 - 11905: 0x9541, - 26100 - 11905: 0x9542, - 26101 - 11905: 0x9543, - 26102 - 11905: 0xCAB1, - 26103 - 11905: 0xBFF5, - 26104 - 11905: 0x9544, - 26105 - 11905: 0x9545, - 26106 - 11905: 0xCDFA, - 26107 - 11905: 0x9546, - 26108 - 11905: 0x9547, - 26109 - 11905: 0x9548, - 26110 - 11905: 0x9549, - 26111 - 11905: 0x954A, - 26112 - 11905: 0xEAC0, - 26113 - 11905: 0x954B, - 26114 - 11905: 0xB0BA, - 26115 - 11905: 0xEABE, - 26116 - 11905: 0x954C, - 26117 - 11905: 0x954D, - 26118 - 11905: 0xC0A5, - 26119 - 11905: 0x954E, - 26120 - 11905: 0x954F, - 26121 - 11905: 0x9550, - 26122 - 11905: 0xEABB, - 26123 - 11905: 0x9551, - 26124 - 11905: 0xB2FD, - 26125 - 11905: 0x9552, - 26126 - 11905: 0xC3F7, - 26127 - 11905: 0xBBE8, - 26128 - 11905: 0x9553, - 26129 - 11905: 0x9554, - 26130 - 11905: 0x9555, - 26131 - 11905: 0xD2D7, - 26132 - 11905: 0xCEF4, - 26133 - 11905: 0xEABF, - 26134 - 11905: 0x9556, - 26135 - 11905: 0x9557, - 26136 - 11905: 0x9558, - 26137 - 11905: 0xEABC, - 26138 - 11905: 0x9559, - 26139 - 11905: 0x955A, - 26140 - 11905: 0x955B, - 26141 - 11905: 0xEAC3, - 26142 - 11905: 0x955C, - 26143 - 11905: 0xD0C7, - 26144 - 11905: 0xD3B3, - 26145 - 11905: 0x955D, - 26146 - 11905: 0x955E, - 26147 - 11905: 0x955F, - 26148 - 11905: 0x9560, - 26149 - 11905: 0xB4BA, - 26150 - 11905: 0x9561, - 26151 - 11905: 0xC3C1, - 26152 - 11905: 0xD7F2, - 26153 - 11905: 0x9562, - 26154 - 11905: 0x9563, - 26155 - 11905: 0x9564, - 26156 - 11905: 0x9565, - 26157 - 11905: 0xD5D1, - 26158 - 11905: 0x9566, - 26159 - 11905: 0xCAC7, - 26160 - 11905: 0x9567, - 26161 - 11905: 0xEAC5, - 26162 - 11905: 0x9568, - 26163 - 11905: 0x9569, - 26164 - 11905: 0xEAC4, - 26165 - 11905: 0xEAC7, - 26166 - 11905: 0xEAC6, - 26167 - 11905: 0x956A, - 26168 - 11905: 0x956B, - 26169 - 11905: 0x956C, - 26170 - 11905: 0x956D, - 26171 - 11905: 0x956E, - 26172 - 11905: 0xD6E7, - 26173 - 11905: 0x956F, - 26174 - 11905: 0xCFD4, - 26175 - 11905: 0x9570, - 26176 - 11905: 0x9571, - 26177 - 11905: 0xEACB, - 26178 - 11905: 0x9572, - 26179 - 11905: 0xBBCE, - 26180 - 11905: 0x9573, - 26181 - 11905: 0x9574, - 26182 - 11905: 0x9575, - 26183 - 11905: 0x9576, - 26184 - 11905: 0x9577, - 26185 - 11905: 0x9578, - 26186 - 11905: 0x9579, - 26187 - 11905: 0xBDFA, - 26188 - 11905: 0xC9CE, - 26189 - 11905: 0x957A, - 26190 - 11905: 0x957B, - 26191 - 11905: 0xEACC, - 26192 - 11905: 0x957C, - 26193 - 11905: 0x957D, - 26194 - 11905: 0xC9B9, - 26195 - 11905: 0xCFFE, - 26196 - 11905: 0xEACA, - 26197 - 11905: 0xD4CE, - 26198 - 11905: 0xEACD, - 26199 - 11905: 0xEACF, - 26200 - 11905: 0x957E, - 26201 - 11905: 0x9580, - 26202 - 11905: 0xCDED, - 26203 - 11905: 0x9581, - 26204 - 11905: 0x9582, - 26205 - 11905: 0x9583, - 26206 - 11905: 0x9584, - 26207 - 11905: 0xEAC9, - 26208 - 11905: 0x9585, - 26209 - 11905: 0xEACE, - 26210 - 11905: 0x9586, - 26211 - 11905: 0x9587, - 26212 - 11905: 0xCEEE, - 26213 - 11905: 0x9588, - 26214 - 11905: 0xBBDE, - 26215 - 11905: 0x9589, - 26216 - 11905: 0xB3BF, - 26217 - 11905: 0x958A, - 26218 - 11905: 0x958B, - 26219 - 11905: 0x958C, - 26220 - 11905: 0x958D, - 26221 - 11905: 0x958E, - 26222 - 11905: 0xC6D5, - 26223 - 11905: 0xBEB0, - 26224 - 11905: 0xCEFA, - 26225 - 11905: 0x958F, - 26226 - 11905: 0x9590, - 26227 - 11905: 0x9591, - 26228 - 11905: 0xC7E7, - 26229 - 11905: 0x9592, - 26230 - 11905: 0xBEA7, - 26231 - 11905: 0xEAD0, - 26232 - 11905: 0x9593, - 26233 - 11905: 0x9594, - 26234 - 11905: 0xD6C7, - 26235 - 11905: 0x9595, - 26236 - 11905: 0x9596, - 26237 - 11905: 0x9597, - 26238 - 11905: 0xC1C0, - 26239 - 11905: 0x9598, - 26240 - 11905: 0x9599, - 26241 - 11905: 0x959A, - 26242 - 11905: 0xD4DD, - 26243 - 11905: 0x959B, - 26244 - 11905: 0xEAD1, - 26245 - 11905: 0x959C, - 26246 - 11905: 0x959D, - 26247 - 11905: 0xCFBE, - 26248 - 11905: 0x959E, - 26249 - 11905: 0x959F, - 26250 - 11905: 0x95A0, - 26251 - 11905: 0x95A1, - 26252 - 11905: 0xEAD2, - 26253 - 11905: 0x95A2, - 26254 - 11905: 0x95A3, - 26255 - 11905: 0x95A4, - 26256 - 11905: 0x95A5, - 26257 - 11905: 0xCAEE, - 26258 - 11905: 0x95A6, - 26259 - 11905: 0x95A7, - 26260 - 11905: 0x95A8, - 26261 - 11905: 0x95A9, - 26262 - 11905: 0xC5AF, - 26263 - 11905: 0xB0B5, - 26264 - 11905: 0x95AA, - 26265 - 11905: 0x95AB, - 26266 - 11905: 0x95AC, - 26267 - 11905: 0x95AD, - 26268 - 11905: 0x95AE, - 26269 - 11905: 0xEAD4, - 26270 - 11905: 0x95AF, - 26271 - 11905: 0x95B0, - 26272 - 11905: 0x95B1, - 26273 - 11905: 0x95B2, - 26274 - 11905: 0x95B3, - 26275 - 11905: 0x95B4, - 26276 - 11905: 0x95B5, - 26277 - 11905: 0x95B6, - 26278 - 11905: 0x95B7, - 26279 - 11905: 0xEAD3, - 26280 - 11905: 0xF4DF, - 26281 - 11905: 0x95B8, - 26282 - 11905: 0x95B9, - 26283 - 11905: 0x95BA, - 26284 - 11905: 0x95BB, - 26285 - 11905: 0x95BC, - 26286 - 11905: 0xC4BA, - 26287 - 11905: 0x95BD, - 26288 - 11905: 0x95BE, - 26289 - 11905: 0x95BF, - 26290 - 11905: 0x95C0, - 26291 - 11905: 0x95C1, - 26292 - 11905: 0xB1A9, - 26293 - 11905: 0x95C2, - 26294 - 11905: 0x95C3, - 26295 - 11905: 0x95C4, - 26296 - 11905: 0x95C5, - 26297 - 11905: 0xE5DF, - 26298 - 11905: 0x95C6, - 26299 - 11905: 0x95C7, - 26300 - 11905: 0x95C8, - 26301 - 11905: 0x95C9, - 26302 - 11905: 0xEAD5, - 26303 - 11905: 0x95CA, - 26304 - 11905: 0x95CB, - 26305 - 11905: 0x95CC, - 26306 - 11905: 0x95CD, - 26307 - 11905: 0x95CE, - 26308 - 11905: 0x95CF, - 26309 - 11905: 0x95D0, - 26310 - 11905: 0x95D1, - 26311 - 11905: 0x95D2, - 26312 - 11905: 0x95D3, - 26313 - 11905: 0x95D4, - 26314 - 11905: 0x95D5, - 26315 - 11905: 0x95D6, - 26316 - 11905: 0x95D7, - 26317 - 11905: 0x95D8, - 26318 - 11905: 0x95D9, - 26319 - 11905: 0x95DA, - 26320 - 11905: 0x95DB, - 26321 - 11905: 0x95DC, - 26322 - 11905: 0x95DD, - 26323 - 11905: 0x95DE, - 26324 - 11905: 0x95DF, - 26325 - 11905: 0x95E0, - 26326 - 11905: 0x95E1, - 26327 - 11905: 0x95E2, - 26328 - 11905: 0x95E3, - 26329 - 11905: 0xCAEF, - 26330 - 11905: 0x95E4, - 26331 - 11905: 0xEAD6, - 26332 - 11905: 0xEAD7, - 26333 - 11905: 0xC6D8, - 26334 - 11905: 0x95E5, - 26335 - 11905: 0x95E6, - 26336 - 11905: 0x95E7, - 26337 - 11905: 0x95E8, - 26338 - 11905: 0x95E9, - 26339 - 11905: 0x95EA, - 26340 - 11905: 0x95EB, - 26341 - 11905: 0x95EC, - 26342 - 11905: 0xEAD8, - 26343 - 11905: 0x95ED, - 26344 - 11905: 0x95EE, - 26345 - 11905: 0xEAD9, - 26346 - 11905: 0x95EF, - 26347 - 11905: 0x95F0, - 26348 - 11905: 0x95F1, - 26349 - 11905: 0x95F2, - 26350 - 11905: 0x95F3, - 26351 - 11905: 0x95F4, - 26352 - 11905: 0xD4BB, - 26353 - 11905: 0x95F5, - 26354 - 11905: 0xC7FA, - 26355 - 11905: 0xD2B7, - 26356 - 11905: 0xB8FC, - 26357 - 11905: 0x95F6, - 26358 - 11905: 0x95F7, - 26359 - 11905: 0xEAC2, - 26360 - 11905: 0x95F8, - 26361 - 11905: 0xB2DC, - 26362 - 11905: 0x95F9, - 26363 - 11905: 0x95FA, - 26364 - 11905: 0xC2FC, - 26365 - 11905: 0x95FB, - 26366 - 11905: 0xD4F8, - 26367 - 11905: 0xCCE6, - 26368 - 11905: 0xD7EE, - 26369 - 11905: 0x95FC, - 26370 - 11905: 0x95FD, - 26371 - 11905: 0x95FE, - 26372 - 11905: 0x9640, - 26373 - 11905: 0x9641, - 26374 - 11905: 0x9642, - 26375 - 11905: 0x9643, - 26376 - 11905: 0xD4C2, - 26377 - 11905: 0xD3D0, - 26378 - 11905: 0xEBC3, - 26379 - 11905: 0xC5F3, - 26380 - 11905: 0x9644, - 26381 - 11905: 0xB7FE, - 26382 - 11905: 0x9645, - 26383 - 11905: 0x9646, - 26384 - 11905: 0xEBD4, - 26385 - 11905: 0x9647, - 26386 - 11905: 0x9648, - 26387 - 11905: 0x9649, - 26388 - 11905: 0xCBB7, - 26389 - 11905: 0xEBDE, - 26390 - 11905: 0x964A, - 26391 - 11905: 0xC0CA, - 26392 - 11905: 0x964B, - 26393 - 11905: 0x964C, - 26394 - 11905: 0x964D, - 26395 - 11905: 0xCDFB, - 26396 - 11905: 0x964E, - 26397 - 11905: 0xB3AF, - 26398 - 11905: 0x964F, - 26399 - 11905: 0xC6DA, - 26400 - 11905: 0x9650, - 26401 - 11905: 0x9651, - 26402 - 11905: 0x9652, - 26403 - 11905: 0x9653, - 26404 - 11905: 0x9654, - 26405 - 11905: 0x9655, - 26406 - 11905: 0xEBFC, - 26407 - 11905: 0x9656, - 26408 - 11905: 0xC4BE, - 26409 - 11905: 0x9657, - 26410 - 11905: 0xCEB4, - 26411 - 11905: 0xC4A9, - 26412 - 11905: 0xB1BE, - 26413 - 11905: 0xD4FD, - 26414 - 11905: 0x9658, - 26415 - 11905: 0xCAF5, - 26416 - 11905: 0x9659, - 26417 - 11905: 0xD6EC, - 26418 - 11905: 0x965A, - 26419 - 11905: 0x965B, - 26420 - 11905: 0xC6D3, - 26421 - 11905: 0xB6E4, - 26422 - 11905: 0x965C, - 26423 - 11905: 0x965D, - 26424 - 11905: 0x965E, - 26425 - 11905: 0x965F, - 26426 - 11905: 0xBBFA, - 26427 - 11905: 0x9660, - 26428 - 11905: 0x9661, - 26429 - 11905: 0xD0E0, - 26430 - 11905: 0x9662, - 26431 - 11905: 0x9663, - 26432 - 11905: 0xC9B1, - 26433 - 11905: 0x9664, - 26434 - 11905: 0xD4D3, - 26435 - 11905: 0xC8A8, - 26436 - 11905: 0x9665, - 26437 - 11905: 0x9666, - 26438 - 11905: 0xB8CB, - 26439 - 11905: 0x9667, - 26440 - 11905: 0xE8BE, - 26441 - 11905: 0xC9BC, - 26442 - 11905: 0x9668, - 26443 - 11905: 0x9669, - 26444 - 11905: 0xE8BB, - 26445 - 11905: 0x966A, - 26446 - 11905: 0xC0EE, - 26447 - 11905: 0xD0D3, - 26448 - 11905: 0xB2C4, - 26449 - 11905: 0xB4E5, - 26450 - 11905: 0x966B, - 26451 - 11905: 0xE8BC, - 26452 - 11905: 0x966C, - 26453 - 11905: 0x966D, - 26454 - 11905: 0xD5C8, - 26455 - 11905: 0x966E, - 26456 - 11905: 0x966F, - 26457 - 11905: 0x9670, - 26458 - 11905: 0x9671, - 26459 - 11905: 0x9672, - 26460 - 11905: 0xB6C5, - 26461 - 11905: 0x9673, - 26462 - 11905: 0xE8BD, - 26463 - 11905: 0xCAF8, - 26464 - 11905: 0xB8DC, - 26465 - 11905: 0xCCF5, - 26466 - 11905: 0x9674, - 26467 - 11905: 0x9675, - 26468 - 11905: 0x9676, - 26469 - 11905: 0xC0B4, - 26470 - 11905: 0x9677, - 26471 - 11905: 0x9678, - 26472 - 11905: 0xD1EE, - 26473 - 11905: 0xE8BF, - 26474 - 11905: 0xE8C2, - 26475 - 11905: 0x9679, - 26476 - 11905: 0x967A, - 26477 - 11905: 0xBABC, - 26478 - 11905: 0x967B, - 26479 - 11905: 0xB1AD, - 26480 - 11905: 0xBDDC, - 26481 - 11905: 0x967C, - 26482 - 11905: 0xEABD, - 26483 - 11905: 0xE8C3, - 26484 - 11905: 0x967D, - 26485 - 11905: 0xE8C6, - 26486 - 11905: 0x967E, - 26487 - 11905: 0xE8CB, - 26488 - 11905: 0x9680, - 26489 - 11905: 0x9681, - 26490 - 11905: 0x9682, - 26491 - 11905: 0x9683, - 26492 - 11905: 0xE8CC, - 26493 - 11905: 0x9684, - 26494 - 11905: 0xCBC9, - 26495 - 11905: 0xB0E5, - 26496 - 11905: 0x9685, - 26497 - 11905: 0xBCAB, - 26498 - 11905: 0x9686, - 26499 - 11905: 0x9687, - 26500 - 11905: 0xB9B9, - 26501 - 11905: 0x9688, - 26502 - 11905: 0x9689, - 26503 - 11905: 0xE8C1, - 26504 - 11905: 0x968A, - 26505 - 11905: 0xCDF7, - 26506 - 11905: 0x968B, - 26507 - 11905: 0xE8CA, - 26508 - 11905: 0x968C, - 26509 - 11905: 0x968D, - 26510 - 11905: 0x968E, - 26511 - 11905: 0x968F, - 26512 - 11905: 0xCEF6, - 26513 - 11905: 0x9690, - 26514 - 11905: 0x9691, - 26515 - 11905: 0x9692, - 26516 - 11905: 0x9693, - 26517 - 11905: 0xD5ED, - 26518 - 11905: 0x9694, - 26519 - 11905: 0xC1D6, - 26520 - 11905: 0xE8C4, - 26521 - 11905: 0x9695, - 26522 - 11905: 0xC3B6, - 26523 - 11905: 0x9696, - 26524 - 11905: 0xB9FB, - 26525 - 11905: 0xD6A6, - 26526 - 11905: 0xE8C8, - 26527 - 11905: 0x9697, - 26528 - 11905: 0x9698, - 26529 - 11905: 0x9699, - 26530 - 11905: 0xCAE0, - 26531 - 11905: 0xD4E6, - 26532 - 11905: 0x969A, - 26533 - 11905: 0xE8C0, - 26534 - 11905: 0x969B, - 26535 - 11905: 0xE8C5, - 26536 - 11905: 0xE8C7, - 26537 - 11905: 0x969C, - 26538 - 11905: 0xC7B9, - 26539 - 11905: 0xB7E3, - 26540 - 11905: 0x969D, - 26541 - 11905: 0xE8C9, - 26542 - 11905: 0x969E, - 26543 - 11905: 0xBFDD, - 26544 - 11905: 0xE8D2, - 26545 - 11905: 0x969F, - 26546 - 11905: 0x96A0, - 26547 - 11905: 0xE8D7, - 26548 - 11905: 0x96A1, - 26549 - 11905: 0xE8D5, - 26550 - 11905: 0xBCDC, - 26551 - 11905: 0xBCCF, - 26552 - 11905: 0xE8DB, - 26553 - 11905: 0x96A2, - 26554 - 11905: 0x96A3, - 26555 - 11905: 0x96A4, - 26556 - 11905: 0x96A5, - 26557 - 11905: 0x96A6, - 26558 - 11905: 0x96A7, - 26559 - 11905: 0x96A8, - 26560 - 11905: 0x96A9, - 26561 - 11905: 0xE8DE, - 26562 - 11905: 0x96AA, - 26563 - 11905: 0xE8DA, - 26564 - 11905: 0xB1FA, - 26565 - 11905: 0x96AB, - 26566 - 11905: 0x96AC, - 26567 - 11905: 0x96AD, - 26568 - 11905: 0x96AE, - 26569 - 11905: 0x96AF, - 26570 - 11905: 0x96B0, - 26571 - 11905: 0x96B1, - 26572 - 11905: 0x96B2, - 26573 - 11905: 0x96B3, - 26574 - 11905: 0x96B4, - 26575 - 11905: 0xB0D8, - 26576 - 11905: 0xC4B3, - 26577 - 11905: 0xB8CC, - 26578 - 11905: 0xC6E2, - 26579 - 11905: 0xC8BE, - 26580 - 11905: 0xC8E1, - 26581 - 11905: 0x96B5, - 26582 - 11905: 0x96B6, - 26583 - 11905: 0x96B7, - 26584 - 11905: 0xE8CF, - 26585 - 11905: 0xE8D4, - 26586 - 11905: 0xE8D6, - 26587 - 11905: 0x96B8, - 26588 - 11905: 0xB9F1, - 26589 - 11905: 0xE8D8, - 26590 - 11905: 0xD7F5, - 26591 - 11905: 0x96B9, - 26592 - 11905: 0xC4FB, - 26593 - 11905: 0x96BA, - 26594 - 11905: 0xE8DC, - 26595 - 11905: 0x96BB, - 26596 - 11905: 0x96BC, - 26597 - 11905: 0xB2E9, - 26598 - 11905: 0x96BD, - 26599 - 11905: 0x96BE, - 26600 - 11905: 0x96BF, - 26601 - 11905: 0xE8D1, - 26602 - 11905: 0x96C0, - 26603 - 11905: 0x96C1, - 26604 - 11905: 0xBCED, - 26605 - 11905: 0x96C2, - 26606 - 11905: 0x96C3, - 26607 - 11905: 0xBFC2, - 26608 - 11905: 0xE8CD, - 26609 - 11905: 0xD6F9, - 26610 - 11905: 0x96C4, - 26611 - 11905: 0xC1F8, - 26612 - 11905: 0xB2F1, - 26613 - 11905: 0x96C5, - 26614 - 11905: 0x96C6, - 26615 - 11905: 0x96C7, - 26616 - 11905: 0x96C8, - 26617 - 11905: 0x96C9, - 26618 - 11905: 0x96CA, - 26619 - 11905: 0x96CB, - 26620 - 11905: 0x96CC, - 26621 - 11905: 0xE8DF, - 26622 - 11905: 0x96CD, - 26623 - 11905: 0xCAC1, - 26624 - 11905: 0xE8D9, - 26625 - 11905: 0x96CE, - 26626 - 11905: 0x96CF, - 26627 - 11905: 0x96D0, - 26628 - 11905: 0x96D1, - 26629 - 11905: 0xD5A4, - 26630 - 11905: 0x96D2, - 26631 - 11905: 0xB1EA, - 26632 - 11905: 0xD5BB, - 26633 - 11905: 0xE8CE, - 26634 - 11905: 0xE8D0, - 26635 - 11905: 0xB6B0, - 26636 - 11905: 0xE8D3, - 26637 - 11905: 0x96D3, - 26638 - 11905: 0xE8DD, - 26639 - 11905: 0xC0B8, - 26640 - 11905: 0x96D4, - 26641 - 11905: 0xCAF7, - 26642 - 11905: 0x96D5, - 26643 - 11905: 0xCBA8, - 26644 - 11905: 0x96D6, - 26645 - 11905: 0x96D7, - 26646 - 11905: 0xC6DC, - 26647 - 11905: 0xC0F5, - 26648 - 11905: 0x96D8, - 26649 - 11905: 0x96D9, - 26650 - 11905: 0x96DA, - 26651 - 11905: 0x96DB, - 26652 - 11905: 0x96DC, - 26653 - 11905: 0xE8E9, - 26654 - 11905: 0x96DD, - 26655 - 11905: 0x96DE, - 26656 - 11905: 0x96DF, - 26657 - 11905: 0xD0A3, - 26658 - 11905: 0x96E0, - 26659 - 11905: 0x96E1, - 26660 - 11905: 0x96E2, - 26661 - 11905: 0x96E3, - 26662 - 11905: 0x96E4, - 26663 - 11905: 0x96E5, - 26664 - 11905: 0x96E6, - 26665 - 11905: 0xE8F2, - 26666 - 11905: 0xD6EA, - 26667 - 11905: 0x96E7, - 26668 - 11905: 0x96E8, - 26669 - 11905: 0x96E9, - 26670 - 11905: 0x96EA, - 26671 - 11905: 0x96EB, - 26672 - 11905: 0x96EC, - 26673 - 11905: 0x96ED, - 26674 - 11905: 0xE8E0, - 26675 - 11905: 0xE8E1, - 26676 - 11905: 0x96EE, - 26677 - 11905: 0x96EF, - 26678 - 11905: 0x96F0, - 26679 - 11905: 0xD1F9, - 26680 - 11905: 0xBACB, - 26681 - 11905: 0xB8F9, - 26682 - 11905: 0x96F1, - 26683 - 11905: 0x96F2, - 26684 - 11905: 0xB8F1, - 26685 - 11905: 0xD4D4, - 26686 - 11905: 0xE8EF, - 26687 - 11905: 0x96F3, - 26688 - 11905: 0xE8EE, - 26689 - 11905: 0xE8EC, - 26690 - 11905: 0xB9F0, - 26691 - 11905: 0xCCD2, - 26692 - 11905: 0xE8E6, - 26693 - 11905: 0xCEA6, - 26694 - 11905: 0xBFF2, - 26695 - 11905: 0x96F4, - 26696 - 11905: 0xB0B8, - 26697 - 11905: 0xE8F1, - 26698 - 11905: 0xE8F0, - 26699 - 11905: 0x96F5, - 26700 - 11905: 0xD7C0, - 26701 - 11905: 0x96F6, - 26702 - 11905: 0xE8E4, - 26703 - 11905: 0x96F7, - 26704 - 11905: 0xCDA9, - 26705 - 11905: 0xC9A3, - 26706 - 11905: 0x96F8, - 26707 - 11905: 0xBBB8, - 26708 - 11905: 0xBDDB, - 26709 - 11905: 0xE8EA, - 26710 - 11905: 0x96F9, - 26711 - 11905: 0x96FA, - 26712 - 11905: 0x96FB, - 26713 - 11905: 0x96FC, - 26714 - 11905: 0x96FD, - 26715 - 11905: 0x96FE, - 26716 - 11905: 0x9740, - 26717 - 11905: 0x9741, - 26718 - 11905: 0x9742, - 26719 - 11905: 0x9743, - 26720 - 11905: 0xE8E2, - 26721 - 11905: 0xE8E3, - 26722 - 11905: 0xE8E5, - 26723 - 11905: 0xB5B5, - 26724 - 11905: 0xE8E7, - 26725 - 11905: 0xC7C5, - 26726 - 11905: 0xE8EB, - 26727 - 11905: 0xE8ED, - 26728 - 11905: 0xBDB0, - 26729 - 11905: 0xD7AE, - 26730 - 11905: 0x9744, - 26731 - 11905: 0xE8F8, - 26732 - 11905: 0x9745, - 26733 - 11905: 0x9746, - 26734 - 11905: 0x9747, - 26735 - 11905: 0x9748, - 26736 - 11905: 0x9749, - 26737 - 11905: 0x974A, - 26738 - 11905: 0x974B, - 26739 - 11905: 0x974C, - 26740 - 11905: 0xE8F5, - 26741 - 11905: 0x974D, - 26742 - 11905: 0xCDB0, - 26743 - 11905: 0xE8F6, - 26744 - 11905: 0x974E, - 26745 - 11905: 0x974F, - 26746 - 11905: 0x9750, - 26747 - 11905: 0x9751, - 26748 - 11905: 0x9752, - 26749 - 11905: 0x9753, - 26750 - 11905: 0x9754, - 26751 - 11905: 0x9755, - 26752 - 11905: 0x9756, - 26753 - 11905: 0xC1BA, - 26754 - 11905: 0x9757, - 26755 - 11905: 0xE8E8, - 26756 - 11905: 0x9758, - 26757 - 11905: 0xC3B7, - 26758 - 11905: 0xB0F0, - 26759 - 11905: 0x9759, - 26760 - 11905: 0x975A, - 26761 - 11905: 0x975B, - 26762 - 11905: 0x975C, - 26763 - 11905: 0x975D, - 26764 - 11905: 0x975E, - 26765 - 11905: 0x975F, - 26766 - 11905: 0x9760, - 26767 - 11905: 0xE8F4, - 26768 - 11905: 0x9761, - 26769 - 11905: 0x9762, - 26770 - 11905: 0x9763, - 26771 - 11905: 0xE8F7, - 26772 - 11905: 0x9764, - 26773 - 11905: 0x9765, - 26774 - 11905: 0x9766, - 26775 - 11905: 0xB9A3, - 26776 - 11905: 0x9767, - 26777 - 11905: 0x9768, - 26778 - 11905: 0x9769, - 26779 - 11905: 0x976A, - 26780 - 11905: 0x976B, - 26781 - 11905: 0x976C, - 26782 - 11905: 0x976D, - 26783 - 11905: 0x976E, - 26784 - 11905: 0x976F, - 26785 - 11905: 0x9770, - 26786 - 11905: 0xC9D2, - 26787 - 11905: 0x9771, - 26788 - 11905: 0x9772, - 26789 - 11905: 0x9773, - 26790 - 11905: 0xC3CE, - 26791 - 11905: 0xCEE0, - 26792 - 11905: 0xC0E6, - 26793 - 11905: 0x9774, - 26794 - 11905: 0x9775, - 26795 - 11905: 0x9776, - 26796 - 11905: 0x9777, - 26797 - 11905: 0xCBF3, - 26798 - 11905: 0x9778, - 26799 - 11905: 0xCCDD, - 26800 - 11905: 0xD0B5, - 26801 - 11905: 0x9779, - 26802 - 11905: 0x977A, - 26803 - 11905: 0xCAE1, - 26804 - 11905: 0x977B, - 26805 - 11905: 0xE8F3, - 26806 - 11905: 0x977C, - 26807 - 11905: 0x977D, - 26808 - 11905: 0x977E, - 26809 - 11905: 0x9780, - 26810 - 11905: 0x9781, - 26811 - 11905: 0x9782, - 26812 - 11905: 0x9783, - 26813 - 11905: 0x9784, - 26814 - 11905: 0x9785, - 26815 - 11905: 0x9786, - 26816 - 11905: 0xBCEC, - 26817 - 11905: 0x9787, - 26818 - 11905: 0xE8F9, - 26819 - 11905: 0x9788, - 26820 - 11905: 0x9789, - 26821 - 11905: 0x978A, - 26822 - 11905: 0x978B, - 26823 - 11905: 0x978C, - 26824 - 11905: 0x978D, - 26825 - 11905: 0xC3DE, - 26826 - 11905: 0x978E, - 26827 - 11905: 0xC6E5, - 26828 - 11905: 0x978F, - 26829 - 11905: 0xB9F7, - 26830 - 11905: 0x9790, - 26831 - 11905: 0x9791, - 26832 - 11905: 0x9792, - 26833 - 11905: 0x9793, - 26834 - 11905: 0xB0F4, - 26835 - 11905: 0x9794, - 26836 - 11905: 0x9795, - 26837 - 11905: 0xD7D8, - 26838 - 11905: 0x9796, - 26839 - 11905: 0x9797, - 26840 - 11905: 0xBCAC, - 26841 - 11905: 0x9798, - 26842 - 11905: 0xC5EF, - 26843 - 11905: 0x9799, - 26844 - 11905: 0x979A, - 26845 - 11905: 0x979B, - 26846 - 11905: 0x979C, - 26847 - 11905: 0x979D, - 26848 - 11905: 0xCCC4, - 26849 - 11905: 0x979E, - 26850 - 11905: 0x979F, - 26851 - 11905: 0xE9A6, - 26852 - 11905: 0x97A0, - 26853 - 11905: 0x97A1, - 26854 - 11905: 0x97A2, - 26855 - 11905: 0x97A3, - 26856 - 11905: 0x97A4, - 26857 - 11905: 0x97A5, - 26858 - 11905: 0x97A6, - 26859 - 11905: 0x97A7, - 26860 - 11905: 0x97A8, - 26861 - 11905: 0x97A9, - 26862 - 11905: 0xC9AD, - 26863 - 11905: 0x97AA, - 26864 - 11905: 0xE9A2, - 26865 - 11905: 0xC0E2, - 26866 - 11905: 0x97AB, - 26867 - 11905: 0x97AC, - 26868 - 11905: 0x97AD, - 26869 - 11905: 0xBFC3, - 26870 - 11905: 0x97AE, - 26871 - 11905: 0x97AF, - 26872 - 11905: 0x97B0, - 26873 - 11905: 0xE8FE, - 26874 - 11905: 0xB9D7, - 26875 - 11905: 0x97B1, - 26876 - 11905: 0xE8FB, - 26877 - 11905: 0x97B2, - 26878 - 11905: 0x97B3, - 26879 - 11905: 0x97B4, - 26880 - 11905: 0x97B5, - 26881 - 11905: 0xE9A4, - 26882 - 11905: 0x97B6, - 26883 - 11905: 0x97B7, - 26884 - 11905: 0x97B8, - 26885 - 11905: 0xD2CE, - 26886 - 11905: 0x97B9, - 26887 - 11905: 0x97BA, - 26888 - 11905: 0x97BB, - 26889 - 11905: 0x97BC, - 26890 - 11905: 0x97BD, - 26891 - 11905: 0xE9A3, - 26892 - 11905: 0x97BE, - 26893 - 11905: 0xD6B2, - 26894 - 11905: 0xD7B5, - 26895 - 11905: 0x97BF, - 26896 - 11905: 0xE9A7, - 26897 - 11905: 0x97C0, - 26898 - 11905: 0xBDB7, - 26899 - 11905: 0x97C1, - 26900 - 11905: 0x97C2, - 26901 - 11905: 0x97C3, - 26902 - 11905: 0x97C4, - 26903 - 11905: 0x97C5, - 26904 - 11905: 0x97C6, - 26905 - 11905: 0x97C7, - 26906 - 11905: 0x97C8, - 26907 - 11905: 0x97C9, - 26908 - 11905: 0x97CA, - 26909 - 11905: 0x97CB, - 26910 - 11905: 0x97CC, - 26911 - 11905: 0xE8FC, - 26912 - 11905: 0xE8FD, - 26913 - 11905: 0x97CD, - 26914 - 11905: 0x97CE, - 26915 - 11905: 0x97CF, - 26916 - 11905: 0xE9A1, - 26917 - 11905: 0x97D0, - 26918 - 11905: 0x97D1, - 26919 - 11905: 0x97D2, - 26920 - 11905: 0x97D3, - 26921 - 11905: 0x97D4, - 26922 - 11905: 0x97D5, - 26923 - 11905: 0x97D6, - 26924 - 11905: 0x97D7, - 26925 - 11905: 0xCDD6, - 26926 - 11905: 0x97D8, - 26927 - 11905: 0x97D9, - 26928 - 11905: 0xD2AC, - 26929 - 11905: 0x97DA, - 26930 - 11905: 0x97DB, - 26931 - 11905: 0x97DC, - 26932 - 11905: 0xE9B2, - 26933 - 11905: 0x97DD, - 26934 - 11905: 0x97DE, - 26935 - 11905: 0x97DF, - 26936 - 11905: 0x97E0, - 26937 - 11905: 0xE9A9, - 26938 - 11905: 0x97E1, - 26939 - 11905: 0x97E2, - 26940 - 11905: 0x97E3, - 26941 - 11905: 0xB4AA, - 26942 - 11905: 0x97E4, - 26943 - 11905: 0xB4BB, - 26944 - 11905: 0x97E5, - 26945 - 11905: 0x97E6, - 26946 - 11905: 0xE9AB, - 26947 - 11905: 0x97E7, - 26948 - 11905: 0x97E8, - 26949 - 11905: 0x97E9, - 26950 - 11905: 0x97EA, - 26951 - 11905: 0x97EB, - 26952 - 11905: 0x97EC, - 26953 - 11905: 0x97ED, - 26954 - 11905: 0x97EE, - 26955 - 11905: 0x97EF, - 26956 - 11905: 0x97F0, - 26957 - 11905: 0x97F1, - 26958 - 11905: 0x97F2, - 26959 - 11905: 0x97F3, - 26960 - 11905: 0x97F4, - 26961 - 11905: 0x97F5, - 26962 - 11905: 0x97F6, - 26963 - 11905: 0x97F7, - 26964 - 11905: 0xD0A8, - 26965 - 11905: 0x97F8, - 26966 - 11905: 0x97F9, - 26967 - 11905: 0xE9A5, - 26968 - 11905: 0x97FA, - 26969 - 11905: 0x97FB, - 26970 - 11905: 0xB3FE, - 26971 - 11905: 0x97FC, - 26972 - 11905: 0x97FD, - 26973 - 11905: 0xE9AC, - 26974 - 11905: 0xC0E3, - 26975 - 11905: 0x97FE, - 26976 - 11905: 0xE9AA, - 26977 - 11905: 0x9840, - 26978 - 11905: 0x9841, - 26979 - 11905: 0xE9B9, - 26980 - 11905: 0x9842, - 26981 - 11905: 0x9843, - 26982 - 11905: 0xE9B8, - 26983 - 11905: 0x9844, - 26984 - 11905: 0x9845, - 26985 - 11905: 0x9846, - 26986 - 11905: 0x9847, - 26987 - 11905: 0xE9AE, - 26988 - 11905: 0x9848, - 26989 - 11905: 0x9849, - 26990 - 11905: 0xE8FA, - 26991 - 11905: 0x984A, - 26992 - 11905: 0x984B, - 26993 - 11905: 0xE9A8, - 26994 - 11905: 0x984C, - 26995 - 11905: 0x984D, - 26996 - 11905: 0x984E, - 26997 - 11905: 0x984F, - 26998 - 11905: 0x9850, - 26999 - 11905: 0xBFAC, - 27000 - 11905: 0xE9B1, - 27001 - 11905: 0xE9BA, - 27002 - 11905: 0x9851, - 27003 - 11905: 0x9852, - 27004 - 11905: 0xC2A5, - 27005 - 11905: 0x9853, - 27006 - 11905: 0x9854, - 27007 - 11905: 0x9855, - 27008 - 11905: 0xE9AF, - 27009 - 11905: 0x9856, - 27010 - 11905: 0xB8C5, - 27011 - 11905: 0x9857, - 27012 - 11905: 0xE9AD, - 27013 - 11905: 0x9858, - 27014 - 11905: 0xD3DC, - 27015 - 11905: 0xE9B4, - 27016 - 11905: 0xE9B5, - 27017 - 11905: 0xE9B7, - 27018 - 11905: 0x9859, - 27019 - 11905: 0x985A, - 27020 - 11905: 0x985B, - 27021 - 11905: 0xE9C7, - 27022 - 11905: 0x985C, - 27023 - 11905: 0x985D, - 27024 - 11905: 0x985E, - 27025 - 11905: 0x985F, - 27026 - 11905: 0x9860, - 27027 - 11905: 0x9861, - 27028 - 11905: 0xC0C6, - 27029 - 11905: 0xE9C5, - 27030 - 11905: 0x9862, - 27031 - 11905: 0x9863, - 27032 - 11905: 0xE9B0, - 27033 - 11905: 0x9864, - 27034 - 11905: 0x9865, - 27035 - 11905: 0xE9BB, - 27036 - 11905: 0xB0F1, - 27037 - 11905: 0x9866, - 27038 - 11905: 0x9867, - 27039 - 11905: 0x9868, - 27040 - 11905: 0x9869, - 27041 - 11905: 0x986A, - 27042 - 11905: 0x986B, - 27043 - 11905: 0x986C, - 27044 - 11905: 0x986D, - 27045 - 11905: 0x986E, - 27046 - 11905: 0x986F, - 27047 - 11905: 0xE9BC, - 27048 - 11905: 0xD5A5, - 27049 - 11905: 0x9870, - 27050 - 11905: 0x9871, - 27051 - 11905: 0xE9BE, - 27052 - 11905: 0x9872, - 27053 - 11905: 0xE9BF, - 27054 - 11905: 0x9873, - 27055 - 11905: 0x9874, - 27056 - 11905: 0x9875, - 27057 - 11905: 0xE9C1, - 27058 - 11905: 0x9876, - 27059 - 11905: 0x9877, - 27060 - 11905: 0xC1F1, - 27061 - 11905: 0x9878, - 27062 - 11905: 0x9879, - 27063 - 11905: 0xC8B6, - 27064 - 11905: 0x987A, - 27065 - 11905: 0x987B, - 27066 - 11905: 0x987C, - 27067 - 11905: 0xE9BD, - 27068 - 11905: 0x987D, - 27069 - 11905: 0x987E, - 27070 - 11905: 0x9880, - 27071 - 11905: 0x9881, - 27072 - 11905: 0x9882, - 27073 - 11905: 0xE9C2, - 27074 - 11905: 0x9883, - 27075 - 11905: 0x9884, - 27076 - 11905: 0x9885, - 27077 - 11905: 0x9886, - 27078 - 11905: 0x9887, - 27079 - 11905: 0x9888, - 27080 - 11905: 0x9889, - 27081 - 11905: 0x988A, - 27082 - 11905: 0xE9C3, - 27083 - 11905: 0x988B, - 27084 - 11905: 0xE9B3, - 27085 - 11905: 0x988C, - 27086 - 11905: 0xE9B6, - 27087 - 11905: 0x988D, - 27088 - 11905: 0xBBB1, - 27089 - 11905: 0x988E, - 27090 - 11905: 0x988F, - 27091 - 11905: 0x9890, - 27092 - 11905: 0xE9C0, - 27093 - 11905: 0x9891, - 27094 - 11905: 0x9892, - 27095 - 11905: 0x9893, - 27096 - 11905: 0x9894, - 27097 - 11905: 0x9895, - 27098 - 11905: 0x9896, - 27099 - 11905: 0xBCF7, - 27100 - 11905: 0x9897, - 27101 - 11905: 0x9898, - 27102 - 11905: 0x9899, - 27103 - 11905: 0xE9C4, - 27104 - 11905: 0xE9C6, - 27105 - 11905: 0x989A, - 27106 - 11905: 0x989B, - 27107 - 11905: 0x989C, - 27108 - 11905: 0x989D, - 27109 - 11905: 0x989E, - 27110 - 11905: 0x989F, - 27111 - 11905: 0x98A0, - 27112 - 11905: 0x98A1, - 27113 - 11905: 0x98A2, - 27114 - 11905: 0x98A3, - 27115 - 11905: 0x98A4, - 27116 - 11905: 0x98A5, - 27117 - 11905: 0xE9CA, - 27118 - 11905: 0x98A6, - 27119 - 11905: 0x98A7, - 27120 - 11905: 0x98A8, - 27121 - 11905: 0x98A9, - 27122 - 11905: 0xE9CE, - 27123 - 11905: 0x98AA, - 27124 - 11905: 0x98AB, - 27125 - 11905: 0x98AC, - 27126 - 11905: 0x98AD, - 27127 - 11905: 0x98AE, - 27128 - 11905: 0x98AF, - 27129 - 11905: 0x98B0, - 27130 - 11905: 0x98B1, - 27131 - 11905: 0x98B2, - 27132 - 11905: 0x98B3, - 27133 - 11905: 0xB2DB, - 27134 - 11905: 0x98B4, - 27135 - 11905: 0xE9C8, - 27136 - 11905: 0x98B5, - 27137 - 11905: 0x98B6, - 27138 - 11905: 0x98B7, - 27139 - 11905: 0x98B8, - 27140 - 11905: 0x98B9, - 27141 - 11905: 0x98BA, - 27142 - 11905: 0x98BB, - 27143 - 11905: 0x98BC, - 27144 - 11905: 0x98BD, - 27145 - 11905: 0x98BE, - 27146 - 11905: 0xB7AE, - 27147 - 11905: 0x98BF, - 27148 - 11905: 0x98C0, - 27149 - 11905: 0x98C1, - 27150 - 11905: 0x98C2, - 27151 - 11905: 0x98C3, - 27152 - 11905: 0x98C4, - 27153 - 11905: 0x98C5, - 27154 - 11905: 0x98C6, - 27155 - 11905: 0x98C7, - 27156 - 11905: 0x98C8, - 27157 - 11905: 0x98C9, - 27158 - 11905: 0x98CA, - 27159 - 11905: 0xE9CB, - 27160 - 11905: 0xE9CC, - 27161 - 11905: 0x98CB, - 27162 - 11905: 0x98CC, - 27163 - 11905: 0x98CD, - 27164 - 11905: 0x98CE, - 27165 - 11905: 0x98CF, - 27166 - 11905: 0x98D0, - 27167 - 11905: 0xD5C1, - 27168 - 11905: 0x98D1, - 27169 - 11905: 0xC4A3, - 27170 - 11905: 0x98D2, - 27171 - 11905: 0x98D3, - 27172 - 11905: 0x98D4, - 27173 - 11905: 0x98D5, - 27174 - 11905: 0x98D6, - 27175 - 11905: 0x98D7, - 27176 - 11905: 0xE9D8, - 27177 - 11905: 0x98D8, - 27178 - 11905: 0xBAE1, - 27179 - 11905: 0x98D9, - 27180 - 11905: 0x98DA, - 27181 - 11905: 0x98DB, - 27182 - 11905: 0x98DC, - 27183 - 11905: 0xE9C9, - 27184 - 11905: 0x98DD, - 27185 - 11905: 0xD3A3, - 27186 - 11905: 0x98DE, - 27187 - 11905: 0x98DF, - 27188 - 11905: 0x98E0, - 27189 - 11905: 0xE9D4, - 27190 - 11905: 0x98E1, - 27191 - 11905: 0x98E2, - 27192 - 11905: 0x98E3, - 27193 - 11905: 0x98E4, - 27194 - 11905: 0x98E5, - 27195 - 11905: 0x98E6, - 27196 - 11905: 0x98E7, - 27197 - 11905: 0xE9D7, - 27198 - 11905: 0xE9D0, - 27199 - 11905: 0x98E8, - 27200 - 11905: 0x98E9, - 27201 - 11905: 0x98EA, - 27202 - 11905: 0x98EB, - 27203 - 11905: 0x98EC, - 27204 - 11905: 0xE9CF, - 27205 - 11905: 0x98ED, - 27206 - 11905: 0x98EE, - 27207 - 11905: 0xC7C1, - 27208 - 11905: 0x98EF, - 27209 - 11905: 0x98F0, - 27210 - 11905: 0x98F1, - 27211 - 11905: 0x98F2, - 27212 - 11905: 0x98F3, - 27213 - 11905: 0x98F4, - 27214 - 11905: 0x98F5, - 27215 - 11905: 0x98F6, - 27216 - 11905: 0xE9D2, - 27217 - 11905: 0x98F7, - 27218 - 11905: 0x98F8, - 27219 - 11905: 0x98F9, - 27220 - 11905: 0x98FA, - 27221 - 11905: 0x98FB, - 27222 - 11905: 0x98FC, - 27223 - 11905: 0x98FD, - 27224 - 11905: 0xE9D9, - 27225 - 11905: 0xB3C8, - 27226 - 11905: 0x98FE, - 27227 - 11905: 0xE9D3, - 27228 - 11905: 0x9940, - 27229 - 11905: 0x9941, - 27230 - 11905: 0x9942, - 27231 - 11905: 0x9943, - 27232 - 11905: 0x9944, - 27233 - 11905: 0xCFF0, - 27234 - 11905: 0x9945, - 27235 - 11905: 0x9946, - 27236 - 11905: 0x9947, - 27237 - 11905: 0xE9CD, - 27238 - 11905: 0x9948, - 27239 - 11905: 0x9949, - 27240 - 11905: 0x994A, - 27241 - 11905: 0x994B, - 27242 - 11905: 0x994C, - 27243 - 11905: 0x994D, - 27244 - 11905: 0x994E, - 27245 - 11905: 0x994F, - 27246 - 11905: 0x9950, - 27247 - 11905: 0x9951, - 27248 - 11905: 0x9952, - 27249 - 11905: 0xB3F7, - 27250 - 11905: 0x9953, - 27251 - 11905: 0x9954, - 27252 - 11905: 0x9955, - 27253 - 11905: 0x9956, - 27254 - 11905: 0x9957, - 27255 - 11905: 0x9958, - 27256 - 11905: 0x9959, - 27257 - 11905: 0xE9D6, - 27258 - 11905: 0x995A, - 27259 - 11905: 0x995B, - 27260 - 11905: 0xE9DA, - 27261 - 11905: 0x995C, - 27262 - 11905: 0x995D, - 27263 - 11905: 0x995E, - 27264 - 11905: 0xCCB4, - 27265 - 11905: 0x995F, - 27266 - 11905: 0x9960, - 27267 - 11905: 0x9961, - 27268 - 11905: 0xCFAD, - 27269 - 11905: 0x9962, - 27270 - 11905: 0x9963, - 27271 - 11905: 0x9964, - 27272 - 11905: 0x9965, - 27273 - 11905: 0x9966, - 27274 - 11905: 0x9967, - 27275 - 11905: 0x9968, - 27276 - 11905: 0x9969, - 27277 - 11905: 0x996A, - 27278 - 11905: 0xE9D5, - 27279 - 11905: 0x996B, - 27280 - 11905: 0xE9DC, - 27281 - 11905: 0xE9DB, - 27282 - 11905: 0x996C, - 27283 - 11905: 0x996D, - 27284 - 11905: 0x996E, - 27285 - 11905: 0x996F, - 27286 - 11905: 0x9970, - 27287 - 11905: 0xE9DE, - 27288 - 11905: 0x9971, - 27289 - 11905: 0x9972, - 27290 - 11905: 0x9973, - 27291 - 11905: 0x9974, - 27292 - 11905: 0x9975, - 27293 - 11905: 0x9976, - 27294 - 11905: 0x9977, - 27295 - 11905: 0x9978, - 27296 - 11905: 0xE9D1, - 27297 - 11905: 0x9979, - 27298 - 11905: 0x997A, - 27299 - 11905: 0x997B, - 27300 - 11905: 0x997C, - 27301 - 11905: 0x997D, - 27302 - 11905: 0x997E, - 27303 - 11905: 0x9980, - 27304 - 11905: 0x9981, - 27305 - 11905: 0xE9DD, - 27306 - 11905: 0x9982, - 27307 - 11905: 0xE9DF, - 27308 - 11905: 0xC3CA, - 27309 - 11905: 0x9983, - 27310 - 11905: 0x9984, - 27311 - 11905: 0x9985, - 27312 - 11905: 0x9986, - 27313 - 11905: 0x9987, - 27314 - 11905: 0x9988, - 27315 - 11905: 0x9989, - 27316 - 11905: 0x998A, - 27317 - 11905: 0x998B, - 27318 - 11905: 0x998C, - 27319 - 11905: 0x998D, - 27320 - 11905: 0x998E, - 27321 - 11905: 0x998F, - 27322 - 11905: 0x9990, - 27323 - 11905: 0x9991, - 27324 - 11905: 0x9992, - 27325 - 11905: 0x9993, - 27326 - 11905: 0x9994, - 27327 - 11905: 0x9995, - 27328 - 11905: 0x9996, - 27329 - 11905: 0x9997, - 27330 - 11905: 0x9998, - 27331 - 11905: 0x9999, - 27332 - 11905: 0x999A, - 27333 - 11905: 0x999B, - 27334 - 11905: 0x999C, - 27335 - 11905: 0x999D, - 27336 - 11905: 0x999E, - 27337 - 11905: 0x999F, - 27338 - 11905: 0x99A0, - 27339 - 11905: 0x99A1, - 27340 - 11905: 0x99A2, - 27341 - 11905: 0x99A3, - 27342 - 11905: 0x99A4, - 27343 - 11905: 0x99A5, - 27344 - 11905: 0x99A6, - 27345 - 11905: 0x99A7, - 27346 - 11905: 0x99A8, - 27347 - 11905: 0x99A9, - 27348 - 11905: 0x99AA, - 27349 - 11905: 0x99AB, - 27350 - 11905: 0x99AC, - 27351 - 11905: 0x99AD, - 27352 - 11905: 0x99AE, - 27353 - 11905: 0x99AF, - 27354 - 11905: 0x99B0, - 27355 - 11905: 0x99B1, - 27356 - 11905: 0x99B2, - 27357 - 11905: 0x99B3, - 27358 - 11905: 0x99B4, - 27359 - 11905: 0x99B5, - 27360 - 11905: 0x99B6, - 27361 - 11905: 0x99B7, - 27362 - 11905: 0x99B8, - 27363 - 11905: 0x99B9, - 27364 - 11905: 0x99BA, - 27365 - 11905: 0x99BB, - 27366 - 11905: 0x99BC, - 27367 - 11905: 0x99BD, - 27368 - 11905: 0x99BE, - 27369 - 11905: 0x99BF, - 27370 - 11905: 0x99C0, - 27371 - 11905: 0x99C1, - 27372 - 11905: 0x99C2, - 27373 - 11905: 0x99C3, - 27374 - 11905: 0x99C4, - 27375 - 11905: 0x99C5, - 27376 - 11905: 0x99C6, - 27377 - 11905: 0x99C7, - 27378 - 11905: 0x99C8, - 27379 - 11905: 0x99C9, - 27380 - 11905: 0x99CA, - 27381 - 11905: 0x99CB, - 27382 - 11905: 0x99CC, - 27383 - 11905: 0x99CD, - 27384 - 11905: 0x99CE, - 27385 - 11905: 0x99CF, - 27386 - 11905: 0x99D0, - 27387 - 11905: 0x99D1, - 27388 - 11905: 0x99D2, - 27389 - 11905: 0x99D3, - 27390 - 11905: 0x99D4, - 27391 - 11905: 0x99D5, - 27392 - 11905: 0x99D6, - 27393 - 11905: 0x99D7, - 27394 - 11905: 0x99D8, - 27395 - 11905: 0x99D9, - 27396 - 11905: 0x99DA, - 27397 - 11905: 0x99DB, - 27398 - 11905: 0x99DC, - 27399 - 11905: 0x99DD, - 27400 - 11905: 0x99DE, - 27401 - 11905: 0x99DF, - 27402 - 11905: 0x99E0, - 27403 - 11905: 0x99E1, - 27404 - 11905: 0x99E2, - 27405 - 11905: 0x99E3, - 27406 - 11905: 0x99E4, - 27407 - 11905: 0x99E5, - 27408 - 11905: 0x99E6, - 27409 - 11905: 0x99E7, - 27410 - 11905: 0x99E8, - 27411 - 11905: 0x99E9, - 27412 - 11905: 0x99EA, - 27413 - 11905: 0x99EB, - 27414 - 11905: 0x99EC, - 27415 - 11905: 0x99ED, - 27416 - 11905: 0x99EE, - 27417 - 11905: 0x99EF, - 27418 - 11905: 0x99F0, - 27419 - 11905: 0x99F1, - 27420 - 11905: 0x99F2, - 27421 - 11905: 0x99F3, - 27422 - 11905: 0x99F4, - 27423 - 11905: 0x99F5, - 27424 - 11905: 0xC7B7, - 27425 - 11905: 0xB4CE, - 27426 - 11905: 0xBBB6, - 27427 - 11905: 0xD0C0, - 27428 - 11905: 0xECA3, - 27429 - 11905: 0x99F6, - 27430 - 11905: 0x99F7, - 27431 - 11905: 0xC5B7, - 27432 - 11905: 0x99F8, - 27433 - 11905: 0x99F9, - 27434 - 11905: 0x99FA, - 27435 - 11905: 0x99FB, - 27436 - 11905: 0x99FC, - 27437 - 11905: 0x99FD, - 27438 - 11905: 0x99FE, - 27439 - 11905: 0x9A40, - 27440 - 11905: 0x9A41, - 27441 - 11905: 0x9A42, - 27442 - 11905: 0xD3FB, - 27443 - 11905: 0x9A43, - 27444 - 11905: 0x9A44, - 27445 - 11905: 0x9A45, - 27446 - 11905: 0x9A46, - 27447 - 11905: 0xECA4, - 27448 - 11905: 0x9A47, - 27449 - 11905: 0xECA5, - 27450 - 11905: 0xC6DB, - 27451 - 11905: 0x9A48, - 27452 - 11905: 0x9A49, - 27453 - 11905: 0x9A4A, - 27454 - 11905: 0xBFEE, - 27455 - 11905: 0x9A4B, - 27456 - 11905: 0x9A4C, - 27457 - 11905: 0x9A4D, - 27458 - 11905: 0x9A4E, - 27459 - 11905: 0xECA6, - 27460 - 11905: 0x9A4F, - 27461 - 11905: 0x9A50, - 27462 - 11905: 0xECA7, - 27463 - 11905: 0xD0AA, - 27464 - 11905: 0x9A51, - 27465 - 11905: 0xC7B8, - 27466 - 11905: 0x9A52, - 27467 - 11905: 0x9A53, - 27468 - 11905: 0xB8E8, - 27469 - 11905: 0x9A54, - 27470 - 11905: 0x9A55, - 27471 - 11905: 0x9A56, - 27472 - 11905: 0x9A57, - 27473 - 11905: 0x9A58, - 27474 - 11905: 0x9A59, - 27475 - 11905: 0x9A5A, - 27476 - 11905: 0x9A5B, - 27477 - 11905: 0x9A5C, - 27478 - 11905: 0x9A5D, - 27479 - 11905: 0x9A5E, - 27480 - 11905: 0x9A5F, - 27481 - 11905: 0xECA8, - 27482 - 11905: 0x9A60, - 27483 - 11905: 0x9A61, - 27484 - 11905: 0x9A62, - 27485 - 11905: 0x9A63, - 27486 - 11905: 0x9A64, - 27487 - 11905: 0x9A65, - 27488 - 11905: 0x9A66, - 27489 - 11905: 0x9A67, - 27490 - 11905: 0xD6B9, - 27491 - 11905: 0xD5FD, - 27492 - 11905: 0xB4CB, - 27493 - 11905: 0xB2BD, - 27494 - 11905: 0xCEE4, - 27495 - 11905: 0xC6E7, - 27496 - 11905: 0x9A68, - 27497 - 11905: 0x9A69, - 27498 - 11905: 0xCDE1, - 27499 - 11905: 0x9A6A, - 27500 - 11905: 0x9A6B, - 27501 - 11905: 0x9A6C, - 27502 - 11905: 0x9A6D, - 27503 - 11905: 0x9A6E, - 27504 - 11905: 0x9A6F, - 27505 - 11905: 0x9A70, - 27506 - 11905: 0x9A71, - 27507 - 11905: 0x9A72, - 27508 - 11905: 0x9A73, - 27509 - 11905: 0x9A74, - 27510 - 11905: 0x9A75, - 27511 - 11905: 0x9A76, - 27512 - 11905: 0x9A77, - 27513 - 11905: 0xB4F5, - 27514 - 11905: 0x9A78, - 27515 - 11905: 0xCBC0, - 27516 - 11905: 0xBCDF, - 27517 - 11905: 0x9A79, - 27518 - 11905: 0x9A7A, - 27519 - 11905: 0x9A7B, - 27520 - 11905: 0x9A7C, - 27521 - 11905: 0xE9E2, - 27522 - 11905: 0xE9E3, - 27523 - 11905: 0xD1EA, - 27524 - 11905: 0xE9E5, - 27525 - 11905: 0x9A7D, - 27526 - 11905: 0xB4F9, - 27527 - 11905: 0xE9E4, - 27528 - 11905: 0x9A7E, - 27529 - 11905: 0xD1B3, - 27530 - 11905: 0xCAE2, - 27531 - 11905: 0xB2D0, - 27532 - 11905: 0x9A80, - 27533 - 11905: 0xE9E8, - 27534 - 11905: 0x9A81, - 27535 - 11905: 0x9A82, - 27536 - 11905: 0x9A83, - 27537 - 11905: 0x9A84, - 27538 - 11905: 0xE9E6, - 27539 - 11905: 0xE9E7, - 27540 - 11905: 0x9A85, - 27541 - 11905: 0x9A86, - 27542 - 11905: 0xD6B3, - 27543 - 11905: 0x9A87, - 27544 - 11905: 0x9A88, - 27545 - 11905: 0x9A89, - 27546 - 11905: 0xE9E9, - 27547 - 11905: 0xE9EA, - 27548 - 11905: 0x9A8A, - 27549 - 11905: 0x9A8B, - 27550 - 11905: 0x9A8C, - 27551 - 11905: 0x9A8D, - 27552 - 11905: 0x9A8E, - 27553 - 11905: 0xE9EB, - 27554 - 11905: 0x9A8F, - 27555 - 11905: 0x9A90, - 27556 - 11905: 0x9A91, - 27557 - 11905: 0x9A92, - 27558 - 11905: 0x9A93, - 27559 - 11905: 0x9A94, - 27560 - 11905: 0x9A95, - 27561 - 11905: 0x9A96, - 27562 - 11905: 0xE9EC, - 27563 - 11905: 0x9A97, - 27564 - 11905: 0x9A98, - 27565 - 11905: 0x9A99, - 27566 - 11905: 0x9A9A, - 27567 - 11905: 0x9A9B, - 27568 - 11905: 0x9A9C, - 27569 - 11905: 0x9A9D, - 27570 - 11905: 0x9A9E, - 27571 - 11905: 0xECAF, - 27572 - 11905: 0xC5B9, - 27573 - 11905: 0xB6CE, - 27574 - 11905: 0x9A9F, - 27575 - 11905: 0xD2F3, - 27576 - 11905: 0x9AA0, - 27577 - 11905: 0x9AA1, - 27578 - 11905: 0x9AA2, - 27579 - 11905: 0x9AA3, - 27580 - 11905: 0x9AA4, - 27581 - 11905: 0x9AA5, - 27582 - 11905: 0x9AA6, - 27583 - 11905: 0xB5EE, - 27584 - 11905: 0x9AA7, - 27585 - 11905: 0xBBD9, - 27586 - 11905: 0xECB1, - 27587 - 11905: 0x9AA8, - 27588 - 11905: 0x9AA9, - 27589 - 11905: 0xD2E3, - 27590 - 11905: 0x9AAA, - 27591 - 11905: 0x9AAB, - 27592 - 11905: 0x9AAC, - 27593 - 11905: 0x9AAD, - 27594 - 11905: 0x9AAE, - 27595 - 11905: 0xCEE3, - 27596 - 11905: 0x9AAF, - 27597 - 11905: 0xC4B8, - 27598 - 11905: 0x9AB0, - 27599 - 11905: 0xC3BF, - 27600 - 11905: 0x9AB1, - 27601 - 11905: 0x9AB2, - 27602 - 11905: 0xB6BE, - 27603 - 11905: 0xD8B9, - 27604 - 11905: 0xB1C8, - 27605 - 11905: 0xB1CF, - 27606 - 11905: 0xB1D1, - 27607 - 11905: 0xC5FE, - 27608 - 11905: 0x9AB3, - 27609 - 11905: 0xB1D0, - 27610 - 11905: 0x9AB4, - 27611 - 11905: 0xC3AB, - 27612 - 11905: 0x9AB5, - 27613 - 11905: 0x9AB6, - 27614 - 11905: 0x9AB7, - 27615 - 11905: 0x9AB8, - 27616 - 11905: 0x9AB9, - 27617 - 11905: 0xD5B1, - 27618 - 11905: 0x9ABA, - 27619 - 11905: 0x9ABB, - 27620 - 11905: 0x9ABC, - 27621 - 11905: 0x9ABD, - 27622 - 11905: 0x9ABE, - 27623 - 11905: 0x9ABF, - 27624 - 11905: 0x9AC0, - 27625 - 11905: 0x9AC1, - 27626 - 11905: 0xEBA4, - 27627 - 11905: 0xBAC1, - 27628 - 11905: 0x9AC2, - 27629 - 11905: 0x9AC3, - 27630 - 11905: 0x9AC4, - 27631 - 11905: 0xCCBA, - 27632 - 11905: 0x9AC5, - 27633 - 11905: 0x9AC6, - 27634 - 11905: 0x9AC7, - 27635 - 11905: 0xEBA5, - 27636 - 11905: 0x9AC8, - 27637 - 11905: 0xEBA7, - 27638 - 11905: 0x9AC9, - 27639 - 11905: 0x9ACA, - 27640 - 11905: 0x9ACB, - 27641 - 11905: 0xEBA8, - 27642 - 11905: 0x9ACC, - 27643 - 11905: 0x9ACD, - 27644 - 11905: 0x9ACE, - 27645 - 11905: 0xEBA6, - 27646 - 11905: 0x9ACF, - 27647 - 11905: 0x9AD0, - 27648 - 11905: 0x9AD1, - 27649 - 11905: 0x9AD2, - 27650 - 11905: 0x9AD3, - 27651 - 11905: 0x9AD4, - 27652 - 11905: 0x9AD5, - 27653 - 11905: 0xEBA9, - 27654 - 11905: 0xEBAB, - 27655 - 11905: 0xEBAA, - 27656 - 11905: 0x9AD6, - 27657 - 11905: 0x9AD7, - 27658 - 11905: 0x9AD8, - 27659 - 11905: 0x9AD9, - 27660 - 11905: 0x9ADA, - 27661 - 11905: 0xEBAC, - 27662 - 11905: 0x9ADB, - 27663 - 11905: 0xCACF, - 27664 - 11905: 0xD8B5, - 27665 - 11905: 0xC3F1, - 27666 - 11905: 0x9ADC, - 27667 - 11905: 0xC3A5, - 27668 - 11905: 0xC6F8, - 27669 - 11905: 0xEBAD, - 27670 - 11905: 0xC4CA, - 27671 - 11905: 0x9ADD, - 27672 - 11905: 0xEBAE, - 27673 - 11905: 0xEBAF, - 27674 - 11905: 0xEBB0, - 27675 - 11905: 0xB7D5, - 27676 - 11905: 0x9ADE, - 27677 - 11905: 0x9ADF, - 27678 - 11905: 0x9AE0, - 27679 - 11905: 0xB7FA, - 27680 - 11905: 0x9AE1, - 27681 - 11905: 0xEBB1, - 27682 - 11905: 0xC7E2, - 27683 - 11905: 0x9AE2, - 27684 - 11905: 0xEBB3, - 27685 - 11905: 0x9AE3, - 27686 - 11905: 0xBAA4, - 27687 - 11905: 0xD1F5, - 27688 - 11905: 0xB0B1, - 27689 - 11905: 0xEBB2, - 27690 - 11905: 0xEBB4, - 27691 - 11905: 0x9AE4, - 27692 - 11905: 0x9AE5, - 27693 - 11905: 0x9AE6, - 27694 - 11905: 0xB5AA, - 27695 - 11905: 0xC2C8, - 27696 - 11905: 0xC7E8, - 27697 - 11905: 0x9AE7, - 27698 - 11905: 0xEBB5, - 27699 - 11905: 0x9AE8, - 27700 - 11905: 0xCBAE, - 27701 - 11905: 0xE3DF, - 27702 - 11905: 0x9AE9, - 27703 - 11905: 0x9AEA, - 27704 - 11905: 0xD3C0, - 27705 - 11905: 0x9AEB, - 27706 - 11905: 0x9AEC, - 27707 - 11905: 0x9AED, - 27708 - 11905: 0x9AEE, - 27709 - 11905: 0xD9DB, - 27710 - 11905: 0x9AEF, - 27711 - 11905: 0x9AF0, - 27712 - 11905: 0xCDA1, - 27713 - 11905: 0xD6AD, - 27714 - 11905: 0xC7F3, - 27715 - 11905: 0x9AF1, - 27716 - 11905: 0x9AF2, - 27717 - 11905: 0x9AF3, - 27718 - 11905: 0xD9E0, - 27719 - 11905: 0xBBE3, - 27720 - 11905: 0x9AF4, - 27721 - 11905: 0xBABA, - 27722 - 11905: 0xE3E2, - 27723 - 11905: 0x9AF5, - 27724 - 11905: 0x9AF6, - 27725 - 11905: 0x9AF7, - 27726 - 11905: 0x9AF8, - 27727 - 11905: 0x9AF9, - 27728 - 11905: 0xCFAB, - 27729 - 11905: 0x9AFA, - 27730 - 11905: 0x9AFB, - 27731 - 11905: 0x9AFC, - 27732 - 11905: 0xE3E0, - 27733 - 11905: 0xC9C7, - 27734 - 11905: 0x9AFD, - 27735 - 11905: 0xBAB9, - 27736 - 11905: 0x9AFE, - 27737 - 11905: 0x9B40, - 27738 - 11905: 0x9B41, - 27739 - 11905: 0xD1B4, - 27740 - 11905: 0xE3E1, - 27741 - 11905: 0xC8EA, - 27742 - 11905: 0xB9AF, - 27743 - 11905: 0xBDAD, - 27744 - 11905: 0xB3D8, - 27745 - 11905: 0xCEDB, - 27746 - 11905: 0x9B42, - 27747 - 11905: 0x9B43, - 27748 - 11905: 0xCCC0, - 27749 - 11905: 0x9B44, - 27750 - 11905: 0x9B45, - 27751 - 11905: 0x9B46, - 27752 - 11905: 0xE3E8, - 27753 - 11905: 0xE3E9, - 27754 - 11905: 0xCDF4, - 27755 - 11905: 0x9B47, - 27756 - 11905: 0x9B48, - 27757 - 11905: 0x9B49, - 27758 - 11905: 0x9B4A, - 27759 - 11905: 0x9B4B, - 27760 - 11905: 0xCCAD, - 27761 - 11905: 0x9B4C, - 27762 - 11905: 0xBCB3, - 27763 - 11905: 0x9B4D, - 27764 - 11905: 0xE3EA, - 27765 - 11905: 0x9B4E, - 27766 - 11905: 0xE3EB, - 27767 - 11905: 0x9B4F, - 27768 - 11905: 0x9B50, - 27769 - 11905: 0xD0DA, - 27770 - 11905: 0x9B51, - 27771 - 11905: 0x9B52, - 27772 - 11905: 0x9B53, - 27773 - 11905: 0xC6FB, - 27774 - 11905: 0xB7DA, - 27775 - 11905: 0x9B54, - 27776 - 11905: 0x9B55, - 27777 - 11905: 0xC7DF, - 27778 - 11905: 0xD2CA, - 27779 - 11905: 0xCED6, - 27780 - 11905: 0x9B56, - 27781 - 11905: 0xE3E4, - 27782 - 11905: 0xE3EC, - 27783 - 11905: 0x9B57, - 27784 - 11905: 0xC9F2, - 27785 - 11905: 0xB3C1, - 27786 - 11905: 0x9B58, - 27787 - 11905: 0x9B59, - 27788 - 11905: 0xE3E7, - 27789 - 11905: 0x9B5A, - 27790 - 11905: 0x9B5B, - 27791 - 11905: 0xC6E3, - 27792 - 11905: 0xE3E5, - 27793 - 11905: 0x9B5C, - 27794 - 11905: 0x9B5D, - 27795 - 11905: 0xEDB3, - 27796 - 11905: 0xE3E6, - 27797 - 11905: 0x9B5E, - 27798 - 11905: 0x9B5F, - 27799 - 11905: 0x9B60, - 27800 - 11905: 0x9B61, - 27801 - 11905: 0xC9B3, - 27802 - 11905: 0x9B62, - 27803 - 11905: 0xC5E6, - 27804 - 11905: 0x9B63, - 27805 - 11905: 0x9B64, - 27806 - 11905: 0x9B65, - 27807 - 11905: 0xB9B5, - 27808 - 11905: 0x9B66, - 27809 - 11905: 0xC3BB, - 27810 - 11905: 0x9B67, - 27811 - 11905: 0xE3E3, - 27812 - 11905: 0xC5BD, - 27813 - 11905: 0xC1A4, - 27814 - 11905: 0xC2D9, - 27815 - 11905: 0xB2D7, - 27816 - 11905: 0x9B68, - 27817 - 11905: 0xE3ED, - 27818 - 11905: 0xBBA6, - 27819 - 11905: 0xC4AD, - 27820 - 11905: 0x9B69, - 27821 - 11905: 0xE3F0, - 27822 - 11905: 0xBEDA, - 27823 - 11905: 0x9B6A, - 27824 - 11905: 0x9B6B, - 27825 - 11905: 0xE3FB, - 27826 - 11905: 0xE3F5, - 27827 - 11905: 0xBAD3, - 27828 - 11905: 0x9B6C, - 27829 - 11905: 0x9B6D, - 27830 - 11905: 0x9B6E, - 27831 - 11905: 0x9B6F, - 27832 - 11905: 0xB7D0, - 27833 - 11905: 0xD3CD, - 27834 - 11905: 0x9B70, - 27835 - 11905: 0xD6CE, - 27836 - 11905: 0xD5D3, - 27837 - 11905: 0xB9C1, - 27838 - 11905: 0xD5B4, - 27839 - 11905: 0xD1D8, - 27840 - 11905: 0x9B71, - 27841 - 11905: 0x9B72, - 27842 - 11905: 0x9B73, - 27843 - 11905: 0x9B74, - 27844 - 11905: 0xD0B9, - 27845 - 11905: 0xC7F6, - 27846 - 11905: 0x9B75, - 27847 - 11905: 0x9B76, - 27848 - 11905: 0x9B77, - 27849 - 11905: 0xC8AA, - 27850 - 11905: 0xB2B4, - 27851 - 11905: 0x9B78, - 27852 - 11905: 0xC3DA, - 27853 - 11905: 0x9B79, - 27854 - 11905: 0x9B7A, - 27855 - 11905: 0x9B7B, - 27856 - 11905: 0xE3EE, - 27857 - 11905: 0x9B7C, - 27858 - 11905: 0x9B7D, - 27859 - 11905: 0xE3FC, - 27860 - 11905: 0xE3EF, - 27861 - 11905: 0xB7A8, - 27862 - 11905: 0xE3F7, - 27863 - 11905: 0xE3F4, - 27864 - 11905: 0x9B7E, - 27865 - 11905: 0x9B80, - 27866 - 11905: 0x9B81, - 27867 - 11905: 0xB7BA, - 27868 - 11905: 0x9B82, - 27869 - 11905: 0x9B83, - 27870 - 11905: 0xC5A2, - 27871 - 11905: 0x9B84, - 27872 - 11905: 0xE3F6, - 27873 - 11905: 0xC5DD, - 27874 - 11905: 0xB2A8, - 27875 - 11905: 0xC6FC, - 27876 - 11905: 0x9B85, - 27877 - 11905: 0xC4E0, - 27878 - 11905: 0x9B86, - 27879 - 11905: 0x9B87, - 27880 - 11905: 0xD7A2, - 27881 - 11905: 0x9B88, - 27882 - 11905: 0xC0E1, - 27883 - 11905: 0xE3F9, - 27884 - 11905: 0x9B89, - 27885 - 11905: 0x9B8A, - 27886 - 11905: 0xE3FA, - 27887 - 11905: 0xE3FD, - 27888 - 11905: 0xCCA9, - 27889 - 11905: 0xE3F3, - 27890 - 11905: 0x9B8B, - 27891 - 11905: 0xD3BE, - 27892 - 11905: 0x9B8C, - 27893 - 11905: 0xB1C3, - 27894 - 11905: 0xEDB4, - 27895 - 11905: 0xE3F1, - 27896 - 11905: 0xE3F2, - 27897 - 11905: 0x9B8D, - 27898 - 11905: 0xE3F8, - 27899 - 11905: 0xD0BA, - 27900 - 11905: 0xC6C3, - 27901 - 11905: 0xD4F3, - 27902 - 11905: 0xE3FE, - 27903 - 11905: 0x9B8E, - 27904 - 11905: 0x9B8F, - 27905 - 11905: 0xBDE0, - 27906 - 11905: 0x9B90, - 27907 - 11905: 0x9B91, - 27908 - 11905: 0xE4A7, - 27909 - 11905: 0x9B92, - 27910 - 11905: 0x9B93, - 27911 - 11905: 0xE4A6, - 27912 - 11905: 0x9B94, - 27913 - 11905: 0x9B95, - 27914 - 11905: 0x9B96, - 27915 - 11905: 0xD1F3, - 27916 - 11905: 0xE4A3, - 27917 - 11905: 0x9B97, - 27918 - 11905: 0xE4A9, - 27919 - 11905: 0x9B98, - 27920 - 11905: 0x9B99, - 27921 - 11905: 0x9B9A, - 27922 - 11905: 0xC8F7, - 27923 - 11905: 0x9B9B, - 27924 - 11905: 0x9B9C, - 27925 - 11905: 0x9B9D, - 27926 - 11905: 0x9B9E, - 27927 - 11905: 0xCFB4, - 27928 - 11905: 0x9B9F, - 27929 - 11905: 0xE4A8, - 27930 - 11905: 0xE4AE, - 27931 - 11905: 0xC2E5, - 27932 - 11905: 0x9BA0, - 27933 - 11905: 0x9BA1, - 27934 - 11905: 0xB6B4, - 27935 - 11905: 0x9BA2, - 27936 - 11905: 0x9BA3, - 27937 - 11905: 0x9BA4, - 27938 - 11905: 0x9BA5, - 27939 - 11905: 0x9BA6, - 27940 - 11905: 0x9BA7, - 27941 - 11905: 0xBDF2, - 27942 - 11905: 0x9BA8, - 27943 - 11905: 0xE4A2, - 27944 - 11905: 0x9BA9, - 27945 - 11905: 0x9BAA, - 27946 - 11905: 0xBAE9, - 27947 - 11905: 0xE4AA, - 27948 - 11905: 0x9BAB, - 27949 - 11905: 0x9BAC, - 27950 - 11905: 0xE4AC, - 27951 - 11905: 0x9BAD, - 27952 - 11905: 0x9BAE, - 27953 - 11905: 0xB6FD, - 27954 - 11905: 0xD6DE, - 27955 - 11905: 0xE4B2, - 27956 - 11905: 0x9BAF, - 27957 - 11905: 0xE4AD, - 27958 - 11905: 0x9BB0, - 27959 - 11905: 0x9BB1, - 27960 - 11905: 0x9BB2, - 27961 - 11905: 0xE4A1, - 27962 - 11905: 0x9BB3, - 27963 - 11905: 0xBBEE, - 27964 - 11905: 0xCDDD, - 27965 - 11905: 0xC7A2, - 27966 - 11905: 0xC5C9, - 27967 - 11905: 0x9BB4, - 27968 - 11905: 0x9BB5, - 27969 - 11905: 0xC1F7, - 27970 - 11905: 0x9BB6, - 27971 - 11905: 0xE4A4, - 27972 - 11905: 0x9BB7, - 27973 - 11905: 0xC7B3, - 27974 - 11905: 0xBDAC, - 27975 - 11905: 0xBDBD, - 27976 - 11905: 0xE4A5, - 27977 - 11905: 0x9BB8, - 27978 - 11905: 0xD7C7, - 27979 - 11905: 0xB2E2, - 27980 - 11905: 0x9BB9, - 27981 - 11905: 0xE4AB, - 27982 - 11905: 0xBCC3, - 27983 - 11905: 0xE4AF, - 27984 - 11905: 0x9BBA, - 27985 - 11905: 0xBBEB, - 27986 - 11905: 0xE4B0, - 27987 - 11905: 0xC5A8, - 27988 - 11905: 0xE4B1, - 27989 - 11905: 0x9BBB, - 27990 - 11905: 0x9BBC, - 27991 - 11905: 0x9BBD, - 27992 - 11905: 0x9BBE, - 27993 - 11905: 0xD5E3, - 27994 - 11905: 0xBFA3, - 27995 - 11905: 0x9BBF, - 27996 - 11905: 0xE4BA, - 27997 - 11905: 0x9BC0, - 27998 - 11905: 0xE4B7, - 27999 - 11905: 0x9BC1, - 28000 - 11905: 0xE4BB, - 28001 - 11905: 0x9BC2, - 28002 - 11905: 0x9BC3, - 28003 - 11905: 0xE4BD, - 28004 - 11905: 0x9BC4, - 28005 - 11905: 0x9BC5, - 28006 - 11905: 0xC6D6, - 28007 - 11905: 0x9BC6, - 28008 - 11905: 0x9BC7, - 28009 - 11905: 0xBAC6, - 28010 - 11905: 0xC0CB, - 28011 - 11905: 0x9BC8, - 28012 - 11905: 0x9BC9, - 28013 - 11905: 0x9BCA, - 28014 - 11905: 0xB8A1, - 28015 - 11905: 0xE4B4, - 28016 - 11905: 0x9BCB, - 28017 - 11905: 0x9BCC, - 28018 - 11905: 0x9BCD, - 28019 - 11905: 0x9BCE, - 28020 - 11905: 0xD4A1, - 28021 - 11905: 0x9BCF, - 28022 - 11905: 0x9BD0, - 28023 - 11905: 0xBAA3, - 28024 - 11905: 0xBDFE, - 28025 - 11905: 0x9BD1, - 28026 - 11905: 0x9BD2, - 28027 - 11905: 0x9BD3, - 28028 - 11905: 0xE4BC, - 28029 - 11905: 0x9BD4, - 28030 - 11905: 0x9BD5, - 28031 - 11905: 0x9BD6, - 28032 - 11905: 0x9BD7, - 28033 - 11905: 0x9BD8, - 28034 - 11905: 0xCDBF, - 28035 - 11905: 0x9BD9, - 28036 - 11905: 0x9BDA, - 28037 - 11905: 0xC4F9, - 28038 - 11905: 0x9BDB, - 28039 - 11905: 0x9BDC, - 28040 - 11905: 0xCFFB, - 28041 - 11905: 0xC9E6, - 28042 - 11905: 0x9BDD, - 28043 - 11905: 0x9BDE, - 28044 - 11905: 0xD3BF, - 28045 - 11905: 0x9BDF, - 28046 - 11905: 0xCFD1, - 28047 - 11905: 0x9BE0, - 28048 - 11905: 0x9BE1, - 28049 - 11905: 0xE4B3, - 28050 - 11905: 0x9BE2, - 28051 - 11905: 0xE4B8, - 28052 - 11905: 0xE4B9, - 28053 - 11905: 0xCCE9, - 28054 - 11905: 0x9BE3, - 28055 - 11905: 0x9BE4, - 28056 - 11905: 0x9BE5, - 28057 - 11905: 0x9BE6, - 28058 - 11905: 0x9BE7, - 28059 - 11905: 0xCCCE, - 28060 - 11905: 0x9BE8, - 28061 - 11905: 0xC0D4, - 28062 - 11905: 0xE4B5, - 28063 - 11905: 0xC1B0, - 28064 - 11905: 0xE4B6, - 28065 - 11905: 0xCED0, - 28066 - 11905: 0x9BE9, - 28067 - 11905: 0xBBC1, - 28068 - 11905: 0xB5D3, - 28069 - 11905: 0x9BEA, - 28070 - 11905: 0xC8F3, - 28071 - 11905: 0xBDA7, - 28072 - 11905: 0xD5C7, - 28073 - 11905: 0xC9AC, - 28074 - 11905: 0xB8A2, - 28075 - 11905: 0xE4CA, - 28076 - 11905: 0x9BEB, - 28077 - 11905: 0x9BEC, - 28078 - 11905: 0xE4CC, - 28079 - 11905: 0xD1C4, - 28080 - 11905: 0x9BED, - 28081 - 11905: 0x9BEE, - 28082 - 11905: 0xD2BA, - 28083 - 11905: 0x9BEF, - 28084 - 11905: 0x9BF0, - 28085 - 11905: 0xBAAD, - 28086 - 11905: 0x9BF1, - 28087 - 11905: 0x9BF2, - 28088 - 11905: 0xBAD4, - 28089 - 11905: 0x9BF3, - 28090 - 11905: 0x9BF4, - 28091 - 11905: 0x9BF5, - 28092 - 11905: 0x9BF6, - 28093 - 11905: 0x9BF7, - 28094 - 11905: 0x9BF8, - 28095 - 11905: 0xE4C3, - 28096 - 11905: 0xB5ED, - 28097 - 11905: 0x9BF9, - 28098 - 11905: 0x9BFA, - 28099 - 11905: 0x9BFB, - 28100 - 11905: 0xD7CD, - 28101 - 11905: 0xE4C0, - 28102 - 11905: 0xCFFD, - 28103 - 11905: 0xE4BF, - 28104 - 11905: 0x9BFC, - 28105 - 11905: 0x9BFD, - 28106 - 11905: 0x9BFE, - 28107 - 11905: 0xC1DC, - 28108 - 11905: 0xCCCA, - 28109 - 11905: 0x9C40, - 28110 - 11905: 0x9C41, - 28111 - 11905: 0x9C42, - 28112 - 11905: 0x9C43, - 28113 - 11905: 0xCAE7, - 28114 - 11905: 0x9C44, - 28115 - 11905: 0x9C45, - 28116 - 11905: 0x9C46, - 28117 - 11905: 0x9C47, - 28118 - 11905: 0xC4D7, - 28119 - 11905: 0x9C48, - 28120 - 11905: 0xCCD4, - 28121 - 11905: 0xE4C8, - 28122 - 11905: 0x9C49, - 28123 - 11905: 0x9C4A, - 28124 - 11905: 0x9C4B, - 28125 - 11905: 0xE4C7, - 28126 - 11905: 0xE4C1, - 28127 - 11905: 0x9C4C, - 28128 - 11905: 0xE4C4, - 28129 - 11905: 0xB5AD, - 28130 - 11905: 0x9C4D, - 28131 - 11905: 0x9C4E, - 28132 - 11905: 0xD3D9, - 28133 - 11905: 0x9C4F, - 28134 - 11905: 0xE4C6, - 28135 - 11905: 0x9C50, - 28136 - 11905: 0x9C51, - 28137 - 11905: 0x9C52, - 28138 - 11905: 0x9C53, - 28139 - 11905: 0xD2F9, - 28140 - 11905: 0xB4E3, - 28141 - 11905: 0x9C54, - 28142 - 11905: 0xBBB4, - 28143 - 11905: 0x9C55, - 28144 - 11905: 0x9C56, - 28145 - 11905: 0xC9EE, - 28146 - 11905: 0x9C57, - 28147 - 11905: 0xB4BE, - 28148 - 11905: 0x9C58, - 28149 - 11905: 0x9C59, - 28150 - 11905: 0x9C5A, - 28151 - 11905: 0xBBEC, - 28152 - 11905: 0x9C5B, - 28153 - 11905: 0xD1CD, - 28154 - 11905: 0x9C5C, - 28155 - 11905: 0xCCED, - 28156 - 11905: 0xEDB5, - 28157 - 11905: 0x9C5D, - 28158 - 11905: 0x9C5E, - 28159 - 11905: 0x9C5F, - 28160 - 11905: 0x9C60, - 28161 - 11905: 0x9C61, - 28162 - 11905: 0x9C62, - 28163 - 11905: 0x9C63, - 28164 - 11905: 0x9C64, - 28165 - 11905: 0xC7E5, - 28166 - 11905: 0x9C65, - 28167 - 11905: 0x9C66, - 28168 - 11905: 0x9C67, - 28169 - 11905: 0x9C68, - 28170 - 11905: 0xD4A8, - 28171 - 11905: 0x9C69, - 28172 - 11905: 0xE4CB, - 28173 - 11905: 0xD7D5, - 28174 - 11905: 0xE4C2, - 28175 - 11905: 0x9C6A, - 28176 - 11905: 0xBDA5, - 28177 - 11905: 0xE4C5, - 28178 - 11905: 0x9C6B, - 28179 - 11905: 0x9C6C, - 28180 - 11905: 0xD3E6, - 28181 - 11905: 0x9C6D, - 28182 - 11905: 0xE4C9, - 28183 - 11905: 0xC9F8, - 28184 - 11905: 0x9C6E, - 28185 - 11905: 0x9C6F, - 28186 - 11905: 0xE4BE, - 28187 - 11905: 0x9C70, - 28188 - 11905: 0x9C71, - 28189 - 11905: 0xD3E5, - 28190 - 11905: 0x9C72, - 28191 - 11905: 0x9C73, - 28192 - 11905: 0xC7FE, - 28193 - 11905: 0xB6C9, - 28194 - 11905: 0x9C74, - 28195 - 11905: 0xD4FC, - 28196 - 11905: 0xB2B3, - 28197 - 11905: 0xE4D7, - 28198 - 11905: 0x9C75, - 28199 - 11905: 0x9C76, - 28200 - 11905: 0x9C77, - 28201 - 11905: 0xCEC2, - 28202 - 11905: 0x9C78, - 28203 - 11905: 0xE4CD, - 28204 - 11905: 0x9C79, - 28205 - 11905: 0xCEBC, - 28206 - 11905: 0x9C7A, - 28207 - 11905: 0xB8DB, - 28208 - 11905: 0x9C7B, - 28209 - 11905: 0x9C7C, - 28210 - 11905: 0xE4D6, - 28211 - 11905: 0x9C7D, - 28212 - 11905: 0xBFCA, - 28213 - 11905: 0x9C7E, - 28214 - 11905: 0x9C80, - 28215 - 11905: 0x9C81, - 28216 - 11905: 0xD3CE, - 28217 - 11905: 0x9C82, - 28218 - 11905: 0xC3EC, - 28219 - 11905: 0x9C83, - 28220 - 11905: 0x9C84, - 28221 - 11905: 0x9C85, - 28222 - 11905: 0x9C86, - 28223 - 11905: 0x9C87, - 28224 - 11905: 0x9C88, - 28225 - 11905: 0x9C89, - 28226 - 11905: 0x9C8A, - 28227 - 11905: 0xC5C8, - 28228 - 11905: 0xE4D8, - 28229 - 11905: 0x9C8B, - 28230 - 11905: 0x9C8C, - 28231 - 11905: 0x9C8D, - 28232 - 11905: 0x9C8E, - 28233 - 11905: 0x9C8F, - 28234 - 11905: 0x9C90, - 28235 - 11905: 0x9C91, - 28236 - 11905: 0x9C92, - 28237 - 11905: 0xCDC4, - 28238 - 11905: 0xE4CF, - 28239 - 11905: 0x9C93, - 28240 - 11905: 0x9C94, - 28241 - 11905: 0x9C95, - 28242 - 11905: 0x9C96, - 28243 - 11905: 0xE4D4, - 28244 - 11905: 0xE4D5, - 28245 - 11905: 0x9C97, - 28246 - 11905: 0xBAFE, - 28247 - 11905: 0x9C98, - 28248 - 11905: 0xCFE6, - 28249 - 11905: 0x9C99, - 28250 - 11905: 0x9C9A, - 28251 - 11905: 0xD5BF, - 28252 - 11905: 0x9C9B, - 28253 - 11905: 0x9C9C, - 28254 - 11905: 0x9C9D, - 28255 - 11905: 0xE4D2, - 28256 - 11905: 0x9C9E, - 28257 - 11905: 0x9C9F, - 28258 - 11905: 0x9CA0, - 28259 - 11905: 0x9CA1, - 28260 - 11905: 0x9CA2, - 28261 - 11905: 0x9CA3, - 28262 - 11905: 0x9CA4, - 28263 - 11905: 0x9CA5, - 28264 - 11905: 0x9CA6, - 28265 - 11905: 0x9CA7, - 28266 - 11905: 0x9CA8, - 28267 - 11905: 0xE4D0, - 28268 - 11905: 0x9CA9, - 28269 - 11905: 0x9CAA, - 28270 - 11905: 0xE4CE, - 28271 - 11905: 0x9CAB, - 28272 - 11905: 0x9CAC, - 28273 - 11905: 0x9CAD, - 28274 - 11905: 0x9CAE, - 28275 - 11905: 0x9CAF, - 28276 - 11905: 0x9CB0, - 28277 - 11905: 0x9CB1, - 28278 - 11905: 0x9CB2, - 28279 - 11905: 0x9CB3, - 28280 - 11905: 0x9CB4, - 28281 - 11905: 0x9CB5, - 28282 - 11905: 0x9CB6, - 28283 - 11905: 0x9CB7, - 28284 - 11905: 0x9CB8, - 28285 - 11905: 0x9CB9, - 28286 - 11905: 0xCDE5, - 28287 - 11905: 0xCAAA, - 28288 - 11905: 0x9CBA, - 28289 - 11905: 0x9CBB, - 28290 - 11905: 0x9CBC, - 28291 - 11905: 0xC0A3, - 28292 - 11905: 0x9CBD, - 28293 - 11905: 0xBDA6, - 28294 - 11905: 0xE4D3, - 28295 - 11905: 0x9CBE, - 28296 - 11905: 0x9CBF, - 28297 - 11905: 0xB8C8, - 28298 - 11905: 0x9CC0, - 28299 - 11905: 0x9CC1, - 28300 - 11905: 0x9CC2, - 28301 - 11905: 0x9CC3, - 28302 - 11905: 0x9CC4, - 28303 - 11905: 0xE4E7, - 28304 - 11905: 0xD4B4, - 28305 - 11905: 0x9CC5, - 28306 - 11905: 0x9CC6, - 28307 - 11905: 0x9CC7, - 28308 - 11905: 0x9CC8, - 28309 - 11905: 0x9CC9, - 28310 - 11905: 0x9CCA, - 28311 - 11905: 0x9CCB, - 28312 - 11905: 0xE4DB, - 28313 - 11905: 0x9CCC, - 28314 - 11905: 0x9CCD, - 28315 - 11905: 0x9CCE, - 28316 - 11905: 0xC1EF, - 28317 - 11905: 0x9CCF, - 28318 - 11905: 0x9CD0, - 28319 - 11905: 0xE4E9, - 28320 - 11905: 0x9CD1, - 28321 - 11905: 0x9CD2, - 28322 - 11905: 0xD2E7, - 28323 - 11905: 0x9CD3, - 28324 - 11905: 0x9CD4, - 28325 - 11905: 0xE4DF, - 28326 - 11905: 0x9CD5, - 28327 - 11905: 0xE4E0, - 28328 - 11905: 0x9CD6, - 28329 - 11905: 0x9CD7, - 28330 - 11905: 0xCFAA, - 28331 - 11905: 0x9CD8, - 28332 - 11905: 0x9CD9, - 28333 - 11905: 0x9CDA, - 28334 - 11905: 0x9CDB, - 28335 - 11905: 0xCBDD, - 28336 - 11905: 0x9CDC, - 28337 - 11905: 0xE4DA, - 28338 - 11905: 0xE4D1, - 28339 - 11905: 0x9CDD, - 28340 - 11905: 0xE4E5, - 28341 - 11905: 0x9CDE, - 28342 - 11905: 0xC8DC, - 28343 - 11905: 0xE4E3, - 28344 - 11905: 0x9CDF, - 28345 - 11905: 0x9CE0, - 28346 - 11905: 0xC4E7, - 28347 - 11905: 0xE4E2, - 28348 - 11905: 0x9CE1, - 28349 - 11905: 0xE4E1, - 28350 - 11905: 0x9CE2, - 28351 - 11905: 0x9CE3, - 28352 - 11905: 0x9CE4, - 28353 - 11905: 0xB3FC, - 28354 - 11905: 0xE4E8, - 28355 - 11905: 0x9CE5, - 28356 - 11905: 0x9CE6, - 28357 - 11905: 0x9CE7, - 28358 - 11905: 0x9CE8, - 28359 - 11905: 0xB5E1, - 28360 - 11905: 0x9CE9, - 28361 - 11905: 0x9CEA, - 28362 - 11905: 0x9CEB, - 28363 - 11905: 0xD7CC, - 28364 - 11905: 0x9CEC, - 28365 - 11905: 0x9CED, - 28366 - 11905: 0x9CEE, - 28367 - 11905: 0xE4E6, - 28368 - 11905: 0x9CEF, - 28369 - 11905: 0xBBAC, - 28370 - 11905: 0x9CF0, - 28371 - 11905: 0xD7D2, - 28372 - 11905: 0xCCCF, - 28373 - 11905: 0xEBF8, - 28374 - 11905: 0x9CF1, - 28375 - 11905: 0xE4E4, - 28376 - 11905: 0x9CF2, - 28377 - 11905: 0x9CF3, - 28378 - 11905: 0xB9F6, - 28379 - 11905: 0x9CF4, - 28380 - 11905: 0x9CF5, - 28381 - 11905: 0x9CF6, - 28382 - 11905: 0xD6CD, - 28383 - 11905: 0xE4D9, - 28384 - 11905: 0xE4DC, - 28385 - 11905: 0xC2FA, - 28386 - 11905: 0xE4DE, - 28387 - 11905: 0x9CF7, - 28388 - 11905: 0xC2CB, - 28389 - 11905: 0xC0C4, - 28390 - 11905: 0xC2D0, - 28391 - 11905: 0x9CF8, - 28392 - 11905: 0xB1F5, - 28393 - 11905: 0xCCB2, - 28394 - 11905: 0x9CF9, - 28395 - 11905: 0x9CFA, - 28396 - 11905: 0x9CFB, - 28397 - 11905: 0x9CFC, - 28398 - 11905: 0x9CFD, - 28399 - 11905: 0x9CFE, - 28400 - 11905: 0x9D40, - 28401 - 11905: 0x9D41, - 28402 - 11905: 0x9D42, - 28403 - 11905: 0x9D43, - 28404 - 11905: 0xB5CE, - 28405 - 11905: 0x9D44, - 28406 - 11905: 0x9D45, - 28407 - 11905: 0x9D46, - 28408 - 11905: 0x9D47, - 28409 - 11905: 0xE4EF, - 28410 - 11905: 0x9D48, - 28411 - 11905: 0x9D49, - 28412 - 11905: 0x9D4A, - 28413 - 11905: 0x9D4B, - 28414 - 11905: 0x9D4C, - 28415 - 11905: 0x9D4D, - 28416 - 11905: 0x9D4E, - 28417 - 11905: 0x9D4F, - 28418 - 11905: 0xC6AF, - 28419 - 11905: 0x9D50, - 28420 - 11905: 0x9D51, - 28421 - 11905: 0x9D52, - 28422 - 11905: 0xC6E1, - 28423 - 11905: 0x9D53, - 28424 - 11905: 0x9D54, - 28425 - 11905: 0xE4F5, - 28426 - 11905: 0x9D55, - 28427 - 11905: 0x9D56, - 28428 - 11905: 0x9D57, - 28429 - 11905: 0x9D58, - 28430 - 11905: 0x9D59, - 28431 - 11905: 0xC2A9, - 28432 - 11905: 0x9D5A, - 28433 - 11905: 0x9D5B, - 28434 - 11905: 0x9D5C, - 28435 - 11905: 0xC0EC, - 28436 - 11905: 0xD1DD, - 28437 - 11905: 0xE4EE, - 28438 - 11905: 0x9D5D, - 28439 - 11905: 0x9D5E, - 28440 - 11905: 0x9D5F, - 28441 - 11905: 0x9D60, - 28442 - 11905: 0x9D61, - 28443 - 11905: 0x9D62, - 28444 - 11905: 0x9D63, - 28445 - 11905: 0x9D64, - 28446 - 11905: 0x9D65, - 28447 - 11905: 0x9D66, - 28448 - 11905: 0xC4AE, - 28449 - 11905: 0x9D67, - 28450 - 11905: 0x9D68, - 28451 - 11905: 0x9D69, - 28452 - 11905: 0xE4ED, - 28453 - 11905: 0x9D6A, - 28454 - 11905: 0x9D6B, - 28455 - 11905: 0x9D6C, - 28456 - 11905: 0x9D6D, - 28457 - 11905: 0xE4F6, - 28458 - 11905: 0xE4F4, - 28459 - 11905: 0xC2FE, - 28460 - 11905: 0x9D6E, - 28461 - 11905: 0xE4DD, - 28462 - 11905: 0x9D6F, - 28463 - 11905: 0xE4F0, - 28464 - 11905: 0x9D70, - 28465 - 11905: 0xCAFE, - 28466 - 11905: 0x9D71, - 28467 - 11905: 0xD5C4, - 28468 - 11905: 0x9D72, - 28469 - 11905: 0x9D73, - 28470 - 11905: 0xE4F1, - 28471 - 11905: 0x9D74, - 28472 - 11905: 0x9D75, - 28473 - 11905: 0x9D76, - 28474 - 11905: 0x9D77, - 28475 - 11905: 0x9D78, - 28476 - 11905: 0x9D79, - 28477 - 11905: 0x9D7A, - 28478 - 11905: 0xD1FA, - 28479 - 11905: 0x9D7B, - 28480 - 11905: 0x9D7C, - 28481 - 11905: 0x9D7D, - 28482 - 11905: 0x9D7E, - 28483 - 11905: 0x9D80, - 28484 - 11905: 0x9D81, - 28485 - 11905: 0x9D82, - 28486 - 11905: 0xE4EB, - 28487 - 11905: 0xE4EC, - 28488 - 11905: 0x9D83, - 28489 - 11905: 0x9D84, - 28490 - 11905: 0x9D85, - 28491 - 11905: 0xE4F2, - 28492 - 11905: 0x9D86, - 28493 - 11905: 0xCEAB, - 28494 - 11905: 0x9D87, - 28495 - 11905: 0x9D88, - 28496 - 11905: 0x9D89, - 28497 - 11905: 0x9D8A, - 28498 - 11905: 0x9D8B, - 28499 - 11905: 0x9D8C, - 28500 - 11905: 0x9D8D, - 28501 - 11905: 0x9D8E, - 28502 - 11905: 0x9D8F, - 28503 - 11905: 0x9D90, - 28504 - 11905: 0xC5CB, - 28505 - 11905: 0x9D91, - 28506 - 11905: 0x9D92, - 28507 - 11905: 0x9D93, - 28508 - 11905: 0xC7B1, - 28509 - 11905: 0x9D94, - 28510 - 11905: 0xC2BA, - 28511 - 11905: 0x9D95, - 28512 - 11905: 0x9D96, - 28513 - 11905: 0x9D97, - 28514 - 11905: 0xE4EA, - 28515 - 11905: 0x9D98, - 28516 - 11905: 0x9D99, - 28517 - 11905: 0x9D9A, - 28518 - 11905: 0xC1CA, - 28519 - 11905: 0x9D9B, - 28520 - 11905: 0x9D9C, - 28521 - 11905: 0x9D9D, - 28522 - 11905: 0x9D9E, - 28523 - 11905: 0x9D9F, - 28524 - 11905: 0x9DA0, - 28525 - 11905: 0xCCB6, - 28526 - 11905: 0xB3B1, - 28527 - 11905: 0x9DA1, - 28528 - 11905: 0x9DA2, - 28529 - 11905: 0x9DA3, - 28530 - 11905: 0xE4FB, - 28531 - 11905: 0x9DA4, - 28532 - 11905: 0xE4F3, - 28533 - 11905: 0x9DA5, - 28534 - 11905: 0x9DA6, - 28535 - 11905: 0x9DA7, - 28536 - 11905: 0xE4FA, - 28537 - 11905: 0x9DA8, - 28538 - 11905: 0xE4FD, - 28539 - 11905: 0x9DA9, - 28540 - 11905: 0xE4FC, - 28541 - 11905: 0x9DAA, - 28542 - 11905: 0x9DAB, - 28543 - 11905: 0x9DAC, - 28544 - 11905: 0x9DAD, - 28545 - 11905: 0x9DAE, - 28546 - 11905: 0x9DAF, - 28547 - 11905: 0x9DB0, - 28548 - 11905: 0xB3CE, - 28549 - 11905: 0x9DB1, - 28550 - 11905: 0x9DB2, - 28551 - 11905: 0x9DB3, - 28552 - 11905: 0xB3BA, - 28553 - 11905: 0xE4F7, - 28554 - 11905: 0x9DB4, - 28555 - 11905: 0x9DB5, - 28556 - 11905: 0xE4F9, - 28557 - 11905: 0xE4F8, - 28558 - 11905: 0xC5EC, - 28559 - 11905: 0x9DB6, - 28560 - 11905: 0x9DB7, - 28561 - 11905: 0x9DB8, - 28562 - 11905: 0x9DB9, - 28563 - 11905: 0x9DBA, - 28564 - 11905: 0x9DBB, - 28565 - 11905: 0x9DBC, - 28566 - 11905: 0x9DBD, - 28567 - 11905: 0x9DBE, - 28568 - 11905: 0x9DBF, - 28569 - 11905: 0x9DC0, - 28570 - 11905: 0x9DC1, - 28571 - 11905: 0x9DC2, - 28572 - 11905: 0xC0BD, - 28573 - 11905: 0x9DC3, - 28574 - 11905: 0x9DC4, - 28575 - 11905: 0x9DC5, - 28576 - 11905: 0x9DC6, - 28577 - 11905: 0xD4E8, - 28578 - 11905: 0x9DC7, - 28579 - 11905: 0x9DC8, - 28580 - 11905: 0x9DC9, - 28581 - 11905: 0x9DCA, - 28582 - 11905: 0x9DCB, - 28583 - 11905: 0xE5A2, - 28584 - 11905: 0x9DCC, - 28585 - 11905: 0x9DCD, - 28586 - 11905: 0x9DCE, - 28587 - 11905: 0x9DCF, - 28588 - 11905: 0x9DD0, - 28589 - 11905: 0x9DD1, - 28590 - 11905: 0x9DD2, - 28591 - 11905: 0x9DD3, - 28592 - 11905: 0x9DD4, - 28593 - 11905: 0x9DD5, - 28594 - 11905: 0x9DD6, - 28595 - 11905: 0xB0C4, - 28596 - 11905: 0x9DD7, - 28597 - 11905: 0x9DD8, - 28598 - 11905: 0xE5A4, - 28599 - 11905: 0x9DD9, - 28600 - 11905: 0x9DDA, - 28601 - 11905: 0xE5A3, - 28602 - 11905: 0x9DDB, - 28603 - 11905: 0x9DDC, - 28604 - 11905: 0x9DDD, - 28605 - 11905: 0x9DDE, - 28606 - 11905: 0x9DDF, - 28607 - 11905: 0x9DE0, - 28608 - 11905: 0xBCA4, - 28609 - 11905: 0x9DE1, - 28610 - 11905: 0xE5A5, - 28611 - 11905: 0x9DE2, - 28612 - 11905: 0x9DE3, - 28613 - 11905: 0x9DE4, - 28614 - 11905: 0x9DE5, - 28615 - 11905: 0x9DE6, - 28616 - 11905: 0x9DE7, - 28617 - 11905: 0xE5A1, - 28618 - 11905: 0x9DE8, - 28619 - 11905: 0x9DE9, - 28620 - 11905: 0x9DEA, - 28621 - 11905: 0x9DEB, - 28622 - 11905: 0x9DEC, - 28623 - 11905: 0x9DED, - 28624 - 11905: 0x9DEE, - 28625 - 11905: 0xE4FE, - 28626 - 11905: 0xB1F4, - 28627 - 11905: 0x9DEF, - 28628 - 11905: 0x9DF0, - 28629 - 11905: 0x9DF1, - 28630 - 11905: 0x9DF2, - 28631 - 11905: 0x9DF3, - 28632 - 11905: 0x9DF4, - 28633 - 11905: 0x9DF5, - 28634 - 11905: 0x9DF6, - 28635 - 11905: 0x9DF7, - 28636 - 11905: 0x9DF8, - 28637 - 11905: 0x9DF9, - 28638 - 11905: 0xE5A8, - 28639 - 11905: 0x9DFA, - 28640 - 11905: 0xE5A9, - 28641 - 11905: 0xE5A6, - 28642 - 11905: 0x9DFB, - 28643 - 11905: 0x9DFC, - 28644 - 11905: 0x9DFD, - 28645 - 11905: 0x9DFE, - 28646 - 11905: 0x9E40, - 28647 - 11905: 0x9E41, - 28648 - 11905: 0x9E42, - 28649 - 11905: 0x9E43, - 28650 - 11905: 0x9E44, - 28651 - 11905: 0x9E45, - 28652 - 11905: 0x9E46, - 28653 - 11905: 0x9E47, - 28654 - 11905: 0xE5A7, - 28655 - 11905: 0xE5AA, - 28656 - 11905: 0x9E48, - 28657 - 11905: 0x9E49, - 28658 - 11905: 0x9E4A, - 28659 - 11905: 0x9E4B, - 28660 - 11905: 0x9E4C, - 28661 - 11905: 0x9E4D, - 28662 - 11905: 0x9E4E, - 28663 - 11905: 0x9E4F, - 28664 - 11905: 0x9E50, - 28665 - 11905: 0x9E51, - 28666 - 11905: 0x9E52, - 28667 - 11905: 0x9E53, - 28668 - 11905: 0x9E54, - 28669 - 11905: 0x9E55, - 28670 - 11905: 0x9E56, - 28671 - 11905: 0x9E57, - 28672 - 11905: 0x9E58, - 28673 - 11905: 0x9E59, - 28674 - 11905: 0x9E5A, - 28675 - 11905: 0x9E5B, - 28676 - 11905: 0x9E5C, - 28677 - 11905: 0x9E5D, - 28678 - 11905: 0x9E5E, - 28679 - 11905: 0x9E5F, - 28680 - 11905: 0x9E60, - 28681 - 11905: 0x9E61, - 28682 - 11905: 0x9E62, - 28683 - 11905: 0x9E63, - 28684 - 11905: 0x9E64, - 28685 - 11905: 0x9E65, - 28686 - 11905: 0x9E66, - 28687 - 11905: 0x9E67, - 28688 - 11905: 0x9E68, - 28689 - 11905: 0xC6D9, - 28690 - 11905: 0x9E69, - 28691 - 11905: 0x9E6A, - 28692 - 11905: 0x9E6B, - 28693 - 11905: 0x9E6C, - 28694 - 11905: 0x9E6D, - 28695 - 11905: 0x9E6E, - 28696 - 11905: 0x9E6F, - 28697 - 11905: 0x9E70, - 28698 - 11905: 0xE5AB, - 28699 - 11905: 0xE5AD, - 28700 - 11905: 0x9E71, - 28701 - 11905: 0x9E72, - 28702 - 11905: 0x9E73, - 28703 - 11905: 0x9E74, - 28704 - 11905: 0x9E75, - 28705 - 11905: 0x9E76, - 28706 - 11905: 0x9E77, - 28707 - 11905: 0xE5AC, - 28708 - 11905: 0x9E78, - 28709 - 11905: 0x9E79, - 28710 - 11905: 0x9E7A, - 28711 - 11905: 0x9E7B, - 28712 - 11905: 0x9E7C, - 28713 - 11905: 0x9E7D, - 28714 - 11905: 0x9E7E, - 28715 - 11905: 0x9E80, - 28716 - 11905: 0x9E81, - 28717 - 11905: 0x9E82, - 28718 - 11905: 0x9E83, - 28719 - 11905: 0x9E84, - 28720 - 11905: 0x9E85, - 28721 - 11905: 0x9E86, - 28722 - 11905: 0x9E87, - 28723 - 11905: 0x9E88, - 28724 - 11905: 0x9E89, - 28725 - 11905: 0xE5AF, - 28726 - 11905: 0x9E8A, - 28727 - 11905: 0x9E8B, - 28728 - 11905: 0x9E8C, - 28729 - 11905: 0xE5AE, - 28730 - 11905: 0x9E8D, - 28731 - 11905: 0x9E8E, - 28732 - 11905: 0x9E8F, - 28733 - 11905: 0x9E90, - 28734 - 11905: 0x9E91, - 28735 - 11905: 0x9E92, - 28736 - 11905: 0x9E93, - 28737 - 11905: 0x9E94, - 28738 - 11905: 0x9E95, - 28739 - 11905: 0x9E96, - 28740 - 11905: 0x9E97, - 28741 - 11905: 0x9E98, - 28742 - 11905: 0x9E99, - 28743 - 11905: 0x9E9A, - 28744 - 11905: 0x9E9B, - 28745 - 11905: 0x9E9C, - 28746 - 11905: 0x9E9D, - 28747 - 11905: 0x9E9E, - 28748 - 11905: 0xB9E0, - 28749 - 11905: 0x9E9F, - 28750 - 11905: 0x9EA0, - 28751 - 11905: 0xE5B0, - 28752 - 11905: 0x9EA1, - 28753 - 11905: 0x9EA2, - 28754 - 11905: 0x9EA3, - 28755 - 11905: 0x9EA4, - 28756 - 11905: 0x9EA5, - 28757 - 11905: 0x9EA6, - 28758 - 11905: 0x9EA7, - 28759 - 11905: 0x9EA8, - 28760 - 11905: 0x9EA9, - 28761 - 11905: 0x9EAA, - 28762 - 11905: 0x9EAB, - 28763 - 11905: 0x9EAC, - 28764 - 11905: 0x9EAD, - 28765 - 11905: 0x9EAE, - 28766 - 11905: 0xE5B1, - 28767 - 11905: 0x9EAF, - 28768 - 11905: 0x9EB0, - 28769 - 11905: 0x9EB1, - 28770 - 11905: 0x9EB2, - 28771 - 11905: 0x9EB3, - 28772 - 11905: 0x9EB4, - 28773 - 11905: 0x9EB5, - 28774 - 11905: 0x9EB6, - 28775 - 11905: 0x9EB7, - 28776 - 11905: 0x9EB8, - 28777 - 11905: 0x9EB9, - 28778 - 11905: 0x9EBA, - 28779 - 11905: 0xBBF0, - 28780 - 11905: 0xECE1, - 28781 - 11905: 0xC3F0, - 28782 - 11905: 0x9EBB, - 28783 - 11905: 0xB5C6, - 28784 - 11905: 0xBBD2, - 28785 - 11905: 0x9EBC, - 28786 - 11905: 0x9EBD, - 28787 - 11905: 0x9EBE, - 28788 - 11905: 0x9EBF, - 28789 - 11905: 0xC1E9, - 28790 - 11905: 0xD4EE, - 28791 - 11905: 0x9EC0, - 28792 - 11905: 0xBEC4, - 28793 - 11905: 0x9EC1, - 28794 - 11905: 0x9EC2, - 28795 - 11905: 0x9EC3, - 28796 - 11905: 0xD7C6, - 28797 - 11905: 0x9EC4, - 28798 - 11905: 0xD4D6, - 28799 - 11905: 0xB2D3, - 28800 - 11905: 0xECBE, - 28801 - 11905: 0x9EC5, - 28802 - 11905: 0x9EC6, - 28803 - 11905: 0x9EC7, - 28804 - 11905: 0x9EC8, - 28805 - 11905: 0xEAC1, - 28806 - 11905: 0x9EC9, - 28807 - 11905: 0x9ECA, - 28808 - 11905: 0x9ECB, - 28809 - 11905: 0xC2AF, - 28810 - 11905: 0xB4B6, - 28811 - 11905: 0x9ECC, - 28812 - 11905: 0x9ECD, - 28813 - 11905: 0x9ECE, - 28814 - 11905: 0xD1D7, - 28815 - 11905: 0x9ECF, - 28816 - 11905: 0x9ED0, - 28817 - 11905: 0x9ED1, - 28818 - 11905: 0xB3B4, - 28819 - 11905: 0x9ED2, - 28820 - 11905: 0xC8B2, - 28821 - 11905: 0xBFBB, - 28822 - 11905: 0xECC0, - 28823 - 11905: 0x9ED3, - 28824 - 11905: 0x9ED4, - 28825 - 11905: 0xD6CB, - 28826 - 11905: 0x9ED5, - 28827 - 11905: 0x9ED6, - 28828 - 11905: 0xECBF, - 28829 - 11905: 0xECC1, - 28830 - 11905: 0x9ED7, - 28831 - 11905: 0x9ED8, - 28832 - 11905: 0x9ED9, - 28833 - 11905: 0x9EDA, - 28834 - 11905: 0x9EDB, - 28835 - 11905: 0x9EDC, - 28836 - 11905: 0x9EDD, - 28837 - 11905: 0x9EDE, - 28838 - 11905: 0x9EDF, - 28839 - 11905: 0x9EE0, - 28840 - 11905: 0x9EE1, - 28841 - 11905: 0x9EE2, - 28842 - 11905: 0x9EE3, - 28843 - 11905: 0xECC5, - 28844 - 11905: 0xBEE6, - 28845 - 11905: 0xCCBF, - 28846 - 11905: 0xC5DA, - 28847 - 11905: 0xBEBC, - 28848 - 11905: 0x9EE4, - 28849 - 11905: 0xECC6, - 28850 - 11905: 0x9EE5, - 28851 - 11905: 0xB1FE, - 28852 - 11905: 0x9EE6, - 28853 - 11905: 0x9EE7, - 28854 - 11905: 0x9EE8, - 28855 - 11905: 0xECC4, - 28856 - 11905: 0xD5A8, - 28857 - 11905: 0xB5E3, - 28858 - 11905: 0x9EE9, - 28859 - 11905: 0xECC2, - 28860 - 11905: 0xC1B6, - 28861 - 11905: 0xB3E3, - 28862 - 11905: 0x9EEA, - 28863 - 11905: 0x9EEB, - 28864 - 11905: 0xECC3, - 28865 - 11905: 0xCBB8, - 28866 - 11905: 0xC0C3, - 28867 - 11905: 0xCCFE, - 28868 - 11905: 0x9EEC, - 28869 - 11905: 0x9EED, - 28870 - 11905: 0x9EEE, - 28871 - 11905: 0x9EEF, - 28872 - 11905: 0xC1D2, - 28873 - 11905: 0x9EF0, - 28874 - 11905: 0xECC8, - 28875 - 11905: 0x9EF1, - 28876 - 11905: 0x9EF2, - 28877 - 11905: 0x9EF3, - 28878 - 11905: 0x9EF4, - 28879 - 11905: 0x9EF5, - 28880 - 11905: 0x9EF6, - 28881 - 11905: 0x9EF7, - 28882 - 11905: 0x9EF8, - 28883 - 11905: 0x9EF9, - 28884 - 11905: 0x9EFA, - 28885 - 11905: 0x9EFB, - 28886 - 11905: 0x9EFC, - 28887 - 11905: 0x9EFD, - 28888 - 11905: 0xBAE6, - 28889 - 11905: 0xC0D3, - 28890 - 11905: 0x9EFE, - 28891 - 11905: 0xD6F2, - 28892 - 11905: 0x9F40, - 28893 - 11905: 0x9F41, - 28894 - 11905: 0x9F42, - 28895 - 11905: 0xD1CC, - 28896 - 11905: 0x9F43, - 28897 - 11905: 0x9F44, - 28898 - 11905: 0x9F45, - 28899 - 11905: 0x9F46, - 28900 - 11905: 0xBFBE, - 28901 - 11905: 0x9F47, - 28902 - 11905: 0xB7B3, - 28903 - 11905: 0xC9D5, - 28904 - 11905: 0xECC7, - 28905 - 11905: 0xBBE2, - 28906 - 11905: 0x9F48, - 28907 - 11905: 0xCCCC, - 28908 - 11905: 0xBDFD, - 28909 - 11905: 0xC8C8, - 28910 - 11905: 0x9F49, - 28911 - 11905: 0xCFA9, - 28912 - 11905: 0x9F4A, - 28913 - 11905: 0x9F4B, - 28914 - 11905: 0x9F4C, - 28915 - 11905: 0x9F4D, - 28916 - 11905: 0x9F4E, - 28917 - 11905: 0x9F4F, - 28918 - 11905: 0x9F50, - 28919 - 11905: 0xCDE9, - 28920 - 11905: 0x9F51, - 28921 - 11905: 0xC5EB, - 28922 - 11905: 0x9F52, - 28923 - 11905: 0x9F53, - 28924 - 11905: 0x9F54, - 28925 - 11905: 0xB7E9, - 28926 - 11905: 0x9F55, - 28927 - 11905: 0x9F56, - 28928 - 11905: 0x9F57, - 28929 - 11905: 0x9F58, - 28930 - 11905: 0x9F59, - 28931 - 11905: 0x9F5A, - 28932 - 11905: 0x9F5B, - 28933 - 11905: 0x9F5C, - 28934 - 11905: 0x9F5D, - 28935 - 11905: 0x9F5E, - 28936 - 11905: 0x9F5F, - 28937 - 11905: 0xD1C9, - 28938 - 11905: 0xBAB8, - 28939 - 11905: 0x9F60, - 28940 - 11905: 0x9F61, - 28941 - 11905: 0x9F62, - 28942 - 11905: 0x9F63, - 28943 - 11905: 0x9F64, - 28944 - 11905: 0xECC9, - 28945 - 11905: 0x9F65, - 28946 - 11905: 0x9F66, - 28947 - 11905: 0xECCA, - 28948 - 11905: 0x9F67, - 28949 - 11905: 0xBBC0, - 28950 - 11905: 0xECCB, - 28951 - 11905: 0x9F68, - 28952 - 11905: 0xECE2, - 28953 - 11905: 0xB1BA, - 28954 - 11905: 0xB7D9, - 28955 - 11905: 0x9F69, - 28956 - 11905: 0x9F6A, - 28957 - 11905: 0x9F6B, - 28958 - 11905: 0x9F6C, - 28959 - 11905: 0x9F6D, - 28960 - 11905: 0x9F6E, - 28961 - 11905: 0x9F6F, - 28962 - 11905: 0x9F70, - 28963 - 11905: 0x9F71, - 28964 - 11905: 0x9F72, - 28965 - 11905: 0x9F73, - 28966 - 11905: 0xBDB9, - 28967 - 11905: 0x9F74, - 28968 - 11905: 0x9F75, - 28969 - 11905: 0x9F76, - 28970 - 11905: 0x9F77, - 28971 - 11905: 0x9F78, - 28972 - 11905: 0x9F79, - 28973 - 11905: 0x9F7A, - 28974 - 11905: 0x9F7B, - 28975 - 11905: 0xECCC, - 28976 - 11905: 0xD1E6, - 28977 - 11905: 0xECCD, - 28978 - 11905: 0x9F7C, - 28979 - 11905: 0x9F7D, - 28980 - 11905: 0x9F7E, - 28981 - 11905: 0x9F80, - 28982 - 11905: 0xC8BB, - 28983 - 11905: 0x9F81, - 28984 - 11905: 0x9F82, - 28985 - 11905: 0x9F83, - 28986 - 11905: 0x9F84, - 28987 - 11905: 0x9F85, - 28988 - 11905: 0x9F86, - 28989 - 11905: 0x9F87, - 28990 - 11905: 0x9F88, - 28991 - 11905: 0x9F89, - 28992 - 11905: 0x9F8A, - 28993 - 11905: 0x9F8B, - 28994 - 11905: 0x9F8C, - 28995 - 11905: 0x9F8D, - 28996 - 11905: 0x9F8E, - 28997 - 11905: 0xECD1, - 28998 - 11905: 0x9F8F, - 28999 - 11905: 0x9F90, - 29000 - 11905: 0x9F91, - 29001 - 11905: 0x9F92, - 29002 - 11905: 0xECD3, - 29003 - 11905: 0x9F93, - 29004 - 11905: 0xBBCD, - 29005 - 11905: 0x9F94, - 29006 - 11905: 0xBCE5, - 29007 - 11905: 0x9F95, - 29008 - 11905: 0x9F96, - 29009 - 11905: 0x9F97, - 29010 - 11905: 0x9F98, - 29011 - 11905: 0x9F99, - 29012 - 11905: 0x9F9A, - 29013 - 11905: 0x9F9B, - 29014 - 11905: 0x9F9C, - 29015 - 11905: 0x9F9D, - 29016 - 11905: 0x9F9E, - 29017 - 11905: 0x9F9F, - 29018 - 11905: 0x9FA0, - 29019 - 11905: 0x9FA1, - 29020 - 11905: 0xECCF, - 29021 - 11905: 0x9FA2, - 29022 - 11905: 0xC9B7, - 29023 - 11905: 0x9FA3, - 29024 - 11905: 0x9FA4, - 29025 - 11905: 0x9FA5, - 29026 - 11905: 0x9FA6, - 29027 - 11905: 0x9FA7, - 29028 - 11905: 0xC3BA, - 29029 - 11905: 0x9FA8, - 29030 - 11905: 0xECE3, - 29031 - 11905: 0xD5D5, - 29032 - 11905: 0xECD0, - 29033 - 11905: 0x9FA9, - 29034 - 11905: 0x9FAA, - 29035 - 11905: 0x9FAB, - 29036 - 11905: 0x9FAC, - 29037 - 11905: 0x9FAD, - 29038 - 11905: 0xD6F3, - 29039 - 11905: 0x9FAE, - 29040 - 11905: 0x9FAF, - 29041 - 11905: 0x9FB0, - 29042 - 11905: 0xECD2, - 29043 - 11905: 0xECCE, - 29044 - 11905: 0x9FB1, - 29045 - 11905: 0x9FB2, - 29046 - 11905: 0x9FB3, - 29047 - 11905: 0x9FB4, - 29048 - 11905: 0xECD4, - 29049 - 11905: 0x9FB5, - 29050 - 11905: 0xECD5, - 29051 - 11905: 0x9FB6, - 29052 - 11905: 0x9FB7, - 29053 - 11905: 0xC9BF, - 29054 - 11905: 0x9FB8, - 29055 - 11905: 0x9FB9, - 29056 - 11905: 0x9FBA, - 29057 - 11905: 0x9FBB, - 29058 - 11905: 0x9FBC, - 29059 - 11905: 0x9FBD, - 29060 - 11905: 0xCFA8, - 29061 - 11905: 0x9FBE, - 29062 - 11905: 0x9FBF, - 29063 - 11905: 0x9FC0, - 29064 - 11905: 0x9FC1, - 29065 - 11905: 0x9FC2, - 29066 - 11905: 0xD0DC, - 29067 - 11905: 0x9FC3, - 29068 - 11905: 0x9FC4, - 29069 - 11905: 0x9FC5, - 29070 - 11905: 0x9FC6, - 29071 - 11905: 0xD1AC, - 29072 - 11905: 0x9FC7, - 29073 - 11905: 0x9FC8, - 29074 - 11905: 0x9FC9, - 29075 - 11905: 0x9FCA, - 29076 - 11905: 0xC8DB, - 29077 - 11905: 0x9FCB, - 29078 - 11905: 0x9FCC, - 29079 - 11905: 0x9FCD, - 29080 - 11905: 0xECD6, - 29081 - 11905: 0xCEF5, - 29082 - 11905: 0x9FCE, - 29083 - 11905: 0x9FCF, - 29084 - 11905: 0x9FD0, - 29085 - 11905: 0x9FD1, - 29086 - 11905: 0x9FD2, - 29087 - 11905: 0xCAEC, - 29088 - 11905: 0xECDA, - 29089 - 11905: 0x9FD3, - 29090 - 11905: 0x9FD4, - 29091 - 11905: 0x9FD5, - 29092 - 11905: 0x9FD6, - 29093 - 11905: 0x9FD7, - 29094 - 11905: 0x9FD8, - 29095 - 11905: 0x9FD9, - 29096 - 11905: 0xECD9, - 29097 - 11905: 0x9FDA, - 29098 - 11905: 0x9FDB, - 29099 - 11905: 0x9FDC, - 29100 - 11905: 0xB0BE, - 29101 - 11905: 0x9FDD, - 29102 - 11905: 0x9FDE, - 29103 - 11905: 0x9FDF, - 29104 - 11905: 0x9FE0, - 29105 - 11905: 0x9FE1, - 29106 - 11905: 0x9FE2, - 29107 - 11905: 0xECD7, - 29108 - 11905: 0x9FE3, - 29109 - 11905: 0xECD8, - 29110 - 11905: 0x9FE4, - 29111 - 11905: 0x9FE5, - 29112 - 11905: 0x9FE6, - 29113 - 11905: 0xECE4, - 29114 - 11905: 0x9FE7, - 29115 - 11905: 0x9FE8, - 29116 - 11905: 0x9FE9, - 29117 - 11905: 0x9FEA, - 29118 - 11905: 0x9FEB, - 29119 - 11905: 0x9FEC, - 29120 - 11905: 0x9FED, - 29121 - 11905: 0x9FEE, - 29122 - 11905: 0x9FEF, - 29123 - 11905: 0xC8BC, - 29124 - 11905: 0x9FF0, - 29125 - 11905: 0x9FF1, - 29126 - 11905: 0x9FF2, - 29127 - 11905: 0x9FF3, - 29128 - 11905: 0x9FF4, - 29129 - 11905: 0x9FF5, - 29130 - 11905: 0x9FF6, - 29131 - 11905: 0x9FF7, - 29132 - 11905: 0x9FF8, - 29133 - 11905: 0x9FF9, - 29134 - 11905: 0xC1C7, - 29135 - 11905: 0x9FFA, - 29136 - 11905: 0x9FFB, - 29137 - 11905: 0x9FFC, - 29138 - 11905: 0x9FFD, - 29139 - 11905: 0x9FFE, - 29140 - 11905: 0xECDC, - 29141 - 11905: 0xD1E0, - 29142 - 11905: 0xA040, - 29143 - 11905: 0xA041, - 29144 - 11905: 0xA042, - 29145 - 11905: 0xA043, - 29146 - 11905: 0xA044, - 29147 - 11905: 0xA045, - 29148 - 11905: 0xA046, - 29149 - 11905: 0xA047, - 29150 - 11905: 0xA048, - 29151 - 11905: 0xA049, - 29152 - 11905: 0xECDB, - 29153 - 11905: 0xA04A, - 29154 - 11905: 0xA04B, - 29155 - 11905: 0xA04C, - 29156 - 11905: 0xA04D, - 29157 - 11905: 0xD4EF, - 29158 - 11905: 0xA04E, - 29159 - 11905: 0xECDD, - 29160 - 11905: 0xA04F, - 29161 - 11905: 0xA050, - 29162 - 11905: 0xA051, - 29163 - 11905: 0xA052, - 29164 - 11905: 0xA053, - 29165 - 11905: 0xA054, - 29166 - 11905: 0xDBC6, - 29167 - 11905: 0xA055, - 29168 - 11905: 0xA056, - 29169 - 11905: 0xA057, - 29170 - 11905: 0xA058, - 29171 - 11905: 0xA059, - 29172 - 11905: 0xA05A, - 29173 - 11905: 0xA05B, - 29174 - 11905: 0xA05C, - 29175 - 11905: 0xA05D, - 29176 - 11905: 0xA05E, - 29177 - 11905: 0xECDE, - 29178 - 11905: 0xA05F, - 29179 - 11905: 0xA060, - 29180 - 11905: 0xA061, - 29181 - 11905: 0xA062, - 29182 - 11905: 0xA063, - 29183 - 11905: 0xA064, - 29184 - 11905: 0xA065, - 29185 - 11905: 0xA066, - 29186 - 11905: 0xA067, - 29187 - 11905: 0xA068, - 29188 - 11905: 0xA069, - 29189 - 11905: 0xA06A, - 29190 - 11905: 0xB1AC, - 29191 - 11905: 0xA06B, - 29192 - 11905: 0xA06C, - 29193 - 11905: 0xA06D, - 29194 - 11905: 0xA06E, - 29195 - 11905: 0xA06F, - 29196 - 11905: 0xA070, - 29197 - 11905: 0xA071, - 29198 - 11905: 0xA072, - 29199 - 11905: 0xA073, - 29200 - 11905: 0xA074, - 29201 - 11905: 0xA075, - 29202 - 11905: 0xA076, - 29203 - 11905: 0xA077, - 29204 - 11905: 0xA078, - 29205 - 11905: 0xA079, - 29206 - 11905: 0xA07A, - 29207 - 11905: 0xA07B, - 29208 - 11905: 0xA07C, - 29209 - 11905: 0xA07D, - 29210 - 11905: 0xA07E, - 29211 - 11905: 0xA080, - 29212 - 11905: 0xA081, - 29213 - 11905: 0xECDF, - 29214 - 11905: 0xA082, - 29215 - 11905: 0xA083, - 29216 - 11905: 0xA084, - 29217 - 11905: 0xA085, - 29218 - 11905: 0xA086, - 29219 - 11905: 0xA087, - 29220 - 11905: 0xA088, - 29221 - 11905: 0xA089, - 29222 - 11905: 0xA08A, - 29223 - 11905: 0xA08B, - 29224 - 11905: 0xECE0, - 29225 - 11905: 0xA08C, - 29226 - 11905: 0xD7A6, - 29227 - 11905: 0xA08D, - 29228 - 11905: 0xC5C0, - 29229 - 11905: 0xA08E, - 29230 - 11905: 0xA08F, - 29231 - 11905: 0xA090, - 29232 - 11905: 0xEBBC, - 29233 - 11905: 0xB0AE, - 29234 - 11905: 0xA091, - 29235 - 11905: 0xA092, - 29236 - 11905: 0xA093, - 29237 - 11905: 0xBEF4, - 29238 - 11905: 0xB8B8, - 29239 - 11905: 0xD2AF, - 29240 - 11905: 0xB0D6, - 29241 - 11905: 0xB5F9, - 29242 - 11905: 0xA094, - 29243 - 11905: 0xD8B3, - 29244 - 11905: 0xA095, - 29245 - 11905: 0xCBAC, - 29246 - 11905: 0xA096, - 29247 - 11905: 0xE3DD, - 29248 - 11905: 0xA097, - 29249 - 11905: 0xA098, - 29250 - 11905: 0xA099, - 29251 - 11905: 0xA09A, - 29252 - 11905: 0xA09B, - 29253 - 11905: 0xA09C, - 29254 - 11905: 0xA09D, - 29255 - 11905: 0xC6AC, - 29256 - 11905: 0xB0E6, - 29257 - 11905: 0xA09E, - 29258 - 11905: 0xA09F, - 29259 - 11905: 0xA0A0, - 29260 - 11905: 0xC5C6, - 29261 - 11905: 0xEBB9, - 29262 - 11905: 0xA0A1, - 29263 - 11905: 0xA0A2, - 29264 - 11905: 0xA0A3, - 29265 - 11905: 0xA0A4, - 29266 - 11905: 0xEBBA, - 29267 - 11905: 0xA0A5, - 29268 - 11905: 0xA0A6, - 29269 - 11905: 0xA0A7, - 29270 - 11905: 0xEBBB, - 29271 - 11905: 0xA0A8, - 29272 - 11905: 0xA0A9, - 29273 - 11905: 0xD1C0, - 29274 - 11905: 0xA0AA, - 29275 - 11905: 0xC5A3, - 29276 - 11905: 0xA0AB, - 29277 - 11905: 0xEAF2, - 29278 - 11905: 0xA0AC, - 29279 - 11905: 0xC4B2, - 29280 - 11905: 0xA0AD, - 29281 - 11905: 0xC4B5, - 29282 - 11905: 0xC0CE, - 29283 - 11905: 0xA0AE, - 29284 - 11905: 0xA0AF, - 29285 - 11905: 0xA0B0, - 29286 - 11905: 0xEAF3, - 29287 - 11905: 0xC4C1, - 29288 - 11905: 0xA0B1, - 29289 - 11905: 0xCEEF, - 29290 - 11905: 0xA0B2, - 29291 - 11905: 0xA0B3, - 29292 - 11905: 0xA0B4, - 29293 - 11905: 0xA0B5, - 29294 - 11905: 0xEAF0, - 29295 - 11905: 0xEAF4, - 29296 - 11905: 0xA0B6, - 29297 - 11905: 0xA0B7, - 29298 - 11905: 0xC9FC, - 29299 - 11905: 0xA0B8, - 29300 - 11905: 0xA0B9, - 29301 - 11905: 0xC7A3, - 29302 - 11905: 0xA0BA, - 29303 - 11905: 0xA0BB, - 29304 - 11905: 0xA0BC, - 29305 - 11905: 0xCCD8, - 29306 - 11905: 0xCEFE, - 29307 - 11905: 0xA0BD, - 29308 - 11905: 0xA0BE, - 29309 - 11905: 0xA0BF, - 29310 - 11905: 0xEAF5, - 29311 - 11905: 0xEAF6, - 29312 - 11905: 0xCFAC, - 29313 - 11905: 0xC0E7, - 29314 - 11905: 0xA0C0, - 29315 - 11905: 0xA0C1, - 29316 - 11905: 0xEAF7, - 29317 - 11905: 0xA0C2, - 29318 - 11905: 0xA0C3, - 29319 - 11905: 0xA0C4, - 29320 - 11905: 0xA0C5, - 29321 - 11905: 0xA0C6, - 29322 - 11905: 0xB6BF, - 29323 - 11905: 0xEAF8, - 29324 - 11905: 0xA0C7, - 29325 - 11905: 0xEAF9, - 29326 - 11905: 0xA0C8, - 29327 - 11905: 0xEAFA, - 29328 - 11905: 0xA0C9, - 29329 - 11905: 0xA0CA, - 29330 - 11905: 0xEAFB, - 29331 - 11905: 0xA0CB, - 29332 - 11905: 0xA0CC, - 29333 - 11905: 0xA0CD, - 29334 - 11905: 0xA0CE, - 29335 - 11905: 0xA0CF, - 29336 - 11905: 0xA0D0, - 29337 - 11905: 0xA0D1, - 29338 - 11905: 0xA0D2, - 29339 - 11905: 0xA0D3, - 29340 - 11905: 0xA0D4, - 29341 - 11905: 0xA0D5, - 29342 - 11905: 0xA0D6, - 29343 - 11905: 0xEAF1, - 29344 - 11905: 0xA0D7, - 29345 - 11905: 0xA0D8, - 29346 - 11905: 0xA0D9, - 29347 - 11905: 0xA0DA, - 29348 - 11905: 0xA0DB, - 29349 - 11905: 0xA0DC, - 29350 - 11905: 0xA0DD, - 29351 - 11905: 0xA0DE, - 29352 - 11905: 0xA0DF, - 29353 - 11905: 0xA0E0, - 29354 - 11905: 0xA0E1, - 29355 - 11905: 0xA0E2, - 29356 - 11905: 0xC8AE, - 29357 - 11905: 0xE1EB, - 29358 - 11905: 0xA0E3, - 29359 - 11905: 0xB7B8, - 29360 - 11905: 0xE1EC, - 29361 - 11905: 0xA0E4, - 29362 - 11905: 0xA0E5, - 29363 - 11905: 0xA0E6, - 29364 - 11905: 0xE1ED, - 29365 - 11905: 0xA0E7, - 29366 - 11905: 0xD7B4, - 29367 - 11905: 0xE1EE, - 29368 - 11905: 0xE1EF, - 29369 - 11905: 0xD3CC, - 29370 - 11905: 0xA0E8, - 29371 - 11905: 0xA0E9, - 29372 - 11905: 0xA0EA, - 29373 - 11905: 0xA0EB, - 29374 - 11905: 0xA0EC, - 29375 - 11905: 0xA0ED, - 29376 - 11905: 0xA0EE, - 29377 - 11905: 0xE1F1, - 29378 - 11905: 0xBFF1, - 29379 - 11905: 0xE1F0, - 29380 - 11905: 0xB5D2, - 29381 - 11905: 0xA0EF, - 29382 - 11905: 0xA0F0, - 29383 - 11905: 0xA0F1, - 29384 - 11905: 0xB1B7, - 29385 - 11905: 0xA0F2, - 29386 - 11905: 0xA0F3, - 29387 - 11905: 0xA0F4, - 29388 - 11905: 0xA0F5, - 29389 - 11905: 0xE1F3, - 29390 - 11905: 0xE1F2, - 29391 - 11905: 0xA0F6, - 29392 - 11905: 0xBAFC, - 29393 - 11905: 0xA0F7, - 29394 - 11905: 0xE1F4, - 29395 - 11905: 0xA0F8, - 29396 - 11905: 0xA0F9, - 29397 - 11905: 0xA0FA, - 29398 - 11905: 0xA0FB, - 29399 - 11905: 0xB9B7, - 29400 - 11905: 0xA0FC, - 29401 - 11905: 0xBED1, - 29402 - 11905: 0xA0FD, - 29403 - 11905: 0xA0FE, - 29404 - 11905: 0xAA40, - 29405 - 11905: 0xAA41, - 29406 - 11905: 0xC4FC, - 29407 - 11905: 0xAA42, - 29408 - 11905: 0xBADD, - 29409 - 11905: 0xBDC6, - 29410 - 11905: 0xAA43, - 29411 - 11905: 0xAA44, - 29412 - 11905: 0xAA45, - 29413 - 11905: 0xAA46, - 29414 - 11905: 0xAA47, - 29415 - 11905: 0xAA48, - 29416 - 11905: 0xE1F5, - 29417 - 11905: 0xE1F7, - 29418 - 11905: 0xAA49, - 29419 - 11905: 0xAA4A, - 29420 - 11905: 0xB6C0, - 29421 - 11905: 0xCFC1, - 29422 - 11905: 0xCAA8, - 29423 - 11905: 0xE1F6, - 29424 - 11905: 0xD5F8, - 29425 - 11905: 0xD3FC, - 29426 - 11905: 0xE1F8, - 29427 - 11905: 0xE1FC, - 29428 - 11905: 0xE1F9, - 29429 - 11905: 0xAA4B, - 29430 - 11905: 0xAA4C, - 29431 - 11905: 0xE1FA, - 29432 - 11905: 0xC0EA, - 29433 - 11905: 0xAA4D, - 29434 - 11905: 0xE1FE, - 29435 - 11905: 0xE2A1, - 29436 - 11905: 0xC0C7, - 29437 - 11905: 0xAA4E, - 29438 - 11905: 0xAA4F, - 29439 - 11905: 0xAA50, - 29440 - 11905: 0xAA51, - 29441 - 11905: 0xE1FB, - 29442 - 11905: 0xAA52, - 29443 - 11905: 0xE1FD, - 29444 - 11905: 0xAA53, - 29445 - 11905: 0xAA54, - 29446 - 11905: 0xAA55, - 29447 - 11905: 0xAA56, - 29448 - 11905: 0xAA57, - 29449 - 11905: 0xAA58, - 29450 - 11905: 0xE2A5, - 29451 - 11905: 0xAA59, - 29452 - 11905: 0xAA5A, - 29453 - 11905: 0xAA5B, - 29454 - 11905: 0xC1D4, - 29455 - 11905: 0xAA5C, - 29456 - 11905: 0xAA5D, - 29457 - 11905: 0xAA5E, - 29458 - 11905: 0xAA5F, - 29459 - 11905: 0xE2A3, - 29460 - 11905: 0xAA60, - 29461 - 11905: 0xE2A8, - 29462 - 11905: 0xB2FE, - 29463 - 11905: 0xE2A2, - 29464 - 11905: 0xAA61, - 29465 - 11905: 0xAA62, - 29466 - 11905: 0xAA63, - 29467 - 11905: 0xC3CD, - 29468 - 11905: 0xB2C2, - 29469 - 11905: 0xE2A7, - 29470 - 11905: 0xE2A6, - 29471 - 11905: 0xAA64, - 29472 - 11905: 0xAA65, - 29473 - 11905: 0xE2A4, - 29474 - 11905: 0xE2A9, - 29475 - 11905: 0xAA66, - 29476 - 11905: 0xAA67, - 29477 - 11905: 0xE2AB, - 29478 - 11905: 0xAA68, - 29479 - 11905: 0xAA69, - 29480 - 11905: 0xAA6A, - 29481 - 11905: 0xD0C9, - 29482 - 11905: 0xD6ED, - 29483 - 11905: 0xC3A8, - 29484 - 11905: 0xE2AC, - 29485 - 11905: 0xAA6B, - 29486 - 11905: 0xCFD7, - 29487 - 11905: 0xAA6C, - 29488 - 11905: 0xAA6D, - 29489 - 11905: 0xE2AE, - 29490 - 11905: 0xAA6E, - 29491 - 11905: 0xAA6F, - 29492 - 11905: 0xBAEF, - 29493 - 11905: 0xAA70, - 29494 - 11905: 0xAA71, - 29495 - 11905: 0xE9E0, - 29496 - 11905: 0xE2AD, - 29497 - 11905: 0xE2AA, - 29498 - 11905: 0xAA72, - 29499 - 11905: 0xAA73, - 29500 - 11905: 0xAA74, - 29501 - 11905: 0xAA75, - 29502 - 11905: 0xBBAB, - 29503 - 11905: 0xD4B3, - 29504 - 11905: 0xAA76, - 29505 - 11905: 0xAA77, - 29506 - 11905: 0xAA78, - 29507 - 11905: 0xAA79, - 29508 - 11905: 0xAA7A, - 29509 - 11905: 0xAA7B, - 29510 - 11905: 0xAA7C, - 29511 - 11905: 0xAA7D, - 29512 - 11905: 0xAA7E, - 29513 - 11905: 0xAA80, - 29514 - 11905: 0xAA81, - 29515 - 11905: 0xAA82, - 29516 - 11905: 0xAA83, - 29517 - 11905: 0xE2B0, - 29518 - 11905: 0xAA84, - 29519 - 11905: 0xAA85, - 29520 - 11905: 0xE2AF, - 29521 - 11905: 0xAA86, - 29522 - 11905: 0xE9E1, - 29523 - 11905: 0xAA87, - 29524 - 11905: 0xAA88, - 29525 - 11905: 0xAA89, - 29526 - 11905: 0xAA8A, - 29527 - 11905: 0xE2B1, - 29528 - 11905: 0xAA8B, - 29529 - 11905: 0xAA8C, - 29530 - 11905: 0xAA8D, - 29531 - 11905: 0xAA8E, - 29532 - 11905: 0xAA8F, - 29533 - 11905: 0xAA90, - 29534 - 11905: 0xAA91, - 29535 - 11905: 0xAA92, - 29536 - 11905: 0xE2B2, - 29537 - 11905: 0xAA93, - 29538 - 11905: 0xAA94, - 29539 - 11905: 0xAA95, - 29540 - 11905: 0xAA96, - 29541 - 11905: 0xAA97, - 29542 - 11905: 0xAA98, - 29543 - 11905: 0xAA99, - 29544 - 11905: 0xAA9A, - 29545 - 11905: 0xAA9B, - 29546 - 11905: 0xAA9C, - 29547 - 11905: 0xAA9D, - 29548 - 11905: 0xE2B3, - 29549 - 11905: 0xCCA1, - 29550 - 11905: 0xAA9E, - 29551 - 11905: 0xE2B4, - 29552 - 11905: 0xAA9F, - 29553 - 11905: 0xAAA0, - 29554 - 11905: 0xAB40, - 29555 - 11905: 0xAB41, - 29556 - 11905: 0xAB42, - 29557 - 11905: 0xAB43, - 29558 - 11905: 0xAB44, - 29559 - 11905: 0xAB45, - 29560 - 11905: 0xAB46, - 29561 - 11905: 0xAB47, - 29562 - 11905: 0xAB48, - 29563 - 11905: 0xAB49, - 29564 - 11905: 0xAB4A, - 29565 - 11905: 0xAB4B, - 29566 - 11905: 0xE2B5, - 29567 - 11905: 0xAB4C, - 29568 - 11905: 0xAB4D, - 29569 - 11905: 0xAB4E, - 29570 - 11905: 0xAB4F, - 29571 - 11905: 0xAB50, - 29572 - 11905: 0xD0FE, - 29573 - 11905: 0xAB51, - 29574 - 11905: 0xAB52, - 29575 - 11905: 0xC2CA, - 29576 - 11905: 0xAB53, - 29577 - 11905: 0xD3F1, - 29578 - 11905: 0xAB54, - 29579 - 11905: 0xCDF5, - 29580 - 11905: 0xAB55, - 29581 - 11905: 0xAB56, - 29582 - 11905: 0xE7E0, - 29583 - 11905: 0xAB57, - 29584 - 11905: 0xAB58, - 29585 - 11905: 0xE7E1, - 29586 - 11905: 0xAB59, - 29587 - 11905: 0xAB5A, - 29588 - 11905: 0xAB5B, - 29589 - 11905: 0xAB5C, - 29590 - 11905: 0xBEC1, - 29591 - 11905: 0xAB5D, - 29592 - 11905: 0xAB5E, - 29593 - 11905: 0xAB5F, - 29594 - 11905: 0xAB60, - 29595 - 11905: 0xC2EA, - 29596 - 11905: 0xAB61, - 29597 - 11905: 0xAB62, - 29598 - 11905: 0xAB63, - 29599 - 11905: 0xE7E4, - 29600 - 11905: 0xAB64, - 29601 - 11905: 0xAB65, - 29602 - 11905: 0xE7E3, - 29603 - 11905: 0xAB66, - 29604 - 11905: 0xAB67, - 29605 - 11905: 0xAB68, - 29606 - 11905: 0xAB69, - 29607 - 11905: 0xAB6A, - 29608 - 11905: 0xAB6B, - 29609 - 11905: 0xCDE6, - 29610 - 11905: 0xAB6C, - 29611 - 11905: 0xC3B5, - 29612 - 11905: 0xAB6D, - 29613 - 11905: 0xAB6E, - 29614 - 11905: 0xE7E2, - 29615 - 11905: 0xBBB7, - 29616 - 11905: 0xCFD6, - 29617 - 11905: 0xAB6F, - 29618 - 11905: 0xC1E1, - 29619 - 11905: 0xE7E9, - 29620 - 11905: 0xAB70, - 29621 - 11905: 0xAB71, - 29622 - 11905: 0xAB72, - 29623 - 11905: 0xE7E8, - 29624 - 11905: 0xAB73, - 29625 - 11905: 0xAB74, - 29626 - 11905: 0xE7F4, - 29627 - 11905: 0xB2A3, - 29628 - 11905: 0xAB75, - 29629 - 11905: 0xAB76, - 29630 - 11905: 0xAB77, - 29631 - 11905: 0xAB78, - 29632 - 11905: 0xE7EA, - 29633 - 11905: 0xAB79, - 29634 - 11905: 0xE7E6, - 29635 - 11905: 0xAB7A, - 29636 - 11905: 0xAB7B, - 29637 - 11905: 0xAB7C, - 29638 - 11905: 0xAB7D, - 29639 - 11905: 0xAB7E, - 29640 - 11905: 0xE7EC, - 29641 - 11905: 0xE7EB, - 29642 - 11905: 0xC9BA, - 29643 - 11905: 0xAB80, - 29644 - 11905: 0xAB81, - 29645 - 11905: 0xD5E4, - 29646 - 11905: 0xAB82, - 29647 - 11905: 0xE7E5, - 29648 - 11905: 0xB7A9, - 29649 - 11905: 0xE7E7, - 29650 - 11905: 0xAB83, - 29651 - 11905: 0xAB84, - 29652 - 11905: 0xAB85, - 29653 - 11905: 0xAB86, - 29654 - 11905: 0xAB87, - 29655 - 11905: 0xAB88, - 29656 - 11905: 0xAB89, - 29657 - 11905: 0xE7EE, - 29658 - 11905: 0xAB8A, - 29659 - 11905: 0xAB8B, - 29660 - 11905: 0xAB8C, - 29661 - 11905: 0xAB8D, - 29662 - 11905: 0xE7F3, - 29663 - 11905: 0xAB8E, - 29664 - 11905: 0xD6E9, - 29665 - 11905: 0xAB8F, - 29666 - 11905: 0xAB90, - 29667 - 11905: 0xAB91, - 29668 - 11905: 0xAB92, - 29669 - 11905: 0xE7ED, - 29670 - 11905: 0xAB93, - 29671 - 11905: 0xE7F2, - 29672 - 11905: 0xAB94, - 29673 - 11905: 0xE7F1, - 29674 - 11905: 0xAB95, - 29675 - 11905: 0xAB96, - 29676 - 11905: 0xAB97, - 29677 - 11905: 0xB0E0, - 29678 - 11905: 0xAB98, - 29679 - 11905: 0xAB99, - 29680 - 11905: 0xAB9A, - 29681 - 11905: 0xAB9B, - 29682 - 11905: 0xE7F5, - 29683 - 11905: 0xAB9C, - 29684 - 11905: 0xAB9D, - 29685 - 11905: 0xAB9E, - 29686 - 11905: 0xAB9F, - 29687 - 11905: 0xABA0, - 29688 - 11905: 0xAC40, - 29689 - 11905: 0xAC41, - 29690 - 11905: 0xAC42, - 29691 - 11905: 0xAC43, - 29692 - 11905: 0xAC44, - 29693 - 11905: 0xAC45, - 29694 - 11905: 0xAC46, - 29695 - 11905: 0xAC47, - 29696 - 11905: 0xAC48, - 29697 - 11905: 0xAC49, - 29698 - 11905: 0xAC4A, - 29699 - 11905: 0xC7F2, - 29700 - 11905: 0xAC4B, - 29701 - 11905: 0xC0C5, - 29702 - 11905: 0xC0ED, - 29703 - 11905: 0xAC4C, - 29704 - 11905: 0xAC4D, - 29705 - 11905: 0xC1F0, - 29706 - 11905: 0xE7F0, - 29707 - 11905: 0xAC4E, - 29708 - 11905: 0xAC4F, - 29709 - 11905: 0xAC50, - 29710 - 11905: 0xAC51, - 29711 - 11905: 0xE7F6, - 29712 - 11905: 0xCBF6, - 29713 - 11905: 0xAC52, - 29714 - 11905: 0xAC53, - 29715 - 11905: 0xAC54, - 29716 - 11905: 0xAC55, - 29717 - 11905: 0xAC56, - 29718 - 11905: 0xAC57, - 29719 - 11905: 0xAC58, - 29720 - 11905: 0xAC59, - 29721 - 11905: 0xAC5A, - 29722 - 11905: 0xE8A2, - 29723 - 11905: 0xE8A1, - 29724 - 11905: 0xAC5B, - 29725 - 11905: 0xAC5C, - 29726 - 11905: 0xAC5D, - 29727 - 11905: 0xAC5E, - 29728 - 11905: 0xAC5F, - 29729 - 11905: 0xAC60, - 29730 - 11905: 0xD7C1, - 29731 - 11905: 0xAC61, - 29732 - 11905: 0xAC62, - 29733 - 11905: 0xE7FA, - 29734 - 11905: 0xE7F9, - 29735 - 11905: 0xAC63, - 29736 - 11905: 0xE7FB, - 29737 - 11905: 0xAC64, - 29738 - 11905: 0xE7F7, - 29739 - 11905: 0xAC65, - 29740 - 11905: 0xE7FE, - 29741 - 11905: 0xAC66, - 29742 - 11905: 0xE7FD, - 29743 - 11905: 0xAC67, - 29744 - 11905: 0xE7FC, - 29745 - 11905: 0xAC68, - 29746 - 11905: 0xAC69, - 29747 - 11905: 0xC1D5, - 29748 - 11905: 0xC7D9, - 29749 - 11905: 0xC5FD, - 29750 - 11905: 0xC5C3, - 29751 - 11905: 0xAC6A, - 29752 - 11905: 0xAC6B, - 29753 - 11905: 0xAC6C, - 29754 - 11905: 0xAC6D, - 29755 - 11905: 0xAC6E, - 29756 - 11905: 0xC7ED, - 29757 - 11905: 0xAC6F, - 29758 - 11905: 0xAC70, - 29759 - 11905: 0xAC71, - 29760 - 11905: 0xAC72, - 29761 - 11905: 0xE8A3, - 29762 - 11905: 0xAC73, - 29763 - 11905: 0xAC74, - 29764 - 11905: 0xAC75, - 29765 - 11905: 0xAC76, - 29766 - 11905: 0xAC77, - 29767 - 11905: 0xAC78, - 29768 - 11905: 0xAC79, - 29769 - 11905: 0xAC7A, - 29770 - 11905: 0xAC7B, - 29771 - 11905: 0xAC7C, - 29772 - 11905: 0xAC7D, - 29773 - 11905: 0xAC7E, - 29774 - 11905: 0xAC80, - 29775 - 11905: 0xAC81, - 29776 - 11905: 0xAC82, - 29777 - 11905: 0xAC83, - 29778 - 11905: 0xAC84, - 29779 - 11905: 0xAC85, - 29780 - 11905: 0xAC86, - 29781 - 11905: 0xE8A6, - 29782 - 11905: 0xAC87, - 29783 - 11905: 0xE8A5, - 29784 - 11905: 0xAC88, - 29785 - 11905: 0xE8A7, - 29786 - 11905: 0xBAF7, - 29787 - 11905: 0xE7F8, - 29788 - 11905: 0xE8A4, - 29789 - 11905: 0xAC89, - 29790 - 11905: 0xC8F0, - 29791 - 11905: 0xC9AA, - 29792 - 11905: 0xAC8A, - 29793 - 11905: 0xAC8B, - 29794 - 11905: 0xAC8C, - 29795 - 11905: 0xAC8D, - 29796 - 11905: 0xAC8E, - 29797 - 11905: 0xAC8F, - 29798 - 11905: 0xAC90, - 29799 - 11905: 0xAC91, - 29800 - 11905: 0xAC92, - 29801 - 11905: 0xAC93, - 29802 - 11905: 0xAC94, - 29803 - 11905: 0xAC95, - 29804 - 11905: 0xAC96, - 29805 - 11905: 0xE8A9, - 29806 - 11905: 0xAC97, - 29807 - 11905: 0xAC98, - 29808 - 11905: 0xB9E5, - 29809 - 11905: 0xAC99, - 29810 - 11905: 0xAC9A, - 29811 - 11905: 0xAC9B, - 29812 - 11905: 0xAC9C, - 29813 - 11905: 0xAC9D, - 29814 - 11905: 0xD1FE, - 29815 - 11905: 0xE8A8, - 29816 - 11905: 0xAC9E, - 29817 - 11905: 0xAC9F, - 29818 - 11905: 0xACA0, - 29819 - 11905: 0xAD40, - 29820 - 11905: 0xAD41, - 29821 - 11905: 0xAD42, - 29822 - 11905: 0xE8AA, - 29823 - 11905: 0xAD43, - 29824 - 11905: 0xE8AD, - 29825 - 11905: 0xE8AE, - 29826 - 11905: 0xAD44, - 29827 - 11905: 0xC1A7, - 29828 - 11905: 0xAD45, - 29829 - 11905: 0xAD46, - 29830 - 11905: 0xAD47, - 29831 - 11905: 0xE8AF, - 29832 - 11905: 0xAD48, - 29833 - 11905: 0xAD49, - 29834 - 11905: 0xAD4A, - 29835 - 11905: 0xE8B0, - 29836 - 11905: 0xAD4B, - 29837 - 11905: 0xAD4C, - 29838 - 11905: 0xE8AC, - 29839 - 11905: 0xAD4D, - 29840 - 11905: 0xE8B4, - 29841 - 11905: 0xAD4E, - 29842 - 11905: 0xAD4F, - 29843 - 11905: 0xAD50, - 29844 - 11905: 0xAD51, - 29845 - 11905: 0xAD52, - 29846 - 11905: 0xAD53, - 29847 - 11905: 0xAD54, - 29848 - 11905: 0xAD55, - 29849 - 11905: 0xAD56, - 29850 - 11905: 0xAD57, - 29851 - 11905: 0xAD58, - 29852 - 11905: 0xE8AB, - 29853 - 11905: 0xAD59, - 29854 - 11905: 0xE8B1, - 29855 - 11905: 0xAD5A, - 29856 - 11905: 0xAD5B, - 29857 - 11905: 0xAD5C, - 29858 - 11905: 0xAD5D, - 29859 - 11905: 0xAD5E, - 29860 - 11905: 0xAD5F, - 29861 - 11905: 0xAD60, - 29862 - 11905: 0xAD61, - 29863 - 11905: 0xE8B5, - 29864 - 11905: 0xE8B2, - 29865 - 11905: 0xE8B3, - 29866 - 11905: 0xAD62, - 29867 - 11905: 0xAD63, - 29868 - 11905: 0xAD64, - 29869 - 11905: 0xAD65, - 29870 - 11905: 0xAD66, - 29871 - 11905: 0xAD67, - 29872 - 11905: 0xAD68, - 29873 - 11905: 0xAD69, - 29874 - 11905: 0xAD6A, - 29875 - 11905: 0xAD6B, - 29876 - 11905: 0xAD6C, - 29877 - 11905: 0xAD6D, - 29878 - 11905: 0xAD6E, - 29879 - 11905: 0xAD6F, - 29880 - 11905: 0xAD70, - 29881 - 11905: 0xAD71, - 29882 - 11905: 0xE8B7, - 29883 - 11905: 0xAD72, - 29884 - 11905: 0xAD73, - 29885 - 11905: 0xAD74, - 29886 - 11905: 0xAD75, - 29887 - 11905: 0xAD76, - 29888 - 11905: 0xAD77, - 29889 - 11905: 0xAD78, - 29890 - 11905: 0xAD79, - 29891 - 11905: 0xAD7A, - 29892 - 11905: 0xAD7B, - 29893 - 11905: 0xAD7C, - 29894 - 11905: 0xAD7D, - 29895 - 11905: 0xAD7E, - 29896 - 11905: 0xAD80, - 29897 - 11905: 0xAD81, - 29898 - 11905: 0xAD82, - 29899 - 11905: 0xAD83, - 29900 - 11905: 0xAD84, - 29901 - 11905: 0xAD85, - 29902 - 11905: 0xAD86, - 29903 - 11905: 0xAD87, - 29904 - 11905: 0xAD88, - 29905 - 11905: 0xAD89, - 29906 - 11905: 0xE8B6, - 29907 - 11905: 0xAD8A, - 29908 - 11905: 0xAD8B, - 29909 - 11905: 0xAD8C, - 29910 - 11905: 0xAD8D, - 29911 - 11905: 0xAD8E, - 29912 - 11905: 0xAD8F, - 29913 - 11905: 0xAD90, - 29914 - 11905: 0xAD91, - 29915 - 11905: 0xAD92, - 29916 - 11905: 0xB9CF, - 29917 - 11905: 0xAD93, - 29918 - 11905: 0xF0AC, - 29919 - 11905: 0xAD94, - 29920 - 11905: 0xF0AD, - 29921 - 11905: 0xAD95, - 29922 - 11905: 0xC6B0, - 29923 - 11905: 0xB0EA, - 29924 - 11905: 0xC8BF, - 29925 - 11905: 0xAD96, - 29926 - 11905: 0xCDDF, - 29927 - 11905: 0xAD97, - 29928 - 11905: 0xAD98, - 29929 - 11905: 0xAD99, - 29930 - 11905: 0xAD9A, - 29931 - 11905: 0xAD9B, - 29932 - 11905: 0xAD9C, - 29933 - 11905: 0xAD9D, - 29934 - 11905: 0xCECD, - 29935 - 11905: 0xEAB1, - 29936 - 11905: 0xAD9E, - 29937 - 11905: 0xAD9F, - 29938 - 11905: 0xADA0, - 29939 - 11905: 0xAE40, - 29940 - 11905: 0xEAB2, - 29941 - 11905: 0xAE41, - 29942 - 11905: 0xC6BF, - 29943 - 11905: 0xB4C9, - 29944 - 11905: 0xAE42, - 29945 - 11905: 0xAE43, - 29946 - 11905: 0xAE44, - 29947 - 11905: 0xAE45, - 29948 - 11905: 0xAE46, - 29949 - 11905: 0xAE47, - 29950 - 11905: 0xAE48, - 29951 - 11905: 0xEAB3, - 29952 - 11905: 0xAE49, - 29953 - 11905: 0xAE4A, - 29954 - 11905: 0xAE4B, - 29955 - 11905: 0xAE4C, - 29956 - 11905: 0xD5E7, - 29957 - 11905: 0xAE4D, - 29958 - 11905: 0xAE4E, - 29959 - 11905: 0xAE4F, - 29960 - 11905: 0xAE50, - 29961 - 11905: 0xAE51, - 29962 - 11905: 0xAE52, - 29963 - 11905: 0xAE53, - 29964 - 11905: 0xAE54, - 29965 - 11905: 0xDDF9, - 29966 - 11905: 0xAE55, - 29967 - 11905: 0xEAB4, - 29968 - 11905: 0xAE56, - 29969 - 11905: 0xEAB5, - 29970 - 11905: 0xAE57, - 29971 - 11905: 0xEAB6, - 29972 - 11905: 0xAE58, - 29973 - 11905: 0xAE59, - 29974 - 11905: 0xAE5A, - 29975 - 11905: 0xAE5B, - 29976 - 11905: 0xB8CA, - 29977 - 11905: 0xDFB0, - 29978 - 11905: 0xC9F5, - 29979 - 11905: 0xAE5C, - 29980 - 11905: 0xCCF0, - 29981 - 11905: 0xAE5D, - 29982 - 11905: 0xAE5E, - 29983 - 11905: 0xC9FA, - 29984 - 11905: 0xAE5F, - 29985 - 11905: 0xAE60, - 29986 - 11905: 0xAE61, - 29987 - 11905: 0xAE62, - 29988 - 11905: 0xAE63, - 29989 - 11905: 0xC9FB, - 29990 - 11905: 0xAE64, - 29991 - 11905: 0xAE65, - 29992 - 11905: 0xD3C3, - 29993 - 11905: 0xCBA6, - 29994 - 11905: 0xAE66, - 29995 - 11905: 0xB8A6, - 29996 - 11905: 0xF0AE, - 29997 - 11905: 0xB1C2, - 29998 - 11905: 0xAE67, - 29999 - 11905: 0xE5B8, - 30000 - 11905: 0xCCEF, - 30001 - 11905: 0xD3C9, - 30002 - 11905: 0xBCD7, - 30003 - 11905: 0xC9EA, - 30004 - 11905: 0xAE68, - 30005 - 11905: 0xB5E7, - 30006 - 11905: 0xAE69, - 30007 - 11905: 0xC4D0, - 30008 - 11905: 0xB5E9, - 30009 - 11905: 0xAE6A, - 30010 - 11905: 0xEEAE, - 30011 - 11905: 0xBBAD, - 30012 - 11905: 0xAE6B, - 30013 - 11905: 0xAE6C, - 30014 - 11905: 0xE7DE, - 30015 - 11905: 0xAE6D, - 30016 - 11905: 0xEEAF, - 30017 - 11905: 0xAE6E, - 30018 - 11905: 0xAE6F, - 30019 - 11905: 0xAE70, - 30020 - 11905: 0xAE71, - 30021 - 11905: 0xB3A9, - 30022 - 11905: 0xAE72, - 30023 - 11905: 0xAE73, - 30024 - 11905: 0xEEB2, - 30025 - 11905: 0xAE74, - 30026 - 11905: 0xAE75, - 30027 - 11905: 0xEEB1, - 30028 - 11905: 0xBDE7, - 30029 - 11905: 0xAE76, - 30030 - 11905: 0xEEB0, - 30031 - 11905: 0xCEB7, - 30032 - 11905: 0xAE77, - 30033 - 11905: 0xAE78, - 30034 - 11905: 0xAE79, - 30035 - 11905: 0xAE7A, - 30036 - 11905: 0xC5CF, - 30037 - 11905: 0xAE7B, - 30038 - 11905: 0xAE7C, - 30039 - 11905: 0xAE7D, - 30040 - 11905: 0xAE7E, - 30041 - 11905: 0xC1F4, - 30042 - 11905: 0xDBCE, - 30043 - 11905: 0xEEB3, - 30044 - 11905: 0xD0F3, - 30045 - 11905: 0xAE80, - 30046 - 11905: 0xAE81, - 30047 - 11905: 0xAE82, - 30048 - 11905: 0xAE83, - 30049 - 11905: 0xAE84, - 30050 - 11905: 0xAE85, - 30051 - 11905: 0xAE86, - 30052 - 11905: 0xAE87, - 30053 - 11905: 0xC2D4, - 30054 - 11905: 0xC6E8, - 30055 - 11905: 0xAE88, - 30056 - 11905: 0xAE89, - 30057 - 11905: 0xAE8A, - 30058 - 11905: 0xB7AC, - 30059 - 11905: 0xAE8B, - 30060 - 11905: 0xAE8C, - 30061 - 11905: 0xAE8D, - 30062 - 11905: 0xAE8E, - 30063 - 11905: 0xAE8F, - 30064 - 11905: 0xAE90, - 30065 - 11905: 0xAE91, - 30066 - 11905: 0xEEB4, - 30067 - 11905: 0xAE92, - 30068 - 11905: 0xB3EB, - 30069 - 11905: 0xAE93, - 30070 - 11905: 0xAE94, - 30071 - 11905: 0xAE95, - 30072 - 11905: 0xBBFB, - 30073 - 11905: 0xEEB5, - 30074 - 11905: 0xAE96, - 30075 - 11905: 0xAE97, - 30076 - 11905: 0xAE98, - 30077 - 11905: 0xAE99, - 30078 - 11905: 0xAE9A, - 30079 - 11905: 0xE7DC, - 30080 - 11905: 0xAE9B, - 30081 - 11905: 0xAE9C, - 30082 - 11905: 0xAE9D, - 30083 - 11905: 0xEEB6, - 30084 - 11905: 0xAE9E, - 30085 - 11905: 0xAE9F, - 30086 - 11905: 0xBDAE, - 30087 - 11905: 0xAEA0, - 30088 - 11905: 0xAF40, - 30089 - 11905: 0xAF41, - 30090 - 11905: 0xAF42, - 30091 - 11905: 0xF1E2, - 30092 - 11905: 0xAF43, - 30093 - 11905: 0xAF44, - 30094 - 11905: 0xAF45, - 30095 - 11905: 0xCAE8, - 30096 - 11905: 0xAF46, - 30097 - 11905: 0xD2C9, - 30098 - 11905: 0xF0DA, - 30099 - 11905: 0xAF47, - 30100 - 11905: 0xF0DB, - 30101 - 11905: 0xAF48, - 30102 - 11905: 0xF0DC, - 30103 - 11905: 0xC1C6, - 30104 - 11905: 0xAF49, - 30105 - 11905: 0xB8ED, - 30106 - 11905: 0xBECE, - 30107 - 11905: 0xAF4A, - 30108 - 11905: 0xAF4B, - 30109 - 11905: 0xF0DE, - 30110 - 11905: 0xAF4C, - 30111 - 11905: 0xC5B1, - 30112 - 11905: 0xF0DD, - 30113 - 11905: 0xD1F1, - 30114 - 11905: 0xAF4D, - 30115 - 11905: 0xF0E0, - 30116 - 11905: 0xB0CC, - 30117 - 11905: 0xBDEA, - 30118 - 11905: 0xAF4E, - 30119 - 11905: 0xAF4F, - 30120 - 11905: 0xAF50, - 30121 - 11905: 0xAF51, - 30122 - 11905: 0xAF52, - 30123 - 11905: 0xD2DF, - 30124 - 11905: 0xF0DF, - 30125 - 11905: 0xAF53, - 30126 - 11905: 0xB4AF, - 30127 - 11905: 0xB7E8, - 30128 - 11905: 0xF0E6, - 30129 - 11905: 0xF0E5, - 30130 - 11905: 0xC6A3, - 30131 - 11905: 0xF0E1, - 30132 - 11905: 0xF0E2, - 30133 - 11905: 0xB4C3, - 30134 - 11905: 0xAF54, - 30135 - 11905: 0xAF55, - 30136 - 11905: 0xF0E3, - 30137 - 11905: 0xD5EE, - 30138 - 11905: 0xAF56, - 30139 - 11905: 0xAF57, - 30140 - 11905: 0xCCDB, - 30141 - 11905: 0xBED2, - 30142 - 11905: 0xBCB2, - 30143 - 11905: 0xAF58, - 30144 - 11905: 0xAF59, - 30145 - 11905: 0xAF5A, - 30146 - 11905: 0xF0E8, - 30147 - 11905: 0xF0E7, - 30148 - 11905: 0xF0E4, - 30149 - 11905: 0xB2A1, - 30150 - 11905: 0xAF5B, - 30151 - 11905: 0xD6A2, - 30152 - 11905: 0xD3B8, - 30153 - 11905: 0xBEB7, - 30154 - 11905: 0xC8AC, - 30155 - 11905: 0xAF5C, - 30156 - 11905: 0xAF5D, - 30157 - 11905: 0xF0EA, - 30158 - 11905: 0xAF5E, - 30159 - 11905: 0xAF5F, - 30160 - 11905: 0xAF60, - 30161 - 11905: 0xAF61, - 30162 - 11905: 0xD1F7, - 30163 - 11905: 0xAF62, - 30164 - 11905: 0xD6CC, - 30165 - 11905: 0xBADB, - 30166 - 11905: 0xF0E9, - 30167 - 11905: 0xAF63, - 30168 - 11905: 0xB6BB, - 30169 - 11905: 0xAF64, - 30170 - 11905: 0xAF65, - 30171 - 11905: 0xCDB4, - 30172 - 11905: 0xAF66, - 30173 - 11905: 0xAF67, - 30174 - 11905: 0xC6A6, - 30175 - 11905: 0xAF68, - 30176 - 11905: 0xAF69, - 30177 - 11905: 0xAF6A, - 30178 - 11905: 0xC1A1, - 30179 - 11905: 0xF0EB, - 30180 - 11905: 0xF0EE, - 30181 - 11905: 0xAF6B, - 30182 - 11905: 0xF0ED, - 30183 - 11905: 0xF0F0, - 30184 - 11905: 0xF0EC, - 30185 - 11905: 0xAF6C, - 30186 - 11905: 0xBBBE, - 30187 - 11905: 0xF0EF, - 30188 - 11905: 0xAF6D, - 30189 - 11905: 0xAF6E, - 30190 - 11905: 0xAF6F, - 30191 - 11905: 0xAF70, - 30192 - 11905: 0xCCB5, - 30193 - 11905: 0xF0F2, - 30194 - 11905: 0xAF71, - 30195 - 11905: 0xAF72, - 30196 - 11905: 0xB3D5, - 30197 - 11905: 0xAF73, - 30198 - 11905: 0xAF74, - 30199 - 11905: 0xAF75, - 30200 - 11905: 0xAF76, - 30201 - 11905: 0xB1D4, - 30202 - 11905: 0xAF77, - 30203 - 11905: 0xAF78, - 30204 - 11905: 0xF0F3, - 30205 - 11905: 0xAF79, - 30206 - 11905: 0xAF7A, - 30207 - 11905: 0xF0F4, - 30208 - 11905: 0xF0F6, - 30209 - 11905: 0xB4E1, - 30210 - 11905: 0xAF7B, - 30211 - 11905: 0xF0F1, - 30212 - 11905: 0xAF7C, - 30213 - 11905: 0xF0F7, - 30214 - 11905: 0xAF7D, - 30215 - 11905: 0xAF7E, - 30216 - 11905: 0xAF80, - 30217 - 11905: 0xAF81, - 30218 - 11905: 0xF0FA, - 30219 - 11905: 0xAF82, - 30220 - 11905: 0xF0F8, - 30221 - 11905: 0xAF83, - 30222 - 11905: 0xAF84, - 30223 - 11905: 0xAF85, - 30224 - 11905: 0xF0F5, - 30225 - 11905: 0xAF86, - 30226 - 11905: 0xAF87, - 30227 - 11905: 0xAF88, - 30228 - 11905: 0xAF89, - 30229 - 11905: 0xF0FD, - 30230 - 11905: 0xAF8A, - 30231 - 11905: 0xF0F9, - 30232 - 11905: 0xF0FC, - 30233 - 11905: 0xF0FE, - 30234 - 11905: 0xAF8B, - 30235 - 11905: 0xF1A1, - 30236 - 11905: 0xAF8C, - 30237 - 11905: 0xAF8D, - 30238 - 11905: 0xAF8E, - 30239 - 11905: 0xCEC1, - 30240 - 11905: 0xF1A4, - 30241 - 11905: 0xAF8F, - 30242 - 11905: 0xF1A3, - 30243 - 11905: 0xAF90, - 30244 - 11905: 0xC1F6, - 30245 - 11905: 0xF0FB, - 30246 - 11905: 0xCADD, - 30247 - 11905: 0xAF91, - 30248 - 11905: 0xAF92, - 30249 - 11905: 0xB4F1, - 30250 - 11905: 0xB1F1, - 30251 - 11905: 0xCCB1, - 30252 - 11905: 0xAF93, - 30253 - 11905: 0xF1A6, - 30254 - 11905: 0xAF94, - 30255 - 11905: 0xAF95, - 30256 - 11905: 0xF1A7, - 30257 - 11905: 0xAF96, - 30258 - 11905: 0xAF97, - 30259 - 11905: 0xF1AC, - 30260 - 11905: 0xD5CE, - 30261 - 11905: 0xF1A9, - 30262 - 11905: 0xAF98, - 30263 - 11905: 0xAF99, - 30264 - 11905: 0xC8B3, - 30265 - 11905: 0xAF9A, - 30266 - 11905: 0xAF9B, - 30267 - 11905: 0xAF9C, - 30268 - 11905: 0xF1A2, - 30269 - 11905: 0xAF9D, - 30270 - 11905: 0xF1AB, - 30271 - 11905: 0xF1A8, - 30272 - 11905: 0xF1A5, - 30273 - 11905: 0xAF9E, - 30274 - 11905: 0xAF9F, - 30275 - 11905: 0xF1AA, - 30276 - 11905: 0xAFA0, - 30277 - 11905: 0xB040, - 30278 - 11905: 0xB041, - 30279 - 11905: 0xB042, - 30280 - 11905: 0xB043, - 30281 - 11905: 0xB044, - 30282 - 11905: 0xB045, - 30283 - 11905: 0xB046, - 30284 - 11905: 0xB0A9, - 30285 - 11905: 0xF1AD, - 30286 - 11905: 0xB047, - 30287 - 11905: 0xB048, - 30288 - 11905: 0xB049, - 30289 - 11905: 0xB04A, - 30290 - 11905: 0xB04B, - 30291 - 11905: 0xB04C, - 30292 - 11905: 0xF1AF, - 30293 - 11905: 0xB04D, - 30294 - 11905: 0xF1B1, - 30295 - 11905: 0xB04E, - 30296 - 11905: 0xB04F, - 30297 - 11905: 0xB050, - 30298 - 11905: 0xB051, - 30299 - 11905: 0xB052, - 30300 - 11905: 0xF1B0, - 30301 - 11905: 0xB053, - 30302 - 11905: 0xF1AE, - 30303 - 11905: 0xB054, - 30304 - 11905: 0xB055, - 30305 - 11905: 0xB056, - 30306 - 11905: 0xB057, - 30307 - 11905: 0xD1A2, - 30308 - 11905: 0xB058, - 30309 - 11905: 0xB059, - 30310 - 11905: 0xB05A, - 30311 - 11905: 0xB05B, - 30312 - 11905: 0xB05C, - 30313 - 11905: 0xB05D, - 30314 - 11905: 0xB05E, - 30315 - 11905: 0xF1B2, - 30316 - 11905: 0xB05F, - 30317 - 11905: 0xB060, - 30318 - 11905: 0xB061, - 30319 - 11905: 0xF1B3, - 30320 - 11905: 0xB062, - 30321 - 11905: 0xB063, - 30322 - 11905: 0xB064, - 30323 - 11905: 0xB065, - 30324 - 11905: 0xB066, - 30325 - 11905: 0xB067, - 30326 - 11905: 0xB068, - 30327 - 11905: 0xB069, - 30328 - 11905: 0xB9EF, - 30329 - 11905: 0xB06A, - 30330 - 11905: 0xB06B, - 30331 - 11905: 0xB5C7, - 30332 - 11905: 0xB06C, - 30333 - 11905: 0xB0D7, - 30334 - 11905: 0xB0D9, - 30335 - 11905: 0xB06D, - 30336 - 11905: 0xB06E, - 30337 - 11905: 0xB06F, - 30338 - 11905: 0xD4ED, - 30339 - 11905: 0xB070, - 30340 - 11905: 0xB5C4, - 30341 - 11905: 0xB071, - 30342 - 11905: 0xBDD4, - 30343 - 11905: 0xBBCA, - 30344 - 11905: 0xF0A7, - 30345 - 11905: 0xB072, - 30346 - 11905: 0xB073, - 30347 - 11905: 0xB8DE, - 30348 - 11905: 0xB074, - 30349 - 11905: 0xB075, - 30350 - 11905: 0xF0A8, - 30351 - 11905: 0xB076, - 30352 - 11905: 0xB077, - 30353 - 11905: 0xB0A8, - 30354 - 11905: 0xB078, - 30355 - 11905: 0xF0A9, - 30356 - 11905: 0xB079, - 30357 - 11905: 0xB07A, - 30358 - 11905: 0xCDEE, - 30359 - 11905: 0xB07B, - 30360 - 11905: 0xB07C, - 30361 - 11905: 0xF0AA, - 30362 - 11905: 0xB07D, - 30363 - 11905: 0xB07E, - 30364 - 11905: 0xB080, - 30365 - 11905: 0xB081, - 30366 - 11905: 0xB082, - 30367 - 11905: 0xB083, - 30368 - 11905: 0xB084, - 30369 - 11905: 0xB085, - 30370 - 11905: 0xB086, - 30371 - 11905: 0xB087, - 30372 - 11905: 0xF0AB, - 30373 - 11905: 0xB088, - 30374 - 11905: 0xB089, - 30375 - 11905: 0xB08A, - 30376 - 11905: 0xB08B, - 30377 - 11905: 0xB08C, - 30378 - 11905: 0xB08D, - 30379 - 11905: 0xB08E, - 30380 - 11905: 0xB08F, - 30381 - 11905: 0xB090, - 30382 - 11905: 0xC6A4, - 30383 - 11905: 0xB091, - 30384 - 11905: 0xB092, - 30385 - 11905: 0xD6E5, - 30386 - 11905: 0xF1E4, - 30387 - 11905: 0xB093, - 30388 - 11905: 0xF1E5, - 30389 - 11905: 0xB094, - 30390 - 11905: 0xB095, - 30391 - 11905: 0xB096, - 30392 - 11905: 0xB097, - 30393 - 11905: 0xB098, - 30394 - 11905: 0xB099, - 30395 - 11905: 0xB09A, - 30396 - 11905: 0xB09B, - 30397 - 11905: 0xB09C, - 30398 - 11905: 0xB09D, - 30399 - 11905: 0xC3F3, - 30400 - 11905: 0xB09E, - 30401 - 11905: 0xB09F, - 30402 - 11905: 0xD3DB, - 30403 - 11905: 0xB0A0, - 30404 - 11905: 0xB140, - 30405 - 11905: 0xD6D1, - 30406 - 11905: 0xC5E8, - 30407 - 11905: 0xB141, - 30408 - 11905: 0xD3AF, - 30409 - 11905: 0xB142, - 30410 - 11905: 0xD2E6, - 30411 - 11905: 0xB143, - 30412 - 11905: 0xB144, - 30413 - 11905: 0xEEC1, - 30414 - 11905: 0xB0BB, - 30415 - 11905: 0xD5B5, - 30416 - 11905: 0xD1CE, - 30417 - 11905: 0xBCE0, - 30418 - 11905: 0xBAD0, - 30419 - 11905: 0xB145, - 30420 - 11905: 0xBFF8, - 30421 - 11905: 0xB146, - 30422 - 11905: 0xB8C7, - 30423 - 11905: 0xB5C1, - 30424 - 11905: 0xC5CC, - 30425 - 11905: 0xB147, - 30426 - 11905: 0xB148, - 30427 - 11905: 0xCAA2, - 30428 - 11905: 0xB149, - 30429 - 11905: 0xB14A, - 30430 - 11905: 0xB14B, - 30431 - 11905: 0xC3CB, - 30432 - 11905: 0xB14C, - 30433 - 11905: 0xB14D, - 30434 - 11905: 0xB14E, - 30435 - 11905: 0xB14F, - 30436 - 11905: 0xB150, - 30437 - 11905: 0xEEC2, - 30438 - 11905: 0xB151, - 30439 - 11905: 0xB152, - 30440 - 11905: 0xB153, - 30441 - 11905: 0xB154, - 30442 - 11905: 0xB155, - 30443 - 11905: 0xB156, - 30444 - 11905: 0xB157, - 30445 - 11905: 0xB158, - 30446 - 11905: 0xC4BF, - 30447 - 11905: 0xB6A2, - 30448 - 11905: 0xB159, - 30449 - 11905: 0xEDEC, - 30450 - 11905: 0xC3A4, - 30451 - 11905: 0xB15A, - 30452 - 11905: 0xD6B1, - 30453 - 11905: 0xB15B, - 30454 - 11905: 0xB15C, - 30455 - 11905: 0xB15D, - 30456 - 11905: 0xCFE0, - 30457 - 11905: 0xEDEF, - 30458 - 11905: 0xB15E, - 30459 - 11905: 0xB15F, - 30460 - 11905: 0xC5CE, - 30461 - 11905: 0xB160, - 30462 - 11905: 0xB6DC, - 30463 - 11905: 0xB161, - 30464 - 11905: 0xB162, - 30465 - 11905: 0xCAA1, - 30466 - 11905: 0xB163, - 30467 - 11905: 0xB164, - 30468 - 11905: 0xEDED, - 30469 - 11905: 0xB165, - 30470 - 11905: 0xB166, - 30471 - 11905: 0xEDF0, - 30472 - 11905: 0xEDF1, - 30473 - 11905: 0xC3BC, - 30474 - 11905: 0xB167, - 30475 - 11905: 0xBFB4, - 30476 - 11905: 0xB168, - 30477 - 11905: 0xEDEE, - 30478 - 11905: 0xB169, - 30479 - 11905: 0xB16A, - 30480 - 11905: 0xB16B, - 30481 - 11905: 0xB16C, - 30482 - 11905: 0xB16D, - 30483 - 11905: 0xB16E, - 30484 - 11905: 0xB16F, - 30485 - 11905: 0xB170, - 30486 - 11905: 0xB171, - 30487 - 11905: 0xB172, - 30488 - 11905: 0xB173, - 30489 - 11905: 0xEDF4, - 30490 - 11905: 0xEDF2, - 30491 - 11905: 0xB174, - 30492 - 11905: 0xB175, - 30493 - 11905: 0xB176, - 30494 - 11905: 0xB177, - 30495 - 11905: 0xD5E6, - 30496 - 11905: 0xC3DF, - 30497 - 11905: 0xB178, - 30498 - 11905: 0xEDF3, - 30499 - 11905: 0xB179, - 30500 - 11905: 0xB17A, - 30501 - 11905: 0xB17B, - 30502 - 11905: 0xEDF6, - 30503 - 11905: 0xB17C, - 30504 - 11905: 0xD5A3, - 30505 - 11905: 0xD1A3, - 30506 - 11905: 0xB17D, - 30507 - 11905: 0xB17E, - 30508 - 11905: 0xB180, - 30509 - 11905: 0xEDF5, - 30510 - 11905: 0xB181, - 30511 - 11905: 0xC3D0, - 30512 - 11905: 0xB182, - 30513 - 11905: 0xB183, - 30514 - 11905: 0xB184, - 30515 - 11905: 0xB185, - 30516 - 11905: 0xB186, - 30517 - 11905: 0xEDF7, - 30518 - 11905: 0xBFF4, - 30519 - 11905: 0xBEEC, - 30520 - 11905: 0xEDF8, - 30521 - 11905: 0xB187, - 30522 - 11905: 0xCCF7, - 30523 - 11905: 0xB188, - 30524 - 11905: 0xD1DB, - 30525 - 11905: 0xB189, - 30526 - 11905: 0xB18A, - 30527 - 11905: 0xB18B, - 30528 - 11905: 0xD7C5, - 30529 - 11905: 0xD5F6, - 30530 - 11905: 0xB18C, - 30531 - 11905: 0xEDFC, - 30532 - 11905: 0xB18D, - 30533 - 11905: 0xB18E, - 30534 - 11905: 0xB18F, - 30535 - 11905: 0xEDFB, - 30536 - 11905: 0xB190, - 30537 - 11905: 0xB191, - 30538 - 11905: 0xB192, - 30539 - 11905: 0xB193, - 30540 - 11905: 0xB194, - 30541 - 11905: 0xB195, - 30542 - 11905: 0xB196, - 30543 - 11905: 0xB197, - 30544 - 11905: 0xEDF9, - 30545 - 11905: 0xEDFA, - 30546 - 11905: 0xB198, - 30547 - 11905: 0xB199, - 30548 - 11905: 0xB19A, - 30549 - 11905: 0xB19B, - 30550 - 11905: 0xB19C, - 30551 - 11905: 0xB19D, - 30552 - 11905: 0xB19E, - 30553 - 11905: 0xB19F, - 30554 - 11905: 0xEDFD, - 30555 - 11905: 0xBEA6, - 30556 - 11905: 0xB1A0, - 30557 - 11905: 0xB240, - 30558 - 11905: 0xB241, - 30559 - 11905: 0xB242, - 30560 - 11905: 0xB243, - 30561 - 11905: 0xCBAF, - 30562 - 11905: 0xEEA1, - 30563 - 11905: 0xB6BD, - 30564 - 11905: 0xB244, - 30565 - 11905: 0xEEA2, - 30566 - 11905: 0xC4C0, - 30567 - 11905: 0xB245, - 30568 - 11905: 0xEDFE, - 30569 - 11905: 0xB246, - 30570 - 11905: 0xB247, - 30571 - 11905: 0xBDDE, - 30572 - 11905: 0xB2C7, - 30573 - 11905: 0xB248, - 30574 - 11905: 0xB249, - 30575 - 11905: 0xB24A, - 30576 - 11905: 0xB24B, - 30577 - 11905: 0xB24C, - 30578 - 11905: 0xB24D, - 30579 - 11905: 0xB24E, - 30580 - 11905: 0xB24F, - 30581 - 11905: 0xB250, - 30582 - 11905: 0xB251, - 30583 - 11905: 0xB252, - 30584 - 11905: 0xB253, - 30585 - 11905: 0xB6C3, - 30586 - 11905: 0xB254, - 30587 - 11905: 0xB255, - 30588 - 11905: 0xB256, - 30589 - 11905: 0xEEA5, - 30590 - 11905: 0xD8BA, - 30591 - 11905: 0xEEA3, - 30592 - 11905: 0xEEA6, - 30593 - 11905: 0xB257, - 30594 - 11905: 0xB258, - 30595 - 11905: 0xB259, - 30596 - 11905: 0xC3E9, - 30597 - 11905: 0xB3F2, - 30598 - 11905: 0xB25A, - 30599 - 11905: 0xB25B, - 30600 - 11905: 0xB25C, - 30601 - 11905: 0xB25D, - 30602 - 11905: 0xB25E, - 30603 - 11905: 0xB25F, - 30604 - 11905: 0xEEA7, - 30605 - 11905: 0xEEA4, - 30606 - 11905: 0xCFB9, - 30607 - 11905: 0xB260, - 30608 - 11905: 0xB261, - 30609 - 11905: 0xEEA8, - 30610 - 11905: 0xC2F7, - 30611 - 11905: 0xB262, - 30612 - 11905: 0xB263, - 30613 - 11905: 0xB264, - 30614 - 11905: 0xB265, - 30615 - 11905: 0xB266, - 30616 - 11905: 0xB267, - 30617 - 11905: 0xB268, - 30618 - 11905: 0xB269, - 30619 - 11905: 0xB26A, - 30620 - 11905: 0xB26B, - 30621 - 11905: 0xB26C, - 30622 - 11905: 0xB26D, - 30623 - 11905: 0xEEA9, - 30624 - 11905: 0xEEAA, - 30625 - 11905: 0xB26E, - 30626 - 11905: 0xDEAB, - 30627 - 11905: 0xB26F, - 30628 - 11905: 0xB270, - 30629 - 11905: 0xC6B3, - 30630 - 11905: 0xB271, - 30631 - 11905: 0xC7C6, - 30632 - 11905: 0xB272, - 30633 - 11905: 0xD6F5, - 30634 - 11905: 0xB5C9, - 30635 - 11905: 0xB273, - 30636 - 11905: 0xCBB2, - 30637 - 11905: 0xB274, - 30638 - 11905: 0xB275, - 30639 - 11905: 0xB276, - 30640 - 11905: 0xEEAB, - 30641 - 11905: 0xB277, - 30642 - 11905: 0xB278, - 30643 - 11905: 0xCDAB, - 30644 - 11905: 0xB279, - 30645 - 11905: 0xEEAC, - 30646 - 11905: 0xB27A, - 30647 - 11905: 0xB27B, - 30648 - 11905: 0xB27C, - 30649 - 11905: 0xB27D, - 30650 - 11905: 0xB27E, - 30651 - 11905: 0xD5B0, - 30652 - 11905: 0xB280, - 30653 - 11905: 0xEEAD, - 30654 - 11905: 0xB281, - 30655 - 11905: 0xF6C4, - 30656 - 11905: 0xB282, - 30657 - 11905: 0xB283, - 30658 - 11905: 0xB284, - 30659 - 11905: 0xB285, - 30660 - 11905: 0xB286, - 30661 - 11905: 0xB287, - 30662 - 11905: 0xB288, - 30663 - 11905: 0xB289, - 30664 - 11905: 0xB28A, - 30665 - 11905: 0xB28B, - 30666 - 11905: 0xB28C, - 30667 - 11905: 0xB28D, - 30668 - 11905: 0xB28E, - 30669 - 11905: 0xDBC7, - 30670 - 11905: 0xB28F, - 30671 - 11905: 0xB290, - 30672 - 11905: 0xB291, - 30673 - 11905: 0xB292, - 30674 - 11905: 0xB293, - 30675 - 11905: 0xB294, - 30676 - 11905: 0xB295, - 30677 - 11905: 0xB296, - 30678 - 11905: 0xB297, - 30679 - 11905: 0xB4A3, - 30680 - 11905: 0xB298, - 30681 - 11905: 0xB299, - 30682 - 11905: 0xB29A, - 30683 - 11905: 0xC3AC, - 30684 - 11905: 0xF1E6, - 30685 - 11905: 0xB29B, - 30686 - 11905: 0xB29C, - 30687 - 11905: 0xB29D, - 30688 - 11905: 0xB29E, - 30689 - 11905: 0xB29F, - 30690 - 11905: 0xCAB8, - 30691 - 11905: 0xD2D3, - 30692 - 11905: 0xB2A0, - 30693 - 11905: 0xD6AA, - 30694 - 11905: 0xB340, - 30695 - 11905: 0xEFF2, - 30696 - 11905: 0xB341, - 30697 - 11905: 0xBED8, - 30698 - 11905: 0xB342, - 30699 - 11905: 0xBDC3, - 30700 - 11905: 0xEFF3, - 30701 - 11905: 0xB6CC, - 30702 - 11905: 0xB0AB, - 30703 - 11905: 0xB343, - 30704 - 11905: 0xB344, - 30705 - 11905: 0xB345, - 30706 - 11905: 0xB346, - 30707 - 11905: 0xCAAF, - 30708 - 11905: 0xB347, - 30709 - 11905: 0xB348, - 30710 - 11905: 0xEDB6, - 30711 - 11905: 0xB349, - 30712 - 11905: 0xEDB7, - 30713 - 11905: 0xB34A, - 30714 - 11905: 0xB34B, - 30715 - 11905: 0xB34C, - 30716 - 11905: 0xB34D, - 30717 - 11905: 0xCEF9, - 30718 - 11905: 0xB7AF, - 30719 - 11905: 0xBFF3, - 30720 - 11905: 0xEDB8, - 30721 - 11905: 0xC2EB, - 30722 - 11905: 0xC9B0, - 30723 - 11905: 0xB34E, - 30724 - 11905: 0xB34F, - 30725 - 11905: 0xB350, - 30726 - 11905: 0xB351, - 30727 - 11905: 0xB352, - 30728 - 11905: 0xB353, - 30729 - 11905: 0xEDB9, - 30730 - 11905: 0xB354, - 30731 - 11905: 0xB355, - 30732 - 11905: 0xC6F6, - 30733 - 11905: 0xBFB3, - 30734 - 11905: 0xB356, - 30735 - 11905: 0xB357, - 30736 - 11905: 0xB358, - 30737 - 11905: 0xEDBC, - 30738 - 11905: 0xC5F8, - 30739 - 11905: 0xB359, - 30740 - 11905: 0xD1D0, - 30741 - 11905: 0xB35A, - 30742 - 11905: 0xD7A9, - 30743 - 11905: 0xEDBA, - 30744 - 11905: 0xEDBB, - 30745 - 11905: 0xB35B, - 30746 - 11905: 0xD1E2, - 30747 - 11905: 0xB35C, - 30748 - 11905: 0xEDBF, - 30749 - 11905: 0xEDC0, - 30750 - 11905: 0xB35D, - 30751 - 11905: 0xEDC4, - 30752 - 11905: 0xB35E, - 30753 - 11905: 0xB35F, - 30754 - 11905: 0xB360, - 30755 - 11905: 0xEDC8, - 30756 - 11905: 0xB361, - 30757 - 11905: 0xEDC6, - 30758 - 11905: 0xEDCE, - 30759 - 11905: 0xD5E8, - 30760 - 11905: 0xB362, - 30761 - 11905: 0xEDC9, - 30762 - 11905: 0xB363, - 30763 - 11905: 0xB364, - 30764 - 11905: 0xEDC7, - 30765 - 11905: 0xEDBE, - 30766 - 11905: 0xB365, - 30767 - 11905: 0xB366, - 30768 - 11905: 0xC5E9, - 30769 - 11905: 0xB367, - 30770 - 11905: 0xB368, - 30771 - 11905: 0xB369, - 30772 - 11905: 0xC6C6, - 30773 - 11905: 0xB36A, - 30774 - 11905: 0xB36B, - 30775 - 11905: 0xC9E9, - 30776 - 11905: 0xD4D2, - 30777 - 11905: 0xEDC1, - 30778 - 11905: 0xEDC2, - 30779 - 11905: 0xEDC3, - 30780 - 11905: 0xEDC5, - 30781 - 11905: 0xB36C, - 30782 - 11905: 0xC0F9, - 30783 - 11905: 0xB36D, - 30784 - 11905: 0xB4A1, - 30785 - 11905: 0xB36E, - 30786 - 11905: 0xB36F, - 30787 - 11905: 0xB370, - 30788 - 11905: 0xB371, - 30789 - 11905: 0xB9E8, - 30790 - 11905: 0xB372, - 30791 - 11905: 0xEDD0, - 30792 - 11905: 0xB373, - 30793 - 11905: 0xB374, - 30794 - 11905: 0xB375, - 30795 - 11905: 0xB376, - 30796 - 11905: 0xEDD1, - 30797 - 11905: 0xB377, - 30798 - 11905: 0xEDCA, - 30799 - 11905: 0xB378, - 30800 - 11905: 0xEDCF, - 30801 - 11905: 0xB379, - 30802 - 11905: 0xCEF8, - 30803 - 11905: 0xB37A, - 30804 - 11905: 0xB37B, - 30805 - 11905: 0xCBB6, - 30806 - 11905: 0xEDCC, - 30807 - 11905: 0xEDCD, - 30808 - 11905: 0xB37C, - 30809 - 11905: 0xB37D, - 30810 - 11905: 0xB37E, - 30811 - 11905: 0xB380, - 30812 - 11905: 0xB381, - 30813 - 11905: 0xCFF5, - 30814 - 11905: 0xB382, - 30815 - 11905: 0xB383, - 30816 - 11905: 0xB384, - 30817 - 11905: 0xB385, - 30818 - 11905: 0xB386, - 30819 - 11905: 0xB387, - 30820 - 11905: 0xB388, - 30821 - 11905: 0xB389, - 30822 - 11905: 0xB38A, - 30823 - 11905: 0xB38B, - 30824 - 11905: 0xB38C, - 30825 - 11905: 0xB38D, - 30826 - 11905: 0xEDD2, - 30827 - 11905: 0xC1F2, - 30828 - 11905: 0xD3B2, - 30829 - 11905: 0xEDCB, - 30830 - 11905: 0xC8B7, - 30831 - 11905: 0xB38E, - 30832 - 11905: 0xB38F, - 30833 - 11905: 0xB390, - 30834 - 11905: 0xB391, - 30835 - 11905: 0xB392, - 30836 - 11905: 0xB393, - 30837 - 11905: 0xB394, - 30838 - 11905: 0xB395, - 30839 - 11905: 0xBCEF, - 30840 - 11905: 0xB396, - 30841 - 11905: 0xB397, - 30842 - 11905: 0xB398, - 30843 - 11905: 0xB399, - 30844 - 11905: 0xC5F0, - 30845 - 11905: 0xB39A, - 30846 - 11905: 0xB39B, - 30847 - 11905: 0xB39C, - 30848 - 11905: 0xB39D, - 30849 - 11905: 0xB39E, - 30850 - 11905: 0xB39F, - 30851 - 11905: 0xB3A0, - 30852 - 11905: 0xB440, - 30853 - 11905: 0xB441, - 30854 - 11905: 0xB442, - 30855 - 11905: 0xEDD6, - 30856 - 11905: 0xB443, - 30857 - 11905: 0xB5EF, - 30858 - 11905: 0xB444, - 30859 - 11905: 0xB445, - 30860 - 11905: 0xC2B5, - 30861 - 11905: 0xB0AD, - 30862 - 11905: 0xCBE9, - 30863 - 11905: 0xB446, - 30864 - 11905: 0xB447, - 30865 - 11905: 0xB1AE, - 30866 - 11905: 0xB448, - 30867 - 11905: 0xEDD4, - 30868 - 11905: 0xB449, - 30869 - 11905: 0xB44A, - 30870 - 11905: 0xB44B, - 30871 - 11905: 0xCDEB, - 30872 - 11905: 0xB5E2, - 30873 - 11905: 0xB44C, - 30874 - 11905: 0xEDD5, - 30875 - 11905: 0xEDD3, - 30876 - 11905: 0xEDD7, - 30877 - 11905: 0xB44D, - 30878 - 11905: 0xB44E, - 30879 - 11905: 0xB5FA, - 30880 - 11905: 0xB44F, - 30881 - 11905: 0xEDD8, - 30882 - 11905: 0xB450, - 30883 - 11905: 0xEDD9, - 30884 - 11905: 0xB451, - 30885 - 11905: 0xEDDC, - 30886 - 11905: 0xB452, - 30887 - 11905: 0xB1CC, - 30888 - 11905: 0xB453, - 30889 - 11905: 0xB454, - 30890 - 11905: 0xB455, - 30891 - 11905: 0xB456, - 30892 - 11905: 0xB457, - 30893 - 11905: 0xB458, - 30894 - 11905: 0xB459, - 30895 - 11905: 0xB45A, - 30896 - 11905: 0xC5F6, - 30897 - 11905: 0xBCEE, - 30898 - 11905: 0xEDDA, - 30899 - 11905: 0xCCBC, - 30900 - 11905: 0xB2EA, - 30901 - 11905: 0xB45B, - 30902 - 11905: 0xB45C, - 30903 - 11905: 0xB45D, - 30904 - 11905: 0xB45E, - 30905 - 11905: 0xEDDB, - 30906 - 11905: 0xB45F, - 30907 - 11905: 0xB460, - 30908 - 11905: 0xB461, - 30909 - 11905: 0xB462, - 30910 - 11905: 0xC4EB, - 30911 - 11905: 0xB463, - 30912 - 11905: 0xB464, - 30913 - 11905: 0xB4C5, - 30914 - 11905: 0xB465, - 30915 - 11905: 0xB466, - 30916 - 11905: 0xB467, - 30917 - 11905: 0xB0F5, - 30918 - 11905: 0xB468, - 30919 - 11905: 0xB469, - 30920 - 11905: 0xB46A, - 30921 - 11905: 0xEDDF, - 30922 - 11905: 0xC0DA, - 30923 - 11905: 0xB4E8, - 30924 - 11905: 0xB46B, - 30925 - 11905: 0xB46C, - 30926 - 11905: 0xB46D, - 30927 - 11905: 0xB46E, - 30928 - 11905: 0xC5CD, - 30929 - 11905: 0xB46F, - 30930 - 11905: 0xB470, - 30931 - 11905: 0xB471, - 30932 - 11905: 0xEDDD, - 30933 - 11905: 0xBFC4, - 30934 - 11905: 0xB472, - 30935 - 11905: 0xB473, - 30936 - 11905: 0xB474, - 30937 - 11905: 0xEDDE, - 30938 - 11905: 0xB475, - 30939 - 11905: 0xB476, - 30940 - 11905: 0xB477, - 30941 - 11905: 0xB478, - 30942 - 11905: 0xB479, - 30943 - 11905: 0xB47A, - 30944 - 11905: 0xB47B, - 30945 - 11905: 0xB47C, - 30946 - 11905: 0xB47D, - 30947 - 11905: 0xB47E, - 30948 - 11905: 0xB480, - 30949 - 11905: 0xB481, - 30950 - 11905: 0xB482, - 30951 - 11905: 0xB483, - 30952 - 11905: 0xC4A5, - 30953 - 11905: 0xB484, - 30954 - 11905: 0xB485, - 30955 - 11905: 0xB486, - 30956 - 11905: 0xEDE0, - 30957 - 11905: 0xB487, - 30958 - 11905: 0xB488, - 30959 - 11905: 0xB489, - 30960 - 11905: 0xB48A, - 30961 - 11905: 0xB48B, - 30962 - 11905: 0xEDE1, - 30963 - 11905: 0xB48C, - 30964 - 11905: 0xEDE3, - 30965 - 11905: 0xB48D, - 30966 - 11905: 0xB48E, - 30967 - 11905: 0xC1D7, - 30968 - 11905: 0xB48F, - 30969 - 11905: 0xB490, - 30970 - 11905: 0xBBC7, - 30971 - 11905: 0xB491, - 30972 - 11905: 0xB492, - 30973 - 11905: 0xB493, - 30974 - 11905: 0xB494, - 30975 - 11905: 0xB495, - 30976 - 11905: 0xB496, - 30977 - 11905: 0xBDB8, - 30978 - 11905: 0xB497, - 30979 - 11905: 0xB498, - 30980 - 11905: 0xB499, - 30981 - 11905: 0xEDE2, - 30982 - 11905: 0xB49A, - 30983 - 11905: 0xB49B, - 30984 - 11905: 0xB49C, - 30985 - 11905: 0xB49D, - 30986 - 11905: 0xB49E, - 30987 - 11905: 0xB49F, - 30988 - 11905: 0xB4A0, - 30989 - 11905: 0xB540, - 30990 - 11905: 0xB541, - 30991 - 11905: 0xB542, - 30992 - 11905: 0xB543, - 30993 - 11905: 0xB544, - 30994 - 11905: 0xB545, - 30995 - 11905: 0xEDE4, - 30996 - 11905: 0xB546, - 30997 - 11905: 0xB547, - 30998 - 11905: 0xB548, - 30999 - 11905: 0xB549, - 31000 - 11905: 0xB54A, - 31001 - 11905: 0xB54B, - 31002 - 11905: 0xB54C, - 31003 - 11905: 0xB54D, - 31004 - 11905: 0xB54E, - 31005 - 11905: 0xB54F, - 31006 - 11905: 0xEDE6, - 31007 - 11905: 0xB550, - 31008 - 11905: 0xB551, - 31009 - 11905: 0xB552, - 31010 - 11905: 0xB553, - 31011 - 11905: 0xB554, - 31012 - 11905: 0xEDE5, - 31013 - 11905: 0xB555, - 31014 - 11905: 0xB556, - 31015 - 11905: 0xB557, - 31016 - 11905: 0xB558, - 31017 - 11905: 0xB559, - 31018 - 11905: 0xB55A, - 31019 - 11905: 0xB55B, - 31020 - 11905: 0xB55C, - 31021 - 11905: 0xB55D, - 31022 - 11905: 0xB55E, - 31023 - 11905: 0xB55F, - 31024 - 11905: 0xB560, - 31025 - 11905: 0xB561, - 31026 - 11905: 0xB562, - 31027 - 11905: 0xB563, - 31028 - 11905: 0xEDE7, - 31029 - 11905: 0xB564, - 31030 - 11905: 0xB565, - 31031 - 11905: 0xB566, - 31032 - 11905: 0xB567, - 31033 - 11905: 0xB568, - 31034 - 11905: 0xCABE, - 31035 - 11905: 0xECEA, - 31036 - 11905: 0xC0F1, - 31037 - 11905: 0xB569, - 31038 - 11905: 0xC9E7, - 31039 - 11905: 0xB56A, - 31040 - 11905: 0xECEB, - 31041 - 11905: 0xC6EE, - 31042 - 11905: 0xB56B, - 31043 - 11905: 0xB56C, - 31044 - 11905: 0xB56D, - 31045 - 11905: 0xB56E, - 31046 - 11905: 0xECEC, - 31047 - 11905: 0xB56F, - 31048 - 11905: 0xC6ED, - 31049 - 11905: 0xECED, - 31050 - 11905: 0xB570, - 31051 - 11905: 0xB571, - 31052 - 11905: 0xB572, - 31053 - 11905: 0xB573, - 31054 - 11905: 0xB574, - 31055 - 11905: 0xB575, - 31056 - 11905: 0xB576, - 31057 - 11905: 0xB577, - 31058 - 11905: 0xB578, - 31059 - 11905: 0xECF0, - 31060 - 11905: 0xB579, - 31061 - 11905: 0xB57A, - 31062 - 11905: 0xD7E6, - 31063 - 11905: 0xECF3, - 31064 - 11905: 0xB57B, - 31065 - 11905: 0xB57C, - 31066 - 11905: 0xECF1, - 31067 - 11905: 0xECEE, - 31068 - 11905: 0xECEF, - 31069 - 11905: 0xD7A3, - 31070 - 11905: 0xC9F1, - 31071 - 11905: 0xCBEE, - 31072 - 11905: 0xECF4, - 31073 - 11905: 0xB57D, - 31074 - 11905: 0xECF2, - 31075 - 11905: 0xB57E, - 31076 - 11905: 0xB580, - 31077 - 11905: 0xCFE9, - 31078 - 11905: 0xB581, - 31079 - 11905: 0xECF6, - 31080 - 11905: 0xC6B1, - 31081 - 11905: 0xB582, - 31082 - 11905: 0xB583, - 31083 - 11905: 0xB584, - 31084 - 11905: 0xB585, - 31085 - 11905: 0xBCC0, - 31086 - 11905: 0xB586, - 31087 - 11905: 0xECF5, - 31088 - 11905: 0xB587, - 31089 - 11905: 0xB588, - 31090 - 11905: 0xB589, - 31091 - 11905: 0xB58A, - 31092 - 11905: 0xB58B, - 31093 - 11905: 0xB58C, - 31094 - 11905: 0xB58D, - 31095 - 11905: 0xB5BB, - 31096 - 11905: 0xBBF6, - 31097 - 11905: 0xB58E, - 31098 - 11905: 0xECF7, - 31099 - 11905: 0xB58F, - 31100 - 11905: 0xB590, - 31101 - 11905: 0xB591, - 31102 - 11905: 0xB592, - 31103 - 11905: 0xB593, - 31104 - 11905: 0xD9F7, - 31105 - 11905: 0xBDFB, - 31106 - 11905: 0xB594, - 31107 - 11905: 0xB595, - 31108 - 11905: 0xC2BB, - 31109 - 11905: 0xECF8, - 31110 - 11905: 0xB596, - 31111 - 11905: 0xB597, - 31112 - 11905: 0xB598, - 31113 - 11905: 0xB599, - 31114 - 11905: 0xECF9, - 31115 - 11905: 0xB59A, - 31116 - 11905: 0xB59B, - 31117 - 11905: 0xB59C, - 31118 - 11905: 0xB59D, - 31119 - 11905: 0xB8A3, - 31120 - 11905: 0xB59E, - 31121 - 11905: 0xB59F, - 31122 - 11905: 0xB5A0, - 31123 - 11905: 0xB640, - 31124 - 11905: 0xB641, - 31125 - 11905: 0xB642, - 31126 - 11905: 0xB643, - 31127 - 11905: 0xB644, - 31128 - 11905: 0xB645, - 31129 - 11905: 0xB646, - 31130 - 11905: 0xECFA, - 31131 - 11905: 0xB647, - 31132 - 11905: 0xB648, - 31133 - 11905: 0xB649, - 31134 - 11905: 0xB64A, - 31135 - 11905: 0xB64B, - 31136 - 11905: 0xB64C, - 31137 - 11905: 0xB64D, - 31138 - 11905: 0xB64E, - 31139 - 11905: 0xB64F, - 31140 - 11905: 0xB650, - 31141 - 11905: 0xB651, - 31142 - 11905: 0xB652, - 31143 - 11905: 0xECFB, - 31144 - 11905: 0xB653, - 31145 - 11905: 0xB654, - 31146 - 11905: 0xB655, - 31147 - 11905: 0xB656, - 31148 - 11905: 0xB657, - 31149 - 11905: 0xB658, - 31150 - 11905: 0xB659, - 31151 - 11905: 0xB65A, - 31152 - 11905: 0xB65B, - 31153 - 11905: 0xB65C, - 31154 - 11905: 0xB65D, - 31155 - 11905: 0xECFC, - 31156 - 11905: 0xB65E, - 31157 - 11905: 0xB65F, - 31158 - 11905: 0xB660, - 31159 - 11905: 0xB661, - 31160 - 11905: 0xB662, - 31161 - 11905: 0xD3ED, - 31162 - 11905: 0xD8AE, - 31163 - 11905: 0xC0EB, - 31164 - 11905: 0xB663, - 31165 - 11905: 0xC7DD, - 31166 - 11905: 0xBACC, - 31167 - 11905: 0xB664, - 31168 - 11905: 0xD0E3, - 31169 - 11905: 0xCBBD, - 31170 - 11905: 0xB665, - 31171 - 11905: 0xCDBA, - 31172 - 11905: 0xB666, - 31173 - 11905: 0xB667, - 31174 - 11905: 0xB8D1, - 31175 - 11905: 0xB668, - 31176 - 11905: 0xB669, - 31177 - 11905: 0xB1FC, - 31178 - 11905: 0xB66A, - 31179 - 11905: 0xC7EF, - 31180 - 11905: 0xB66B, - 31181 - 11905: 0xD6D6, - 31182 - 11905: 0xB66C, - 31183 - 11905: 0xB66D, - 31184 - 11905: 0xB66E, - 31185 - 11905: 0xBFC6, - 31186 - 11905: 0xC3EB, - 31187 - 11905: 0xB66F, - 31188 - 11905: 0xB670, - 31189 - 11905: 0xEFF5, - 31190 - 11905: 0xB671, - 31191 - 11905: 0xB672, - 31192 - 11905: 0xC3D8, - 31193 - 11905: 0xB673, - 31194 - 11905: 0xB674, - 31195 - 11905: 0xB675, - 31196 - 11905: 0xB676, - 31197 - 11905: 0xB677, - 31198 - 11905: 0xB678, - 31199 - 11905: 0xD7E2, - 31200 - 11905: 0xB679, - 31201 - 11905: 0xB67A, - 31202 - 11905: 0xB67B, - 31203 - 11905: 0xEFF7, - 31204 - 11905: 0xB3D3, - 31205 - 11905: 0xB67C, - 31206 - 11905: 0xC7D8, - 31207 - 11905: 0xD1ED, - 31208 - 11905: 0xB67D, - 31209 - 11905: 0xD6C8, - 31210 - 11905: 0xB67E, - 31211 - 11905: 0xEFF8, - 31212 - 11905: 0xB680, - 31213 - 11905: 0xEFF6, - 31214 - 11905: 0xB681, - 31215 - 11905: 0xBBFD, - 31216 - 11905: 0xB3C6, - 31217 - 11905: 0xB682, - 31218 - 11905: 0xB683, - 31219 - 11905: 0xB684, - 31220 - 11905: 0xB685, - 31221 - 11905: 0xB686, - 31222 - 11905: 0xB687, - 31223 - 11905: 0xB688, - 31224 - 11905: 0xBDD5, - 31225 - 11905: 0xB689, - 31226 - 11905: 0xB68A, - 31227 - 11905: 0xD2C6, - 31228 - 11905: 0xB68B, - 31229 - 11905: 0xBBE0, - 31230 - 11905: 0xB68C, - 31231 - 11905: 0xB68D, - 31232 - 11905: 0xCFA1, - 31233 - 11905: 0xB68E, - 31234 - 11905: 0xEFFC, - 31235 - 11905: 0xEFFB, - 31236 - 11905: 0xB68F, - 31237 - 11905: 0xB690, - 31238 - 11905: 0xEFF9, - 31239 - 11905: 0xB691, - 31240 - 11905: 0xB692, - 31241 - 11905: 0xB693, - 31242 - 11905: 0xB694, - 31243 - 11905: 0xB3CC, - 31244 - 11905: 0xB695, - 31245 - 11905: 0xC9D4, - 31246 - 11905: 0xCBB0, - 31247 - 11905: 0xB696, - 31248 - 11905: 0xB697, - 31249 - 11905: 0xB698, - 31250 - 11905: 0xB699, - 31251 - 11905: 0xB69A, - 31252 - 11905: 0xEFFE, - 31253 - 11905: 0xB69B, - 31254 - 11905: 0xB69C, - 31255 - 11905: 0xB0DE, - 31256 - 11905: 0xB69D, - 31257 - 11905: 0xB69E, - 31258 - 11905: 0xD6C9, - 31259 - 11905: 0xB69F, - 31260 - 11905: 0xB6A0, - 31261 - 11905: 0xB740, - 31262 - 11905: 0xEFFD, - 31263 - 11905: 0xB741, - 31264 - 11905: 0xB3ED, - 31265 - 11905: 0xB742, - 31266 - 11905: 0xB743, - 31267 - 11905: 0xF6D5, - 31268 - 11905: 0xB744, - 31269 - 11905: 0xB745, - 31270 - 11905: 0xB746, - 31271 - 11905: 0xB747, - 31272 - 11905: 0xB748, - 31273 - 11905: 0xB749, - 31274 - 11905: 0xB74A, - 31275 - 11905: 0xB74B, - 31276 - 11905: 0xB74C, - 31277 - 11905: 0xB74D, - 31278 - 11905: 0xB74E, - 31279 - 11905: 0xB74F, - 31280 - 11905: 0xB750, - 31281 - 11905: 0xB751, - 31282 - 11905: 0xB752, - 31283 - 11905: 0xCEC8, - 31284 - 11905: 0xB753, - 31285 - 11905: 0xB754, - 31286 - 11905: 0xB755, - 31287 - 11905: 0xF0A2, - 31288 - 11905: 0xB756, - 31289 - 11905: 0xF0A1, - 31290 - 11905: 0xB757, - 31291 - 11905: 0xB5BE, - 31292 - 11905: 0xBCDA, - 31293 - 11905: 0xBBFC, - 31294 - 11905: 0xB758, - 31295 - 11905: 0xB8E5, - 31296 - 11905: 0xB759, - 31297 - 11905: 0xB75A, - 31298 - 11905: 0xB75B, - 31299 - 11905: 0xB75C, - 31300 - 11905: 0xB75D, - 31301 - 11905: 0xB75E, - 31302 - 11905: 0xC4C2, - 31303 - 11905: 0xB75F, - 31304 - 11905: 0xB760, - 31305 - 11905: 0xB761, - 31306 - 11905: 0xB762, - 31307 - 11905: 0xB763, - 31308 - 11905: 0xB764, - 31309 - 11905: 0xB765, - 31310 - 11905: 0xB766, - 31311 - 11905: 0xB767, - 31312 - 11905: 0xB768, - 31313 - 11905: 0xF0A3, - 31314 - 11905: 0xB769, - 31315 - 11905: 0xB76A, - 31316 - 11905: 0xB76B, - 31317 - 11905: 0xB76C, - 31318 - 11905: 0xB76D, - 31319 - 11905: 0xCBEB, - 31320 - 11905: 0xB76E, - 31321 - 11905: 0xB76F, - 31322 - 11905: 0xB770, - 31323 - 11905: 0xB771, - 31324 - 11905: 0xB772, - 31325 - 11905: 0xB773, - 31326 - 11905: 0xB774, - 31327 - 11905: 0xB775, - 31328 - 11905: 0xB776, - 31329 - 11905: 0xB777, - 31330 - 11905: 0xB778, - 31331 - 11905: 0xB779, - 31332 - 11905: 0xB77A, - 31333 - 11905: 0xB77B, - 31334 - 11905: 0xB77C, - 31335 - 11905: 0xB77D, - 31336 - 11905: 0xB77E, - 31337 - 11905: 0xB780, - 31338 - 11905: 0xB781, - 31339 - 11905: 0xB782, - 31340 - 11905: 0xB783, - 31341 - 11905: 0xB784, - 31342 - 11905: 0xB785, - 31343 - 11905: 0xB786, - 31344 - 11905: 0xF0A6, - 31345 - 11905: 0xB787, - 31346 - 11905: 0xB788, - 31347 - 11905: 0xB789, - 31348 - 11905: 0xD1A8, - 31349 - 11905: 0xB78A, - 31350 - 11905: 0xBEBF, - 31351 - 11905: 0xC7EE, - 31352 - 11905: 0xF1B6, - 31353 - 11905: 0xF1B7, - 31354 - 11905: 0xBFD5, - 31355 - 11905: 0xB78B, - 31356 - 11905: 0xB78C, - 31357 - 11905: 0xB78D, - 31358 - 11905: 0xB78E, - 31359 - 11905: 0xB4A9, - 31360 - 11905: 0xF1B8, - 31361 - 11905: 0xCDBB, - 31362 - 11905: 0xB78F, - 31363 - 11905: 0xC7D4, - 31364 - 11905: 0xD5AD, - 31365 - 11905: 0xB790, - 31366 - 11905: 0xF1B9, - 31367 - 11905: 0xB791, - 31368 - 11905: 0xF1BA, - 31369 - 11905: 0xB792, - 31370 - 11905: 0xB793, - 31371 - 11905: 0xB794, - 31372 - 11905: 0xB795, - 31373 - 11905: 0xC7CF, - 31374 - 11905: 0xB796, - 31375 - 11905: 0xB797, - 31376 - 11905: 0xB798, - 31377 - 11905: 0xD2A4, - 31378 - 11905: 0xD6CF, - 31379 - 11905: 0xB799, - 31380 - 11905: 0xB79A, - 31381 - 11905: 0xF1BB, - 31382 - 11905: 0xBDD1, - 31383 - 11905: 0xB4B0, - 31384 - 11905: 0xBEBD, - 31385 - 11905: 0xB79B, - 31386 - 11905: 0xB79C, - 31387 - 11905: 0xB79D, - 31388 - 11905: 0xB4DC, - 31389 - 11905: 0xCED1, - 31390 - 11905: 0xB79E, - 31391 - 11905: 0xBFDF, - 31392 - 11905: 0xF1BD, - 31393 - 11905: 0xB79F, - 31394 - 11905: 0xB7A0, - 31395 - 11905: 0xB840, - 31396 - 11905: 0xB841, - 31397 - 11905: 0xBFFA, - 31398 - 11905: 0xF1BC, - 31399 - 11905: 0xB842, - 31400 - 11905: 0xF1BF, - 31401 - 11905: 0xB843, - 31402 - 11905: 0xB844, - 31403 - 11905: 0xB845, - 31404 - 11905: 0xF1BE, - 31405 - 11905: 0xF1C0, - 31406 - 11905: 0xB846, - 31407 - 11905: 0xB847, - 31408 - 11905: 0xB848, - 31409 - 11905: 0xB849, - 31410 - 11905: 0xB84A, - 31411 - 11905: 0xF1C1, - 31412 - 11905: 0xB84B, - 31413 - 11905: 0xB84C, - 31414 - 11905: 0xB84D, - 31415 - 11905: 0xB84E, - 31416 - 11905: 0xB84F, - 31417 - 11905: 0xB850, - 31418 - 11905: 0xB851, - 31419 - 11905: 0xB852, - 31420 - 11905: 0xB853, - 31421 - 11905: 0xB854, - 31422 - 11905: 0xB855, - 31423 - 11905: 0xC1FE, - 31424 - 11905: 0xB856, - 31425 - 11905: 0xB857, - 31426 - 11905: 0xB858, - 31427 - 11905: 0xB859, - 31428 - 11905: 0xB85A, - 31429 - 11905: 0xB85B, - 31430 - 11905: 0xB85C, - 31431 - 11905: 0xB85D, - 31432 - 11905: 0xB85E, - 31433 - 11905: 0xB85F, - 31434 - 11905: 0xB860, - 31435 - 11905: 0xC1A2, - 31436 - 11905: 0xB861, - 31437 - 11905: 0xB862, - 31438 - 11905: 0xB863, - 31439 - 11905: 0xB864, - 31440 - 11905: 0xB865, - 31441 - 11905: 0xB866, - 31442 - 11905: 0xB867, - 31443 - 11905: 0xB868, - 31444 - 11905: 0xB869, - 31445 - 11905: 0xB86A, - 31446 - 11905: 0xCAFA, - 31447 - 11905: 0xB86B, - 31448 - 11905: 0xB86C, - 31449 - 11905: 0xD5BE, - 31450 - 11905: 0xB86D, - 31451 - 11905: 0xB86E, - 31452 - 11905: 0xB86F, - 31453 - 11905: 0xB870, - 31454 - 11905: 0xBEBA, - 31455 - 11905: 0xBEB9, - 31456 - 11905: 0xD5C2, - 31457 - 11905: 0xB871, - 31458 - 11905: 0xB872, - 31459 - 11905: 0xBFA2, - 31460 - 11905: 0xB873, - 31461 - 11905: 0xCDAF, - 31462 - 11905: 0xF1B5, - 31463 - 11905: 0xB874, - 31464 - 11905: 0xB875, - 31465 - 11905: 0xB876, - 31466 - 11905: 0xB877, - 31467 - 11905: 0xB878, - 31468 - 11905: 0xB879, - 31469 - 11905: 0xBDDF, - 31470 - 11905: 0xB87A, - 31471 - 11905: 0xB6CB, - 31472 - 11905: 0xB87B, - 31473 - 11905: 0xB87C, - 31474 - 11905: 0xB87D, - 31475 - 11905: 0xB87E, - 31476 - 11905: 0xB880, - 31477 - 11905: 0xB881, - 31478 - 11905: 0xB882, - 31479 - 11905: 0xB883, - 31480 - 11905: 0xB884, - 31481 - 11905: 0xD6F1, - 31482 - 11905: 0xF3C3, - 31483 - 11905: 0xB885, - 31484 - 11905: 0xB886, - 31485 - 11905: 0xF3C4, - 31486 - 11905: 0xB887, - 31487 - 11905: 0xB8CD, - 31488 - 11905: 0xB888, - 31489 - 11905: 0xB889, - 31490 - 11905: 0xB88A, - 31491 - 11905: 0xF3C6, - 31492 - 11905: 0xF3C7, - 31493 - 11905: 0xB88B, - 31494 - 11905: 0xB0CA, - 31495 - 11905: 0xB88C, - 31496 - 11905: 0xF3C5, - 31497 - 11905: 0xB88D, - 31498 - 11905: 0xF3C9, - 31499 - 11905: 0xCBF1, - 31500 - 11905: 0xB88E, - 31501 - 11905: 0xB88F, - 31502 - 11905: 0xB890, - 31503 - 11905: 0xF3CB, - 31504 - 11905: 0xB891, - 31505 - 11905: 0xD0A6, - 31506 - 11905: 0xB892, - 31507 - 11905: 0xB893, - 31508 - 11905: 0xB1CA, - 31509 - 11905: 0xF3C8, - 31510 - 11905: 0xB894, - 31511 - 11905: 0xB895, - 31512 - 11905: 0xB896, - 31513 - 11905: 0xF3CF, - 31514 - 11905: 0xB897, - 31515 - 11905: 0xB5D1, - 31516 - 11905: 0xB898, - 31517 - 11905: 0xB899, - 31518 - 11905: 0xF3D7, - 31519 - 11905: 0xB89A, - 31520 - 11905: 0xF3D2, - 31521 - 11905: 0xB89B, - 31522 - 11905: 0xB89C, - 31523 - 11905: 0xB89D, - 31524 - 11905: 0xF3D4, - 31525 - 11905: 0xF3D3, - 31526 - 11905: 0xB7FB, - 31527 - 11905: 0xB89E, - 31528 - 11905: 0xB1BF, - 31529 - 11905: 0xB89F, - 31530 - 11905: 0xF3CE, - 31531 - 11905: 0xF3CA, - 31532 - 11905: 0xB5DA, - 31533 - 11905: 0xB8A0, - 31534 - 11905: 0xF3D0, - 31535 - 11905: 0xB940, - 31536 - 11905: 0xB941, - 31537 - 11905: 0xF3D1, - 31538 - 11905: 0xB942, - 31539 - 11905: 0xF3D5, - 31540 - 11905: 0xB943, - 31541 - 11905: 0xB944, - 31542 - 11905: 0xB945, - 31543 - 11905: 0xB946, - 31544 - 11905: 0xF3CD, - 31545 - 11905: 0xB947, - 31546 - 11905: 0xBCE3, - 31547 - 11905: 0xB948, - 31548 - 11905: 0xC1FD, - 31549 - 11905: 0xB949, - 31550 - 11905: 0xF3D6, - 31551 - 11905: 0xB94A, - 31552 - 11905: 0xB94B, - 31553 - 11905: 0xB94C, - 31554 - 11905: 0xB94D, - 31555 - 11905: 0xB94E, - 31556 - 11905: 0xB94F, - 31557 - 11905: 0xF3DA, - 31558 - 11905: 0xB950, - 31559 - 11905: 0xF3CC, - 31560 - 11905: 0xB951, - 31561 - 11905: 0xB5C8, - 31562 - 11905: 0xB952, - 31563 - 11905: 0xBDEE, - 31564 - 11905: 0xF3DC, - 31565 - 11905: 0xB953, - 31566 - 11905: 0xB954, - 31567 - 11905: 0xB7A4, - 31568 - 11905: 0xBFF0, - 31569 - 11905: 0xD6FE, - 31570 - 11905: 0xCDB2, - 31571 - 11905: 0xB955, - 31572 - 11905: 0xB4F0, - 31573 - 11905: 0xB956, - 31574 - 11905: 0xB2DF, - 31575 - 11905: 0xB957, - 31576 - 11905: 0xF3D8, - 31577 - 11905: 0xB958, - 31578 - 11905: 0xF3D9, - 31579 - 11905: 0xC9B8, - 31580 - 11905: 0xB959, - 31581 - 11905: 0xF3DD, - 31582 - 11905: 0xB95A, - 31583 - 11905: 0xB95B, - 31584 - 11905: 0xF3DE, - 31585 - 11905: 0xB95C, - 31586 - 11905: 0xF3E1, - 31587 - 11905: 0xB95D, - 31588 - 11905: 0xB95E, - 31589 - 11905: 0xB95F, - 31590 - 11905: 0xB960, - 31591 - 11905: 0xB961, - 31592 - 11905: 0xB962, - 31593 - 11905: 0xB963, - 31594 - 11905: 0xB964, - 31595 - 11905: 0xB965, - 31596 - 11905: 0xB966, - 31597 - 11905: 0xB967, - 31598 - 11905: 0xF3DF, - 31599 - 11905: 0xB968, - 31600 - 11905: 0xB969, - 31601 - 11905: 0xF3E3, - 31602 - 11905: 0xF3E2, - 31603 - 11905: 0xB96A, - 31604 - 11905: 0xB96B, - 31605 - 11905: 0xF3DB, - 31606 - 11905: 0xB96C, - 31607 - 11905: 0xBFEA, - 31608 - 11905: 0xB96D, - 31609 - 11905: 0xB3EF, - 31610 - 11905: 0xB96E, - 31611 - 11905: 0xF3E0, - 31612 - 11905: 0xB96F, - 31613 - 11905: 0xB970, - 31614 - 11905: 0xC7A9, - 31615 - 11905: 0xB971, - 31616 - 11905: 0xBCF2, - 31617 - 11905: 0xB972, - 31618 - 11905: 0xB973, - 31619 - 11905: 0xB974, - 31620 - 11905: 0xB975, - 31621 - 11905: 0xF3EB, - 31622 - 11905: 0xB976, - 31623 - 11905: 0xB977, - 31624 - 11905: 0xB978, - 31625 - 11905: 0xB979, - 31626 - 11905: 0xB97A, - 31627 - 11905: 0xB97B, - 31628 - 11905: 0xB97C, - 31629 - 11905: 0xB9BF, - 31630 - 11905: 0xB97D, - 31631 - 11905: 0xB97E, - 31632 - 11905: 0xF3E4, - 31633 - 11905: 0xB980, - 31634 - 11905: 0xB981, - 31635 - 11905: 0xB982, - 31636 - 11905: 0xB2AD, - 31637 - 11905: 0xBBFE, - 31638 - 11905: 0xB983, - 31639 - 11905: 0xCBE3, - 31640 - 11905: 0xB984, - 31641 - 11905: 0xB985, - 31642 - 11905: 0xB986, - 31643 - 11905: 0xB987, - 31644 - 11905: 0xF3ED, - 31645 - 11905: 0xF3E9, - 31646 - 11905: 0xB988, - 31647 - 11905: 0xB989, - 31648 - 11905: 0xB98A, - 31649 - 11905: 0xB9DC, - 31650 - 11905: 0xF3EE, - 31651 - 11905: 0xB98B, - 31652 - 11905: 0xB98C, - 31653 - 11905: 0xB98D, - 31654 - 11905: 0xF3E5, - 31655 - 11905: 0xF3E6, - 31656 - 11905: 0xF3EA, - 31657 - 11905: 0xC2E1, - 31658 - 11905: 0xF3EC, - 31659 - 11905: 0xF3EF, - 31660 - 11905: 0xF3E8, - 31661 - 11905: 0xBCFD, - 31662 - 11905: 0xB98E, - 31663 - 11905: 0xB98F, - 31664 - 11905: 0xB990, - 31665 - 11905: 0xCFE4, - 31666 - 11905: 0xB991, - 31667 - 11905: 0xB992, - 31668 - 11905: 0xF3F0, - 31669 - 11905: 0xB993, - 31670 - 11905: 0xB994, - 31671 - 11905: 0xB995, - 31672 - 11905: 0xF3E7, - 31673 - 11905: 0xB996, - 31674 - 11905: 0xB997, - 31675 - 11905: 0xB998, - 31676 - 11905: 0xB999, - 31677 - 11905: 0xB99A, - 31678 - 11905: 0xB99B, - 31679 - 11905: 0xB99C, - 31680 - 11905: 0xB99D, - 31681 - 11905: 0xF3F2, - 31682 - 11905: 0xB99E, - 31683 - 11905: 0xB99F, - 31684 - 11905: 0xB9A0, - 31685 - 11905: 0xBA40, - 31686 - 11905: 0xD7AD, - 31687 - 11905: 0xC6AA, - 31688 - 11905: 0xBA41, - 31689 - 11905: 0xBA42, - 31690 - 11905: 0xBA43, - 31691 - 11905: 0xBA44, - 31692 - 11905: 0xF3F3, - 31693 - 11905: 0xBA45, - 31694 - 11905: 0xBA46, - 31695 - 11905: 0xBA47, - 31696 - 11905: 0xBA48, - 31697 - 11905: 0xF3F1, - 31698 - 11905: 0xBA49, - 31699 - 11905: 0xC2A8, - 31700 - 11905: 0xBA4A, - 31701 - 11905: 0xBA4B, - 31702 - 11905: 0xBA4C, - 31703 - 11905: 0xBA4D, - 31704 - 11905: 0xBA4E, - 31705 - 11905: 0xB8DD, - 31706 - 11905: 0xF3F5, - 31707 - 11905: 0xBA4F, - 31708 - 11905: 0xBA50, - 31709 - 11905: 0xF3F4, - 31710 - 11905: 0xBA51, - 31711 - 11905: 0xBA52, - 31712 - 11905: 0xBA53, - 31713 - 11905: 0xB4DB, - 31714 - 11905: 0xBA54, - 31715 - 11905: 0xBA55, - 31716 - 11905: 0xBA56, - 31717 - 11905: 0xF3F6, - 31718 - 11905: 0xF3F7, - 31719 - 11905: 0xBA57, - 31720 - 11905: 0xBA58, - 31721 - 11905: 0xBA59, - 31722 - 11905: 0xF3F8, - 31723 - 11905: 0xBA5A, - 31724 - 11905: 0xBA5B, - 31725 - 11905: 0xBA5C, - 31726 - 11905: 0xC0BA, - 31727 - 11905: 0xBA5D, - 31728 - 11905: 0xBA5E, - 31729 - 11905: 0xC0E9, - 31730 - 11905: 0xBA5F, - 31731 - 11905: 0xBA60, - 31732 - 11905: 0xBA61, - 31733 - 11905: 0xBA62, - 31734 - 11905: 0xBA63, - 31735 - 11905: 0xC5F1, - 31736 - 11905: 0xBA64, - 31737 - 11905: 0xBA65, - 31738 - 11905: 0xBA66, - 31739 - 11905: 0xBA67, - 31740 - 11905: 0xF3FB, - 31741 - 11905: 0xBA68, - 31742 - 11905: 0xF3FA, - 31743 - 11905: 0xBA69, - 31744 - 11905: 0xBA6A, - 31745 - 11905: 0xBA6B, - 31746 - 11905: 0xBA6C, - 31747 - 11905: 0xBA6D, - 31748 - 11905: 0xBA6E, - 31749 - 11905: 0xBA6F, - 31750 - 11905: 0xBA70, - 31751 - 11905: 0xB4D8, - 31752 - 11905: 0xBA71, - 31753 - 11905: 0xBA72, - 31754 - 11905: 0xBA73, - 31755 - 11905: 0xF3FE, - 31756 - 11905: 0xF3F9, - 31757 - 11905: 0xBA74, - 31758 - 11905: 0xBA75, - 31759 - 11905: 0xF3FC, - 31760 - 11905: 0xBA76, - 31761 - 11905: 0xBA77, - 31762 - 11905: 0xBA78, - 31763 - 11905: 0xBA79, - 31764 - 11905: 0xBA7A, - 31765 - 11905: 0xBA7B, - 31766 - 11905: 0xF3FD, - 31767 - 11905: 0xBA7C, - 31768 - 11905: 0xBA7D, - 31769 - 11905: 0xBA7E, - 31770 - 11905: 0xBA80, - 31771 - 11905: 0xBA81, - 31772 - 11905: 0xBA82, - 31773 - 11905: 0xBA83, - 31774 - 11905: 0xBA84, - 31775 - 11905: 0xF4A1, - 31776 - 11905: 0xBA85, - 31777 - 11905: 0xBA86, - 31778 - 11905: 0xBA87, - 31779 - 11905: 0xBA88, - 31780 - 11905: 0xBA89, - 31781 - 11905: 0xBA8A, - 31782 - 11905: 0xF4A3, - 31783 - 11905: 0xBBC9, - 31784 - 11905: 0xBA8B, - 31785 - 11905: 0xBA8C, - 31786 - 11905: 0xF4A2, - 31787 - 11905: 0xBA8D, - 31788 - 11905: 0xBA8E, - 31789 - 11905: 0xBA8F, - 31790 - 11905: 0xBA90, - 31791 - 11905: 0xBA91, - 31792 - 11905: 0xBA92, - 31793 - 11905: 0xBA93, - 31794 - 11905: 0xBA94, - 31795 - 11905: 0xBA95, - 31796 - 11905: 0xBA96, - 31797 - 11905: 0xBA97, - 31798 - 11905: 0xBA98, - 31799 - 11905: 0xBA99, - 31800 - 11905: 0xF4A4, - 31801 - 11905: 0xBA9A, - 31802 - 11905: 0xBA9B, - 31803 - 11905: 0xBA9C, - 31804 - 11905: 0xBA9D, - 31805 - 11905: 0xBA9E, - 31806 - 11905: 0xBA9F, - 31807 - 11905: 0xB2BE, - 31808 - 11905: 0xF4A6, - 31809 - 11905: 0xF4A5, - 31810 - 11905: 0xBAA0, - 31811 - 11905: 0xBB40, - 31812 - 11905: 0xBB41, - 31813 - 11905: 0xBB42, - 31814 - 11905: 0xBB43, - 31815 - 11905: 0xBB44, - 31816 - 11905: 0xBB45, - 31817 - 11905: 0xBB46, - 31818 - 11905: 0xBB47, - 31819 - 11905: 0xBB48, - 31820 - 11905: 0xBB49, - 31821 - 11905: 0xBCAE, - 31822 - 11905: 0xBB4A, - 31823 - 11905: 0xBB4B, - 31824 - 11905: 0xBB4C, - 31825 - 11905: 0xBB4D, - 31826 - 11905: 0xBB4E, - 31827 - 11905: 0xBB4F, - 31828 - 11905: 0xBB50, - 31829 - 11905: 0xBB51, - 31830 - 11905: 0xBB52, - 31831 - 11905: 0xBB53, - 31832 - 11905: 0xBB54, - 31833 - 11905: 0xBB55, - 31834 - 11905: 0xBB56, - 31835 - 11905: 0xBB57, - 31836 - 11905: 0xBB58, - 31837 - 11905: 0xBB59, - 31838 - 11905: 0xBB5A, - 31839 - 11905: 0xBB5B, - 31840 - 11905: 0xBB5C, - 31841 - 11905: 0xBB5D, - 31842 - 11905: 0xBB5E, - 31843 - 11905: 0xBB5F, - 31844 - 11905: 0xBB60, - 31845 - 11905: 0xBB61, - 31846 - 11905: 0xBB62, - 31847 - 11905: 0xBB63, - 31848 - 11905: 0xBB64, - 31849 - 11905: 0xBB65, - 31850 - 11905: 0xBB66, - 31851 - 11905: 0xBB67, - 31852 - 11905: 0xBB68, - 31853 - 11905: 0xBB69, - 31854 - 11905: 0xBB6A, - 31855 - 11905: 0xBB6B, - 31856 - 11905: 0xBB6C, - 31857 - 11905: 0xBB6D, - 31858 - 11905: 0xBB6E, - 31859 - 11905: 0xC3D7, - 31860 - 11905: 0xD9E1, - 31861 - 11905: 0xBB6F, - 31862 - 11905: 0xBB70, - 31863 - 11905: 0xBB71, - 31864 - 11905: 0xBB72, - 31865 - 11905: 0xBB73, - 31866 - 11905: 0xBB74, - 31867 - 11905: 0xC0E0, - 31868 - 11905: 0xF4CC, - 31869 - 11905: 0xD7D1, - 31870 - 11905: 0xBB75, - 31871 - 11905: 0xBB76, - 31872 - 11905: 0xBB77, - 31873 - 11905: 0xBB78, - 31874 - 11905: 0xBB79, - 31875 - 11905: 0xBB7A, - 31876 - 11905: 0xBB7B, - 31877 - 11905: 0xBB7C, - 31878 - 11905: 0xBB7D, - 31879 - 11905: 0xBB7E, - 31880 - 11905: 0xBB80, - 31881 - 11905: 0xB7DB, - 31882 - 11905: 0xBB81, - 31883 - 11905: 0xBB82, - 31884 - 11905: 0xBB83, - 31885 - 11905: 0xBB84, - 31886 - 11905: 0xBB85, - 31887 - 11905: 0xBB86, - 31888 - 11905: 0xBB87, - 31889 - 11905: 0xF4CE, - 31890 - 11905: 0xC1A3, - 31891 - 11905: 0xBB88, - 31892 - 11905: 0xBB89, - 31893 - 11905: 0xC6C9, - 31894 - 11905: 0xBB8A, - 31895 - 11905: 0xB4D6, - 31896 - 11905: 0xD5B3, - 31897 - 11905: 0xBB8B, - 31898 - 11905: 0xBB8C, - 31899 - 11905: 0xBB8D, - 31900 - 11905: 0xF4D0, - 31901 - 11905: 0xF4CF, - 31902 - 11905: 0xF4D1, - 31903 - 11905: 0xCBDA, - 31904 - 11905: 0xBB8E, - 31905 - 11905: 0xBB8F, - 31906 - 11905: 0xF4D2, - 31907 - 11905: 0xBB90, - 31908 - 11905: 0xD4C1, - 31909 - 11905: 0xD6E0, - 31910 - 11905: 0xBB91, - 31911 - 11905: 0xBB92, - 31912 - 11905: 0xBB93, - 31913 - 11905: 0xBB94, - 31914 - 11905: 0xB7E0, - 31915 - 11905: 0xBB95, - 31916 - 11905: 0xBB96, - 31917 - 11905: 0xBB97, - 31918 - 11905: 0xC1B8, - 31919 - 11905: 0xBB98, - 31920 - 11905: 0xBB99, - 31921 - 11905: 0xC1BB, - 31922 - 11905: 0xF4D3, - 31923 - 11905: 0xBEAC, - 31924 - 11905: 0xBB9A, - 31925 - 11905: 0xBB9B, - 31926 - 11905: 0xBB9C, - 31927 - 11905: 0xBB9D, - 31928 - 11905: 0xBB9E, - 31929 - 11905: 0xB4E2, - 31930 - 11905: 0xBB9F, - 31931 - 11905: 0xBBA0, - 31932 - 11905: 0xF4D4, - 31933 - 11905: 0xF4D5, - 31934 - 11905: 0xBEAB, - 31935 - 11905: 0xBC40, - 31936 - 11905: 0xBC41, - 31937 - 11905: 0xF4D6, - 31938 - 11905: 0xBC42, - 31939 - 11905: 0xBC43, - 31940 - 11905: 0xBC44, - 31941 - 11905: 0xF4DB, - 31942 - 11905: 0xBC45, - 31943 - 11905: 0xF4D7, - 31944 - 11905: 0xF4DA, - 31945 - 11905: 0xBC46, - 31946 - 11905: 0xBAFD, - 31947 - 11905: 0xBC47, - 31948 - 11905: 0xF4D8, - 31949 - 11905: 0xF4D9, - 31950 - 11905: 0xBC48, - 31951 - 11905: 0xBC49, - 31952 - 11905: 0xBC4A, - 31953 - 11905: 0xBC4B, - 31954 - 11905: 0xBC4C, - 31955 - 11905: 0xBC4D, - 31956 - 11905: 0xBC4E, - 31957 - 11905: 0xB8E2, - 31958 - 11905: 0xCCC7, - 31959 - 11905: 0xF4DC, - 31960 - 11905: 0xBC4F, - 31961 - 11905: 0xB2DA, - 31962 - 11905: 0xBC50, - 31963 - 11905: 0xBC51, - 31964 - 11905: 0xC3D3, - 31965 - 11905: 0xBC52, - 31966 - 11905: 0xBC53, - 31967 - 11905: 0xD4E3, - 31968 - 11905: 0xBFB7, - 31969 - 11905: 0xBC54, - 31970 - 11905: 0xBC55, - 31971 - 11905: 0xBC56, - 31972 - 11905: 0xBC57, - 31973 - 11905: 0xBC58, - 31974 - 11905: 0xBC59, - 31975 - 11905: 0xBC5A, - 31976 - 11905: 0xF4DD, - 31977 - 11905: 0xBC5B, - 31978 - 11905: 0xBC5C, - 31979 - 11905: 0xBC5D, - 31980 - 11905: 0xBC5E, - 31981 - 11905: 0xBC5F, - 31982 - 11905: 0xBC60, - 31983 - 11905: 0xC5B4, - 31984 - 11905: 0xBC61, - 31985 - 11905: 0xBC62, - 31986 - 11905: 0xBC63, - 31987 - 11905: 0xBC64, - 31988 - 11905: 0xBC65, - 31989 - 11905: 0xBC66, - 31990 - 11905: 0xBC67, - 31991 - 11905: 0xBC68, - 31992 - 11905: 0xF4E9, - 31993 - 11905: 0xBC69, - 31994 - 11905: 0xBC6A, - 31995 - 11905: 0xCFB5, - 31996 - 11905: 0xBC6B, - 31997 - 11905: 0xBC6C, - 31998 - 11905: 0xBC6D, - 31999 - 11905: 0xBC6E, - 32000 - 11905: 0xBC6F, - 32001 - 11905: 0xBC70, - 32002 - 11905: 0xBC71, - 32003 - 11905: 0xBC72, - 32004 - 11905: 0xBC73, - 32005 - 11905: 0xBC74, - 32006 - 11905: 0xBC75, - 32007 - 11905: 0xBC76, - 32008 - 11905: 0xBC77, - 32009 - 11905: 0xBC78, - 32010 - 11905: 0xCEC9, - 32011 - 11905: 0xBC79, - 32012 - 11905: 0xBC7A, - 32013 - 11905: 0xBC7B, - 32014 - 11905: 0xBC7C, - 32015 - 11905: 0xBC7D, - 32016 - 11905: 0xBC7E, - 32017 - 11905: 0xBC80, - 32018 - 11905: 0xBC81, - 32019 - 11905: 0xBC82, - 32020 - 11905: 0xBC83, - 32021 - 11905: 0xBC84, - 32022 - 11905: 0xBC85, - 32023 - 11905: 0xBC86, - 32024 - 11905: 0xBC87, - 32025 - 11905: 0xBC88, - 32026 - 11905: 0xBC89, - 32027 - 11905: 0xBC8A, - 32028 - 11905: 0xBC8B, - 32029 - 11905: 0xBC8C, - 32030 - 11905: 0xBC8D, - 32031 - 11905: 0xBC8E, - 32032 - 11905: 0xCBD8, - 32033 - 11905: 0xBC8F, - 32034 - 11905: 0xCBF7, - 32035 - 11905: 0xBC90, - 32036 - 11905: 0xBC91, - 32037 - 11905: 0xBC92, - 32038 - 11905: 0xBC93, - 32039 - 11905: 0xBDF4, - 32040 - 11905: 0xBC94, - 32041 - 11905: 0xBC95, - 32042 - 11905: 0xBC96, - 32043 - 11905: 0xD7CF, - 32044 - 11905: 0xBC97, - 32045 - 11905: 0xBC98, - 32046 - 11905: 0xBC99, - 32047 - 11905: 0xC0DB, - 32048 - 11905: 0xBC9A, - 32049 - 11905: 0xBC9B, - 32050 - 11905: 0xBC9C, - 32051 - 11905: 0xBC9D, - 32052 - 11905: 0xBC9E, - 32053 - 11905: 0xBC9F, - 32054 - 11905: 0xBCA0, - 32055 - 11905: 0xBD40, - 32056 - 11905: 0xBD41, - 32057 - 11905: 0xBD42, - 32058 - 11905: 0xBD43, - 32059 - 11905: 0xBD44, - 32060 - 11905: 0xBD45, - 32061 - 11905: 0xBD46, - 32062 - 11905: 0xBD47, - 32063 - 11905: 0xBD48, - 32064 - 11905: 0xBD49, - 32065 - 11905: 0xBD4A, - 32066 - 11905: 0xBD4B, - 32067 - 11905: 0xBD4C, - 32068 - 11905: 0xBD4D, - 32069 - 11905: 0xBD4E, - 32070 - 11905: 0xBD4F, - 32071 - 11905: 0xBD50, - 32072 - 11905: 0xBD51, - 32073 - 11905: 0xBD52, - 32074 - 11905: 0xBD53, - 32075 - 11905: 0xBD54, - 32076 - 11905: 0xBD55, - 32077 - 11905: 0xBD56, - 32078 - 11905: 0xBD57, - 32079 - 11905: 0xBD58, - 32080 - 11905: 0xBD59, - 32081 - 11905: 0xBD5A, - 32082 - 11905: 0xBD5B, - 32083 - 11905: 0xBD5C, - 32084 - 11905: 0xBD5D, - 32085 - 11905: 0xBD5E, - 32086 - 11905: 0xBD5F, - 32087 - 11905: 0xBD60, - 32088 - 11905: 0xBD61, - 32089 - 11905: 0xBD62, - 32090 - 11905: 0xBD63, - 32091 - 11905: 0xBD64, - 32092 - 11905: 0xBD65, - 32093 - 11905: 0xBD66, - 32094 - 11905: 0xBD67, - 32095 - 11905: 0xBD68, - 32096 - 11905: 0xBD69, - 32097 - 11905: 0xBD6A, - 32098 - 11905: 0xBD6B, - 32099 - 11905: 0xBD6C, - 32100 - 11905: 0xBD6D, - 32101 - 11905: 0xBD6E, - 32102 - 11905: 0xBD6F, - 32103 - 11905: 0xBD70, - 32104 - 11905: 0xBD71, - 32105 - 11905: 0xBD72, - 32106 - 11905: 0xBD73, - 32107 - 11905: 0xBD74, - 32108 - 11905: 0xBD75, - 32109 - 11905: 0xBD76, - 32110 - 11905: 0xD0F5, - 32111 - 11905: 0xBD77, - 32112 - 11905: 0xBD78, - 32113 - 11905: 0xBD79, - 32114 - 11905: 0xBD7A, - 32115 - 11905: 0xBD7B, - 32116 - 11905: 0xBD7C, - 32117 - 11905: 0xBD7D, - 32118 - 11905: 0xBD7E, - 32119 - 11905: 0xF4EA, - 32120 - 11905: 0xBD80, - 32121 - 11905: 0xBD81, - 32122 - 11905: 0xBD82, - 32123 - 11905: 0xBD83, - 32124 - 11905: 0xBD84, - 32125 - 11905: 0xBD85, - 32126 - 11905: 0xBD86, - 32127 - 11905: 0xBD87, - 32128 - 11905: 0xBD88, - 32129 - 11905: 0xBD89, - 32130 - 11905: 0xBD8A, - 32131 - 11905: 0xBD8B, - 32132 - 11905: 0xBD8C, - 32133 - 11905: 0xBD8D, - 32134 - 11905: 0xBD8E, - 32135 - 11905: 0xBD8F, - 32136 - 11905: 0xBD90, - 32137 - 11905: 0xBD91, - 32138 - 11905: 0xBD92, - 32139 - 11905: 0xBD93, - 32140 - 11905: 0xBD94, - 32141 - 11905: 0xBD95, - 32142 - 11905: 0xBD96, - 32143 - 11905: 0xBD97, - 32144 - 11905: 0xBD98, - 32145 - 11905: 0xBD99, - 32146 - 11905: 0xBD9A, - 32147 - 11905: 0xBD9B, - 32148 - 11905: 0xBD9C, - 32149 - 11905: 0xBD9D, - 32150 - 11905: 0xBD9E, - 32151 - 11905: 0xBD9F, - 32152 - 11905: 0xBDA0, - 32153 - 11905: 0xBE40, - 32154 - 11905: 0xBE41, - 32155 - 11905: 0xBE42, - 32156 - 11905: 0xBE43, - 32157 - 11905: 0xBE44, - 32158 - 11905: 0xBE45, - 32159 - 11905: 0xBE46, - 32160 - 11905: 0xBE47, - 32161 - 11905: 0xBE48, - 32162 - 11905: 0xBE49, - 32163 - 11905: 0xBE4A, - 32164 - 11905: 0xBE4B, - 32165 - 11905: 0xBE4C, - 32166 - 11905: 0xF4EB, - 32167 - 11905: 0xBE4D, - 32168 - 11905: 0xBE4E, - 32169 - 11905: 0xBE4F, - 32170 - 11905: 0xBE50, - 32171 - 11905: 0xBE51, - 32172 - 11905: 0xBE52, - 32173 - 11905: 0xBE53, - 32174 - 11905: 0xF4EC, - 32175 - 11905: 0xBE54, - 32176 - 11905: 0xBE55, - 32177 - 11905: 0xBE56, - 32178 - 11905: 0xBE57, - 32179 - 11905: 0xBE58, - 32180 - 11905: 0xBE59, - 32181 - 11905: 0xBE5A, - 32182 - 11905: 0xBE5B, - 32183 - 11905: 0xBE5C, - 32184 - 11905: 0xBE5D, - 32185 - 11905: 0xBE5E, - 32186 - 11905: 0xBE5F, - 32187 - 11905: 0xBE60, - 32188 - 11905: 0xBE61, - 32189 - 11905: 0xBE62, - 32190 - 11905: 0xBE63, - 32191 - 11905: 0xBE64, - 32192 - 11905: 0xBE65, - 32193 - 11905: 0xBE66, - 32194 - 11905: 0xBE67, - 32195 - 11905: 0xBE68, - 32196 - 11905: 0xBE69, - 32197 - 11905: 0xBE6A, - 32198 - 11905: 0xBE6B, - 32199 - 11905: 0xBE6C, - 32200 - 11905: 0xBE6D, - 32201 - 11905: 0xBE6E, - 32202 - 11905: 0xBE6F, - 32203 - 11905: 0xBE70, - 32204 - 11905: 0xBE71, - 32205 - 11905: 0xBE72, - 32206 - 11905: 0xBE73, - 32207 - 11905: 0xBE74, - 32208 - 11905: 0xBE75, - 32209 - 11905: 0xBE76, - 32210 - 11905: 0xBE77, - 32211 - 11905: 0xBE78, - 32212 - 11905: 0xBE79, - 32213 - 11905: 0xBE7A, - 32214 - 11905: 0xBE7B, - 32215 - 11905: 0xBE7C, - 32216 - 11905: 0xBE7D, - 32217 - 11905: 0xBE7E, - 32218 - 11905: 0xBE80, - 32219 - 11905: 0xBE81, - 32220 - 11905: 0xBE82, - 32221 - 11905: 0xBE83, - 32222 - 11905: 0xBE84, - 32223 - 11905: 0xBE85, - 32224 - 11905: 0xBE86, - 32225 - 11905: 0xBE87, - 32226 - 11905: 0xBE88, - 32227 - 11905: 0xBE89, - 32228 - 11905: 0xBE8A, - 32229 - 11905: 0xBE8B, - 32230 - 11905: 0xBE8C, - 32231 - 11905: 0xBE8D, - 32232 - 11905: 0xBE8E, - 32233 - 11905: 0xBE8F, - 32234 - 11905: 0xBE90, - 32235 - 11905: 0xBE91, - 32236 - 11905: 0xBE92, - 32237 - 11905: 0xBE93, - 32238 - 11905: 0xBE94, - 32239 - 11905: 0xBE95, - 32240 - 11905: 0xBE96, - 32241 - 11905: 0xBE97, - 32242 - 11905: 0xBE98, - 32243 - 11905: 0xBE99, - 32244 - 11905: 0xBE9A, - 32245 - 11905: 0xBE9B, - 32246 - 11905: 0xBE9C, - 32247 - 11905: 0xBE9D, - 32248 - 11905: 0xBE9E, - 32249 - 11905: 0xBE9F, - 32250 - 11905: 0xBEA0, - 32251 - 11905: 0xBF40, - 32252 - 11905: 0xBF41, - 32253 - 11905: 0xBF42, - 32254 - 11905: 0xBF43, - 32255 - 11905: 0xBF44, - 32256 - 11905: 0xBF45, - 32257 - 11905: 0xBF46, - 32258 - 11905: 0xBF47, - 32259 - 11905: 0xBF48, - 32260 - 11905: 0xBF49, - 32261 - 11905: 0xBF4A, - 32262 - 11905: 0xBF4B, - 32263 - 11905: 0xBF4C, - 32264 - 11905: 0xBF4D, - 32265 - 11905: 0xBF4E, - 32266 - 11905: 0xBF4F, - 32267 - 11905: 0xBF50, - 32268 - 11905: 0xBF51, - 32269 - 11905: 0xBF52, - 32270 - 11905: 0xBF53, - 32271 - 11905: 0xBF54, - 32272 - 11905: 0xBF55, - 32273 - 11905: 0xBF56, - 32274 - 11905: 0xBF57, - 32275 - 11905: 0xBF58, - 32276 - 11905: 0xBF59, - 32277 - 11905: 0xBF5A, - 32278 - 11905: 0xBF5B, - 32279 - 11905: 0xBF5C, - 32280 - 11905: 0xBF5D, - 32281 - 11905: 0xBF5E, - 32282 - 11905: 0xBF5F, - 32283 - 11905: 0xBF60, - 32284 - 11905: 0xBF61, - 32285 - 11905: 0xBF62, - 32286 - 11905: 0xBF63, - 32287 - 11905: 0xBF64, - 32288 - 11905: 0xBF65, - 32289 - 11905: 0xBF66, - 32290 - 11905: 0xBF67, - 32291 - 11905: 0xBF68, - 32292 - 11905: 0xBF69, - 32293 - 11905: 0xBF6A, - 32294 - 11905: 0xBF6B, - 32295 - 11905: 0xBF6C, - 32296 - 11905: 0xBF6D, - 32297 - 11905: 0xBF6E, - 32298 - 11905: 0xBF6F, - 32299 - 11905: 0xBF70, - 32300 - 11905: 0xBF71, - 32301 - 11905: 0xBF72, - 32302 - 11905: 0xBF73, - 32303 - 11905: 0xBF74, - 32304 - 11905: 0xBF75, - 32305 - 11905: 0xBF76, - 32306 - 11905: 0xBF77, - 32307 - 11905: 0xBF78, - 32308 - 11905: 0xBF79, - 32309 - 11905: 0xBF7A, - 32310 - 11905: 0xBF7B, - 32311 - 11905: 0xBF7C, - 32312 - 11905: 0xBF7D, - 32313 - 11905: 0xBF7E, - 32314 - 11905: 0xBF80, - 32315 - 11905: 0xF7E3, - 32316 - 11905: 0xBF81, - 32317 - 11905: 0xBF82, - 32318 - 11905: 0xBF83, - 32319 - 11905: 0xBF84, - 32320 - 11905: 0xBF85, - 32321 - 11905: 0xB7B1, - 32322 - 11905: 0xBF86, - 32323 - 11905: 0xBF87, - 32324 - 11905: 0xBF88, - 32325 - 11905: 0xBF89, - 32326 - 11905: 0xBF8A, - 32327 - 11905: 0xF4ED, - 32328 - 11905: 0xBF8B, - 32329 - 11905: 0xBF8C, - 32330 - 11905: 0xBF8D, - 32331 - 11905: 0xBF8E, - 32332 - 11905: 0xBF8F, - 32333 - 11905: 0xBF90, - 32334 - 11905: 0xBF91, - 32335 - 11905: 0xBF92, - 32336 - 11905: 0xBF93, - 32337 - 11905: 0xBF94, - 32338 - 11905: 0xBF95, - 32339 - 11905: 0xBF96, - 32340 - 11905: 0xBF97, - 32341 - 11905: 0xBF98, - 32342 - 11905: 0xBF99, - 32343 - 11905: 0xBF9A, - 32344 - 11905: 0xBF9B, - 32345 - 11905: 0xBF9C, - 32346 - 11905: 0xBF9D, - 32347 - 11905: 0xBF9E, - 32348 - 11905: 0xBF9F, - 32349 - 11905: 0xBFA0, - 32350 - 11905: 0xC040, - 32351 - 11905: 0xC041, - 32352 - 11905: 0xC042, - 32353 - 11905: 0xC043, - 32354 - 11905: 0xC044, - 32355 - 11905: 0xC045, - 32356 - 11905: 0xC046, - 32357 - 11905: 0xC047, - 32358 - 11905: 0xC048, - 32359 - 11905: 0xC049, - 32360 - 11905: 0xC04A, - 32361 - 11905: 0xC04B, - 32362 - 11905: 0xC04C, - 32363 - 11905: 0xC04D, - 32364 - 11905: 0xC04E, - 32365 - 11905: 0xC04F, - 32366 - 11905: 0xC050, - 32367 - 11905: 0xC051, - 32368 - 11905: 0xC052, - 32369 - 11905: 0xC053, - 32370 - 11905: 0xC054, - 32371 - 11905: 0xC055, - 32372 - 11905: 0xC056, - 32373 - 11905: 0xC057, - 32374 - 11905: 0xC058, - 32375 - 11905: 0xC059, - 32376 - 11905: 0xC05A, - 32377 - 11905: 0xC05B, - 32378 - 11905: 0xC05C, - 32379 - 11905: 0xC05D, - 32380 - 11905: 0xC05E, - 32381 - 11905: 0xC05F, - 32382 - 11905: 0xC060, - 32383 - 11905: 0xC061, - 32384 - 11905: 0xC062, - 32385 - 11905: 0xC063, - 32386 - 11905: 0xD7EB, - 32387 - 11905: 0xC064, - 32388 - 11905: 0xC065, - 32389 - 11905: 0xC066, - 32390 - 11905: 0xC067, - 32391 - 11905: 0xC068, - 32392 - 11905: 0xC069, - 32393 - 11905: 0xC06A, - 32394 - 11905: 0xC06B, - 32395 - 11905: 0xC06C, - 32396 - 11905: 0xC06D, - 32397 - 11905: 0xC06E, - 32398 - 11905: 0xC06F, - 32399 - 11905: 0xC070, - 32400 - 11905: 0xC071, - 32401 - 11905: 0xC072, - 32402 - 11905: 0xC073, - 32403 - 11905: 0xC074, - 32404 - 11905: 0xC075, - 32405 - 11905: 0xC076, - 32406 - 11905: 0xC077, - 32407 - 11905: 0xC078, - 32408 - 11905: 0xC079, - 32409 - 11905: 0xC07A, - 32410 - 11905: 0xC07B, - 32411 - 11905: 0xF4EE, - 32412 - 11905: 0xC07C, - 32413 - 11905: 0xC07D, - 32414 - 11905: 0xC07E, - 32415 - 11905: 0xE6F9, - 32416 - 11905: 0xBEC0, - 32417 - 11905: 0xE6FA, - 32418 - 11905: 0xBAEC, - 32419 - 11905: 0xE6FB, - 32420 - 11905: 0xCFCB, - 32421 - 11905: 0xE6FC, - 32422 - 11905: 0xD4BC, - 32423 - 11905: 0xBCB6, - 32424 - 11905: 0xE6FD, - 32425 - 11905: 0xE6FE, - 32426 - 11905: 0xBCCD, - 32427 - 11905: 0xC8D2, - 32428 - 11905: 0xCEB3, - 32429 - 11905: 0xE7A1, - 32430 - 11905: 0xC080, - 32431 - 11905: 0xB4BF, - 32432 - 11905: 0xE7A2, - 32433 - 11905: 0xC9B4, - 32434 - 11905: 0xB8D9, - 32435 - 11905: 0xC4C9, - 32436 - 11905: 0xC081, - 32437 - 11905: 0xD7DD, - 32438 - 11905: 0xC2DA, - 32439 - 11905: 0xB7D7, - 32440 - 11905: 0xD6BD, - 32441 - 11905: 0xCEC6, - 32442 - 11905: 0xB7C4, - 32443 - 11905: 0xC082, - 32444 - 11905: 0xC083, - 32445 - 11905: 0xC5A6, - 32446 - 11905: 0xE7A3, - 32447 - 11905: 0xCFDF, - 32448 - 11905: 0xE7A4, - 32449 - 11905: 0xE7A5, - 32450 - 11905: 0xE7A6, - 32451 - 11905: 0xC1B7, - 32452 - 11905: 0xD7E9, - 32453 - 11905: 0xC9F0, - 32454 - 11905: 0xCFB8, - 32455 - 11905: 0xD6AF, - 32456 - 11905: 0xD6D5, - 32457 - 11905: 0xE7A7, - 32458 - 11905: 0xB0ED, - 32459 - 11905: 0xE7A8, - 32460 - 11905: 0xE7A9, - 32461 - 11905: 0xC9DC, - 32462 - 11905: 0xD2EF, - 32463 - 11905: 0xBEAD, - 32464 - 11905: 0xE7AA, - 32465 - 11905: 0xB0F3, - 32466 - 11905: 0xC8DE, - 32467 - 11905: 0xBDE1, - 32468 - 11905: 0xE7AB, - 32469 - 11905: 0xC8C6, - 32470 - 11905: 0xC084, - 32471 - 11905: 0xE7AC, - 32472 - 11905: 0xBBE6, - 32473 - 11905: 0xB8F8, - 32474 - 11905: 0xD1A4, - 32475 - 11905: 0xE7AD, - 32476 - 11905: 0xC2E7, - 32477 - 11905: 0xBEF8, - 32478 - 11905: 0xBDCA, - 32479 - 11905: 0xCDB3, - 32480 - 11905: 0xE7AE, - 32481 - 11905: 0xE7AF, - 32482 - 11905: 0xBEEE, - 32483 - 11905: 0xD0E5, - 32484 - 11905: 0xC085, - 32485 - 11905: 0xCBE7, - 32486 - 11905: 0xCCD0, - 32487 - 11905: 0xBCCC, - 32488 - 11905: 0xE7B0, - 32489 - 11905: 0xBCA8, - 32490 - 11905: 0xD0F7, - 32491 - 11905: 0xE7B1, - 32492 - 11905: 0xC086, - 32493 - 11905: 0xD0F8, - 32494 - 11905: 0xE7B2, - 32495 - 11905: 0xE7B3, - 32496 - 11905: 0xB4C2, - 32497 - 11905: 0xE7B4, - 32498 - 11905: 0xE7B5, - 32499 - 11905: 0xC9FE, - 32500 - 11905: 0xCEAC, - 32501 - 11905: 0xC3E0, - 32502 - 11905: 0xE7B7, - 32503 - 11905: 0xB1C1, - 32504 - 11905: 0xB3F1, - 32505 - 11905: 0xC087, - 32506 - 11905: 0xE7B8, - 32507 - 11905: 0xE7B9, - 32508 - 11905: 0xD7DB, - 32509 - 11905: 0xD5C0, - 32510 - 11905: 0xE7BA, - 32511 - 11905: 0xC2CC, - 32512 - 11905: 0xD7BA, - 32513 - 11905: 0xE7BB, - 32514 - 11905: 0xE7BC, - 32515 - 11905: 0xE7BD, - 32516 - 11905: 0xBCEA, - 32517 - 11905: 0xC3E5, - 32518 - 11905: 0xC0C2, - 32519 - 11905: 0xE7BE, - 32520 - 11905: 0xE7BF, - 32521 - 11905: 0xBCA9, - 32522 - 11905: 0xC088, - 32523 - 11905: 0xE7C0, - 32524 - 11905: 0xE7C1, - 32525 - 11905: 0xE7B6, - 32526 - 11905: 0xB6D0, - 32527 - 11905: 0xE7C2, - 32528 - 11905: 0xC089, - 32529 - 11905: 0xE7C3, - 32530 - 11905: 0xE7C4, - 32531 - 11905: 0xBBBA, - 32532 - 11905: 0xB5DE, - 32533 - 11905: 0xC2C6, - 32534 - 11905: 0xB1E0, - 32535 - 11905: 0xE7C5, - 32536 - 11905: 0xD4B5, - 32537 - 11905: 0xE7C6, - 32538 - 11905: 0xB8BF, - 32539 - 11905: 0xE7C8, - 32540 - 11905: 0xE7C7, - 32541 - 11905: 0xB7EC, - 32542 - 11905: 0xC08A, - 32543 - 11905: 0xE7C9, - 32544 - 11905: 0xB2F8, - 32545 - 11905: 0xE7CA, - 32546 - 11905: 0xE7CB, - 32547 - 11905: 0xE7CC, - 32548 - 11905: 0xE7CD, - 32549 - 11905: 0xE7CE, - 32550 - 11905: 0xE7CF, - 32551 - 11905: 0xE7D0, - 32552 - 11905: 0xD3A7, - 32553 - 11905: 0xCBF5, - 32554 - 11905: 0xE7D1, - 32555 - 11905: 0xE7D2, - 32556 - 11905: 0xE7D3, - 32557 - 11905: 0xE7D4, - 32558 - 11905: 0xC9C9, - 32559 - 11905: 0xE7D5, - 32560 - 11905: 0xE7D6, - 32561 - 11905: 0xE7D7, - 32562 - 11905: 0xE7D8, - 32563 - 11905: 0xE7D9, - 32564 - 11905: 0xBDC9, - 32565 - 11905: 0xE7DA, - 32566 - 11905: 0xF3BE, - 32567 - 11905: 0xC08B, - 32568 - 11905: 0xB8D7, - 32569 - 11905: 0xC08C, - 32570 - 11905: 0xC8B1, - 32571 - 11905: 0xC08D, - 32572 - 11905: 0xC08E, - 32573 - 11905: 0xC08F, - 32574 - 11905: 0xC090, - 32575 - 11905: 0xC091, - 32576 - 11905: 0xC092, - 32577 - 11905: 0xC093, - 32578 - 11905: 0xF3BF, - 32579 - 11905: 0xC094, - 32580 - 11905: 0xF3C0, - 32581 - 11905: 0xF3C1, - 32582 - 11905: 0xC095, - 32583 - 11905: 0xC096, - 32584 - 11905: 0xC097, - 32585 - 11905: 0xC098, - 32586 - 11905: 0xC099, - 32587 - 11905: 0xC09A, - 32588 - 11905: 0xC09B, - 32589 - 11905: 0xC09C, - 32590 - 11905: 0xC09D, - 32591 - 11905: 0xC09E, - 32592 - 11905: 0xB9DE, - 32593 - 11905: 0xCDF8, - 32594 - 11905: 0xC09F, - 32595 - 11905: 0xC0A0, - 32596 - 11905: 0xD8E8, - 32597 - 11905: 0xBAB1, - 32598 - 11905: 0xC140, - 32599 - 11905: 0xC2DE, - 32600 - 11905: 0xEEB7, - 32601 - 11905: 0xC141, - 32602 - 11905: 0xB7A3, - 32603 - 11905: 0xC142, - 32604 - 11905: 0xC143, - 32605 - 11905: 0xC144, - 32606 - 11905: 0xC145, - 32607 - 11905: 0xEEB9, - 32608 - 11905: 0xC146, - 32609 - 11905: 0xEEB8, - 32610 - 11905: 0xB0D5, - 32611 - 11905: 0xC147, - 32612 - 11905: 0xC148, - 32613 - 11905: 0xC149, - 32614 - 11905: 0xC14A, - 32615 - 11905: 0xC14B, - 32616 - 11905: 0xEEBB, - 32617 - 11905: 0xD5D6, - 32618 - 11905: 0xD7EF, - 32619 - 11905: 0xC14C, - 32620 - 11905: 0xC14D, - 32621 - 11905: 0xC14E, - 32622 - 11905: 0xD6C3, - 32623 - 11905: 0xC14F, - 32624 - 11905: 0xC150, - 32625 - 11905: 0xEEBD, - 32626 - 11905: 0xCAF0, - 32627 - 11905: 0xC151, - 32628 - 11905: 0xEEBC, - 32629 - 11905: 0xC152, - 32630 - 11905: 0xC153, - 32631 - 11905: 0xC154, - 32632 - 11905: 0xC155, - 32633 - 11905: 0xEEBE, - 32634 - 11905: 0xC156, - 32635 - 11905: 0xC157, - 32636 - 11905: 0xC158, - 32637 - 11905: 0xC159, - 32638 - 11905: 0xEEC0, - 32639 - 11905: 0xC15A, - 32640 - 11905: 0xC15B, - 32641 - 11905: 0xEEBF, - 32642 - 11905: 0xC15C, - 32643 - 11905: 0xC15D, - 32644 - 11905: 0xC15E, - 32645 - 11905: 0xC15F, - 32646 - 11905: 0xC160, - 32647 - 11905: 0xC161, - 32648 - 11905: 0xC162, - 32649 - 11905: 0xC163, - 32650 - 11905: 0xD1F2, - 32651 - 11905: 0xC164, - 32652 - 11905: 0xC7BC, - 32653 - 11905: 0xC165, - 32654 - 11905: 0xC3C0, - 32655 - 11905: 0xC166, - 32656 - 11905: 0xC167, - 32657 - 11905: 0xC168, - 32658 - 11905: 0xC169, - 32659 - 11905: 0xC16A, - 32660 - 11905: 0xB8E1, - 32661 - 11905: 0xC16B, - 32662 - 11905: 0xC16C, - 32663 - 11905: 0xC16D, - 32664 - 11905: 0xC16E, - 32665 - 11905: 0xC16F, - 32666 - 11905: 0xC1E7, - 32667 - 11905: 0xC170, - 32668 - 11905: 0xC171, - 32669 - 11905: 0xF4C6, - 32670 - 11905: 0xD0DF, - 32671 - 11905: 0xF4C7, - 32672 - 11905: 0xC172, - 32673 - 11905: 0xCFDB, - 32674 - 11905: 0xC173, - 32675 - 11905: 0xC174, - 32676 - 11905: 0xC8BA, - 32677 - 11905: 0xC175, - 32678 - 11905: 0xC176, - 32679 - 11905: 0xF4C8, - 32680 - 11905: 0xC177, - 32681 - 11905: 0xC178, - 32682 - 11905: 0xC179, - 32683 - 11905: 0xC17A, - 32684 - 11905: 0xC17B, - 32685 - 11905: 0xC17C, - 32686 - 11905: 0xC17D, - 32687 - 11905: 0xF4C9, - 32688 - 11905: 0xF4CA, - 32689 - 11905: 0xC17E, - 32690 - 11905: 0xF4CB, - 32691 - 11905: 0xC180, - 32692 - 11905: 0xC181, - 32693 - 11905: 0xC182, - 32694 - 11905: 0xC183, - 32695 - 11905: 0xC184, - 32696 - 11905: 0xD9FA, - 32697 - 11905: 0xB8FE, - 32698 - 11905: 0xC185, - 32699 - 11905: 0xC186, - 32700 - 11905: 0xE5F1, - 32701 - 11905: 0xD3F0, - 32702 - 11905: 0xC187, - 32703 - 11905: 0xF4E0, - 32704 - 11905: 0xC188, - 32705 - 11905: 0xCECC, - 32706 - 11905: 0xC189, - 32707 - 11905: 0xC18A, - 32708 - 11905: 0xC18B, - 32709 - 11905: 0xB3E1, - 32710 - 11905: 0xC18C, - 32711 - 11905: 0xC18D, - 32712 - 11905: 0xC18E, - 32713 - 11905: 0xC18F, - 32714 - 11905: 0xF1B4, - 32715 - 11905: 0xC190, - 32716 - 11905: 0xD2EE, - 32717 - 11905: 0xC191, - 32718 - 11905: 0xF4E1, - 32719 - 11905: 0xC192, - 32720 - 11905: 0xC193, - 32721 - 11905: 0xC194, - 32722 - 11905: 0xC195, - 32723 - 11905: 0xC196, - 32724 - 11905: 0xCFE8, - 32725 - 11905: 0xF4E2, - 32726 - 11905: 0xC197, - 32727 - 11905: 0xC198, - 32728 - 11905: 0xC7CC, - 32729 - 11905: 0xC199, - 32730 - 11905: 0xC19A, - 32731 - 11905: 0xC19B, - 32732 - 11905: 0xC19C, - 32733 - 11905: 0xC19D, - 32734 - 11905: 0xC19E, - 32735 - 11905: 0xB5D4, - 32736 - 11905: 0xB4E4, - 32737 - 11905: 0xF4E4, - 32738 - 11905: 0xC19F, - 32739 - 11905: 0xC1A0, - 32740 - 11905: 0xC240, - 32741 - 11905: 0xF4E3, - 32742 - 11905: 0xF4E5, - 32743 - 11905: 0xC241, - 32744 - 11905: 0xC242, - 32745 - 11905: 0xF4E6, - 32746 - 11905: 0xC243, - 32747 - 11905: 0xC244, - 32748 - 11905: 0xC245, - 32749 - 11905: 0xC246, - 32750 - 11905: 0xF4E7, - 32751 - 11905: 0xC247, - 32752 - 11905: 0xBAB2, - 32753 - 11905: 0xB0BF, - 32754 - 11905: 0xC248, - 32755 - 11905: 0xF4E8, - 32756 - 11905: 0xC249, - 32757 - 11905: 0xC24A, - 32758 - 11905: 0xC24B, - 32759 - 11905: 0xC24C, - 32760 - 11905: 0xC24D, - 32761 - 11905: 0xC24E, - 32762 - 11905: 0xC24F, - 32763 - 11905: 0xB7AD, - 32764 - 11905: 0xD2ED, - 32765 - 11905: 0xC250, - 32766 - 11905: 0xC251, - 32767 - 11905: 0xC252, - 32768 - 11905: 0xD2AB, - 32769 - 11905: 0xC0CF, - 32770 - 11905: 0xC253, - 32771 - 11905: 0xBFBC, - 32772 - 11905: 0xEBA3, - 32773 - 11905: 0xD5DF, - 32774 - 11905: 0xEAC8, - 32775 - 11905: 0xC254, - 32776 - 11905: 0xC255, - 32777 - 11905: 0xC256, - 32778 - 11905: 0xC257, - 32779 - 11905: 0xF1F3, - 32780 - 11905: 0xB6F8, - 32781 - 11905: 0xCBA3, - 32782 - 11905: 0xC258, - 32783 - 11905: 0xC259, - 32784 - 11905: 0xC4CD, - 32785 - 11905: 0xC25A, - 32786 - 11905: 0xF1E7, - 32787 - 11905: 0xC25B, - 32788 - 11905: 0xF1E8, - 32789 - 11905: 0xB8FB, - 32790 - 11905: 0xF1E9, - 32791 - 11905: 0xBAC4, - 32792 - 11905: 0xD4C5, - 32793 - 11905: 0xB0D2, - 32794 - 11905: 0xC25C, - 32795 - 11905: 0xC25D, - 32796 - 11905: 0xF1EA, - 32797 - 11905: 0xC25E, - 32798 - 11905: 0xC25F, - 32799 - 11905: 0xC260, - 32800 - 11905: 0xF1EB, - 32801 - 11905: 0xC261, - 32802 - 11905: 0xF1EC, - 32803 - 11905: 0xC262, - 32804 - 11905: 0xC263, - 32805 - 11905: 0xF1ED, - 32806 - 11905: 0xF1EE, - 32807 - 11905: 0xF1EF, - 32808 - 11905: 0xF1F1, - 32809 - 11905: 0xF1F0, - 32810 - 11905: 0xC5D5, - 32811 - 11905: 0xC264, - 32812 - 11905: 0xC265, - 32813 - 11905: 0xC266, - 32814 - 11905: 0xC267, - 32815 - 11905: 0xC268, - 32816 - 11905: 0xC269, - 32817 - 11905: 0xF1F2, - 32818 - 11905: 0xC26A, - 32819 - 11905: 0xB6FA, - 32820 - 11905: 0xC26B, - 32821 - 11905: 0xF1F4, - 32822 - 11905: 0xD2AE, - 32823 - 11905: 0xDEC7, - 32824 - 11905: 0xCBCA, - 32825 - 11905: 0xC26C, - 32826 - 11905: 0xC26D, - 32827 - 11905: 0xB3DC, - 32828 - 11905: 0xC26E, - 32829 - 11905: 0xB5A2, - 32830 - 11905: 0xC26F, - 32831 - 11905: 0xB9A2, - 32832 - 11905: 0xC270, - 32833 - 11905: 0xC271, - 32834 - 11905: 0xC4F4, - 32835 - 11905: 0xF1F5, - 32836 - 11905: 0xC272, - 32837 - 11905: 0xC273, - 32838 - 11905: 0xF1F6, - 32839 - 11905: 0xC274, - 32840 - 11905: 0xC275, - 32841 - 11905: 0xC276, - 32842 - 11905: 0xC1C4, - 32843 - 11905: 0xC1FB, - 32844 - 11905: 0xD6B0, - 32845 - 11905: 0xF1F7, - 32846 - 11905: 0xC277, - 32847 - 11905: 0xC278, - 32848 - 11905: 0xC279, - 32849 - 11905: 0xC27A, - 32850 - 11905: 0xF1F8, - 32851 - 11905: 0xC27B, - 32852 - 11905: 0xC1AA, - 32853 - 11905: 0xC27C, - 32854 - 11905: 0xC27D, - 32855 - 11905: 0xC27E, - 32856 - 11905: 0xC6B8, - 32857 - 11905: 0xC280, - 32858 - 11905: 0xBEDB, - 32859 - 11905: 0xC281, - 32860 - 11905: 0xC282, - 32861 - 11905: 0xC283, - 32862 - 11905: 0xC284, - 32863 - 11905: 0xC285, - 32864 - 11905: 0xC286, - 32865 - 11905: 0xC287, - 32866 - 11905: 0xC288, - 32867 - 11905: 0xC289, - 32868 - 11905: 0xC28A, - 32869 - 11905: 0xC28B, - 32870 - 11905: 0xC28C, - 32871 - 11905: 0xC28D, - 32872 - 11905: 0xC28E, - 32873 - 11905: 0xF1F9, - 32874 - 11905: 0xB4CF, - 32875 - 11905: 0xC28F, - 32876 - 11905: 0xC290, - 32877 - 11905: 0xC291, - 32878 - 11905: 0xC292, - 32879 - 11905: 0xC293, - 32880 - 11905: 0xC294, - 32881 - 11905: 0xF1FA, - 32882 - 11905: 0xC295, - 32883 - 11905: 0xC296, - 32884 - 11905: 0xC297, - 32885 - 11905: 0xC298, - 32886 - 11905: 0xC299, - 32887 - 11905: 0xC29A, - 32888 - 11905: 0xC29B, - 32889 - 11905: 0xC29C, - 32890 - 11905: 0xC29D, - 32891 - 11905: 0xC29E, - 32892 - 11905: 0xC29F, - 32893 - 11905: 0xC2A0, - 32894 - 11905: 0xC340, - 32895 - 11905: 0xEDB2, - 32896 - 11905: 0xEDB1, - 32897 - 11905: 0xC341, - 32898 - 11905: 0xC342, - 32899 - 11905: 0xCBE0, - 32900 - 11905: 0xD2DE, - 32901 - 11905: 0xC343, - 32902 - 11905: 0xCBC1, - 32903 - 11905: 0xD5D8, - 32904 - 11905: 0xC344, - 32905 - 11905: 0xC8E2, - 32906 - 11905: 0xC345, - 32907 - 11905: 0xC0DF, - 32908 - 11905: 0xBCA1, - 32909 - 11905: 0xC346, - 32910 - 11905: 0xC347, - 32911 - 11905: 0xC348, - 32912 - 11905: 0xC349, - 32913 - 11905: 0xC34A, - 32914 - 11905: 0xC34B, - 32915 - 11905: 0xEBC1, - 32916 - 11905: 0xC34C, - 32917 - 11905: 0xC34D, - 32918 - 11905: 0xD0A4, - 32919 - 11905: 0xC34E, - 32920 - 11905: 0xD6E2, - 32921 - 11905: 0xC34F, - 32922 - 11905: 0xB6C7, - 32923 - 11905: 0xB8D8, - 32924 - 11905: 0xEBC0, - 32925 - 11905: 0xB8CE, - 32926 - 11905: 0xC350, - 32927 - 11905: 0xEBBF, - 32928 - 11905: 0xB3A6, - 32929 - 11905: 0xB9C9, - 32930 - 11905: 0xD6AB, - 32931 - 11905: 0xC351, - 32932 - 11905: 0xB7F4, - 32933 - 11905: 0xB7CA, - 32934 - 11905: 0xC352, - 32935 - 11905: 0xC353, - 32936 - 11905: 0xC354, - 32937 - 11905: 0xBCE7, - 32938 - 11905: 0xB7BE, - 32939 - 11905: 0xEBC6, - 32940 - 11905: 0xC355, - 32941 - 11905: 0xEBC7, - 32942 - 11905: 0xB0B9, - 32943 - 11905: 0xBFCF, - 32944 - 11905: 0xC356, - 32945 - 11905: 0xEBC5, - 32946 - 11905: 0xD3FD, - 32947 - 11905: 0xC357, - 32948 - 11905: 0xEBC8, - 32949 - 11905: 0xC358, - 32950 - 11905: 0xC359, - 32951 - 11905: 0xEBC9, - 32952 - 11905: 0xC35A, - 32953 - 11905: 0xC35B, - 32954 - 11905: 0xB7CE, - 32955 - 11905: 0xC35C, - 32956 - 11905: 0xEBC2, - 32957 - 11905: 0xEBC4, - 32958 - 11905: 0xC9F6, - 32959 - 11905: 0xD6D7, - 32960 - 11905: 0xD5CD, - 32961 - 11905: 0xD0B2, - 32962 - 11905: 0xEBCF, - 32963 - 11905: 0xCEB8, - 32964 - 11905: 0xEBD0, - 32965 - 11905: 0xC35D, - 32966 - 11905: 0xB5A8, - 32967 - 11905: 0xC35E, - 32968 - 11905: 0xC35F, - 32969 - 11905: 0xC360, - 32970 - 11905: 0xC361, - 32971 - 11905: 0xC362, - 32972 - 11905: 0xB1B3, - 32973 - 11905: 0xEBD2, - 32974 - 11905: 0xCCA5, - 32975 - 11905: 0xC363, - 32976 - 11905: 0xC364, - 32977 - 11905: 0xC365, - 32978 - 11905: 0xC366, - 32979 - 11905: 0xC367, - 32980 - 11905: 0xC368, - 32981 - 11905: 0xC369, - 32982 - 11905: 0xC5D6, - 32983 - 11905: 0xEBD3, - 32984 - 11905: 0xC36A, - 32985 - 11905: 0xEBD1, - 32986 - 11905: 0xC5DF, - 32987 - 11905: 0xEBCE, - 32988 - 11905: 0xCAA4, - 32989 - 11905: 0xEBD5, - 32990 - 11905: 0xB0FB, - 32991 - 11905: 0xC36B, - 32992 - 11905: 0xC36C, - 32993 - 11905: 0xBAFA, - 32994 - 11905: 0xC36D, - 32995 - 11905: 0xC36E, - 32996 - 11905: 0xD8B7, - 32997 - 11905: 0xF1E3, - 32998 - 11905: 0xC36F, - 32999 - 11905: 0xEBCA, - 33000 - 11905: 0xEBCB, - 33001 - 11905: 0xEBCC, - 33002 - 11905: 0xEBCD, - 33003 - 11905: 0xEBD6, - 33004 - 11905: 0xE6C0, - 33005 - 11905: 0xEBD9, - 33006 - 11905: 0xC370, - 33007 - 11905: 0xBFE8, - 33008 - 11905: 0xD2C8, - 33009 - 11905: 0xEBD7, - 33010 - 11905: 0xEBDC, - 33011 - 11905: 0xB8EC, - 33012 - 11905: 0xEBD8, - 33013 - 11905: 0xC371, - 33014 - 11905: 0xBDBA, - 33015 - 11905: 0xC372, - 33016 - 11905: 0xD0D8, - 33017 - 11905: 0xC373, - 33018 - 11905: 0xB0B7, - 33019 - 11905: 0xC374, - 33020 - 11905: 0xEBDD, - 33021 - 11905: 0xC4DC, - 33022 - 11905: 0xC375, - 33023 - 11905: 0xC376, - 33024 - 11905: 0xC377, - 33025 - 11905: 0xC378, - 33026 - 11905: 0xD6AC, - 33027 - 11905: 0xC379, - 33028 - 11905: 0xC37A, - 33029 - 11905: 0xC37B, - 33030 - 11905: 0xB4E0, - 33031 - 11905: 0xC37C, - 33032 - 11905: 0xC37D, - 33033 - 11905: 0xC2F6, - 33034 - 11905: 0xBCB9, - 33035 - 11905: 0xC37E, - 33036 - 11905: 0xC380, - 33037 - 11905: 0xEBDA, - 33038 - 11905: 0xEBDB, - 33039 - 11905: 0xD4E0, - 33040 - 11905: 0xC6EA, - 33041 - 11905: 0xC4D4, - 33042 - 11905: 0xEBDF, - 33043 - 11905: 0xC5A7, - 33044 - 11905: 0xD9F5, - 33045 - 11905: 0xC381, - 33046 - 11905: 0xB2B1, - 33047 - 11905: 0xC382, - 33048 - 11905: 0xEBE4, - 33049 - 11905: 0xC383, - 33050 - 11905: 0xBDC5, - 33051 - 11905: 0xC384, - 33052 - 11905: 0xC385, - 33053 - 11905: 0xC386, - 33054 - 11905: 0xEBE2, - 33055 - 11905: 0xC387, - 33056 - 11905: 0xC388, - 33057 - 11905: 0xC389, - 33058 - 11905: 0xC38A, - 33059 - 11905: 0xC38B, - 33060 - 11905: 0xC38C, - 33061 - 11905: 0xC38D, - 33062 - 11905: 0xC38E, - 33063 - 11905: 0xC38F, - 33064 - 11905: 0xC390, - 33065 - 11905: 0xC391, - 33066 - 11905: 0xC392, - 33067 - 11905: 0xC393, - 33068 - 11905: 0xEBE3, - 33069 - 11905: 0xC394, - 33070 - 11905: 0xC395, - 33071 - 11905: 0xB8AC, - 33072 - 11905: 0xC396, - 33073 - 11905: 0xCDD1, - 33074 - 11905: 0xEBE5, - 33075 - 11905: 0xC397, - 33076 - 11905: 0xC398, - 33077 - 11905: 0xC399, - 33078 - 11905: 0xEBE1, - 33079 - 11905: 0xC39A, - 33080 - 11905: 0xC1B3, - 33081 - 11905: 0xC39B, - 33082 - 11905: 0xC39C, - 33083 - 11905: 0xC39D, - 33084 - 11905: 0xC39E, - 33085 - 11905: 0xC39F, - 33086 - 11905: 0xC6A2, - 33087 - 11905: 0xC3A0, - 33088 - 11905: 0xC440, - 33089 - 11905: 0xC441, - 33090 - 11905: 0xC442, - 33091 - 11905: 0xC443, - 33092 - 11905: 0xC444, - 33093 - 11905: 0xC445, - 33094 - 11905: 0xCCF3, - 33095 - 11905: 0xC446, - 33096 - 11905: 0xEBE6, - 33097 - 11905: 0xC447, - 33098 - 11905: 0xC0B0, - 33099 - 11905: 0xD2B8, - 33100 - 11905: 0xEBE7, - 33101 - 11905: 0xC448, - 33102 - 11905: 0xC449, - 33103 - 11905: 0xC44A, - 33104 - 11905: 0xB8AF, - 33105 - 11905: 0xB8AD, - 33106 - 11905: 0xC44B, - 33107 - 11905: 0xEBE8, - 33108 - 11905: 0xC7BB, - 33109 - 11905: 0xCDF3, - 33110 - 11905: 0xC44C, - 33111 - 11905: 0xC44D, - 33112 - 11905: 0xC44E, - 33113 - 11905: 0xEBEA, - 33114 - 11905: 0xEBEB, - 33115 - 11905: 0xC44F, - 33116 - 11905: 0xC450, - 33117 - 11905: 0xC451, - 33118 - 11905: 0xC452, - 33119 - 11905: 0xC453, - 33120 - 11905: 0xEBED, - 33121 - 11905: 0xC454, - 33122 - 11905: 0xC455, - 33123 - 11905: 0xC456, - 33124 - 11905: 0xC457, - 33125 - 11905: 0xD0C8, - 33126 - 11905: 0xC458, - 33127 - 11905: 0xEBF2, - 33128 - 11905: 0xC459, - 33129 - 11905: 0xEBEE, - 33130 - 11905: 0xC45A, - 33131 - 11905: 0xC45B, - 33132 - 11905: 0xC45C, - 33133 - 11905: 0xEBF1, - 33134 - 11905: 0xC8F9, - 33135 - 11905: 0xC45D, - 33136 - 11905: 0xD1FC, - 33137 - 11905: 0xEBEC, - 33138 - 11905: 0xC45E, - 33139 - 11905: 0xC45F, - 33140 - 11905: 0xEBE9, - 33141 - 11905: 0xC460, - 33142 - 11905: 0xC461, - 33143 - 11905: 0xC462, - 33144 - 11905: 0xC463, - 33145 - 11905: 0xB8B9, - 33146 - 11905: 0xCFD9, - 33147 - 11905: 0xC4E5, - 33148 - 11905: 0xEBEF, - 33149 - 11905: 0xEBF0, - 33150 - 11905: 0xCCDA, - 33151 - 11905: 0xCDC8, - 33152 - 11905: 0xB0F2, - 33153 - 11905: 0xC464, - 33154 - 11905: 0xEBF6, - 33155 - 11905: 0xC465, - 33156 - 11905: 0xC466, - 33157 - 11905: 0xC467, - 33158 - 11905: 0xC468, - 33159 - 11905: 0xC469, - 33160 - 11905: 0xEBF5, - 33161 - 11905: 0xC46A, - 33162 - 11905: 0xB2B2, - 33163 - 11905: 0xC46B, - 33164 - 11905: 0xC46C, - 33165 - 11905: 0xC46D, - 33166 - 11905: 0xC46E, - 33167 - 11905: 0xB8E0, - 33168 - 11905: 0xC46F, - 33169 - 11905: 0xEBF7, - 33170 - 11905: 0xC470, - 33171 - 11905: 0xC471, - 33172 - 11905: 0xC472, - 33173 - 11905: 0xC473, - 33174 - 11905: 0xC474, - 33175 - 11905: 0xC475, - 33176 - 11905: 0xB1EC, - 33177 - 11905: 0xC476, - 33178 - 11905: 0xC477, - 33179 - 11905: 0xCCC5, - 33180 - 11905: 0xC4A4, - 33181 - 11905: 0xCFA5, - 33182 - 11905: 0xC478, - 33183 - 11905: 0xC479, - 33184 - 11905: 0xC47A, - 33185 - 11905: 0xC47B, - 33186 - 11905: 0xC47C, - 33187 - 11905: 0xEBF9, - 33188 - 11905: 0xC47D, - 33189 - 11905: 0xC47E, - 33190 - 11905: 0xECA2, - 33191 - 11905: 0xC480, - 33192 - 11905: 0xC5F2, - 33193 - 11905: 0xC481, - 33194 - 11905: 0xEBFA, - 33195 - 11905: 0xC482, - 33196 - 11905: 0xC483, - 33197 - 11905: 0xC484, - 33198 - 11905: 0xC485, - 33199 - 11905: 0xC486, - 33200 - 11905: 0xC487, - 33201 - 11905: 0xC488, - 33202 - 11905: 0xC489, - 33203 - 11905: 0xC9C5, - 33204 - 11905: 0xC48A, - 33205 - 11905: 0xC48B, - 33206 - 11905: 0xC48C, - 33207 - 11905: 0xC48D, - 33208 - 11905: 0xC48E, - 33209 - 11905: 0xC48F, - 33210 - 11905: 0xE2DF, - 33211 - 11905: 0xEBFE, - 33212 - 11905: 0xC490, - 33213 - 11905: 0xC491, - 33214 - 11905: 0xC492, - 33215 - 11905: 0xC493, - 33216 - 11905: 0xCDCE, - 33217 - 11905: 0xECA1, - 33218 - 11905: 0xB1DB, - 33219 - 11905: 0xD3B7, - 33220 - 11905: 0xC494, - 33221 - 11905: 0xC495, - 33222 - 11905: 0xD2DC, - 33223 - 11905: 0xC496, - 33224 - 11905: 0xC497, - 33225 - 11905: 0xC498, - 33226 - 11905: 0xEBFD, - 33227 - 11905: 0xC499, - 33228 - 11905: 0xEBFB, - 33229 - 11905: 0xC49A, - 33230 - 11905: 0xC49B, - 33231 - 11905: 0xC49C, - 33232 - 11905: 0xC49D, - 33233 - 11905: 0xC49E, - 33234 - 11905: 0xC49F, - 33235 - 11905: 0xC4A0, - 33236 - 11905: 0xC540, - 33237 - 11905: 0xC541, - 33238 - 11905: 0xC542, - 33239 - 11905: 0xC543, - 33240 - 11905: 0xC544, - 33241 - 11905: 0xC545, - 33242 - 11905: 0xC546, - 33243 - 11905: 0xC547, - 33244 - 11905: 0xC548, - 33245 - 11905: 0xC549, - 33246 - 11905: 0xC54A, - 33247 - 11905: 0xC54B, - 33248 - 11905: 0xC54C, - 33249 - 11905: 0xC54D, - 33250 - 11905: 0xC54E, - 33251 - 11905: 0xB3BC, - 33252 - 11905: 0xC54F, - 33253 - 11905: 0xC550, - 33254 - 11905: 0xC551, - 33255 - 11905: 0xEAB0, - 33256 - 11905: 0xC552, - 33257 - 11905: 0xC553, - 33258 - 11905: 0xD7D4, - 33259 - 11905: 0xC554, - 33260 - 11905: 0xF4AB, - 33261 - 11905: 0xB3F4, - 33262 - 11905: 0xC555, - 33263 - 11905: 0xC556, - 33264 - 11905: 0xC557, - 33265 - 11905: 0xC558, - 33266 - 11905: 0xC559, - 33267 - 11905: 0xD6C1, - 33268 - 11905: 0xD6C2, - 33269 - 11905: 0xC55A, - 33270 - 11905: 0xC55B, - 33271 - 11905: 0xC55C, - 33272 - 11905: 0xC55D, - 33273 - 11905: 0xC55E, - 33274 - 11905: 0xC55F, - 33275 - 11905: 0xD5E9, - 33276 - 11905: 0xBECA, - 33277 - 11905: 0xC560, - 33278 - 11905: 0xF4A7, - 33279 - 11905: 0xC561, - 33280 - 11905: 0xD2A8, - 33281 - 11905: 0xF4A8, - 33282 - 11905: 0xF4A9, - 33283 - 11905: 0xC562, - 33284 - 11905: 0xF4AA, - 33285 - 11905: 0xBECB, - 33286 - 11905: 0xD3DF, - 33287 - 11905: 0xC563, - 33288 - 11905: 0xC564, - 33289 - 11905: 0xC565, - 33290 - 11905: 0xC566, - 33291 - 11905: 0xC567, - 33292 - 11905: 0xC9E0, - 33293 - 11905: 0xC9E1, - 33294 - 11905: 0xC568, - 33295 - 11905: 0xC569, - 33296 - 11905: 0xF3C2, - 33297 - 11905: 0xC56A, - 33298 - 11905: 0xCAE6, - 33299 - 11905: 0xC56B, - 33300 - 11905: 0xCCF2, - 33301 - 11905: 0xC56C, - 33302 - 11905: 0xC56D, - 33303 - 11905: 0xC56E, - 33304 - 11905: 0xC56F, - 33305 - 11905: 0xC570, - 33306 - 11905: 0xC571, - 33307 - 11905: 0xE2B6, - 33308 - 11905: 0xCBB4, - 33309 - 11905: 0xC572, - 33310 - 11905: 0xCEE8, - 33311 - 11905: 0xD6DB, - 33312 - 11905: 0xC573, - 33313 - 11905: 0xF4AD, - 33314 - 11905: 0xF4AE, - 33315 - 11905: 0xF4AF, - 33316 - 11905: 0xC574, - 33317 - 11905: 0xC575, - 33318 - 11905: 0xC576, - 33319 - 11905: 0xC577, - 33320 - 11905: 0xF4B2, - 33321 - 11905: 0xC578, - 33322 - 11905: 0xBABD, - 33323 - 11905: 0xF4B3, - 33324 - 11905: 0xB0E3, - 33325 - 11905: 0xF4B0, - 33326 - 11905: 0xC579, - 33327 - 11905: 0xF4B1, - 33328 - 11905: 0xBDA2, - 33329 - 11905: 0xB2D5, - 33330 - 11905: 0xC57A, - 33331 - 11905: 0xF4B6, - 33332 - 11905: 0xF4B7, - 33333 - 11905: 0xB6E6, - 33334 - 11905: 0xB2B0, - 33335 - 11905: 0xCFCF, - 33336 - 11905: 0xF4B4, - 33337 - 11905: 0xB4AC, - 33338 - 11905: 0xC57B, - 33339 - 11905: 0xF4B5, - 33340 - 11905: 0xC57C, - 33341 - 11905: 0xC57D, - 33342 - 11905: 0xF4B8, - 33343 - 11905: 0xC57E, - 33344 - 11905: 0xC580, - 33345 - 11905: 0xC581, - 33346 - 11905: 0xC582, - 33347 - 11905: 0xC583, - 33348 - 11905: 0xF4B9, - 33349 - 11905: 0xC584, - 33350 - 11905: 0xC585, - 33351 - 11905: 0xCDA7, - 33352 - 11905: 0xC586, - 33353 - 11905: 0xF4BA, - 33354 - 11905: 0xC587, - 33355 - 11905: 0xF4BB, - 33356 - 11905: 0xC588, - 33357 - 11905: 0xC589, - 33358 - 11905: 0xC58A, - 33359 - 11905: 0xF4BC, - 33360 - 11905: 0xC58B, - 33361 - 11905: 0xC58C, - 33362 - 11905: 0xC58D, - 33363 - 11905: 0xC58E, - 33364 - 11905: 0xC58F, - 33365 - 11905: 0xC590, - 33366 - 11905: 0xC591, - 33367 - 11905: 0xC592, - 33368 - 11905: 0xCBD2, - 33369 - 11905: 0xC593, - 33370 - 11905: 0xF4BD, - 33371 - 11905: 0xC594, - 33372 - 11905: 0xC595, - 33373 - 11905: 0xC596, - 33374 - 11905: 0xC597, - 33375 - 11905: 0xF4BE, - 33376 - 11905: 0xC598, - 33377 - 11905: 0xC599, - 33378 - 11905: 0xC59A, - 33379 - 11905: 0xC59B, - 33380 - 11905: 0xC59C, - 33381 - 11905: 0xC59D, - 33382 - 11905: 0xC59E, - 33383 - 11905: 0xC59F, - 33384 - 11905: 0xF4BF, - 33385 - 11905: 0xC5A0, - 33386 - 11905: 0xC640, - 33387 - 11905: 0xC641, - 33388 - 11905: 0xC642, - 33389 - 11905: 0xC643, - 33390 - 11905: 0xF4DE, - 33391 - 11905: 0xC1BC, - 33392 - 11905: 0xBCE8, - 33393 - 11905: 0xC644, - 33394 - 11905: 0xC9AB, - 33395 - 11905: 0xD1DE, - 33396 - 11905: 0xE5F5, - 33397 - 11905: 0xC645, - 33398 - 11905: 0xC646, - 33399 - 11905: 0xC647, - 33400 - 11905: 0xC648, - 33401 - 11905: 0xDCB3, - 33402 - 11905: 0xD2D5, - 33403 - 11905: 0xC649, - 33404 - 11905: 0xC64A, - 33405 - 11905: 0xDCB4, - 33406 - 11905: 0xB0AC, - 33407 - 11905: 0xDCB5, - 33408 - 11905: 0xC64B, - 33409 - 11905: 0xC64C, - 33410 - 11905: 0xBDDA, - 33411 - 11905: 0xC64D, - 33412 - 11905: 0xDCB9, - 33413 - 11905: 0xC64E, - 33414 - 11905: 0xC64F, - 33415 - 11905: 0xC650, - 33416 - 11905: 0xD8C2, - 33417 - 11905: 0xC651, - 33418 - 11905: 0xDCB7, - 33419 - 11905: 0xD3F3, - 33420 - 11905: 0xC652, - 33421 - 11905: 0xC9D6, - 33422 - 11905: 0xDCBA, - 33423 - 11905: 0xDCB6, - 33424 - 11905: 0xC653, - 33425 - 11905: 0xDCBB, - 33426 - 11905: 0xC3A2, - 33427 - 11905: 0xC654, - 33428 - 11905: 0xC655, - 33429 - 11905: 0xC656, - 33430 - 11905: 0xC657, - 33431 - 11905: 0xDCBC, - 33432 - 11905: 0xDCC5, - 33433 - 11905: 0xDCBD, - 33434 - 11905: 0xC658, - 33435 - 11905: 0xC659, - 33436 - 11905: 0xCEDF, - 33437 - 11905: 0xD6A5, - 33438 - 11905: 0xC65A, - 33439 - 11905: 0xDCCF, - 33440 - 11905: 0xC65B, - 33441 - 11905: 0xDCCD, - 33442 - 11905: 0xC65C, - 33443 - 11905: 0xC65D, - 33444 - 11905: 0xDCD2, - 33445 - 11905: 0xBDE6, - 33446 - 11905: 0xC2AB, - 33447 - 11905: 0xC65E, - 33448 - 11905: 0xDCB8, - 33449 - 11905: 0xDCCB, - 33450 - 11905: 0xDCCE, - 33451 - 11905: 0xDCBE, - 33452 - 11905: 0xB7D2, - 33453 - 11905: 0xB0C5, - 33454 - 11905: 0xDCC7, - 33455 - 11905: 0xD0BE, - 33456 - 11905: 0xDCC1, - 33457 - 11905: 0xBBA8, - 33458 - 11905: 0xC65F, - 33459 - 11905: 0xB7BC, - 33460 - 11905: 0xDCCC, - 33461 - 11905: 0xC660, - 33462 - 11905: 0xC661, - 33463 - 11905: 0xDCC6, - 33464 - 11905: 0xDCBF, - 33465 - 11905: 0xC7DB, - 33466 - 11905: 0xC662, - 33467 - 11905: 0xC663, - 33468 - 11905: 0xC664, - 33469 - 11905: 0xD1BF, - 33470 - 11905: 0xDCC0, - 33471 - 11905: 0xC665, - 33472 - 11905: 0xC666, - 33473 - 11905: 0xDCCA, - 33474 - 11905: 0xC667, - 33475 - 11905: 0xC668, - 33476 - 11905: 0xDCD0, - 33477 - 11905: 0xC669, - 33478 - 11905: 0xC66A, - 33479 - 11905: 0xCEAD, - 33480 - 11905: 0xDCC2, - 33481 - 11905: 0xC66B, - 33482 - 11905: 0xDCC3, - 33483 - 11905: 0xDCC8, - 33484 - 11905: 0xDCC9, - 33485 - 11905: 0xB2D4, - 33486 - 11905: 0xDCD1, - 33487 - 11905: 0xCBD5, - 33488 - 11905: 0xC66C, - 33489 - 11905: 0xD4B7, - 33490 - 11905: 0xDCDB, - 33491 - 11905: 0xDCDF, - 33492 - 11905: 0xCCA6, - 33493 - 11905: 0xDCE6, - 33494 - 11905: 0xC66D, - 33495 - 11905: 0xC3E7, - 33496 - 11905: 0xDCDC, - 33497 - 11905: 0xC66E, - 33498 - 11905: 0xC66F, - 33499 - 11905: 0xBFC1, - 33500 - 11905: 0xDCD9, - 33501 - 11905: 0xC670, - 33502 - 11905: 0xB0FA, - 33503 - 11905: 0xB9B6, - 33504 - 11905: 0xDCE5, - 33505 - 11905: 0xDCD3, - 33506 - 11905: 0xC671, - 33507 - 11905: 0xDCC4, - 33508 - 11905: 0xDCD6, - 33509 - 11905: 0xC8F4, - 33510 - 11905: 0xBFE0, - 33511 - 11905: 0xC672, - 33512 - 11905: 0xC673, - 33513 - 11905: 0xC674, - 33514 - 11905: 0xC675, - 33515 - 11905: 0xC9BB, - 33516 - 11905: 0xC676, - 33517 - 11905: 0xC677, - 33518 - 11905: 0xC678, - 33519 - 11905: 0xB1BD, - 33520 - 11905: 0xC679, - 33521 - 11905: 0xD3A2, - 33522 - 11905: 0xC67A, - 33523 - 11905: 0xC67B, - 33524 - 11905: 0xDCDA, - 33525 - 11905: 0xC67C, - 33526 - 11905: 0xC67D, - 33527 - 11905: 0xDCD5, - 33528 - 11905: 0xC67E, - 33529 - 11905: 0xC6BB, - 33530 - 11905: 0xC680, - 33531 - 11905: 0xDCDE, - 33532 - 11905: 0xC681, - 33533 - 11905: 0xC682, - 33534 - 11905: 0xC683, - 33535 - 11905: 0xC684, - 33536 - 11905: 0xC685, - 33537 - 11905: 0xD7C2, - 33538 - 11905: 0xC3AF, - 33539 - 11905: 0xB7B6, - 33540 - 11905: 0xC7D1, - 33541 - 11905: 0xC3A9, - 33542 - 11905: 0xDCE2, - 33543 - 11905: 0xDCD8, - 33544 - 11905: 0xDCEB, - 33545 - 11905: 0xDCD4, - 33546 - 11905: 0xC686, - 33547 - 11905: 0xC687, - 33548 - 11905: 0xDCDD, - 33549 - 11905: 0xC688, - 33550 - 11905: 0xBEA5, - 33551 - 11905: 0xDCD7, - 33552 - 11905: 0xC689, - 33553 - 11905: 0xDCE0, - 33554 - 11905: 0xC68A, - 33555 - 11905: 0xC68B, - 33556 - 11905: 0xDCE3, - 33557 - 11905: 0xDCE4, - 33558 - 11905: 0xC68C, - 33559 - 11905: 0xDCF8, - 33560 - 11905: 0xC68D, - 33561 - 11905: 0xC68E, - 33562 - 11905: 0xDCE1, - 33563 - 11905: 0xDDA2, - 33564 - 11905: 0xDCE7, - 33565 - 11905: 0xC68F, - 33566 - 11905: 0xC690, - 33567 - 11905: 0xC691, - 33568 - 11905: 0xC692, - 33569 - 11905: 0xC693, - 33570 - 11905: 0xC694, - 33571 - 11905: 0xC695, - 33572 - 11905: 0xC696, - 33573 - 11905: 0xC697, - 33574 - 11905: 0xC698, - 33575 - 11905: 0xBCEB, - 33576 - 11905: 0xB4C4, - 33577 - 11905: 0xC699, - 33578 - 11905: 0xC69A, - 33579 - 11905: 0xC3A3, - 33580 - 11905: 0xB2E7, - 33581 - 11905: 0xDCFA, - 33582 - 11905: 0xC69B, - 33583 - 11905: 0xDCF2, - 33584 - 11905: 0xC69C, - 33585 - 11905: 0xDCEF, - 33586 - 11905: 0xC69D, - 33587 - 11905: 0xDCFC, - 33588 - 11905: 0xDCEE, - 33589 - 11905: 0xD2F0, - 33590 - 11905: 0xB2E8, - 33591 - 11905: 0xC69E, - 33592 - 11905: 0xC8D7, - 33593 - 11905: 0xC8E3, - 33594 - 11905: 0xDCFB, - 33595 - 11905: 0xC69F, - 33596 - 11905: 0xDCED, - 33597 - 11905: 0xC6A0, - 33598 - 11905: 0xC740, - 33599 - 11905: 0xC741, - 33600 - 11905: 0xDCF7, - 33601 - 11905: 0xC742, - 33602 - 11905: 0xC743, - 33603 - 11905: 0xDCF5, - 33604 - 11905: 0xC744, - 33605 - 11905: 0xC745, - 33606 - 11905: 0xBEA3, - 33607 - 11905: 0xDCF4, - 33608 - 11905: 0xC746, - 33609 - 11905: 0xB2DD, - 33610 - 11905: 0xC747, - 33611 - 11905: 0xC748, - 33612 - 11905: 0xC749, - 33613 - 11905: 0xC74A, - 33614 - 11905: 0xC74B, - 33615 - 11905: 0xDCF3, - 33616 - 11905: 0xBCF6, - 33617 - 11905: 0xDCE8, - 33618 - 11905: 0xBBC4, - 33619 - 11905: 0xC74C, - 33620 - 11905: 0xC0F3, - 33621 - 11905: 0xC74D, - 33622 - 11905: 0xC74E, - 33623 - 11905: 0xC74F, - 33624 - 11905: 0xC750, - 33625 - 11905: 0xC751, - 33626 - 11905: 0xBCD4, - 33627 - 11905: 0xDCE9, - 33628 - 11905: 0xDCEA, - 33629 - 11905: 0xC752, - 33630 - 11905: 0xDCF1, - 33631 - 11905: 0xDCF6, - 33632 - 11905: 0xDCF9, - 33633 - 11905: 0xB5B4, - 33634 - 11905: 0xC753, - 33635 - 11905: 0xC8D9, - 33636 - 11905: 0xBBE7, - 33637 - 11905: 0xDCFE, - 33638 - 11905: 0xDCFD, - 33639 - 11905: 0xD3AB, - 33640 - 11905: 0xDDA1, - 33641 - 11905: 0xDDA3, - 33642 - 11905: 0xDDA5, - 33643 - 11905: 0xD2F1, - 33644 - 11905: 0xDDA4, - 33645 - 11905: 0xDDA6, - 33646 - 11905: 0xDDA7, - 33647 - 11905: 0xD2A9, - 33648 - 11905: 0xC754, - 33649 - 11905: 0xC755, - 33650 - 11905: 0xC756, - 33651 - 11905: 0xC757, - 33652 - 11905: 0xC758, - 33653 - 11905: 0xC759, - 33654 - 11905: 0xC75A, - 33655 - 11905: 0xBAC9, - 33656 - 11905: 0xDDA9, - 33657 - 11905: 0xC75B, - 33658 - 11905: 0xC75C, - 33659 - 11905: 0xDDB6, - 33660 - 11905: 0xDDB1, - 33661 - 11905: 0xDDB4, - 33662 - 11905: 0xC75D, - 33663 - 11905: 0xC75E, - 33664 - 11905: 0xC75F, - 33665 - 11905: 0xC760, - 33666 - 11905: 0xC761, - 33667 - 11905: 0xC762, - 33668 - 11905: 0xC763, - 33669 - 11905: 0xDDB0, - 33670 - 11905: 0xC6CE, - 33671 - 11905: 0xC764, - 33672 - 11905: 0xC765, - 33673 - 11905: 0xC0F2, - 33674 - 11905: 0xC766, - 33675 - 11905: 0xC767, - 33676 - 11905: 0xC768, - 33677 - 11905: 0xC769, - 33678 - 11905: 0xC9AF, - 33679 - 11905: 0xC76A, - 33680 - 11905: 0xC76B, - 33681 - 11905: 0xC76C, - 33682 - 11905: 0xDCEC, - 33683 - 11905: 0xDDAE, - 33684 - 11905: 0xC76D, - 33685 - 11905: 0xC76E, - 33686 - 11905: 0xC76F, - 33687 - 11905: 0xC770, - 33688 - 11905: 0xDDB7, - 33689 - 11905: 0xC771, - 33690 - 11905: 0xC772, - 33691 - 11905: 0xDCF0, - 33692 - 11905: 0xDDAF, - 33693 - 11905: 0xC773, - 33694 - 11905: 0xDDB8, - 33695 - 11905: 0xC774, - 33696 - 11905: 0xDDAC, - 33697 - 11905: 0xC775, - 33698 - 11905: 0xC776, - 33699 - 11905: 0xC777, - 33700 - 11905: 0xC778, - 33701 - 11905: 0xC779, - 33702 - 11905: 0xC77A, - 33703 - 11905: 0xC77B, - 33704 - 11905: 0xDDB9, - 33705 - 11905: 0xDDB3, - 33706 - 11905: 0xDDAD, - 33707 - 11905: 0xC4AA, - 33708 - 11905: 0xC77C, - 33709 - 11905: 0xC77D, - 33710 - 11905: 0xC77E, - 33711 - 11905: 0xC780, - 33712 - 11905: 0xDDA8, - 33713 - 11905: 0xC0B3, - 33714 - 11905: 0xC1AB, - 33715 - 11905: 0xDDAA, - 33716 - 11905: 0xDDAB, - 33717 - 11905: 0xC781, - 33718 - 11905: 0xDDB2, - 33719 - 11905: 0xBBF1, - 33720 - 11905: 0xDDB5, - 33721 - 11905: 0xD3A8, - 33722 - 11905: 0xDDBA, - 33723 - 11905: 0xC782, - 33724 - 11905: 0xDDBB, - 33725 - 11905: 0xC3A7, - 33726 - 11905: 0xC783, - 33727 - 11905: 0xC784, - 33728 - 11905: 0xDDD2, - 33729 - 11905: 0xDDBC, - 33730 - 11905: 0xC785, - 33731 - 11905: 0xC786, - 33732 - 11905: 0xC787, - 33733 - 11905: 0xDDD1, - 33734 - 11905: 0xC788, - 33735 - 11905: 0xB9BD, - 33736 - 11905: 0xC789, - 33737 - 11905: 0xC78A, - 33738 - 11905: 0xBED5, - 33739 - 11905: 0xC78B, - 33740 - 11905: 0xBEFA, - 33741 - 11905: 0xC78C, - 33742 - 11905: 0xC78D, - 33743 - 11905: 0xBACA, - 33744 - 11905: 0xC78E, - 33745 - 11905: 0xC78F, - 33746 - 11905: 0xC790, - 33747 - 11905: 0xC791, - 33748 - 11905: 0xDDCA, - 33749 - 11905: 0xC792, - 33750 - 11905: 0xDDC5, - 33751 - 11905: 0xC793, - 33752 - 11905: 0xDDBF, - 33753 - 11905: 0xC794, - 33754 - 11905: 0xC795, - 33755 - 11905: 0xC796, - 33756 - 11905: 0xB2CB, - 33757 - 11905: 0xDDC3, - 33758 - 11905: 0xC797, - 33759 - 11905: 0xDDCB, - 33760 - 11905: 0xB2A4, - 33761 - 11905: 0xDDD5, - 33762 - 11905: 0xC798, - 33763 - 11905: 0xC799, - 33764 - 11905: 0xC79A, - 33765 - 11905: 0xDDBE, - 33766 - 11905: 0xC79B, - 33767 - 11905: 0xC79C, - 33768 - 11905: 0xC79D, - 33769 - 11905: 0xC6D0, - 33770 - 11905: 0xDDD0, - 33771 - 11905: 0xC79E, - 33772 - 11905: 0xC79F, - 33773 - 11905: 0xC7A0, - 33774 - 11905: 0xC840, - 33775 - 11905: 0xC841, - 33776 - 11905: 0xDDD4, - 33777 - 11905: 0xC1E2, - 33778 - 11905: 0xB7C6, - 33779 - 11905: 0xC842, - 33780 - 11905: 0xC843, - 33781 - 11905: 0xC844, - 33782 - 11905: 0xC845, - 33783 - 11905: 0xC846, - 33784 - 11905: 0xDDCE, - 33785 - 11905: 0xDDCF, - 33786 - 11905: 0xC847, - 33787 - 11905: 0xC848, - 33788 - 11905: 0xC849, - 33789 - 11905: 0xDDC4, - 33790 - 11905: 0xC84A, - 33791 - 11905: 0xC84B, - 33792 - 11905: 0xC84C, - 33793 - 11905: 0xDDBD, - 33794 - 11905: 0xC84D, - 33795 - 11905: 0xDDCD, - 33796 - 11905: 0xCCD1, - 33797 - 11905: 0xC84E, - 33798 - 11905: 0xDDC9, - 33799 - 11905: 0xC84F, - 33800 - 11905: 0xC850, - 33801 - 11905: 0xC851, - 33802 - 11905: 0xC852, - 33803 - 11905: 0xDDC2, - 33804 - 11905: 0xC3C8, - 33805 - 11905: 0xC6BC, - 33806 - 11905: 0xCEAE, - 33807 - 11905: 0xDDCC, - 33808 - 11905: 0xC853, - 33809 - 11905: 0xDDC8, - 33810 - 11905: 0xC854, - 33811 - 11905: 0xC855, - 33812 - 11905: 0xC856, - 33813 - 11905: 0xC857, - 33814 - 11905: 0xC858, - 33815 - 11905: 0xC859, - 33816 - 11905: 0xDDC1, - 33817 - 11905: 0xC85A, - 33818 - 11905: 0xC85B, - 33819 - 11905: 0xC85C, - 33820 - 11905: 0xDDC6, - 33821 - 11905: 0xC2DC, - 33822 - 11905: 0xC85D, - 33823 - 11905: 0xC85E, - 33824 - 11905: 0xC85F, - 33825 - 11905: 0xC860, - 33826 - 11905: 0xC861, - 33827 - 11905: 0xC862, - 33828 - 11905: 0xD3A9, - 33829 - 11905: 0xD3AA, - 33830 - 11905: 0xDDD3, - 33831 - 11905: 0xCFF4, - 33832 - 11905: 0xC8F8, - 33833 - 11905: 0xC863, - 33834 - 11905: 0xC864, - 33835 - 11905: 0xC865, - 33836 - 11905: 0xC866, - 33837 - 11905: 0xC867, - 33838 - 11905: 0xC868, - 33839 - 11905: 0xC869, - 33840 - 11905: 0xC86A, - 33841 - 11905: 0xDDE6, - 33842 - 11905: 0xC86B, - 33843 - 11905: 0xC86C, - 33844 - 11905: 0xC86D, - 33845 - 11905: 0xC86E, - 33846 - 11905: 0xC86F, - 33847 - 11905: 0xC870, - 33848 - 11905: 0xDDC7, - 33849 - 11905: 0xC871, - 33850 - 11905: 0xC872, - 33851 - 11905: 0xC873, - 33852 - 11905: 0xDDE0, - 33853 - 11905: 0xC2E4, - 33854 - 11905: 0xC874, - 33855 - 11905: 0xC875, - 33856 - 11905: 0xC876, - 33857 - 11905: 0xC877, - 33858 - 11905: 0xC878, - 33859 - 11905: 0xC879, - 33860 - 11905: 0xC87A, - 33861 - 11905: 0xC87B, - 33862 - 11905: 0xDDE1, - 33863 - 11905: 0xC87C, - 33864 - 11905: 0xC87D, - 33865 - 11905: 0xC87E, - 33866 - 11905: 0xC880, - 33867 - 11905: 0xC881, - 33868 - 11905: 0xC882, - 33869 - 11905: 0xC883, - 33870 - 11905: 0xC884, - 33871 - 11905: 0xC885, - 33872 - 11905: 0xC886, - 33873 - 11905: 0xDDD7, - 33874 - 11905: 0xC887, - 33875 - 11905: 0xC888, - 33876 - 11905: 0xC889, - 33877 - 11905: 0xC88A, - 33878 - 11905: 0xC88B, - 33879 - 11905: 0xD6F8, - 33880 - 11905: 0xC88C, - 33881 - 11905: 0xDDD9, - 33882 - 11905: 0xDDD8, - 33883 - 11905: 0xB8F0, - 33884 - 11905: 0xDDD6, - 33885 - 11905: 0xC88D, - 33886 - 11905: 0xC88E, - 33887 - 11905: 0xC88F, - 33888 - 11905: 0xC890, - 33889 - 11905: 0xC6CF, - 33890 - 11905: 0xC891, - 33891 - 11905: 0xB6AD, - 33892 - 11905: 0xC892, - 33893 - 11905: 0xC893, - 33894 - 11905: 0xC894, - 33895 - 11905: 0xC895, - 33896 - 11905: 0xC896, - 33897 - 11905: 0xDDE2, - 33898 - 11905: 0xC897, - 33899 - 11905: 0xBAF9, - 33900 - 11905: 0xD4E1, - 33901 - 11905: 0xDDE7, - 33902 - 11905: 0xC898, - 33903 - 11905: 0xC899, - 33904 - 11905: 0xC89A, - 33905 - 11905: 0xB4D0, - 33906 - 11905: 0xC89B, - 33907 - 11905: 0xDDDA, - 33908 - 11905: 0xC89C, - 33909 - 11905: 0xBFFB, - 33910 - 11905: 0xDDE3, - 33911 - 11905: 0xC89D, - 33912 - 11905: 0xDDDF, - 33913 - 11905: 0xC89E, - 33914 - 11905: 0xDDDD, - 33915 - 11905: 0xC89F, - 33916 - 11905: 0xC8A0, - 33917 - 11905: 0xC940, - 33918 - 11905: 0xC941, - 33919 - 11905: 0xC942, - 33920 - 11905: 0xC943, - 33921 - 11905: 0xC944, - 33922 - 11905: 0xB5D9, - 33923 - 11905: 0xC945, - 33924 - 11905: 0xC946, - 33925 - 11905: 0xC947, - 33926 - 11905: 0xC948, - 33927 - 11905: 0xDDDB, - 33928 - 11905: 0xDDDC, - 33929 - 11905: 0xDDDE, - 33930 - 11905: 0xC949, - 33931 - 11905: 0xBDAF, - 33932 - 11905: 0xDDE4, - 33933 - 11905: 0xC94A, - 33934 - 11905: 0xDDE5, - 33935 - 11905: 0xC94B, - 33936 - 11905: 0xC94C, - 33937 - 11905: 0xC94D, - 33938 - 11905: 0xC94E, - 33939 - 11905: 0xC94F, - 33940 - 11905: 0xC950, - 33941 - 11905: 0xC951, - 33942 - 11905: 0xC952, - 33943 - 11905: 0xDDF5, - 33944 - 11905: 0xC953, - 33945 - 11905: 0xC3C9, - 33946 - 11905: 0xC954, - 33947 - 11905: 0xC955, - 33948 - 11905: 0xCBE2, - 33949 - 11905: 0xC956, - 33950 - 11905: 0xC957, - 33951 - 11905: 0xC958, - 33952 - 11905: 0xC959, - 33953 - 11905: 0xDDF2, - 33954 - 11905: 0xC95A, - 33955 - 11905: 0xC95B, - 33956 - 11905: 0xC95C, - 33957 - 11905: 0xC95D, - 33958 - 11905: 0xC95E, - 33959 - 11905: 0xC95F, - 33960 - 11905: 0xC960, - 33961 - 11905: 0xC961, - 33962 - 11905: 0xC962, - 33963 - 11905: 0xC963, - 33964 - 11905: 0xC964, - 33965 - 11905: 0xC965, - 33966 - 11905: 0xC966, - 33967 - 11905: 0xD8E1, - 33968 - 11905: 0xC967, - 33969 - 11905: 0xC968, - 33970 - 11905: 0xC6D1, - 33971 - 11905: 0xC969, - 33972 - 11905: 0xDDF4, - 33973 - 11905: 0xC96A, - 33974 - 11905: 0xC96B, - 33975 - 11905: 0xC96C, - 33976 - 11905: 0xD5F4, - 33977 - 11905: 0xDDF3, - 33978 - 11905: 0xDDF0, - 33979 - 11905: 0xC96D, - 33980 - 11905: 0xC96E, - 33981 - 11905: 0xDDEC, - 33982 - 11905: 0xC96F, - 33983 - 11905: 0xDDEF, - 33984 - 11905: 0xC970, - 33985 - 11905: 0xDDE8, - 33986 - 11905: 0xC971, - 33987 - 11905: 0xC972, - 33988 - 11905: 0xD0EE, - 33989 - 11905: 0xC973, - 33990 - 11905: 0xC974, - 33991 - 11905: 0xC975, - 33992 - 11905: 0xC976, - 33993 - 11905: 0xC8D8, - 33994 - 11905: 0xDDEE, - 33995 - 11905: 0xC977, - 33996 - 11905: 0xC978, - 33997 - 11905: 0xDDE9, - 33998 - 11905: 0xC979, - 33999 - 11905: 0xC97A, - 34000 - 11905: 0xDDEA, - 34001 - 11905: 0xCBF2, - 34002 - 11905: 0xC97B, - 34003 - 11905: 0xDDED, - 34004 - 11905: 0xC97C, - 34005 - 11905: 0xC97D, - 34006 - 11905: 0xB1CD, - 34007 - 11905: 0xC97E, - 34008 - 11905: 0xC980, - 34009 - 11905: 0xC981, - 34010 - 11905: 0xC982, - 34011 - 11905: 0xC983, - 34012 - 11905: 0xC984, - 34013 - 11905: 0xC0B6, - 34014 - 11905: 0xC985, - 34015 - 11905: 0xBCBB, - 34016 - 11905: 0xDDF1, - 34017 - 11905: 0xC986, - 34018 - 11905: 0xC987, - 34019 - 11905: 0xDDF7, - 34020 - 11905: 0xC988, - 34021 - 11905: 0xDDF6, - 34022 - 11905: 0xDDEB, - 34023 - 11905: 0xC989, - 34024 - 11905: 0xC98A, - 34025 - 11905: 0xC98B, - 34026 - 11905: 0xC98C, - 34027 - 11905: 0xC98D, - 34028 - 11905: 0xC5EE, - 34029 - 11905: 0xC98E, - 34030 - 11905: 0xC98F, - 34031 - 11905: 0xC990, - 34032 - 11905: 0xDDFB, - 34033 - 11905: 0xC991, - 34034 - 11905: 0xC992, - 34035 - 11905: 0xC993, - 34036 - 11905: 0xC994, - 34037 - 11905: 0xC995, - 34038 - 11905: 0xC996, - 34039 - 11905: 0xC997, - 34040 - 11905: 0xC998, - 34041 - 11905: 0xC999, - 34042 - 11905: 0xC99A, - 34043 - 11905: 0xC99B, - 34044 - 11905: 0xDEA4, - 34045 - 11905: 0xC99C, - 34046 - 11905: 0xC99D, - 34047 - 11905: 0xDEA3, - 34048 - 11905: 0xC99E, - 34049 - 11905: 0xC99F, - 34050 - 11905: 0xC9A0, - 34051 - 11905: 0xCA40, - 34052 - 11905: 0xCA41, - 34053 - 11905: 0xCA42, - 34054 - 11905: 0xCA43, - 34055 - 11905: 0xCA44, - 34056 - 11905: 0xCA45, - 34057 - 11905: 0xCA46, - 34058 - 11905: 0xCA47, - 34059 - 11905: 0xCA48, - 34060 - 11905: 0xDDF8, - 34061 - 11905: 0xCA49, - 34062 - 11905: 0xCA4A, - 34063 - 11905: 0xCA4B, - 34064 - 11905: 0xCA4C, - 34065 - 11905: 0xC3EF, - 34066 - 11905: 0xCA4D, - 34067 - 11905: 0xC2FB, - 34068 - 11905: 0xCA4E, - 34069 - 11905: 0xCA4F, - 34070 - 11905: 0xCA50, - 34071 - 11905: 0xD5E1, - 34072 - 11905: 0xCA51, - 34073 - 11905: 0xCA52, - 34074 - 11905: 0xCEB5, - 34075 - 11905: 0xCA53, - 34076 - 11905: 0xCA54, - 34077 - 11905: 0xCA55, - 34078 - 11905: 0xCA56, - 34079 - 11905: 0xDDFD, - 34080 - 11905: 0xCA57, - 34081 - 11905: 0xB2CC, - 34082 - 11905: 0xCA58, - 34083 - 11905: 0xCA59, - 34084 - 11905: 0xCA5A, - 34085 - 11905: 0xCA5B, - 34086 - 11905: 0xCA5C, - 34087 - 11905: 0xCA5D, - 34088 - 11905: 0xCA5E, - 34089 - 11905: 0xCA5F, - 34090 - 11905: 0xCA60, - 34091 - 11905: 0xC4E8, - 34092 - 11905: 0xCADF, - 34093 - 11905: 0xCA61, - 34094 - 11905: 0xCA62, - 34095 - 11905: 0xCA63, - 34096 - 11905: 0xCA64, - 34097 - 11905: 0xCA65, - 34098 - 11905: 0xCA66, - 34099 - 11905: 0xCA67, - 34100 - 11905: 0xCA68, - 34101 - 11905: 0xCA69, - 34102 - 11905: 0xCA6A, - 34103 - 11905: 0xC7BE, - 34104 - 11905: 0xDDFA, - 34105 - 11905: 0xDDFC, - 34106 - 11905: 0xDDFE, - 34107 - 11905: 0xDEA2, - 34108 - 11905: 0xB0AA, - 34109 - 11905: 0xB1CE, - 34110 - 11905: 0xCA6B, - 34111 - 11905: 0xCA6C, - 34112 - 11905: 0xCA6D, - 34113 - 11905: 0xCA6E, - 34114 - 11905: 0xCA6F, - 34115 - 11905: 0xDEAC, - 34116 - 11905: 0xCA70, - 34117 - 11905: 0xCA71, - 34118 - 11905: 0xCA72, - 34119 - 11905: 0xCA73, - 34120 - 11905: 0xDEA6, - 34121 - 11905: 0xBDB6, - 34122 - 11905: 0xC8EF, - 34123 - 11905: 0xCA74, - 34124 - 11905: 0xCA75, - 34125 - 11905: 0xCA76, - 34126 - 11905: 0xCA77, - 34127 - 11905: 0xCA78, - 34128 - 11905: 0xCA79, - 34129 - 11905: 0xCA7A, - 34130 - 11905: 0xCA7B, - 34131 - 11905: 0xCA7C, - 34132 - 11905: 0xCA7D, - 34133 - 11905: 0xCA7E, - 34134 - 11905: 0xDEA1, - 34135 - 11905: 0xCA80, - 34136 - 11905: 0xCA81, - 34137 - 11905: 0xDEA5, - 34138 - 11905: 0xCA82, - 34139 - 11905: 0xCA83, - 34140 - 11905: 0xCA84, - 34141 - 11905: 0xCA85, - 34142 - 11905: 0xDEA9, - 34143 - 11905: 0xCA86, - 34144 - 11905: 0xCA87, - 34145 - 11905: 0xCA88, - 34146 - 11905: 0xCA89, - 34147 - 11905: 0xCA8A, - 34148 - 11905: 0xDEA8, - 34149 - 11905: 0xCA8B, - 34150 - 11905: 0xCA8C, - 34151 - 11905: 0xCA8D, - 34152 - 11905: 0xDEA7, - 34153 - 11905: 0xCA8E, - 34154 - 11905: 0xCA8F, - 34155 - 11905: 0xCA90, - 34156 - 11905: 0xCA91, - 34157 - 11905: 0xCA92, - 34158 - 11905: 0xCA93, - 34159 - 11905: 0xCA94, - 34160 - 11905: 0xCA95, - 34161 - 11905: 0xCA96, - 34162 - 11905: 0xDEAD, - 34163 - 11905: 0xCA97, - 34164 - 11905: 0xD4CC, - 34165 - 11905: 0xCA98, - 34166 - 11905: 0xCA99, - 34167 - 11905: 0xCA9A, - 34168 - 11905: 0xCA9B, - 34169 - 11905: 0xDEB3, - 34170 - 11905: 0xDEAA, - 34171 - 11905: 0xDEAE, - 34172 - 11905: 0xCA9C, - 34173 - 11905: 0xCA9D, - 34174 - 11905: 0xC0D9, - 34175 - 11905: 0xCA9E, - 34176 - 11905: 0xCA9F, - 34177 - 11905: 0xCAA0, - 34178 - 11905: 0xCB40, - 34179 - 11905: 0xCB41, - 34180 - 11905: 0xB1A1, - 34181 - 11905: 0xDEB6, - 34182 - 11905: 0xCB42, - 34183 - 11905: 0xDEB1, - 34184 - 11905: 0xCB43, - 34185 - 11905: 0xCB44, - 34186 - 11905: 0xCB45, - 34187 - 11905: 0xCB46, - 34188 - 11905: 0xCB47, - 34189 - 11905: 0xCB48, - 34190 - 11905: 0xCB49, - 34191 - 11905: 0xDEB2, - 34192 - 11905: 0xCB4A, - 34193 - 11905: 0xCB4B, - 34194 - 11905: 0xCB4C, - 34195 - 11905: 0xCB4D, - 34196 - 11905: 0xCB4E, - 34197 - 11905: 0xCB4F, - 34198 - 11905: 0xCB50, - 34199 - 11905: 0xCB51, - 34200 - 11905: 0xCB52, - 34201 - 11905: 0xCB53, - 34202 - 11905: 0xCB54, - 34203 - 11905: 0xD1A6, - 34204 - 11905: 0xDEB5, - 34205 - 11905: 0xCB55, - 34206 - 11905: 0xCB56, - 34207 - 11905: 0xCB57, - 34208 - 11905: 0xCB58, - 34209 - 11905: 0xCB59, - 34210 - 11905: 0xCB5A, - 34211 - 11905: 0xCB5B, - 34212 - 11905: 0xDEAF, - 34213 - 11905: 0xCB5C, - 34214 - 11905: 0xCB5D, - 34215 - 11905: 0xCB5E, - 34216 - 11905: 0xDEB0, - 34217 - 11905: 0xCB5F, - 34218 - 11905: 0xD0BD, - 34219 - 11905: 0xCB60, - 34220 - 11905: 0xCB61, - 34221 - 11905: 0xCB62, - 34222 - 11905: 0xDEB4, - 34223 - 11905: 0xCAED, - 34224 - 11905: 0xDEB9, - 34225 - 11905: 0xCB63, - 34226 - 11905: 0xCB64, - 34227 - 11905: 0xCB65, - 34228 - 11905: 0xCB66, - 34229 - 11905: 0xCB67, - 34230 - 11905: 0xCB68, - 34231 - 11905: 0xDEB8, - 34232 - 11905: 0xCB69, - 34233 - 11905: 0xDEB7, - 34234 - 11905: 0xCB6A, - 34235 - 11905: 0xCB6B, - 34236 - 11905: 0xCB6C, - 34237 - 11905: 0xCB6D, - 34238 - 11905: 0xCB6E, - 34239 - 11905: 0xCB6F, - 34240 - 11905: 0xCB70, - 34241 - 11905: 0xDEBB, - 34242 - 11905: 0xCB71, - 34243 - 11905: 0xCB72, - 34244 - 11905: 0xCB73, - 34245 - 11905: 0xCB74, - 34246 - 11905: 0xCB75, - 34247 - 11905: 0xCB76, - 34248 - 11905: 0xCB77, - 34249 - 11905: 0xBDE5, - 34250 - 11905: 0xCB78, - 34251 - 11905: 0xCB79, - 34252 - 11905: 0xCB7A, - 34253 - 11905: 0xCB7B, - 34254 - 11905: 0xCB7C, - 34255 - 11905: 0xB2D8, - 34256 - 11905: 0xC3EA, - 34257 - 11905: 0xCB7D, - 34258 - 11905: 0xCB7E, - 34259 - 11905: 0xDEBA, - 34260 - 11905: 0xCB80, - 34261 - 11905: 0xC5BA, - 34262 - 11905: 0xCB81, - 34263 - 11905: 0xCB82, - 34264 - 11905: 0xCB83, - 34265 - 11905: 0xCB84, - 34266 - 11905: 0xCB85, - 34267 - 11905: 0xCB86, - 34268 - 11905: 0xDEBC, - 34269 - 11905: 0xCB87, - 34270 - 11905: 0xCB88, - 34271 - 11905: 0xCB89, - 34272 - 11905: 0xCB8A, - 34273 - 11905: 0xCB8B, - 34274 - 11905: 0xCB8C, - 34275 - 11905: 0xCB8D, - 34276 - 11905: 0xCCD9, - 34277 - 11905: 0xCB8E, - 34278 - 11905: 0xCB8F, - 34279 - 11905: 0xCB90, - 34280 - 11905: 0xCB91, - 34281 - 11905: 0xB7AA, - 34282 - 11905: 0xCB92, - 34283 - 11905: 0xCB93, - 34284 - 11905: 0xCB94, - 34285 - 11905: 0xCB95, - 34286 - 11905: 0xCB96, - 34287 - 11905: 0xCB97, - 34288 - 11905: 0xCB98, - 34289 - 11905: 0xCB99, - 34290 - 11905: 0xCB9A, - 34291 - 11905: 0xCB9B, - 34292 - 11905: 0xCB9C, - 34293 - 11905: 0xCB9D, - 34294 - 11905: 0xCB9E, - 34295 - 11905: 0xCB9F, - 34296 - 11905: 0xCBA0, - 34297 - 11905: 0xCC40, - 34298 - 11905: 0xCC41, - 34299 - 11905: 0xD4E5, - 34300 - 11905: 0xCC42, - 34301 - 11905: 0xCC43, - 34302 - 11905: 0xCC44, - 34303 - 11905: 0xDEBD, - 34304 - 11905: 0xCC45, - 34305 - 11905: 0xCC46, - 34306 - 11905: 0xCC47, - 34307 - 11905: 0xCC48, - 34308 - 11905: 0xCC49, - 34309 - 11905: 0xDEBF, - 34310 - 11905: 0xCC4A, - 34311 - 11905: 0xCC4B, - 34312 - 11905: 0xCC4C, - 34313 - 11905: 0xCC4D, - 34314 - 11905: 0xCC4E, - 34315 - 11905: 0xCC4F, - 34316 - 11905: 0xCC50, - 34317 - 11905: 0xCC51, - 34318 - 11905: 0xCC52, - 34319 - 11905: 0xCC53, - 34320 - 11905: 0xCC54, - 34321 - 11905: 0xC4A2, - 34322 - 11905: 0xCC55, - 34323 - 11905: 0xCC56, - 34324 - 11905: 0xCC57, - 34325 - 11905: 0xCC58, - 34326 - 11905: 0xDEC1, - 34327 - 11905: 0xCC59, - 34328 - 11905: 0xCC5A, - 34329 - 11905: 0xCC5B, - 34330 - 11905: 0xCC5C, - 34331 - 11905: 0xCC5D, - 34332 - 11905: 0xCC5E, - 34333 - 11905: 0xCC5F, - 34334 - 11905: 0xCC60, - 34335 - 11905: 0xCC61, - 34336 - 11905: 0xCC62, - 34337 - 11905: 0xCC63, - 34338 - 11905: 0xCC64, - 34339 - 11905: 0xCC65, - 34340 - 11905: 0xCC66, - 34341 - 11905: 0xCC67, - 34342 - 11905: 0xCC68, - 34343 - 11905: 0xDEBE, - 34344 - 11905: 0xCC69, - 34345 - 11905: 0xDEC0, - 34346 - 11905: 0xCC6A, - 34347 - 11905: 0xCC6B, - 34348 - 11905: 0xCC6C, - 34349 - 11905: 0xCC6D, - 34350 - 11905: 0xCC6E, - 34351 - 11905: 0xCC6F, - 34352 - 11905: 0xCC70, - 34353 - 11905: 0xCC71, - 34354 - 11905: 0xCC72, - 34355 - 11905: 0xCC73, - 34356 - 11905: 0xCC74, - 34357 - 11905: 0xCC75, - 34358 - 11905: 0xCC76, - 34359 - 11905: 0xCC77, - 34360 - 11905: 0xD5BA, - 34361 - 11905: 0xCC78, - 34362 - 11905: 0xCC79, - 34363 - 11905: 0xCC7A, - 34364 - 11905: 0xDEC2, - 34365 - 11905: 0xCC7B, - 34366 - 11905: 0xCC7C, - 34367 - 11905: 0xCC7D, - 34368 - 11905: 0xCC7E, - 34369 - 11905: 0xCC80, - 34370 - 11905: 0xCC81, - 34371 - 11905: 0xCC82, - 34372 - 11905: 0xCC83, - 34373 - 11905: 0xCC84, - 34374 - 11905: 0xCC85, - 34375 - 11905: 0xCC86, - 34376 - 11905: 0xCC87, - 34377 - 11905: 0xCC88, - 34378 - 11905: 0xCC89, - 34379 - 11905: 0xCC8A, - 34380 - 11905: 0xCC8B, - 34381 - 11905: 0xF2AE, - 34382 - 11905: 0xBBA2, - 34383 - 11905: 0xC2B2, - 34384 - 11905: 0xC5B0, - 34385 - 11905: 0xC2C7, - 34386 - 11905: 0xCC8C, - 34387 - 11905: 0xCC8D, - 34388 - 11905: 0xF2AF, - 34389 - 11905: 0xCC8E, - 34390 - 11905: 0xCC8F, - 34391 - 11905: 0xCC90, - 34392 - 11905: 0xCC91, - 34393 - 11905: 0xCC92, - 34394 - 11905: 0xD0E9, - 34395 - 11905: 0xCC93, - 34396 - 11905: 0xCC94, - 34397 - 11905: 0xCC95, - 34398 - 11905: 0xD3DD, - 34399 - 11905: 0xCC96, - 34400 - 11905: 0xCC97, - 34401 - 11905: 0xCC98, - 34402 - 11905: 0xEBBD, - 34403 - 11905: 0xCC99, - 34404 - 11905: 0xCC9A, - 34405 - 11905: 0xCC9B, - 34406 - 11905: 0xCC9C, - 34407 - 11905: 0xCC9D, - 34408 - 11905: 0xCC9E, - 34409 - 11905: 0xCC9F, - 34410 - 11905: 0xCCA0, - 34411 - 11905: 0xB3E6, - 34412 - 11905: 0xF2B0, - 34413 - 11905: 0xCD40, - 34414 - 11905: 0xF2B1, - 34415 - 11905: 0xCD41, - 34416 - 11905: 0xCD42, - 34417 - 11905: 0xCAAD, - 34418 - 11905: 0xCD43, - 34419 - 11905: 0xCD44, - 34420 - 11905: 0xCD45, - 34421 - 11905: 0xCD46, - 34422 - 11905: 0xCD47, - 34423 - 11905: 0xCD48, - 34424 - 11905: 0xCD49, - 34425 - 11905: 0xBAE7, - 34426 - 11905: 0xF2B3, - 34427 - 11905: 0xF2B5, - 34428 - 11905: 0xF2B4, - 34429 - 11905: 0xCBE4, - 34430 - 11905: 0xCFBA, - 34431 - 11905: 0xF2B2, - 34432 - 11905: 0xCAB4, - 34433 - 11905: 0xD2CF, - 34434 - 11905: 0xC2EC, - 34435 - 11905: 0xCD4A, - 34436 - 11905: 0xCD4B, - 34437 - 11905: 0xCD4C, - 34438 - 11905: 0xCD4D, - 34439 - 11905: 0xCD4E, - 34440 - 11905: 0xCD4F, - 34441 - 11905: 0xCD50, - 34442 - 11905: 0xCEC3, - 34443 - 11905: 0xF2B8, - 34444 - 11905: 0xB0F6, - 34445 - 11905: 0xF2B7, - 34446 - 11905: 0xCD51, - 34447 - 11905: 0xCD52, - 34448 - 11905: 0xCD53, - 34449 - 11905: 0xCD54, - 34450 - 11905: 0xCD55, - 34451 - 11905: 0xF2BE, - 34452 - 11905: 0xCD56, - 34453 - 11905: 0xB2CF, - 34454 - 11905: 0xCD57, - 34455 - 11905: 0xCD58, - 34456 - 11905: 0xCD59, - 34457 - 11905: 0xCD5A, - 34458 - 11905: 0xCD5B, - 34459 - 11905: 0xCD5C, - 34460 - 11905: 0xD1C1, - 34461 - 11905: 0xF2BA, - 34462 - 11905: 0xCD5D, - 34463 - 11905: 0xCD5E, - 34464 - 11905: 0xCD5F, - 34465 - 11905: 0xCD60, - 34466 - 11905: 0xCD61, - 34467 - 11905: 0xF2BC, - 34468 - 11905: 0xD4E9, - 34469 - 11905: 0xCD62, - 34470 - 11905: 0xCD63, - 34471 - 11905: 0xF2BB, - 34472 - 11905: 0xF2B6, - 34473 - 11905: 0xF2BF, - 34474 - 11905: 0xF2BD, - 34475 - 11905: 0xCD64, - 34476 - 11905: 0xF2B9, - 34477 - 11905: 0xCD65, - 34478 - 11905: 0xCD66, - 34479 - 11905: 0xF2C7, - 34480 - 11905: 0xF2C4, - 34481 - 11905: 0xF2C6, - 34482 - 11905: 0xCD67, - 34483 - 11905: 0xCD68, - 34484 - 11905: 0xF2CA, - 34485 - 11905: 0xF2C2, - 34486 - 11905: 0xF2C0, - 34487 - 11905: 0xCD69, - 34488 - 11905: 0xCD6A, - 34489 - 11905: 0xCD6B, - 34490 - 11905: 0xF2C5, - 34491 - 11905: 0xCD6C, - 34492 - 11905: 0xCD6D, - 34493 - 11905: 0xCD6E, - 34494 - 11905: 0xCD6F, - 34495 - 11905: 0xCD70, - 34496 - 11905: 0xD6FB, - 34497 - 11905: 0xCD71, - 34498 - 11905: 0xCD72, - 34499 - 11905: 0xCD73, - 34500 - 11905: 0xF2C1, - 34501 - 11905: 0xCD74, - 34502 - 11905: 0xC7F9, - 34503 - 11905: 0xC9DF, - 34504 - 11905: 0xCD75, - 34505 - 11905: 0xF2C8, - 34506 - 11905: 0xB9C6, - 34507 - 11905: 0xB5B0, - 34508 - 11905: 0xCD76, - 34509 - 11905: 0xCD77, - 34510 - 11905: 0xF2C3, - 34511 - 11905: 0xF2C9, - 34512 - 11905: 0xF2D0, - 34513 - 11905: 0xF2D6, - 34514 - 11905: 0xCD78, - 34515 - 11905: 0xCD79, - 34516 - 11905: 0xBBD7, - 34517 - 11905: 0xCD7A, - 34518 - 11905: 0xCD7B, - 34519 - 11905: 0xCD7C, - 34520 - 11905: 0xF2D5, - 34521 - 11905: 0xCDDC, - 34522 - 11905: 0xCD7D, - 34523 - 11905: 0xD6EB, - 34524 - 11905: 0xCD7E, - 34525 - 11905: 0xCD80, - 34526 - 11905: 0xF2D2, - 34527 - 11905: 0xF2D4, - 34528 - 11905: 0xCD81, - 34529 - 11905: 0xCD82, - 34530 - 11905: 0xCD83, - 34531 - 11905: 0xCD84, - 34532 - 11905: 0xB8F2, - 34533 - 11905: 0xCD85, - 34534 - 11905: 0xCD86, - 34535 - 11905: 0xCD87, - 34536 - 11905: 0xCD88, - 34537 - 11905: 0xF2CB, - 34538 - 11905: 0xCD89, - 34539 - 11905: 0xCD8A, - 34540 - 11905: 0xCD8B, - 34541 - 11905: 0xF2CE, - 34542 - 11905: 0xC2F9, - 34543 - 11905: 0xCD8C, - 34544 - 11905: 0xD5DD, - 34545 - 11905: 0xF2CC, - 34546 - 11905: 0xF2CD, - 34547 - 11905: 0xF2CF, - 34548 - 11905: 0xF2D3, - 34549 - 11905: 0xCD8D, - 34550 - 11905: 0xCD8E, - 34551 - 11905: 0xCD8F, - 34552 - 11905: 0xF2D9, - 34553 - 11905: 0xD3BC, - 34554 - 11905: 0xCD90, - 34555 - 11905: 0xCD91, - 34556 - 11905: 0xCD92, - 34557 - 11905: 0xCD93, - 34558 - 11905: 0xB6EA, - 34559 - 11905: 0xCD94, - 34560 - 11905: 0xCAF1, - 34561 - 11905: 0xCD95, - 34562 - 11905: 0xB7E4, - 34563 - 11905: 0xF2D7, - 34564 - 11905: 0xCD96, - 34565 - 11905: 0xCD97, - 34566 - 11905: 0xCD98, - 34567 - 11905: 0xF2D8, - 34568 - 11905: 0xF2DA, - 34569 - 11905: 0xF2DD, - 34570 - 11905: 0xF2DB, - 34571 - 11905: 0xCD99, - 34572 - 11905: 0xCD9A, - 34573 - 11905: 0xF2DC, - 34574 - 11905: 0xCD9B, - 34575 - 11905: 0xCD9C, - 34576 - 11905: 0xCD9D, - 34577 - 11905: 0xCD9E, - 34578 - 11905: 0xD1D1, - 34579 - 11905: 0xF2D1, - 34580 - 11905: 0xCD9F, - 34581 - 11905: 0xCDC9, - 34582 - 11905: 0xCDA0, - 34583 - 11905: 0xCECF, - 34584 - 11905: 0xD6A9, - 34585 - 11905: 0xCE40, - 34586 - 11905: 0xF2E3, - 34587 - 11905: 0xCE41, - 34588 - 11905: 0xC3DB, - 34589 - 11905: 0xCE42, - 34590 - 11905: 0xF2E0, - 34591 - 11905: 0xCE43, - 34592 - 11905: 0xCE44, - 34593 - 11905: 0xC0AF, - 34594 - 11905: 0xF2EC, - 34595 - 11905: 0xF2DE, - 34596 - 11905: 0xCE45, - 34597 - 11905: 0xF2E1, - 34598 - 11905: 0xCE46, - 34599 - 11905: 0xCE47, - 34600 - 11905: 0xCE48, - 34601 - 11905: 0xF2E8, - 34602 - 11905: 0xCE49, - 34603 - 11905: 0xCE4A, - 34604 - 11905: 0xCE4B, - 34605 - 11905: 0xCE4C, - 34606 - 11905: 0xF2E2, - 34607 - 11905: 0xCE4D, - 34608 - 11905: 0xCE4E, - 34609 - 11905: 0xF2E7, - 34610 - 11905: 0xCE4F, - 34611 - 11905: 0xCE50, - 34612 - 11905: 0xF2E6, - 34613 - 11905: 0xCE51, - 34614 - 11905: 0xCE52, - 34615 - 11905: 0xF2E9, - 34616 - 11905: 0xCE53, - 34617 - 11905: 0xCE54, - 34618 - 11905: 0xCE55, - 34619 - 11905: 0xF2DF, - 34620 - 11905: 0xCE56, - 34621 - 11905: 0xCE57, - 34622 - 11905: 0xF2E4, - 34623 - 11905: 0xF2EA, - 34624 - 11905: 0xCE58, - 34625 - 11905: 0xCE59, - 34626 - 11905: 0xCE5A, - 34627 - 11905: 0xCE5B, - 34628 - 11905: 0xCE5C, - 34629 - 11905: 0xCE5D, - 34630 - 11905: 0xCE5E, - 34631 - 11905: 0xD3AC, - 34632 - 11905: 0xF2E5, - 34633 - 11905: 0xB2F5, - 34634 - 11905: 0xCE5F, - 34635 - 11905: 0xCE60, - 34636 - 11905: 0xF2F2, - 34637 - 11905: 0xCE61, - 34638 - 11905: 0xD0AB, - 34639 - 11905: 0xCE62, - 34640 - 11905: 0xCE63, - 34641 - 11905: 0xCE64, - 34642 - 11905: 0xCE65, - 34643 - 11905: 0xF2F5, - 34644 - 11905: 0xCE66, - 34645 - 11905: 0xCE67, - 34646 - 11905: 0xCE68, - 34647 - 11905: 0xBBC8, - 34648 - 11905: 0xCE69, - 34649 - 11905: 0xF2F9, - 34650 - 11905: 0xCE6A, - 34651 - 11905: 0xCE6B, - 34652 - 11905: 0xCE6C, - 34653 - 11905: 0xCE6D, - 34654 - 11905: 0xCE6E, - 34655 - 11905: 0xCE6F, - 34656 - 11905: 0xF2F0, - 34657 - 11905: 0xCE70, - 34658 - 11905: 0xCE71, - 34659 - 11905: 0xF2F6, - 34660 - 11905: 0xF2F8, - 34661 - 11905: 0xF2FA, - 34662 - 11905: 0xCE72, - 34663 - 11905: 0xCE73, - 34664 - 11905: 0xCE74, - 34665 - 11905: 0xCE75, - 34666 - 11905: 0xCE76, - 34667 - 11905: 0xCE77, - 34668 - 11905: 0xCE78, - 34669 - 11905: 0xCE79, - 34670 - 11905: 0xF2F3, - 34671 - 11905: 0xCE7A, - 34672 - 11905: 0xF2F1, - 34673 - 11905: 0xCE7B, - 34674 - 11905: 0xCE7C, - 34675 - 11905: 0xCE7D, - 34676 - 11905: 0xBAFB, - 34677 - 11905: 0xCE7E, - 34678 - 11905: 0xB5FB, - 34679 - 11905: 0xCE80, - 34680 - 11905: 0xCE81, - 34681 - 11905: 0xCE82, - 34682 - 11905: 0xCE83, - 34683 - 11905: 0xF2EF, - 34684 - 11905: 0xF2F7, - 34685 - 11905: 0xF2ED, - 34686 - 11905: 0xF2EE, - 34687 - 11905: 0xCE84, - 34688 - 11905: 0xCE85, - 34689 - 11905: 0xCE86, - 34690 - 11905: 0xF2EB, - 34691 - 11905: 0xF3A6, - 34692 - 11905: 0xCE87, - 34693 - 11905: 0xF3A3, - 34694 - 11905: 0xCE88, - 34695 - 11905: 0xCE89, - 34696 - 11905: 0xF3A2, - 34697 - 11905: 0xCE8A, - 34698 - 11905: 0xCE8B, - 34699 - 11905: 0xF2F4, - 34700 - 11905: 0xCE8C, - 34701 - 11905: 0xC8DA, - 34702 - 11905: 0xCE8D, - 34703 - 11905: 0xCE8E, - 34704 - 11905: 0xCE8F, - 34705 - 11905: 0xCE90, - 34706 - 11905: 0xCE91, - 34707 - 11905: 0xF2FB, - 34708 - 11905: 0xCE92, - 34709 - 11905: 0xCE93, - 34710 - 11905: 0xCE94, - 34711 - 11905: 0xF3A5, - 34712 - 11905: 0xCE95, - 34713 - 11905: 0xCE96, - 34714 - 11905: 0xCE97, - 34715 - 11905: 0xCE98, - 34716 - 11905: 0xCE99, - 34717 - 11905: 0xCE9A, - 34718 - 11905: 0xCE9B, - 34719 - 11905: 0xC3F8, - 34720 - 11905: 0xCE9C, - 34721 - 11905: 0xCE9D, - 34722 - 11905: 0xCE9E, - 34723 - 11905: 0xCE9F, - 34724 - 11905: 0xCEA0, - 34725 - 11905: 0xCF40, - 34726 - 11905: 0xCF41, - 34727 - 11905: 0xCF42, - 34728 - 11905: 0xF2FD, - 34729 - 11905: 0xCF43, - 34730 - 11905: 0xCF44, - 34731 - 11905: 0xF3A7, - 34732 - 11905: 0xF3A9, - 34733 - 11905: 0xF3A4, - 34734 - 11905: 0xCF45, - 34735 - 11905: 0xF2FC, - 34736 - 11905: 0xCF46, - 34737 - 11905: 0xCF47, - 34738 - 11905: 0xCF48, - 34739 - 11905: 0xF3AB, - 34740 - 11905: 0xCF49, - 34741 - 11905: 0xF3AA, - 34742 - 11905: 0xCF4A, - 34743 - 11905: 0xCF4B, - 34744 - 11905: 0xCF4C, - 34745 - 11905: 0xCF4D, - 34746 - 11905: 0xC2DD, - 34747 - 11905: 0xCF4E, - 34748 - 11905: 0xCF4F, - 34749 - 11905: 0xF3AE, - 34750 - 11905: 0xCF50, - 34751 - 11905: 0xCF51, - 34752 - 11905: 0xF3B0, - 34753 - 11905: 0xCF52, - 34754 - 11905: 0xCF53, - 34755 - 11905: 0xCF54, - 34756 - 11905: 0xCF55, - 34757 - 11905: 0xCF56, - 34758 - 11905: 0xF3A1, - 34759 - 11905: 0xCF57, - 34760 - 11905: 0xCF58, - 34761 - 11905: 0xCF59, - 34762 - 11905: 0xF3B1, - 34763 - 11905: 0xF3AC, - 34764 - 11905: 0xCF5A, - 34765 - 11905: 0xCF5B, - 34766 - 11905: 0xCF5C, - 34767 - 11905: 0xCF5D, - 34768 - 11905: 0xCF5E, - 34769 - 11905: 0xF3AF, - 34770 - 11905: 0xF2FE, - 34771 - 11905: 0xF3AD, - 34772 - 11905: 0xCF5F, - 34773 - 11905: 0xCF60, - 34774 - 11905: 0xCF61, - 34775 - 11905: 0xCF62, - 34776 - 11905: 0xCF63, - 34777 - 11905: 0xCF64, - 34778 - 11905: 0xCF65, - 34779 - 11905: 0xF3B2, - 34780 - 11905: 0xCF66, - 34781 - 11905: 0xCF67, - 34782 - 11905: 0xCF68, - 34783 - 11905: 0xCF69, - 34784 - 11905: 0xF3B4, - 34785 - 11905: 0xCF6A, - 34786 - 11905: 0xCF6B, - 34787 - 11905: 0xCF6C, - 34788 - 11905: 0xCF6D, - 34789 - 11905: 0xF3A8, - 34790 - 11905: 0xCF6E, - 34791 - 11905: 0xCF6F, - 34792 - 11905: 0xCF70, - 34793 - 11905: 0xCF71, - 34794 - 11905: 0xF3B3, - 34795 - 11905: 0xCF72, - 34796 - 11905: 0xCF73, - 34797 - 11905: 0xCF74, - 34798 - 11905: 0xF3B5, - 34799 - 11905: 0xCF75, - 34800 - 11905: 0xCF76, - 34801 - 11905: 0xCF77, - 34802 - 11905: 0xCF78, - 34803 - 11905: 0xCF79, - 34804 - 11905: 0xCF7A, - 34805 - 11905: 0xCF7B, - 34806 - 11905: 0xCF7C, - 34807 - 11905: 0xCF7D, - 34808 - 11905: 0xCF7E, - 34809 - 11905: 0xD0B7, - 34810 - 11905: 0xCF80, - 34811 - 11905: 0xCF81, - 34812 - 11905: 0xCF82, - 34813 - 11905: 0xCF83, - 34814 - 11905: 0xF3B8, - 34815 - 11905: 0xCF84, - 34816 - 11905: 0xCF85, - 34817 - 11905: 0xCF86, - 34818 - 11905: 0xCF87, - 34819 - 11905: 0xD9F9, - 34820 - 11905: 0xCF88, - 34821 - 11905: 0xCF89, - 34822 - 11905: 0xCF8A, - 34823 - 11905: 0xCF8B, - 34824 - 11905: 0xCF8C, - 34825 - 11905: 0xCF8D, - 34826 - 11905: 0xF3B9, - 34827 - 11905: 0xCF8E, - 34828 - 11905: 0xCF8F, - 34829 - 11905: 0xCF90, - 34830 - 11905: 0xCF91, - 34831 - 11905: 0xCF92, - 34832 - 11905: 0xCF93, - 34833 - 11905: 0xCF94, - 34834 - 11905: 0xCF95, - 34835 - 11905: 0xF3B7, - 34836 - 11905: 0xCF96, - 34837 - 11905: 0xC8E4, - 34838 - 11905: 0xF3B6, - 34839 - 11905: 0xCF97, - 34840 - 11905: 0xCF98, - 34841 - 11905: 0xCF99, - 34842 - 11905: 0xCF9A, - 34843 - 11905: 0xF3BA, - 34844 - 11905: 0xCF9B, - 34845 - 11905: 0xCF9C, - 34846 - 11905: 0xCF9D, - 34847 - 11905: 0xCF9E, - 34848 - 11905: 0xCF9F, - 34849 - 11905: 0xF3BB, - 34850 - 11905: 0xB4C0, - 34851 - 11905: 0xCFA0, - 34852 - 11905: 0xD040, - 34853 - 11905: 0xD041, - 34854 - 11905: 0xD042, - 34855 - 11905: 0xD043, - 34856 - 11905: 0xD044, - 34857 - 11905: 0xD045, - 34858 - 11905: 0xD046, - 34859 - 11905: 0xD047, - 34860 - 11905: 0xD048, - 34861 - 11905: 0xD049, - 34862 - 11905: 0xD04A, - 34863 - 11905: 0xD04B, - 34864 - 11905: 0xD04C, - 34865 - 11905: 0xD04D, - 34866 - 11905: 0xEEC3, - 34867 - 11905: 0xD04E, - 34868 - 11905: 0xD04F, - 34869 - 11905: 0xD050, - 34870 - 11905: 0xD051, - 34871 - 11905: 0xD052, - 34872 - 11905: 0xD053, - 34873 - 11905: 0xF3BC, - 34874 - 11905: 0xD054, - 34875 - 11905: 0xD055, - 34876 - 11905: 0xF3BD, - 34877 - 11905: 0xD056, - 34878 - 11905: 0xD057, - 34879 - 11905: 0xD058, - 34880 - 11905: 0xD1AA, - 34881 - 11905: 0xD059, - 34882 - 11905: 0xD05A, - 34883 - 11905: 0xD05B, - 34884 - 11905: 0xF4AC, - 34885 - 11905: 0xD0C6, - 34886 - 11905: 0xD05C, - 34887 - 11905: 0xD05D, - 34888 - 11905: 0xD05E, - 34889 - 11905: 0xD05F, - 34890 - 11905: 0xD060, - 34891 - 11905: 0xD061, - 34892 - 11905: 0xD0D0, - 34893 - 11905: 0xD1DC, - 34894 - 11905: 0xD062, - 34895 - 11905: 0xD063, - 34896 - 11905: 0xD064, - 34897 - 11905: 0xD065, - 34898 - 11905: 0xD066, - 34899 - 11905: 0xD067, - 34900 - 11905: 0xCFCE, - 34901 - 11905: 0xD068, - 34902 - 11905: 0xD069, - 34903 - 11905: 0xBDD6, - 34904 - 11905: 0xD06A, - 34905 - 11905: 0xD1C3, - 34906 - 11905: 0xD06B, - 34907 - 11905: 0xD06C, - 34908 - 11905: 0xD06D, - 34909 - 11905: 0xD06E, - 34910 - 11905: 0xD06F, - 34911 - 11905: 0xD070, - 34912 - 11905: 0xD071, - 34913 - 11905: 0xBAE2, - 34914 - 11905: 0xE1E9, - 34915 - 11905: 0xD2C2, - 34916 - 11905: 0xF1C2, - 34917 - 11905: 0xB2B9, - 34918 - 11905: 0xD072, - 34919 - 11905: 0xD073, - 34920 - 11905: 0xB1ED, - 34921 - 11905: 0xF1C3, - 34922 - 11905: 0xD074, - 34923 - 11905: 0xC9C0, - 34924 - 11905: 0xB3C4, - 34925 - 11905: 0xD075, - 34926 - 11905: 0xD9F2, - 34927 - 11905: 0xD076, - 34928 - 11905: 0xCBA5, - 34929 - 11905: 0xD077, - 34930 - 11905: 0xF1C4, - 34931 - 11905: 0xD078, - 34932 - 11905: 0xD079, - 34933 - 11905: 0xD07A, - 34934 - 11905: 0xD07B, - 34935 - 11905: 0xD6D4, - 34936 - 11905: 0xD07C, - 34937 - 11905: 0xD07D, - 34938 - 11905: 0xD07E, - 34939 - 11905: 0xD080, - 34940 - 11905: 0xD081, - 34941 - 11905: 0xF1C5, - 34942 - 11905: 0xF4C0, - 34943 - 11905: 0xF1C6, - 34944 - 11905: 0xD082, - 34945 - 11905: 0xD4AC, - 34946 - 11905: 0xF1C7, - 34947 - 11905: 0xD083, - 34948 - 11905: 0xB0C0, - 34949 - 11905: 0xF4C1, - 34950 - 11905: 0xD084, - 34951 - 11905: 0xD085, - 34952 - 11905: 0xF4C2, - 34953 - 11905: 0xD086, - 34954 - 11905: 0xD087, - 34955 - 11905: 0xB4FC, - 34956 - 11905: 0xD088, - 34957 - 11905: 0xC5DB, - 34958 - 11905: 0xD089, - 34959 - 11905: 0xD08A, - 34960 - 11905: 0xD08B, - 34961 - 11905: 0xD08C, - 34962 - 11905: 0xCCBB, - 34963 - 11905: 0xD08D, - 34964 - 11905: 0xD08E, - 34965 - 11905: 0xD08F, - 34966 - 11905: 0xD0E4, - 34967 - 11905: 0xD090, - 34968 - 11905: 0xD091, - 34969 - 11905: 0xD092, - 34970 - 11905: 0xD093, - 34971 - 11905: 0xD094, - 34972 - 11905: 0xCDE0, - 34973 - 11905: 0xD095, - 34974 - 11905: 0xD096, - 34975 - 11905: 0xD097, - 34976 - 11905: 0xD098, - 34977 - 11905: 0xD099, - 34978 - 11905: 0xF1C8, - 34979 - 11905: 0xD09A, - 34980 - 11905: 0xD9F3, - 34981 - 11905: 0xD09B, - 34982 - 11905: 0xD09C, - 34983 - 11905: 0xD09D, - 34984 - 11905: 0xD09E, - 34985 - 11905: 0xD09F, - 34986 - 11905: 0xD0A0, - 34987 - 11905: 0xB1BB, - 34988 - 11905: 0xD140, - 34989 - 11905: 0xCFAE, - 34990 - 11905: 0xD141, - 34991 - 11905: 0xD142, - 34992 - 11905: 0xD143, - 34993 - 11905: 0xB8A4, - 34994 - 11905: 0xD144, - 34995 - 11905: 0xD145, - 34996 - 11905: 0xD146, - 34997 - 11905: 0xD147, - 34998 - 11905: 0xD148, - 34999 - 11905: 0xF1CA, - 35000 - 11905: 0xD149, - 35001 - 11905: 0xD14A, - 35002 - 11905: 0xD14B, - 35003 - 11905: 0xD14C, - 35004 - 11905: 0xF1CB, - 35005 - 11905: 0xD14D, - 35006 - 11905: 0xD14E, - 35007 - 11905: 0xD14F, - 35008 - 11905: 0xD150, - 35009 - 11905: 0xB2C3, - 35010 - 11905: 0xC1D1, - 35011 - 11905: 0xD151, - 35012 - 11905: 0xD152, - 35013 - 11905: 0xD7B0, - 35014 - 11905: 0xF1C9, - 35015 - 11905: 0xD153, - 35016 - 11905: 0xD154, - 35017 - 11905: 0xF1CC, - 35018 - 11905: 0xD155, - 35019 - 11905: 0xD156, - 35020 - 11905: 0xD157, - 35021 - 11905: 0xD158, - 35022 - 11905: 0xF1CE, - 35023 - 11905: 0xD159, - 35024 - 11905: 0xD15A, - 35025 - 11905: 0xD15B, - 35026 - 11905: 0xD9F6, - 35027 - 11905: 0xD15C, - 35028 - 11905: 0xD2E1, - 35029 - 11905: 0xD4A3, - 35030 - 11905: 0xD15D, - 35031 - 11905: 0xD15E, - 35032 - 11905: 0xF4C3, - 35033 - 11905: 0xC8B9, - 35034 - 11905: 0xD15F, - 35035 - 11905: 0xD160, - 35036 - 11905: 0xD161, - 35037 - 11905: 0xD162, - 35038 - 11905: 0xD163, - 35039 - 11905: 0xF4C4, - 35040 - 11905: 0xD164, - 35041 - 11905: 0xD165, - 35042 - 11905: 0xF1CD, - 35043 - 11905: 0xF1CF, - 35044 - 11905: 0xBFE3, - 35045 - 11905: 0xF1D0, - 35046 - 11905: 0xD166, - 35047 - 11905: 0xD167, - 35048 - 11905: 0xF1D4, - 35049 - 11905: 0xD168, - 35050 - 11905: 0xD169, - 35051 - 11905: 0xD16A, - 35052 - 11905: 0xD16B, - 35053 - 11905: 0xD16C, - 35054 - 11905: 0xD16D, - 35055 - 11905: 0xD16E, - 35056 - 11905: 0xF1D6, - 35057 - 11905: 0xF1D1, - 35058 - 11905: 0xD16F, - 35059 - 11905: 0xC9D1, - 35060 - 11905: 0xC5E1, - 35061 - 11905: 0xD170, - 35062 - 11905: 0xD171, - 35063 - 11905: 0xD172, - 35064 - 11905: 0xC2E3, - 35065 - 11905: 0xB9FC, - 35066 - 11905: 0xD173, - 35067 - 11905: 0xD174, - 35068 - 11905: 0xF1D3, - 35069 - 11905: 0xD175, - 35070 - 11905: 0xF1D5, - 35071 - 11905: 0xD176, - 35072 - 11905: 0xD177, - 35073 - 11905: 0xD178, - 35074 - 11905: 0xB9D3, - 35075 - 11905: 0xD179, - 35076 - 11905: 0xD17A, - 35077 - 11905: 0xD17B, - 35078 - 11905: 0xD17C, - 35079 - 11905: 0xD17D, - 35080 - 11905: 0xD17E, - 35081 - 11905: 0xD180, - 35082 - 11905: 0xF1DB, - 35083 - 11905: 0xD181, - 35084 - 11905: 0xD182, - 35085 - 11905: 0xD183, - 35086 - 11905: 0xD184, - 35087 - 11905: 0xD185, - 35088 - 11905: 0xBAD6, - 35089 - 11905: 0xD186, - 35090 - 11905: 0xB0FD, - 35091 - 11905: 0xF1D9, - 35092 - 11905: 0xD187, - 35093 - 11905: 0xD188, - 35094 - 11905: 0xD189, - 35095 - 11905: 0xD18A, - 35096 - 11905: 0xD18B, - 35097 - 11905: 0xF1D8, - 35098 - 11905: 0xF1D2, - 35099 - 11905: 0xF1DA, - 35100 - 11905: 0xD18C, - 35101 - 11905: 0xD18D, - 35102 - 11905: 0xD18E, - 35103 - 11905: 0xD18F, - 35104 - 11905: 0xD190, - 35105 - 11905: 0xF1D7, - 35106 - 11905: 0xD191, - 35107 - 11905: 0xD192, - 35108 - 11905: 0xD193, - 35109 - 11905: 0xC8EC, - 35110 - 11905: 0xD194, - 35111 - 11905: 0xD195, - 35112 - 11905: 0xD196, - 35113 - 11905: 0xD197, - 35114 - 11905: 0xCDCA, - 35115 - 11905: 0xF1DD, - 35116 - 11905: 0xD198, - 35117 - 11905: 0xD199, - 35118 - 11905: 0xD19A, - 35119 - 11905: 0xD19B, - 35120 - 11905: 0xE5BD, - 35121 - 11905: 0xD19C, - 35122 - 11905: 0xD19D, - 35123 - 11905: 0xD19E, - 35124 - 11905: 0xF1DC, - 35125 - 11905: 0xD19F, - 35126 - 11905: 0xF1DE, - 35127 - 11905: 0xD1A0, - 35128 - 11905: 0xD240, - 35129 - 11905: 0xD241, - 35130 - 11905: 0xD242, - 35131 - 11905: 0xD243, - 35132 - 11905: 0xD244, - 35133 - 11905: 0xD245, - 35134 - 11905: 0xD246, - 35135 - 11905: 0xD247, - 35136 - 11905: 0xD248, - 35137 - 11905: 0xF1DF, - 35138 - 11905: 0xD249, - 35139 - 11905: 0xD24A, - 35140 - 11905: 0xCFE5, - 35141 - 11905: 0xD24B, - 35142 - 11905: 0xD24C, - 35143 - 11905: 0xD24D, - 35144 - 11905: 0xD24E, - 35145 - 11905: 0xD24F, - 35146 - 11905: 0xD250, - 35147 - 11905: 0xD251, - 35148 - 11905: 0xD252, - 35149 - 11905: 0xD253, - 35150 - 11905: 0xD254, - 35151 - 11905: 0xD255, - 35152 - 11905: 0xD256, - 35153 - 11905: 0xD257, - 35154 - 11905: 0xD258, - 35155 - 11905: 0xD259, - 35156 - 11905: 0xD25A, - 35157 - 11905: 0xD25B, - 35158 - 11905: 0xD25C, - 35159 - 11905: 0xD25D, - 35160 - 11905: 0xD25E, - 35161 - 11905: 0xD25F, - 35162 - 11905: 0xD260, - 35163 - 11905: 0xD261, - 35164 - 11905: 0xD262, - 35165 - 11905: 0xD263, - 35166 - 11905: 0xF4C5, - 35167 - 11905: 0xBDF3, - 35168 - 11905: 0xD264, - 35169 - 11905: 0xD265, - 35170 - 11905: 0xD266, - 35171 - 11905: 0xD267, - 35172 - 11905: 0xD268, - 35173 - 11905: 0xD269, - 35174 - 11905: 0xF1E0, - 35175 - 11905: 0xD26A, - 35176 - 11905: 0xD26B, - 35177 - 11905: 0xD26C, - 35178 - 11905: 0xD26D, - 35179 - 11905: 0xD26E, - 35180 - 11905: 0xD26F, - 35181 - 11905: 0xD270, - 35182 - 11905: 0xD271, - 35183 - 11905: 0xD272, - 35184 - 11905: 0xD273, - 35185 - 11905: 0xD274, - 35186 - 11905: 0xD275, - 35187 - 11905: 0xD276, - 35188 - 11905: 0xD277, - 35189 - 11905: 0xD278, - 35190 - 11905: 0xD279, - 35191 - 11905: 0xD27A, - 35192 - 11905: 0xD27B, - 35193 - 11905: 0xD27C, - 35194 - 11905: 0xD27D, - 35195 - 11905: 0xF1E1, - 35196 - 11905: 0xD27E, - 35197 - 11905: 0xD280, - 35198 - 11905: 0xD281, - 35199 - 11905: 0xCEF7, - 35200 - 11905: 0xD282, - 35201 - 11905: 0xD2AA, - 35202 - 11905: 0xD283, - 35203 - 11905: 0xF1FB, - 35204 - 11905: 0xD284, - 35205 - 11905: 0xD285, - 35206 - 11905: 0xB8B2, - 35207 - 11905: 0xD286, - 35208 - 11905: 0xD287, - 35209 - 11905: 0xD288, - 35210 - 11905: 0xD289, - 35211 - 11905: 0xD28A, - 35212 - 11905: 0xD28B, - 35213 - 11905: 0xD28C, - 35214 - 11905: 0xD28D, - 35215 - 11905: 0xD28E, - 35216 - 11905: 0xD28F, - 35217 - 11905: 0xD290, - 35218 - 11905: 0xD291, - 35219 - 11905: 0xD292, - 35220 - 11905: 0xD293, - 35221 - 11905: 0xD294, - 35222 - 11905: 0xD295, - 35223 - 11905: 0xD296, - 35224 - 11905: 0xD297, - 35225 - 11905: 0xD298, - 35226 - 11905: 0xD299, - 35227 - 11905: 0xD29A, - 35228 - 11905: 0xD29B, - 35229 - 11905: 0xD29C, - 35230 - 11905: 0xD29D, - 35231 - 11905: 0xD29E, - 35232 - 11905: 0xD29F, - 35233 - 11905: 0xD2A0, - 35234 - 11905: 0xD340, - 35235 - 11905: 0xD341, - 35236 - 11905: 0xD342, - 35237 - 11905: 0xD343, - 35238 - 11905: 0xD344, - 35239 - 11905: 0xD345, - 35240 - 11905: 0xD346, - 35241 - 11905: 0xD347, - 35242 - 11905: 0xD348, - 35243 - 11905: 0xD349, - 35244 - 11905: 0xD34A, - 35245 - 11905: 0xD34B, - 35246 - 11905: 0xD34C, - 35247 - 11905: 0xD34D, - 35248 - 11905: 0xD34E, - 35249 - 11905: 0xD34F, - 35250 - 11905: 0xD350, - 35251 - 11905: 0xD351, - 35252 - 11905: 0xD352, - 35253 - 11905: 0xD353, - 35254 - 11905: 0xD354, - 35255 - 11905: 0xD355, - 35256 - 11905: 0xD356, - 35257 - 11905: 0xD357, - 35258 - 11905: 0xD358, - 35259 - 11905: 0xD359, - 35260 - 11905: 0xD35A, - 35261 - 11905: 0xD35B, - 35262 - 11905: 0xD35C, - 35263 - 11905: 0xD35D, - 35264 - 11905: 0xD35E, - 35265 - 11905: 0xBCFB, - 35266 - 11905: 0xB9DB, - 35267 - 11905: 0xD35F, - 35268 - 11905: 0xB9E6, - 35269 - 11905: 0xC3D9, - 35270 - 11905: 0xCAD3, - 35271 - 11905: 0xEAE8, - 35272 - 11905: 0xC0C0, - 35273 - 11905: 0xBEF5, - 35274 - 11905: 0xEAE9, - 35275 - 11905: 0xEAEA, - 35276 - 11905: 0xEAEB, - 35277 - 11905: 0xD360, - 35278 - 11905: 0xEAEC, - 35279 - 11905: 0xEAED, - 35280 - 11905: 0xEAEE, - 35281 - 11905: 0xEAEF, - 35282 - 11905: 0xBDC7, - 35283 - 11905: 0xD361, - 35284 - 11905: 0xD362, - 35285 - 11905: 0xD363, - 35286 - 11905: 0xF5FB, - 35287 - 11905: 0xD364, - 35288 - 11905: 0xD365, - 35289 - 11905: 0xD366, - 35290 - 11905: 0xF5FD, - 35291 - 11905: 0xD367, - 35292 - 11905: 0xF5FE, - 35293 - 11905: 0xD368, - 35294 - 11905: 0xF5FC, - 35295 - 11905: 0xD369, - 35296 - 11905: 0xD36A, - 35297 - 11905: 0xD36B, - 35298 - 11905: 0xD36C, - 35299 - 11905: 0xBDE2, - 35300 - 11905: 0xD36D, - 35301 - 11905: 0xF6A1, - 35302 - 11905: 0xB4A5, - 35303 - 11905: 0xD36E, - 35304 - 11905: 0xD36F, - 35305 - 11905: 0xD370, - 35306 - 11905: 0xD371, - 35307 - 11905: 0xF6A2, - 35308 - 11905: 0xD372, - 35309 - 11905: 0xD373, - 35310 - 11905: 0xD374, - 35311 - 11905: 0xF6A3, - 35312 - 11905: 0xD375, - 35313 - 11905: 0xD376, - 35314 - 11905: 0xD377, - 35315 - 11905: 0xECB2, - 35316 - 11905: 0xD378, - 35317 - 11905: 0xD379, - 35318 - 11905: 0xD37A, - 35319 - 11905: 0xD37B, - 35320 - 11905: 0xD37C, - 35321 - 11905: 0xD37D, - 35322 - 11905: 0xD37E, - 35323 - 11905: 0xD380, - 35324 - 11905: 0xD381, - 35325 - 11905: 0xD382, - 35326 - 11905: 0xD383, - 35327 - 11905: 0xD384, - 35328 - 11905: 0xD1D4, - 35329 - 11905: 0xD385, - 35330 - 11905: 0xD386, - 35331 - 11905: 0xD387, - 35332 - 11905: 0xD388, - 35333 - 11905: 0xD389, - 35334 - 11905: 0xD38A, - 35335 - 11905: 0xD9EA, - 35336 - 11905: 0xD38B, - 35337 - 11905: 0xD38C, - 35338 - 11905: 0xD38D, - 35339 - 11905: 0xD38E, - 35340 - 11905: 0xD38F, - 35341 - 11905: 0xD390, - 35342 - 11905: 0xD391, - 35343 - 11905: 0xD392, - 35344 - 11905: 0xD393, - 35345 - 11905: 0xD394, - 35346 - 11905: 0xD395, - 35347 - 11905: 0xD396, - 35348 - 11905: 0xD397, - 35349 - 11905: 0xD398, - 35350 - 11905: 0xD399, - 35351 - 11905: 0xD39A, - 35352 - 11905: 0xD39B, - 35353 - 11905: 0xD39C, - 35354 - 11905: 0xD39D, - 35355 - 11905: 0xD39E, - 35356 - 11905: 0xD39F, - 35357 - 11905: 0xD3A0, - 35358 - 11905: 0xD440, - 35359 - 11905: 0xD441, - 35360 - 11905: 0xD442, - 35361 - 11905: 0xD443, - 35362 - 11905: 0xD444, - 35363 - 11905: 0xD445, - 35364 - 11905: 0xD446, - 35365 - 11905: 0xD447, - 35366 - 11905: 0xD448, - 35367 - 11905: 0xD449, - 35368 - 11905: 0xD44A, - 35369 - 11905: 0xD44B, - 35370 - 11905: 0xD44C, - 35371 - 11905: 0xD44D, - 35372 - 11905: 0xD44E, - 35373 - 11905: 0xD44F, - 35374 - 11905: 0xD450, - 35375 - 11905: 0xD451, - 35376 - 11905: 0xD452, - 35377 - 11905: 0xD453, - 35378 - 11905: 0xD454, - 35379 - 11905: 0xD455, - 35380 - 11905: 0xD456, - 35381 - 11905: 0xD457, - 35382 - 11905: 0xD458, - 35383 - 11905: 0xD459, - 35384 - 11905: 0xD45A, - 35385 - 11905: 0xD45B, - 35386 - 11905: 0xD45C, - 35387 - 11905: 0xD45D, - 35388 - 11905: 0xD45E, - 35389 - 11905: 0xD45F, - 35390 - 11905: 0xF6A4, - 35391 - 11905: 0xD460, - 35392 - 11905: 0xD461, - 35393 - 11905: 0xD462, - 35394 - 11905: 0xD463, - 35395 - 11905: 0xD464, - 35396 - 11905: 0xD465, - 35397 - 11905: 0xD466, - 35398 - 11905: 0xD467, - 35399 - 11905: 0xD468, - 35400 - 11905: 0xEEBA, - 35401 - 11905: 0xD469, - 35402 - 11905: 0xD46A, - 35403 - 11905: 0xD46B, - 35404 - 11905: 0xD46C, - 35405 - 11905: 0xD46D, - 35406 - 11905: 0xD46E, - 35407 - 11905: 0xD46F, - 35408 - 11905: 0xD470, - 35409 - 11905: 0xD471, - 35410 - 11905: 0xD472, - 35411 - 11905: 0xD473, - 35412 - 11905: 0xD474, - 35413 - 11905: 0xD475, - 35414 - 11905: 0xD476, - 35415 - 11905: 0xD477, - 35416 - 11905: 0xD478, - 35417 - 11905: 0xD479, - 35418 - 11905: 0xD47A, - 35419 - 11905: 0xD47B, - 35420 - 11905: 0xD47C, - 35421 - 11905: 0xD47D, - 35422 - 11905: 0xD47E, - 35423 - 11905: 0xD480, - 35424 - 11905: 0xD481, - 35425 - 11905: 0xD482, - 35426 - 11905: 0xD483, - 35427 - 11905: 0xD484, - 35428 - 11905: 0xD485, - 35429 - 11905: 0xD486, - 35430 - 11905: 0xD487, - 35431 - 11905: 0xD488, - 35432 - 11905: 0xD489, - 35433 - 11905: 0xD48A, - 35434 - 11905: 0xD48B, - 35435 - 11905: 0xD48C, - 35436 - 11905: 0xD48D, - 35437 - 11905: 0xD48E, - 35438 - 11905: 0xD48F, - 35439 - 11905: 0xD490, - 35440 - 11905: 0xD491, - 35441 - 11905: 0xD492, - 35442 - 11905: 0xD493, - 35443 - 11905: 0xD494, - 35444 - 11905: 0xD495, - 35445 - 11905: 0xD496, - 35446 - 11905: 0xD497, - 35447 - 11905: 0xD498, - 35448 - 11905: 0xD499, - 35449 - 11905: 0xD5B2, - 35450 - 11905: 0xD49A, - 35451 - 11905: 0xD49B, - 35452 - 11905: 0xD49C, - 35453 - 11905: 0xD49D, - 35454 - 11905: 0xD49E, - 35455 - 11905: 0xD49F, - 35456 - 11905: 0xD4A0, - 35457 - 11905: 0xD540, - 35458 - 11905: 0xD541, - 35459 - 11905: 0xD542, - 35460 - 11905: 0xD543, - 35461 - 11905: 0xD544, - 35462 - 11905: 0xD545, - 35463 - 11905: 0xD546, - 35464 - 11905: 0xD547, - 35465 - 11905: 0xD3FE, - 35466 - 11905: 0xCCDC, - 35467 - 11905: 0xD548, - 35468 - 11905: 0xD549, - 35469 - 11905: 0xD54A, - 35470 - 11905: 0xD54B, - 35471 - 11905: 0xD54C, - 35472 - 11905: 0xD54D, - 35473 - 11905: 0xD54E, - 35474 - 11905: 0xD54F, - 35475 - 11905: 0xCAC4, - 35476 - 11905: 0xD550, - 35477 - 11905: 0xD551, - 35478 - 11905: 0xD552, - 35479 - 11905: 0xD553, - 35480 - 11905: 0xD554, - 35481 - 11905: 0xD555, - 35482 - 11905: 0xD556, - 35483 - 11905: 0xD557, - 35484 - 11905: 0xD558, - 35485 - 11905: 0xD559, - 35486 - 11905: 0xD55A, - 35487 - 11905: 0xD55B, - 35488 - 11905: 0xD55C, - 35489 - 11905: 0xD55D, - 35490 - 11905: 0xD55E, - 35491 - 11905: 0xD55F, - 35492 - 11905: 0xD560, - 35493 - 11905: 0xD561, - 35494 - 11905: 0xD562, - 35495 - 11905: 0xD563, - 35496 - 11905: 0xD564, - 35497 - 11905: 0xD565, - 35498 - 11905: 0xD566, - 35499 - 11905: 0xD567, - 35500 - 11905: 0xD568, - 35501 - 11905: 0xD569, - 35502 - 11905: 0xD56A, - 35503 - 11905: 0xD56B, - 35504 - 11905: 0xD56C, - 35505 - 11905: 0xD56D, - 35506 - 11905: 0xD56E, - 35507 - 11905: 0xD56F, - 35508 - 11905: 0xD570, - 35509 - 11905: 0xD571, - 35510 - 11905: 0xD572, - 35511 - 11905: 0xD573, - 35512 - 11905: 0xD574, - 35513 - 11905: 0xD575, - 35514 - 11905: 0xD576, - 35515 - 11905: 0xD577, - 35516 - 11905: 0xD578, - 35517 - 11905: 0xD579, - 35518 - 11905: 0xD57A, - 35519 - 11905: 0xD57B, - 35520 - 11905: 0xD57C, - 35521 - 11905: 0xD57D, - 35522 - 11905: 0xD57E, - 35523 - 11905: 0xD580, - 35524 - 11905: 0xD581, - 35525 - 11905: 0xD582, - 35526 - 11905: 0xD583, - 35527 - 11905: 0xD584, - 35528 - 11905: 0xD585, - 35529 - 11905: 0xD586, - 35530 - 11905: 0xD587, - 35531 - 11905: 0xD588, - 35532 - 11905: 0xD589, - 35533 - 11905: 0xD58A, - 35534 - 11905: 0xD58B, - 35535 - 11905: 0xD58C, - 35536 - 11905: 0xD58D, - 35537 - 11905: 0xD58E, - 35538 - 11905: 0xD58F, - 35539 - 11905: 0xD590, - 35540 - 11905: 0xD591, - 35541 - 11905: 0xD592, - 35542 - 11905: 0xD593, - 35543 - 11905: 0xD594, - 35544 - 11905: 0xD595, - 35545 - 11905: 0xD596, - 35546 - 11905: 0xD597, - 35547 - 11905: 0xD598, - 35548 - 11905: 0xD599, - 35549 - 11905: 0xD59A, - 35550 - 11905: 0xD59B, - 35551 - 11905: 0xD59C, - 35552 - 11905: 0xD59D, - 35553 - 11905: 0xD59E, - 35554 - 11905: 0xD59F, - 35555 - 11905: 0xD5A0, - 35556 - 11905: 0xD640, - 35557 - 11905: 0xD641, - 35558 - 11905: 0xD642, - 35559 - 11905: 0xD643, - 35560 - 11905: 0xD644, - 35561 - 11905: 0xD645, - 35562 - 11905: 0xD646, - 35563 - 11905: 0xD647, - 35564 - 11905: 0xD648, - 35565 - 11905: 0xD649, - 35566 - 11905: 0xD64A, - 35567 - 11905: 0xD64B, - 35568 - 11905: 0xD64C, - 35569 - 11905: 0xD64D, - 35570 - 11905: 0xD64E, - 35571 - 11905: 0xD64F, - 35572 - 11905: 0xD650, - 35573 - 11905: 0xD651, - 35574 - 11905: 0xD652, - 35575 - 11905: 0xD653, - 35576 - 11905: 0xD654, - 35577 - 11905: 0xD655, - 35578 - 11905: 0xD656, - 35579 - 11905: 0xD657, - 35580 - 11905: 0xD658, - 35581 - 11905: 0xD659, - 35582 - 11905: 0xD65A, - 35583 - 11905: 0xD65B, - 35584 - 11905: 0xD65C, - 35585 - 11905: 0xD65D, - 35586 - 11905: 0xD65E, - 35587 - 11905: 0xD65F, - 35588 - 11905: 0xD660, - 35589 - 11905: 0xD661, - 35590 - 11905: 0xD662, - 35591 - 11905: 0xE5C0, - 35592 - 11905: 0xD663, - 35593 - 11905: 0xD664, - 35594 - 11905: 0xD665, - 35595 - 11905: 0xD666, - 35596 - 11905: 0xD667, - 35597 - 11905: 0xD668, - 35598 - 11905: 0xD669, - 35599 - 11905: 0xD66A, - 35600 - 11905: 0xD66B, - 35601 - 11905: 0xD66C, - 35602 - 11905: 0xD66D, - 35603 - 11905: 0xD66E, - 35604 - 11905: 0xD66F, - 35605 - 11905: 0xD670, - 35606 - 11905: 0xD671, - 35607 - 11905: 0xD672, - 35608 - 11905: 0xD673, - 35609 - 11905: 0xD674, - 35610 - 11905: 0xD675, - 35611 - 11905: 0xD676, - 35612 - 11905: 0xD677, - 35613 - 11905: 0xD678, - 35614 - 11905: 0xD679, - 35615 - 11905: 0xD67A, - 35616 - 11905: 0xD67B, - 35617 - 11905: 0xD67C, - 35618 - 11905: 0xD67D, - 35619 - 11905: 0xD67E, - 35620 - 11905: 0xD680, - 35621 - 11905: 0xD681, - 35622 - 11905: 0xF6A5, - 35623 - 11905: 0xD682, - 35624 - 11905: 0xD683, - 35625 - 11905: 0xD684, - 35626 - 11905: 0xD685, - 35627 - 11905: 0xD686, - 35628 - 11905: 0xD687, - 35629 - 11905: 0xD688, - 35630 - 11905: 0xD689, - 35631 - 11905: 0xD68A, - 35632 - 11905: 0xD68B, - 35633 - 11905: 0xD68C, - 35634 - 11905: 0xD68D, - 35635 - 11905: 0xD68E, - 35636 - 11905: 0xD68F, - 35637 - 11905: 0xD690, - 35638 - 11905: 0xD691, - 35639 - 11905: 0xD692, - 35640 - 11905: 0xD693, - 35641 - 11905: 0xD694, - 35642 - 11905: 0xD695, - 35643 - 11905: 0xD696, - 35644 - 11905: 0xD697, - 35645 - 11905: 0xD698, - 35646 - 11905: 0xD699, - 35647 - 11905: 0xD69A, - 35648 - 11905: 0xD69B, - 35649 - 11905: 0xD69C, - 35650 - 11905: 0xD69D, - 35651 - 11905: 0xD69E, - 35652 - 11905: 0xD69F, - 35653 - 11905: 0xD6A0, - 35654 - 11905: 0xD740, - 35655 - 11905: 0xD741, - 35656 - 11905: 0xD742, - 35657 - 11905: 0xD743, - 35658 - 11905: 0xD744, - 35659 - 11905: 0xD745, - 35660 - 11905: 0xD746, - 35661 - 11905: 0xD747, - 35662 - 11905: 0xD748, - 35663 - 11905: 0xD749, - 35664 - 11905: 0xD74A, - 35665 - 11905: 0xD74B, - 35666 - 11905: 0xD74C, - 35667 - 11905: 0xD74D, - 35668 - 11905: 0xD74E, - 35669 - 11905: 0xD74F, - 35670 - 11905: 0xD750, - 35671 - 11905: 0xD751, - 35672 - 11905: 0xD752, - 35673 - 11905: 0xD753, - 35674 - 11905: 0xD754, - 35675 - 11905: 0xD755, - 35676 - 11905: 0xD756, - 35677 - 11905: 0xD757, - 35678 - 11905: 0xD758, - 35679 - 11905: 0xD759, - 35680 - 11905: 0xD75A, - 35681 - 11905: 0xD75B, - 35682 - 11905: 0xD75C, - 35683 - 11905: 0xD75D, - 35684 - 11905: 0xD75E, - 35685 - 11905: 0xD75F, - 35686 - 11905: 0xBEAF, - 35687 - 11905: 0xD760, - 35688 - 11905: 0xD761, - 35689 - 11905: 0xD762, - 35690 - 11905: 0xD763, - 35691 - 11905: 0xD764, - 35692 - 11905: 0xC6A9, - 35693 - 11905: 0xD765, - 35694 - 11905: 0xD766, - 35695 - 11905: 0xD767, - 35696 - 11905: 0xD768, - 35697 - 11905: 0xD769, - 35698 - 11905: 0xD76A, - 35699 - 11905: 0xD76B, - 35700 - 11905: 0xD76C, - 35701 - 11905: 0xD76D, - 35702 - 11905: 0xD76E, - 35703 - 11905: 0xD76F, - 35704 - 11905: 0xD770, - 35705 - 11905: 0xD771, - 35706 - 11905: 0xD772, - 35707 - 11905: 0xD773, - 35708 - 11905: 0xD774, - 35709 - 11905: 0xD775, - 35710 - 11905: 0xD776, - 35711 - 11905: 0xD777, - 35712 - 11905: 0xD778, - 35713 - 11905: 0xD779, - 35714 - 11905: 0xD77A, - 35715 - 11905: 0xD77B, - 35716 - 11905: 0xD77C, - 35717 - 11905: 0xD77D, - 35718 - 11905: 0xD77E, - 35719 - 11905: 0xD780, - 35720 - 11905: 0xD781, - 35721 - 11905: 0xD782, - 35722 - 11905: 0xD783, - 35723 - 11905: 0xD784, - 35724 - 11905: 0xD785, - 35725 - 11905: 0xD786, - 35726 - 11905: 0xD787, - 35727 - 11905: 0xD788, - 35728 - 11905: 0xD789, - 35729 - 11905: 0xD78A, - 35730 - 11905: 0xD78B, - 35731 - 11905: 0xD78C, - 35732 - 11905: 0xD78D, - 35733 - 11905: 0xD78E, - 35734 - 11905: 0xD78F, - 35735 - 11905: 0xD790, - 35736 - 11905: 0xD791, - 35737 - 11905: 0xD792, - 35738 - 11905: 0xD793, - 35739 - 11905: 0xD794, - 35740 - 11905: 0xD795, - 35741 - 11905: 0xD796, - 35742 - 11905: 0xD797, - 35743 - 11905: 0xD798, - 35744 - 11905: 0xDAA5, - 35745 - 11905: 0xBCC6, - 35746 - 11905: 0xB6A9, - 35747 - 11905: 0xB8BC, - 35748 - 11905: 0xC8CF, - 35749 - 11905: 0xBCA5, - 35750 - 11905: 0xDAA6, - 35751 - 11905: 0xDAA7, - 35752 - 11905: 0xCCD6, - 35753 - 11905: 0xC8C3, - 35754 - 11905: 0xDAA8, - 35755 - 11905: 0xC6FD, - 35756 - 11905: 0xD799, - 35757 - 11905: 0xD1B5, - 35758 - 11905: 0xD2E9, - 35759 - 11905: 0xD1B6, - 35760 - 11905: 0xBCC7, - 35761 - 11905: 0xD79A, - 35762 - 11905: 0xBDB2, - 35763 - 11905: 0xBBE4, - 35764 - 11905: 0xDAA9, - 35765 - 11905: 0xDAAA, - 35766 - 11905: 0xD1C8, - 35767 - 11905: 0xDAAB, - 35768 - 11905: 0xD0ED, - 35769 - 11905: 0xB6EF, - 35770 - 11905: 0xC2DB, - 35771 - 11905: 0xD79B, - 35772 - 11905: 0xCBCF, - 35773 - 11905: 0xB7ED, - 35774 - 11905: 0xC9E8, - 35775 - 11905: 0xB7C3, - 35776 - 11905: 0xBEF7, - 35777 - 11905: 0xD6A4, - 35778 - 11905: 0xDAAC, - 35779 - 11905: 0xDAAD, - 35780 - 11905: 0xC6C0, - 35781 - 11905: 0xD7E7, - 35782 - 11905: 0xCAB6, - 35783 - 11905: 0xD79C, - 35784 - 11905: 0xD5A9, - 35785 - 11905: 0xCBDF, - 35786 - 11905: 0xD5EF, - 35787 - 11905: 0xDAAE, - 35788 - 11905: 0xD6DF, - 35789 - 11905: 0xB4CA, - 35790 - 11905: 0xDAB0, - 35791 - 11905: 0xDAAF, - 35792 - 11905: 0xD79D, - 35793 - 11905: 0xD2EB, - 35794 - 11905: 0xDAB1, - 35795 - 11905: 0xDAB2, - 35796 - 11905: 0xDAB3, - 35797 - 11905: 0xCAD4, - 35798 - 11905: 0xDAB4, - 35799 - 11905: 0xCAAB, - 35800 - 11905: 0xDAB5, - 35801 - 11905: 0xDAB6, - 35802 - 11905: 0xB3CF, - 35803 - 11905: 0xD6EF, - 35804 - 11905: 0xDAB7, - 35805 - 11905: 0xBBB0, - 35806 - 11905: 0xB5AE, - 35807 - 11905: 0xDAB8, - 35808 - 11905: 0xDAB9, - 35809 - 11905: 0xB9EE, - 35810 - 11905: 0xD1AF, - 35811 - 11905: 0xD2E8, - 35812 - 11905: 0xDABA, - 35813 - 11905: 0xB8C3, - 35814 - 11905: 0xCFEA, - 35815 - 11905: 0xB2EF, - 35816 - 11905: 0xDABB, - 35817 - 11905: 0xDABC, - 35818 - 11905: 0xD79E, - 35819 - 11905: 0xBDEB, - 35820 - 11905: 0xCEDC, - 35821 - 11905: 0xD3EF, - 35822 - 11905: 0xDABD, - 35823 - 11905: 0xCEF3, - 35824 - 11905: 0xDABE, - 35825 - 11905: 0xD3D5, - 35826 - 11905: 0xBBE5, - 35827 - 11905: 0xDABF, - 35828 - 11905: 0xCBB5, - 35829 - 11905: 0xCBD0, - 35830 - 11905: 0xDAC0, - 35831 - 11905: 0xC7EB, - 35832 - 11905: 0xD6EE, - 35833 - 11905: 0xDAC1, - 35834 - 11905: 0xC5B5, - 35835 - 11905: 0xB6C1, - 35836 - 11905: 0xDAC2, - 35837 - 11905: 0xB7CC, - 35838 - 11905: 0xBFCE, - 35839 - 11905: 0xDAC3, - 35840 - 11905: 0xDAC4, - 35841 - 11905: 0xCBAD, - 35842 - 11905: 0xDAC5, - 35843 - 11905: 0xB5F7, - 35844 - 11905: 0xDAC6, - 35845 - 11905: 0xC1C2, - 35846 - 11905: 0xD7BB, - 35847 - 11905: 0xDAC7, - 35848 - 11905: 0xCCB8, - 35849 - 11905: 0xD79F, - 35850 - 11905: 0xD2EA, - 35851 - 11905: 0xC4B1, - 35852 - 11905: 0xDAC8, - 35853 - 11905: 0xB5FD, - 35854 - 11905: 0xBBD1, - 35855 - 11905: 0xDAC9, - 35856 - 11905: 0xD0B3, - 35857 - 11905: 0xDACA, - 35858 - 11905: 0xDACB, - 35859 - 11905: 0xCEBD, - 35860 - 11905: 0xDACC, - 35861 - 11905: 0xDACD, - 35862 - 11905: 0xDACE, - 35863 - 11905: 0xB2F7, - 35864 - 11905: 0xDAD1, - 35865 - 11905: 0xDACF, - 35866 - 11905: 0xD1E8, - 35867 - 11905: 0xDAD0, - 35868 - 11905: 0xC3D5, - 35869 - 11905: 0xDAD2, - 35870 - 11905: 0xD7A0, - 35871 - 11905: 0xDAD3, - 35872 - 11905: 0xDAD4, - 35873 - 11905: 0xDAD5, - 35874 - 11905: 0xD0BB, - 35875 - 11905: 0xD2A5, - 35876 - 11905: 0xB0F9, - 35877 - 11905: 0xDAD6, - 35878 - 11905: 0xC7AB, - 35879 - 11905: 0xDAD7, - 35880 - 11905: 0xBDF7, - 35881 - 11905: 0xC3A1, - 35882 - 11905: 0xDAD8, - 35883 - 11905: 0xDAD9, - 35884 - 11905: 0xC3FD, - 35885 - 11905: 0xCCB7, - 35886 - 11905: 0xDADA, - 35887 - 11905: 0xDADB, - 35888 - 11905: 0xC0BE, - 35889 - 11905: 0xC6D7, - 35890 - 11905: 0xDADC, - 35891 - 11905: 0xDADD, - 35892 - 11905: 0xC7B4, - 35893 - 11905: 0xDADE, - 35894 - 11905: 0xDADF, - 35895 - 11905: 0xB9C8, - 35896 - 11905: 0xD840, - 35897 - 11905: 0xD841, - 35898 - 11905: 0xD842, - 35899 - 11905: 0xD843, - 35900 - 11905: 0xD844, - 35901 - 11905: 0xD845, - 35902 - 11905: 0xD846, - 35903 - 11905: 0xD847, - 35904 - 11905: 0xD848, - 35905 - 11905: 0xBBED, - 35906 - 11905: 0xD849, - 35907 - 11905: 0xD84A, - 35908 - 11905: 0xD84B, - 35909 - 11905: 0xD84C, - 35910 - 11905: 0xB6B9, - 35911 - 11905: 0xF4F8, - 35912 - 11905: 0xD84D, - 35913 - 11905: 0xF4F9, - 35914 - 11905: 0xD84E, - 35915 - 11905: 0xD84F, - 35916 - 11905: 0xCDE3, - 35917 - 11905: 0xD850, - 35918 - 11905: 0xD851, - 35919 - 11905: 0xD852, - 35920 - 11905: 0xD853, - 35921 - 11905: 0xD854, - 35922 - 11905: 0xD855, - 35923 - 11905: 0xD856, - 35924 - 11905: 0xD857, - 35925 - 11905: 0xF5B9, - 35926 - 11905: 0xD858, - 35927 - 11905: 0xD859, - 35928 - 11905: 0xD85A, - 35929 - 11905: 0xD85B, - 35930 - 11905: 0xEBE0, - 35931 - 11905: 0xD85C, - 35932 - 11905: 0xD85D, - 35933 - 11905: 0xD85E, - 35934 - 11905: 0xD85F, - 35935 - 11905: 0xD860, - 35936 - 11905: 0xD861, - 35937 - 11905: 0xCFF3, - 35938 - 11905: 0xBBBF, - 35939 - 11905: 0xD862, - 35940 - 11905: 0xD863, - 35941 - 11905: 0xD864, - 35942 - 11905: 0xD865, - 35943 - 11905: 0xD866, - 35944 - 11905: 0xD867, - 35945 - 11905: 0xD868, - 35946 - 11905: 0xBAC0, - 35947 - 11905: 0xD4A5, - 35948 - 11905: 0xD869, - 35949 - 11905: 0xD86A, - 35950 - 11905: 0xD86B, - 35951 - 11905: 0xD86C, - 35952 - 11905: 0xD86D, - 35953 - 11905: 0xD86E, - 35954 - 11905: 0xD86F, - 35955 - 11905: 0xE1D9, - 35956 - 11905: 0xD870, - 35957 - 11905: 0xD871, - 35958 - 11905: 0xD872, - 35959 - 11905: 0xD873, - 35960 - 11905: 0xF5F4, - 35961 - 11905: 0xB1AA, - 35962 - 11905: 0xB2F2, - 35963 - 11905: 0xD874, - 35964 - 11905: 0xD875, - 35965 - 11905: 0xD876, - 35966 - 11905: 0xD877, - 35967 - 11905: 0xD878, - 35968 - 11905: 0xD879, - 35969 - 11905: 0xD87A, - 35970 - 11905: 0xF5F5, - 35971 - 11905: 0xD87B, - 35972 - 11905: 0xD87C, - 35973 - 11905: 0xF5F7, - 35974 - 11905: 0xD87D, - 35975 - 11905: 0xD87E, - 35976 - 11905: 0xD880, - 35977 - 11905: 0xBAD1, - 35978 - 11905: 0xF5F6, - 35979 - 11905: 0xD881, - 35980 - 11905: 0xC3B2, - 35981 - 11905: 0xD882, - 35982 - 11905: 0xD883, - 35983 - 11905: 0xD884, - 35984 - 11905: 0xD885, - 35985 - 11905: 0xD886, - 35986 - 11905: 0xD887, - 35987 - 11905: 0xD888, - 35988 - 11905: 0xF5F9, - 35989 - 11905: 0xD889, - 35990 - 11905: 0xD88A, - 35991 - 11905: 0xD88B, - 35992 - 11905: 0xF5F8, - 35993 - 11905: 0xD88C, - 35994 - 11905: 0xD88D, - 35995 - 11905: 0xD88E, - 35996 - 11905: 0xD88F, - 35997 - 11905: 0xD890, - 35998 - 11905: 0xD891, - 35999 - 11905: 0xD892, - 36000 - 11905: 0xD893, - 36001 - 11905: 0xD894, - 36002 - 11905: 0xD895, - 36003 - 11905: 0xD896, - 36004 - 11905: 0xD897, - 36005 - 11905: 0xD898, - 36006 - 11905: 0xD899, - 36007 - 11905: 0xD89A, - 36008 - 11905: 0xD89B, - 36009 - 11905: 0xD89C, - 36010 - 11905: 0xD89D, - 36011 - 11905: 0xD89E, - 36012 - 11905: 0xD89F, - 36013 - 11905: 0xD8A0, - 36014 - 11905: 0xD940, - 36015 - 11905: 0xD941, - 36016 - 11905: 0xD942, - 36017 - 11905: 0xD943, - 36018 - 11905: 0xD944, - 36019 - 11905: 0xD945, - 36020 - 11905: 0xD946, - 36021 - 11905: 0xD947, - 36022 - 11905: 0xD948, - 36023 - 11905: 0xD949, - 36024 - 11905: 0xD94A, - 36025 - 11905: 0xD94B, - 36026 - 11905: 0xD94C, - 36027 - 11905: 0xD94D, - 36028 - 11905: 0xD94E, - 36029 - 11905: 0xD94F, - 36030 - 11905: 0xD950, - 36031 - 11905: 0xD951, - 36032 - 11905: 0xD952, - 36033 - 11905: 0xD953, - 36034 - 11905: 0xD954, - 36035 - 11905: 0xD955, - 36036 - 11905: 0xD956, - 36037 - 11905: 0xD957, - 36038 - 11905: 0xD958, - 36039 - 11905: 0xD959, - 36040 - 11905: 0xD95A, - 36041 - 11905: 0xD95B, - 36042 - 11905: 0xD95C, - 36043 - 11905: 0xD95D, - 36044 - 11905: 0xD95E, - 36045 - 11905: 0xD95F, - 36046 - 11905: 0xD960, - 36047 - 11905: 0xD961, - 36048 - 11905: 0xD962, - 36049 - 11905: 0xD963, - 36050 - 11905: 0xD964, - 36051 - 11905: 0xD965, - 36052 - 11905: 0xD966, - 36053 - 11905: 0xD967, - 36054 - 11905: 0xD968, - 36055 - 11905: 0xD969, - 36056 - 11905: 0xD96A, - 36057 - 11905: 0xD96B, - 36058 - 11905: 0xD96C, - 36059 - 11905: 0xD96D, - 36060 - 11905: 0xD96E, - 36061 - 11905: 0xD96F, - 36062 - 11905: 0xD970, - 36063 - 11905: 0xD971, - 36064 - 11905: 0xD972, - 36065 - 11905: 0xD973, - 36066 - 11905: 0xD974, - 36067 - 11905: 0xD975, - 36068 - 11905: 0xD976, - 36069 - 11905: 0xD977, - 36070 - 11905: 0xD978, - 36071 - 11905: 0xD979, - 36072 - 11905: 0xD97A, - 36073 - 11905: 0xD97B, - 36074 - 11905: 0xD97C, - 36075 - 11905: 0xD97D, - 36076 - 11905: 0xD97E, - 36077 - 11905: 0xD980, - 36078 - 11905: 0xD981, - 36079 - 11905: 0xD982, - 36080 - 11905: 0xD983, - 36081 - 11905: 0xD984, - 36082 - 11905: 0xD985, - 36083 - 11905: 0xD986, - 36084 - 11905: 0xD987, - 36085 - 11905: 0xD988, - 36086 - 11905: 0xD989, - 36087 - 11905: 0xD98A, - 36088 - 11905: 0xD98B, - 36089 - 11905: 0xD98C, - 36090 - 11905: 0xD98D, - 36091 - 11905: 0xD98E, - 36092 - 11905: 0xD98F, - 36093 - 11905: 0xD990, - 36094 - 11905: 0xD991, - 36095 - 11905: 0xD992, - 36096 - 11905: 0xD993, - 36097 - 11905: 0xD994, - 36098 - 11905: 0xD995, - 36099 - 11905: 0xD996, - 36100 - 11905: 0xD997, - 36101 - 11905: 0xD998, - 36102 - 11905: 0xD999, - 36103 - 11905: 0xD99A, - 36104 - 11905: 0xD99B, - 36105 - 11905: 0xD99C, - 36106 - 11905: 0xD99D, - 36107 - 11905: 0xD99E, - 36108 - 11905: 0xD99F, - 36109 - 11905: 0xD9A0, - 36110 - 11905: 0xDA40, - 36111 - 11905: 0xDA41, - 36112 - 11905: 0xDA42, - 36113 - 11905: 0xDA43, - 36114 - 11905: 0xDA44, - 36115 - 11905: 0xDA45, - 36116 - 11905: 0xDA46, - 36117 - 11905: 0xDA47, - 36118 - 11905: 0xDA48, - 36119 - 11905: 0xDA49, - 36120 - 11905: 0xDA4A, - 36121 - 11905: 0xDA4B, - 36122 - 11905: 0xDA4C, - 36123 - 11905: 0xDA4D, - 36124 - 11905: 0xDA4E, - 36125 - 11905: 0xB1B4, - 36126 - 11905: 0xD5EA, - 36127 - 11905: 0xB8BA, - 36128 - 11905: 0xDA4F, - 36129 - 11905: 0xB9B1, - 36130 - 11905: 0xB2C6, - 36131 - 11905: 0xD4F0, - 36132 - 11905: 0xCFCD, - 36133 - 11905: 0xB0DC, - 36134 - 11905: 0xD5CB, - 36135 - 11905: 0xBBF5, - 36136 - 11905: 0xD6CA, - 36137 - 11905: 0xB7B7, - 36138 - 11905: 0xCCB0, - 36139 - 11905: 0xC6B6, - 36140 - 11905: 0xB1E1, - 36141 - 11905: 0xB9BA, - 36142 - 11905: 0xD6FC, - 36143 - 11905: 0xB9E1, - 36144 - 11905: 0xB7A1, - 36145 - 11905: 0xBCFA, - 36146 - 11905: 0xEADA, - 36147 - 11905: 0xEADB, - 36148 - 11905: 0xCCF9, - 36149 - 11905: 0xB9F3, - 36150 - 11905: 0xEADC, - 36151 - 11905: 0xB4FB, - 36152 - 11905: 0xC3B3, - 36153 - 11905: 0xB7D1, - 36154 - 11905: 0xBAD8, - 36155 - 11905: 0xEADD, - 36156 - 11905: 0xD4F4, - 36157 - 11905: 0xEADE, - 36158 - 11905: 0xBCD6, - 36159 - 11905: 0xBBDF, - 36160 - 11905: 0xEADF, - 36161 - 11905: 0xC1DE, - 36162 - 11905: 0xC2B8, - 36163 - 11905: 0xD4DF, - 36164 - 11905: 0xD7CA, - 36165 - 11905: 0xEAE0, - 36166 - 11905: 0xEAE1, - 36167 - 11905: 0xEAE4, - 36168 - 11905: 0xEAE2, - 36169 - 11905: 0xEAE3, - 36170 - 11905: 0xC9DE, - 36171 - 11905: 0xB8B3, - 36172 - 11905: 0xB6C4, - 36173 - 11905: 0xEAE5, - 36174 - 11905: 0xCAEA, - 36175 - 11905: 0xC9CD, - 36176 - 11905: 0xB4CD, - 36177 - 11905: 0xDA50, - 36178 - 11905: 0xDA51, - 36179 - 11905: 0xE2D9, - 36180 - 11905: 0xC5E2, - 36181 - 11905: 0xEAE6, - 36182 - 11905: 0xC0B5, - 36183 - 11905: 0xDA52, - 36184 - 11905: 0xD7B8, - 36185 - 11905: 0xEAE7, - 36186 - 11905: 0xD7AC, - 36187 - 11905: 0xC8FC, - 36188 - 11905: 0xD8D3, - 36189 - 11905: 0xD8CD, - 36190 - 11905: 0xD4DE, - 36191 - 11905: 0xDA53, - 36192 - 11905: 0xD4F9, - 36193 - 11905: 0xC9C4, - 36194 - 11905: 0xD3AE, - 36195 - 11905: 0xB8D3, - 36196 - 11905: 0xB3E0, - 36197 - 11905: 0xDA54, - 36198 - 11905: 0xC9E2, - 36199 - 11905: 0xF4F6, - 36200 - 11905: 0xDA55, - 36201 - 11905: 0xDA56, - 36202 - 11905: 0xDA57, - 36203 - 11905: 0xBAD5, - 36204 - 11905: 0xDA58, - 36205 - 11905: 0xF4F7, - 36206 - 11905: 0xDA59, - 36207 - 11905: 0xDA5A, - 36208 - 11905: 0xD7DF, - 36209 - 11905: 0xDA5B, - 36210 - 11905: 0xDA5C, - 36211 - 11905: 0xF4F1, - 36212 - 11905: 0xB8B0, - 36213 - 11905: 0xD5D4, - 36214 - 11905: 0xB8CF, - 36215 - 11905: 0xC6F0, - 36216 - 11905: 0xDA5D, - 36217 - 11905: 0xDA5E, - 36218 - 11905: 0xDA5F, - 36219 - 11905: 0xDA60, - 36220 - 11905: 0xDA61, - 36221 - 11905: 0xDA62, - 36222 - 11905: 0xDA63, - 36223 - 11905: 0xDA64, - 36224 - 11905: 0xDA65, - 36225 - 11905: 0xB3C3, - 36226 - 11905: 0xDA66, - 36227 - 11905: 0xDA67, - 36228 - 11905: 0xF4F2, - 36229 - 11905: 0xB3AC, - 36230 - 11905: 0xDA68, - 36231 - 11905: 0xDA69, - 36232 - 11905: 0xDA6A, - 36233 - 11905: 0xDA6B, - 36234 - 11905: 0xD4BD, - 36235 - 11905: 0xC7F7, - 36236 - 11905: 0xDA6C, - 36237 - 11905: 0xDA6D, - 36238 - 11905: 0xDA6E, - 36239 - 11905: 0xDA6F, - 36240 - 11905: 0xDA70, - 36241 - 11905: 0xF4F4, - 36242 - 11905: 0xDA71, - 36243 - 11905: 0xDA72, - 36244 - 11905: 0xF4F3, - 36245 - 11905: 0xDA73, - 36246 - 11905: 0xDA74, - 36247 - 11905: 0xDA75, - 36248 - 11905: 0xDA76, - 36249 - 11905: 0xDA77, - 36250 - 11905: 0xDA78, - 36251 - 11905: 0xDA79, - 36252 - 11905: 0xDA7A, - 36253 - 11905: 0xDA7B, - 36254 - 11905: 0xDA7C, - 36255 - 11905: 0xCCCB, - 36256 - 11905: 0xDA7D, - 36257 - 11905: 0xDA7E, - 36258 - 11905: 0xDA80, - 36259 - 11905: 0xC8A4, - 36260 - 11905: 0xDA81, - 36261 - 11905: 0xDA82, - 36262 - 11905: 0xDA83, - 36263 - 11905: 0xDA84, - 36264 - 11905: 0xDA85, - 36265 - 11905: 0xDA86, - 36266 - 11905: 0xDA87, - 36267 - 11905: 0xDA88, - 36268 - 11905: 0xDA89, - 36269 - 11905: 0xDA8A, - 36270 - 11905: 0xDA8B, - 36271 - 11905: 0xDA8C, - 36272 - 11905: 0xDA8D, - 36273 - 11905: 0xF4F5, - 36274 - 11905: 0xDA8E, - 36275 - 11905: 0xD7E3, - 36276 - 11905: 0xC5BF, - 36277 - 11905: 0xF5C0, - 36278 - 11905: 0xDA8F, - 36279 - 11905: 0xDA90, - 36280 - 11905: 0xF5BB, - 36281 - 11905: 0xDA91, - 36282 - 11905: 0xF5C3, - 36283 - 11905: 0xDA92, - 36284 - 11905: 0xF5C2, - 36285 - 11905: 0xDA93, - 36286 - 11905: 0xD6BA, - 36287 - 11905: 0xF5C1, - 36288 - 11905: 0xDA94, - 36289 - 11905: 0xDA95, - 36290 - 11905: 0xDA96, - 36291 - 11905: 0xD4BE, - 36292 - 11905: 0xF5C4, - 36293 - 11905: 0xDA97, - 36294 - 11905: 0xF5CC, - 36295 - 11905: 0xDA98, - 36296 - 11905: 0xDA99, - 36297 - 11905: 0xDA9A, - 36298 - 11905: 0xDA9B, - 36299 - 11905: 0xB0CF, - 36300 - 11905: 0xB5F8, - 36301 - 11905: 0xDA9C, - 36302 - 11905: 0xF5C9, - 36303 - 11905: 0xF5CA, - 36304 - 11905: 0xDA9D, - 36305 - 11905: 0xC5DC, - 36306 - 11905: 0xDA9E, - 36307 - 11905: 0xDA9F, - 36308 - 11905: 0xDAA0, - 36309 - 11905: 0xDB40, - 36310 - 11905: 0xF5C5, - 36311 - 11905: 0xF5C6, - 36312 - 11905: 0xDB41, - 36313 - 11905: 0xDB42, - 36314 - 11905: 0xF5C7, - 36315 - 11905: 0xF5CB, - 36316 - 11905: 0xDB43, - 36317 - 11905: 0xBEE0, - 36318 - 11905: 0xF5C8, - 36319 - 11905: 0xB8FA, - 36320 - 11905: 0xDB44, - 36321 - 11905: 0xDB45, - 36322 - 11905: 0xDB46, - 36323 - 11905: 0xF5D0, - 36324 - 11905: 0xF5D3, - 36325 - 11905: 0xDB47, - 36326 - 11905: 0xDB48, - 36327 - 11905: 0xDB49, - 36328 - 11905: 0xBFE7, - 36329 - 11905: 0xDB4A, - 36330 - 11905: 0xB9F2, - 36331 - 11905: 0xF5BC, - 36332 - 11905: 0xF5CD, - 36333 - 11905: 0xDB4B, - 36334 - 11905: 0xDB4C, - 36335 - 11905: 0xC2B7, - 36336 - 11905: 0xDB4D, - 36337 - 11905: 0xDB4E, - 36338 - 11905: 0xDB4F, - 36339 - 11905: 0xCCF8, - 36340 - 11905: 0xDB50, - 36341 - 11905: 0xBCF9, - 36342 - 11905: 0xDB51, - 36343 - 11905: 0xF5CE, - 36344 - 11905: 0xF5CF, - 36345 - 11905: 0xF5D1, - 36346 - 11905: 0xB6E5, - 36347 - 11905: 0xF5D2, - 36348 - 11905: 0xDB52, - 36349 - 11905: 0xF5D5, - 36350 - 11905: 0xDB53, - 36351 - 11905: 0xDB54, - 36352 - 11905: 0xDB55, - 36353 - 11905: 0xDB56, - 36354 - 11905: 0xDB57, - 36355 - 11905: 0xDB58, - 36356 - 11905: 0xDB59, - 36357 - 11905: 0xF5BD, - 36358 - 11905: 0xDB5A, - 36359 - 11905: 0xDB5B, - 36360 - 11905: 0xDB5C, - 36361 - 11905: 0xF5D4, - 36362 - 11905: 0xD3BB, - 36363 - 11905: 0xDB5D, - 36364 - 11905: 0xB3EC, - 36365 - 11905: 0xDB5E, - 36366 - 11905: 0xDB5F, - 36367 - 11905: 0xCCA4, - 36368 - 11905: 0xDB60, - 36369 - 11905: 0xDB61, - 36370 - 11905: 0xDB62, - 36371 - 11905: 0xDB63, - 36372 - 11905: 0xF5D6, - 36373 - 11905: 0xDB64, - 36374 - 11905: 0xDB65, - 36375 - 11905: 0xDB66, - 36376 - 11905: 0xDB67, - 36377 - 11905: 0xDB68, - 36378 - 11905: 0xDB69, - 36379 - 11905: 0xDB6A, - 36380 - 11905: 0xDB6B, - 36381 - 11905: 0xF5D7, - 36382 - 11905: 0xBEE1, - 36383 - 11905: 0xF5D8, - 36384 - 11905: 0xDB6C, - 36385 - 11905: 0xDB6D, - 36386 - 11905: 0xCCDF, - 36387 - 11905: 0xF5DB, - 36388 - 11905: 0xDB6E, - 36389 - 11905: 0xDB6F, - 36390 - 11905: 0xDB70, - 36391 - 11905: 0xDB71, - 36392 - 11905: 0xDB72, - 36393 - 11905: 0xB2C8, - 36394 - 11905: 0xD7D9, - 36395 - 11905: 0xDB73, - 36396 - 11905: 0xF5D9, - 36397 - 11905: 0xDB74, - 36398 - 11905: 0xF5DA, - 36399 - 11905: 0xF5DC, - 36400 - 11905: 0xDB75, - 36401 - 11905: 0xF5E2, - 36402 - 11905: 0xDB76, - 36403 - 11905: 0xDB77, - 36404 - 11905: 0xDB78, - 36405 - 11905: 0xF5E0, - 36406 - 11905: 0xDB79, - 36407 - 11905: 0xDB7A, - 36408 - 11905: 0xDB7B, - 36409 - 11905: 0xF5DF, - 36410 - 11905: 0xF5DD, - 36411 - 11905: 0xDB7C, - 36412 - 11905: 0xDB7D, - 36413 - 11905: 0xF5E1, - 36414 - 11905: 0xDB7E, - 36415 - 11905: 0xDB80, - 36416 - 11905: 0xF5DE, - 36417 - 11905: 0xF5E4, - 36418 - 11905: 0xF5E5, - 36419 - 11905: 0xDB81, - 36420 - 11905: 0xCCE3, - 36421 - 11905: 0xDB82, - 36422 - 11905: 0xDB83, - 36423 - 11905: 0xE5BF, - 36424 - 11905: 0xB5B8, - 36425 - 11905: 0xF5E3, - 36426 - 11905: 0xF5E8, - 36427 - 11905: 0xCCA3, - 36428 - 11905: 0xDB84, - 36429 - 11905: 0xDB85, - 36430 - 11905: 0xDB86, - 36431 - 11905: 0xDB87, - 36432 - 11905: 0xDB88, - 36433 - 11905: 0xF5E6, - 36434 - 11905: 0xF5E7, - 36435 - 11905: 0xDB89, - 36436 - 11905: 0xDB8A, - 36437 - 11905: 0xDB8B, - 36438 - 11905: 0xDB8C, - 36439 - 11905: 0xDB8D, - 36440 - 11905: 0xDB8E, - 36441 - 11905: 0xF5BE, - 36442 - 11905: 0xDB8F, - 36443 - 11905: 0xDB90, - 36444 - 11905: 0xDB91, - 36445 - 11905: 0xDB92, - 36446 - 11905: 0xDB93, - 36447 - 11905: 0xDB94, - 36448 - 11905: 0xDB95, - 36449 - 11905: 0xDB96, - 36450 - 11905: 0xDB97, - 36451 - 11905: 0xDB98, - 36452 - 11905: 0xDB99, - 36453 - 11905: 0xDB9A, - 36454 - 11905: 0xB1C4, - 36455 - 11905: 0xDB9B, - 36456 - 11905: 0xDB9C, - 36457 - 11905: 0xF5BF, - 36458 - 11905: 0xDB9D, - 36459 - 11905: 0xDB9E, - 36460 - 11905: 0xB5C5, - 36461 - 11905: 0xB2E4, - 36462 - 11905: 0xDB9F, - 36463 - 11905: 0xF5EC, - 36464 - 11905: 0xF5E9, - 36465 - 11905: 0xDBA0, - 36466 - 11905: 0xB6D7, - 36467 - 11905: 0xDC40, - 36468 - 11905: 0xF5ED, - 36469 - 11905: 0xDC41, - 36470 - 11905: 0xF5EA, - 36471 - 11905: 0xDC42, - 36472 - 11905: 0xDC43, - 36473 - 11905: 0xDC44, - 36474 - 11905: 0xDC45, - 36475 - 11905: 0xDC46, - 36476 - 11905: 0xF5EB, - 36477 - 11905: 0xDC47, - 36478 - 11905: 0xDC48, - 36479 - 11905: 0xB4DA, - 36480 - 11905: 0xDC49, - 36481 - 11905: 0xD4EA, - 36482 - 11905: 0xDC4A, - 36483 - 11905: 0xDC4B, - 36484 - 11905: 0xDC4C, - 36485 - 11905: 0xF5EE, - 36486 - 11905: 0xDC4D, - 36487 - 11905: 0xB3F9, - 36488 - 11905: 0xDC4E, - 36489 - 11905: 0xDC4F, - 36490 - 11905: 0xDC50, - 36491 - 11905: 0xDC51, - 36492 - 11905: 0xDC52, - 36493 - 11905: 0xDC53, - 36494 - 11905: 0xDC54, - 36495 - 11905: 0xF5EF, - 36496 - 11905: 0xF5F1, - 36497 - 11905: 0xDC55, - 36498 - 11905: 0xDC56, - 36499 - 11905: 0xDC57, - 36500 - 11905: 0xF5F0, - 36501 - 11905: 0xDC58, - 36502 - 11905: 0xDC59, - 36503 - 11905: 0xDC5A, - 36504 - 11905: 0xDC5B, - 36505 - 11905: 0xDC5C, - 36506 - 11905: 0xDC5D, - 36507 - 11905: 0xDC5E, - 36508 - 11905: 0xF5F2, - 36509 - 11905: 0xDC5F, - 36510 - 11905: 0xF5F3, - 36511 - 11905: 0xDC60, - 36512 - 11905: 0xDC61, - 36513 - 11905: 0xDC62, - 36514 - 11905: 0xDC63, - 36515 - 11905: 0xDC64, - 36516 - 11905: 0xDC65, - 36517 - 11905: 0xDC66, - 36518 - 11905: 0xDC67, - 36519 - 11905: 0xDC68, - 36520 - 11905: 0xDC69, - 36521 - 11905: 0xDC6A, - 36522 - 11905: 0xDC6B, - 36523 - 11905: 0xC9ED, - 36524 - 11905: 0xB9AA, - 36525 - 11905: 0xDC6C, - 36526 - 11905: 0xDC6D, - 36527 - 11905: 0xC7FB, - 36528 - 11905: 0xDC6E, - 36529 - 11905: 0xDC6F, - 36530 - 11905: 0xB6E3, - 36531 - 11905: 0xDC70, - 36532 - 11905: 0xDC71, - 36533 - 11905: 0xDC72, - 36534 - 11905: 0xDC73, - 36535 - 11905: 0xDC74, - 36536 - 11905: 0xDC75, - 36537 - 11905: 0xDC76, - 36538 - 11905: 0xCCC9, - 36539 - 11905: 0xDC77, - 36540 - 11905: 0xDC78, - 36541 - 11905: 0xDC79, - 36542 - 11905: 0xDC7A, - 36543 - 11905: 0xDC7B, - 36544 - 11905: 0xDC7C, - 36545 - 11905: 0xDC7D, - 36546 - 11905: 0xDC7E, - 36547 - 11905: 0xDC80, - 36548 - 11905: 0xDC81, - 36549 - 11905: 0xDC82, - 36550 - 11905: 0xDC83, - 36551 - 11905: 0xDC84, - 36552 - 11905: 0xDC85, - 36553 - 11905: 0xDC86, - 36554 - 11905: 0xDC87, - 36555 - 11905: 0xDC88, - 36556 - 11905: 0xDC89, - 36557 - 11905: 0xDC8A, - 36558 - 11905: 0xEAA6, - 36559 - 11905: 0xDC8B, - 36560 - 11905: 0xDC8C, - 36561 - 11905: 0xDC8D, - 36562 - 11905: 0xDC8E, - 36563 - 11905: 0xDC8F, - 36564 - 11905: 0xDC90, - 36565 - 11905: 0xDC91, - 36566 - 11905: 0xDC92, - 36567 - 11905: 0xDC93, - 36568 - 11905: 0xDC94, - 36569 - 11905: 0xDC95, - 36570 - 11905: 0xDC96, - 36571 - 11905: 0xDC97, - 36572 - 11905: 0xDC98, - 36573 - 11905: 0xDC99, - 36574 - 11905: 0xDC9A, - 36575 - 11905: 0xDC9B, - 36576 - 11905: 0xDC9C, - 36577 - 11905: 0xDC9D, - 36578 - 11905: 0xDC9E, - 36579 - 11905: 0xDC9F, - 36580 - 11905: 0xDCA0, - 36581 - 11905: 0xDD40, - 36582 - 11905: 0xDD41, - 36583 - 11905: 0xDD42, - 36584 - 11905: 0xDD43, - 36585 - 11905: 0xDD44, - 36586 - 11905: 0xDD45, - 36587 - 11905: 0xDD46, - 36588 - 11905: 0xDD47, - 36589 - 11905: 0xDD48, - 36590 - 11905: 0xDD49, - 36591 - 11905: 0xDD4A, - 36592 - 11905: 0xDD4B, - 36593 - 11905: 0xDD4C, - 36594 - 11905: 0xDD4D, - 36595 - 11905: 0xDD4E, - 36596 - 11905: 0xDD4F, - 36597 - 11905: 0xDD50, - 36598 - 11905: 0xDD51, - 36599 - 11905: 0xDD52, - 36600 - 11905: 0xDD53, - 36601 - 11905: 0xDD54, - 36602 - 11905: 0xDD55, - 36603 - 11905: 0xDD56, - 36604 - 11905: 0xDD57, - 36605 - 11905: 0xDD58, - 36606 - 11905: 0xDD59, - 36607 - 11905: 0xDD5A, - 36608 - 11905: 0xDD5B, - 36609 - 11905: 0xDD5C, - 36610 - 11905: 0xDD5D, - 36611 - 11905: 0xDD5E, - 36612 - 11905: 0xDD5F, - 36613 - 11905: 0xDD60, - 36614 - 11905: 0xDD61, - 36615 - 11905: 0xDD62, - 36616 - 11905: 0xDD63, - 36617 - 11905: 0xDD64, - 36618 - 11905: 0xDD65, - 36619 - 11905: 0xDD66, - 36620 - 11905: 0xDD67, - 36621 - 11905: 0xDD68, - 36622 - 11905: 0xDD69, - 36623 - 11905: 0xDD6A, - 36624 - 11905: 0xDD6B, - 36625 - 11905: 0xDD6C, - 36626 - 11905: 0xDD6D, - 36627 - 11905: 0xDD6E, - 36628 - 11905: 0xDD6F, - 36629 - 11905: 0xDD70, - 36630 - 11905: 0xDD71, - 36631 - 11905: 0xDD72, - 36632 - 11905: 0xDD73, - 36633 - 11905: 0xDD74, - 36634 - 11905: 0xDD75, - 36635 - 11905: 0xDD76, - 36636 - 11905: 0xDD77, - 36637 - 11905: 0xDD78, - 36638 - 11905: 0xDD79, - 36639 - 11905: 0xDD7A, - 36640 - 11905: 0xDD7B, - 36641 - 11905: 0xDD7C, - 36642 - 11905: 0xDD7D, - 36643 - 11905: 0xDD7E, - 36644 - 11905: 0xDD80, - 36645 - 11905: 0xDD81, - 36646 - 11905: 0xDD82, - 36647 - 11905: 0xDD83, - 36648 - 11905: 0xDD84, - 36649 - 11905: 0xDD85, - 36650 - 11905: 0xDD86, - 36651 - 11905: 0xDD87, - 36652 - 11905: 0xDD88, - 36653 - 11905: 0xDD89, - 36654 - 11905: 0xDD8A, - 36655 - 11905: 0xDD8B, - 36656 - 11905: 0xDD8C, - 36657 - 11905: 0xDD8D, - 36658 - 11905: 0xDD8E, - 36659 - 11905: 0xDD8F, - 36660 - 11905: 0xDD90, - 36661 - 11905: 0xDD91, - 36662 - 11905: 0xDD92, - 36663 - 11905: 0xDD93, - 36664 - 11905: 0xDD94, - 36665 - 11905: 0xDD95, - 36666 - 11905: 0xDD96, - 36667 - 11905: 0xDD97, - 36668 - 11905: 0xDD98, - 36669 - 11905: 0xDD99, - 36670 - 11905: 0xDD9A, - 36671 - 11905: 0xDD9B, - 36672 - 11905: 0xDD9C, - 36673 - 11905: 0xDD9D, - 36674 - 11905: 0xDD9E, - 36675 - 11905: 0xDD9F, - 36676 - 11905: 0xDDA0, - 36677 - 11905: 0xDE40, - 36678 - 11905: 0xDE41, - 36679 - 11905: 0xDE42, - 36680 - 11905: 0xDE43, - 36681 - 11905: 0xDE44, - 36682 - 11905: 0xDE45, - 36683 - 11905: 0xDE46, - 36684 - 11905: 0xDE47, - 36685 - 11905: 0xDE48, - 36686 - 11905: 0xDE49, - 36687 - 11905: 0xDE4A, - 36688 - 11905: 0xDE4B, - 36689 - 11905: 0xDE4C, - 36690 - 11905: 0xDE4D, - 36691 - 11905: 0xDE4E, - 36692 - 11905: 0xDE4F, - 36693 - 11905: 0xDE50, - 36694 - 11905: 0xDE51, - 36695 - 11905: 0xDE52, - 36696 - 11905: 0xDE53, - 36697 - 11905: 0xDE54, - 36698 - 11905: 0xDE55, - 36699 - 11905: 0xDE56, - 36700 - 11905: 0xDE57, - 36701 - 11905: 0xDE58, - 36702 - 11905: 0xDE59, - 36703 - 11905: 0xDE5A, - 36704 - 11905: 0xDE5B, - 36705 - 11905: 0xDE5C, - 36706 - 11905: 0xDE5D, - 36707 - 11905: 0xDE5E, - 36708 - 11905: 0xDE5F, - 36709 - 11905: 0xDE60, - 36710 - 11905: 0xB3B5, - 36711 - 11905: 0xD4FE, - 36712 - 11905: 0xB9EC, - 36713 - 11905: 0xD0F9, - 36714 - 11905: 0xDE61, - 36715 - 11905: 0xE9ED, - 36716 - 11905: 0xD7AA, - 36717 - 11905: 0xE9EE, - 36718 - 11905: 0xC2D6, - 36719 - 11905: 0xC8ED, - 36720 - 11905: 0xBAE4, - 36721 - 11905: 0xE9EF, - 36722 - 11905: 0xE9F0, - 36723 - 11905: 0xE9F1, - 36724 - 11905: 0xD6E1, - 36725 - 11905: 0xE9F2, - 36726 - 11905: 0xE9F3, - 36727 - 11905: 0xE9F5, - 36728 - 11905: 0xE9F4, - 36729 - 11905: 0xE9F6, - 36730 - 11905: 0xE9F7, - 36731 - 11905: 0xC7E1, - 36732 - 11905: 0xE9F8, - 36733 - 11905: 0xD4D8, - 36734 - 11905: 0xE9F9, - 36735 - 11905: 0xBDCE, - 36736 - 11905: 0xDE62, - 36737 - 11905: 0xE9FA, - 36738 - 11905: 0xE9FB, - 36739 - 11905: 0xBDCF, - 36740 - 11905: 0xE9FC, - 36741 - 11905: 0xB8A8, - 36742 - 11905: 0xC1BE, - 36743 - 11905: 0xE9FD, - 36744 - 11905: 0xB1B2, - 36745 - 11905: 0xBBD4, - 36746 - 11905: 0xB9F5, - 36747 - 11905: 0xE9FE, - 36748 - 11905: 0xDE63, - 36749 - 11905: 0xEAA1, - 36750 - 11905: 0xEAA2, - 36751 - 11905: 0xEAA3, - 36752 - 11905: 0xB7F8, - 36753 - 11905: 0xBCAD, - 36754 - 11905: 0xDE64, - 36755 - 11905: 0xCAE4, - 36756 - 11905: 0xE0CE, - 36757 - 11905: 0xD4AF, - 36758 - 11905: 0xCFBD, - 36759 - 11905: 0xD5B7, - 36760 - 11905: 0xEAA4, - 36761 - 11905: 0xD5DE, - 36762 - 11905: 0xEAA5, - 36763 - 11905: 0xD0C1, - 36764 - 11905: 0xB9BC, - 36765 - 11905: 0xDE65, - 36766 - 11905: 0xB4C7, - 36767 - 11905: 0xB1D9, - 36768 - 11905: 0xDE66, - 36769 - 11905: 0xDE67, - 36770 - 11905: 0xDE68, - 36771 - 11905: 0xC0B1, - 36772 - 11905: 0xDE69, - 36773 - 11905: 0xDE6A, - 36774 - 11905: 0xDE6B, - 36775 - 11905: 0xDE6C, - 36776 - 11905: 0xB1E6, - 36777 - 11905: 0xB1E7, - 36778 - 11905: 0xDE6D, - 36779 - 11905: 0xB1E8, - 36780 - 11905: 0xDE6E, - 36781 - 11905: 0xDE6F, - 36782 - 11905: 0xDE70, - 36783 - 11905: 0xDE71, - 36784 - 11905: 0xB3BD, - 36785 - 11905: 0xC8E8, - 36786 - 11905: 0xDE72, - 36787 - 11905: 0xDE73, - 36788 - 11905: 0xDE74, - 36789 - 11905: 0xDE75, - 36790 - 11905: 0xE5C1, - 36791 - 11905: 0xDE76, - 36792 - 11905: 0xDE77, - 36793 - 11905: 0xB1DF, - 36794 - 11905: 0xDE78, - 36795 - 11905: 0xDE79, - 36796 - 11905: 0xDE7A, - 36797 - 11905: 0xC1C9, - 36798 - 11905: 0xB4EF, - 36799 - 11905: 0xDE7B, - 36800 - 11905: 0xDE7C, - 36801 - 11905: 0xC7A8, - 36802 - 11905: 0xD3D8, - 36803 - 11905: 0xDE7D, - 36804 - 11905: 0xC6F9, - 36805 - 11905: 0xD1B8, - 36806 - 11905: 0xDE7E, - 36807 - 11905: 0xB9FD, - 36808 - 11905: 0xC2F5, - 36809 - 11905: 0xDE80, - 36810 - 11905: 0xDE81, - 36811 - 11905: 0xDE82, - 36812 - 11905: 0xDE83, - 36813 - 11905: 0xDE84, - 36814 - 11905: 0xD3AD, - 36815 - 11905: 0xDE85, - 36816 - 11905: 0xD4CB, - 36817 - 11905: 0xBDFC, - 36818 - 11905: 0xDE86, - 36819 - 11905: 0xE5C2, - 36820 - 11905: 0xB7B5, - 36821 - 11905: 0xE5C3, - 36822 - 11905: 0xDE87, - 36823 - 11905: 0xDE88, - 36824 - 11905: 0xBBB9, - 36825 - 11905: 0xD5E2, - 36826 - 11905: 0xDE89, - 36827 - 11905: 0xBDF8, - 36828 - 11905: 0xD4B6, - 36829 - 11905: 0xCEA5, - 36830 - 11905: 0xC1AC, - 36831 - 11905: 0xB3D9, - 36832 - 11905: 0xDE8A, - 36833 - 11905: 0xDE8B, - 36834 - 11905: 0xCCF6, - 36835 - 11905: 0xDE8C, - 36836 - 11905: 0xE5C6, - 36837 - 11905: 0xE5C4, - 36838 - 11905: 0xE5C8, - 36839 - 11905: 0xDE8D, - 36840 - 11905: 0xE5CA, - 36841 - 11905: 0xE5C7, - 36842 - 11905: 0xB5CF, - 36843 - 11905: 0xC6C8, - 36844 - 11905: 0xDE8E, - 36845 - 11905: 0xB5FC, - 36846 - 11905: 0xE5C5, - 36847 - 11905: 0xDE8F, - 36848 - 11905: 0xCAF6, - 36849 - 11905: 0xDE90, - 36850 - 11905: 0xDE91, - 36851 - 11905: 0xE5C9, - 36852 - 11905: 0xDE92, - 36853 - 11905: 0xDE93, - 36854 - 11905: 0xDE94, - 36855 - 11905: 0xC3D4, - 36856 - 11905: 0xB1C5, - 36857 - 11905: 0xBCA3, - 36858 - 11905: 0xDE95, - 36859 - 11905: 0xDE96, - 36860 - 11905: 0xDE97, - 36861 - 11905: 0xD7B7, - 36862 - 11905: 0xDE98, - 36863 - 11905: 0xDE99, - 36864 - 11905: 0xCDCB, - 36865 - 11905: 0xCBCD, - 36866 - 11905: 0xCACA, - 36867 - 11905: 0xCCD3, - 36868 - 11905: 0xE5CC, - 36869 - 11905: 0xE5CB, - 36870 - 11905: 0xC4E6, - 36871 - 11905: 0xDE9A, - 36872 - 11905: 0xDE9B, - 36873 - 11905: 0xD1A1, - 36874 - 11905: 0xD1B7, - 36875 - 11905: 0xE5CD, - 36876 - 11905: 0xDE9C, - 36877 - 11905: 0xE5D0, - 36878 - 11905: 0xDE9D, - 36879 - 11905: 0xCDB8, - 36880 - 11905: 0xD6F0, - 36881 - 11905: 0xE5CF, - 36882 - 11905: 0xB5DD, - 36883 - 11905: 0xDE9E, - 36884 - 11905: 0xCDBE, - 36885 - 11905: 0xDE9F, - 36886 - 11905: 0xE5D1, - 36887 - 11905: 0xB6BA, - 36888 - 11905: 0xDEA0, - 36889 - 11905: 0xDF40, - 36890 - 11905: 0xCDA8, - 36891 - 11905: 0xB9E4, - 36892 - 11905: 0xDF41, - 36893 - 11905: 0xCAC5, - 36894 - 11905: 0xB3D1, - 36895 - 11905: 0xCBD9, - 36896 - 11905: 0xD4EC, - 36897 - 11905: 0xE5D2, - 36898 - 11905: 0xB7EA, - 36899 - 11905: 0xDF42, - 36900 - 11905: 0xDF43, - 36901 - 11905: 0xDF44, - 36902 - 11905: 0xE5CE, - 36903 - 11905: 0xDF45, - 36904 - 11905: 0xDF46, - 36905 - 11905: 0xDF47, - 36906 - 11905: 0xDF48, - 36907 - 11905: 0xDF49, - 36908 - 11905: 0xDF4A, - 36909 - 11905: 0xE5D5, - 36910 - 11905: 0xB4FE, - 36911 - 11905: 0xE5D6, - 36912 - 11905: 0xDF4B, - 36913 - 11905: 0xDF4C, - 36914 - 11905: 0xDF4D, - 36915 - 11905: 0xDF4E, - 36916 - 11905: 0xDF4F, - 36917 - 11905: 0xE5D3, - 36918 - 11905: 0xE5D4, - 36919 - 11905: 0xDF50, - 36920 - 11905: 0xD2DD, - 36921 - 11905: 0xDF51, - 36922 - 11905: 0xDF52, - 36923 - 11905: 0xC2DF, - 36924 - 11905: 0xB1C6, - 36925 - 11905: 0xDF53, - 36926 - 11905: 0xD3E2, - 36927 - 11905: 0xDF54, - 36928 - 11905: 0xDF55, - 36929 - 11905: 0xB6DD, - 36930 - 11905: 0xCBEC, - 36931 - 11905: 0xDF56, - 36932 - 11905: 0xE5D7, - 36933 - 11905: 0xDF57, - 36934 - 11905: 0xDF58, - 36935 - 11905: 0xD3F6, - 36936 - 11905: 0xDF59, - 36937 - 11905: 0xDF5A, - 36938 - 11905: 0xDF5B, - 36939 - 11905: 0xDF5C, - 36940 - 11905: 0xDF5D, - 36941 - 11905: 0xB1E9, - 36942 - 11905: 0xDF5E, - 36943 - 11905: 0xB6F4, - 36944 - 11905: 0xE5DA, - 36945 - 11905: 0xE5D8, - 36946 - 11905: 0xE5D9, - 36947 - 11905: 0xB5C0, - 36948 - 11905: 0xDF5F, - 36949 - 11905: 0xDF60, - 36950 - 11905: 0xDF61, - 36951 - 11905: 0xD2C5, - 36952 - 11905: 0xE5DC, - 36953 - 11905: 0xDF62, - 36954 - 11905: 0xDF63, - 36955 - 11905: 0xE5DE, - 36956 - 11905: 0xDF64, - 36957 - 11905: 0xDF65, - 36958 - 11905: 0xDF66, - 36959 - 11905: 0xDF67, - 36960 - 11905: 0xDF68, - 36961 - 11905: 0xDF69, - 36962 - 11905: 0xE5DD, - 36963 - 11905: 0xC7B2, - 36964 - 11905: 0xDF6A, - 36965 - 11905: 0xD2A3, - 36966 - 11905: 0xDF6B, - 36967 - 11905: 0xDF6C, - 36968 - 11905: 0xE5DB, - 36969 - 11905: 0xDF6D, - 36970 - 11905: 0xDF6E, - 36971 - 11905: 0xDF6F, - 36972 - 11905: 0xDF70, - 36973 - 11905: 0xD4E2, - 36974 - 11905: 0xD5DA, - 36975 - 11905: 0xDF71, - 36976 - 11905: 0xDF72, - 36977 - 11905: 0xDF73, - 36978 - 11905: 0xDF74, - 36979 - 11905: 0xDF75, - 36980 - 11905: 0xE5E0, - 36981 - 11905: 0xD7F1, - 36982 - 11905: 0xDF76, - 36983 - 11905: 0xDF77, - 36984 - 11905: 0xDF78, - 36985 - 11905: 0xDF79, - 36986 - 11905: 0xDF7A, - 36987 - 11905: 0xDF7B, - 36988 - 11905: 0xDF7C, - 36989 - 11905: 0xE5E1, - 36990 - 11905: 0xDF7D, - 36991 - 11905: 0xB1DC, - 36992 - 11905: 0xD1FB, - 36993 - 11905: 0xDF7E, - 36994 - 11905: 0xE5E2, - 36995 - 11905: 0xE5E4, - 36996 - 11905: 0xDF80, - 36997 - 11905: 0xDF81, - 36998 - 11905: 0xDF82, - 36999 - 11905: 0xDF83, - 37000 - 11905: 0xE5E3, - 37001 - 11905: 0xDF84, - 37002 - 11905: 0xDF85, - 37003 - 11905: 0xE5E5, - 37004 - 11905: 0xDF86, - 37005 - 11905: 0xDF87, - 37006 - 11905: 0xDF88, - 37007 - 11905: 0xDF89, - 37008 - 11905: 0xDF8A, - 37009 - 11905: 0xD2D8, - 37010 - 11905: 0xDF8B, - 37011 - 11905: 0xB5CB, - 37012 - 11905: 0xDF8C, - 37013 - 11905: 0xE7DF, - 37014 - 11905: 0xDF8D, - 37015 - 11905: 0xDAF5, - 37016 - 11905: 0xDF8E, - 37017 - 11905: 0xDAF8, - 37018 - 11905: 0xDF8F, - 37019 - 11905: 0xDAF6, - 37020 - 11905: 0xDF90, - 37021 - 11905: 0xDAF7, - 37022 - 11905: 0xDF91, - 37023 - 11905: 0xDF92, - 37024 - 11905: 0xDF93, - 37025 - 11905: 0xDAFA, - 37026 - 11905: 0xD0CF, - 37027 - 11905: 0xC4C7, - 37028 - 11905: 0xDF94, - 37029 - 11905: 0xDF95, - 37030 - 11905: 0xB0EE, - 37031 - 11905: 0xDF96, - 37032 - 11905: 0xDF97, - 37033 - 11905: 0xDF98, - 37034 - 11905: 0xD0B0, - 37035 - 11905: 0xDF99, - 37036 - 11905: 0xDAF9, - 37037 - 11905: 0xDF9A, - 37038 - 11905: 0xD3CA, - 37039 - 11905: 0xBAAA, - 37040 - 11905: 0xDBA2, - 37041 - 11905: 0xC7F1, - 37042 - 11905: 0xDF9B, - 37043 - 11905: 0xDAFC, - 37044 - 11905: 0xDAFB, - 37045 - 11905: 0xC9DB, - 37046 - 11905: 0xDAFD, - 37047 - 11905: 0xDF9C, - 37048 - 11905: 0xDBA1, - 37049 - 11905: 0xD7DE, - 37050 - 11905: 0xDAFE, - 37051 - 11905: 0xC1DA, - 37052 - 11905: 0xDF9D, - 37053 - 11905: 0xDF9E, - 37054 - 11905: 0xDBA5, - 37055 - 11905: 0xDF9F, - 37056 - 11905: 0xDFA0, - 37057 - 11905: 0xD3F4, - 37058 - 11905: 0xE040, - 37059 - 11905: 0xE041, - 37060 - 11905: 0xDBA7, - 37061 - 11905: 0xDBA4, - 37062 - 11905: 0xE042, - 37063 - 11905: 0xDBA8, - 37064 - 11905: 0xE043, - 37065 - 11905: 0xE044, - 37066 - 11905: 0xBDBC, - 37067 - 11905: 0xE045, - 37068 - 11905: 0xE046, - 37069 - 11905: 0xE047, - 37070 - 11905: 0xC0C9, - 37071 - 11905: 0xDBA3, - 37072 - 11905: 0xDBA6, - 37073 - 11905: 0xD6A3, - 37074 - 11905: 0xE048, - 37075 - 11905: 0xDBA9, - 37076 - 11905: 0xE049, - 37077 - 11905: 0xE04A, - 37078 - 11905: 0xE04B, - 37079 - 11905: 0xDBAD, - 37080 - 11905: 0xE04C, - 37081 - 11905: 0xE04D, - 37082 - 11905: 0xE04E, - 37083 - 11905: 0xDBAE, - 37084 - 11905: 0xDBAC, - 37085 - 11905: 0xBAC2, - 37086 - 11905: 0xE04F, - 37087 - 11905: 0xE050, - 37088 - 11905: 0xE051, - 37089 - 11905: 0xBFA4, - 37090 - 11905: 0xDBAB, - 37091 - 11905: 0xE052, - 37092 - 11905: 0xE053, - 37093 - 11905: 0xE054, - 37094 - 11905: 0xDBAA, - 37095 - 11905: 0xD4C7, - 37096 - 11905: 0xB2BF, - 37097 - 11905: 0xE055, - 37098 - 11905: 0xE056, - 37099 - 11905: 0xDBAF, - 37100 - 11905: 0xE057, - 37101 - 11905: 0xB9F9, - 37102 - 11905: 0xE058, - 37103 - 11905: 0xDBB0, - 37104 - 11905: 0xE059, - 37105 - 11905: 0xE05A, - 37106 - 11905: 0xE05B, - 37107 - 11905: 0xE05C, - 37108 - 11905: 0xB3BB, - 37109 - 11905: 0xE05D, - 37110 - 11905: 0xE05E, - 37111 - 11905: 0xE05F, - 37112 - 11905: 0xB5A6, - 37113 - 11905: 0xE060, - 37114 - 11905: 0xE061, - 37115 - 11905: 0xE062, - 37116 - 11905: 0xE063, - 37117 - 11905: 0xB6BC, - 37118 - 11905: 0xDBB1, - 37119 - 11905: 0xE064, - 37120 - 11905: 0xE065, - 37121 - 11905: 0xE066, - 37122 - 11905: 0xB6F5, - 37123 - 11905: 0xE067, - 37124 - 11905: 0xDBB2, - 37125 - 11905: 0xE068, - 37126 - 11905: 0xE069, - 37127 - 11905: 0xE06A, - 37128 - 11905: 0xE06B, - 37129 - 11905: 0xE06C, - 37130 - 11905: 0xE06D, - 37131 - 11905: 0xE06E, - 37132 - 11905: 0xE06F, - 37133 - 11905: 0xE070, - 37134 - 11905: 0xE071, - 37135 - 11905: 0xE072, - 37136 - 11905: 0xE073, - 37137 - 11905: 0xE074, - 37138 - 11905: 0xE075, - 37139 - 11905: 0xE076, - 37140 - 11905: 0xE077, - 37141 - 11905: 0xE078, - 37142 - 11905: 0xE079, - 37143 - 11905: 0xE07A, - 37144 - 11905: 0xE07B, - 37145 - 11905: 0xB1C9, - 37146 - 11905: 0xE07C, - 37147 - 11905: 0xE07D, - 37148 - 11905: 0xE07E, - 37149 - 11905: 0xE080, - 37150 - 11905: 0xDBB4, - 37151 - 11905: 0xE081, - 37152 - 11905: 0xE082, - 37153 - 11905: 0xE083, - 37154 - 11905: 0xDBB3, - 37155 - 11905: 0xDBB5, - 37156 - 11905: 0xE084, - 37157 - 11905: 0xE085, - 37158 - 11905: 0xE086, - 37159 - 11905: 0xE087, - 37160 - 11905: 0xE088, - 37161 - 11905: 0xE089, - 37162 - 11905: 0xE08A, - 37163 - 11905: 0xE08B, - 37164 - 11905: 0xE08C, - 37165 - 11905: 0xE08D, - 37166 - 11905: 0xE08E, - 37167 - 11905: 0xDBB7, - 37168 - 11905: 0xE08F, - 37169 - 11905: 0xDBB6, - 37170 - 11905: 0xE090, - 37171 - 11905: 0xE091, - 37172 - 11905: 0xE092, - 37173 - 11905: 0xE093, - 37174 - 11905: 0xE094, - 37175 - 11905: 0xE095, - 37176 - 11905: 0xE096, - 37177 - 11905: 0xDBB8, - 37178 - 11905: 0xE097, - 37179 - 11905: 0xE098, - 37180 - 11905: 0xE099, - 37181 - 11905: 0xE09A, - 37182 - 11905: 0xE09B, - 37183 - 11905: 0xE09C, - 37184 - 11905: 0xE09D, - 37185 - 11905: 0xE09E, - 37186 - 11905: 0xE09F, - 37187 - 11905: 0xDBB9, - 37188 - 11905: 0xE0A0, - 37189 - 11905: 0xE140, - 37190 - 11905: 0xDBBA, - 37191 - 11905: 0xE141, - 37192 - 11905: 0xE142, - 37193 - 11905: 0xD3CF, - 37194 - 11905: 0xF4FA, - 37195 - 11905: 0xC7F5, - 37196 - 11905: 0xD7C3, - 37197 - 11905: 0xC5E4, - 37198 - 11905: 0xF4FC, - 37199 - 11905: 0xF4FD, - 37200 - 11905: 0xF4FB, - 37201 - 11905: 0xE143, - 37202 - 11905: 0xBEC6, - 37203 - 11905: 0xE144, - 37204 - 11905: 0xE145, - 37205 - 11905: 0xE146, - 37206 - 11905: 0xE147, - 37207 - 11905: 0xD0EF, - 37208 - 11905: 0xE148, - 37209 - 11905: 0xE149, - 37210 - 11905: 0xB7D3, - 37211 - 11905: 0xE14A, - 37212 - 11905: 0xE14B, - 37213 - 11905: 0xD4CD, - 37214 - 11905: 0xCCAA, - 37215 - 11905: 0xE14C, - 37216 - 11905: 0xE14D, - 37217 - 11905: 0xF5A2, - 37218 - 11905: 0xF5A1, - 37219 - 11905: 0xBAA8, - 37220 - 11905: 0xF4FE, - 37221 - 11905: 0xCBD6, - 37222 - 11905: 0xE14E, - 37223 - 11905: 0xE14F, - 37224 - 11905: 0xE150, - 37225 - 11905: 0xF5A4, - 37226 - 11905: 0xC0D2, - 37227 - 11905: 0xE151, - 37228 - 11905: 0xB3EA, - 37229 - 11905: 0xE152, - 37230 - 11905: 0xCDAA, - 37231 - 11905: 0xF5A5, - 37232 - 11905: 0xF5A3, - 37233 - 11905: 0xBDB4, - 37234 - 11905: 0xF5A8, - 37235 - 11905: 0xE153, - 37236 - 11905: 0xF5A9, - 37237 - 11905: 0xBDCD, - 37238 - 11905: 0xC3B8, - 37239 - 11905: 0xBFE1, - 37240 - 11905: 0xCBE1, - 37241 - 11905: 0xF5AA, - 37242 - 11905: 0xE154, - 37243 - 11905: 0xE155, - 37244 - 11905: 0xE156, - 37245 - 11905: 0xF5A6, - 37246 - 11905: 0xF5A7, - 37247 - 11905: 0xC4F0, - 37248 - 11905: 0xE157, - 37249 - 11905: 0xE158, - 37250 - 11905: 0xE159, - 37251 - 11905: 0xE15A, - 37252 - 11905: 0xE15B, - 37253 - 11905: 0xF5AC, - 37254 - 11905: 0xE15C, - 37255 - 11905: 0xB4BC, - 37256 - 11905: 0xE15D, - 37257 - 11905: 0xD7ED, - 37258 - 11905: 0xE15E, - 37259 - 11905: 0xB4D7, - 37260 - 11905: 0xF5AB, - 37261 - 11905: 0xF5AE, - 37262 - 11905: 0xE15F, - 37263 - 11905: 0xE160, - 37264 - 11905: 0xF5AD, - 37265 - 11905: 0xF5AF, - 37266 - 11905: 0xD0D1, - 37267 - 11905: 0xE161, - 37268 - 11905: 0xE162, - 37269 - 11905: 0xE163, - 37270 - 11905: 0xE164, - 37271 - 11905: 0xE165, - 37272 - 11905: 0xE166, - 37273 - 11905: 0xE167, - 37274 - 11905: 0xC3D1, - 37275 - 11905: 0xC8A9, - 37276 - 11905: 0xE168, - 37277 - 11905: 0xE169, - 37278 - 11905: 0xE16A, - 37279 - 11905: 0xE16B, - 37280 - 11905: 0xE16C, - 37281 - 11905: 0xE16D, - 37282 - 11905: 0xF5B0, - 37283 - 11905: 0xF5B1, - 37284 - 11905: 0xE16E, - 37285 - 11905: 0xE16F, - 37286 - 11905: 0xE170, - 37287 - 11905: 0xE171, - 37288 - 11905: 0xE172, - 37289 - 11905: 0xE173, - 37290 - 11905: 0xF5B2, - 37291 - 11905: 0xE174, - 37292 - 11905: 0xE175, - 37293 - 11905: 0xF5B3, - 37294 - 11905: 0xF5B4, - 37295 - 11905: 0xF5B5, - 37296 - 11905: 0xE176, - 37297 - 11905: 0xE177, - 37298 - 11905: 0xE178, - 37299 - 11905: 0xE179, - 37300 - 11905: 0xF5B7, - 37301 - 11905: 0xF5B6, - 37302 - 11905: 0xE17A, - 37303 - 11905: 0xE17B, - 37304 - 11905: 0xE17C, - 37305 - 11905: 0xE17D, - 37306 - 11905: 0xF5B8, - 37307 - 11905: 0xE17E, - 37308 - 11905: 0xE180, - 37309 - 11905: 0xE181, - 37310 - 11905: 0xE182, - 37311 - 11905: 0xE183, - 37312 - 11905: 0xE184, - 37313 - 11905: 0xE185, - 37314 - 11905: 0xE186, - 37315 - 11905: 0xE187, - 37316 - 11905: 0xE188, - 37317 - 11905: 0xE189, - 37318 - 11905: 0xE18A, - 37319 - 11905: 0xB2C9, - 37320 - 11905: 0xE18B, - 37321 - 11905: 0xD3D4, - 37322 - 11905: 0xCACD, - 37323 - 11905: 0xE18C, - 37324 - 11905: 0xC0EF, - 37325 - 11905: 0xD6D8, - 37326 - 11905: 0xD2B0, - 37327 - 11905: 0xC1BF, - 37328 - 11905: 0xE18D, - 37329 - 11905: 0xBDF0, - 37330 - 11905: 0xE18E, - 37331 - 11905: 0xE18F, - 37332 - 11905: 0xE190, - 37333 - 11905: 0xE191, - 37334 - 11905: 0xE192, - 37335 - 11905: 0xE193, - 37336 - 11905: 0xE194, - 37337 - 11905: 0xE195, - 37338 - 11905: 0xE196, - 37339 - 11905: 0xE197, - 37340 - 11905: 0xB8AA, - 37341 - 11905: 0xE198, - 37342 - 11905: 0xE199, - 37343 - 11905: 0xE19A, - 37344 - 11905: 0xE19B, - 37345 - 11905: 0xE19C, - 37346 - 11905: 0xE19D, - 37347 - 11905: 0xE19E, - 37348 - 11905: 0xE19F, - 37349 - 11905: 0xE1A0, - 37350 - 11905: 0xE240, - 37351 - 11905: 0xE241, - 37352 - 11905: 0xE242, - 37353 - 11905: 0xE243, - 37354 - 11905: 0xE244, - 37355 - 11905: 0xE245, - 37356 - 11905: 0xE246, - 37357 - 11905: 0xE247, - 37358 - 11905: 0xE248, - 37359 - 11905: 0xE249, - 37360 - 11905: 0xE24A, - 37361 - 11905: 0xE24B, - 37362 - 11905: 0xE24C, - 37363 - 11905: 0xE24D, - 37364 - 11905: 0xE24E, - 37365 - 11905: 0xE24F, - 37366 - 11905: 0xE250, - 37367 - 11905: 0xE251, - 37368 - 11905: 0xE252, - 37369 - 11905: 0xE253, - 37370 - 11905: 0xE254, - 37371 - 11905: 0xE255, - 37372 - 11905: 0xE256, - 37373 - 11905: 0xE257, - 37374 - 11905: 0xE258, - 37375 - 11905: 0xE259, - 37376 - 11905: 0xE25A, - 37377 - 11905: 0xE25B, - 37378 - 11905: 0xE25C, - 37379 - 11905: 0xE25D, - 37380 - 11905: 0xE25E, - 37381 - 11905: 0xE25F, - 37382 - 11905: 0xE260, - 37383 - 11905: 0xE261, - 37384 - 11905: 0xE262, - 37385 - 11905: 0xE263, - 37386 - 11905: 0xE264, - 37387 - 11905: 0xE265, - 37388 - 11905: 0xE266, - 37389 - 11905: 0xE267, - 37390 - 11905: 0xE268, - 37391 - 11905: 0xE269, - 37392 - 11905: 0xE26A, - 37393 - 11905: 0xE26B, - 37394 - 11905: 0xE26C, - 37395 - 11905: 0xE26D, - 37396 - 11905: 0xE26E, - 37397 - 11905: 0xE26F, - 37398 - 11905: 0xE270, - 37399 - 11905: 0xE271, - 37400 - 11905: 0xE272, - 37401 - 11905: 0xE273, - 37402 - 11905: 0xE274, - 37403 - 11905: 0xE275, - 37404 - 11905: 0xE276, - 37405 - 11905: 0xE277, - 37406 - 11905: 0xE278, - 37407 - 11905: 0xE279, - 37408 - 11905: 0xE27A, - 37409 - 11905: 0xE27B, - 37410 - 11905: 0xE27C, - 37411 - 11905: 0xE27D, - 37412 - 11905: 0xE27E, - 37413 - 11905: 0xE280, - 37414 - 11905: 0xE281, - 37415 - 11905: 0xE282, - 37416 - 11905: 0xE283, - 37417 - 11905: 0xE284, - 37418 - 11905: 0xE285, - 37419 - 11905: 0xE286, - 37420 - 11905: 0xE287, - 37421 - 11905: 0xE288, - 37422 - 11905: 0xE289, - 37423 - 11905: 0xE28A, - 37424 - 11905: 0xE28B, - 37425 - 11905: 0xE28C, - 37426 - 11905: 0xE28D, - 37427 - 11905: 0xE28E, - 37428 - 11905: 0xE28F, - 37429 - 11905: 0xE290, - 37430 - 11905: 0xE291, - 37431 - 11905: 0xE292, - 37432 - 11905: 0xE293, - 37433 - 11905: 0xE294, - 37434 - 11905: 0xE295, - 37435 - 11905: 0xE296, - 37436 - 11905: 0xE297, - 37437 - 11905: 0xE298, - 37438 - 11905: 0xE299, - 37439 - 11905: 0xE29A, - 37440 - 11905: 0xE29B, - 37441 - 11905: 0xE29C, - 37442 - 11905: 0xE29D, - 37443 - 11905: 0xE29E, - 37444 - 11905: 0xE29F, - 37445 - 11905: 0xE2A0, - 37446 - 11905: 0xE340, - 37447 - 11905: 0xE341, - 37448 - 11905: 0xE342, - 37449 - 11905: 0xE343, - 37450 - 11905: 0xE344, - 37451 - 11905: 0xE345, - 37452 - 11905: 0xE346, - 37453 - 11905: 0xE347, - 37454 - 11905: 0xE348, - 37455 - 11905: 0xE349, - 37456 - 11905: 0xE34A, - 37457 - 11905: 0xE34B, - 37458 - 11905: 0xE34C, - 37459 - 11905: 0xE34D, - 37460 - 11905: 0xE34E, - 37461 - 11905: 0xE34F, - 37462 - 11905: 0xE350, - 37463 - 11905: 0xE351, - 37464 - 11905: 0xE352, - 37465 - 11905: 0xE353, - 37466 - 11905: 0xE354, - 37467 - 11905: 0xE355, - 37468 - 11905: 0xE356, - 37469 - 11905: 0xE357, - 37470 - 11905: 0xE358, - 37471 - 11905: 0xE359, - 37472 - 11905: 0xE35A, - 37473 - 11905: 0xE35B, - 37474 - 11905: 0xE35C, - 37475 - 11905: 0xE35D, - 37476 - 11905: 0xE35E, - 37477 - 11905: 0xE35F, - 37478 - 11905: 0xE360, - 37479 - 11905: 0xE361, - 37480 - 11905: 0xE362, - 37481 - 11905: 0xE363, - 37482 - 11905: 0xE364, - 37483 - 11905: 0xE365, - 37484 - 11905: 0xE366, - 37485 - 11905: 0xE367, - 37486 - 11905: 0xE368, - 37487 - 11905: 0xE369, - 37488 - 11905: 0xE36A, - 37489 - 11905: 0xE36B, - 37490 - 11905: 0xE36C, - 37491 - 11905: 0xE36D, - 37492 - 11905: 0xBCF8, - 37493 - 11905: 0xE36E, - 37494 - 11905: 0xE36F, - 37495 - 11905: 0xE370, - 37496 - 11905: 0xE371, - 37497 - 11905: 0xE372, - 37498 - 11905: 0xE373, - 37499 - 11905: 0xE374, - 37500 - 11905: 0xE375, - 37501 - 11905: 0xE376, - 37502 - 11905: 0xE377, - 37503 - 11905: 0xE378, - 37504 - 11905: 0xE379, - 37505 - 11905: 0xE37A, - 37506 - 11905: 0xE37B, - 37507 - 11905: 0xE37C, - 37508 - 11905: 0xE37D, - 37509 - 11905: 0xE37E, - 37510 - 11905: 0xE380, - 37511 - 11905: 0xE381, - 37512 - 11905: 0xE382, - 37513 - 11905: 0xE383, - 37514 - 11905: 0xE384, - 37515 - 11905: 0xE385, - 37516 - 11905: 0xE386, - 37517 - 11905: 0xE387, - 37518 - 11905: 0xF6C6, - 37519 - 11905: 0xE388, - 37520 - 11905: 0xE389, - 37521 - 11905: 0xE38A, - 37522 - 11905: 0xE38B, - 37523 - 11905: 0xE38C, - 37524 - 11905: 0xE38D, - 37525 - 11905: 0xE38E, - 37526 - 11905: 0xE38F, - 37527 - 11905: 0xE390, - 37528 - 11905: 0xE391, - 37529 - 11905: 0xE392, - 37530 - 11905: 0xE393, - 37531 - 11905: 0xE394, - 37532 - 11905: 0xE395, - 37533 - 11905: 0xE396, - 37534 - 11905: 0xE397, - 37535 - 11905: 0xE398, - 37536 - 11905: 0xE399, - 37537 - 11905: 0xE39A, - 37538 - 11905: 0xE39B, - 37539 - 11905: 0xE39C, - 37540 - 11905: 0xE39D, - 37541 - 11905: 0xE39E, - 37542 - 11905: 0xE39F, - 37543 - 11905: 0xE3A0, - 37544 - 11905: 0xE440, - 37545 - 11905: 0xE441, - 37546 - 11905: 0xE442, - 37547 - 11905: 0xE443, - 37548 - 11905: 0xE444, - 37549 - 11905: 0xE445, - 37550 - 11905: 0xF6C7, - 37551 - 11905: 0xE446, - 37552 - 11905: 0xE447, - 37553 - 11905: 0xE448, - 37554 - 11905: 0xE449, - 37555 - 11905: 0xE44A, - 37556 - 11905: 0xE44B, - 37557 - 11905: 0xE44C, - 37558 - 11905: 0xE44D, - 37559 - 11905: 0xE44E, - 37560 - 11905: 0xE44F, - 37561 - 11905: 0xE450, - 37562 - 11905: 0xE451, - 37563 - 11905: 0xE452, - 37564 - 11905: 0xE453, - 37565 - 11905: 0xE454, - 37566 - 11905: 0xE455, - 37567 - 11905: 0xE456, - 37568 - 11905: 0xE457, - 37569 - 11905: 0xE458, - 37570 - 11905: 0xE459, - 37571 - 11905: 0xE45A, - 37572 - 11905: 0xE45B, - 37573 - 11905: 0xE45C, - 37574 - 11905: 0xE45D, - 37575 - 11905: 0xE45E, - 37576 - 11905: 0xF6C8, - 37577 - 11905: 0xE45F, - 37578 - 11905: 0xE460, - 37579 - 11905: 0xE461, - 37580 - 11905: 0xE462, - 37581 - 11905: 0xE463, - 37582 - 11905: 0xE464, - 37583 - 11905: 0xE465, - 37584 - 11905: 0xE466, - 37585 - 11905: 0xE467, - 37586 - 11905: 0xE468, - 37587 - 11905: 0xE469, - 37588 - 11905: 0xE46A, - 37589 - 11905: 0xE46B, - 37590 - 11905: 0xE46C, - 37591 - 11905: 0xE46D, - 37592 - 11905: 0xE46E, - 37593 - 11905: 0xE46F, - 37594 - 11905: 0xE470, - 37595 - 11905: 0xE471, - 37596 - 11905: 0xE472, - 37597 - 11905: 0xE473, - 37598 - 11905: 0xE474, - 37599 - 11905: 0xE475, - 37600 - 11905: 0xE476, - 37601 - 11905: 0xE477, - 37602 - 11905: 0xE478, - 37603 - 11905: 0xE479, - 37604 - 11905: 0xE47A, - 37605 - 11905: 0xE47B, - 37606 - 11905: 0xE47C, - 37607 - 11905: 0xE47D, - 37608 - 11905: 0xE47E, - 37609 - 11905: 0xE480, - 37610 - 11905: 0xE481, - 37611 - 11905: 0xE482, - 37612 - 11905: 0xE483, - 37613 - 11905: 0xE484, - 37614 - 11905: 0xE485, - 37615 - 11905: 0xE486, - 37616 - 11905: 0xE487, - 37617 - 11905: 0xE488, - 37618 - 11905: 0xE489, - 37619 - 11905: 0xE48A, - 37620 - 11905: 0xE48B, - 37621 - 11905: 0xE48C, - 37622 - 11905: 0xE48D, - 37623 - 11905: 0xE48E, - 37624 - 11905: 0xE48F, - 37625 - 11905: 0xE490, - 37626 - 11905: 0xE491, - 37627 - 11905: 0xE492, - 37628 - 11905: 0xE493, - 37629 - 11905: 0xE494, - 37630 - 11905: 0xE495, - 37631 - 11905: 0xE496, - 37632 - 11905: 0xE497, - 37633 - 11905: 0xE498, - 37634 - 11905: 0xE499, - 37635 - 11905: 0xE49A, - 37636 - 11905: 0xE49B, - 37637 - 11905: 0xE49C, - 37638 - 11905: 0xE49D, - 37639 - 11905: 0xE49E, - 37640 - 11905: 0xE49F, - 37641 - 11905: 0xE4A0, - 37642 - 11905: 0xE540, - 37643 - 11905: 0xE541, - 37644 - 11905: 0xE542, - 37645 - 11905: 0xE543, - 37646 - 11905: 0xE544, - 37647 - 11905: 0xE545, - 37648 - 11905: 0xE546, - 37649 - 11905: 0xE547, - 37650 - 11905: 0xE548, - 37651 - 11905: 0xE549, - 37652 - 11905: 0xE54A, - 37653 - 11905: 0xE54B, - 37654 - 11905: 0xE54C, - 37655 - 11905: 0xE54D, - 37656 - 11905: 0xE54E, - 37657 - 11905: 0xE54F, - 37658 - 11905: 0xE550, - 37659 - 11905: 0xE551, - 37660 - 11905: 0xE552, - 37661 - 11905: 0xE553, - 37662 - 11905: 0xE554, - 37663 - 11905: 0xE555, - 37664 - 11905: 0xE556, - 37665 - 11905: 0xE557, - 37666 - 11905: 0xE558, - 37667 - 11905: 0xE559, - 37668 - 11905: 0xE55A, - 37669 - 11905: 0xE55B, - 37670 - 11905: 0xE55C, - 37671 - 11905: 0xE55D, - 37672 - 11905: 0xE55E, - 37673 - 11905: 0xE55F, - 37674 - 11905: 0xE560, - 37675 - 11905: 0xE561, - 37676 - 11905: 0xE562, - 37677 - 11905: 0xE563, - 37678 - 11905: 0xE564, - 37679 - 11905: 0xE565, - 37680 - 11905: 0xE566, - 37681 - 11905: 0xE567, - 37682 - 11905: 0xE568, - 37683 - 11905: 0xE569, - 37684 - 11905: 0xE56A, - 37685 - 11905: 0xE56B, - 37686 - 11905: 0xE56C, - 37687 - 11905: 0xE56D, - 37688 - 11905: 0xE56E, - 37689 - 11905: 0xE56F, - 37690 - 11905: 0xE570, - 37691 - 11905: 0xE571, - 37692 - 11905: 0xE572, - 37693 - 11905: 0xE573, - 37694 - 11905: 0xF6C9, - 37695 - 11905: 0xE574, - 37696 - 11905: 0xE575, - 37697 - 11905: 0xE576, - 37698 - 11905: 0xE577, - 37699 - 11905: 0xE578, - 37700 - 11905: 0xE579, - 37701 - 11905: 0xE57A, - 37702 - 11905: 0xE57B, - 37703 - 11905: 0xE57C, - 37704 - 11905: 0xE57D, - 37705 - 11905: 0xE57E, - 37706 - 11905: 0xE580, - 37707 - 11905: 0xE581, - 37708 - 11905: 0xE582, - 37709 - 11905: 0xE583, - 37710 - 11905: 0xE584, - 37711 - 11905: 0xE585, - 37712 - 11905: 0xE586, - 37713 - 11905: 0xE587, - 37714 - 11905: 0xE588, - 37715 - 11905: 0xE589, - 37716 - 11905: 0xE58A, - 37717 - 11905: 0xE58B, - 37718 - 11905: 0xE58C, - 37719 - 11905: 0xE58D, - 37720 - 11905: 0xE58E, - 37721 - 11905: 0xE58F, - 37722 - 11905: 0xE590, - 37723 - 11905: 0xE591, - 37724 - 11905: 0xE592, - 37725 - 11905: 0xE593, - 37726 - 11905: 0xE594, - 37727 - 11905: 0xE595, - 37728 - 11905: 0xE596, - 37729 - 11905: 0xE597, - 37730 - 11905: 0xE598, - 37731 - 11905: 0xE599, - 37732 - 11905: 0xE59A, - 37733 - 11905: 0xE59B, - 37734 - 11905: 0xE59C, - 37735 - 11905: 0xE59D, - 37736 - 11905: 0xE59E, - 37737 - 11905: 0xE59F, - 37738 - 11905: 0xF6CA, - 37739 - 11905: 0xE5A0, - 37740 - 11905: 0xE640, - 37741 - 11905: 0xE641, - 37742 - 11905: 0xE642, - 37743 - 11905: 0xE643, - 37744 - 11905: 0xE644, - 37745 - 11905: 0xE645, - 37746 - 11905: 0xE646, - 37747 - 11905: 0xE647, - 37748 - 11905: 0xE648, - 37749 - 11905: 0xE649, - 37750 - 11905: 0xE64A, - 37751 - 11905: 0xE64B, - 37752 - 11905: 0xE64C, - 37753 - 11905: 0xE64D, - 37754 - 11905: 0xE64E, - 37755 - 11905: 0xE64F, - 37756 - 11905: 0xE650, - 37757 - 11905: 0xE651, - 37758 - 11905: 0xE652, - 37759 - 11905: 0xE653, - 37760 - 11905: 0xE654, - 37761 - 11905: 0xE655, - 37762 - 11905: 0xE656, - 37763 - 11905: 0xE657, - 37764 - 11905: 0xE658, - 37765 - 11905: 0xE659, - 37766 - 11905: 0xE65A, - 37767 - 11905: 0xE65B, - 37768 - 11905: 0xE65C, - 37769 - 11905: 0xE65D, - 37770 - 11905: 0xE65E, - 37771 - 11905: 0xE65F, - 37772 - 11905: 0xE660, - 37773 - 11905: 0xE661, - 37774 - 11905: 0xE662, - 37775 - 11905: 0xF6CC, - 37776 - 11905: 0xE663, - 37777 - 11905: 0xE664, - 37778 - 11905: 0xE665, - 37779 - 11905: 0xE666, - 37780 - 11905: 0xE667, - 37781 - 11905: 0xE668, - 37782 - 11905: 0xE669, - 37783 - 11905: 0xE66A, - 37784 - 11905: 0xE66B, - 37785 - 11905: 0xE66C, - 37786 - 11905: 0xE66D, - 37787 - 11905: 0xE66E, - 37788 - 11905: 0xE66F, - 37789 - 11905: 0xE670, - 37790 - 11905: 0xE671, - 37791 - 11905: 0xE672, - 37792 - 11905: 0xE673, - 37793 - 11905: 0xE674, - 37794 - 11905: 0xE675, - 37795 - 11905: 0xE676, - 37796 - 11905: 0xE677, - 37797 - 11905: 0xE678, - 37798 - 11905: 0xE679, - 37799 - 11905: 0xE67A, - 37800 - 11905: 0xE67B, - 37801 - 11905: 0xE67C, - 37802 - 11905: 0xE67D, - 37803 - 11905: 0xE67E, - 37804 - 11905: 0xE680, - 37805 - 11905: 0xE681, - 37806 - 11905: 0xE682, - 37807 - 11905: 0xE683, - 37808 - 11905: 0xE684, - 37809 - 11905: 0xE685, - 37810 - 11905: 0xE686, - 37811 - 11905: 0xE687, - 37812 - 11905: 0xE688, - 37813 - 11905: 0xE689, - 37814 - 11905: 0xE68A, - 37815 - 11905: 0xE68B, - 37816 - 11905: 0xE68C, - 37817 - 11905: 0xE68D, - 37818 - 11905: 0xE68E, - 37819 - 11905: 0xE68F, - 37820 - 11905: 0xE690, - 37821 - 11905: 0xE691, - 37822 - 11905: 0xE692, - 37823 - 11905: 0xE693, - 37824 - 11905: 0xE694, - 37825 - 11905: 0xE695, - 37826 - 11905: 0xE696, - 37827 - 11905: 0xE697, - 37828 - 11905: 0xE698, - 37829 - 11905: 0xE699, - 37830 - 11905: 0xE69A, - 37831 - 11905: 0xE69B, - 37832 - 11905: 0xE69C, - 37833 - 11905: 0xE69D, - 37834 - 11905: 0xF6CB, - 37835 - 11905: 0xE69E, - 37836 - 11905: 0xE69F, - 37837 - 11905: 0xE6A0, - 37838 - 11905: 0xE740, - 37839 - 11905: 0xE741, - 37840 - 11905: 0xE742, - 37841 - 11905: 0xE743, - 37842 - 11905: 0xE744, - 37843 - 11905: 0xE745, - 37844 - 11905: 0xE746, - 37845 - 11905: 0xE747, - 37846 - 11905: 0xF7E9, - 37847 - 11905: 0xE748, - 37848 - 11905: 0xE749, - 37849 - 11905: 0xE74A, - 37850 - 11905: 0xE74B, - 37851 - 11905: 0xE74C, - 37852 - 11905: 0xE74D, - 37853 - 11905: 0xE74E, - 37854 - 11905: 0xE74F, - 37855 - 11905: 0xE750, - 37856 - 11905: 0xE751, - 37857 - 11905: 0xE752, - 37858 - 11905: 0xE753, - 37859 - 11905: 0xE754, - 37860 - 11905: 0xE755, - 37861 - 11905: 0xE756, - 37862 - 11905: 0xE757, - 37863 - 11905: 0xE758, - 37864 - 11905: 0xE759, - 37865 - 11905: 0xE75A, - 37866 - 11905: 0xE75B, - 37867 - 11905: 0xE75C, - 37868 - 11905: 0xE75D, - 37869 - 11905: 0xE75E, - 37870 - 11905: 0xE75F, - 37871 - 11905: 0xE760, - 37872 - 11905: 0xE761, - 37873 - 11905: 0xE762, - 37874 - 11905: 0xE763, - 37875 - 11905: 0xE764, - 37876 - 11905: 0xE765, - 37877 - 11905: 0xE766, - 37878 - 11905: 0xE767, - 37879 - 11905: 0xE768, - 37880 - 11905: 0xE769, - 37881 - 11905: 0xE76A, - 37882 - 11905: 0xE76B, - 37883 - 11905: 0xE76C, - 37884 - 11905: 0xE76D, - 37885 - 11905: 0xE76E, - 37886 - 11905: 0xE76F, - 37887 - 11905: 0xE770, - 37888 - 11905: 0xE771, - 37889 - 11905: 0xE772, - 37890 - 11905: 0xE773, - 37891 - 11905: 0xE774, - 37892 - 11905: 0xE775, - 37893 - 11905: 0xE776, - 37894 - 11905: 0xE777, - 37895 - 11905: 0xE778, - 37896 - 11905: 0xE779, - 37897 - 11905: 0xE77A, - 37898 - 11905: 0xE77B, - 37899 - 11905: 0xE77C, - 37900 - 11905: 0xE77D, - 37901 - 11905: 0xE77E, - 37902 - 11905: 0xE780, - 37903 - 11905: 0xE781, - 37904 - 11905: 0xE782, - 37905 - 11905: 0xE783, - 37906 - 11905: 0xE784, - 37907 - 11905: 0xE785, - 37908 - 11905: 0xE786, - 37909 - 11905: 0xE787, - 37910 - 11905: 0xE788, - 37911 - 11905: 0xE789, - 37912 - 11905: 0xE78A, - 37913 - 11905: 0xE78B, - 37914 - 11905: 0xE78C, - 37915 - 11905: 0xE78D, - 37916 - 11905: 0xE78E, - 37917 - 11905: 0xE78F, - 37918 - 11905: 0xE790, - 37919 - 11905: 0xE791, - 37920 - 11905: 0xE792, - 37921 - 11905: 0xE793, - 37922 - 11905: 0xE794, - 37923 - 11905: 0xE795, - 37924 - 11905: 0xE796, - 37925 - 11905: 0xE797, - 37926 - 11905: 0xE798, - 37927 - 11905: 0xE799, - 37928 - 11905: 0xE79A, - 37929 - 11905: 0xE79B, - 37930 - 11905: 0xE79C, - 37931 - 11905: 0xE79D, - 37932 - 11905: 0xE79E, - 37933 - 11905: 0xE79F, - 37934 - 11905: 0xE7A0, - 37935 - 11905: 0xE840, - 37936 - 11905: 0xE841, - 37937 - 11905: 0xE842, - 37938 - 11905: 0xE843, - 37939 - 11905: 0xE844, - 37940 - 11905: 0xE845, - 37941 - 11905: 0xE846, - 37942 - 11905: 0xE847, - 37943 - 11905: 0xE848, - 37944 - 11905: 0xE849, - 37945 - 11905: 0xE84A, - 37946 - 11905: 0xE84B, - 37947 - 11905: 0xE84C, - 37948 - 11905: 0xE84D, - 37949 - 11905: 0xE84E, - 37950 - 11905: 0xF6CD, - 37951 - 11905: 0xE84F, - 37952 - 11905: 0xE850, - 37953 - 11905: 0xE851, - 37954 - 11905: 0xE852, - 37955 - 11905: 0xE853, - 37956 - 11905: 0xE854, - 37957 - 11905: 0xE855, - 37958 - 11905: 0xE856, - 37959 - 11905: 0xE857, - 37960 - 11905: 0xE858, - 37961 - 11905: 0xE859, - 37962 - 11905: 0xE85A, - 37963 - 11905: 0xE85B, - 37964 - 11905: 0xE85C, - 37965 - 11905: 0xE85D, - 37966 - 11905: 0xE85E, - 37967 - 11905: 0xE85F, - 37968 - 11905: 0xE860, - 37969 - 11905: 0xE861, - 37970 - 11905: 0xE862, - 37971 - 11905: 0xE863, - 37972 - 11905: 0xE864, - 37973 - 11905: 0xE865, - 37974 - 11905: 0xE866, - 37975 - 11905: 0xE867, - 37976 - 11905: 0xE868, - 37977 - 11905: 0xE869, - 37978 - 11905: 0xE86A, - 37979 - 11905: 0xE86B, - 37980 - 11905: 0xE86C, - 37981 - 11905: 0xE86D, - 37982 - 11905: 0xE86E, - 37983 - 11905: 0xE86F, - 37984 - 11905: 0xE870, - 37985 - 11905: 0xE871, - 37986 - 11905: 0xE872, - 37987 - 11905: 0xE873, - 37988 - 11905: 0xE874, - 37989 - 11905: 0xE875, - 37990 - 11905: 0xE876, - 37991 - 11905: 0xE877, - 37992 - 11905: 0xE878, - 37993 - 11905: 0xE879, - 37994 - 11905: 0xE87A, - 37995 - 11905: 0xF6CE, - 37996 - 11905: 0xE87B, - 37997 - 11905: 0xE87C, - 37998 - 11905: 0xE87D, - 37999 - 11905: 0xE87E, - 38000 - 11905: 0xE880, - 38001 - 11905: 0xE881, - 38002 - 11905: 0xE882, - 38003 - 11905: 0xE883, - 38004 - 11905: 0xE884, - 38005 - 11905: 0xE885, - 38006 - 11905: 0xE886, - 38007 - 11905: 0xE887, - 38008 - 11905: 0xE888, - 38009 - 11905: 0xE889, - 38010 - 11905: 0xE88A, - 38011 - 11905: 0xE88B, - 38012 - 11905: 0xE88C, - 38013 - 11905: 0xE88D, - 38014 - 11905: 0xE88E, - 38015 - 11905: 0xE88F, - 38016 - 11905: 0xE890, - 38017 - 11905: 0xE891, - 38018 - 11905: 0xE892, - 38019 - 11905: 0xE893, - 38020 - 11905: 0xE894, - 38021 - 11905: 0xEEC4, - 38022 - 11905: 0xEEC5, - 38023 - 11905: 0xEEC6, - 38024 - 11905: 0xD5EB, - 38025 - 11905: 0xB6A4, - 38026 - 11905: 0xEEC8, - 38027 - 11905: 0xEEC7, - 38028 - 11905: 0xEEC9, - 38029 - 11905: 0xEECA, - 38030 - 11905: 0xC7A5, - 38031 - 11905: 0xEECB, - 38032 - 11905: 0xEECC, - 38033 - 11905: 0xE895, - 38034 - 11905: 0xB7B0, - 38035 - 11905: 0xB5F6, - 38036 - 11905: 0xEECD, - 38037 - 11905: 0xEECF, - 38038 - 11905: 0xE896, - 38039 - 11905: 0xEECE, - 38040 - 11905: 0xE897, - 38041 - 11905: 0xB8C6, - 38042 - 11905: 0xEED0, - 38043 - 11905: 0xEED1, - 38044 - 11905: 0xEED2, - 38045 - 11905: 0xB6DB, - 38046 - 11905: 0xB3AE, - 38047 - 11905: 0xD6D3, - 38048 - 11905: 0xC4C6, - 38049 - 11905: 0xB1B5, - 38050 - 11905: 0xB8D6, - 38051 - 11905: 0xEED3, - 38052 - 11905: 0xEED4, - 38053 - 11905: 0xD4BF, - 38054 - 11905: 0xC7D5, - 38055 - 11905: 0xBEFB, - 38056 - 11905: 0xCED9, - 38057 - 11905: 0xB9B3, - 38058 - 11905: 0xEED6, - 38059 - 11905: 0xEED5, - 38060 - 11905: 0xEED8, - 38061 - 11905: 0xEED7, - 38062 - 11905: 0xC5A5, - 38063 - 11905: 0xEED9, - 38064 - 11905: 0xEEDA, - 38065 - 11905: 0xC7AE, - 38066 - 11905: 0xEEDB, - 38067 - 11905: 0xC7AF, - 38068 - 11905: 0xEEDC, - 38069 - 11905: 0xB2A7, - 38070 - 11905: 0xEEDD, - 38071 - 11905: 0xEEDE, - 38072 - 11905: 0xEEDF, - 38073 - 11905: 0xEEE0, - 38074 - 11905: 0xEEE1, - 38075 - 11905: 0xD7EA, - 38076 - 11905: 0xEEE2, - 38077 - 11905: 0xEEE3, - 38078 - 11905: 0xBCD8, - 38079 - 11905: 0xEEE4, - 38080 - 11905: 0xD3CB, - 38081 - 11905: 0xCCFA, - 38082 - 11905: 0xB2AC, - 38083 - 11905: 0xC1E5, - 38084 - 11905: 0xEEE5, - 38085 - 11905: 0xC7A6, - 38086 - 11905: 0xC3AD, - 38087 - 11905: 0xE898, - 38088 - 11905: 0xEEE6, - 38089 - 11905: 0xEEE7, - 38090 - 11905: 0xEEE8, - 38091 - 11905: 0xEEE9, - 38092 - 11905: 0xEEEA, - 38093 - 11905: 0xEEEB, - 38094 - 11905: 0xEEEC, - 38095 - 11905: 0xE899, - 38096 - 11905: 0xEEED, - 38097 - 11905: 0xEEEE, - 38098 - 11905: 0xEEEF, - 38099 - 11905: 0xE89A, - 38100 - 11905: 0xE89B, - 38101 - 11905: 0xEEF0, - 38102 - 11905: 0xEEF1, - 38103 - 11905: 0xEEF2, - 38104 - 11905: 0xEEF4, - 38105 - 11905: 0xEEF3, - 38106 - 11905: 0xE89C, - 38107 - 11905: 0xEEF5, - 38108 - 11905: 0xCDAD, - 38109 - 11905: 0xC2C1, - 38110 - 11905: 0xEEF6, - 38111 - 11905: 0xEEF7, - 38112 - 11905: 0xEEF8, - 38113 - 11905: 0xD5A1, - 38114 - 11905: 0xEEF9, - 38115 - 11905: 0xCFB3, - 38116 - 11905: 0xEEFA, - 38117 - 11905: 0xEEFB, - 38118 - 11905: 0xE89D, - 38119 - 11905: 0xEEFC, - 38120 - 11905: 0xEEFD, - 38121 - 11905: 0xEFA1, - 38122 - 11905: 0xEEFE, - 38123 - 11905: 0xEFA2, - 38124 - 11905: 0xB8F5, - 38125 - 11905: 0xC3FA, - 38126 - 11905: 0xEFA3, - 38127 - 11905: 0xEFA4, - 38128 - 11905: 0xBDC2, - 38129 - 11905: 0xD2BF, - 38130 - 11905: 0xB2F9, - 38131 - 11905: 0xEFA5, - 38132 - 11905: 0xEFA6, - 38133 - 11905: 0xEFA7, - 38134 - 11905: 0xD2F8, - 38135 - 11905: 0xEFA8, - 38136 - 11905: 0xD6FD, - 38137 - 11905: 0xEFA9, - 38138 - 11905: 0xC6CC, - 38139 - 11905: 0xE89E, - 38140 - 11905: 0xEFAA, - 38141 - 11905: 0xEFAB, - 38142 - 11905: 0xC1B4, - 38143 - 11905: 0xEFAC, - 38144 - 11905: 0xCFFA, - 38145 - 11905: 0xCBF8, - 38146 - 11905: 0xEFAE, - 38147 - 11905: 0xEFAD, - 38148 - 11905: 0xB3FA, - 38149 - 11905: 0xB9F8, - 38150 - 11905: 0xEFAF, - 38151 - 11905: 0xEFB0, - 38152 - 11905: 0xD0E2, - 38153 - 11905: 0xEFB1, - 38154 - 11905: 0xEFB2, - 38155 - 11905: 0xB7E6, - 38156 - 11905: 0xD0BF, - 38157 - 11905: 0xEFB3, - 38158 - 11905: 0xEFB4, - 38159 - 11905: 0xEFB5, - 38160 - 11905: 0xC8F1, - 38161 - 11905: 0xCCE0, - 38162 - 11905: 0xEFB6, - 38163 - 11905: 0xEFB7, - 38164 - 11905: 0xEFB8, - 38165 - 11905: 0xEFB9, - 38166 - 11905: 0xEFBA, - 38167 - 11905: 0xD5E0, - 38168 - 11905: 0xEFBB, - 38169 - 11905: 0xB4ED, - 38170 - 11905: 0xC3AA, - 38171 - 11905: 0xEFBC, - 38172 - 11905: 0xE89F, - 38173 - 11905: 0xEFBD, - 38174 - 11905: 0xEFBE, - 38175 - 11905: 0xEFBF, - 38176 - 11905: 0xE8A0, - 38177 - 11905: 0xCEFD, - 38178 - 11905: 0xEFC0, - 38179 - 11905: 0xC2E0, - 38180 - 11905: 0xB4B8, - 38181 - 11905: 0xD7B6, - 38182 - 11905: 0xBDF5, - 38183 - 11905: 0xE940, - 38184 - 11905: 0xCFC7, - 38185 - 11905: 0xEFC3, - 38186 - 11905: 0xEFC1, - 38187 - 11905: 0xEFC2, - 38188 - 11905: 0xEFC4, - 38189 - 11905: 0xB6A7, - 38190 - 11905: 0xBCFC, - 38191 - 11905: 0xBEE2, - 38192 - 11905: 0xC3CC, - 38193 - 11905: 0xEFC5, - 38194 - 11905: 0xEFC6, - 38195 - 11905: 0xE941, - 38196 - 11905: 0xEFC7, - 38197 - 11905: 0xEFCF, - 38198 - 11905: 0xEFC8, - 38199 - 11905: 0xEFC9, - 38200 - 11905: 0xEFCA, - 38201 - 11905: 0xC7C2, - 38202 - 11905: 0xEFF1, - 38203 - 11905: 0xB6CD, - 38204 - 11905: 0xEFCB, - 38205 - 11905: 0xE942, - 38206 - 11905: 0xEFCC, - 38207 - 11905: 0xEFCD, - 38208 - 11905: 0xB6C6, - 38209 - 11905: 0xC3BE, - 38210 - 11905: 0xEFCE, - 38211 - 11905: 0xE943, - 38212 - 11905: 0xEFD0, - 38213 - 11905: 0xEFD1, - 38214 - 11905: 0xEFD2, - 38215 - 11905: 0xD5F2, - 38216 - 11905: 0xE944, - 38217 - 11905: 0xEFD3, - 38218 - 11905: 0xC4F7, - 38219 - 11905: 0xE945, - 38220 - 11905: 0xEFD4, - 38221 - 11905: 0xC4F8, - 38222 - 11905: 0xEFD5, - 38223 - 11905: 0xEFD6, - 38224 - 11905: 0xB8E4, - 38225 - 11905: 0xB0F7, - 38226 - 11905: 0xEFD7, - 38227 - 11905: 0xEFD8, - 38228 - 11905: 0xEFD9, - 38229 - 11905: 0xE946, - 38230 - 11905: 0xEFDA, - 38231 - 11905: 0xEFDB, - 38232 - 11905: 0xEFDC, - 38233 - 11905: 0xEFDD, - 38234 - 11905: 0xE947, - 38235 - 11905: 0xEFDE, - 38236 - 11905: 0xBEB5, - 38237 - 11905: 0xEFE1, - 38238 - 11905: 0xEFDF, - 38239 - 11905: 0xEFE0, - 38240 - 11905: 0xE948, - 38241 - 11905: 0xEFE2, - 38242 - 11905: 0xEFE3, - 38243 - 11905: 0xC1CD, - 38244 - 11905: 0xEFE4, - 38245 - 11905: 0xEFE5, - 38246 - 11905: 0xEFE6, - 38247 - 11905: 0xEFE7, - 38248 - 11905: 0xEFE8, - 38249 - 11905: 0xEFE9, - 38250 - 11905: 0xEFEA, - 38251 - 11905: 0xEFEB, - 38252 - 11905: 0xEFEC, - 38253 - 11905: 0xC0D8, - 38254 - 11905: 0xE949, - 38255 - 11905: 0xEFED, - 38256 - 11905: 0xC1AD, - 38257 - 11905: 0xEFEE, - 38258 - 11905: 0xEFEF, - 38259 - 11905: 0xEFF0, - 38260 - 11905: 0xE94A, - 38261 - 11905: 0xE94B, - 38262 - 11905: 0xCFE2, - 38263 - 11905: 0xE94C, - 38264 - 11905: 0xE94D, - 38265 - 11905: 0xE94E, - 38266 - 11905: 0xE94F, - 38267 - 11905: 0xE950, - 38268 - 11905: 0xE951, - 38269 - 11905: 0xE952, - 38270 - 11905: 0xE953, - 38271 - 11905: 0xB3A4, - 38272 - 11905: 0xE954, - 38273 - 11905: 0xE955, - 38274 - 11905: 0xE956, - 38275 - 11905: 0xE957, - 38276 - 11905: 0xE958, - 38277 - 11905: 0xE959, - 38278 - 11905: 0xE95A, - 38279 - 11905: 0xE95B, - 38280 - 11905: 0xE95C, - 38281 - 11905: 0xE95D, - 38282 - 11905: 0xE95E, - 38283 - 11905: 0xE95F, - 38284 - 11905: 0xE960, - 38285 - 11905: 0xE961, - 38286 - 11905: 0xE962, - 38287 - 11905: 0xE963, - 38288 - 11905: 0xE964, - 38289 - 11905: 0xE965, - 38290 - 11905: 0xE966, - 38291 - 11905: 0xE967, - 38292 - 11905: 0xE968, - 38293 - 11905: 0xE969, - 38294 - 11905: 0xE96A, - 38295 - 11905: 0xE96B, - 38296 - 11905: 0xE96C, - 38297 - 11905: 0xE96D, - 38298 - 11905: 0xE96E, - 38299 - 11905: 0xE96F, - 38300 - 11905: 0xE970, - 38301 - 11905: 0xE971, - 38302 - 11905: 0xE972, - 38303 - 11905: 0xE973, - 38304 - 11905: 0xE974, - 38305 - 11905: 0xE975, - 38306 - 11905: 0xE976, - 38307 - 11905: 0xE977, - 38308 - 11905: 0xE978, - 38309 - 11905: 0xE979, - 38310 - 11905: 0xE97A, - 38311 - 11905: 0xE97B, - 38312 - 11905: 0xE97C, - 38313 - 11905: 0xE97D, - 38314 - 11905: 0xE97E, - 38315 - 11905: 0xE980, - 38316 - 11905: 0xE981, - 38317 - 11905: 0xE982, - 38318 - 11905: 0xE983, - 38319 - 11905: 0xE984, - 38320 - 11905: 0xE985, - 38321 - 11905: 0xE986, - 38322 - 11905: 0xE987, - 38323 - 11905: 0xE988, - 38324 - 11905: 0xE989, - 38325 - 11905: 0xE98A, - 38326 - 11905: 0xE98B, - 38327 - 11905: 0xE98C, - 38328 - 11905: 0xE98D, - 38329 - 11905: 0xE98E, - 38330 - 11905: 0xE98F, - 38331 - 11905: 0xE990, - 38332 - 11905: 0xE991, - 38333 - 11905: 0xE992, - 38334 - 11905: 0xE993, - 38335 - 11905: 0xE994, - 38336 - 11905: 0xE995, - 38337 - 11905: 0xE996, - 38338 - 11905: 0xE997, - 38339 - 11905: 0xE998, - 38340 - 11905: 0xE999, - 38341 - 11905: 0xE99A, - 38342 - 11905: 0xE99B, - 38343 - 11905: 0xE99C, - 38344 - 11905: 0xE99D, - 38345 - 11905: 0xE99E, - 38346 - 11905: 0xE99F, - 38347 - 11905: 0xE9A0, - 38348 - 11905: 0xEA40, - 38349 - 11905: 0xEA41, - 38350 - 11905: 0xEA42, - 38351 - 11905: 0xEA43, - 38352 - 11905: 0xEA44, - 38353 - 11905: 0xEA45, - 38354 - 11905: 0xEA46, - 38355 - 11905: 0xEA47, - 38356 - 11905: 0xEA48, - 38357 - 11905: 0xEA49, - 38358 - 11905: 0xEA4A, - 38359 - 11905: 0xEA4B, - 38360 - 11905: 0xEA4C, - 38361 - 11905: 0xEA4D, - 38362 - 11905: 0xEA4E, - 38363 - 11905: 0xEA4F, - 38364 - 11905: 0xEA50, - 38365 - 11905: 0xEA51, - 38366 - 11905: 0xEA52, - 38367 - 11905: 0xEA53, - 38368 - 11905: 0xEA54, - 38369 - 11905: 0xEA55, - 38370 - 11905: 0xEA56, - 38371 - 11905: 0xEA57, - 38372 - 11905: 0xEA58, - 38373 - 11905: 0xEA59, - 38374 - 11905: 0xEA5A, - 38375 - 11905: 0xEA5B, - 38376 - 11905: 0xC3C5, - 38377 - 11905: 0xE3C5, - 38378 - 11905: 0xC9C1, - 38379 - 11905: 0xE3C6, - 38380 - 11905: 0xEA5C, - 38381 - 11905: 0xB1D5, - 38382 - 11905: 0xCECA, - 38383 - 11905: 0xB4B3, - 38384 - 11905: 0xC8F2, - 38385 - 11905: 0xE3C7, - 38386 - 11905: 0xCFD0, - 38387 - 11905: 0xE3C8, - 38388 - 11905: 0xBCE4, - 38389 - 11905: 0xE3C9, - 38390 - 11905: 0xE3CA, - 38391 - 11905: 0xC3C6, - 38392 - 11905: 0xD5A2, - 38393 - 11905: 0xC4D6, - 38394 - 11905: 0xB9EB, - 38395 - 11905: 0xCEC5, - 38396 - 11905: 0xE3CB, - 38397 - 11905: 0xC3F6, - 38398 - 11905: 0xE3CC, - 38399 - 11905: 0xEA5D, - 38400 - 11905: 0xB7A7, - 38401 - 11905: 0xB8F3, - 38402 - 11905: 0xBAD2, - 38403 - 11905: 0xE3CD, - 38404 - 11905: 0xE3CE, - 38405 - 11905: 0xD4C4, - 38406 - 11905: 0xE3CF, - 38407 - 11905: 0xEA5E, - 38408 - 11905: 0xE3D0, - 38409 - 11905: 0xD1CB, - 38410 - 11905: 0xE3D1, - 38411 - 11905: 0xE3D2, - 38412 - 11905: 0xE3D3, - 38413 - 11905: 0xE3D4, - 38414 - 11905: 0xD1D6, - 38415 - 11905: 0xE3D5, - 38416 - 11905: 0xB2FB, - 38417 - 11905: 0xC0BB, - 38418 - 11905: 0xE3D6, - 38419 - 11905: 0xEA5F, - 38420 - 11905: 0xC0AB, - 38421 - 11905: 0xE3D7, - 38422 - 11905: 0xE3D8, - 38423 - 11905: 0xE3D9, - 38424 - 11905: 0xEA60, - 38425 - 11905: 0xE3DA, - 38426 - 11905: 0xE3DB, - 38427 - 11905: 0xEA61, - 38428 - 11905: 0xB8B7, - 38429 - 11905: 0xDAE2, - 38430 - 11905: 0xEA62, - 38431 - 11905: 0xB6D3, - 38432 - 11905: 0xEA63, - 38433 - 11905: 0xDAE4, - 38434 - 11905: 0xDAE3, - 38435 - 11905: 0xEA64, - 38436 - 11905: 0xEA65, - 38437 - 11905: 0xEA66, - 38438 - 11905: 0xEA67, - 38439 - 11905: 0xEA68, - 38440 - 11905: 0xEA69, - 38441 - 11905: 0xEA6A, - 38442 - 11905: 0xDAE6, - 38443 - 11905: 0xEA6B, - 38444 - 11905: 0xEA6C, - 38445 - 11905: 0xEA6D, - 38446 - 11905: 0xC8EE, - 38447 - 11905: 0xEA6E, - 38448 - 11905: 0xEA6F, - 38449 - 11905: 0xDAE5, - 38450 - 11905: 0xB7C0, - 38451 - 11905: 0xD1F4, - 38452 - 11905: 0xD2F5, - 38453 - 11905: 0xD5F3, - 38454 - 11905: 0xBDD7, - 38455 - 11905: 0xEA70, - 38456 - 11905: 0xEA71, - 38457 - 11905: 0xEA72, - 38458 - 11905: 0xEA73, - 38459 - 11905: 0xD7E8, - 38460 - 11905: 0xDAE8, - 38461 - 11905: 0xDAE7, - 38462 - 11905: 0xEA74, - 38463 - 11905: 0xB0A2, - 38464 - 11905: 0xCDD3, - 38465 - 11905: 0xEA75, - 38466 - 11905: 0xDAE9, - 38467 - 11905: 0xEA76, - 38468 - 11905: 0xB8BD, - 38469 - 11905: 0xBCCA, - 38470 - 11905: 0xC2BD, - 38471 - 11905: 0xC2A4, - 38472 - 11905: 0xB3C2, - 38473 - 11905: 0xDAEA, - 38474 - 11905: 0xEA77, - 38475 - 11905: 0xC2AA, - 38476 - 11905: 0xC4B0, - 38477 - 11905: 0xBDB5, - 38478 - 11905: 0xEA78, - 38479 - 11905: 0xEA79, - 38480 - 11905: 0xCFDE, - 38481 - 11905: 0xEA7A, - 38482 - 11905: 0xEA7B, - 38483 - 11905: 0xEA7C, - 38484 - 11905: 0xDAEB, - 38485 - 11905: 0xC9C2, - 38486 - 11905: 0xEA7D, - 38487 - 11905: 0xEA7E, - 38488 - 11905: 0xEA80, - 38489 - 11905: 0xEA81, - 38490 - 11905: 0xEA82, - 38491 - 11905: 0xB1DD, - 38492 - 11905: 0xEA83, - 38493 - 11905: 0xEA84, - 38494 - 11905: 0xEA85, - 38495 - 11905: 0xDAEC, - 38496 - 11905: 0xEA86, - 38497 - 11905: 0xB6B8, - 38498 - 11905: 0xD4BA, - 38499 - 11905: 0xEA87, - 38500 - 11905: 0xB3FD, - 38501 - 11905: 0xEA88, - 38502 - 11905: 0xEA89, - 38503 - 11905: 0xDAED, - 38504 - 11905: 0xD4C9, - 38505 - 11905: 0xCFD5, - 38506 - 11905: 0xC5E3, - 38507 - 11905: 0xEA8A, - 38508 - 11905: 0xDAEE, - 38509 - 11905: 0xEA8B, - 38510 - 11905: 0xEA8C, - 38511 - 11905: 0xEA8D, - 38512 - 11905: 0xEA8E, - 38513 - 11905: 0xEA8F, - 38514 - 11905: 0xDAEF, - 38515 - 11905: 0xEA90, - 38516 - 11905: 0xDAF0, - 38517 - 11905: 0xC1EA, - 38518 - 11905: 0xCCD5, - 38519 - 11905: 0xCFDD, - 38520 - 11905: 0xEA91, - 38521 - 11905: 0xEA92, - 38522 - 11905: 0xEA93, - 38523 - 11905: 0xEA94, - 38524 - 11905: 0xEA95, - 38525 - 11905: 0xEA96, - 38526 - 11905: 0xEA97, - 38527 - 11905: 0xEA98, - 38528 - 11905: 0xEA99, - 38529 - 11905: 0xEA9A, - 38530 - 11905: 0xEA9B, - 38531 - 11905: 0xEA9C, - 38532 - 11905: 0xEA9D, - 38533 - 11905: 0xD3E7, - 38534 - 11905: 0xC2A1, - 38535 - 11905: 0xEA9E, - 38536 - 11905: 0xDAF1, - 38537 - 11905: 0xEA9F, - 38538 - 11905: 0xEAA0, - 38539 - 11905: 0xCBE5, - 38540 - 11905: 0xEB40, - 38541 - 11905: 0xDAF2, - 38542 - 11905: 0xEB41, - 38543 - 11905: 0xCBE6, - 38544 - 11905: 0xD2FE, - 38545 - 11905: 0xEB42, - 38546 - 11905: 0xEB43, - 38547 - 11905: 0xEB44, - 38548 - 11905: 0xB8F4, - 38549 - 11905: 0xEB45, - 38550 - 11905: 0xEB46, - 38551 - 11905: 0xDAF3, - 38552 - 11905: 0xB0AF, - 38553 - 11905: 0xCFB6, - 38554 - 11905: 0xEB47, - 38555 - 11905: 0xEB48, - 38556 - 11905: 0xD5CF, - 38557 - 11905: 0xEB49, - 38558 - 11905: 0xEB4A, - 38559 - 11905: 0xEB4B, - 38560 - 11905: 0xEB4C, - 38561 - 11905: 0xEB4D, - 38562 - 11905: 0xEB4E, - 38563 - 11905: 0xEB4F, - 38564 - 11905: 0xEB50, - 38565 - 11905: 0xEB51, - 38566 - 11905: 0xEB52, - 38567 - 11905: 0xCBED, - 38568 - 11905: 0xEB53, - 38569 - 11905: 0xEB54, - 38570 - 11905: 0xEB55, - 38571 - 11905: 0xEB56, - 38572 - 11905: 0xEB57, - 38573 - 11905: 0xEB58, - 38574 - 11905: 0xEB59, - 38575 - 11905: 0xEB5A, - 38576 - 11905: 0xDAF4, - 38577 - 11905: 0xEB5B, - 38578 - 11905: 0xEB5C, - 38579 - 11905: 0xE3C4, - 38580 - 11905: 0xEB5D, - 38581 - 11905: 0xEB5E, - 38582 - 11905: 0xC1A5, - 38583 - 11905: 0xEB5F, - 38584 - 11905: 0xEB60, - 38585 - 11905: 0xF6BF, - 38586 - 11905: 0xEB61, - 38587 - 11905: 0xEB62, - 38588 - 11905: 0xF6C0, - 38589 - 11905: 0xF6C1, - 38590 - 11905: 0xC4D1, - 38591 - 11905: 0xEB63, - 38592 - 11905: 0xC8B8, - 38593 - 11905: 0xD1E3, - 38594 - 11905: 0xEB64, - 38595 - 11905: 0xEB65, - 38596 - 11905: 0xD0DB, - 38597 - 11905: 0xD1C5, - 38598 - 11905: 0xBCAF, - 38599 - 11905: 0xB9CD, - 38600 - 11905: 0xEB66, - 38601 - 11905: 0xEFF4, - 38602 - 11905: 0xEB67, - 38603 - 11905: 0xEB68, - 38604 - 11905: 0xB4C6, - 38605 - 11905: 0xD3BA, - 38606 - 11905: 0xF6C2, - 38607 - 11905: 0xB3FB, - 38608 - 11905: 0xEB69, - 38609 - 11905: 0xEB6A, - 38610 - 11905: 0xF6C3, - 38611 - 11905: 0xEB6B, - 38612 - 11905: 0xEB6C, - 38613 - 11905: 0xB5F1, - 38614 - 11905: 0xEB6D, - 38615 - 11905: 0xEB6E, - 38616 - 11905: 0xEB6F, - 38617 - 11905: 0xEB70, - 38618 - 11905: 0xEB71, - 38619 - 11905: 0xEB72, - 38620 - 11905: 0xEB73, - 38621 - 11905: 0xEB74, - 38622 - 11905: 0xEB75, - 38623 - 11905: 0xEB76, - 38624 - 11905: 0xF6C5, - 38625 - 11905: 0xEB77, - 38626 - 11905: 0xEB78, - 38627 - 11905: 0xEB79, - 38628 - 11905: 0xEB7A, - 38629 - 11905: 0xEB7B, - 38630 - 11905: 0xEB7C, - 38631 - 11905: 0xEB7D, - 38632 - 11905: 0xD3EA, - 38633 - 11905: 0xF6A7, - 38634 - 11905: 0xD1A9, - 38635 - 11905: 0xEB7E, - 38636 - 11905: 0xEB80, - 38637 - 11905: 0xEB81, - 38638 - 11905: 0xEB82, - 38639 - 11905: 0xF6A9, - 38640 - 11905: 0xEB83, - 38641 - 11905: 0xEB84, - 38642 - 11905: 0xEB85, - 38643 - 11905: 0xF6A8, - 38644 - 11905: 0xEB86, - 38645 - 11905: 0xEB87, - 38646 - 11905: 0xC1E3, - 38647 - 11905: 0xC0D7, - 38648 - 11905: 0xEB88, - 38649 - 11905: 0xB1A2, - 38650 - 11905: 0xEB89, - 38651 - 11905: 0xEB8A, - 38652 - 11905: 0xEB8B, - 38653 - 11905: 0xEB8C, - 38654 - 11905: 0xCEED, - 38655 - 11905: 0xEB8D, - 38656 - 11905: 0xD0E8, - 38657 - 11905: 0xF6AB, - 38658 - 11905: 0xEB8E, - 38659 - 11905: 0xEB8F, - 38660 - 11905: 0xCFF6, - 38661 - 11905: 0xEB90, - 38662 - 11905: 0xF6AA, - 38663 - 11905: 0xD5F0, - 38664 - 11905: 0xF6AC, - 38665 - 11905: 0xC3B9, - 38666 - 11905: 0xEB91, - 38667 - 11905: 0xEB92, - 38668 - 11905: 0xEB93, - 38669 - 11905: 0xBBF4, - 38670 - 11905: 0xF6AE, - 38671 - 11905: 0xF6AD, - 38672 - 11905: 0xEB94, - 38673 - 11905: 0xEB95, - 38674 - 11905: 0xEB96, - 38675 - 11905: 0xC4DE, - 38676 - 11905: 0xEB97, - 38677 - 11905: 0xEB98, - 38678 - 11905: 0xC1D8, - 38679 - 11905: 0xEB99, - 38680 - 11905: 0xEB9A, - 38681 - 11905: 0xEB9B, - 38682 - 11905: 0xEB9C, - 38683 - 11905: 0xEB9D, - 38684 - 11905: 0xCBAA, - 38685 - 11905: 0xEB9E, - 38686 - 11905: 0xCFBC, - 38687 - 11905: 0xEB9F, - 38688 - 11905: 0xEBA0, - 38689 - 11905: 0xEC40, - 38690 - 11905: 0xEC41, - 38691 - 11905: 0xEC42, - 38692 - 11905: 0xEC43, - 38693 - 11905: 0xEC44, - 38694 - 11905: 0xEC45, - 38695 - 11905: 0xEC46, - 38696 - 11905: 0xEC47, - 38697 - 11905: 0xEC48, - 38698 - 11905: 0xF6AF, - 38699 - 11905: 0xEC49, - 38700 - 11905: 0xEC4A, - 38701 - 11905: 0xF6B0, - 38702 - 11905: 0xEC4B, - 38703 - 11905: 0xEC4C, - 38704 - 11905: 0xF6B1, - 38705 - 11905: 0xEC4D, - 38706 - 11905: 0xC2B6, - 38707 - 11905: 0xEC4E, - 38708 - 11905: 0xEC4F, - 38709 - 11905: 0xEC50, - 38710 - 11905: 0xEC51, - 38711 - 11905: 0xEC52, - 38712 - 11905: 0xB0D4, - 38713 - 11905: 0xC5F9, - 38714 - 11905: 0xEC53, - 38715 - 11905: 0xEC54, - 38716 - 11905: 0xEC55, - 38717 - 11905: 0xEC56, - 38718 - 11905: 0xF6B2, - 38719 - 11905: 0xEC57, - 38720 - 11905: 0xEC58, - 38721 - 11905: 0xEC59, - 38722 - 11905: 0xEC5A, - 38723 - 11905: 0xEC5B, - 38724 - 11905: 0xEC5C, - 38725 - 11905: 0xEC5D, - 38726 - 11905: 0xEC5E, - 38727 - 11905: 0xEC5F, - 38728 - 11905: 0xEC60, - 38729 - 11905: 0xEC61, - 38730 - 11905: 0xEC62, - 38731 - 11905: 0xEC63, - 38732 - 11905: 0xEC64, - 38733 - 11905: 0xEC65, - 38734 - 11905: 0xEC66, - 38735 - 11905: 0xEC67, - 38736 - 11905: 0xEC68, - 38737 - 11905: 0xEC69, - 38738 - 11905: 0xC7E0, - 38739 - 11905: 0xF6A6, - 38740 - 11905: 0xEC6A, - 38741 - 11905: 0xEC6B, - 38742 - 11905: 0xBEB8, - 38743 - 11905: 0xEC6C, - 38744 - 11905: 0xEC6D, - 38745 - 11905: 0xBEB2, - 38746 - 11905: 0xEC6E, - 38747 - 11905: 0xB5E5, - 38748 - 11905: 0xEC6F, - 38749 - 11905: 0xEC70, - 38750 - 11905: 0xB7C7, - 38751 - 11905: 0xEC71, - 38752 - 11905: 0xBFBF, - 38753 - 11905: 0xC3D2, - 38754 - 11905: 0xC3E6, - 38755 - 11905: 0xEC72, - 38756 - 11905: 0xEC73, - 38757 - 11905: 0xD8CC, - 38758 - 11905: 0xEC74, - 38759 - 11905: 0xEC75, - 38760 - 11905: 0xEC76, - 38761 - 11905: 0xB8EF, - 38762 - 11905: 0xEC77, - 38763 - 11905: 0xEC78, - 38764 - 11905: 0xEC79, - 38765 - 11905: 0xEC7A, - 38766 - 11905: 0xEC7B, - 38767 - 11905: 0xEC7C, - 38768 - 11905: 0xEC7D, - 38769 - 11905: 0xEC7E, - 38770 - 11905: 0xEC80, - 38771 - 11905: 0xBDF9, - 38772 - 11905: 0xD1A5, - 38773 - 11905: 0xEC81, - 38774 - 11905: 0xB0D0, - 38775 - 11905: 0xEC82, - 38776 - 11905: 0xEC83, - 38777 - 11905: 0xEC84, - 38778 - 11905: 0xEC85, - 38779 - 11905: 0xEC86, - 38780 - 11905: 0xF7B0, - 38781 - 11905: 0xEC87, - 38782 - 11905: 0xEC88, - 38783 - 11905: 0xEC89, - 38784 - 11905: 0xEC8A, - 38785 - 11905: 0xEC8B, - 38786 - 11905: 0xEC8C, - 38787 - 11905: 0xEC8D, - 38788 - 11905: 0xEC8E, - 38789 - 11905: 0xF7B1, - 38790 - 11905: 0xEC8F, - 38791 - 11905: 0xEC90, - 38792 - 11905: 0xEC91, - 38793 - 11905: 0xEC92, - 38794 - 11905: 0xEC93, - 38795 - 11905: 0xD0AC, - 38796 - 11905: 0xEC94, - 38797 - 11905: 0xB0B0, - 38798 - 11905: 0xEC95, - 38799 - 11905: 0xEC96, - 38800 - 11905: 0xEC97, - 38801 - 11905: 0xF7B2, - 38802 - 11905: 0xF7B3, - 38803 - 11905: 0xEC98, - 38804 - 11905: 0xF7B4, - 38805 - 11905: 0xEC99, - 38806 - 11905: 0xEC9A, - 38807 - 11905: 0xEC9B, - 38808 - 11905: 0xC7CA, - 38809 - 11905: 0xEC9C, - 38810 - 11905: 0xEC9D, - 38811 - 11905: 0xEC9E, - 38812 - 11905: 0xEC9F, - 38813 - 11905: 0xECA0, - 38814 - 11905: 0xED40, - 38815 - 11905: 0xED41, - 38816 - 11905: 0xBECF, - 38817 - 11905: 0xED42, - 38818 - 11905: 0xED43, - 38819 - 11905: 0xF7B7, - 38820 - 11905: 0xED44, - 38821 - 11905: 0xED45, - 38822 - 11905: 0xED46, - 38823 - 11905: 0xED47, - 38824 - 11905: 0xED48, - 38825 - 11905: 0xED49, - 38826 - 11905: 0xED4A, - 38827 - 11905: 0xF7B6, - 38828 - 11905: 0xED4B, - 38829 - 11905: 0xB1DE, - 38830 - 11905: 0xED4C, - 38831 - 11905: 0xF7B5, - 38832 - 11905: 0xED4D, - 38833 - 11905: 0xED4E, - 38834 - 11905: 0xF7B8, - 38835 - 11905: 0xED4F, - 38836 - 11905: 0xF7B9, - 38837 - 11905: 0xED50, - 38838 - 11905: 0xED51, - 38839 - 11905: 0xED52, - 38840 - 11905: 0xED53, - 38841 - 11905: 0xED54, - 38842 - 11905: 0xED55, - 38843 - 11905: 0xED56, - 38844 - 11905: 0xED57, - 38845 - 11905: 0xED58, - 38846 - 11905: 0xED59, - 38847 - 11905: 0xED5A, - 38848 - 11905: 0xED5B, - 38849 - 11905: 0xED5C, - 38850 - 11905: 0xED5D, - 38851 - 11905: 0xED5E, - 38852 - 11905: 0xED5F, - 38853 - 11905: 0xED60, - 38854 - 11905: 0xED61, - 38855 - 11905: 0xED62, - 38856 - 11905: 0xED63, - 38857 - 11905: 0xED64, - 38858 - 11905: 0xED65, - 38859 - 11905: 0xED66, - 38860 - 11905: 0xED67, - 38861 - 11905: 0xED68, - 38862 - 11905: 0xED69, - 38863 - 11905: 0xED6A, - 38864 - 11905: 0xED6B, - 38865 - 11905: 0xED6C, - 38866 - 11905: 0xED6D, - 38867 - 11905: 0xED6E, - 38868 - 11905: 0xED6F, - 38869 - 11905: 0xED70, - 38870 - 11905: 0xED71, - 38871 - 11905: 0xED72, - 38872 - 11905: 0xED73, - 38873 - 11905: 0xED74, - 38874 - 11905: 0xED75, - 38875 - 11905: 0xED76, - 38876 - 11905: 0xED77, - 38877 - 11905: 0xED78, - 38878 - 11905: 0xED79, - 38879 - 11905: 0xED7A, - 38880 - 11905: 0xED7B, - 38881 - 11905: 0xED7C, - 38882 - 11905: 0xED7D, - 38883 - 11905: 0xED7E, - 38884 - 11905: 0xED80, - 38885 - 11905: 0xED81, - 38886 - 11905: 0xCEA4, - 38887 - 11905: 0xC8CD, - 38888 - 11905: 0xED82, - 38889 - 11905: 0xBAAB, - 38890 - 11905: 0xE8B8, - 38891 - 11905: 0xE8B9, - 38892 - 11905: 0xE8BA, - 38893 - 11905: 0xBEC2, - 38894 - 11905: 0xED83, - 38895 - 11905: 0xED84, - 38896 - 11905: 0xED85, - 38897 - 11905: 0xED86, - 38898 - 11905: 0xED87, - 38899 - 11905: 0xD2F4, - 38900 - 11905: 0xED88, - 38901 - 11905: 0xD4CF, - 38902 - 11905: 0xC9D8, - 38903 - 11905: 0xED89, - 38904 - 11905: 0xED8A, - 38905 - 11905: 0xED8B, - 38906 - 11905: 0xED8C, - 38907 - 11905: 0xED8D, - 38908 - 11905: 0xED8E, - 38909 - 11905: 0xED8F, - 38910 - 11905: 0xED90, - 38911 - 11905: 0xED91, - 38912 - 11905: 0xED92, - 38913 - 11905: 0xED93, - 38914 - 11905: 0xED94, - 38915 - 11905: 0xED95, - 38916 - 11905: 0xED96, - 38917 - 11905: 0xED97, - 38918 - 11905: 0xED98, - 38919 - 11905: 0xED99, - 38920 - 11905: 0xED9A, - 38921 - 11905: 0xED9B, - 38922 - 11905: 0xED9C, - 38923 - 11905: 0xED9D, - 38924 - 11905: 0xED9E, - 38925 - 11905: 0xED9F, - 38926 - 11905: 0xEDA0, - 38927 - 11905: 0xEE40, - 38928 - 11905: 0xEE41, - 38929 - 11905: 0xEE42, - 38930 - 11905: 0xEE43, - 38931 - 11905: 0xEE44, - 38932 - 11905: 0xEE45, - 38933 - 11905: 0xEE46, - 38934 - 11905: 0xEE47, - 38935 - 11905: 0xEE48, - 38936 - 11905: 0xEE49, - 38937 - 11905: 0xEE4A, - 38938 - 11905: 0xEE4B, - 38939 - 11905: 0xEE4C, - 38940 - 11905: 0xEE4D, - 38941 - 11905: 0xEE4E, - 38942 - 11905: 0xEE4F, - 38943 - 11905: 0xEE50, - 38944 - 11905: 0xEE51, - 38945 - 11905: 0xEE52, - 38946 - 11905: 0xEE53, - 38947 - 11905: 0xEE54, - 38948 - 11905: 0xEE55, - 38949 - 11905: 0xEE56, - 38950 - 11905: 0xEE57, - 38951 - 11905: 0xEE58, - 38952 - 11905: 0xEE59, - 38953 - 11905: 0xEE5A, - 38954 - 11905: 0xEE5B, - 38955 - 11905: 0xEE5C, - 38956 - 11905: 0xEE5D, - 38957 - 11905: 0xEE5E, - 38958 - 11905: 0xEE5F, - 38959 - 11905: 0xEE60, - 38960 - 11905: 0xEE61, - 38961 - 11905: 0xEE62, - 38962 - 11905: 0xEE63, - 38963 - 11905: 0xEE64, - 38964 - 11905: 0xEE65, - 38965 - 11905: 0xEE66, - 38966 - 11905: 0xEE67, - 38967 - 11905: 0xEE68, - 38968 - 11905: 0xEE69, - 38969 - 11905: 0xEE6A, - 38970 - 11905: 0xEE6B, - 38971 - 11905: 0xEE6C, - 38972 - 11905: 0xEE6D, - 38973 - 11905: 0xEE6E, - 38974 - 11905: 0xEE6F, - 38975 - 11905: 0xEE70, - 38976 - 11905: 0xEE71, - 38977 - 11905: 0xEE72, - 38978 - 11905: 0xEE73, - 38979 - 11905: 0xEE74, - 38980 - 11905: 0xEE75, - 38981 - 11905: 0xEE76, - 38982 - 11905: 0xEE77, - 38983 - 11905: 0xEE78, - 38984 - 11905: 0xEE79, - 38985 - 11905: 0xEE7A, - 38986 - 11905: 0xEE7B, - 38987 - 11905: 0xEE7C, - 38988 - 11905: 0xEE7D, - 38989 - 11905: 0xEE7E, - 38990 - 11905: 0xEE80, - 38991 - 11905: 0xEE81, - 38992 - 11905: 0xEE82, - 38993 - 11905: 0xEE83, - 38994 - 11905: 0xEE84, - 38995 - 11905: 0xEE85, - 38996 - 11905: 0xEE86, - 38997 - 11905: 0xEE87, - 38998 - 11905: 0xEE88, - 38999 - 11905: 0xEE89, - 39000 - 11905: 0xEE8A, - 39001 - 11905: 0xEE8B, - 39002 - 11905: 0xEE8C, - 39003 - 11905: 0xEE8D, - 39004 - 11905: 0xEE8E, - 39005 - 11905: 0xEE8F, - 39006 - 11905: 0xEE90, - 39007 - 11905: 0xEE91, - 39008 - 11905: 0xEE92, - 39009 - 11905: 0xEE93, - 39010 - 11905: 0xEE94, - 39011 - 11905: 0xEE95, - 39012 - 11905: 0xEE96, - 39013 - 11905: 0xEE97, - 39014 - 11905: 0xEE98, - 39015 - 11905: 0xEE99, - 39016 - 11905: 0xEE9A, - 39017 - 11905: 0xEE9B, - 39018 - 11905: 0xEE9C, - 39019 - 11905: 0xEE9D, - 39020 - 11905: 0xEE9E, - 39021 - 11905: 0xEE9F, - 39022 - 11905: 0xEEA0, - 39023 - 11905: 0xEF40, - 39024 - 11905: 0xEF41, - 39025 - 11905: 0xEF42, - 39026 - 11905: 0xEF43, - 39027 - 11905: 0xEF44, - 39028 - 11905: 0xEF45, - 39029 - 11905: 0xD2B3, - 39030 - 11905: 0xB6A5, - 39031 - 11905: 0xC7EA, - 39032 - 11905: 0xF1FC, - 39033 - 11905: 0xCFEE, - 39034 - 11905: 0xCBB3, - 39035 - 11905: 0xD0EB, - 39036 - 11905: 0xE7EF, - 39037 - 11905: 0xCDE7, - 39038 - 11905: 0xB9CB, - 39039 - 11905: 0xB6D9, - 39040 - 11905: 0xF1FD, - 39041 - 11905: 0xB0E4, - 39042 - 11905: 0xCBCC, - 39043 - 11905: 0xF1FE, - 39044 - 11905: 0xD4A4, - 39045 - 11905: 0xC2AD, - 39046 - 11905: 0xC1EC, - 39047 - 11905: 0xC6C4, - 39048 - 11905: 0xBEB1, - 39049 - 11905: 0xF2A1, - 39050 - 11905: 0xBCD5, - 39051 - 11905: 0xEF46, - 39052 - 11905: 0xF2A2, - 39053 - 11905: 0xF2A3, - 39054 - 11905: 0xEF47, - 39055 - 11905: 0xF2A4, - 39056 - 11905: 0xD2C3, - 39057 - 11905: 0xC6B5, - 39058 - 11905: 0xEF48, - 39059 - 11905: 0xCDC7, - 39060 - 11905: 0xF2A5, - 39061 - 11905: 0xEF49, - 39062 - 11905: 0xD3B1, - 39063 - 11905: 0xBFC5, - 39064 - 11905: 0xCCE2, - 39065 - 11905: 0xEF4A, - 39066 - 11905: 0xF2A6, - 39067 - 11905: 0xF2A7, - 39068 - 11905: 0xD1D5, - 39069 - 11905: 0xB6EE, - 39070 - 11905: 0xF2A8, - 39071 - 11905: 0xF2A9, - 39072 - 11905: 0xB5DF, - 39073 - 11905: 0xF2AA, - 39074 - 11905: 0xF2AB, - 39075 - 11905: 0xEF4B, - 39076 - 11905: 0xB2FC, - 39077 - 11905: 0xF2AC, - 39078 - 11905: 0xF2AD, - 39079 - 11905: 0xC8A7, - 39080 - 11905: 0xEF4C, - 39081 - 11905: 0xEF4D, - 39082 - 11905: 0xEF4E, - 39083 - 11905: 0xEF4F, - 39084 - 11905: 0xEF50, - 39085 - 11905: 0xEF51, - 39086 - 11905: 0xEF52, - 39087 - 11905: 0xEF53, - 39088 - 11905: 0xEF54, - 39089 - 11905: 0xEF55, - 39090 - 11905: 0xEF56, - 39091 - 11905: 0xEF57, - 39092 - 11905: 0xEF58, - 39093 - 11905: 0xEF59, - 39094 - 11905: 0xEF5A, - 39095 - 11905: 0xEF5B, - 39096 - 11905: 0xEF5C, - 39097 - 11905: 0xEF5D, - 39098 - 11905: 0xEF5E, - 39099 - 11905: 0xEF5F, - 39100 - 11905: 0xEF60, - 39101 - 11905: 0xEF61, - 39102 - 11905: 0xEF62, - 39103 - 11905: 0xEF63, - 39104 - 11905: 0xEF64, - 39105 - 11905: 0xEF65, - 39106 - 11905: 0xEF66, - 39107 - 11905: 0xEF67, - 39108 - 11905: 0xEF68, - 39109 - 11905: 0xEF69, - 39110 - 11905: 0xEF6A, - 39111 - 11905: 0xEF6B, - 39112 - 11905: 0xEF6C, - 39113 - 11905: 0xEF6D, - 39114 - 11905: 0xEF6E, - 39115 - 11905: 0xEF6F, - 39116 - 11905: 0xEF70, - 39117 - 11905: 0xEF71, - 39118 - 11905: 0xB7E7, - 39119 - 11905: 0xEF72, - 39120 - 11905: 0xEF73, - 39121 - 11905: 0xECA9, - 39122 - 11905: 0xECAA, - 39123 - 11905: 0xECAB, - 39124 - 11905: 0xEF74, - 39125 - 11905: 0xECAC, - 39126 - 11905: 0xEF75, - 39127 - 11905: 0xEF76, - 39128 - 11905: 0xC6AE, - 39129 - 11905: 0xECAD, - 39130 - 11905: 0xECAE, - 39131 - 11905: 0xEF77, - 39132 - 11905: 0xEF78, - 39133 - 11905: 0xEF79, - 39134 - 11905: 0xB7C9, - 39135 - 11905: 0xCAB3, - 39136 - 11905: 0xEF7A, - 39137 - 11905: 0xEF7B, - 39138 - 11905: 0xEF7C, - 39139 - 11905: 0xEF7D, - 39140 - 11905: 0xEF7E, - 39141 - 11905: 0xEF80, - 39142 - 11905: 0xEF81, - 39143 - 11905: 0xE2B8, - 39144 - 11905: 0xF7CF, - 39145 - 11905: 0xEF82, - 39146 - 11905: 0xEF83, - 39147 - 11905: 0xEF84, - 39148 - 11905: 0xEF85, - 39149 - 11905: 0xEF86, - 39150 - 11905: 0xEF87, - 39151 - 11905: 0xEF88, - 39152 - 11905: 0xEF89, - 39153 - 11905: 0xEF8A, - 39154 - 11905: 0xEF8B, - 39155 - 11905: 0xEF8C, - 39156 - 11905: 0xEF8D, - 39157 - 11905: 0xEF8E, - 39158 - 11905: 0xEF8F, - 39159 - 11905: 0xEF90, - 39160 - 11905: 0xEF91, - 39161 - 11905: 0xEF92, - 39162 - 11905: 0xEF93, - 39163 - 11905: 0xEF94, - 39164 - 11905: 0xEF95, - 39165 - 11905: 0xEF96, - 39166 - 11905: 0xEF97, - 39167 - 11905: 0xEF98, - 39168 - 11905: 0xEF99, - 39169 - 11905: 0xEF9A, - 39170 - 11905: 0xEF9B, - 39171 - 11905: 0xEF9C, - 39172 - 11905: 0xEF9D, - 39173 - 11905: 0xEF9E, - 39174 - 11905: 0xEF9F, - 39175 - 11905: 0xEFA0, - 39176 - 11905: 0xF040, - 39177 - 11905: 0xF041, - 39178 - 11905: 0xF042, - 39179 - 11905: 0xF043, - 39180 - 11905: 0xF044, - 39181 - 11905: 0xF7D0, - 39182 - 11905: 0xF045, - 39183 - 11905: 0xF046, - 39184 - 11905: 0xB2CD, - 39185 - 11905: 0xF047, - 39186 - 11905: 0xF048, - 39187 - 11905: 0xF049, - 39188 - 11905: 0xF04A, - 39189 - 11905: 0xF04B, - 39190 - 11905: 0xF04C, - 39191 - 11905: 0xF04D, - 39192 - 11905: 0xF04E, - 39193 - 11905: 0xF04F, - 39194 - 11905: 0xF050, - 39195 - 11905: 0xF051, - 39196 - 11905: 0xF052, - 39197 - 11905: 0xF053, - 39198 - 11905: 0xF054, - 39199 - 11905: 0xF055, - 39200 - 11905: 0xF056, - 39201 - 11905: 0xF057, - 39202 - 11905: 0xF058, - 39203 - 11905: 0xF059, - 39204 - 11905: 0xF05A, - 39205 - 11905: 0xF05B, - 39206 - 11905: 0xF05C, - 39207 - 11905: 0xF05D, - 39208 - 11905: 0xF05E, - 39209 - 11905: 0xF05F, - 39210 - 11905: 0xF060, - 39211 - 11905: 0xF061, - 39212 - 11905: 0xF062, - 39213 - 11905: 0xF063, - 39214 - 11905: 0xF7D1, - 39215 - 11905: 0xF064, - 39216 - 11905: 0xF065, - 39217 - 11905: 0xF066, - 39218 - 11905: 0xF067, - 39219 - 11905: 0xF068, - 39220 - 11905: 0xF069, - 39221 - 11905: 0xF06A, - 39222 - 11905: 0xF06B, - 39223 - 11905: 0xF06C, - 39224 - 11905: 0xF06D, - 39225 - 11905: 0xF06E, - 39226 - 11905: 0xF06F, - 39227 - 11905: 0xF070, - 39228 - 11905: 0xF071, - 39229 - 11905: 0xF072, - 39230 - 11905: 0xF073, - 39231 - 11905: 0xF074, - 39232 - 11905: 0xF075, - 39233 - 11905: 0xF076, - 39234 - 11905: 0xF077, - 39235 - 11905: 0xF078, - 39236 - 11905: 0xF079, - 39237 - 11905: 0xF07A, - 39238 - 11905: 0xF07B, - 39239 - 11905: 0xF07C, - 39240 - 11905: 0xF07D, - 39241 - 11905: 0xF07E, - 39242 - 11905: 0xF080, - 39243 - 11905: 0xF081, - 39244 - 11905: 0xF082, - 39245 - 11905: 0xF083, - 39246 - 11905: 0xF084, - 39247 - 11905: 0xF085, - 39248 - 11905: 0xF086, - 39249 - 11905: 0xF087, - 39250 - 11905: 0xF088, - 39251 - 11905: 0xF089, - 39252 - 11905: 0xF7D3, - 39253 - 11905: 0xF7D2, - 39254 - 11905: 0xF08A, - 39255 - 11905: 0xF08B, - 39256 - 11905: 0xF08C, - 39257 - 11905: 0xF08D, - 39258 - 11905: 0xF08E, - 39259 - 11905: 0xF08F, - 39260 - 11905: 0xF090, - 39261 - 11905: 0xF091, - 39262 - 11905: 0xF092, - 39263 - 11905: 0xF093, - 39264 - 11905: 0xF094, - 39265 - 11905: 0xF095, - 39266 - 11905: 0xF096, - 39267 - 11905: 0xE2BB, - 39268 - 11905: 0xF097, - 39269 - 11905: 0xBCA2, - 39270 - 11905: 0xF098, - 39271 - 11905: 0xE2BC, - 39272 - 11905: 0xE2BD, - 39273 - 11905: 0xE2BE, - 39274 - 11905: 0xE2BF, - 39275 - 11905: 0xE2C0, - 39276 - 11905: 0xE2C1, - 39277 - 11905: 0xB7B9, - 39278 - 11905: 0xD2FB, - 39279 - 11905: 0xBDA4, - 39280 - 11905: 0xCACE, - 39281 - 11905: 0xB1A5, - 39282 - 11905: 0xCBC7, - 39283 - 11905: 0xF099, - 39284 - 11905: 0xE2C2, - 39285 - 11905: 0xB6FC, - 39286 - 11905: 0xC8C4, - 39287 - 11905: 0xE2C3, - 39288 - 11905: 0xF09A, - 39289 - 11905: 0xF09B, - 39290 - 11905: 0xBDC8, - 39291 - 11905: 0xF09C, - 39292 - 11905: 0xB1FD, - 39293 - 11905: 0xE2C4, - 39294 - 11905: 0xF09D, - 39295 - 11905: 0xB6F6, - 39296 - 11905: 0xE2C5, - 39297 - 11905: 0xC4D9, - 39298 - 11905: 0xF09E, - 39299 - 11905: 0xF09F, - 39300 - 11905: 0xE2C6, - 39301 - 11905: 0xCFDA, - 39302 - 11905: 0xB9DD, - 39303 - 11905: 0xE2C7, - 39304 - 11905: 0xC0A1, - 39305 - 11905: 0xF0A0, - 39306 - 11905: 0xE2C8, - 39307 - 11905: 0xB2F6, - 39308 - 11905: 0xF140, - 39309 - 11905: 0xE2C9, - 39310 - 11905: 0xF141, - 39311 - 11905: 0xC1F3, - 39312 - 11905: 0xE2CA, - 39313 - 11905: 0xE2CB, - 39314 - 11905: 0xC2F8, - 39315 - 11905: 0xE2CC, - 39316 - 11905: 0xE2CD, - 39317 - 11905: 0xE2CE, - 39318 - 11905: 0xCAD7, - 39319 - 11905: 0xD8B8, - 39320 - 11905: 0xD9E5, - 39321 - 11905: 0xCFE3, - 39322 - 11905: 0xF142, - 39323 - 11905: 0xF143, - 39324 - 11905: 0xF144, - 39325 - 11905: 0xF145, - 39326 - 11905: 0xF146, - 39327 - 11905: 0xF147, - 39328 - 11905: 0xF148, - 39329 - 11905: 0xF149, - 39330 - 11905: 0xF14A, - 39331 - 11905: 0xF14B, - 39332 - 11905: 0xF14C, - 39333 - 11905: 0xF0A5, - 39334 - 11905: 0xF14D, - 39335 - 11905: 0xF14E, - 39336 - 11905: 0xDCB0, - 39337 - 11905: 0xF14F, - 39338 - 11905: 0xF150, - 39339 - 11905: 0xF151, - 39340 - 11905: 0xF152, - 39341 - 11905: 0xF153, - 39342 - 11905: 0xF154, - 39343 - 11905: 0xF155, - 39344 - 11905: 0xF156, - 39345 - 11905: 0xF157, - 39346 - 11905: 0xF158, - 39347 - 11905: 0xF159, - 39348 - 11905: 0xF15A, - 39349 - 11905: 0xF15B, - 39350 - 11905: 0xF15C, - 39351 - 11905: 0xF15D, - 39352 - 11905: 0xF15E, - 39353 - 11905: 0xF15F, - 39354 - 11905: 0xF160, - 39355 - 11905: 0xF161, - 39356 - 11905: 0xF162, - 39357 - 11905: 0xF163, - 39358 - 11905: 0xF164, - 39359 - 11905: 0xF165, - 39360 - 11905: 0xF166, - 39361 - 11905: 0xF167, - 39362 - 11905: 0xF168, - 39363 - 11905: 0xF169, - 39364 - 11905: 0xF16A, - 39365 - 11905: 0xF16B, - 39366 - 11905: 0xF16C, - 39367 - 11905: 0xF16D, - 39368 - 11905: 0xF16E, - 39369 - 11905: 0xF16F, - 39370 - 11905: 0xF170, - 39371 - 11905: 0xF171, - 39372 - 11905: 0xF172, - 39373 - 11905: 0xF173, - 39374 - 11905: 0xF174, - 39375 - 11905: 0xF175, - 39376 - 11905: 0xF176, - 39377 - 11905: 0xF177, - 39378 - 11905: 0xF178, - 39379 - 11905: 0xF179, - 39380 - 11905: 0xF17A, - 39381 - 11905: 0xF17B, - 39382 - 11905: 0xF17C, - 39383 - 11905: 0xF17D, - 39384 - 11905: 0xF17E, - 39385 - 11905: 0xF180, - 39386 - 11905: 0xF181, - 39387 - 11905: 0xF182, - 39388 - 11905: 0xF183, - 39389 - 11905: 0xF184, - 39390 - 11905: 0xF185, - 39391 - 11905: 0xF186, - 39392 - 11905: 0xF187, - 39393 - 11905: 0xF188, - 39394 - 11905: 0xF189, - 39395 - 11905: 0xF18A, - 39396 - 11905: 0xF18B, - 39397 - 11905: 0xF18C, - 39398 - 11905: 0xF18D, - 39399 - 11905: 0xF18E, - 39400 - 11905: 0xF18F, - 39401 - 11905: 0xF190, - 39402 - 11905: 0xF191, - 39403 - 11905: 0xF192, - 39404 - 11905: 0xF193, - 39405 - 11905: 0xF194, - 39406 - 11905: 0xF195, - 39407 - 11905: 0xF196, - 39408 - 11905: 0xF197, - 39409 - 11905: 0xF198, - 39410 - 11905: 0xF199, - 39411 - 11905: 0xF19A, - 39412 - 11905: 0xF19B, - 39413 - 11905: 0xF19C, - 39414 - 11905: 0xF19D, - 39415 - 11905: 0xF19E, - 39416 - 11905: 0xF19F, - 39417 - 11905: 0xF1A0, - 39418 - 11905: 0xF240, - 39419 - 11905: 0xF241, - 39420 - 11905: 0xF242, - 39421 - 11905: 0xF243, - 39422 - 11905: 0xF244, - 39423 - 11905: 0xF245, - 39424 - 11905: 0xF246, - 39425 - 11905: 0xF247, - 39426 - 11905: 0xF248, - 39427 - 11905: 0xF249, - 39428 - 11905: 0xF24A, - 39429 - 11905: 0xF24B, - 39430 - 11905: 0xF24C, - 39431 - 11905: 0xF24D, - 39432 - 11905: 0xF24E, - 39433 - 11905: 0xF24F, - 39434 - 11905: 0xF250, - 39435 - 11905: 0xF251, - 39436 - 11905: 0xF252, - 39437 - 11905: 0xF253, - 39438 - 11905: 0xF254, - 39439 - 11905: 0xF255, - 39440 - 11905: 0xF256, - 39441 - 11905: 0xF257, - 39442 - 11905: 0xF258, - 39443 - 11905: 0xF259, - 39444 - 11905: 0xF25A, - 39445 - 11905: 0xF25B, - 39446 - 11905: 0xF25C, - 39447 - 11905: 0xF25D, - 39448 - 11905: 0xF25E, - 39449 - 11905: 0xF25F, - 39450 - 11905: 0xF260, - 39451 - 11905: 0xF261, - 39452 - 11905: 0xF262, - 39453 - 11905: 0xF263, - 39454 - 11905: 0xF264, - 39455 - 11905: 0xF265, - 39456 - 11905: 0xF266, - 39457 - 11905: 0xF267, - 39458 - 11905: 0xF268, - 39459 - 11905: 0xF269, - 39460 - 11905: 0xF26A, - 39461 - 11905: 0xF26B, - 39462 - 11905: 0xF26C, - 39463 - 11905: 0xF26D, - 39464 - 11905: 0xF26E, - 39465 - 11905: 0xF26F, - 39466 - 11905: 0xF270, - 39467 - 11905: 0xF271, - 39468 - 11905: 0xF272, - 39469 - 11905: 0xF273, - 39470 - 11905: 0xF274, - 39471 - 11905: 0xF275, - 39472 - 11905: 0xF276, - 39473 - 11905: 0xF277, - 39474 - 11905: 0xF278, - 39475 - 11905: 0xF279, - 39476 - 11905: 0xF27A, - 39477 - 11905: 0xF27B, - 39478 - 11905: 0xF27C, - 39479 - 11905: 0xF27D, - 39480 - 11905: 0xF27E, - 39481 - 11905: 0xF280, - 39482 - 11905: 0xF281, - 39483 - 11905: 0xF282, - 39484 - 11905: 0xF283, - 39485 - 11905: 0xF284, - 39486 - 11905: 0xF285, - 39487 - 11905: 0xF286, - 39488 - 11905: 0xF287, - 39489 - 11905: 0xF288, - 39490 - 11905: 0xF289, - 39491 - 11905: 0xF28A, - 39492 - 11905: 0xF28B, - 39493 - 11905: 0xF28C, - 39494 - 11905: 0xF28D, - 39495 - 11905: 0xF28E, - 39496 - 11905: 0xF28F, - 39497 - 11905: 0xF290, - 39498 - 11905: 0xF291, - 39499 - 11905: 0xF292, - 39500 - 11905: 0xF293, - 39501 - 11905: 0xF294, - 39502 - 11905: 0xF295, - 39503 - 11905: 0xF296, - 39504 - 11905: 0xF297, - 39505 - 11905: 0xF298, - 39506 - 11905: 0xF299, - 39507 - 11905: 0xF29A, - 39508 - 11905: 0xF29B, - 39509 - 11905: 0xF29C, - 39510 - 11905: 0xF29D, - 39511 - 11905: 0xF29E, - 39512 - 11905: 0xF29F, - 39513 - 11905: 0xF2A0, - 39514 - 11905: 0xF340, - 39515 - 11905: 0xF341, - 39516 - 11905: 0xF342, - 39517 - 11905: 0xF343, - 39518 - 11905: 0xF344, - 39519 - 11905: 0xF345, - 39520 - 11905: 0xF346, - 39521 - 11905: 0xF347, - 39522 - 11905: 0xF348, - 39523 - 11905: 0xF349, - 39524 - 11905: 0xF34A, - 39525 - 11905: 0xF34B, - 39526 - 11905: 0xF34C, - 39527 - 11905: 0xF34D, - 39528 - 11905: 0xF34E, - 39529 - 11905: 0xF34F, - 39530 - 11905: 0xF350, - 39531 - 11905: 0xF351, - 39532 - 11905: 0xC2ED, - 39533 - 11905: 0xD4A6, - 39534 - 11905: 0xCDD4, - 39535 - 11905: 0xD1B1, - 39536 - 11905: 0xB3DB, - 39537 - 11905: 0xC7FD, - 39538 - 11905: 0xF352, - 39539 - 11905: 0xB2B5, - 39540 - 11905: 0xC2BF, - 39541 - 11905: 0xE6E0, - 39542 - 11905: 0xCABB, - 39543 - 11905: 0xE6E1, - 39544 - 11905: 0xE6E2, - 39545 - 11905: 0xBED4, - 39546 - 11905: 0xE6E3, - 39547 - 11905: 0xD7A4, - 39548 - 11905: 0xCDD5, - 39549 - 11905: 0xE6E5, - 39550 - 11905: 0xBCDD, - 39551 - 11905: 0xE6E4, - 39552 - 11905: 0xE6E6, - 39553 - 11905: 0xE6E7, - 39554 - 11905: 0xC2EE, - 39555 - 11905: 0xF353, - 39556 - 11905: 0xBDBE, - 39557 - 11905: 0xE6E8, - 39558 - 11905: 0xC2E6, - 39559 - 11905: 0xBAA7, - 39560 - 11905: 0xE6E9, - 39561 - 11905: 0xF354, - 39562 - 11905: 0xE6EA, - 39563 - 11905: 0xB3D2, - 39564 - 11905: 0xD1E9, - 39565 - 11905: 0xF355, - 39566 - 11905: 0xF356, - 39567 - 11905: 0xBFA5, - 39568 - 11905: 0xE6EB, - 39569 - 11905: 0xC6EF, - 39570 - 11905: 0xE6EC, - 39571 - 11905: 0xE6ED, - 39572 - 11905: 0xF357, - 39573 - 11905: 0xF358, - 39574 - 11905: 0xE6EE, - 39575 - 11905: 0xC6AD, - 39576 - 11905: 0xE6EF, - 39577 - 11905: 0xF359, - 39578 - 11905: 0xC9A7, - 39579 - 11905: 0xE6F0, - 39580 - 11905: 0xE6F1, - 39581 - 11905: 0xE6F2, - 39582 - 11905: 0xE5B9, - 39583 - 11905: 0xE6F3, - 39584 - 11905: 0xE6F4, - 39585 - 11905: 0xC2E2, - 39586 - 11905: 0xE6F5, - 39587 - 11905: 0xE6F6, - 39588 - 11905: 0xD6E8, - 39589 - 11905: 0xE6F7, - 39590 - 11905: 0xF35A, - 39591 - 11905: 0xE6F8, - 39592 - 11905: 0xB9C7, - 39593 - 11905: 0xF35B, - 39594 - 11905: 0xF35C, - 39595 - 11905: 0xF35D, - 39596 - 11905: 0xF35E, - 39597 - 11905: 0xF35F, - 39598 - 11905: 0xF360, - 39599 - 11905: 0xF361, - 39600 - 11905: 0xF7BB, - 39601 - 11905: 0xF7BA, - 39602 - 11905: 0xF362, - 39603 - 11905: 0xF363, - 39604 - 11905: 0xF364, - 39605 - 11905: 0xF365, - 39606 - 11905: 0xF7BE, - 39607 - 11905: 0xF7BC, - 39608 - 11905: 0xBAA1, - 39609 - 11905: 0xF366, - 39610 - 11905: 0xF7BF, - 39611 - 11905: 0xF367, - 39612 - 11905: 0xF7C0, - 39613 - 11905: 0xF368, - 39614 - 11905: 0xF369, - 39615 - 11905: 0xF36A, - 39616 - 11905: 0xF7C2, - 39617 - 11905: 0xF7C1, - 39618 - 11905: 0xF7C4, - 39619 - 11905: 0xF36B, - 39620 - 11905: 0xF36C, - 39621 - 11905: 0xF7C3, - 39622 - 11905: 0xF36D, - 39623 - 11905: 0xF36E, - 39624 - 11905: 0xF36F, - 39625 - 11905: 0xF370, - 39626 - 11905: 0xF371, - 39627 - 11905: 0xF7C5, - 39628 - 11905: 0xF7C6, - 39629 - 11905: 0xF372, - 39630 - 11905: 0xF373, - 39631 - 11905: 0xF374, - 39632 - 11905: 0xF375, - 39633 - 11905: 0xF7C7, - 39634 - 11905: 0xF376, - 39635 - 11905: 0xCBE8, - 39636 - 11905: 0xF377, - 39637 - 11905: 0xF378, - 39638 - 11905: 0xF379, - 39639 - 11905: 0xF37A, - 39640 - 11905: 0xB8DF, - 39641 - 11905: 0xF37B, - 39642 - 11905: 0xF37C, - 39643 - 11905: 0xF37D, - 39644 - 11905: 0xF37E, - 39645 - 11905: 0xF380, - 39646 - 11905: 0xF381, - 39647 - 11905: 0xF7D4, - 39648 - 11905: 0xF382, - 39649 - 11905: 0xF7D5, - 39650 - 11905: 0xF383, - 39651 - 11905: 0xF384, - 39652 - 11905: 0xF385, - 39653 - 11905: 0xF386, - 39654 - 11905: 0xF7D6, - 39655 - 11905: 0xF387, - 39656 - 11905: 0xF388, - 39657 - 11905: 0xF389, - 39658 - 11905: 0xF38A, - 39659 - 11905: 0xF7D8, - 39660 - 11905: 0xF38B, - 39661 - 11905: 0xF7DA, - 39662 - 11905: 0xF38C, - 39663 - 11905: 0xF7D7, - 39664 - 11905: 0xF38D, - 39665 - 11905: 0xF38E, - 39666 - 11905: 0xF38F, - 39667 - 11905: 0xF390, - 39668 - 11905: 0xF391, - 39669 - 11905: 0xF392, - 39670 - 11905: 0xF393, - 39671 - 11905: 0xF394, - 39672 - 11905: 0xF395, - 39673 - 11905: 0xF7DB, - 39674 - 11905: 0xF396, - 39675 - 11905: 0xF7D9, - 39676 - 11905: 0xF397, - 39677 - 11905: 0xF398, - 39678 - 11905: 0xF399, - 39679 - 11905: 0xF39A, - 39680 - 11905: 0xF39B, - 39681 - 11905: 0xF39C, - 39682 - 11905: 0xF39D, - 39683 - 11905: 0xD7D7, - 39684 - 11905: 0xF39E, - 39685 - 11905: 0xF39F, - 39686 - 11905: 0xF3A0, - 39687 - 11905: 0xF440, - 39688 - 11905: 0xF7DC, - 39689 - 11905: 0xF441, - 39690 - 11905: 0xF442, - 39691 - 11905: 0xF443, - 39692 - 11905: 0xF444, - 39693 - 11905: 0xF445, - 39694 - 11905: 0xF446, - 39695 - 11905: 0xF7DD, - 39696 - 11905: 0xF447, - 39697 - 11905: 0xF448, - 39698 - 11905: 0xF449, - 39699 - 11905: 0xF7DE, - 39700 - 11905: 0xF44A, - 39701 - 11905: 0xF44B, - 39702 - 11905: 0xF44C, - 39703 - 11905: 0xF44D, - 39704 - 11905: 0xF44E, - 39705 - 11905: 0xF44F, - 39706 - 11905: 0xF450, - 39707 - 11905: 0xF451, - 39708 - 11905: 0xF452, - 39709 - 11905: 0xF453, - 39710 - 11905: 0xF454, - 39711 - 11905: 0xF7DF, - 39712 - 11905: 0xF455, - 39713 - 11905: 0xF456, - 39714 - 11905: 0xF457, - 39715 - 11905: 0xF7E0, - 39716 - 11905: 0xF458, - 39717 - 11905: 0xF459, - 39718 - 11905: 0xF45A, - 39719 - 11905: 0xF45B, - 39720 - 11905: 0xF45C, - 39721 - 11905: 0xF45D, - 39722 - 11905: 0xF45E, - 39723 - 11905: 0xF45F, - 39724 - 11905: 0xF460, - 39725 - 11905: 0xF461, - 39726 - 11905: 0xF462, - 39727 - 11905: 0xDBCB, - 39728 - 11905: 0xF463, - 39729 - 11905: 0xF464, - 39730 - 11905: 0xD8AA, - 39731 - 11905: 0xF465, - 39732 - 11905: 0xF466, - 39733 - 11905: 0xF467, - 39734 - 11905: 0xF468, - 39735 - 11905: 0xF469, - 39736 - 11905: 0xF46A, - 39737 - 11905: 0xF46B, - 39738 - 11905: 0xF46C, - 39739 - 11905: 0xE5F7, - 39740 - 11905: 0xB9ED, - 39741 - 11905: 0xF46D, - 39742 - 11905: 0xF46E, - 39743 - 11905: 0xF46F, - 39744 - 11905: 0xF470, - 39745 - 11905: 0xBFFD, - 39746 - 11905: 0xBBEA, - 39747 - 11905: 0xF7C9, - 39748 - 11905: 0xC6C7, - 39749 - 11905: 0xF7C8, - 39750 - 11905: 0xF471, - 39751 - 11905: 0xF7CA, - 39752 - 11905: 0xF7CC, - 39753 - 11905: 0xF7CB, - 39754 - 11905: 0xF472, - 39755 - 11905: 0xF473, - 39756 - 11905: 0xF474, - 39757 - 11905: 0xF7CD, - 39758 - 11905: 0xF475, - 39759 - 11905: 0xCEBA, - 39760 - 11905: 0xF476, - 39761 - 11905: 0xF7CE, - 39762 - 11905: 0xF477, - 39763 - 11905: 0xF478, - 39764 - 11905: 0xC4A7, - 39765 - 11905: 0xF479, - 39766 - 11905: 0xF47A, - 39767 - 11905: 0xF47B, - 39768 - 11905: 0xF47C, - 39769 - 11905: 0xF47D, - 39770 - 11905: 0xF47E, - 39771 - 11905: 0xF480, - 39772 - 11905: 0xF481, - 39773 - 11905: 0xF482, - 39774 - 11905: 0xF483, - 39775 - 11905: 0xF484, - 39776 - 11905: 0xF485, - 39777 - 11905: 0xF486, - 39778 - 11905: 0xF487, - 39779 - 11905: 0xF488, - 39780 - 11905: 0xF489, - 39781 - 11905: 0xF48A, - 39782 - 11905: 0xF48B, - 39783 - 11905: 0xF48C, - 39784 - 11905: 0xF48D, - 39785 - 11905: 0xF48E, - 39786 - 11905: 0xF48F, - 39787 - 11905: 0xF490, - 39788 - 11905: 0xF491, - 39789 - 11905: 0xF492, - 39790 - 11905: 0xF493, - 39791 - 11905: 0xF494, - 39792 - 11905: 0xF495, - 39793 - 11905: 0xF496, - 39794 - 11905: 0xF497, - 39795 - 11905: 0xF498, - 39796 - 11905: 0xF499, - 39797 - 11905: 0xF49A, - 39798 - 11905: 0xF49B, - 39799 - 11905: 0xF49C, - 39800 - 11905: 0xF49D, - 39801 - 11905: 0xF49E, - 39802 - 11905: 0xF49F, - 39803 - 11905: 0xF4A0, - 39804 - 11905: 0xF540, - 39805 - 11905: 0xF541, - 39806 - 11905: 0xF542, - 39807 - 11905: 0xF543, - 39808 - 11905: 0xF544, - 39809 - 11905: 0xF545, - 39810 - 11905: 0xF546, - 39811 - 11905: 0xF547, - 39812 - 11905: 0xF548, - 39813 - 11905: 0xF549, - 39814 - 11905: 0xF54A, - 39815 - 11905: 0xF54B, - 39816 - 11905: 0xF54C, - 39817 - 11905: 0xF54D, - 39818 - 11905: 0xF54E, - 39819 - 11905: 0xF54F, - 39820 - 11905: 0xF550, - 39821 - 11905: 0xF551, - 39822 - 11905: 0xF552, - 39823 - 11905: 0xF553, - 39824 - 11905: 0xF554, - 39825 - 11905: 0xF555, - 39826 - 11905: 0xF556, - 39827 - 11905: 0xF557, - 39828 - 11905: 0xF558, - 39829 - 11905: 0xF559, - 39830 - 11905: 0xF55A, - 39831 - 11905: 0xF55B, - 39832 - 11905: 0xF55C, - 39833 - 11905: 0xF55D, - 39834 - 11905: 0xF55E, - 39835 - 11905: 0xF55F, - 39836 - 11905: 0xF560, - 39837 - 11905: 0xF561, - 39838 - 11905: 0xF562, - 39839 - 11905: 0xF563, - 39840 - 11905: 0xF564, - 39841 - 11905: 0xF565, - 39842 - 11905: 0xF566, - 39843 - 11905: 0xF567, - 39844 - 11905: 0xF568, - 39845 - 11905: 0xF569, - 39846 - 11905: 0xF56A, - 39847 - 11905: 0xF56B, - 39848 - 11905: 0xF56C, - 39849 - 11905: 0xF56D, - 39850 - 11905: 0xF56E, - 39851 - 11905: 0xF56F, - 39852 - 11905: 0xF570, - 39853 - 11905: 0xF571, - 39854 - 11905: 0xF572, - 39855 - 11905: 0xF573, - 39856 - 11905: 0xF574, - 39857 - 11905: 0xF575, - 39858 - 11905: 0xF576, - 39859 - 11905: 0xF577, - 39860 - 11905: 0xF578, - 39861 - 11905: 0xF579, - 39862 - 11905: 0xF57A, - 39863 - 11905: 0xF57B, - 39864 - 11905: 0xF57C, - 39865 - 11905: 0xF57D, - 39866 - 11905: 0xF57E, - 39867 - 11905: 0xF580, - 39868 - 11905: 0xF581, - 39869 - 11905: 0xF582, - 39870 - 11905: 0xF583, - 39871 - 11905: 0xF584, - 39872 - 11905: 0xF585, - 39873 - 11905: 0xF586, - 39874 - 11905: 0xF587, - 39875 - 11905: 0xF588, - 39876 - 11905: 0xF589, - 39877 - 11905: 0xF58A, - 39878 - 11905: 0xF58B, - 39879 - 11905: 0xF58C, - 39880 - 11905: 0xF58D, - 39881 - 11905: 0xF58E, - 39882 - 11905: 0xF58F, - 39883 - 11905: 0xF590, - 39884 - 11905: 0xF591, - 39885 - 11905: 0xF592, - 39886 - 11905: 0xF593, - 39887 - 11905: 0xF594, - 39888 - 11905: 0xF595, - 39889 - 11905: 0xF596, - 39890 - 11905: 0xF597, - 39891 - 11905: 0xF598, - 39892 - 11905: 0xF599, - 39893 - 11905: 0xF59A, - 39894 - 11905: 0xF59B, - 39895 - 11905: 0xF59C, - 39896 - 11905: 0xF59D, - 39897 - 11905: 0xF59E, - 39898 - 11905: 0xF59F, - 39899 - 11905: 0xF5A0, - 39900 - 11905: 0xF640, - 39901 - 11905: 0xF641, - 39902 - 11905: 0xF642, - 39903 - 11905: 0xF643, - 39904 - 11905: 0xF644, - 39905 - 11905: 0xF645, - 39906 - 11905: 0xF646, - 39907 - 11905: 0xF647, - 39908 - 11905: 0xF648, - 39909 - 11905: 0xF649, - 39910 - 11905: 0xF64A, - 39911 - 11905: 0xF64B, - 39912 - 11905: 0xF64C, - 39913 - 11905: 0xF64D, - 39914 - 11905: 0xF64E, - 39915 - 11905: 0xF64F, - 39916 - 11905: 0xF650, - 39917 - 11905: 0xF651, - 39918 - 11905: 0xF652, - 39919 - 11905: 0xF653, - 39920 - 11905: 0xF654, - 39921 - 11905: 0xF655, - 39922 - 11905: 0xF656, - 39923 - 11905: 0xF657, - 39924 - 11905: 0xF658, - 39925 - 11905: 0xF659, - 39926 - 11905: 0xF65A, - 39927 - 11905: 0xF65B, - 39928 - 11905: 0xF65C, - 39929 - 11905: 0xF65D, - 39930 - 11905: 0xF65E, - 39931 - 11905: 0xF65F, - 39932 - 11905: 0xF660, - 39933 - 11905: 0xF661, - 39934 - 11905: 0xF662, - 39935 - 11905: 0xF663, - 39936 - 11905: 0xF664, - 39937 - 11905: 0xF665, - 39938 - 11905: 0xF666, - 39939 - 11905: 0xF667, - 39940 - 11905: 0xF668, - 39941 - 11905: 0xF669, - 39942 - 11905: 0xF66A, - 39943 - 11905: 0xF66B, - 39944 - 11905: 0xF66C, - 39945 - 11905: 0xF66D, - 39946 - 11905: 0xF66E, - 39947 - 11905: 0xF66F, - 39948 - 11905: 0xF670, - 39949 - 11905: 0xF671, - 39950 - 11905: 0xF672, - 39951 - 11905: 0xF673, - 39952 - 11905: 0xF674, - 39953 - 11905: 0xF675, - 39954 - 11905: 0xF676, - 39955 - 11905: 0xF677, - 39956 - 11905: 0xF678, - 39957 - 11905: 0xF679, - 39958 - 11905: 0xF67A, - 39959 - 11905: 0xF67B, - 39960 - 11905: 0xF67C, - 39961 - 11905: 0xF67D, - 39962 - 11905: 0xF67E, - 39963 - 11905: 0xF680, - 39964 - 11905: 0xF681, - 39965 - 11905: 0xF682, - 39966 - 11905: 0xF683, - 39967 - 11905: 0xF684, - 39968 - 11905: 0xF685, - 39969 - 11905: 0xF686, - 39970 - 11905: 0xF687, - 39971 - 11905: 0xF688, - 39972 - 11905: 0xF689, - 39973 - 11905: 0xF68A, - 39974 - 11905: 0xF68B, - 39975 - 11905: 0xF68C, - 39976 - 11905: 0xF68D, - 39977 - 11905: 0xF68E, - 39978 - 11905: 0xF68F, - 39979 - 11905: 0xF690, - 39980 - 11905: 0xF691, - 39981 - 11905: 0xF692, - 39982 - 11905: 0xF693, - 39983 - 11905: 0xF694, - 39984 - 11905: 0xF695, - 39985 - 11905: 0xF696, - 39986 - 11905: 0xF697, - 39987 - 11905: 0xF698, - 39988 - 11905: 0xF699, - 39989 - 11905: 0xF69A, - 39990 - 11905: 0xF69B, - 39991 - 11905: 0xF69C, - 39992 - 11905: 0xF69D, - 39993 - 11905: 0xF69E, - 39994 - 11905: 0xF69F, - 39995 - 11905: 0xF6A0, - 39996 - 11905: 0xF740, - 39997 - 11905: 0xF741, - 39998 - 11905: 0xF742, - 39999 - 11905: 0xF743, - 40000 - 11905: 0xF744, - 40001 - 11905: 0xF745, - 40002 - 11905: 0xF746, - 40003 - 11905: 0xF747, - 40004 - 11905: 0xF748, - 40005 - 11905: 0xF749, - 40006 - 11905: 0xF74A, - 40007 - 11905: 0xF74B, - 40008 - 11905: 0xF74C, - 40009 - 11905: 0xF74D, - 40010 - 11905: 0xF74E, - 40011 - 11905: 0xF74F, - 40012 - 11905: 0xF750, - 40013 - 11905: 0xF751, - 40014 - 11905: 0xF752, - 40015 - 11905: 0xF753, - 40016 - 11905: 0xF754, - 40017 - 11905: 0xF755, - 40018 - 11905: 0xF756, - 40019 - 11905: 0xF757, - 40020 - 11905: 0xF758, - 40021 - 11905: 0xF759, - 40022 - 11905: 0xF75A, - 40023 - 11905: 0xF75B, - 40024 - 11905: 0xF75C, - 40025 - 11905: 0xF75D, - 40026 - 11905: 0xF75E, - 40027 - 11905: 0xF75F, - 40028 - 11905: 0xF760, - 40029 - 11905: 0xF761, - 40030 - 11905: 0xF762, - 40031 - 11905: 0xF763, - 40032 - 11905: 0xF764, - 40033 - 11905: 0xF765, - 40034 - 11905: 0xF766, - 40035 - 11905: 0xF767, - 40036 - 11905: 0xF768, - 40037 - 11905: 0xF769, - 40038 - 11905: 0xF76A, - 40039 - 11905: 0xF76B, - 40040 - 11905: 0xF76C, - 40041 - 11905: 0xF76D, - 40042 - 11905: 0xF76E, - 40043 - 11905: 0xF76F, - 40044 - 11905: 0xF770, - 40045 - 11905: 0xF771, - 40046 - 11905: 0xF772, - 40047 - 11905: 0xF773, - 40048 - 11905: 0xF774, - 40049 - 11905: 0xF775, - 40050 - 11905: 0xF776, - 40051 - 11905: 0xF777, - 40052 - 11905: 0xF778, - 40053 - 11905: 0xF779, - 40054 - 11905: 0xF77A, - 40055 - 11905: 0xF77B, - 40056 - 11905: 0xF77C, - 40057 - 11905: 0xF77D, - 40058 - 11905: 0xF77E, - 40059 - 11905: 0xF780, - 40060 - 11905: 0xD3E3, - 40061 - 11905: 0xF781, - 40062 - 11905: 0xF782, - 40063 - 11905: 0xF6CF, - 40064 - 11905: 0xF783, - 40065 - 11905: 0xC2B3, - 40066 - 11905: 0xF6D0, - 40067 - 11905: 0xF784, - 40068 - 11905: 0xF785, - 40069 - 11905: 0xF6D1, - 40070 - 11905: 0xF6D2, - 40071 - 11905: 0xF6D3, - 40072 - 11905: 0xF6D4, - 40073 - 11905: 0xF786, - 40074 - 11905: 0xF787, - 40075 - 11905: 0xF6D6, - 40076 - 11905: 0xF788, - 40077 - 11905: 0xB1AB, - 40078 - 11905: 0xF6D7, - 40079 - 11905: 0xF789, - 40080 - 11905: 0xF6D8, - 40081 - 11905: 0xF6D9, - 40082 - 11905: 0xF6DA, - 40083 - 11905: 0xF78A, - 40084 - 11905: 0xF6DB, - 40085 - 11905: 0xF6DC, - 40086 - 11905: 0xF78B, - 40087 - 11905: 0xF78C, - 40088 - 11905: 0xF78D, - 40089 - 11905: 0xF78E, - 40090 - 11905: 0xF6DD, - 40091 - 11905: 0xF6DE, - 40092 - 11905: 0xCFCA, - 40093 - 11905: 0xF78F, - 40094 - 11905: 0xF6DF, - 40095 - 11905: 0xF6E0, - 40096 - 11905: 0xF6E1, - 40097 - 11905: 0xF6E2, - 40098 - 11905: 0xF6E3, - 40099 - 11905: 0xF6E4, - 40100 - 11905: 0xC0F0, - 40101 - 11905: 0xF6E5, - 40102 - 11905: 0xF6E6, - 40103 - 11905: 0xF6E7, - 40104 - 11905: 0xF6E8, - 40105 - 11905: 0xF6E9, - 40106 - 11905: 0xF790, - 40107 - 11905: 0xF6EA, - 40108 - 11905: 0xF791, - 40109 - 11905: 0xF6EB, - 40110 - 11905: 0xF6EC, - 40111 - 11905: 0xF792, - 40112 - 11905: 0xF6ED, - 40113 - 11905: 0xF6EE, - 40114 - 11905: 0xF6EF, - 40115 - 11905: 0xF6F0, - 40116 - 11905: 0xF6F1, - 40117 - 11905: 0xF6F2, - 40118 - 11905: 0xF6F3, - 40119 - 11905: 0xF6F4, - 40120 - 11905: 0xBEA8, - 40121 - 11905: 0xF793, - 40122 - 11905: 0xF6F5, - 40123 - 11905: 0xF6F6, - 40124 - 11905: 0xF6F7, - 40125 - 11905: 0xF6F8, - 40126 - 11905: 0xF794, - 40127 - 11905: 0xF795, - 40128 - 11905: 0xF796, - 40129 - 11905: 0xF797, - 40130 - 11905: 0xF798, - 40131 - 11905: 0xC8FA, - 40132 - 11905: 0xF6F9, - 40133 - 11905: 0xF6FA, - 40134 - 11905: 0xF6FB, - 40135 - 11905: 0xF6FC, - 40136 - 11905: 0xF799, - 40137 - 11905: 0xF79A, - 40138 - 11905: 0xF6FD, - 40139 - 11905: 0xF6FE, - 40140 - 11905: 0xF7A1, - 40141 - 11905: 0xF7A2, - 40142 - 11905: 0xF7A3, - 40143 - 11905: 0xF7A4, - 40144 - 11905: 0xF7A5, - 40145 - 11905: 0xF79B, - 40146 - 11905: 0xF79C, - 40147 - 11905: 0xF7A6, - 40148 - 11905: 0xF7A7, - 40149 - 11905: 0xF7A8, - 40150 - 11905: 0xB1EE, - 40151 - 11905: 0xF7A9, - 40152 - 11905: 0xF7AA, - 40153 - 11905: 0xF7AB, - 40154 - 11905: 0xF79D, - 40155 - 11905: 0xF79E, - 40156 - 11905: 0xF7AC, - 40157 - 11905: 0xF7AD, - 40158 - 11905: 0xC1DB, - 40159 - 11905: 0xF7AE, - 40160 - 11905: 0xF79F, - 40161 - 11905: 0xF7A0, - 40162 - 11905: 0xF7AF, - 40163 - 11905: 0xF840, - 40164 - 11905: 0xF841, - 40165 - 11905: 0xF842, - 40166 - 11905: 0xF843, - 40167 - 11905: 0xF844, - 40168 - 11905: 0xF845, - 40169 - 11905: 0xF846, - 40170 - 11905: 0xF847, - 40171 - 11905: 0xF848, - 40172 - 11905: 0xF849, - 40173 - 11905: 0xF84A, - 40174 - 11905: 0xF84B, - 40175 - 11905: 0xF84C, - 40176 - 11905: 0xF84D, - 40177 - 11905: 0xF84E, - 40178 - 11905: 0xF84F, - 40179 - 11905: 0xF850, - 40180 - 11905: 0xF851, - 40181 - 11905: 0xF852, - 40182 - 11905: 0xF853, - 40183 - 11905: 0xF854, - 40184 - 11905: 0xF855, - 40185 - 11905: 0xF856, - 40186 - 11905: 0xF857, - 40187 - 11905: 0xF858, - 40188 - 11905: 0xF859, - 40189 - 11905: 0xF85A, - 40190 - 11905: 0xF85B, - 40191 - 11905: 0xF85C, - 40192 - 11905: 0xF85D, - 40193 - 11905: 0xF85E, - 40194 - 11905: 0xF85F, - 40195 - 11905: 0xF860, - 40196 - 11905: 0xF861, - 40197 - 11905: 0xF862, - 40198 - 11905: 0xF863, - 40199 - 11905: 0xF864, - 40200 - 11905: 0xF865, - 40201 - 11905: 0xF866, - 40202 - 11905: 0xF867, - 40203 - 11905: 0xF868, - 40204 - 11905: 0xF869, - 40205 - 11905: 0xF86A, - 40206 - 11905: 0xF86B, - 40207 - 11905: 0xF86C, - 40208 - 11905: 0xF86D, - 40209 - 11905: 0xF86E, - 40210 - 11905: 0xF86F, - 40211 - 11905: 0xF870, - 40212 - 11905: 0xF871, - 40213 - 11905: 0xF872, - 40214 - 11905: 0xF873, - 40215 - 11905: 0xF874, - 40216 - 11905: 0xF875, - 40217 - 11905: 0xF876, - 40218 - 11905: 0xF877, - 40219 - 11905: 0xF878, - 40220 - 11905: 0xF879, - 40221 - 11905: 0xF87A, - 40222 - 11905: 0xF87B, - 40223 - 11905: 0xF87C, - 40224 - 11905: 0xF87D, - 40225 - 11905: 0xF87E, - 40226 - 11905: 0xF880, - 40227 - 11905: 0xF881, - 40228 - 11905: 0xF882, - 40229 - 11905: 0xF883, - 40230 - 11905: 0xF884, - 40231 - 11905: 0xF885, - 40232 - 11905: 0xF886, - 40233 - 11905: 0xF887, - 40234 - 11905: 0xF888, - 40235 - 11905: 0xF889, - 40236 - 11905: 0xF88A, - 40237 - 11905: 0xF88B, - 40238 - 11905: 0xF88C, - 40239 - 11905: 0xF88D, - 40240 - 11905: 0xF88E, - 40241 - 11905: 0xF88F, - 40242 - 11905: 0xF890, - 40243 - 11905: 0xF891, - 40244 - 11905: 0xF892, - 40245 - 11905: 0xF893, - 40246 - 11905: 0xF894, - 40247 - 11905: 0xF895, - 40248 - 11905: 0xF896, - 40249 - 11905: 0xF897, - 40250 - 11905: 0xF898, - 40251 - 11905: 0xF899, - 40252 - 11905: 0xF89A, - 40253 - 11905: 0xF89B, - 40254 - 11905: 0xF89C, - 40255 - 11905: 0xF89D, - 40256 - 11905: 0xF89E, - 40257 - 11905: 0xF89F, - 40258 - 11905: 0xF8A0, - 40259 - 11905: 0xF940, - 40260 - 11905: 0xF941, - 40261 - 11905: 0xF942, - 40262 - 11905: 0xF943, - 40263 - 11905: 0xF944, - 40264 - 11905: 0xF945, - 40265 - 11905: 0xF946, - 40266 - 11905: 0xF947, - 40267 - 11905: 0xF948, - 40268 - 11905: 0xF949, - 40269 - 11905: 0xF94A, - 40270 - 11905: 0xF94B, - 40271 - 11905: 0xF94C, - 40272 - 11905: 0xF94D, - 40273 - 11905: 0xF94E, - 40274 - 11905: 0xF94F, - 40275 - 11905: 0xF950, - 40276 - 11905: 0xF951, - 40277 - 11905: 0xF952, - 40278 - 11905: 0xF953, - 40279 - 11905: 0xF954, - 40280 - 11905: 0xF955, - 40281 - 11905: 0xF956, - 40282 - 11905: 0xF957, - 40283 - 11905: 0xF958, - 40284 - 11905: 0xF959, - 40285 - 11905: 0xF95A, - 40286 - 11905: 0xF95B, - 40287 - 11905: 0xF95C, - 40288 - 11905: 0xF95D, - 40289 - 11905: 0xF95E, - 40290 - 11905: 0xF95F, - 40291 - 11905: 0xF960, - 40292 - 11905: 0xF961, - 40293 - 11905: 0xF962, - 40294 - 11905: 0xF963, - 40295 - 11905: 0xF964, - 40296 - 11905: 0xF965, - 40297 - 11905: 0xF966, - 40298 - 11905: 0xF967, - 40299 - 11905: 0xF968, - 40300 - 11905: 0xF969, - 40301 - 11905: 0xF96A, - 40302 - 11905: 0xF96B, - 40303 - 11905: 0xF96C, - 40304 - 11905: 0xF96D, - 40305 - 11905: 0xF96E, - 40306 - 11905: 0xF96F, - 40307 - 11905: 0xF970, - 40308 - 11905: 0xF971, - 40309 - 11905: 0xF972, - 40310 - 11905: 0xF973, - 40311 - 11905: 0xF974, - 40312 - 11905: 0xF975, - 40313 - 11905: 0xF976, - 40314 - 11905: 0xF977, - 40315 - 11905: 0xF978, - 40316 - 11905: 0xF979, - 40317 - 11905: 0xF97A, - 40318 - 11905: 0xF97B, - 40319 - 11905: 0xF97C, - 40320 - 11905: 0xF97D, - 40321 - 11905: 0xF97E, - 40322 - 11905: 0xF980, - 40323 - 11905: 0xF981, - 40324 - 11905: 0xF982, - 40325 - 11905: 0xF983, - 40326 - 11905: 0xF984, - 40327 - 11905: 0xF985, - 40328 - 11905: 0xF986, - 40329 - 11905: 0xF987, - 40330 - 11905: 0xF988, - 40331 - 11905: 0xF989, - 40332 - 11905: 0xF98A, - 40333 - 11905: 0xF98B, - 40334 - 11905: 0xF98C, - 40335 - 11905: 0xF98D, - 40336 - 11905: 0xF98E, - 40337 - 11905: 0xF98F, - 40338 - 11905: 0xF990, - 40339 - 11905: 0xF991, - 40340 - 11905: 0xF992, - 40341 - 11905: 0xF993, - 40342 - 11905: 0xF994, - 40343 - 11905: 0xF995, - 40344 - 11905: 0xF996, - 40345 - 11905: 0xF997, - 40346 - 11905: 0xF998, - 40347 - 11905: 0xF999, - 40348 - 11905: 0xF99A, - 40349 - 11905: 0xF99B, - 40350 - 11905: 0xF99C, - 40351 - 11905: 0xF99D, - 40352 - 11905: 0xF99E, - 40353 - 11905: 0xF99F, - 40354 - 11905: 0xF9A0, - 40355 - 11905: 0xFA40, - 40356 - 11905: 0xFA41, - 40357 - 11905: 0xFA42, - 40358 - 11905: 0xFA43, - 40359 - 11905: 0xFA44, - 40360 - 11905: 0xFA45, - 40361 - 11905: 0xFA46, - 40362 - 11905: 0xFA47, - 40363 - 11905: 0xFA48, - 40364 - 11905: 0xFA49, - 40365 - 11905: 0xFA4A, - 40366 - 11905: 0xFA4B, - 40367 - 11905: 0xFA4C, - 40368 - 11905: 0xFA4D, - 40369 - 11905: 0xFA4E, - 40370 - 11905: 0xFA4F, - 40371 - 11905: 0xFA50, - 40372 - 11905: 0xFA51, - 40373 - 11905: 0xFA52, - 40374 - 11905: 0xFA53, - 40375 - 11905: 0xFA54, - 40376 - 11905: 0xFA55, - 40377 - 11905: 0xFA56, - 40378 - 11905: 0xFA57, - 40379 - 11905: 0xFA58, - 40380 - 11905: 0xFA59, - 40381 - 11905: 0xFA5A, - 40382 - 11905: 0xFA5B, - 40383 - 11905: 0xFA5C, - 40384 - 11905: 0xFA5D, - 40385 - 11905: 0xFA5E, - 40386 - 11905: 0xFA5F, - 40387 - 11905: 0xFA60, - 40388 - 11905: 0xFA61, - 40389 - 11905: 0xFA62, - 40390 - 11905: 0xFA63, - 40391 - 11905: 0xFA64, - 40392 - 11905: 0xFA65, - 40393 - 11905: 0xFA66, - 40394 - 11905: 0xFA67, - 40395 - 11905: 0xFA68, - 40396 - 11905: 0xFA69, - 40397 - 11905: 0xFA6A, - 40398 - 11905: 0xFA6B, - 40399 - 11905: 0xFA6C, - 40400 - 11905: 0xFA6D, - 40401 - 11905: 0xFA6E, - 40402 - 11905: 0xFA6F, - 40403 - 11905: 0xFA70, - 40404 - 11905: 0xFA71, - 40405 - 11905: 0xFA72, - 40406 - 11905: 0xFA73, - 40407 - 11905: 0xFA74, - 40408 - 11905: 0xFA75, - 40409 - 11905: 0xFA76, - 40410 - 11905: 0xFA77, - 40411 - 11905: 0xFA78, - 40412 - 11905: 0xFA79, - 40413 - 11905: 0xFA7A, - 40414 - 11905: 0xFA7B, - 40415 - 11905: 0xFA7C, - 40416 - 11905: 0xFA7D, - 40417 - 11905: 0xFA7E, - 40418 - 11905: 0xFA80, - 40419 - 11905: 0xFA81, - 40420 - 11905: 0xFA82, - 40421 - 11905: 0xFA83, - 40422 - 11905: 0xFA84, - 40423 - 11905: 0xFA85, - 40424 - 11905: 0xFA86, - 40425 - 11905: 0xFA87, - 40426 - 11905: 0xFA88, - 40427 - 11905: 0xFA89, - 40428 - 11905: 0xFA8A, - 40429 - 11905: 0xFA8B, - 40430 - 11905: 0xFA8C, - 40431 - 11905: 0xFA8D, - 40432 - 11905: 0xFA8E, - 40433 - 11905: 0xFA8F, - 40434 - 11905: 0xFA90, - 40435 - 11905: 0xFA91, - 40436 - 11905: 0xFA92, - 40437 - 11905: 0xFA93, - 40438 - 11905: 0xFA94, - 40439 - 11905: 0xFA95, - 40440 - 11905: 0xFA96, - 40441 - 11905: 0xFA97, - 40442 - 11905: 0xFA98, - 40443 - 11905: 0xFA99, - 40444 - 11905: 0xFA9A, - 40445 - 11905: 0xFA9B, - 40446 - 11905: 0xFA9C, - 40447 - 11905: 0xFA9D, - 40448 - 11905: 0xFA9E, - 40449 - 11905: 0xFA9F, - 40450 - 11905: 0xFAA0, - 40451 - 11905: 0xFB40, - 40452 - 11905: 0xFB41, - 40453 - 11905: 0xFB42, - 40454 - 11905: 0xFB43, - 40455 - 11905: 0xFB44, - 40456 - 11905: 0xFB45, - 40457 - 11905: 0xFB46, - 40458 - 11905: 0xFB47, - 40459 - 11905: 0xFB48, - 40460 - 11905: 0xFB49, - 40461 - 11905: 0xFB4A, - 40462 - 11905: 0xFB4B, - 40463 - 11905: 0xFB4C, - 40464 - 11905: 0xFB4D, - 40465 - 11905: 0xFB4E, - 40466 - 11905: 0xFB4F, - 40467 - 11905: 0xFB50, - 40468 - 11905: 0xFB51, - 40469 - 11905: 0xFB52, - 40470 - 11905: 0xFB53, - 40471 - 11905: 0xFB54, - 40472 - 11905: 0xFB55, - 40473 - 11905: 0xFB56, - 40474 - 11905: 0xFB57, - 40475 - 11905: 0xFB58, - 40476 - 11905: 0xFB59, - 40477 - 11905: 0xFB5A, - 40478 - 11905: 0xFB5B, - 40479 - 11905: 0xC4F1, - 40480 - 11905: 0xF0AF, - 40481 - 11905: 0xBCA6, - 40482 - 11905: 0xF0B0, - 40483 - 11905: 0xC3F9, - 40484 - 11905: 0xFB5C, - 40485 - 11905: 0xC5B8, - 40486 - 11905: 0xD1BB, - 40487 - 11905: 0xFB5D, - 40488 - 11905: 0xF0B1, - 40489 - 11905: 0xF0B2, - 40490 - 11905: 0xF0B3, - 40491 - 11905: 0xF0B4, - 40492 - 11905: 0xF0B5, - 40493 - 11905: 0xD1BC, - 40494 - 11905: 0xFB5E, - 40495 - 11905: 0xD1EC, - 40496 - 11905: 0xFB5F, - 40497 - 11905: 0xF0B7, - 40498 - 11905: 0xF0B6, - 40499 - 11905: 0xD4A7, - 40500 - 11905: 0xFB60, - 40501 - 11905: 0xCDD2, - 40502 - 11905: 0xF0B8, - 40503 - 11905: 0xF0BA, - 40504 - 11905: 0xF0B9, - 40505 - 11905: 0xF0BB, - 40506 - 11905: 0xF0BC, - 40507 - 11905: 0xFB61, - 40508 - 11905: 0xFB62, - 40509 - 11905: 0xB8EB, - 40510 - 11905: 0xF0BD, - 40511 - 11905: 0xBAE8, - 40512 - 11905: 0xFB63, - 40513 - 11905: 0xF0BE, - 40514 - 11905: 0xF0BF, - 40515 - 11905: 0xBEE9, - 40516 - 11905: 0xF0C0, - 40517 - 11905: 0xB6EC, - 40518 - 11905: 0xF0C1, - 40519 - 11905: 0xF0C2, - 40520 - 11905: 0xF0C3, - 40521 - 11905: 0xF0C4, - 40522 - 11905: 0xC8B5, - 40523 - 11905: 0xF0C5, - 40524 - 11905: 0xF0C6, - 40525 - 11905: 0xFB64, - 40526 - 11905: 0xF0C7, - 40527 - 11905: 0xC5F4, - 40528 - 11905: 0xFB65, - 40529 - 11905: 0xF0C8, - 40530 - 11905: 0xFB66, - 40531 - 11905: 0xFB67, - 40532 - 11905: 0xFB68, - 40533 - 11905: 0xF0C9, - 40534 - 11905: 0xFB69, - 40535 - 11905: 0xF0CA, - 40536 - 11905: 0xF7BD, - 40537 - 11905: 0xFB6A, - 40538 - 11905: 0xF0CB, - 40539 - 11905: 0xF0CC, - 40540 - 11905: 0xF0CD, - 40541 - 11905: 0xFB6B, - 40542 - 11905: 0xF0CE, - 40543 - 11905: 0xFB6C, - 40544 - 11905: 0xFB6D, - 40545 - 11905: 0xFB6E, - 40546 - 11905: 0xFB6F, - 40547 - 11905: 0xF0CF, - 40548 - 11905: 0xBAD7, - 40549 - 11905: 0xFB70, - 40550 - 11905: 0xF0D0, - 40551 - 11905: 0xF0D1, - 40552 - 11905: 0xF0D2, - 40553 - 11905: 0xF0D3, - 40554 - 11905: 0xF0D4, - 40555 - 11905: 0xF0D5, - 40556 - 11905: 0xF0D6, - 40557 - 11905: 0xF0D8, - 40558 - 11905: 0xFB71, - 40559 - 11905: 0xFB72, - 40560 - 11905: 0xD3A5, - 40561 - 11905: 0xF0D7, - 40562 - 11905: 0xFB73, - 40563 - 11905: 0xF0D9, - 40564 - 11905: 0xFB74, - 40565 - 11905: 0xFB75, - 40566 - 11905: 0xFB76, - 40567 - 11905: 0xFB77, - 40568 - 11905: 0xFB78, - 40569 - 11905: 0xFB79, - 40570 - 11905: 0xFB7A, - 40571 - 11905: 0xFB7B, - 40572 - 11905: 0xFB7C, - 40573 - 11905: 0xFB7D, - 40574 - 11905: 0xF5BA, - 40575 - 11905: 0xC2B9, - 40576 - 11905: 0xFB7E, - 40577 - 11905: 0xFB80, - 40578 - 11905: 0xF7E4, - 40579 - 11905: 0xFB81, - 40580 - 11905: 0xFB82, - 40581 - 11905: 0xFB83, - 40582 - 11905: 0xFB84, - 40583 - 11905: 0xF7E5, - 40584 - 11905: 0xF7E6, - 40585 - 11905: 0xFB85, - 40586 - 11905: 0xFB86, - 40587 - 11905: 0xF7E7, - 40588 - 11905: 0xFB87, - 40589 - 11905: 0xFB88, - 40590 - 11905: 0xFB89, - 40591 - 11905: 0xFB8A, - 40592 - 11905: 0xFB8B, - 40593 - 11905: 0xFB8C, - 40594 - 11905: 0xF7E8, - 40595 - 11905: 0xC2B4, - 40596 - 11905: 0xFB8D, - 40597 - 11905: 0xFB8E, - 40598 - 11905: 0xFB8F, - 40599 - 11905: 0xFB90, - 40600 - 11905: 0xFB91, - 40601 - 11905: 0xFB92, - 40602 - 11905: 0xFB93, - 40603 - 11905: 0xFB94, - 40604 - 11905: 0xFB95, - 40605 - 11905: 0xF7EA, - 40606 - 11905: 0xFB96, - 40607 - 11905: 0xF7EB, - 40608 - 11905: 0xFB97, - 40609 - 11905: 0xFB98, - 40610 - 11905: 0xFB99, - 40611 - 11905: 0xFB9A, - 40612 - 11905: 0xFB9B, - 40613 - 11905: 0xFB9C, - 40614 - 11905: 0xC2F3, - 40615 - 11905: 0xFB9D, - 40616 - 11905: 0xFB9E, - 40617 - 11905: 0xFB9F, - 40618 - 11905: 0xFBA0, - 40619 - 11905: 0xFC40, - 40620 - 11905: 0xFC41, - 40621 - 11905: 0xFC42, - 40622 - 11905: 0xFC43, - 40623 - 11905: 0xFC44, - 40624 - 11905: 0xFC45, - 40625 - 11905: 0xFC46, - 40626 - 11905: 0xFC47, - 40627 - 11905: 0xFC48, - 40628 - 11905: 0xF4F0, - 40629 - 11905: 0xFC49, - 40630 - 11905: 0xFC4A, - 40631 - 11905: 0xFC4B, - 40632 - 11905: 0xF4EF, - 40633 - 11905: 0xFC4C, - 40634 - 11905: 0xFC4D, - 40635 - 11905: 0xC2E9, - 40636 - 11905: 0xFC4E, - 40637 - 11905: 0xF7E1, - 40638 - 11905: 0xF7E2, - 40639 - 11905: 0xFC4F, - 40640 - 11905: 0xFC50, - 40641 - 11905: 0xFC51, - 40642 - 11905: 0xFC52, - 40643 - 11905: 0xFC53, - 40644 - 11905: 0xBBC6, - 40645 - 11905: 0xFC54, - 40646 - 11905: 0xFC55, - 40647 - 11905: 0xFC56, - 40648 - 11905: 0xFC57, - 40649 - 11905: 0xD9E4, - 40650 - 11905: 0xFC58, - 40651 - 11905: 0xFC59, - 40652 - 11905: 0xFC5A, - 40653 - 11905: 0xCAF2, - 40654 - 11905: 0xC0E8, - 40655 - 11905: 0xF0A4, - 40656 - 11905: 0xFC5B, - 40657 - 11905: 0xBADA, - 40658 - 11905: 0xFC5C, - 40659 - 11905: 0xFC5D, - 40660 - 11905: 0xC7AD, - 40661 - 11905: 0xFC5E, - 40662 - 11905: 0xFC5F, - 40663 - 11905: 0xFC60, - 40664 - 11905: 0xC4AC, - 40665 - 11905: 0xFC61, - 40666 - 11905: 0xFC62, - 40667 - 11905: 0xF7EC, - 40668 - 11905: 0xF7ED, - 40669 - 11905: 0xF7EE, - 40670 - 11905: 0xFC63, - 40671 - 11905: 0xF7F0, - 40672 - 11905: 0xF7EF, - 40673 - 11905: 0xFC64, - 40674 - 11905: 0xF7F1, - 40675 - 11905: 0xFC65, - 40676 - 11905: 0xFC66, - 40677 - 11905: 0xF7F4, - 40678 - 11905: 0xFC67, - 40679 - 11905: 0xF7F3, - 40680 - 11905: 0xFC68, - 40681 - 11905: 0xF7F2, - 40682 - 11905: 0xF7F5, - 40683 - 11905: 0xFC69, - 40684 - 11905: 0xFC6A, - 40685 - 11905: 0xFC6B, - 40686 - 11905: 0xFC6C, - 40687 - 11905: 0xF7F6, - 40688 - 11905: 0xFC6D, - 40689 - 11905: 0xFC6E, - 40690 - 11905: 0xFC6F, - 40691 - 11905: 0xFC70, - 40692 - 11905: 0xFC71, - 40693 - 11905: 0xFC72, - 40694 - 11905: 0xFC73, - 40695 - 11905: 0xFC74, - 40696 - 11905: 0xFC75, - 40697 - 11905: 0xEDE9, - 40698 - 11905: 0xFC76, - 40699 - 11905: 0xEDEA, - 40700 - 11905: 0xEDEB, - 40701 - 11905: 0xFC77, - 40702 - 11905: 0xF6BC, - 40703 - 11905: 0xFC78, - 40704 - 11905: 0xFC79, - 40705 - 11905: 0xFC7A, - 40706 - 11905: 0xFC7B, - 40707 - 11905: 0xFC7C, - 40708 - 11905: 0xFC7D, - 40709 - 11905: 0xFC7E, - 40710 - 11905: 0xFC80, - 40711 - 11905: 0xFC81, - 40712 - 11905: 0xFC82, - 40713 - 11905: 0xFC83, - 40714 - 11905: 0xFC84, - 40715 - 11905: 0xF6BD, - 40716 - 11905: 0xFC85, - 40717 - 11905: 0xF6BE, - 40718 - 11905: 0xB6A6, - 40719 - 11905: 0xFC86, - 40720 - 11905: 0xD8BE, - 40721 - 11905: 0xFC87, - 40722 - 11905: 0xFC88, - 40723 - 11905: 0xB9C4, - 40724 - 11905: 0xFC89, - 40725 - 11905: 0xFC8A, - 40726 - 11905: 0xFC8B, - 40727 - 11905: 0xD8BB, - 40728 - 11905: 0xFC8C, - 40729 - 11905: 0xDCB1, - 40730 - 11905: 0xFC8D, - 40731 - 11905: 0xFC8E, - 40732 - 11905: 0xFC8F, - 40733 - 11905: 0xFC90, - 40734 - 11905: 0xFC91, - 40735 - 11905: 0xFC92, - 40736 - 11905: 0xCAF3, - 40737 - 11905: 0xFC93, - 40738 - 11905: 0xF7F7, - 40739 - 11905: 0xFC94, - 40740 - 11905: 0xFC95, - 40741 - 11905: 0xFC96, - 40742 - 11905: 0xFC97, - 40743 - 11905: 0xFC98, - 40744 - 11905: 0xFC99, - 40745 - 11905: 0xFC9A, - 40746 - 11905: 0xFC9B, - 40747 - 11905: 0xFC9C, - 40748 - 11905: 0xF7F8, - 40749 - 11905: 0xFC9D, - 40750 - 11905: 0xFC9E, - 40751 - 11905: 0xF7F9, - 40752 - 11905: 0xFC9F, - 40753 - 11905: 0xFCA0, - 40754 - 11905: 0xFD40, - 40755 - 11905: 0xFD41, - 40756 - 11905: 0xFD42, - 40757 - 11905: 0xFD43, - 40758 - 11905: 0xFD44, - 40759 - 11905: 0xF7FB, - 40760 - 11905: 0xFD45, - 40761 - 11905: 0xF7FA, - 40762 - 11905: 0xFD46, - 40763 - 11905: 0xB1C7, - 40764 - 11905: 0xFD47, - 40765 - 11905: 0xF7FC, - 40766 - 11905: 0xF7FD, - 40767 - 11905: 0xFD48, - 40768 - 11905: 0xFD49, - 40769 - 11905: 0xFD4A, - 40770 - 11905: 0xFD4B, - 40771 - 11905: 0xFD4C, - 40772 - 11905: 0xF7FE, - 40773 - 11905: 0xFD4D, - 40774 - 11905: 0xFD4E, - 40775 - 11905: 0xFD4F, - 40776 - 11905: 0xFD50, - 40777 - 11905: 0xFD51, - 40778 - 11905: 0xFD52, - 40779 - 11905: 0xFD53, - 40780 - 11905: 0xFD54, - 40781 - 11905: 0xFD55, - 40782 - 11905: 0xFD56, - 40783 - 11905: 0xFD57, - 40784 - 11905: 0xC6EB, - 40785 - 11905: 0xECB4, - 40786 - 11905: 0xFD58, - 40787 - 11905: 0xFD59, - 40788 - 11905: 0xFD5A, - 40789 - 11905: 0xFD5B, - 40790 - 11905: 0xFD5C, - 40791 - 11905: 0xFD5D, - 40792 - 11905: 0xFD5E, - 40793 - 11905: 0xFD5F, - 40794 - 11905: 0xFD60, - 40795 - 11905: 0xFD61, - 40796 - 11905: 0xFD62, - 40797 - 11905: 0xFD63, - 40798 - 11905: 0xFD64, - 40799 - 11905: 0xFD65, - 40800 - 11905: 0xFD66, - 40801 - 11905: 0xFD67, - 40802 - 11905: 0xFD68, - 40803 - 11905: 0xFD69, - 40804 - 11905: 0xFD6A, - 40805 - 11905: 0xFD6B, - 40806 - 11905: 0xFD6C, - 40807 - 11905: 0xFD6D, - 40808 - 11905: 0xFD6E, - 40809 - 11905: 0xFD6F, - 40810 - 11905: 0xFD70, - 40811 - 11905: 0xFD71, - 40812 - 11905: 0xFD72, - 40813 - 11905: 0xFD73, - 40814 - 11905: 0xFD74, - 40815 - 11905: 0xFD75, - 40816 - 11905: 0xFD76, - 40817 - 11905: 0xFD77, - 40818 - 11905: 0xFD78, - 40819 - 11905: 0xFD79, - 40820 - 11905: 0xFD7A, - 40821 - 11905: 0xFD7B, - 40822 - 11905: 0xFD7C, - 40823 - 11905: 0xFD7D, - 40824 - 11905: 0xFD7E, - 40825 - 11905: 0xFD80, - 40826 - 11905: 0xFD81, - 40827 - 11905: 0xFD82, - 40828 - 11905: 0xFD83, - 40829 - 11905: 0xFD84, - 40830 - 11905: 0xFD85, - 40831 - 11905: 0xB3DD, - 40832 - 11905: 0xF6B3, - 40833 - 11905: 0xFD86, - 40834 - 11905: 0xFD87, - 40835 - 11905: 0xF6B4, - 40836 - 11905: 0xC1E4, - 40837 - 11905: 0xF6B5, - 40838 - 11905: 0xF6B6, - 40839 - 11905: 0xF6B7, - 40840 - 11905: 0xF6B8, - 40841 - 11905: 0xF6B9, - 40842 - 11905: 0xF6BA, - 40843 - 11905: 0xC8A3, - 40844 - 11905: 0xF6BB, - 40845 - 11905: 0xFD88, - 40846 - 11905: 0xFD89, - 40847 - 11905: 0xFD8A, - 40848 - 11905: 0xFD8B, - 40849 - 11905: 0xFD8C, - 40850 - 11905: 0xFD8D, - 40851 - 11905: 0xFD8E, - 40852 - 11905: 0xFD8F, - 40853 - 11905: 0xFD90, - 40854 - 11905: 0xFD91, - 40855 - 11905: 0xFD92, - 40856 - 11905: 0xFD93, - 40857 - 11905: 0xC1FA, - 40858 - 11905: 0xB9A8, - 40859 - 11905: 0xEDE8, - 40860 - 11905: 0xFD94, - 40861 - 11905: 0xFD95, - 40862 - 11905: 0xFD96, - 40863 - 11905: 0xB9EA, - 40864 - 11905: 0xD9DF, - 40865 - 11905: 0xFD97, - 40866 - 11905: 0xFD98, - 40867 - 11905: 0xFD99, - 40868 - 11905: 0xFD9A, - 40869 - 11905: 0xFD9B, -} - -const encode1Low, encode1High = 8208, 9795 - -var encode1 = [...]uint16{ - 8208 - 8208: 0xA95C, - 8211 - 8208: 0xA843, - 8212 - 8208: 0xA1AA, - 8213 - 8208: 0xA844, - 8214 - 8208: 0xA1AC, - 8216 - 8208: 0xA1AE, - 8217 - 8208: 0xA1AF, - 8220 - 8208: 0xA1B0, - 8221 - 8208: 0xA1B1, - 8229 - 8208: 0xA845, - 8230 - 8208: 0xA1AD, - 8240 - 8208: 0xA1EB, - 8242 - 8208: 0xA1E4, - 8243 - 8208: 0xA1E5, - 8245 - 8208: 0xA846, - 8251 - 8208: 0xA1F9, - 8364 - 8208: 0xA2E3, - 8451 - 8208: 0xA1E6, - 8453 - 8208: 0xA847, - 8457 - 8208: 0xA848, - 8470 - 8208: 0xA1ED, - 8481 - 8208: 0xA959, - 8544 - 8208: 0xA2F1, - 8545 - 8208: 0xA2F2, - 8546 - 8208: 0xA2F3, - 8547 - 8208: 0xA2F4, - 8548 - 8208: 0xA2F5, - 8549 - 8208: 0xA2F6, - 8550 - 8208: 0xA2F7, - 8551 - 8208: 0xA2F8, - 8552 - 8208: 0xA2F9, - 8553 - 8208: 0xA2FA, - 8554 - 8208: 0xA2FB, - 8555 - 8208: 0xA2FC, - 8560 - 8208: 0xA2A1, - 8561 - 8208: 0xA2A2, - 8562 - 8208: 0xA2A3, - 8563 - 8208: 0xA2A4, - 8564 - 8208: 0xA2A5, - 8565 - 8208: 0xA2A6, - 8566 - 8208: 0xA2A7, - 8567 - 8208: 0xA2A8, - 8568 - 8208: 0xA2A9, - 8569 - 8208: 0xA2AA, - 8592 - 8208: 0xA1FB, - 8593 - 8208: 0xA1FC, - 8594 - 8208: 0xA1FA, - 8595 - 8208: 0xA1FD, - 8598 - 8208: 0xA849, - 8599 - 8208: 0xA84A, - 8600 - 8208: 0xA84B, - 8601 - 8208: 0xA84C, - 8712 - 8208: 0xA1CA, - 8719 - 8208: 0xA1C7, - 8721 - 8208: 0xA1C6, - 8725 - 8208: 0xA84D, - 8730 - 8208: 0xA1CC, - 8733 - 8208: 0xA1D8, - 8734 - 8208: 0xA1DE, - 8735 - 8208: 0xA84E, - 8736 - 8208: 0xA1CF, - 8739 - 8208: 0xA84F, - 8741 - 8208: 0xA1CE, - 8743 - 8208: 0xA1C4, - 8744 - 8208: 0xA1C5, - 8745 - 8208: 0xA1C9, - 8746 - 8208: 0xA1C8, - 8747 - 8208: 0xA1D2, - 8750 - 8208: 0xA1D3, - 8756 - 8208: 0xA1E0, - 8757 - 8208: 0xA1DF, - 8758 - 8208: 0xA1C3, - 8759 - 8208: 0xA1CB, - 8765 - 8208: 0xA1D7, - 8776 - 8208: 0xA1D6, - 8780 - 8208: 0xA1D5, - 8786 - 8208: 0xA850, - 8800 - 8208: 0xA1D9, - 8801 - 8208: 0xA1D4, - 8804 - 8208: 0xA1DC, - 8805 - 8208: 0xA1DD, - 8806 - 8208: 0xA851, - 8807 - 8208: 0xA852, - 8814 - 8208: 0xA1DA, - 8815 - 8208: 0xA1DB, - 8853 - 8208: 0xA892, - 8857 - 8208: 0xA1D1, - 8869 - 8208: 0xA1CD, - 8895 - 8208: 0xA853, - 8978 - 8208: 0xA1D0, - 9312 - 8208: 0xA2D9, - 9313 - 8208: 0xA2DA, - 9314 - 8208: 0xA2DB, - 9315 - 8208: 0xA2DC, - 9316 - 8208: 0xA2DD, - 9317 - 8208: 0xA2DE, - 9318 - 8208: 0xA2DF, - 9319 - 8208: 0xA2E0, - 9320 - 8208: 0xA2E1, - 9321 - 8208: 0xA2E2, - 9332 - 8208: 0xA2C5, - 9333 - 8208: 0xA2C6, - 9334 - 8208: 0xA2C7, - 9335 - 8208: 0xA2C8, - 9336 - 8208: 0xA2C9, - 9337 - 8208: 0xA2CA, - 9338 - 8208: 0xA2CB, - 9339 - 8208: 0xA2CC, - 9340 - 8208: 0xA2CD, - 9341 - 8208: 0xA2CE, - 9342 - 8208: 0xA2CF, - 9343 - 8208: 0xA2D0, - 9344 - 8208: 0xA2D1, - 9345 - 8208: 0xA2D2, - 9346 - 8208: 0xA2D3, - 9347 - 8208: 0xA2D4, - 9348 - 8208: 0xA2D5, - 9349 - 8208: 0xA2D6, - 9350 - 8208: 0xA2D7, - 9351 - 8208: 0xA2D8, - 9352 - 8208: 0xA2B1, - 9353 - 8208: 0xA2B2, - 9354 - 8208: 0xA2B3, - 9355 - 8208: 0xA2B4, - 9356 - 8208: 0xA2B5, - 9357 - 8208: 0xA2B6, - 9358 - 8208: 0xA2B7, - 9359 - 8208: 0xA2B8, - 9360 - 8208: 0xA2B9, - 9361 - 8208: 0xA2BA, - 9362 - 8208: 0xA2BB, - 9363 - 8208: 0xA2BC, - 9364 - 8208: 0xA2BD, - 9365 - 8208: 0xA2BE, - 9366 - 8208: 0xA2BF, - 9367 - 8208: 0xA2C0, - 9368 - 8208: 0xA2C1, - 9369 - 8208: 0xA2C2, - 9370 - 8208: 0xA2C3, - 9371 - 8208: 0xA2C4, - 9472 - 8208: 0xA9A4, - 9473 - 8208: 0xA9A5, - 9474 - 8208: 0xA9A6, - 9475 - 8208: 0xA9A7, - 9476 - 8208: 0xA9A8, - 9477 - 8208: 0xA9A9, - 9478 - 8208: 0xA9AA, - 9479 - 8208: 0xA9AB, - 9480 - 8208: 0xA9AC, - 9481 - 8208: 0xA9AD, - 9482 - 8208: 0xA9AE, - 9483 - 8208: 0xA9AF, - 9484 - 8208: 0xA9B0, - 9485 - 8208: 0xA9B1, - 9486 - 8208: 0xA9B2, - 9487 - 8208: 0xA9B3, - 9488 - 8208: 0xA9B4, - 9489 - 8208: 0xA9B5, - 9490 - 8208: 0xA9B6, - 9491 - 8208: 0xA9B7, - 9492 - 8208: 0xA9B8, - 9493 - 8208: 0xA9B9, - 9494 - 8208: 0xA9BA, - 9495 - 8208: 0xA9BB, - 9496 - 8208: 0xA9BC, - 9497 - 8208: 0xA9BD, - 9498 - 8208: 0xA9BE, - 9499 - 8208: 0xA9BF, - 9500 - 8208: 0xA9C0, - 9501 - 8208: 0xA9C1, - 9502 - 8208: 0xA9C2, - 9503 - 8208: 0xA9C3, - 9504 - 8208: 0xA9C4, - 9505 - 8208: 0xA9C5, - 9506 - 8208: 0xA9C6, - 9507 - 8208: 0xA9C7, - 9508 - 8208: 0xA9C8, - 9509 - 8208: 0xA9C9, - 9510 - 8208: 0xA9CA, - 9511 - 8208: 0xA9CB, - 9512 - 8208: 0xA9CC, - 9513 - 8208: 0xA9CD, - 9514 - 8208: 0xA9CE, - 9515 - 8208: 0xA9CF, - 9516 - 8208: 0xA9D0, - 9517 - 8208: 0xA9D1, - 9518 - 8208: 0xA9D2, - 9519 - 8208: 0xA9D3, - 9520 - 8208: 0xA9D4, - 9521 - 8208: 0xA9D5, - 9522 - 8208: 0xA9D6, - 9523 - 8208: 0xA9D7, - 9524 - 8208: 0xA9D8, - 9525 - 8208: 0xA9D9, - 9526 - 8208: 0xA9DA, - 9527 - 8208: 0xA9DB, - 9528 - 8208: 0xA9DC, - 9529 - 8208: 0xA9DD, - 9530 - 8208: 0xA9DE, - 9531 - 8208: 0xA9DF, - 9532 - 8208: 0xA9E0, - 9533 - 8208: 0xA9E1, - 9534 - 8208: 0xA9E2, - 9535 - 8208: 0xA9E3, - 9536 - 8208: 0xA9E4, - 9537 - 8208: 0xA9E5, - 9538 - 8208: 0xA9E6, - 9539 - 8208: 0xA9E7, - 9540 - 8208: 0xA9E8, - 9541 - 8208: 0xA9E9, - 9542 - 8208: 0xA9EA, - 9543 - 8208: 0xA9EB, - 9544 - 8208: 0xA9EC, - 9545 - 8208: 0xA9ED, - 9546 - 8208: 0xA9EE, - 9547 - 8208: 0xA9EF, - 9552 - 8208: 0xA854, - 9553 - 8208: 0xA855, - 9554 - 8208: 0xA856, - 9555 - 8208: 0xA857, - 9556 - 8208: 0xA858, - 9557 - 8208: 0xA859, - 9558 - 8208: 0xA85A, - 9559 - 8208: 0xA85B, - 9560 - 8208: 0xA85C, - 9561 - 8208: 0xA85D, - 9562 - 8208: 0xA85E, - 9563 - 8208: 0xA85F, - 9564 - 8208: 0xA860, - 9565 - 8208: 0xA861, - 9566 - 8208: 0xA862, - 9567 - 8208: 0xA863, - 9568 - 8208: 0xA864, - 9569 - 8208: 0xA865, - 9570 - 8208: 0xA866, - 9571 - 8208: 0xA867, - 9572 - 8208: 0xA868, - 9573 - 8208: 0xA869, - 9574 - 8208: 0xA86A, - 9575 - 8208: 0xA86B, - 9576 - 8208: 0xA86C, - 9577 - 8208: 0xA86D, - 9578 - 8208: 0xA86E, - 9579 - 8208: 0xA86F, - 9580 - 8208: 0xA870, - 9581 - 8208: 0xA871, - 9582 - 8208: 0xA872, - 9583 - 8208: 0xA873, - 9584 - 8208: 0xA874, - 9585 - 8208: 0xA875, - 9586 - 8208: 0xA876, - 9587 - 8208: 0xA877, - 9601 - 8208: 0xA878, - 9602 - 8208: 0xA879, - 9603 - 8208: 0xA87A, - 9604 - 8208: 0xA87B, - 9605 - 8208: 0xA87C, - 9606 - 8208: 0xA87D, - 9607 - 8208: 0xA87E, - 9608 - 8208: 0xA880, - 9609 - 8208: 0xA881, - 9610 - 8208: 0xA882, - 9611 - 8208: 0xA883, - 9612 - 8208: 0xA884, - 9613 - 8208: 0xA885, - 9614 - 8208: 0xA886, - 9615 - 8208: 0xA887, - 9619 - 8208: 0xA888, - 9620 - 8208: 0xA889, - 9621 - 8208: 0xA88A, - 9632 - 8208: 0xA1F6, - 9633 - 8208: 0xA1F5, - 9650 - 8208: 0xA1F8, - 9651 - 8208: 0xA1F7, - 9660 - 8208: 0xA88B, - 9661 - 8208: 0xA88C, - 9670 - 8208: 0xA1F4, - 9671 - 8208: 0xA1F3, - 9675 - 8208: 0xA1F0, - 9678 - 8208: 0xA1F2, - 9679 - 8208: 0xA1F1, - 9698 - 8208: 0xA88D, - 9699 - 8208: 0xA88E, - 9700 - 8208: 0xA88F, - 9701 - 8208: 0xA890, - 9733 - 8208: 0xA1EF, - 9734 - 8208: 0xA1EE, - 9737 - 8208: 0xA891, - 9792 - 8208: 0xA1E2, - 9794 - 8208: 0xA1E1, -} - -const encode2Low, encode2High = 164, 1106 - -var encode2 = [...]uint16{ - 164 - 164: 0xA1E8, - 167 - 164: 0xA1EC, - 168 - 164: 0xA1A7, - 176 - 164: 0xA1E3, - 177 - 164: 0xA1C0, - 183 - 164: 0xA1A4, - 215 - 164: 0xA1C1, - 224 - 164: 0xA8A4, - 225 - 164: 0xA8A2, - 232 - 164: 0xA8A8, - 233 - 164: 0xA8A6, - 234 - 164: 0xA8BA, - 236 - 164: 0xA8AC, - 237 - 164: 0xA8AA, - 242 - 164: 0xA8B0, - 243 - 164: 0xA8AE, - 247 - 164: 0xA1C2, - 249 - 164: 0xA8B4, - 250 - 164: 0xA8B2, - 252 - 164: 0xA8B9, - 257 - 164: 0xA8A1, - 275 - 164: 0xA8A5, - 283 - 164: 0xA8A7, - 299 - 164: 0xA8A9, - 324 - 164: 0xA8BD, - 328 - 164: 0xA8BE, - 333 - 164: 0xA8AD, - 363 - 164: 0xA8B1, - 462 - 164: 0xA8A3, - 464 - 164: 0xA8AB, - 466 - 164: 0xA8AF, - 468 - 164: 0xA8B3, - 470 - 164: 0xA8B5, - 472 - 164: 0xA8B6, - 474 - 164: 0xA8B7, - 476 - 164: 0xA8B8, - 505 - 164: 0xA8BF, - 593 - 164: 0xA8BB, - 609 - 164: 0xA8C0, - 711 - 164: 0xA1A6, - 713 - 164: 0xA1A5, - 714 - 164: 0xA840, - 715 - 164: 0xA841, - 729 - 164: 0xA842, - 913 - 164: 0xA6A1, - 914 - 164: 0xA6A2, - 915 - 164: 0xA6A3, - 916 - 164: 0xA6A4, - 917 - 164: 0xA6A5, - 918 - 164: 0xA6A6, - 919 - 164: 0xA6A7, - 920 - 164: 0xA6A8, - 921 - 164: 0xA6A9, - 922 - 164: 0xA6AA, - 923 - 164: 0xA6AB, - 924 - 164: 0xA6AC, - 925 - 164: 0xA6AD, - 926 - 164: 0xA6AE, - 927 - 164: 0xA6AF, - 928 - 164: 0xA6B0, - 929 - 164: 0xA6B1, - 931 - 164: 0xA6B2, - 932 - 164: 0xA6B3, - 933 - 164: 0xA6B4, - 934 - 164: 0xA6B5, - 935 - 164: 0xA6B6, - 936 - 164: 0xA6B7, - 937 - 164: 0xA6B8, - 945 - 164: 0xA6C1, - 946 - 164: 0xA6C2, - 947 - 164: 0xA6C3, - 948 - 164: 0xA6C4, - 949 - 164: 0xA6C5, - 950 - 164: 0xA6C6, - 951 - 164: 0xA6C7, - 952 - 164: 0xA6C8, - 953 - 164: 0xA6C9, - 954 - 164: 0xA6CA, - 955 - 164: 0xA6CB, - 956 - 164: 0xA6CC, - 957 - 164: 0xA6CD, - 958 - 164: 0xA6CE, - 959 - 164: 0xA6CF, - 960 - 164: 0xA6D0, - 961 - 164: 0xA6D1, - 963 - 164: 0xA6D2, - 964 - 164: 0xA6D3, - 965 - 164: 0xA6D4, - 966 - 164: 0xA6D5, - 967 - 164: 0xA6D6, - 968 - 164: 0xA6D7, - 969 - 164: 0xA6D8, - 1025 - 164: 0xA7A7, - 1040 - 164: 0xA7A1, - 1041 - 164: 0xA7A2, - 1042 - 164: 0xA7A3, - 1043 - 164: 0xA7A4, - 1044 - 164: 0xA7A5, - 1045 - 164: 0xA7A6, - 1046 - 164: 0xA7A8, - 1047 - 164: 0xA7A9, - 1048 - 164: 0xA7AA, - 1049 - 164: 0xA7AB, - 1050 - 164: 0xA7AC, - 1051 - 164: 0xA7AD, - 1052 - 164: 0xA7AE, - 1053 - 164: 0xA7AF, - 1054 - 164: 0xA7B0, - 1055 - 164: 0xA7B1, - 1056 - 164: 0xA7B2, - 1057 - 164: 0xA7B3, - 1058 - 164: 0xA7B4, - 1059 - 164: 0xA7B5, - 1060 - 164: 0xA7B6, - 1061 - 164: 0xA7B7, - 1062 - 164: 0xA7B8, - 1063 - 164: 0xA7B9, - 1064 - 164: 0xA7BA, - 1065 - 164: 0xA7BB, - 1066 - 164: 0xA7BC, - 1067 - 164: 0xA7BD, - 1068 - 164: 0xA7BE, - 1069 - 164: 0xA7BF, - 1070 - 164: 0xA7C0, - 1071 - 164: 0xA7C1, - 1072 - 164: 0xA7D1, - 1073 - 164: 0xA7D2, - 1074 - 164: 0xA7D3, - 1075 - 164: 0xA7D4, - 1076 - 164: 0xA7D5, - 1077 - 164: 0xA7D6, - 1078 - 164: 0xA7D8, - 1079 - 164: 0xA7D9, - 1080 - 164: 0xA7DA, - 1081 - 164: 0xA7DB, - 1082 - 164: 0xA7DC, - 1083 - 164: 0xA7DD, - 1084 - 164: 0xA7DE, - 1085 - 164: 0xA7DF, - 1086 - 164: 0xA7E0, - 1087 - 164: 0xA7E1, - 1088 - 164: 0xA7E2, - 1089 - 164: 0xA7E3, - 1090 - 164: 0xA7E4, - 1091 - 164: 0xA7E5, - 1092 - 164: 0xA7E6, - 1093 - 164: 0xA7E7, - 1094 - 164: 0xA7E8, - 1095 - 164: 0xA7E9, - 1096 - 164: 0xA7EA, - 1097 - 164: 0xA7EB, - 1098 - 164: 0xA7EC, - 1099 - 164: 0xA7ED, - 1100 - 164: 0xA7EE, - 1101 - 164: 0xA7EF, - 1102 - 164: 0xA7F0, - 1103 - 164: 0xA7F1, - 1105 - 164: 0xA7D7, -} - -const encode3Low, encode3High = 65072, 65510 - -var encode3 = [...]uint16{ - 65072 - 65072: 0xA955, - 65073 - 65072: 0xA6F2, - 65075 - 65072: 0xA6F4, - 65076 - 65072: 0xA6F5, - 65077 - 65072: 0xA6E0, - 65078 - 65072: 0xA6E1, - 65079 - 65072: 0xA6F0, - 65080 - 65072: 0xA6F1, - 65081 - 65072: 0xA6E2, - 65082 - 65072: 0xA6E3, - 65083 - 65072: 0xA6EE, - 65084 - 65072: 0xA6EF, - 65085 - 65072: 0xA6E6, - 65086 - 65072: 0xA6E7, - 65087 - 65072: 0xA6E4, - 65088 - 65072: 0xA6E5, - 65089 - 65072: 0xA6E8, - 65090 - 65072: 0xA6E9, - 65091 - 65072: 0xA6EA, - 65092 - 65072: 0xA6EB, - 65097 - 65072: 0xA968, - 65098 - 65072: 0xA969, - 65099 - 65072: 0xA96A, - 65100 - 65072: 0xA96B, - 65101 - 65072: 0xA96C, - 65102 - 65072: 0xA96D, - 65103 - 65072: 0xA96E, - 65104 - 65072: 0xA96F, - 65105 - 65072: 0xA970, - 65106 - 65072: 0xA971, - 65108 - 65072: 0xA972, - 65109 - 65072: 0xA973, - 65110 - 65072: 0xA974, - 65111 - 65072: 0xA975, - 65113 - 65072: 0xA976, - 65114 - 65072: 0xA977, - 65115 - 65072: 0xA978, - 65116 - 65072: 0xA979, - 65117 - 65072: 0xA97A, - 65118 - 65072: 0xA97B, - 65119 - 65072: 0xA97C, - 65120 - 65072: 0xA97D, - 65121 - 65072: 0xA97E, - 65122 - 65072: 0xA980, - 65123 - 65072: 0xA981, - 65124 - 65072: 0xA982, - 65125 - 65072: 0xA983, - 65126 - 65072: 0xA984, - 65128 - 65072: 0xA985, - 65129 - 65072: 0xA986, - 65130 - 65072: 0xA987, - 65131 - 65072: 0xA988, - 65281 - 65072: 0xA3A1, - 65282 - 65072: 0xA3A2, - 65283 - 65072: 0xA3A3, - 65284 - 65072: 0xA1E7, - 65285 - 65072: 0xA3A5, - 65286 - 65072: 0xA3A6, - 65287 - 65072: 0xA3A7, - 65288 - 65072: 0xA3A8, - 65289 - 65072: 0xA3A9, - 65290 - 65072: 0xA3AA, - 65291 - 65072: 0xA3AB, - 65292 - 65072: 0xA3AC, - 65293 - 65072: 0xA3AD, - 65294 - 65072: 0xA3AE, - 65295 - 65072: 0xA3AF, - 65296 - 65072: 0xA3B0, - 65297 - 65072: 0xA3B1, - 65298 - 65072: 0xA3B2, - 65299 - 65072: 0xA3B3, - 65300 - 65072: 0xA3B4, - 65301 - 65072: 0xA3B5, - 65302 - 65072: 0xA3B6, - 65303 - 65072: 0xA3B7, - 65304 - 65072: 0xA3B8, - 65305 - 65072: 0xA3B9, - 65306 - 65072: 0xA3BA, - 65307 - 65072: 0xA3BB, - 65308 - 65072: 0xA3BC, - 65309 - 65072: 0xA3BD, - 65310 - 65072: 0xA3BE, - 65311 - 65072: 0xA3BF, - 65312 - 65072: 0xA3C0, - 65313 - 65072: 0xA3C1, - 65314 - 65072: 0xA3C2, - 65315 - 65072: 0xA3C3, - 65316 - 65072: 0xA3C4, - 65317 - 65072: 0xA3C5, - 65318 - 65072: 0xA3C6, - 65319 - 65072: 0xA3C7, - 65320 - 65072: 0xA3C8, - 65321 - 65072: 0xA3C9, - 65322 - 65072: 0xA3CA, - 65323 - 65072: 0xA3CB, - 65324 - 65072: 0xA3CC, - 65325 - 65072: 0xA3CD, - 65326 - 65072: 0xA3CE, - 65327 - 65072: 0xA3CF, - 65328 - 65072: 0xA3D0, - 65329 - 65072: 0xA3D1, - 65330 - 65072: 0xA3D2, - 65331 - 65072: 0xA3D3, - 65332 - 65072: 0xA3D4, - 65333 - 65072: 0xA3D5, - 65334 - 65072: 0xA3D6, - 65335 - 65072: 0xA3D7, - 65336 - 65072: 0xA3D8, - 65337 - 65072: 0xA3D9, - 65338 - 65072: 0xA3DA, - 65339 - 65072: 0xA3DB, - 65340 - 65072: 0xA3DC, - 65341 - 65072: 0xA3DD, - 65342 - 65072: 0xA3DE, - 65343 - 65072: 0xA3DF, - 65344 - 65072: 0xA3E0, - 65345 - 65072: 0xA3E1, - 65346 - 65072: 0xA3E2, - 65347 - 65072: 0xA3E3, - 65348 - 65072: 0xA3E4, - 65349 - 65072: 0xA3E5, - 65350 - 65072: 0xA3E6, - 65351 - 65072: 0xA3E7, - 65352 - 65072: 0xA3E8, - 65353 - 65072: 0xA3E9, - 65354 - 65072: 0xA3EA, - 65355 - 65072: 0xA3EB, - 65356 - 65072: 0xA3EC, - 65357 - 65072: 0xA3ED, - 65358 - 65072: 0xA3EE, - 65359 - 65072: 0xA3EF, - 65360 - 65072: 0xA3F0, - 65361 - 65072: 0xA3F1, - 65362 - 65072: 0xA3F2, - 65363 - 65072: 0xA3F3, - 65364 - 65072: 0xA3F4, - 65365 - 65072: 0xA3F5, - 65366 - 65072: 0xA3F6, - 65367 - 65072: 0xA3F7, - 65368 - 65072: 0xA3F8, - 65369 - 65072: 0xA3F9, - 65370 - 65072: 0xA3FA, - 65371 - 65072: 0xA3FB, - 65372 - 65072: 0xA3FC, - 65373 - 65072: 0xA3FD, - 65374 - 65072: 0xA1AB, - 65504 - 65072: 0xA1E9, - 65505 - 65072: 0xA1EA, - 65506 - 65072: 0xA956, - 65507 - 65072: 0xA3FE, - 65508 - 65072: 0xA957, - 65509 - 65072: 0xA3A4, -} - -const encode4Low, encode4High = 63788, 64042 - -var encode4 = [...]uint16{ - 63788 - 63788: 0xFD9C, - 63865 - 63788: 0xFD9D, - 63893 - 63788: 0xFD9E, - 63975 - 63788: 0xFD9F, - 63985 - 63788: 0xFDA0, - 64012 - 63788: 0xFE40, - 64013 - 63788: 0xFE41, - 64014 - 63788: 0xFE42, - 64015 - 63788: 0xFE43, - 64017 - 63788: 0xFE44, - 64019 - 63788: 0xFE45, - 64020 - 63788: 0xFE46, - 64024 - 63788: 0xFE47, - 64031 - 63788: 0xFE48, - 64032 - 63788: 0xFE49, - 64033 - 63788: 0xFE4A, - 64035 - 63788: 0xFE4B, - 64036 - 63788: 0xFE4C, - 64039 - 63788: 0xFE4D, - 64040 - 63788: 0xFE4E, - 64041 - 63788: 0xFE4F, -} diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go deleted file mode 100644 index 1fcddde..0000000 --- a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package traditionalchinese - -import ( - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// All is a list of all defined encodings in this package. -var All = []encoding.Encoding{Big5} - -// Big5 is the Big5 encoding, also known as Code Page 950. -var Big5 encoding.Encoding = &big5 - -var big5 = internal.Encoding{ - &internal.SimpleEncoding{big5Decoder{}, big5Encoder{}}, - "Big5", - identifier.Big5, -} - -type big5Decoder struct{ transform.NopResetter } - -func (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size, s := rune(0), 0, "" -loop: - for ; nSrc < len(src); nSrc += size { - switch c0 := src[nSrc]; { - case c0 < utf8.RuneSelf: - r, size = rune(c0), 1 - - case 0x81 <= c0 && c0 < 0xff: - if nSrc+1 >= len(src) { - if !atEOF { - err = transform.ErrShortSrc - break loop - } - r, size = utf8.RuneError, 1 - goto write - } - c1 := src[nSrc+1] - switch { - case 0x40 <= c1 && c1 < 0x7f: - c1 -= 0x40 - case 0xa1 <= c1 && c1 < 0xff: - c1 -= 0x62 - case c1 < 0x40: - r, size = utf8.RuneError, 1 - goto write - default: - r, size = utf8.RuneError, 2 - goto write - } - r, size = '\ufffd', 2 - if i := int(c0-0x81)*157 + int(c1); i < len(decode) { - if 1133 <= i && i < 1167 { - // The two-rune special cases for LATIN CAPITAL / SMALL E WITH CIRCUMFLEX - // AND MACRON / CARON are from http://encoding.spec.whatwg.org/#big5 - switch i { - case 1133: - s = "\u00CA\u0304" - goto writeStr - case 1135: - s = "\u00CA\u030C" - goto writeStr - case 1164: - s = "\u00EA\u0304" - goto writeStr - case 1166: - s = "\u00EA\u030C" - goto writeStr - } - } - r = rune(decode[i]) - if r == 0 { - r = '\ufffd' - } - } - - default: - r, size = utf8.RuneError, 1 - } - - write: - if nDst+utf8.RuneLen(r) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += utf8.EncodeRune(dst[nDst:], r) - continue loop - - writeStr: - if nDst+len(s) > len(dst) { - err = transform.ErrShortDst - break loop - } - nDst += copy(dst[nDst:], s) - continue loop - } - return nDst, nSrc, err -} - -type big5Encoder struct{ transform.NopResetter } - -func (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - r, size := rune(0), 0 - for ; nSrc < len(src); nSrc += size { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - if nDst >= len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = uint8(r) - nDst++ - continue - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - } - - if r >= utf8.RuneSelf { - // func init checks that the switch covers all tables. - switch { - case encode0Low <= r && r < encode0High: - if r = rune(encode0[r-encode0Low]); r != 0 { - goto write2 - } - case encode1Low <= r && r < encode1High: - if r = rune(encode1[r-encode1Low]); r != 0 { - goto write2 - } - case encode2Low <= r && r < encode2High: - if r = rune(encode2[r-encode2Low]); r != 0 { - goto write2 - } - case encode3Low <= r && r < encode3High: - if r = rune(encode3[r-encode3Low]); r != 0 { - goto write2 - } - case encode4Low <= r && r < encode4High: - if r = rune(encode4[r-encode4Low]); r != 0 { - goto write2 - } - case encode5Low <= r && r < encode5High: - if r = rune(encode5[r-encode5Low]); r != 0 { - goto write2 - } - case encode6Low <= r && r < encode6High: - if r = rune(encode6[r-encode6Low]); r != 0 { - goto write2 - } - case encode7Low <= r && r < encode7High: - if r = rune(encode7[r-encode7Low]); r != 0 { - goto write2 - } - } - err = internal.ErrASCIIReplacement - break - } - - write2: - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = uint8(r >> 8) - dst[nDst+1] = uint8(r) - nDst += 2 - continue - } - return nDst, nSrc, err -} - -func init() { - // Check that the hard-coded encode switch covers all tables. - if numEncodeTables != 8 { - panic("bad numEncodeTables") - } -} diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go b/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go deleted file mode 100644 index d909e38..0000000 --- a/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go +++ /dev/null @@ -1,37142 +0,0 @@ -// generated by go run maketables.go; DO NOT EDIT - -// Package traditionalchinese provides Traditional Chinese encodings such as Big5. -package traditionalchinese // import "golang.org/x/text/encoding/traditionalchinese" - -// decode is the decoding table from Big5 code to Unicode. -// It is defined at http://encoding.spec.whatwg.org/index-big5.txt -var decode = [...]uint32{ - 942: 0x000043F0, - 943: 0x00004C32, - 944: 0x00004603, - 945: 0x000045A6, - 946: 0x00004578, - 947: 0x00027267, - 948: 0x00004D77, - 949: 0x000045B3, - 950: 0x00027CB1, - 951: 0x00004CE2, - 952: 0x00027CC5, - 953: 0x00003B95, - 954: 0x00004736, - 955: 0x00004744, - 956: 0x00004C47, - 957: 0x00004C40, - 958: 0x000242BF, - 959: 0x00023617, - 960: 0x00027352, - 961: 0x00026E8B, - 962: 0x000270D2, - 963: 0x00004C57, - 964: 0x0002A351, - 965: 0x0000474F, - 966: 0x000045DA, - 967: 0x00004C85, - 968: 0x00027C6C, - 969: 0x00004D07, - 970: 0x00004AA4, - 971: 0x000046A1, - 972: 0x00026B23, - 973: 0x00007225, - 974: 0x00025A54, - 975: 0x00021A63, - 976: 0x00023E06, - 977: 0x00023F61, - 978: 0x0000664D, - 979: 0x000056FB, - 981: 0x00007D95, - 982: 0x0000591D, - 983: 0x00028BB9, - 984: 0x00003DF4, - 985: 0x00009734, - 986: 0x00027BEF, - 987: 0x00005BDB, - 988: 0x00021D5E, - 989: 0x00005AA4, - 990: 0x00003625, - 991: 0x00029EB0, - 992: 0x00005AD1, - 993: 0x00005BB7, - 994: 0x00005CFC, - 995: 0x0000676E, - 996: 0x00008593, - 997: 0x00029945, - 998: 0x00007461, - 999: 0x0000749D, - 1000: 0x00003875, - 1001: 0x00021D53, - 1002: 0x0002369E, - 1003: 0x00026021, - 1004: 0x00003EEC, - 1005: 0x000258DE, - 1006: 0x00003AF5, - 1007: 0x00007AFC, - 1008: 0x00009F97, - 1009: 0x00024161, - 1010: 0x0002890D, - 1011: 0x000231EA, - 1012: 0x00020A8A, - 1013: 0x0002325E, - 1014: 0x0000430A, - 1015: 0x00008484, - 1016: 0x00009F96, - 1017: 0x0000942F, - 1018: 0x00004930, - 1019: 0x00008613, - 1020: 0x00005896, - 1021: 0x0000974A, - 1022: 0x00009218, - 1023: 0x000079D0, - 1024: 0x00007A32, - 1025: 0x00006660, - 1026: 0x00006A29, - 1027: 0x0000889D, - 1028: 0x0000744C, - 1029: 0x00007BC5, - 1030: 0x00006782, - 1031: 0x00007A2C, - 1032: 0x0000524F, - 1033: 0x00009046, - 1034: 0x000034E6, - 1035: 0x000073C4, - 1036: 0x00025DB9, - 1037: 0x000074C6, - 1038: 0x00009FC7, - 1039: 0x000057B3, - 1040: 0x0000492F, - 1041: 0x0000544C, - 1042: 0x00004131, - 1043: 0x0002368E, - 1044: 0x00005818, - 1045: 0x00007A72, - 1046: 0x00027B65, - 1047: 0x00008B8F, - 1048: 0x000046AE, - 1049: 0x00026E88, - 1050: 0x00004181, - 1051: 0x00025D99, - 1052: 0x00007BAE, - 1053: 0x000224BC, - 1054: 0x00009FC8, - 1055: 0x000224C1, - 1056: 0x000224C9, - 1057: 0x000224CC, - 1058: 0x00009FC9, - 1059: 0x00008504, - 1060: 0x000235BB, - 1061: 0x000040B4, - 1062: 0x00009FCA, - 1063: 0x000044E1, - 1064: 0x0002ADFF, - 1065: 0x000062C1, - 1066: 0x0000706E, - 1067: 0x00009FCB, - 1099: 0x000031C0, - 1100: 0x000031C1, - 1101: 0x000031C2, - 1102: 0x000031C3, - 1103: 0x000031C4, - 1104: 0x0002010C, - 1105: 0x000031C5, - 1106: 0x000200D1, - 1107: 0x000200CD, - 1108: 0x000031C6, - 1109: 0x000031C7, - 1110: 0x000200CB, - 1111: 0x00021FE8, - 1112: 0x000031C8, - 1113: 0x000200CA, - 1114: 0x000031C9, - 1115: 0x000031CA, - 1116: 0x000031CB, - 1117: 0x000031CC, - 1118: 0x0002010E, - 1119: 0x000031CD, - 1120: 0x000031CE, - 1121: 0x00000100, - 1122: 0x000000C1, - 1123: 0x000001CD, - 1124: 0x000000C0, - 1125: 0x00000112, - 1126: 0x000000C9, - 1127: 0x0000011A, - 1128: 0x000000C8, - 1129: 0x0000014C, - 1130: 0x000000D3, - 1131: 0x000001D1, - 1132: 0x000000D2, - 1134: 0x00001EBE, - 1136: 0x00001EC0, - 1137: 0x000000CA, - 1138: 0x00000101, - 1139: 0x000000E1, - 1140: 0x000001CE, - 1141: 0x000000E0, - 1142: 0x00000251, - 1143: 0x00000113, - 1144: 0x000000E9, - 1145: 0x0000011B, - 1146: 0x000000E8, - 1147: 0x0000012B, - 1148: 0x000000ED, - 1149: 0x000001D0, - 1150: 0x000000EC, - 1151: 0x0000014D, - 1152: 0x000000F3, - 1153: 0x000001D2, - 1154: 0x000000F2, - 1155: 0x0000016B, - 1156: 0x000000FA, - 1157: 0x000001D4, - 1158: 0x000000F9, - 1159: 0x000001D6, - 1160: 0x000001D8, - 1161: 0x000001DA, - 1162: 0x000001DC, - 1163: 0x000000FC, - 1165: 0x00001EBF, - 1167: 0x00001EC1, - 1168: 0x000000EA, - 1169: 0x00000261, - 1170: 0x000023DA, - 1171: 0x000023DB, - 1256: 0x0002A3A9, - 1257: 0x00021145, - 1259: 0x0000650A, - 1262: 0x00004E3D, - 1263: 0x00006EDD, - 1264: 0x00009D4E, - 1265: 0x000091DF, - 1268: 0x00027735, - 1269: 0x00006491, - 1270: 0x00004F1A, - 1271: 0x00004F28, - 1272: 0x00004FA8, - 1273: 0x00005156, - 1274: 0x00005174, - 1275: 0x0000519C, - 1276: 0x000051E4, - 1277: 0x000052A1, - 1278: 0x000052A8, - 1279: 0x0000533B, - 1280: 0x0000534E, - 1281: 0x000053D1, - 1282: 0x000053D8, - 1283: 0x000056E2, - 1284: 0x000058F0, - 1285: 0x00005904, - 1286: 0x00005907, - 1287: 0x00005932, - 1288: 0x00005934, - 1289: 0x00005B66, - 1290: 0x00005B9E, - 1291: 0x00005B9F, - 1292: 0x00005C9A, - 1293: 0x00005E86, - 1294: 0x0000603B, - 1295: 0x00006589, - 1296: 0x000067FE, - 1297: 0x00006804, - 1298: 0x00006865, - 1299: 0x00006D4E, - 1300: 0x000070BC, - 1301: 0x00007535, - 1302: 0x00007EA4, - 1303: 0x00007EAC, - 1304: 0x00007EBA, - 1305: 0x00007EC7, - 1306: 0x00007ECF, - 1307: 0x00007EDF, - 1308: 0x00007F06, - 1309: 0x00007F37, - 1310: 0x0000827A, - 1311: 0x000082CF, - 1312: 0x0000836F, - 1313: 0x000089C6, - 1314: 0x00008BBE, - 1315: 0x00008BE2, - 1316: 0x00008F66, - 1317: 0x00008F67, - 1318: 0x00008F6E, - 1319: 0x00007411, - 1320: 0x00007CFC, - 1321: 0x00007DCD, - 1322: 0x00006946, - 1323: 0x00007AC9, - 1324: 0x00005227, - 1329: 0x0000918C, - 1330: 0x000078B8, - 1331: 0x0000915E, - 1332: 0x000080BC, - 1334: 0x00008D0B, - 1335: 0x000080F6, - 1336: 0x000209E7, - 1339: 0x0000809F, - 1340: 0x00009EC7, - 1341: 0x00004CCD, - 1342: 0x00009DC9, - 1343: 0x00009E0C, - 1344: 0x00004C3E, - 1345: 0x00029DF6, - 1346: 0x0002700E, - 1347: 0x00009E0A, - 1348: 0x0002A133, - 1349: 0x000035C1, - 1351: 0x00006E9A, - 1352: 0x0000823E, - 1353: 0x00007519, - 1355: 0x00004911, - 1356: 0x00009A6C, - 1357: 0x00009A8F, - 1358: 0x00009F99, - 1359: 0x00007987, - 1360: 0x0002846C, - 1361: 0x00021DCA, - 1362: 0x000205D0, - 1363: 0x00022AE6, - 1364: 0x00004E24, - 1365: 0x00004E81, - 1366: 0x00004E80, - 1367: 0x00004E87, - 1368: 0x00004EBF, - 1369: 0x00004EEB, - 1370: 0x00004F37, - 1371: 0x0000344C, - 1372: 0x00004FBD, - 1373: 0x00003E48, - 1374: 0x00005003, - 1375: 0x00005088, - 1376: 0x0000347D, - 1377: 0x00003493, - 1378: 0x000034A5, - 1379: 0x00005186, - 1380: 0x00005905, - 1381: 0x000051DB, - 1382: 0x000051FC, - 1383: 0x00005205, - 1384: 0x00004E89, - 1385: 0x00005279, - 1386: 0x00005290, - 1387: 0x00005327, - 1388: 0x000035C7, - 1389: 0x000053A9, - 1390: 0x00003551, - 1391: 0x000053B0, - 1392: 0x00003553, - 1393: 0x000053C2, - 1394: 0x00005423, - 1395: 0x0000356D, - 1396: 0x00003572, - 1397: 0x00003681, - 1398: 0x00005493, - 1399: 0x000054A3, - 1400: 0x000054B4, - 1401: 0x000054B9, - 1402: 0x000054D0, - 1403: 0x000054EF, - 1404: 0x00005518, - 1405: 0x00005523, - 1406: 0x00005528, - 1407: 0x00003598, - 1408: 0x0000553F, - 1409: 0x000035A5, - 1410: 0x000035BF, - 1411: 0x000055D7, - 1412: 0x000035C5, - 1413: 0x00027D84, - 1414: 0x00005525, - 1416: 0x00020C42, - 1417: 0x00020D15, - 1418: 0x0002512B, - 1419: 0x00005590, - 1420: 0x00022CC6, - 1421: 0x000039EC, - 1422: 0x00020341, - 1423: 0x00008E46, - 1424: 0x00024DB8, - 1425: 0x000294E5, - 1426: 0x00004053, - 1427: 0x000280BE, - 1428: 0x0000777A, - 1429: 0x00022C38, - 1430: 0x00003A34, - 1431: 0x000047D5, - 1432: 0x0002815D, - 1433: 0x000269F2, - 1434: 0x00024DEA, - 1435: 0x000064DD, - 1436: 0x00020D7C, - 1437: 0x00020FB4, - 1438: 0x00020CD5, - 1439: 0x000210F4, - 1440: 0x0000648D, - 1441: 0x00008E7E, - 1442: 0x00020E96, - 1443: 0x00020C0B, - 1444: 0x00020F64, - 1445: 0x00022CA9, - 1446: 0x00028256, - 1447: 0x000244D3, - 1449: 0x00020D46, - 1450: 0x00029A4D, - 1451: 0x000280E9, - 1452: 0x000047F4, - 1453: 0x00024EA7, - 1454: 0x00022CC2, - 1455: 0x00009AB2, - 1456: 0x00003A67, - 1457: 0x000295F4, - 1458: 0x00003FED, - 1459: 0x00003506, - 1460: 0x000252C7, - 1461: 0x000297D4, - 1462: 0x000278C8, - 1463: 0x00022D44, - 1464: 0x00009D6E, - 1465: 0x00009815, - 1467: 0x000043D9, - 1468: 0x000260A5, - 1469: 0x000064B4, - 1470: 0x000054E3, - 1471: 0x00022D4C, - 1472: 0x00022BCA, - 1473: 0x00021077, - 1474: 0x000039FB, - 1475: 0x0002106F, - 1476: 0x000266DA, - 1477: 0x00026716, - 1478: 0x000279A0, - 1479: 0x000064EA, - 1480: 0x00025052, - 1481: 0x00020C43, - 1482: 0x00008E68, - 1483: 0x000221A1, - 1484: 0x00028B4C, - 1485: 0x00020731, - 1487: 0x0000480B, - 1488: 0x000201A9, - 1489: 0x00003FFA, - 1490: 0x00005873, - 1491: 0x00022D8D, - 1493: 0x000245C8, - 1494: 0x000204FC, - 1495: 0x00026097, - 1496: 0x00020F4C, - 1497: 0x00020D96, - 1498: 0x00005579, - 1499: 0x000040BB, - 1500: 0x000043BA, - 1502: 0x00004AB4, - 1503: 0x00022A66, - 1504: 0x0002109D, - 1505: 0x000081AA, - 1506: 0x000098F5, - 1507: 0x00020D9C, - 1508: 0x00006379, - 1509: 0x000039FE, - 1510: 0x00022775, - 1511: 0x00008DC0, - 1512: 0x000056A1, - 1513: 0x0000647C, - 1514: 0x00003E43, - 1516: 0x0002A601, - 1517: 0x00020E09, - 1518: 0x00022ACF, - 1519: 0x00022CC9, - 1521: 0x000210C8, - 1522: 0x000239C2, - 1523: 0x00003992, - 1524: 0x00003A06, - 1525: 0x0002829B, - 1526: 0x00003578, - 1527: 0x00025E49, - 1528: 0x000220C7, - 1529: 0x00005652, - 1530: 0x00020F31, - 1531: 0x00022CB2, - 1532: 0x00029720, - 1533: 0x000034BC, - 1534: 0x00006C3D, - 1535: 0x00024E3B, - 1538: 0x00027574, - 1539: 0x00022E8B, - 1540: 0x00022208, - 1541: 0x0002A65B, - 1542: 0x00028CCD, - 1543: 0x00020E7A, - 1544: 0x00020C34, - 1545: 0x0002681C, - 1546: 0x00007F93, - 1547: 0x000210CF, - 1548: 0x00022803, - 1549: 0x00022939, - 1550: 0x000035FB, - 1551: 0x000251E3, - 1552: 0x00020E8C, - 1553: 0x00020F8D, - 1554: 0x00020EAA, - 1555: 0x00003F93, - 1556: 0x00020F30, - 1557: 0x00020D47, - 1558: 0x0002114F, - 1559: 0x00020E4C, - 1561: 0x00020EAB, - 1562: 0x00020BA9, - 1563: 0x00020D48, - 1564: 0x000210C0, - 1565: 0x0002113D, - 1566: 0x00003FF9, - 1567: 0x00022696, - 1568: 0x00006432, - 1569: 0x00020FAD, - 1570: 0x000233F4, - 1571: 0x00027639, - 1572: 0x00022BCE, - 1573: 0x00020D7E, - 1574: 0x00020D7F, - 1575: 0x00022C51, - 1576: 0x00022C55, - 1577: 0x00003A18, - 1578: 0x00020E98, - 1579: 0x000210C7, - 1580: 0x00020F2E, - 1581: 0x0002A632, - 1582: 0x00026B50, - 1583: 0x00028CD2, - 1584: 0x00028D99, - 1585: 0x00028CCA, - 1586: 0x000095AA, - 1587: 0x000054CC, - 1588: 0x000082C4, - 1589: 0x000055B9, - 1591: 0x00029EC3, - 1592: 0x00009C26, - 1593: 0x00009AB6, - 1594: 0x0002775E, - 1595: 0x00022DEE, - 1596: 0x00007140, - 1597: 0x0000816D, - 1598: 0x000080EC, - 1599: 0x00005C1C, - 1600: 0x00026572, - 1601: 0x00008134, - 1602: 0x00003797, - 1603: 0x0000535F, - 1604: 0x000280BD, - 1605: 0x000091B6, - 1606: 0x00020EFA, - 1607: 0x00020E0F, - 1608: 0x00020E77, - 1609: 0x00020EFB, - 1610: 0x000035DD, - 1611: 0x00024DEB, - 1612: 0x00003609, - 1613: 0x00020CD6, - 1614: 0x000056AF, - 1615: 0x000227B5, - 1616: 0x000210C9, - 1617: 0x00020E10, - 1618: 0x00020E78, - 1619: 0x00021078, - 1620: 0x00021148, - 1621: 0x00028207, - 1622: 0x00021455, - 1623: 0x00020E79, - 1624: 0x00024E50, - 1625: 0x00022DA4, - 1626: 0x00005A54, - 1627: 0x0002101D, - 1628: 0x0002101E, - 1629: 0x000210F5, - 1630: 0x000210F6, - 1631: 0x0000579C, - 1632: 0x00020E11, - 1633: 0x00027694, - 1634: 0x000282CD, - 1635: 0x00020FB5, - 1636: 0x00020E7B, - 1637: 0x0002517E, - 1638: 0x00003703, - 1639: 0x00020FB6, - 1640: 0x00021180, - 1641: 0x000252D8, - 1642: 0x0002A2BD, - 1643: 0x000249DA, - 1644: 0x0002183A, - 1645: 0x00024177, - 1646: 0x0002827C, - 1647: 0x00005899, - 1648: 0x00005268, - 1649: 0x0000361A, - 1650: 0x0002573D, - 1651: 0x00007BB2, - 1652: 0x00005B68, - 1653: 0x00004800, - 1654: 0x00004B2C, - 1655: 0x00009F27, - 1656: 0x000049E7, - 1657: 0x00009C1F, - 1658: 0x00009B8D, - 1659: 0x00025B74, - 1660: 0x0002313D, - 1661: 0x000055FB, - 1662: 0x000035F2, - 1663: 0x00005689, - 1664: 0x00004E28, - 1665: 0x00005902, - 1666: 0x00021BC1, - 1667: 0x0002F878, - 1668: 0x00009751, - 1669: 0x00020086, - 1670: 0x00004E5B, - 1671: 0x00004EBB, - 1672: 0x0000353E, - 1673: 0x00005C23, - 1674: 0x00005F51, - 1675: 0x00005FC4, - 1676: 0x000038FA, - 1677: 0x0000624C, - 1678: 0x00006535, - 1679: 0x00006B7A, - 1680: 0x00006C35, - 1681: 0x00006C3A, - 1682: 0x0000706C, - 1683: 0x0000722B, - 1684: 0x00004E2C, - 1685: 0x000072AD, - 1686: 0x000248E9, - 1687: 0x00007F52, - 1688: 0x0000793B, - 1689: 0x00007CF9, - 1690: 0x00007F53, - 1691: 0x0002626A, - 1692: 0x000034C1, - 1694: 0x0002634B, - 1695: 0x00008002, - 1696: 0x00008080, - 1697: 0x00026612, - 1698: 0x00026951, - 1699: 0x0000535D, - 1700: 0x00008864, - 1701: 0x000089C1, - 1702: 0x000278B2, - 1703: 0x00008BA0, - 1704: 0x00008D1D, - 1705: 0x00009485, - 1706: 0x00009578, - 1707: 0x0000957F, - 1708: 0x000095E8, - 1709: 0x00028E0F, - 1710: 0x000097E6, - 1711: 0x00009875, - 1712: 0x000098CE, - 1713: 0x000098DE, - 1714: 0x00009963, - 1715: 0x00029810, - 1716: 0x00009C7C, - 1717: 0x00009E1F, - 1718: 0x00009EC4, - 1719: 0x00006B6F, - 1720: 0x0000F907, - 1721: 0x00004E37, - 1722: 0x00020087, - 1723: 0x0000961D, - 1724: 0x00006237, - 1725: 0x000094A2, - 1727: 0x0000503B, - 1728: 0x00006DFE, - 1729: 0x00029C73, - 1730: 0x00009FA6, - 1731: 0x00003DC9, - 1732: 0x0000888F, - 1733: 0x0002414E, - 1734: 0x00007077, - 1735: 0x00005CF5, - 1736: 0x00004B20, - 1737: 0x000251CD, - 1738: 0x00003559, - 1739: 0x00025D30, - 1740: 0x00006122, - 1741: 0x00028A32, - 1742: 0x00008FA7, - 1743: 0x000091F6, - 1744: 0x00007191, - 1745: 0x00006719, - 1746: 0x000073BA, - 1747: 0x00023281, - 1748: 0x0002A107, - 1749: 0x00003C8B, - 1750: 0x00021980, - 1751: 0x00004B10, - 1752: 0x000078E4, - 1753: 0x00007402, - 1754: 0x000051AE, - 1755: 0x0002870F, - 1756: 0x00004009, - 1757: 0x00006A63, - 1758: 0x0002A2BA, - 1759: 0x00004223, - 1760: 0x0000860F, - 1761: 0x00020A6F, - 1762: 0x00007A2A, - 1763: 0x00029947, - 1764: 0x00028AEA, - 1765: 0x00009755, - 1766: 0x0000704D, - 1767: 0x00005324, - 1768: 0x0002207E, - 1769: 0x000093F4, - 1770: 0x000076D9, - 1771: 0x000289E3, - 1772: 0x00009FA7, - 1773: 0x000077DD, - 1774: 0x00004EA3, - 1775: 0x00004FF0, - 1776: 0x000050BC, - 1777: 0x00004E2F, - 1778: 0x00004F17, - 1779: 0x00009FA8, - 1780: 0x00005434, - 1781: 0x00007D8B, - 1782: 0x00005892, - 1783: 0x000058D0, - 1784: 0x00021DB6, - 1785: 0x00005E92, - 1786: 0x00005E99, - 1787: 0x00005FC2, - 1788: 0x00022712, - 1789: 0x0000658B, - 1790: 0x000233F9, - 1791: 0x00006919, - 1792: 0x00006A43, - 1793: 0x00023C63, - 1794: 0x00006CFF, - 1796: 0x00007200, - 1797: 0x00024505, - 1798: 0x0000738C, - 1799: 0x00003EDB, - 1800: 0x00024A13, - 1801: 0x00005B15, - 1802: 0x000074B9, - 1803: 0x00008B83, - 1804: 0x00025CA4, - 1805: 0x00025695, - 1806: 0x00007A93, - 1807: 0x00007BEC, - 1808: 0x00007CC3, - 1809: 0x00007E6C, - 1810: 0x000082F8, - 1811: 0x00008597, - 1812: 0x00009FA9, - 1813: 0x00008890, - 1814: 0x00009FAA, - 1815: 0x00008EB9, - 1816: 0x00009FAB, - 1817: 0x00008FCF, - 1818: 0x0000855F, - 1819: 0x000099E0, - 1820: 0x00009221, - 1821: 0x00009FAC, - 1822: 0x00028DB9, - 1823: 0x0002143F, - 1824: 0x00004071, - 1825: 0x000042A2, - 1826: 0x00005A1A, - 1830: 0x00009868, - 1831: 0x0000676B, - 1832: 0x00004276, - 1833: 0x0000573D, - 1835: 0x000085D6, - 1836: 0x0002497B, - 1837: 0x000082BF, - 1838: 0x0002710D, - 1839: 0x00004C81, - 1840: 0x00026D74, - 1841: 0x00005D7B, - 1842: 0x00026B15, - 1843: 0x00026FBE, - 1844: 0x00009FAD, - 1845: 0x00009FAE, - 1846: 0x00005B96, - 1847: 0x00009FAF, - 1848: 0x000066E7, - 1849: 0x00007E5B, - 1850: 0x00006E57, - 1851: 0x000079CA, - 1852: 0x00003D88, - 1853: 0x000044C3, - 1854: 0x00023256, - 1855: 0x00022796, - 1856: 0x0000439A, - 1857: 0x00004536, - 1859: 0x00005CD5, - 1860: 0x00023B1A, - 1861: 0x00008AF9, - 1862: 0x00005C78, - 1863: 0x00003D12, - 1864: 0x00023551, - 1865: 0x00005D78, - 1866: 0x00009FB2, - 1867: 0x00007157, - 1868: 0x00004558, - 1869: 0x000240EC, - 1870: 0x00021E23, - 1871: 0x00004C77, - 1872: 0x00003978, - 1873: 0x0000344A, - 1874: 0x000201A4, - 1875: 0x00026C41, - 1876: 0x00008ACC, - 1877: 0x00004FB4, - 1878: 0x00020239, - 1879: 0x000059BF, - 1880: 0x0000816C, - 1881: 0x00009856, - 1882: 0x000298FA, - 1883: 0x00005F3B, - 1884: 0x00020B9F, - 1886: 0x000221C1, - 1887: 0x0002896D, - 1888: 0x00004102, - 1889: 0x000046BB, - 1890: 0x00029079, - 1891: 0x00003F07, - 1892: 0x00009FB3, - 1893: 0x0002A1B5, - 1894: 0x000040F8, - 1895: 0x000037D6, - 1896: 0x000046F7, - 1897: 0x00026C46, - 1898: 0x0000417C, - 1899: 0x000286B2, - 1900: 0x000273FF, - 1901: 0x0000456D, - 1902: 0x000038D4, - 1903: 0x0002549A, - 1904: 0x00004561, - 1905: 0x0000451B, - 1906: 0x00004D89, - 1907: 0x00004C7B, - 1908: 0x00004D76, - 1909: 0x000045EA, - 1910: 0x00003FC8, - 1911: 0x00024B0F, - 1912: 0x00003661, - 1913: 0x000044DE, - 1914: 0x000044BD, - 1915: 0x000041ED, - 1916: 0x00005D3E, - 1917: 0x00005D48, - 1918: 0x00005D56, - 1919: 0x00003DFC, - 1920: 0x0000380F, - 1921: 0x00005DA4, - 1922: 0x00005DB9, - 1923: 0x00003820, - 1924: 0x00003838, - 1925: 0x00005E42, - 1926: 0x00005EBD, - 1927: 0x00005F25, - 1928: 0x00005F83, - 1929: 0x00003908, - 1930: 0x00003914, - 1931: 0x0000393F, - 1932: 0x0000394D, - 1933: 0x000060D7, - 1934: 0x0000613D, - 1935: 0x00005CE5, - 1936: 0x00003989, - 1937: 0x000061B7, - 1938: 0x000061B9, - 1939: 0x000061CF, - 1940: 0x000039B8, - 1941: 0x0000622C, - 1942: 0x00006290, - 1943: 0x000062E5, - 1944: 0x00006318, - 1945: 0x000039F8, - 1946: 0x000056B1, - 1947: 0x00003A03, - 1948: 0x000063E2, - 1949: 0x000063FB, - 1950: 0x00006407, - 1951: 0x0000645A, - 1952: 0x00003A4B, - 1953: 0x000064C0, - 1954: 0x00005D15, - 1955: 0x00005621, - 1956: 0x00009F9F, - 1957: 0x00003A97, - 1958: 0x00006586, - 1959: 0x00003ABD, - 1960: 0x000065FF, - 1961: 0x00006653, - 1962: 0x00003AF2, - 1963: 0x00006692, - 1964: 0x00003B22, - 1965: 0x00006716, - 1966: 0x00003B42, - 1967: 0x000067A4, - 1968: 0x00006800, - 1969: 0x00003B58, - 1970: 0x0000684A, - 1971: 0x00006884, - 1972: 0x00003B72, - 1973: 0x00003B71, - 1974: 0x00003B7B, - 1975: 0x00006909, - 1976: 0x00006943, - 1977: 0x0000725C, - 1978: 0x00006964, - 1979: 0x0000699F, - 1980: 0x00006985, - 1981: 0x00003BBC, - 1982: 0x000069D6, - 1983: 0x00003BDD, - 1984: 0x00006A65, - 1985: 0x00006A74, - 1986: 0x00006A71, - 1987: 0x00006A82, - 1988: 0x00003BEC, - 1989: 0x00006A99, - 1990: 0x00003BF2, - 1991: 0x00006AAB, - 1992: 0x00006AB5, - 1993: 0x00006AD4, - 1994: 0x00006AF6, - 1995: 0x00006B81, - 1996: 0x00006BC1, - 1997: 0x00006BEA, - 1998: 0x00006C75, - 1999: 0x00006CAA, - 2000: 0x00003CCB, - 2001: 0x00006D02, - 2002: 0x00006D06, - 2003: 0x00006D26, - 2004: 0x00006D81, - 2005: 0x00003CEF, - 2006: 0x00006DA4, - 2007: 0x00006DB1, - 2008: 0x00006E15, - 2009: 0x00006E18, - 2010: 0x00006E29, - 2011: 0x00006E86, - 2012: 0x000289C0, - 2013: 0x00006EBB, - 2014: 0x00006EE2, - 2015: 0x00006EDA, - 2016: 0x00009F7F, - 2017: 0x00006EE8, - 2018: 0x00006EE9, - 2019: 0x00006F24, - 2020: 0x00006F34, - 2021: 0x00003D46, - 2022: 0x00023F41, - 2023: 0x00006F81, - 2024: 0x00006FBE, - 2025: 0x00003D6A, - 2026: 0x00003D75, - 2027: 0x000071B7, - 2028: 0x00005C99, - 2029: 0x00003D8A, - 2030: 0x0000702C, - 2031: 0x00003D91, - 2032: 0x00007050, - 2033: 0x00007054, - 2034: 0x0000706F, - 2035: 0x0000707F, - 2036: 0x00007089, - 2037: 0x00020325, - 2038: 0x000043C1, - 2039: 0x000035F1, - 2040: 0x00020ED8, - 2041: 0x00023ED7, - 2042: 0x000057BE, - 2043: 0x00026ED3, - 2044: 0x0000713E, - 2045: 0x000257E0, - 2046: 0x0000364E, - 2047: 0x000069A2, - 2048: 0x00028BE9, - 2049: 0x00005B74, - 2050: 0x00007A49, - 2051: 0x000258E1, - 2052: 0x000294D9, - 2053: 0x00007A65, - 2054: 0x00007A7D, - 2055: 0x000259AC, - 2056: 0x00007ABB, - 2057: 0x00007AB0, - 2058: 0x00007AC2, - 2059: 0x00007AC3, - 2060: 0x000071D1, - 2061: 0x0002648D, - 2062: 0x000041CA, - 2063: 0x00007ADA, - 2064: 0x00007ADD, - 2065: 0x00007AEA, - 2066: 0x000041EF, - 2067: 0x000054B2, - 2068: 0x00025C01, - 2069: 0x00007B0B, - 2070: 0x00007B55, - 2071: 0x00007B29, - 2072: 0x0002530E, - 2073: 0x00025CFE, - 2074: 0x00007BA2, - 2075: 0x00007B6F, - 2076: 0x0000839C, - 2077: 0x00025BB4, - 2078: 0x00026C7F, - 2079: 0x00007BD0, - 2080: 0x00008421, - 2081: 0x00007B92, - 2082: 0x00007BB8, - 2083: 0x00025D20, - 2084: 0x00003DAD, - 2085: 0x00025C65, - 2086: 0x00008492, - 2087: 0x00007BFA, - 2088: 0x00007C06, - 2089: 0x00007C35, - 2090: 0x00025CC1, - 2091: 0x00007C44, - 2092: 0x00007C83, - 2093: 0x00024882, - 2094: 0x00007CA6, - 2095: 0x0000667D, - 2096: 0x00024578, - 2097: 0x00007CC9, - 2098: 0x00007CC7, - 2099: 0x00007CE6, - 2100: 0x00007C74, - 2101: 0x00007CF3, - 2102: 0x00007CF5, - 2103: 0x00007CCE, - 2104: 0x00007E67, - 2105: 0x0000451D, - 2106: 0x00026E44, - 2107: 0x00007D5D, - 2108: 0x00026ED6, - 2109: 0x0000748D, - 2110: 0x00007D89, - 2111: 0x00007DAB, - 2112: 0x00007135, - 2113: 0x00007DB3, - 2114: 0x00007DD2, - 2115: 0x00024057, - 2116: 0x00026029, - 2117: 0x00007DE4, - 2118: 0x00003D13, - 2119: 0x00007DF5, - 2120: 0x000217F9, - 2121: 0x00007DE5, - 2122: 0x0002836D, - 2123: 0x00007E1D, - 2124: 0x00026121, - 2125: 0x0002615A, - 2126: 0x00007E6E, - 2127: 0x00007E92, - 2128: 0x0000432B, - 2129: 0x0000946C, - 2130: 0x00007E27, - 2131: 0x00007F40, - 2132: 0x00007F41, - 2133: 0x00007F47, - 2134: 0x00007936, - 2135: 0x000262D0, - 2136: 0x000099E1, - 2137: 0x00007F97, - 2138: 0x00026351, - 2139: 0x00007FA3, - 2140: 0x00021661, - 2141: 0x00020068, - 2142: 0x0000455C, - 2143: 0x00023766, - 2144: 0x00004503, - 2145: 0x0002833A, - 2146: 0x00007FFA, - 2147: 0x00026489, - 2148: 0x00008005, - 2149: 0x00008008, - 2150: 0x0000801D, - 2151: 0x00008028, - 2152: 0x0000802F, - 2153: 0x0002A087, - 2154: 0x00026CC3, - 2155: 0x0000803B, - 2156: 0x0000803C, - 2157: 0x00008061, - 2158: 0x00022714, - 2159: 0x00004989, - 2160: 0x00026626, - 2161: 0x00023DE3, - 2162: 0x000266E8, - 2163: 0x00006725, - 2164: 0x000080A7, - 2165: 0x00028A48, - 2166: 0x00008107, - 2167: 0x0000811A, - 2168: 0x000058B0, - 2169: 0x000226F6, - 2170: 0x00006C7F, - 2171: 0x00026498, - 2172: 0x00024FB8, - 2173: 0x000064E7, - 2174: 0x0002148A, - 2175: 0x00008218, - 2176: 0x0002185E, - 2177: 0x00006A53, - 2178: 0x00024A65, - 2179: 0x00024A95, - 2180: 0x0000447A, - 2181: 0x00008229, - 2182: 0x00020B0D, - 2183: 0x00026A52, - 2184: 0x00023D7E, - 2185: 0x00004FF9, - 2186: 0x000214FD, - 2187: 0x000084E2, - 2188: 0x00008362, - 2189: 0x00026B0A, - 2190: 0x000249A7, - 2191: 0x00023530, - 2192: 0x00021773, - 2193: 0x00023DF8, - 2194: 0x000082AA, - 2195: 0x0000691B, - 2196: 0x0002F994, - 2197: 0x000041DB, - 2198: 0x0000854B, - 2199: 0x000082D0, - 2200: 0x0000831A, - 2201: 0x00020E16, - 2202: 0x000217B4, - 2203: 0x000036C1, - 2204: 0x0002317D, - 2205: 0x0002355A, - 2206: 0x0000827B, - 2207: 0x000082E2, - 2208: 0x00008318, - 2209: 0x00023E8B, - 2210: 0x00026DA3, - 2211: 0x00026B05, - 2212: 0x00026B97, - 2213: 0x000235CE, - 2214: 0x00003DBF, - 2215: 0x0000831D, - 2216: 0x000055EC, - 2217: 0x00008385, - 2218: 0x0000450B, - 2219: 0x00026DA5, - 2220: 0x000083AC, - 2221: 0x000083C1, - 2222: 0x000083D3, - 2223: 0x0000347E, - 2224: 0x00026ED4, - 2225: 0x00006A57, - 2226: 0x0000855A, - 2227: 0x00003496, - 2228: 0x00026E42, - 2229: 0x00022EEF, - 2230: 0x00008458, - 2231: 0x00025BE4, - 2232: 0x00008471, - 2233: 0x00003DD3, - 2234: 0x000044E4, - 2235: 0x00006AA7, - 2236: 0x0000844A, - 2237: 0x00023CB5, - 2238: 0x00007958, - 2239: 0x000084A8, - 2240: 0x00026B96, - 2241: 0x00026E77, - 2242: 0x00026E43, - 2243: 0x000084DE, - 2244: 0x0000840F, - 2245: 0x00008391, - 2246: 0x000044A0, - 2247: 0x00008493, - 2248: 0x000084E4, - 2249: 0x00025C91, - 2250: 0x00004240, - 2251: 0x00025CC0, - 2252: 0x00004543, - 2253: 0x00008534, - 2254: 0x00005AF2, - 2255: 0x00026E99, - 2256: 0x00004527, - 2257: 0x00008573, - 2258: 0x00004516, - 2259: 0x000067BF, - 2260: 0x00008616, - 2261: 0x00028625, - 2262: 0x0002863B, - 2263: 0x000085C1, - 2264: 0x00027088, - 2265: 0x00008602, - 2266: 0x00021582, - 2267: 0x000270CD, - 2268: 0x0002F9B2, - 2269: 0x0000456A, - 2270: 0x00008628, - 2271: 0x00003648, - 2272: 0x000218A2, - 2273: 0x000053F7, - 2274: 0x0002739A, - 2275: 0x0000867E, - 2276: 0x00008771, - 2277: 0x0002A0F8, - 2278: 0x000087EE, - 2279: 0x00022C27, - 2280: 0x000087B1, - 2281: 0x000087DA, - 2282: 0x0000880F, - 2283: 0x00005661, - 2284: 0x0000866C, - 2285: 0x00006856, - 2286: 0x0000460F, - 2287: 0x00008845, - 2288: 0x00008846, - 2289: 0x000275E0, - 2290: 0x00023DB9, - 2291: 0x000275E4, - 2292: 0x0000885E, - 2293: 0x0000889C, - 2294: 0x0000465B, - 2295: 0x000088B4, - 2296: 0x000088B5, - 2297: 0x000063C1, - 2298: 0x000088C5, - 2299: 0x00007777, - 2300: 0x0002770F, - 2301: 0x00008987, - 2302: 0x0000898A, - 2303: 0x000089A6, - 2304: 0x000089A9, - 2305: 0x000089A7, - 2306: 0x000089BC, - 2307: 0x00028A25, - 2308: 0x000089E7, - 2309: 0x00027924, - 2310: 0x00027ABD, - 2311: 0x00008A9C, - 2312: 0x00007793, - 2313: 0x000091FE, - 2314: 0x00008A90, - 2315: 0x00027A59, - 2316: 0x00007AE9, - 2317: 0x00027B3A, - 2318: 0x00023F8F, - 2319: 0x00004713, - 2320: 0x00027B38, - 2321: 0x0000717C, - 2322: 0x00008B0C, - 2323: 0x00008B1F, - 2324: 0x00025430, - 2325: 0x00025565, - 2326: 0x00008B3F, - 2327: 0x00008B4C, - 2328: 0x00008B4D, - 2329: 0x00008AA9, - 2330: 0x00024A7A, - 2331: 0x00008B90, - 2332: 0x00008B9B, - 2333: 0x00008AAF, - 2334: 0x000216DF, - 2335: 0x00004615, - 2336: 0x0000884F, - 2337: 0x00008C9B, - 2338: 0x00027D54, - 2339: 0x00027D8F, - 2340: 0x0002F9D4, - 2341: 0x00003725, - 2342: 0x00027D53, - 2343: 0x00008CD6, - 2344: 0x00027D98, - 2345: 0x00027DBD, - 2346: 0x00008D12, - 2347: 0x00008D03, - 2348: 0x00021910, - 2349: 0x00008CDB, - 2350: 0x0000705C, - 2351: 0x00008D11, - 2352: 0x00024CC9, - 2353: 0x00003ED0, - 2354: 0x00008D77, - 2355: 0x00008DA9, - 2356: 0x00028002, - 2357: 0x00021014, - 2358: 0x0002498A, - 2359: 0x00003B7C, - 2360: 0x000281BC, - 2361: 0x0002710C, - 2362: 0x00007AE7, - 2363: 0x00008EAD, - 2364: 0x00008EB6, - 2365: 0x00008EC3, - 2366: 0x000092D4, - 2367: 0x00008F19, - 2368: 0x00008F2D, - 2369: 0x00028365, - 2370: 0x00028412, - 2371: 0x00008FA5, - 2372: 0x00009303, - 2373: 0x0002A29F, - 2374: 0x00020A50, - 2375: 0x00008FB3, - 2376: 0x0000492A, - 2377: 0x000289DE, - 2378: 0x0002853D, - 2379: 0x00023DBB, - 2380: 0x00005EF8, - 2381: 0x00023262, - 2382: 0x00008FF9, - 2383: 0x0002A014, - 2384: 0x000286BC, - 2385: 0x00028501, - 2386: 0x00022325, - 2387: 0x00003980, - 2388: 0x00026ED7, - 2389: 0x00009037, - 2390: 0x0002853C, - 2391: 0x00027ABE, - 2392: 0x00009061, - 2393: 0x0002856C, - 2394: 0x0002860B, - 2395: 0x000090A8, - 2396: 0x00028713, - 2397: 0x000090C4, - 2398: 0x000286E6, - 2399: 0x000090AE, - 2400: 0x000090FD, - 2401: 0x00009167, - 2402: 0x00003AF0, - 2403: 0x000091A9, - 2404: 0x000091C4, - 2405: 0x00007CAC, - 2406: 0x00028933, - 2407: 0x00021E89, - 2408: 0x0000920E, - 2409: 0x00006C9F, - 2410: 0x00009241, - 2411: 0x00009262, - 2412: 0x000255B9, - 2413: 0x000092B9, - 2414: 0x00028AC6, - 2415: 0x00023C9B, - 2416: 0x00028B0C, - 2417: 0x000255DB, - 2418: 0x00020D31, - 2419: 0x0000932C, - 2420: 0x0000936B, - 2421: 0x00028AE1, - 2422: 0x00028BEB, - 2423: 0x0000708F, - 2424: 0x00005AC3, - 2425: 0x00028AE2, - 2426: 0x00028AE5, - 2427: 0x00004965, - 2428: 0x00009244, - 2429: 0x00028BEC, - 2430: 0x00028C39, - 2431: 0x00028BFF, - 2432: 0x00009373, - 2433: 0x0000945B, - 2434: 0x00008EBC, - 2435: 0x00009585, - 2436: 0x000095A6, - 2437: 0x00009426, - 2438: 0x000095A0, - 2439: 0x00006FF6, - 2440: 0x000042B9, - 2441: 0x0002267A, - 2442: 0x000286D8, - 2443: 0x0002127C, - 2444: 0x00023E2E, - 2445: 0x000049DF, - 2446: 0x00006C1C, - 2447: 0x0000967B, - 2448: 0x00009696, - 2449: 0x0000416C, - 2450: 0x000096A3, - 2451: 0x00026ED5, - 2452: 0x000061DA, - 2453: 0x000096B6, - 2454: 0x000078F5, - 2455: 0x00028AE0, - 2456: 0x000096BD, - 2457: 0x000053CC, - 2458: 0x000049A1, - 2459: 0x00026CB8, - 2460: 0x00020274, - 2461: 0x00026410, - 2462: 0x000290AF, - 2463: 0x000290E5, - 2464: 0x00024AD1, - 2465: 0x00021915, - 2466: 0x0002330A, - 2467: 0x00009731, - 2468: 0x00008642, - 2469: 0x00009736, - 2470: 0x00004A0F, - 2471: 0x0000453D, - 2472: 0x00004585, - 2473: 0x00024AE9, - 2474: 0x00007075, - 2475: 0x00005B41, - 2476: 0x0000971B, - 2477: 0x0000975C, - 2478: 0x000291D5, - 2479: 0x00009757, - 2480: 0x00005B4A, - 2481: 0x000291EB, - 2482: 0x0000975F, - 2483: 0x00009425, - 2484: 0x000050D0, - 2485: 0x000230B7, - 2486: 0x000230BC, - 2487: 0x00009789, - 2488: 0x0000979F, - 2489: 0x000097B1, - 2490: 0x000097BE, - 2491: 0x000097C0, - 2492: 0x000097D2, - 2493: 0x000097E0, - 2494: 0x0002546C, - 2495: 0x000097EE, - 2496: 0x0000741C, - 2497: 0x00029433, - 2498: 0x000097FF, - 2499: 0x000097F5, - 2500: 0x0002941D, - 2501: 0x0002797A, - 2502: 0x00004AD1, - 2503: 0x00009834, - 2504: 0x00009833, - 2505: 0x0000984B, - 2506: 0x00009866, - 2507: 0x00003B0E, - 2508: 0x00027175, - 2509: 0x00003D51, - 2510: 0x00020630, - 2511: 0x0002415C, - 2512: 0x00025706, - 2513: 0x000098CA, - 2514: 0x000098B7, - 2515: 0x000098C8, - 2516: 0x000098C7, - 2517: 0x00004AFF, - 2518: 0x00026D27, - 2519: 0x000216D3, - 2520: 0x000055B0, - 2521: 0x000098E1, - 2522: 0x000098E6, - 2523: 0x000098EC, - 2524: 0x00009378, - 2525: 0x00009939, - 2526: 0x00024A29, - 2527: 0x00004B72, - 2528: 0x00029857, - 2529: 0x00029905, - 2530: 0x000099F5, - 2531: 0x00009A0C, - 2532: 0x00009A3B, - 2533: 0x00009A10, - 2534: 0x00009A58, - 2535: 0x00025725, - 2536: 0x000036C4, - 2537: 0x000290B1, - 2538: 0x00029BD5, - 2539: 0x00009AE0, - 2540: 0x00009AE2, - 2541: 0x00029B05, - 2542: 0x00009AF4, - 2543: 0x00004C0E, - 2544: 0x00009B14, - 2545: 0x00009B2D, - 2546: 0x00028600, - 2547: 0x00005034, - 2548: 0x00009B34, - 2549: 0x000269A8, - 2550: 0x000038C3, - 2551: 0x0002307D, - 2552: 0x00009B50, - 2553: 0x00009B40, - 2554: 0x00029D3E, - 2555: 0x00005A45, - 2556: 0x00021863, - 2557: 0x00009B8E, - 2558: 0x0002424B, - 2559: 0x00009C02, - 2560: 0x00009BFF, - 2561: 0x00009C0C, - 2562: 0x00029E68, - 2563: 0x00009DD4, - 2564: 0x00029FB7, - 2565: 0x0002A192, - 2566: 0x0002A1AB, - 2567: 0x0002A0E1, - 2568: 0x0002A123, - 2569: 0x0002A1DF, - 2570: 0x00009D7E, - 2571: 0x00009D83, - 2572: 0x0002A134, - 2573: 0x00009E0E, - 2574: 0x00006888, - 2575: 0x00009DC4, - 2576: 0x0002215B, - 2577: 0x0002A193, - 2578: 0x0002A220, - 2579: 0x0002193B, - 2580: 0x0002A233, - 2581: 0x00009D39, - 2582: 0x0002A0B9, - 2583: 0x0002A2B4, - 2584: 0x00009E90, - 2585: 0x00009E95, - 2586: 0x00009E9E, - 2587: 0x00009EA2, - 2588: 0x00004D34, - 2589: 0x00009EAA, - 2590: 0x00009EAF, - 2591: 0x00024364, - 2592: 0x00009EC1, - 2593: 0x00003B60, - 2594: 0x000039E5, - 2595: 0x00003D1D, - 2596: 0x00004F32, - 2597: 0x000037BE, - 2598: 0x00028C2B, - 2599: 0x00009F02, - 2600: 0x00009F08, - 2601: 0x00004B96, - 2602: 0x00009424, - 2603: 0x00026DA2, - 2604: 0x00009F17, - 2605: 0x00009F16, - 2606: 0x00009F39, - 2607: 0x0000569F, - 2608: 0x0000568A, - 2609: 0x00009F45, - 2610: 0x000099B8, - 2611: 0x0002908B, - 2612: 0x000097F2, - 2613: 0x0000847F, - 2614: 0x00009F62, - 2615: 0x00009F69, - 2616: 0x00007ADC, - 2617: 0x00009F8E, - 2618: 0x00007216, - 2619: 0x00004BBE, - 2620: 0x00024975, - 2621: 0x000249BB, - 2622: 0x00007177, - 2623: 0x000249F8, - 2624: 0x00024348, - 2625: 0x00024A51, - 2626: 0x0000739E, - 2627: 0x00028BDA, - 2628: 0x000218FA, - 2629: 0x0000799F, - 2630: 0x0002897E, - 2631: 0x00028E36, - 2632: 0x00009369, - 2633: 0x000093F3, - 2634: 0x00028A44, - 2635: 0x000092EC, - 2636: 0x00009381, - 2637: 0x000093CB, - 2638: 0x0002896C, - 2639: 0x000244B9, - 2640: 0x00007217, - 2641: 0x00003EEB, - 2642: 0x00007772, - 2643: 0x00007A43, - 2644: 0x000070D0, - 2645: 0x00024473, - 2646: 0x000243F8, - 2647: 0x0000717E, - 2648: 0x000217EF, - 2649: 0x000070A3, - 2650: 0x000218BE, - 2651: 0x00023599, - 2652: 0x00003EC7, - 2653: 0x00021885, - 2654: 0x0002542F, - 2655: 0x000217F8, - 2656: 0x00003722, - 2657: 0x000216FB, - 2658: 0x00021839, - 2659: 0x000036E1, - 2660: 0x00021774, - 2661: 0x000218D1, - 2662: 0x00025F4B, - 2663: 0x00003723, - 2664: 0x000216C0, - 2665: 0x0000575B, - 2666: 0x00024A25, - 2667: 0x000213FE, - 2668: 0x000212A8, - 2669: 0x000213C6, - 2670: 0x000214B6, - 2671: 0x00008503, - 2672: 0x000236A6, - 2673: 0x00008503, - 2674: 0x00008455, - 2675: 0x00024994, - 2676: 0x00027165, - 2677: 0x00023E31, - 2678: 0x0002555C, - 2679: 0x00023EFB, - 2680: 0x00027052, - 2681: 0x000044F4, - 2682: 0x000236EE, - 2683: 0x0002999D, - 2684: 0x00026F26, - 2685: 0x000067F9, - 2686: 0x00003733, - 2687: 0x00003C15, - 2688: 0x00003DE7, - 2689: 0x0000586C, - 2690: 0x00021922, - 2691: 0x00006810, - 2692: 0x00004057, - 2693: 0x0002373F, - 2694: 0x000240E1, - 2695: 0x0002408B, - 2696: 0x0002410F, - 2697: 0x00026C21, - 2698: 0x000054CB, - 2699: 0x0000569E, - 2700: 0x000266B1, - 2701: 0x00005692, - 2702: 0x00020FDF, - 2703: 0x00020BA8, - 2704: 0x00020E0D, - 2705: 0x000093C6, - 2706: 0x00028B13, - 2707: 0x0000939C, - 2708: 0x00004EF8, - 2709: 0x0000512B, - 2710: 0x00003819, - 2711: 0x00024436, - 2712: 0x00004EBC, - 2713: 0x00020465, - 2714: 0x0002037F, - 2715: 0x00004F4B, - 2716: 0x00004F8A, - 2717: 0x00025651, - 2718: 0x00005A68, - 2719: 0x000201AB, - 2720: 0x000203CB, - 2721: 0x00003999, - 2722: 0x0002030A, - 2723: 0x00020414, - 2724: 0x00003435, - 2725: 0x00004F29, - 2726: 0x000202C0, - 2727: 0x00028EB3, - 2728: 0x00020275, - 2729: 0x00008ADA, - 2730: 0x0002020C, - 2731: 0x00004E98, - 2732: 0x000050CD, - 2733: 0x0000510D, - 2734: 0x00004FA2, - 2735: 0x00004F03, - 2736: 0x00024A0E, - 2737: 0x00023E8A, - 2738: 0x00004F42, - 2739: 0x0000502E, - 2740: 0x0000506C, - 2741: 0x00005081, - 2742: 0x00004FCC, - 2743: 0x00004FE5, - 2744: 0x00005058, - 2745: 0x000050FC, - 2746: 0x00005159, - 2747: 0x0000515B, - 2748: 0x0000515D, - 2749: 0x0000515E, - 2750: 0x00006E76, - 2751: 0x00023595, - 2752: 0x00023E39, - 2753: 0x00023EBF, - 2754: 0x00006D72, - 2755: 0x00021884, - 2756: 0x00023E89, - 2757: 0x000051A8, - 2758: 0x000051C3, - 2759: 0x000205E0, - 2760: 0x000044DD, - 2761: 0x000204A3, - 2762: 0x00020492, - 2763: 0x00020491, - 2764: 0x00008D7A, - 2765: 0x00028A9C, - 2766: 0x0002070E, - 2767: 0x00005259, - 2768: 0x000052A4, - 2769: 0x00020873, - 2770: 0x000052E1, - 2771: 0x0000936E, - 2772: 0x0000467A, - 2773: 0x0000718C, - 2774: 0x0002438C, - 2775: 0x00020C20, - 2776: 0x000249AC, - 2777: 0x000210E4, - 2778: 0x000069D1, - 2779: 0x00020E1D, - 2780: 0x00007479, - 2781: 0x00003EDE, - 2782: 0x00007499, - 2783: 0x00007414, - 2784: 0x00007456, - 2785: 0x00007398, - 2786: 0x00004B8E, - 2787: 0x00024ABC, - 2788: 0x0002408D, - 2789: 0x000053D0, - 2790: 0x00003584, - 2791: 0x0000720F, - 2792: 0x000240C9, - 2793: 0x000055B4, - 2794: 0x00020345, - 2795: 0x000054CD, - 2796: 0x00020BC6, - 2797: 0x0000571D, - 2798: 0x0000925D, - 2799: 0x000096F4, - 2800: 0x00009366, - 2801: 0x000057DD, - 2802: 0x0000578D, - 2803: 0x0000577F, - 2804: 0x0000363E, - 2805: 0x000058CB, - 2806: 0x00005A99, - 2807: 0x00028A46, - 2808: 0x000216FA, - 2809: 0x0002176F, - 2810: 0x00021710, - 2811: 0x00005A2C, - 2812: 0x000059B8, - 2813: 0x0000928F, - 2814: 0x00005A7E, - 2815: 0x00005ACF, - 2816: 0x00005A12, - 2817: 0x00025946, - 2818: 0x000219F3, - 2819: 0x00021861, - 2820: 0x00024295, - 2821: 0x000036F5, - 2822: 0x00006D05, - 2823: 0x00007443, - 2824: 0x00005A21, - 2825: 0x00025E83, - 2826: 0x00005A81, - 2827: 0x00028BD7, - 2828: 0x00020413, - 2829: 0x000093E0, - 2830: 0x0000748C, - 2831: 0x00021303, - 2832: 0x00007105, - 2833: 0x00004972, - 2834: 0x00009408, - 2835: 0x000289FB, - 2836: 0x000093BD, - 2837: 0x000037A0, - 2838: 0x00005C1E, - 2839: 0x00005C9E, - 2840: 0x00005E5E, - 2841: 0x00005E48, - 2842: 0x00021996, - 2843: 0x0002197C, - 2844: 0x00023AEE, - 2845: 0x00005ECD, - 2846: 0x00005B4F, - 2847: 0x00021903, - 2848: 0x00021904, - 2849: 0x00003701, - 2850: 0x000218A0, - 2851: 0x000036DD, - 2852: 0x000216FE, - 2853: 0x000036D3, - 2854: 0x0000812A, - 2855: 0x00028A47, - 2856: 0x00021DBA, - 2857: 0x00023472, - 2858: 0x000289A8, - 2859: 0x00005F0C, - 2860: 0x00005F0E, - 2861: 0x00021927, - 2862: 0x000217AB, - 2863: 0x00005A6B, - 2864: 0x0002173B, - 2865: 0x00005B44, - 2866: 0x00008614, - 2867: 0x000275FD, - 2868: 0x00008860, - 2869: 0x0000607E, - 2870: 0x00022860, - 2871: 0x0002262B, - 2872: 0x00005FDB, - 2873: 0x00003EB8, - 2874: 0x000225AF, - 2875: 0x000225BE, - 2876: 0x00029088, - 2877: 0x00026F73, - 2878: 0x000061C0, - 2879: 0x0002003E, - 2880: 0x00020046, - 2881: 0x0002261B, - 2882: 0x00006199, - 2883: 0x00006198, - 2884: 0x00006075, - 2885: 0x00022C9B, - 2886: 0x00022D07, - 2887: 0x000246D4, - 2888: 0x0002914D, - 2889: 0x00006471, - 2890: 0x00024665, - 2891: 0x00022B6A, - 2892: 0x00003A29, - 2893: 0x00022B22, - 2894: 0x00023450, - 2895: 0x000298EA, - 2896: 0x00022E78, - 2897: 0x00006337, - 2898: 0x0002A45B, - 2899: 0x000064B6, - 2900: 0x00006331, - 2901: 0x000063D1, - 2902: 0x000249E3, - 2903: 0x00022D67, - 2904: 0x000062A4, - 2905: 0x00022CA1, - 2906: 0x0000643B, - 2907: 0x0000656B, - 2908: 0x00006972, - 2909: 0x00003BF4, - 2910: 0x0002308E, - 2911: 0x000232AD, - 2912: 0x00024989, - 2913: 0x000232AB, - 2914: 0x0000550D, - 2915: 0x000232E0, - 2916: 0x000218D9, - 2917: 0x0002943F, - 2918: 0x000066CE, - 2919: 0x00023289, - 2920: 0x000231B3, - 2921: 0x00003AE0, - 2922: 0x00004190, - 2923: 0x00025584, - 2924: 0x00028B22, - 2925: 0x0002558F, - 2926: 0x000216FC, - 2927: 0x0002555B, - 2928: 0x00025425, - 2929: 0x000078EE, - 2930: 0x00023103, - 2931: 0x0002182A, - 2932: 0x00023234, - 2933: 0x00003464, - 2934: 0x0002320F, - 2935: 0x00023182, - 2936: 0x000242C9, - 2937: 0x0000668E, - 2938: 0x00026D24, - 2939: 0x0000666B, - 2940: 0x00004B93, - 2941: 0x00006630, - 2942: 0x00027870, - 2943: 0x00021DEB, - 2944: 0x00006663, - 2945: 0x000232D2, - 2946: 0x000232E1, - 2947: 0x0000661E, - 2948: 0x00025872, - 2949: 0x000038D1, - 2950: 0x0002383A, - 2951: 0x000237BC, - 2952: 0x00003B99, - 2953: 0x000237A2, - 2954: 0x000233FE, - 2955: 0x000074D0, - 2956: 0x00003B96, - 2957: 0x0000678F, - 2958: 0x0002462A, - 2959: 0x000068B6, - 2960: 0x0000681E, - 2961: 0x00003BC4, - 2962: 0x00006ABE, - 2963: 0x00003863, - 2964: 0x000237D5, - 2965: 0x00024487, - 2966: 0x00006A33, - 2967: 0x00006A52, - 2968: 0x00006AC9, - 2969: 0x00006B05, - 2970: 0x00021912, - 2971: 0x00006511, - 2972: 0x00006898, - 2973: 0x00006A4C, - 2974: 0x00003BD7, - 2975: 0x00006A7A, - 2976: 0x00006B57, - 2977: 0x00023FC0, - 2978: 0x00023C9A, - 2979: 0x000093A0, - 2980: 0x000092F2, - 2981: 0x00028BEA, - 2982: 0x00028ACB, - 2983: 0x00009289, - 2984: 0x0002801E, - 2985: 0x000289DC, - 2986: 0x00009467, - 2987: 0x00006DA5, - 2988: 0x00006F0B, - 2989: 0x000249EC, - 2990: 0x00006D67, - 2991: 0x00023F7F, - 2992: 0x00003D8F, - 2993: 0x00006E04, - 2994: 0x0002403C, - 2995: 0x00005A3D, - 2996: 0x00006E0A, - 2997: 0x00005847, - 2998: 0x00006D24, - 2999: 0x00007842, - 3000: 0x0000713B, - 3001: 0x0002431A, - 3002: 0x00024276, - 3003: 0x000070F1, - 3004: 0x00007250, - 3005: 0x00007287, - 3006: 0x00007294, - 3007: 0x0002478F, - 3008: 0x00024725, - 3009: 0x00005179, - 3010: 0x00024AA4, - 3011: 0x000205EB, - 3012: 0x0000747A, - 3013: 0x00023EF8, - 3014: 0x0002365F, - 3015: 0x00024A4A, - 3016: 0x00024917, - 3017: 0x00025FE1, - 3018: 0x00003F06, - 3019: 0x00003EB1, - 3020: 0x00024ADF, - 3021: 0x00028C23, - 3022: 0x00023F35, - 3023: 0x000060A7, - 3024: 0x00003EF3, - 3025: 0x000074CC, - 3026: 0x0000743C, - 3027: 0x00009387, - 3028: 0x00007437, - 3029: 0x0000449F, - 3030: 0x00026DEA, - 3031: 0x00004551, - 3032: 0x00007583, - 3033: 0x00003F63, - 3034: 0x00024CD9, - 3035: 0x00024D06, - 3036: 0x00003F58, - 3037: 0x00007555, - 3038: 0x00007673, - 3039: 0x0002A5C6, - 3040: 0x00003B19, - 3041: 0x00007468, - 3042: 0x00028ACC, - 3043: 0x000249AB, - 3044: 0x0002498E, - 3045: 0x00003AFB, - 3046: 0x00003DCD, - 3047: 0x00024A4E, - 3048: 0x00003EFF, - 3049: 0x000249C5, - 3050: 0x000248F3, - 3051: 0x000091FA, - 3052: 0x00005732, - 3053: 0x00009342, - 3054: 0x00028AE3, - 3055: 0x00021864, - 3056: 0x000050DF, - 3057: 0x00025221, - 3058: 0x000251E7, - 3059: 0x00007778, - 3060: 0x00023232, - 3061: 0x0000770E, - 3062: 0x0000770F, - 3063: 0x0000777B, - 3064: 0x00024697, - 3065: 0x00023781, - 3066: 0x00003A5E, - 3067: 0x000248F0, - 3068: 0x00007438, - 3069: 0x0000749B, - 3070: 0x00003EBF, - 3071: 0x00024ABA, - 3072: 0x00024AC7, - 3073: 0x000040C8, - 3074: 0x00024A96, - 3075: 0x000261AE, - 3076: 0x00009307, - 3077: 0x00025581, - 3078: 0x0000781E, - 3079: 0x0000788D, - 3080: 0x00007888, - 3081: 0x000078D2, - 3082: 0x000073D0, - 3083: 0x00007959, - 3084: 0x00027741, - 3085: 0x000256E3, - 3086: 0x0000410E, - 3087: 0x0000799B, - 3088: 0x00008496, - 3089: 0x000079A5, - 3090: 0x00006A2D, - 3091: 0x00023EFA, - 3092: 0x00007A3A, - 3093: 0x000079F4, - 3094: 0x0000416E, - 3095: 0x000216E6, - 3096: 0x00004132, - 3097: 0x00009235, - 3098: 0x000079F1, - 3099: 0x00020D4C, - 3100: 0x0002498C, - 3101: 0x00020299, - 3102: 0x00023DBA, - 3103: 0x0002176E, - 3104: 0x00003597, - 3105: 0x0000556B, - 3106: 0x00003570, - 3107: 0x000036AA, - 3108: 0x000201D4, - 3109: 0x00020C0D, - 3110: 0x00007AE2, - 3111: 0x00005A59, - 3112: 0x000226F5, - 3113: 0x00025AAF, - 3114: 0x00025A9C, - 3115: 0x00005A0D, - 3116: 0x0002025B, - 3117: 0x000078F0, - 3118: 0x00005A2A, - 3119: 0x00025BC6, - 3120: 0x00007AFE, - 3121: 0x000041F9, - 3122: 0x00007C5D, - 3123: 0x00007C6D, - 3124: 0x00004211, - 3125: 0x00025BB3, - 3126: 0x00025EBC, - 3127: 0x00025EA6, - 3128: 0x00007CCD, - 3129: 0x000249F9, - 3130: 0x000217B0, - 3131: 0x00007C8E, - 3132: 0x00007C7C, - 3133: 0x00007CAE, - 3134: 0x00006AB2, - 3135: 0x00007DDC, - 3136: 0x00007E07, - 3137: 0x00007DD3, - 3138: 0x00007F4E, - 3139: 0x00026261, - 3140: 0x0002615C, - 3141: 0x00027B48, - 3142: 0x00007D97, - 3143: 0x00025E82, - 3144: 0x0000426A, - 3145: 0x00026B75, - 3146: 0x00020916, - 3147: 0x000067D6, - 3148: 0x0002004E, - 3149: 0x000235CF, - 3150: 0x000057C4, - 3151: 0x00026412, - 3152: 0x000263F8, - 3153: 0x00024962, - 3154: 0x00007FDD, - 3155: 0x00007B27, - 3156: 0x0002082C, - 3157: 0x00025AE9, - 3158: 0x00025D43, - 3159: 0x00007B0C, - 3160: 0x00025E0E, - 3161: 0x000099E6, - 3162: 0x00008645, - 3163: 0x00009A63, - 3164: 0x00006A1C, - 3165: 0x0002343F, - 3166: 0x000039E2, - 3167: 0x000249F7, - 3168: 0x000265AD, - 3169: 0x00009A1F, - 3170: 0x000265A0, - 3171: 0x00008480, - 3172: 0x00027127, - 3173: 0x00026CD1, - 3174: 0x000044EA, - 3175: 0x00008137, - 3176: 0x00004402, - 3177: 0x000080C6, - 3178: 0x00008109, - 3179: 0x00008142, - 3180: 0x000267B4, - 3181: 0x000098C3, - 3182: 0x00026A42, - 3183: 0x00008262, - 3184: 0x00008265, - 3185: 0x00026A51, - 3186: 0x00008453, - 3187: 0x00026DA7, - 3188: 0x00008610, - 3189: 0x0002721B, - 3190: 0x00005A86, - 3191: 0x0000417F, - 3192: 0x00021840, - 3193: 0x00005B2B, - 3194: 0x000218A1, - 3195: 0x00005AE4, - 3196: 0x000218D8, - 3197: 0x000086A0, - 3198: 0x0002F9BC, - 3199: 0x00023D8F, - 3200: 0x0000882D, - 3201: 0x00027422, - 3202: 0x00005A02, - 3203: 0x0000886E, - 3204: 0x00004F45, - 3205: 0x00008887, - 3206: 0x000088BF, - 3207: 0x000088E6, - 3208: 0x00008965, - 3209: 0x0000894D, - 3210: 0x00025683, - 3211: 0x00008954, - 3212: 0x00027785, - 3213: 0x00027784, - 3214: 0x00028BF5, - 3215: 0x00028BD9, - 3216: 0x00028B9C, - 3217: 0x000289F9, - 3218: 0x00003EAD, - 3219: 0x000084A3, - 3220: 0x000046F5, - 3221: 0x000046CF, - 3222: 0x000037F2, - 3223: 0x00008A3D, - 3224: 0x00008A1C, - 3225: 0x00029448, - 3226: 0x00005F4D, - 3227: 0x0000922B, - 3228: 0x00024284, - 3229: 0x000065D4, - 3230: 0x00007129, - 3231: 0x000070C4, - 3232: 0x00021845, - 3233: 0x00009D6D, - 3234: 0x00008C9F, - 3235: 0x00008CE9, - 3236: 0x00027DDC, - 3237: 0x0000599A, - 3238: 0x000077C3, - 3239: 0x000059F0, - 3240: 0x0000436E, - 3241: 0x000036D4, - 3242: 0x00008E2A, - 3243: 0x00008EA7, - 3244: 0x00024C09, - 3245: 0x00008F30, - 3246: 0x00008F4A, - 3247: 0x000042F4, - 3248: 0x00006C58, - 3249: 0x00006FBB, - 3250: 0x00022321, - 3251: 0x0000489B, - 3252: 0x00006F79, - 3253: 0x00006E8B, - 3254: 0x000217DA, - 3255: 0x00009BE9, - 3256: 0x000036B5, - 3257: 0x0002492F, - 3258: 0x000090BB, - 3259: 0x00009097, - 3260: 0x00005571, - 3261: 0x00004906, - 3262: 0x000091BB, - 3263: 0x00009404, - 3264: 0x00028A4B, - 3265: 0x00004062, - 3266: 0x00028AFC, - 3267: 0x00009427, - 3268: 0x00028C1D, - 3269: 0x00028C3B, - 3270: 0x000084E5, - 3271: 0x00008A2B, - 3272: 0x00009599, - 3273: 0x000095A7, - 3274: 0x00009597, - 3275: 0x00009596, - 3276: 0x00028D34, - 3277: 0x00007445, - 3278: 0x00003EC2, - 3279: 0x000248FF, - 3280: 0x00024A42, - 3281: 0x000243EA, - 3282: 0x00003EE7, - 3283: 0x00023225, - 3284: 0x0000968F, - 3285: 0x00028EE7, - 3286: 0x00028E66, - 3287: 0x00028E65, - 3288: 0x00003ECC, - 3289: 0x000249ED, - 3290: 0x00024A78, - 3291: 0x00023FEE, - 3292: 0x00007412, - 3293: 0x0000746B, - 3294: 0x00003EFC, - 3295: 0x00009741, - 3296: 0x000290B0, - 3297: 0x00006847, - 3298: 0x00004A1D, - 3299: 0x00029093, - 3300: 0x000257DF, - 3301: 0x0000975D, - 3302: 0x00009368, - 3303: 0x00028989, - 3304: 0x00028C26, - 3305: 0x00028B2F, - 3306: 0x000263BE, - 3307: 0x000092BA, - 3308: 0x00005B11, - 3309: 0x00008B69, - 3310: 0x0000493C, - 3311: 0x000073F9, - 3312: 0x0002421B, - 3313: 0x0000979B, - 3314: 0x00009771, - 3315: 0x00009938, - 3316: 0x00020F26, - 3317: 0x00005DC1, - 3318: 0x00028BC5, - 3319: 0x00024AB2, - 3320: 0x0000981F, - 3321: 0x000294DA, - 3322: 0x000092F6, - 3323: 0x000295D7, - 3324: 0x000091E5, - 3325: 0x000044C0, - 3326: 0x00028B50, - 3327: 0x00024A67, - 3328: 0x00028B64, - 3329: 0x000098DC, - 3330: 0x00028A45, - 3331: 0x00003F00, - 3332: 0x0000922A, - 3333: 0x00004925, - 3334: 0x00008414, - 3335: 0x0000993B, - 3336: 0x0000994D, - 3337: 0x00027B06, - 3338: 0x00003DFD, - 3339: 0x0000999B, - 3340: 0x00004B6F, - 3341: 0x000099AA, - 3342: 0x00009A5C, - 3343: 0x00028B65, - 3344: 0x000258C8, - 3345: 0x00006A8F, - 3346: 0x00009A21, - 3347: 0x00005AFE, - 3348: 0x00009A2F, - 3349: 0x000298F1, - 3350: 0x00004B90, - 3351: 0x00029948, - 3352: 0x000099BC, - 3353: 0x00004BBD, - 3354: 0x00004B97, - 3355: 0x0000937D, - 3356: 0x00005872, - 3357: 0x00021302, - 3358: 0x00005822, - 3359: 0x000249B8, - 3360: 0x000214E8, - 3361: 0x00007844, - 3362: 0x0002271F, - 3363: 0x00023DB8, - 3364: 0x000068C5, - 3365: 0x00003D7D, - 3366: 0x00009458, - 3367: 0x00003927, - 3368: 0x00006150, - 3369: 0x00022781, - 3370: 0x0002296B, - 3371: 0x00006107, - 3372: 0x00009C4F, - 3373: 0x00009C53, - 3374: 0x00009C7B, - 3375: 0x00009C35, - 3376: 0x00009C10, - 3377: 0x00009B7F, - 3378: 0x00009BCF, - 3379: 0x00029E2D, - 3380: 0x00009B9F, - 3381: 0x0002A1F5, - 3382: 0x0002A0FE, - 3383: 0x00009D21, - 3384: 0x00004CAE, - 3385: 0x00024104, - 3386: 0x00009E18, - 3387: 0x00004CB0, - 3388: 0x00009D0C, - 3389: 0x0002A1B4, - 3390: 0x0002A0ED, - 3391: 0x0002A0F3, - 3392: 0x0002992F, - 3393: 0x00009DA5, - 3394: 0x000084BD, - 3395: 0x00026E12, - 3396: 0x00026FDF, - 3397: 0x00026B82, - 3398: 0x000085FC, - 3399: 0x00004533, - 3400: 0x00026DA4, - 3401: 0x00026E84, - 3402: 0x00026DF0, - 3403: 0x00008420, - 3404: 0x000085EE, - 3405: 0x00026E00, - 3406: 0x000237D7, - 3407: 0x00026064, - 3408: 0x000079E2, - 3409: 0x0002359C, - 3410: 0x00023640, - 3411: 0x0000492D, - 3412: 0x000249DE, - 3413: 0x00003D62, - 3414: 0x000093DB, - 3415: 0x000092BE, - 3416: 0x00009348, - 3417: 0x000202BF, - 3418: 0x000078B9, - 3419: 0x00009277, - 3420: 0x0000944D, - 3421: 0x00004FE4, - 3422: 0x00003440, - 3423: 0x00009064, - 3424: 0x0002555D, - 3425: 0x0000783D, - 3426: 0x00007854, - 3427: 0x000078B6, - 3428: 0x0000784B, - 3429: 0x00021757, - 3430: 0x000231C9, - 3431: 0x00024941, - 3432: 0x0000369A, - 3433: 0x00004F72, - 3434: 0x00006FDA, - 3435: 0x00006FD9, - 3436: 0x0000701E, - 3437: 0x0000701E, - 3438: 0x00005414, - 3439: 0x000241B5, - 3440: 0x000057BB, - 3441: 0x000058F3, - 3442: 0x0000578A, - 3443: 0x00009D16, - 3444: 0x000057D7, - 3445: 0x00007134, - 3446: 0x000034AF, - 3447: 0x000241AC, - 3448: 0x000071EB, - 3449: 0x00026C40, - 3450: 0x00024F97, - 3451: 0x00005B28, - 3452: 0x000217B5, - 3453: 0x00028A49, - 3454: 0x0000610C, - 3455: 0x00005ACE, - 3456: 0x00005A0B, - 3457: 0x000042BC, - 3458: 0x00024488, - 3459: 0x0000372C, - 3460: 0x00004B7B, - 3461: 0x000289FC, - 3462: 0x000093BB, - 3463: 0x000093B8, - 3464: 0x000218D6, - 3465: 0x00020F1D, - 3466: 0x00008472, - 3467: 0x00026CC0, - 3468: 0x00021413, - 3469: 0x000242FA, - 3470: 0x00022C26, - 3471: 0x000243C1, - 3472: 0x00005994, - 3473: 0x00023DB7, - 3474: 0x00026741, - 3475: 0x00007DA8, - 3476: 0x0002615B, - 3477: 0x000260A4, - 3478: 0x000249B9, - 3479: 0x0002498B, - 3480: 0x000289FA, - 3481: 0x000092E5, - 3482: 0x000073E2, - 3483: 0x00003EE9, - 3484: 0x000074B4, - 3485: 0x00028B63, - 3486: 0x0002189F, - 3487: 0x00003EE1, - 3488: 0x00024AB3, - 3489: 0x00006AD8, - 3490: 0x000073F3, - 3491: 0x000073FB, - 3492: 0x00003ED6, - 3493: 0x00024A3E, - 3494: 0x00024A94, - 3495: 0x000217D9, - 3496: 0x00024A66, - 3497: 0x000203A7, - 3498: 0x00021424, - 3499: 0x000249E5, - 3500: 0x00007448, - 3501: 0x00024916, - 3502: 0x000070A5, - 3503: 0x00024976, - 3504: 0x00009284, - 3505: 0x000073E6, - 3506: 0x0000935F, - 3507: 0x000204FE, - 3508: 0x00009331, - 3509: 0x00028ACE, - 3510: 0x00028A16, - 3511: 0x00009386, - 3512: 0x00028BE7, - 3513: 0x000255D5, - 3514: 0x00004935, - 3515: 0x00028A82, - 3516: 0x0000716B, - 3517: 0x00024943, - 3518: 0x00020CFF, - 3519: 0x000056A4, - 3520: 0x0002061A, - 3521: 0x00020BEB, - 3522: 0x00020CB8, - 3523: 0x00005502, - 3524: 0x000079C4, - 3525: 0x000217FA, - 3526: 0x00007DFE, - 3527: 0x000216C2, - 3528: 0x00024A50, - 3529: 0x00021852, - 3530: 0x0000452E, - 3531: 0x00009401, - 3532: 0x0000370A, - 3533: 0x00028AC0, - 3534: 0x000249AD, - 3535: 0x000059B0, - 3536: 0x000218BF, - 3537: 0x00021883, - 3538: 0x00027484, - 3539: 0x00005AA1, - 3540: 0x000036E2, - 3541: 0x00023D5B, - 3542: 0x000036B0, - 3543: 0x0000925F, - 3544: 0x00005A79, - 3545: 0x00028A81, - 3546: 0x00021862, - 3547: 0x00009374, - 3548: 0x00003CCD, - 3549: 0x00020AB4, - 3550: 0x00004A96, - 3551: 0x0000398A, - 3552: 0x000050F4, - 3553: 0x00003D69, - 3554: 0x00003D4C, - 3555: 0x0002139C, - 3556: 0x00007175, - 3557: 0x000042FB, - 3558: 0x00028218, - 3559: 0x00006E0F, - 3560: 0x000290E4, - 3561: 0x000044EB, - 3562: 0x00006D57, - 3563: 0x00027E4F, - 3564: 0x00007067, - 3565: 0x00006CAF, - 3566: 0x00003CD6, - 3567: 0x00023FED, - 3568: 0x00023E2D, - 3569: 0x00006E02, - 3570: 0x00006F0C, - 3571: 0x00003D6F, - 3572: 0x000203F5, - 3573: 0x00007551, - 3574: 0x000036BC, - 3575: 0x000034C8, - 3576: 0x00004680, - 3577: 0x00003EDA, - 3578: 0x00004871, - 3579: 0x000059C4, - 3580: 0x0000926E, - 3581: 0x0000493E, - 3582: 0x00008F41, - 3583: 0x00028C1C, - 3584: 0x00026BC0, - 3585: 0x00005812, - 3586: 0x000057C8, - 3587: 0x000036D6, - 3588: 0x00021452, - 3589: 0x000070FE, - 3590: 0x00024362, - 3591: 0x00024A71, - 3592: 0x00022FE3, - 3593: 0x000212B0, - 3594: 0x000223BD, - 3595: 0x000068B9, - 3596: 0x00006967, - 3597: 0x00021398, - 3598: 0x000234E5, - 3599: 0x00027BF4, - 3600: 0x000236DF, - 3601: 0x00028A83, - 3602: 0x000237D6, - 3603: 0x000233FA, - 3604: 0x00024C9F, - 3605: 0x00006A1A, - 3606: 0x000236AD, - 3607: 0x00026CB7, - 3608: 0x0000843E, - 3609: 0x000044DF, - 3610: 0x000044CE, - 3611: 0x00026D26, - 3612: 0x00026D51, - 3613: 0x00026C82, - 3614: 0x00026FDE, - 3615: 0x00006F17, - 3616: 0x00027109, - 3617: 0x0000833D, - 3618: 0x0002173A, - 3619: 0x000083ED, - 3620: 0x00026C80, - 3621: 0x00027053, - 3622: 0x000217DB, - 3623: 0x00005989, - 3624: 0x00005A82, - 3625: 0x000217B3, - 3626: 0x00005A61, - 3627: 0x00005A71, - 3628: 0x00021905, - 3629: 0x000241FC, - 3630: 0x0000372D, - 3631: 0x000059EF, - 3632: 0x0002173C, - 3633: 0x000036C7, - 3634: 0x0000718E, - 3635: 0x00009390, - 3636: 0x0000669A, - 3637: 0x000242A5, - 3638: 0x00005A6E, - 3639: 0x00005A2B, - 3640: 0x00024293, - 3641: 0x00006A2B, - 3642: 0x00023EF9, - 3643: 0x00027736, - 3644: 0x0002445B, - 3645: 0x000242CA, - 3646: 0x0000711D, - 3647: 0x00024259, - 3648: 0x000289E1, - 3649: 0x00004FB0, - 3650: 0x00026D28, - 3651: 0x00005CC2, - 3652: 0x000244CE, - 3653: 0x00027E4D, - 3654: 0x000243BD, - 3655: 0x00006A0C, - 3656: 0x00024256, - 3657: 0x00021304, - 3658: 0x000070A6, - 3659: 0x00007133, - 3660: 0x000243E9, - 3661: 0x00003DA5, - 3662: 0x00006CDF, - 3663: 0x0002F825, - 3664: 0x00024A4F, - 3665: 0x00007E65, - 3666: 0x000059EB, - 3667: 0x00005D2F, - 3668: 0x00003DF3, - 3669: 0x00005F5C, - 3670: 0x00024A5D, - 3671: 0x000217DF, - 3672: 0x00007DA4, - 3673: 0x00008426, - 3674: 0x00005485, - 3675: 0x00023AFA, - 3676: 0x00023300, - 3677: 0x00020214, - 3678: 0x0000577E, - 3679: 0x000208D5, - 3680: 0x00020619, - 3681: 0x00003FE5, - 3682: 0x00021F9E, - 3683: 0x0002A2B6, - 3684: 0x00007003, - 3685: 0x0002915B, - 3686: 0x00005D70, - 3687: 0x0000738F, - 3688: 0x00007CD3, - 3689: 0x00028A59, - 3690: 0x00029420, - 3691: 0x00004FC8, - 3692: 0x00007FE7, - 3693: 0x000072CD, - 3694: 0x00007310, - 3695: 0x00027AF4, - 3696: 0x00007338, - 3697: 0x00007339, - 3698: 0x000256F6, - 3699: 0x00007341, - 3700: 0x00007348, - 3701: 0x00003EA9, - 3702: 0x00027B18, - 3703: 0x0000906C, - 3704: 0x000071F5, - 3705: 0x000248F2, - 3706: 0x000073E1, - 3707: 0x000081F6, - 3708: 0x00003ECA, - 3709: 0x0000770C, - 3710: 0x00003ED1, - 3711: 0x00006CA2, - 3712: 0x000056FD, - 3713: 0x00007419, - 3714: 0x0000741E, - 3715: 0x0000741F, - 3716: 0x00003EE2, - 3717: 0x00003EF0, - 3718: 0x00003EF4, - 3719: 0x00003EFA, - 3720: 0x000074D3, - 3721: 0x00003F0E, - 3722: 0x00003F53, - 3723: 0x00007542, - 3724: 0x0000756D, - 3725: 0x00007572, - 3726: 0x0000758D, - 3727: 0x00003F7C, - 3728: 0x000075C8, - 3729: 0x000075DC, - 3730: 0x00003FC0, - 3731: 0x0000764D, - 3732: 0x00003FD7, - 3733: 0x00007674, - 3734: 0x00003FDC, - 3735: 0x0000767A, - 3736: 0x00024F5C, - 3737: 0x00007188, - 3738: 0x00005623, - 3739: 0x00008980, - 3740: 0x00005869, - 3741: 0x0000401D, - 3742: 0x00007743, - 3743: 0x00004039, - 3744: 0x00006761, - 3745: 0x00004045, - 3746: 0x000035DB, - 3747: 0x00007798, - 3748: 0x0000406A, - 3749: 0x0000406F, - 3750: 0x00005C5E, - 3751: 0x000077BE, - 3752: 0x000077CB, - 3753: 0x000058F2, - 3754: 0x00007818, - 3755: 0x000070B9, - 3756: 0x0000781C, - 3757: 0x000040A8, - 3758: 0x00007839, - 3759: 0x00007847, - 3760: 0x00007851, - 3761: 0x00007866, - 3762: 0x00008448, - 3763: 0x00025535, - 3764: 0x00007933, - 3765: 0x00006803, - 3766: 0x00007932, - 3767: 0x00004103, - 3768: 0x00004109, - 3769: 0x00007991, - 3770: 0x00007999, - 3771: 0x00008FBB, - 3772: 0x00007A06, - 3773: 0x00008FBC, - 3774: 0x00004167, - 3775: 0x00007A91, - 3776: 0x000041B2, - 3777: 0x00007ABC, - 3778: 0x00008279, - 3779: 0x000041C4, - 3780: 0x00007ACF, - 3781: 0x00007ADB, - 3782: 0x000041CF, - 3783: 0x00004E21, - 3784: 0x00007B62, - 3785: 0x00007B6C, - 3786: 0x00007B7B, - 3787: 0x00007C12, - 3788: 0x00007C1B, - 3789: 0x00004260, - 3790: 0x0000427A, - 3791: 0x00007C7B, - 3792: 0x00007C9C, - 3793: 0x0000428C, - 3794: 0x00007CB8, - 3795: 0x00004294, - 3796: 0x00007CED, - 3797: 0x00008F93, - 3798: 0x000070C0, - 3799: 0x00020CCF, - 3800: 0x00007DCF, - 3801: 0x00007DD4, - 3802: 0x00007DD0, - 3803: 0x00007DFD, - 3804: 0x00007FAE, - 3805: 0x00007FB4, - 3806: 0x0000729F, - 3807: 0x00004397, - 3808: 0x00008020, - 3809: 0x00008025, - 3810: 0x00007B39, - 3811: 0x0000802E, - 3812: 0x00008031, - 3813: 0x00008054, - 3814: 0x00003DCC, - 3815: 0x000057B4, - 3816: 0x000070A0, - 3817: 0x000080B7, - 3818: 0x000080E9, - 3819: 0x000043ED, - 3820: 0x0000810C, - 3821: 0x0000732A, - 3822: 0x0000810E, - 3823: 0x00008112, - 3824: 0x00007560, - 3825: 0x00008114, - 3826: 0x00004401, - 3827: 0x00003B39, - 3828: 0x00008156, - 3829: 0x00008159, - 3830: 0x0000815A, - 3831: 0x00004413, - 3832: 0x0000583A, - 3833: 0x0000817C, - 3834: 0x00008184, - 3835: 0x00004425, - 3836: 0x00008193, - 3837: 0x0000442D, - 3838: 0x000081A5, - 3839: 0x000057EF, - 3840: 0x000081C1, - 3841: 0x000081E4, - 3842: 0x00008254, - 3843: 0x0000448F, - 3844: 0x000082A6, - 3845: 0x00008276, - 3846: 0x000082CA, - 3847: 0x000082D8, - 3848: 0x000082FF, - 3849: 0x000044B0, - 3850: 0x00008357, - 3851: 0x00009669, - 3852: 0x0000698A, - 3853: 0x00008405, - 3854: 0x000070F5, - 3855: 0x00008464, - 3856: 0x000060E3, - 3857: 0x00008488, - 3858: 0x00004504, - 3859: 0x000084BE, - 3860: 0x000084E1, - 3861: 0x000084F8, - 3862: 0x00008510, - 3863: 0x00008538, - 3864: 0x00008552, - 3865: 0x0000453B, - 3866: 0x0000856F, - 3867: 0x00008570, - 3868: 0x000085E0, - 3869: 0x00004577, - 3870: 0x00008672, - 3871: 0x00008692, - 3872: 0x000086B2, - 3873: 0x000086EF, - 3874: 0x00009645, - 3875: 0x0000878B, - 3876: 0x00004606, - 3877: 0x00004617, - 3878: 0x000088AE, - 3879: 0x000088FF, - 3880: 0x00008924, - 3881: 0x00008947, - 3882: 0x00008991, - 3883: 0x00027967, - 3884: 0x00008A29, - 3885: 0x00008A38, - 3886: 0x00008A94, - 3887: 0x00008AB4, - 3888: 0x00008C51, - 3889: 0x00008CD4, - 3890: 0x00008CF2, - 3891: 0x00008D1C, - 3892: 0x00004798, - 3893: 0x0000585F, - 3894: 0x00008DC3, - 3895: 0x000047ED, - 3896: 0x00004EEE, - 3897: 0x00008E3A, - 3898: 0x000055D8, - 3899: 0x00005754, - 3900: 0x00008E71, - 3901: 0x000055F5, - 3902: 0x00008EB0, - 3903: 0x00004837, - 3904: 0x00008ECE, - 3905: 0x00008EE2, - 3906: 0x00008EE4, - 3907: 0x00008EED, - 3908: 0x00008EF2, - 3909: 0x00008FB7, - 3910: 0x00008FC1, - 3911: 0x00008FCA, - 3912: 0x00008FCC, - 3913: 0x00009033, - 3914: 0x000099C4, - 3915: 0x000048AD, - 3916: 0x000098E0, - 3917: 0x00009213, - 3918: 0x0000491E, - 3919: 0x00009228, - 3920: 0x00009258, - 3921: 0x0000926B, - 3922: 0x000092B1, - 3923: 0x000092AE, - 3924: 0x000092BF, - 3925: 0x000092E3, - 3926: 0x000092EB, - 3927: 0x000092F3, - 3928: 0x000092F4, - 3929: 0x000092FD, - 3930: 0x00009343, - 3931: 0x00009384, - 3932: 0x000093AD, - 3933: 0x00004945, - 3934: 0x00004951, - 3935: 0x00009EBF, - 3936: 0x00009417, - 3937: 0x00005301, - 3938: 0x0000941D, - 3939: 0x0000942D, - 3940: 0x0000943E, - 3941: 0x0000496A, - 3942: 0x00009454, - 3943: 0x00009479, - 3944: 0x0000952D, - 3945: 0x000095A2, - 3946: 0x000049A7, - 3947: 0x000095F4, - 3948: 0x00009633, - 3949: 0x000049E5, - 3950: 0x000067A0, - 3951: 0x00004A24, - 3952: 0x00009740, - 3953: 0x00004A35, - 3954: 0x000097B2, - 3955: 0x000097C2, - 3956: 0x00005654, - 3957: 0x00004AE4, - 3958: 0x000060E8, - 3959: 0x000098B9, - 3960: 0x00004B19, - 3961: 0x000098F1, - 3962: 0x00005844, - 3963: 0x0000990E, - 3964: 0x00009919, - 3965: 0x000051B4, - 3966: 0x0000991C, - 3967: 0x00009937, - 3968: 0x00009942, - 3969: 0x0000995D, - 3970: 0x00009962, - 3971: 0x00004B70, - 3972: 0x000099C5, - 3973: 0x00004B9D, - 3974: 0x00009A3C, - 3975: 0x00009B0F, - 3976: 0x00007A83, - 3977: 0x00009B69, - 3978: 0x00009B81, - 3979: 0x00009BDD, - 3980: 0x00009BF1, - 3981: 0x00009BF4, - 3982: 0x00004C6D, - 3983: 0x00009C20, - 3984: 0x0000376F, - 3985: 0x00021BC2, - 3986: 0x00009D49, - 3987: 0x00009C3A, - 3988: 0x00009EFE, - 3989: 0x00005650, - 3990: 0x00009D93, - 3991: 0x00009DBD, - 3992: 0x00009DC0, - 3993: 0x00009DFC, - 3994: 0x000094F6, - 3995: 0x00008FB6, - 3996: 0x00009E7B, - 3997: 0x00009EAC, - 3998: 0x00009EB1, - 3999: 0x00009EBD, - 4000: 0x00009EC6, - 4001: 0x000094DC, - 4002: 0x00009EE2, - 4003: 0x00009EF1, - 4004: 0x00009EF8, - 4005: 0x00007AC8, - 4006: 0x00009F44, - 4007: 0x00020094, - 4008: 0x000202B7, - 4009: 0x000203A0, - 4010: 0x0000691A, - 4011: 0x000094C3, - 4012: 0x000059AC, - 4013: 0x000204D7, - 4014: 0x00005840, - 4015: 0x000094C1, - 4016: 0x000037B9, - 4017: 0x000205D5, - 4018: 0x00020615, - 4019: 0x00020676, - 4020: 0x000216BA, - 4021: 0x00005757, - 4022: 0x00007173, - 4023: 0x00020AC2, - 4024: 0x00020ACD, - 4025: 0x00020BBF, - 4026: 0x0000546A, - 4027: 0x0002F83B, - 4028: 0x00020BCB, - 4029: 0x0000549E, - 4030: 0x00020BFB, - 4031: 0x00020C3B, - 4032: 0x00020C53, - 4033: 0x00020C65, - 4034: 0x00020C7C, - 4035: 0x000060E7, - 4036: 0x00020C8D, - 4037: 0x0000567A, - 4038: 0x00020CB5, - 4039: 0x00020CDD, - 4040: 0x00020CED, - 4041: 0x00020D6F, - 4042: 0x00020DB2, - 4043: 0x00020DC8, - 4044: 0x00006955, - 4045: 0x00009C2F, - 4046: 0x000087A5, - 4047: 0x00020E04, - 4048: 0x00020E0E, - 4049: 0x00020ED7, - 4050: 0x00020F90, - 4051: 0x00020F2D, - 4052: 0x00020E73, - 4053: 0x00005C20, - 4054: 0x00020FBC, - 4055: 0x00005E0B, - 4056: 0x0002105C, - 4057: 0x0002104F, - 4058: 0x00021076, - 4059: 0x0000671E, - 4060: 0x0002107B, - 4061: 0x00021088, - 4062: 0x00021096, - 4063: 0x00003647, - 4064: 0x000210BF, - 4065: 0x000210D3, - 4066: 0x0002112F, - 4067: 0x0002113B, - 4068: 0x00005364, - 4069: 0x000084AD, - 4070: 0x000212E3, - 4071: 0x00021375, - 4072: 0x00021336, - 4073: 0x00008B81, - 4074: 0x00021577, - 4075: 0x00021619, - 4076: 0x000217C3, - 4077: 0x000217C7, - 4078: 0x00004E78, - 4079: 0x000070BB, - 4080: 0x0002182D, - 4081: 0x0002196A, - 4082: 0x00021A2D, - 4083: 0x00021A45, - 4084: 0x00021C2A, - 4085: 0x00021C70, - 4086: 0x00021CAC, - 4087: 0x00021EC8, - 4088: 0x000062C3, - 4089: 0x00021ED5, - 4090: 0x00021F15, - 4091: 0x00007198, - 4092: 0x00006855, - 4093: 0x00022045, - 4094: 0x000069E9, - 4095: 0x000036C8, - 4096: 0x0002227C, - 4097: 0x000223D7, - 4098: 0x000223FA, - 4099: 0x0002272A, - 4100: 0x00022871, - 4101: 0x0002294F, - 4102: 0x000082FD, - 4103: 0x00022967, - 4104: 0x00022993, - 4105: 0x00022AD5, - 4106: 0x000089A5, - 4107: 0x00022AE8, - 4108: 0x00008FA0, - 4109: 0x00022B0E, - 4110: 0x000097B8, - 4111: 0x00022B3F, - 4112: 0x00009847, - 4113: 0x00009ABD, - 4114: 0x00022C4C, - 4116: 0x00022C88, - 4117: 0x00022CB7, - 4118: 0x00025BE8, - 4119: 0x00022D08, - 4120: 0x00022D12, - 4121: 0x00022DB7, - 4122: 0x00022D95, - 4123: 0x00022E42, - 4124: 0x00022F74, - 4125: 0x00022FCC, - 4126: 0x00023033, - 4127: 0x00023066, - 4128: 0x0002331F, - 4129: 0x000233DE, - 4130: 0x00005FB1, - 4131: 0x00006648, - 4132: 0x000066BF, - 4133: 0x00027A79, - 4134: 0x00023567, - 4135: 0x000235F3, - 4136: 0x00007201, - 4137: 0x000249BA, - 4138: 0x000077D7, - 4139: 0x0002361A, - 4140: 0x00023716, - 4141: 0x00007E87, - 4142: 0x00020346, - 4143: 0x000058B5, - 4144: 0x0000670E, - 4145: 0x00006918, - 4146: 0x00023AA7, - 4147: 0x00027657, - 4148: 0x00025FE2, - 4149: 0x00023E11, - 4150: 0x00023EB9, - 4151: 0x000275FE, - 4152: 0x0002209A, - 4153: 0x000048D0, - 4154: 0x00004AB8, - 4155: 0x00024119, - 4156: 0x00028A9A, - 4157: 0x000242EE, - 4158: 0x0002430D, - 4159: 0x0002403B, - 4160: 0x00024334, - 4161: 0x00024396, - 4162: 0x00024A45, - 4163: 0x000205CA, - 4164: 0x000051D2, - 4165: 0x00020611, - 4166: 0x0000599F, - 4167: 0x00021EA8, - 4168: 0x00003BBE, - 4169: 0x00023CFF, - 4170: 0x00024404, - 4171: 0x000244D6, - 4172: 0x00005788, - 4173: 0x00024674, - 4174: 0x0000399B, - 4175: 0x0002472F, - 4176: 0x000285E8, - 4177: 0x000299C9, - 4178: 0x00003762, - 4179: 0x000221C3, - 4180: 0x00008B5E, - 4181: 0x00028B4E, - 4182: 0x000099D6, - 4183: 0x00024812, - 4184: 0x000248FB, - 4185: 0x00024A15, - 4186: 0x00007209, - 4187: 0x00024AC0, - 4188: 0x00020C78, - 4189: 0x00005965, - 4190: 0x00024EA5, - 4191: 0x00024F86, - 4192: 0x00020779, - 4193: 0x00008EDA, - 4194: 0x0002502C, - 4195: 0x0000528F, - 4196: 0x0000573F, - 4197: 0x00007171, - 4198: 0x00025299, - 4199: 0x00025419, - 4200: 0x00023F4A, - 4201: 0x00024AA7, - 4202: 0x000055BC, - 4203: 0x00025446, - 4204: 0x0002546E, - 4205: 0x00026B52, - 4206: 0x000091D4, - 4207: 0x00003473, - 4208: 0x0002553F, - 4209: 0x00027632, - 4210: 0x0002555E, - 4211: 0x00004718, - 4212: 0x00025562, - 4213: 0x00025566, - 4214: 0x000257C7, - 4215: 0x0002493F, - 4216: 0x0002585D, - 4217: 0x00005066, - 4218: 0x000034FB, - 4219: 0x000233CC, - 4220: 0x000060DE, - 4221: 0x00025903, - 4222: 0x0000477C, - 4223: 0x00028948, - 4224: 0x00025AAE, - 4225: 0x00025B89, - 4226: 0x00025C06, - 4227: 0x00021D90, - 4228: 0x000057A1, - 4229: 0x00007151, - 4230: 0x00006FB6, - 4231: 0x00026102, - 4232: 0x00027C12, - 4233: 0x00009056, - 4234: 0x000261B2, - 4235: 0x00024F9A, - 4236: 0x00008B62, - 4237: 0x00026402, - 4238: 0x0002644A, - 4239: 0x00005D5B, - 4240: 0x00026BF7, - 4241: 0x00008F36, - 4242: 0x00026484, - 4243: 0x0002191C, - 4244: 0x00008AEA, - 4245: 0x000249F6, - 4246: 0x00026488, - 4247: 0x00023FEF, - 4248: 0x00026512, - 4249: 0x00004BC0, - 4250: 0x000265BF, - 4251: 0x000266B5, - 4252: 0x0002271B, - 4253: 0x00009465, - 4254: 0x000257E1, - 4255: 0x00006195, - 4256: 0x00005A27, - 4257: 0x0002F8CD, - 4258: 0x00004FBB, - 4259: 0x000056B9, - 4260: 0x00024521, - 4261: 0x000266FC, - 4262: 0x00004E6A, - 4263: 0x00024934, - 4264: 0x00009656, - 4265: 0x00006D8F, - 4266: 0x00026CBD, - 4267: 0x00003618, - 4268: 0x00008977, - 4269: 0x00026799, - 4270: 0x0002686E, - 4271: 0x00026411, - 4272: 0x0002685E, - 4273: 0x000071DF, - 4274: 0x000268C7, - 4275: 0x00007B42, - 4276: 0x000290C0, - 4277: 0x00020A11, - 4278: 0x00026926, - 4279: 0x00009104, - 4280: 0x00026939, - 4281: 0x00007A45, - 4282: 0x00009DF0, - 4283: 0x000269FA, - 4284: 0x00009A26, - 4285: 0x00026A2D, - 4286: 0x0000365F, - 4287: 0x00026469, - 4288: 0x00020021, - 4289: 0x00007983, - 4290: 0x00026A34, - 4291: 0x00026B5B, - 4292: 0x00005D2C, - 4293: 0x00023519, - 4294: 0x000083CF, - 4295: 0x00026B9D, - 4296: 0x000046D0, - 4297: 0x00026CA4, - 4298: 0x0000753B, - 4299: 0x00008865, - 4300: 0x00026DAE, - 4301: 0x000058B6, - 4302: 0x0000371C, - 4303: 0x0002258D, - 4304: 0x0002704B, - 4305: 0x000271CD, - 4306: 0x00003C54, - 4307: 0x00027280, - 4308: 0x00027285, - 4309: 0x00009281, - 4310: 0x0002217A, - 4311: 0x0002728B, - 4312: 0x00009330, - 4313: 0x000272E6, - 4314: 0x000249D0, - 4315: 0x00006C39, - 4316: 0x0000949F, - 4317: 0x00027450, - 4318: 0x00020EF8, - 4319: 0x00008827, - 4320: 0x000088F5, - 4321: 0x00022926, - 4322: 0x00028473, - 4323: 0x000217B1, - 4324: 0x00006EB8, - 4325: 0x00024A2A, - 4326: 0x00021820, - 4327: 0x000039A4, - 4328: 0x000036B9, - 4329: 0x00005C10, - 4330: 0x000079E3, - 4331: 0x0000453F, - 4332: 0x000066B6, - 4333: 0x00029CAD, - 4334: 0x000298A4, - 4335: 0x00008943, - 4336: 0x000277CC, - 4337: 0x00027858, - 4338: 0x000056D6, - 4339: 0x000040DF, - 4340: 0x0002160A, - 4341: 0x000039A1, - 4342: 0x0002372F, - 4343: 0x000280E8, - 4344: 0x000213C5, - 4345: 0x000071AD, - 4346: 0x00008366, - 4347: 0x000279DD, - 4348: 0x000291A8, - 4349: 0x00005A67, - 4350: 0x00004CB7, - 4351: 0x000270AF, - 4352: 0x000289AB, - 4353: 0x000279FD, - 4354: 0x00027A0A, - 4355: 0x00027B0B, - 4356: 0x00027D66, - 4357: 0x0002417A, - 4358: 0x00007B43, - 4359: 0x0000797E, - 4360: 0x00028009, - 4361: 0x00006FB5, - 4362: 0x0002A2DF, - 4363: 0x00006A03, - 4364: 0x00028318, - 4365: 0x000053A2, - 4366: 0x00026E07, - 4367: 0x000093BF, - 4368: 0x00006836, - 4369: 0x0000975D, - 4370: 0x0002816F, - 4371: 0x00028023, - 4372: 0x000269B5, - 4373: 0x000213ED, - 4374: 0x0002322F, - 4375: 0x00028048, - 4376: 0x00005D85, - 4377: 0x00028C30, - 4378: 0x00028083, - 4379: 0x00005715, - 4380: 0x00009823, - 4381: 0x00028949, - 4382: 0x00005DAB, - 4383: 0x00024988, - 4384: 0x000065BE, - 4385: 0x000069D5, - 4386: 0x000053D2, - 4387: 0x00024AA5, - 4388: 0x00023F81, - 4389: 0x00003C11, - 4390: 0x00006736, - 4391: 0x00028090, - 4392: 0x000280F4, - 4393: 0x0002812E, - 4394: 0x00021FA1, - 4395: 0x0002814F, - 4396: 0x00028189, - 4397: 0x000281AF, - 4398: 0x0002821A, - 4399: 0x00028306, - 4400: 0x0002832F, - 4401: 0x0002838A, - 4402: 0x000035CA, - 4403: 0x00028468, - 4404: 0x000286AA, - 4405: 0x000048FA, - 4406: 0x000063E6, - 4407: 0x00028956, - 4408: 0x00007808, - 4409: 0x00009255, - 4410: 0x000289B8, - 4411: 0x000043F2, - 4412: 0x000289E7, - 4413: 0x000043DF, - 4414: 0x000289E8, - 4415: 0x00028B46, - 4416: 0x00028BD4, - 4417: 0x000059F8, - 4418: 0x00028C09, - 4419: 0x00008F0B, - 4420: 0x00028FC5, - 4421: 0x000290EC, - 4422: 0x00007B51, - 4423: 0x00029110, - 4424: 0x0002913C, - 4425: 0x00003DF7, - 4426: 0x0002915E, - 4427: 0x00024ACA, - 4428: 0x00008FD0, - 4429: 0x0000728F, - 4430: 0x0000568B, - 4431: 0x000294E7, - 4432: 0x000295E9, - 4433: 0x000295B0, - 4434: 0x000295B8, - 4435: 0x00029732, - 4436: 0x000298D1, - 4437: 0x00029949, - 4438: 0x0002996A, - 4439: 0x000299C3, - 4440: 0x00029A28, - 4441: 0x00029B0E, - 4442: 0x00029D5A, - 4443: 0x00029D9B, - 4444: 0x00007E9F, - 4445: 0x00029EF8, - 4446: 0x00029F23, - 4447: 0x00004CA4, - 4448: 0x00009547, - 4449: 0x0002A293, - 4450: 0x000071A2, - 4451: 0x0002A2FF, - 4452: 0x00004D91, - 4453: 0x00009012, - 4454: 0x0002A5CB, - 4455: 0x00004D9C, - 4456: 0x00020C9C, - 4457: 0x00008FBE, - 4458: 0x000055C1, - 4459: 0x00008FBA, - 4460: 0x000224B0, - 4461: 0x00008FB9, - 4462: 0x00024A93, - 4463: 0x00004509, - 4464: 0x00007E7F, - 4465: 0x00006F56, - 4466: 0x00006AB1, - 4467: 0x00004EEA, - 4468: 0x000034E4, - 4469: 0x00028B2C, - 4470: 0x0002789D, - 4471: 0x0000373A, - 4472: 0x00008E80, - 4473: 0x000217F5, - 4474: 0x00028024, - 4475: 0x00028B6C, - 4476: 0x00028B99, - 4477: 0x00027A3E, - 4478: 0x000266AF, - 4479: 0x00003DEB, - 4480: 0x00027655, - 4481: 0x00023CB7, - 4482: 0x00025635, - 4483: 0x00025956, - 4484: 0x00004E9A, - 4485: 0x00025E81, - 4486: 0x00026258, - 4487: 0x000056BF, - 4488: 0x00020E6D, - 4489: 0x00008E0E, - 4490: 0x00005B6D, - 4491: 0x00023E88, - 4492: 0x00024C9E, - 4493: 0x000063DE, - 4494: 0x000062D0, - 4495: 0x000217F6, - 4496: 0x0002187B, - 4497: 0x00006530, - 4498: 0x0000562D, - 4499: 0x00025C4A, - 4500: 0x0000541A, - 4501: 0x00025311, - 4502: 0x00003DC6, - 4503: 0x00029D98, - 4504: 0x00004C7D, - 4505: 0x00005622, - 4506: 0x0000561E, - 4507: 0x00007F49, - 4508: 0x00025ED8, - 4509: 0x00005975, - 4510: 0x00023D40, - 4511: 0x00008770, - 4512: 0x00004E1C, - 4513: 0x00020FEA, - 4514: 0x00020D49, - 4515: 0x000236BA, - 4516: 0x00008117, - 4517: 0x00009D5E, - 4518: 0x00008D18, - 4519: 0x0000763B, - 4520: 0x00009C45, - 4521: 0x0000764E, - 4522: 0x000077B9, - 4523: 0x00009345, - 4524: 0x00005432, - 4525: 0x00008148, - 4526: 0x000082F7, - 4527: 0x00005625, - 4528: 0x00008132, - 4529: 0x00008418, - 4530: 0x000080BD, - 4531: 0x000055EA, - 4532: 0x00007962, - 4533: 0x00005643, - 4534: 0x00005416, - 4535: 0x00020E9D, - 4536: 0x000035CE, - 4537: 0x00005605, - 4538: 0x000055F1, - 4539: 0x000066F1, - 4540: 0x000282E2, - 4541: 0x0000362D, - 4542: 0x00007534, - 4543: 0x000055F0, - 4544: 0x000055BA, - 4545: 0x00005497, - 4546: 0x00005572, - 4547: 0x00020C41, - 4548: 0x00020C96, - 4549: 0x00005ED0, - 4550: 0x00025148, - 4551: 0x00020E76, - 4552: 0x00022C62, - 4553: 0x00020EA2, - 4554: 0x00009EAB, - 4555: 0x00007D5A, - 4556: 0x000055DE, - 4557: 0x00021075, - 4558: 0x0000629D, - 4559: 0x0000976D, - 4560: 0x00005494, - 4561: 0x00008CCD, - 4562: 0x000071F6, - 4563: 0x00009176, - 4564: 0x000063FC, - 4565: 0x000063B9, - 4566: 0x000063FE, - 4567: 0x00005569, - 4568: 0x00022B43, - 4569: 0x00009C72, - 4570: 0x00022EB3, - 4571: 0x0000519A, - 4572: 0x000034DF, - 4573: 0x00020DA7, - 4574: 0x000051A7, - 4575: 0x0000544D, - 4576: 0x0000551E, - 4577: 0x00005513, - 4578: 0x00007666, - 4579: 0x00008E2D, - 4580: 0x0002688A, - 4581: 0x000075B1, - 4582: 0x000080B6, - 4583: 0x00008804, - 4584: 0x00008786, - 4585: 0x000088C7, - 4586: 0x000081B6, - 4587: 0x0000841C, - 4588: 0x000210C1, - 4589: 0x000044EC, - 4590: 0x00007304, - 4591: 0x00024706, - 4592: 0x00005B90, - 4593: 0x0000830B, - 4594: 0x00026893, - 4595: 0x0000567B, - 4596: 0x000226F4, - 4597: 0x00027D2F, - 4598: 0x000241A3, - 4599: 0x00027D73, - 4600: 0x00026ED0, - 4601: 0x000272B6, - 4602: 0x00009170, - 4603: 0x000211D9, - 4604: 0x00009208, - 4605: 0x00023CFC, - 4606: 0x0002A6A9, - 4607: 0x00020EAC, - 4608: 0x00020EF9, - 4609: 0x00007266, - 4610: 0x00021CA2, - 4611: 0x0000474E, - 4612: 0x00024FC2, - 4613: 0x00027FF9, - 4614: 0x00020FEB, - 4615: 0x000040FA, - 4616: 0x00009C5D, - 4617: 0x0000651F, - 4618: 0x00022DA0, - 4619: 0x000048F3, - 4620: 0x000247E0, - 4621: 0x00029D7C, - 4622: 0x00020FEC, - 4623: 0x00020E0A, - 4624: 0x00006062, - 4625: 0x000275A3, - 4626: 0x00020FED, - 4628: 0x00026048, - 4629: 0x00021187, - 4630: 0x000071A3, - 4631: 0x00007E8E, - 4632: 0x00009D50, - 4633: 0x00004E1A, - 4634: 0x00004E04, - 4635: 0x00003577, - 4636: 0x00005B0D, - 4637: 0x00006CB2, - 4638: 0x00005367, - 4639: 0x000036AC, - 4640: 0x000039DC, - 4641: 0x0000537D, - 4642: 0x000036A5, - 4643: 0x00024618, - 4644: 0x0000589A, - 4645: 0x00024B6E, - 4646: 0x0000822D, - 4647: 0x0000544B, - 4648: 0x000057AA, - 4649: 0x00025A95, - 4650: 0x00020979, - 4652: 0x00003A52, - 4653: 0x00022465, - 4654: 0x00007374, - 4655: 0x00029EAC, - 4656: 0x00004D09, - 4657: 0x00009BED, - 4658: 0x00023CFE, - 4659: 0x00029F30, - 4660: 0x00004C5B, - 4661: 0x00024FA9, - 4662: 0x0002959E, - 4663: 0x00029FDE, - 4664: 0x0000845C, - 4665: 0x00023DB6, - 4666: 0x000272B2, - 4667: 0x000267B3, - 4668: 0x00023720, - 4669: 0x0000632E, - 4670: 0x00007D25, - 4671: 0x00023EF7, - 4672: 0x00023E2C, - 4673: 0x00003A2A, - 4674: 0x00009008, - 4675: 0x000052CC, - 4676: 0x00003E74, - 4677: 0x0000367A, - 4678: 0x000045E9, - 4679: 0x0002048E, - 4680: 0x00007640, - 4681: 0x00005AF0, - 4682: 0x00020EB6, - 4683: 0x0000787A, - 4684: 0x00027F2E, - 4685: 0x000058A7, - 4686: 0x000040BF, - 4687: 0x0000567C, - 4688: 0x00009B8B, - 4689: 0x00005D74, - 4690: 0x00007654, - 4691: 0x0002A434, - 4692: 0x00009E85, - 4693: 0x00004CE1, - 4694: 0x000075F9, - 4695: 0x000037FB, - 4696: 0x00006119, - 4697: 0x000230DA, - 4698: 0x000243F2, - 4700: 0x0000565D, - 4701: 0x000212A9, - 4702: 0x000057A7, - 4703: 0x00024963, - 4704: 0x00029E06, - 4705: 0x00005234, - 4706: 0x000270AE, - 4707: 0x000035AD, - 4708: 0x00006C4A, - 4709: 0x00009D7C, - 4710: 0x00007C56, - 4711: 0x00009B39, - 4712: 0x000057DE, - 4713: 0x0002176C, - 4714: 0x00005C53, - 4715: 0x000064D3, - 4716: 0x000294D0, - 4717: 0x00026335, - 4718: 0x00027164, - 4719: 0x000086AD, - 4720: 0x00020D28, - 4721: 0x00026D22, - 4722: 0x00024AE2, - 4723: 0x00020D71, - 4725: 0x000051FE, - 4726: 0x00021F0F, - 4727: 0x00005D8E, - 4728: 0x00009703, - 4729: 0x00021DD1, - 4730: 0x00009E81, - 4731: 0x0000904C, - 4732: 0x00007B1F, - 4733: 0x00009B02, - 4734: 0x00005CD1, - 4735: 0x00007BA3, - 4736: 0x00006268, - 4737: 0x00006335, - 4738: 0x00009AFF, - 4739: 0x00007BCF, - 4740: 0x00009B2A, - 4741: 0x00007C7E, - 4742: 0x00009B2E, - 4743: 0x00007C42, - 4744: 0x00007C86, - 4745: 0x00009C15, - 4746: 0x00007BFC, - 4747: 0x00009B09, - 4748: 0x00009F17, - 4749: 0x00009C1B, - 4750: 0x0002493E, - 4751: 0x00009F5A, - 4752: 0x00005573, - 4753: 0x00005BC3, - 4754: 0x00004FFD, - 4755: 0x00009E98, - 4756: 0x00004FF2, - 4757: 0x00005260, - 4758: 0x00003E06, - 4759: 0x000052D1, - 4760: 0x00005767, - 4761: 0x00005056, - 4762: 0x000059B7, - 4763: 0x00005E12, - 4764: 0x000097C8, - 4765: 0x00009DAB, - 4766: 0x00008F5C, - 4767: 0x00005469, - 4768: 0x000097B4, - 4769: 0x00009940, - 4770: 0x000097BA, - 4771: 0x0000532C, - 4772: 0x00006130, - 4773: 0x0000692C, - 4774: 0x000053DA, - 4775: 0x00009C0A, - 4776: 0x00009D02, - 4777: 0x00004C3B, - 4778: 0x00009641, - 4779: 0x00006980, - 4780: 0x000050A6, - 4781: 0x00007546, - 4782: 0x0002176D, - 4783: 0x000099DA, - 4784: 0x00005273, - 4786: 0x00009159, - 4787: 0x00009681, - 4788: 0x0000915C, - 4790: 0x00009151, - 4791: 0x00028E97, - 4792: 0x0000637F, - 4793: 0x00026D23, - 4794: 0x00006ACA, - 4795: 0x00005611, - 4796: 0x0000918E, - 4797: 0x0000757A, - 4798: 0x00006285, - 4799: 0x000203FC, - 4800: 0x0000734F, - 4801: 0x00007C70, - 4802: 0x00025C21, - 4803: 0x00023CFD, - 4805: 0x00024919, - 4806: 0x000076D6, - 4807: 0x00009B9D, - 4808: 0x00004E2A, - 4809: 0x00020CD4, - 4810: 0x000083BE, - 4811: 0x00008842, - 4813: 0x00005C4A, - 4814: 0x000069C0, - 4815: 0x000050ED, - 4816: 0x0000577A, - 4817: 0x0000521F, - 4818: 0x00005DF5, - 4819: 0x00004ECE, - 4820: 0x00006C31, - 4821: 0x000201F2, - 4822: 0x00004F39, - 4823: 0x0000549C, - 4824: 0x000054DA, - 4825: 0x0000529A, - 4826: 0x00008D82, - 4827: 0x000035FE, - 4828: 0x00005F0C, - 4829: 0x000035F3, - 4831: 0x00006B52, - 4832: 0x0000917C, - 4833: 0x00009FA5, - 4834: 0x00009B97, - 4835: 0x0000982E, - 4836: 0x000098B4, - 4837: 0x00009ABA, - 4838: 0x00009EA8, - 4839: 0x00009E84, - 4840: 0x0000717A, - 4841: 0x00007B14, - 4843: 0x00006BFA, - 4844: 0x00008818, - 4845: 0x00007F78, - 4847: 0x00005620, - 4848: 0x0002A64A, - 4849: 0x00008E77, - 4850: 0x00009F53, - 4852: 0x00008DD4, - 4853: 0x00008E4F, - 4854: 0x00009E1C, - 4855: 0x00008E01, - 4856: 0x00006282, - 4857: 0x0002837D, - 4858: 0x00008E28, - 4859: 0x00008E75, - 4860: 0x00007AD3, - 4861: 0x00024A77, - 4862: 0x00007A3E, - 4863: 0x000078D8, - 4864: 0x00006CEA, - 4865: 0x00008A67, - 4866: 0x00007607, - 4867: 0x00028A5A, - 4868: 0x00009F26, - 4869: 0x00006CCE, - 4870: 0x000087D6, - 4871: 0x000075C3, - 4872: 0x0002A2B2, - 4873: 0x00007853, - 4874: 0x0002F840, - 4875: 0x00008D0C, - 4876: 0x000072E2, - 4877: 0x00007371, - 4878: 0x00008B2D, - 4879: 0x00007302, - 4880: 0x000074F1, - 4881: 0x00008CEB, - 4882: 0x00024ABB, - 4883: 0x0000862F, - 4884: 0x00005FBA, - 4885: 0x000088A0, - 4886: 0x000044B7, - 4888: 0x0002183B, - 4889: 0x00026E05, - 4891: 0x00008A7E, - 4892: 0x0002251B, - 4894: 0x000060FD, - 4895: 0x00007667, - 4896: 0x00009AD7, - 4897: 0x00009D44, - 4898: 0x0000936E, - 4899: 0x00009B8F, - 4900: 0x000087F5, - 4902: 0x0000880F, - 4903: 0x00008CF7, - 4904: 0x0000732C, - 4905: 0x00009721, - 4906: 0x00009BB0, - 4907: 0x000035D6, - 4908: 0x000072B2, - 4909: 0x00004C07, - 4910: 0x00007C51, - 4911: 0x0000994A, - 4912: 0x00026159, - 4913: 0x00006159, - 4914: 0x00004C04, - 4915: 0x00009E96, - 4916: 0x0000617D, - 4918: 0x0000575F, - 4919: 0x0000616F, - 4920: 0x000062A6, - 4921: 0x00006239, - 4922: 0x000062CE, - 4923: 0x00003A5C, - 4924: 0x000061E2, - 4925: 0x000053AA, - 4926: 0x000233F5, - 4927: 0x00006364, - 4928: 0x00006802, - 4929: 0x000035D2, - 4930: 0x00005D57, - 4931: 0x00028BC2, - 4932: 0x00008FDA, - 4933: 0x00028E39, - 4935: 0x000050D9, - 4936: 0x00021D46, - 4937: 0x00007906, - 4938: 0x00005332, - 4939: 0x00009638, - 4940: 0x00020F3B, - 4941: 0x00004065, - 4943: 0x000077FE, - 4945: 0x00007CC2, - 4946: 0x00025F1A, - 4947: 0x00007CDA, - 4948: 0x00007A2D, - 4949: 0x00008066, - 4950: 0x00008063, - 4951: 0x00007D4D, - 4952: 0x00007505, - 4953: 0x000074F2, - 4954: 0x00008994, - 4955: 0x0000821A, - 4956: 0x0000670C, - 4957: 0x00008062, - 4958: 0x00027486, - 4959: 0x0000805B, - 4960: 0x000074F0, - 4961: 0x00008103, - 4962: 0x00007724, - 4963: 0x00008989, - 4964: 0x000267CC, - 4965: 0x00007553, - 4966: 0x00026ED1, - 4967: 0x000087A9, - 4968: 0x000087CE, - 4969: 0x000081C8, - 4970: 0x0000878C, - 4971: 0x00008A49, - 4972: 0x00008CAD, - 4973: 0x00008B43, - 4974: 0x0000772B, - 4975: 0x000074F8, - 4976: 0x000084DA, - 4977: 0x00003635, - 4978: 0x000069B2, - 4979: 0x00008DA6, - 4981: 0x000089A9, - 4982: 0x00007468, - 4983: 0x00006DB9, - 4984: 0x000087C1, - 4985: 0x00024011, - 4986: 0x000074E7, - 4987: 0x00003DDB, - 4988: 0x00007176, - 4989: 0x000060A4, - 4990: 0x0000619C, - 4991: 0x00003CD1, - 4992: 0x00007162, - 4993: 0x00006077, - 4995: 0x00007F71, - 4996: 0x00028B2D, - 4997: 0x00007250, - 4998: 0x000060E9, - 4999: 0x00004B7E, - 5000: 0x00005220, - 5001: 0x00003C18, - 5002: 0x00023CC7, - 5003: 0x00025ED7, - 5004: 0x00027656, - 5005: 0x00025531, - 5006: 0x00021944, - 5007: 0x000212FE, - 5008: 0x00029903, - 5009: 0x00026DDC, - 5010: 0x000270AD, - 5011: 0x00005CC1, - 5012: 0x000261AD, - 5013: 0x00028A0F, - 5014: 0x00023677, - 5015: 0x000200EE, - 5016: 0x00026846, - 5017: 0x00024F0E, - 5018: 0x00004562, - 5019: 0x00005B1F, - 5020: 0x0002634C, - 5021: 0x00009F50, - 5022: 0x00009EA6, - 5023: 0x0002626B, - 5024: 0x00003000, - 5025: 0x0000FF0C, - 5026: 0x00003001, - 5027: 0x00003002, - 5028: 0x0000FF0E, - 5029: 0x00002027, - 5030: 0x0000FF1B, - 5031: 0x0000FF1A, - 5032: 0x0000FF1F, - 5033: 0x0000FF01, - 5034: 0x0000FE30, - 5035: 0x00002026, - 5036: 0x00002025, - 5037: 0x0000FE50, - 5038: 0x0000FE51, - 5039: 0x0000FE52, - 5040: 0x000000B7, - 5041: 0x0000FE54, - 5042: 0x0000FE55, - 5043: 0x0000FE56, - 5044: 0x0000FE57, - 5045: 0x0000FF5C, - 5046: 0x00002013, - 5047: 0x0000FE31, - 5048: 0x00002014, - 5049: 0x0000FE33, - 5050: 0x00002574, - 5051: 0x0000FE34, - 5052: 0x0000FE4F, - 5053: 0x0000FF08, - 5054: 0x0000FF09, - 5055: 0x0000FE35, - 5056: 0x0000FE36, - 5057: 0x0000FF5B, - 5058: 0x0000FF5D, - 5059: 0x0000FE37, - 5060: 0x0000FE38, - 5061: 0x00003014, - 5062: 0x00003015, - 5063: 0x0000FE39, - 5064: 0x0000FE3A, - 5065: 0x00003010, - 5066: 0x00003011, - 5067: 0x0000FE3B, - 5068: 0x0000FE3C, - 5069: 0x0000300A, - 5070: 0x0000300B, - 5071: 0x0000FE3D, - 5072: 0x0000FE3E, - 5073: 0x00003008, - 5074: 0x00003009, - 5075: 0x0000FE3F, - 5076: 0x0000FE40, - 5077: 0x0000300C, - 5078: 0x0000300D, - 5079: 0x0000FE41, - 5080: 0x0000FE42, - 5081: 0x0000300E, - 5082: 0x0000300F, - 5083: 0x0000FE43, - 5084: 0x0000FE44, - 5085: 0x0000FE59, - 5086: 0x0000FE5A, - 5087: 0x0000FE5B, - 5088: 0x0000FE5C, - 5089: 0x0000FE5D, - 5090: 0x0000FE5E, - 5091: 0x00002018, - 5092: 0x00002019, - 5093: 0x0000201C, - 5094: 0x0000201D, - 5095: 0x0000301D, - 5096: 0x0000301E, - 5097: 0x00002035, - 5098: 0x00002032, - 5099: 0x0000FF03, - 5100: 0x0000FF06, - 5101: 0x0000FF0A, - 5102: 0x0000203B, - 5103: 0x000000A7, - 5104: 0x00003003, - 5105: 0x000025CB, - 5106: 0x000025CF, - 5107: 0x000025B3, - 5108: 0x000025B2, - 5109: 0x000025CE, - 5110: 0x00002606, - 5111: 0x00002605, - 5112: 0x000025C7, - 5113: 0x000025C6, - 5114: 0x000025A1, - 5115: 0x000025A0, - 5116: 0x000025BD, - 5117: 0x000025BC, - 5118: 0x000032A3, - 5119: 0x00002105, - 5120: 0x000000AF, - 5121: 0x0000FFE3, - 5122: 0x0000FF3F, - 5123: 0x000002CD, - 5124: 0x0000FE49, - 5125: 0x0000FE4A, - 5126: 0x0000FE4D, - 5127: 0x0000FE4E, - 5128: 0x0000FE4B, - 5129: 0x0000FE4C, - 5130: 0x0000FE5F, - 5131: 0x0000FE60, - 5132: 0x0000FE61, - 5133: 0x0000FF0B, - 5134: 0x0000FF0D, - 5135: 0x000000D7, - 5136: 0x000000F7, - 5137: 0x000000B1, - 5138: 0x0000221A, - 5139: 0x0000FF1C, - 5140: 0x0000FF1E, - 5141: 0x0000FF1D, - 5142: 0x00002266, - 5143: 0x00002267, - 5144: 0x00002260, - 5145: 0x0000221E, - 5146: 0x00002252, - 5147: 0x00002261, - 5148: 0x0000FE62, - 5149: 0x0000FE63, - 5150: 0x0000FE64, - 5151: 0x0000FE65, - 5152: 0x0000FE66, - 5153: 0x0000FF5E, - 5154: 0x00002229, - 5155: 0x0000222A, - 5156: 0x000022A5, - 5157: 0x00002220, - 5158: 0x0000221F, - 5159: 0x000022BF, - 5160: 0x000033D2, - 5161: 0x000033D1, - 5162: 0x0000222B, - 5163: 0x0000222E, - 5164: 0x00002235, - 5165: 0x00002234, - 5166: 0x00002640, - 5167: 0x00002642, - 5168: 0x00002295, - 5169: 0x00002299, - 5170: 0x00002191, - 5171: 0x00002193, - 5172: 0x00002190, - 5173: 0x00002192, - 5174: 0x00002196, - 5175: 0x00002197, - 5176: 0x00002199, - 5177: 0x00002198, - 5178: 0x00002225, - 5179: 0x00002223, - 5180: 0x0000FF0F, - 5181: 0x0000FF3C, - 5182: 0x00002215, - 5183: 0x0000FE68, - 5184: 0x0000FF04, - 5185: 0x0000FFE5, - 5186: 0x00003012, - 5187: 0x0000FFE0, - 5188: 0x0000FFE1, - 5189: 0x0000FF05, - 5190: 0x0000FF20, - 5191: 0x00002103, - 5192: 0x00002109, - 5193: 0x0000FE69, - 5194: 0x0000FE6A, - 5195: 0x0000FE6B, - 5196: 0x000033D5, - 5197: 0x0000339C, - 5198: 0x0000339D, - 5199: 0x0000339E, - 5200: 0x000033CE, - 5201: 0x000033A1, - 5202: 0x0000338E, - 5203: 0x0000338F, - 5204: 0x000033C4, - 5205: 0x000000B0, - 5206: 0x00005159, - 5207: 0x0000515B, - 5208: 0x0000515E, - 5209: 0x0000515D, - 5210: 0x00005161, - 5211: 0x00005163, - 5212: 0x000055E7, - 5213: 0x000074E9, - 5214: 0x00007CCE, - 5215: 0x00002581, - 5216: 0x00002582, - 5217: 0x00002583, - 5218: 0x00002584, - 5219: 0x00002585, - 5220: 0x00002586, - 5221: 0x00002587, - 5222: 0x00002588, - 5223: 0x0000258F, - 5224: 0x0000258E, - 5225: 0x0000258D, - 5226: 0x0000258C, - 5227: 0x0000258B, - 5228: 0x0000258A, - 5229: 0x00002589, - 5230: 0x0000253C, - 5231: 0x00002534, - 5232: 0x0000252C, - 5233: 0x00002524, - 5234: 0x0000251C, - 5235: 0x00002594, - 5236: 0x00002500, - 5237: 0x00002502, - 5238: 0x00002595, - 5239: 0x0000250C, - 5240: 0x00002510, - 5241: 0x00002514, - 5242: 0x00002518, - 5243: 0x0000256D, - 5244: 0x0000256E, - 5245: 0x00002570, - 5246: 0x0000256F, - 5247: 0x00002550, - 5248: 0x0000255E, - 5249: 0x0000256A, - 5250: 0x00002561, - 5251: 0x000025E2, - 5252: 0x000025E3, - 5253: 0x000025E5, - 5254: 0x000025E4, - 5255: 0x00002571, - 5256: 0x00002572, - 5257: 0x00002573, - 5258: 0x0000FF10, - 5259: 0x0000FF11, - 5260: 0x0000FF12, - 5261: 0x0000FF13, - 5262: 0x0000FF14, - 5263: 0x0000FF15, - 5264: 0x0000FF16, - 5265: 0x0000FF17, - 5266: 0x0000FF18, - 5267: 0x0000FF19, - 5268: 0x00002160, - 5269: 0x00002161, - 5270: 0x00002162, - 5271: 0x00002163, - 5272: 0x00002164, - 5273: 0x00002165, - 5274: 0x00002166, - 5275: 0x00002167, - 5276: 0x00002168, - 5277: 0x00002169, - 5278: 0x00003021, - 5279: 0x00003022, - 5280: 0x00003023, - 5281: 0x00003024, - 5282: 0x00003025, - 5283: 0x00003026, - 5284: 0x00003027, - 5285: 0x00003028, - 5286: 0x00003029, - 5287: 0x00005341, - 5288: 0x00005344, - 5289: 0x00005345, - 5290: 0x0000FF21, - 5291: 0x0000FF22, - 5292: 0x0000FF23, - 5293: 0x0000FF24, - 5294: 0x0000FF25, - 5295: 0x0000FF26, - 5296: 0x0000FF27, - 5297: 0x0000FF28, - 5298: 0x0000FF29, - 5299: 0x0000FF2A, - 5300: 0x0000FF2B, - 5301: 0x0000FF2C, - 5302: 0x0000FF2D, - 5303: 0x0000FF2E, - 5304: 0x0000FF2F, - 5305: 0x0000FF30, - 5306: 0x0000FF31, - 5307: 0x0000FF32, - 5308: 0x0000FF33, - 5309: 0x0000FF34, - 5310: 0x0000FF35, - 5311: 0x0000FF36, - 5312: 0x0000FF37, - 5313: 0x0000FF38, - 5314: 0x0000FF39, - 5315: 0x0000FF3A, - 5316: 0x0000FF41, - 5317: 0x0000FF42, - 5318: 0x0000FF43, - 5319: 0x0000FF44, - 5320: 0x0000FF45, - 5321: 0x0000FF46, - 5322: 0x0000FF47, - 5323: 0x0000FF48, - 5324: 0x0000FF49, - 5325: 0x0000FF4A, - 5326: 0x0000FF4B, - 5327: 0x0000FF4C, - 5328: 0x0000FF4D, - 5329: 0x0000FF4E, - 5330: 0x0000FF4F, - 5331: 0x0000FF50, - 5332: 0x0000FF51, - 5333: 0x0000FF52, - 5334: 0x0000FF53, - 5335: 0x0000FF54, - 5336: 0x0000FF55, - 5337: 0x0000FF56, - 5338: 0x0000FF57, - 5339: 0x0000FF58, - 5340: 0x0000FF59, - 5341: 0x0000FF5A, - 5342: 0x00000391, - 5343: 0x00000392, - 5344: 0x00000393, - 5345: 0x00000394, - 5346: 0x00000395, - 5347: 0x00000396, - 5348: 0x00000397, - 5349: 0x00000398, - 5350: 0x00000399, - 5351: 0x0000039A, - 5352: 0x0000039B, - 5353: 0x0000039C, - 5354: 0x0000039D, - 5355: 0x0000039E, - 5356: 0x0000039F, - 5357: 0x000003A0, - 5358: 0x000003A1, - 5359: 0x000003A3, - 5360: 0x000003A4, - 5361: 0x000003A5, - 5362: 0x000003A6, - 5363: 0x000003A7, - 5364: 0x000003A8, - 5365: 0x000003A9, - 5366: 0x000003B1, - 5367: 0x000003B2, - 5368: 0x000003B3, - 5369: 0x000003B4, - 5370: 0x000003B5, - 5371: 0x000003B6, - 5372: 0x000003B7, - 5373: 0x000003B8, - 5374: 0x000003B9, - 5375: 0x000003BA, - 5376: 0x000003BB, - 5377: 0x000003BC, - 5378: 0x000003BD, - 5379: 0x000003BE, - 5380: 0x000003BF, - 5381: 0x000003C0, - 5382: 0x000003C1, - 5383: 0x000003C3, - 5384: 0x000003C4, - 5385: 0x000003C5, - 5386: 0x000003C6, - 5387: 0x000003C7, - 5388: 0x000003C8, - 5389: 0x000003C9, - 5390: 0x00003105, - 5391: 0x00003106, - 5392: 0x00003107, - 5393: 0x00003108, - 5394: 0x00003109, - 5395: 0x0000310A, - 5396: 0x0000310B, - 5397: 0x0000310C, - 5398: 0x0000310D, - 5399: 0x0000310E, - 5400: 0x0000310F, - 5401: 0x00003110, - 5402: 0x00003111, - 5403: 0x00003112, - 5404: 0x00003113, - 5405: 0x00003114, - 5406: 0x00003115, - 5407: 0x00003116, - 5408: 0x00003117, - 5409: 0x00003118, - 5410: 0x00003119, - 5411: 0x0000311A, - 5412: 0x0000311B, - 5413: 0x0000311C, - 5414: 0x0000311D, - 5415: 0x0000311E, - 5416: 0x0000311F, - 5417: 0x00003120, - 5418: 0x00003121, - 5419: 0x00003122, - 5420: 0x00003123, - 5421: 0x00003124, - 5422: 0x00003125, - 5423: 0x00003126, - 5424: 0x00003127, - 5425: 0x00003128, - 5426: 0x00003129, - 5427: 0x000002D9, - 5428: 0x000002C9, - 5429: 0x000002CA, - 5430: 0x000002C7, - 5431: 0x000002CB, - 5432: 0x00002400, - 5433: 0x00002401, - 5434: 0x00002402, - 5435: 0x00002403, - 5436: 0x00002404, - 5437: 0x00002405, - 5438: 0x00002406, - 5439: 0x00002407, - 5440: 0x00002408, - 5441: 0x00002409, - 5442: 0x0000240A, - 5443: 0x0000240B, - 5444: 0x0000240C, - 5445: 0x0000240D, - 5446: 0x0000240E, - 5447: 0x0000240F, - 5448: 0x00002410, - 5449: 0x00002411, - 5450: 0x00002412, - 5451: 0x00002413, - 5452: 0x00002414, - 5453: 0x00002415, - 5454: 0x00002416, - 5455: 0x00002417, - 5456: 0x00002418, - 5457: 0x00002419, - 5458: 0x0000241A, - 5459: 0x0000241B, - 5460: 0x0000241C, - 5461: 0x0000241D, - 5462: 0x0000241E, - 5463: 0x0000241F, - 5464: 0x00002421, - 5465: 0x000020AC, - 5495: 0x00004E00, - 5496: 0x00004E59, - 5497: 0x00004E01, - 5498: 0x00004E03, - 5499: 0x00004E43, - 5500: 0x00004E5D, - 5501: 0x00004E86, - 5502: 0x00004E8C, - 5503: 0x00004EBA, - 5504: 0x0000513F, - 5505: 0x00005165, - 5506: 0x0000516B, - 5507: 0x000051E0, - 5508: 0x00005200, - 5509: 0x00005201, - 5510: 0x0000529B, - 5511: 0x00005315, - 5512: 0x00005341, - 5513: 0x0000535C, - 5514: 0x000053C8, - 5515: 0x00004E09, - 5516: 0x00004E0B, - 5517: 0x00004E08, - 5518: 0x00004E0A, - 5519: 0x00004E2B, - 5520: 0x00004E38, - 5521: 0x000051E1, - 5522: 0x00004E45, - 5523: 0x00004E48, - 5524: 0x00004E5F, - 5525: 0x00004E5E, - 5526: 0x00004E8E, - 5527: 0x00004EA1, - 5528: 0x00005140, - 5529: 0x00005203, - 5530: 0x000052FA, - 5531: 0x00005343, - 5532: 0x000053C9, - 5533: 0x000053E3, - 5534: 0x0000571F, - 5535: 0x000058EB, - 5536: 0x00005915, - 5537: 0x00005927, - 5538: 0x00005973, - 5539: 0x00005B50, - 5540: 0x00005B51, - 5541: 0x00005B53, - 5542: 0x00005BF8, - 5543: 0x00005C0F, - 5544: 0x00005C22, - 5545: 0x00005C38, - 5546: 0x00005C71, - 5547: 0x00005DDD, - 5548: 0x00005DE5, - 5549: 0x00005DF1, - 5550: 0x00005DF2, - 5551: 0x00005DF3, - 5552: 0x00005DFE, - 5553: 0x00005E72, - 5554: 0x00005EFE, - 5555: 0x00005F0B, - 5556: 0x00005F13, - 5557: 0x0000624D, - 5558: 0x00004E11, - 5559: 0x00004E10, - 5560: 0x00004E0D, - 5561: 0x00004E2D, - 5562: 0x00004E30, - 5563: 0x00004E39, - 5564: 0x00004E4B, - 5565: 0x00005C39, - 5566: 0x00004E88, - 5567: 0x00004E91, - 5568: 0x00004E95, - 5569: 0x00004E92, - 5570: 0x00004E94, - 5571: 0x00004EA2, - 5572: 0x00004EC1, - 5573: 0x00004EC0, - 5574: 0x00004EC3, - 5575: 0x00004EC6, - 5576: 0x00004EC7, - 5577: 0x00004ECD, - 5578: 0x00004ECA, - 5579: 0x00004ECB, - 5580: 0x00004EC4, - 5581: 0x00005143, - 5582: 0x00005141, - 5583: 0x00005167, - 5584: 0x0000516D, - 5585: 0x0000516E, - 5586: 0x0000516C, - 5587: 0x00005197, - 5588: 0x000051F6, - 5589: 0x00005206, - 5590: 0x00005207, - 5591: 0x00005208, - 5592: 0x000052FB, - 5593: 0x000052FE, - 5594: 0x000052FF, - 5595: 0x00005316, - 5596: 0x00005339, - 5597: 0x00005348, - 5598: 0x00005347, - 5599: 0x00005345, - 5600: 0x0000535E, - 5601: 0x00005384, - 5602: 0x000053CB, - 5603: 0x000053CA, - 5604: 0x000053CD, - 5605: 0x000058EC, - 5606: 0x00005929, - 5607: 0x0000592B, - 5608: 0x0000592A, - 5609: 0x0000592D, - 5610: 0x00005B54, - 5611: 0x00005C11, - 5612: 0x00005C24, - 5613: 0x00005C3A, - 5614: 0x00005C6F, - 5615: 0x00005DF4, - 5616: 0x00005E7B, - 5617: 0x00005EFF, - 5618: 0x00005F14, - 5619: 0x00005F15, - 5620: 0x00005FC3, - 5621: 0x00006208, - 5622: 0x00006236, - 5623: 0x0000624B, - 5624: 0x0000624E, - 5625: 0x0000652F, - 5626: 0x00006587, - 5627: 0x00006597, - 5628: 0x000065A4, - 5629: 0x000065B9, - 5630: 0x000065E5, - 5631: 0x000066F0, - 5632: 0x00006708, - 5633: 0x00006728, - 5634: 0x00006B20, - 5635: 0x00006B62, - 5636: 0x00006B79, - 5637: 0x00006BCB, - 5638: 0x00006BD4, - 5639: 0x00006BDB, - 5640: 0x00006C0F, - 5641: 0x00006C34, - 5642: 0x0000706B, - 5643: 0x0000722A, - 5644: 0x00007236, - 5645: 0x0000723B, - 5646: 0x00007247, - 5647: 0x00007259, - 5648: 0x0000725B, - 5649: 0x000072AC, - 5650: 0x0000738B, - 5651: 0x00004E19, - 5652: 0x00004E16, - 5653: 0x00004E15, - 5654: 0x00004E14, - 5655: 0x00004E18, - 5656: 0x00004E3B, - 5657: 0x00004E4D, - 5658: 0x00004E4F, - 5659: 0x00004E4E, - 5660: 0x00004EE5, - 5661: 0x00004ED8, - 5662: 0x00004ED4, - 5663: 0x00004ED5, - 5664: 0x00004ED6, - 5665: 0x00004ED7, - 5666: 0x00004EE3, - 5667: 0x00004EE4, - 5668: 0x00004ED9, - 5669: 0x00004EDE, - 5670: 0x00005145, - 5671: 0x00005144, - 5672: 0x00005189, - 5673: 0x0000518A, - 5674: 0x000051AC, - 5675: 0x000051F9, - 5676: 0x000051FA, - 5677: 0x000051F8, - 5678: 0x0000520A, - 5679: 0x000052A0, - 5680: 0x0000529F, - 5681: 0x00005305, - 5682: 0x00005306, - 5683: 0x00005317, - 5684: 0x0000531D, - 5685: 0x00004EDF, - 5686: 0x0000534A, - 5687: 0x00005349, - 5688: 0x00005361, - 5689: 0x00005360, - 5690: 0x0000536F, - 5691: 0x0000536E, - 5692: 0x000053BB, - 5693: 0x000053EF, - 5694: 0x000053E4, - 5695: 0x000053F3, - 5696: 0x000053EC, - 5697: 0x000053EE, - 5698: 0x000053E9, - 5699: 0x000053E8, - 5700: 0x000053FC, - 5701: 0x000053F8, - 5702: 0x000053F5, - 5703: 0x000053EB, - 5704: 0x000053E6, - 5705: 0x000053EA, - 5706: 0x000053F2, - 5707: 0x000053F1, - 5708: 0x000053F0, - 5709: 0x000053E5, - 5710: 0x000053ED, - 5711: 0x000053FB, - 5712: 0x000056DB, - 5713: 0x000056DA, - 5714: 0x00005916, - 5715: 0x0000592E, - 5716: 0x00005931, - 5717: 0x00005974, - 5718: 0x00005976, - 5719: 0x00005B55, - 5720: 0x00005B83, - 5721: 0x00005C3C, - 5722: 0x00005DE8, - 5723: 0x00005DE7, - 5724: 0x00005DE6, - 5725: 0x00005E02, - 5726: 0x00005E03, - 5727: 0x00005E73, - 5728: 0x00005E7C, - 5729: 0x00005F01, - 5730: 0x00005F18, - 5731: 0x00005F17, - 5732: 0x00005FC5, - 5733: 0x0000620A, - 5734: 0x00006253, - 5735: 0x00006254, - 5736: 0x00006252, - 5737: 0x00006251, - 5738: 0x000065A5, - 5739: 0x000065E6, - 5740: 0x0000672E, - 5741: 0x0000672C, - 5742: 0x0000672A, - 5743: 0x0000672B, - 5744: 0x0000672D, - 5745: 0x00006B63, - 5746: 0x00006BCD, - 5747: 0x00006C11, - 5748: 0x00006C10, - 5749: 0x00006C38, - 5750: 0x00006C41, - 5751: 0x00006C40, - 5752: 0x00006C3E, - 5753: 0x000072AF, - 5754: 0x00007384, - 5755: 0x00007389, - 5756: 0x000074DC, - 5757: 0x000074E6, - 5758: 0x00007518, - 5759: 0x0000751F, - 5760: 0x00007528, - 5761: 0x00007529, - 5762: 0x00007530, - 5763: 0x00007531, - 5764: 0x00007532, - 5765: 0x00007533, - 5766: 0x0000758B, - 5767: 0x0000767D, - 5768: 0x000076AE, - 5769: 0x000076BF, - 5770: 0x000076EE, - 5771: 0x000077DB, - 5772: 0x000077E2, - 5773: 0x000077F3, - 5774: 0x0000793A, - 5775: 0x000079BE, - 5776: 0x00007A74, - 5777: 0x00007ACB, - 5778: 0x00004E1E, - 5779: 0x00004E1F, - 5780: 0x00004E52, - 5781: 0x00004E53, - 5782: 0x00004E69, - 5783: 0x00004E99, - 5784: 0x00004EA4, - 5785: 0x00004EA6, - 5786: 0x00004EA5, - 5787: 0x00004EFF, - 5788: 0x00004F09, - 5789: 0x00004F19, - 5790: 0x00004F0A, - 5791: 0x00004F15, - 5792: 0x00004F0D, - 5793: 0x00004F10, - 5794: 0x00004F11, - 5795: 0x00004F0F, - 5796: 0x00004EF2, - 5797: 0x00004EF6, - 5798: 0x00004EFB, - 5799: 0x00004EF0, - 5800: 0x00004EF3, - 5801: 0x00004EFD, - 5802: 0x00004F01, - 5803: 0x00004F0B, - 5804: 0x00005149, - 5805: 0x00005147, - 5806: 0x00005146, - 5807: 0x00005148, - 5808: 0x00005168, - 5809: 0x00005171, - 5810: 0x0000518D, - 5811: 0x000051B0, - 5812: 0x00005217, - 5813: 0x00005211, - 5814: 0x00005212, - 5815: 0x0000520E, - 5816: 0x00005216, - 5817: 0x000052A3, - 5818: 0x00005308, - 5819: 0x00005321, - 5820: 0x00005320, - 5821: 0x00005370, - 5822: 0x00005371, - 5823: 0x00005409, - 5824: 0x0000540F, - 5825: 0x0000540C, - 5826: 0x0000540A, - 5827: 0x00005410, - 5828: 0x00005401, - 5829: 0x0000540B, - 5830: 0x00005404, - 5831: 0x00005411, - 5832: 0x0000540D, - 5833: 0x00005408, - 5834: 0x00005403, - 5835: 0x0000540E, - 5836: 0x00005406, - 5837: 0x00005412, - 5838: 0x000056E0, - 5839: 0x000056DE, - 5840: 0x000056DD, - 5841: 0x00005733, - 5842: 0x00005730, - 5843: 0x00005728, - 5844: 0x0000572D, - 5845: 0x0000572C, - 5846: 0x0000572F, - 5847: 0x00005729, - 5848: 0x00005919, - 5849: 0x0000591A, - 5850: 0x00005937, - 5851: 0x00005938, - 5852: 0x00005984, - 5853: 0x00005978, - 5854: 0x00005983, - 5855: 0x0000597D, - 5856: 0x00005979, - 5857: 0x00005982, - 5858: 0x00005981, - 5859: 0x00005B57, - 5860: 0x00005B58, - 5861: 0x00005B87, - 5862: 0x00005B88, - 5863: 0x00005B85, - 5864: 0x00005B89, - 5865: 0x00005BFA, - 5866: 0x00005C16, - 5867: 0x00005C79, - 5868: 0x00005DDE, - 5869: 0x00005E06, - 5870: 0x00005E76, - 5871: 0x00005E74, - 5872: 0x00005F0F, - 5873: 0x00005F1B, - 5874: 0x00005FD9, - 5875: 0x00005FD6, - 5876: 0x0000620E, - 5877: 0x0000620C, - 5878: 0x0000620D, - 5879: 0x00006210, - 5880: 0x00006263, - 5881: 0x0000625B, - 5882: 0x00006258, - 5883: 0x00006536, - 5884: 0x000065E9, - 5885: 0x000065E8, - 5886: 0x000065EC, - 5887: 0x000065ED, - 5888: 0x000066F2, - 5889: 0x000066F3, - 5890: 0x00006709, - 5891: 0x0000673D, - 5892: 0x00006734, - 5893: 0x00006731, - 5894: 0x00006735, - 5895: 0x00006B21, - 5896: 0x00006B64, - 5897: 0x00006B7B, - 5898: 0x00006C16, - 5899: 0x00006C5D, - 5900: 0x00006C57, - 5901: 0x00006C59, - 5902: 0x00006C5F, - 5903: 0x00006C60, - 5904: 0x00006C50, - 5905: 0x00006C55, - 5906: 0x00006C61, - 5907: 0x00006C5B, - 5908: 0x00006C4D, - 5909: 0x00006C4E, - 5910: 0x00007070, - 5911: 0x0000725F, - 5912: 0x0000725D, - 5913: 0x0000767E, - 5914: 0x00007AF9, - 5915: 0x00007C73, - 5916: 0x00007CF8, - 5917: 0x00007F36, - 5918: 0x00007F8A, - 5919: 0x00007FBD, - 5920: 0x00008001, - 5921: 0x00008003, - 5922: 0x0000800C, - 5923: 0x00008012, - 5924: 0x00008033, - 5925: 0x0000807F, - 5926: 0x00008089, - 5927: 0x0000808B, - 5928: 0x0000808C, - 5929: 0x000081E3, - 5930: 0x000081EA, - 5931: 0x000081F3, - 5932: 0x000081FC, - 5933: 0x0000820C, - 5934: 0x0000821B, - 5935: 0x0000821F, - 5936: 0x0000826E, - 5937: 0x00008272, - 5938: 0x0000827E, - 5939: 0x0000866B, - 5940: 0x00008840, - 5941: 0x0000884C, - 5942: 0x00008863, - 5943: 0x0000897F, - 5944: 0x00009621, - 5945: 0x00004E32, - 5946: 0x00004EA8, - 5947: 0x00004F4D, - 5948: 0x00004F4F, - 5949: 0x00004F47, - 5950: 0x00004F57, - 5951: 0x00004F5E, - 5952: 0x00004F34, - 5953: 0x00004F5B, - 5954: 0x00004F55, - 5955: 0x00004F30, - 5956: 0x00004F50, - 5957: 0x00004F51, - 5958: 0x00004F3D, - 5959: 0x00004F3A, - 5960: 0x00004F38, - 5961: 0x00004F43, - 5962: 0x00004F54, - 5963: 0x00004F3C, - 5964: 0x00004F46, - 5965: 0x00004F63, - 5966: 0x00004F5C, - 5967: 0x00004F60, - 5968: 0x00004F2F, - 5969: 0x00004F4E, - 5970: 0x00004F36, - 5971: 0x00004F59, - 5972: 0x00004F5D, - 5973: 0x00004F48, - 5974: 0x00004F5A, - 5975: 0x0000514C, - 5976: 0x0000514B, - 5977: 0x0000514D, - 5978: 0x00005175, - 5979: 0x000051B6, - 5980: 0x000051B7, - 5981: 0x00005225, - 5982: 0x00005224, - 5983: 0x00005229, - 5984: 0x0000522A, - 5985: 0x00005228, - 5986: 0x000052AB, - 5987: 0x000052A9, - 5988: 0x000052AA, - 5989: 0x000052AC, - 5990: 0x00005323, - 5991: 0x00005373, - 5992: 0x00005375, - 5993: 0x0000541D, - 5994: 0x0000542D, - 5995: 0x0000541E, - 5996: 0x0000543E, - 5997: 0x00005426, - 5998: 0x0000544E, - 5999: 0x00005427, - 6000: 0x00005446, - 6001: 0x00005443, - 6002: 0x00005433, - 6003: 0x00005448, - 6004: 0x00005442, - 6005: 0x0000541B, - 6006: 0x00005429, - 6007: 0x0000544A, - 6008: 0x00005439, - 6009: 0x0000543B, - 6010: 0x00005438, - 6011: 0x0000542E, - 6012: 0x00005435, - 6013: 0x00005436, - 6014: 0x00005420, - 6015: 0x0000543C, - 6016: 0x00005440, - 6017: 0x00005431, - 6018: 0x0000542B, - 6019: 0x0000541F, - 6020: 0x0000542C, - 6021: 0x000056EA, - 6022: 0x000056F0, - 6023: 0x000056E4, - 6024: 0x000056EB, - 6025: 0x0000574A, - 6026: 0x00005751, - 6027: 0x00005740, - 6028: 0x0000574D, - 6029: 0x00005747, - 6030: 0x0000574E, - 6031: 0x0000573E, - 6032: 0x00005750, - 6033: 0x0000574F, - 6034: 0x0000573B, - 6035: 0x000058EF, - 6036: 0x0000593E, - 6037: 0x0000599D, - 6038: 0x00005992, - 6039: 0x000059A8, - 6040: 0x0000599E, - 6041: 0x000059A3, - 6042: 0x00005999, - 6043: 0x00005996, - 6044: 0x0000598D, - 6045: 0x000059A4, - 6046: 0x00005993, - 6047: 0x0000598A, - 6048: 0x000059A5, - 6049: 0x00005B5D, - 6050: 0x00005B5C, - 6051: 0x00005B5A, - 6052: 0x00005B5B, - 6053: 0x00005B8C, - 6054: 0x00005B8B, - 6055: 0x00005B8F, - 6056: 0x00005C2C, - 6057: 0x00005C40, - 6058: 0x00005C41, - 6059: 0x00005C3F, - 6060: 0x00005C3E, - 6061: 0x00005C90, - 6062: 0x00005C91, - 6063: 0x00005C94, - 6064: 0x00005C8C, - 6065: 0x00005DEB, - 6066: 0x00005E0C, - 6067: 0x00005E8F, - 6068: 0x00005E87, - 6069: 0x00005E8A, - 6070: 0x00005EF7, - 6071: 0x00005F04, - 6072: 0x00005F1F, - 6073: 0x00005F64, - 6074: 0x00005F62, - 6075: 0x00005F77, - 6076: 0x00005F79, - 6077: 0x00005FD8, - 6078: 0x00005FCC, - 6079: 0x00005FD7, - 6080: 0x00005FCD, - 6081: 0x00005FF1, - 6082: 0x00005FEB, - 6083: 0x00005FF8, - 6084: 0x00005FEA, - 6085: 0x00006212, - 6086: 0x00006211, - 6087: 0x00006284, - 6088: 0x00006297, - 6089: 0x00006296, - 6090: 0x00006280, - 6091: 0x00006276, - 6092: 0x00006289, - 6093: 0x0000626D, - 6094: 0x0000628A, - 6095: 0x0000627C, - 6096: 0x0000627E, - 6097: 0x00006279, - 6098: 0x00006273, - 6099: 0x00006292, - 6100: 0x0000626F, - 6101: 0x00006298, - 6102: 0x0000626E, - 6103: 0x00006295, - 6104: 0x00006293, - 6105: 0x00006291, - 6106: 0x00006286, - 6107: 0x00006539, - 6108: 0x0000653B, - 6109: 0x00006538, - 6110: 0x000065F1, - 6111: 0x000066F4, - 6112: 0x0000675F, - 6113: 0x0000674E, - 6114: 0x0000674F, - 6115: 0x00006750, - 6116: 0x00006751, - 6117: 0x0000675C, - 6118: 0x00006756, - 6119: 0x0000675E, - 6120: 0x00006749, - 6121: 0x00006746, - 6122: 0x00006760, - 6123: 0x00006753, - 6124: 0x00006757, - 6125: 0x00006B65, - 6126: 0x00006BCF, - 6127: 0x00006C42, - 6128: 0x00006C5E, - 6129: 0x00006C99, - 6130: 0x00006C81, - 6131: 0x00006C88, - 6132: 0x00006C89, - 6133: 0x00006C85, - 6134: 0x00006C9B, - 6135: 0x00006C6A, - 6136: 0x00006C7A, - 6137: 0x00006C90, - 6138: 0x00006C70, - 6139: 0x00006C8C, - 6140: 0x00006C68, - 6141: 0x00006C96, - 6142: 0x00006C92, - 6143: 0x00006C7D, - 6144: 0x00006C83, - 6145: 0x00006C72, - 6146: 0x00006C7E, - 6147: 0x00006C74, - 6148: 0x00006C86, - 6149: 0x00006C76, - 6150: 0x00006C8D, - 6151: 0x00006C94, - 6152: 0x00006C98, - 6153: 0x00006C82, - 6154: 0x00007076, - 6155: 0x0000707C, - 6156: 0x0000707D, - 6157: 0x00007078, - 6158: 0x00007262, - 6159: 0x00007261, - 6160: 0x00007260, - 6161: 0x000072C4, - 6162: 0x000072C2, - 6163: 0x00007396, - 6164: 0x0000752C, - 6165: 0x0000752B, - 6166: 0x00007537, - 6167: 0x00007538, - 6168: 0x00007682, - 6169: 0x000076EF, - 6170: 0x000077E3, - 6171: 0x000079C1, - 6172: 0x000079C0, - 6173: 0x000079BF, - 6174: 0x00007A76, - 6175: 0x00007CFB, - 6176: 0x00007F55, - 6177: 0x00008096, - 6178: 0x00008093, - 6179: 0x0000809D, - 6180: 0x00008098, - 6181: 0x0000809B, - 6182: 0x0000809A, - 6183: 0x000080B2, - 6184: 0x0000826F, - 6185: 0x00008292, - 6186: 0x0000828B, - 6187: 0x0000828D, - 6188: 0x0000898B, - 6189: 0x000089D2, - 6190: 0x00008A00, - 6191: 0x00008C37, - 6192: 0x00008C46, - 6193: 0x00008C55, - 6194: 0x00008C9D, - 6195: 0x00008D64, - 6196: 0x00008D70, - 6197: 0x00008DB3, - 6198: 0x00008EAB, - 6199: 0x00008ECA, - 6200: 0x00008F9B, - 6201: 0x00008FB0, - 6202: 0x00008FC2, - 6203: 0x00008FC6, - 6204: 0x00008FC5, - 6205: 0x00008FC4, - 6206: 0x00005DE1, - 6207: 0x00009091, - 6208: 0x000090A2, - 6209: 0x000090AA, - 6210: 0x000090A6, - 6211: 0x000090A3, - 6212: 0x00009149, - 6213: 0x000091C6, - 6214: 0x000091CC, - 6215: 0x00009632, - 6216: 0x0000962E, - 6217: 0x00009631, - 6218: 0x0000962A, - 6219: 0x0000962C, - 6220: 0x00004E26, - 6221: 0x00004E56, - 6222: 0x00004E73, - 6223: 0x00004E8B, - 6224: 0x00004E9B, - 6225: 0x00004E9E, - 6226: 0x00004EAB, - 6227: 0x00004EAC, - 6228: 0x00004F6F, - 6229: 0x00004F9D, - 6230: 0x00004F8D, - 6231: 0x00004F73, - 6232: 0x00004F7F, - 6233: 0x00004F6C, - 6234: 0x00004F9B, - 6235: 0x00004F8B, - 6236: 0x00004F86, - 6237: 0x00004F83, - 6238: 0x00004F70, - 6239: 0x00004F75, - 6240: 0x00004F88, - 6241: 0x00004F69, - 6242: 0x00004F7B, - 6243: 0x00004F96, - 6244: 0x00004F7E, - 6245: 0x00004F8F, - 6246: 0x00004F91, - 6247: 0x00004F7A, - 6248: 0x00005154, - 6249: 0x00005152, - 6250: 0x00005155, - 6251: 0x00005169, - 6252: 0x00005177, - 6253: 0x00005176, - 6254: 0x00005178, - 6255: 0x000051BD, - 6256: 0x000051FD, - 6257: 0x0000523B, - 6258: 0x00005238, - 6259: 0x00005237, - 6260: 0x0000523A, - 6261: 0x00005230, - 6262: 0x0000522E, - 6263: 0x00005236, - 6264: 0x00005241, - 6265: 0x000052BE, - 6266: 0x000052BB, - 6267: 0x00005352, - 6268: 0x00005354, - 6269: 0x00005353, - 6270: 0x00005351, - 6271: 0x00005366, - 6272: 0x00005377, - 6273: 0x00005378, - 6274: 0x00005379, - 6275: 0x000053D6, - 6276: 0x000053D4, - 6277: 0x000053D7, - 6278: 0x00005473, - 6279: 0x00005475, - 6280: 0x00005496, - 6281: 0x00005478, - 6282: 0x00005495, - 6283: 0x00005480, - 6284: 0x0000547B, - 6285: 0x00005477, - 6286: 0x00005484, - 6287: 0x00005492, - 6288: 0x00005486, - 6289: 0x0000547C, - 6290: 0x00005490, - 6291: 0x00005471, - 6292: 0x00005476, - 6293: 0x0000548C, - 6294: 0x0000549A, - 6295: 0x00005462, - 6296: 0x00005468, - 6297: 0x0000548B, - 6298: 0x0000547D, - 6299: 0x0000548E, - 6300: 0x000056FA, - 6301: 0x00005783, - 6302: 0x00005777, - 6303: 0x0000576A, - 6304: 0x00005769, - 6305: 0x00005761, - 6306: 0x00005766, - 6307: 0x00005764, - 6308: 0x0000577C, - 6309: 0x0000591C, - 6310: 0x00005949, - 6311: 0x00005947, - 6312: 0x00005948, - 6313: 0x00005944, - 6314: 0x00005954, - 6315: 0x000059BE, - 6316: 0x000059BB, - 6317: 0x000059D4, - 6318: 0x000059B9, - 6319: 0x000059AE, - 6320: 0x000059D1, - 6321: 0x000059C6, - 6322: 0x000059D0, - 6323: 0x000059CD, - 6324: 0x000059CB, - 6325: 0x000059D3, - 6326: 0x000059CA, - 6327: 0x000059AF, - 6328: 0x000059B3, - 6329: 0x000059D2, - 6330: 0x000059C5, - 6331: 0x00005B5F, - 6332: 0x00005B64, - 6333: 0x00005B63, - 6334: 0x00005B97, - 6335: 0x00005B9A, - 6336: 0x00005B98, - 6337: 0x00005B9C, - 6338: 0x00005B99, - 6339: 0x00005B9B, - 6340: 0x00005C1A, - 6341: 0x00005C48, - 6342: 0x00005C45, - 6343: 0x00005C46, - 6344: 0x00005CB7, - 6345: 0x00005CA1, - 6346: 0x00005CB8, - 6347: 0x00005CA9, - 6348: 0x00005CAB, - 6349: 0x00005CB1, - 6350: 0x00005CB3, - 6351: 0x00005E18, - 6352: 0x00005E1A, - 6353: 0x00005E16, - 6354: 0x00005E15, - 6355: 0x00005E1B, - 6356: 0x00005E11, - 6357: 0x00005E78, - 6358: 0x00005E9A, - 6359: 0x00005E97, - 6360: 0x00005E9C, - 6361: 0x00005E95, - 6362: 0x00005E96, - 6363: 0x00005EF6, - 6364: 0x00005F26, - 6365: 0x00005F27, - 6366: 0x00005F29, - 6367: 0x00005F80, - 6368: 0x00005F81, - 6369: 0x00005F7F, - 6370: 0x00005F7C, - 6371: 0x00005FDD, - 6372: 0x00005FE0, - 6373: 0x00005FFD, - 6374: 0x00005FF5, - 6375: 0x00005FFF, - 6376: 0x0000600F, - 6377: 0x00006014, - 6378: 0x0000602F, - 6379: 0x00006035, - 6380: 0x00006016, - 6381: 0x0000602A, - 6382: 0x00006015, - 6383: 0x00006021, - 6384: 0x00006027, - 6385: 0x00006029, - 6386: 0x0000602B, - 6387: 0x0000601B, - 6388: 0x00006216, - 6389: 0x00006215, - 6390: 0x0000623F, - 6391: 0x0000623E, - 6392: 0x00006240, - 6393: 0x0000627F, - 6394: 0x000062C9, - 6395: 0x000062CC, - 6396: 0x000062C4, - 6397: 0x000062BF, - 6398: 0x000062C2, - 6399: 0x000062B9, - 6400: 0x000062D2, - 6401: 0x000062DB, - 6402: 0x000062AB, - 6403: 0x000062D3, - 6404: 0x000062D4, - 6405: 0x000062CB, - 6406: 0x000062C8, - 6407: 0x000062A8, - 6408: 0x000062BD, - 6409: 0x000062BC, - 6410: 0x000062D0, - 6411: 0x000062D9, - 6412: 0x000062C7, - 6413: 0x000062CD, - 6414: 0x000062B5, - 6415: 0x000062DA, - 6416: 0x000062B1, - 6417: 0x000062D8, - 6418: 0x000062D6, - 6419: 0x000062D7, - 6420: 0x000062C6, - 6421: 0x000062AC, - 6422: 0x000062CE, - 6423: 0x0000653E, - 6424: 0x000065A7, - 6425: 0x000065BC, - 6426: 0x000065FA, - 6427: 0x00006614, - 6428: 0x00006613, - 6429: 0x0000660C, - 6430: 0x00006606, - 6431: 0x00006602, - 6432: 0x0000660E, - 6433: 0x00006600, - 6434: 0x0000660F, - 6435: 0x00006615, - 6436: 0x0000660A, - 6437: 0x00006607, - 6438: 0x0000670D, - 6439: 0x0000670B, - 6440: 0x0000676D, - 6441: 0x0000678B, - 6442: 0x00006795, - 6443: 0x00006771, - 6444: 0x0000679C, - 6445: 0x00006773, - 6446: 0x00006777, - 6447: 0x00006787, - 6448: 0x0000679D, - 6449: 0x00006797, - 6450: 0x0000676F, - 6451: 0x00006770, - 6452: 0x0000677F, - 6453: 0x00006789, - 6454: 0x0000677E, - 6455: 0x00006790, - 6456: 0x00006775, - 6457: 0x0000679A, - 6458: 0x00006793, - 6459: 0x0000677C, - 6460: 0x0000676A, - 6461: 0x00006772, - 6462: 0x00006B23, - 6463: 0x00006B66, - 6464: 0x00006B67, - 6465: 0x00006B7F, - 6466: 0x00006C13, - 6467: 0x00006C1B, - 6468: 0x00006CE3, - 6469: 0x00006CE8, - 6470: 0x00006CF3, - 6471: 0x00006CB1, - 6472: 0x00006CCC, - 6473: 0x00006CE5, - 6474: 0x00006CB3, - 6475: 0x00006CBD, - 6476: 0x00006CBE, - 6477: 0x00006CBC, - 6478: 0x00006CE2, - 6479: 0x00006CAB, - 6480: 0x00006CD5, - 6481: 0x00006CD3, - 6482: 0x00006CB8, - 6483: 0x00006CC4, - 6484: 0x00006CB9, - 6485: 0x00006CC1, - 6486: 0x00006CAE, - 6487: 0x00006CD7, - 6488: 0x00006CC5, - 6489: 0x00006CF1, - 6490: 0x00006CBF, - 6491: 0x00006CBB, - 6492: 0x00006CE1, - 6493: 0x00006CDB, - 6494: 0x00006CCA, - 6495: 0x00006CAC, - 6496: 0x00006CEF, - 6497: 0x00006CDC, - 6498: 0x00006CD6, - 6499: 0x00006CE0, - 6500: 0x00007095, - 6501: 0x0000708E, - 6502: 0x00007092, - 6503: 0x0000708A, - 6504: 0x00007099, - 6505: 0x0000722C, - 6506: 0x0000722D, - 6507: 0x00007238, - 6508: 0x00007248, - 6509: 0x00007267, - 6510: 0x00007269, - 6511: 0x000072C0, - 6512: 0x000072CE, - 6513: 0x000072D9, - 6514: 0x000072D7, - 6515: 0x000072D0, - 6516: 0x000073A9, - 6517: 0x000073A8, - 6518: 0x0000739F, - 6519: 0x000073AB, - 6520: 0x000073A5, - 6521: 0x0000753D, - 6522: 0x0000759D, - 6523: 0x00007599, - 6524: 0x0000759A, - 6525: 0x00007684, - 6526: 0x000076C2, - 6527: 0x000076F2, - 6528: 0x000076F4, - 6529: 0x000077E5, - 6530: 0x000077FD, - 6531: 0x0000793E, - 6532: 0x00007940, - 6533: 0x00007941, - 6534: 0x000079C9, - 6535: 0x000079C8, - 6536: 0x00007A7A, - 6537: 0x00007A79, - 6538: 0x00007AFA, - 6539: 0x00007CFE, - 6540: 0x00007F54, - 6541: 0x00007F8C, - 6542: 0x00007F8B, - 6543: 0x00008005, - 6544: 0x000080BA, - 6545: 0x000080A5, - 6546: 0x000080A2, - 6547: 0x000080B1, - 6548: 0x000080A1, - 6549: 0x000080AB, - 6550: 0x000080A9, - 6551: 0x000080B4, - 6552: 0x000080AA, - 6553: 0x000080AF, - 6554: 0x000081E5, - 6555: 0x000081FE, - 6556: 0x0000820D, - 6557: 0x000082B3, - 6558: 0x0000829D, - 6559: 0x00008299, - 6560: 0x000082AD, - 6561: 0x000082BD, - 6562: 0x0000829F, - 6563: 0x000082B9, - 6564: 0x000082B1, - 6565: 0x000082AC, - 6566: 0x000082A5, - 6567: 0x000082AF, - 6568: 0x000082B8, - 6569: 0x000082A3, - 6570: 0x000082B0, - 6571: 0x000082BE, - 6572: 0x000082B7, - 6573: 0x0000864E, - 6574: 0x00008671, - 6575: 0x0000521D, - 6576: 0x00008868, - 6577: 0x00008ECB, - 6578: 0x00008FCE, - 6579: 0x00008FD4, - 6580: 0x00008FD1, - 6581: 0x000090B5, - 6582: 0x000090B8, - 6583: 0x000090B1, - 6584: 0x000090B6, - 6585: 0x000091C7, - 6586: 0x000091D1, - 6587: 0x00009577, - 6588: 0x00009580, - 6589: 0x0000961C, - 6590: 0x00009640, - 6591: 0x0000963F, - 6592: 0x0000963B, - 6593: 0x00009644, - 6594: 0x00009642, - 6595: 0x000096B9, - 6596: 0x000096E8, - 6597: 0x00009752, - 6598: 0x0000975E, - 6599: 0x00004E9F, - 6600: 0x00004EAD, - 6601: 0x00004EAE, - 6602: 0x00004FE1, - 6603: 0x00004FB5, - 6604: 0x00004FAF, - 6605: 0x00004FBF, - 6606: 0x00004FE0, - 6607: 0x00004FD1, - 6608: 0x00004FCF, - 6609: 0x00004FDD, - 6610: 0x00004FC3, - 6611: 0x00004FB6, - 6612: 0x00004FD8, - 6613: 0x00004FDF, - 6614: 0x00004FCA, - 6615: 0x00004FD7, - 6616: 0x00004FAE, - 6617: 0x00004FD0, - 6618: 0x00004FC4, - 6619: 0x00004FC2, - 6620: 0x00004FDA, - 6621: 0x00004FCE, - 6622: 0x00004FDE, - 6623: 0x00004FB7, - 6624: 0x00005157, - 6625: 0x00005192, - 6626: 0x00005191, - 6627: 0x000051A0, - 6628: 0x0000524E, - 6629: 0x00005243, - 6630: 0x0000524A, - 6631: 0x0000524D, - 6632: 0x0000524C, - 6633: 0x0000524B, - 6634: 0x00005247, - 6635: 0x000052C7, - 6636: 0x000052C9, - 6637: 0x000052C3, - 6638: 0x000052C1, - 6639: 0x0000530D, - 6640: 0x00005357, - 6641: 0x0000537B, - 6642: 0x0000539A, - 6643: 0x000053DB, - 6644: 0x000054AC, - 6645: 0x000054C0, - 6646: 0x000054A8, - 6647: 0x000054CE, - 6648: 0x000054C9, - 6649: 0x000054B8, - 6650: 0x000054A6, - 6651: 0x000054B3, - 6652: 0x000054C7, - 6653: 0x000054C2, - 6654: 0x000054BD, - 6655: 0x000054AA, - 6656: 0x000054C1, - 6657: 0x000054C4, - 6658: 0x000054C8, - 6659: 0x000054AF, - 6660: 0x000054AB, - 6661: 0x000054B1, - 6662: 0x000054BB, - 6663: 0x000054A9, - 6664: 0x000054A7, - 6665: 0x000054BF, - 6666: 0x000056FF, - 6667: 0x00005782, - 6668: 0x0000578B, - 6669: 0x000057A0, - 6670: 0x000057A3, - 6671: 0x000057A2, - 6672: 0x000057CE, - 6673: 0x000057AE, - 6674: 0x00005793, - 6675: 0x00005955, - 6676: 0x00005951, - 6677: 0x0000594F, - 6678: 0x0000594E, - 6679: 0x00005950, - 6680: 0x000059DC, - 6681: 0x000059D8, - 6682: 0x000059FF, - 6683: 0x000059E3, - 6684: 0x000059E8, - 6685: 0x00005A03, - 6686: 0x000059E5, - 6687: 0x000059EA, - 6688: 0x000059DA, - 6689: 0x000059E6, - 6690: 0x00005A01, - 6691: 0x000059FB, - 6692: 0x00005B69, - 6693: 0x00005BA3, - 6694: 0x00005BA6, - 6695: 0x00005BA4, - 6696: 0x00005BA2, - 6697: 0x00005BA5, - 6698: 0x00005C01, - 6699: 0x00005C4E, - 6700: 0x00005C4F, - 6701: 0x00005C4D, - 6702: 0x00005C4B, - 6703: 0x00005CD9, - 6704: 0x00005CD2, - 6705: 0x00005DF7, - 6706: 0x00005E1D, - 6707: 0x00005E25, - 6708: 0x00005E1F, - 6709: 0x00005E7D, - 6710: 0x00005EA0, - 6711: 0x00005EA6, - 6712: 0x00005EFA, - 6713: 0x00005F08, - 6714: 0x00005F2D, - 6715: 0x00005F65, - 6716: 0x00005F88, - 6717: 0x00005F85, - 6718: 0x00005F8A, - 6719: 0x00005F8B, - 6720: 0x00005F87, - 6721: 0x00005F8C, - 6722: 0x00005F89, - 6723: 0x00006012, - 6724: 0x0000601D, - 6725: 0x00006020, - 6726: 0x00006025, - 6727: 0x0000600E, - 6728: 0x00006028, - 6729: 0x0000604D, - 6730: 0x00006070, - 6731: 0x00006068, - 6732: 0x00006062, - 6733: 0x00006046, - 6734: 0x00006043, - 6735: 0x0000606C, - 6736: 0x0000606B, - 6737: 0x0000606A, - 6738: 0x00006064, - 6739: 0x00006241, - 6740: 0x000062DC, - 6741: 0x00006316, - 6742: 0x00006309, - 6743: 0x000062FC, - 6744: 0x000062ED, - 6745: 0x00006301, - 6746: 0x000062EE, - 6747: 0x000062FD, - 6748: 0x00006307, - 6749: 0x000062F1, - 6750: 0x000062F7, - 6751: 0x000062EF, - 6752: 0x000062EC, - 6753: 0x000062FE, - 6754: 0x000062F4, - 6755: 0x00006311, - 6756: 0x00006302, - 6757: 0x0000653F, - 6758: 0x00006545, - 6759: 0x000065AB, - 6760: 0x000065BD, - 6761: 0x000065E2, - 6762: 0x00006625, - 6763: 0x0000662D, - 6764: 0x00006620, - 6765: 0x00006627, - 6766: 0x0000662F, - 6767: 0x0000661F, - 6768: 0x00006628, - 6769: 0x00006631, - 6770: 0x00006624, - 6771: 0x000066F7, - 6772: 0x000067FF, - 6773: 0x000067D3, - 6774: 0x000067F1, - 6775: 0x000067D4, - 6776: 0x000067D0, - 6777: 0x000067EC, - 6778: 0x000067B6, - 6779: 0x000067AF, - 6780: 0x000067F5, - 6781: 0x000067E9, - 6782: 0x000067EF, - 6783: 0x000067C4, - 6784: 0x000067D1, - 6785: 0x000067B4, - 6786: 0x000067DA, - 6787: 0x000067E5, - 6788: 0x000067B8, - 6789: 0x000067CF, - 6790: 0x000067DE, - 6791: 0x000067F3, - 6792: 0x000067B0, - 6793: 0x000067D9, - 6794: 0x000067E2, - 6795: 0x000067DD, - 6796: 0x000067D2, - 6797: 0x00006B6A, - 6798: 0x00006B83, - 6799: 0x00006B86, - 6800: 0x00006BB5, - 6801: 0x00006BD2, - 6802: 0x00006BD7, - 6803: 0x00006C1F, - 6804: 0x00006CC9, - 6805: 0x00006D0B, - 6806: 0x00006D32, - 6807: 0x00006D2A, - 6808: 0x00006D41, - 6809: 0x00006D25, - 6810: 0x00006D0C, - 6811: 0x00006D31, - 6812: 0x00006D1E, - 6813: 0x00006D17, - 6814: 0x00006D3B, - 6815: 0x00006D3D, - 6816: 0x00006D3E, - 6817: 0x00006D36, - 6818: 0x00006D1B, - 6819: 0x00006CF5, - 6820: 0x00006D39, - 6821: 0x00006D27, - 6822: 0x00006D38, - 6823: 0x00006D29, - 6824: 0x00006D2E, - 6825: 0x00006D35, - 6826: 0x00006D0E, - 6827: 0x00006D2B, - 6828: 0x000070AB, - 6829: 0x000070BA, - 6830: 0x000070B3, - 6831: 0x000070AC, - 6832: 0x000070AF, - 6833: 0x000070AD, - 6834: 0x000070B8, - 6835: 0x000070AE, - 6836: 0x000070A4, - 6837: 0x00007230, - 6838: 0x00007272, - 6839: 0x0000726F, - 6840: 0x00007274, - 6841: 0x000072E9, - 6842: 0x000072E0, - 6843: 0x000072E1, - 6844: 0x000073B7, - 6845: 0x000073CA, - 6846: 0x000073BB, - 6847: 0x000073B2, - 6848: 0x000073CD, - 6849: 0x000073C0, - 6850: 0x000073B3, - 6851: 0x0000751A, - 6852: 0x0000752D, - 6853: 0x0000754F, - 6854: 0x0000754C, - 6855: 0x0000754E, - 6856: 0x0000754B, - 6857: 0x000075AB, - 6858: 0x000075A4, - 6859: 0x000075A5, - 6860: 0x000075A2, - 6861: 0x000075A3, - 6862: 0x00007678, - 6863: 0x00007686, - 6864: 0x00007687, - 6865: 0x00007688, - 6866: 0x000076C8, - 6867: 0x000076C6, - 6868: 0x000076C3, - 6869: 0x000076C5, - 6870: 0x00007701, - 6871: 0x000076F9, - 6872: 0x000076F8, - 6873: 0x00007709, - 6874: 0x0000770B, - 6875: 0x000076FE, - 6876: 0x000076FC, - 6877: 0x00007707, - 6878: 0x000077DC, - 6879: 0x00007802, - 6880: 0x00007814, - 6881: 0x0000780C, - 6882: 0x0000780D, - 6883: 0x00007946, - 6884: 0x00007949, - 6885: 0x00007948, - 6886: 0x00007947, - 6887: 0x000079B9, - 6888: 0x000079BA, - 6889: 0x000079D1, - 6890: 0x000079D2, - 6891: 0x000079CB, - 6892: 0x00007A7F, - 6893: 0x00007A81, - 6894: 0x00007AFF, - 6895: 0x00007AFD, - 6896: 0x00007C7D, - 6897: 0x00007D02, - 6898: 0x00007D05, - 6899: 0x00007D00, - 6900: 0x00007D09, - 6901: 0x00007D07, - 6902: 0x00007D04, - 6903: 0x00007D06, - 6904: 0x00007F38, - 6905: 0x00007F8E, - 6906: 0x00007FBF, - 6907: 0x00008004, - 6908: 0x00008010, - 6909: 0x0000800D, - 6910: 0x00008011, - 6911: 0x00008036, - 6912: 0x000080D6, - 6913: 0x000080E5, - 6914: 0x000080DA, - 6915: 0x000080C3, - 6916: 0x000080C4, - 6917: 0x000080CC, - 6918: 0x000080E1, - 6919: 0x000080DB, - 6920: 0x000080CE, - 6921: 0x000080DE, - 6922: 0x000080E4, - 6923: 0x000080DD, - 6924: 0x000081F4, - 6925: 0x00008222, - 6926: 0x000082E7, - 6927: 0x00008303, - 6928: 0x00008305, - 6929: 0x000082E3, - 6930: 0x000082DB, - 6931: 0x000082E6, - 6932: 0x00008304, - 6933: 0x000082E5, - 6934: 0x00008302, - 6935: 0x00008309, - 6936: 0x000082D2, - 6937: 0x000082D7, - 6938: 0x000082F1, - 6939: 0x00008301, - 6940: 0x000082DC, - 6941: 0x000082D4, - 6942: 0x000082D1, - 6943: 0x000082DE, - 6944: 0x000082D3, - 6945: 0x000082DF, - 6946: 0x000082EF, - 6947: 0x00008306, - 6948: 0x00008650, - 6949: 0x00008679, - 6950: 0x0000867B, - 6951: 0x0000867A, - 6952: 0x0000884D, - 6953: 0x0000886B, - 6954: 0x00008981, - 6955: 0x000089D4, - 6956: 0x00008A08, - 6957: 0x00008A02, - 6958: 0x00008A03, - 6959: 0x00008C9E, - 6960: 0x00008CA0, - 6961: 0x00008D74, - 6962: 0x00008D73, - 6963: 0x00008DB4, - 6964: 0x00008ECD, - 6965: 0x00008ECC, - 6966: 0x00008FF0, - 6967: 0x00008FE6, - 6968: 0x00008FE2, - 6969: 0x00008FEA, - 6970: 0x00008FE5, - 6971: 0x00008FED, - 6972: 0x00008FEB, - 6973: 0x00008FE4, - 6974: 0x00008FE8, - 6975: 0x000090CA, - 6976: 0x000090CE, - 6977: 0x000090C1, - 6978: 0x000090C3, - 6979: 0x0000914B, - 6980: 0x0000914A, - 6981: 0x000091CD, - 6982: 0x00009582, - 6983: 0x00009650, - 6984: 0x0000964B, - 6985: 0x0000964C, - 6986: 0x0000964D, - 6987: 0x00009762, - 6988: 0x00009769, - 6989: 0x000097CB, - 6990: 0x000097ED, - 6991: 0x000097F3, - 6992: 0x00009801, - 6993: 0x000098A8, - 6994: 0x000098DB, - 6995: 0x000098DF, - 6996: 0x00009996, - 6997: 0x00009999, - 6998: 0x00004E58, - 6999: 0x00004EB3, - 7000: 0x0000500C, - 7001: 0x0000500D, - 7002: 0x00005023, - 7003: 0x00004FEF, - 7004: 0x00005026, - 7005: 0x00005025, - 7006: 0x00004FF8, - 7007: 0x00005029, - 7008: 0x00005016, - 7009: 0x00005006, - 7010: 0x0000503C, - 7011: 0x0000501F, - 7012: 0x0000501A, - 7013: 0x00005012, - 7014: 0x00005011, - 7015: 0x00004FFA, - 7016: 0x00005000, - 7017: 0x00005014, - 7018: 0x00005028, - 7019: 0x00004FF1, - 7020: 0x00005021, - 7021: 0x0000500B, - 7022: 0x00005019, - 7023: 0x00005018, - 7024: 0x00004FF3, - 7025: 0x00004FEE, - 7026: 0x0000502D, - 7027: 0x0000502A, - 7028: 0x00004FFE, - 7029: 0x0000502B, - 7030: 0x00005009, - 7031: 0x0000517C, - 7032: 0x000051A4, - 7033: 0x000051A5, - 7034: 0x000051A2, - 7035: 0x000051CD, - 7036: 0x000051CC, - 7037: 0x000051C6, - 7038: 0x000051CB, - 7039: 0x00005256, - 7040: 0x0000525C, - 7041: 0x00005254, - 7042: 0x0000525B, - 7043: 0x0000525D, - 7044: 0x0000532A, - 7045: 0x0000537F, - 7046: 0x0000539F, - 7047: 0x0000539D, - 7048: 0x000053DF, - 7049: 0x000054E8, - 7050: 0x00005510, - 7051: 0x00005501, - 7052: 0x00005537, - 7053: 0x000054FC, - 7054: 0x000054E5, - 7055: 0x000054F2, - 7056: 0x00005506, - 7057: 0x000054FA, - 7058: 0x00005514, - 7059: 0x000054E9, - 7060: 0x000054ED, - 7061: 0x000054E1, - 7062: 0x00005509, - 7063: 0x000054EE, - 7064: 0x000054EA, - 7065: 0x000054E6, - 7066: 0x00005527, - 7067: 0x00005507, - 7068: 0x000054FD, - 7069: 0x0000550F, - 7070: 0x00005703, - 7071: 0x00005704, - 7072: 0x000057C2, - 7073: 0x000057D4, - 7074: 0x000057CB, - 7075: 0x000057C3, - 7076: 0x00005809, - 7077: 0x0000590F, - 7078: 0x00005957, - 7079: 0x00005958, - 7080: 0x0000595A, - 7081: 0x00005A11, - 7082: 0x00005A18, - 7083: 0x00005A1C, - 7084: 0x00005A1F, - 7085: 0x00005A1B, - 7086: 0x00005A13, - 7087: 0x000059EC, - 7088: 0x00005A20, - 7089: 0x00005A23, - 7090: 0x00005A29, - 7091: 0x00005A25, - 7092: 0x00005A0C, - 7093: 0x00005A09, - 7094: 0x00005B6B, - 7095: 0x00005C58, - 7096: 0x00005BB0, - 7097: 0x00005BB3, - 7098: 0x00005BB6, - 7099: 0x00005BB4, - 7100: 0x00005BAE, - 7101: 0x00005BB5, - 7102: 0x00005BB9, - 7103: 0x00005BB8, - 7104: 0x00005C04, - 7105: 0x00005C51, - 7106: 0x00005C55, - 7107: 0x00005C50, - 7108: 0x00005CED, - 7109: 0x00005CFD, - 7110: 0x00005CFB, - 7111: 0x00005CEA, - 7112: 0x00005CE8, - 7113: 0x00005CF0, - 7114: 0x00005CF6, - 7115: 0x00005D01, - 7116: 0x00005CF4, - 7117: 0x00005DEE, - 7118: 0x00005E2D, - 7119: 0x00005E2B, - 7120: 0x00005EAB, - 7121: 0x00005EAD, - 7122: 0x00005EA7, - 7123: 0x00005F31, - 7124: 0x00005F92, - 7125: 0x00005F91, - 7126: 0x00005F90, - 7127: 0x00006059, - 7128: 0x00006063, - 7129: 0x00006065, - 7130: 0x00006050, - 7131: 0x00006055, - 7132: 0x0000606D, - 7133: 0x00006069, - 7134: 0x0000606F, - 7135: 0x00006084, - 7136: 0x0000609F, - 7137: 0x0000609A, - 7138: 0x0000608D, - 7139: 0x00006094, - 7140: 0x0000608C, - 7141: 0x00006085, - 7142: 0x00006096, - 7143: 0x00006247, - 7144: 0x000062F3, - 7145: 0x00006308, - 7146: 0x000062FF, - 7147: 0x0000634E, - 7148: 0x0000633E, - 7149: 0x0000632F, - 7150: 0x00006355, - 7151: 0x00006342, - 7152: 0x00006346, - 7153: 0x0000634F, - 7154: 0x00006349, - 7155: 0x0000633A, - 7156: 0x00006350, - 7157: 0x0000633D, - 7158: 0x0000632A, - 7159: 0x0000632B, - 7160: 0x00006328, - 7161: 0x0000634D, - 7162: 0x0000634C, - 7163: 0x00006548, - 7164: 0x00006549, - 7165: 0x00006599, - 7166: 0x000065C1, - 7167: 0x000065C5, - 7168: 0x00006642, - 7169: 0x00006649, - 7170: 0x0000664F, - 7171: 0x00006643, - 7172: 0x00006652, - 7173: 0x0000664C, - 7174: 0x00006645, - 7175: 0x00006641, - 7176: 0x000066F8, - 7177: 0x00006714, - 7178: 0x00006715, - 7179: 0x00006717, - 7180: 0x00006821, - 7181: 0x00006838, - 7182: 0x00006848, - 7183: 0x00006846, - 7184: 0x00006853, - 7185: 0x00006839, - 7186: 0x00006842, - 7187: 0x00006854, - 7188: 0x00006829, - 7189: 0x000068B3, - 7190: 0x00006817, - 7191: 0x0000684C, - 7192: 0x00006851, - 7193: 0x0000683D, - 7194: 0x000067F4, - 7195: 0x00006850, - 7196: 0x00006840, - 7197: 0x0000683C, - 7198: 0x00006843, - 7199: 0x0000682A, - 7200: 0x00006845, - 7201: 0x00006813, - 7202: 0x00006818, - 7203: 0x00006841, - 7204: 0x00006B8A, - 7205: 0x00006B89, - 7206: 0x00006BB7, - 7207: 0x00006C23, - 7208: 0x00006C27, - 7209: 0x00006C28, - 7210: 0x00006C26, - 7211: 0x00006C24, - 7212: 0x00006CF0, - 7213: 0x00006D6A, - 7214: 0x00006D95, - 7215: 0x00006D88, - 7216: 0x00006D87, - 7217: 0x00006D66, - 7218: 0x00006D78, - 7219: 0x00006D77, - 7220: 0x00006D59, - 7221: 0x00006D93, - 7222: 0x00006D6C, - 7223: 0x00006D89, - 7224: 0x00006D6E, - 7225: 0x00006D5A, - 7226: 0x00006D74, - 7227: 0x00006D69, - 7228: 0x00006D8C, - 7229: 0x00006D8A, - 7230: 0x00006D79, - 7231: 0x00006D85, - 7232: 0x00006D65, - 7233: 0x00006D94, - 7234: 0x000070CA, - 7235: 0x000070D8, - 7236: 0x000070E4, - 7237: 0x000070D9, - 7238: 0x000070C8, - 7239: 0x000070CF, - 7240: 0x00007239, - 7241: 0x00007279, - 7242: 0x000072FC, - 7243: 0x000072F9, - 7244: 0x000072FD, - 7245: 0x000072F8, - 7246: 0x000072F7, - 7247: 0x00007386, - 7248: 0x000073ED, - 7249: 0x00007409, - 7250: 0x000073EE, - 7251: 0x000073E0, - 7252: 0x000073EA, - 7253: 0x000073DE, - 7254: 0x00007554, - 7255: 0x0000755D, - 7256: 0x0000755C, - 7257: 0x0000755A, - 7258: 0x00007559, - 7259: 0x000075BE, - 7260: 0x000075C5, - 7261: 0x000075C7, - 7262: 0x000075B2, - 7263: 0x000075B3, - 7264: 0x000075BD, - 7265: 0x000075BC, - 7266: 0x000075B9, - 7267: 0x000075C2, - 7268: 0x000075B8, - 7269: 0x0000768B, - 7270: 0x000076B0, - 7271: 0x000076CA, - 7272: 0x000076CD, - 7273: 0x000076CE, - 7274: 0x00007729, - 7275: 0x0000771F, - 7276: 0x00007720, - 7277: 0x00007728, - 7278: 0x000077E9, - 7279: 0x00007830, - 7280: 0x00007827, - 7281: 0x00007838, - 7282: 0x0000781D, - 7283: 0x00007834, - 7284: 0x00007837, - 7285: 0x00007825, - 7286: 0x0000782D, - 7287: 0x00007820, - 7288: 0x0000781F, - 7289: 0x00007832, - 7290: 0x00007955, - 7291: 0x00007950, - 7292: 0x00007960, - 7293: 0x0000795F, - 7294: 0x00007956, - 7295: 0x0000795E, - 7296: 0x0000795D, - 7297: 0x00007957, - 7298: 0x0000795A, - 7299: 0x000079E4, - 7300: 0x000079E3, - 7301: 0x000079E7, - 7302: 0x000079DF, - 7303: 0x000079E6, - 7304: 0x000079E9, - 7305: 0x000079D8, - 7306: 0x00007A84, - 7307: 0x00007A88, - 7308: 0x00007AD9, - 7309: 0x00007B06, - 7310: 0x00007B11, - 7311: 0x00007C89, - 7312: 0x00007D21, - 7313: 0x00007D17, - 7314: 0x00007D0B, - 7315: 0x00007D0A, - 7316: 0x00007D20, - 7317: 0x00007D22, - 7318: 0x00007D14, - 7319: 0x00007D10, - 7320: 0x00007D15, - 7321: 0x00007D1A, - 7322: 0x00007D1C, - 7323: 0x00007D0D, - 7324: 0x00007D19, - 7325: 0x00007D1B, - 7326: 0x00007F3A, - 7327: 0x00007F5F, - 7328: 0x00007F94, - 7329: 0x00007FC5, - 7330: 0x00007FC1, - 7331: 0x00008006, - 7332: 0x00008018, - 7333: 0x00008015, - 7334: 0x00008019, - 7335: 0x00008017, - 7336: 0x0000803D, - 7337: 0x0000803F, - 7338: 0x000080F1, - 7339: 0x00008102, - 7340: 0x000080F0, - 7341: 0x00008105, - 7342: 0x000080ED, - 7343: 0x000080F4, - 7344: 0x00008106, - 7345: 0x000080F8, - 7346: 0x000080F3, - 7347: 0x00008108, - 7348: 0x000080FD, - 7349: 0x0000810A, - 7350: 0x000080FC, - 7351: 0x000080EF, - 7352: 0x000081ED, - 7353: 0x000081EC, - 7354: 0x00008200, - 7355: 0x00008210, - 7356: 0x0000822A, - 7357: 0x0000822B, - 7358: 0x00008228, - 7359: 0x0000822C, - 7360: 0x000082BB, - 7361: 0x0000832B, - 7362: 0x00008352, - 7363: 0x00008354, - 7364: 0x0000834A, - 7365: 0x00008338, - 7366: 0x00008350, - 7367: 0x00008349, - 7368: 0x00008335, - 7369: 0x00008334, - 7370: 0x0000834F, - 7371: 0x00008332, - 7372: 0x00008339, - 7373: 0x00008336, - 7374: 0x00008317, - 7375: 0x00008340, - 7376: 0x00008331, - 7377: 0x00008328, - 7378: 0x00008343, - 7379: 0x00008654, - 7380: 0x0000868A, - 7381: 0x000086AA, - 7382: 0x00008693, - 7383: 0x000086A4, - 7384: 0x000086A9, - 7385: 0x0000868C, - 7386: 0x000086A3, - 7387: 0x0000869C, - 7388: 0x00008870, - 7389: 0x00008877, - 7390: 0x00008881, - 7391: 0x00008882, - 7392: 0x0000887D, - 7393: 0x00008879, - 7394: 0x00008A18, - 7395: 0x00008A10, - 7396: 0x00008A0E, - 7397: 0x00008A0C, - 7398: 0x00008A15, - 7399: 0x00008A0A, - 7400: 0x00008A17, - 7401: 0x00008A13, - 7402: 0x00008A16, - 7403: 0x00008A0F, - 7404: 0x00008A11, - 7405: 0x00008C48, - 7406: 0x00008C7A, - 7407: 0x00008C79, - 7408: 0x00008CA1, - 7409: 0x00008CA2, - 7410: 0x00008D77, - 7411: 0x00008EAC, - 7412: 0x00008ED2, - 7413: 0x00008ED4, - 7414: 0x00008ECF, - 7415: 0x00008FB1, - 7416: 0x00009001, - 7417: 0x00009006, - 7418: 0x00008FF7, - 7419: 0x00009000, - 7420: 0x00008FFA, - 7421: 0x00008FF4, - 7422: 0x00009003, - 7423: 0x00008FFD, - 7424: 0x00009005, - 7425: 0x00008FF8, - 7426: 0x00009095, - 7427: 0x000090E1, - 7428: 0x000090DD, - 7429: 0x000090E2, - 7430: 0x00009152, - 7431: 0x0000914D, - 7432: 0x0000914C, - 7433: 0x000091D8, - 7434: 0x000091DD, - 7435: 0x000091D7, - 7436: 0x000091DC, - 7437: 0x000091D9, - 7438: 0x00009583, - 7439: 0x00009662, - 7440: 0x00009663, - 7441: 0x00009661, - 7442: 0x0000965B, - 7443: 0x0000965D, - 7444: 0x00009664, - 7445: 0x00009658, - 7446: 0x0000965E, - 7447: 0x000096BB, - 7448: 0x000098E2, - 7449: 0x000099AC, - 7450: 0x00009AA8, - 7451: 0x00009AD8, - 7452: 0x00009B25, - 7453: 0x00009B32, - 7454: 0x00009B3C, - 7455: 0x00004E7E, - 7456: 0x0000507A, - 7457: 0x0000507D, - 7458: 0x0000505C, - 7459: 0x00005047, - 7460: 0x00005043, - 7461: 0x0000504C, - 7462: 0x0000505A, - 7463: 0x00005049, - 7464: 0x00005065, - 7465: 0x00005076, - 7466: 0x0000504E, - 7467: 0x00005055, - 7468: 0x00005075, - 7469: 0x00005074, - 7470: 0x00005077, - 7471: 0x0000504F, - 7472: 0x0000500F, - 7473: 0x0000506F, - 7474: 0x0000506D, - 7475: 0x0000515C, - 7476: 0x00005195, - 7477: 0x000051F0, - 7478: 0x0000526A, - 7479: 0x0000526F, - 7480: 0x000052D2, - 7481: 0x000052D9, - 7482: 0x000052D8, - 7483: 0x000052D5, - 7484: 0x00005310, - 7485: 0x0000530F, - 7486: 0x00005319, - 7487: 0x0000533F, - 7488: 0x00005340, - 7489: 0x0000533E, - 7490: 0x000053C3, - 7491: 0x000066FC, - 7492: 0x00005546, - 7493: 0x0000556A, - 7494: 0x00005566, - 7495: 0x00005544, - 7496: 0x0000555E, - 7497: 0x00005561, - 7498: 0x00005543, - 7499: 0x0000554A, - 7500: 0x00005531, - 7501: 0x00005556, - 7502: 0x0000554F, - 7503: 0x00005555, - 7504: 0x0000552F, - 7505: 0x00005564, - 7506: 0x00005538, - 7507: 0x0000552E, - 7508: 0x0000555C, - 7509: 0x0000552C, - 7510: 0x00005563, - 7511: 0x00005533, - 7512: 0x00005541, - 7513: 0x00005557, - 7514: 0x00005708, - 7515: 0x0000570B, - 7516: 0x00005709, - 7517: 0x000057DF, - 7518: 0x00005805, - 7519: 0x0000580A, - 7520: 0x00005806, - 7521: 0x000057E0, - 7522: 0x000057E4, - 7523: 0x000057FA, - 7524: 0x00005802, - 7525: 0x00005835, - 7526: 0x000057F7, - 7527: 0x000057F9, - 7528: 0x00005920, - 7529: 0x00005962, - 7530: 0x00005A36, - 7531: 0x00005A41, - 7532: 0x00005A49, - 7533: 0x00005A66, - 7534: 0x00005A6A, - 7535: 0x00005A40, - 7536: 0x00005A3C, - 7537: 0x00005A62, - 7538: 0x00005A5A, - 7539: 0x00005A46, - 7540: 0x00005A4A, - 7541: 0x00005B70, - 7542: 0x00005BC7, - 7543: 0x00005BC5, - 7544: 0x00005BC4, - 7545: 0x00005BC2, - 7546: 0x00005BBF, - 7547: 0x00005BC6, - 7548: 0x00005C09, - 7549: 0x00005C08, - 7550: 0x00005C07, - 7551: 0x00005C60, - 7552: 0x00005C5C, - 7553: 0x00005C5D, - 7554: 0x00005D07, - 7555: 0x00005D06, - 7556: 0x00005D0E, - 7557: 0x00005D1B, - 7558: 0x00005D16, - 7559: 0x00005D22, - 7560: 0x00005D11, - 7561: 0x00005D29, - 7562: 0x00005D14, - 7563: 0x00005D19, - 7564: 0x00005D24, - 7565: 0x00005D27, - 7566: 0x00005D17, - 7567: 0x00005DE2, - 7568: 0x00005E38, - 7569: 0x00005E36, - 7570: 0x00005E33, - 7571: 0x00005E37, - 7572: 0x00005EB7, - 7573: 0x00005EB8, - 7574: 0x00005EB6, - 7575: 0x00005EB5, - 7576: 0x00005EBE, - 7577: 0x00005F35, - 7578: 0x00005F37, - 7579: 0x00005F57, - 7580: 0x00005F6C, - 7581: 0x00005F69, - 7582: 0x00005F6B, - 7583: 0x00005F97, - 7584: 0x00005F99, - 7585: 0x00005F9E, - 7586: 0x00005F98, - 7587: 0x00005FA1, - 7588: 0x00005FA0, - 7589: 0x00005F9C, - 7590: 0x0000607F, - 7591: 0x000060A3, - 7592: 0x00006089, - 7593: 0x000060A0, - 7594: 0x000060A8, - 7595: 0x000060CB, - 7596: 0x000060B4, - 7597: 0x000060E6, - 7598: 0x000060BD, - 7599: 0x000060C5, - 7600: 0x000060BB, - 7601: 0x000060B5, - 7602: 0x000060DC, - 7603: 0x000060BC, - 7604: 0x000060D8, - 7605: 0x000060D5, - 7606: 0x000060C6, - 7607: 0x000060DF, - 7608: 0x000060B8, - 7609: 0x000060DA, - 7610: 0x000060C7, - 7611: 0x0000621A, - 7612: 0x0000621B, - 7613: 0x00006248, - 7614: 0x000063A0, - 7615: 0x000063A7, - 7616: 0x00006372, - 7617: 0x00006396, - 7618: 0x000063A2, - 7619: 0x000063A5, - 7620: 0x00006377, - 7621: 0x00006367, - 7622: 0x00006398, - 7623: 0x000063AA, - 7624: 0x00006371, - 7625: 0x000063A9, - 7626: 0x00006389, - 7627: 0x00006383, - 7628: 0x0000639B, - 7629: 0x0000636B, - 7630: 0x000063A8, - 7631: 0x00006384, - 7632: 0x00006388, - 7633: 0x00006399, - 7634: 0x000063A1, - 7635: 0x000063AC, - 7636: 0x00006392, - 7637: 0x0000638F, - 7638: 0x00006380, - 7639: 0x0000637B, - 7640: 0x00006369, - 7641: 0x00006368, - 7642: 0x0000637A, - 7643: 0x0000655D, - 7644: 0x00006556, - 7645: 0x00006551, - 7646: 0x00006559, - 7647: 0x00006557, - 7648: 0x0000555F, - 7649: 0x0000654F, - 7650: 0x00006558, - 7651: 0x00006555, - 7652: 0x00006554, - 7653: 0x0000659C, - 7654: 0x0000659B, - 7655: 0x000065AC, - 7656: 0x000065CF, - 7657: 0x000065CB, - 7658: 0x000065CC, - 7659: 0x000065CE, - 7660: 0x0000665D, - 7661: 0x0000665A, - 7662: 0x00006664, - 7663: 0x00006668, - 7664: 0x00006666, - 7665: 0x0000665E, - 7666: 0x000066F9, - 7667: 0x000052D7, - 7668: 0x0000671B, - 7669: 0x00006881, - 7670: 0x000068AF, - 7671: 0x000068A2, - 7672: 0x00006893, - 7673: 0x000068B5, - 7674: 0x0000687F, - 7675: 0x00006876, - 7676: 0x000068B1, - 7677: 0x000068A7, - 7678: 0x00006897, - 7679: 0x000068B0, - 7680: 0x00006883, - 7681: 0x000068C4, - 7682: 0x000068AD, - 7683: 0x00006886, - 7684: 0x00006885, - 7685: 0x00006894, - 7686: 0x0000689D, - 7687: 0x000068A8, - 7688: 0x0000689F, - 7689: 0x000068A1, - 7690: 0x00006882, - 7691: 0x00006B32, - 7692: 0x00006BBA, - 7693: 0x00006BEB, - 7694: 0x00006BEC, - 7695: 0x00006C2B, - 7696: 0x00006D8E, - 7697: 0x00006DBC, - 7698: 0x00006DF3, - 7699: 0x00006DD9, - 7700: 0x00006DB2, - 7701: 0x00006DE1, - 7702: 0x00006DCC, - 7703: 0x00006DE4, - 7704: 0x00006DFB, - 7705: 0x00006DFA, - 7706: 0x00006E05, - 7707: 0x00006DC7, - 7708: 0x00006DCB, - 7709: 0x00006DAF, - 7710: 0x00006DD1, - 7711: 0x00006DAE, - 7712: 0x00006DDE, - 7713: 0x00006DF9, - 7714: 0x00006DB8, - 7715: 0x00006DF7, - 7716: 0x00006DF5, - 7717: 0x00006DC5, - 7718: 0x00006DD2, - 7719: 0x00006E1A, - 7720: 0x00006DB5, - 7721: 0x00006DDA, - 7722: 0x00006DEB, - 7723: 0x00006DD8, - 7724: 0x00006DEA, - 7725: 0x00006DF1, - 7726: 0x00006DEE, - 7727: 0x00006DE8, - 7728: 0x00006DC6, - 7729: 0x00006DC4, - 7730: 0x00006DAA, - 7731: 0x00006DEC, - 7732: 0x00006DBF, - 7733: 0x00006DE6, - 7734: 0x000070F9, - 7735: 0x00007109, - 7736: 0x0000710A, - 7737: 0x000070FD, - 7738: 0x000070EF, - 7739: 0x0000723D, - 7740: 0x0000727D, - 7741: 0x00007281, - 7742: 0x0000731C, - 7743: 0x0000731B, - 7744: 0x00007316, - 7745: 0x00007313, - 7746: 0x00007319, - 7747: 0x00007387, - 7748: 0x00007405, - 7749: 0x0000740A, - 7750: 0x00007403, - 7751: 0x00007406, - 7752: 0x000073FE, - 7753: 0x0000740D, - 7754: 0x000074E0, - 7755: 0x000074F6, - 7756: 0x000074F7, - 7757: 0x0000751C, - 7758: 0x00007522, - 7759: 0x00007565, - 7760: 0x00007566, - 7761: 0x00007562, - 7762: 0x00007570, - 7763: 0x0000758F, - 7764: 0x000075D4, - 7765: 0x000075D5, - 7766: 0x000075B5, - 7767: 0x000075CA, - 7768: 0x000075CD, - 7769: 0x0000768E, - 7770: 0x000076D4, - 7771: 0x000076D2, - 7772: 0x000076DB, - 7773: 0x00007737, - 7774: 0x0000773E, - 7775: 0x0000773C, - 7776: 0x00007736, - 7777: 0x00007738, - 7778: 0x0000773A, - 7779: 0x0000786B, - 7780: 0x00007843, - 7781: 0x0000784E, - 7782: 0x00007965, - 7783: 0x00007968, - 7784: 0x0000796D, - 7785: 0x000079FB, - 7786: 0x00007A92, - 7787: 0x00007A95, - 7788: 0x00007B20, - 7789: 0x00007B28, - 7790: 0x00007B1B, - 7791: 0x00007B2C, - 7792: 0x00007B26, - 7793: 0x00007B19, - 7794: 0x00007B1E, - 7795: 0x00007B2E, - 7796: 0x00007C92, - 7797: 0x00007C97, - 7798: 0x00007C95, - 7799: 0x00007D46, - 7800: 0x00007D43, - 7801: 0x00007D71, - 7802: 0x00007D2E, - 7803: 0x00007D39, - 7804: 0x00007D3C, - 7805: 0x00007D40, - 7806: 0x00007D30, - 7807: 0x00007D33, - 7808: 0x00007D44, - 7809: 0x00007D2F, - 7810: 0x00007D42, - 7811: 0x00007D32, - 7812: 0x00007D31, - 7813: 0x00007F3D, - 7814: 0x00007F9E, - 7815: 0x00007F9A, - 7816: 0x00007FCC, - 7817: 0x00007FCE, - 7818: 0x00007FD2, - 7819: 0x0000801C, - 7820: 0x0000804A, - 7821: 0x00008046, - 7822: 0x0000812F, - 7823: 0x00008116, - 7824: 0x00008123, - 7825: 0x0000812B, - 7826: 0x00008129, - 7827: 0x00008130, - 7828: 0x00008124, - 7829: 0x00008202, - 7830: 0x00008235, - 7831: 0x00008237, - 7832: 0x00008236, - 7833: 0x00008239, - 7834: 0x0000838E, - 7835: 0x0000839E, - 7836: 0x00008398, - 7837: 0x00008378, - 7838: 0x000083A2, - 7839: 0x00008396, - 7840: 0x000083BD, - 7841: 0x000083AB, - 7842: 0x00008392, - 7843: 0x0000838A, - 7844: 0x00008393, - 7845: 0x00008389, - 7846: 0x000083A0, - 7847: 0x00008377, - 7848: 0x0000837B, - 7849: 0x0000837C, - 7850: 0x00008386, - 7851: 0x000083A7, - 7852: 0x00008655, - 7853: 0x00005F6A, - 7854: 0x000086C7, - 7855: 0x000086C0, - 7856: 0x000086B6, - 7857: 0x000086C4, - 7858: 0x000086B5, - 7859: 0x000086C6, - 7860: 0x000086CB, - 7861: 0x000086B1, - 7862: 0x000086AF, - 7863: 0x000086C9, - 7864: 0x00008853, - 7865: 0x0000889E, - 7866: 0x00008888, - 7867: 0x000088AB, - 7868: 0x00008892, - 7869: 0x00008896, - 7870: 0x0000888D, - 7871: 0x0000888B, - 7872: 0x00008993, - 7873: 0x0000898F, - 7874: 0x00008A2A, - 7875: 0x00008A1D, - 7876: 0x00008A23, - 7877: 0x00008A25, - 7878: 0x00008A31, - 7879: 0x00008A2D, - 7880: 0x00008A1F, - 7881: 0x00008A1B, - 7882: 0x00008A22, - 7883: 0x00008C49, - 7884: 0x00008C5A, - 7885: 0x00008CA9, - 7886: 0x00008CAC, - 7887: 0x00008CAB, - 7888: 0x00008CA8, - 7889: 0x00008CAA, - 7890: 0x00008CA7, - 7891: 0x00008D67, - 7892: 0x00008D66, - 7893: 0x00008DBE, - 7894: 0x00008DBA, - 7895: 0x00008EDB, - 7896: 0x00008EDF, - 7897: 0x00009019, - 7898: 0x0000900D, - 7899: 0x0000901A, - 7900: 0x00009017, - 7901: 0x00009023, - 7902: 0x0000901F, - 7903: 0x0000901D, - 7904: 0x00009010, - 7905: 0x00009015, - 7906: 0x0000901E, - 7907: 0x00009020, - 7908: 0x0000900F, - 7909: 0x00009022, - 7910: 0x00009016, - 7911: 0x0000901B, - 7912: 0x00009014, - 7913: 0x000090E8, - 7914: 0x000090ED, - 7915: 0x000090FD, - 7916: 0x00009157, - 7917: 0x000091CE, - 7918: 0x000091F5, - 7919: 0x000091E6, - 7920: 0x000091E3, - 7921: 0x000091E7, - 7922: 0x000091ED, - 7923: 0x000091E9, - 7924: 0x00009589, - 7925: 0x0000966A, - 7926: 0x00009675, - 7927: 0x00009673, - 7928: 0x00009678, - 7929: 0x00009670, - 7930: 0x00009674, - 7931: 0x00009676, - 7932: 0x00009677, - 7933: 0x0000966C, - 7934: 0x000096C0, - 7935: 0x000096EA, - 7936: 0x000096E9, - 7937: 0x00007AE0, - 7938: 0x00007ADF, - 7939: 0x00009802, - 7940: 0x00009803, - 7941: 0x00009B5A, - 7942: 0x00009CE5, - 7943: 0x00009E75, - 7944: 0x00009E7F, - 7945: 0x00009EA5, - 7946: 0x00009EBB, - 7947: 0x000050A2, - 7948: 0x0000508D, - 7949: 0x00005085, - 7950: 0x00005099, - 7951: 0x00005091, - 7952: 0x00005080, - 7953: 0x00005096, - 7954: 0x00005098, - 7955: 0x0000509A, - 7956: 0x00006700, - 7957: 0x000051F1, - 7958: 0x00005272, - 7959: 0x00005274, - 7960: 0x00005275, - 7961: 0x00005269, - 7962: 0x000052DE, - 7963: 0x000052DD, - 7964: 0x000052DB, - 7965: 0x0000535A, - 7966: 0x000053A5, - 7967: 0x0000557B, - 7968: 0x00005580, - 7969: 0x000055A7, - 7970: 0x0000557C, - 7971: 0x0000558A, - 7972: 0x0000559D, - 7973: 0x00005598, - 7974: 0x00005582, - 7975: 0x0000559C, - 7976: 0x000055AA, - 7977: 0x00005594, - 7978: 0x00005587, - 7979: 0x0000558B, - 7980: 0x00005583, - 7981: 0x000055B3, - 7982: 0x000055AE, - 7983: 0x0000559F, - 7984: 0x0000553E, - 7985: 0x000055B2, - 7986: 0x0000559A, - 7987: 0x000055BB, - 7988: 0x000055AC, - 7989: 0x000055B1, - 7990: 0x0000557E, - 7991: 0x00005589, - 7992: 0x000055AB, - 7993: 0x00005599, - 7994: 0x0000570D, - 7995: 0x0000582F, - 7996: 0x0000582A, - 7997: 0x00005834, - 7998: 0x00005824, - 7999: 0x00005830, - 8000: 0x00005831, - 8001: 0x00005821, - 8002: 0x0000581D, - 8003: 0x00005820, - 8004: 0x000058F9, - 8005: 0x000058FA, - 8006: 0x00005960, - 8007: 0x00005A77, - 8008: 0x00005A9A, - 8009: 0x00005A7F, - 8010: 0x00005A92, - 8011: 0x00005A9B, - 8012: 0x00005AA7, - 8013: 0x00005B73, - 8014: 0x00005B71, - 8015: 0x00005BD2, - 8016: 0x00005BCC, - 8017: 0x00005BD3, - 8018: 0x00005BD0, - 8019: 0x00005C0A, - 8020: 0x00005C0B, - 8021: 0x00005C31, - 8022: 0x00005D4C, - 8023: 0x00005D50, - 8024: 0x00005D34, - 8025: 0x00005D47, - 8026: 0x00005DFD, - 8027: 0x00005E45, - 8028: 0x00005E3D, - 8029: 0x00005E40, - 8030: 0x00005E43, - 8031: 0x00005E7E, - 8032: 0x00005ECA, - 8033: 0x00005EC1, - 8034: 0x00005EC2, - 8035: 0x00005EC4, - 8036: 0x00005F3C, - 8037: 0x00005F6D, - 8038: 0x00005FA9, - 8039: 0x00005FAA, - 8040: 0x00005FA8, - 8041: 0x000060D1, - 8042: 0x000060E1, - 8043: 0x000060B2, - 8044: 0x000060B6, - 8045: 0x000060E0, - 8046: 0x0000611C, - 8047: 0x00006123, - 8048: 0x000060FA, - 8049: 0x00006115, - 8050: 0x000060F0, - 8051: 0x000060FB, - 8052: 0x000060F4, - 8053: 0x00006168, - 8054: 0x000060F1, - 8055: 0x0000610E, - 8056: 0x000060F6, - 8057: 0x00006109, - 8058: 0x00006100, - 8059: 0x00006112, - 8060: 0x0000621F, - 8061: 0x00006249, - 8062: 0x000063A3, - 8063: 0x0000638C, - 8064: 0x000063CF, - 8065: 0x000063C0, - 8066: 0x000063E9, - 8067: 0x000063C9, - 8068: 0x000063C6, - 8069: 0x000063CD, - 8070: 0x000063D2, - 8071: 0x000063E3, - 8072: 0x000063D0, - 8073: 0x000063E1, - 8074: 0x000063D6, - 8075: 0x000063ED, - 8076: 0x000063EE, - 8077: 0x00006376, - 8078: 0x000063F4, - 8079: 0x000063EA, - 8080: 0x000063DB, - 8081: 0x00006452, - 8082: 0x000063DA, - 8083: 0x000063F9, - 8084: 0x0000655E, - 8085: 0x00006566, - 8086: 0x00006562, - 8087: 0x00006563, - 8088: 0x00006591, - 8089: 0x00006590, - 8090: 0x000065AF, - 8091: 0x0000666E, - 8092: 0x00006670, - 8093: 0x00006674, - 8094: 0x00006676, - 8095: 0x0000666F, - 8096: 0x00006691, - 8097: 0x0000667A, - 8098: 0x0000667E, - 8099: 0x00006677, - 8100: 0x000066FE, - 8101: 0x000066FF, - 8102: 0x0000671F, - 8103: 0x0000671D, - 8104: 0x000068FA, - 8105: 0x000068D5, - 8106: 0x000068E0, - 8107: 0x000068D8, - 8108: 0x000068D7, - 8109: 0x00006905, - 8110: 0x000068DF, - 8111: 0x000068F5, - 8112: 0x000068EE, - 8113: 0x000068E7, - 8114: 0x000068F9, - 8115: 0x000068D2, - 8116: 0x000068F2, - 8117: 0x000068E3, - 8118: 0x000068CB, - 8119: 0x000068CD, - 8120: 0x0000690D, - 8121: 0x00006912, - 8122: 0x0000690E, - 8123: 0x000068C9, - 8124: 0x000068DA, - 8125: 0x0000696E, - 8126: 0x000068FB, - 8127: 0x00006B3E, - 8128: 0x00006B3A, - 8129: 0x00006B3D, - 8130: 0x00006B98, - 8131: 0x00006B96, - 8132: 0x00006BBC, - 8133: 0x00006BEF, - 8134: 0x00006C2E, - 8135: 0x00006C2F, - 8136: 0x00006C2C, - 8137: 0x00006E2F, - 8138: 0x00006E38, - 8139: 0x00006E54, - 8140: 0x00006E21, - 8141: 0x00006E32, - 8142: 0x00006E67, - 8143: 0x00006E4A, - 8144: 0x00006E20, - 8145: 0x00006E25, - 8146: 0x00006E23, - 8147: 0x00006E1B, - 8148: 0x00006E5B, - 8149: 0x00006E58, - 8150: 0x00006E24, - 8151: 0x00006E56, - 8152: 0x00006E6E, - 8153: 0x00006E2D, - 8154: 0x00006E26, - 8155: 0x00006E6F, - 8156: 0x00006E34, - 8157: 0x00006E4D, - 8158: 0x00006E3A, - 8159: 0x00006E2C, - 8160: 0x00006E43, - 8161: 0x00006E1D, - 8162: 0x00006E3E, - 8163: 0x00006ECB, - 8164: 0x00006E89, - 8165: 0x00006E19, - 8166: 0x00006E4E, - 8167: 0x00006E63, - 8168: 0x00006E44, - 8169: 0x00006E72, - 8170: 0x00006E69, - 8171: 0x00006E5F, - 8172: 0x00007119, - 8173: 0x0000711A, - 8174: 0x00007126, - 8175: 0x00007130, - 8176: 0x00007121, - 8177: 0x00007136, - 8178: 0x0000716E, - 8179: 0x0000711C, - 8180: 0x0000724C, - 8181: 0x00007284, - 8182: 0x00007280, - 8183: 0x00007336, - 8184: 0x00007325, - 8185: 0x00007334, - 8186: 0x00007329, - 8187: 0x0000743A, - 8188: 0x0000742A, - 8189: 0x00007433, - 8190: 0x00007422, - 8191: 0x00007425, - 8192: 0x00007435, - 8193: 0x00007436, - 8194: 0x00007434, - 8195: 0x0000742F, - 8196: 0x0000741B, - 8197: 0x00007426, - 8198: 0x00007428, - 8199: 0x00007525, - 8200: 0x00007526, - 8201: 0x0000756B, - 8202: 0x0000756A, - 8203: 0x000075E2, - 8204: 0x000075DB, - 8205: 0x000075E3, - 8206: 0x000075D9, - 8207: 0x000075D8, - 8208: 0x000075DE, - 8209: 0x000075E0, - 8210: 0x0000767B, - 8211: 0x0000767C, - 8212: 0x00007696, - 8213: 0x00007693, - 8214: 0x000076B4, - 8215: 0x000076DC, - 8216: 0x0000774F, - 8217: 0x000077ED, - 8218: 0x0000785D, - 8219: 0x0000786C, - 8220: 0x0000786F, - 8221: 0x00007A0D, - 8222: 0x00007A08, - 8223: 0x00007A0B, - 8224: 0x00007A05, - 8225: 0x00007A00, - 8226: 0x00007A98, - 8227: 0x00007A97, - 8228: 0x00007A96, - 8229: 0x00007AE5, - 8230: 0x00007AE3, - 8231: 0x00007B49, - 8232: 0x00007B56, - 8233: 0x00007B46, - 8234: 0x00007B50, - 8235: 0x00007B52, - 8236: 0x00007B54, - 8237: 0x00007B4D, - 8238: 0x00007B4B, - 8239: 0x00007B4F, - 8240: 0x00007B51, - 8241: 0x00007C9F, - 8242: 0x00007CA5, - 8243: 0x00007D5E, - 8244: 0x00007D50, - 8245: 0x00007D68, - 8246: 0x00007D55, - 8247: 0x00007D2B, - 8248: 0x00007D6E, - 8249: 0x00007D72, - 8250: 0x00007D61, - 8251: 0x00007D66, - 8252: 0x00007D62, - 8253: 0x00007D70, - 8254: 0x00007D73, - 8255: 0x00005584, - 8256: 0x00007FD4, - 8257: 0x00007FD5, - 8258: 0x0000800B, - 8259: 0x00008052, - 8260: 0x00008085, - 8261: 0x00008155, - 8262: 0x00008154, - 8263: 0x0000814B, - 8264: 0x00008151, - 8265: 0x0000814E, - 8266: 0x00008139, - 8267: 0x00008146, - 8268: 0x0000813E, - 8269: 0x0000814C, - 8270: 0x00008153, - 8271: 0x00008174, - 8272: 0x00008212, - 8273: 0x0000821C, - 8274: 0x000083E9, - 8275: 0x00008403, - 8276: 0x000083F8, - 8277: 0x0000840D, - 8278: 0x000083E0, - 8279: 0x000083C5, - 8280: 0x0000840B, - 8281: 0x000083C1, - 8282: 0x000083EF, - 8283: 0x000083F1, - 8284: 0x000083F4, - 8285: 0x00008457, - 8286: 0x0000840A, - 8287: 0x000083F0, - 8288: 0x0000840C, - 8289: 0x000083CC, - 8290: 0x000083FD, - 8291: 0x000083F2, - 8292: 0x000083CA, - 8293: 0x00008438, - 8294: 0x0000840E, - 8295: 0x00008404, - 8296: 0x000083DC, - 8297: 0x00008407, - 8298: 0x000083D4, - 8299: 0x000083DF, - 8300: 0x0000865B, - 8301: 0x000086DF, - 8302: 0x000086D9, - 8303: 0x000086ED, - 8304: 0x000086D4, - 8305: 0x000086DB, - 8306: 0x000086E4, - 8307: 0x000086D0, - 8308: 0x000086DE, - 8309: 0x00008857, - 8310: 0x000088C1, - 8311: 0x000088C2, - 8312: 0x000088B1, - 8313: 0x00008983, - 8314: 0x00008996, - 8315: 0x00008A3B, - 8316: 0x00008A60, - 8317: 0x00008A55, - 8318: 0x00008A5E, - 8319: 0x00008A3C, - 8320: 0x00008A41, - 8321: 0x00008A54, - 8322: 0x00008A5B, - 8323: 0x00008A50, - 8324: 0x00008A46, - 8325: 0x00008A34, - 8326: 0x00008A3A, - 8327: 0x00008A36, - 8328: 0x00008A56, - 8329: 0x00008C61, - 8330: 0x00008C82, - 8331: 0x00008CAF, - 8332: 0x00008CBC, - 8333: 0x00008CB3, - 8334: 0x00008CBD, - 8335: 0x00008CC1, - 8336: 0x00008CBB, - 8337: 0x00008CC0, - 8338: 0x00008CB4, - 8339: 0x00008CB7, - 8340: 0x00008CB6, - 8341: 0x00008CBF, - 8342: 0x00008CB8, - 8343: 0x00008D8A, - 8344: 0x00008D85, - 8345: 0x00008D81, - 8346: 0x00008DCE, - 8347: 0x00008DDD, - 8348: 0x00008DCB, - 8349: 0x00008DDA, - 8350: 0x00008DD1, - 8351: 0x00008DCC, - 8352: 0x00008DDB, - 8353: 0x00008DC6, - 8354: 0x00008EFB, - 8355: 0x00008EF8, - 8356: 0x00008EFC, - 8357: 0x00008F9C, - 8358: 0x0000902E, - 8359: 0x00009035, - 8360: 0x00009031, - 8361: 0x00009038, - 8362: 0x00009032, - 8363: 0x00009036, - 8364: 0x00009102, - 8365: 0x000090F5, - 8366: 0x00009109, - 8367: 0x000090FE, - 8368: 0x00009163, - 8369: 0x00009165, - 8370: 0x000091CF, - 8371: 0x00009214, - 8372: 0x00009215, - 8373: 0x00009223, - 8374: 0x00009209, - 8375: 0x0000921E, - 8376: 0x0000920D, - 8377: 0x00009210, - 8378: 0x00009207, - 8379: 0x00009211, - 8380: 0x00009594, - 8381: 0x0000958F, - 8382: 0x0000958B, - 8383: 0x00009591, - 8384: 0x00009593, - 8385: 0x00009592, - 8386: 0x0000958E, - 8387: 0x0000968A, - 8388: 0x0000968E, - 8389: 0x0000968B, - 8390: 0x0000967D, - 8391: 0x00009685, - 8392: 0x00009686, - 8393: 0x0000968D, - 8394: 0x00009672, - 8395: 0x00009684, - 8396: 0x000096C1, - 8397: 0x000096C5, - 8398: 0x000096C4, - 8399: 0x000096C6, - 8400: 0x000096C7, - 8401: 0x000096EF, - 8402: 0x000096F2, - 8403: 0x000097CC, - 8404: 0x00009805, - 8405: 0x00009806, - 8406: 0x00009808, - 8407: 0x000098E7, - 8408: 0x000098EA, - 8409: 0x000098EF, - 8410: 0x000098E9, - 8411: 0x000098F2, - 8412: 0x000098ED, - 8413: 0x000099AE, - 8414: 0x000099AD, - 8415: 0x00009EC3, - 8416: 0x00009ECD, - 8417: 0x00009ED1, - 8418: 0x00004E82, - 8419: 0x000050AD, - 8420: 0x000050B5, - 8421: 0x000050B2, - 8422: 0x000050B3, - 8423: 0x000050C5, - 8424: 0x000050BE, - 8425: 0x000050AC, - 8426: 0x000050B7, - 8427: 0x000050BB, - 8428: 0x000050AF, - 8429: 0x000050C7, - 8430: 0x0000527F, - 8431: 0x00005277, - 8432: 0x0000527D, - 8433: 0x000052DF, - 8434: 0x000052E6, - 8435: 0x000052E4, - 8436: 0x000052E2, - 8437: 0x000052E3, - 8438: 0x0000532F, - 8439: 0x000055DF, - 8440: 0x000055E8, - 8441: 0x000055D3, - 8442: 0x000055E6, - 8443: 0x000055CE, - 8444: 0x000055DC, - 8445: 0x000055C7, - 8446: 0x000055D1, - 8447: 0x000055E3, - 8448: 0x000055E4, - 8449: 0x000055EF, - 8450: 0x000055DA, - 8451: 0x000055E1, - 8452: 0x000055C5, - 8453: 0x000055C6, - 8454: 0x000055E5, - 8455: 0x000055C9, - 8456: 0x00005712, - 8457: 0x00005713, - 8458: 0x0000585E, - 8459: 0x00005851, - 8460: 0x00005858, - 8461: 0x00005857, - 8462: 0x0000585A, - 8463: 0x00005854, - 8464: 0x0000586B, - 8465: 0x0000584C, - 8466: 0x0000586D, - 8467: 0x0000584A, - 8468: 0x00005862, - 8469: 0x00005852, - 8470: 0x0000584B, - 8471: 0x00005967, - 8472: 0x00005AC1, - 8473: 0x00005AC9, - 8474: 0x00005ACC, - 8475: 0x00005ABE, - 8476: 0x00005ABD, - 8477: 0x00005ABC, - 8478: 0x00005AB3, - 8479: 0x00005AC2, - 8480: 0x00005AB2, - 8481: 0x00005D69, - 8482: 0x00005D6F, - 8483: 0x00005E4C, - 8484: 0x00005E79, - 8485: 0x00005EC9, - 8486: 0x00005EC8, - 8487: 0x00005F12, - 8488: 0x00005F59, - 8489: 0x00005FAC, - 8490: 0x00005FAE, - 8491: 0x0000611A, - 8492: 0x0000610F, - 8493: 0x00006148, - 8494: 0x0000611F, - 8495: 0x000060F3, - 8496: 0x0000611B, - 8497: 0x000060F9, - 8498: 0x00006101, - 8499: 0x00006108, - 8500: 0x0000614E, - 8501: 0x0000614C, - 8502: 0x00006144, - 8503: 0x0000614D, - 8504: 0x0000613E, - 8505: 0x00006134, - 8506: 0x00006127, - 8507: 0x0000610D, - 8508: 0x00006106, - 8509: 0x00006137, - 8510: 0x00006221, - 8511: 0x00006222, - 8512: 0x00006413, - 8513: 0x0000643E, - 8514: 0x0000641E, - 8515: 0x0000642A, - 8516: 0x0000642D, - 8517: 0x0000643D, - 8518: 0x0000642C, - 8519: 0x0000640F, - 8520: 0x0000641C, - 8521: 0x00006414, - 8522: 0x0000640D, - 8523: 0x00006436, - 8524: 0x00006416, - 8525: 0x00006417, - 8526: 0x00006406, - 8527: 0x0000656C, - 8528: 0x0000659F, - 8529: 0x000065B0, - 8530: 0x00006697, - 8531: 0x00006689, - 8532: 0x00006687, - 8533: 0x00006688, - 8534: 0x00006696, - 8535: 0x00006684, - 8536: 0x00006698, - 8537: 0x0000668D, - 8538: 0x00006703, - 8539: 0x00006994, - 8540: 0x0000696D, - 8541: 0x0000695A, - 8542: 0x00006977, - 8543: 0x00006960, - 8544: 0x00006954, - 8545: 0x00006975, - 8546: 0x00006930, - 8547: 0x00006982, - 8548: 0x0000694A, - 8549: 0x00006968, - 8550: 0x0000696B, - 8551: 0x0000695E, - 8552: 0x00006953, - 8553: 0x00006979, - 8554: 0x00006986, - 8555: 0x0000695D, - 8556: 0x00006963, - 8557: 0x0000695B, - 8558: 0x00006B47, - 8559: 0x00006B72, - 8560: 0x00006BC0, - 8561: 0x00006BBF, - 8562: 0x00006BD3, - 8563: 0x00006BFD, - 8564: 0x00006EA2, - 8565: 0x00006EAF, - 8566: 0x00006ED3, - 8567: 0x00006EB6, - 8568: 0x00006EC2, - 8569: 0x00006E90, - 8570: 0x00006E9D, - 8571: 0x00006EC7, - 8572: 0x00006EC5, - 8573: 0x00006EA5, - 8574: 0x00006E98, - 8575: 0x00006EBC, - 8576: 0x00006EBA, - 8577: 0x00006EAB, - 8578: 0x00006ED1, - 8579: 0x00006E96, - 8580: 0x00006E9C, - 8581: 0x00006EC4, - 8582: 0x00006ED4, - 8583: 0x00006EAA, - 8584: 0x00006EA7, - 8585: 0x00006EB4, - 8586: 0x0000714E, - 8587: 0x00007159, - 8588: 0x00007169, - 8589: 0x00007164, - 8590: 0x00007149, - 8591: 0x00007167, - 8592: 0x0000715C, - 8593: 0x0000716C, - 8594: 0x00007166, - 8595: 0x0000714C, - 8596: 0x00007165, - 8597: 0x0000715E, - 8598: 0x00007146, - 8599: 0x00007168, - 8600: 0x00007156, - 8601: 0x0000723A, - 8602: 0x00007252, - 8603: 0x00007337, - 8604: 0x00007345, - 8605: 0x0000733F, - 8606: 0x0000733E, - 8607: 0x0000746F, - 8608: 0x0000745A, - 8609: 0x00007455, - 8610: 0x0000745F, - 8611: 0x0000745E, - 8612: 0x00007441, - 8613: 0x0000743F, - 8614: 0x00007459, - 8615: 0x0000745B, - 8616: 0x0000745C, - 8617: 0x00007576, - 8618: 0x00007578, - 8619: 0x00007600, - 8620: 0x000075F0, - 8621: 0x00007601, - 8622: 0x000075F2, - 8623: 0x000075F1, - 8624: 0x000075FA, - 8625: 0x000075FF, - 8626: 0x000075F4, - 8627: 0x000075F3, - 8628: 0x000076DE, - 8629: 0x000076DF, - 8630: 0x0000775B, - 8631: 0x0000776B, - 8632: 0x00007766, - 8633: 0x0000775E, - 8634: 0x00007763, - 8635: 0x00007779, - 8636: 0x0000776A, - 8637: 0x0000776C, - 8638: 0x0000775C, - 8639: 0x00007765, - 8640: 0x00007768, - 8641: 0x00007762, - 8642: 0x000077EE, - 8643: 0x0000788E, - 8644: 0x000078B0, - 8645: 0x00007897, - 8646: 0x00007898, - 8647: 0x0000788C, - 8648: 0x00007889, - 8649: 0x0000787C, - 8650: 0x00007891, - 8651: 0x00007893, - 8652: 0x0000787F, - 8653: 0x0000797A, - 8654: 0x0000797F, - 8655: 0x00007981, - 8656: 0x0000842C, - 8657: 0x000079BD, - 8658: 0x00007A1C, - 8659: 0x00007A1A, - 8660: 0x00007A20, - 8661: 0x00007A14, - 8662: 0x00007A1F, - 8663: 0x00007A1E, - 8664: 0x00007A9F, - 8665: 0x00007AA0, - 8666: 0x00007B77, - 8667: 0x00007BC0, - 8668: 0x00007B60, - 8669: 0x00007B6E, - 8670: 0x00007B67, - 8671: 0x00007CB1, - 8672: 0x00007CB3, - 8673: 0x00007CB5, - 8674: 0x00007D93, - 8675: 0x00007D79, - 8676: 0x00007D91, - 8677: 0x00007D81, - 8678: 0x00007D8F, - 8679: 0x00007D5B, - 8680: 0x00007F6E, - 8681: 0x00007F69, - 8682: 0x00007F6A, - 8683: 0x00007F72, - 8684: 0x00007FA9, - 8685: 0x00007FA8, - 8686: 0x00007FA4, - 8687: 0x00008056, - 8688: 0x00008058, - 8689: 0x00008086, - 8690: 0x00008084, - 8691: 0x00008171, - 8692: 0x00008170, - 8693: 0x00008178, - 8694: 0x00008165, - 8695: 0x0000816E, - 8696: 0x00008173, - 8697: 0x0000816B, - 8698: 0x00008179, - 8699: 0x0000817A, - 8700: 0x00008166, - 8701: 0x00008205, - 8702: 0x00008247, - 8703: 0x00008482, - 8704: 0x00008477, - 8705: 0x0000843D, - 8706: 0x00008431, - 8707: 0x00008475, - 8708: 0x00008466, - 8709: 0x0000846B, - 8710: 0x00008449, - 8711: 0x0000846C, - 8712: 0x0000845B, - 8713: 0x0000843C, - 8714: 0x00008435, - 8715: 0x00008461, - 8716: 0x00008463, - 8717: 0x00008469, - 8718: 0x0000846D, - 8719: 0x00008446, - 8720: 0x0000865E, - 8721: 0x0000865C, - 8722: 0x0000865F, - 8723: 0x000086F9, - 8724: 0x00008713, - 8725: 0x00008708, - 8726: 0x00008707, - 8727: 0x00008700, - 8728: 0x000086FE, - 8729: 0x000086FB, - 8730: 0x00008702, - 8731: 0x00008703, - 8732: 0x00008706, - 8733: 0x0000870A, - 8734: 0x00008859, - 8735: 0x000088DF, - 8736: 0x000088D4, - 8737: 0x000088D9, - 8738: 0x000088DC, - 8739: 0x000088D8, - 8740: 0x000088DD, - 8741: 0x000088E1, - 8742: 0x000088CA, - 8743: 0x000088D5, - 8744: 0x000088D2, - 8745: 0x0000899C, - 8746: 0x000089E3, - 8747: 0x00008A6B, - 8748: 0x00008A72, - 8749: 0x00008A73, - 8750: 0x00008A66, - 8751: 0x00008A69, - 8752: 0x00008A70, - 8753: 0x00008A87, - 8754: 0x00008A7C, - 8755: 0x00008A63, - 8756: 0x00008AA0, - 8757: 0x00008A71, - 8758: 0x00008A85, - 8759: 0x00008A6D, - 8760: 0x00008A62, - 8761: 0x00008A6E, - 8762: 0x00008A6C, - 8763: 0x00008A79, - 8764: 0x00008A7B, - 8765: 0x00008A3E, - 8766: 0x00008A68, - 8767: 0x00008C62, - 8768: 0x00008C8A, - 8769: 0x00008C89, - 8770: 0x00008CCA, - 8771: 0x00008CC7, - 8772: 0x00008CC8, - 8773: 0x00008CC4, - 8774: 0x00008CB2, - 8775: 0x00008CC3, - 8776: 0x00008CC2, - 8777: 0x00008CC5, - 8778: 0x00008DE1, - 8779: 0x00008DDF, - 8780: 0x00008DE8, - 8781: 0x00008DEF, - 8782: 0x00008DF3, - 8783: 0x00008DFA, - 8784: 0x00008DEA, - 8785: 0x00008DE4, - 8786: 0x00008DE6, - 8787: 0x00008EB2, - 8788: 0x00008F03, - 8789: 0x00008F09, - 8790: 0x00008EFE, - 8791: 0x00008F0A, - 8792: 0x00008F9F, - 8793: 0x00008FB2, - 8794: 0x0000904B, - 8795: 0x0000904A, - 8796: 0x00009053, - 8797: 0x00009042, - 8798: 0x00009054, - 8799: 0x0000903C, - 8800: 0x00009055, - 8801: 0x00009050, - 8802: 0x00009047, - 8803: 0x0000904F, - 8804: 0x0000904E, - 8805: 0x0000904D, - 8806: 0x00009051, - 8807: 0x0000903E, - 8808: 0x00009041, - 8809: 0x00009112, - 8810: 0x00009117, - 8811: 0x0000916C, - 8812: 0x0000916A, - 8813: 0x00009169, - 8814: 0x000091C9, - 8815: 0x00009237, - 8816: 0x00009257, - 8817: 0x00009238, - 8818: 0x0000923D, - 8819: 0x00009240, - 8820: 0x0000923E, - 8821: 0x0000925B, - 8822: 0x0000924B, - 8823: 0x00009264, - 8824: 0x00009251, - 8825: 0x00009234, - 8826: 0x00009249, - 8827: 0x0000924D, - 8828: 0x00009245, - 8829: 0x00009239, - 8830: 0x0000923F, - 8831: 0x0000925A, - 8832: 0x00009598, - 8833: 0x00009698, - 8834: 0x00009694, - 8835: 0x00009695, - 8836: 0x000096CD, - 8837: 0x000096CB, - 8838: 0x000096C9, - 8839: 0x000096CA, - 8840: 0x000096F7, - 8841: 0x000096FB, - 8842: 0x000096F9, - 8843: 0x000096F6, - 8844: 0x00009756, - 8845: 0x00009774, - 8846: 0x00009776, - 8847: 0x00009810, - 8848: 0x00009811, - 8849: 0x00009813, - 8850: 0x0000980A, - 8851: 0x00009812, - 8852: 0x0000980C, - 8853: 0x000098FC, - 8854: 0x000098F4, - 8855: 0x000098FD, - 8856: 0x000098FE, - 8857: 0x000099B3, - 8858: 0x000099B1, - 8859: 0x000099B4, - 8860: 0x00009AE1, - 8861: 0x00009CE9, - 8862: 0x00009E82, - 8863: 0x00009F0E, - 8864: 0x00009F13, - 8865: 0x00009F20, - 8866: 0x000050E7, - 8867: 0x000050EE, - 8868: 0x000050E5, - 8869: 0x000050D6, - 8870: 0x000050ED, - 8871: 0x000050DA, - 8872: 0x000050D5, - 8873: 0x000050CF, - 8874: 0x000050D1, - 8875: 0x000050F1, - 8876: 0x000050CE, - 8877: 0x000050E9, - 8878: 0x00005162, - 8879: 0x000051F3, - 8880: 0x00005283, - 8881: 0x00005282, - 8882: 0x00005331, - 8883: 0x000053AD, - 8884: 0x000055FE, - 8885: 0x00005600, - 8886: 0x0000561B, - 8887: 0x00005617, - 8888: 0x000055FD, - 8889: 0x00005614, - 8890: 0x00005606, - 8891: 0x00005609, - 8892: 0x0000560D, - 8893: 0x0000560E, - 8894: 0x000055F7, - 8895: 0x00005616, - 8896: 0x0000561F, - 8897: 0x00005608, - 8898: 0x00005610, - 8899: 0x000055F6, - 8900: 0x00005718, - 8901: 0x00005716, - 8902: 0x00005875, - 8903: 0x0000587E, - 8904: 0x00005883, - 8905: 0x00005893, - 8906: 0x0000588A, - 8907: 0x00005879, - 8908: 0x00005885, - 8909: 0x0000587D, - 8910: 0x000058FD, - 8911: 0x00005925, - 8912: 0x00005922, - 8913: 0x00005924, - 8914: 0x0000596A, - 8915: 0x00005969, - 8916: 0x00005AE1, - 8917: 0x00005AE6, - 8918: 0x00005AE9, - 8919: 0x00005AD7, - 8920: 0x00005AD6, - 8921: 0x00005AD8, - 8922: 0x00005AE3, - 8923: 0x00005B75, - 8924: 0x00005BDE, - 8925: 0x00005BE7, - 8926: 0x00005BE1, - 8927: 0x00005BE5, - 8928: 0x00005BE6, - 8929: 0x00005BE8, - 8930: 0x00005BE2, - 8931: 0x00005BE4, - 8932: 0x00005BDF, - 8933: 0x00005C0D, - 8934: 0x00005C62, - 8935: 0x00005D84, - 8936: 0x00005D87, - 8937: 0x00005E5B, - 8938: 0x00005E63, - 8939: 0x00005E55, - 8940: 0x00005E57, - 8941: 0x00005E54, - 8942: 0x00005ED3, - 8943: 0x00005ED6, - 8944: 0x00005F0A, - 8945: 0x00005F46, - 8946: 0x00005F70, - 8947: 0x00005FB9, - 8948: 0x00006147, - 8949: 0x0000613F, - 8950: 0x0000614B, - 8951: 0x00006177, - 8952: 0x00006162, - 8953: 0x00006163, - 8954: 0x0000615F, - 8955: 0x0000615A, - 8956: 0x00006158, - 8957: 0x00006175, - 8958: 0x0000622A, - 8959: 0x00006487, - 8960: 0x00006458, - 8961: 0x00006454, - 8962: 0x000064A4, - 8963: 0x00006478, - 8964: 0x0000645F, - 8965: 0x0000647A, - 8966: 0x00006451, - 8967: 0x00006467, - 8968: 0x00006434, - 8969: 0x0000646D, - 8970: 0x0000647B, - 8971: 0x00006572, - 8972: 0x000065A1, - 8973: 0x000065D7, - 8974: 0x000065D6, - 8975: 0x000066A2, - 8976: 0x000066A8, - 8977: 0x0000669D, - 8978: 0x0000699C, - 8979: 0x000069A8, - 8980: 0x00006995, - 8981: 0x000069C1, - 8982: 0x000069AE, - 8983: 0x000069D3, - 8984: 0x000069CB, - 8985: 0x0000699B, - 8986: 0x000069B7, - 8987: 0x000069BB, - 8988: 0x000069AB, - 8989: 0x000069B4, - 8990: 0x000069D0, - 8991: 0x000069CD, - 8992: 0x000069AD, - 8993: 0x000069CC, - 8994: 0x000069A6, - 8995: 0x000069C3, - 8996: 0x000069A3, - 8997: 0x00006B49, - 8998: 0x00006B4C, - 8999: 0x00006C33, - 9000: 0x00006F33, - 9001: 0x00006F14, - 9002: 0x00006EFE, - 9003: 0x00006F13, - 9004: 0x00006EF4, - 9005: 0x00006F29, - 9006: 0x00006F3E, - 9007: 0x00006F20, - 9008: 0x00006F2C, - 9009: 0x00006F0F, - 9010: 0x00006F02, - 9011: 0x00006F22, - 9012: 0x00006EFF, - 9013: 0x00006EEF, - 9014: 0x00006F06, - 9015: 0x00006F31, - 9016: 0x00006F38, - 9017: 0x00006F32, - 9018: 0x00006F23, - 9019: 0x00006F15, - 9020: 0x00006F2B, - 9021: 0x00006F2F, - 9022: 0x00006F88, - 9023: 0x00006F2A, - 9024: 0x00006EEC, - 9025: 0x00006F01, - 9026: 0x00006EF2, - 9027: 0x00006ECC, - 9028: 0x00006EF7, - 9029: 0x00007194, - 9030: 0x00007199, - 9031: 0x0000717D, - 9032: 0x0000718A, - 9033: 0x00007184, - 9034: 0x00007192, - 9035: 0x0000723E, - 9036: 0x00007292, - 9037: 0x00007296, - 9038: 0x00007344, - 9039: 0x00007350, - 9040: 0x00007464, - 9041: 0x00007463, - 9042: 0x0000746A, - 9043: 0x00007470, - 9044: 0x0000746D, - 9045: 0x00007504, - 9046: 0x00007591, - 9047: 0x00007627, - 9048: 0x0000760D, - 9049: 0x0000760B, - 9050: 0x00007609, - 9051: 0x00007613, - 9052: 0x000076E1, - 9053: 0x000076E3, - 9054: 0x00007784, - 9055: 0x0000777D, - 9056: 0x0000777F, - 9057: 0x00007761, - 9058: 0x000078C1, - 9059: 0x0000789F, - 9060: 0x000078A7, - 9061: 0x000078B3, - 9062: 0x000078A9, - 9063: 0x000078A3, - 9064: 0x0000798E, - 9065: 0x0000798F, - 9066: 0x0000798D, - 9067: 0x00007A2E, - 9068: 0x00007A31, - 9069: 0x00007AAA, - 9070: 0x00007AA9, - 9071: 0x00007AED, - 9072: 0x00007AEF, - 9073: 0x00007BA1, - 9074: 0x00007B95, - 9075: 0x00007B8B, - 9076: 0x00007B75, - 9077: 0x00007B97, - 9078: 0x00007B9D, - 9079: 0x00007B94, - 9080: 0x00007B8F, - 9081: 0x00007BB8, - 9082: 0x00007B87, - 9083: 0x00007B84, - 9084: 0x00007CB9, - 9085: 0x00007CBD, - 9086: 0x00007CBE, - 9087: 0x00007DBB, - 9088: 0x00007DB0, - 9089: 0x00007D9C, - 9090: 0x00007DBD, - 9091: 0x00007DBE, - 9092: 0x00007DA0, - 9093: 0x00007DCA, - 9094: 0x00007DB4, - 9095: 0x00007DB2, - 9096: 0x00007DB1, - 9097: 0x00007DBA, - 9098: 0x00007DA2, - 9099: 0x00007DBF, - 9100: 0x00007DB5, - 9101: 0x00007DB8, - 9102: 0x00007DAD, - 9103: 0x00007DD2, - 9104: 0x00007DC7, - 9105: 0x00007DAC, - 9106: 0x00007F70, - 9107: 0x00007FE0, - 9108: 0x00007FE1, - 9109: 0x00007FDF, - 9110: 0x0000805E, - 9111: 0x0000805A, - 9112: 0x00008087, - 9113: 0x00008150, - 9114: 0x00008180, - 9115: 0x0000818F, - 9116: 0x00008188, - 9117: 0x0000818A, - 9118: 0x0000817F, - 9119: 0x00008182, - 9120: 0x000081E7, - 9121: 0x000081FA, - 9122: 0x00008207, - 9123: 0x00008214, - 9124: 0x0000821E, - 9125: 0x0000824B, - 9126: 0x000084C9, - 9127: 0x000084BF, - 9128: 0x000084C6, - 9129: 0x000084C4, - 9130: 0x00008499, - 9131: 0x0000849E, - 9132: 0x000084B2, - 9133: 0x0000849C, - 9134: 0x000084CB, - 9135: 0x000084B8, - 9136: 0x000084C0, - 9137: 0x000084D3, - 9138: 0x00008490, - 9139: 0x000084BC, - 9140: 0x000084D1, - 9141: 0x000084CA, - 9142: 0x0000873F, - 9143: 0x0000871C, - 9144: 0x0000873B, - 9145: 0x00008722, - 9146: 0x00008725, - 9147: 0x00008734, - 9148: 0x00008718, - 9149: 0x00008755, - 9150: 0x00008737, - 9151: 0x00008729, - 9152: 0x000088F3, - 9153: 0x00008902, - 9154: 0x000088F4, - 9155: 0x000088F9, - 9156: 0x000088F8, - 9157: 0x000088FD, - 9158: 0x000088E8, - 9159: 0x0000891A, - 9160: 0x000088EF, - 9161: 0x00008AA6, - 9162: 0x00008A8C, - 9163: 0x00008A9E, - 9164: 0x00008AA3, - 9165: 0x00008A8D, - 9166: 0x00008AA1, - 9167: 0x00008A93, - 9168: 0x00008AA4, - 9169: 0x00008AAA, - 9170: 0x00008AA5, - 9171: 0x00008AA8, - 9172: 0x00008A98, - 9173: 0x00008A91, - 9174: 0x00008A9A, - 9175: 0x00008AA7, - 9176: 0x00008C6A, - 9177: 0x00008C8D, - 9178: 0x00008C8C, - 9179: 0x00008CD3, - 9180: 0x00008CD1, - 9181: 0x00008CD2, - 9182: 0x00008D6B, - 9183: 0x00008D99, - 9184: 0x00008D95, - 9185: 0x00008DFC, - 9186: 0x00008F14, - 9187: 0x00008F12, - 9188: 0x00008F15, - 9189: 0x00008F13, - 9190: 0x00008FA3, - 9191: 0x00009060, - 9192: 0x00009058, - 9193: 0x0000905C, - 9194: 0x00009063, - 9195: 0x00009059, - 9196: 0x0000905E, - 9197: 0x00009062, - 9198: 0x0000905D, - 9199: 0x0000905B, - 9200: 0x00009119, - 9201: 0x00009118, - 9202: 0x0000911E, - 9203: 0x00009175, - 9204: 0x00009178, - 9205: 0x00009177, - 9206: 0x00009174, - 9207: 0x00009278, - 9208: 0x00009280, - 9209: 0x00009285, - 9210: 0x00009298, - 9211: 0x00009296, - 9212: 0x0000927B, - 9213: 0x00009293, - 9214: 0x0000929C, - 9215: 0x000092A8, - 9216: 0x0000927C, - 9217: 0x00009291, - 9218: 0x000095A1, - 9219: 0x000095A8, - 9220: 0x000095A9, - 9221: 0x000095A3, - 9222: 0x000095A5, - 9223: 0x000095A4, - 9224: 0x00009699, - 9225: 0x0000969C, - 9226: 0x0000969B, - 9227: 0x000096CC, - 9228: 0x000096D2, - 9229: 0x00009700, - 9230: 0x0000977C, - 9231: 0x00009785, - 9232: 0x000097F6, - 9233: 0x00009817, - 9234: 0x00009818, - 9235: 0x000098AF, - 9236: 0x000098B1, - 9237: 0x00009903, - 9238: 0x00009905, - 9239: 0x0000990C, - 9240: 0x00009909, - 9241: 0x000099C1, - 9242: 0x00009AAF, - 9243: 0x00009AB0, - 9244: 0x00009AE6, - 9245: 0x00009B41, - 9246: 0x00009B42, - 9247: 0x00009CF4, - 9248: 0x00009CF6, - 9249: 0x00009CF3, - 9250: 0x00009EBC, - 9251: 0x00009F3B, - 9252: 0x00009F4A, - 9253: 0x00005104, - 9254: 0x00005100, - 9255: 0x000050FB, - 9256: 0x000050F5, - 9257: 0x000050F9, - 9258: 0x00005102, - 9259: 0x00005108, - 9260: 0x00005109, - 9261: 0x00005105, - 9262: 0x000051DC, - 9263: 0x00005287, - 9264: 0x00005288, - 9265: 0x00005289, - 9266: 0x0000528D, - 9267: 0x0000528A, - 9268: 0x000052F0, - 9269: 0x000053B2, - 9270: 0x0000562E, - 9271: 0x0000563B, - 9272: 0x00005639, - 9273: 0x00005632, - 9274: 0x0000563F, - 9275: 0x00005634, - 9276: 0x00005629, - 9277: 0x00005653, - 9278: 0x0000564E, - 9279: 0x00005657, - 9280: 0x00005674, - 9281: 0x00005636, - 9282: 0x0000562F, - 9283: 0x00005630, - 9284: 0x00005880, - 9285: 0x0000589F, - 9286: 0x0000589E, - 9287: 0x000058B3, - 9288: 0x0000589C, - 9289: 0x000058AE, - 9290: 0x000058A9, - 9291: 0x000058A6, - 9292: 0x0000596D, - 9293: 0x00005B09, - 9294: 0x00005AFB, - 9295: 0x00005B0B, - 9296: 0x00005AF5, - 9297: 0x00005B0C, - 9298: 0x00005B08, - 9299: 0x00005BEE, - 9300: 0x00005BEC, - 9301: 0x00005BE9, - 9302: 0x00005BEB, - 9303: 0x00005C64, - 9304: 0x00005C65, - 9305: 0x00005D9D, - 9306: 0x00005D94, - 9307: 0x00005E62, - 9308: 0x00005E5F, - 9309: 0x00005E61, - 9310: 0x00005EE2, - 9311: 0x00005EDA, - 9312: 0x00005EDF, - 9313: 0x00005EDD, - 9314: 0x00005EE3, - 9315: 0x00005EE0, - 9316: 0x00005F48, - 9317: 0x00005F71, - 9318: 0x00005FB7, - 9319: 0x00005FB5, - 9320: 0x00006176, - 9321: 0x00006167, - 9322: 0x0000616E, - 9323: 0x0000615D, - 9324: 0x00006155, - 9325: 0x00006182, - 9326: 0x0000617C, - 9327: 0x00006170, - 9328: 0x0000616B, - 9329: 0x0000617E, - 9330: 0x000061A7, - 9331: 0x00006190, - 9332: 0x000061AB, - 9333: 0x0000618E, - 9334: 0x000061AC, - 9335: 0x0000619A, - 9336: 0x000061A4, - 9337: 0x00006194, - 9338: 0x000061AE, - 9339: 0x0000622E, - 9340: 0x00006469, - 9341: 0x0000646F, - 9342: 0x00006479, - 9343: 0x0000649E, - 9344: 0x000064B2, - 9345: 0x00006488, - 9346: 0x00006490, - 9347: 0x000064B0, - 9348: 0x000064A5, - 9349: 0x00006493, - 9350: 0x00006495, - 9351: 0x000064A9, - 9352: 0x00006492, - 9353: 0x000064AE, - 9354: 0x000064AD, - 9355: 0x000064AB, - 9356: 0x0000649A, - 9357: 0x000064AC, - 9358: 0x00006499, - 9359: 0x000064A2, - 9360: 0x000064B3, - 9361: 0x00006575, - 9362: 0x00006577, - 9363: 0x00006578, - 9364: 0x000066AE, - 9365: 0x000066AB, - 9366: 0x000066B4, - 9367: 0x000066B1, - 9368: 0x00006A23, - 9369: 0x00006A1F, - 9370: 0x000069E8, - 9371: 0x00006A01, - 9372: 0x00006A1E, - 9373: 0x00006A19, - 9374: 0x000069FD, - 9375: 0x00006A21, - 9376: 0x00006A13, - 9377: 0x00006A0A, - 9378: 0x000069F3, - 9379: 0x00006A02, - 9380: 0x00006A05, - 9381: 0x000069ED, - 9382: 0x00006A11, - 9383: 0x00006B50, - 9384: 0x00006B4E, - 9385: 0x00006BA4, - 9386: 0x00006BC5, - 9387: 0x00006BC6, - 9388: 0x00006F3F, - 9389: 0x00006F7C, - 9390: 0x00006F84, - 9391: 0x00006F51, - 9392: 0x00006F66, - 9393: 0x00006F54, - 9394: 0x00006F86, - 9395: 0x00006F6D, - 9396: 0x00006F5B, - 9397: 0x00006F78, - 9398: 0x00006F6E, - 9399: 0x00006F8E, - 9400: 0x00006F7A, - 9401: 0x00006F70, - 9402: 0x00006F64, - 9403: 0x00006F97, - 9404: 0x00006F58, - 9405: 0x00006ED5, - 9406: 0x00006F6F, - 9407: 0x00006F60, - 9408: 0x00006F5F, - 9409: 0x0000719F, - 9410: 0x000071AC, - 9411: 0x000071B1, - 9412: 0x000071A8, - 9413: 0x00007256, - 9414: 0x0000729B, - 9415: 0x0000734E, - 9416: 0x00007357, - 9417: 0x00007469, - 9418: 0x0000748B, - 9419: 0x00007483, - 9420: 0x0000747E, - 9421: 0x00007480, - 9422: 0x0000757F, - 9423: 0x00007620, - 9424: 0x00007629, - 9425: 0x0000761F, - 9426: 0x00007624, - 9427: 0x00007626, - 9428: 0x00007621, - 9429: 0x00007622, - 9430: 0x0000769A, - 9431: 0x000076BA, - 9432: 0x000076E4, - 9433: 0x0000778E, - 9434: 0x00007787, - 9435: 0x0000778C, - 9436: 0x00007791, - 9437: 0x0000778B, - 9438: 0x000078CB, - 9439: 0x000078C5, - 9440: 0x000078BA, - 9441: 0x000078CA, - 9442: 0x000078BE, - 9443: 0x000078D5, - 9444: 0x000078BC, - 9445: 0x000078D0, - 9446: 0x00007A3F, - 9447: 0x00007A3C, - 9448: 0x00007A40, - 9449: 0x00007A3D, - 9450: 0x00007A37, - 9451: 0x00007A3B, - 9452: 0x00007AAF, - 9453: 0x00007AAE, - 9454: 0x00007BAD, - 9455: 0x00007BB1, - 9456: 0x00007BC4, - 9457: 0x00007BB4, - 9458: 0x00007BC6, - 9459: 0x00007BC7, - 9460: 0x00007BC1, - 9461: 0x00007BA0, - 9462: 0x00007BCC, - 9463: 0x00007CCA, - 9464: 0x00007DE0, - 9465: 0x00007DF4, - 9466: 0x00007DEF, - 9467: 0x00007DFB, - 9468: 0x00007DD8, - 9469: 0x00007DEC, - 9470: 0x00007DDD, - 9471: 0x00007DE8, - 9472: 0x00007DE3, - 9473: 0x00007DDA, - 9474: 0x00007DDE, - 9475: 0x00007DE9, - 9476: 0x00007D9E, - 9477: 0x00007DD9, - 9478: 0x00007DF2, - 9479: 0x00007DF9, - 9480: 0x00007F75, - 9481: 0x00007F77, - 9482: 0x00007FAF, - 9483: 0x00007FE9, - 9484: 0x00008026, - 9485: 0x0000819B, - 9486: 0x0000819C, - 9487: 0x0000819D, - 9488: 0x000081A0, - 9489: 0x0000819A, - 9490: 0x00008198, - 9491: 0x00008517, - 9492: 0x0000853D, - 9493: 0x0000851A, - 9494: 0x000084EE, - 9495: 0x0000852C, - 9496: 0x0000852D, - 9497: 0x00008513, - 9498: 0x00008511, - 9499: 0x00008523, - 9500: 0x00008521, - 9501: 0x00008514, - 9502: 0x000084EC, - 9503: 0x00008525, - 9504: 0x000084FF, - 9505: 0x00008506, - 9506: 0x00008782, - 9507: 0x00008774, - 9508: 0x00008776, - 9509: 0x00008760, - 9510: 0x00008766, - 9511: 0x00008778, - 9512: 0x00008768, - 9513: 0x00008759, - 9514: 0x00008757, - 9515: 0x0000874C, - 9516: 0x00008753, - 9517: 0x0000885B, - 9518: 0x0000885D, - 9519: 0x00008910, - 9520: 0x00008907, - 9521: 0x00008912, - 9522: 0x00008913, - 9523: 0x00008915, - 9524: 0x0000890A, - 9525: 0x00008ABC, - 9526: 0x00008AD2, - 9527: 0x00008AC7, - 9528: 0x00008AC4, - 9529: 0x00008A95, - 9530: 0x00008ACB, - 9531: 0x00008AF8, - 9532: 0x00008AB2, - 9533: 0x00008AC9, - 9534: 0x00008AC2, - 9535: 0x00008ABF, - 9536: 0x00008AB0, - 9537: 0x00008AD6, - 9538: 0x00008ACD, - 9539: 0x00008AB6, - 9540: 0x00008AB9, - 9541: 0x00008ADB, - 9542: 0x00008C4C, - 9543: 0x00008C4E, - 9544: 0x00008C6C, - 9545: 0x00008CE0, - 9546: 0x00008CDE, - 9547: 0x00008CE6, - 9548: 0x00008CE4, - 9549: 0x00008CEC, - 9550: 0x00008CED, - 9551: 0x00008CE2, - 9552: 0x00008CE3, - 9553: 0x00008CDC, - 9554: 0x00008CEA, - 9555: 0x00008CE1, - 9556: 0x00008D6D, - 9557: 0x00008D9F, - 9558: 0x00008DA3, - 9559: 0x00008E2B, - 9560: 0x00008E10, - 9561: 0x00008E1D, - 9562: 0x00008E22, - 9563: 0x00008E0F, - 9564: 0x00008E29, - 9565: 0x00008E1F, - 9566: 0x00008E21, - 9567: 0x00008E1E, - 9568: 0x00008EBA, - 9569: 0x00008F1D, - 9570: 0x00008F1B, - 9571: 0x00008F1F, - 9572: 0x00008F29, - 9573: 0x00008F26, - 9574: 0x00008F2A, - 9575: 0x00008F1C, - 9576: 0x00008F1E, - 9577: 0x00008F25, - 9578: 0x00009069, - 9579: 0x0000906E, - 9580: 0x00009068, - 9581: 0x0000906D, - 9582: 0x00009077, - 9583: 0x00009130, - 9584: 0x0000912D, - 9585: 0x00009127, - 9586: 0x00009131, - 9587: 0x00009187, - 9588: 0x00009189, - 9589: 0x0000918B, - 9590: 0x00009183, - 9591: 0x000092C5, - 9592: 0x000092BB, - 9593: 0x000092B7, - 9594: 0x000092EA, - 9595: 0x000092AC, - 9596: 0x000092E4, - 9597: 0x000092C1, - 9598: 0x000092B3, - 9599: 0x000092BC, - 9600: 0x000092D2, - 9601: 0x000092C7, - 9602: 0x000092F0, - 9603: 0x000092B2, - 9604: 0x000095AD, - 9605: 0x000095B1, - 9606: 0x00009704, - 9607: 0x00009706, - 9608: 0x00009707, - 9609: 0x00009709, - 9610: 0x00009760, - 9611: 0x0000978D, - 9612: 0x0000978B, - 9613: 0x0000978F, - 9614: 0x00009821, - 9615: 0x0000982B, - 9616: 0x0000981C, - 9617: 0x000098B3, - 9618: 0x0000990A, - 9619: 0x00009913, - 9620: 0x00009912, - 9621: 0x00009918, - 9622: 0x000099DD, - 9623: 0x000099D0, - 9624: 0x000099DF, - 9625: 0x000099DB, - 9626: 0x000099D1, - 9627: 0x000099D5, - 9628: 0x000099D2, - 9629: 0x000099D9, - 9630: 0x00009AB7, - 9631: 0x00009AEE, - 9632: 0x00009AEF, - 9633: 0x00009B27, - 9634: 0x00009B45, - 9635: 0x00009B44, - 9636: 0x00009B77, - 9637: 0x00009B6F, - 9638: 0x00009D06, - 9639: 0x00009D09, - 9640: 0x00009D03, - 9641: 0x00009EA9, - 9642: 0x00009EBE, - 9643: 0x00009ECE, - 9644: 0x000058A8, - 9645: 0x00009F52, - 9646: 0x00005112, - 9647: 0x00005118, - 9648: 0x00005114, - 9649: 0x00005110, - 9650: 0x00005115, - 9651: 0x00005180, - 9652: 0x000051AA, - 9653: 0x000051DD, - 9654: 0x00005291, - 9655: 0x00005293, - 9656: 0x000052F3, - 9657: 0x00005659, - 9658: 0x0000566B, - 9659: 0x00005679, - 9660: 0x00005669, - 9661: 0x00005664, - 9662: 0x00005678, - 9663: 0x0000566A, - 9664: 0x00005668, - 9665: 0x00005665, - 9666: 0x00005671, - 9667: 0x0000566F, - 9668: 0x0000566C, - 9669: 0x00005662, - 9670: 0x00005676, - 9671: 0x000058C1, - 9672: 0x000058BE, - 9673: 0x000058C7, - 9674: 0x000058C5, - 9675: 0x0000596E, - 9676: 0x00005B1D, - 9677: 0x00005B34, - 9678: 0x00005B78, - 9679: 0x00005BF0, - 9680: 0x00005C0E, - 9681: 0x00005F4A, - 9682: 0x000061B2, - 9683: 0x00006191, - 9684: 0x000061A9, - 9685: 0x0000618A, - 9686: 0x000061CD, - 9687: 0x000061B6, - 9688: 0x000061BE, - 9689: 0x000061CA, - 9690: 0x000061C8, - 9691: 0x00006230, - 9692: 0x000064C5, - 9693: 0x000064C1, - 9694: 0x000064CB, - 9695: 0x000064BB, - 9696: 0x000064BC, - 9697: 0x000064DA, - 9698: 0x000064C4, - 9699: 0x000064C7, - 9700: 0x000064C2, - 9701: 0x000064CD, - 9702: 0x000064BF, - 9703: 0x000064D2, - 9704: 0x000064D4, - 9705: 0x000064BE, - 9706: 0x00006574, - 9707: 0x000066C6, - 9708: 0x000066C9, - 9709: 0x000066B9, - 9710: 0x000066C4, - 9711: 0x000066C7, - 9712: 0x000066B8, - 9713: 0x00006A3D, - 9714: 0x00006A38, - 9715: 0x00006A3A, - 9716: 0x00006A59, - 9717: 0x00006A6B, - 9718: 0x00006A58, - 9719: 0x00006A39, - 9720: 0x00006A44, - 9721: 0x00006A62, - 9722: 0x00006A61, - 9723: 0x00006A4B, - 9724: 0x00006A47, - 9725: 0x00006A35, - 9726: 0x00006A5F, - 9727: 0x00006A48, - 9728: 0x00006B59, - 9729: 0x00006B77, - 9730: 0x00006C05, - 9731: 0x00006FC2, - 9732: 0x00006FB1, - 9733: 0x00006FA1, - 9734: 0x00006FC3, - 9735: 0x00006FA4, - 9736: 0x00006FC1, - 9737: 0x00006FA7, - 9738: 0x00006FB3, - 9739: 0x00006FC0, - 9740: 0x00006FB9, - 9741: 0x00006FB6, - 9742: 0x00006FA6, - 9743: 0x00006FA0, - 9744: 0x00006FB4, - 9745: 0x000071BE, - 9746: 0x000071C9, - 9747: 0x000071D0, - 9748: 0x000071D2, - 9749: 0x000071C8, - 9750: 0x000071D5, - 9751: 0x000071B9, - 9752: 0x000071CE, - 9753: 0x000071D9, - 9754: 0x000071DC, - 9755: 0x000071C3, - 9756: 0x000071C4, - 9757: 0x00007368, - 9758: 0x0000749C, - 9759: 0x000074A3, - 9760: 0x00007498, - 9761: 0x0000749F, - 9762: 0x0000749E, - 9763: 0x000074E2, - 9764: 0x0000750C, - 9765: 0x0000750D, - 9766: 0x00007634, - 9767: 0x00007638, - 9768: 0x0000763A, - 9769: 0x000076E7, - 9770: 0x000076E5, - 9771: 0x000077A0, - 9772: 0x0000779E, - 9773: 0x0000779F, - 9774: 0x000077A5, - 9775: 0x000078E8, - 9776: 0x000078DA, - 9777: 0x000078EC, - 9778: 0x000078E7, - 9779: 0x000079A6, - 9780: 0x00007A4D, - 9781: 0x00007A4E, - 9782: 0x00007A46, - 9783: 0x00007A4C, - 9784: 0x00007A4B, - 9785: 0x00007ABA, - 9786: 0x00007BD9, - 9787: 0x00007C11, - 9788: 0x00007BC9, - 9789: 0x00007BE4, - 9790: 0x00007BDB, - 9791: 0x00007BE1, - 9792: 0x00007BE9, - 9793: 0x00007BE6, - 9794: 0x00007CD5, - 9795: 0x00007CD6, - 9796: 0x00007E0A, - 9797: 0x00007E11, - 9798: 0x00007E08, - 9799: 0x00007E1B, - 9800: 0x00007E23, - 9801: 0x00007E1E, - 9802: 0x00007E1D, - 9803: 0x00007E09, - 9804: 0x00007E10, - 9805: 0x00007F79, - 9806: 0x00007FB2, - 9807: 0x00007FF0, - 9808: 0x00007FF1, - 9809: 0x00007FEE, - 9810: 0x00008028, - 9811: 0x000081B3, - 9812: 0x000081A9, - 9813: 0x000081A8, - 9814: 0x000081FB, - 9815: 0x00008208, - 9816: 0x00008258, - 9817: 0x00008259, - 9818: 0x0000854A, - 9819: 0x00008559, - 9820: 0x00008548, - 9821: 0x00008568, - 9822: 0x00008569, - 9823: 0x00008543, - 9824: 0x00008549, - 9825: 0x0000856D, - 9826: 0x0000856A, - 9827: 0x0000855E, - 9828: 0x00008783, - 9829: 0x0000879F, - 9830: 0x0000879E, - 9831: 0x000087A2, - 9832: 0x0000878D, - 9833: 0x00008861, - 9834: 0x0000892A, - 9835: 0x00008932, - 9836: 0x00008925, - 9837: 0x0000892B, - 9838: 0x00008921, - 9839: 0x000089AA, - 9840: 0x000089A6, - 9841: 0x00008AE6, - 9842: 0x00008AFA, - 9843: 0x00008AEB, - 9844: 0x00008AF1, - 9845: 0x00008B00, - 9846: 0x00008ADC, - 9847: 0x00008AE7, - 9848: 0x00008AEE, - 9849: 0x00008AFE, - 9850: 0x00008B01, - 9851: 0x00008B02, - 9852: 0x00008AF7, - 9853: 0x00008AED, - 9854: 0x00008AF3, - 9855: 0x00008AF6, - 9856: 0x00008AFC, - 9857: 0x00008C6B, - 9858: 0x00008C6D, - 9859: 0x00008C93, - 9860: 0x00008CF4, - 9861: 0x00008E44, - 9862: 0x00008E31, - 9863: 0x00008E34, - 9864: 0x00008E42, - 9865: 0x00008E39, - 9866: 0x00008E35, - 9867: 0x00008F3B, - 9868: 0x00008F2F, - 9869: 0x00008F38, - 9870: 0x00008F33, - 9871: 0x00008FA8, - 9872: 0x00008FA6, - 9873: 0x00009075, - 9874: 0x00009074, - 9875: 0x00009078, - 9876: 0x00009072, - 9877: 0x0000907C, - 9878: 0x0000907A, - 9879: 0x00009134, - 9880: 0x00009192, - 9881: 0x00009320, - 9882: 0x00009336, - 9883: 0x000092F8, - 9884: 0x00009333, - 9885: 0x0000932F, - 9886: 0x00009322, - 9887: 0x000092FC, - 9888: 0x0000932B, - 9889: 0x00009304, - 9890: 0x0000931A, - 9891: 0x00009310, - 9892: 0x00009326, - 9893: 0x00009321, - 9894: 0x00009315, - 9895: 0x0000932E, - 9896: 0x00009319, - 9897: 0x000095BB, - 9898: 0x000096A7, - 9899: 0x000096A8, - 9900: 0x000096AA, - 9901: 0x000096D5, - 9902: 0x0000970E, - 9903: 0x00009711, - 9904: 0x00009716, - 9905: 0x0000970D, - 9906: 0x00009713, - 9907: 0x0000970F, - 9908: 0x0000975B, - 9909: 0x0000975C, - 9910: 0x00009766, - 9911: 0x00009798, - 9912: 0x00009830, - 9913: 0x00009838, - 9914: 0x0000983B, - 9915: 0x00009837, - 9916: 0x0000982D, - 9917: 0x00009839, - 9918: 0x00009824, - 9919: 0x00009910, - 9920: 0x00009928, - 9921: 0x0000991E, - 9922: 0x0000991B, - 9923: 0x00009921, - 9924: 0x0000991A, - 9925: 0x000099ED, - 9926: 0x000099E2, - 9927: 0x000099F1, - 9928: 0x00009AB8, - 9929: 0x00009ABC, - 9930: 0x00009AFB, - 9931: 0x00009AED, - 9932: 0x00009B28, - 9933: 0x00009B91, - 9934: 0x00009D15, - 9935: 0x00009D23, - 9936: 0x00009D26, - 9937: 0x00009D28, - 9938: 0x00009D12, - 9939: 0x00009D1B, - 9940: 0x00009ED8, - 9941: 0x00009ED4, - 9942: 0x00009F8D, - 9943: 0x00009F9C, - 9944: 0x0000512A, - 9945: 0x0000511F, - 9946: 0x00005121, - 9947: 0x00005132, - 9948: 0x000052F5, - 9949: 0x0000568E, - 9950: 0x00005680, - 9951: 0x00005690, - 9952: 0x00005685, - 9953: 0x00005687, - 9954: 0x0000568F, - 9955: 0x000058D5, - 9956: 0x000058D3, - 9957: 0x000058D1, - 9958: 0x000058CE, - 9959: 0x00005B30, - 9960: 0x00005B2A, - 9961: 0x00005B24, - 9962: 0x00005B7A, - 9963: 0x00005C37, - 9964: 0x00005C68, - 9965: 0x00005DBC, - 9966: 0x00005DBA, - 9967: 0x00005DBD, - 9968: 0x00005DB8, - 9969: 0x00005E6B, - 9970: 0x00005F4C, - 9971: 0x00005FBD, - 9972: 0x000061C9, - 9973: 0x000061C2, - 9974: 0x000061C7, - 9975: 0x000061E6, - 9976: 0x000061CB, - 9977: 0x00006232, - 9978: 0x00006234, - 9979: 0x000064CE, - 9980: 0x000064CA, - 9981: 0x000064D8, - 9982: 0x000064E0, - 9983: 0x000064F0, - 9984: 0x000064E6, - 9985: 0x000064EC, - 9986: 0x000064F1, - 9987: 0x000064E2, - 9988: 0x000064ED, - 9989: 0x00006582, - 9990: 0x00006583, - 9991: 0x000066D9, - 9992: 0x000066D6, - 9993: 0x00006A80, - 9994: 0x00006A94, - 9995: 0x00006A84, - 9996: 0x00006AA2, - 9997: 0x00006A9C, - 9998: 0x00006ADB, - 9999: 0x00006AA3, - 10000: 0x00006A7E, - 10001: 0x00006A97, - 10002: 0x00006A90, - 10003: 0x00006AA0, - 10004: 0x00006B5C, - 10005: 0x00006BAE, - 10006: 0x00006BDA, - 10007: 0x00006C08, - 10008: 0x00006FD8, - 10009: 0x00006FF1, - 10010: 0x00006FDF, - 10011: 0x00006FE0, - 10012: 0x00006FDB, - 10013: 0x00006FE4, - 10014: 0x00006FEB, - 10015: 0x00006FEF, - 10016: 0x00006F80, - 10017: 0x00006FEC, - 10018: 0x00006FE1, - 10019: 0x00006FE9, - 10020: 0x00006FD5, - 10021: 0x00006FEE, - 10022: 0x00006FF0, - 10023: 0x000071E7, - 10024: 0x000071DF, - 10025: 0x000071EE, - 10026: 0x000071E6, - 10027: 0x000071E5, - 10028: 0x000071ED, - 10029: 0x000071EC, - 10030: 0x000071F4, - 10031: 0x000071E0, - 10032: 0x00007235, - 10033: 0x00007246, - 10034: 0x00007370, - 10035: 0x00007372, - 10036: 0x000074A9, - 10037: 0x000074B0, - 10038: 0x000074A6, - 10039: 0x000074A8, - 10040: 0x00007646, - 10041: 0x00007642, - 10042: 0x0000764C, - 10043: 0x000076EA, - 10044: 0x000077B3, - 10045: 0x000077AA, - 10046: 0x000077B0, - 10047: 0x000077AC, - 10048: 0x000077A7, - 10049: 0x000077AD, - 10050: 0x000077EF, - 10051: 0x000078F7, - 10052: 0x000078FA, - 10053: 0x000078F4, - 10054: 0x000078EF, - 10055: 0x00007901, - 10056: 0x000079A7, - 10057: 0x000079AA, - 10058: 0x00007A57, - 10059: 0x00007ABF, - 10060: 0x00007C07, - 10061: 0x00007C0D, - 10062: 0x00007BFE, - 10063: 0x00007BF7, - 10064: 0x00007C0C, - 10065: 0x00007BE0, - 10066: 0x00007CE0, - 10067: 0x00007CDC, - 10068: 0x00007CDE, - 10069: 0x00007CE2, - 10070: 0x00007CDF, - 10071: 0x00007CD9, - 10072: 0x00007CDD, - 10073: 0x00007E2E, - 10074: 0x00007E3E, - 10075: 0x00007E46, - 10076: 0x00007E37, - 10077: 0x00007E32, - 10078: 0x00007E43, - 10079: 0x00007E2B, - 10080: 0x00007E3D, - 10081: 0x00007E31, - 10082: 0x00007E45, - 10083: 0x00007E41, - 10084: 0x00007E34, - 10085: 0x00007E39, - 10086: 0x00007E48, - 10087: 0x00007E35, - 10088: 0x00007E3F, - 10089: 0x00007E2F, - 10090: 0x00007F44, - 10091: 0x00007FF3, - 10092: 0x00007FFC, - 10093: 0x00008071, - 10094: 0x00008072, - 10095: 0x00008070, - 10096: 0x0000806F, - 10097: 0x00008073, - 10098: 0x000081C6, - 10099: 0x000081C3, - 10100: 0x000081BA, - 10101: 0x000081C2, - 10102: 0x000081C0, - 10103: 0x000081BF, - 10104: 0x000081BD, - 10105: 0x000081C9, - 10106: 0x000081BE, - 10107: 0x000081E8, - 10108: 0x00008209, - 10109: 0x00008271, - 10110: 0x000085AA, - 10111: 0x00008584, - 10112: 0x0000857E, - 10113: 0x0000859C, - 10114: 0x00008591, - 10115: 0x00008594, - 10116: 0x000085AF, - 10117: 0x0000859B, - 10118: 0x00008587, - 10119: 0x000085A8, - 10120: 0x0000858A, - 10121: 0x00008667, - 10122: 0x000087C0, - 10123: 0x000087D1, - 10124: 0x000087B3, - 10125: 0x000087D2, - 10126: 0x000087C6, - 10127: 0x000087AB, - 10128: 0x000087BB, - 10129: 0x000087BA, - 10130: 0x000087C8, - 10131: 0x000087CB, - 10132: 0x0000893B, - 10133: 0x00008936, - 10134: 0x00008944, - 10135: 0x00008938, - 10136: 0x0000893D, - 10137: 0x000089AC, - 10138: 0x00008B0E, - 10139: 0x00008B17, - 10140: 0x00008B19, - 10141: 0x00008B1B, - 10142: 0x00008B0A, - 10143: 0x00008B20, - 10144: 0x00008B1D, - 10145: 0x00008B04, - 10146: 0x00008B10, - 10147: 0x00008C41, - 10148: 0x00008C3F, - 10149: 0x00008C73, - 10150: 0x00008CFA, - 10151: 0x00008CFD, - 10152: 0x00008CFC, - 10153: 0x00008CF8, - 10154: 0x00008CFB, - 10155: 0x00008DA8, - 10156: 0x00008E49, - 10157: 0x00008E4B, - 10158: 0x00008E48, - 10159: 0x00008E4A, - 10160: 0x00008F44, - 10161: 0x00008F3E, - 10162: 0x00008F42, - 10163: 0x00008F45, - 10164: 0x00008F3F, - 10165: 0x0000907F, - 10166: 0x0000907D, - 10167: 0x00009084, - 10168: 0x00009081, - 10169: 0x00009082, - 10170: 0x00009080, - 10171: 0x00009139, - 10172: 0x000091A3, - 10173: 0x0000919E, - 10174: 0x0000919C, - 10175: 0x0000934D, - 10176: 0x00009382, - 10177: 0x00009328, - 10178: 0x00009375, - 10179: 0x0000934A, - 10180: 0x00009365, - 10181: 0x0000934B, - 10182: 0x00009318, - 10183: 0x0000937E, - 10184: 0x0000936C, - 10185: 0x0000935B, - 10186: 0x00009370, - 10187: 0x0000935A, - 10188: 0x00009354, - 10189: 0x000095CA, - 10190: 0x000095CB, - 10191: 0x000095CC, - 10192: 0x000095C8, - 10193: 0x000095C6, - 10194: 0x000096B1, - 10195: 0x000096B8, - 10196: 0x000096D6, - 10197: 0x0000971C, - 10198: 0x0000971E, - 10199: 0x000097A0, - 10200: 0x000097D3, - 10201: 0x00009846, - 10202: 0x000098B6, - 10203: 0x00009935, - 10204: 0x00009A01, - 10205: 0x000099FF, - 10206: 0x00009BAE, - 10207: 0x00009BAB, - 10208: 0x00009BAA, - 10209: 0x00009BAD, - 10210: 0x00009D3B, - 10211: 0x00009D3F, - 10212: 0x00009E8B, - 10213: 0x00009ECF, - 10214: 0x00009EDE, - 10215: 0x00009EDC, - 10216: 0x00009EDD, - 10217: 0x00009EDB, - 10218: 0x00009F3E, - 10219: 0x00009F4B, - 10220: 0x000053E2, - 10221: 0x00005695, - 10222: 0x000056AE, - 10223: 0x000058D9, - 10224: 0x000058D8, - 10225: 0x00005B38, - 10226: 0x00005F5D, - 10227: 0x000061E3, - 10228: 0x00006233, - 10229: 0x000064F4, - 10230: 0x000064F2, - 10231: 0x000064FE, - 10232: 0x00006506, - 10233: 0x000064FA, - 10234: 0x000064FB, - 10235: 0x000064F7, - 10236: 0x000065B7, - 10237: 0x000066DC, - 10238: 0x00006726, - 10239: 0x00006AB3, - 10240: 0x00006AAC, - 10241: 0x00006AC3, - 10242: 0x00006ABB, - 10243: 0x00006AB8, - 10244: 0x00006AC2, - 10245: 0x00006AAE, - 10246: 0x00006AAF, - 10247: 0x00006B5F, - 10248: 0x00006B78, - 10249: 0x00006BAF, - 10250: 0x00007009, - 10251: 0x0000700B, - 10252: 0x00006FFE, - 10253: 0x00007006, - 10254: 0x00006FFA, - 10255: 0x00007011, - 10256: 0x0000700F, - 10257: 0x000071FB, - 10258: 0x000071FC, - 10259: 0x000071FE, - 10260: 0x000071F8, - 10261: 0x00007377, - 10262: 0x00007375, - 10263: 0x000074A7, - 10264: 0x000074BF, - 10265: 0x00007515, - 10266: 0x00007656, - 10267: 0x00007658, - 10268: 0x00007652, - 10269: 0x000077BD, - 10270: 0x000077BF, - 10271: 0x000077BB, - 10272: 0x000077BC, - 10273: 0x0000790E, - 10274: 0x000079AE, - 10275: 0x00007A61, - 10276: 0x00007A62, - 10277: 0x00007A60, - 10278: 0x00007AC4, - 10279: 0x00007AC5, - 10280: 0x00007C2B, - 10281: 0x00007C27, - 10282: 0x00007C2A, - 10283: 0x00007C1E, - 10284: 0x00007C23, - 10285: 0x00007C21, - 10286: 0x00007CE7, - 10287: 0x00007E54, - 10288: 0x00007E55, - 10289: 0x00007E5E, - 10290: 0x00007E5A, - 10291: 0x00007E61, - 10292: 0x00007E52, - 10293: 0x00007E59, - 10294: 0x00007F48, - 10295: 0x00007FF9, - 10296: 0x00007FFB, - 10297: 0x00008077, - 10298: 0x00008076, - 10299: 0x000081CD, - 10300: 0x000081CF, - 10301: 0x0000820A, - 10302: 0x000085CF, - 10303: 0x000085A9, - 10304: 0x000085CD, - 10305: 0x000085D0, - 10306: 0x000085C9, - 10307: 0x000085B0, - 10308: 0x000085BA, - 10309: 0x000085B9, - 10310: 0x000085A6, - 10311: 0x000087EF, - 10312: 0x000087EC, - 10313: 0x000087F2, - 10314: 0x000087E0, - 10315: 0x00008986, - 10316: 0x000089B2, - 10317: 0x000089F4, - 10318: 0x00008B28, - 10319: 0x00008B39, - 10320: 0x00008B2C, - 10321: 0x00008B2B, - 10322: 0x00008C50, - 10323: 0x00008D05, - 10324: 0x00008E59, - 10325: 0x00008E63, - 10326: 0x00008E66, - 10327: 0x00008E64, - 10328: 0x00008E5F, - 10329: 0x00008E55, - 10330: 0x00008EC0, - 10331: 0x00008F49, - 10332: 0x00008F4D, - 10333: 0x00009087, - 10334: 0x00009083, - 10335: 0x00009088, - 10336: 0x000091AB, - 10337: 0x000091AC, - 10338: 0x000091D0, - 10339: 0x00009394, - 10340: 0x0000938A, - 10341: 0x00009396, - 10342: 0x000093A2, - 10343: 0x000093B3, - 10344: 0x000093AE, - 10345: 0x000093AC, - 10346: 0x000093B0, - 10347: 0x00009398, - 10348: 0x0000939A, - 10349: 0x00009397, - 10350: 0x000095D4, - 10351: 0x000095D6, - 10352: 0x000095D0, - 10353: 0x000095D5, - 10354: 0x000096E2, - 10355: 0x000096DC, - 10356: 0x000096D9, - 10357: 0x000096DB, - 10358: 0x000096DE, - 10359: 0x00009724, - 10360: 0x000097A3, - 10361: 0x000097A6, - 10362: 0x000097AD, - 10363: 0x000097F9, - 10364: 0x0000984D, - 10365: 0x0000984F, - 10366: 0x0000984C, - 10367: 0x0000984E, - 10368: 0x00009853, - 10369: 0x000098BA, - 10370: 0x0000993E, - 10371: 0x0000993F, - 10372: 0x0000993D, - 10373: 0x0000992E, - 10374: 0x000099A5, - 10375: 0x00009A0E, - 10376: 0x00009AC1, - 10377: 0x00009B03, - 10378: 0x00009B06, - 10379: 0x00009B4F, - 10380: 0x00009B4E, - 10381: 0x00009B4D, - 10382: 0x00009BCA, - 10383: 0x00009BC9, - 10384: 0x00009BFD, - 10385: 0x00009BC8, - 10386: 0x00009BC0, - 10387: 0x00009D51, - 10388: 0x00009D5D, - 10389: 0x00009D60, - 10390: 0x00009EE0, - 10391: 0x00009F15, - 10392: 0x00009F2C, - 10393: 0x00005133, - 10394: 0x000056A5, - 10395: 0x000058DE, - 10396: 0x000058DF, - 10397: 0x000058E2, - 10398: 0x00005BF5, - 10399: 0x00009F90, - 10400: 0x00005EEC, - 10401: 0x000061F2, - 10402: 0x000061F7, - 10403: 0x000061F6, - 10404: 0x000061F5, - 10405: 0x00006500, - 10406: 0x0000650F, - 10407: 0x000066E0, - 10408: 0x000066DD, - 10409: 0x00006AE5, - 10410: 0x00006ADD, - 10411: 0x00006ADA, - 10412: 0x00006AD3, - 10413: 0x0000701B, - 10414: 0x0000701F, - 10415: 0x00007028, - 10416: 0x0000701A, - 10417: 0x0000701D, - 10418: 0x00007015, - 10419: 0x00007018, - 10420: 0x00007206, - 10421: 0x0000720D, - 10422: 0x00007258, - 10423: 0x000072A2, - 10424: 0x00007378, - 10425: 0x0000737A, - 10426: 0x000074BD, - 10427: 0x000074CA, - 10428: 0x000074E3, - 10429: 0x00007587, - 10430: 0x00007586, - 10431: 0x0000765F, - 10432: 0x00007661, - 10433: 0x000077C7, - 10434: 0x00007919, - 10435: 0x000079B1, - 10436: 0x00007A6B, - 10437: 0x00007A69, - 10438: 0x00007C3E, - 10439: 0x00007C3F, - 10440: 0x00007C38, - 10441: 0x00007C3D, - 10442: 0x00007C37, - 10443: 0x00007C40, - 10444: 0x00007E6B, - 10445: 0x00007E6D, - 10446: 0x00007E79, - 10447: 0x00007E69, - 10448: 0x00007E6A, - 10449: 0x00007F85, - 10450: 0x00007E73, - 10451: 0x00007FB6, - 10452: 0x00007FB9, - 10453: 0x00007FB8, - 10454: 0x000081D8, - 10455: 0x000085E9, - 10456: 0x000085DD, - 10457: 0x000085EA, - 10458: 0x000085D5, - 10459: 0x000085E4, - 10460: 0x000085E5, - 10461: 0x000085F7, - 10462: 0x000087FB, - 10463: 0x00008805, - 10464: 0x0000880D, - 10465: 0x000087F9, - 10466: 0x000087FE, - 10467: 0x00008960, - 10468: 0x0000895F, - 10469: 0x00008956, - 10470: 0x0000895E, - 10471: 0x00008B41, - 10472: 0x00008B5C, - 10473: 0x00008B58, - 10474: 0x00008B49, - 10475: 0x00008B5A, - 10476: 0x00008B4E, - 10477: 0x00008B4F, - 10478: 0x00008B46, - 10479: 0x00008B59, - 10480: 0x00008D08, - 10481: 0x00008D0A, - 10482: 0x00008E7C, - 10483: 0x00008E72, - 10484: 0x00008E87, - 10485: 0x00008E76, - 10486: 0x00008E6C, - 10487: 0x00008E7A, - 10488: 0x00008E74, - 10489: 0x00008F54, - 10490: 0x00008F4E, - 10491: 0x00008FAD, - 10492: 0x0000908A, - 10493: 0x0000908B, - 10494: 0x000091B1, - 10495: 0x000091AE, - 10496: 0x000093E1, - 10497: 0x000093D1, - 10498: 0x000093DF, - 10499: 0x000093C3, - 10500: 0x000093C8, - 10501: 0x000093DC, - 10502: 0x000093DD, - 10503: 0x000093D6, - 10504: 0x000093E2, - 10505: 0x000093CD, - 10506: 0x000093D8, - 10507: 0x000093E4, - 10508: 0x000093D7, - 10509: 0x000093E8, - 10510: 0x000095DC, - 10511: 0x000096B4, - 10512: 0x000096E3, - 10513: 0x0000972A, - 10514: 0x00009727, - 10515: 0x00009761, - 10516: 0x000097DC, - 10517: 0x000097FB, - 10518: 0x0000985E, - 10519: 0x00009858, - 10520: 0x0000985B, - 10521: 0x000098BC, - 10522: 0x00009945, - 10523: 0x00009949, - 10524: 0x00009A16, - 10525: 0x00009A19, - 10526: 0x00009B0D, - 10527: 0x00009BE8, - 10528: 0x00009BE7, - 10529: 0x00009BD6, - 10530: 0x00009BDB, - 10531: 0x00009D89, - 10532: 0x00009D61, - 10533: 0x00009D72, - 10534: 0x00009D6A, - 10535: 0x00009D6C, - 10536: 0x00009E92, - 10537: 0x00009E97, - 10538: 0x00009E93, - 10539: 0x00009EB4, - 10540: 0x000052F8, - 10541: 0x000056A8, - 10542: 0x000056B7, - 10543: 0x000056B6, - 10544: 0x000056B4, - 10545: 0x000056BC, - 10546: 0x000058E4, - 10547: 0x00005B40, - 10548: 0x00005B43, - 10549: 0x00005B7D, - 10550: 0x00005BF6, - 10551: 0x00005DC9, - 10552: 0x000061F8, - 10553: 0x000061FA, - 10554: 0x00006518, - 10555: 0x00006514, - 10556: 0x00006519, - 10557: 0x000066E6, - 10558: 0x00006727, - 10559: 0x00006AEC, - 10560: 0x0000703E, - 10561: 0x00007030, - 10562: 0x00007032, - 10563: 0x00007210, - 10564: 0x0000737B, - 10565: 0x000074CF, - 10566: 0x00007662, - 10567: 0x00007665, - 10568: 0x00007926, - 10569: 0x0000792A, - 10570: 0x0000792C, - 10571: 0x0000792B, - 10572: 0x00007AC7, - 10573: 0x00007AF6, - 10574: 0x00007C4C, - 10575: 0x00007C43, - 10576: 0x00007C4D, - 10577: 0x00007CEF, - 10578: 0x00007CF0, - 10579: 0x00008FAE, - 10580: 0x00007E7D, - 10581: 0x00007E7C, - 10582: 0x00007E82, - 10583: 0x00007F4C, - 10584: 0x00008000, - 10585: 0x000081DA, - 10586: 0x00008266, - 10587: 0x000085FB, - 10588: 0x000085F9, - 10589: 0x00008611, - 10590: 0x000085FA, - 10591: 0x00008606, - 10592: 0x0000860B, - 10593: 0x00008607, - 10594: 0x0000860A, - 10595: 0x00008814, - 10596: 0x00008815, - 10597: 0x00008964, - 10598: 0x000089BA, - 10599: 0x000089F8, - 10600: 0x00008B70, - 10601: 0x00008B6C, - 10602: 0x00008B66, - 10603: 0x00008B6F, - 10604: 0x00008B5F, - 10605: 0x00008B6B, - 10606: 0x00008D0F, - 10607: 0x00008D0D, - 10608: 0x00008E89, - 10609: 0x00008E81, - 10610: 0x00008E85, - 10611: 0x00008E82, - 10612: 0x000091B4, - 10613: 0x000091CB, - 10614: 0x00009418, - 10615: 0x00009403, - 10616: 0x000093FD, - 10617: 0x000095E1, - 10618: 0x00009730, - 10619: 0x000098C4, - 10620: 0x00009952, - 10621: 0x00009951, - 10622: 0x000099A8, - 10623: 0x00009A2B, - 10624: 0x00009A30, - 10625: 0x00009A37, - 10626: 0x00009A35, - 10627: 0x00009C13, - 10628: 0x00009C0D, - 10629: 0x00009E79, - 10630: 0x00009EB5, - 10631: 0x00009EE8, - 10632: 0x00009F2F, - 10633: 0x00009F5F, - 10634: 0x00009F63, - 10635: 0x00009F61, - 10636: 0x00005137, - 10637: 0x00005138, - 10638: 0x000056C1, - 10639: 0x000056C0, - 10640: 0x000056C2, - 10641: 0x00005914, - 10642: 0x00005C6C, - 10643: 0x00005DCD, - 10644: 0x000061FC, - 10645: 0x000061FE, - 10646: 0x0000651D, - 10647: 0x0000651C, - 10648: 0x00006595, - 10649: 0x000066E9, - 10650: 0x00006AFB, - 10651: 0x00006B04, - 10652: 0x00006AFA, - 10653: 0x00006BB2, - 10654: 0x0000704C, - 10655: 0x0000721B, - 10656: 0x000072A7, - 10657: 0x000074D6, - 10658: 0x000074D4, - 10659: 0x00007669, - 10660: 0x000077D3, - 10661: 0x00007C50, - 10662: 0x00007E8F, - 10663: 0x00007E8C, - 10664: 0x00007FBC, - 10665: 0x00008617, - 10666: 0x0000862D, - 10667: 0x0000861A, - 10668: 0x00008823, - 10669: 0x00008822, - 10670: 0x00008821, - 10671: 0x0000881F, - 10672: 0x0000896A, - 10673: 0x0000896C, - 10674: 0x000089BD, - 10675: 0x00008B74, - 10676: 0x00008B77, - 10677: 0x00008B7D, - 10678: 0x00008D13, - 10679: 0x00008E8A, - 10680: 0x00008E8D, - 10681: 0x00008E8B, - 10682: 0x00008F5F, - 10683: 0x00008FAF, - 10684: 0x000091BA, - 10685: 0x0000942E, - 10686: 0x00009433, - 10687: 0x00009435, - 10688: 0x0000943A, - 10689: 0x00009438, - 10690: 0x00009432, - 10691: 0x0000942B, - 10692: 0x000095E2, - 10693: 0x00009738, - 10694: 0x00009739, - 10695: 0x00009732, - 10696: 0x000097FF, - 10697: 0x00009867, - 10698: 0x00009865, - 10699: 0x00009957, - 10700: 0x00009A45, - 10701: 0x00009A43, - 10702: 0x00009A40, - 10703: 0x00009A3E, - 10704: 0x00009ACF, - 10705: 0x00009B54, - 10706: 0x00009B51, - 10707: 0x00009C2D, - 10708: 0x00009C25, - 10709: 0x00009DAF, - 10710: 0x00009DB4, - 10711: 0x00009DC2, - 10712: 0x00009DB8, - 10713: 0x00009E9D, - 10714: 0x00009EEF, - 10715: 0x00009F19, - 10716: 0x00009F5C, - 10717: 0x00009F66, - 10718: 0x00009F67, - 10719: 0x0000513C, - 10720: 0x0000513B, - 10721: 0x000056C8, - 10722: 0x000056CA, - 10723: 0x000056C9, - 10724: 0x00005B7F, - 10725: 0x00005DD4, - 10726: 0x00005DD2, - 10727: 0x00005F4E, - 10728: 0x000061FF, - 10729: 0x00006524, - 10730: 0x00006B0A, - 10731: 0x00006B61, - 10732: 0x00007051, - 10733: 0x00007058, - 10734: 0x00007380, - 10735: 0x000074E4, - 10736: 0x0000758A, - 10737: 0x0000766E, - 10738: 0x0000766C, - 10739: 0x000079B3, - 10740: 0x00007C60, - 10741: 0x00007C5F, - 10742: 0x0000807E, - 10743: 0x0000807D, - 10744: 0x000081DF, - 10745: 0x00008972, - 10746: 0x0000896F, - 10747: 0x000089FC, - 10748: 0x00008B80, - 10749: 0x00008D16, - 10750: 0x00008D17, - 10751: 0x00008E91, - 10752: 0x00008E93, - 10753: 0x00008F61, - 10754: 0x00009148, - 10755: 0x00009444, - 10756: 0x00009451, - 10757: 0x00009452, - 10758: 0x0000973D, - 10759: 0x0000973E, - 10760: 0x000097C3, - 10761: 0x000097C1, - 10762: 0x0000986B, - 10763: 0x00009955, - 10764: 0x00009A55, - 10765: 0x00009A4D, - 10766: 0x00009AD2, - 10767: 0x00009B1A, - 10768: 0x00009C49, - 10769: 0x00009C31, - 10770: 0x00009C3E, - 10771: 0x00009C3B, - 10772: 0x00009DD3, - 10773: 0x00009DD7, - 10774: 0x00009F34, - 10775: 0x00009F6C, - 10776: 0x00009F6A, - 10777: 0x00009F94, - 10778: 0x000056CC, - 10779: 0x00005DD6, - 10780: 0x00006200, - 10781: 0x00006523, - 10782: 0x0000652B, - 10783: 0x0000652A, - 10784: 0x000066EC, - 10785: 0x00006B10, - 10786: 0x000074DA, - 10787: 0x00007ACA, - 10788: 0x00007C64, - 10789: 0x00007C63, - 10790: 0x00007C65, - 10791: 0x00007E93, - 10792: 0x00007E96, - 10793: 0x00007E94, - 10794: 0x000081E2, - 10795: 0x00008638, - 10796: 0x0000863F, - 10797: 0x00008831, - 10798: 0x00008B8A, - 10799: 0x00009090, - 10800: 0x0000908F, - 10801: 0x00009463, - 10802: 0x00009460, - 10803: 0x00009464, - 10804: 0x00009768, - 10805: 0x0000986F, - 10806: 0x0000995C, - 10807: 0x00009A5A, - 10808: 0x00009A5B, - 10809: 0x00009A57, - 10810: 0x00009AD3, - 10811: 0x00009AD4, - 10812: 0x00009AD1, - 10813: 0x00009C54, - 10814: 0x00009C57, - 10815: 0x00009C56, - 10816: 0x00009DE5, - 10817: 0x00009E9F, - 10818: 0x00009EF4, - 10819: 0x000056D1, - 10820: 0x000058E9, - 10821: 0x0000652C, - 10822: 0x0000705E, - 10823: 0x00007671, - 10824: 0x00007672, - 10825: 0x000077D7, - 10826: 0x00007F50, - 10827: 0x00007F88, - 10828: 0x00008836, - 10829: 0x00008839, - 10830: 0x00008862, - 10831: 0x00008B93, - 10832: 0x00008B92, - 10833: 0x00008B96, - 10834: 0x00008277, - 10835: 0x00008D1B, - 10836: 0x000091C0, - 10837: 0x0000946A, - 10838: 0x00009742, - 10839: 0x00009748, - 10840: 0x00009744, - 10841: 0x000097C6, - 10842: 0x00009870, - 10843: 0x00009A5F, - 10844: 0x00009B22, - 10845: 0x00009B58, - 10846: 0x00009C5F, - 10847: 0x00009DF9, - 10848: 0x00009DFA, - 10849: 0x00009E7C, - 10850: 0x00009E7D, - 10851: 0x00009F07, - 10852: 0x00009F77, - 10853: 0x00009F72, - 10854: 0x00005EF3, - 10855: 0x00006B16, - 10856: 0x00007063, - 10857: 0x00007C6C, - 10858: 0x00007C6E, - 10859: 0x0000883B, - 10860: 0x000089C0, - 10861: 0x00008EA1, - 10862: 0x000091C1, - 10863: 0x00009472, - 10864: 0x00009470, - 10865: 0x00009871, - 10866: 0x0000995E, - 10867: 0x00009AD6, - 10868: 0x00009B23, - 10869: 0x00009ECC, - 10870: 0x00007064, - 10871: 0x000077DA, - 10872: 0x00008B9A, - 10873: 0x00009477, - 10874: 0x000097C9, - 10875: 0x00009A62, - 10876: 0x00009A65, - 10877: 0x00007E9C, - 10878: 0x00008B9C, - 10879: 0x00008EAA, - 10880: 0x000091C5, - 10881: 0x0000947D, - 10882: 0x0000947E, - 10883: 0x0000947C, - 10884: 0x00009C77, - 10885: 0x00009C78, - 10886: 0x00009EF7, - 10887: 0x00008C54, - 10888: 0x0000947F, - 10889: 0x00009E1A, - 10890: 0x00007228, - 10891: 0x00009A6A, - 10892: 0x00009B31, - 10893: 0x00009E1B, - 10894: 0x00009E1E, - 10895: 0x00007C72, - 10896: 0x00002460, - 10897: 0x00002461, - 10898: 0x00002462, - 10899: 0x00002463, - 10900: 0x00002464, - 10901: 0x00002465, - 10902: 0x00002466, - 10903: 0x00002467, - 10904: 0x00002468, - 10905: 0x00002469, - 10906: 0x00002474, - 10907: 0x00002475, - 10908: 0x00002476, - 10909: 0x00002477, - 10910: 0x00002478, - 10911: 0x00002479, - 10912: 0x0000247A, - 10913: 0x0000247B, - 10914: 0x0000247C, - 10915: 0x0000247D, - 10916: 0x00002170, - 10917: 0x00002171, - 10918: 0x00002172, - 10919: 0x00002173, - 10920: 0x00002174, - 10921: 0x00002175, - 10922: 0x00002176, - 10923: 0x00002177, - 10924: 0x00002178, - 10925: 0x00002179, - 10926: 0x00004E36, - 10927: 0x00004E3F, - 10928: 0x00004E85, - 10929: 0x00004EA0, - 10930: 0x00005182, - 10931: 0x00005196, - 10932: 0x000051AB, - 10933: 0x000052F9, - 10934: 0x00005338, - 10935: 0x00005369, - 10936: 0x000053B6, - 10937: 0x0000590A, - 10938: 0x00005B80, - 10939: 0x00005DDB, - 10940: 0x00002F33, - 10941: 0x00005E7F, - 10942: 0x00005EF4, - 10943: 0x00005F50, - 10944: 0x00005F61, - 10945: 0x00006534, - 10946: 0x000065E0, - 10947: 0x00007592, - 10948: 0x00007676, - 10949: 0x00008FB5, - 10950: 0x000096B6, - 10951: 0x000000A8, - 10952: 0x000002C6, - 10953: 0x000030FD, - 10954: 0x000030FE, - 10955: 0x0000309D, - 10956: 0x0000309E, - 10957: 0x00003003, - 10958: 0x00004EDD, - 10959: 0x00003005, - 10960: 0x00003006, - 10961: 0x00003007, - 10962: 0x000030FC, - 10963: 0x0000FF3B, - 10964: 0x0000FF3D, - 10965: 0x0000273D, - 10966: 0x00003041, - 10967: 0x00003042, - 10968: 0x00003043, - 10969: 0x00003044, - 10970: 0x00003045, - 10971: 0x00003046, - 10972: 0x00003047, - 10973: 0x00003048, - 10974: 0x00003049, - 10975: 0x0000304A, - 10976: 0x0000304B, - 10977: 0x0000304C, - 10978: 0x0000304D, - 10979: 0x0000304E, - 10980: 0x0000304F, - 10981: 0x00003050, - 10982: 0x00003051, - 10983: 0x00003052, - 10984: 0x00003053, - 10985: 0x00003054, - 10986: 0x00003055, - 10987: 0x00003056, - 10988: 0x00003057, - 10989: 0x00003058, - 10990: 0x00003059, - 10991: 0x0000305A, - 10992: 0x0000305B, - 10993: 0x0000305C, - 10994: 0x0000305D, - 10995: 0x0000305E, - 10996: 0x0000305F, - 10997: 0x00003060, - 10998: 0x00003061, - 10999: 0x00003062, - 11000: 0x00003063, - 11001: 0x00003064, - 11002: 0x00003065, - 11003: 0x00003066, - 11004: 0x00003067, - 11005: 0x00003068, - 11006: 0x00003069, - 11007: 0x0000306A, - 11008: 0x0000306B, - 11009: 0x0000306C, - 11010: 0x0000306D, - 11011: 0x0000306E, - 11012: 0x0000306F, - 11013: 0x00003070, - 11014: 0x00003071, - 11015: 0x00003072, - 11016: 0x00003073, - 11017: 0x00003074, - 11018: 0x00003075, - 11019: 0x00003076, - 11020: 0x00003077, - 11021: 0x00003078, - 11022: 0x00003079, - 11023: 0x0000307A, - 11024: 0x0000307B, - 11025: 0x0000307C, - 11026: 0x0000307D, - 11027: 0x0000307E, - 11028: 0x0000307F, - 11029: 0x00003080, - 11030: 0x00003081, - 11031: 0x00003082, - 11032: 0x00003083, - 11033: 0x00003084, - 11034: 0x00003085, - 11035: 0x00003086, - 11036: 0x00003087, - 11037: 0x00003088, - 11038: 0x00003089, - 11039: 0x0000308A, - 11040: 0x0000308B, - 11041: 0x0000308C, - 11042: 0x0000308D, - 11043: 0x0000308E, - 11044: 0x0000308F, - 11045: 0x00003090, - 11046: 0x00003091, - 11047: 0x00003092, - 11048: 0x00003093, - 11049: 0x000030A1, - 11050: 0x000030A2, - 11051: 0x000030A3, - 11052: 0x000030A4, - 11053: 0x000030A5, - 11054: 0x000030A6, - 11055: 0x000030A7, - 11056: 0x000030A8, - 11057: 0x000030A9, - 11058: 0x000030AA, - 11059: 0x000030AB, - 11060: 0x000030AC, - 11061: 0x000030AD, - 11062: 0x000030AE, - 11063: 0x000030AF, - 11064: 0x000030B0, - 11065: 0x000030B1, - 11066: 0x000030B2, - 11067: 0x000030B3, - 11068: 0x000030B4, - 11069: 0x000030B5, - 11070: 0x000030B6, - 11071: 0x000030B7, - 11072: 0x000030B8, - 11073: 0x000030B9, - 11074: 0x000030BA, - 11075: 0x000030BB, - 11076: 0x000030BC, - 11077: 0x000030BD, - 11078: 0x000030BE, - 11079: 0x000030BF, - 11080: 0x000030C0, - 11081: 0x000030C1, - 11082: 0x000030C2, - 11083: 0x000030C3, - 11084: 0x000030C4, - 11085: 0x000030C5, - 11086: 0x000030C6, - 11087: 0x000030C7, - 11088: 0x000030C8, - 11089: 0x000030C9, - 11090: 0x000030CA, - 11091: 0x000030CB, - 11092: 0x000030CC, - 11093: 0x000030CD, - 11094: 0x000030CE, - 11095: 0x000030CF, - 11096: 0x000030D0, - 11097: 0x000030D1, - 11098: 0x000030D2, - 11099: 0x000030D3, - 11100: 0x000030D4, - 11101: 0x000030D5, - 11102: 0x000030D6, - 11103: 0x000030D7, - 11104: 0x000030D8, - 11105: 0x000030D9, - 11106: 0x000030DA, - 11107: 0x000030DB, - 11108: 0x000030DC, - 11109: 0x000030DD, - 11110: 0x000030DE, - 11111: 0x000030DF, - 11112: 0x000030E0, - 11113: 0x000030E1, - 11114: 0x000030E2, - 11115: 0x000030E3, - 11116: 0x000030E4, - 11117: 0x000030E5, - 11118: 0x000030E6, - 11119: 0x000030E7, - 11120: 0x000030E8, - 11121: 0x000030E9, - 11122: 0x000030EA, - 11123: 0x000030EB, - 11124: 0x000030EC, - 11125: 0x000030ED, - 11126: 0x000030EE, - 11127: 0x000030EF, - 11128: 0x000030F0, - 11129: 0x000030F1, - 11130: 0x000030F2, - 11131: 0x000030F3, - 11132: 0x000030F4, - 11133: 0x000030F5, - 11134: 0x000030F6, - 11135: 0x00000410, - 11136: 0x00000411, - 11137: 0x00000412, - 11138: 0x00000413, - 11139: 0x00000414, - 11140: 0x00000415, - 11141: 0x00000401, - 11142: 0x00000416, - 11143: 0x00000417, - 11144: 0x00000418, - 11145: 0x00000419, - 11146: 0x0000041A, - 11147: 0x0000041B, - 11148: 0x0000041C, - 11149: 0x0000041D, - 11150: 0x0000041E, - 11151: 0x0000041F, - 11152: 0x00000420, - 11153: 0x00000421, - 11154: 0x00000422, - 11155: 0x00000423, - 11156: 0x00000424, - 11157: 0x00000425, - 11158: 0x00000426, - 11159: 0x00000427, - 11160: 0x00000428, - 11161: 0x00000429, - 11162: 0x0000042A, - 11163: 0x0000042B, - 11164: 0x0000042C, - 11165: 0x0000042D, - 11166: 0x0000042E, - 11167: 0x0000042F, - 11168: 0x00000430, - 11169: 0x00000431, - 11170: 0x00000432, - 11171: 0x00000433, - 11172: 0x00000434, - 11173: 0x00000435, - 11174: 0x00000451, - 11175: 0x00000436, - 11176: 0x00000437, - 11177: 0x00000438, - 11178: 0x00000439, - 11179: 0x0000043A, - 11180: 0x0000043B, - 11181: 0x0000043C, - 11182: 0x0000043D, - 11183: 0x0000043E, - 11184: 0x0000043F, - 11185: 0x00000440, - 11186: 0x00000441, - 11187: 0x00000442, - 11188: 0x00000443, - 11189: 0x00000444, - 11190: 0x00000445, - 11191: 0x00000446, - 11192: 0x00000447, - 11193: 0x00000448, - 11194: 0x00000449, - 11195: 0x0000044A, - 11196: 0x0000044B, - 11197: 0x0000044C, - 11198: 0x0000044D, - 11199: 0x0000044E, - 11200: 0x0000044F, - 11201: 0x000021E7, - 11202: 0x000021B8, - 11203: 0x000021B9, - 11204: 0x000031CF, - 11205: 0x000200CC, - 11206: 0x00004E5A, - 11207: 0x0002008A, - 11208: 0x00005202, - 11209: 0x00004491, - 11210: 0x00009FB0, - 11211: 0x00005188, - 11212: 0x00009FB1, - 11213: 0x00027607, - 11254: 0x0000FFE2, - 11255: 0x0000FFE4, - 11256: 0x0000FF07, - 11257: 0x0000FF02, - 11258: 0x00003231, - 11259: 0x00002116, - 11260: 0x00002121, - 11261: 0x0000309B, - 11262: 0x0000309C, - 11263: 0x00002E80, - 11264: 0x00002E84, - 11265: 0x00002E86, - 11266: 0x00002E87, - 11267: 0x00002E88, - 11268: 0x00002E8A, - 11269: 0x00002E8C, - 11270: 0x00002E8D, - 11271: 0x00002E95, - 11272: 0x00002E9C, - 11273: 0x00002E9D, - 11274: 0x00002EA5, - 11275: 0x00002EA7, - 11276: 0x00002EAA, - 11277: 0x00002EAC, - 11278: 0x00002EAE, - 11279: 0x00002EB6, - 11280: 0x00002EBC, - 11281: 0x00002EBE, - 11282: 0x00002EC6, - 11283: 0x00002ECA, - 11284: 0x00002ECC, - 11285: 0x00002ECD, - 11286: 0x00002ECF, - 11287: 0x00002ED6, - 11288: 0x00002ED7, - 11289: 0x00002EDE, - 11290: 0x00002EE3, - 11294: 0x00000283, - 11295: 0x00000250, - 11296: 0x0000025B, - 11297: 0x00000254, - 11298: 0x00000275, - 11299: 0x00000153, - 11300: 0x000000F8, - 11301: 0x0000014B, - 11302: 0x0000028A, - 11303: 0x0000026A, - 11304: 0x00004E42, - 11305: 0x00004E5C, - 11306: 0x000051F5, - 11307: 0x0000531A, - 11308: 0x00005382, - 11309: 0x00004E07, - 11310: 0x00004E0C, - 11311: 0x00004E47, - 11312: 0x00004E8D, - 11313: 0x000056D7, - 11314: 0x0000FA0C, - 11315: 0x00005C6E, - 11316: 0x00005F73, - 11317: 0x00004E0F, - 11318: 0x00005187, - 11319: 0x00004E0E, - 11320: 0x00004E2E, - 11321: 0x00004E93, - 11322: 0x00004EC2, - 11323: 0x00004EC9, - 11324: 0x00004EC8, - 11325: 0x00005198, - 11326: 0x000052FC, - 11327: 0x0000536C, - 11328: 0x000053B9, - 11329: 0x00005720, - 11330: 0x00005903, - 11331: 0x0000592C, - 11332: 0x00005C10, - 11333: 0x00005DFF, - 11334: 0x000065E1, - 11335: 0x00006BB3, - 11336: 0x00006BCC, - 11337: 0x00006C14, - 11338: 0x0000723F, - 11339: 0x00004E31, - 11340: 0x00004E3C, - 11341: 0x00004EE8, - 11342: 0x00004EDC, - 11343: 0x00004EE9, - 11344: 0x00004EE1, - 11345: 0x00004EDD, - 11346: 0x00004EDA, - 11347: 0x0000520C, - 11348: 0x0000531C, - 11349: 0x0000534C, - 11350: 0x00005722, - 11351: 0x00005723, - 11352: 0x00005917, - 11353: 0x0000592F, - 11354: 0x00005B81, - 11355: 0x00005B84, - 11356: 0x00005C12, - 11357: 0x00005C3B, - 11358: 0x00005C74, - 11359: 0x00005C73, - 11360: 0x00005E04, - 11361: 0x00005E80, - 11362: 0x00005E82, - 11363: 0x00005FC9, - 11364: 0x00006209, - 11365: 0x00006250, - 11366: 0x00006C15, - 11367: 0x00006C36, - 11368: 0x00006C43, - 11369: 0x00006C3F, - 11370: 0x00006C3B, - 11371: 0x000072AE, - 11372: 0x000072B0, - 11373: 0x0000738A, - 11374: 0x000079B8, - 11375: 0x0000808A, - 11376: 0x0000961E, - 11377: 0x00004F0E, - 11378: 0x00004F18, - 11379: 0x00004F2C, - 11380: 0x00004EF5, - 11381: 0x00004F14, - 11382: 0x00004EF1, - 11383: 0x00004F00, - 11384: 0x00004EF7, - 11385: 0x00004F08, - 11386: 0x00004F1D, - 11387: 0x00004F02, - 11388: 0x00004F05, - 11389: 0x00004F22, - 11390: 0x00004F13, - 11391: 0x00004F04, - 11392: 0x00004EF4, - 11393: 0x00004F12, - 11394: 0x000051B1, - 11395: 0x00005213, - 11396: 0x00005209, - 11397: 0x00005210, - 11398: 0x000052A6, - 11399: 0x00005322, - 11400: 0x0000531F, - 11401: 0x0000534D, - 11402: 0x0000538A, - 11403: 0x00005407, - 11404: 0x000056E1, - 11405: 0x000056DF, - 11406: 0x0000572E, - 11407: 0x0000572A, - 11408: 0x00005734, - 11409: 0x0000593C, - 11410: 0x00005980, - 11411: 0x0000597C, - 11412: 0x00005985, - 11413: 0x0000597B, - 11414: 0x0000597E, - 11415: 0x00005977, - 11416: 0x0000597F, - 11417: 0x00005B56, - 11418: 0x00005C15, - 11419: 0x00005C25, - 11420: 0x00005C7C, - 11421: 0x00005C7A, - 11422: 0x00005C7B, - 11423: 0x00005C7E, - 11424: 0x00005DDF, - 11425: 0x00005E75, - 11426: 0x00005E84, - 11427: 0x00005F02, - 11428: 0x00005F1A, - 11429: 0x00005F74, - 11430: 0x00005FD5, - 11431: 0x00005FD4, - 11432: 0x00005FCF, - 11433: 0x0000625C, - 11434: 0x0000625E, - 11435: 0x00006264, - 11436: 0x00006261, - 11437: 0x00006266, - 11438: 0x00006262, - 11439: 0x00006259, - 11440: 0x00006260, - 11441: 0x0000625A, - 11442: 0x00006265, - 11443: 0x000065EF, - 11444: 0x000065EE, - 11445: 0x0000673E, - 11446: 0x00006739, - 11447: 0x00006738, - 11448: 0x0000673B, - 11449: 0x0000673A, - 11450: 0x0000673F, - 11451: 0x0000673C, - 11452: 0x00006733, - 11453: 0x00006C18, - 11454: 0x00006C46, - 11455: 0x00006C52, - 11456: 0x00006C5C, - 11457: 0x00006C4F, - 11458: 0x00006C4A, - 11459: 0x00006C54, - 11460: 0x00006C4B, - 11461: 0x00006C4C, - 11462: 0x00007071, - 11463: 0x0000725E, - 11464: 0x000072B4, - 11465: 0x000072B5, - 11466: 0x0000738E, - 11467: 0x0000752A, - 11468: 0x0000767F, - 11469: 0x00007A75, - 11470: 0x00007F51, - 11471: 0x00008278, - 11472: 0x0000827C, - 11473: 0x00008280, - 11474: 0x0000827D, - 11475: 0x0000827F, - 11476: 0x0000864D, - 11477: 0x0000897E, - 11478: 0x00009099, - 11479: 0x00009097, - 11480: 0x00009098, - 11481: 0x0000909B, - 11482: 0x00009094, - 11483: 0x00009622, - 11484: 0x00009624, - 11485: 0x00009620, - 11486: 0x00009623, - 11487: 0x00004F56, - 11488: 0x00004F3B, - 11489: 0x00004F62, - 11490: 0x00004F49, - 11491: 0x00004F53, - 11492: 0x00004F64, - 11493: 0x00004F3E, - 11494: 0x00004F67, - 11495: 0x00004F52, - 11496: 0x00004F5F, - 11497: 0x00004F41, - 11498: 0x00004F58, - 11499: 0x00004F2D, - 11500: 0x00004F33, - 11501: 0x00004F3F, - 11502: 0x00004F61, - 11503: 0x0000518F, - 11504: 0x000051B9, - 11505: 0x0000521C, - 11506: 0x0000521E, - 11507: 0x00005221, - 11508: 0x000052AD, - 11509: 0x000052AE, - 11510: 0x00005309, - 11511: 0x00005363, - 11512: 0x00005372, - 11513: 0x0000538E, - 11514: 0x0000538F, - 11515: 0x00005430, - 11516: 0x00005437, - 11517: 0x0000542A, - 11518: 0x00005454, - 11519: 0x00005445, - 11520: 0x00005419, - 11521: 0x0000541C, - 11522: 0x00005425, - 11523: 0x00005418, - 11524: 0x0000543D, - 11525: 0x0000544F, - 11526: 0x00005441, - 11527: 0x00005428, - 11528: 0x00005424, - 11529: 0x00005447, - 11530: 0x000056EE, - 11531: 0x000056E7, - 11532: 0x000056E5, - 11533: 0x00005741, - 11534: 0x00005745, - 11535: 0x0000574C, - 11536: 0x00005749, - 11537: 0x0000574B, - 11538: 0x00005752, - 11539: 0x00005906, - 11540: 0x00005940, - 11541: 0x000059A6, - 11542: 0x00005998, - 11543: 0x000059A0, - 11544: 0x00005997, - 11545: 0x0000598E, - 11546: 0x000059A2, - 11547: 0x00005990, - 11548: 0x0000598F, - 11549: 0x000059A7, - 11550: 0x000059A1, - 11551: 0x00005B8E, - 11552: 0x00005B92, - 11553: 0x00005C28, - 11554: 0x00005C2A, - 11555: 0x00005C8D, - 11556: 0x00005C8F, - 11557: 0x00005C88, - 11558: 0x00005C8B, - 11559: 0x00005C89, - 11560: 0x00005C92, - 11561: 0x00005C8A, - 11562: 0x00005C86, - 11563: 0x00005C93, - 11564: 0x00005C95, - 11565: 0x00005DE0, - 11566: 0x00005E0A, - 11567: 0x00005E0E, - 11568: 0x00005E8B, - 11569: 0x00005E89, - 11570: 0x00005E8C, - 11571: 0x00005E88, - 11572: 0x00005E8D, - 11573: 0x00005F05, - 11574: 0x00005F1D, - 11575: 0x00005F78, - 11576: 0x00005F76, - 11577: 0x00005FD2, - 11578: 0x00005FD1, - 11579: 0x00005FD0, - 11580: 0x00005FED, - 11581: 0x00005FE8, - 11582: 0x00005FEE, - 11583: 0x00005FF3, - 11584: 0x00005FE1, - 11585: 0x00005FE4, - 11586: 0x00005FE3, - 11587: 0x00005FFA, - 11588: 0x00005FEF, - 11589: 0x00005FF7, - 11590: 0x00005FFB, - 11591: 0x00006000, - 11592: 0x00005FF4, - 11593: 0x0000623A, - 11594: 0x00006283, - 11595: 0x0000628C, - 11596: 0x0000628E, - 11597: 0x0000628F, - 11598: 0x00006294, - 11599: 0x00006287, - 11600: 0x00006271, - 11601: 0x0000627B, - 11602: 0x0000627A, - 11603: 0x00006270, - 11604: 0x00006281, - 11605: 0x00006288, - 11606: 0x00006277, - 11607: 0x0000627D, - 11608: 0x00006272, - 11609: 0x00006274, - 11610: 0x00006537, - 11611: 0x000065F0, - 11612: 0x000065F4, - 11613: 0x000065F3, - 11614: 0x000065F2, - 11615: 0x000065F5, - 11616: 0x00006745, - 11617: 0x00006747, - 11618: 0x00006759, - 11619: 0x00006755, - 11620: 0x0000674C, - 11621: 0x00006748, - 11622: 0x0000675D, - 11623: 0x0000674D, - 11624: 0x0000675A, - 11625: 0x0000674B, - 11626: 0x00006BD0, - 11627: 0x00006C19, - 11628: 0x00006C1A, - 11629: 0x00006C78, - 11630: 0x00006C67, - 11631: 0x00006C6B, - 11632: 0x00006C84, - 11633: 0x00006C8B, - 11634: 0x00006C8F, - 11635: 0x00006C71, - 11636: 0x00006C6F, - 11637: 0x00006C69, - 11638: 0x00006C9A, - 11639: 0x00006C6D, - 11640: 0x00006C87, - 11641: 0x00006C95, - 11642: 0x00006C9C, - 11643: 0x00006C66, - 11644: 0x00006C73, - 11645: 0x00006C65, - 11646: 0x00006C7B, - 11647: 0x00006C8E, - 11648: 0x00007074, - 11649: 0x0000707A, - 11650: 0x00007263, - 11651: 0x000072BF, - 11652: 0x000072BD, - 11653: 0x000072C3, - 11654: 0x000072C6, - 11655: 0x000072C1, - 11656: 0x000072BA, - 11657: 0x000072C5, - 11658: 0x00007395, - 11659: 0x00007397, - 11660: 0x00007393, - 11661: 0x00007394, - 11662: 0x00007392, - 11663: 0x0000753A, - 11664: 0x00007539, - 11665: 0x00007594, - 11666: 0x00007595, - 11667: 0x00007681, - 11668: 0x0000793D, - 11669: 0x00008034, - 11670: 0x00008095, - 11671: 0x00008099, - 11672: 0x00008090, - 11673: 0x00008092, - 11674: 0x0000809C, - 11675: 0x00008290, - 11676: 0x0000828F, - 11677: 0x00008285, - 11678: 0x0000828E, - 11679: 0x00008291, - 11680: 0x00008293, - 11681: 0x0000828A, - 11682: 0x00008283, - 11683: 0x00008284, - 11684: 0x00008C78, - 11685: 0x00008FC9, - 11686: 0x00008FBF, - 11687: 0x0000909F, - 11688: 0x000090A1, - 11689: 0x000090A5, - 11690: 0x0000909E, - 11691: 0x000090A7, - 11692: 0x000090A0, - 11693: 0x00009630, - 11694: 0x00009628, - 11695: 0x0000962F, - 11696: 0x0000962D, - 11697: 0x00004E33, - 11698: 0x00004F98, - 11699: 0x00004F7C, - 11700: 0x00004F85, - 11701: 0x00004F7D, - 11702: 0x00004F80, - 11703: 0x00004F87, - 11704: 0x00004F76, - 11705: 0x00004F74, - 11706: 0x00004F89, - 11707: 0x00004F84, - 11708: 0x00004F77, - 11709: 0x00004F4C, - 11710: 0x00004F97, - 11711: 0x00004F6A, - 11712: 0x00004F9A, - 11713: 0x00004F79, - 11714: 0x00004F81, - 11715: 0x00004F78, - 11716: 0x00004F90, - 11717: 0x00004F9C, - 11718: 0x00004F94, - 11719: 0x00004F9E, - 11720: 0x00004F92, - 11721: 0x00004F82, - 11722: 0x00004F95, - 11723: 0x00004F6B, - 11724: 0x00004F6E, - 11725: 0x0000519E, - 11726: 0x000051BC, - 11727: 0x000051BE, - 11728: 0x00005235, - 11729: 0x00005232, - 11730: 0x00005233, - 11731: 0x00005246, - 11732: 0x00005231, - 11733: 0x000052BC, - 11734: 0x0000530A, - 11735: 0x0000530B, - 11736: 0x0000533C, - 11737: 0x00005392, - 11738: 0x00005394, - 11739: 0x00005487, - 11740: 0x0000547F, - 11741: 0x00005481, - 11742: 0x00005491, - 11743: 0x00005482, - 11744: 0x00005488, - 11745: 0x0000546B, - 11746: 0x0000547A, - 11747: 0x0000547E, - 11748: 0x00005465, - 11749: 0x0000546C, - 11750: 0x00005474, - 11751: 0x00005466, - 11752: 0x0000548D, - 11753: 0x0000546F, - 11754: 0x00005461, - 11755: 0x00005460, - 11756: 0x00005498, - 11757: 0x00005463, - 11758: 0x00005467, - 11759: 0x00005464, - 11760: 0x000056F7, - 11761: 0x000056F9, - 11762: 0x0000576F, - 11763: 0x00005772, - 11764: 0x0000576D, - 11765: 0x0000576B, - 11766: 0x00005771, - 11767: 0x00005770, - 11768: 0x00005776, - 11769: 0x00005780, - 11770: 0x00005775, - 11771: 0x0000577B, - 11772: 0x00005773, - 11773: 0x00005774, - 11774: 0x00005762, - 11775: 0x00005768, - 11776: 0x0000577D, - 11777: 0x0000590C, - 11778: 0x00005945, - 11779: 0x000059B5, - 11780: 0x000059BA, - 11781: 0x000059CF, - 11782: 0x000059CE, - 11783: 0x000059B2, - 11784: 0x000059CC, - 11785: 0x000059C1, - 11786: 0x000059B6, - 11787: 0x000059BC, - 11788: 0x000059C3, - 11789: 0x000059D6, - 11790: 0x000059B1, - 11791: 0x000059BD, - 11792: 0x000059C0, - 11793: 0x000059C8, - 11794: 0x000059B4, - 11795: 0x000059C7, - 11796: 0x00005B62, - 11797: 0x00005B65, - 11798: 0x00005B93, - 11799: 0x00005B95, - 11800: 0x00005C44, - 11801: 0x00005C47, - 11802: 0x00005CAE, - 11803: 0x00005CA4, - 11804: 0x00005CA0, - 11805: 0x00005CB5, - 11806: 0x00005CAF, - 11807: 0x00005CA8, - 11808: 0x00005CAC, - 11809: 0x00005C9F, - 11810: 0x00005CA3, - 11811: 0x00005CAD, - 11812: 0x00005CA2, - 11813: 0x00005CAA, - 11814: 0x00005CA7, - 11815: 0x00005C9D, - 11816: 0x00005CA5, - 11817: 0x00005CB6, - 11818: 0x00005CB0, - 11819: 0x00005CA6, - 11820: 0x00005E17, - 11821: 0x00005E14, - 11822: 0x00005E19, - 11823: 0x00005F28, - 11824: 0x00005F22, - 11825: 0x00005F23, - 11826: 0x00005F24, - 11827: 0x00005F54, - 11828: 0x00005F82, - 11829: 0x00005F7E, - 11830: 0x00005F7D, - 11831: 0x00005FDE, - 11832: 0x00005FE5, - 11833: 0x0000602D, - 11834: 0x00006026, - 11835: 0x00006019, - 11836: 0x00006032, - 11837: 0x0000600B, - 11838: 0x00006034, - 11839: 0x0000600A, - 11840: 0x00006017, - 11841: 0x00006033, - 11842: 0x0000601A, - 11843: 0x0000601E, - 11844: 0x0000602C, - 11845: 0x00006022, - 11846: 0x0000600D, - 11847: 0x00006010, - 11848: 0x0000602E, - 11849: 0x00006013, - 11850: 0x00006011, - 11851: 0x0000600C, - 11852: 0x00006009, - 11853: 0x0000601C, - 11854: 0x00006214, - 11855: 0x0000623D, - 11856: 0x000062AD, - 11857: 0x000062B4, - 11858: 0x000062D1, - 11859: 0x000062BE, - 11860: 0x000062AA, - 11861: 0x000062B6, - 11862: 0x000062CA, - 11863: 0x000062AE, - 11864: 0x000062B3, - 11865: 0x000062AF, - 11866: 0x000062BB, - 11867: 0x000062A9, - 11868: 0x000062B0, - 11869: 0x000062B8, - 11870: 0x0000653D, - 11871: 0x000065A8, - 11872: 0x000065BB, - 11873: 0x00006609, - 11874: 0x000065FC, - 11875: 0x00006604, - 11876: 0x00006612, - 11877: 0x00006608, - 11878: 0x000065FB, - 11879: 0x00006603, - 11880: 0x0000660B, - 11881: 0x0000660D, - 11882: 0x00006605, - 11883: 0x000065FD, - 11884: 0x00006611, - 11885: 0x00006610, - 11886: 0x000066F6, - 11887: 0x0000670A, - 11888: 0x00006785, - 11889: 0x0000676C, - 11890: 0x0000678E, - 11891: 0x00006792, - 11892: 0x00006776, - 11893: 0x0000677B, - 11894: 0x00006798, - 11895: 0x00006786, - 11896: 0x00006784, - 11897: 0x00006774, - 11898: 0x0000678D, - 11899: 0x0000678C, - 11900: 0x0000677A, - 11901: 0x0000679F, - 11902: 0x00006791, - 11903: 0x00006799, - 11904: 0x00006783, - 11905: 0x0000677D, - 11906: 0x00006781, - 11907: 0x00006778, - 11908: 0x00006779, - 11909: 0x00006794, - 11910: 0x00006B25, - 11911: 0x00006B80, - 11912: 0x00006B7E, - 11913: 0x00006BDE, - 11914: 0x00006C1D, - 11915: 0x00006C93, - 11916: 0x00006CEC, - 11917: 0x00006CEB, - 11918: 0x00006CEE, - 11919: 0x00006CD9, - 11920: 0x00006CB6, - 11921: 0x00006CD4, - 11922: 0x00006CAD, - 11923: 0x00006CE7, - 11924: 0x00006CB7, - 11925: 0x00006CD0, - 11926: 0x00006CC2, - 11927: 0x00006CBA, - 11928: 0x00006CC3, - 11929: 0x00006CC6, - 11930: 0x00006CED, - 11931: 0x00006CF2, - 11932: 0x00006CD2, - 11933: 0x00006CDD, - 11934: 0x00006CB4, - 11935: 0x00006C8A, - 11936: 0x00006C9D, - 11937: 0x00006C80, - 11938: 0x00006CDE, - 11939: 0x00006CC0, - 11940: 0x00006D30, - 11941: 0x00006CCD, - 11942: 0x00006CC7, - 11943: 0x00006CB0, - 11944: 0x00006CF9, - 11945: 0x00006CCF, - 11946: 0x00006CE9, - 11947: 0x00006CD1, - 11948: 0x00007094, - 11949: 0x00007098, - 11950: 0x00007085, - 11951: 0x00007093, - 11952: 0x00007086, - 11953: 0x00007084, - 11954: 0x00007091, - 11955: 0x00007096, - 11956: 0x00007082, - 11957: 0x0000709A, - 11958: 0x00007083, - 11959: 0x0000726A, - 11960: 0x000072D6, - 11961: 0x000072CB, - 11962: 0x000072D8, - 11963: 0x000072C9, - 11964: 0x000072DC, - 11965: 0x000072D2, - 11966: 0x000072D4, - 11967: 0x000072DA, - 11968: 0x000072CC, - 11969: 0x000072D1, - 11970: 0x000073A4, - 11971: 0x000073A1, - 11972: 0x000073AD, - 11973: 0x000073A6, - 11974: 0x000073A2, - 11975: 0x000073A0, - 11976: 0x000073AC, - 11977: 0x0000739D, - 11978: 0x000074DD, - 11979: 0x000074E8, - 11980: 0x0000753F, - 11981: 0x00007540, - 11982: 0x0000753E, - 11983: 0x0000758C, - 11984: 0x00007598, - 11985: 0x000076AF, - 11986: 0x000076F3, - 11987: 0x000076F1, - 11988: 0x000076F0, - 11989: 0x000076F5, - 11990: 0x000077F8, - 11991: 0x000077FC, - 11992: 0x000077F9, - 11993: 0x000077FB, - 11994: 0x000077FA, - 11995: 0x000077F7, - 11996: 0x00007942, - 11997: 0x0000793F, - 11998: 0x000079C5, - 11999: 0x00007A78, - 12000: 0x00007A7B, - 12001: 0x00007AFB, - 12002: 0x00007C75, - 12003: 0x00007CFD, - 12004: 0x00008035, - 12005: 0x0000808F, - 12006: 0x000080AE, - 12007: 0x000080A3, - 12008: 0x000080B8, - 12009: 0x000080B5, - 12010: 0x000080AD, - 12011: 0x00008220, - 12012: 0x000082A0, - 12013: 0x000082C0, - 12014: 0x000082AB, - 12015: 0x0000829A, - 12016: 0x00008298, - 12017: 0x0000829B, - 12018: 0x000082B5, - 12019: 0x000082A7, - 12020: 0x000082AE, - 12021: 0x000082BC, - 12022: 0x0000829E, - 12023: 0x000082BA, - 12024: 0x000082B4, - 12025: 0x000082A8, - 12026: 0x000082A1, - 12027: 0x000082A9, - 12028: 0x000082C2, - 12029: 0x000082A4, - 12030: 0x000082C3, - 12031: 0x000082B6, - 12032: 0x000082A2, - 12033: 0x00008670, - 12034: 0x0000866F, - 12035: 0x0000866D, - 12036: 0x0000866E, - 12037: 0x00008C56, - 12038: 0x00008FD2, - 12039: 0x00008FCB, - 12040: 0x00008FD3, - 12041: 0x00008FCD, - 12042: 0x00008FD6, - 12043: 0x00008FD5, - 12044: 0x00008FD7, - 12045: 0x000090B2, - 12046: 0x000090B4, - 12047: 0x000090AF, - 12048: 0x000090B3, - 12049: 0x000090B0, - 12050: 0x00009639, - 12051: 0x0000963D, - 12052: 0x0000963C, - 12053: 0x0000963A, - 12054: 0x00009643, - 12055: 0x00004FCD, - 12056: 0x00004FC5, - 12057: 0x00004FD3, - 12058: 0x00004FB2, - 12059: 0x00004FC9, - 12060: 0x00004FCB, - 12061: 0x00004FC1, - 12062: 0x00004FD4, - 12063: 0x00004FDC, - 12064: 0x00004FD9, - 12065: 0x00004FBB, - 12066: 0x00004FB3, - 12067: 0x00004FDB, - 12068: 0x00004FC7, - 12069: 0x00004FD6, - 12070: 0x00004FBA, - 12071: 0x00004FC0, - 12072: 0x00004FB9, - 12073: 0x00004FEC, - 12074: 0x00005244, - 12075: 0x00005249, - 12076: 0x000052C0, - 12077: 0x000052C2, - 12078: 0x0000533D, - 12079: 0x0000537C, - 12080: 0x00005397, - 12081: 0x00005396, - 12082: 0x00005399, - 12083: 0x00005398, - 12084: 0x000054BA, - 12085: 0x000054A1, - 12086: 0x000054AD, - 12087: 0x000054A5, - 12088: 0x000054CF, - 12089: 0x000054C3, - 12090: 0x0000830D, - 12091: 0x000054B7, - 12092: 0x000054AE, - 12093: 0x000054D6, - 12094: 0x000054B6, - 12095: 0x000054C5, - 12096: 0x000054C6, - 12097: 0x000054A0, - 12098: 0x00005470, - 12099: 0x000054BC, - 12100: 0x000054A2, - 12101: 0x000054BE, - 12102: 0x00005472, - 12103: 0x000054DE, - 12104: 0x000054B0, - 12105: 0x000057B5, - 12106: 0x0000579E, - 12107: 0x0000579F, - 12108: 0x000057A4, - 12109: 0x0000578C, - 12110: 0x00005797, - 12111: 0x0000579D, - 12112: 0x0000579B, - 12113: 0x00005794, - 12114: 0x00005798, - 12115: 0x0000578F, - 12116: 0x00005799, - 12117: 0x000057A5, - 12118: 0x0000579A, - 12119: 0x00005795, - 12120: 0x000058F4, - 12121: 0x0000590D, - 12122: 0x00005953, - 12123: 0x000059E1, - 12124: 0x000059DE, - 12125: 0x000059EE, - 12126: 0x00005A00, - 12127: 0x000059F1, - 12128: 0x000059DD, - 12129: 0x000059FA, - 12130: 0x000059FD, - 12131: 0x000059FC, - 12132: 0x000059F6, - 12133: 0x000059E4, - 12134: 0x000059F2, - 12135: 0x000059F7, - 12136: 0x000059DB, - 12137: 0x000059E9, - 12138: 0x000059F3, - 12139: 0x000059F5, - 12140: 0x000059E0, - 12141: 0x000059FE, - 12142: 0x000059F4, - 12143: 0x000059ED, - 12144: 0x00005BA8, - 12145: 0x00005C4C, - 12146: 0x00005CD0, - 12147: 0x00005CD8, - 12148: 0x00005CCC, - 12149: 0x00005CD7, - 12150: 0x00005CCB, - 12151: 0x00005CDB, - 12152: 0x00005CDE, - 12153: 0x00005CDA, - 12154: 0x00005CC9, - 12155: 0x00005CC7, - 12156: 0x00005CCA, - 12157: 0x00005CD6, - 12158: 0x00005CD3, - 12159: 0x00005CD4, - 12160: 0x00005CCF, - 12161: 0x00005CC8, - 12162: 0x00005CC6, - 12163: 0x00005CCE, - 12164: 0x00005CDF, - 12165: 0x00005CF8, - 12166: 0x00005DF9, - 12167: 0x00005E21, - 12168: 0x00005E22, - 12169: 0x00005E23, - 12170: 0x00005E20, - 12171: 0x00005E24, - 12172: 0x00005EB0, - 12173: 0x00005EA4, - 12174: 0x00005EA2, - 12175: 0x00005E9B, - 12176: 0x00005EA3, - 12177: 0x00005EA5, - 12178: 0x00005F07, - 12179: 0x00005F2E, - 12180: 0x00005F56, - 12181: 0x00005F86, - 12182: 0x00006037, - 12183: 0x00006039, - 12184: 0x00006054, - 12185: 0x00006072, - 12186: 0x0000605E, - 12187: 0x00006045, - 12188: 0x00006053, - 12189: 0x00006047, - 12190: 0x00006049, - 12191: 0x0000605B, - 12192: 0x0000604C, - 12193: 0x00006040, - 12194: 0x00006042, - 12195: 0x0000605F, - 12196: 0x00006024, - 12197: 0x00006044, - 12198: 0x00006058, - 12199: 0x00006066, - 12200: 0x0000606E, - 12201: 0x00006242, - 12202: 0x00006243, - 12203: 0x000062CF, - 12204: 0x0000630D, - 12205: 0x0000630B, - 12206: 0x000062F5, - 12207: 0x0000630E, - 12208: 0x00006303, - 12209: 0x000062EB, - 12210: 0x000062F9, - 12211: 0x0000630F, - 12212: 0x0000630C, - 12213: 0x000062F8, - 12214: 0x000062F6, - 12215: 0x00006300, - 12216: 0x00006313, - 12217: 0x00006314, - 12218: 0x000062FA, - 12219: 0x00006315, - 12220: 0x000062FB, - 12221: 0x000062F0, - 12222: 0x00006541, - 12223: 0x00006543, - 12224: 0x000065AA, - 12225: 0x000065BF, - 12226: 0x00006636, - 12227: 0x00006621, - 12228: 0x00006632, - 12229: 0x00006635, - 12230: 0x0000661C, - 12231: 0x00006626, - 12232: 0x00006622, - 12233: 0x00006633, - 12234: 0x0000662B, - 12235: 0x0000663A, - 12236: 0x0000661D, - 12237: 0x00006634, - 12238: 0x00006639, - 12239: 0x0000662E, - 12240: 0x0000670F, - 12241: 0x00006710, - 12242: 0x000067C1, - 12243: 0x000067F2, - 12244: 0x000067C8, - 12245: 0x000067BA, - 12246: 0x000067DC, - 12247: 0x000067BB, - 12248: 0x000067F8, - 12249: 0x000067D8, - 12250: 0x000067C0, - 12251: 0x000067B7, - 12252: 0x000067C5, - 12253: 0x000067EB, - 12254: 0x000067E4, - 12255: 0x000067DF, - 12256: 0x000067B5, - 12257: 0x000067CD, - 12258: 0x000067B3, - 12259: 0x000067F7, - 12260: 0x000067F6, - 12261: 0x000067EE, - 12262: 0x000067E3, - 12263: 0x000067C2, - 12264: 0x000067B9, - 12265: 0x000067CE, - 12266: 0x000067E7, - 12267: 0x000067F0, - 12268: 0x000067B2, - 12269: 0x000067FC, - 12270: 0x000067C6, - 12271: 0x000067ED, - 12272: 0x000067CC, - 12273: 0x000067AE, - 12274: 0x000067E6, - 12275: 0x000067DB, - 12276: 0x000067FA, - 12277: 0x000067C9, - 12278: 0x000067CA, - 12279: 0x000067C3, - 12280: 0x000067EA, - 12281: 0x000067CB, - 12282: 0x00006B28, - 12283: 0x00006B82, - 12284: 0x00006B84, - 12285: 0x00006BB6, - 12286: 0x00006BD6, - 12287: 0x00006BD8, - 12288: 0x00006BE0, - 12289: 0x00006C20, - 12290: 0x00006C21, - 12291: 0x00006D28, - 12292: 0x00006D34, - 12293: 0x00006D2D, - 12294: 0x00006D1F, - 12295: 0x00006D3C, - 12296: 0x00006D3F, - 12297: 0x00006D12, - 12298: 0x00006D0A, - 12299: 0x00006CDA, - 12300: 0x00006D33, - 12301: 0x00006D04, - 12302: 0x00006D19, - 12303: 0x00006D3A, - 12304: 0x00006D1A, - 12305: 0x00006D11, - 12306: 0x00006D00, - 12307: 0x00006D1D, - 12308: 0x00006D42, - 12309: 0x00006D01, - 12310: 0x00006D18, - 12311: 0x00006D37, - 12312: 0x00006D03, - 12313: 0x00006D0F, - 12314: 0x00006D40, - 12315: 0x00006D07, - 12316: 0x00006D20, - 12317: 0x00006D2C, - 12318: 0x00006D08, - 12319: 0x00006D22, - 12320: 0x00006D09, - 12321: 0x00006D10, - 12322: 0x000070B7, - 12323: 0x0000709F, - 12324: 0x000070BE, - 12325: 0x000070B1, - 12326: 0x000070B0, - 12327: 0x000070A1, - 12328: 0x000070B4, - 12329: 0x000070B5, - 12330: 0x000070A9, - 12331: 0x00007241, - 12332: 0x00007249, - 12333: 0x0000724A, - 12334: 0x0000726C, - 12335: 0x00007270, - 12336: 0x00007273, - 12337: 0x0000726E, - 12338: 0x000072CA, - 12339: 0x000072E4, - 12340: 0x000072E8, - 12341: 0x000072EB, - 12342: 0x000072DF, - 12343: 0x000072EA, - 12344: 0x000072E6, - 12345: 0x000072E3, - 12346: 0x00007385, - 12347: 0x000073CC, - 12348: 0x000073C2, - 12349: 0x000073C8, - 12350: 0x000073C5, - 12351: 0x000073B9, - 12352: 0x000073B6, - 12353: 0x000073B5, - 12354: 0x000073B4, - 12355: 0x000073EB, - 12356: 0x000073BF, - 12357: 0x000073C7, - 12358: 0x000073BE, - 12359: 0x000073C3, - 12360: 0x000073C6, - 12361: 0x000073B8, - 12362: 0x000073CB, - 12363: 0x000074EC, - 12364: 0x000074EE, - 12365: 0x0000752E, - 12366: 0x00007547, - 12367: 0x00007548, - 12368: 0x000075A7, - 12369: 0x000075AA, - 12370: 0x00007679, - 12371: 0x000076C4, - 12372: 0x00007708, - 12373: 0x00007703, - 12374: 0x00007704, - 12375: 0x00007705, - 12376: 0x0000770A, - 12377: 0x000076F7, - 12378: 0x000076FB, - 12379: 0x000076FA, - 12380: 0x000077E7, - 12381: 0x000077E8, - 12382: 0x00007806, - 12383: 0x00007811, - 12384: 0x00007812, - 12385: 0x00007805, - 12386: 0x00007810, - 12387: 0x0000780F, - 12388: 0x0000780E, - 12389: 0x00007809, - 12390: 0x00007803, - 12391: 0x00007813, - 12392: 0x0000794A, - 12393: 0x0000794C, - 12394: 0x0000794B, - 12395: 0x00007945, - 12396: 0x00007944, - 12397: 0x000079D5, - 12398: 0x000079CD, - 12399: 0x000079CF, - 12400: 0x000079D6, - 12401: 0x000079CE, - 12402: 0x00007A80, - 12403: 0x00007A7E, - 12404: 0x00007AD1, - 12405: 0x00007B00, - 12406: 0x00007B01, - 12407: 0x00007C7A, - 12408: 0x00007C78, - 12409: 0x00007C79, - 12410: 0x00007C7F, - 12411: 0x00007C80, - 12412: 0x00007C81, - 12413: 0x00007D03, - 12414: 0x00007D08, - 12415: 0x00007D01, - 12416: 0x00007F58, - 12417: 0x00007F91, - 12418: 0x00007F8D, - 12419: 0x00007FBE, - 12420: 0x00008007, - 12421: 0x0000800E, - 12422: 0x0000800F, - 12423: 0x00008014, - 12424: 0x00008037, - 12425: 0x000080D8, - 12426: 0x000080C7, - 12427: 0x000080E0, - 12428: 0x000080D1, - 12429: 0x000080C8, - 12430: 0x000080C2, - 12431: 0x000080D0, - 12432: 0x000080C5, - 12433: 0x000080E3, - 12434: 0x000080D9, - 12435: 0x000080DC, - 12436: 0x000080CA, - 12437: 0x000080D5, - 12438: 0x000080C9, - 12439: 0x000080CF, - 12440: 0x000080D7, - 12441: 0x000080E6, - 12442: 0x000080CD, - 12443: 0x000081FF, - 12444: 0x00008221, - 12445: 0x00008294, - 12446: 0x000082D9, - 12447: 0x000082FE, - 12448: 0x000082F9, - 12449: 0x00008307, - 12450: 0x000082E8, - 12451: 0x00008300, - 12452: 0x000082D5, - 12453: 0x0000833A, - 12454: 0x000082EB, - 12455: 0x000082D6, - 12456: 0x000082F4, - 12457: 0x000082EC, - 12458: 0x000082E1, - 12459: 0x000082F2, - 12460: 0x000082F5, - 12461: 0x0000830C, - 12462: 0x000082FB, - 12463: 0x000082F6, - 12464: 0x000082F0, - 12465: 0x000082EA, - 12466: 0x000082E4, - 12467: 0x000082E0, - 12468: 0x000082FA, - 12469: 0x000082F3, - 12470: 0x000082ED, - 12471: 0x00008677, - 12472: 0x00008674, - 12473: 0x0000867C, - 12474: 0x00008673, - 12475: 0x00008841, - 12476: 0x0000884E, - 12477: 0x00008867, - 12478: 0x0000886A, - 12479: 0x00008869, - 12480: 0x000089D3, - 12481: 0x00008A04, - 12482: 0x00008A07, - 12483: 0x00008D72, - 12484: 0x00008FE3, - 12485: 0x00008FE1, - 12486: 0x00008FEE, - 12487: 0x00008FE0, - 12488: 0x000090F1, - 12489: 0x000090BD, - 12490: 0x000090BF, - 12491: 0x000090D5, - 12492: 0x000090C5, - 12493: 0x000090BE, - 12494: 0x000090C7, - 12495: 0x000090CB, - 12496: 0x000090C8, - 12497: 0x000091D4, - 12498: 0x000091D3, - 12499: 0x00009654, - 12500: 0x0000964F, - 12501: 0x00009651, - 12502: 0x00009653, - 12503: 0x0000964A, - 12504: 0x0000964E, - 12505: 0x0000501E, - 12506: 0x00005005, - 12507: 0x00005007, - 12508: 0x00005013, - 12509: 0x00005022, - 12510: 0x00005030, - 12511: 0x0000501B, - 12512: 0x00004FF5, - 12513: 0x00004FF4, - 12514: 0x00005033, - 12515: 0x00005037, - 12516: 0x0000502C, - 12517: 0x00004FF6, - 12518: 0x00004FF7, - 12519: 0x00005017, - 12520: 0x0000501C, - 12521: 0x00005020, - 12522: 0x00005027, - 12523: 0x00005035, - 12524: 0x0000502F, - 12525: 0x00005031, - 12526: 0x0000500E, - 12527: 0x0000515A, - 12528: 0x00005194, - 12529: 0x00005193, - 12530: 0x000051CA, - 12531: 0x000051C4, - 12532: 0x000051C5, - 12533: 0x000051C8, - 12534: 0x000051CE, - 12535: 0x00005261, - 12536: 0x0000525A, - 12537: 0x00005252, - 12538: 0x0000525E, - 12539: 0x0000525F, - 12540: 0x00005255, - 12541: 0x00005262, - 12542: 0x000052CD, - 12543: 0x0000530E, - 12544: 0x0000539E, - 12545: 0x00005526, - 12546: 0x000054E2, - 12547: 0x00005517, - 12548: 0x00005512, - 12549: 0x000054E7, - 12550: 0x000054F3, - 12551: 0x000054E4, - 12552: 0x0000551A, - 12553: 0x000054FF, - 12554: 0x00005504, - 12555: 0x00005508, - 12556: 0x000054EB, - 12557: 0x00005511, - 12558: 0x00005505, - 12559: 0x000054F1, - 12560: 0x0000550A, - 12561: 0x000054FB, - 12562: 0x000054F7, - 12563: 0x000054F8, - 12564: 0x000054E0, - 12565: 0x0000550E, - 12566: 0x00005503, - 12567: 0x0000550B, - 12568: 0x00005701, - 12569: 0x00005702, - 12570: 0x000057CC, - 12571: 0x00005832, - 12572: 0x000057D5, - 12573: 0x000057D2, - 12574: 0x000057BA, - 12575: 0x000057C6, - 12576: 0x000057BD, - 12577: 0x000057BC, - 12578: 0x000057B8, - 12579: 0x000057B6, - 12580: 0x000057BF, - 12581: 0x000057C7, - 12582: 0x000057D0, - 12583: 0x000057B9, - 12584: 0x000057C1, - 12585: 0x0000590E, - 12586: 0x0000594A, - 12587: 0x00005A19, - 12588: 0x00005A16, - 12589: 0x00005A2D, - 12590: 0x00005A2E, - 12591: 0x00005A15, - 12592: 0x00005A0F, - 12593: 0x00005A17, - 12594: 0x00005A0A, - 12595: 0x00005A1E, - 12596: 0x00005A33, - 12597: 0x00005B6C, - 12598: 0x00005BA7, - 12599: 0x00005BAD, - 12600: 0x00005BAC, - 12601: 0x00005C03, - 12602: 0x00005C56, - 12603: 0x00005C54, - 12604: 0x00005CEC, - 12605: 0x00005CFF, - 12606: 0x00005CEE, - 12607: 0x00005CF1, - 12608: 0x00005CF7, - 12609: 0x00005D00, - 12610: 0x00005CF9, - 12611: 0x00005E29, - 12612: 0x00005E28, - 12613: 0x00005EA8, - 12614: 0x00005EAE, - 12615: 0x00005EAA, - 12616: 0x00005EAC, - 12617: 0x00005F33, - 12618: 0x00005F30, - 12619: 0x00005F67, - 12620: 0x0000605D, - 12621: 0x0000605A, - 12622: 0x00006067, - 12623: 0x00006041, - 12624: 0x000060A2, - 12625: 0x00006088, - 12626: 0x00006080, - 12627: 0x00006092, - 12628: 0x00006081, - 12629: 0x0000609D, - 12630: 0x00006083, - 12631: 0x00006095, - 12632: 0x0000609B, - 12633: 0x00006097, - 12634: 0x00006087, - 12635: 0x0000609C, - 12636: 0x0000608E, - 12637: 0x00006219, - 12638: 0x00006246, - 12639: 0x000062F2, - 12640: 0x00006310, - 12641: 0x00006356, - 12642: 0x0000632C, - 12643: 0x00006344, - 12644: 0x00006345, - 12645: 0x00006336, - 12646: 0x00006343, - 12647: 0x000063E4, - 12648: 0x00006339, - 12649: 0x0000634B, - 12650: 0x0000634A, - 12651: 0x0000633C, - 12652: 0x00006329, - 12653: 0x00006341, - 12654: 0x00006334, - 12655: 0x00006358, - 12656: 0x00006354, - 12657: 0x00006359, - 12658: 0x0000632D, - 12659: 0x00006347, - 12660: 0x00006333, - 12661: 0x0000635A, - 12662: 0x00006351, - 12663: 0x00006338, - 12664: 0x00006357, - 12665: 0x00006340, - 12666: 0x00006348, - 12667: 0x0000654A, - 12668: 0x00006546, - 12669: 0x000065C6, - 12670: 0x000065C3, - 12671: 0x000065C4, - 12672: 0x000065C2, - 12673: 0x0000664A, - 12674: 0x0000665F, - 12675: 0x00006647, - 12676: 0x00006651, - 12677: 0x00006712, - 12678: 0x00006713, - 12679: 0x0000681F, - 12680: 0x0000681A, - 12681: 0x00006849, - 12682: 0x00006832, - 12683: 0x00006833, - 12684: 0x0000683B, - 12685: 0x0000684B, - 12686: 0x0000684F, - 12687: 0x00006816, - 12688: 0x00006831, - 12689: 0x0000681C, - 12690: 0x00006835, - 12691: 0x0000682B, - 12692: 0x0000682D, - 12693: 0x0000682F, - 12694: 0x0000684E, - 12695: 0x00006844, - 12696: 0x00006834, - 12697: 0x0000681D, - 12698: 0x00006812, - 12699: 0x00006814, - 12700: 0x00006826, - 12701: 0x00006828, - 12702: 0x0000682E, - 12703: 0x0000684D, - 12704: 0x0000683A, - 12705: 0x00006825, - 12706: 0x00006820, - 12707: 0x00006B2C, - 12708: 0x00006B2F, - 12709: 0x00006B2D, - 12710: 0x00006B31, - 12711: 0x00006B34, - 12712: 0x00006B6D, - 12713: 0x00008082, - 12714: 0x00006B88, - 12715: 0x00006BE6, - 12716: 0x00006BE4, - 12717: 0x00006BE8, - 12718: 0x00006BE3, - 12719: 0x00006BE2, - 12720: 0x00006BE7, - 12721: 0x00006C25, - 12722: 0x00006D7A, - 12723: 0x00006D63, - 12724: 0x00006D64, - 12725: 0x00006D76, - 12726: 0x00006D0D, - 12727: 0x00006D61, - 12728: 0x00006D92, - 12729: 0x00006D58, - 12730: 0x00006D62, - 12731: 0x00006D6D, - 12732: 0x00006D6F, - 12733: 0x00006D91, - 12734: 0x00006D8D, - 12735: 0x00006DEF, - 12736: 0x00006D7F, - 12737: 0x00006D86, - 12738: 0x00006D5E, - 12739: 0x00006D67, - 12740: 0x00006D60, - 12741: 0x00006D97, - 12742: 0x00006D70, - 12743: 0x00006D7C, - 12744: 0x00006D5F, - 12745: 0x00006D82, - 12746: 0x00006D98, - 12747: 0x00006D2F, - 12748: 0x00006D68, - 12749: 0x00006D8B, - 12750: 0x00006D7E, - 12751: 0x00006D80, - 12752: 0x00006D84, - 12753: 0x00006D16, - 12754: 0x00006D83, - 12755: 0x00006D7B, - 12756: 0x00006D7D, - 12757: 0x00006D75, - 12758: 0x00006D90, - 12759: 0x000070DC, - 12760: 0x000070D3, - 12761: 0x000070D1, - 12762: 0x000070DD, - 12763: 0x000070CB, - 12764: 0x00007F39, - 12765: 0x000070E2, - 12766: 0x000070D7, - 12767: 0x000070D2, - 12768: 0x000070DE, - 12769: 0x000070E0, - 12770: 0x000070D4, - 12771: 0x000070CD, - 12772: 0x000070C5, - 12773: 0x000070C6, - 12774: 0x000070C7, - 12775: 0x000070DA, - 12776: 0x000070CE, - 12777: 0x000070E1, - 12778: 0x00007242, - 12779: 0x00007278, - 12780: 0x00007277, - 12781: 0x00007276, - 12782: 0x00007300, - 12783: 0x000072FA, - 12784: 0x000072F4, - 12785: 0x000072FE, - 12786: 0x000072F6, - 12787: 0x000072F3, - 12788: 0x000072FB, - 12789: 0x00007301, - 12790: 0x000073D3, - 12791: 0x000073D9, - 12792: 0x000073E5, - 12793: 0x000073D6, - 12794: 0x000073BC, - 12795: 0x000073E7, - 12796: 0x000073E3, - 12797: 0x000073E9, - 12798: 0x000073DC, - 12799: 0x000073D2, - 12800: 0x000073DB, - 12801: 0x000073D4, - 12802: 0x000073DD, - 12803: 0x000073DA, - 12804: 0x000073D7, - 12805: 0x000073D8, - 12806: 0x000073E8, - 12807: 0x000074DE, - 12808: 0x000074DF, - 12809: 0x000074F4, - 12810: 0x000074F5, - 12811: 0x00007521, - 12812: 0x0000755B, - 12813: 0x0000755F, - 12814: 0x000075B0, - 12815: 0x000075C1, - 12816: 0x000075BB, - 12817: 0x000075C4, - 12818: 0x000075C0, - 12819: 0x000075BF, - 12820: 0x000075B6, - 12821: 0x000075BA, - 12822: 0x0000768A, - 12823: 0x000076C9, - 12824: 0x0000771D, - 12825: 0x0000771B, - 12826: 0x00007710, - 12827: 0x00007713, - 12828: 0x00007712, - 12829: 0x00007723, - 12830: 0x00007711, - 12831: 0x00007715, - 12832: 0x00007719, - 12833: 0x0000771A, - 12834: 0x00007722, - 12835: 0x00007727, - 12836: 0x00007823, - 12837: 0x0000782C, - 12838: 0x00007822, - 12839: 0x00007835, - 12840: 0x0000782F, - 12841: 0x00007828, - 12842: 0x0000782E, - 12843: 0x0000782B, - 12844: 0x00007821, - 12845: 0x00007829, - 12846: 0x00007833, - 12847: 0x0000782A, - 12848: 0x00007831, - 12849: 0x00007954, - 12850: 0x0000795B, - 12851: 0x0000794F, - 12852: 0x0000795C, - 12853: 0x00007953, - 12854: 0x00007952, - 12855: 0x00007951, - 12856: 0x000079EB, - 12857: 0x000079EC, - 12858: 0x000079E0, - 12859: 0x000079EE, - 12860: 0x000079ED, - 12861: 0x000079EA, - 12862: 0x000079DC, - 12863: 0x000079DE, - 12864: 0x000079DD, - 12865: 0x00007A86, - 12866: 0x00007A89, - 12867: 0x00007A85, - 12868: 0x00007A8B, - 12869: 0x00007A8C, - 12870: 0x00007A8A, - 12871: 0x00007A87, - 12872: 0x00007AD8, - 12873: 0x00007B10, - 12874: 0x00007B04, - 12875: 0x00007B13, - 12876: 0x00007B05, - 12877: 0x00007B0F, - 12878: 0x00007B08, - 12879: 0x00007B0A, - 12880: 0x00007B0E, - 12881: 0x00007B09, - 12882: 0x00007B12, - 12883: 0x00007C84, - 12884: 0x00007C91, - 12885: 0x00007C8A, - 12886: 0x00007C8C, - 12887: 0x00007C88, - 12888: 0x00007C8D, - 12889: 0x00007C85, - 12890: 0x00007D1E, - 12891: 0x00007D1D, - 12892: 0x00007D11, - 12893: 0x00007D0E, - 12894: 0x00007D18, - 12895: 0x00007D16, - 12896: 0x00007D13, - 12897: 0x00007D1F, - 12898: 0x00007D12, - 12899: 0x00007D0F, - 12900: 0x00007D0C, - 12901: 0x00007F5C, - 12902: 0x00007F61, - 12903: 0x00007F5E, - 12904: 0x00007F60, - 12905: 0x00007F5D, - 12906: 0x00007F5B, - 12907: 0x00007F96, - 12908: 0x00007F92, - 12909: 0x00007FC3, - 12910: 0x00007FC2, - 12911: 0x00007FC0, - 12912: 0x00008016, - 12913: 0x0000803E, - 12914: 0x00008039, - 12915: 0x000080FA, - 12916: 0x000080F2, - 12917: 0x000080F9, - 12918: 0x000080F5, - 12919: 0x00008101, - 12920: 0x000080FB, - 12921: 0x00008100, - 12922: 0x00008201, - 12923: 0x0000822F, - 12924: 0x00008225, - 12925: 0x00008333, - 12926: 0x0000832D, - 12927: 0x00008344, - 12928: 0x00008319, - 12929: 0x00008351, - 12930: 0x00008325, - 12931: 0x00008356, - 12932: 0x0000833F, - 12933: 0x00008341, - 12934: 0x00008326, - 12935: 0x0000831C, - 12936: 0x00008322, - 12937: 0x00008342, - 12938: 0x0000834E, - 12939: 0x0000831B, - 12940: 0x0000832A, - 12941: 0x00008308, - 12942: 0x0000833C, - 12943: 0x0000834D, - 12944: 0x00008316, - 12945: 0x00008324, - 12946: 0x00008320, - 12947: 0x00008337, - 12948: 0x0000832F, - 12949: 0x00008329, - 12950: 0x00008347, - 12951: 0x00008345, - 12952: 0x0000834C, - 12953: 0x00008353, - 12954: 0x0000831E, - 12955: 0x0000832C, - 12956: 0x0000834B, - 12957: 0x00008327, - 12958: 0x00008348, - 12959: 0x00008653, - 12960: 0x00008652, - 12961: 0x000086A2, - 12962: 0x000086A8, - 12963: 0x00008696, - 12964: 0x0000868D, - 12965: 0x00008691, - 12966: 0x0000869E, - 12967: 0x00008687, - 12968: 0x00008697, - 12969: 0x00008686, - 12970: 0x0000868B, - 12971: 0x0000869A, - 12972: 0x00008685, - 12973: 0x000086A5, - 12974: 0x00008699, - 12975: 0x000086A1, - 12976: 0x000086A7, - 12977: 0x00008695, - 12978: 0x00008698, - 12979: 0x0000868E, - 12980: 0x0000869D, - 12981: 0x00008690, - 12982: 0x00008694, - 12983: 0x00008843, - 12984: 0x00008844, - 12985: 0x0000886D, - 12986: 0x00008875, - 12987: 0x00008876, - 12988: 0x00008872, - 12989: 0x00008880, - 12990: 0x00008871, - 12991: 0x0000887F, - 12992: 0x0000886F, - 12993: 0x00008883, - 12994: 0x0000887E, - 12995: 0x00008874, - 12996: 0x0000887C, - 12997: 0x00008A12, - 12998: 0x00008C47, - 12999: 0x00008C57, - 13000: 0x00008C7B, - 13001: 0x00008CA4, - 13002: 0x00008CA3, - 13003: 0x00008D76, - 13004: 0x00008D78, - 13005: 0x00008DB5, - 13006: 0x00008DB7, - 13007: 0x00008DB6, - 13008: 0x00008ED1, - 13009: 0x00008ED3, - 13010: 0x00008FFE, - 13011: 0x00008FF5, - 13012: 0x00009002, - 13013: 0x00008FFF, - 13014: 0x00008FFB, - 13015: 0x00009004, - 13016: 0x00008FFC, - 13017: 0x00008FF6, - 13018: 0x000090D6, - 13019: 0x000090E0, - 13020: 0x000090D9, - 13021: 0x000090DA, - 13022: 0x000090E3, - 13023: 0x000090DF, - 13024: 0x000090E5, - 13025: 0x000090D8, - 13026: 0x000090DB, - 13027: 0x000090D7, - 13028: 0x000090DC, - 13029: 0x000090E4, - 13030: 0x00009150, - 13031: 0x0000914E, - 13032: 0x0000914F, - 13033: 0x000091D5, - 13034: 0x000091E2, - 13035: 0x000091DA, - 13036: 0x0000965C, - 13037: 0x0000965F, - 13038: 0x000096BC, - 13039: 0x000098E3, - 13040: 0x00009ADF, - 13041: 0x00009B2F, - 13042: 0x00004E7F, - 13043: 0x00005070, - 13044: 0x0000506A, - 13045: 0x00005061, - 13046: 0x0000505E, - 13047: 0x00005060, - 13048: 0x00005053, - 13049: 0x0000504B, - 13050: 0x0000505D, - 13051: 0x00005072, - 13052: 0x00005048, - 13053: 0x0000504D, - 13054: 0x00005041, - 13055: 0x0000505B, - 13056: 0x0000504A, - 13057: 0x00005062, - 13058: 0x00005015, - 13059: 0x00005045, - 13060: 0x0000505F, - 13061: 0x00005069, - 13062: 0x0000506B, - 13063: 0x00005063, - 13064: 0x00005064, - 13065: 0x00005046, - 13066: 0x00005040, - 13067: 0x0000506E, - 13068: 0x00005073, - 13069: 0x00005057, - 13070: 0x00005051, - 13071: 0x000051D0, - 13072: 0x0000526B, - 13073: 0x0000526D, - 13074: 0x0000526C, - 13075: 0x0000526E, - 13076: 0x000052D6, - 13077: 0x000052D3, - 13078: 0x0000532D, - 13079: 0x0000539C, - 13080: 0x00005575, - 13081: 0x00005576, - 13082: 0x0000553C, - 13083: 0x0000554D, - 13084: 0x00005550, - 13085: 0x00005534, - 13086: 0x0000552A, - 13087: 0x00005551, - 13088: 0x00005562, - 13089: 0x00005536, - 13090: 0x00005535, - 13091: 0x00005530, - 13092: 0x00005552, - 13093: 0x00005545, - 13094: 0x0000550C, - 13095: 0x00005532, - 13096: 0x00005565, - 13097: 0x0000554E, - 13098: 0x00005539, - 13099: 0x00005548, - 13100: 0x0000552D, - 13101: 0x0000553B, - 13102: 0x00005540, - 13103: 0x0000554B, - 13104: 0x0000570A, - 13105: 0x00005707, - 13106: 0x000057FB, - 13107: 0x00005814, - 13108: 0x000057E2, - 13109: 0x000057F6, - 13110: 0x000057DC, - 13111: 0x000057F4, - 13112: 0x00005800, - 13113: 0x000057ED, - 13114: 0x000057FD, - 13115: 0x00005808, - 13116: 0x000057F8, - 13117: 0x0000580B, - 13118: 0x000057F3, - 13119: 0x000057CF, - 13120: 0x00005807, - 13121: 0x000057EE, - 13122: 0x000057E3, - 13123: 0x000057F2, - 13124: 0x000057E5, - 13125: 0x000057EC, - 13126: 0x000057E1, - 13127: 0x0000580E, - 13128: 0x000057FC, - 13129: 0x00005810, - 13130: 0x000057E7, - 13131: 0x00005801, - 13132: 0x0000580C, - 13133: 0x000057F1, - 13134: 0x000057E9, - 13135: 0x000057F0, - 13136: 0x0000580D, - 13137: 0x00005804, - 13138: 0x0000595C, - 13139: 0x00005A60, - 13140: 0x00005A58, - 13141: 0x00005A55, - 13142: 0x00005A67, - 13143: 0x00005A5E, - 13144: 0x00005A38, - 13145: 0x00005A35, - 13146: 0x00005A6D, - 13147: 0x00005A50, - 13148: 0x00005A5F, - 13149: 0x00005A65, - 13150: 0x00005A6C, - 13151: 0x00005A53, - 13152: 0x00005A64, - 13153: 0x00005A57, - 13154: 0x00005A43, - 13155: 0x00005A5D, - 13156: 0x00005A52, - 13157: 0x00005A44, - 13158: 0x00005A5B, - 13159: 0x00005A48, - 13160: 0x00005A8E, - 13161: 0x00005A3E, - 13162: 0x00005A4D, - 13163: 0x00005A39, - 13164: 0x00005A4C, - 13165: 0x00005A70, - 13166: 0x00005A69, - 13167: 0x00005A47, - 13168: 0x00005A51, - 13169: 0x00005A56, - 13170: 0x00005A42, - 13171: 0x00005A5C, - 13172: 0x00005B72, - 13173: 0x00005B6E, - 13174: 0x00005BC1, - 13175: 0x00005BC0, - 13176: 0x00005C59, - 13177: 0x00005D1E, - 13178: 0x00005D0B, - 13179: 0x00005D1D, - 13180: 0x00005D1A, - 13181: 0x00005D20, - 13182: 0x00005D0C, - 13183: 0x00005D28, - 13184: 0x00005D0D, - 13185: 0x00005D26, - 13186: 0x00005D25, - 13187: 0x00005D0F, - 13188: 0x00005D30, - 13189: 0x00005D12, - 13190: 0x00005D23, - 13191: 0x00005D1F, - 13192: 0x00005D2E, - 13193: 0x00005E3E, - 13194: 0x00005E34, - 13195: 0x00005EB1, - 13196: 0x00005EB4, - 13197: 0x00005EB9, - 13198: 0x00005EB2, - 13199: 0x00005EB3, - 13200: 0x00005F36, - 13201: 0x00005F38, - 13202: 0x00005F9B, - 13203: 0x00005F96, - 13204: 0x00005F9F, - 13205: 0x0000608A, - 13206: 0x00006090, - 13207: 0x00006086, - 13208: 0x000060BE, - 13209: 0x000060B0, - 13210: 0x000060BA, - 13211: 0x000060D3, - 13212: 0x000060D4, - 13213: 0x000060CF, - 13214: 0x000060E4, - 13215: 0x000060D9, - 13216: 0x000060DD, - 13217: 0x000060C8, - 13218: 0x000060B1, - 13219: 0x000060DB, - 13220: 0x000060B7, - 13221: 0x000060CA, - 13222: 0x000060BF, - 13223: 0x000060C3, - 13224: 0x000060CD, - 13225: 0x000060C0, - 13226: 0x00006332, - 13227: 0x00006365, - 13228: 0x0000638A, - 13229: 0x00006382, - 13230: 0x0000637D, - 13231: 0x000063BD, - 13232: 0x0000639E, - 13233: 0x000063AD, - 13234: 0x0000639D, - 13235: 0x00006397, - 13236: 0x000063AB, - 13237: 0x0000638E, - 13238: 0x0000636F, - 13239: 0x00006387, - 13240: 0x00006390, - 13241: 0x0000636E, - 13242: 0x000063AF, - 13243: 0x00006375, - 13244: 0x0000639C, - 13245: 0x0000636D, - 13246: 0x000063AE, - 13247: 0x0000637C, - 13248: 0x000063A4, - 13249: 0x0000633B, - 13250: 0x0000639F, - 13251: 0x00006378, - 13252: 0x00006385, - 13253: 0x00006381, - 13254: 0x00006391, - 13255: 0x0000638D, - 13256: 0x00006370, - 13257: 0x00006553, - 13258: 0x000065CD, - 13259: 0x00006665, - 13260: 0x00006661, - 13261: 0x0000665B, - 13262: 0x00006659, - 13263: 0x0000665C, - 13264: 0x00006662, - 13265: 0x00006718, - 13266: 0x00006879, - 13267: 0x00006887, - 13268: 0x00006890, - 13269: 0x0000689C, - 13270: 0x0000686D, - 13271: 0x0000686E, - 13272: 0x000068AE, - 13273: 0x000068AB, - 13274: 0x00006956, - 13275: 0x0000686F, - 13276: 0x000068A3, - 13277: 0x000068AC, - 13278: 0x000068A9, - 13279: 0x00006875, - 13280: 0x00006874, - 13281: 0x000068B2, - 13282: 0x0000688F, - 13283: 0x00006877, - 13284: 0x00006892, - 13285: 0x0000687C, - 13286: 0x0000686B, - 13287: 0x00006872, - 13288: 0x000068AA, - 13289: 0x00006880, - 13290: 0x00006871, - 13291: 0x0000687E, - 13292: 0x0000689B, - 13293: 0x00006896, - 13294: 0x0000688B, - 13295: 0x000068A0, - 13296: 0x00006889, - 13297: 0x000068A4, - 13298: 0x00006878, - 13299: 0x0000687B, - 13300: 0x00006891, - 13301: 0x0000688C, - 13302: 0x0000688A, - 13303: 0x0000687D, - 13304: 0x00006B36, - 13305: 0x00006B33, - 13306: 0x00006B37, - 13307: 0x00006B38, - 13308: 0x00006B91, - 13309: 0x00006B8F, - 13310: 0x00006B8D, - 13311: 0x00006B8E, - 13312: 0x00006B8C, - 13313: 0x00006C2A, - 13314: 0x00006DC0, - 13315: 0x00006DAB, - 13316: 0x00006DB4, - 13317: 0x00006DB3, - 13318: 0x00006E74, - 13319: 0x00006DAC, - 13320: 0x00006DE9, - 13321: 0x00006DE2, - 13322: 0x00006DB7, - 13323: 0x00006DF6, - 13324: 0x00006DD4, - 13325: 0x00006E00, - 13326: 0x00006DC8, - 13327: 0x00006DE0, - 13328: 0x00006DDF, - 13329: 0x00006DD6, - 13330: 0x00006DBE, - 13331: 0x00006DE5, - 13332: 0x00006DDC, - 13333: 0x00006DDD, - 13334: 0x00006DDB, - 13335: 0x00006DF4, - 13336: 0x00006DCA, - 13337: 0x00006DBD, - 13338: 0x00006DED, - 13339: 0x00006DF0, - 13340: 0x00006DBA, - 13341: 0x00006DD5, - 13342: 0x00006DC2, - 13343: 0x00006DCF, - 13344: 0x00006DC9, - 13345: 0x00006DD0, - 13346: 0x00006DF2, - 13347: 0x00006DD3, - 13348: 0x00006DFD, - 13349: 0x00006DD7, - 13350: 0x00006DCD, - 13351: 0x00006DE3, - 13352: 0x00006DBB, - 13353: 0x000070FA, - 13354: 0x0000710D, - 13355: 0x000070F7, - 13356: 0x00007117, - 13357: 0x000070F4, - 13358: 0x0000710C, - 13359: 0x000070F0, - 13360: 0x00007104, - 13361: 0x000070F3, - 13362: 0x00007110, - 13363: 0x000070FC, - 13364: 0x000070FF, - 13365: 0x00007106, - 13366: 0x00007113, - 13367: 0x00007100, - 13368: 0x000070F8, - 13369: 0x000070F6, - 13370: 0x0000710B, - 13371: 0x00007102, - 13372: 0x0000710E, - 13373: 0x0000727E, - 13374: 0x0000727B, - 13375: 0x0000727C, - 13376: 0x0000727F, - 13377: 0x0000731D, - 13378: 0x00007317, - 13379: 0x00007307, - 13380: 0x00007311, - 13381: 0x00007318, - 13382: 0x0000730A, - 13383: 0x00007308, - 13384: 0x000072FF, - 13385: 0x0000730F, - 13386: 0x0000731E, - 13387: 0x00007388, - 13388: 0x000073F6, - 13389: 0x000073F8, - 13390: 0x000073F5, - 13391: 0x00007404, - 13392: 0x00007401, - 13393: 0x000073FD, - 13394: 0x00007407, - 13395: 0x00007400, - 13396: 0x000073FA, - 13397: 0x000073FC, - 13398: 0x000073FF, - 13399: 0x0000740C, - 13400: 0x0000740B, - 13401: 0x000073F4, - 13402: 0x00007408, - 13403: 0x00007564, - 13404: 0x00007563, - 13405: 0x000075CE, - 13406: 0x000075D2, - 13407: 0x000075CF, - 13408: 0x000075CB, - 13409: 0x000075CC, - 13410: 0x000075D1, - 13411: 0x000075D0, - 13412: 0x0000768F, - 13413: 0x00007689, - 13414: 0x000076D3, - 13415: 0x00007739, - 13416: 0x0000772F, - 13417: 0x0000772D, - 13418: 0x00007731, - 13419: 0x00007732, - 13420: 0x00007734, - 13421: 0x00007733, - 13422: 0x0000773D, - 13423: 0x00007725, - 13424: 0x0000773B, - 13425: 0x00007735, - 13426: 0x00007848, - 13427: 0x00007852, - 13428: 0x00007849, - 13429: 0x0000784D, - 13430: 0x0000784A, - 13431: 0x0000784C, - 13432: 0x00007826, - 13433: 0x00007845, - 13434: 0x00007850, - 13435: 0x00007964, - 13436: 0x00007967, - 13437: 0x00007969, - 13438: 0x0000796A, - 13439: 0x00007963, - 13440: 0x0000796B, - 13441: 0x00007961, - 13442: 0x000079BB, - 13443: 0x000079FA, - 13444: 0x000079F8, - 13445: 0x000079F6, - 13446: 0x000079F7, - 13447: 0x00007A8F, - 13448: 0x00007A94, - 13449: 0x00007A90, - 13450: 0x00007B35, - 13451: 0x00007B47, - 13452: 0x00007B34, - 13453: 0x00007B25, - 13454: 0x00007B30, - 13455: 0x00007B22, - 13456: 0x00007B24, - 13457: 0x00007B33, - 13458: 0x00007B18, - 13459: 0x00007B2A, - 13460: 0x00007B1D, - 13461: 0x00007B31, - 13462: 0x00007B2B, - 13463: 0x00007B2D, - 13464: 0x00007B2F, - 13465: 0x00007B32, - 13466: 0x00007B38, - 13467: 0x00007B1A, - 13468: 0x00007B23, - 13469: 0x00007C94, - 13470: 0x00007C98, - 13471: 0x00007C96, - 13472: 0x00007CA3, - 13473: 0x00007D35, - 13474: 0x00007D3D, - 13475: 0x00007D38, - 13476: 0x00007D36, - 13477: 0x00007D3A, - 13478: 0x00007D45, - 13479: 0x00007D2C, - 13480: 0x00007D29, - 13481: 0x00007D41, - 13482: 0x00007D47, - 13483: 0x00007D3E, - 13484: 0x00007D3F, - 13485: 0x00007D4A, - 13486: 0x00007D3B, - 13487: 0x00007D28, - 13488: 0x00007F63, - 13489: 0x00007F95, - 13490: 0x00007F9C, - 13491: 0x00007F9D, - 13492: 0x00007F9B, - 13493: 0x00007FCA, - 13494: 0x00007FCB, - 13495: 0x00007FCD, - 13496: 0x00007FD0, - 13497: 0x00007FD1, - 13498: 0x00007FC7, - 13499: 0x00007FCF, - 13500: 0x00007FC9, - 13501: 0x0000801F, - 13502: 0x0000801E, - 13503: 0x0000801B, - 13504: 0x00008047, - 13505: 0x00008043, - 13506: 0x00008048, - 13507: 0x00008118, - 13508: 0x00008125, - 13509: 0x00008119, - 13510: 0x0000811B, - 13511: 0x0000812D, - 13512: 0x0000811F, - 13513: 0x0000812C, - 13514: 0x0000811E, - 13515: 0x00008121, - 13516: 0x00008115, - 13517: 0x00008127, - 13518: 0x0000811D, - 13519: 0x00008122, - 13520: 0x00008211, - 13521: 0x00008238, - 13522: 0x00008233, - 13523: 0x0000823A, - 13524: 0x00008234, - 13525: 0x00008232, - 13526: 0x00008274, - 13527: 0x00008390, - 13528: 0x000083A3, - 13529: 0x000083A8, - 13530: 0x0000838D, - 13531: 0x0000837A, - 13532: 0x00008373, - 13533: 0x000083A4, - 13534: 0x00008374, - 13535: 0x0000838F, - 13536: 0x00008381, - 13537: 0x00008395, - 13538: 0x00008399, - 13539: 0x00008375, - 13540: 0x00008394, - 13541: 0x000083A9, - 13542: 0x0000837D, - 13543: 0x00008383, - 13544: 0x0000838C, - 13545: 0x0000839D, - 13546: 0x0000839B, - 13547: 0x000083AA, - 13548: 0x0000838B, - 13549: 0x0000837E, - 13550: 0x000083A5, - 13551: 0x000083AF, - 13552: 0x00008388, - 13553: 0x00008397, - 13554: 0x000083B0, - 13555: 0x0000837F, - 13556: 0x000083A6, - 13557: 0x00008387, - 13558: 0x000083AE, - 13559: 0x00008376, - 13560: 0x0000839A, - 13561: 0x00008659, - 13562: 0x00008656, - 13563: 0x000086BF, - 13564: 0x000086B7, - 13565: 0x000086C2, - 13566: 0x000086C1, - 13567: 0x000086C5, - 13568: 0x000086BA, - 13569: 0x000086B0, - 13570: 0x000086C8, - 13571: 0x000086B9, - 13572: 0x000086B3, - 13573: 0x000086B8, - 13574: 0x000086CC, - 13575: 0x000086B4, - 13576: 0x000086BB, - 13577: 0x000086BC, - 13578: 0x000086C3, - 13579: 0x000086BD, - 13580: 0x000086BE, - 13581: 0x00008852, - 13582: 0x00008889, - 13583: 0x00008895, - 13584: 0x000088A8, - 13585: 0x000088A2, - 13586: 0x000088AA, - 13587: 0x0000889A, - 13588: 0x00008891, - 13589: 0x000088A1, - 13590: 0x0000889F, - 13591: 0x00008898, - 13592: 0x000088A7, - 13593: 0x00008899, - 13594: 0x0000889B, - 13595: 0x00008897, - 13596: 0x000088A4, - 13597: 0x000088AC, - 13598: 0x0000888C, - 13599: 0x00008893, - 13600: 0x0000888E, - 13601: 0x00008982, - 13602: 0x000089D6, - 13603: 0x000089D9, - 13604: 0x000089D5, - 13605: 0x00008A30, - 13606: 0x00008A27, - 13607: 0x00008A2C, - 13608: 0x00008A1E, - 13609: 0x00008C39, - 13610: 0x00008C3B, - 13611: 0x00008C5C, - 13612: 0x00008C5D, - 13613: 0x00008C7D, - 13614: 0x00008CA5, - 13615: 0x00008D7D, - 13616: 0x00008D7B, - 13617: 0x00008D79, - 13618: 0x00008DBC, - 13619: 0x00008DC2, - 13620: 0x00008DB9, - 13621: 0x00008DBF, - 13622: 0x00008DC1, - 13623: 0x00008ED8, - 13624: 0x00008EDE, - 13625: 0x00008EDD, - 13626: 0x00008EDC, - 13627: 0x00008ED7, - 13628: 0x00008EE0, - 13629: 0x00008EE1, - 13630: 0x00009024, - 13631: 0x0000900B, - 13632: 0x00009011, - 13633: 0x0000901C, - 13634: 0x0000900C, - 13635: 0x00009021, - 13636: 0x000090EF, - 13637: 0x000090EA, - 13638: 0x000090F0, - 13639: 0x000090F4, - 13640: 0x000090F2, - 13641: 0x000090F3, - 13642: 0x000090D4, - 13643: 0x000090EB, - 13644: 0x000090EC, - 13645: 0x000090E9, - 13646: 0x00009156, - 13647: 0x00009158, - 13648: 0x0000915A, - 13649: 0x00009153, - 13650: 0x00009155, - 13651: 0x000091EC, - 13652: 0x000091F4, - 13653: 0x000091F1, - 13654: 0x000091F3, - 13655: 0x000091F8, - 13656: 0x000091E4, - 13657: 0x000091F9, - 13658: 0x000091EA, - 13659: 0x000091EB, - 13660: 0x000091F7, - 13661: 0x000091E8, - 13662: 0x000091EE, - 13663: 0x0000957A, - 13664: 0x00009586, - 13665: 0x00009588, - 13666: 0x0000967C, - 13667: 0x0000966D, - 13668: 0x0000966B, - 13669: 0x00009671, - 13670: 0x0000966F, - 13671: 0x000096BF, - 13672: 0x0000976A, - 13673: 0x00009804, - 13674: 0x000098E5, - 13675: 0x00009997, - 13676: 0x0000509B, - 13677: 0x00005095, - 13678: 0x00005094, - 13679: 0x0000509E, - 13680: 0x0000508B, - 13681: 0x000050A3, - 13682: 0x00005083, - 13683: 0x0000508C, - 13684: 0x0000508E, - 13685: 0x0000509D, - 13686: 0x00005068, - 13687: 0x0000509C, - 13688: 0x00005092, - 13689: 0x00005082, - 13690: 0x00005087, - 13691: 0x0000515F, - 13692: 0x000051D4, - 13693: 0x00005312, - 13694: 0x00005311, - 13695: 0x000053A4, - 13696: 0x000053A7, - 13697: 0x00005591, - 13698: 0x000055A8, - 13699: 0x000055A5, - 13700: 0x000055AD, - 13701: 0x00005577, - 13702: 0x00005645, - 13703: 0x000055A2, - 13704: 0x00005593, - 13705: 0x00005588, - 13706: 0x0000558F, - 13707: 0x000055B5, - 13708: 0x00005581, - 13709: 0x000055A3, - 13710: 0x00005592, - 13711: 0x000055A4, - 13712: 0x0000557D, - 13713: 0x0000558C, - 13714: 0x000055A6, - 13715: 0x0000557F, - 13716: 0x00005595, - 13717: 0x000055A1, - 13718: 0x0000558E, - 13719: 0x0000570C, - 13720: 0x00005829, - 13721: 0x00005837, - 13722: 0x00005819, - 13723: 0x0000581E, - 13724: 0x00005827, - 13725: 0x00005823, - 13726: 0x00005828, - 13727: 0x000057F5, - 13728: 0x00005848, - 13729: 0x00005825, - 13730: 0x0000581C, - 13731: 0x0000581B, - 13732: 0x00005833, - 13733: 0x0000583F, - 13734: 0x00005836, - 13735: 0x0000582E, - 13736: 0x00005839, - 13737: 0x00005838, - 13738: 0x0000582D, - 13739: 0x0000582C, - 13740: 0x0000583B, - 13741: 0x00005961, - 13742: 0x00005AAF, - 13743: 0x00005A94, - 13744: 0x00005A9F, - 13745: 0x00005A7A, - 13746: 0x00005AA2, - 13747: 0x00005A9E, - 13748: 0x00005A78, - 13749: 0x00005AA6, - 13750: 0x00005A7C, - 13751: 0x00005AA5, - 13752: 0x00005AAC, - 13753: 0x00005A95, - 13754: 0x00005AAE, - 13755: 0x00005A37, - 13756: 0x00005A84, - 13757: 0x00005A8A, - 13758: 0x00005A97, - 13759: 0x00005A83, - 13760: 0x00005A8B, - 13761: 0x00005AA9, - 13762: 0x00005A7B, - 13763: 0x00005A7D, - 13764: 0x00005A8C, - 13765: 0x00005A9C, - 13766: 0x00005A8F, - 13767: 0x00005A93, - 13768: 0x00005A9D, - 13769: 0x00005BEA, - 13770: 0x00005BCD, - 13771: 0x00005BCB, - 13772: 0x00005BD4, - 13773: 0x00005BD1, - 13774: 0x00005BCA, - 13775: 0x00005BCE, - 13776: 0x00005C0C, - 13777: 0x00005C30, - 13778: 0x00005D37, - 13779: 0x00005D43, - 13780: 0x00005D6B, - 13781: 0x00005D41, - 13782: 0x00005D4B, - 13783: 0x00005D3F, - 13784: 0x00005D35, - 13785: 0x00005D51, - 13786: 0x00005D4E, - 13787: 0x00005D55, - 13788: 0x00005D33, - 13789: 0x00005D3A, - 13790: 0x00005D52, - 13791: 0x00005D3D, - 13792: 0x00005D31, - 13793: 0x00005D59, - 13794: 0x00005D42, - 13795: 0x00005D39, - 13796: 0x00005D49, - 13797: 0x00005D38, - 13798: 0x00005D3C, - 13799: 0x00005D32, - 13800: 0x00005D36, - 13801: 0x00005D40, - 13802: 0x00005D45, - 13803: 0x00005E44, - 13804: 0x00005E41, - 13805: 0x00005F58, - 13806: 0x00005FA6, - 13807: 0x00005FA5, - 13808: 0x00005FAB, - 13809: 0x000060C9, - 13810: 0x000060B9, - 13811: 0x000060CC, - 13812: 0x000060E2, - 13813: 0x000060CE, - 13814: 0x000060C4, - 13815: 0x00006114, - 13816: 0x000060F2, - 13817: 0x0000610A, - 13818: 0x00006116, - 13819: 0x00006105, - 13820: 0x000060F5, - 13821: 0x00006113, - 13822: 0x000060F8, - 13823: 0x000060FC, - 13824: 0x000060FE, - 13825: 0x000060C1, - 13826: 0x00006103, - 13827: 0x00006118, - 13828: 0x0000611D, - 13829: 0x00006110, - 13830: 0x000060FF, - 13831: 0x00006104, - 13832: 0x0000610B, - 13833: 0x0000624A, - 13834: 0x00006394, - 13835: 0x000063B1, - 13836: 0x000063B0, - 13837: 0x000063CE, - 13838: 0x000063E5, - 13839: 0x000063E8, - 13840: 0x000063EF, - 13841: 0x000063C3, - 13842: 0x0000649D, - 13843: 0x000063F3, - 13844: 0x000063CA, - 13845: 0x000063E0, - 13846: 0x000063F6, - 13847: 0x000063D5, - 13848: 0x000063F2, - 13849: 0x000063F5, - 13850: 0x00006461, - 13851: 0x000063DF, - 13852: 0x000063BE, - 13853: 0x000063DD, - 13854: 0x000063DC, - 13855: 0x000063C4, - 13856: 0x000063D8, - 13857: 0x000063D3, - 13858: 0x000063C2, - 13859: 0x000063C7, - 13860: 0x000063CC, - 13861: 0x000063CB, - 13862: 0x000063C8, - 13863: 0x000063F0, - 13864: 0x000063D7, - 13865: 0x000063D9, - 13866: 0x00006532, - 13867: 0x00006567, - 13868: 0x0000656A, - 13869: 0x00006564, - 13870: 0x0000655C, - 13871: 0x00006568, - 13872: 0x00006565, - 13873: 0x0000658C, - 13874: 0x0000659D, - 13875: 0x0000659E, - 13876: 0x000065AE, - 13877: 0x000065D0, - 13878: 0x000065D2, - 13879: 0x0000667C, - 13880: 0x0000666C, - 13881: 0x0000667B, - 13882: 0x00006680, - 13883: 0x00006671, - 13884: 0x00006679, - 13885: 0x0000666A, - 13886: 0x00006672, - 13887: 0x00006701, - 13888: 0x0000690C, - 13889: 0x000068D3, - 13890: 0x00006904, - 13891: 0x000068DC, - 13892: 0x0000692A, - 13893: 0x000068EC, - 13894: 0x000068EA, - 13895: 0x000068F1, - 13896: 0x0000690F, - 13897: 0x000068D6, - 13898: 0x000068F7, - 13899: 0x000068EB, - 13900: 0x000068E4, - 13901: 0x000068F6, - 13902: 0x00006913, - 13903: 0x00006910, - 13904: 0x000068F3, - 13905: 0x000068E1, - 13906: 0x00006907, - 13907: 0x000068CC, - 13908: 0x00006908, - 13909: 0x00006970, - 13910: 0x000068B4, - 13911: 0x00006911, - 13912: 0x000068EF, - 13913: 0x000068C6, - 13914: 0x00006914, - 13915: 0x000068F8, - 13916: 0x000068D0, - 13917: 0x000068FD, - 13918: 0x000068FC, - 13919: 0x000068E8, - 13920: 0x0000690B, - 13921: 0x0000690A, - 13922: 0x00006917, - 13923: 0x000068CE, - 13924: 0x000068C8, - 13925: 0x000068DD, - 13926: 0x000068DE, - 13927: 0x000068E6, - 13928: 0x000068F4, - 13929: 0x000068D1, - 13930: 0x00006906, - 13931: 0x000068D4, - 13932: 0x000068E9, - 13933: 0x00006915, - 13934: 0x00006925, - 13935: 0x000068C7, - 13936: 0x00006B39, - 13937: 0x00006B3B, - 13938: 0x00006B3F, - 13939: 0x00006B3C, - 13940: 0x00006B94, - 13941: 0x00006B97, - 13942: 0x00006B99, - 13943: 0x00006B95, - 13944: 0x00006BBD, - 13945: 0x00006BF0, - 13946: 0x00006BF2, - 13947: 0x00006BF3, - 13948: 0x00006C30, - 13949: 0x00006DFC, - 13950: 0x00006E46, - 13951: 0x00006E47, - 13952: 0x00006E1F, - 13953: 0x00006E49, - 13954: 0x00006E88, - 13955: 0x00006E3C, - 13956: 0x00006E3D, - 13957: 0x00006E45, - 13958: 0x00006E62, - 13959: 0x00006E2B, - 13960: 0x00006E3F, - 13961: 0x00006E41, - 13962: 0x00006E5D, - 13963: 0x00006E73, - 13964: 0x00006E1C, - 13965: 0x00006E33, - 13966: 0x00006E4B, - 13967: 0x00006E40, - 13968: 0x00006E51, - 13969: 0x00006E3B, - 13970: 0x00006E03, - 13971: 0x00006E2E, - 13972: 0x00006E5E, - 13973: 0x00006E68, - 13974: 0x00006E5C, - 13975: 0x00006E61, - 13976: 0x00006E31, - 13977: 0x00006E28, - 13978: 0x00006E60, - 13979: 0x00006E71, - 13980: 0x00006E6B, - 13981: 0x00006E39, - 13982: 0x00006E22, - 13983: 0x00006E30, - 13984: 0x00006E53, - 13985: 0x00006E65, - 13986: 0x00006E27, - 13987: 0x00006E78, - 13988: 0x00006E64, - 13989: 0x00006E77, - 13990: 0x00006E55, - 13991: 0x00006E79, - 13992: 0x00006E52, - 13993: 0x00006E66, - 13994: 0x00006E35, - 13995: 0x00006E36, - 13996: 0x00006E5A, - 13997: 0x00007120, - 13998: 0x0000711E, - 13999: 0x0000712F, - 14000: 0x000070FB, - 14001: 0x0000712E, - 14002: 0x00007131, - 14003: 0x00007123, - 14004: 0x00007125, - 14005: 0x00007122, - 14006: 0x00007132, - 14007: 0x0000711F, - 14008: 0x00007128, - 14009: 0x0000713A, - 14010: 0x0000711B, - 14011: 0x0000724B, - 14012: 0x0000725A, - 14013: 0x00007288, - 14014: 0x00007289, - 14015: 0x00007286, - 14016: 0x00007285, - 14017: 0x0000728B, - 14018: 0x00007312, - 14019: 0x0000730B, - 14020: 0x00007330, - 14021: 0x00007322, - 14022: 0x00007331, - 14023: 0x00007333, - 14024: 0x00007327, - 14025: 0x00007332, - 14026: 0x0000732D, - 14027: 0x00007326, - 14028: 0x00007323, - 14029: 0x00007335, - 14030: 0x0000730C, - 14031: 0x0000742E, - 14032: 0x0000742C, - 14033: 0x00007430, - 14034: 0x0000742B, - 14035: 0x00007416, - 14036: 0x0000741A, - 14037: 0x00007421, - 14038: 0x0000742D, - 14039: 0x00007431, - 14040: 0x00007424, - 14041: 0x00007423, - 14042: 0x0000741D, - 14043: 0x00007429, - 14044: 0x00007420, - 14045: 0x00007432, - 14046: 0x000074FB, - 14047: 0x0000752F, - 14048: 0x0000756F, - 14049: 0x0000756C, - 14050: 0x000075E7, - 14051: 0x000075DA, - 14052: 0x000075E1, - 14053: 0x000075E6, - 14054: 0x000075DD, - 14055: 0x000075DF, - 14056: 0x000075E4, - 14057: 0x000075D7, - 14058: 0x00007695, - 14059: 0x00007692, - 14060: 0x000076DA, - 14061: 0x00007746, - 14062: 0x00007747, - 14063: 0x00007744, - 14064: 0x0000774D, - 14065: 0x00007745, - 14066: 0x0000774A, - 14067: 0x0000774E, - 14068: 0x0000774B, - 14069: 0x0000774C, - 14070: 0x000077DE, - 14071: 0x000077EC, - 14072: 0x00007860, - 14073: 0x00007864, - 14074: 0x00007865, - 14075: 0x0000785C, - 14076: 0x0000786D, - 14077: 0x00007871, - 14078: 0x0000786A, - 14079: 0x0000786E, - 14080: 0x00007870, - 14081: 0x00007869, - 14082: 0x00007868, - 14083: 0x0000785E, - 14084: 0x00007862, - 14085: 0x00007974, - 14086: 0x00007973, - 14087: 0x00007972, - 14088: 0x00007970, - 14089: 0x00007A02, - 14090: 0x00007A0A, - 14091: 0x00007A03, - 14092: 0x00007A0C, - 14093: 0x00007A04, - 14094: 0x00007A99, - 14095: 0x00007AE6, - 14096: 0x00007AE4, - 14097: 0x00007B4A, - 14098: 0x00007B3B, - 14099: 0x00007B44, - 14100: 0x00007B48, - 14101: 0x00007B4C, - 14102: 0x00007B4E, - 14103: 0x00007B40, - 14104: 0x00007B58, - 14105: 0x00007B45, - 14106: 0x00007CA2, - 14107: 0x00007C9E, - 14108: 0x00007CA8, - 14109: 0x00007CA1, - 14110: 0x00007D58, - 14111: 0x00007D6F, - 14112: 0x00007D63, - 14113: 0x00007D53, - 14114: 0x00007D56, - 14115: 0x00007D67, - 14116: 0x00007D6A, - 14117: 0x00007D4F, - 14118: 0x00007D6D, - 14119: 0x00007D5C, - 14120: 0x00007D6B, - 14121: 0x00007D52, - 14122: 0x00007D54, - 14123: 0x00007D69, - 14124: 0x00007D51, - 14125: 0x00007D5F, - 14126: 0x00007D4E, - 14127: 0x00007F3E, - 14128: 0x00007F3F, - 14129: 0x00007F65, - 14130: 0x00007F66, - 14131: 0x00007FA2, - 14132: 0x00007FA0, - 14133: 0x00007FA1, - 14134: 0x00007FD7, - 14135: 0x00008051, - 14136: 0x0000804F, - 14137: 0x00008050, - 14138: 0x000080FE, - 14139: 0x000080D4, - 14140: 0x00008143, - 14141: 0x0000814A, - 14142: 0x00008152, - 14143: 0x0000814F, - 14144: 0x00008147, - 14145: 0x0000813D, - 14146: 0x0000814D, - 14147: 0x0000813A, - 14148: 0x000081E6, - 14149: 0x000081EE, - 14150: 0x000081F7, - 14151: 0x000081F8, - 14152: 0x000081F9, - 14153: 0x00008204, - 14154: 0x0000823C, - 14155: 0x0000823D, - 14156: 0x0000823F, - 14157: 0x00008275, - 14158: 0x0000833B, - 14159: 0x000083CF, - 14160: 0x000083F9, - 14161: 0x00008423, - 14162: 0x000083C0, - 14163: 0x000083E8, - 14164: 0x00008412, - 14165: 0x000083E7, - 14166: 0x000083E4, - 14167: 0x000083FC, - 14168: 0x000083F6, - 14169: 0x00008410, - 14170: 0x000083C6, - 14171: 0x000083C8, - 14172: 0x000083EB, - 14173: 0x000083E3, - 14174: 0x000083BF, - 14175: 0x00008401, - 14176: 0x000083DD, - 14177: 0x000083E5, - 14178: 0x000083D8, - 14179: 0x000083FF, - 14180: 0x000083E1, - 14181: 0x000083CB, - 14182: 0x000083CE, - 14183: 0x000083D6, - 14184: 0x000083F5, - 14185: 0x000083C9, - 14186: 0x00008409, - 14187: 0x0000840F, - 14188: 0x000083DE, - 14189: 0x00008411, - 14190: 0x00008406, - 14191: 0x000083C2, - 14192: 0x000083F3, - 14193: 0x000083D5, - 14194: 0x000083FA, - 14195: 0x000083C7, - 14196: 0x000083D1, - 14197: 0x000083EA, - 14198: 0x00008413, - 14199: 0x000083C3, - 14200: 0x000083EC, - 14201: 0x000083EE, - 14202: 0x000083C4, - 14203: 0x000083FB, - 14204: 0x000083D7, - 14205: 0x000083E2, - 14206: 0x0000841B, - 14207: 0x000083DB, - 14208: 0x000083FE, - 14209: 0x000086D8, - 14210: 0x000086E2, - 14211: 0x000086E6, - 14212: 0x000086D3, - 14213: 0x000086E3, - 14214: 0x000086DA, - 14215: 0x000086EA, - 14216: 0x000086DD, - 14217: 0x000086EB, - 14218: 0x000086DC, - 14219: 0x000086EC, - 14220: 0x000086E9, - 14221: 0x000086D7, - 14222: 0x000086E8, - 14223: 0x000086D1, - 14224: 0x00008848, - 14225: 0x00008856, - 14226: 0x00008855, - 14227: 0x000088BA, - 14228: 0x000088D7, - 14229: 0x000088B9, - 14230: 0x000088B8, - 14231: 0x000088C0, - 14232: 0x000088BE, - 14233: 0x000088B6, - 14234: 0x000088BC, - 14235: 0x000088B7, - 14236: 0x000088BD, - 14237: 0x000088B2, - 14238: 0x00008901, - 14239: 0x000088C9, - 14240: 0x00008995, - 14241: 0x00008998, - 14242: 0x00008997, - 14243: 0x000089DD, - 14244: 0x000089DA, - 14245: 0x000089DB, - 14246: 0x00008A4E, - 14247: 0x00008A4D, - 14248: 0x00008A39, - 14249: 0x00008A59, - 14250: 0x00008A40, - 14251: 0x00008A57, - 14252: 0x00008A58, - 14253: 0x00008A44, - 14254: 0x00008A45, - 14255: 0x00008A52, - 14256: 0x00008A48, - 14257: 0x00008A51, - 14258: 0x00008A4A, - 14259: 0x00008A4C, - 14260: 0x00008A4F, - 14261: 0x00008C5F, - 14262: 0x00008C81, - 14263: 0x00008C80, - 14264: 0x00008CBA, - 14265: 0x00008CBE, - 14266: 0x00008CB0, - 14267: 0x00008CB9, - 14268: 0x00008CB5, - 14269: 0x00008D84, - 14270: 0x00008D80, - 14271: 0x00008D89, - 14272: 0x00008DD8, - 14273: 0x00008DD3, - 14274: 0x00008DCD, - 14275: 0x00008DC7, - 14276: 0x00008DD6, - 14277: 0x00008DDC, - 14278: 0x00008DCF, - 14279: 0x00008DD5, - 14280: 0x00008DD9, - 14281: 0x00008DC8, - 14282: 0x00008DD7, - 14283: 0x00008DC5, - 14284: 0x00008EEF, - 14285: 0x00008EF7, - 14286: 0x00008EFA, - 14287: 0x00008EF9, - 14288: 0x00008EE6, - 14289: 0x00008EEE, - 14290: 0x00008EE5, - 14291: 0x00008EF5, - 14292: 0x00008EE7, - 14293: 0x00008EE8, - 14294: 0x00008EF6, - 14295: 0x00008EEB, - 14296: 0x00008EF1, - 14297: 0x00008EEC, - 14298: 0x00008EF4, - 14299: 0x00008EE9, - 14300: 0x0000902D, - 14301: 0x00009034, - 14302: 0x0000902F, - 14303: 0x00009106, - 14304: 0x0000912C, - 14305: 0x00009104, - 14306: 0x000090FF, - 14307: 0x000090FC, - 14308: 0x00009108, - 14309: 0x000090F9, - 14310: 0x000090FB, - 14311: 0x00009101, - 14312: 0x00009100, - 14313: 0x00009107, - 14314: 0x00009105, - 14315: 0x00009103, - 14316: 0x00009161, - 14317: 0x00009164, - 14318: 0x0000915F, - 14319: 0x00009162, - 14320: 0x00009160, - 14321: 0x00009201, - 14322: 0x0000920A, - 14323: 0x00009225, - 14324: 0x00009203, - 14325: 0x0000921A, - 14326: 0x00009226, - 14327: 0x0000920F, - 14328: 0x0000920C, - 14329: 0x00009200, - 14330: 0x00009212, - 14331: 0x000091FF, - 14332: 0x000091FD, - 14333: 0x00009206, - 14334: 0x00009204, - 14335: 0x00009227, - 14336: 0x00009202, - 14337: 0x0000921C, - 14338: 0x00009224, - 14339: 0x00009219, - 14340: 0x00009217, - 14341: 0x00009205, - 14342: 0x00009216, - 14343: 0x0000957B, - 14344: 0x0000958D, - 14345: 0x0000958C, - 14346: 0x00009590, - 14347: 0x00009687, - 14348: 0x0000967E, - 14349: 0x00009688, - 14350: 0x00009689, - 14351: 0x00009683, - 14352: 0x00009680, - 14353: 0x000096C2, - 14354: 0x000096C8, - 14355: 0x000096C3, - 14356: 0x000096F1, - 14357: 0x000096F0, - 14358: 0x0000976C, - 14359: 0x00009770, - 14360: 0x0000976E, - 14361: 0x00009807, - 14362: 0x000098A9, - 14363: 0x000098EB, - 14364: 0x00009CE6, - 14365: 0x00009EF9, - 14366: 0x00004E83, - 14367: 0x00004E84, - 14368: 0x00004EB6, - 14369: 0x000050BD, - 14370: 0x000050BF, - 14371: 0x000050C6, - 14372: 0x000050AE, - 14373: 0x000050C4, - 14374: 0x000050CA, - 14375: 0x000050B4, - 14376: 0x000050C8, - 14377: 0x000050C2, - 14378: 0x000050B0, - 14379: 0x000050C1, - 14380: 0x000050BA, - 14381: 0x000050B1, - 14382: 0x000050CB, - 14383: 0x000050C9, - 14384: 0x000050B6, - 14385: 0x000050B8, - 14386: 0x000051D7, - 14387: 0x0000527A, - 14388: 0x00005278, - 14389: 0x0000527B, - 14390: 0x0000527C, - 14391: 0x000055C3, - 14392: 0x000055DB, - 14393: 0x000055CC, - 14394: 0x000055D0, - 14395: 0x000055CB, - 14396: 0x000055CA, - 14397: 0x000055DD, - 14398: 0x000055C0, - 14399: 0x000055D4, - 14400: 0x000055C4, - 14401: 0x000055E9, - 14402: 0x000055BF, - 14403: 0x000055D2, - 14404: 0x0000558D, - 14405: 0x000055CF, - 14406: 0x000055D5, - 14407: 0x000055E2, - 14408: 0x000055D6, - 14409: 0x000055C8, - 14410: 0x000055F2, - 14411: 0x000055CD, - 14412: 0x000055D9, - 14413: 0x000055C2, - 14414: 0x00005714, - 14415: 0x00005853, - 14416: 0x00005868, - 14417: 0x00005864, - 14418: 0x0000584F, - 14419: 0x0000584D, - 14420: 0x00005849, - 14421: 0x0000586F, - 14422: 0x00005855, - 14423: 0x0000584E, - 14424: 0x0000585D, - 14425: 0x00005859, - 14426: 0x00005865, - 14427: 0x0000585B, - 14428: 0x0000583D, - 14429: 0x00005863, - 14430: 0x00005871, - 14431: 0x000058FC, - 14432: 0x00005AC7, - 14433: 0x00005AC4, - 14434: 0x00005ACB, - 14435: 0x00005ABA, - 14436: 0x00005AB8, - 14437: 0x00005AB1, - 14438: 0x00005AB5, - 14439: 0x00005AB0, - 14440: 0x00005ABF, - 14441: 0x00005AC8, - 14442: 0x00005ABB, - 14443: 0x00005AC6, - 14444: 0x00005AB7, - 14445: 0x00005AC0, - 14446: 0x00005ACA, - 14447: 0x00005AB4, - 14448: 0x00005AB6, - 14449: 0x00005ACD, - 14450: 0x00005AB9, - 14451: 0x00005A90, - 14452: 0x00005BD6, - 14453: 0x00005BD8, - 14454: 0x00005BD9, - 14455: 0x00005C1F, - 14456: 0x00005C33, - 14457: 0x00005D71, - 14458: 0x00005D63, - 14459: 0x00005D4A, - 14460: 0x00005D65, - 14461: 0x00005D72, - 14462: 0x00005D6C, - 14463: 0x00005D5E, - 14464: 0x00005D68, - 14465: 0x00005D67, - 14466: 0x00005D62, - 14467: 0x00005DF0, - 14468: 0x00005E4F, - 14469: 0x00005E4E, - 14470: 0x00005E4A, - 14471: 0x00005E4D, - 14472: 0x00005E4B, - 14473: 0x00005EC5, - 14474: 0x00005ECC, - 14475: 0x00005EC6, - 14476: 0x00005ECB, - 14477: 0x00005EC7, - 14478: 0x00005F40, - 14479: 0x00005FAF, - 14480: 0x00005FAD, - 14481: 0x000060F7, - 14482: 0x00006149, - 14483: 0x0000614A, - 14484: 0x0000612B, - 14485: 0x00006145, - 14486: 0x00006136, - 14487: 0x00006132, - 14488: 0x0000612E, - 14489: 0x00006146, - 14490: 0x0000612F, - 14491: 0x0000614F, - 14492: 0x00006129, - 14493: 0x00006140, - 14494: 0x00006220, - 14495: 0x00009168, - 14496: 0x00006223, - 14497: 0x00006225, - 14498: 0x00006224, - 14499: 0x000063C5, - 14500: 0x000063F1, - 14501: 0x000063EB, - 14502: 0x00006410, - 14503: 0x00006412, - 14504: 0x00006409, - 14505: 0x00006420, - 14506: 0x00006424, - 14507: 0x00006433, - 14508: 0x00006443, - 14509: 0x0000641F, - 14510: 0x00006415, - 14511: 0x00006418, - 14512: 0x00006439, - 14513: 0x00006437, - 14514: 0x00006422, - 14515: 0x00006423, - 14516: 0x0000640C, - 14517: 0x00006426, - 14518: 0x00006430, - 14519: 0x00006428, - 14520: 0x00006441, - 14521: 0x00006435, - 14522: 0x0000642F, - 14523: 0x0000640A, - 14524: 0x0000641A, - 14525: 0x00006440, - 14526: 0x00006425, - 14527: 0x00006427, - 14528: 0x0000640B, - 14529: 0x000063E7, - 14530: 0x0000641B, - 14531: 0x0000642E, - 14532: 0x00006421, - 14533: 0x0000640E, - 14534: 0x0000656F, - 14535: 0x00006592, - 14536: 0x000065D3, - 14537: 0x00006686, - 14538: 0x0000668C, - 14539: 0x00006695, - 14540: 0x00006690, - 14541: 0x0000668B, - 14542: 0x0000668A, - 14543: 0x00006699, - 14544: 0x00006694, - 14545: 0x00006678, - 14546: 0x00006720, - 14547: 0x00006966, - 14548: 0x0000695F, - 14549: 0x00006938, - 14550: 0x0000694E, - 14551: 0x00006962, - 14552: 0x00006971, - 14553: 0x0000693F, - 14554: 0x00006945, - 14555: 0x0000696A, - 14556: 0x00006939, - 14557: 0x00006942, - 14558: 0x00006957, - 14559: 0x00006959, - 14560: 0x0000697A, - 14561: 0x00006948, - 14562: 0x00006949, - 14563: 0x00006935, - 14564: 0x0000696C, - 14565: 0x00006933, - 14566: 0x0000693D, - 14567: 0x00006965, - 14568: 0x000068F0, - 14569: 0x00006978, - 14570: 0x00006934, - 14571: 0x00006969, - 14572: 0x00006940, - 14573: 0x0000696F, - 14574: 0x00006944, - 14575: 0x00006976, - 14576: 0x00006958, - 14577: 0x00006941, - 14578: 0x00006974, - 14579: 0x0000694C, - 14580: 0x0000693B, - 14581: 0x0000694B, - 14582: 0x00006937, - 14583: 0x0000695C, - 14584: 0x0000694F, - 14585: 0x00006951, - 14586: 0x00006932, - 14587: 0x00006952, - 14588: 0x0000692F, - 14589: 0x0000697B, - 14590: 0x0000693C, - 14591: 0x00006B46, - 14592: 0x00006B45, - 14593: 0x00006B43, - 14594: 0x00006B42, - 14595: 0x00006B48, - 14596: 0x00006B41, - 14597: 0x00006B9B, - 14598: 0x0000FA0D, - 14599: 0x00006BFB, - 14600: 0x00006BFC, - 14601: 0x00006BF9, - 14602: 0x00006BF7, - 14603: 0x00006BF8, - 14604: 0x00006E9B, - 14605: 0x00006ED6, - 14606: 0x00006EC8, - 14607: 0x00006E8F, - 14608: 0x00006EC0, - 14609: 0x00006E9F, - 14610: 0x00006E93, - 14611: 0x00006E94, - 14612: 0x00006EA0, - 14613: 0x00006EB1, - 14614: 0x00006EB9, - 14615: 0x00006EC6, - 14616: 0x00006ED2, - 14617: 0x00006EBD, - 14618: 0x00006EC1, - 14619: 0x00006E9E, - 14620: 0x00006EC9, - 14621: 0x00006EB7, - 14622: 0x00006EB0, - 14623: 0x00006ECD, - 14624: 0x00006EA6, - 14625: 0x00006ECF, - 14626: 0x00006EB2, - 14627: 0x00006EBE, - 14628: 0x00006EC3, - 14629: 0x00006EDC, - 14630: 0x00006ED8, - 14631: 0x00006E99, - 14632: 0x00006E92, - 14633: 0x00006E8E, - 14634: 0x00006E8D, - 14635: 0x00006EA4, - 14636: 0x00006EA1, - 14637: 0x00006EBF, - 14638: 0x00006EB3, - 14639: 0x00006ED0, - 14640: 0x00006ECA, - 14641: 0x00006E97, - 14642: 0x00006EAE, - 14643: 0x00006EA3, - 14644: 0x00007147, - 14645: 0x00007154, - 14646: 0x00007152, - 14647: 0x00007163, - 14648: 0x00007160, - 14649: 0x00007141, - 14650: 0x0000715D, - 14651: 0x00007162, - 14652: 0x00007172, - 14653: 0x00007178, - 14654: 0x0000716A, - 14655: 0x00007161, - 14656: 0x00007142, - 14657: 0x00007158, - 14658: 0x00007143, - 14659: 0x0000714B, - 14660: 0x00007170, - 14661: 0x0000715F, - 14662: 0x00007150, - 14663: 0x00007153, - 14664: 0x00007144, - 14665: 0x0000714D, - 14666: 0x0000715A, - 14667: 0x0000724F, - 14668: 0x0000728D, - 14669: 0x0000728C, - 14670: 0x00007291, - 14671: 0x00007290, - 14672: 0x0000728E, - 14673: 0x0000733C, - 14674: 0x00007342, - 14675: 0x0000733B, - 14676: 0x0000733A, - 14677: 0x00007340, - 14678: 0x0000734A, - 14679: 0x00007349, - 14680: 0x00007444, - 14681: 0x0000744A, - 14682: 0x0000744B, - 14683: 0x00007452, - 14684: 0x00007451, - 14685: 0x00007457, - 14686: 0x00007440, - 14687: 0x0000744F, - 14688: 0x00007450, - 14689: 0x0000744E, - 14690: 0x00007442, - 14691: 0x00007446, - 14692: 0x0000744D, - 14693: 0x00007454, - 14694: 0x000074E1, - 14695: 0x000074FF, - 14696: 0x000074FE, - 14697: 0x000074FD, - 14698: 0x0000751D, - 14699: 0x00007579, - 14700: 0x00007577, - 14701: 0x00006983, - 14702: 0x000075EF, - 14703: 0x0000760F, - 14704: 0x00007603, - 14705: 0x000075F7, - 14706: 0x000075FE, - 14707: 0x000075FC, - 14708: 0x000075F9, - 14709: 0x000075F8, - 14710: 0x00007610, - 14711: 0x000075FB, - 14712: 0x000075F6, - 14713: 0x000075ED, - 14714: 0x000075F5, - 14715: 0x000075FD, - 14716: 0x00007699, - 14717: 0x000076B5, - 14718: 0x000076DD, - 14719: 0x00007755, - 14720: 0x0000775F, - 14721: 0x00007760, - 14722: 0x00007752, - 14723: 0x00007756, - 14724: 0x0000775A, - 14725: 0x00007769, - 14726: 0x00007767, - 14727: 0x00007754, - 14728: 0x00007759, - 14729: 0x0000776D, - 14730: 0x000077E0, - 14731: 0x00007887, - 14732: 0x0000789A, - 14733: 0x00007894, - 14734: 0x0000788F, - 14735: 0x00007884, - 14736: 0x00007895, - 14737: 0x00007885, - 14738: 0x00007886, - 14739: 0x000078A1, - 14740: 0x00007883, - 14741: 0x00007879, - 14742: 0x00007899, - 14743: 0x00007880, - 14744: 0x00007896, - 14745: 0x0000787B, - 14746: 0x0000797C, - 14747: 0x00007982, - 14748: 0x0000797D, - 14749: 0x00007979, - 14750: 0x00007A11, - 14751: 0x00007A18, - 14752: 0x00007A19, - 14753: 0x00007A12, - 14754: 0x00007A17, - 14755: 0x00007A15, - 14756: 0x00007A22, - 14757: 0x00007A13, - 14758: 0x00007A1B, - 14759: 0x00007A10, - 14760: 0x00007AA3, - 14761: 0x00007AA2, - 14762: 0x00007A9E, - 14763: 0x00007AEB, - 14764: 0x00007B66, - 14765: 0x00007B64, - 14766: 0x00007B6D, - 14767: 0x00007B74, - 14768: 0x00007B69, - 14769: 0x00007B72, - 14770: 0x00007B65, - 14771: 0x00007B73, - 14772: 0x00007B71, - 14773: 0x00007B70, - 14774: 0x00007B61, - 14775: 0x00007B78, - 14776: 0x00007B76, - 14777: 0x00007B63, - 14778: 0x00007CB2, - 14779: 0x00007CB4, - 14780: 0x00007CAF, - 14781: 0x00007D88, - 14782: 0x00007D86, - 14783: 0x00007D80, - 14784: 0x00007D8D, - 14785: 0x00007D7F, - 14786: 0x00007D85, - 14787: 0x00007D7A, - 14788: 0x00007D8E, - 14789: 0x00007D7B, - 14790: 0x00007D83, - 14791: 0x00007D7C, - 14792: 0x00007D8C, - 14793: 0x00007D94, - 14794: 0x00007D84, - 14795: 0x00007D7D, - 14796: 0x00007D92, - 14797: 0x00007F6D, - 14798: 0x00007F6B, - 14799: 0x00007F67, - 14800: 0x00007F68, - 14801: 0x00007F6C, - 14802: 0x00007FA6, - 14803: 0x00007FA5, - 14804: 0x00007FA7, - 14805: 0x00007FDB, - 14806: 0x00007FDC, - 14807: 0x00008021, - 14808: 0x00008164, - 14809: 0x00008160, - 14810: 0x00008177, - 14811: 0x0000815C, - 14812: 0x00008169, - 14813: 0x0000815B, - 14814: 0x00008162, - 14815: 0x00008172, - 14816: 0x00006721, - 14817: 0x0000815E, - 14818: 0x00008176, - 14819: 0x00008167, - 14820: 0x0000816F, - 14821: 0x00008144, - 14822: 0x00008161, - 14823: 0x0000821D, - 14824: 0x00008249, - 14825: 0x00008244, - 14826: 0x00008240, - 14827: 0x00008242, - 14828: 0x00008245, - 14829: 0x000084F1, - 14830: 0x0000843F, - 14831: 0x00008456, - 14832: 0x00008476, - 14833: 0x00008479, - 14834: 0x0000848F, - 14835: 0x0000848D, - 14836: 0x00008465, - 14837: 0x00008451, - 14838: 0x00008440, - 14839: 0x00008486, - 14840: 0x00008467, - 14841: 0x00008430, - 14842: 0x0000844D, - 14843: 0x0000847D, - 14844: 0x0000845A, - 14845: 0x00008459, - 14846: 0x00008474, - 14847: 0x00008473, - 14848: 0x0000845D, - 14849: 0x00008507, - 14850: 0x0000845E, - 14851: 0x00008437, - 14852: 0x0000843A, - 14853: 0x00008434, - 14854: 0x0000847A, - 14855: 0x00008443, - 14856: 0x00008478, - 14857: 0x00008432, - 14858: 0x00008445, - 14859: 0x00008429, - 14860: 0x000083D9, - 14861: 0x0000844B, - 14862: 0x0000842F, - 14863: 0x00008442, - 14864: 0x0000842D, - 14865: 0x0000845F, - 14866: 0x00008470, - 14867: 0x00008439, - 14868: 0x0000844E, - 14869: 0x0000844C, - 14870: 0x00008452, - 14871: 0x0000846F, - 14872: 0x000084C5, - 14873: 0x0000848E, - 14874: 0x0000843B, - 14875: 0x00008447, - 14876: 0x00008436, - 14877: 0x00008433, - 14878: 0x00008468, - 14879: 0x0000847E, - 14880: 0x00008444, - 14881: 0x0000842B, - 14882: 0x00008460, - 14883: 0x00008454, - 14884: 0x0000846E, - 14885: 0x00008450, - 14886: 0x0000870B, - 14887: 0x00008704, - 14888: 0x000086F7, - 14889: 0x0000870C, - 14890: 0x000086FA, - 14891: 0x000086D6, - 14892: 0x000086F5, - 14893: 0x0000874D, - 14894: 0x000086F8, - 14895: 0x0000870E, - 14896: 0x00008709, - 14897: 0x00008701, - 14898: 0x000086F6, - 14899: 0x0000870D, - 14900: 0x00008705, - 14901: 0x000088D6, - 14902: 0x000088CB, - 14903: 0x000088CD, - 14904: 0x000088CE, - 14905: 0x000088DE, - 14906: 0x000088DB, - 14907: 0x000088DA, - 14908: 0x000088CC, - 14909: 0x000088D0, - 14910: 0x00008985, - 14911: 0x0000899B, - 14912: 0x000089DF, - 14913: 0x000089E5, - 14914: 0x000089E4, - 14915: 0x000089E1, - 14916: 0x000089E0, - 14917: 0x000089E2, - 14918: 0x000089DC, - 14919: 0x000089E6, - 14920: 0x00008A76, - 14921: 0x00008A86, - 14922: 0x00008A7F, - 14923: 0x00008A61, - 14924: 0x00008A3F, - 14925: 0x00008A77, - 14926: 0x00008A82, - 14927: 0x00008A84, - 14928: 0x00008A75, - 14929: 0x00008A83, - 14930: 0x00008A81, - 14931: 0x00008A74, - 14932: 0x00008A7A, - 14933: 0x00008C3C, - 14934: 0x00008C4B, - 14935: 0x00008C4A, - 14936: 0x00008C65, - 14937: 0x00008C64, - 14938: 0x00008C66, - 14939: 0x00008C86, - 14940: 0x00008C84, - 14941: 0x00008C85, - 14942: 0x00008CCC, - 14943: 0x00008D68, - 14944: 0x00008D69, - 14945: 0x00008D91, - 14946: 0x00008D8C, - 14947: 0x00008D8E, - 14948: 0x00008D8F, - 14949: 0x00008D8D, - 14950: 0x00008D93, - 14951: 0x00008D94, - 14952: 0x00008D90, - 14953: 0x00008D92, - 14954: 0x00008DF0, - 14955: 0x00008DE0, - 14956: 0x00008DEC, - 14957: 0x00008DF1, - 14958: 0x00008DEE, - 14959: 0x00008DD0, - 14960: 0x00008DE9, - 14961: 0x00008DE3, - 14962: 0x00008DE2, - 14963: 0x00008DE7, - 14964: 0x00008DF2, - 14965: 0x00008DEB, - 14966: 0x00008DF4, - 14967: 0x00008F06, - 14968: 0x00008EFF, - 14969: 0x00008F01, - 14970: 0x00008F00, - 14971: 0x00008F05, - 14972: 0x00008F07, - 14973: 0x00008F08, - 14974: 0x00008F02, - 14975: 0x00008F0B, - 14976: 0x00009052, - 14977: 0x0000903F, - 14978: 0x00009044, - 14979: 0x00009049, - 14980: 0x0000903D, - 14981: 0x00009110, - 14982: 0x0000910D, - 14983: 0x0000910F, - 14984: 0x00009111, - 14985: 0x00009116, - 14986: 0x00009114, - 14987: 0x0000910B, - 14988: 0x0000910E, - 14989: 0x0000916E, - 14990: 0x0000916F, - 14991: 0x00009248, - 14992: 0x00009252, - 14993: 0x00009230, - 14994: 0x0000923A, - 14995: 0x00009266, - 14996: 0x00009233, - 14997: 0x00009265, - 14998: 0x0000925E, - 14999: 0x00009283, - 15000: 0x0000922E, - 15001: 0x0000924A, - 15002: 0x00009246, - 15003: 0x0000926D, - 15004: 0x0000926C, - 15005: 0x0000924F, - 15006: 0x00009260, - 15007: 0x00009267, - 15008: 0x0000926F, - 15009: 0x00009236, - 15010: 0x00009261, - 15011: 0x00009270, - 15012: 0x00009231, - 15013: 0x00009254, - 15014: 0x00009263, - 15015: 0x00009250, - 15016: 0x00009272, - 15017: 0x0000924E, - 15018: 0x00009253, - 15019: 0x0000924C, - 15020: 0x00009256, - 15021: 0x00009232, - 15022: 0x0000959F, - 15023: 0x0000959C, - 15024: 0x0000959E, - 15025: 0x0000959B, - 15026: 0x00009692, - 15027: 0x00009693, - 15028: 0x00009691, - 15029: 0x00009697, - 15030: 0x000096CE, - 15031: 0x000096FA, - 15032: 0x000096FD, - 15033: 0x000096F8, - 15034: 0x000096F5, - 15035: 0x00009773, - 15036: 0x00009777, - 15037: 0x00009778, - 15038: 0x00009772, - 15039: 0x0000980F, - 15040: 0x0000980D, - 15041: 0x0000980E, - 15042: 0x000098AC, - 15043: 0x000098F6, - 15044: 0x000098F9, - 15045: 0x000099AF, - 15046: 0x000099B2, - 15047: 0x000099B0, - 15048: 0x000099B5, - 15049: 0x00009AAD, - 15050: 0x00009AAB, - 15051: 0x00009B5B, - 15052: 0x00009CEA, - 15053: 0x00009CED, - 15054: 0x00009CE7, - 15055: 0x00009E80, - 15056: 0x00009EFD, - 15057: 0x000050E6, - 15058: 0x000050D4, - 15059: 0x000050D7, - 15060: 0x000050E8, - 15061: 0x000050F3, - 15062: 0x000050DB, - 15063: 0x000050EA, - 15064: 0x000050DD, - 15065: 0x000050E4, - 15066: 0x000050D3, - 15067: 0x000050EC, - 15068: 0x000050F0, - 15069: 0x000050EF, - 15070: 0x000050E3, - 15071: 0x000050E0, - 15072: 0x000051D8, - 15073: 0x00005280, - 15074: 0x00005281, - 15075: 0x000052E9, - 15076: 0x000052EB, - 15077: 0x00005330, - 15078: 0x000053AC, - 15079: 0x00005627, - 15080: 0x00005615, - 15081: 0x0000560C, - 15082: 0x00005612, - 15083: 0x000055FC, - 15084: 0x0000560F, - 15085: 0x0000561C, - 15086: 0x00005601, - 15087: 0x00005613, - 15088: 0x00005602, - 15089: 0x000055FA, - 15090: 0x0000561D, - 15091: 0x00005604, - 15092: 0x000055FF, - 15093: 0x000055F9, - 15094: 0x00005889, - 15095: 0x0000587C, - 15096: 0x00005890, - 15097: 0x00005898, - 15098: 0x00005886, - 15099: 0x00005881, - 15100: 0x0000587F, - 15101: 0x00005874, - 15102: 0x0000588B, - 15103: 0x0000587A, - 15104: 0x00005887, - 15105: 0x00005891, - 15106: 0x0000588E, - 15107: 0x00005876, - 15108: 0x00005882, - 15109: 0x00005888, - 15110: 0x0000587B, - 15111: 0x00005894, - 15112: 0x0000588F, - 15113: 0x000058FE, - 15114: 0x0000596B, - 15115: 0x00005ADC, - 15116: 0x00005AEE, - 15117: 0x00005AE5, - 15118: 0x00005AD5, - 15119: 0x00005AEA, - 15120: 0x00005ADA, - 15121: 0x00005AED, - 15122: 0x00005AEB, - 15123: 0x00005AF3, - 15124: 0x00005AE2, - 15125: 0x00005AE0, - 15126: 0x00005ADB, - 15127: 0x00005AEC, - 15128: 0x00005ADE, - 15129: 0x00005ADD, - 15130: 0x00005AD9, - 15131: 0x00005AE8, - 15132: 0x00005ADF, - 15133: 0x00005B77, - 15134: 0x00005BE0, - 15135: 0x00005BE3, - 15136: 0x00005C63, - 15137: 0x00005D82, - 15138: 0x00005D80, - 15139: 0x00005D7D, - 15140: 0x00005D86, - 15141: 0x00005D7A, - 15142: 0x00005D81, - 15143: 0x00005D77, - 15144: 0x00005D8A, - 15145: 0x00005D89, - 15146: 0x00005D88, - 15147: 0x00005D7E, - 15148: 0x00005D7C, - 15149: 0x00005D8D, - 15150: 0x00005D79, - 15151: 0x00005D7F, - 15152: 0x00005E58, - 15153: 0x00005E59, - 15154: 0x00005E53, - 15155: 0x00005ED8, - 15156: 0x00005ED1, - 15157: 0x00005ED7, - 15158: 0x00005ECE, - 15159: 0x00005EDC, - 15160: 0x00005ED5, - 15161: 0x00005ED9, - 15162: 0x00005ED2, - 15163: 0x00005ED4, - 15164: 0x00005F44, - 15165: 0x00005F43, - 15166: 0x00005F6F, - 15167: 0x00005FB6, - 15168: 0x0000612C, - 15169: 0x00006128, - 15170: 0x00006141, - 15171: 0x0000615E, - 15172: 0x00006171, - 15173: 0x00006173, - 15174: 0x00006152, - 15175: 0x00006153, - 15176: 0x00006172, - 15177: 0x0000616C, - 15178: 0x00006180, - 15179: 0x00006174, - 15180: 0x00006154, - 15181: 0x0000617A, - 15182: 0x0000615B, - 15183: 0x00006165, - 15184: 0x0000613B, - 15185: 0x0000616A, - 15186: 0x00006161, - 15187: 0x00006156, - 15188: 0x00006229, - 15189: 0x00006227, - 15190: 0x0000622B, - 15191: 0x0000642B, - 15192: 0x0000644D, - 15193: 0x0000645B, - 15194: 0x0000645D, - 15195: 0x00006474, - 15196: 0x00006476, - 15197: 0x00006472, - 15198: 0x00006473, - 15199: 0x0000647D, - 15200: 0x00006475, - 15201: 0x00006466, - 15202: 0x000064A6, - 15203: 0x0000644E, - 15204: 0x00006482, - 15205: 0x0000645E, - 15206: 0x0000645C, - 15207: 0x0000644B, - 15208: 0x00006453, - 15209: 0x00006460, - 15210: 0x00006450, - 15211: 0x0000647F, - 15212: 0x0000643F, - 15213: 0x0000646C, - 15214: 0x0000646B, - 15215: 0x00006459, - 15216: 0x00006465, - 15217: 0x00006477, - 15218: 0x00006573, - 15219: 0x000065A0, - 15220: 0x000066A1, - 15221: 0x000066A0, - 15222: 0x0000669F, - 15223: 0x00006705, - 15224: 0x00006704, - 15225: 0x00006722, - 15226: 0x000069B1, - 15227: 0x000069B6, - 15228: 0x000069C9, - 15229: 0x000069A0, - 15230: 0x000069CE, - 15231: 0x00006996, - 15232: 0x000069B0, - 15233: 0x000069AC, - 15234: 0x000069BC, - 15235: 0x00006991, - 15236: 0x00006999, - 15237: 0x0000698E, - 15238: 0x000069A7, - 15239: 0x0000698D, - 15240: 0x000069A9, - 15241: 0x000069BE, - 15242: 0x000069AF, - 15243: 0x000069BF, - 15244: 0x000069C4, - 15245: 0x000069BD, - 15246: 0x000069A4, - 15247: 0x000069D4, - 15248: 0x000069B9, - 15249: 0x000069CA, - 15250: 0x0000699A, - 15251: 0x000069CF, - 15252: 0x000069B3, - 15253: 0x00006993, - 15254: 0x000069AA, - 15255: 0x000069A1, - 15256: 0x0000699E, - 15257: 0x000069D9, - 15258: 0x00006997, - 15259: 0x00006990, - 15260: 0x000069C2, - 15261: 0x000069B5, - 15262: 0x000069A5, - 15263: 0x000069C6, - 15264: 0x00006B4A, - 15265: 0x00006B4D, - 15266: 0x00006B4B, - 15267: 0x00006B9E, - 15268: 0x00006B9F, - 15269: 0x00006BA0, - 15270: 0x00006BC3, - 15271: 0x00006BC4, - 15272: 0x00006BFE, - 15273: 0x00006ECE, - 15274: 0x00006EF5, - 15275: 0x00006EF1, - 15276: 0x00006F03, - 15277: 0x00006F25, - 15278: 0x00006EF8, - 15279: 0x00006F37, - 15280: 0x00006EFB, - 15281: 0x00006F2E, - 15282: 0x00006F09, - 15283: 0x00006F4E, - 15284: 0x00006F19, - 15285: 0x00006F1A, - 15286: 0x00006F27, - 15287: 0x00006F18, - 15288: 0x00006F3B, - 15289: 0x00006F12, - 15290: 0x00006EED, - 15291: 0x00006F0A, - 15292: 0x00006F36, - 15293: 0x00006F73, - 15294: 0x00006EF9, - 15295: 0x00006EEE, - 15296: 0x00006F2D, - 15297: 0x00006F40, - 15298: 0x00006F30, - 15299: 0x00006F3C, - 15300: 0x00006F35, - 15301: 0x00006EEB, - 15302: 0x00006F07, - 15303: 0x00006F0E, - 15304: 0x00006F43, - 15305: 0x00006F05, - 15306: 0x00006EFD, - 15307: 0x00006EF6, - 15308: 0x00006F39, - 15309: 0x00006F1C, - 15310: 0x00006EFC, - 15311: 0x00006F3A, - 15312: 0x00006F1F, - 15313: 0x00006F0D, - 15314: 0x00006F1E, - 15315: 0x00006F08, - 15316: 0x00006F21, - 15317: 0x00007187, - 15318: 0x00007190, - 15319: 0x00007189, - 15320: 0x00007180, - 15321: 0x00007185, - 15322: 0x00007182, - 15323: 0x0000718F, - 15324: 0x0000717B, - 15325: 0x00007186, - 15326: 0x00007181, - 15327: 0x00007197, - 15328: 0x00007244, - 15329: 0x00007253, - 15330: 0x00007297, - 15331: 0x00007295, - 15332: 0x00007293, - 15333: 0x00007343, - 15334: 0x0000734D, - 15335: 0x00007351, - 15336: 0x0000734C, - 15337: 0x00007462, - 15338: 0x00007473, - 15339: 0x00007471, - 15340: 0x00007475, - 15341: 0x00007472, - 15342: 0x00007467, - 15343: 0x0000746E, - 15344: 0x00007500, - 15345: 0x00007502, - 15346: 0x00007503, - 15347: 0x0000757D, - 15348: 0x00007590, - 15349: 0x00007616, - 15350: 0x00007608, - 15351: 0x0000760C, - 15352: 0x00007615, - 15353: 0x00007611, - 15354: 0x0000760A, - 15355: 0x00007614, - 15356: 0x000076B8, - 15357: 0x00007781, - 15358: 0x0000777C, - 15359: 0x00007785, - 15360: 0x00007782, - 15361: 0x0000776E, - 15362: 0x00007780, - 15363: 0x0000776F, - 15364: 0x0000777E, - 15365: 0x00007783, - 15366: 0x000078B2, - 15367: 0x000078AA, - 15368: 0x000078B4, - 15369: 0x000078AD, - 15370: 0x000078A8, - 15371: 0x0000787E, - 15372: 0x000078AB, - 15373: 0x0000789E, - 15374: 0x000078A5, - 15375: 0x000078A0, - 15376: 0x000078AC, - 15377: 0x000078A2, - 15378: 0x000078A4, - 15379: 0x00007998, - 15380: 0x0000798A, - 15381: 0x0000798B, - 15382: 0x00007996, - 15383: 0x00007995, - 15384: 0x00007994, - 15385: 0x00007993, - 15386: 0x00007997, - 15387: 0x00007988, - 15388: 0x00007992, - 15389: 0x00007990, - 15390: 0x00007A2B, - 15391: 0x00007A4A, - 15392: 0x00007A30, - 15393: 0x00007A2F, - 15394: 0x00007A28, - 15395: 0x00007A26, - 15396: 0x00007AA8, - 15397: 0x00007AAB, - 15398: 0x00007AAC, - 15399: 0x00007AEE, - 15400: 0x00007B88, - 15401: 0x00007B9C, - 15402: 0x00007B8A, - 15403: 0x00007B91, - 15404: 0x00007B90, - 15405: 0x00007B96, - 15406: 0x00007B8D, - 15407: 0x00007B8C, - 15408: 0x00007B9B, - 15409: 0x00007B8E, - 15410: 0x00007B85, - 15411: 0x00007B98, - 15412: 0x00005284, - 15413: 0x00007B99, - 15414: 0x00007BA4, - 15415: 0x00007B82, - 15416: 0x00007CBB, - 15417: 0x00007CBF, - 15418: 0x00007CBC, - 15419: 0x00007CBA, - 15420: 0x00007DA7, - 15421: 0x00007DB7, - 15422: 0x00007DC2, - 15423: 0x00007DA3, - 15424: 0x00007DAA, - 15425: 0x00007DC1, - 15426: 0x00007DC0, - 15427: 0x00007DC5, - 15428: 0x00007D9D, - 15429: 0x00007DCE, - 15430: 0x00007DC4, - 15431: 0x00007DC6, - 15432: 0x00007DCB, - 15433: 0x00007DCC, - 15434: 0x00007DAF, - 15435: 0x00007DB9, - 15436: 0x00007D96, - 15437: 0x00007DBC, - 15438: 0x00007D9F, - 15439: 0x00007DA6, - 15440: 0x00007DAE, - 15441: 0x00007DA9, - 15442: 0x00007DA1, - 15443: 0x00007DC9, - 15444: 0x00007F73, - 15445: 0x00007FE2, - 15446: 0x00007FE3, - 15447: 0x00007FE5, - 15448: 0x00007FDE, - 15449: 0x00008024, - 15450: 0x0000805D, - 15451: 0x0000805C, - 15452: 0x00008189, - 15453: 0x00008186, - 15454: 0x00008183, - 15455: 0x00008187, - 15456: 0x0000818D, - 15457: 0x0000818C, - 15458: 0x0000818B, - 15459: 0x00008215, - 15460: 0x00008497, - 15461: 0x000084A4, - 15462: 0x000084A1, - 15463: 0x0000849F, - 15464: 0x000084BA, - 15465: 0x000084CE, - 15466: 0x000084C2, - 15467: 0x000084AC, - 15468: 0x000084AE, - 15469: 0x000084AB, - 15470: 0x000084B9, - 15471: 0x000084B4, - 15472: 0x000084C1, - 15473: 0x000084CD, - 15474: 0x000084AA, - 15475: 0x0000849A, - 15476: 0x000084B1, - 15477: 0x000084D0, - 15478: 0x0000849D, - 15479: 0x000084A7, - 15480: 0x000084BB, - 15481: 0x000084A2, - 15482: 0x00008494, - 15483: 0x000084C7, - 15484: 0x000084CC, - 15485: 0x0000849B, - 15486: 0x000084A9, - 15487: 0x000084AF, - 15488: 0x000084A8, - 15489: 0x000084D6, - 15490: 0x00008498, - 15491: 0x000084B6, - 15492: 0x000084CF, - 15493: 0x000084A0, - 15494: 0x000084D7, - 15495: 0x000084D4, - 15496: 0x000084D2, - 15497: 0x000084DB, - 15498: 0x000084B0, - 15499: 0x00008491, - 15500: 0x00008661, - 15501: 0x00008733, - 15502: 0x00008723, - 15503: 0x00008728, - 15504: 0x0000876B, - 15505: 0x00008740, - 15506: 0x0000872E, - 15507: 0x0000871E, - 15508: 0x00008721, - 15509: 0x00008719, - 15510: 0x0000871B, - 15511: 0x00008743, - 15512: 0x0000872C, - 15513: 0x00008741, - 15514: 0x0000873E, - 15515: 0x00008746, - 15516: 0x00008720, - 15517: 0x00008732, - 15518: 0x0000872A, - 15519: 0x0000872D, - 15520: 0x0000873C, - 15521: 0x00008712, - 15522: 0x0000873A, - 15523: 0x00008731, - 15524: 0x00008735, - 15525: 0x00008742, - 15526: 0x00008726, - 15527: 0x00008727, - 15528: 0x00008738, - 15529: 0x00008724, - 15530: 0x0000871A, - 15531: 0x00008730, - 15532: 0x00008711, - 15533: 0x000088F7, - 15534: 0x000088E7, - 15535: 0x000088F1, - 15536: 0x000088F2, - 15537: 0x000088FA, - 15538: 0x000088FE, - 15539: 0x000088EE, - 15540: 0x000088FC, - 15541: 0x000088F6, - 15542: 0x000088FB, - 15543: 0x000088F0, - 15544: 0x000088EC, - 15545: 0x000088EB, - 15546: 0x0000899D, - 15547: 0x000089A1, - 15548: 0x0000899F, - 15549: 0x0000899E, - 15550: 0x000089E9, - 15551: 0x000089EB, - 15552: 0x000089E8, - 15553: 0x00008AAB, - 15554: 0x00008A99, - 15555: 0x00008A8B, - 15556: 0x00008A92, - 15557: 0x00008A8F, - 15558: 0x00008A96, - 15559: 0x00008C3D, - 15560: 0x00008C68, - 15561: 0x00008C69, - 15562: 0x00008CD5, - 15563: 0x00008CCF, - 15564: 0x00008CD7, - 15565: 0x00008D96, - 15566: 0x00008E09, - 15567: 0x00008E02, - 15568: 0x00008DFF, - 15569: 0x00008E0D, - 15570: 0x00008DFD, - 15571: 0x00008E0A, - 15572: 0x00008E03, - 15573: 0x00008E07, - 15574: 0x00008E06, - 15575: 0x00008E05, - 15576: 0x00008DFE, - 15577: 0x00008E00, - 15578: 0x00008E04, - 15579: 0x00008F10, - 15580: 0x00008F11, - 15581: 0x00008F0E, - 15582: 0x00008F0D, - 15583: 0x00009123, - 15584: 0x0000911C, - 15585: 0x00009120, - 15586: 0x00009122, - 15587: 0x0000911F, - 15588: 0x0000911D, - 15589: 0x0000911A, - 15590: 0x00009124, - 15591: 0x00009121, - 15592: 0x0000911B, - 15593: 0x0000917A, - 15594: 0x00009172, - 15595: 0x00009179, - 15596: 0x00009173, - 15597: 0x000092A5, - 15598: 0x000092A4, - 15599: 0x00009276, - 15600: 0x0000929B, - 15601: 0x0000927A, - 15602: 0x000092A0, - 15603: 0x00009294, - 15604: 0x000092AA, - 15605: 0x0000928D, - 15606: 0x000092A6, - 15607: 0x0000929A, - 15608: 0x000092AB, - 15609: 0x00009279, - 15610: 0x00009297, - 15611: 0x0000927F, - 15612: 0x000092A3, - 15613: 0x000092EE, - 15614: 0x0000928E, - 15615: 0x00009282, - 15616: 0x00009295, - 15617: 0x000092A2, - 15618: 0x0000927D, - 15619: 0x00009288, - 15620: 0x000092A1, - 15621: 0x0000928A, - 15622: 0x00009286, - 15623: 0x0000928C, - 15624: 0x00009299, - 15625: 0x000092A7, - 15626: 0x0000927E, - 15627: 0x00009287, - 15628: 0x000092A9, - 15629: 0x0000929D, - 15630: 0x0000928B, - 15631: 0x0000922D, - 15632: 0x0000969E, - 15633: 0x000096A1, - 15634: 0x000096FF, - 15635: 0x00009758, - 15636: 0x0000977D, - 15637: 0x0000977A, - 15638: 0x0000977E, - 15639: 0x00009783, - 15640: 0x00009780, - 15641: 0x00009782, - 15642: 0x0000977B, - 15643: 0x00009784, - 15644: 0x00009781, - 15645: 0x0000977F, - 15646: 0x000097CE, - 15647: 0x000097CD, - 15648: 0x00009816, - 15649: 0x000098AD, - 15650: 0x000098AE, - 15651: 0x00009902, - 15652: 0x00009900, - 15653: 0x00009907, - 15654: 0x0000999D, - 15655: 0x0000999C, - 15656: 0x000099C3, - 15657: 0x000099B9, - 15658: 0x000099BB, - 15659: 0x000099BA, - 15660: 0x000099C2, - 15661: 0x000099BD, - 15662: 0x000099C7, - 15663: 0x00009AB1, - 15664: 0x00009AE3, - 15665: 0x00009AE7, - 15666: 0x00009B3E, - 15667: 0x00009B3F, - 15668: 0x00009B60, - 15669: 0x00009B61, - 15670: 0x00009B5F, - 15671: 0x00009CF1, - 15672: 0x00009CF2, - 15673: 0x00009CF5, - 15674: 0x00009EA7, - 15675: 0x000050FF, - 15676: 0x00005103, - 15677: 0x00005130, - 15678: 0x000050F8, - 15679: 0x00005106, - 15680: 0x00005107, - 15681: 0x000050F6, - 15682: 0x000050FE, - 15683: 0x0000510B, - 15684: 0x0000510C, - 15685: 0x000050FD, - 15686: 0x0000510A, - 15687: 0x0000528B, - 15688: 0x0000528C, - 15689: 0x000052F1, - 15690: 0x000052EF, - 15691: 0x00005648, - 15692: 0x00005642, - 15693: 0x0000564C, - 15694: 0x00005635, - 15695: 0x00005641, - 15696: 0x0000564A, - 15697: 0x00005649, - 15698: 0x00005646, - 15699: 0x00005658, - 15700: 0x0000565A, - 15701: 0x00005640, - 15702: 0x00005633, - 15703: 0x0000563D, - 15704: 0x0000562C, - 15705: 0x0000563E, - 15706: 0x00005638, - 15707: 0x0000562A, - 15708: 0x0000563A, - 15709: 0x0000571A, - 15710: 0x000058AB, - 15711: 0x0000589D, - 15712: 0x000058B1, - 15713: 0x000058A0, - 15714: 0x000058A3, - 15715: 0x000058AF, - 15716: 0x000058AC, - 15717: 0x000058A5, - 15718: 0x000058A1, - 15719: 0x000058FF, - 15720: 0x00005AFF, - 15721: 0x00005AF4, - 15722: 0x00005AFD, - 15723: 0x00005AF7, - 15724: 0x00005AF6, - 15725: 0x00005B03, - 15726: 0x00005AF8, - 15727: 0x00005B02, - 15728: 0x00005AF9, - 15729: 0x00005B01, - 15730: 0x00005B07, - 15731: 0x00005B05, - 15732: 0x00005B0F, - 15733: 0x00005C67, - 15734: 0x00005D99, - 15735: 0x00005D97, - 15736: 0x00005D9F, - 15737: 0x00005D92, - 15738: 0x00005DA2, - 15739: 0x00005D93, - 15740: 0x00005D95, - 15741: 0x00005DA0, - 15742: 0x00005D9C, - 15743: 0x00005DA1, - 15744: 0x00005D9A, - 15745: 0x00005D9E, - 15746: 0x00005E69, - 15747: 0x00005E5D, - 15748: 0x00005E60, - 15749: 0x00005E5C, - 15750: 0x00007DF3, - 15751: 0x00005EDB, - 15752: 0x00005EDE, - 15753: 0x00005EE1, - 15754: 0x00005F49, - 15755: 0x00005FB2, - 15756: 0x0000618B, - 15757: 0x00006183, - 15758: 0x00006179, - 15759: 0x000061B1, - 15760: 0x000061B0, - 15761: 0x000061A2, - 15762: 0x00006189, - 15763: 0x0000619B, - 15764: 0x00006193, - 15765: 0x000061AF, - 15766: 0x000061AD, - 15767: 0x0000619F, - 15768: 0x00006192, - 15769: 0x000061AA, - 15770: 0x000061A1, - 15771: 0x0000618D, - 15772: 0x00006166, - 15773: 0x000061B3, - 15774: 0x0000622D, - 15775: 0x0000646E, - 15776: 0x00006470, - 15777: 0x00006496, - 15778: 0x000064A0, - 15779: 0x00006485, - 15780: 0x00006497, - 15781: 0x0000649C, - 15782: 0x0000648F, - 15783: 0x0000648B, - 15784: 0x0000648A, - 15785: 0x0000648C, - 15786: 0x000064A3, - 15787: 0x0000649F, - 15788: 0x00006468, - 15789: 0x000064B1, - 15790: 0x00006498, - 15791: 0x00006576, - 15792: 0x0000657A, - 15793: 0x00006579, - 15794: 0x0000657B, - 15795: 0x000065B2, - 15796: 0x000065B3, - 15797: 0x000066B5, - 15798: 0x000066B0, - 15799: 0x000066A9, - 15800: 0x000066B2, - 15801: 0x000066B7, - 15802: 0x000066AA, - 15803: 0x000066AF, - 15804: 0x00006A00, - 15805: 0x00006A06, - 15806: 0x00006A17, - 15807: 0x000069E5, - 15808: 0x000069F8, - 15809: 0x00006A15, - 15810: 0x000069F1, - 15811: 0x000069E4, - 15812: 0x00006A20, - 15813: 0x000069FF, - 15814: 0x000069EC, - 15815: 0x000069E2, - 15816: 0x00006A1B, - 15817: 0x00006A1D, - 15818: 0x000069FE, - 15819: 0x00006A27, - 15820: 0x000069F2, - 15821: 0x000069EE, - 15822: 0x00006A14, - 15823: 0x000069F7, - 15824: 0x000069E7, - 15825: 0x00006A40, - 15826: 0x00006A08, - 15827: 0x000069E6, - 15828: 0x000069FB, - 15829: 0x00006A0D, - 15830: 0x000069FC, - 15831: 0x000069EB, - 15832: 0x00006A09, - 15833: 0x00006A04, - 15834: 0x00006A18, - 15835: 0x00006A25, - 15836: 0x00006A0F, - 15837: 0x000069F6, - 15838: 0x00006A26, - 15839: 0x00006A07, - 15840: 0x000069F4, - 15841: 0x00006A16, - 15842: 0x00006B51, - 15843: 0x00006BA5, - 15844: 0x00006BA3, - 15845: 0x00006BA2, - 15846: 0x00006BA6, - 15847: 0x00006C01, - 15848: 0x00006C00, - 15849: 0x00006BFF, - 15850: 0x00006C02, - 15851: 0x00006F41, - 15852: 0x00006F26, - 15853: 0x00006F7E, - 15854: 0x00006F87, - 15855: 0x00006FC6, - 15856: 0x00006F92, - 15857: 0x00006F8D, - 15858: 0x00006F89, - 15859: 0x00006F8C, - 15860: 0x00006F62, - 15861: 0x00006F4F, - 15862: 0x00006F85, - 15863: 0x00006F5A, - 15864: 0x00006F96, - 15865: 0x00006F76, - 15866: 0x00006F6C, - 15867: 0x00006F82, - 15868: 0x00006F55, - 15869: 0x00006F72, - 15870: 0x00006F52, - 15871: 0x00006F50, - 15872: 0x00006F57, - 15873: 0x00006F94, - 15874: 0x00006F93, - 15875: 0x00006F5D, - 15876: 0x00006F00, - 15877: 0x00006F61, - 15878: 0x00006F6B, - 15879: 0x00006F7D, - 15880: 0x00006F67, - 15881: 0x00006F90, - 15882: 0x00006F53, - 15883: 0x00006F8B, - 15884: 0x00006F69, - 15885: 0x00006F7F, - 15886: 0x00006F95, - 15887: 0x00006F63, - 15888: 0x00006F77, - 15889: 0x00006F6A, - 15890: 0x00006F7B, - 15891: 0x000071B2, - 15892: 0x000071AF, - 15893: 0x0000719B, - 15894: 0x000071B0, - 15895: 0x000071A0, - 15896: 0x0000719A, - 15897: 0x000071A9, - 15898: 0x000071B5, - 15899: 0x0000719D, - 15900: 0x000071A5, - 15901: 0x0000719E, - 15902: 0x000071A4, - 15903: 0x000071A1, - 15904: 0x000071AA, - 15905: 0x0000719C, - 15906: 0x000071A7, - 15907: 0x000071B3, - 15908: 0x00007298, - 15909: 0x0000729A, - 15910: 0x00007358, - 15911: 0x00007352, - 15912: 0x0000735E, - 15913: 0x0000735F, - 15914: 0x00007360, - 15915: 0x0000735D, - 15916: 0x0000735B, - 15917: 0x00007361, - 15918: 0x0000735A, - 15919: 0x00007359, - 15920: 0x00007362, - 15921: 0x00007487, - 15922: 0x00007489, - 15923: 0x0000748A, - 15924: 0x00007486, - 15925: 0x00007481, - 15926: 0x0000747D, - 15927: 0x00007485, - 15928: 0x00007488, - 15929: 0x0000747C, - 15930: 0x00007479, - 15931: 0x00007508, - 15932: 0x00007507, - 15933: 0x0000757E, - 15934: 0x00007625, - 15935: 0x0000761E, - 15936: 0x00007619, - 15937: 0x0000761D, - 15938: 0x0000761C, - 15939: 0x00007623, - 15940: 0x0000761A, - 15941: 0x00007628, - 15942: 0x0000761B, - 15943: 0x0000769C, - 15944: 0x0000769D, - 15945: 0x0000769E, - 15946: 0x0000769B, - 15947: 0x0000778D, - 15948: 0x0000778F, - 15949: 0x00007789, - 15950: 0x00007788, - 15951: 0x000078CD, - 15952: 0x000078BB, - 15953: 0x000078CF, - 15954: 0x000078CC, - 15955: 0x000078D1, - 15956: 0x000078CE, - 15957: 0x000078D4, - 15958: 0x000078C8, - 15959: 0x000078C3, - 15960: 0x000078C4, - 15961: 0x000078C9, - 15962: 0x0000799A, - 15963: 0x000079A1, - 15964: 0x000079A0, - 15965: 0x0000799C, - 15966: 0x000079A2, - 15967: 0x0000799B, - 15968: 0x00006B76, - 15969: 0x00007A39, - 15970: 0x00007AB2, - 15971: 0x00007AB4, - 15972: 0x00007AB3, - 15973: 0x00007BB7, - 15974: 0x00007BCB, - 15975: 0x00007BBE, - 15976: 0x00007BAC, - 15977: 0x00007BCE, - 15978: 0x00007BAF, - 15979: 0x00007BB9, - 15980: 0x00007BCA, - 15981: 0x00007BB5, - 15982: 0x00007CC5, - 15983: 0x00007CC8, - 15984: 0x00007CCC, - 15985: 0x00007CCB, - 15986: 0x00007DF7, - 15987: 0x00007DDB, - 15988: 0x00007DEA, - 15989: 0x00007DE7, - 15990: 0x00007DD7, - 15991: 0x00007DE1, - 15992: 0x00007E03, - 15993: 0x00007DFA, - 15994: 0x00007DE6, - 15995: 0x00007DF6, - 15996: 0x00007DF1, - 15997: 0x00007DF0, - 15998: 0x00007DEE, - 15999: 0x00007DDF, - 16000: 0x00007F76, - 16001: 0x00007FAC, - 16002: 0x00007FB0, - 16003: 0x00007FAD, - 16004: 0x00007FED, - 16005: 0x00007FEB, - 16006: 0x00007FEA, - 16007: 0x00007FEC, - 16008: 0x00007FE6, - 16009: 0x00007FE8, - 16010: 0x00008064, - 16011: 0x00008067, - 16012: 0x000081A3, - 16013: 0x0000819F, - 16014: 0x0000819E, - 16015: 0x00008195, - 16016: 0x000081A2, - 16017: 0x00008199, - 16018: 0x00008197, - 16019: 0x00008216, - 16020: 0x0000824F, - 16021: 0x00008253, - 16022: 0x00008252, - 16023: 0x00008250, - 16024: 0x0000824E, - 16025: 0x00008251, - 16026: 0x00008524, - 16027: 0x0000853B, - 16028: 0x0000850F, - 16029: 0x00008500, - 16030: 0x00008529, - 16031: 0x0000850E, - 16032: 0x00008509, - 16033: 0x0000850D, - 16034: 0x0000851F, - 16035: 0x0000850A, - 16036: 0x00008527, - 16037: 0x0000851C, - 16038: 0x000084FB, - 16039: 0x0000852B, - 16040: 0x000084FA, - 16041: 0x00008508, - 16042: 0x0000850C, - 16043: 0x000084F4, - 16044: 0x0000852A, - 16045: 0x000084F2, - 16046: 0x00008515, - 16047: 0x000084F7, - 16048: 0x000084EB, - 16049: 0x000084F3, - 16050: 0x000084FC, - 16051: 0x00008512, - 16052: 0x000084EA, - 16053: 0x000084E9, - 16054: 0x00008516, - 16055: 0x000084FE, - 16056: 0x00008528, - 16057: 0x0000851D, - 16058: 0x0000852E, - 16059: 0x00008502, - 16060: 0x000084FD, - 16061: 0x0000851E, - 16062: 0x000084F6, - 16063: 0x00008531, - 16064: 0x00008526, - 16065: 0x000084E7, - 16066: 0x000084E8, - 16067: 0x000084F0, - 16068: 0x000084EF, - 16069: 0x000084F9, - 16070: 0x00008518, - 16071: 0x00008520, - 16072: 0x00008530, - 16073: 0x0000850B, - 16074: 0x00008519, - 16075: 0x0000852F, - 16076: 0x00008662, - 16077: 0x00008756, - 16078: 0x00008763, - 16079: 0x00008764, - 16080: 0x00008777, - 16081: 0x000087E1, - 16082: 0x00008773, - 16083: 0x00008758, - 16084: 0x00008754, - 16085: 0x0000875B, - 16086: 0x00008752, - 16087: 0x00008761, - 16088: 0x0000875A, - 16089: 0x00008751, - 16090: 0x0000875E, - 16091: 0x0000876D, - 16092: 0x0000876A, - 16093: 0x00008750, - 16094: 0x0000874E, - 16095: 0x0000875F, - 16096: 0x0000875D, - 16097: 0x0000876F, - 16098: 0x0000876C, - 16099: 0x0000877A, - 16100: 0x0000876E, - 16101: 0x0000875C, - 16102: 0x00008765, - 16103: 0x0000874F, - 16104: 0x0000877B, - 16105: 0x00008775, - 16106: 0x00008762, - 16107: 0x00008767, - 16108: 0x00008769, - 16109: 0x0000885A, - 16110: 0x00008905, - 16111: 0x0000890C, - 16112: 0x00008914, - 16113: 0x0000890B, - 16114: 0x00008917, - 16115: 0x00008918, - 16116: 0x00008919, - 16117: 0x00008906, - 16118: 0x00008916, - 16119: 0x00008911, - 16120: 0x0000890E, - 16121: 0x00008909, - 16122: 0x000089A2, - 16123: 0x000089A4, - 16124: 0x000089A3, - 16125: 0x000089ED, - 16126: 0x000089F0, - 16127: 0x000089EC, - 16128: 0x00008ACF, - 16129: 0x00008AC6, - 16130: 0x00008AB8, - 16131: 0x00008AD3, - 16132: 0x00008AD1, - 16133: 0x00008AD4, - 16134: 0x00008AD5, - 16135: 0x00008ABB, - 16136: 0x00008AD7, - 16137: 0x00008ABE, - 16138: 0x00008AC0, - 16139: 0x00008AC5, - 16140: 0x00008AD8, - 16141: 0x00008AC3, - 16142: 0x00008ABA, - 16143: 0x00008ABD, - 16144: 0x00008AD9, - 16145: 0x00008C3E, - 16146: 0x00008C4D, - 16147: 0x00008C8F, - 16148: 0x00008CE5, - 16149: 0x00008CDF, - 16150: 0x00008CD9, - 16151: 0x00008CE8, - 16152: 0x00008CDA, - 16153: 0x00008CDD, - 16154: 0x00008CE7, - 16155: 0x00008DA0, - 16156: 0x00008D9C, - 16157: 0x00008DA1, - 16158: 0x00008D9B, - 16159: 0x00008E20, - 16160: 0x00008E23, - 16161: 0x00008E25, - 16162: 0x00008E24, - 16163: 0x00008E2E, - 16164: 0x00008E15, - 16165: 0x00008E1B, - 16166: 0x00008E16, - 16167: 0x00008E11, - 16168: 0x00008E19, - 16169: 0x00008E26, - 16170: 0x00008E27, - 16171: 0x00008E14, - 16172: 0x00008E12, - 16173: 0x00008E18, - 16174: 0x00008E13, - 16175: 0x00008E1C, - 16176: 0x00008E17, - 16177: 0x00008E1A, - 16178: 0x00008F2C, - 16179: 0x00008F24, - 16180: 0x00008F18, - 16181: 0x00008F1A, - 16182: 0x00008F20, - 16183: 0x00008F23, - 16184: 0x00008F16, - 16185: 0x00008F17, - 16186: 0x00009073, - 16187: 0x00009070, - 16188: 0x0000906F, - 16189: 0x00009067, - 16190: 0x0000906B, - 16191: 0x0000912F, - 16192: 0x0000912B, - 16193: 0x00009129, - 16194: 0x0000912A, - 16195: 0x00009132, - 16196: 0x00009126, - 16197: 0x0000912E, - 16198: 0x00009185, - 16199: 0x00009186, - 16200: 0x0000918A, - 16201: 0x00009181, - 16202: 0x00009182, - 16203: 0x00009184, - 16204: 0x00009180, - 16205: 0x000092D0, - 16206: 0x000092C3, - 16207: 0x000092C4, - 16208: 0x000092C0, - 16209: 0x000092D9, - 16210: 0x000092B6, - 16211: 0x000092CF, - 16212: 0x000092F1, - 16213: 0x000092DF, - 16214: 0x000092D8, - 16215: 0x000092E9, - 16216: 0x000092D7, - 16217: 0x000092DD, - 16218: 0x000092CC, - 16219: 0x000092EF, - 16220: 0x000092C2, - 16221: 0x000092E8, - 16222: 0x000092CA, - 16223: 0x000092C8, - 16224: 0x000092CE, - 16225: 0x000092E6, - 16226: 0x000092CD, - 16227: 0x000092D5, - 16228: 0x000092C9, - 16229: 0x000092E0, - 16230: 0x000092DE, - 16231: 0x000092E7, - 16232: 0x000092D1, - 16233: 0x000092D3, - 16234: 0x000092B5, - 16235: 0x000092E1, - 16236: 0x000092C6, - 16237: 0x000092B4, - 16238: 0x0000957C, - 16239: 0x000095AC, - 16240: 0x000095AB, - 16241: 0x000095AE, - 16242: 0x000095B0, - 16243: 0x000096A4, - 16244: 0x000096A2, - 16245: 0x000096D3, - 16246: 0x00009705, - 16247: 0x00009708, - 16248: 0x00009702, - 16249: 0x0000975A, - 16250: 0x0000978A, - 16251: 0x0000978E, - 16252: 0x00009788, - 16253: 0x000097D0, - 16254: 0x000097CF, - 16255: 0x0000981E, - 16256: 0x0000981D, - 16257: 0x00009826, - 16258: 0x00009829, - 16259: 0x00009828, - 16260: 0x00009820, - 16261: 0x0000981B, - 16262: 0x00009827, - 16263: 0x000098B2, - 16264: 0x00009908, - 16265: 0x000098FA, - 16266: 0x00009911, - 16267: 0x00009914, - 16268: 0x00009916, - 16269: 0x00009917, - 16270: 0x00009915, - 16271: 0x000099DC, - 16272: 0x000099CD, - 16273: 0x000099CF, - 16274: 0x000099D3, - 16275: 0x000099D4, - 16276: 0x000099CE, - 16277: 0x000099C9, - 16278: 0x000099D6, - 16279: 0x000099D8, - 16280: 0x000099CB, - 16281: 0x000099D7, - 16282: 0x000099CC, - 16283: 0x00009AB3, - 16284: 0x00009AEC, - 16285: 0x00009AEB, - 16286: 0x00009AF3, - 16287: 0x00009AF2, - 16288: 0x00009AF1, - 16289: 0x00009B46, - 16290: 0x00009B43, - 16291: 0x00009B67, - 16292: 0x00009B74, - 16293: 0x00009B71, - 16294: 0x00009B66, - 16295: 0x00009B76, - 16296: 0x00009B75, - 16297: 0x00009B70, - 16298: 0x00009B68, - 16299: 0x00009B64, - 16300: 0x00009B6C, - 16301: 0x00009CFC, - 16302: 0x00009CFA, - 16303: 0x00009CFD, - 16304: 0x00009CFF, - 16305: 0x00009CF7, - 16306: 0x00009D07, - 16307: 0x00009D00, - 16308: 0x00009CF9, - 16309: 0x00009CFB, - 16310: 0x00009D08, - 16311: 0x00009D05, - 16312: 0x00009D04, - 16313: 0x00009E83, - 16314: 0x00009ED3, - 16315: 0x00009F0F, - 16316: 0x00009F10, - 16317: 0x0000511C, - 16318: 0x00005113, - 16319: 0x00005117, - 16320: 0x0000511A, - 16321: 0x00005111, - 16322: 0x000051DE, - 16323: 0x00005334, - 16324: 0x000053E1, - 16325: 0x00005670, - 16326: 0x00005660, - 16327: 0x0000566E, - 16328: 0x00005673, - 16329: 0x00005666, - 16330: 0x00005663, - 16331: 0x0000566D, - 16332: 0x00005672, - 16333: 0x0000565E, - 16334: 0x00005677, - 16335: 0x0000571C, - 16336: 0x0000571B, - 16337: 0x000058C8, - 16338: 0x000058BD, - 16339: 0x000058C9, - 16340: 0x000058BF, - 16341: 0x000058BA, - 16342: 0x000058C2, - 16343: 0x000058BC, - 16344: 0x000058C6, - 16345: 0x00005B17, - 16346: 0x00005B19, - 16347: 0x00005B1B, - 16348: 0x00005B21, - 16349: 0x00005B14, - 16350: 0x00005B13, - 16351: 0x00005B10, - 16352: 0x00005B16, - 16353: 0x00005B28, - 16354: 0x00005B1A, - 16355: 0x00005B20, - 16356: 0x00005B1E, - 16357: 0x00005BEF, - 16358: 0x00005DAC, - 16359: 0x00005DB1, - 16360: 0x00005DA9, - 16361: 0x00005DA7, - 16362: 0x00005DB5, - 16363: 0x00005DB0, - 16364: 0x00005DAE, - 16365: 0x00005DAA, - 16366: 0x00005DA8, - 16367: 0x00005DB2, - 16368: 0x00005DAD, - 16369: 0x00005DAF, - 16370: 0x00005DB4, - 16371: 0x00005E67, - 16372: 0x00005E68, - 16373: 0x00005E66, - 16374: 0x00005E6F, - 16375: 0x00005EE9, - 16376: 0x00005EE7, - 16377: 0x00005EE6, - 16378: 0x00005EE8, - 16379: 0x00005EE5, - 16380: 0x00005F4B, - 16381: 0x00005FBC, - 16382: 0x0000619D, - 16383: 0x000061A8, - 16384: 0x00006196, - 16385: 0x000061C5, - 16386: 0x000061B4, - 16387: 0x000061C6, - 16388: 0x000061C1, - 16389: 0x000061CC, - 16390: 0x000061BA, - 16391: 0x000061BF, - 16392: 0x000061B8, - 16393: 0x0000618C, - 16394: 0x000064D7, - 16395: 0x000064D6, - 16396: 0x000064D0, - 16397: 0x000064CF, - 16398: 0x000064C9, - 16399: 0x000064BD, - 16400: 0x00006489, - 16401: 0x000064C3, - 16402: 0x000064DB, - 16403: 0x000064F3, - 16404: 0x000064D9, - 16405: 0x00006533, - 16406: 0x0000657F, - 16407: 0x0000657C, - 16408: 0x000065A2, - 16409: 0x000066C8, - 16410: 0x000066BE, - 16411: 0x000066C0, - 16412: 0x000066CA, - 16413: 0x000066CB, - 16414: 0x000066CF, - 16415: 0x000066BD, - 16416: 0x000066BB, - 16417: 0x000066BA, - 16418: 0x000066CC, - 16419: 0x00006723, - 16420: 0x00006A34, - 16421: 0x00006A66, - 16422: 0x00006A49, - 16423: 0x00006A67, - 16424: 0x00006A32, - 16425: 0x00006A68, - 16426: 0x00006A3E, - 16427: 0x00006A5D, - 16428: 0x00006A6D, - 16429: 0x00006A76, - 16430: 0x00006A5B, - 16431: 0x00006A51, - 16432: 0x00006A28, - 16433: 0x00006A5A, - 16434: 0x00006A3B, - 16435: 0x00006A3F, - 16436: 0x00006A41, - 16437: 0x00006A6A, - 16438: 0x00006A64, - 16439: 0x00006A50, - 16440: 0x00006A4F, - 16441: 0x00006A54, - 16442: 0x00006A6F, - 16443: 0x00006A69, - 16444: 0x00006A60, - 16445: 0x00006A3C, - 16446: 0x00006A5E, - 16447: 0x00006A56, - 16448: 0x00006A55, - 16449: 0x00006A4D, - 16450: 0x00006A4E, - 16451: 0x00006A46, - 16452: 0x00006B55, - 16453: 0x00006B54, - 16454: 0x00006B56, - 16455: 0x00006BA7, - 16456: 0x00006BAA, - 16457: 0x00006BAB, - 16458: 0x00006BC8, - 16459: 0x00006BC7, - 16460: 0x00006C04, - 16461: 0x00006C03, - 16462: 0x00006C06, - 16463: 0x00006FAD, - 16464: 0x00006FCB, - 16465: 0x00006FA3, - 16466: 0x00006FC7, - 16467: 0x00006FBC, - 16468: 0x00006FCE, - 16469: 0x00006FC8, - 16470: 0x00006F5E, - 16471: 0x00006FC4, - 16472: 0x00006FBD, - 16473: 0x00006F9E, - 16474: 0x00006FCA, - 16475: 0x00006FA8, - 16476: 0x00007004, - 16477: 0x00006FA5, - 16478: 0x00006FAE, - 16479: 0x00006FBA, - 16480: 0x00006FAC, - 16481: 0x00006FAA, - 16482: 0x00006FCF, - 16483: 0x00006FBF, - 16484: 0x00006FB8, - 16485: 0x00006FA2, - 16486: 0x00006FC9, - 16487: 0x00006FAB, - 16488: 0x00006FCD, - 16489: 0x00006FAF, - 16490: 0x00006FB2, - 16491: 0x00006FB0, - 16492: 0x000071C5, - 16493: 0x000071C2, - 16494: 0x000071BF, - 16495: 0x000071B8, - 16496: 0x000071D6, - 16497: 0x000071C0, - 16498: 0x000071C1, - 16499: 0x000071CB, - 16500: 0x000071D4, - 16501: 0x000071CA, - 16502: 0x000071C7, - 16503: 0x000071CF, - 16504: 0x000071BD, - 16505: 0x000071D8, - 16506: 0x000071BC, - 16507: 0x000071C6, - 16508: 0x000071DA, - 16509: 0x000071DB, - 16510: 0x0000729D, - 16511: 0x0000729E, - 16512: 0x00007369, - 16513: 0x00007366, - 16514: 0x00007367, - 16515: 0x0000736C, - 16516: 0x00007365, - 16517: 0x0000736B, - 16518: 0x0000736A, - 16519: 0x0000747F, - 16520: 0x0000749A, - 16521: 0x000074A0, - 16522: 0x00007494, - 16523: 0x00007492, - 16524: 0x00007495, - 16525: 0x000074A1, - 16526: 0x0000750B, - 16527: 0x00007580, - 16528: 0x0000762F, - 16529: 0x0000762D, - 16530: 0x00007631, - 16531: 0x0000763D, - 16532: 0x00007633, - 16533: 0x0000763C, - 16534: 0x00007635, - 16535: 0x00007632, - 16536: 0x00007630, - 16537: 0x000076BB, - 16538: 0x000076E6, - 16539: 0x0000779A, - 16540: 0x0000779D, - 16541: 0x000077A1, - 16542: 0x0000779C, - 16543: 0x0000779B, - 16544: 0x000077A2, - 16545: 0x000077A3, - 16546: 0x00007795, - 16547: 0x00007799, - 16548: 0x00007797, - 16549: 0x000078DD, - 16550: 0x000078E9, - 16551: 0x000078E5, - 16552: 0x000078EA, - 16553: 0x000078DE, - 16554: 0x000078E3, - 16555: 0x000078DB, - 16556: 0x000078E1, - 16557: 0x000078E2, - 16558: 0x000078ED, - 16559: 0x000078DF, - 16560: 0x000078E0, - 16561: 0x000079A4, - 16562: 0x00007A44, - 16563: 0x00007A48, - 16564: 0x00007A47, - 16565: 0x00007AB6, - 16566: 0x00007AB8, - 16567: 0x00007AB5, - 16568: 0x00007AB1, - 16569: 0x00007AB7, - 16570: 0x00007BDE, - 16571: 0x00007BE3, - 16572: 0x00007BE7, - 16573: 0x00007BDD, - 16574: 0x00007BD5, - 16575: 0x00007BE5, - 16576: 0x00007BDA, - 16577: 0x00007BE8, - 16578: 0x00007BF9, - 16579: 0x00007BD4, - 16580: 0x00007BEA, - 16581: 0x00007BE2, - 16582: 0x00007BDC, - 16583: 0x00007BEB, - 16584: 0x00007BD8, - 16585: 0x00007BDF, - 16586: 0x00007CD2, - 16587: 0x00007CD4, - 16588: 0x00007CD7, - 16589: 0x00007CD0, - 16590: 0x00007CD1, - 16591: 0x00007E12, - 16592: 0x00007E21, - 16593: 0x00007E17, - 16594: 0x00007E0C, - 16595: 0x00007E1F, - 16596: 0x00007E20, - 16597: 0x00007E13, - 16598: 0x00007E0E, - 16599: 0x00007E1C, - 16600: 0x00007E15, - 16601: 0x00007E1A, - 16602: 0x00007E22, - 16603: 0x00007E0B, - 16604: 0x00007E0F, - 16605: 0x00007E16, - 16606: 0x00007E0D, - 16607: 0x00007E14, - 16608: 0x00007E25, - 16609: 0x00007E24, - 16610: 0x00007F43, - 16611: 0x00007F7B, - 16612: 0x00007F7C, - 16613: 0x00007F7A, - 16614: 0x00007FB1, - 16615: 0x00007FEF, - 16616: 0x0000802A, - 16617: 0x00008029, - 16618: 0x0000806C, - 16619: 0x000081B1, - 16620: 0x000081A6, - 16621: 0x000081AE, - 16622: 0x000081B9, - 16623: 0x000081B5, - 16624: 0x000081AB, - 16625: 0x000081B0, - 16626: 0x000081AC, - 16627: 0x000081B4, - 16628: 0x000081B2, - 16629: 0x000081B7, - 16630: 0x000081A7, - 16631: 0x000081F2, - 16632: 0x00008255, - 16633: 0x00008256, - 16634: 0x00008257, - 16635: 0x00008556, - 16636: 0x00008545, - 16637: 0x0000856B, - 16638: 0x0000854D, - 16639: 0x00008553, - 16640: 0x00008561, - 16641: 0x00008558, - 16642: 0x00008540, - 16643: 0x00008546, - 16644: 0x00008564, - 16645: 0x00008541, - 16646: 0x00008562, - 16647: 0x00008544, - 16648: 0x00008551, - 16649: 0x00008547, - 16650: 0x00008563, - 16651: 0x0000853E, - 16652: 0x0000855B, - 16653: 0x00008571, - 16654: 0x0000854E, - 16655: 0x0000856E, - 16656: 0x00008575, - 16657: 0x00008555, - 16658: 0x00008567, - 16659: 0x00008560, - 16660: 0x0000858C, - 16661: 0x00008566, - 16662: 0x0000855D, - 16663: 0x00008554, - 16664: 0x00008565, - 16665: 0x0000856C, - 16666: 0x00008663, - 16667: 0x00008665, - 16668: 0x00008664, - 16669: 0x0000879B, - 16670: 0x0000878F, - 16671: 0x00008797, - 16672: 0x00008793, - 16673: 0x00008792, - 16674: 0x00008788, - 16675: 0x00008781, - 16676: 0x00008796, - 16677: 0x00008798, - 16678: 0x00008779, - 16679: 0x00008787, - 16680: 0x000087A3, - 16681: 0x00008785, - 16682: 0x00008790, - 16683: 0x00008791, - 16684: 0x0000879D, - 16685: 0x00008784, - 16686: 0x00008794, - 16687: 0x0000879C, - 16688: 0x0000879A, - 16689: 0x00008789, - 16690: 0x0000891E, - 16691: 0x00008926, - 16692: 0x00008930, - 16693: 0x0000892D, - 16694: 0x0000892E, - 16695: 0x00008927, - 16696: 0x00008931, - 16697: 0x00008922, - 16698: 0x00008929, - 16699: 0x00008923, - 16700: 0x0000892F, - 16701: 0x0000892C, - 16702: 0x0000891F, - 16703: 0x000089F1, - 16704: 0x00008AE0, - 16705: 0x00008AE2, - 16706: 0x00008AF2, - 16707: 0x00008AF4, - 16708: 0x00008AF5, - 16709: 0x00008ADD, - 16710: 0x00008B14, - 16711: 0x00008AE4, - 16712: 0x00008ADF, - 16713: 0x00008AF0, - 16714: 0x00008AC8, - 16715: 0x00008ADE, - 16716: 0x00008AE1, - 16717: 0x00008AE8, - 16718: 0x00008AFF, - 16719: 0x00008AEF, - 16720: 0x00008AFB, - 16721: 0x00008C91, - 16722: 0x00008C92, - 16723: 0x00008C90, - 16724: 0x00008CF5, - 16725: 0x00008CEE, - 16726: 0x00008CF1, - 16727: 0x00008CF0, - 16728: 0x00008CF3, - 16729: 0x00008D6C, - 16730: 0x00008D6E, - 16731: 0x00008DA5, - 16732: 0x00008DA7, - 16733: 0x00008E33, - 16734: 0x00008E3E, - 16735: 0x00008E38, - 16736: 0x00008E40, - 16737: 0x00008E45, - 16738: 0x00008E36, - 16739: 0x00008E3C, - 16740: 0x00008E3D, - 16741: 0x00008E41, - 16742: 0x00008E30, - 16743: 0x00008E3F, - 16744: 0x00008EBD, - 16745: 0x00008F36, - 16746: 0x00008F2E, - 16747: 0x00008F35, - 16748: 0x00008F32, - 16749: 0x00008F39, - 16750: 0x00008F37, - 16751: 0x00008F34, - 16752: 0x00009076, - 16753: 0x00009079, - 16754: 0x0000907B, - 16755: 0x00009086, - 16756: 0x000090FA, - 16757: 0x00009133, - 16758: 0x00009135, - 16759: 0x00009136, - 16760: 0x00009193, - 16761: 0x00009190, - 16762: 0x00009191, - 16763: 0x0000918D, - 16764: 0x0000918F, - 16765: 0x00009327, - 16766: 0x0000931E, - 16767: 0x00009308, - 16768: 0x0000931F, - 16769: 0x00009306, - 16770: 0x0000930F, - 16771: 0x0000937A, - 16772: 0x00009338, - 16773: 0x0000933C, - 16774: 0x0000931B, - 16775: 0x00009323, - 16776: 0x00009312, - 16777: 0x00009301, - 16778: 0x00009346, - 16779: 0x0000932D, - 16780: 0x0000930E, - 16781: 0x0000930D, - 16782: 0x000092CB, - 16783: 0x0000931D, - 16784: 0x000092FA, - 16785: 0x00009325, - 16786: 0x00009313, - 16787: 0x000092F9, - 16788: 0x000092F7, - 16789: 0x00009334, - 16790: 0x00009302, - 16791: 0x00009324, - 16792: 0x000092FF, - 16793: 0x00009329, - 16794: 0x00009339, - 16795: 0x00009335, - 16796: 0x0000932A, - 16797: 0x00009314, - 16798: 0x0000930C, - 16799: 0x0000930B, - 16800: 0x000092FE, - 16801: 0x00009309, - 16802: 0x00009300, - 16803: 0x000092FB, - 16804: 0x00009316, - 16805: 0x000095BC, - 16806: 0x000095CD, - 16807: 0x000095BE, - 16808: 0x000095B9, - 16809: 0x000095BA, - 16810: 0x000095B6, - 16811: 0x000095BF, - 16812: 0x000095B5, - 16813: 0x000095BD, - 16814: 0x000096A9, - 16815: 0x000096D4, - 16816: 0x0000970B, - 16817: 0x00009712, - 16818: 0x00009710, - 16819: 0x00009799, - 16820: 0x00009797, - 16821: 0x00009794, - 16822: 0x000097F0, - 16823: 0x000097F8, - 16824: 0x00009835, - 16825: 0x0000982F, - 16826: 0x00009832, - 16827: 0x00009924, - 16828: 0x0000991F, - 16829: 0x00009927, - 16830: 0x00009929, - 16831: 0x0000999E, - 16832: 0x000099EE, - 16833: 0x000099EC, - 16834: 0x000099E5, - 16835: 0x000099E4, - 16836: 0x000099F0, - 16837: 0x000099E3, - 16838: 0x000099EA, - 16839: 0x000099E9, - 16840: 0x000099E7, - 16841: 0x00009AB9, - 16842: 0x00009ABF, - 16843: 0x00009AB4, - 16844: 0x00009ABB, - 16845: 0x00009AF6, - 16846: 0x00009AFA, - 16847: 0x00009AF9, - 16848: 0x00009AF7, - 16849: 0x00009B33, - 16850: 0x00009B80, - 16851: 0x00009B85, - 16852: 0x00009B87, - 16853: 0x00009B7C, - 16854: 0x00009B7E, - 16855: 0x00009B7B, - 16856: 0x00009B82, - 16857: 0x00009B93, - 16858: 0x00009B92, - 16859: 0x00009B90, - 16860: 0x00009B7A, - 16861: 0x00009B95, - 16862: 0x00009B7D, - 16863: 0x00009B88, - 16864: 0x00009D25, - 16865: 0x00009D17, - 16866: 0x00009D20, - 16867: 0x00009D1E, - 16868: 0x00009D14, - 16869: 0x00009D29, - 16870: 0x00009D1D, - 16871: 0x00009D18, - 16872: 0x00009D22, - 16873: 0x00009D10, - 16874: 0x00009D19, - 16875: 0x00009D1F, - 16876: 0x00009E88, - 16877: 0x00009E86, - 16878: 0x00009E87, - 16879: 0x00009EAE, - 16880: 0x00009EAD, - 16881: 0x00009ED5, - 16882: 0x00009ED6, - 16883: 0x00009EFA, - 16884: 0x00009F12, - 16885: 0x00009F3D, - 16886: 0x00005126, - 16887: 0x00005125, - 16888: 0x00005122, - 16889: 0x00005124, - 16890: 0x00005120, - 16891: 0x00005129, - 16892: 0x000052F4, - 16893: 0x00005693, - 16894: 0x0000568C, - 16895: 0x0000568D, - 16896: 0x00005686, - 16897: 0x00005684, - 16898: 0x00005683, - 16899: 0x0000567E, - 16900: 0x00005682, - 16901: 0x0000567F, - 16902: 0x00005681, - 16903: 0x000058D6, - 16904: 0x000058D4, - 16905: 0x000058CF, - 16906: 0x000058D2, - 16907: 0x00005B2D, - 16908: 0x00005B25, - 16909: 0x00005B32, - 16910: 0x00005B23, - 16911: 0x00005B2C, - 16912: 0x00005B27, - 16913: 0x00005B26, - 16914: 0x00005B2F, - 16915: 0x00005B2E, - 16916: 0x00005B7B, - 16917: 0x00005BF1, - 16918: 0x00005BF2, - 16919: 0x00005DB7, - 16920: 0x00005E6C, - 16921: 0x00005E6A, - 16922: 0x00005FBE, - 16923: 0x00005FBB, - 16924: 0x000061C3, - 16925: 0x000061B5, - 16926: 0x000061BC, - 16927: 0x000061E7, - 16928: 0x000061E0, - 16929: 0x000061E5, - 16930: 0x000061E4, - 16931: 0x000061E8, - 16932: 0x000061DE, - 16933: 0x000064EF, - 16934: 0x000064E9, - 16935: 0x000064E3, - 16936: 0x000064EB, - 16937: 0x000064E4, - 16938: 0x000064E8, - 16939: 0x00006581, - 16940: 0x00006580, - 16941: 0x000065B6, - 16942: 0x000065DA, - 16943: 0x000066D2, - 16944: 0x00006A8D, - 16945: 0x00006A96, - 16946: 0x00006A81, - 16947: 0x00006AA5, - 16948: 0x00006A89, - 16949: 0x00006A9F, - 16950: 0x00006A9B, - 16951: 0x00006AA1, - 16952: 0x00006A9E, - 16953: 0x00006A87, - 16954: 0x00006A93, - 16955: 0x00006A8E, - 16956: 0x00006A95, - 16957: 0x00006A83, - 16958: 0x00006AA8, - 16959: 0x00006AA4, - 16960: 0x00006A91, - 16961: 0x00006A7F, - 16962: 0x00006AA6, - 16963: 0x00006A9A, - 16964: 0x00006A85, - 16965: 0x00006A8C, - 16966: 0x00006A92, - 16967: 0x00006B5B, - 16968: 0x00006BAD, - 16969: 0x00006C09, - 16970: 0x00006FCC, - 16971: 0x00006FA9, - 16972: 0x00006FF4, - 16973: 0x00006FD4, - 16974: 0x00006FE3, - 16975: 0x00006FDC, - 16976: 0x00006FED, - 16977: 0x00006FE7, - 16978: 0x00006FE6, - 16979: 0x00006FDE, - 16980: 0x00006FF2, - 16981: 0x00006FDD, - 16982: 0x00006FE2, - 16983: 0x00006FE8, - 16984: 0x000071E1, - 16985: 0x000071F1, - 16986: 0x000071E8, - 16987: 0x000071F2, - 16988: 0x000071E4, - 16989: 0x000071F0, - 16990: 0x000071E2, - 16991: 0x00007373, - 16992: 0x0000736E, - 16993: 0x0000736F, - 16994: 0x00007497, - 16995: 0x000074B2, - 16996: 0x000074AB, - 16997: 0x00007490, - 16998: 0x000074AA, - 16999: 0x000074AD, - 17000: 0x000074B1, - 17001: 0x000074A5, - 17002: 0x000074AF, - 17003: 0x00007510, - 17004: 0x00007511, - 17005: 0x00007512, - 17006: 0x0000750F, - 17007: 0x00007584, - 17008: 0x00007643, - 17009: 0x00007648, - 17010: 0x00007649, - 17011: 0x00007647, - 17012: 0x000076A4, - 17013: 0x000076E9, - 17014: 0x000077B5, - 17015: 0x000077AB, - 17016: 0x000077B2, - 17017: 0x000077B7, - 17018: 0x000077B6, - 17019: 0x000077B4, - 17020: 0x000077B1, - 17021: 0x000077A8, - 17022: 0x000077F0, - 17023: 0x000078F3, - 17024: 0x000078FD, - 17025: 0x00007902, - 17026: 0x000078FB, - 17027: 0x000078FC, - 17028: 0x000078F2, - 17029: 0x00007905, - 17030: 0x000078F9, - 17031: 0x000078FE, - 17032: 0x00007904, - 17033: 0x000079AB, - 17034: 0x000079A8, - 17035: 0x00007A5C, - 17036: 0x00007A5B, - 17037: 0x00007A56, - 17038: 0x00007A58, - 17039: 0x00007A54, - 17040: 0x00007A5A, - 17041: 0x00007ABE, - 17042: 0x00007AC0, - 17043: 0x00007AC1, - 17044: 0x00007C05, - 17045: 0x00007C0F, - 17046: 0x00007BF2, - 17047: 0x00007C00, - 17048: 0x00007BFF, - 17049: 0x00007BFB, - 17050: 0x00007C0E, - 17051: 0x00007BF4, - 17052: 0x00007C0B, - 17053: 0x00007BF3, - 17054: 0x00007C02, - 17055: 0x00007C09, - 17056: 0x00007C03, - 17057: 0x00007C01, - 17058: 0x00007BF8, - 17059: 0x00007BFD, - 17060: 0x00007C06, - 17061: 0x00007BF0, - 17062: 0x00007BF1, - 17063: 0x00007C10, - 17064: 0x00007C0A, - 17065: 0x00007CE8, - 17066: 0x00007E2D, - 17067: 0x00007E3C, - 17068: 0x00007E42, - 17069: 0x00007E33, - 17070: 0x00009848, - 17071: 0x00007E38, - 17072: 0x00007E2A, - 17073: 0x00007E49, - 17074: 0x00007E40, - 17075: 0x00007E47, - 17076: 0x00007E29, - 17077: 0x00007E4C, - 17078: 0x00007E30, - 17079: 0x00007E3B, - 17080: 0x00007E36, - 17081: 0x00007E44, - 17082: 0x00007E3A, - 17083: 0x00007F45, - 17084: 0x00007F7F, - 17085: 0x00007F7E, - 17086: 0x00007F7D, - 17087: 0x00007FF4, - 17088: 0x00007FF2, - 17089: 0x0000802C, - 17090: 0x000081BB, - 17091: 0x000081C4, - 17092: 0x000081CC, - 17093: 0x000081CA, - 17094: 0x000081C5, - 17095: 0x000081C7, - 17096: 0x000081BC, - 17097: 0x000081E9, - 17098: 0x0000825B, - 17099: 0x0000825A, - 17100: 0x0000825C, - 17101: 0x00008583, - 17102: 0x00008580, - 17103: 0x0000858F, - 17104: 0x000085A7, - 17105: 0x00008595, - 17106: 0x000085A0, - 17107: 0x0000858B, - 17108: 0x000085A3, - 17109: 0x0000857B, - 17110: 0x000085A4, - 17111: 0x0000859A, - 17112: 0x0000859E, - 17113: 0x00008577, - 17114: 0x0000857C, - 17115: 0x00008589, - 17116: 0x000085A1, - 17117: 0x0000857A, - 17118: 0x00008578, - 17119: 0x00008557, - 17120: 0x0000858E, - 17121: 0x00008596, - 17122: 0x00008586, - 17123: 0x0000858D, - 17124: 0x00008599, - 17125: 0x0000859D, - 17126: 0x00008581, - 17127: 0x000085A2, - 17128: 0x00008582, - 17129: 0x00008588, - 17130: 0x00008585, - 17131: 0x00008579, - 17132: 0x00008576, - 17133: 0x00008598, - 17134: 0x00008590, - 17135: 0x0000859F, - 17136: 0x00008668, - 17137: 0x000087BE, - 17138: 0x000087AA, - 17139: 0x000087AD, - 17140: 0x000087C5, - 17141: 0x000087B0, - 17142: 0x000087AC, - 17143: 0x000087B9, - 17144: 0x000087B5, - 17145: 0x000087BC, - 17146: 0x000087AE, - 17147: 0x000087C9, - 17148: 0x000087C3, - 17149: 0x000087C2, - 17150: 0x000087CC, - 17151: 0x000087B7, - 17152: 0x000087AF, - 17153: 0x000087C4, - 17154: 0x000087CA, - 17155: 0x000087B4, - 17156: 0x000087B6, - 17157: 0x000087BF, - 17158: 0x000087B8, - 17159: 0x000087BD, - 17160: 0x000087DE, - 17161: 0x000087B2, - 17162: 0x00008935, - 17163: 0x00008933, - 17164: 0x0000893C, - 17165: 0x0000893E, - 17166: 0x00008941, - 17167: 0x00008952, - 17168: 0x00008937, - 17169: 0x00008942, - 17170: 0x000089AD, - 17171: 0x000089AF, - 17172: 0x000089AE, - 17173: 0x000089F2, - 17174: 0x000089F3, - 17175: 0x00008B1E, - 17176: 0x00008B18, - 17177: 0x00008B16, - 17178: 0x00008B11, - 17179: 0x00008B05, - 17180: 0x00008B0B, - 17181: 0x00008B22, - 17182: 0x00008B0F, - 17183: 0x00008B12, - 17184: 0x00008B15, - 17185: 0x00008B07, - 17186: 0x00008B0D, - 17187: 0x00008B08, - 17188: 0x00008B06, - 17189: 0x00008B1C, - 17190: 0x00008B13, - 17191: 0x00008B1A, - 17192: 0x00008C4F, - 17193: 0x00008C70, - 17194: 0x00008C72, - 17195: 0x00008C71, - 17196: 0x00008C6F, - 17197: 0x00008C95, - 17198: 0x00008C94, - 17199: 0x00008CF9, - 17200: 0x00008D6F, - 17201: 0x00008E4E, - 17202: 0x00008E4D, - 17203: 0x00008E53, - 17204: 0x00008E50, - 17205: 0x00008E4C, - 17206: 0x00008E47, - 17207: 0x00008F43, - 17208: 0x00008F40, - 17209: 0x00009085, - 17210: 0x0000907E, - 17211: 0x00009138, - 17212: 0x0000919A, - 17213: 0x000091A2, - 17214: 0x0000919B, - 17215: 0x00009199, - 17216: 0x0000919F, - 17217: 0x000091A1, - 17218: 0x0000919D, - 17219: 0x000091A0, - 17220: 0x000093A1, - 17221: 0x00009383, - 17222: 0x000093AF, - 17223: 0x00009364, - 17224: 0x00009356, - 17225: 0x00009347, - 17226: 0x0000937C, - 17227: 0x00009358, - 17228: 0x0000935C, - 17229: 0x00009376, - 17230: 0x00009349, - 17231: 0x00009350, - 17232: 0x00009351, - 17233: 0x00009360, - 17234: 0x0000936D, - 17235: 0x0000938F, - 17236: 0x0000934C, - 17237: 0x0000936A, - 17238: 0x00009379, - 17239: 0x00009357, - 17240: 0x00009355, - 17241: 0x00009352, - 17242: 0x0000934F, - 17243: 0x00009371, - 17244: 0x00009377, - 17245: 0x0000937B, - 17246: 0x00009361, - 17247: 0x0000935E, - 17248: 0x00009363, - 17249: 0x00009367, - 17250: 0x00009380, - 17251: 0x0000934E, - 17252: 0x00009359, - 17253: 0x000095C7, - 17254: 0x000095C0, - 17255: 0x000095C9, - 17256: 0x000095C3, - 17257: 0x000095C5, - 17258: 0x000095B7, - 17259: 0x000096AE, - 17260: 0x000096B0, - 17261: 0x000096AC, - 17262: 0x00009720, - 17263: 0x0000971F, - 17264: 0x00009718, - 17265: 0x0000971D, - 17266: 0x00009719, - 17267: 0x0000979A, - 17268: 0x000097A1, - 17269: 0x0000979C, - 17270: 0x0000979E, - 17271: 0x0000979D, - 17272: 0x000097D5, - 17273: 0x000097D4, - 17274: 0x000097F1, - 17275: 0x00009841, - 17276: 0x00009844, - 17277: 0x0000984A, - 17278: 0x00009849, - 17279: 0x00009845, - 17280: 0x00009843, - 17281: 0x00009925, - 17282: 0x0000992B, - 17283: 0x0000992C, - 17284: 0x0000992A, - 17285: 0x00009933, - 17286: 0x00009932, - 17287: 0x0000992F, - 17288: 0x0000992D, - 17289: 0x00009931, - 17290: 0x00009930, - 17291: 0x00009998, - 17292: 0x000099A3, - 17293: 0x000099A1, - 17294: 0x00009A02, - 17295: 0x000099FA, - 17296: 0x000099F4, - 17297: 0x000099F7, - 17298: 0x000099F9, - 17299: 0x000099F8, - 17300: 0x000099F6, - 17301: 0x000099FB, - 17302: 0x000099FD, - 17303: 0x000099FE, - 17304: 0x000099FC, - 17305: 0x00009A03, - 17306: 0x00009ABE, - 17307: 0x00009AFE, - 17308: 0x00009AFD, - 17309: 0x00009B01, - 17310: 0x00009AFC, - 17311: 0x00009B48, - 17312: 0x00009B9A, - 17313: 0x00009BA8, - 17314: 0x00009B9E, - 17315: 0x00009B9B, - 17316: 0x00009BA6, - 17317: 0x00009BA1, - 17318: 0x00009BA5, - 17319: 0x00009BA4, - 17320: 0x00009B86, - 17321: 0x00009BA2, - 17322: 0x00009BA0, - 17323: 0x00009BAF, - 17324: 0x00009D33, - 17325: 0x00009D41, - 17326: 0x00009D67, - 17327: 0x00009D36, - 17328: 0x00009D2E, - 17329: 0x00009D2F, - 17330: 0x00009D31, - 17331: 0x00009D38, - 17332: 0x00009D30, - 17333: 0x00009D45, - 17334: 0x00009D42, - 17335: 0x00009D43, - 17336: 0x00009D3E, - 17337: 0x00009D37, - 17338: 0x00009D40, - 17339: 0x00009D3D, - 17340: 0x00007FF5, - 17341: 0x00009D2D, - 17342: 0x00009E8A, - 17343: 0x00009E89, - 17344: 0x00009E8D, - 17345: 0x00009EB0, - 17346: 0x00009EC8, - 17347: 0x00009EDA, - 17348: 0x00009EFB, - 17349: 0x00009EFF, - 17350: 0x00009F24, - 17351: 0x00009F23, - 17352: 0x00009F22, - 17353: 0x00009F54, - 17354: 0x00009FA0, - 17355: 0x00005131, - 17356: 0x0000512D, - 17357: 0x0000512E, - 17358: 0x00005698, - 17359: 0x0000569C, - 17360: 0x00005697, - 17361: 0x0000569A, - 17362: 0x0000569D, - 17363: 0x00005699, - 17364: 0x00005970, - 17365: 0x00005B3C, - 17366: 0x00005C69, - 17367: 0x00005C6A, - 17368: 0x00005DC0, - 17369: 0x00005E6D, - 17370: 0x00005E6E, - 17371: 0x000061D8, - 17372: 0x000061DF, - 17373: 0x000061ED, - 17374: 0x000061EE, - 17375: 0x000061F1, - 17376: 0x000061EA, - 17377: 0x000061F0, - 17378: 0x000061EB, - 17379: 0x000061D6, - 17380: 0x000061E9, - 17381: 0x000064FF, - 17382: 0x00006504, - 17383: 0x000064FD, - 17384: 0x000064F8, - 17385: 0x00006501, - 17386: 0x00006503, - 17387: 0x000064FC, - 17388: 0x00006594, - 17389: 0x000065DB, - 17390: 0x000066DA, - 17391: 0x000066DB, - 17392: 0x000066D8, - 17393: 0x00006AC5, - 17394: 0x00006AB9, - 17395: 0x00006ABD, - 17396: 0x00006AE1, - 17397: 0x00006AC6, - 17398: 0x00006ABA, - 17399: 0x00006AB6, - 17400: 0x00006AB7, - 17401: 0x00006AC7, - 17402: 0x00006AB4, - 17403: 0x00006AAD, - 17404: 0x00006B5E, - 17405: 0x00006BC9, - 17406: 0x00006C0B, - 17407: 0x00007007, - 17408: 0x0000700C, - 17409: 0x0000700D, - 17410: 0x00007001, - 17411: 0x00007005, - 17412: 0x00007014, - 17413: 0x0000700E, - 17414: 0x00006FFF, - 17415: 0x00007000, - 17416: 0x00006FFB, - 17417: 0x00007026, - 17418: 0x00006FFC, - 17419: 0x00006FF7, - 17420: 0x0000700A, - 17421: 0x00007201, - 17422: 0x000071FF, - 17423: 0x000071F9, - 17424: 0x00007203, - 17425: 0x000071FD, - 17426: 0x00007376, - 17427: 0x000074B8, - 17428: 0x000074C0, - 17429: 0x000074B5, - 17430: 0x000074C1, - 17431: 0x000074BE, - 17432: 0x000074B6, - 17433: 0x000074BB, - 17434: 0x000074C2, - 17435: 0x00007514, - 17436: 0x00007513, - 17437: 0x0000765C, - 17438: 0x00007664, - 17439: 0x00007659, - 17440: 0x00007650, - 17441: 0x00007653, - 17442: 0x00007657, - 17443: 0x0000765A, - 17444: 0x000076A6, - 17445: 0x000076BD, - 17446: 0x000076EC, - 17447: 0x000077C2, - 17448: 0x000077BA, - 17449: 0x000078FF, - 17450: 0x0000790C, - 17451: 0x00007913, - 17452: 0x00007914, - 17453: 0x00007909, - 17454: 0x00007910, - 17455: 0x00007912, - 17456: 0x00007911, - 17457: 0x000079AD, - 17458: 0x000079AC, - 17459: 0x00007A5F, - 17460: 0x00007C1C, - 17461: 0x00007C29, - 17462: 0x00007C19, - 17463: 0x00007C20, - 17464: 0x00007C1F, - 17465: 0x00007C2D, - 17466: 0x00007C1D, - 17467: 0x00007C26, - 17468: 0x00007C28, - 17469: 0x00007C22, - 17470: 0x00007C25, - 17471: 0x00007C30, - 17472: 0x00007E5C, - 17473: 0x00007E50, - 17474: 0x00007E56, - 17475: 0x00007E63, - 17476: 0x00007E58, - 17477: 0x00007E62, - 17478: 0x00007E5F, - 17479: 0x00007E51, - 17480: 0x00007E60, - 17481: 0x00007E57, - 17482: 0x00007E53, - 17483: 0x00007FB5, - 17484: 0x00007FB3, - 17485: 0x00007FF7, - 17486: 0x00007FF8, - 17487: 0x00008075, - 17488: 0x000081D1, - 17489: 0x000081D2, - 17490: 0x000081D0, - 17491: 0x0000825F, - 17492: 0x0000825E, - 17493: 0x000085B4, - 17494: 0x000085C6, - 17495: 0x000085C0, - 17496: 0x000085C3, - 17497: 0x000085C2, - 17498: 0x000085B3, - 17499: 0x000085B5, - 17500: 0x000085BD, - 17501: 0x000085C7, - 17502: 0x000085C4, - 17503: 0x000085BF, - 17504: 0x000085CB, - 17505: 0x000085CE, - 17506: 0x000085C8, - 17507: 0x000085C5, - 17508: 0x000085B1, - 17509: 0x000085B6, - 17510: 0x000085D2, - 17511: 0x00008624, - 17512: 0x000085B8, - 17513: 0x000085B7, - 17514: 0x000085BE, - 17515: 0x00008669, - 17516: 0x000087E7, - 17517: 0x000087E6, - 17518: 0x000087E2, - 17519: 0x000087DB, - 17520: 0x000087EB, - 17521: 0x000087EA, - 17522: 0x000087E5, - 17523: 0x000087DF, - 17524: 0x000087F3, - 17525: 0x000087E4, - 17526: 0x000087D4, - 17527: 0x000087DC, - 17528: 0x000087D3, - 17529: 0x000087ED, - 17530: 0x000087D8, - 17531: 0x000087E3, - 17532: 0x000087A4, - 17533: 0x000087D7, - 17534: 0x000087D9, - 17535: 0x00008801, - 17536: 0x000087F4, - 17537: 0x000087E8, - 17538: 0x000087DD, - 17539: 0x00008953, - 17540: 0x0000894B, - 17541: 0x0000894F, - 17542: 0x0000894C, - 17543: 0x00008946, - 17544: 0x00008950, - 17545: 0x00008951, - 17546: 0x00008949, - 17547: 0x00008B2A, - 17548: 0x00008B27, - 17549: 0x00008B23, - 17550: 0x00008B33, - 17551: 0x00008B30, - 17552: 0x00008B35, - 17553: 0x00008B47, - 17554: 0x00008B2F, - 17555: 0x00008B3C, - 17556: 0x00008B3E, - 17557: 0x00008B31, - 17558: 0x00008B25, - 17559: 0x00008B37, - 17560: 0x00008B26, - 17561: 0x00008B36, - 17562: 0x00008B2E, - 17563: 0x00008B24, - 17564: 0x00008B3B, - 17565: 0x00008B3D, - 17566: 0x00008B3A, - 17567: 0x00008C42, - 17568: 0x00008C75, - 17569: 0x00008C99, - 17570: 0x00008C98, - 17571: 0x00008C97, - 17572: 0x00008CFE, - 17573: 0x00008D04, - 17574: 0x00008D02, - 17575: 0x00008D00, - 17576: 0x00008E5C, - 17577: 0x00008E62, - 17578: 0x00008E60, - 17579: 0x00008E57, - 17580: 0x00008E56, - 17581: 0x00008E5E, - 17582: 0x00008E65, - 17583: 0x00008E67, - 17584: 0x00008E5B, - 17585: 0x00008E5A, - 17586: 0x00008E61, - 17587: 0x00008E5D, - 17588: 0x00008E69, - 17589: 0x00008E54, - 17590: 0x00008F46, - 17591: 0x00008F47, - 17592: 0x00008F48, - 17593: 0x00008F4B, - 17594: 0x00009128, - 17595: 0x0000913A, - 17596: 0x0000913B, - 17597: 0x0000913E, - 17598: 0x000091A8, - 17599: 0x000091A5, - 17600: 0x000091A7, - 17601: 0x000091AF, - 17602: 0x000091AA, - 17603: 0x000093B5, - 17604: 0x0000938C, - 17605: 0x00009392, - 17606: 0x000093B7, - 17607: 0x0000939B, - 17608: 0x0000939D, - 17609: 0x00009389, - 17610: 0x000093A7, - 17611: 0x0000938E, - 17612: 0x000093AA, - 17613: 0x0000939E, - 17614: 0x000093A6, - 17615: 0x00009395, - 17616: 0x00009388, - 17617: 0x00009399, - 17618: 0x0000939F, - 17619: 0x0000938D, - 17620: 0x000093B1, - 17621: 0x00009391, - 17622: 0x000093B2, - 17623: 0x000093A4, - 17624: 0x000093A8, - 17625: 0x000093B4, - 17626: 0x000093A3, - 17627: 0x000093A5, - 17628: 0x000095D2, - 17629: 0x000095D3, - 17630: 0x000095D1, - 17631: 0x000096B3, - 17632: 0x000096D7, - 17633: 0x000096DA, - 17634: 0x00005DC2, - 17635: 0x000096DF, - 17636: 0x000096D8, - 17637: 0x000096DD, - 17638: 0x00009723, - 17639: 0x00009722, - 17640: 0x00009725, - 17641: 0x000097AC, - 17642: 0x000097AE, - 17643: 0x000097A8, - 17644: 0x000097AB, - 17645: 0x000097A4, - 17646: 0x000097AA, - 17647: 0x000097A2, - 17648: 0x000097A5, - 17649: 0x000097D7, - 17650: 0x000097D9, - 17651: 0x000097D6, - 17652: 0x000097D8, - 17653: 0x000097FA, - 17654: 0x00009850, - 17655: 0x00009851, - 17656: 0x00009852, - 17657: 0x000098B8, - 17658: 0x00009941, - 17659: 0x0000993C, - 17660: 0x0000993A, - 17661: 0x00009A0F, - 17662: 0x00009A0B, - 17663: 0x00009A09, - 17664: 0x00009A0D, - 17665: 0x00009A04, - 17666: 0x00009A11, - 17667: 0x00009A0A, - 17668: 0x00009A05, - 17669: 0x00009A07, - 17670: 0x00009A06, - 17671: 0x00009AC0, - 17672: 0x00009ADC, - 17673: 0x00009B08, - 17674: 0x00009B04, - 17675: 0x00009B05, - 17676: 0x00009B29, - 17677: 0x00009B35, - 17678: 0x00009B4A, - 17679: 0x00009B4C, - 17680: 0x00009B4B, - 17681: 0x00009BC7, - 17682: 0x00009BC6, - 17683: 0x00009BC3, - 17684: 0x00009BBF, - 17685: 0x00009BC1, - 17686: 0x00009BB5, - 17687: 0x00009BB8, - 17688: 0x00009BD3, - 17689: 0x00009BB6, - 17690: 0x00009BC4, - 17691: 0x00009BB9, - 17692: 0x00009BBD, - 17693: 0x00009D5C, - 17694: 0x00009D53, - 17695: 0x00009D4F, - 17696: 0x00009D4A, - 17697: 0x00009D5B, - 17698: 0x00009D4B, - 17699: 0x00009D59, - 17700: 0x00009D56, - 17701: 0x00009D4C, - 17702: 0x00009D57, - 17703: 0x00009D52, - 17704: 0x00009D54, - 17705: 0x00009D5F, - 17706: 0x00009D58, - 17707: 0x00009D5A, - 17708: 0x00009E8E, - 17709: 0x00009E8C, - 17710: 0x00009EDF, - 17711: 0x00009F01, - 17712: 0x00009F00, - 17713: 0x00009F16, - 17714: 0x00009F25, - 17715: 0x00009F2B, - 17716: 0x00009F2A, - 17717: 0x00009F29, - 17718: 0x00009F28, - 17719: 0x00009F4C, - 17720: 0x00009F55, - 17721: 0x00005134, - 17722: 0x00005135, - 17723: 0x00005296, - 17724: 0x000052F7, - 17725: 0x000053B4, - 17726: 0x000056AB, - 17727: 0x000056AD, - 17728: 0x000056A6, - 17729: 0x000056A7, - 17730: 0x000056AA, - 17731: 0x000056AC, - 17732: 0x000058DA, - 17733: 0x000058DD, - 17734: 0x000058DB, - 17735: 0x00005912, - 17736: 0x00005B3D, - 17737: 0x00005B3E, - 17738: 0x00005B3F, - 17739: 0x00005DC3, - 17740: 0x00005E70, - 17741: 0x00005FBF, - 17742: 0x000061FB, - 17743: 0x00006507, - 17744: 0x00006510, - 17745: 0x0000650D, - 17746: 0x00006509, - 17747: 0x0000650C, - 17748: 0x0000650E, - 17749: 0x00006584, - 17750: 0x000065DE, - 17751: 0x000065DD, - 17752: 0x000066DE, - 17753: 0x00006AE7, - 17754: 0x00006AE0, - 17755: 0x00006ACC, - 17756: 0x00006AD1, - 17757: 0x00006AD9, - 17758: 0x00006ACB, - 17759: 0x00006ADF, - 17760: 0x00006ADC, - 17761: 0x00006AD0, - 17762: 0x00006AEB, - 17763: 0x00006ACF, - 17764: 0x00006ACD, - 17765: 0x00006ADE, - 17766: 0x00006B60, - 17767: 0x00006BB0, - 17768: 0x00006C0C, - 17769: 0x00007019, - 17770: 0x00007027, - 17771: 0x00007020, - 17772: 0x00007016, - 17773: 0x0000702B, - 17774: 0x00007021, - 17775: 0x00007022, - 17776: 0x00007023, - 17777: 0x00007029, - 17778: 0x00007017, - 17779: 0x00007024, - 17780: 0x0000701C, - 17781: 0x0000702A, - 17782: 0x0000720C, - 17783: 0x0000720A, - 17784: 0x00007207, - 17785: 0x00007202, - 17786: 0x00007205, - 17787: 0x000072A5, - 17788: 0x000072A6, - 17789: 0x000072A4, - 17790: 0x000072A3, - 17791: 0x000072A1, - 17792: 0x000074CB, - 17793: 0x000074C5, - 17794: 0x000074B7, - 17795: 0x000074C3, - 17796: 0x00007516, - 17797: 0x00007660, - 17798: 0x000077C9, - 17799: 0x000077CA, - 17800: 0x000077C4, - 17801: 0x000077F1, - 17802: 0x0000791D, - 17803: 0x0000791B, - 17804: 0x00007921, - 17805: 0x0000791C, - 17806: 0x00007917, - 17807: 0x0000791E, - 17808: 0x000079B0, - 17809: 0x00007A67, - 17810: 0x00007A68, - 17811: 0x00007C33, - 17812: 0x00007C3C, - 17813: 0x00007C39, - 17814: 0x00007C2C, - 17815: 0x00007C3B, - 17816: 0x00007CEC, - 17817: 0x00007CEA, - 17818: 0x00007E76, - 17819: 0x00007E75, - 17820: 0x00007E78, - 17821: 0x00007E70, - 17822: 0x00007E77, - 17823: 0x00007E6F, - 17824: 0x00007E7A, - 17825: 0x00007E72, - 17826: 0x00007E74, - 17827: 0x00007E68, - 17828: 0x00007F4B, - 17829: 0x00007F4A, - 17830: 0x00007F83, - 17831: 0x00007F86, - 17832: 0x00007FB7, - 17833: 0x00007FFD, - 17834: 0x00007FFE, - 17835: 0x00008078, - 17836: 0x000081D7, - 17837: 0x000081D5, - 17838: 0x00008264, - 17839: 0x00008261, - 17840: 0x00008263, - 17841: 0x000085EB, - 17842: 0x000085F1, - 17843: 0x000085ED, - 17844: 0x000085D9, - 17845: 0x000085E1, - 17846: 0x000085E8, - 17847: 0x000085DA, - 17848: 0x000085D7, - 17849: 0x000085EC, - 17850: 0x000085F2, - 17851: 0x000085F8, - 17852: 0x000085D8, - 17853: 0x000085DF, - 17854: 0x000085E3, - 17855: 0x000085DC, - 17856: 0x000085D1, - 17857: 0x000085F0, - 17858: 0x000085E6, - 17859: 0x000085EF, - 17860: 0x000085DE, - 17861: 0x000085E2, - 17862: 0x00008800, - 17863: 0x000087FA, - 17864: 0x00008803, - 17865: 0x000087F6, - 17866: 0x000087F7, - 17867: 0x00008809, - 17868: 0x0000880C, - 17869: 0x0000880B, - 17870: 0x00008806, - 17871: 0x000087FC, - 17872: 0x00008808, - 17873: 0x000087FF, - 17874: 0x0000880A, - 17875: 0x00008802, - 17876: 0x00008962, - 17877: 0x0000895A, - 17878: 0x0000895B, - 17879: 0x00008957, - 17880: 0x00008961, - 17881: 0x0000895C, - 17882: 0x00008958, - 17883: 0x0000895D, - 17884: 0x00008959, - 17885: 0x00008988, - 17886: 0x000089B7, - 17887: 0x000089B6, - 17888: 0x000089F6, - 17889: 0x00008B50, - 17890: 0x00008B48, - 17891: 0x00008B4A, - 17892: 0x00008B40, - 17893: 0x00008B53, - 17894: 0x00008B56, - 17895: 0x00008B54, - 17896: 0x00008B4B, - 17897: 0x00008B55, - 17898: 0x00008B51, - 17899: 0x00008B42, - 17900: 0x00008B52, - 17901: 0x00008B57, - 17902: 0x00008C43, - 17903: 0x00008C77, - 17904: 0x00008C76, - 17905: 0x00008C9A, - 17906: 0x00008D06, - 17907: 0x00008D07, - 17908: 0x00008D09, - 17909: 0x00008DAC, - 17910: 0x00008DAA, - 17911: 0x00008DAD, - 17912: 0x00008DAB, - 17913: 0x00008E6D, - 17914: 0x00008E78, - 17915: 0x00008E73, - 17916: 0x00008E6A, - 17917: 0x00008E6F, - 17918: 0x00008E7B, - 17919: 0x00008EC2, - 17920: 0x00008F52, - 17921: 0x00008F51, - 17922: 0x00008F4F, - 17923: 0x00008F50, - 17924: 0x00008F53, - 17925: 0x00008FB4, - 17926: 0x00009140, - 17927: 0x0000913F, - 17928: 0x000091B0, - 17929: 0x000091AD, - 17930: 0x000093DE, - 17931: 0x000093C7, - 17932: 0x000093CF, - 17933: 0x000093C2, - 17934: 0x000093DA, - 17935: 0x000093D0, - 17936: 0x000093F9, - 17937: 0x000093EC, - 17938: 0x000093CC, - 17939: 0x000093D9, - 17940: 0x000093A9, - 17941: 0x000093E6, - 17942: 0x000093CA, - 17943: 0x000093D4, - 17944: 0x000093EE, - 17945: 0x000093E3, - 17946: 0x000093D5, - 17947: 0x000093C4, - 17948: 0x000093CE, - 17949: 0x000093C0, - 17950: 0x000093D2, - 17951: 0x000093E7, - 17952: 0x0000957D, - 17953: 0x000095DA, - 17954: 0x000095DB, - 17955: 0x000096E1, - 17956: 0x00009729, - 17957: 0x0000972B, - 17958: 0x0000972C, - 17959: 0x00009728, - 17960: 0x00009726, - 17961: 0x000097B3, - 17962: 0x000097B7, - 17963: 0x000097B6, - 17964: 0x000097DD, - 17965: 0x000097DE, - 17966: 0x000097DF, - 17967: 0x0000985C, - 17968: 0x00009859, - 17969: 0x0000985D, - 17970: 0x00009857, - 17971: 0x000098BF, - 17972: 0x000098BD, - 17973: 0x000098BB, - 17974: 0x000098BE, - 17975: 0x00009948, - 17976: 0x00009947, - 17977: 0x00009943, - 17978: 0x000099A6, - 17979: 0x000099A7, - 17980: 0x00009A1A, - 17981: 0x00009A15, - 17982: 0x00009A25, - 17983: 0x00009A1D, - 17984: 0x00009A24, - 17985: 0x00009A1B, - 17986: 0x00009A22, - 17987: 0x00009A20, - 17988: 0x00009A27, - 17989: 0x00009A23, - 17990: 0x00009A1E, - 17991: 0x00009A1C, - 17992: 0x00009A14, - 17993: 0x00009AC2, - 17994: 0x00009B0B, - 17995: 0x00009B0A, - 17996: 0x00009B0E, - 17997: 0x00009B0C, - 17998: 0x00009B37, - 17999: 0x00009BEA, - 18000: 0x00009BEB, - 18001: 0x00009BE0, - 18002: 0x00009BDE, - 18003: 0x00009BE4, - 18004: 0x00009BE6, - 18005: 0x00009BE2, - 18006: 0x00009BF0, - 18007: 0x00009BD4, - 18008: 0x00009BD7, - 18009: 0x00009BEC, - 18010: 0x00009BDC, - 18011: 0x00009BD9, - 18012: 0x00009BE5, - 18013: 0x00009BD5, - 18014: 0x00009BE1, - 18015: 0x00009BDA, - 18016: 0x00009D77, - 18017: 0x00009D81, - 18018: 0x00009D8A, - 18019: 0x00009D84, - 18020: 0x00009D88, - 18021: 0x00009D71, - 18022: 0x00009D80, - 18023: 0x00009D78, - 18024: 0x00009D86, - 18025: 0x00009D8B, - 18026: 0x00009D8C, - 18027: 0x00009D7D, - 18028: 0x00009D6B, - 18029: 0x00009D74, - 18030: 0x00009D75, - 18031: 0x00009D70, - 18032: 0x00009D69, - 18033: 0x00009D85, - 18034: 0x00009D73, - 18035: 0x00009D7B, - 18036: 0x00009D82, - 18037: 0x00009D6F, - 18038: 0x00009D79, - 18039: 0x00009D7F, - 18040: 0x00009D87, - 18041: 0x00009D68, - 18042: 0x00009E94, - 18043: 0x00009E91, - 18044: 0x00009EC0, - 18045: 0x00009EFC, - 18046: 0x00009F2D, - 18047: 0x00009F40, - 18048: 0x00009F41, - 18049: 0x00009F4D, - 18050: 0x00009F56, - 18051: 0x00009F57, - 18052: 0x00009F58, - 18053: 0x00005337, - 18054: 0x000056B2, - 18055: 0x000056B5, - 18056: 0x000056B3, - 18057: 0x000058E3, - 18058: 0x00005B45, - 18059: 0x00005DC6, - 18060: 0x00005DC7, - 18061: 0x00005EEE, - 18062: 0x00005EEF, - 18063: 0x00005FC0, - 18064: 0x00005FC1, - 18065: 0x000061F9, - 18066: 0x00006517, - 18067: 0x00006516, - 18068: 0x00006515, - 18069: 0x00006513, - 18070: 0x000065DF, - 18071: 0x000066E8, - 18072: 0x000066E3, - 18073: 0x000066E4, - 18074: 0x00006AF3, - 18075: 0x00006AF0, - 18076: 0x00006AEA, - 18077: 0x00006AE8, - 18078: 0x00006AF9, - 18079: 0x00006AF1, - 18080: 0x00006AEE, - 18081: 0x00006AEF, - 18082: 0x0000703C, - 18083: 0x00007035, - 18084: 0x0000702F, - 18085: 0x00007037, - 18086: 0x00007034, - 18087: 0x00007031, - 18088: 0x00007042, - 18089: 0x00007038, - 18090: 0x0000703F, - 18091: 0x0000703A, - 18092: 0x00007039, - 18093: 0x00007040, - 18094: 0x0000703B, - 18095: 0x00007033, - 18096: 0x00007041, - 18097: 0x00007213, - 18098: 0x00007214, - 18099: 0x000072A8, - 18100: 0x0000737D, - 18101: 0x0000737C, - 18102: 0x000074BA, - 18103: 0x000076AB, - 18104: 0x000076AA, - 18105: 0x000076BE, - 18106: 0x000076ED, - 18107: 0x000077CC, - 18108: 0x000077CE, - 18109: 0x000077CF, - 18110: 0x000077CD, - 18111: 0x000077F2, - 18112: 0x00007925, - 18113: 0x00007923, - 18114: 0x00007927, - 18115: 0x00007928, - 18116: 0x00007924, - 18117: 0x00007929, - 18118: 0x000079B2, - 18119: 0x00007A6E, - 18120: 0x00007A6C, - 18121: 0x00007A6D, - 18122: 0x00007AF7, - 18123: 0x00007C49, - 18124: 0x00007C48, - 18125: 0x00007C4A, - 18126: 0x00007C47, - 18127: 0x00007C45, - 18128: 0x00007CEE, - 18129: 0x00007E7B, - 18130: 0x00007E7E, - 18131: 0x00007E81, - 18132: 0x00007E80, - 18133: 0x00007FBA, - 18134: 0x00007FFF, - 18135: 0x00008079, - 18136: 0x000081DB, - 18137: 0x000081D9, - 18138: 0x0000820B, - 18139: 0x00008268, - 18140: 0x00008269, - 18141: 0x00008622, - 18142: 0x000085FF, - 18143: 0x00008601, - 18144: 0x000085FE, - 18145: 0x0000861B, - 18146: 0x00008600, - 18147: 0x000085F6, - 18148: 0x00008604, - 18149: 0x00008609, - 18150: 0x00008605, - 18151: 0x0000860C, - 18152: 0x000085FD, - 18153: 0x00008819, - 18154: 0x00008810, - 18155: 0x00008811, - 18156: 0x00008817, - 18157: 0x00008813, - 18158: 0x00008816, - 18159: 0x00008963, - 18160: 0x00008966, - 18161: 0x000089B9, - 18162: 0x000089F7, - 18163: 0x00008B60, - 18164: 0x00008B6A, - 18165: 0x00008B5D, - 18166: 0x00008B68, - 18167: 0x00008B63, - 18168: 0x00008B65, - 18169: 0x00008B67, - 18170: 0x00008B6D, - 18171: 0x00008DAE, - 18172: 0x00008E86, - 18173: 0x00008E88, - 18174: 0x00008E84, - 18175: 0x00008F59, - 18176: 0x00008F56, - 18177: 0x00008F57, - 18178: 0x00008F55, - 18179: 0x00008F58, - 18180: 0x00008F5A, - 18181: 0x0000908D, - 18182: 0x00009143, - 18183: 0x00009141, - 18184: 0x000091B7, - 18185: 0x000091B5, - 18186: 0x000091B2, - 18187: 0x000091B3, - 18188: 0x0000940B, - 18189: 0x00009413, - 18190: 0x000093FB, - 18191: 0x00009420, - 18192: 0x0000940F, - 18193: 0x00009414, - 18194: 0x000093FE, - 18195: 0x00009415, - 18196: 0x00009410, - 18197: 0x00009428, - 18198: 0x00009419, - 18199: 0x0000940D, - 18200: 0x000093F5, - 18201: 0x00009400, - 18202: 0x000093F7, - 18203: 0x00009407, - 18204: 0x0000940E, - 18205: 0x00009416, - 18206: 0x00009412, - 18207: 0x000093FA, - 18208: 0x00009409, - 18209: 0x000093F8, - 18210: 0x0000940A, - 18211: 0x000093FF, - 18212: 0x000093FC, - 18213: 0x0000940C, - 18214: 0x000093F6, - 18215: 0x00009411, - 18216: 0x00009406, - 18217: 0x000095DE, - 18218: 0x000095E0, - 18219: 0x000095DF, - 18220: 0x0000972E, - 18221: 0x0000972F, - 18222: 0x000097B9, - 18223: 0x000097BB, - 18224: 0x000097FD, - 18225: 0x000097FE, - 18226: 0x00009860, - 18227: 0x00009862, - 18228: 0x00009863, - 18229: 0x0000985F, - 18230: 0x000098C1, - 18231: 0x000098C2, - 18232: 0x00009950, - 18233: 0x0000994E, - 18234: 0x00009959, - 18235: 0x0000994C, - 18236: 0x0000994B, - 18237: 0x00009953, - 18238: 0x00009A32, - 18239: 0x00009A34, - 18240: 0x00009A31, - 18241: 0x00009A2C, - 18242: 0x00009A2A, - 18243: 0x00009A36, - 18244: 0x00009A29, - 18245: 0x00009A2E, - 18246: 0x00009A38, - 18247: 0x00009A2D, - 18248: 0x00009AC7, - 18249: 0x00009ACA, - 18250: 0x00009AC6, - 18251: 0x00009B10, - 18252: 0x00009B12, - 18253: 0x00009B11, - 18254: 0x00009C0B, - 18255: 0x00009C08, - 18256: 0x00009BF7, - 18257: 0x00009C05, - 18258: 0x00009C12, - 18259: 0x00009BF8, - 18260: 0x00009C40, - 18261: 0x00009C07, - 18262: 0x00009C0E, - 18263: 0x00009C06, - 18264: 0x00009C17, - 18265: 0x00009C14, - 18266: 0x00009C09, - 18267: 0x00009D9F, - 18268: 0x00009D99, - 18269: 0x00009DA4, - 18270: 0x00009D9D, - 18271: 0x00009D92, - 18272: 0x00009D98, - 18273: 0x00009D90, - 18274: 0x00009D9B, - 18275: 0x00009DA0, - 18276: 0x00009D94, - 18277: 0x00009D9C, - 18278: 0x00009DAA, - 18279: 0x00009D97, - 18280: 0x00009DA1, - 18281: 0x00009D9A, - 18282: 0x00009DA2, - 18283: 0x00009DA8, - 18284: 0x00009D9E, - 18285: 0x00009DA3, - 18286: 0x00009DBF, - 18287: 0x00009DA9, - 18288: 0x00009D96, - 18289: 0x00009DA6, - 18290: 0x00009DA7, - 18291: 0x00009E99, - 18292: 0x00009E9B, - 18293: 0x00009E9A, - 18294: 0x00009EE5, - 18295: 0x00009EE4, - 18296: 0x00009EE7, - 18297: 0x00009EE6, - 18298: 0x00009F30, - 18299: 0x00009F2E, - 18300: 0x00009F5B, - 18301: 0x00009F60, - 18302: 0x00009F5E, - 18303: 0x00009F5D, - 18304: 0x00009F59, - 18305: 0x00009F91, - 18306: 0x0000513A, - 18307: 0x00005139, - 18308: 0x00005298, - 18309: 0x00005297, - 18310: 0x000056C3, - 18311: 0x000056BD, - 18312: 0x000056BE, - 18313: 0x00005B48, - 18314: 0x00005B47, - 18315: 0x00005DCB, - 18316: 0x00005DCF, - 18317: 0x00005EF1, - 18318: 0x000061FD, - 18319: 0x0000651B, - 18320: 0x00006B02, - 18321: 0x00006AFC, - 18322: 0x00006B03, - 18323: 0x00006AF8, - 18324: 0x00006B00, - 18325: 0x00007043, - 18326: 0x00007044, - 18327: 0x0000704A, - 18328: 0x00007048, - 18329: 0x00007049, - 18330: 0x00007045, - 18331: 0x00007046, - 18332: 0x0000721D, - 18333: 0x0000721A, - 18334: 0x00007219, - 18335: 0x0000737E, - 18336: 0x00007517, - 18337: 0x0000766A, - 18338: 0x000077D0, - 18339: 0x0000792D, - 18340: 0x00007931, - 18341: 0x0000792F, - 18342: 0x00007C54, - 18343: 0x00007C53, - 18344: 0x00007CF2, - 18345: 0x00007E8A, - 18346: 0x00007E87, - 18347: 0x00007E88, - 18348: 0x00007E8B, - 18349: 0x00007E86, - 18350: 0x00007E8D, - 18351: 0x00007F4D, - 18352: 0x00007FBB, - 18353: 0x00008030, - 18354: 0x000081DD, - 18355: 0x00008618, - 18356: 0x0000862A, - 18357: 0x00008626, - 18358: 0x0000861F, - 18359: 0x00008623, - 18360: 0x0000861C, - 18361: 0x00008619, - 18362: 0x00008627, - 18363: 0x0000862E, - 18364: 0x00008621, - 18365: 0x00008620, - 18366: 0x00008629, - 18367: 0x0000861E, - 18368: 0x00008625, - 18369: 0x00008829, - 18370: 0x0000881D, - 18371: 0x0000881B, - 18372: 0x00008820, - 18373: 0x00008824, - 18374: 0x0000881C, - 18375: 0x0000882B, - 18376: 0x0000884A, - 18377: 0x0000896D, - 18378: 0x00008969, - 18379: 0x0000896E, - 18380: 0x0000896B, - 18381: 0x000089FA, - 18382: 0x00008B79, - 18383: 0x00008B78, - 18384: 0x00008B45, - 18385: 0x00008B7A, - 18386: 0x00008B7B, - 18387: 0x00008D10, - 18388: 0x00008D14, - 18389: 0x00008DAF, - 18390: 0x00008E8E, - 18391: 0x00008E8C, - 18392: 0x00008F5E, - 18393: 0x00008F5B, - 18394: 0x00008F5D, - 18395: 0x00009146, - 18396: 0x00009144, - 18397: 0x00009145, - 18398: 0x000091B9, - 18399: 0x0000943F, - 18400: 0x0000943B, - 18401: 0x00009436, - 18402: 0x00009429, - 18403: 0x0000943D, - 18404: 0x0000943C, - 18405: 0x00009430, - 18406: 0x00009439, - 18407: 0x0000942A, - 18408: 0x00009437, - 18409: 0x0000942C, - 18410: 0x00009440, - 18411: 0x00009431, - 18412: 0x000095E5, - 18413: 0x000095E4, - 18414: 0x000095E3, - 18415: 0x00009735, - 18416: 0x0000973A, - 18417: 0x000097BF, - 18418: 0x000097E1, - 18419: 0x00009864, - 18420: 0x000098C9, - 18421: 0x000098C6, - 18422: 0x000098C0, - 18423: 0x00009958, - 18424: 0x00009956, - 18425: 0x00009A39, - 18426: 0x00009A3D, - 18427: 0x00009A46, - 18428: 0x00009A44, - 18429: 0x00009A42, - 18430: 0x00009A41, - 18431: 0x00009A3A, - 18432: 0x00009A3F, - 18433: 0x00009ACD, - 18434: 0x00009B15, - 18435: 0x00009B17, - 18436: 0x00009B18, - 18437: 0x00009B16, - 18438: 0x00009B3A, - 18439: 0x00009B52, - 18440: 0x00009C2B, - 18441: 0x00009C1D, - 18442: 0x00009C1C, - 18443: 0x00009C2C, - 18444: 0x00009C23, - 18445: 0x00009C28, - 18446: 0x00009C29, - 18447: 0x00009C24, - 18448: 0x00009C21, - 18449: 0x00009DB7, - 18450: 0x00009DB6, - 18451: 0x00009DBC, - 18452: 0x00009DC1, - 18453: 0x00009DC7, - 18454: 0x00009DCA, - 18455: 0x00009DCF, - 18456: 0x00009DBE, - 18457: 0x00009DC5, - 18458: 0x00009DC3, - 18459: 0x00009DBB, - 18460: 0x00009DB5, - 18461: 0x00009DCE, - 18462: 0x00009DB9, - 18463: 0x00009DBA, - 18464: 0x00009DAC, - 18465: 0x00009DC8, - 18466: 0x00009DB1, - 18467: 0x00009DAD, - 18468: 0x00009DCC, - 18469: 0x00009DB3, - 18470: 0x00009DCD, - 18471: 0x00009DB2, - 18472: 0x00009E7A, - 18473: 0x00009E9C, - 18474: 0x00009EEB, - 18475: 0x00009EEE, - 18476: 0x00009EED, - 18477: 0x00009F1B, - 18478: 0x00009F18, - 18479: 0x00009F1A, - 18480: 0x00009F31, - 18481: 0x00009F4E, - 18482: 0x00009F65, - 18483: 0x00009F64, - 18484: 0x00009F92, - 18485: 0x00004EB9, - 18486: 0x000056C6, - 18487: 0x000056C5, - 18488: 0x000056CB, - 18489: 0x00005971, - 18490: 0x00005B4B, - 18491: 0x00005B4C, - 18492: 0x00005DD5, - 18493: 0x00005DD1, - 18494: 0x00005EF2, - 18495: 0x00006521, - 18496: 0x00006520, - 18497: 0x00006526, - 18498: 0x00006522, - 18499: 0x00006B0B, - 18500: 0x00006B08, - 18501: 0x00006B09, - 18502: 0x00006C0D, - 18503: 0x00007055, - 18504: 0x00007056, - 18505: 0x00007057, - 18506: 0x00007052, - 18507: 0x0000721E, - 18508: 0x0000721F, - 18509: 0x000072A9, - 18510: 0x0000737F, - 18511: 0x000074D8, - 18512: 0x000074D5, - 18513: 0x000074D9, - 18514: 0x000074D7, - 18515: 0x0000766D, - 18516: 0x000076AD, - 18517: 0x00007935, - 18518: 0x000079B4, - 18519: 0x00007A70, - 18520: 0x00007A71, - 18521: 0x00007C57, - 18522: 0x00007C5C, - 18523: 0x00007C59, - 18524: 0x00007C5B, - 18525: 0x00007C5A, - 18526: 0x00007CF4, - 18527: 0x00007CF1, - 18528: 0x00007E91, - 18529: 0x00007F4F, - 18530: 0x00007F87, - 18531: 0x000081DE, - 18532: 0x0000826B, - 18533: 0x00008634, - 18534: 0x00008635, - 18535: 0x00008633, - 18536: 0x0000862C, - 18537: 0x00008632, - 18538: 0x00008636, - 18539: 0x0000882C, - 18540: 0x00008828, - 18541: 0x00008826, - 18542: 0x0000882A, - 18543: 0x00008825, - 18544: 0x00008971, - 18545: 0x000089BF, - 18546: 0x000089BE, - 18547: 0x000089FB, - 18548: 0x00008B7E, - 18549: 0x00008B84, - 18550: 0x00008B82, - 18551: 0x00008B86, - 18552: 0x00008B85, - 18553: 0x00008B7F, - 18554: 0x00008D15, - 18555: 0x00008E95, - 18556: 0x00008E94, - 18557: 0x00008E9A, - 18558: 0x00008E92, - 18559: 0x00008E90, - 18560: 0x00008E96, - 18561: 0x00008E97, - 18562: 0x00008F60, - 18563: 0x00008F62, - 18564: 0x00009147, - 18565: 0x0000944C, - 18566: 0x00009450, - 18567: 0x0000944A, - 18568: 0x0000944B, - 18569: 0x0000944F, - 18570: 0x00009447, - 18571: 0x00009445, - 18572: 0x00009448, - 18573: 0x00009449, - 18574: 0x00009446, - 18575: 0x0000973F, - 18576: 0x000097E3, - 18577: 0x0000986A, - 18578: 0x00009869, - 18579: 0x000098CB, - 18580: 0x00009954, - 18581: 0x0000995B, - 18582: 0x00009A4E, - 18583: 0x00009A53, - 18584: 0x00009A54, - 18585: 0x00009A4C, - 18586: 0x00009A4F, - 18587: 0x00009A48, - 18588: 0x00009A4A, - 18589: 0x00009A49, - 18590: 0x00009A52, - 18591: 0x00009A50, - 18592: 0x00009AD0, - 18593: 0x00009B19, - 18594: 0x00009B2B, - 18595: 0x00009B3B, - 18596: 0x00009B56, - 18597: 0x00009B55, - 18598: 0x00009C46, - 18599: 0x00009C48, - 18600: 0x00009C3F, - 18601: 0x00009C44, - 18602: 0x00009C39, - 18603: 0x00009C33, - 18604: 0x00009C41, - 18605: 0x00009C3C, - 18606: 0x00009C37, - 18607: 0x00009C34, - 18608: 0x00009C32, - 18609: 0x00009C3D, - 18610: 0x00009C36, - 18611: 0x00009DDB, - 18612: 0x00009DD2, - 18613: 0x00009DDE, - 18614: 0x00009DDA, - 18615: 0x00009DCB, - 18616: 0x00009DD0, - 18617: 0x00009DDC, - 18618: 0x00009DD1, - 18619: 0x00009DDF, - 18620: 0x00009DE9, - 18621: 0x00009DD9, - 18622: 0x00009DD8, - 18623: 0x00009DD6, - 18624: 0x00009DF5, - 18625: 0x00009DD5, - 18626: 0x00009DDD, - 18627: 0x00009EB6, - 18628: 0x00009EF0, - 18629: 0x00009F35, - 18630: 0x00009F33, - 18631: 0x00009F32, - 18632: 0x00009F42, - 18633: 0x00009F6B, - 18634: 0x00009F95, - 18635: 0x00009FA2, - 18636: 0x0000513D, - 18637: 0x00005299, - 18638: 0x000058E8, - 18639: 0x000058E7, - 18640: 0x00005972, - 18641: 0x00005B4D, - 18642: 0x00005DD8, - 18643: 0x0000882F, - 18644: 0x00005F4F, - 18645: 0x00006201, - 18646: 0x00006203, - 18647: 0x00006204, - 18648: 0x00006529, - 18649: 0x00006525, - 18650: 0x00006596, - 18651: 0x000066EB, - 18652: 0x00006B11, - 18653: 0x00006B12, - 18654: 0x00006B0F, - 18655: 0x00006BCA, - 18656: 0x0000705B, - 18657: 0x0000705A, - 18658: 0x00007222, - 18659: 0x00007382, - 18660: 0x00007381, - 18661: 0x00007383, - 18662: 0x00007670, - 18663: 0x000077D4, - 18664: 0x00007C67, - 18665: 0x00007C66, - 18666: 0x00007E95, - 18667: 0x0000826C, - 18668: 0x0000863A, - 18669: 0x00008640, - 18670: 0x00008639, - 18671: 0x0000863C, - 18672: 0x00008631, - 18673: 0x0000863B, - 18674: 0x0000863E, - 18675: 0x00008830, - 18676: 0x00008832, - 18677: 0x0000882E, - 18678: 0x00008833, - 18679: 0x00008976, - 18680: 0x00008974, - 18681: 0x00008973, - 18682: 0x000089FE, - 18683: 0x00008B8C, - 18684: 0x00008B8E, - 18685: 0x00008B8B, - 18686: 0x00008B88, - 18687: 0x00008C45, - 18688: 0x00008D19, - 18689: 0x00008E98, - 18690: 0x00008F64, - 18691: 0x00008F63, - 18692: 0x000091BC, - 18693: 0x00009462, - 18694: 0x00009455, - 18695: 0x0000945D, - 18696: 0x00009457, - 18697: 0x0000945E, - 18698: 0x000097C4, - 18699: 0x000097C5, - 18700: 0x00009800, - 18701: 0x00009A56, - 18702: 0x00009A59, - 18703: 0x00009B1E, - 18704: 0x00009B1F, - 18705: 0x00009B20, - 18706: 0x00009C52, - 18707: 0x00009C58, - 18708: 0x00009C50, - 18709: 0x00009C4A, - 18710: 0x00009C4D, - 18711: 0x00009C4B, - 18712: 0x00009C55, - 18713: 0x00009C59, - 18714: 0x00009C4C, - 18715: 0x00009C4E, - 18716: 0x00009DFB, - 18717: 0x00009DF7, - 18718: 0x00009DEF, - 18719: 0x00009DE3, - 18720: 0x00009DEB, - 18721: 0x00009DF8, - 18722: 0x00009DE4, - 18723: 0x00009DF6, - 18724: 0x00009DE1, - 18725: 0x00009DEE, - 18726: 0x00009DE6, - 18727: 0x00009DF2, - 18728: 0x00009DF0, - 18729: 0x00009DE2, - 18730: 0x00009DEC, - 18731: 0x00009DF4, - 18732: 0x00009DF3, - 18733: 0x00009DE8, - 18734: 0x00009DED, - 18735: 0x00009EC2, - 18736: 0x00009ED0, - 18737: 0x00009EF2, - 18738: 0x00009EF3, - 18739: 0x00009F06, - 18740: 0x00009F1C, - 18741: 0x00009F38, - 18742: 0x00009F37, - 18743: 0x00009F36, - 18744: 0x00009F43, - 18745: 0x00009F4F, - 18746: 0x00009F71, - 18747: 0x00009F70, - 18748: 0x00009F6E, - 18749: 0x00009F6F, - 18750: 0x000056D3, - 18751: 0x000056CD, - 18752: 0x00005B4E, - 18753: 0x00005C6D, - 18754: 0x0000652D, - 18755: 0x000066ED, - 18756: 0x000066EE, - 18757: 0x00006B13, - 18758: 0x0000705F, - 18759: 0x00007061, - 18760: 0x0000705D, - 18761: 0x00007060, - 18762: 0x00007223, - 18763: 0x000074DB, - 18764: 0x000074E5, - 18765: 0x000077D5, - 18766: 0x00007938, - 18767: 0x000079B7, - 18768: 0x000079B6, - 18769: 0x00007C6A, - 18770: 0x00007E97, - 18771: 0x00007F89, - 18772: 0x0000826D, - 18773: 0x00008643, - 18774: 0x00008838, - 18775: 0x00008837, - 18776: 0x00008835, - 18777: 0x0000884B, - 18778: 0x00008B94, - 18779: 0x00008B95, - 18780: 0x00008E9E, - 18781: 0x00008E9F, - 18782: 0x00008EA0, - 18783: 0x00008E9D, - 18784: 0x000091BE, - 18785: 0x000091BD, - 18786: 0x000091C2, - 18787: 0x0000946B, - 18788: 0x00009468, - 18789: 0x00009469, - 18790: 0x000096E5, - 18791: 0x00009746, - 18792: 0x00009743, - 18793: 0x00009747, - 18794: 0x000097C7, - 18795: 0x000097E5, - 18796: 0x00009A5E, - 18797: 0x00009AD5, - 18798: 0x00009B59, - 18799: 0x00009C63, - 18800: 0x00009C67, - 18801: 0x00009C66, - 18802: 0x00009C62, - 18803: 0x00009C5E, - 18804: 0x00009C60, - 18805: 0x00009E02, - 18806: 0x00009DFE, - 18807: 0x00009E07, - 18808: 0x00009E03, - 18809: 0x00009E06, - 18810: 0x00009E05, - 18811: 0x00009E00, - 18812: 0x00009E01, - 18813: 0x00009E09, - 18814: 0x00009DFF, - 18815: 0x00009DFD, - 18816: 0x00009E04, - 18817: 0x00009EA0, - 18818: 0x00009F1E, - 18819: 0x00009F46, - 18820: 0x00009F74, - 18821: 0x00009F75, - 18822: 0x00009F76, - 18823: 0x000056D4, - 18824: 0x0000652E, - 18825: 0x000065B8, - 18826: 0x00006B18, - 18827: 0x00006B19, - 18828: 0x00006B17, - 18829: 0x00006B1A, - 18830: 0x00007062, - 18831: 0x00007226, - 18832: 0x000072AA, - 18833: 0x000077D8, - 18834: 0x000077D9, - 18835: 0x00007939, - 18836: 0x00007C69, - 18837: 0x00007C6B, - 18838: 0x00007CF6, - 18839: 0x00007E9A, - 18840: 0x00007E98, - 18841: 0x00007E9B, - 18842: 0x00007E99, - 18843: 0x000081E0, - 18844: 0x000081E1, - 18845: 0x00008646, - 18846: 0x00008647, - 18847: 0x00008648, - 18848: 0x00008979, - 18849: 0x0000897A, - 18850: 0x0000897C, - 18851: 0x0000897B, - 18852: 0x000089FF, - 18853: 0x00008B98, - 18854: 0x00008B99, - 18855: 0x00008EA5, - 18856: 0x00008EA4, - 18857: 0x00008EA3, - 18858: 0x0000946E, - 18859: 0x0000946D, - 18860: 0x0000946F, - 18861: 0x00009471, - 18862: 0x00009473, - 18863: 0x00009749, - 18864: 0x00009872, - 18865: 0x0000995F, - 18866: 0x00009C68, - 18867: 0x00009C6E, - 18868: 0x00009C6D, - 18869: 0x00009E0B, - 18870: 0x00009E0D, - 18871: 0x00009E10, - 18872: 0x00009E0F, - 18873: 0x00009E12, - 18874: 0x00009E11, - 18875: 0x00009EA1, - 18876: 0x00009EF5, - 18877: 0x00009F09, - 18878: 0x00009F47, - 18879: 0x00009F78, - 18880: 0x00009F7B, - 18881: 0x00009F7A, - 18882: 0x00009F79, - 18883: 0x0000571E, - 18884: 0x00007066, - 18885: 0x00007C6F, - 18886: 0x0000883C, - 18887: 0x00008DB2, - 18888: 0x00008EA6, - 18889: 0x000091C3, - 18890: 0x00009474, - 18891: 0x00009478, - 18892: 0x00009476, - 18893: 0x00009475, - 18894: 0x00009A60, - 18895: 0x00009C74, - 18896: 0x00009C73, - 18897: 0x00009C71, - 18898: 0x00009C75, - 18899: 0x00009E14, - 18900: 0x00009E13, - 18901: 0x00009EF6, - 18902: 0x00009F0A, - 18903: 0x00009FA4, - 18904: 0x00007068, - 18905: 0x00007065, - 18906: 0x00007CF7, - 18907: 0x0000866A, - 18908: 0x0000883E, - 18909: 0x0000883D, - 18910: 0x0000883F, - 18911: 0x00008B9E, - 18912: 0x00008C9C, - 18913: 0x00008EA9, - 18914: 0x00008EC9, - 18915: 0x0000974B, - 18916: 0x00009873, - 18917: 0x00009874, - 18918: 0x000098CC, - 18919: 0x00009961, - 18920: 0x000099AB, - 18921: 0x00009A64, - 18922: 0x00009A66, - 18923: 0x00009A67, - 18924: 0x00009B24, - 18925: 0x00009E15, - 18926: 0x00009E17, - 18927: 0x00009F48, - 18928: 0x00006207, - 18929: 0x00006B1E, - 18930: 0x00007227, - 18931: 0x0000864C, - 18932: 0x00008EA8, - 18933: 0x00009482, - 18934: 0x00009480, - 18935: 0x00009481, - 18936: 0x00009A69, - 18937: 0x00009A68, - 18938: 0x00009B2E, - 18939: 0x00009E19, - 18940: 0x00007229, - 18941: 0x0000864B, - 18942: 0x00008B9F, - 18943: 0x00009483, - 18944: 0x00009C79, - 18945: 0x00009EB7, - 18946: 0x00007675, - 18947: 0x00009A6B, - 18948: 0x00009C7A, - 18949: 0x00009E1D, - 18950: 0x00007069, - 18951: 0x0000706A, - 18952: 0x00009EA4, - 18953: 0x00009F7E, - 18954: 0x00009F49, - 18955: 0x00009F98, - 18956: 0x00007881, - 18957: 0x000092B9, - 18958: 0x000088CF, - 18959: 0x000058BB, - 18960: 0x00006052, - 18961: 0x00007CA7, - 18962: 0x00005AFA, - 18963: 0x00002554, - 18964: 0x00002566, - 18965: 0x00002557, - 18966: 0x00002560, - 18967: 0x0000256C, - 18968: 0x00002563, - 18969: 0x0000255A, - 18970: 0x00002569, - 18971: 0x0000255D, - 18972: 0x00002552, - 18973: 0x00002564, - 18974: 0x00002555, - 18975: 0x0000255E, - 18976: 0x0000256A, - 18977: 0x00002561, - 18978: 0x00002558, - 18979: 0x00002567, - 18980: 0x0000255B, - 18981: 0x00002553, - 18982: 0x00002565, - 18983: 0x00002556, - 18984: 0x0000255F, - 18985: 0x0000256B, - 18986: 0x00002562, - 18987: 0x00002559, - 18988: 0x00002568, - 18989: 0x0000255C, - 18990: 0x00002551, - 18991: 0x00002550, - 18992: 0x0000256D, - 18993: 0x0000256E, - 18994: 0x00002570, - 18995: 0x0000256F, - 18996: 0x0000FFED, - 18997: 0x00020547, - 18998: 0x000092DB, - 18999: 0x000205DF, - 19000: 0x00023FC5, - 19001: 0x0000854C, - 19002: 0x000042B5, - 19003: 0x000073EF, - 19004: 0x000051B5, - 19005: 0x00003649, - 19006: 0x00024942, - 19007: 0x000289E4, - 19008: 0x00009344, - 19009: 0x000219DB, - 19010: 0x000082EE, - 19011: 0x00023CC8, - 19012: 0x0000783C, - 19013: 0x00006744, - 19014: 0x000062DF, - 19015: 0x00024933, - 19016: 0x000289AA, - 19017: 0x000202A0, - 19018: 0x00026BB3, - 19019: 0x00021305, - 19020: 0x00004FAB, - 19021: 0x000224ED, - 19022: 0x00005008, - 19023: 0x00026D29, - 19024: 0x00027A84, - 19025: 0x00023600, - 19026: 0x00024AB1, - 19027: 0x00022513, - 19028: 0x00005029, - 19029: 0x0002037E, - 19030: 0x00005FA4, - 19031: 0x00020380, - 19032: 0x00020347, - 19033: 0x00006EDB, - 19034: 0x0002041F, - 19035: 0x0000507D, - 19036: 0x00005101, - 19037: 0x0000347A, - 19038: 0x0000510E, - 19039: 0x0000986C, - 19040: 0x00003743, - 19041: 0x00008416, - 19042: 0x000249A4, - 19043: 0x00020487, - 19044: 0x00005160, - 19045: 0x000233B4, - 19046: 0x0000516A, - 19047: 0x00020BFF, - 19048: 0x000220FC, - 19049: 0x000202E5, - 19050: 0x00022530, - 19051: 0x0002058E, - 19052: 0x00023233, - 19053: 0x00021983, - 19054: 0x00005B82, - 19055: 0x0000877D, - 19056: 0x000205B3, - 19057: 0x00023C99, - 19058: 0x000051B2, - 19059: 0x000051B8, - 19060: 0x00009D34, - 19061: 0x000051C9, - 19062: 0x000051CF, - 19063: 0x000051D1, - 19064: 0x00003CDC, - 19065: 0x000051D3, - 19066: 0x00024AA6, - 19067: 0x000051B3, - 19068: 0x000051E2, - 19069: 0x00005342, - 19070: 0x000051ED, - 19071: 0x000083CD, - 19072: 0x0000693E, - 19073: 0x0002372D, - 19074: 0x00005F7B, - 19075: 0x0000520B, - 19076: 0x00005226, - 19077: 0x0000523C, - 19078: 0x000052B5, - 19079: 0x00005257, - 19080: 0x00005294, - 19081: 0x000052B9, - 19082: 0x000052C5, - 19083: 0x00007C15, - 19084: 0x00008542, - 19085: 0x000052E0, - 19086: 0x0000860D, - 19087: 0x00026B13, - 19088: 0x00005305, - 19089: 0x00028ADE, - 19090: 0x00005549, - 19091: 0x00006ED9, - 19092: 0x00023F80, - 19093: 0x00020954, - 19094: 0x00023FEC, - 19095: 0x00005333, - 19096: 0x00005344, - 19097: 0x00020BE2, - 19098: 0x00006CCB, - 19099: 0x00021726, - 19100: 0x0000681B, - 19101: 0x000073D5, - 19102: 0x0000604A, - 19103: 0x00003EAA, - 19104: 0x000038CC, - 19105: 0x000216E8, - 19106: 0x000071DD, - 19107: 0x000044A2, - 19108: 0x0000536D, - 19109: 0x00005374, - 19110: 0x000286AB, - 19111: 0x0000537E, - 19112: 0x0000537F, - 19113: 0x00021596, - 19114: 0x00021613, - 19115: 0x000077E6, - 19116: 0x00005393, - 19117: 0x00028A9B, - 19118: 0x000053A0, - 19119: 0x000053AB, - 19120: 0x000053AE, - 19121: 0x000073A7, - 19122: 0x00025772, - 19123: 0x00003F59, - 19124: 0x0000739C, - 19125: 0x000053C1, - 19126: 0x000053C5, - 19127: 0x00006C49, - 19128: 0x00004E49, - 19129: 0x000057FE, - 19130: 0x000053D9, - 19131: 0x00003AAB, - 19132: 0x00020B8F, - 19133: 0x000053E0, - 19134: 0x00023FEB, - 19135: 0x00022DA3, - 19136: 0x000053F6, - 19137: 0x00020C77, - 19138: 0x00005413, - 19139: 0x00007079, - 19140: 0x0000552B, - 19141: 0x00006657, - 19142: 0x00006D5B, - 19143: 0x0000546D, - 19144: 0x00026B53, - 19145: 0x00020D74, - 19146: 0x0000555D, - 19147: 0x0000548F, - 19148: 0x000054A4, - 19149: 0x000047A6, - 19150: 0x0002170D, - 19151: 0x00020EDD, - 19152: 0x00003DB4, - 19153: 0x00020D4D, - 19154: 0x000289BC, - 19155: 0x00022698, - 19156: 0x00005547, - 19157: 0x00004CED, - 19158: 0x0000542F, - 19159: 0x00007417, - 19160: 0x00005586, - 19161: 0x000055A9, - 19162: 0x00005605, - 19163: 0x000218D7, - 19164: 0x0002403A, - 19165: 0x00004552, - 19166: 0x00024435, - 19167: 0x000066B3, - 19168: 0x000210B4, - 19169: 0x00005637, - 19170: 0x000066CD, - 19171: 0x0002328A, - 19172: 0x000066A4, - 19173: 0x000066AD, - 19174: 0x0000564D, - 19175: 0x0000564F, - 19176: 0x000078F1, - 19177: 0x000056F1, - 19178: 0x00009787, - 19179: 0x000053FE, - 19180: 0x00005700, - 19181: 0x000056EF, - 19182: 0x000056ED, - 19183: 0x00028B66, - 19184: 0x00003623, - 19185: 0x0002124F, - 19186: 0x00005746, - 19187: 0x000241A5, - 19188: 0x00006C6E, - 19189: 0x0000708B, - 19190: 0x00005742, - 19191: 0x000036B1, - 19192: 0x00026C7E, - 19193: 0x000057E6, - 19194: 0x00021416, - 19195: 0x00005803, - 19196: 0x00021454, - 19197: 0x00024363, - 19198: 0x00005826, - 19199: 0x00024BF5, - 19200: 0x0000585C, - 19201: 0x000058AA, - 19202: 0x00003561, - 19203: 0x000058E0, - 19204: 0x000058DC, - 19205: 0x0002123C, - 19206: 0x000058FB, - 19207: 0x00005BFF, - 19208: 0x00005743, - 19209: 0x0002A150, - 19210: 0x00024278, - 19211: 0x000093D3, - 19212: 0x000035A1, - 19213: 0x0000591F, - 19214: 0x000068A6, - 19215: 0x000036C3, - 19216: 0x00006E59, - 19217: 0x0002163E, - 19218: 0x00005A24, - 19219: 0x00005553, - 19220: 0x00021692, - 19221: 0x00008505, - 19222: 0x000059C9, - 19223: 0x00020D4E, - 19224: 0x00026C81, - 19225: 0x00026D2A, - 19226: 0x000217DC, - 19227: 0x000059D9, - 19228: 0x000217FB, - 19229: 0x000217B2, - 19230: 0x00026DA6, - 19231: 0x00006D71, - 19232: 0x00021828, - 19233: 0x000216D5, - 19234: 0x000059F9, - 19235: 0x00026E45, - 19236: 0x00005AAB, - 19237: 0x00005A63, - 19238: 0x000036E6, - 19239: 0x000249A9, - 19240: 0x00005A77, - 19241: 0x00003708, - 19242: 0x00005A96, - 19243: 0x00007465, - 19244: 0x00005AD3, - 19245: 0x00026FA1, - 19246: 0x00022554, - 19247: 0x00003D85, - 19248: 0x00021911, - 19249: 0x00003732, - 19250: 0x000216B8, - 19251: 0x00005E83, - 19252: 0x000052D0, - 19253: 0x00005B76, - 19254: 0x00006588, - 19255: 0x00005B7C, - 19256: 0x00027A0E, - 19257: 0x00004004, - 19258: 0x0000485D, - 19259: 0x00020204, - 19260: 0x00005BD5, - 19261: 0x00006160, - 19262: 0x00021A34, - 19263: 0x000259CC, - 19264: 0x000205A5, - 19265: 0x00005BF3, - 19266: 0x00005B9D, - 19267: 0x00004D10, - 19268: 0x00005C05, - 19269: 0x00021B44, - 19270: 0x00005C13, - 19271: 0x000073CE, - 19272: 0x00005C14, - 19273: 0x00021CA5, - 19274: 0x00026B28, - 19275: 0x00005C49, - 19276: 0x000048DD, - 19277: 0x00005C85, - 19278: 0x00005CE9, - 19279: 0x00005CEF, - 19280: 0x00005D8B, - 19281: 0x00021DF9, - 19282: 0x00021E37, - 19283: 0x00005D10, - 19284: 0x00005D18, - 19285: 0x00005D46, - 19286: 0x00021EA4, - 19287: 0x00005CBA, - 19288: 0x00005DD7, - 19289: 0x000082FC, - 19290: 0x0000382D, - 19291: 0x00024901, - 19292: 0x00022049, - 19293: 0x00022173, - 19294: 0x00008287, - 19295: 0x00003836, - 19296: 0x00003BC2, - 19297: 0x00005E2E, - 19298: 0x00006A8A, - 19299: 0x00005E75, - 19300: 0x00005E7A, - 19301: 0x000244BC, - 19302: 0x00020CD3, - 19303: 0x000053A6, - 19304: 0x00004EB7, - 19305: 0x00005ED0, - 19306: 0x000053A8, - 19307: 0x00021771, - 19308: 0x00005E09, - 19309: 0x00005EF4, - 19310: 0x00028482, - 19311: 0x00005EF9, - 19312: 0x00005EFB, - 19313: 0x000038A0, - 19314: 0x00005EFC, - 19315: 0x0000683E, - 19316: 0x0000941B, - 19317: 0x00005F0D, - 19318: 0x000201C1, - 19319: 0x0002F894, - 19320: 0x00003ADE, - 19321: 0x000048AE, - 19322: 0x0002133A, - 19323: 0x00005F3A, - 19324: 0x00026888, - 19325: 0x000223D0, - 19326: 0x00005F58, - 19327: 0x00022471, - 19328: 0x00005F63, - 19329: 0x000097BD, - 19330: 0x00026E6E, - 19331: 0x00005F72, - 19332: 0x00009340, - 19333: 0x00028A36, - 19334: 0x00005FA7, - 19335: 0x00005DB6, - 19336: 0x00003D5F, - 19337: 0x00025250, - 19338: 0x00021F6A, - 19339: 0x000270F8, - 19340: 0x00022668, - 19341: 0x000091D6, - 19342: 0x0002029E, - 19343: 0x00028A29, - 19344: 0x00006031, - 19345: 0x00006685, - 19346: 0x00021877, - 19347: 0x00003963, - 19348: 0x00003DC7, - 19349: 0x00003639, - 19350: 0x00005790, - 19351: 0x000227B4, - 19352: 0x00007971, - 19353: 0x00003E40, - 19354: 0x0000609E, - 19355: 0x000060A4, - 19356: 0x000060B3, - 19357: 0x00024982, - 19358: 0x0002498F, - 19359: 0x00027A53, - 19360: 0x000074A4, - 19361: 0x000050E1, - 19362: 0x00005AA0, - 19363: 0x00006164, - 19364: 0x00008424, - 19365: 0x00006142, - 19366: 0x0002F8A6, - 19367: 0x00026ED2, - 19368: 0x00006181, - 19369: 0x000051F4, - 19370: 0x00020656, - 19371: 0x00006187, - 19372: 0x00005BAA, - 19373: 0x00023FB7, - 19374: 0x0002285F, - 19375: 0x000061D3, - 19376: 0x00028B9D, - 19377: 0x0002995D, - 19378: 0x000061D0, - 19379: 0x00003932, - 19380: 0x00022980, - 19381: 0x000228C1, - 19382: 0x00006023, - 19383: 0x0000615C, - 19384: 0x0000651E, - 19385: 0x0000638B, - 19386: 0x00020118, - 19387: 0x000062C5, - 19388: 0x00021770, - 19389: 0x000062D5, - 19390: 0x00022E0D, - 19391: 0x0000636C, - 19392: 0x000249DF, - 19393: 0x00003A17, - 19394: 0x00006438, - 19395: 0x000063F8, - 19396: 0x0002138E, - 19397: 0x000217FC, - 19398: 0x00006490, - 19399: 0x00006F8A, - 19400: 0x00022E36, - 19401: 0x00009814, - 19402: 0x0002408C, - 19403: 0x0002571D, - 19404: 0x000064E1, - 19405: 0x000064E5, - 19406: 0x0000947B, - 19407: 0x00003A66, - 19408: 0x0000643A, - 19409: 0x00003A57, - 19410: 0x0000654D, - 19411: 0x00006F16, - 19412: 0x00024A28, - 19413: 0x00024A23, - 19414: 0x00006585, - 19415: 0x0000656D, - 19416: 0x0000655F, - 19417: 0x0002307E, - 19418: 0x000065B5, - 19419: 0x00024940, - 19420: 0x00004B37, - 19421: 0x000065D1, - 19422: 0x000040D8, - 19423: 0x00021829, - 19424: 0x000065E0, - 19425: 0x000065E3, - 19426: 0x00005FDF, - 19427: 0x00023400, - 19428: 0x00006618, - 19429: 0x000231F7, - 19430: 0x000231F8, - 19431: 0x00006644, - 19432: 0x000231A4, - 19433: 0x000231A5, - 19434: 0x0000664B, - 19435: 0x00020E75, - 19436: 0x00006667, - 19437: 0x000251E6, - 19438: 0x00006673, - 19439: 0x00006674, - 19440: 0x00021E3D, - 19441: 0x00023231, - 19442: 0x000285F4, - 19443: 0x000231C8, - 19444: 0x00025313, - 19445: 0x000077C5, - 19446: 0x000228F7, - 19447: 0x000099A4, - 19448: 0x00006702, - 19449: 0x0002439C, - 19450: 0x00024A21, - 19451: 0x00003B2B, - 19452: 0x000069FA, - 19453: 0x000237C2, - 19454: 0x0000675E, - 19455: 0x00006767, - 19456: 0x00006762, - 19457: 0x000241CD, - 19458: 0x000290ED, - 19459: 0x000067D7, - 19460: 0x000044E9, - 19461: 0x00006822, - 19462: 0x00006E50, - 19463: 0x0000923C, - 19464: 0x00006801, - 19465: 0x000233E6, - 19466: 0x00026DA0, - 19467: 0x0000685D, - 19468: 0x0002346F, - 19469: 0x000069E1, - 19470: 0x00006A0B, - 19471: 0x00028ADF, - 19472: 0x00006973, - 19473: 0x000068C3, - 19474: 0x000235CD, - 19475: 0x00006901, - 19476: 0x00006900, - 19477: 0x00003D32, - 19478: 0x00003A01, - 19479: 0x0002363C, - 19480: 0x00003B80, - 19481: 0x000067AC, - 19482: 0x00006961, - 19483: 0x00028A4A, - 19484: 0x000042FC, - 19485: 0x00006936, - 19486: 0x00006998, - 19487: 0x00003BA1, - 19488: 0x000203C9, - 19489: 0x00008363, - 19490: 0x00005090, - 19491: 0x000069F9, - 19492: 0x00023659, - 19493: 0x0002212A, - 19494: 0x00006A45, - 19495: 0x00023703, - 19496: 0x00006A9D, - 19497: 0x00003BF3, - 19498: 0x000067B1, - 19499: 0x00006AC8, - 19500: 0x0002919C, - 19501: 0x00003C0D, - 19502: 0x00006B1D, - 19503: 0x00020923, - 19504: 0x000060DE, - 19505: 0x00006B35, - 19506: 0x00006B74, - 19507: 0x000227CD, - 19508: 0x00006EB5, - 19509: 0x00023ADB, - 19510: 0x000203B5, - 19511: 0x00021958, - 19512: 0x00003740, - 19513: 0x00005421, - 19514: 0x00023B5A, - 19515: 0x00006BE1, - 19516: 0x00023EFC, - 19517: 0x00006BDC, - 19518: 0x00006C37, - 19519: 0x0002248B, - 19520: 0x000248F1, - 19521: 0x00026B51, - 19522: 0x00006C5A, - 19523: 0x00008226, - 19524: 0x00006C79, - 19525: 0x00023DBC, - 19526: 0x000044C5, - 19527: 0x00023DBD, - 19528: 0x000241A4, - 19529: 0x0002490C, - 19530: 0x00024900, - 19531: 0x00023CC9, - 19532: 0x000036E5, - 19533: 0x00003CEB, - 19534: 0x00020D32, - 19535: 0x00009B83, - 19536: 0x000231F9, - 19537: 0x00022491, - 19538: 0x00007F8F, - 19539: 0x00006837, - 19540: 0x00026D25, - 19541: 0x00026DA1, - 19542: 0x00026DEB, - 19543: 0x00006D96, - 19544: 0x00006D5C, - 19545: 0x00006E7C, - 19546: 0x00006F04, - 19547: 0x0002497F, - 19548: 0x00024085, - 19549: 0x00026E72, - 19550: 0x00008533, - 19551: 0x00026F74, - 19552: 0x000051C7, - 19553: 0x00006C9C, - 19554: 0x00006E1D, - 19555: 0x0000842E, - 19556: 0x00028B21, - 19557: 0x00006E2F, - 19558: 0x00023E2F, - 19559: 0x00007453, - 19560: 0x00023F82, - 19561: 0x000079CC, - 19562: 0x00006E4F, - 19563: 0x00005A91, - 19564: 0x0002304B, - 19565: 0x00006FF8, - 19566: 0x0000370D, - 19567: 0x00006F9D, - 19568: 0x00023E30, - 19569: 0x00006EFA, - 19570: 0x00021497, - 19571: 0x0002403D, - 19572: 0x00004555, - 19573: 0x000093F0, - 19574: 0x00006F44, - 19575: 0x00006F5C, - 19576: 0x00003D4E, - 19577: 0x00006F74, - 19578: 0x00029170, - 19579: 0x00003D3B, - 19580: 0x00006F9F, - 19581: 0x00024144, - 19582: 0x00006FD3, - 19583: 0x00024091, - 19584: 0x00024155, - 19585: 0x00024039, - 19586: 0x00023FF0, - 19587: 0x00023FB4, - 19588: 0x0002413F, - 19589: 0x000051DF, - 19590: 0x00024156, - 19591: 0x00024157, - 19592: 0x00024140, - 19593: 0x000261DD, - 19594: 0x0000704B, - 19595: 0x0000707E, - 19596: 0x000070A7, - 19597: 0x00007081, - 19598: 0x000070CC, - 19599: 0x000070D5, - 19600: 0x000070D6, - 19601: 0x000070DF, - 19602: 0x00004104, - 19603: 0x00003DE8, - 19604: 0x000071B4, - 19605: 0x00007196, - 19606: 0x00024277, - 19607: 0x0000712B, - 19608: 0x00007145, - 19609: 0x00005A88, - 19610: 0x0000714A, - 19611: 0x0000716E, - 19612: 0x00005C9C, - 19613: 0x00024365, - 19614: 0x0000714F, - 19615: 0x00009362, - 19616: 0x000242C1, - 19617: 0x0000712C, - 19618: 0x0002445A, - 19619: 0x00024A27, - 19620: 0x00024A22, - 19621: 0x000071BA, - 19622: 0x00028BE8, - 19623: 0x000070BD, - 19624: 0x0000720E, - 19625: 0x00009442, - 19626: 0x00007215, - 19627: 0x00005911, - 19628: 0x00009443, - 19629: 0x00007224, - 19630: 0x00009341, - 19631: 0x00025605, - 19632: 0x0000722E, - 19633: 0x00007240, - 19634: 0x00024974, - 19635: 0x000068BD, - 19636: 0x00007255, - 19637: 0x00007257, - 19638: 0x00003E55, - 19639: 0x00023044, - 19640: 0x0000680D, - 19641: 0x00006F3D, - 19642: 0x00007282, - 19643: 0x0000732A, - 19644: 0x0000732B, - 19645: 0x00024823, - 19646: 0x0002882B, - 19647: 0x000048ED, - 19648: 0x00028804, - 19649: 0x00007328, - 19650: 0x0000732E, - 19651: 0x000073CF, - 19652: 0x000073AA, - 19653: 0x00020C3A, - 19654: 0x00026A2E, - 19655: 0x000073C9, - 19656: 0x00007449, - 19657: 0x000241E2, - 19658: 0x000216E7, - 19659: 0x00024A24, - 19660: 0x00006623, - 19661: 0x000036C5, - 19662: 0x000249B7, - 19663: 0x0002498D, - 19664: 0x000249FB, - 19665: 0x000073F7, - 19666: 0x00007415, - 19667: 0x00006903, - 19668: 0x00024A26, - 19669: 0x00007439, - 19670: 0x000205C3, - 19671: 0x00003ED7, - 19672: 0x0000745C, - 19673: 0x000228AD, - 19674: 0x00007460, - 19675: 0x00028EB2, - 19676: 0x00007447, - 19677: 0x000073E4, - 19678: 0x00007476, - 19679: 0x000083B9, - 19680: 0x0000746C, - 19681: 0x00003730, - 19682: 0x00007474, - 19683: 0x000093F1, - 19684: 0x00006A2C, - 19685: 0x00007482, - 19686: 0x00004953, - 19687: 0x00024A8C, - 19688: 0x0002415F, - 19689: 0x00024A79, - 19690: 0x00028B8F, - 19691: 0x00005B46, - 19692: 0x00028C03, - 19693: 0x0002189E, - 19694: 0x000074C8, - 19695: 0x00021988, - 19696: 0x0000750E, - 19697: 0x000074E9, - 19698: 0x0000751E, - 19699: 0x00028ED9, - 19700: 0x00021A4B, - 19701: 0x00005BD7, - 19702: 0x00028EAC, - 19703: 0x00009385, - 19704: 0x0000754D, - 19705: 0x0000754A, - 19706: 0x00007567, - 19707: 0x0000756E, - 19708: 0x00024F82, - 19709: 0x00003F04, - 19710: 0x00024D13, - 19711: 0x0000758E, - 19712: 0x0000745D, - 19713: 0x0000759E, - 19714: 0x000075B4, - 19715: 0x00007602, - 19716: 0x0000762C, - 19717: 0x00007651, - 19718: 0x0000764F, - 19719: 0x0000766F, - 19720: 0x00007676, - 19721: 0x000263F5, - 19722: 0x00007690, - 19723: 0x000081EF, - 19724: 0x000037F8, - 19725: 0x00026911, - 19726: 0x0002690E, - 19727: 0x000076A1, - 19728: 0x000076A5, - 19729: 0x000076B7, - 19730: 0x000076CC, - 19731: 0x00026F9F, - 19732: 0x00008462, - 19733: 0x0002509D, - 19734: 0x0002517D, - 19735: 0x00021E1C, - 19736: 0x0000771E, - 19737: 0x00007726, - 19738: 0x00007740, - 19739: 0x000064AF, - 19740: 0x00025220, - 19741: 0x00007758, - 19742: 0x000232AC, - 19743: 0x000077AF, - 19744: 0x00028964, - 19745: 0x00028968, - 19746: 0x000216C1, - 19747: 0x000077F4, - 19748: 0x00007809, - 19749: 0x00021376, - 19750: 0x00024A12, - 19751: 0x000068CA, - 19752: 0x000078AF, - 19753: 0x000078C7, - 19754: 0x000078D3, - 19755: 0x000096A5, - 19756: 0x0000792E, - 19757: 0x000255E0, - 19758: 0x000078D7, - 19759: 0x00007934, - 19760: 0x000078B1, - 19761: 0x0002760C, - 19762: 0x00008FB8, - 19763: 0x00008884, - 19764: 0x00028B2B, - 19765: 0x00026083, - 19766: 0x0002261C, - 19767: 0x00007986, - 19768: 0x00008900, - 19769: 0x00006902, - 19770: 0x00007980, - 19771: 0x00025857, - 19772: 0x0000799D, - 19773: 0x00027B39, - 19774: 0x0000793C, - 19775: 0x000079A9, - 19776: 0x00006E2A, - 19777: 0x00027126, - 19778: 0x00003EA8, - 19779: 0x000079C6, - 19780: 0x0002910D, - 19781: 0x000079D4, -} - -const numEncodeTables = 8 - -// encodeX are the encoding tables from Unicode to Big5 code, -// sorted by decreasing length. -// encode0: 42633 entries for runes in [131105, 173738). -// encode1: 29004 entries for runes in [ 11904, 40908). -// encode2: 2176 entries for runes in [ 7870, 10046). -// encode3: 939 entries for runes in [ 167, 1106). -// encode4: 446 entries for runes in [ 65072, 65518). -// encode5: 432 entries for runes in [194597, 195029). -// encode6: 263 entries for runes in [ 63751, 64014). -// encode7: 1 entries for runes in [175615, 175616). - -const encode0Low, encode0High = 131105, 173738 - -var encode0 = [...]uint16{ - 131105 - 131105: 0x9C71, - 131134 - 131105: 0x9375, - 131142 - 131105: 0x9376, - 131150 - 131105: 0x9548, - 131176 - 131105: 0x8EC6, - 131206 - 131105: 0x8BC5, - 131207 - 131105: 0x8BFA, - 131210 - 131105: 0xC87C, - 131220 - 131105: 0x9AB4, - 131274 - 131105: 0x884E, - 131275 - 131105: 0x884B, - 131276 - 131105: 0xC87A, - 131277 - 131105: 0x8848, - 131281 - 131105: 0x8847, - 131310 - 131105: 0xA0F6, - 131340 - 131105: 0x8845, - 131342 - 131105: 0x8853, - 131352 - 131105: 0xFCAD, - 131492 - 131105: 0x8CF5, - 131497 - 131105: 0x8AAD, - 131499 - 131105: 0x9272, - 131521 - 131105: 0xFC47, - 131540 - 131105: 0x94DF, - 131570 - 131105: 0x9FD1, - 131588 - 131105: 0xFBCB, - 131596 - 131105: 0x927D, - 131604 - 131105: 0x98A4, - 131641 - 131105: 0x8CF9, - 131675 - 131105: 0x94E7, - 131700 - 131105: 0x90CB, - 131701 - 131105: 0x927B, - 131737 - 131105: 0x94D8, - 131742 - 131105: 0xFC5F, - 131744 - 131105: 0xFA54, - 131767 - 131105: 0x9AB5, - 131775 - 131105: 0x96DA, - 131776 - 131105: 0x9279, - 131813 - 131105: 0xFA74, - 131850 - 131105: 0x9275, - 131877 - 131105: 0x8DFB, - 131905 - 131105: 0x8A49, - 131909 - 131105: 0x92DF, - 131910 - 131105: 0x9B7C, - 131911 - 131105: 0xFA63, - 131966 - 131105: 0xFA60, - 131967 - 131105: 0x926D, - 131968 - 131105: 0xFA62, - 132000 - 131105: 0x9AB6, - 132007 - 131105: 0x976B, - 132021 - 131105: 0xFD6A, - 132041 - 131105: 0xFD54, - 132043 - 131105: 0x9273, - 132085 - 131105: 0x97D8, - 132092 - 131105: 0x9FBB, - 132115 - 131105: 0x9342, - 132116 - 131105: 0x9276, - 132127 - 131105: 0xFA65, - 132197 - 131105: 0x926C, - 132231 - 131105: 0xFA6E, - 132238 - 131105: 0x9EE0, - 132241 - 131105: 0x92C0, - 132242 - 131105: 0x92BF, - 132259 - 131105: 0x92BE, - 132311 - 131105: 0x9ABA, - 132348 - 131105: 0x8AB3, - 132350 - 131105: 0x9775, - 132423 - 131105: 0xFA40, - 132494 - 131105: 0xFA76, - 132517 - 131105: 0xFBD0, - 132531 - 131105: 0xFA7B, - 132547 - 131105: 0xFE6D, - 132554 - 131105: 0x9BB3, - 132560 - 131105: 0x89CC, - 132565 - 131105: 0x9ABE, - 132575 - 131105: 0xFA42, - 132576 - 131105: 0x92BC, - 132587 - 131105: 0x945C, - 132625 - 131105: 0x9BB5, - 132629 - 131105: 0x9ABF, - 132633 - 131105: 0x98A7, - 132634 - 131105: 0x97A4, - 132656 - 131105: 0x90FD, - 132694 - 131105: 0xFC7B, - 132726 - 131105: 0x9AC0, - 132878 - 131105: 0x92C3, - 132913 - 131105: 0x8AAA, - 132985 - 131105: 0x9BD0, - 133164 - 131105: 0x9550, - 133235 - 131105: 0x92C6, - 133333 - 131105: 0x98A6, - 133398 - 131105: 0x9546, - 133411 - 131105: 0xFD63, - 133460 - 131105: 0xFAC2, - 133497 - 131105: 0x9EC3, - 133607 - 131105: 0x89B2, - 133649 - 131105: 0x9C66, - 133712 - 131105: 0x9053, - 133743 - 131105: 0x8C62, - 133770 - 131105: 0x87A8, - 133812 - 131105: 0x97C1, - 133826 - 131105: 0x9AC4, - 133837 - 131105: 0x9AC5, - 133901 - 131105: 0x8EEF, - 134031 - 131105: 0xFAE9, - 134047 - 131105: 0x8D40, - 134056 - 131105: 0x9262, - 134057 - 131105: 0x8AF7, - 134079 - 131105: 0x9AC6, - 134086 - 131105: 0x92E1, - 134091 - 131105: 0x9AC9, - 134114 - 131105: 0xFAC6, - 134123 - 131105: 0x97A5, - 134139 - 131105: 0x9ACB, - 134143 - 131105: 0xFA72, - 134155 - 131105: 0x8A5E, - 134157 - 131105: 0x94E0, - 134176 - 131105: 0x92CC, - 134196 - 131105: 0x8AE5, - 134202 - 131105: 0xFE5C, - 134203 - 131105: 0x9ACC, - 134209 - 131105: 0x9DF9, - 134210 - 131105: 0x8A43, - 134211 - 131105: 0x8AA6, - 134227 - 131105: 0x9ACD, - 134245 - 131105: 0x9ACE, - 134263 - 131105: 0xFAEE, - 134264 - 131105: 0x9BCC, - 134268 - 131105: 0x9ACF, - 134285 - 131105: 0x9AD1, - 134294 - 131105: 0x9DFA, - 134300 - 131105: 0x9D7C, - 134325 - 131105: 0x9AD3, - 134328 - 131105: 0x97A6, - 134351 - 131105: 0x995F, - 134355 - 131105: 0xFBF6, - 134356 - 131105: 0x9FC5, - 134357 - 131105: 0x8A59, - 134358 - 131105: 0x8B6B, - 134365 - 131105: 0x9AD4, - 134381 - 131105: 0x9AD5, - 134399 - 131105: 0x97A2, - 134421 - 131105: 0x8A44, - 134440 - 131105: 0x9F4A, - 134449 - 131105: 0x90A1, - 134450 - 131105: 0xFDA4, - 134470 - 131105: 0x8A64, - 134471 - 131105: 0x8AF2, - 134472 - 131105: 0x8AF8, - 134473 - 131105: 0x9DD8, - 134476 - 131105: 0x94D6, - 134477 - 131105: 0xFAFE, - 134478 - 131105: 0xFBA7, - 134511 - 131105: 0x9AD6, - 134513 - 131105: 0x9F4D, - 134516 - 131105: 0xFAF6, - 134524 - 131105: 0x8A57, - 134526 - 131105: 0x8B43, - 134527 - 131105: 0x8B44, - 134550 - 131105: 0x8AB6, - 134556 - 131105: 0x8AC0, - 134567 - 131105: 0x9E54, - 134578 - 131105: 0x9AD7, - 134600 - 131105: 0x9AD8, - 134660 - 131105: 0x9ADC, - 134665 - 131105: 0x8ACA, - 134666 - 131105: 0x9EA8, - 134669 - 131105: 0x9263, - 134670 - 131105: 0x9ADD, - 134671 - 131105: 0x8B65, - 134672 - 131105: 0x8B6F, - 134673 - 131105: 0x8B7E, - 134678 - 131105: 0x8F43, - 134685 - 131105: 0x92D0, - 134732 - 131105: 0x8AF4, - 134765 - 131105: 0x9DBE, - 134771 - 131105: 0x9AE1, - 134773 - 131105: 0xFCDE, - 134774 - 131105: 0x9DFD, - 134775 - 131105: 0x8B66, - 134776 - 131105: 0x8B70, - 134777 - 131105: 0x8B75, - 134778 - 131105: 0x8AE4, - 134779 - 131105: 0x8BA4, - 134796 - 131105: 0x8AED, - 134806 - 131105: 0x8A5D, - 134808 - 131105: 0x8B48, - 134813 - 131105: 0x9DED, - 134818 - 131105: 0x9E40, - 134826 - 131105: 0x8AEF, - 134827 - 131105: 0x8AF6, - 134828 - 131105: 0x9E76, - 134838 - 131105: 0x9EE3, - 134871 - 131105: 0x9ADE, - 134872 - 131105: 0x8DFE, - 134877 - 131105: 0xFAFC, - 134904 - 131105: 0x9CB1, - 134905 - 131105: 0x9E77, - 134906 - 131105: 0x8B64, - 134907 - 131105: 0x8B67, - 134941 - 131105: 0x974B, - 134950 - 131105: 0x9653, - 134957 - 131105: 0x9AE0, - 134958 - 131105: 0x8B4A, - 134960 - 131105: 0x8AF1, - 134961 - 131105: 0x8AD7, - 134971 - 131105: 0xA0AB, - 134988 - 131105: 0x8AB5, - 135012 - 131105: 0x8A5F, - 135053 - 131105: 0x8AEE, - 135056 - 131105: 0x9ADF, - 135085 - 131105: 0x8AFE, - 135092 - 131105: 0x8A58, - 135093 - 131105: 0x8BA3, - 135094 - 131105: 0x8BA7, - 135100 - 131105: 0x9AE3, - 135135 - 131105: 0x9261, - 135146 - 131105: 0x9DD7, - 135147 - 131105: 0x9E7D, - 135148 - 131105: 0x9EA7, - 135149 - 131105: 0x9EAB, - 135188 - 131105: 0x9042, - 135197 - 131105: 0x8B79, - 135198 - 131105: 0x8B7A, - 135247 - 131105: 0x9AE6, - 135260 - 131105: 0x9AE5, - 135279 - 131105: 0x8A7E, - 135285 - 131105: 0x9E44, - 135286 - 131105: 0x9AE7, - 135287 - 131105: 0x8A7C, - 135288 - 131105: 0x8B71, - 135291 - 131105: 0x9AE9, - 135304 - 131105: 0x9AEA, - 135318 - 131105: 0x9AEB, - 135325 - 131105: 0x8ABD, - 135348 - 131105: 0xFB4E, - 135359 - 131105: 0x9AED, - 135360 - 131105: 0x8AF9, - 135361 - 131105: 0x9E63, - 135367 - 131105: 0x8B49, - 135368 - 131105: 0x8ACE, - 135369 - 131105: 0x8B6E, - 135375 - 131105: 0x8AE8, - 135379 - 131105: 0x9AEE, - 135396 - 131105: 0x92CE, - 135412 - 131105: 0x8A5A, - 135413 - 131105: 0x8B7B, - 135414 - 131105: 0x8B7C, - 135471 - 131105: 0x9AEF, - 135483 - 131105: 0x9AF0, - 135485 - 131105: 0x8AFA, - 135493 - 131105: 0x8941, - 135496 - 131105: 0x8B72, - 135503 - 131105: 0x8AF3, - 135552 - 131105: 0x8BA8, - 135559 - 131105: 0x9EAE, - 135641 - 131105: 0x9E72, - 135740 - 131105: 0xFB73, - 135759 - 131105: 0xFB5F, - 135804 - 131105: 0x90BA, - 135848 - 131105: 0x91FE, - 135849 - 131105: 0x9EF6, - 135856 - 131105: 0x97ED, - 135907 - 131105: 0x9AF3, - 135934 - 131105: 0xA0EE, - 135938 - 131105: 0x967C, - 135939 - 131105: 0x9345, - 135940 - 131105: 0x986E, - 135941 - 131105: 0xFA56, - 135990 - 131105: 0x9AF5, - 135994 - 131105: 0xFC4B, - 136053 - 131105: 0x9AF4, - 136054 - 131105: 0xFEDE, - 136078 - 131105: 0xFCB7, - 136088 - 131105: 0x97F1, - 136092 - 131105: 0x97C7, - 136133 - 131105: 0x9CCB, - 136134 - 131105: 0x9240, - 136173 - 131105: 0x9CE8, - 136190 - 131105: 0x91FD, - 136211 - 131105: 0x974E, - 136214 - 131105: 0xFB68, - 136228 - 131105: 0x976C, - 136255 - 131105: 0x8CC2, - 136274 - 131105: 0x97E8, - 136276 - 131105: 0xFB6A, - 136277 - 131105: 0x8B74, - 136330 - 131105: 0x8EE7, - 136343 - 131105: 0xFDC8, - 136374 - 131105: 0x9241, - 136424 - 131105: 0x96A1, - 136445 - 131105: 0x8EF3, - 136567 - 131105: 0x9AF7, - 136578 - 131105: 0x8FA6, - 136598 - 131105: 0xFAD6, - 136714 - 131105: 0x9CC7, - 136723 - 131105: 0xFAD7, - 136729 - 131105: 0x9AF8, - 136766 - 131105: 0xFBA1, - 136801 - 131105: 0x8EC5, - 136850 - 131105: 0xFBA4, - 136888 - 131105: 0xFBC2, - 136890 - 131105: 0x9AC1, - 136896 - 131105: 0x91FA, - 136897 - 131105: 0xFEDB, - 136898 - 131105: 0x97AB, - 136915 - 131105: 0x9147, - 136917 - 131105: 0xFBB1, - 136927 - 131105: 0x8FEA, - 136934 - 131105: 0x94D2, - 136935 - 131105: 0xFE61, - 136936 - 131105: 0xFACE, - 136954 - 131105: 0x92ED, - 136955 - 131105: 0x91F3, - 136956 - 131105: 0x93C6, - 136958 - 131105: 0x935A, - 136973 - 131105: 0xFAFB, - 136976 - 131105: 0x92EF, - 136998 - 131105: 0xFAC8, - 137018 - 131105: 0x9847, - 137019 - 131105: 0x9366, - 137020 - 131105: 0x9855, - 137047 - 131105: 0x96E6, - 137068 - 131105: 0x9F43, - 137069 - 131105: 0x9FAA, - 137070 - 131105: 0x94DA, - 137071 - 131105: 0x92EE, - 137072 - 131105: 0xFCAF, - 137073 - 131105: 0xFBFB, - 137075 - 131105: 0x8EF9, - 137076 - 131105: 0x91F6, - 137131 - 131105: 0x9364, - 137136 - 131105: 0x94F5, - 137137 - 131105: 0x9CB6, - 137138 - 131105: 0xFBAD, - 137139 - 131105: 0x984E, - 137140 - 131105: 0x8F44, - 137141 - 131105: 0x96FD, - 137155 - 131105: 0x9AF9, - 137159 - 131105: 0x9AFA, - 137177 - 131105: 0x9769, - 137178 - 131105: 0x95D4, - 137179 - 131105: 0x984B, - 137180 - 131105: 0xFBAA, - 137183 - 131105: 0x987C, - 137199 - 131105: 0x91EA, - 137205 - 131105: 0x9DAF, - 137206 - 131105: 0x9DC5, - 137208 - 131105: 0x91F1, - 137209 - 131105: 0x8EB1, - 137210 - 131105: 0x97A9, - 137211 - 131105: 0xFBAC, - 137212 - 131105: 0xFCB8, - 137248 - 131105: 0x9CB9, - 137256 - 131105: 0xFBB0, - 137257 - 131105: 0xFCD2, - 137258 - 131105: 0x93CB, - 137261 - 131105: 0x9AFD, - 137273 - 131105: 0x91F4, - 137274 - 131105: 0x8BAC, - 137275 - 131105: 0xA055, - 137280 - 131105: 0x9574, - 137285 - 131105: 0x95BE, - 137298 - 131105: 0x97AD, - 137310 - 131105: 0x8EE9, - 137313 - 131105: 0x92F8, - 137314 - 131105: 0x97BE, - 137315 - 131105: 0x916C, - 137316 - 131105: 0x94AA, - 137335 - 131105: 0xFC63, - 137339 - 131105: 0x9DC6, - 137347 - 131105: 0x97B5, - 137348 - 131105: 0x92B8, - 137349 - 131105: 0x91EF, - 137374 - 131105: 0xFEA6, - 137375 - 131105: 0x9760, - 137376 - 131105: 0x9358, - 137377 - 131105: 0x9576, - 137378 - 131105: 0x8FAC, - 137406 - 131105: 0x91EC, - 137407 - 131105: 0x97B4, - 137425 - 131105: 0x91F7, - 137430 - 131105: 0x974A, - 137431 - 131105: 0xFB49, - 137432 - 131105: 0x9578, - 137433 - 131105: 0x93BC, - 137466 - 131105: 0x91D6, - 137475 - 131105: 0x9355, - 137476 - 131105: 0x9356, - 137477 - 131105: 0x9851, - 137488 - 131105: 0x8FF8, - 137489 - 131105: 0xFBC0, - 137490 - 131105: 0x93F2, - 137493 - 131105: 0x90D0, - 137500 - 131105: 0x9C44, - 137506 - 131105: 0x9255, - 137511 - 131105: 0x9363, - 137531 - 131105: 0x91A5, - 137540 - 131105: 0xA0ED, - 137560 - 131105: 0xFD6B, - 137578 - 131105: 0x9AFE, - 137596 - 131105: 0x9351, - 137600 - 131105: 0x8C57, - 137603 - 131105: 0xFA78, - 137608 - 131105: 0xFEA8, - 137622 - 131105: 0x9350, - 137691 - 131105: 0xFA4C, - 137715 - 131105: 0x92F7, - 137773 - 131105: 0x9B40, - 137780 - 131105: 0xFBCE, - 137797 - 131105: 0x9B41, - 137803 - 131105: 0xFEAD, - 137827 - 131105: 0x8761, - 138052 - 131105: 0xFBD5, - 138177 - 131105: 0x8BC2, - 138178 - 131105: 0x9A7C, - 138282 - 131105: 0x9B42, - 138352 - 131105: 0x9B43, - 138402 - 131105: 0x9E79, - 138405 - 131105: 0xFBD9, - 138412 - 131105: 0x9B44, - 138566 - 131105: 0xA0A7, - 138579 - 131105: 0x877B, - 138590 - 131105: 0x876E, - 138640 - 131105: 0x9BF3, - 138678 - 131105: 0x8C79, - 138682 - 131105: 0x935E, - 138698 - 131105: 0x89CB, - 138705 - 131105: 0x9F53, - 138731 - 131105: 0x93D7, - 138745 - 131105: 0xFBE1, - 138780 - 131105: 0xFED0, - 138787 - 131105: 0x8CF1, - 138807 - 131105: 0xFBE2, - 138813 - 131105: 0xFCE3, - 138889 - 131105: 0x9074, - 138916 - 131105: 0xFBE6, - 138920 - 131105: 0x9BB7, - 138952 - 131105: 0x9B45, - 138965 - 131105: 0x9B47, - 139023 - 131105: 0x9F50, - 139029 - 131105: 0x9B48, - 139114 - 131105: 0xFC5B, - 139166 - 131105: 0x98A9, - 139169 - 131105: 0x9CFD, - 139240 - 131105: 0x884C, - 139333 - 131105: 0x9B4B, - 139337 - 131105: 0xFBEC, - 139390 - 131105: 0x8C69, - 139418 - 131105: 0x9BA8, - 139463 - 131105: 0x8AD5, - 139516 - 131105: 0xFA73, - 139562 - 131105: 0xFD59, - 139611 - 131105: 0x91A2, - 139635 - 131105: 0xFBED, - 139642 - 131105: 0x9CA9, - 139681 - 131105: 0x8AA8, - 139713 - 131105: 0x8D42, - 139715 - 131105: 0x9BC3, - 139784 - 131105: 0x8AE1, - 139900 - 131105: 0x9B4E, - 140065 - 131105: 0x95D0, - 140069 - 131105: 0x905F, - 140221 - 131105: 0x97EE, - 140240 - 131105: 0xFC4E, - 140247 - 131105: 0x9B4F, - 140282 - 131105: 0x9B50, - 140389 - 131105: 0x9EC6, - 140401 - 131105: 0xFC50, - 140427 - 131105: 0xFD73, - 140433 - 131105: 0xFDA7, - 140464 - 131105: 0x9DA2, - 140476 - 131105: 0x87D1, - 140481 - 131105: 0x87D3, - 140489 - 131105: 0x87D4, - 140492 - 131105: 0x87D5, - 140525 - 131105: 0xFA58, - 140563 - 131105: 0xFA5E, - 140571 - 131105: 0xA059, - 140592 - 131105: 0xFA75, - 140628 - 131105: 0xFBBE, - 140685 - 131105: 0x9CA2, - 140719 - 131105: 0x9370, - 140734 - 131105: 0x9371, - 140827 - 131105: 0x9377, - 140828 - 131105: 0xFEEF, - 140843 - 131105: 0x936D, - 140904 - 131105: 0xFC5D, - 140922 - 131105: 0x90B8, - 140950 - 131105: 0x8AFC, - 140952 - 131105: 0xFB41, - 141044 - 131105: 0x9E6B, - 141045 - 131105: 0x94E3, - 141046 - 131105: 0x8EE2, - 141074 - 131105: 0x8C7D, - 141076 - 131105: 0x8ED7, - 141083 - 131105: 0x9C4D, - 141087 - 131105: 0x96A3, - 141098 - 131105: 0x9B51, - 141173 - 131105: 0x8AC3, - 141185 - 131105: 0x96AA, - 141206 - 131105: 0x8CE2, - 141236 - 131105: 0xFC68, - 141237 - 131105: 0x8B6D, - 141261 - 131105: 0xFD67, - 141315 - 131105: 0x8AE9, - 141407 - 131105: 0xFCA1, - 141408 - 131105: 0x936C, - 141425 - 131105: 0x9B52, - 141485 - 131105: 0xFE70, - 141505 - 131105: 0xFCA8, - 141559 - 131105: 0xFCE9, - 141606 - 131105: 0x9CB4, - 141625 - 131105: 0x8AEA, - 141647 - 131105: 0x9B53, - 141671 - 131105: 0x9B55, - 141675 - 131105: 0x96AB, - 141696 - 131105: 0xFCA7, - 141715 - 131105: 0x9B56, - 141926 - 131105: 0x8ABC, - 142031 - 131105: 0x8ACB, - 142037 - 131105: 0x9B57, - 142054 - 131105: 0x89CD, - 142056 - 131105: 0x9B59, - 142094 - 131105: 0x9B5B, - 142114 - 131105: 0x93A5, - 142143 - 131105: 0x9B5D, - 142147 - 131105: 0x9E4F, - 142186 - 131105: 0x93A3, - 142282 - 131105: 0x8A7B, - 142286 - 131105: 0x8B42, - 142374 - 131105: 0x9750, - 142375 - 131105: 0x8FB3, - 142392 - 131105: 0x8A50, - 142412 - 131105: 0x9B60, - 142417 - 131105: 0x8B45, - 142421 - 131105: 0x8B46, - 142434 - 131105: 0x9DFE, - 142472 - 131105: 0x9B62, - 142491 - 131105: 0x937B, - 142497 - 131105: 0x93B1, - 142505 - 131105: 0x8A60, - 142514 - 131105: 0x8AD8, - 142519 - 131105: 0x9B63, - 142530 - 131105: 0x8A69, - 142534 - 131105: 0x8A47, - 142537 - 131105: 0x8ACC, - 142599 - 131105: 0x937C, - 142600 - 131105: 0x9B65, - 142610 - 131105: 0x9B66, - 142660 - 131105: 0x8A72, - 142668 - 131105: 0x8A7A, - 142695 - 131105: 0x93AF, - 142733 - 131105: 0x8AB0, - 142741 - 131105: 0x9B68, - 142752 - 131105: 0x9EA3, - 142755 - 131105: 0xFAEC, - 142756 - 131105: 0x8B77, - 142775 - 131105: 0x9B67, - 142830 - 131105: 0x8B59, - 142861 - 131105: 0xFCB1, - 142902 - 131105: 0xFCBB, - 142914 - 131105: 0x9B69, - 142968 - 131105: 0x93A8, - 142987 - 131105: 0x8AE0, - 143027 - 131105: 0x9E51, - 143087 - 131105: 0x8F5F, - 143220 - 131105: 0x9B6A, - 143308 - 131105: 0x9B6B, - 143331 - 131105: 0x97EC, - 143411 - 131105: 0x9B6C, - 143428 - 131105: 0xFE4E, - 143435 - 131105: 0xFDC2, - 143462 - 131105: 0x9B6D, - 143485 - 131105: 0x9167, - 143486 - 131105: 0xFCCC, - 143502 - 131105: 0x93B6, - 143543 - 131105: 0x90E4, - 143548 - 131105: 0x90E5, - 143578 - 131105: 0x9EF2, - 143619 - 131105: 0x93CA, - 143677 - 131105: 0x8BBC, - 143741 - 131105: 0x8F46, - 143746 - 131105: 0x93CF, - 143780 - 131105: 0xFCDB, - 143781 - 131105: 0xFCDC, - 143795 - 131105: 0x93C0, - 143816 - 131105: 0xFCE6, - 143817 - 131105: 0x96E7, - 143850 - 131105: 0x87A7, - 143863 - 131105: 0xFCD8, - 143864 - 131105: 0xFCD9, - 143865 - 131105: 0xFDA6, - 143887 - 131105: 0x93CE, - 143909 - 131105: 0x95F1, - 143919 - 131105: 0x9CE9, - 143921 - 131105: 0xFCE4, - 143922 - 131105: 0x94AF, - 143923 - 131105: 0xFA77, - 143924 - 131105: 0x93CC, - 143958 - 131105: 0x8CE1, - 143966 - 131105: 0x87A9, - 143970 - 131105: 0x905A, - 144001 - 131105: 0x8C54, - 144009 - 131105: 0x93BF, - 144010 - 131105: 0xFB51, - 144043 - 131105: 0x93B9, - 144044 - 131105: 0xFED7, - 144045 - 131105: 0x93B7, - 144082 - 131105: 0x93D9, - 144096 - 131105: 0x93BB, - 144097 - 131105: 0x93DA, - 144128 - 131105: 0x98A3, - 144138 - 131105: 0x90D1, - 144159 - 131105: 0x9B6E, - 144308 - 131105: 0xFA70, - 144332 - 131105: 0x9BEB, - 144350 - 131105: 0x9B6F, - 144358 - 131105: 0xFCFC, - 144372 - 131105: 0x8B40, - 144373 - 131105: 0xA07B, - 144377 - 131105: 0x8CA1, - 144378 - 131105: 0x97F7, - 144382 - 131105: 0x93E2, - 144384 - 131105: 0xFCD6, - 144447 - 131105: 0x9559, - 144464 - 131105: 0x93A6, - 144495 - 131105: 0xFD40, - 144498 - 131105: 0x935F, - 144613 - 131105: 0x97F2, - 144665 - 131105: 0x9C76, - 144688 - 131105: 0x8EF8, - 144721 - 131105: 0x8CEB, - 144730 - 131105: 0x8F47, - 144743 - 131105: 0x9B74, - 144789 - 131105: 0x92B4, - 144793 - 131105: 0x91ED, - 144796 - 131105: 0x96D2, - 144827 - 131105: 0x87D8, - 144845 - 131105: 0xFD46, - 144846 - 131105: 0x8F4F, - 144847 - 131105: 0x9549, - 144883 - 131105: 0x9B75, - 144896 - 131105: 0xFA5C, - 144919 - 131105: 0x8751, - 144922 - 131105: 0x9B79, - 144956 - 131105: 0xFD4B, - 144960 - 131105: 0x96D3, - 144985 - 131105: 0xFD58, - 144991 - 131105: 0x945F, - 145015 - 131105: 0xA0F5, - 145038 - 131105: 0x87C7, - 145054 - 131105: 0x877C, - 145062 - 131105: 0x9243, - 145069 - 131105: 0x97FA, - 145082 - 131105: 0x9DD9, - 145119 - 131105: 0x97F4, - 145134 - 131105: 0x924D, - 145155 - 131105: 0xFD5B, - 145174 - 131105: 0x9B7A, - 145184 - 131105: 0x9ED5, - 145197 - 131105: 0xFAAE, - 145199 - 131105: 0x9CC9, - 145215 - 131105: 0x9258, - 145254 - 131105: 0x8EC8, - 145281 - 131105: 0x94B4, - 145314 - 131105: 0x93E1, - 145340 - 131105: 0x93DF, - 145346 - 131105: 0xFCF0, - 145365 - 131105: 0x93EC, - 145366 - 131105: 0x97F6, - 145367 - 131105: 0x96CF, - 145466 - 131105: 0x93DE, - 145858 - 131105: 0x8ACF, - 146087 - 131105: 0x9BA2, - 146139 - 131105: 0xFD69, - 146158 - 131105: 0x9352, - 146170 - 131105: 0x98A2, - 146202 - 131105: 0x8CE7, - 146266 - 131105: 0xFD6E, - 146531 - 131105: 0x8CA4, - 146585 - 131105: 0xFA7C, - 146586 - 131105: 0x93FA, - 146587 - 131105: 0x907C, - 146613 - 131105: 0x8F67, - 146615 - 131105: 0x9DB7, - 146631 - 131105: 0xA0E9, - 146632 - 131105: 0xFA4E, - 146633 - 131105: 0xFDA1, - 146684 - 131105: 0x9E74, - 146685 - 131105: 0x9FBF, - 146686 - 131105: 0x9ECB, - 146687 - 131105: 0x9BB9, - 146752 - 131105: 0x9DD4, - 146779 - 131105: 0x97B9, - 146814 - 131105: 0x8EF1, - 146831 - 131105: 0x957B, - 146870 - 131105: 0x9ED2, - 146871 - 131105: 0x9753, - 146872 - 131105: 0x96A4, - 146873 - 131105: 0x8FBE, - 146874 - 131105: 0x94D9, - 146875 - 131105: 0x9058, - 146876 - 131105: 0xFD79, - 146877 - 131105: 0xFD7B, - 146915 - 131105: 0x8EDA, - 146936 - 131105: 0x8EFA, - 146950 - 131105: 0x8762, - 146961 - 131105: 0x9BA5, - 146988 - 131105: 0x9ED9, - 146989 - 131105: 0x97D4, - 146990 - 131105: 0x90BB, - 146991 - 131105: 0xFDBC, - 146992 - 131105: 0xFDC6, - 146993 - 131105: 0x9248, - 147001 - 131105: 0x92B5, - 147080 - 131105: 0x9DC1, - 147081 - 131105: 0x92B9, - 147082 - 131105: 0x92A6, - 147083 - 131105: 0x8F4B, - 147129 - 131105: 0x9BA6, - 147135 - 131105: 0x92B6, - 147159 - 131105: 0x8E40, - 147191 - 131105: 0x9ED8, - 147192 - 131105: 0x945E, - 147193 - 131105: 0x985F, - 147194 - 131105: 0x94CE, - 147195 - 131105: 0x924A, - 147196 - 131105: 0xFD70, - 147253 - 131105: 0x9467, - 147265 - 131105: 0x8DEC, - 147274 - 131105: 0x9BD8, - 147297 - 131105: 0x8763, - 147327 - 131105: 0x9448, - 147328 - 131105: 0xFAC1, - 147329 - 131105: 0x9CF7, - 147330 - 131105: 0xFDBE, - 147343 - 131105: 0x8FDA, - 147380 - 131105: 0xFDD9, - 147383 - 131105: 0xFC7E, - 147392 - 131105: 0x93F9, - 147397 - 131105: 0xFA43, - 147435 - 131105: 0xFAEB, - 147436 - 131105: 0xFAC3, - 147437 - 131105: 0x97D3, - 147438 - 131105: 0x95F9, - 147439 - 131105: 0x9C48, - 147440 - 131105: 0xFDD8, - 147473 - 131105: 0xA0D8, - 147513 - 131105: 0xFDD7, - 147514 - 131105: 0xFB4A, - 147515 - 131105: 0x9BAF, - 147516 - 131105: 0x944B, - 147517 - 131105: 0xFDC9, - 147543 - 131105: 0x8EAC, - 147589 - 131105: 0xFDB2, - 147595 - 131105: 0x925A, - 147596 - 131105: 0xFCBD, - 147597 - 131105: 0x92D9, - 147601 - 131105: 0xFDD5, - 147657 - 131105: 0x92DD, - 147681 - 131105: 0x9259, - 147692 - 131105: 0x8CF0, - 147716 - 131105: 0x96BA, - 147727 - 131105: 0x925B, - 147737 - 131105: 0x9BAB, - 147775 - 131105: 0xFDDA, - 147776 - 131105: 0xFDDE, - 147780 - 131105: 0xFDD3, - 147790 - 131105: 0x8C46, - 147797 - 131105: 0xFDD6, - 147798 - 131105: 0xFDDC, - 147799 - 131105: 0xFDDD, - 147804 - 131105: 0x90FE, - 147807 - 131105: 0xFEA1, - 147809 - 131105: 0x87A5, - 147831 - 131105: 0x8BAD, - 147834 - 131105: 0x9CD8, - 147875 - 131105: 0x9E6D, - 147876 - 131105: 0xFD7C, - 147877 - 131105: 0xFB61, - 147884 - 131105: 0x96F8, - 147893 - 131105: 0x96F0, - 147917 - 131105: 0xFCF4, - 147938 - 131105: 0xFE60, - 147964 - 131105: 0x9852, - 147995 - 131105: 0x964F, - 148043 - 131105: 0x916E, - 148054 - 131105: 0x986D, - 148057 - 131105: 0x9864, - 148086 - 131105: 0x9453, - 148087 - 131105: 0xFDEC, - 148088 - 131105: 0xFB78, - 148100 - 131105: 0x95BA, - 148115 - 131105: 0x985D, - 148117 - 131105: 0x92F9, - 148133 - 131105: 0x985A, - 148159 - 131105: 0x8750, - 148161 - 131105: 0xFDF6, - 148169 - 131105: 0x93D0, - 148170 - 131105: 0x9862, - 148206 - 131105: 0x9BAD, - 148218 - 131105: 0x974F, - 148237 - 131105: 0x9BAE, - 148250 - 131105: 0x9452, - 148276 - 131105: 0x9BB0, - 148296 - 131105: 0x91D2, - 148322 - 131105: 0x97EA, - 148323 - 131105: 0xFB6B, - 148324 - 131105: 0x91B1, - 148325 - 131105: 0xFDF3, - 148364 - 131105: 0x92CB, - 148374 - 131105: 0x9BB1, - 148380 - 131105: 0xFCEC, - 148413 - 131105: 0x986B, - 148417 - 131105: 0x9751, - 148457 - 131105: 0x9871, - 148458 - 131105: 0x95EF, - 148466 - 131105: 0x9EF3, - 148472 - 131105: 0x91E8, - 148484 - 131105: 0x9BBA, - 148533 - 131105: 0xFB4C, - 148534 - 131105: 0x926A, - 148570 - 131105: 0xFDF8, - 148571 - 131105: 0x9861, - 148595 - 131105: 0x91E7, - 148615 - 131105: 0x93ED, - 148616 - 131105: 0x9744, - 148665 - 131105: 0x91E1, - 148668 - 131105: 0xFBF5, - 148686 - 131105: 0x9869, - 148691 - 131105: 0x8A62, - 148694 - 131105: 0x9BBB, - 148741 - 131105: 0x8CA8, - 148769 - 131105: 0x9C55, - 148856 - 131105: 0x8E77, - 148936 - 131105: 0x8AB2, - 149016 - 131105: 0x9EBC, - 149034 - 131105: 0x93E6, - 149093 - 131105: 0x93A2, - 149108 - 131105: 0x9BBD, - 149143 - 131105: 0x94B3, - 149204 - 131105: 0x937D, - 149254 - 131105: 0x9E66, - 149285 - 131105: 0x9459, - 149295 - 131105: 0x9BBF, - 149391 - 131105: 0x9458, - 149472 - 131105: 0x9EA5, - 149522 - 131105: 0x9BC7, - 149539 - 131105: 0xFE54, - 149634 - 131105: 0x8E74, - 149737 - 131105: 0x8BD6, - 149744 - 131105: 0x94B6, - 149745 - 131105: 0xFD74, - 149746 - 131105: 0x98C0, - 149747 - 131105: 0x94A5, - 149755 - 131105: 0x9BC8, - 149759 - 131105: 0x95ED, - 149760 - 131105: 0xFD7E, - 149761 - 131105: 0xFBEB, - 149772 - 131105: 0xFD7D, - 149782 - 131105: 0x976F, - 149783 - 131105: 0x9461, - 149785 - 131105: 0x9FC1, - 149807 - 131105: 0x95D7, - 149811 - 131105: 0xFA52, - 149812 - 131105: 0x9C58, - 149822 - 131105: 0x9F68, - 149823 - 131105: 0x9BE7, - 149824 - 131105: 0xFCCE, - 149825 - 131105: 0x96E8, - 149826 - 131105: 0xFA49, - 149827 - 131105: 0x97A1, - 149858 - 131105: 0x954D, - 149859 - 131105: 0x9EF8, - 149876 - 131105: 0xFE49, - 149877 - 131105: 0x91CE, - 149878 - 131105: 0x9771, - 149883 - 131105: 0x8CCF, - 149887 - 131105: 0xFDB1, - 149890 - 131105: 0xFC6E, - 149896 - 131105: 0x9CF2, - 149897 - 131105: 0x93B8, - 149898 - 131105: 0x9043, - 149899 - 131105: 0x9759, - 149900 - 131105: 0x94D7, - 149901 - 131105: 0xFE66, - 149902 - 131105: 0x947D, - 149903 - 131105: 0xFC6F, - 149908 - 131105: 0x9246, - 149924 - 131105: 0xFA6D, - 149927 - 131105: 0x8EF7, - 149929 - 131105: 0xFBB7, - 149931 - 131105: 0x947C, - 149932 - 131105: 0x92CD, - 149933 - 131105: 0x97B2, - 149943 - 131105: 0xFE65, - 149944 - 131105: 0x967E, - 149945 - 131105: 0x9758, - 149946 - 131105: 0x9B77, - 149947 - 131105: 0x91CF, - 149957 - 131105: 0x94A4, - 149968 - 131105: 0x9CAD, - 149978 - 131105: 0x8BAB, - 149982 - 131105: 0x96D5, - 149983 - 131105: 0xFCB3, - 149987 - 131105: 0x93AE, - 149989 - 131105: 0x976D, - 149996 - 131105: 0x9446, - 149997 - 131105: 0x95F7, - 150006 - 131105: 0x9C46, - 150007 - 131105: 0x955B, - 150008 - 131105: 0x91D1, - 150009 - 131105: 0x94F4, - 150011 - 131105: 0xFE67, - 150030 - 131105: 0x92A5, - 150034 - 131105: 0xFEDF, - 150035 - 131105: 0x8CAB, - 150037 - 131105: 0x9BC9, - 150049 - 131105: 0xFCED, - 150050 - 131105: 0xFDFA, - 150051 - 131105: 0xFCC8, - 150052 - 131105: 0xFE62, - 150053 - 131105: 0x91FC, - 150054 - 131105: 0xFE6B, - 150055 - 131105: 0xFDF9, - 150056 - 131105: 0xFCC7, - 150057 - 131105: 0x914E, - 150058 - 131105: 0x9CB8, - 150078 - 131105: 0x9767, - 150082 - 131105: 0x95EE, - 150085 - 131105: 0x9BB2, - 150090 - 131105: 0x9460, - 150094 - 131105: 0x94A2, - 150095 - 131105: 0x9875, - 150096 - 131105: 0x97AC, - 150097 - 131105: 0x91D3, - 150109 - 131105: 0x987B, - 150117 - 131105: 0x8EEB, - 150118 - 131105: 0x976A, - 150119 - 131105: 0x965E, - 150129 - 131105: 0x97EB, - 150135 - 131105: 0x9FF9, - 150136 - 131105: 0x95F8, - 150137 - 131105: 0xFEA2, - 150138 - 131105: 0x8FE6, - 150156 - 131105: 0xFE7E, - 150163 - 131105: 0x9DA4, - 150164 - 131105: 0x9768, - 150165 - 131105: 0x8EEC, - 150166 - 131105: 0x94BD, - 150180 - 131105: 0x945B, - 150181 - 131105: 0x9CF6, - 150182 - 131105: 0xFAA7, - 150183 - 131105: 0x9BD9, - 150193 - 131105: 0xFA5D, - 150194 - 131105: 0x9656, - 150195 - 131105: 0x9762, - 150202 - 131105: 0x94BA, - 150203 - 131105: 0xA04F, - 150204 - 131105: 0x92D8, - 150208 - 131105: 0x9BCB, - 150215 - 131105: 0x94BB, - 150218 - 131105: 0x9D5F, - 150225 - 131105: 0x90CF, - 150239 - 131105: 0x9465, - 150242 - 131105: 0x9F4C, - 150249 - 131105: 0x90D8, - 150287 - 131105: 0x8D5B, - 150382 - 131105: 0x9EBE, - 150517 - 131105: 0xFB6D, - 150537 - 131105: 0x95CA, - 150686 - 131105: 0x9DC2, - 150687 - 131105: 0x97F8, - 150729 - 131105: 0x8FFC, - 150745 - 131105: 0x9473, - 150790 - 131105: 0x9474, - 150803 - 131105: 0xFEB7, - 150968 - 131105: 0x8A4B, - 151018 - 131105: 0x8A55, - 151019 - 131105: 0x8B69, - 151099 - 131105: 0x8ADC, - 151120 - 131105: 0x8B76, - 151205 - 131105: 0x9BCE, - 151207 - 131105: 0x8A68, - 151310 - 131105: 0xA0F8, - 151388 - 131105: 0x98DF, - 151426 - 131105: 0xFEB5, - 151430 - 131105: 0x9BCF, - 151447 - 131105: 0x96FB, - 151450 - 131105: 0x9BFB, - 151465 - 131105: 0x9ECE, - 151480 - 131105: 0x8EE5, - 151490 - 131105: 0x9E7B, - 151596 - 131105: 0x9BD2, - 151634 - 131105: 0x8AA5, - 151709 - 131105: 0xFECE, - 151851 - 131105: 0x8A45, - 151880 - 131105: 0x9DFC, - 151933 - 131105: 0xFECF, - 151934 - 131105: 0x8BA5, - 152013 - 131105: 0x8C4A, - 152035 - 131105: 0x8AEC, - 152038 - 131105: 0xFCE0, - 152039 - 131105: 0x94AD, - 152096 - 131105: 0xFED5, - 152097 - 131105: 0x94AC, - 152144 - 131105: 0xFC5A, - 152217 - 131105: 0x9BD6, - 152263 - 131105: 0x8A6F, - 152280 - 131105: 0x8BA9, - 152334 - 131105: 0x8E5F, - 152337 - 131105: 0x9DCB, - 152339 - 131105: 0xFCE7, - 152601 - 131105: 0x9BD7, - 152613 - 131105: 0x93C8, - 152623 - 131105: 0x91F0, - 152624 - 131105: 0x8FE0, - 152646 - 131105: 0x9BDB, - 152684 - 131105: 0x90ED, - 152686 - 131105: 0x9BDC, - 152730 - 131105: 0x8D53, - 152881 - 131105: 0xA0EC, - 152885 - 131105: 0x98FA, - 152895 - 131105: 0x9BE0, - 152923 - 131105: 0x93C7, - 152924 - 131105: 0x9249, - 152925 - 131105: 0x96E1, - 152926 - 131105: 0x9BE2, - 152930 - 131105: 0x9BE4, - 152933 - 131105: 0x8FE1, - 152934 - 131105: 0x9BE5, - 152961 - 131105: 0x94C0, - 152964 - 131105: 0x93C3, - 152975 - 131105: 0x93C5, - 153017 - 131105: 0x9079, - 153045 - 131105: 0x977B, - 153051 - 131105: 0x907E, - 153056 - 131105: 0xFEE6, - 153093 - 131105: 0xFE46, - 153141 - 131105: 0x9DB8, - 153169 - 131105: 0x9270, - 153219 - 131105: 0x95A8, - 153237 - 131105: 0x8CB0, - 153315 - 131105: 0x94C8, - 153334 - 131105: 0x98B9, - 153350 - 131105: 0x9140, - 153373 - 131105: 0xFCBE, - 153381 - 131105: 0x9157, - 153405 - 131105: 0x8BB2, - 153458 - 131105: 0xFADF, - 153543 - 131105: 0x9BE6, - 153567 - 131105: 0x9643, - 153568 - 131105: 0x8E44, - 153569 - 131105: 0x9C4F, - 153687 - 131105: 0xFEF4, - 153693 - 131105: 0x9BE8, - 153714 - 131105: 0x93DC, - 153800 - 131105: 0x966F, - 153822 - 131105: 0x87A1, - 153825 - 131105: 0x8E4A, - 153859 - 131105: 0x9BED, - 153926 - 131105: 0x92F6, - 153942 - 131105: 0x9DB9, - 154028 - 131105: 0x8E4E, - 154060 - 131105: 0xFBCF, - 154196 - 131105: 0x8760, - 154261 - 131105: 0x9EC2, - 154268 - 131105: 0x94E5, - 154286 - 131105: 0x9BF0, - 154287 - 131105: 0x94E4, - 154345 - 131105: 0x9551, - 154484 - 131105: 0x8BBB, - 154505 - 131105: 0x9BF1, - 154547 - 131105: 0x94F0, - 154548 - 131105: 0x8E64, - 154566 - 131105: 0x94EA, - 154596 - 131105: 0x8F61, - 154600 - 131105: 0x9B64, - 154625 - 131105: 0x8E5B, - 154630 - 131105: 0x9BF2, - 154657 - 131105: 0x9FBE, - 154698 - 131105: 0x9DC9, - 154725 - 131105: 0x8E6C, - 154769 - 131105: 0x8F73, - 154788 - 131105: 0x8CAF, - 154816 - 131105: 0x8F75, - 154817 - 131105: 0x8E71, - 154878 - 131105: 0x8E60, - 154912 - 131105: 0x8E6A, - 154928 - 131105: 0x8C4C, - 154947 - 131105: 0x9552, - 155033 - 131105: 0x87CF, - 155065 - 131105: 0x87C0, - 155150 - 131105: 0x9554, - 155209 - 131105: 0x8AD4, - 155265 - 131105: 0x9DBB, - 155266 - 131105: 0x9543, - 155267 - 131105: 0x92FE, - 155302 - 131105: 0x94F2, - 155324 - 131105: 0x94F1, - 155351 - 131105: 0xA0EA, - 155352 - 131105: 0x9DD2, - 155418 - 131105: 0xA0B1, - 155467 - 131105: 0x91F8, - 155617 - 131105: 0x9462, - 155618 - 131105: 0x9BA4, - 155681 - 131105: 0x877D, - 155689 - 131105: 0x8EAD, - 155720 - 131105: 0x9EAD, - 155748 - 131105: 0x96D0, - 155779 - 131105: 0xFEEE, - 155799 - 131105: 0x8AB4, - 155812 - 131105: 0x9757, - 155813 - 131105: 0x8A77, - 155906 - 131105: 0x9BF7, - 155937 - 131105: 0x8EB5, - 155993 - 131105: 0xA06D, - 155994 - 131105: 0x8EB6, - 155995 - 131105: 0x9756, - 155996 - 131105: 0x9540, - 156077 - 131105: 0xA0F3, - 156078 - 131105: 0x94BE, - 156082 - 131105: 0x9BFA, - 156125 - 131105: 0xFDDF, - 156248 - 131105: 0x9DBC, - 156257 - 131105: 0x94FE, - 156266 - 131105: 0x8BDB, - 156267 - 131105: 0xA0FE, - 156368 - 131105: 0x8EC0, - 156469 - 131105: 0x9F47, - 156491 - 131105: 0x8BDE, - 156492 - 131105: 0xA0FB, - 156497 - 131105: 0x8EC3, - 156606 - 131105: 0x9649, - 156661 - 131105: 0xFEC2, - 156664 - 131105: 0x954C, - 156674 - 131105: 0x9BFD, - 156688 - 131105: 0x90CC, - 156689 - 131105: 0x9C60, - 156690 - 131105: 0x954B, - 156746 - 131105: 0x9BFE, - 156777 - 131105: 0x9C70, - 156804 - 131105: 0x9C43, - 156808 - 131105: 0x9C47, - 156809 - 131105: 0x8ECC, - 156813 - 131105: 0x8E54, - 156824 - 131105: 0x8EE4, - 156946 - 131105: 0x9C49, - 157042 - 131105: 0x8B5E, - 157088 - 131105: 0x955E, - 157101 - 131105: 0x955C, - 157119 - 131105: 0x9C4B, - 157202 - 131105: 0x8BE1, - 157222 - 131105: 0x8ED9, - 157359 - 131105: 0x9DB4, - 157361 - 131105: 0x925F, - 157365 - 131105: 0x9C4C, - 157402 - 131105: 0x8AA1, - 157416 - 131105: 0x8EDB, - 157436 - 131105: 0x9C56, - 157462 - 131105: 0x8AA2, - 157505 - 131105: 0x9754, - 157593 - 131105: 0x9C5E, - 157619 - 131105: 0x9ED4, - 157620 - 131105: 0x9568, - 157644 - 131105: 0xA0C3, - 157724 - 131105: 0x8AE6, - 157766 - 131105: 0xA0F7, - 157790 - 131105: 0x9C61, - 157806 - 131105: 0x9C5F, - 157832 - 131105: 0xFC4D, - 157834 - 131105: 0x9E5B, - 157843 - 131105: 0x9E69, - 157895 - 131105: 0x9C63, - 157966 - 131105: 0xFEC7, - 157969 - 131105: 0xFEC6, - 157990 - 131105: 0x9C67, - 158009 - 131105: 0x9C69, - 158033 - 131105: 0x8BE2, - 158120 - 131105: 0x9165, - 158133 - 131105: 0x9CE7, - 158194 - 131105: 0x8A54, - 158202 - 131105: 0x9C6C, - 158253 - 131105: 0x9C6E, - 158254 - 131105: 0xFE5D, - 158260 - 131105: 0x9C73, - 158274 - 131105: 0x956A, - 158289 - 131105: 0x956D, - 158290 - 131105: 0x8EF0, - 158469 - 131105: 0x8F4D, - 158474 - 131105: 0x8EF6, - 158483 - 131105: 0xFABC, - 158485 - 131105: 0x8CD5, - 158499 - 131105: 0x875E, - 158504 - 131105: 0xFBDA, - 158544 - 131105: 0x8B4C, - 158545 - 131105: 0xFD75, - 158546 - 131105: 0x9BDD, - 158547 - 131105: 0xFAF5, - 158555 - 131105: 0x9C74, - 158581 - 131105: 0x9545, - 158594 - 131105: 0x96C6, - 158614 - 131105: 0x8F6A, - 158615 - 131105: 0x8F4E, - 158621 - 131105: 0x9C78, - 158643 - 131105: 0xFA55, - 158656 - 131105: 0x97E4, - 158711 - 131105: 0x9C41, - 158753 - 131105: 0x925C, - 158784 - 131105: 0x96FA, - 158785 - 131105: 0x8CF6, - 158790 - 131105: 0x8D4D, - 158846 - 131105: 0xFB66, - 158847 - 131105: 0x8E65, - 158848 - 131105: 0x9849, - 158849 - 131105: 0xFBA8, - 158850 - 131105: 0x9842, - 158884 - 131105: 0x9C7A, - 158903 - 131105: 0x97FB, - 158904 - 131105: 0x90CA, - 158909 - 131105: 0x9C5B, - 158912 - 131105: 0x974D, - 158915 - 131105: 0x8ED3, - 158929 - 131105: 0x9561, - 159010 - 131105: 0x9F4B, - 159011 - 131105: 0x9FB5, - 159012 - 131105: 0x93D2, - 159013 - 131105: 0xFDAA, - 159014 - 131105: 0x9840, - 159015 - 131105: 0x9146, - 159016 - 131105: 0x9867, - 159017 - 131105: 0xFA5A, - 159018 - 131105: 0xFBA9, - 159057 - 131105: 0x9841, - 159092 - 131105: 0x8CD3, - 159136 - 131105: 0xFCFD, - 159137 - 131105: 0xFDAB, - 159138 - 131105: 0x91BD, - 159139 - 131105: 0x8F4C, - 159140 - 131105: 0x96C9, - 159141 - 131105: 0x8F55, - 159142 - 131105: 0xFBAE, - 159143 - 131105: 0x956F, - 159150 - 131105: 0x9C7D, - 159196 - 131105: 0xA0F0, - 159210 - 131105: 0x946F, - 159211 - 131105: 0xFDAC, - 159216 - 131105: 0x96CB, - 159232 - 131105: 0x96CE, - 159237 - 131105: 0xA056, - 159239 - 131105: 0x9CE1, - 159250 - 131105: 0x96C4, - 159298 - 131105: 0x8F5E, - 159299 - 131105: 0x8F6C, - 159300 - 131105: 0x8EA3, - 159301 - 131105: 0xFBB3, - 159342 - 131105: 0xFC53, - 159346 - 131105: 0xFDB3, - 159351 - 131105: 0x8F6B, - 159364 - 131105: 0x96CA, - 159368 - 131105: 0x87CD, - 159371 - 131105: 0x8753, - 159385 - 131105: 0x8F79, - 159440 - 131105: 0x9E6F, - 159441 - 131105: 0xA0C5, - 159442 - 131105: 0xFC78, - 159443 - 131105: 0x8E42, - 159444 - 131105: 0x8F5A, - 159445 - 131105: 0x90C2, - 159446 - 131105: 0x8EA5, - 159447 - 131105: 0x9061, - 159526 - 131105: 0x924F, - 159603 - 131105: 0x9373, - 159604 - 131105: 0xFDB5, - 159647 - 131105: 0xFECC, - 159649 - 131105: 0xFBBD, - 159678 - 131105: 0x8CD6, - 159710 - 131105: 0x9843, - 159711 - 131105: 0x96C5, - 159758 - 131105: 0x89BC, - 159819 - 131105: 0x9CA3, - 159826 - 131105: 0x924B, - 159827 - 131105: 0x984A, - 159880 - 131105: 0x8FA4, - 159917 - 131105: 0xA0F1, - 159918 - 131105: 0x9EFB, - 159919 - 131105: 0x9CD2, - 159949 - 131105: 0x8FA7, - 159954 - 131105: 0x8754, - 159992 - 131105: 0xFC5C, - 160009 - 131105: 0x9845, - 160012 - 131105: 0x9046, - 160013 - 131105: 0x8CD1, - 160038 - 131105: 0xFEFA, - 160039 - 131105: 0x9560, - 160100 - 131105: 0x9F48, - 160101 - 131105: 0x9247, - 160117 - 131105: 0x90FB, - 160205 - 131105: 0x9CA4, - 160283 - 131105: 0x9571, - 160359 - 131105: 0x8745, - 160384 - 131105: 0x9CA6, - 160389 - 131105: 0x9CA7, - 160395 - 131105: 0x9CAA, - 160434 - 131105: 0x9ED3, - 160438 - 131105: 0x9E70, - 160486 - 131105: 0x9CAC, - 160594 - 131105: 0x8752, - 160666 - 131105: 0x8FAE, - 160767 - 131105: 0x8D50, - 160802 - 131105: 0x957D, - 160848 - 131105: 0x9CB0, - 160900 - 131105: 0x97B6, - 160902 - 131105: 0xA0BD, - 161140 - 131105: 0x8ADF, - 161187 - 131105: 0x9EAA, - 161248 - 131105: 0x8FBD, - 161252 - 131105: 0x8FBF, - 161277 - 131105: 0x9369, - 161278 - 131105: 0x9BA7, - 161287 - 131105: 0xC8A4, - 161292 - 131105: 0xFEEA, - 161330 - 131105: 0x9BE1, - 161337 - 131105: 0x8B41, - 161365 - 131105: 0x9DB6, - 161366 - 131105: 0xA0EB, - 161367 - 131105: 0x9BA3, - 161428 - 131105: 0x8BA1, - 161551 - 131105: 0x8FC8, - 161589 - 131105: 0x894C, - 161590 - 131105: 0x9860, - 161601 - 131105: 0x94C7, - 161630 - 131105: 0x8B58, - 161668 - 131105: 0x95AB, - 161669 - 131105: 0x95AA, - 161740 - 131105: 0x9CC3, - 161880 - 131105: 0x9CC4, - 161904 - 131105: 0x93D6, - 161949 - 131105: 0x9DAC, - 161970 - 131105: 0x8BE6, - 161992 - 131105: 0x8A71, - 162084 - 131105: 0x8FD1, - 162151 - 131105: 0x99D5, - 162170 - 131105: 0x90F4, - 162208 - 131105: 0x8AA3, - 162269 - 131105: 0x9CCE, - 162301 - 131105: 0x9CD4, - 162314 - 131105: 0x9CD5, - 162318 - 131105: 0xFBC8, - 162366 - 131105: 0x9DB3, - 162387 - 131105: 0xFC70, - 162393 - 131105: 0x8FD7, - 162425 - 131105: 0x9B73, - 162436 - 131105: 0xFA5B, - 162493 - 131105: 0x8FD2, - 162494 - 131105: 0x9064, - 162548 - 131105: 0x98B6, - 162566 - 131105: 0x9668, - 162571 - 131105: 0x9CD6, - 162584 - 131105: 0x98BD, - 162616 - 131105: 0x8FDC, - 162617 - 131105: 0xFEF6, - 162618 - 131105: 0x8FD9, - 162632 - 131105: 0x9541, - 162661 - 131105: 0x87CA, - 162799 - 131105: 0x876C, - 162804 - 131105: 0x97F3, - 162834 - 131105: 0x9BF8, - 162924 - 131105: 0x875A, - 162993 - 131105: 0x8748, - 163013 - 131105: 0x874A, - 163119 - 131105: 0x9E6C, - 163155 - 131105: 0x8FF2, - 163156 - 131105: 0x8FEE, - 163174 - 131105: 0x9CD7, - 163187 - 131105: 0x9E6E, - 163204 - 131105: 0x8A40, - 163215 - 131105: 0x8FEF, - 163224 - 131105: 0x8FF4, - 163261 - 131105: 0x8FF5, - 163292 - 131105: 0x95C2, - 163405 - 131105: 0x986A, - 163407 - 131105: 0x97CF, - 163630 - 131105: 0x9EE5, - 163833 - 131105: 0x9E7C, - 163842 - 131105: 0x9041, - 163849 - 131105: 0x9CDB, - 163870 - 131105: 0x9441, - 163875 - 131105: 0x9CE6, - 163876 - 131105: 0x9DB0, - 163912 - 131105: 0x9CEA, - 163971 - 131105: 0x9CED, - 163984 - 131105: 0x9CFA, - 164029 - 131105: 0x8B62, - 164030 - 131105: 0x8A4E, - 164072 - 131105: 0x9CCA, - 164073 - 131105: 0x8A66, - 164084 - 131105: 0x9CFB, - 164142 - 131105: 0x9CFC, - 164175 - 131105: 0x9CFE, - 164189 - 131105: 0x8A53, - 164207 - 131105: 0x9CE5, - 164233 - 131105: 0x9D40, - 164271 - 131105: 0x9D41, - 164284 - 131105: 0x9045, - 164359 - 131105: 0x8B73, - 164376 - 131105: 0x97CA, - 164378 - 131105: 0x9D42, - 164438 - 131105: 0x8A61, - 164476 - 131105: 0x8BAE, - 164507 - 131105: 0x8AD2, - 164557 - 131105: 0x8BA2, - 164578 - 131105: 0x9DF2, - 164614 - 131105: 0x9D43, - 164632 - 131105: 0x9CDF, - 164655 - 131105: 0x9D44, - 164666 - 131105: 0x8ECA, - 164709 - 131105: 0x904E, - 164717 - 131105: 0x8EB3, - 164733 - 131105: 0x9FF5, - 164746 - 131105: 0x9D45, - 164882 - 131105: 0x904F, - 164968 - 131105: 0x9D47, - 164972 - 131105: 0x89CA, - 164979 - 131105: 0x9CB5, - 164994 - 131105: 0xFBFE, - 165121 - 131105: 0x905E, - 165180 - 131105: 0x9063, - 165181 - 131105: 0x9057, - 165228 - 131105: 0x9066, - 165352 - 131105: 0x9BC0, - 165364 - 131105: 0xFCE5, - 165376 - 131105: 0x9162, - 165387 - 131105: 0x9067, - 165413 - 131105: 0x8FA1, - 165435 - 131105: 0x8FA2, - 165546 - 131105: 0x9D48, - 165547 - 131105: 0xFAD3, - 165554 - 131105: 0x8D4F, - 165564 - 131105: 0x905D, - 165592 - 131105: 0x90B9, - 165606 - 131105: 0x906B, - 165647 - 131105: 0x8C5C, - 165651 - 131105: 0x9069, - 165892 - 131105: 0xFE57, - 165931 - 131105: 0xFE55, - 166157 - 131105: 0x87A6, - 166195 - 131105: 0x9073, - 166216 - 131105: 0x9BEF, - 166217 - 131105: 0x9CF0, - 166230 - 131105: 0x9D4B, - 166244 - 131105: 0xFED9, - 166248 - 131105: 0xFEDA, - 166252 - 131105: 0x91E0, - 166253 - 131105: 0x8D43, - 166270 - 131105: 0x91D8, - 166281 - 131105: 0x9646, - 166312 - 131105: 0x9360, - 166314 - 131105: 0xFA53, - 166315 - 131105: 0x9CD3, - 166328 - 131105: 0x9D4E, - 166332 - 131105: 0xFB40, - 166336 - 131105: 0x8DE2, - 166364 - 131105: 0x9442, - 166366 - 131105: 0x9056, - 166369 - 131105: 0x9865, - 166371 - 131105: 0x8C6C, - 166372 - 131105: 0xFA4A, - 166375 - 131105: 0x9D50, - 166376 - 131105: 0x9D52, - 166393 - 131105: 0x95AF, - 166394 - 131105: 0x975A, - 166395 - 131105: 0x9349, - 166396 - 131105: 0x9747, - 166415 - 131105: 0xA0F4, - 166422 - 131105: 0x9778, - 166437 - 131105: 0x8FCF, - 166441 - 131105: 0xFC60, - 166450 - 131105: 0x8C4E, - 166454 - 131105: 0xFC56, - 166468 - 131105: 0x91DC, - 166469 - 131105: 0x9661, - 166470 - 131105: 0x92EC, - 166471 - 131105: 0x935D, - 166472 - 131105: 0x8EDE, - 166473 - 131105: 0x96FE, - 166474 - 131105: 0xFD4F, - 166475 - 131105: 0x95DE, - 166489 - 131105: 0x98B0, - 166490 - 131105: 0xA040, - 166529 - 131105: 0x97BD, - 166530 - 131105: 0x977D, - 166531 - 131105: 0x97F5, - 166554 - 131105: 0x9BAC, - 166555 - 131105: 0xFADA, - 166556 - 131105: 0x92C2, - 166592 - 131105: 0x97B1, - 166598 - 131105: 0x907B, - 166603 - 131105: 0x93FE, - 166604 - 131105: 0x947B, - 166606 - 131105: 0x9777, - 166622 - 131105: 0xFABE, - 166623 - 131105: 0xFD43, - 166624 - 131105: 0x90C6, - 166625 - 131105: 0x90A4, - 166626 - 131105: 0x90A8, - 166627 - 131105: 0x94A9, - 166629 - 131105: 0x90A9, - 166634 - 131105: 0x8C65, - 166652 - 131105: 0x95E0, - 166668 - 131105: 0x907D, - 166675 - 131105: 0x9265, - 166689 - 131105: 0xFDBA, - 166690 - 131105: 0x93C4, - 166699 - 131105: 0xFEED, - 166700 - 131105: 0x9DAB, - 166701 - 131105: 0xA0E3, - 166703 - 131105: 0x9648, - 166726 - 131105: 0x9D53, - 166732 - 131105: 0x8AA9, - 166734 - 131105: 0x9BC5, - 166736 - 131105: 0x965D, - 166755 - 131105: 0x975F, - 166756 - 131105: 0x965F, - 166757 - 131105: 0x966E, - 166758 - 131105: 0xFB5D, - 166764 - 131105: 0x9DB1, - 166799 - 131105: 0xFEA3, - 166809 - 131105: 0x9DB2, - 166812 - 131105: 0x95AE, - 166813 - 131105: 0xFCA3, - 166841 - 131105: 0x8769, - 166850 - 131105: 0xA0A2, - 166853 - 131105: 0x9655, - 166868 - 131105: 0x9D54, - 166871 - 131105: 0x9341, - 166873 - 131105: 0x95AD, - 166874 - 131105: 0x91D5, - 166887 - 131105: 0x977A, - 166888 - 131105: 0xFDFC, - 166889 - 131105: 0x8E47, - 166890 - 131105: 0x93FD, - 166891 - 131105: 0x90A5, - 166892 - 131105: 0x90AC, - 166901 - 131105: 0x95AC, - 166911 - 131105: 0x90AE, - 166915 - 131105: 0xFEA5, - 166921 - 131105: 0x9D56, - 166940 - 131105: 0x97E3, - 166941 - 131105: 0x95E2, - 166947 - 131105: 0x9466, - 166950 - 131105: 0x9647, - 166955 - 131105: 0x91B8, - 166960 - 131105: 0x9CEC, - 166969 - 131105: 0x90AD, - 166971 - 131105: 0x95E3, - 167114 - 131105: 0x8B4F, - 167117 - 131105: 0x8AE3, - 167122 - 131105: 0x8B4D, - 167220 - 131105: 0x95EA, - 167321 - 131105: 0x8B4E, - 167353 - 131105: 0x8CC1, - 167439 - 131105: 0x8BED, - 167478 - 131105: 0x91D9, - 167481 - 131105: 0xA0A4, - 167525 - 131105: 0x95F5, - 167526 - 131105: 0x95F4, - 167575 - 131105: 0x9FB3, - 167596 - 131105: 0xFEAF, - 167602 - 131105: 0xFE72, - 167603 - 131105: 0x927A, - 167641 - 131105: 0xFEAC, - 167655 - 131105: 0x95F3, - 167877 - 131105: 0x9D58, - 168057 - 131105: 0x8D46, - 168072 - 131105: 0x9372, - 168075 - 131105: 0x91C5, - 168083 - 131105: 0x9642, - 168111 - 131105: 0x90CD, - 168112 - 131105: 0x95FE, - 168113 - 131105: 0x9159, - 168128 - 131105: 0x9C65, - 168164 - 131105: 0x97CC, - 168165 - 131105: 0x90CE, - 168172 - 131105: 0x9D59, - 168173 - 131105: 0xFCF5, - 168205 - 131105: 0xFEFD, - 168208 - 131105: 0x9D5B, - 168252 - 131105: 0x9D5C, - 168269 - 131105: 0x937E, - 168283 - 131105: 0x98AC, - 168286 - 131105: 0x9D5E, - 168304 - 131105: 0xFDD0, - 168348 - 131105: 0xFD60, - 168360 - 131105: 0x9CCF, - 168405 - 131105: 0x90DD, - 168427 - 131105: 0x90E0, - 168989 - 131105: 0x90F3, - 168992 - 131105: 0x98B1, - 169011 - 131105: 0x90F0, - 169023 - 131105: 0x93BD, - 169032 - 131105: 0x95B7, - 169168 - 131105: 0x9F46, - 169177 - 131105: 0x8E4B, - 169178 - 131105: 0x9658, - 169189 - 131105: 0x8A4C, - 169191 - 131105: 0x9D63, - 169374 - 131105: 0x9ECF, - 169392 - 131105: 0x9D65, - 169400 - 131105: 0x9D66, - 169431 - 131105: 0x965A, - 169449 - 131105: 0x9D64, - 169460 - 131105: 0x8A6C, - 169760 - 131105: 0x8AD9, - 169778 - 131105: 0x9D67, - 169940 - 131105: 0x8A70, - 170000 - 131105: 0x8BF3, - 170071 - 131105: 0x9150, - 170148 - 131105: 0x9CC1, - 170193 - 131105: 0x9D68, - 170218 - 131105: 0x93A7, - 170225 - 131105: 0x9674, - 170234 - 131105: 0x8CFD, - 170243 - 131105: 0xA0EF, - 170245 - 131105: 0x9151, - 170287 - 131105: 0x96C1, - 170309 - 131105: 0x8777, - 170311 - 131105: 0x8C64, - 170312 - 131105: 0x9676, - 170313 - 131105: 0x9D69, - 170333 - 131105: 0xFCA4, - 170346 - 131105: 0x9D6A, - 170397 - 131105: 0x924E, - 170435 - 131105: 0x9D6B, - 170441 - 131105: 0x9BC1, - 170536 - 131105: 0x9D6C, - 170573 - 131105: 0x8A65, - 170757 - 131105: 0x915D, - 170766 - 131105: 0x9D6D, - 170965 - 131105: 0x915A, - 171123 - 131105: 0x8C42, - 171181 - 131105: 0x9CC0, - 171326 - 131105: 0x916A, - 171354 - 131105: 0x9D6E, - 171388 - 131105: 0x9EA6, - 171416 - 131105: 0x9DCD, - 171419 - 131105: 0x9D6F, - 171510 - 131105: 0x89BB, - 171526 - 131105: 0x9EF9, - 171565 - 131105: 0x96B4, - 171624 - 131105: 0x9172, - 171692 - 131105: 0x9EC8, - 171696 - 131105: 0x8771, - 171715 - 131105: 0x8B55, - 171768 - 131105: 0x9D71, - 171811 - 131105: 0x9D72, - 171824 - 131105: 0x9ECC, - 171959 - 131105: 0x9174, - 171998 - 131105: 0x9ED0, - 172052 - 131105: 0x905C, - 172167 - 131105: 0x8ED2, - 172217 - 131105: 0x91A8, - 172257 - 131105: 0x9177, - 172269 - 131105: 0x96BF, - 172275 - 131105: 0x96C0, - 172280 - 131105: 0x8FB1, - 172286 - 131105: 0x96B7, - 172295 - 131105: 0x8C55, - 172323 - 131105: 0x9178, - 172339 - 131105: 0x89BE, - 172340 - 131105: 0x917C, - 172368 - 131105: 0xFB77, - 172434 - 131105: 0x9175, - 172435 - 131105: 0x91A3, - 172459 - 131105: 0x9176, - 172468 - 131105: 0x96BE, - 172469 - 131105: 0x8D49, - 172511 - 131105: 0x9179, - 172533 - 131105: 0x96B6, - 172576 - 131105: 0x91A4, - 172595 - 131105: 0x91A6, - 172691 - 131105: 0x9D75, - 172703 - 131105: 0x9052, - 172722 - 131105: 0xA045, - 172724 - 131105: 0x91A9, - 172726 - 131105: 0x98AA, - 172730 - 131105: 0x8C5F, - 172733 - 131105: 0x8BAA, - 172767 - 131105: 0x9CDD, - 172799 - 131105: 0x9D77, - 172881 - 131105: 0x8756, - 172969 - 131105: 0x8940, - 173108 - 131105: 0x9EEC, - 173147 - 131105: 0x93AA, - 173510 - 131105: 0x9478, - 173515 - 131105: 0x9D7A, - 173569 - 131105: 0x8AC9, - 173618 - 131105: 0x8B4B, - 173642 - 131105: 0x9FEC, - 173659 - 131105: 0x8AE2, - 173737 - 131105: 0x9E75, -} - -const encode1Low, encode1High = 11904, 40908 - -var encode1 = [...]uint16{ - 11904 - 11904: 0xC8D6, - 11908 - 11904: 0xC8D7, - 11910 - 11904: 0xC8D8, - 11911 - 11904: 0xC8D9, - 11912 - 11904: 0xC8DA, - 11914 - 11904: 0xC8DB, - 11916 - 11904: 0xC8DC, - 11917 - 11904: 0xC8DD, - 11925 - 11904: 0xC8DE, - 11932 - 11904: 0xC8DF, - 11933 - 11904: 0xC8E0, - 11941 - 11904: 0xC8E1, - 11943 - 11904: 0xC8E2, - 11946 - 11904: 0xC8E3, - 11948 - 11904: 0xC8E4, - 11950 - 11904: 0xC8E5, - 11958 - 11904: 0xC8E6, - 11964 - 11904: 0xC8E7, - 11966 - 11904: 0xC8E8, - 11974 - 11904: 0xC8E9, - 11978 - 11904: 0xC8EA, - 11980 - 11904: 0xC8EB, - 11981 - 11904: 0xC8EC, - 11983 - 11904: 0xC8ED, - 11990 - 11904: 0xC8EE, - 11991 - 11904: 0xC8EF, - 11998 - 11904: 0xC8F0, - 12003 - 11904: 0xC8F1, - 12083 - 11904: 0xC6CD, - 12288 - 11904: 0xA140, - 12289 - 11904: 0xA142, - 12290 - 11904: 0xA143, - 12291 - 11904: 0xC6DE, - 12293 - 11904: 0xC6E0, - 12294 - 11904: 0xC6E1, - 12295 - 11904: 0xC6E2, - 12296 - 11904: 0xA171, - 12297 - 11904: 0xA172, - 12298 - 11904: 0xA16D, - 12299 - 11904: 0xA16E, - 12300 - 11904: 0xA175, - 12301 - 11904: 0xA176, - 12302 - 11904: 0xA179, - 12303 - 11904: 0xA17A, - 12304 - 11904: 0xA169, - 12305 - 11904: 0xA16A, - 12306 - 11904: 0xA245, - 12308 - 11904: 0xA165, - 12309 - 11904: 0xA166, - 12317 - 11904: 0xA1A9, - 12318 - 11904: 0xA1AA, - 12321 - 11904: 0xA2C3, - 12322 - 11904: 0xA2C4, - 12323 - 11904: 0xA2C5, - 12324 - 11904: 0xA2C6, - 12325 - 11904: 0xA2C7, - 12326 - 11904: 0xA2C8, - 12327 - 11904: 0xA2C9, - 12328 - 11904: 0xA2CA, - 12329 - 11904: 0xA2CB, - 12353 - 11904: 0xC6E7, - 12354 - 11904: 0xC6E8, - 12355 - 11904: 0xC6E9, - 12356 - 11904: 0xC6EA, - 12357 - 11904: 0xC6EB, - 12358 - 11904: 0xC6EC, - 12359 - 11904: 0xC6ED, - 12360 - 11904: 0xC6EE, - 12361 - 11904: 0xC6EF, - 12362 - 11904: 0xC6F0, - 12363 - 11904: 0xC6F1, - 12364 - 11904: 0xC6F2, - 12365 - 11904: 0xC6F3, - 12366 - 11904: 0xC6F4, - 12367 - 11904: 0xC6F5, - 12368 - 11904: 0xC6F6, - 12369 - 11904: 0xC6F7, - 12370 - 11904: 0xC6F8, - 12371 - 11904: 0xC6F9, - 12372 - 11904: 0xC6FA, - 12373 - 11904: 0xC6FB, - 12374 - 11904: 0xC6FC, - 12375 - 11904: 0xC6FD, - 12376 - 11904: 0xC6FE, - 12377 - 11904: 0xC740, - 12378 - 11904: 0xC741, - 12379 - 11904: 0xC742, - 12380 - 11904: 0xC743, - 12381 - 11904: 0xC744, - 12382 - 11904: 0xC745, - 12383 - 11904: 0xC746, - 12384 - 11904: 0xC747, - 12385 - 11904: 0xC748, - 12386 - 11904: 0xC749, - 12387 - 11904: 0xC74A, - 12388 - 11904: 0xC74B, - 12389 - 11904: 0xC74C, - 12390 - 11904: 0xC74D, - 12391 - 11904: 0xC74E, - 12392 - 11904: 0xC74F, - 12393 - 11904: 0xC750, - 12394 - 11904: 0xC751, - 12395 - 11904: 0xC752, - 12396 - 11904: 0xC753, - 12397 - 11904: 0xC754, - 12398 - 11904: 0xC755, - 12399 - 11904: 0xC756, - 12400 - 11904: 0xC757, - 12401 - 11904: 0xC758, - 12402 - 11904: 0xC759, - 12403 - 11904: 0xC75A, - 12404 - 11904: 0xC75B, - 12405 - 11904: 0xC75C, - 12406 - 11904: 0xC75D, - 12407 - 11904: 0xC75E, - 12408 - 11904: 0xC75F, - 12409 - 11904: 0xC760, - 12410 - 11904: 0xC761, - 12411 - 11904: 0xC762, - 12412 - 11904: 0xC763, - 12413 - 11904: 0xC764, - 12414 - 11904: 0xC765, - 12415 - 11904: 0xC766, - 12416 - 11904: 0xC767, - 12417 - 11904: 0xC768, - 12418 - 11904: 0xC769, - 12419 - 11904: 0xC76A, - 12420 - 11904: 0xC76B, - 12421 - 11904: 0xC76C, - 12422 - 11904: 0xC76D, - 12423 - 11904: 0xC76E, - 12424 - 11904: 0xC76F, - 12425 - 11904: 0xC770, - 12426 - 11904: 0xC771, - 12427 - 11904: 0xC772, - 12428 - 11904: 0xC773, - 12429 - 11904: 0xC774, - 12430 - 11904: 0xC775, - 12431 - 11904: 0xC776, - 12432 - 11904: 0xC777, - 12433 - 11904: 0xC778, - 12434 - 11904: 0xC779, - 12435 - 11904: 0xC77A, - 12443 - 11904: 0xC8D4, - 12444 - 11904: 0xC8D5, - 12445 - 11904: 0xC6DC, - 12446 - 11904: 0xC6DD, - 12449 - 11904: 0xC77B, - 12450 - 11904: 0xC77C, - 12451 - 11904: 0xC77D, - 12452 - 11904: 0xC77E, - 12453 - 11904: 0xC7A1, - 12454 - 11904: 0xC7A2, - 12455 - 11904: 0xC7A3, - 12456 - 11904: 0xC7A4, - 12457 - 11904: 0xC7A5, - 12458 - 11904: 0xC7A6, - 12459 - 11904: 0xC7A7, - 12460 - 11904: 0xC7A8, - 12461 - 11904: 0xC7A9, - 12462 - 11904: 0xC7AA, - 12463 - 11904: 0xC7AB, - 12464 - 11904: 0xC7AC, - 12465 - 11904: 0xC7AD, - 12466 - 11904: 0xC7AE, - 12467 - 11904: 0xC7AF, - 12468 - 11904: 0xC7B0, - 12469 - 11904: 0xC7B1, - 12470 - 11904: 0xC7B2, - 12471 - 11904: 0xC7B3, - 12472 - 11904: 0xC7B4, - 12473 - 11904: 0xC7B5, - 12474 - 11904: 0xC7B6, - 12475 - 11904: 0xC7B7, - 12476 - 11904: 0xC7B8, - 12477 - 11904: 0xC7B9, - 12478 - 11904: 0xC7BA, - 12479 - 11904: 0xC7BB, - 12480 - 11904: 0xC7BC, - 12481 - 11904: 0xC7BD, - 12482 - 11904: 0xC7BE, - 12483 - 11904: 0xC7BF, - 12484 - 11904: 0xC7C0, - 12485 - 11904: 0xC7C1, - 12486 - 11904: 0xC7C2, - 12487 - 11904: 0xC7C3, - 12488 - 11904: 0xC7C4, - 12489 - 11904: 0xC7C5, - 12490 - 11904: 0xC7C6, - 12491 - 11904: 0xC7C7, - 12492 - 11904: 0xC7C8, - 12493 - 11904: 0xC7C9, - 12494 - 11904: 0xC7CA, - 12495 - 11904: 0xC7CB, - 12496 - 11904: 0xC7CC, - 12497 - 11904: 0xC7CD, - 12498 - 11904: 0xC7CE, - 12499 - 11904: 0xC7CF, - 12500 - 11904: 0xC7D0, - 12501 - 11904: 0xC7D1, - 12502 - 11904: 0xC7D2, - 12503 - 11904: 0xC7D3, - 12504 - 11904: 0xC7D4, - 12505 - 11904: 0xC7D5, - 12506 - 11904: 0xC7D6, - 12507 - 11904: 0xC7D7, - 12508 - 11904: 0xC7D8, - 12509 - 11904: 0xC7D9, - 12510 - 11904: 0xC7DA, - 12511 - 11904: 0xC7DB, - 12512 - 11904: 0xC7DC, - 12513 - 11904: 0xC7DD, - 12514 - 11904: 0xC7DE, - 12515 - 11904: 0xC7DF, - 12516 - 11904: 0xC7E0, - 12517 - 11904: 0xC7E1, - 12518 - 11904: 0xC7E2, - 12519 - 11904: 0xC7E3, - 12520 - 11904: 0xC7E4, - 12521 - 11904: 0xC7E5, - 12522 - 11904: 0xC7E6, - 12523 - 11904: 0xC7E7, - 12524 - 11904: 0xC7E8, - 12525 - 11904: 0xC7E9, - 12526 - 11904: 0xC7EA, - 12527 - 11904: 0xC7EB, - 12528 - 11904: 0xC7EC, - 12529 - 11904: 0xC7ED, - 12530 - 11904: 0xC7EE, - 12531 - 11904: 0xC7EF, - 12532 - 11904: 0xC7F0, - 12533 - 11904: 0xC7F1, - 12534 - 11904: 0xC7F2, - 12540 - 11904: 0xC6E3, - 12541 - 11904: 0xC6DA, - 12542 - 11904: 0xC6DB, - 12549 - 11904: 0xA374, - 12550 - 11904: 0xA375, - 12551 - 11904: 0xA376, - 12552 - 11904: 0xA377, - 12553 - 11904: 0xA378, - 12554 - 11904: 0xA379, - 12555 - 11904: 0xA37A, - 12556 - 11904: 0xA37B, - 12557 - 11904: 0xA37C, - 12558 - 11904: 0xA37D, - 12559 - 11904: 0xA37E, - 12560 - 11904: 0xA3A1, - 12561 - 11904: 0xA3A2, - 12562 - 11904: 0xA3A3, - 12563 - 11904: 0xA3A4, - 12564 - 11904: 0xA3A5, - 12565 - 11904: 0xA3A6, - 12566 - 11904: 0xA3A7, - 12567 - 11904: 0xA3A8, - 12568 - 11904: 0xA3A9, - 12569 - 11904: 0xA3AA, - 12570 - 11904: 0xA3AB, - 12571 - 11904: 0xA3AC, - 12572 - 11904: 0xA3AD, - 12573 - 11904: 0xA3AE, - 12574 - 11904: 0xA3AF, - 12575 - 11904: 0xA3B0, - 12576 - 11904: 0xA3B1, - 12577 - 11904: 0xA3B2, - 12578 - 11904: 0xA3B3, - 12579 - 11904: 0xA3B4, - 12580 - 11904: 0xA3B5, - 12581 - 11904: 0xA3B6, - 12582 - 11904: 0xA3B7, - 12583 - 11904: 0xA3B8, - 12584 - 11904: 0xA3B9, - 12585 - 11904: 0xA3BA, - 12736 - 11904: 0x8840, - 12737 - 11904: 0x8841, - 12738 - 11904: 0x8842, - 12739 - 11904: 0x8843, - 12740 - 11904: 0x8844, - 12741 - 11904: 0x8846, - 12742 - 11904: 0x8849, - 12743 - 11904: 0x884A, - 12744 - 11904: 0x884D, - 12745 - 11904: 0x884F, - 12746 - 11904: 0x8850, - 12747 - 11904: 0x8851, - 12748 - 11904: 0x8852, - 12749 - 11904: 0x8854, - 12750 - 11904: 0x8855, - 12751 - 11904: 0xC879, - 12849 - 11904: 0xC8D1, - 12963 - 11904: 0xA1C0, - 13198 - 11904: 0xA255, - 13199 - 11904: 0xA256, - 13212 - 11904: 0xA250, - 13213 - 11904: 0xA251, - 13214 - 11904: 0xA252, - 13217 - 11904: 0xA254, - 13252 - 11904: 0xA257, - 13262 - 11904: 0xA253, - 13265 - 11904: 0xA1EB, - 13266 - 11904: 0xA1EA, - 13269 - 11904: 0xA24F, - 13365 - 11904: 0x9277, - 13376 - 11904: 0x96DF, - 13386 - 11904: 0x8CF4, - 13388 - 11904: 0x89D5, - 13412 - 11904: 0x93CD, - 13427 - 11904: 0x9BDF, - 13434 - 11904: 0xFA68, - 13437 - 11904: 0x89DA, - 13438 - 11904: 0x8F59, - 13459 - 11904: 0x89DB, - 13462 - 11904: 0x8F5D, - 13477 - 11904: 0x89DC, - 13487 - 11904: 0x96F7, - 13500 - 11904: 0x8ADA, - 13505 - 11904: 0x8BDC, - 13512 - 11904: 0x97DB, - 13535 - 11904: 0x9E53, - 13540 - 11904: 0x9DAA, - 13542 - 11904: 0x87BE, - 13563 - 11904: 0x9BEA, - 13574 - 11904: 0x8A6E, - 13630 - 11904: 0x8BC8, - 13649 - 11904: 0x89E8, - 13651 - 11904: 0x89EA, - 13657 - 11904: 0x8C4B, - 13665 - 11904: 0xFB70, - 13677 - 11904: 0x89ED, - 13680 - 11904: 0x94DD, - 13682 - 11904: 0x89EE, - 13687 - 11904: 0x9EB4, - 13688 - 11904: 0x8AD3, - 13700 - 11904: 0x92DB, - 13719 - 11904: 0x94DB, - 13720 - 11904: 0x89F9, - 13729 - 11904: 0xFB7A, - 13733 - 11904: 0x89FB, - 13741 - 11904: 0x9EFC, - 13759 - 11904: 0x89FC, - 13761 - 11904: 0x89BF, - 13765 - 11904: 0x89FE, - 13767 - 11904: 0x89E6, - 13770 - 11904: 0x9D46, - 13774 - 11904: 0x9DEE, - 13778 - 11904: 0xA07E, - 13782 - 11904: 0xA068, - 13787 - 11904: 0x98E9, - 13789 - 11904: 0x8B68, - 13809 - 11904: 0x8DFD, - 13810 - 11904: 0x8BBE, - 13811 - 11904: 0x9FD9, - 13819 - 11904: 0x8AEB, - 13822 - 11904: 0x9FD7, - 13833 - 11904: 0x8B6A, - 13848 - 11904: 0x9C5C, - 13850 - 11904: 0x8BB1, - 13859 - 11904: 0xFB5E, - 13861 - 11904: 0x8770, - 13869 - 11904: 0x9DF3, - 13877 - 11904: 0xA0D0, - 13881 - 11904: 0xFC66, - 13886 - 11904: 0x92E9, - 13895 - 11904: 0x9AEC, - 13896 - 11904: 0x8FAB, - 13897 - 11904: 0xFA48, - 13902 - 11904: 0x8E45, - 13919 - 11904: 0x9C6F, - 13921 - 11904: 0x8D5C, - 13946 - 11904: 0x9EDE, - 13953 - 11904: 0x89EF, - 13978 - 11904: 0x96E9, - 13989 - 11904: 0x9EBB, - 13994 - 11904: 0x94DE, - 13996 - 11904: 0x9EB8, - 14000 - 11904: 0x97BA, - 14001 - 11904: 0xFB65, - 14005 - 11904: 0x95D6, - 14009 - 11904: 0x9CBB, - 14012 - 11904: 0x97DA, - 14017 - 11904: 0x8F45, - 14019 - 11904: 0xFB7D, - 14020 - 11904: 0x9158, - 14021 - 11904: 0xFE64, - 14023 - 11904: 0x9856, - 14024 - 11904: 0x9B4D, - 14035 - 11904: 0x935B, - 14036 - 11904: 0x95C7, - 14038 - 11904: 0x97E7, - 14045 - 11904: 0x9359, - 14049 - 11904: 0x91F5, - 14050 - 11904: 0x97B8, - 14053 - 11904: 0xFDA2, - 14054 - 11904: 0xFBB6, - 14069 - 11904: 0x92FA, - 14081 - 11904: 0x9357, - 14083 - 11904: 0x8BA6, - 14088 - 11904: 0xFBB9, - 14090 - 11904: 0x97B0, - 14093 - 11904: 0xFDC4, - 14108 - 11904: 0x9CA1, - 14114 - 11904: 0x91F2, - 14115 - 11904: 0x91F9, - 14117 - 11904: 0x8FF1, - 14124 - 11904: 0x9745, - 14125 - 11904: 0x9853, - 14128 - 11904: 0xFE78, - 14130 - 11904: 0xFBC1, - 14131 - 11904: 0x9251, - 14138 - 11904: 0x9DAD, - 14144 - 11904: 0xFD6C, - 14147 - 11904: 0xFA6B, - 14178 - 11904: 0x9BC2, - 14191 - 11904: 0x9A7B, - 14231 - 11904: 0x8B60, - 14240 - 11904: 0x934B, - 14265 - 11904: 0x9ABD, - 14270 - 11904: 0x91B7, - 14294 - 11904: 0x8D4B, - 14322 - 11904: 0x95B4, - 14328 - 11904: 0xFEC5, - 14331 - 11904: 0x9EF0, - 14351 - 11904: 0x8D64, - 14361 - 11904: 0x9269, - 14368 - 11904: 0x8D67, - 14381 - 11904: 0xFBEA, - 14390 - 11904: 0xFBEF, - 14392 - 11904: 0x8D68, - 14435 - 11904: 0x93EB, - 14453 - 11904: 0x877A, - 14496 - 11904: 0xFC42, - 14531 - 11904: 0x9166, - 14540 - 11904: 0xFACD, - 14545 - 11904: 0x93DD, - 14548 - 11904: 0x8D52, - 14586 - 11904: 0x8BCC, - 14600 - 11904: 0x8D6D, - 14612 - 11904: 0x8D6E, - 14631 - 11904: 0x96A8, - 14642 - 11904: 0xFCA6, - 14655 - 11904: 0x8D6F, - 14669 - 11904: 0x8D70, - 14691 - 11904: 0xFC64, - 14712 - 11904: 0x8CF3, - 14720 - 11904: 0x9060, - 14729 - 11904: 0x8D74, - 14730 - 11904: 0x97C3, - 14738 - 11904: 0x8AD0, - 14745 - 11904: 0x9274, - 14747 - 11904: 0x9BBE, - 14753 - 11904: 0x9CC8, - 14756 - 11904: 0x9CBA, - 14776 - 11904: 0x8D78, - 14812 - 11904: 0x9EB9, - 14818 - 11904: 0x955A, - 14821 - 11904: 0x91B4, - 14828 - 11904: 0x8A48, - 14840 - 11904: 0x8D7D, - 14843 - 11904: 0x8A7D, - 14846 - 11904: 0x8AC2, - 14849 - 11904: 0xFD4A, - 14851 - 11904: 0x8DA1, - 14854 - 11904: 0x8AD1, - 14871 - 11904: 0xFCB4, - 14872 - 11904: 0x8B47, - 14889 - 11904: 0x93A4, - 14890 - 11904: 0x9EDA, - 14900 - 11904: 0x8A51, - 14923 - 11904: 0x8DA6, - 14930 - 11904: 0x9EC5, - 14935 - 11904: 0xFCC4, - 14940 - 11904: 0xA078, - 14942 - 11904: 0x94B5, - 14950 - 11904: 0xFCC2, - 14951 - 11904: 0x8A6B, - 14999 - 11904: 0x8DAB, - 15019 - 11904: 0xFAE8, - 15037 - 11904: 0x8DAD, - 15070 - 11904: 0xFC49, - 15072 - 11904: 0x93C1, - 15088 - 11904: 0x906F, - 15090 - 11904: 0x8DB0, - 15093 - 11904: 0x87A2, - 15099 - 11904: 0x947E, - 15118 - 11904: 0x90FA, - 15129 - 11904: 0x9479, - 15138 - 11904: 0x8DB2, - 15147 - 11904: 0xFCEE, - 15161 - 11904: 0x997B, - 15170 - 11904: 0x8DB4, - 15192 - 11904: 0x8DB7, - 15200 - 11904: 0x91B3, - 15217 - 11904: 0x8DBB, - 15218 - 11904: 0x8DBA, - 15227 - 11904: 0x8DBC, - 15228 - 11904: 0x9044, - 15232 - 11904: 0xFD4C, - 15253 - 11904: 0x874B, - 15254 - 11904: 0x93E4, - 15257 - 11904: 0x93E0, - 15265 - 11904: 0xFD53, - 15292 - 11904: 0x8DC3, - 15294 - 11904: 0x9BB8, - 15298 - 11904: 0xFBF0, - 15300 - 11904: 0x93E9, - 15319 - 11904: 0x93F6, - 15325 - 11904: 0x8DC5, - 15340 - 11904: 0x8DCA, - 15346 - 11904: 0x8DCC, - 15347 - 11904: 0xFD5D, - 15348 - 11904: 0x93B5, - 15373 - 11904: 0xFD61, - 15377 - 11904: 0x9CF8, - 15381 - 11904: 0x9252, - 15384 - 11904: 0xA0E8, - 15444 - 11904: 0x9CA5, - 15499 - 11904: 0x8C56, - 15563 - 11904: 0x8DD6, - 15565 - 11904: 0x97C0, - 15569 - 11904: 0xA0DE, - 15574 - 11904: 0x97D2, - 15580 - 11904: 0xFAA5, - 15595 - 11904: 0xFDA3, - 15599 - 11904: 0x8DDB, - 15634 - 11904: 0x8CEA, - 15635 - 11904: 0x8EAF, - 15645 - 11904: 0x91B5, - 15666 - 11904: 0xFD49, - 15675 - 11904: 0xFDD1, - 15686 - 11904: 0x8DEB, - 15692 - 11904: 0x97C6, - 15694 - 11904: 0xFDCE, - 15697 - 11904: 0x90FC, - 15711 - 11904: 0xFC59, - 15714 - 11904: 0x96D6, - 15721 - 11904: 0x97C5, - 15722 - 11904: 0x8DEF, - 15727 - 11904: 0x97D7, - 15733 - 11904: 0x8DF0, - 15741 - 11904: 0x96A6, - 15749 - 11904: 0xFBBF, - 15752 - 11904: 0x8CDF, - 15754 - 11904: 0x8DF3, - 15759 - 11904: 0x9449, - 15761 - 11904: 0x8DF5, - 15781 - 11904: 0x9872, - 15789 - 11904: 0x8E6B, - 15796 - 11904: 0xFAFD, - 15807 - 11904: 0x8F50, - 15814 - 11904: 0x9DCC, - 15815 - 11904: 0xFC65, - 15817 - 11904: 0x8C44, - 15820 - 11904: 0x996E, - 15821 - 11904: 0x94A1, - 15827 - 11904: 0x8F63, - 15835 - 11904: 0xA0DA, - 15847 - 11904: 0x9253, - 15848 - 11904: 0xFDE9, - 15851 - 11904: 0x9DB5, - 15859 - 11904: 0x9879, - 15860 - 11904: 0x876A, - 15863 - 11904: 0x9D5D, - 15868 - 11904: 0x8D63, - 15869 - 11904: 0x9669, - 15878 - 11904: 0x9F70, - 15936 - 11904: 0xFC6A, - 15939 - 11904: 0x8AC7, - 15944 - 11904: 0x89D7, - 15957 - 11904: 0xFE4D, - 15988 - 11904: 0x9EDD, - 16040 - 11904: 0xFEFB, - 16041 - 11904: 0x98BC, - 16042 - 11904: 0xFACC, - 16045 - 11904: 0x95B0, - 16049 - 11904: 0x9464, - 16056 - 11904: 0x936F, - 16063 - 11904: 0x94B9, - 16066 - 11904: 0x95EC, - 16071 - 11904: 0x91EE, - 16074 - 11904: 0x98C3, - 16076 - 11904: 0x95F6, - 16080 - 11904: 0x8FFD, - 16081 - 11904: 0x98C5, - 16086 - 11904: 0x9766, - 16087 - 11904: 0xFE6E, - 16090 - 11904: 0x97DD, - 16091 - 11904: 0x8CAA, - 16094 - 11904: 0x92D2, - 16097 - 11904: 0x9761, - 16098 - 11904: 0x98CB, - 16103 - 11904: 0x95F0, - 16105 - 11904: 0x975D, - 16107 - 11904: 0x91E3, - 16108 - 11904: 0x877E, - 16112 - 11904: 0x98CC, - 16115 - 11904: 0x9469, - 16116 - 11904: 0x98CD, - 16122 - 11904: 0x98CE, - 16124 - 11904: 0x95FC, - 16127 - 11904: 0x94A3, - 16128 - 11904: 0x9662, - 16132 - 11904: 0xFEB6, - 16134 - 11904: 0x9463, - 16135 - 11904: 0x8D47, - 16142 - 11904: 0x98D0, - 16211 - 11904: 0x98D1, - 16216 - 11904: 0x9475, - 16217 - 11904: 0xFAE0, - 16227 - 11904: 0x9472, - 16252 - 11904: 0x98D6, - 16275 - 11904: 0x8AF0, - 16320 - 11904: 0x98D9, - 16328 - 11904: 0x8D5A, - 16343 - 11904: 0x98DB, - 16348 - 11904: 0x98DD, - 16357 - 11904: 0x98A8, - 16365 - 11904: 0x8A6D, - 16377 - 11904: 0x8AFB, - 16378 - 11904: 0x8AAE, - 16388 - 11904: 0xFBC9, - 16393 - 11904: 0x8C5D, - 16413 - 11904: 0x98E4, - 16441 - 11904: 0x98E6, - 16453 - 11904: 0x98E8, - 16467 - 11904: 0x8A4D, - 16471 - 11904: 0x9257, - 16482 - 11904: 0x95DF, - 16485 - 11904: 0xA0AC, - 16490 - 11904: 0x98EB, - 16495 - 11904: 0x98EC, - 16497 - 11904: 0x8CC3, - 16552 - 11904: 0x98F4, - 16564 - 11904: 0x87D9, - 16571 - 11904: 0x8AB8, - 16575 - 11904: 0x9EE7, - 16584 - 11904: 0x94BC, - 16600 - 11904: 0xFCD1, - 16607 - 11904: 0x9CC6, - 16632 - 11904: 0x8D4A, - 16634 - 11904: 0x9E7E, - 16642 - 11904: 0x8D44, - 16643 - 11904: 0x98FE, - 16644 - 11904: 0xFDE8, - 16649 - 11904: 0x9940, - 16654 - 11904: 0x94C9, - 16689 - 11904: 0x87C6, - 16690 - 11904: 0x94D3, - 16743 - 11904: 0x9946, - 16748 - 11904: 0x90C0, - 16750 - 11904: 0x94D1, - 16764 - 11904: 0x8D4E, - 16767 - 11904: 0x9573, - 16769 - 11904: 0x87CE, - 16784 - 11904: 0x93C2, - 16818 - 11904: 0x9948, - 16836 - 11904: 0x994B, - 16842 - 11904: 0x8E55, - 16847 - 11904: 0x994E, - 16859 - 11904: 0x8EFE, - 16877 - 11904: 0x8D5F, - 16879 - 11904: 0x8E59, - 16889 - 11904: 0x94EC, - 16913 - 11904: 0x94EF, - 16931 - 11904: 0x8C60, - 16960 - 11904: 0x8F74, - 16992 - 11904: 0x9955, - 17002 - 11904: 0x9544, - 17014 - 11904: 0x8CCB, - 17018 - 11904: 0x9956, - 17036 - 11904: 0x9959, - 17044 - 11904: 0x995B, - 17058 - 11904: 0x8CC4, - 17077 - 11904: 0xFA45, - 17081 - 11904: 0x90B7, - 17084 - 11904: 0x9743, - 17140 - 11904: 0x95CD, - 17147 - 11904: 0x97C9, - 17148 - 11904: 0xFD50, - 17162 - 11904: 0x87AA, - 17195 - 11904: 0x8EB9, - 17262 - 11904: 0x95C6, - 17303 - 11904: 0x9967, - 17306 - 11904: 0x8CE3, - 17338 - 11904: 0x8AB9, - 17345 - 11904: 0x8DFC, - 17369 - 11904: 0x8A76, - 17375 - 11904: 0x9D51, - 17389 - 11904: 0x9973, - 17392 - 11904: 0x8740, - 17394 - 11904: 0x9D4F, - 17409 - 11904: 0x997A, - 17410 - 11904: 0x9564, - 17427 - 11904: 0x99A1, - 17445 - 11904: 0x99A5, - 17453 - 11904: 0x99A7, - 17530 - 11904: 0x8EED, - 17551 - 11904: 0x99AD, - 17553 - 11904: 0xC87E, - 17567 - 11904: 0x946E, - 17568 - 11904: 0x8F70, - 17570 - 11904: 0xFAD0, - 17584 - 11904: 0x99B3, - 17591 - 11904: 0xA053, - 17597 - 11904: 0x8D5E, - 17600 - 11904: 0x965C, - 17603 - 11904: 0x8CE0, - 17605 - 11904: 0xFD7A, - 17614 - 11904: 0x97FE, - 17629 - 11904: 0x92BD, - 17630 - 11904: 0x8D5D, - 17631 - 11904: 0x97FD, - 17633 - 11904: 0x87DB, - 17636 - 11904: 0x8F64, - 17641 - 11904: 0xFCF7, - 17642 - 11904: 0x9562, - 17643 - 11904: 0x97CD, - 17644 - 11904: 0x9E64, - 17652 - 11904: 0x924C, - 17667 - 11904: 0x8EC9, - 17668 - 11904: 0x99BC, - 17673 - 11904: 0x9DA5, - 17675 - 11904: 0x8F54, - 17686 - 11904: 0x8F7C, - 17691 - 11904: 0x8D55, - 17693 - 11904: 0x8EA2, - 17703 - 11904: 0x8F7A, - 17710 - 11904: 0x97AE, - 17715 - 11904: 0x96C8, - 17718 - 11904: 0x8CE4, - 17723 - 11904: 0x99C3, - 17725 - 11904: 0x90D6, - 17727 - 11904: 0x9CBE, - 17731 - 11904: 0x8F76, - 17745 - 11904: 0x9470, - 17746 - 11904: 0xFB4B, - 17749 - 11904: 0xFDCA, - 17752 - 11904: 0x8CEF, - 17756 - 11904: 0x8EC7, - 17761 - 11904: 0x8D54, - 17762 - 11904: 0xA0F9, - 17770 - 11904: 0x8FA9, - 17773 - 11904: 0x8D51, - 17783 - 11904: 0x99C7, - 17784 - 11904: 0x8744, - 17797 - 11904: 0x90D7, - 17830 - 11904: 0x8743, - 17843 - 11904: 0x8747, - 17882 - 11904: 0x8758, - 17897 - 11904: 0x9EDF, - 17898 - 11904: 0x8D59, - 17923 - 11904: 0x8742, - 17926 - 11904: 0x99CE, - 17935 - 11904: 0x8FBA, - 17941 - 11904: 0x8FEB, - 17943 - 11904: 0x99CF, - 18011 - 11904: 0x8FC2, - 18042 - 11904: 0x92C9, - 18048 - 11904: 0x97DC, - 18081 - 11904: 0x875D, - 18094 - 11904: 0x87CC, - 18107 - 11904: 0x8D45, - 18127 - 11904: 0x95B3, - 18128 - 11904: 0x9C79, - 18165 - 11904: 0x95B2, - 18167 - 11904: 0x8D4C, - 18195 - 11904: 0x8FDB, - 18200 - 11904: 0x9BE3, - 18230 - 11904: 0x874C, - 18244 - 11904: 0x874D, - 18254 - 11904: 0x9E7A, - 18255 - 11904: 0x8757, - 18300 - 11904: 0x9BEE, - 18328 - 11904: 0x99DE, - 18342 - 11904: 0xFAFA, - 18389 - 11904: 0x8A52, - 18413 - 11904: 0x99E1, - 18420 - 11904: 0x8A67, - 18432 - 11904: 0x8BB5, - 18443 - 11904: 0x8AAC, - 18487 - 11904: 0x99E9, - 18525 - 11904: 0xFBCA, - 18545 - 11904: 0x97DE, - 18587 - 11904: 0x95D1, - 18605 - 11904: 0x99F5, - 18606 - 11904: 0xFC4A, - 18640 - 11904: 0x9BA9, - 18653 - 11904: 0xFBDC, - 18669 - 11904: 0xFE56, - 18675 - 11904: 0x9EA4, - 18682 - 11904: 0x9D49, - 18694 - 11904: 0x95DB, - 18705 - 11904: 0x89C5, - 18718 - 11904: 0x99F8, - 18725 - 11904: 0x9664, - 18730 - 11904: 0x9055, - 18733 - 11904: 0x96D4, - 18735 - 11904: 0x87C4, - 18736 - 11904: 0x87AE, - 18741 - 11904: 0x977C, - 18748 - 11904: 0x964D, - 18750 - 11904: 0x97E1, - 18757 - 11904: 0x9A48, - 18769 - 11904: 0x9A49, - 18771 - 11904: 0xFE7D, - 18789 - 11904: 0x90AA, - 18794 - 11904: 0x9A50, - 18802 - 11904: 0x9347, - 18825 - 11904: 0x8ED8, - 18849 - 11904: 0x90C9, - 18855 - 11904: 0x9A55, - 18911 - 11904: 0x90BC, - 18917 - 11904: 0x9A58, - 18919 - 11904: 0x8BB8, - 18959 - 11904: 0x90D5, - 18973 - 11904: 0x9641, - 18980 - 11904: 0x9A5A, - 18997 - 11904: 0x9A5C, - 19094 - 11904: 0x97C2, - 19108 - 11904: 0x875C, - 19124 - 11904: 0x8ABB, - 19128 - 11904: 0x9BAA, - 19153 - 11904: 0x90F5, - 19172 - 11904: 0x9A60, - 19199 - 11904: 0x9145, - 19216 - 11904: 0x8C58, - 19225 - 11904: 0x9A63, - 19232 - 11904: 0x8C49, - 19244 - 11904: 0x8BB6, - 19255 - 11904: 0xFCCF, - 19311 - 11904: 0x966B, - 19312 - 11904: 0x9A6E, - 19314 - 11904: 0x914F, - 19323 - 11904: 0x9746, - 19326 - 11904: 0xA0E6, - 19342 - 11904: 0x92D7, - 19344 - 11904: 0x9675, - 19347 - 11904: 0x93D4, - 19350 - 11904: 0x91BB, - 19351 - 11904: 0x9679, - 19357 - 11904: 0x9A70, - 19389 - 11904: 0x9678, - 19390 - 11904: 0x91CD, - 19392 - 11904: 0x9C4A, - 19460 - 11904: 0xA06F, - 19463 - 11904: 0xA06A, - 19470 - 11904: 0x915F, - 19506 - 11904: 0x8741, - 19515 - 11904: 0x9FA5, - 19518 - 11904: 0x89BA, - 19520 - 11904: 0x874F, - 19527 - 11904: 0x874E, - 19543 - 11904: 0x8755, - 19547 - 11904: 0x9ECD, - 19565 - 11904: 0x9A79, - 19575 - 11904: 0x8CF2, - 19579 - 11904: 0x8D57, - 19581 - 11904: 0x9DCE, - 19585 - 11904: 0x8CD2, - 19589 - 11904: 0x8759, - 19620 - 11904: 0x9D73, - 19630 - 11904: 0x96B9, - 19632 - 11904: 0x96BC, - 19639 - 11904: 0x9CD1, - 19661 - 11904: 0x89B7, - 19681 - 11904: 0x9EEE, - 19682 - 11904: 0x8749, - 19693 - 11904: 0xFB43, - 19719 - 11904: 0x875B, - 19721 - 11904: 0x9EC9, - 19728 - 11904: 0xFBD3, - 19764 - 11904: 0x91AE, - 19830 - 11904: 0x8D58, - 19831 - 11904: 0x8746, - 19849 - 11904: 0x8D56, - 19857 - 11904: 0x9D78, - 19868 - 11904: 0x9D7B, - 19968 - 11904: 0xA440, - 19969 - 11904: 0xA442, - 19971 - 11904: 0xA443, - 19972 - 11904: 0x9EB3, - 19975 - 11904: 0xC945, - 19976 - 11904: 0xA456, - 19977 - 11904: 0xA454, - 19978 - 11904: 0xA457, - 19979 - 11904: 0xA455, - 19980 - 11904: 0xC946, - 19981 - 11904: 0xA4A3, - 19982 - 11904: 0xC94F, - 19983 - 11904: 0xC94D, - 19984 - 11904: 0xA4A2, - 19985 - 11904: 0xA4A1, - 19988 - 11904: 0xA542, - 19989 - 11904: 0xA541, - 19990 - 11904: 0xA540, - 19992 - 11904: 0xA543, - 19993 - 11904: 0xA4FE, - 19994 - 11904: 0x9EB2, - 19996 - 11904: 0x9DD6, - 19998 - 11904: 0xA5E0, - 19999 - 11904: 0xA5E1, - 20001 - 11904: 0x994F, - 20004 - 11904: 0x89CE, - 20006 - 11904: 0xA8C3, - 20008 - 11904: 0x8BC0, - 20010 - 11904: 0x9FC4, - 20011 - 11904: 0xA458, - 20012 - 11904: 0x8BD4, - 20013 - 11904: 0xA4A4, - 20014 - 11904: 0xC950, - 20015 - 11904: 0x8C72, - 20016 - 11904: 0xA4A5, - 20017 - 11904: 0xC963, - 20018 - 11904: 0xA6EA, - 20019 - 11904: 0xCBB1, - 20022 - 11904: 0xC6BF, - 20023 - 11904: 0x8BF9, - 20024 - 11904: 0xA459, - 20025 - 11904: 0xA4A6, - 20027 - 11904: 0xA544, - 20028 - 11904: 0xC964, - 20029 - 11904: 0x8946, - 20031 - 11904: 0xC6C0, - 20034 - 11904: 0xC940, - 20035 - 11904: 0xA444, - 20037 - 11904: 0xA45B, - 20039 - 11904: 0xC947, - 20040 - 11904: 0xA45C, - 20041 - 11904: 0xFAE5, - 20043 - 11904: 0xA4A7, - 20045 - 11904: 0xA545, - 20046 - 11904: 0xA547, - 20047 - 11904: 0xA546, - 20050 - 11904: 0xA5E2, - 20051 - 11904: 0xA5E3, - 20054 - 11904: 0xA8C4, - 20056 - 11904: 0xADBC, - 20057 - 11904: 0xA441, - 20058 - 11904: 0xC87B, - 20059 - 11904: 0x8BC6, - 20060 - 11904: 0xC941, - 20061 - 11904: 0xA445, - 20062 - 11904: 0xA45E, - 20063 - 11904: 0xA45D, - 20073 - 11904: 0xA5E4, - 20074 - 11904: 0x9C57, - 20083 - 11904: 0xA8C5, - 20088 - 11904: 0x9AFB, - 20094 - 11904: 0xB0AE, - 20095 - 11904: 0xD44B, - 20096 - 11904: 0x89D0, - 20097 - 11904: 0x89CF, - 20098 - 11904: 0xB6C3, - 20099 - 11904: 0xDCB1, - 20100 - 11904: 0xDCB2, - 20101 - 11904: 0xC6C1, - 20102 - 11904: 0xA446, - 20103 - 11904: 0x89D1, - 20104 - 11904: 0xA4A9, - 20105 - 11904: 0x89E2, - 20107 - 11904: 0xA8C6, - 20108 - 11904: 0xA447, - 20109 - 11904: 0xC948, - 20110 - 11904: 0xA45F, - 20113 - 11904: 0xA4AA, - 20114 - 11904: 0xA4AC, - 20115 - 11904: 0xC951, - 20116 - 11904: 0xA4AD, - 20117 - 11904: 0xA4AB, - 20120 - 11904: 0x927E, - 20121 - 11904: 0xA5E5, - 20122 - 11904: 0x9DBA, - 20123 - 11904: 0xA8C7, - 20126 - 11904: 0xA8C8, - 20127 - 11904: 0xAB45, - 20128 - 11904: 0xC6C2, - 20129 - 11904: 0xA460, - 20130 - 11904: 0xA4AE, - 20131 - 11904: 0x8C6F, - 20132 - 11904: 0xA5E6, - 20133 - 11904: 0xA5E8, - 20134 - 11904: 0xA5E7, - 20136 - 11904: 0xA6EB, - 20139 - 11904: 0xA8C9, - 20140 - 11904: 0xA8CA, - 20141 - 11904: 0xAB46, - 20142 - 11904: 0xAB47, - 20147 - 11904: 0xADBD, - 20150 - 11904: 0xDCB3, - 20151 - 11904: 0xFBF8, - 20153 - 11904: 0xF6D6, - 20154 - 11904: 0xA448, - 20155 - 11904: 0x8BC7, - 20156 - 11904: 0x926B, - 20159 - 11904: 0x89D2, - 20160 - 11904: 0xA4B0, - 20161 - 11904: 0xA4AF, - 20162 - 11904: 0xC952, - 20163 - 11904: 0xA4B1, - 20164 - 11904: 0xA4B7, - 20166 - 11904: 0xA4B2, - 20167 - 11904: 0xA4B3, - 20168 - 11904: 0xC954, - 20169 - 11904: 0xC953, - 20170 - 11904: 0xA4B5, - 20171 - 11904: 0xA4B6, - 20173 - 11904: 0xA4B4, - 20174 - 11904: 0x9FCF, - 20180 - 11904: 0xA54A, - 20181 - 11904: 0xA54B, - 20182 - 11904: 0xA54C, - 20183 - 11904: 0xA54D, - 20184 - 11904: 0xA549, - 20185 - 11904: 0xA550, - 20186 - 11904: 0xC96A, - 20188 - 11904: 0xC966, - 20189 - 11904: 0xC969, - 20190 - 11904: 0xA551, - 20191 - 11904: 0xA561, - 20193 - 11904: 0xC968, - 20195 - 11904: 0xA54E, - 20196 - 11904: 0xA54F, - 20197 - 11904: 0xA548, - 20200 - 11904: 0xC965, - 20201 - 11904: 0xC967, - 20202 - 11904: 0x9DA9, - 20203 - 11904: 0x89D3, - 20206 - 11904: 0x99E2, - 20208 - 11904: 0xA5F5, - 20209 - 11904: 0xC9B0, - 20210 - 11904: 0xA5F2, - 20211 - 11904: 0xA5F6, - 20212 - 11904: 0xC9BA, - 20213 - 11904: 0xC9AE, - 20214 - 11904: 0xA5F3, - 20215 - 11904: 0xC9B2, - 20216 - 11904: 0x9267, - 20219 - 11904: 0xA5F4, - 20221 - 11904: 0xA5F7, - 20223 - 11904: 0xA5E9, - 20224 - 11904: 0xC9B1, - 20225 - 11904: 0xA5F8, - 20226 - 11904: 0xC9B5, - 20227 - 11904: 0x92A4, - 20228 - 11904: 0xC9B9, - 20229 - 11904: 0xC9B6, - 20232 - 11904: 0xC9B3, - 20233 - 11904: 0xA5EA, - 20234 - 11904: 0xA5EC, - 20235 - 11904: 0xA5F9, - 20237 - 11904: 0xA5EE, - 20238 - 11904: 0xC9AB, - 20239 - 11904: 0xA5F1, - 20240 - 11904: 0xA5EF, - 20241 - 11904: 0xA5F0, - 20242 - 11904: 0xC9BB, - 20243 - 11904: 0xC9B8, - 20244 - 11904: 0xC9AF, - 20245 - 11904: 0xA5ED, - 20247 - 11904: 0x8C73, - 20248 - 11904: 0xC9AC, - 20249 - 11904: 0xA5EB, - 20250 - 11904: 0x894E, - 20253 - 11904: 0xC9B4, - 20258 - 11904: 0xC9B7, - 20264 - 11904: 0x894F, - 20265 - 11904: 0x9278, - 20268 - 11904: 0xC9AD, - 20269 - 11904: 0xCA66, - 20271 - 11904: 0xA742, - 20272 - 11904: 0xA6F4, - 20274 - 11904: 0x91B6, - 20275 - 11904: 0xCA67, - 20276 - 11904: 0xA6F1, - 20278 - 11904: 0xA744, - 20279 - 11904: 0x89D4, - 20280 - 11904: 0xA6F9, - 20281 - 11904: 0x9FD2, - 20282 - 11904: 0xA6F8, - 20283 - 11904: 0xCA5B, - 20284 - 11904: 0xA6FC, - 20285 - 11904: 0xA6F7, - 20286 - 11904: 0xCA60, - 20287 - 11904: 0xCA68, - 20289 - 11904: 0xCA64, - 20290 - 11904: 0x92A7, - 20291 - 11904: 0xA6FA, - 20293 - 11904: 0x95A2, - 20294 - 11904: 0xA6FD, - 20295 - 11904: 0xA6EE, - 20296 - 11904: 0xA747, - 20297 - 11904: 0xCA5D, - 20299 - 11904: 0x926E, - 20300 - 11904: 0xCBBD, - 20301 - 11904: 0xA6EC, - 20302 - 11904: 0xA743, - 20303 - 11904: 0xA6ED, - 20304 - 11904: 0xA6F5, - 20305 - 11904: 0xA6F6, - 20306 - 11904: 0xCA62, - 20307 - 11904: 0xCA5E, - 20308 - 11904: 0xA6FB, - 20309 - 11904: 0xA6F3, - 20310 - 11904: 0xCA5A, - 20311 - 11904: 0xA6EF, - 20312 - 11904: 0xCA65, - 20313 - 11904: 0xA745, - 20314 - 11904: 0xA748, - 20315 - 11904: 0xA6F2, - 20316 - 11904: 0xA740, - 20317 - 11904: 0xA746, - 20318 - 11904: 0xA6F0, - 20319 - 11904: 0xCA63, - 20320 - 11904: 0xA741, - 20321 - 11904: 0xCA69, - 20322 - 11904: 0xCA5C, - 20323 - 11904: 0xA6FE, - 20324 - 11904: 0xCA5F, - 20327 - 11904: 0xCA61, - 20329 - 11904: 0xA8D8, - 20330 - 11904: 0xCBBF, - 20331 - 11904: 0xCBCB, - 20332 - 11904: 0xA8D0, - 20334 - 11904: 0xCBCC, - 20335 - 11904: 0xA8CB, - 20336 - 11904: 0xA8D5, - 20338 - 11904: 0x96EA, - 20339 - 11904: 0xA8CE, - 20340 - 11904: 0xCBB9, - 20341 - 11904: 0xA8D6, - 20342 - 11904: 0xCBB8, - 20343 - 11904: 0xCBBC, - 20344 - 11904: 0xCBC3, - 20345 - 11904: 0xCBC1, - 20346 - 11904: 0xA8DE, - 20347 - 11904: 0xA8D9, - 20348 - 11904: 0xCBB3, - 20349 - 11904: 0xCBB5, - 20350 - 11904: 0xA8DB, - 20351 - 11904: 0xA8CF, - 20352 - 11904: 0xCBB6, - 20353 - 11904: 0xCBC2, - 20354 - 11904: 0xCBC9, - 20355 - 11904: 0xA8D4, - 20356 - 11904: 0xCBBB, - 20357 - 11904: 0xCBB4, - 20358 - 11904: 0xA8D3, - 20359 - 11904: 0xCBB7, - 20360 - 11904: 0xA8D7, - 20361 - 11904: 0xCBBA, - 20362 - 11904: 0x926F, - 20363 - 11904: 0xA8D2, - 20365 - 11904: 0xA8CD, - 20367 - 11904: 0xA8DC, - 20368 - 11904: 0xCBC4, - 20369 - 11904: 0xA8DD, - 20370 - 11904: 0xCBC8, - 20372 - 11904: 0xCBC6, - 20373 - 11904: 0xCBCA, - 20374 - 11904: 0xA8DA, - 20375 - 11904: 0xCBBE, - 20376 - 11904: 0xCBB2, - 20378 - 11904: 0xCBC0, - 20379 - 11904: 0xA8D1, - 20380 - 11904: 0xCBC5, - 20381 - 11904: 0xA8CC, - 20382 - 11904: 0xCBC7, - 20386 - 11904: 0x92A3, - 20392 - 11904: 0x8950, - 20395 - 11904: 0xFA57, - 20398 - 11904: 0xAB56, - 20399 - 11904: 0xAB4A, - 20400 - 11904: 0x9866, - 20402 - 11904: 0xCDE0, - 20403 - 11904: 0xCDE8, - 20404 - 11904: 0x8CF8, - 20405 - 11904: 0xAB49, - 20406 - 11904: 0xAB51, - 20407 - 11904: 0xAB5D, - 20409 - 11904: 0xCDEE, - 20410 - 11904: 0xCDEC, - 20411 - 11904: 0xCDE7, - 20413 - 11904: 0x89D6, - 20415 - 11904: 0xAB4B, - 20416 - 11904: 0xCDED, - 20417 - 11904: 0xCDE3, - 20418 - 11904: 0xAB59, - 20419 - 11904: 0xAB50, - 20420 - 11904: 0xAB58, - 20421 - 11904: 0xCDDE, - 20423 - 11904: 0xCDEA, - 20424 - 11904: 0x98B2, - 20425 - 11904: 0xCDE1, - 20426 - 11904: 0xAB54, - 20427 - 11904: 0xCDE2, - 20428 - 11904: 0x92AB, - 20429 - 11904: 0xCDDD, - 20430 - 11904: 0xAB5B, - 20431 - 11904: 0xAB4E, - 20432 - 11904: 0xAB57, - 20433 - 11904: 0xAB4D, - 20435 - 11904: 0xCDDF, - 20436 - 11904: 0xCDE4, - 20438 - 11904: 0xCDEB, - 20439 - 11904: 0xAB55, - 20440 - 11904: 0xAB52, - 20441 - 11904: 0xCDE6, - 20442 - 11904: 0xAB5A, - 20443 - 11904: 0xCDE9, - 20444 - 11904: 0xCDE5, - 20445 - 11904: 0xAB4F, - 20446 - 11904: 0xAB5C, - 20447 - 11904: 0xAB53, - 20448 - 11904: 0xAB4C, - 20449 - 11904: 0xAB48, - 20452 - 11904: 0x96DE, - 20453 - 11904: 0x92AC, - 20460 - 11904: 0xCDEF, - 20462 - 11904: 0xADD7, - 20463 - 11904: 0xADC1, - 20464 - 11904: 0x8C70, - 20465 - 11904: 0xADD1, - 20466 - 11904: 0x9F6E, - 20467 - 11904: 0xADD6, - 20468 - 11904: 0xD0D0, - 20469 - 11904: 0xD0CF, - 20470 - 11904: 0xD0D4, - 20471 - 11904: 0xD0D5, - 20472 - 11904: 0xADC4, - 20473 - 11904: 0x8EF2, - 20474 - 11904: 0xADCD, - 20477 - 11904: 0x9F6C, - 20478 - 11904: 0xADDA, - 20480 - 11904: 0xADCE, - 20483 - 11904: 0x89D8, - 20485 - 11904: 0xD0C9, - 20486 - 11904: 0xADC7, - 20487 - 11904: 0xD0CA, - 20488 - 11904: 0xFA59, - 20489 - 11904: 0xADDC, - 20491 - 11904: 0xADD3, - 20492 - 11904: 0xADBE, - 20493 - 11904: 0xADBF, - 20494 - 11904: 0xD0DD, - 20495 - 11904: 0xB0BF, - 20497 - 11904: 0xADCC, - 20498 - 11904: 0xADCB, - 20499 - 11904: 0xD0CB, - 20500 - 11904: 0xADCF, - 20501 - 11904: 0xD45B, - 20502 - 11904: 0xADC6, - 20503 - 11904: 0xD0D6, - 20504 - 11904: 0xADD5, - 20505 - 11904: 0xADD4, - 20506 - 11904: 0xADCA, - 20507 - 11904: 0xD0CE, - 20508 - 11904: 0xD0D7, - 20510 - 11904: 0xD0C8, - 20511 - 11904: 0xADC9, - 20512 - 11904: 0xD0D8, - 20513 - 11904: 0xADD2, - 20514 - 11904: 0xD0CC, - 20515 - 11904: 0xADC0, - 20517 - 11904: 0xADC3, - 20518 - 11904: 0xADC2, - 20519 - 11904: 0xD0D9, - 20520 - 11904: 0xADD0, - 20521 - 11904: 0xFA5F, - 20522 - 11904: 0xADD9, - 20523 - 11904: 0xADDB, - 20524 - 11904: 0xD0D3, - 20525 - 11904: 0xADD8, - 20526 - 11904: 0x92A8, - 20527 - 11904: 0xD0DB, - 20528 - 11904: 0xD0CD, - 20529 - 11904: 0xD0DC, - 20531 - 11904: 0xD0D1, - 20532 - 11904: 0x9163, - 20533 - 11904: 0xD0DA, - 20535 - 11904: 0xD0D2, - 20539 - 11904: 0x8C40, - 20540 - 11904: 0xADC8, - 20544 - 11904: 0xD463, - 20545 - 11904: 0xD457, - 20547 - 11904: 0xB0B3, - 20549 - 11904: 0xD45C, - 20550 - 11904: 0xD462, - 20551 - 11904: 0xB0B2, - 20552 - 11904: 0xD455, - 20553 - 11904: 0xB0B6, - 20554 - 11904: 0xD459, - 20555 - 11904: 0xD452, - 20556 - 11904: 0xB0B4, - 20557 - 11904: 0xD456, - 20558 - 11904: 0xB0B9, - 20559 - 11904: 0xB0BE, - 20561 - 11904: 0xD467, - 20563 - 11904: 0xD451, - 20565 - 11904: 0xB0BA, - 20566 - 11904: 0x9F73, - 20567 - 11904: 0xD466, - 20568 - 11904: 0x92AD, - 20570 - 11904: 0xB0B5, - 20571 - 11904: 0xD458, - 20572 - 11904: 0xB0B1, - 20573 - 11904: 0xD453, - 20574 - 11904: 0xD44F, - 20575 - 11904: 0xD45D, - 20576 - 11904: 0xD450, - 20577 - 11904: 0xD44E, - 20578 - 11904: 0xD45A, - 20579 - 11904: 0xD460, - 20580 - 11904: 0xD461, - 20581 - 11904: 0xB0B7, - 20582 - 11904: 0x9BE9, - 20584 - 11904: 0xD85B, - 20585 - 11904: 0xD45E, - 20586 - 11904: 0xD44D, - 20587 - 11904: 0xD45F, - 20588 - 11904: 0x92A9, - 20589 - 11904: 0xB0C1, - 20590 - 11904: 0xD464, - 20591 - 11904: 0xB0C0, - 20592 - 11904: 0xD44C, - 20594 - 11904: 0xD454, - 20595 - 11904: 0xD465, - 20596 - 11904: 0xB0BC, - 20597 - 11904: 0xB0BB, - 20598 - 11904: 0xB0B8, - 20599 - 11904: 0xB0BD, - 20602 - 11904: 0xB0AF, - 20605 - 11904: 0xFA66, - 20608 - 11904: 0xB3C8, - 20609 - 11904: 0x92AA, - 20610 - 11904: 0xD85E, - 20611 - 11904: 0xD857, - 20613 - 11904: 0xB3C5, - 20615 - 11904: 0xD85F, - 20616 - 11904: 0x89D9, - 20619 - 11904: 0xD855, - 20620 - 11904: 0xD858, - 20621 - 11904: 0xB3C4, - 20622 - 11904: 0xD859, - 20624 - 11904: 0xFD56, - 20625 - 11904: 0xB3C7, - 20626 - 11904: 0xD85D, - 20628 - 11904: 0xD853, - 20629 - 11904: 0xD852, - 20630 - 11904: 0xB3C9, - 20632 - 11904: 0xB3CA, - 20633 - 11904: 0xB3C6, - 20634 - 11904: 0xB3CB, - 20635 - 11904: 0xD851, - 20636 - 11904: 0xD85C, - 20637 - 11904: 0xD85A, - 20638 - 11904: 0xD854, - 20642 - 11904: 0xB3C3, - 20643 - 11904: 0xD856, - 20646 - 11904: 0x9FA8, - 20652 - 11904: 0xB6CA, - 20653 - 11904: 0xB6C4, - 20654 - 11904: 0xDCB7, - 20655 - 11904: 0xB6CD, - 20656 - 11904: 0xDCBD, - 20657 - 11904: 0xDCC0, - 20658 - 11904: 0xB6C6, - 20659 - 11904: 0xB6C7, - 20660 - 11904: 0xDCBA, - 20661 - 11904: 0xB6C5, - 20662 - 11904: 0xDCC3, - 20663 - 11904: 0xB6CB, - 20664 - 11904: 0xDCC4, - 20666 - 11904: 0xDCBF, - 20667 - 11904: 0xB6CC, - 20668 - 11904: 0x8C71, - 20669 - 11904: 0xDCB4, - 20670 - 11904: 0xB6C9, - 20671 - 11904: 0xDCB5, - 20673 - 11904: 0xDCBE, - 20674 - 11904: 0xDCBC, - 20676 - 11904: 0xDCB8, - 20677 - 11904: 0xB6C8, - 20678 - 11904: 0xDCB6, - 20679 - 11904: 0xB6CE, - 20680 - 11904: 0xDCBB, - 20681 - 11904: 0xDCC2, - 20682 - 11904: 0xDCB9, - 20683 - 11904: 0xDCC1, - 20685 - 11904: 0x92A1, - 20686 - 11904: 0xB9B6, - 20687 - 11904: 0xB9B3, - 20688 - 11904: 0x90E3, - 20689 - 11904: 0xB9B4, - 20691 - 11904: 0xE0F9, - 20692 - 11904: 0xE0F1, - 20693 - 11904: 0xB9B2, - 20694 - 11904: 0xB9AF, - 20695 - 11904: 0xE0F2, - 20697 - 11904: 0xA0A6, - 20698 - 11904: 0xB9B1, - 20699 - 11904: 0xE0F5, - 20701 - 11904: 0xE0F7, - 20703 - 11904: 0x94AB, - 20704 - 11904: 0xE0FE, - 20705 - 11904: 0xFC72, - 20707 - 11904: 0xE0FD, - 20708 - 11904: 0xE0F8, - 20709 - 11904: 0xB9AE, - 20710 - 11904: 0xE0F0, - 20711 - 11904: 0xB9AC, - 20712 - 11904: 0xE0F3, - 20713 - 11904: 0xB9B7, - 20714 - 11904: 0xE0F6, - 20716 - 11904: 0xE0FA, - 20717 - 11904: 0xB9B0, - 20718 - 11904: 0xB9AD, - 20719 - 11904: 0xE0FC, - 20720 - 11904: 0xE0FB, - 20721 - 11904: 0xB9B5, - 20723 - 11904: 0xE0F4, - 20724 - 11904: 0x97C4, - 20725 - 11904: 0xBBF8, - 20726 - 11904: 0xE4EC, - 20728 - 11904: 0xE4E9, - 20729 - 11904: 0xBBF9, - 20731 - 11904: 0xBBF7, - 20732 - 11904: 0x92AE, - 20733 - 11904: 0xE4F0, - 20734 - 11904: 0xE4ED, - 20735 - 11904: 0xE4E6, - 20736 - 11904: 0xBBF6, - 20737 - 11904: 0xFA67, - 20738 - 11904: 0xBBFA, - 20739 - 11904: 0xE4E7, - 20740 - 11904: 0xBBF5, - 20741 - 11904: 0xBBFD, - 20742 - 11904: 0xE4EA, - 20743 - 11904: 0xE4EB, - 20744 - 11904: 0xBBFB, - 20745 - 11904: 0xBBFC, - 20746 - 11904: 0xE4F1, - 20747 - 11904: 0xE4EE, - 20748 - 11904: 0xE4EF, - 20749 - 11904: 0x92A2, - 20750 - 11904: 0xFA69, - 20752 - 11904: 0xBEAA, - 20753 - 11904: 0xE8F8, - 20754 - 11904: 0xBEA7, - 20755 - 11904: 0xE8F5, - 20756 - 11904: 0xBEA9, - 20757 - 11904: 0xBEAB, - 20759 - 11904: 0xE8F6, - 20760 - 11904: 0xBEA8, - 20762 - 11904: 0xE8F7, - 20764 - 11904: 0xE8F4, - 20767 - 11904: 0xC076, - 20768 - 11904: 0xECBD, - 20769 - 11904: 0xC077, - 20770 - 11904: 0xECBB, - 20772 - 11904: 0xECBC, - 20773 - 11904: 0xECBA, - 20774 - 11904: 0xECB9, - 20777 - 11904: 0xECBE, - 20778 - 11904: 0xC075, - 20779 - 11904: 0x9268, - 20781 - 11904: 0xEFB8, - 20782 - 11904: 0xEFB9, - 20784 - 11904: 0xE4E8, - 20785 - 11904: 0xEFB7, - 20786 - 11904: 0xC078, - 20787 - 11904: 0xC35F, - 20788 - 11904: 0xF1EB, - 20789 - 11904: 0xF1EC, - 20791 - 11904: 0xC4D7, - 20792 - 11904: 0xC4D8, - 20793 - 11904: 0xF5C1, - 20794 - 11904: 0xF5C0, - 20795 - 11904: 0xC56C, - 20796 - 11904: 0xC56B, - 20797 - 11904: 0xF7D0, - 20799 - 11904: 0xA449, - 20800 - 11904: 0xA461, - 20801 - 11904: 0xA4B9, - 20803 - 11904: 0xA4B8, - 20804 - 11904: 0xA553, - 20805 - 11904: 0xA552, - 20806 - 11904: 0xA5FC, - 20807 - 11904: 0xA5FB, - 20808 - 11904: 0xA5FD, - 20809 - 11904: 0xA5FA, - 20811 - 11904: 0xA74A, - 20812 - 11904: 0xA749, - 20813 - 11904: 0xA74B, - 20818 - 11904: 0xA8E0, - 20820 - 11904: 0xA8DF, - 20821 - 11904: 0xA8E1, - 20822 - 11904: 0x8951, - 20823 - 11904: 0xAB5E, - 20825 - 11904: 0xA259, - 20826 - 11904: 0xD0DE, - 20827 - 11904: 0xA25A, - 20828 - 11904: 0xB0C2, - 20829 - 11904: 0xA25C, - 20830 - 11904: 0xA25B, - 20831 - 11904: 0xD860, - 20832 - 11904: 0xFA6F, - 20833 - 11904: 0xA25D, - 20834 - 11904: 0xB9B8, - 20835 - 11904: 0xA25E, - 20837 - 11904: 0xA44A, - 20839 - 11904: 0xA4BA, - 20840 - 11904: 0xA5FE, - 20841 - 11904: 0xA8E2, - 20842 - 11904: 0xFA71, - 20843 - 11904: 0xA44B, - 20844 - 11904: 0xA4BD, - 20845 - 11904: 0xA4BB, - 20846 - 11904: 0xA4BC, - 20849 - 11904: 0xA640, - 20852 - 11904: 0x8952, - 20853 - 11904: 0xA74C, - 20854 - 11904: 0xA8E4, - 20855 - 11904: 0xA8E3, - 20856 - 11904: 0xA8E5, - 20857 - 11904: 0x945A, - 20860 - 11904: 0xADDD, - 20864 - 11904: 0xBEAC, - 20866 - 11904: 0xC6C3, - 20870 - 11904: 0x89DD, - 20871 - 11904: 0xC94E, - 20872 - 11904: 0xC8A2, - 20873 - 11904: 0xA554, - 20874 - 11904: 0xA555, - 20877 - 11904: 0xA641, - 20879 - 11904: 0xCA6A, - 20881 - 11904: 0xAB60, - 20882 - 11904: 0xAB5F, - 20883 - 11904: 0xD0E0, - 20884 - 11904: 0xD0DF, - 20885 - 11904: 0xB0C3, - 20886 - 11904: 0xC6C4, - 20887 - 11904: 0xA4BE, - 20888 - 11904: 0xC955, - 20890 - 11904: 0x9E52, - 20892 - 11904: 0x8953, - 20894 - 11904: 0xCBCD, - 20896 - 11904: 0xAB61, - 20898 - 11904: 0xADE0, - 20900 - 11904: 0xADDE, - 20901 - 11904: 0xADDF, - 20903 - 11904: 0x9E55, - 20904 - 11904: 0x92BA, - 20906 - 11904: 0xBEAD, - 20907 - 11904: 0xC6C5, - 20908 - 11904: 0xA556, - 20910 - 11904: 0x8C5B, - 20912 - 11904: 0xA642, - 20913 - 11904: 0xC9BC, - 20914 - 11904: 0xFA7D, - 20915 - 11904: 0xFAA8, - 20916 - 11904: 0x9A68, - 20917 - 11904: 0xFA47, - 20918 - 11904: 0xA74D, - 20919 - 11904: 0xA74E, - 20920 - 11904: 0xFA7E, - 20921 - 11904: 0xCA6B, - 20924 - 11904: 0xCBCE, - 20925 - 11904: 0xA8E6, - 20926 - 11904: 0xCBCF, - 20931 - 11904: 0x92BB, - 20932 - 11904: 0xD0E2, - 20933 - 11904: 0xD0E3, - 20934 - 11904: 0xADE3, - 20935 - 11904: 0xFDB6, - 20936 - 11904: 0xD0E4, - 20937 - 11904: 0xFAA2, - 20938 - 11904: 0xD0E1, - 20939 - 11904: 0xADE4, - 20940 - 11904: 0xADE2, - 20941 - 11904: 0xADE1, - 20942 - 11904: 0xD0E5, - 20943 - 11904: 0xFAA3, - 20944 - 11904: 0xD468, - 20945 - 11904: 0xFAA4, - 20946 - 11904: 0x9BB4, - 20947 - 11904: 0xFAA6, - 20948 - 11904: 0xD861, - 20951 - 11904: 0xDCC5, - 20952 - 11904: 0xE140, - 20955 - 11904: 0x89DF, - 20956 - 11904: 0xBBFE, - 20957 - 11904: 0xBEAE, - 20958 - 11904: 0xE8F9, - 20959 - 11904: 0xFDDB, - 20960 - 11904: 0xA44C, - 20961 - 11904: 0xA45A, - 20962 - 11904: 0xFAA9, - 20964 - 11904: 0x8954, - 20973 - 11904: 0xFAAB, - 20976 - 11904: 0xB0C4, - 20977 - 11904: 0xB3CD, - 20979 - 11904: 0xB9B9, - 20980 - 11904: 0xFC7A, - 20981 - 11904: 0xC942, - 20982 - 11904: 0xA4BF, - 20984 - 11904: 0xA559, - 20985 - 11904: 0xA557, - 20986 - 11904: 0xA558, - 20988 - 11904: 0x89E0, - 20989 - 11904: 0xA8E7, - 20990 - 11904: 0x9F4F, - 20992 - 11904: 0xA44D, - 20993 - 11904: 0xA44E, - 20994 - 11904: 0xC87D, - 20995 - 11904: 0xA462, - 20997 - 11904: 0x89E1, - 20998 - 11904: 0xA4C0, - 20999 - 11904: 0xA4C1, - 21000 - 11904: 0xA4C2, - 21001 - 11904: 0xC9BE, - 21002 - 11904: 0xA55A, - 21003 - 11904: 0xFAB0, - 21004 - 11904: 0xC96B, - 21006 - 11904: 0xA646, - 21008 - 11904: 0xC9BF, - 21009 - 11904: 0xA644, - 21010 - 11904: 0xA645, - 21011 - 11904: 0xC9BD, - 21014 - 11904: 0xA647, - 21015 - 11904: 0xA643, - 21020 - 11904: 0xCA6C, - 21021 - 11904: 0xAAEC, - 21022 - 11904: 0xCA6D, - 21023 - 11904: 0x9FCD, - 21024 - 11904: 0xA0E7, - 21025 - 11904: 0xCA6E, - 21028 - 11904: 0xA750, - 21029 - 11904: 0xA74F, - 21030 - 11904: 0xFAB1, - 21031 - 11904: 0x89A6, - 21032 - 11904: 0xA753, - 21033 - 11904: 0xA751, - 21034 - 11904: 0xA752, - 21038 - 11904: 0xA8ED, - 21040 - 11904: 0xA8EC, - 21041 - 11904: 0xCBD4, - 21042 - 11904: 0xCBD1, - 21043 - 11904: 0xCBD2, - 21044 - 11904: 0x9EFA, - 21045 - 11904: 0xCBD0, - 21046 - 11904: 0xA8EE, - 21047 - 11904: 0xA8EA, - 21048 - 11904: 0xA8E9, - 21050 - 11904: 0xA8EB, - 21051 - 11904: 0xA8E8, - 21052 - 11904: 0xFAB2, - 21057 - 11904: 0xA8EF, - 21059 - 11904: 0xAB63, - 21060 - 11904: 0xCDF0, - 21062 - 11904: 0xCBD3, - 21063 - 11904: 0xAB68, - 21065 - 11904: 0xCDF1, - 21066 - 11904: 0xAB64, - 21067 - 11904: 0xAB67, - 21068 - 11904: 0xAB66, - 21069 - 11904: 0xAB65, - 21070 - 11904: 0xAB62, - 21071 - 11904: 0x87BC, - 21074 - 11904: 0xD0E8, - 21076 - 11904: 0xADE7, - 21077 - 11904: 0xD0EB, - 21078 - 11904: 0xADE5, - 21079 - 11904: 0xFAB4, - 21081 - 11904: 0x92C4, - 21082 - 11904: 0xD0E7, - 21083 - 11904: 0xADE8, - 21084 - 11904: 0xADE6, - 21085 - 11904: 0xADE9, - 21086 - 11904: 0xD0E9, - 21087 - 11904: 0xD0EA, - 21088 - 11904: 0x9F6F, - 21089 - 11904: 0xD0E6, - 21090 - 11904: 0xD0EC, - 21096 - 11904: 0x8BB0, - 21097 - 11904: 0xB3D1, - 21098 - 11904: 0xB0C5, - 21099 - 11904: 0xD469, - 21100 - 11904: 0xD46B, - 21101 - 11904: 0xD46A, - 21102 - 11904: 0xD46C, - 21103 - 11904: 0xB0C6, - 21106 - 11904: 0xB3CE, - 21107 - 11904: 0x9FAC, - 21108 - 11904: 0xB3CF, - 21109 - 11904: 0xB3D0, - 21111 - 11904: 0xB6D0, - 21112 - 11904: 0xDCC7, - 21113 - 11904: 0x89E3, - 21114 - 11904: 0xDCC6, - 21115 - 11904: 0xDCC8, - 21116 - 11904: 0xDCC9, - 21117 - 11904: 0xB6D1, - 21119 - 11904: 0xB6CF, - 21120 - 11904: 0xE141, - 21121 - 11904: 0xE142, - 21122 - 11904: 0xB9BB, - 21123 - 11904: 0xB9BA, - 21124 - 11904: 0xE35A, - 21127 - 11904: 0xBC40, - 21128 - 11904: 0xBC41, - 21129 - 11904: 0xBC42, - 21130 - 11904: 0xBC44, - 21131 - 11904: 0xE4F2, - 21132 - 11904: 0xE4F3, - 21133 - 11904: 0xBC43, - 21135 - 11904: 0x9BD3, - 21136 - 11904: 0x89E4, - 21137 - 11904: 0xBEAF, - 21139 - 11904: 0xBEB0, - 21140 - 11904: 0xFAB5, - 21142 - 11904: 0xF1ED, - 21143 - 11904: 0xF5C3, - 21144 - 11904: 0xF5C2, - 21145 - 11904: 0xF7D1, - 21146 - 11904: 0x9FD5, - 21147 - 11904: 0xA44F, - 21151 - 11904: 0xA55C, - 21152 - 11904: 0xA55B, - 21153 - 11904: 0x8955, - 21155 - 11904: 0xA648, - 21156 - 11904: 0x92C5, - 21158 - 11904: 0xC9C0, - 21160 - 11904: 0x8956, - 21161 - 11904: 0xA755, - 21162 - 11904: 0xA756, - 21163 - 11904: 0xA754, - 21164 - 11904: 0xA757, - 21165 - 11904: 0xCA6F, - 21166 - 11904: 0xCA70, - 21173 - 11904: 0xFAB3, - 21177 - 11904: 0xFAB6, - 21179 - 11904: 0xA8F1, - 21180 - 11904: 0xCBD5, - 21182 - 11904: 0xA8F0, - 21184 - 11904: 0xCDF2, - 21185 - 11904: 0xAB6C, - 21186 - 11904: 0xCDF3, - 21187 - 11904: 0xAB6B, - 21189 - 11904: 0xFAB7, - 21191 - 11904: 0xAB69, - 21193 - 11904: 0xAB6A, - 21196 - 11904: 0x9EDC, - 21197 - 11904: 0xD0ED, - 21200 - 11904: 0xFBC4, - 21201 - 11904: 0x9F71, - 21202 - 11904: 0xB0C7, - 21203 - 11904: 0xD46E, - 21205 - 11904: 0xB0CA, - 21206 - 11904: 0xD46D, - 21207 - 11904: 0xB1E5, - 21208 - 11904: 0xB0C9, - 21209 - 11904: 0xB0C8, - 21211 - 11904: 0xB3D4, - 21213 - 11904: 0xB3D3, - 21214 - 11904: 0xB3D2, - 21215 - 11904: 0xB6D2, - 21216 - 11904: 0xFABA, - 21217 - 11904: 0x92C7, - 21218 - 11904: 0xB6D5, - 21219 - 11904: 0xB6D6, - 21220 - 11904: 0xB6D4, - 21222 - 11904: 0xB6D3, - 21225 - 11904: 0xE143, - 21227 - 11904: 0xE144, - 21231 - 11904: 0xE4F5, - 21232 - 11904: 0xBC45, - 21233 - 11904: 0xE4F4, - 21235 - 11904: 0xBEB1, - 21236 - 11904: 0xECBF, - 21237 - 11904: 0xC079, - 21239 - 11904: 0xF1EE, - 21240 - 11904: 0xC455, - 21241 - 11904: 0xC6C6, - 21242 - 11904: 0xA463, - 21243 - 11904: 0xA4C3, - 21244 - 11904: 0xC956, - 21246 - 11904: 0xA4C4, - 21247 - 11904: 0xA4C5, - 21249 - 11904: 0x9A4C, - 21253 - 11904: 0xFABD, - 21254 - 11904: 0xA55E, - 21256 - 11904: 0xA649, - 21257 - 11904: 0xCA71, - 21258 - 11904: 0xCBD6, - 21259 - 11904: 0xCBD7, - 21261 - 11904: 0xAB6D, - 21262 - 11904: 0xD0EE, - 21263 - 11904: 0xB0CC, - 21264 - 11904: 0xB0CB, - 21265 - 11904: 0xD863, - 21266 - 11904: 0xD862, - 21269 - 11904: 0xA450, - 21270 - 11904: 0xA4C6, - 21271 - 11904: 0xA55F, - 21273 - 11904: 0xB0CD, - 21274 - 11904: 0xC943, - 21276 - 11904: 0xC96C, - 21277 - 11904: 0xA560, - 21279 - 11904: 0xC9C2, - 21280 - 11904: 0xA64B, - 21281 - 11904: 0xA64A, - 21282 - 11904: 0xC9C1, - 21283 - 11904: 0xA758, - 21284 - 11904: 0x8C68, - 21287 - 11904: 0x89E5, - 21290 - 11904: 0xADEA, - 21292 - 11904: 0x9F7D, - 21293 - 11904: 0xD46F, - 21295 - 11904: 0xB6D7, - 21296 - 11904: 0xE145, - 21297 - 11904: 0xB9BC, - 21298 - 11904: 0xA0A9, - 21299 - 11904: 0xFAC4, - 21300 - 11904: 0xE8FA, - 21303 - 11904: 0xF3FD, - 21304 - 11904: 0xC6C7, - 21305 - 11904: 0xA4C7, - 21307 - 11904: 0x8957, - 21308 - 11904: 0xCBD8, - 21309 - 11904: 0xCDF4, - 21310 - 11904: 0xB0D0, - 21311 - 11904: 0xB0CE, - 21312 - 11904: 0xB0CF, - 21313 - 11904: 0xA451, - 21314 - 11904: 0xFAAA, - 21315 - 11904: 0xA464, - 21316 - 11904: 0xFAC5, - 21317 - 11904: 0xA4CA, - 21319 - 11904: 0xA4C9, - 21320 - 11904: 0xA4C8, - 21321 - 11904: 0xA563, - 21322 - 11904: 0xA562, - 21324 - 11904: 0xC96D, - 21325 - 11904: 0xC9C3, - 21326 - 11904: 0x8958, - 21329 - 11904: 0xA8F5, - 21330 - 11904: 0xA8F2, - 21331 - 11904: 0xA8F4, - 21332 - 11904: 0xA8F3, - 21335 - 11904: 0xAB6E, - 21338 - 11904: 0xB3D5, - 21340 - 11904: 0xA452, - 21341 - 11904: 0x8BE3, - 21342 - 11904: 0xA4CB, - 21343 - 11904: 0x8B61, - 21344 - 11904: 0xA565, - 21345 - 11904: 0xA564, - 21347 - 11904: 0xCA72, - 21348 - 11904: 0x9AF1, - 21350 - 11904: 0xA8F6, - 21351 - 11904: 0x9EB7, - 21353 - 11904: 0xC6C8, - 21356 - 11904: 0xC957, - 21357 - 11904: 0xFAD1, - 21358 - 11904: 0xA567, - 21359 - 11904: 0xA566, - 21360 - 11904: 0xA64C, - 21361 - 11904: 0xA64D, - 21362 - 11904: 0xCA73, - 21363 - 11904: 0xA759, - 21364 - 11904: 0xFAD2, - 21365 - 11904: 0xA75A, - 21367 - 11904: 0xA8F7, - 21368 - 11904: 0xA8F8, - 21369 - 11904: 0xA8F9, - 21371 - 11904: 0xAB6F, - 21372 - 11904: 0xCDF5, - 21373 - 11904: 0x9EBA, - 21374 - 11904: 0xFAD4, - 21375 - 11904: 0xFAD5, - 21378 - 11904: 0xC944, - 21380 - 11904: 0xA4CC, - 21386 - 11904: 0xC9C4, - 21390 - 11904: 0xCA74, - 21391 - 11904: 0xCA75, - 21394 - 11904: 0xCBD9, - 21395 - 11904: 0xFAD9, - 21396 - 11904: 0xCBDA, - 21398 - 11904: 0xCDF7, - 21399 - 11904: 0xCDF6, - 21400 - 11904: 0xCDF9, - 21401 - 11904: 0xCDF8, - 21402 - 11904: 0xAB70, - 21404 - 11904: 0xD470, - 21405 - 11904: 0xADED, - 21406 - 11904: 0xD0EF, - 21407 - 11904: 0xADEC, - 21408 - 11904: 0xFADB, - 21410 - 11904: 0x9CE0, - 21412 - 11904: 0xD864, - 21413 - 11904: 0xB3D6, - 21414 - 11904: 0xFBF7, - 21415 - 11904: 0xD865, - 21416 - 11904: 0xFBFA, - 21417 - 11904: 0x89E7, - 21418 - 11904: 0xA07A, - 21419 - 11904: 0xFADC, - 21420 - 11904: 0xE146, - 21421 - 11904: 0xB9BD, - 21422 - 11904: 0xFADD, - 21424 - 11904: 0x89E9, - 21426 - 11904: 0xBC46, - 21428 - 11904: 0xF1EF, - 21430 - 11904: 0xC6C9, - 21433 - 11904: 0xC958, - 21435 - 11904: 0xA568, - 21441 - 11904: 0xFAE2, - 21442 - 11904: 0x89EB, - 21443 - 11904: 0xB0D1, - 21445 - 11904: 0xFAE3, - 21448 - 11904: 0xA453, - 21449 - 11904: 0xA465, - 21450 - 11904: 0xA4CE, - 21451 - 11904: 0xA4CD, - 21452 - 11904: 0x90C8, - 21453 - 11904: 0xA4CF, - 21456 - 11904: 0x92DA, - 21457 - 11904: 0x8959, - 21458 - 11904: 0x9CF5, - 21460 - 11904: 0xA8FB, - 21462 - 11904: 0xA8FA, - 21463 - 11904: 0xA8FC, - 21464 - 11904: 0x895A, - 21465 - 11904: 0xFAE7, - 21466 - 11904: 0x9FA2, - 21467 - 11904: 0xAB71, - 21471 - 11904: 0xADEE, - 21472 - 11904: 0xFAEA, - 21473 - 11904: 0xE8FB, - 21474 - 11904: 0xC24F, - 21475 - 11904: 0xA466, - 21476 - 11904: 0xA56A, - 21477 - 11904: 0xA579, - 21478 - 11904: 0xA574, - 21480 - 11904: 0xA56F, - 21481 - 11904: 0xA56E, - 21482 - 11904: 0xA575, - 21483 - 11904: 0xA573, - 21484 - 11904: 0xA56C, - 21485 - 11904: 0xA57A, - 21486 - 11904: 0xA56D, - 21487 - 11904: 0xA569, - 21488 - 11904: 0xA578, - 21489 - 11904: 0xA577, - 21490 - 11904: 0xA576, - 21491 - 11904: 0xA56B, - 21493 - 11904: 0xA572, - 21494 - 11904: 0xFAED, - 21495 - 11904: 0x8FAD, - 21496 - 11904: 0xA571, - 21499 - 11904: 0xA57B, - 21500 - 11904: 0xA570, - 21502 - 11904: 0xFB59, - 21505 - 11904: 0xA653, - 21507 - 11904: 0xA659, - 21508 - 11904: 0xA655, - 21510 - 11904: 0xA65B, - 21511 - 11904: 0xC9C5, - 21512 - 11904: 0xA658, - 21513 - 11904: 0xA64E, - 21514 - 11904: 0xA651, - 21515 - 11904: 0xA654, - 21516 - 11904: 0xA650, - 21517 - 11904: 0xA657, - 21518 - 11904: 0xA65A, - 21519 - 11904: 0xA64F, - 21520 - 11904: 0xA652, - 21521 - 11904: 0xA656, - 21522 - 11904: 0xA65C, - 21523 - 11904: 0xFAEF, - 21524 - 11904: 0x96EF, - 21526 - 11904: 0x9DEC, - 21528 - 11904: 0xCA7E, - 21529 - 11904: 0xCA7B, - 21530 - 11904: 0x9DCA, - 21531 - 11904: 0xA767, - 21532 - 11904: 0xCA7C, - 21533 - 11904: 0xA75B, - 21534 - 11904: 0xA75D, - 21535 - 11904: 0xA775, - 21536 - 11904: 0xA770, - 21537 - 11904: 0xFD6D, - 21539 - 11904: 0x89EC, - 21540 - 11904: 0xCAA5, - 21541 - 11904: 0xCA7D, - 21542 - 11904: 0xA75F, - 21543 - 11904: 0xA761, - 21544 - 11904: 0xCAA4, - 21545 - 11904: 0xA768, - 21546 - 11904: 0xCA78, - 21547 - 11904: 0xA774, - 21548 - 11904: 0xA776, - 21549 - 11904: 0xA75C, - 21550 - 11904: 0xA76D, - 21551 - 11904: 0xFB44, - 21552 - 11904: 0xCA76, - 21553 - 11904: 0xA773, - 21554 - 11904: 0x9DE2, - 21555 - 11904: 0xA764, - 21556 - 11904: 0x8C75, - 21557 - 11904: 0xA76E, - 21558 - 11904: 0xA76F, - 21559 - 11904: 0xCA77, - 21560 - 11904: 0xA76C, - 21561 - 11904: 0xA76A, - 21563 - 11904: 0xA76B, - 21564 - 11904: 0xA771, - 21565 - 11904: 0xCAA1, - 21566 - 11904: 0xA75E, - 21568 - 11904: 0xA772, - 21569 - 11904: 0xCAA3, - 21570 - 11904: 0xA766, - 21571 - 11904: 0xA763, - 21573 - 11904: 0xCA7A, - 21574 - 11904: 0xA762, - 21575 - 11904: 0xCAA6, - 21576 - 11904: 0xA765, - 21578 - 11904: 0xA769, - 21579 - 11904: 0x9EC0, - 21580 - 11904: 0x87C5, - 21581 - 11904: 0x9E56, - 21582 - 11904: 0xA760, - 21583 - 11904: 0xCAA2, - 21588 - 11904: 0xCA79, - 21600 - 11904: 0xCBEB, - 21601 - 11904: 0xCBEA, - 21602 - 11904: 0xA94F, - 21603 - 11904: 0xCBED, - 21604 - 11904: 0xCBEF, - 21605 - 11904: 0xCBE4, - 21606 - 11904: 0xCBE7, - 21607 - 11904: 0xCBEE, - 21608 - 11904: 0xA950, - 21609 - 11904: 0x9F79, - 21610 - 11904: 0x9AC7, - 21611 - 11904: 0xCBE1, - 21612 - 11904: 0xCBE5, - 21613 - 11904: 0xFAF4, - 21615 - 11904: 0xCBE9, - 21616 - 11904: 0xCE49, - 21617 - 11904: 0xA94B, - 21618 - 11904: 0xCE4D, - 21619 - 11904: 0xA8FD, - 21620 - 11904: 0xCBE6, - 21621 - 11904: 0xA8FE, - 21622 - 11904: 0xA94C, - 21623 - 11904: 0xA945, - 21624 - 11904: 0xA941, - 21626 - 11904: 0xCBE2, - 21627 - 11904: 0xA944, - 21628 - 11904: 0xA949, - 21629 - 11904: 0xA952, - 21630 - 11904: 0xCBE3, - 21631 - 11904: 0xCBDC, - 21632 - 11904: 0xA943, - 21633 - 11904: 0xCBDD, - 21634 - 11904: 0xCBDF, - 21636 - 11904: 0xA946, - 21637 - 11904: 0x98A1, - 21638 - 11904: 0xA948, - 21639 - 11904: 0xCBDB, - 21640 - 11904: 0xCBE0, - 21643 - 11904: 0xA951, - 21644 - 11904: 0xA94D, - 21645 - 11904: 0xCBE8, - 21646 - 11904: 0xA953, - 21647 - 11904: 0xFAF8, - 21648 - 11904: 0xA94A, - 21649 - 11904: 0xCBDE, - 21650 - 11904: 0xA947, - 21651 - 11904: 0x89F0, - 21652 - 11904: 0x9E47, - 21653 - 11904: 0xA942, - 21654 - 11904: 0xA940, - 21655 - 11904: 0x9DF7, - 21656 - 11904: 0xCBEC, - 21658 - 11904: 0xA94E, - 21660 - 11904: 0x9FD3, - 21662 - 11904: 0x9ACA, - 21664 - 11904: 0xCE48, - 21665 - 11904: 0xCDFB, - 21666 - 11904: 0xCE4B, - 21667 - 11904: 0x89F1, - 21668 - 11904: 0xFAF9, - 21669 - 11904: 0xCDFD, - 21670 - 11904: 0xAB78, - 21671 - 11904: 0xABA8, - 21672 - 11904: 0xAB74, - 21673 - 11904: 0xABA7, - 21674 - 11904: 0xAB7D, - 21675 - 11904: 0xABA4, - 21676 - 11904: 0xAB72, - 21677 - 11904: 0xCDFC, - 21678 - 11904: 0xCE43, - 21679 - 11904: 0xABA3, - 21680 - 11904: 0xCE4F, - 21681 - 11904: 0xABA5, - 21682 - 11904: 0x8E5A, - 21683 - 11904: 0xAB79, - 21684 - 11904: 0x89F2, - 21686 - 11904: 0xCE45, - 21687 - 11904: 0xCE42, - 21688 - 11904: 0xAB77, - 21689 - 11904: 0x89F3, - 21690 - 11904: 0xCDFA, - 21691 - 11904: 0xABA6, - 21692 - 11904: 0xCE4A, - 21693 - 11904: 0xAB7C, - 21694 - 11904: 0xCE4C, - 21695 - 11904: 0xABA9, - 21696 - 11904: 0xAB73, - 21697 - 11904: 0xAB7E, - 21698 - 11904: 0xAB7B, - 21699 - 11904: 0xCE40, - 21700 - 11904: 0xABA1, - 21701 - 11904: 0xCE46, - 21702 - 11904: 0xCE47, - 21703 - 11904: 0xAB7A, - 21704 - 11904: 0xABA2, - 21705 - 11904: 0xAB76, - 21707 - 11904: 0x925D, - 21708 - 11904: 0x8B51, - 21709 - 11904: 0x92E0, - 21710 - 11904: 0xAB75, - 21711 - 11904: 0xCDFE, - 21712 - 11904: 0x89F4, - 21718 - 11904: 0xCE44, - 21722 - 11904: 0x9FD4, - 21726 - 11904: 0xCE4E, - 21728 - 11904: 0xD144, - 21729 - 11904: 0xADFB, - 21730 - 11904: 0xD0F1, - 21731 - 11904: 0x8A79, - 21732 - 11904: 0xD0F6, - 21733 - 11904: 0xADF4, - 21734 - 11904: 0xAE40, - 21735 - 11904: 0xD0F4, - 21736 - 11904: 0xADEF, - 21737 - 11904: 0xADF9, - 21738 - 11904: 0xADFE, - 21739 - 11904: 0xD0FB, - 21741 - 11904: 0xADFA, - 21742 - 11904: 0xADFD, - 21743 - 11904: 0x89F5, - 21745 - 11904: 0xD0FE, - 21746 - 11904: 0xADF5, - 21747 - 11904: 0xD0F5, - 21751 - 11904: 0xD142, - 21752 - 11904: 0xD143, - 21754 - 11904: 0xADF7, - 21755 - 11904: 0xD141, - 21756 - 11904: 0xADF3, - 21757 - 11904: 0xAE43, - 21759 - 11904: 0xD0F8, - 21761 - 11904: 0xADF1, - 21762 - 11904: 0x97A7, - 21763 - 11904: 0xD146, - 21764 - 11904: 0xD0F9, - 21765 - 11904: 0xD0FD, - 21766 - 11904: 0xADF6, - 21767 - 11904: 0xAE42, - 21768 - 11904: 0xD0FA, - 21769 - 11904: 0xADFC, - 21770 - 11904: 0xD140, - 21771 - 11904: 0xD147, - 21772 - 11904: 0xD4A1, - 21773 - 11904: 0x93BA, - 21774 - 11904: 0xD145, - 21775 - 11904: 0xAE44, - 21776 - 11904: 0xADF0, - 21777 - 11904: 0xD0FC, - 21778 - 11904: 0xD0F3, - 21779 - 11904: 0x9E58, - 21780 - 11904: 0xADF8, - 21783 - 11904: 0xD0F2, - 21784 - 11904: 0x89F6, - 21786 - 11904: 0xD0F7, - 21790 - 11904: 0x9E57, - 21795 - 11904: 0x89F7, - 21797 - 11904: 0x8A41, - 21798 - 11904: 0xD0F0, - 21799 - 11904: 0xAE41, - 21800 - 11904: 0x89F8, - 21802 - 11904: 0xD477, - 21803 - 11904: 0xFAF1, - 21804 - 11904: 0xB0E4, - 21805 - 11904: 0xD4A7, - 21806 - 11904: 0xB0E2, - 21807 - 11904: 0xB0DF, - 21808 - 11904: 0xD47C, - 21809 - 11904: 0xB0DB, - 21810 - 11904: 0xD4A2, - 21811 - 11904: 0xB0E6, - 21812 - 11904: 0xD476, - 21813 - 11904: 0xD47B, - 21814 - 11904: 0xD47A, - 21815 - 11904: 0xADF2, - 21816 - 11904: 0xB0E1, - 21817 - 11904: 0xD4A5, - 21819 - 11904: 0xD4A8, - 21820 - 11904: 0xD473, - 21822 - 11904: 0xB3E8, - 21823 - 11904: 0x89FA, - 21824 - 11904: 0xD4A9, - 21825 - 11904: 0xB0E7, - 21827 - 11904: 0xB0D9, - 21828 - 11904: 0xB0D6, - 21829 - 11904: 0xD47E, - 21830 - 11904: 0xB0D3, - 21831 - 11904: 0xFB42, - 21832 - 11904: 0xD4A6, - 21833 - 11904: 0xFABF, - 21834 - 11904: 0xB0DA, - 21835 - 11904: 0xD4AA, - 21837 - 11904: 0xD474, - 21838 - 11904: 0xD4A4, - 21839 - 11904: 0xB0DD, - 21840 - 11904: 0xD475, - 21841 - 11904: 0xD478, - 21842 - 11904: 0xD47D, - 21843 - 11904: 0xFBA3, - 21845 - 11904: 0xB0DE, - 21846 - 11904: 0xB0DC, - 21847 - 11904: 0xB0E8, - 21852 - 11904: 0xB0E3, - 21853 - 11904: 0xFAF7, - 21854 - 11904: 0xB0D7, - 21855 - 11904: 0xB1D2, - 21857 - 11904: 0xB0D8, - 21858 - 11904: 0xD479, - 21859 - 11904: 0xB0E5, - 21860 - 11904: 0xB0E0, - 21861 - 11904: 0xD4A3, - 21862 - 11904: 0xB0D5, - 21865 - 11904: 0x9E4E, - 21866 - 11904: 0xB0D4, - 21867 - 11904: 0x94DC, - 21873 - 11904: 0x95DA, - 21874 - 11904: 0x9DF8, - 21875 - 11904: 0x9F6A, - 21877 - 11904: 0xD471, - 21878 - 11904: 0xD472, - 21879 - 11904: 0xD86A, - 21881 - 11904: 0x8AB7, - 21883 - 11904: 0xB3D7, - 21884 - 11904: 0xB3DA, - 21885 - 11904: 0xD875, - 21886 - 11904: 0xB3EE, - 21887 - 11904: 0xD878, - 21888 - 11904: 0xB3D8, - 21889 - 11904: 0xD871, - 21890 - 11904: 0xB3DE, - 21891 - 11904: 0xB3E4, - 21892 - 11904: 0xB5BD, - 21894 - 11904: 0xFB46, - 21895 - 11904: 0xB3E2, - 21896 - 11904: 0xD86E, - 21897 - 11904: 0xB3EF, - 21898 - 11904: 0xB3DB, - 21899 - 11904: 0xB3E3, - 21900 - 11904: 0xD876, - 21901 - 11904: 0xDCD7, - 21902 - 11904: 0xD87B, - 21903 - 11904: 0xD86F, - 21904 - 11904: 0x8A46, - 21905 - 11904: 0xD866, - 21906 - 11904: 0xD873, - 21907 - 11904: 0xD86D, - 21908 - 11904: 0xB3E1, - 21909 - 11904: 0xD879, - 21912 - 11904: 0xB3DD, - 21913 - 11904: 0xB3F1, - 21914 - 11904: 0xB3EA, - 21916 - 11904: 0xB3DF, - 21917 - 11904: 0xB3DC, - 21919 - 11904: 0xB3E7, - 21921 - 11904: 0xD87A, - 21922 - 11904: 0xD86C, - 21923 - 11904: 0xD872, - 21924 - 11904: 0xD874, - 21925 - 11904: 0xD868, - 21926 - 11904: 0xD877, - 21927 - 11904: 0xB3D9, - 21928 - 11904: 0xD867, - 21929 - 11904: 0xFB47, - 21930 - 11904: 0xB3E0, - 21931 - 11904: 0xB3F0, - 21932 - 11904: 0xB3EC, - 21933 - 11904: 0xD869, - 21934 - 11904: 0xB3E6, - 21936 - 11904: 0x9148, - 21937 - 11904: 0xB3ED, - 21938 - 11904: 0xB3E9, - 21939 - 11904: 0xB3E5, - 21940 - 11904: 0x92DE, - 21941 - 11904: 0xD870, - 21945 - 11904: 0x8B53, - 21946 - 11904: 0x9DF6, - 21947 - 11904: 0xB3EB, - 21948 - 11904: 0x9BDA, - 21951 - 11904: 0xDCD5, - 21952 - 11904: 0xDCD1, - 21953 - 11904: 0x9D7E, - 21954 - 11904: 0xDCE0, - 21955 - 11904: 0xDCCA, - 21956 - 11904: 0xDCD3, - 21957 - 11904: 0xB6E5, - 21958 - 11904: 0xB6E6, - 21959 - 11904: 0xB6DE, - 21960 - 11904: 0xDCDC, - 21961 - 11904: 0xB6E8, - 21962 - 11904: 0xDCCF, - 21963 - 11904: 0xDCCE, - 21964 - 11904: 0xDCCC, - 21965 - 11904: 0xDCDE, - 21966 - 11904: 0xB6DC, - 21967 - 11904: 0xDCD8, - 21968 - 11904: 0xDCCD, - 21969 - 11904: 0xB6DF, - 21970 - 11904: 0xDCD6, - 21971 - 11904: 0xB6DA, - 21972 - 11904: 0xDCD2, - 21973 - 11904: 0xDCD9, - 21974 - 11904: 0xDCDB, - 21975 - 11904: 0x89FD, - 21976 - 11904: 0x99E4, - 21977 - 11904: 0xDCDF, - 21978 - 11904: 0xB6E3, - 21979 - 11904: 0xDCCB, - 21980 - 11904: 0xB6DD, - 21981 - 11904: 0xDCD0, - 21982 - 11904: 0x9E43, - 21983 - 11904: 0xB6D8, - 21985 - 11904: 0xB6E4, - 21986 - 11904: 0xDCDA, - 21987 - 11904: 0xB6E0, - 21988 - 11904: 0xB6E1, - 21989 - 11904: 0xB6E7, - 21990 - 11904: 0xB6DB, - 21991 - 11904: 0xA25F, - 21992 - 11904: 0xB6D9, - 21993 - 11904: 0xDCD4, - 21994 - 11904: 0x9DE9, - 21996 - 11904: 0x8F52, - 21999 - 11904: 0xB6E2, - 22000 - 11904: 0x9DF5, - 22001 - 11904: 0x9DF0, - 22002 - 11904: 0xDCDD, - 22005 - 11904: 0x99E7, - 22006 - 11904: 0xB9CD, - 22007 - 11904: 0xB9C8, - 22009 - 11904: 0xE155, - 22010 - 11904: 0xE151, - 22011 - 11904: 0x8BBD, - 22012 - 11904: 0xE14B, - 22013 - 11904: 0xB9C2, - 22014 - 11904: 0xB9BE, - 22015 - 11904: 0xE154, - 22016 - 11904: 0xB9BF, - 22017 - 11904: 0xE14E, - 22018 - 11904: 0xE150, - 22020 - 11904: 0xE153, - 22021 - 11904: 0xFB48, - 22022 - 11904: 0xB9C4, - 22024 - 11904: 0xB9CB, - 22025 - 11904: 0xB9C5, - 22028 - 11904: 0xE149, - 22029 - 11904: 0xB9C6, - 22030 - 11904: 0xB9C7, - 22031 - 11904: 0xE14C, - 22032 - 11904: 0xB9CC, - 22033 - 11904: 0x9FB7, - 22034 - 11904: 0xE14A, - 22035 - 11904: 0xE14F, - 22036 - 11904: 0xB9C3, - 22037 - 11904: 0xE148, - 22038 - 11904: 0xB9C9, - 22039 - 11904: 0xB9C1, - 22043 - 11904: 0xB9C0, - 22044 - 11904: 0xE14D, - 22045 - 11904: 0xE152, - 22046 - 11904: 0x9DD0, - 22047 - 11904: 0xB9CA, - 22048 - 11904: 0x9FEB, - 22049 - 11904: 0x8DA9, - 22050 - 11904: 0x9DCF, - 22051 - 11904: 0x98E1, - 22053 - 11904: 0x9DE5, - 22055 - 11904: 0xE147, - 22057 - 11904: 0xBC4D, - 22058 - 11904: 0xE547, - 22060 - 11904: 0xE544, - 22061 - 11904: 0x9DC8, - 22062 - 11904: 0xBC47, - 22063 - 11904: 0xBC53, - 22064 - 11904: 0xBC54, - 22066 - 11904: 0xBC4A, - 22067 - 11904: 0xE542, - 22068 - 11904: 0xBC4C, - 22069 - 11904: 0xE4F9, - 22070 - 11904: 0xBC52, - 22071 - 11904: 0xFB4F, - 22072 - 11904: 0xE546, - 22073 - 11904: 0xBC49, - 22074 - 11904: 0xE548, - 22075 - 11904: 0xBC48, - 22077 - 11904: 0xE543, - 22078 - 11904: 0xE545, - 22079 - 11904: 0xBC4B, - 22080 - 11904: 0xE541, - 22081 - 11904: 0xE4FA, - 22082 - 11904: 0xE4F7, - 22083 - 11904: 0x9DEB, - 22085 - 11904: 0xD86B, - 22086 - 11904: 0xE4FD, - 22088 - 11904: 0xE4F6, - 22089 - 11904: 0xE4FC, - 22090 - 11904: 0xE4FB, - 22092 - 11904: 0xE4F8, - 22093 - 11904: 0xFB54, - 22094 - 11904: 0xBC4F, - 22095 - 11904: 0xFB55, - 22096 - 11904: 0x9AA2, - 22098 - 11904: 0x8AD6, - 22099 - 11904: 0xBC4E, - 22100 - 11904: 0x9A5F, - 22103 - 11904: 0xBC50, - 22104 - 11904: 0xE4FE, - 22105 - 11904: 0xBEB2, - 22106 - 11904: 0xE540, - 22109 - 11904: 0x9EF5, - 22110 - 11904: 0xE945, - 22112 - 11904: 0xE8FD, - 22113 - 11904: 0x8FB7, - 22114 - 11904: 0xBEBE, - 22115 - 11904: 0xE942, - 22116 - 11904: 0xBEB6, - 22117 - 11904: 0xBEBA, - 22118 - 11904: 0xE941, - 22120 - 11904: 0xBEB9, - 22121 - 11904: 0xBEB5, - 22122 - 11904: 0xBEB8, - 22123 - 11904: 0xBEB3, - 22124 - 11904: 0xBEBD, - 22125 - 11904: 0xE943, - 22126 - 11904: 0xE8FE, - 22127 - 11904: 0xBEBC, - 22128 - 11904: 0xE8FC, - 22129 - 11904: 0xBEBB, - 22130 - 11904: 0xE944, - 22131 - 11904: 0xE940, - 22132 - 11904: 0xBC51, - 22134 - 11904: 0xBEBF, - 22135 - 11904: 0xE946, - 22136 - 11904: 0xBEB7, - 22137 - 11904: 0xBEB4, - 22138 - 11904: 0x9AD2, - 22139 - 11904: 0x9E6A, - 22140 - 11904: 0x9EE8, - 22142 - 11904: 0xECC6, - 22143 - 11904: 0xECC8, - 22144 - 11904: 0xC07B, - 22145 - 11904: 0xECC9, - 22146 - 11904: 0xECC7, - 22147 - 11904: 0xECC5, - 22148 - 11904: 0xECC4, - 22149 - 11904: 0xC07D, - 22150 - 11904: 0xECC3, - 22151 - 11904: 0xC07E, - 22153 - 11904: 0x8BBF, - 22154 - 11904: 0x91C2, - 22155 - 11904: 0x9D62, - 22156 - 11904: 0xECC1, - 22157 - 11904: 0xECC2, - 22158 - 11904: 0xC07A, - 22159 - 11904: 0xC0A1, - 22160 - 11904: 0xC07C, - 22162 - 11904: 0x9260, - 22163 - 11904: 0xECC0, - 22165 - 11904: 0xC250, - 22167 - 11904: 0xEFBC, - 22168 - 11904: 0xEFBA, - 22169 - 11904: 0xEFBF, - 22170 - 11904: 0xEFBD, - 22172 - 11904: 0xEFBB, - 22173 - 11904: 0xEFBE, - 22174 - 11904: 0x925E, - 22175 - 11904: 0x91C1, - 22177 - 11904: 0x8AC5, - 22180 - 11904: 0x97A3, - 22181 - 11904: 0xC360, - 22182 - 11904: 0xF1F2, - 22183 - 11904: 0xF1F3, - 22184 - 11904: 0xC456, - 22186 - 11904: 0xF1F4, - 22187 - 11904: 0xF1F0, - 22188 - 11904: 0xF1F5, - 22189 - 11904: 0xF1F1, - 22190 - 11904: 0xC251, - 22191 - 11904: 0x8B6C, - 22193 - 11904: 0x8D7E, - 22194 - 11904: 0xF3FE, - 22195 - 11904: 0xF441, - 22196 - 11904: 0xC459, - 22197 - 11904: 0xF440, - 22198 - 11904: 0xC458, - 22199 - 11904: 0xC457, - 22201 - 11904: 0x9C54, - 22204 - 11904: 0xC45A, - 22205 - 11904: 0xF5C5, - 22206 - 11904: 0xF5C6, - 22207 - 11904: 0x9DBD, - 22208 - 11904: 0xC4DA, - 22209 - 11904: 0xC4D9, - 22210 - 11904: 0xC4DB, - 22211 - 11904: 0xF5C4, - 22213 - 11904: 0xF6D8, - 22214 - 11904: 0xF6D7, - 22216 - 11904: 0xC56D, - 22217 - 11904: 0xC56F, - 22218 - 11904: 0xC56E, - 22219 - 11904: 0xF6D9, - 22220 - 11904: 0xC5C8, - 22221 - 11904: 0xF8A6, - 22225 - 11904: 0xC5F1, - 22227 - 11904: 0xF8A5, - 22228 - 11904: 0xF8EE, - 22230 - 11904: 0x9CC5, - 22231 - 11904: 0xC949, - 22234 - 11904: 0xA57D, - 22235 - 11904: 0xA57C, - 22237 - 11904: 0xA65F, - 22238 - 11904: 0xA65E, - 22239 - 11904: 0xC9C7, - 22240 - 11904: 0xA65D, - 22241 - 11904: 0xC9C6, - 22242 - 11904: 0x895B, - 22244 - 11904: 0xA779, - 22245 - 11904: 0xCAA9, - 22247 - 11904: 0xCAA8, - 22250 - 11904: 0xA777, - 22251 - 11904: 0xA77A, - 22253 - 11904: 0xFB5C, - 22254 - 11904: 0xCAA7, - 22255 - 11904: 0xFB5B, - 22256 - 11904: 0xA778, - 22257 - 11904: 0xFB57, - 22263 - 11904: 0xCBF0, - 22265 - 11904: 0xCBF1, - 22266 - 11904: 0xA954, - 22267 - 11904: 0x8765, - 22269 - 11904: 0x98C7, - 22271 - 11904: 0xABAA, - 22272 - 11904: 0xFB5A, - 22273 - 11904: 0xD148, - 22274 - 11904: 0xD149, - 22275 - 11904: 0xAE45, - 22276 - 11904: 0xAE46, - 22279 - 11904: 0xD4AC, - 22280 - 11904: 0xB0E9, - 22281 - 11904: 0xB0EB, - 22282 - 11904: 0xD4AB, - 22283 - 11904: 0xB0EA, - 22284 - 11904: 0xD87C, - 22285 - 11904: 0xB3F2, - 22290 - 11904: 0xB6E9, - 22291 - 11904: 0xB6EA, - 22292 - 11904: 0xDCE1, - 22293 - 11904: 0x9CEE, - 22294 - 11904: 0xB9CF, - 22296 - 11904: 0xB9CE, - 22298 - 11904: 0xE549, - 22299 - 11904: 0xE948, - 22300 - 11904: 0xE947, - 22301 - 11904: 0x92E2, - 22302 - 11904: 0xF96B, - 22303 - 11904: 0xA467, - 22304 - 11904: 0xC959, - 22306 - 11904: 0xC96E, - 22307 - 11904: 0xC96F, - 22312 - 11904: 0xA662, - 22313 - 11904: 0xA666, - 22314 - 11904: 0xC9C9, - 22316 - 11904: 0xA664, - 22317 - 11904: 0xA663, - 22318 - 11904: 0xC9C8, - 22319 - 11904: 0xA665, - 22320 - 11904: 0xA661, - 22322 - 11904: 0x94A7, - 22323 - 11904: 0xA660, - 22324 - 11904: 0xC9CA, - 22331 - 11904: 0xA7A6, - 22333 - 11904: 0x8CCC, - 22334 - 11904: 0xA7A3, - 22335 - 11904: 0x9BD4, - 22336 - 11904: 0xA77D, - 22337 - 11904: 0xCAAA, - 22338 - 11904: 0xFB64, - 22339 - 11904: 0xFB76, - 22341 - 11904: 0xCAAB, - 22342 - 11904: 0xFB60, - 22343 - 11904: 0xA7A1, - 22345 - 11904: 0xCAAD, - 22346 - 11904: 0xA77B, - 22347 - 11904: 0xCAAE, - 22348 - 11904: 0xCAAC, - 22349 - 11904: 0xA77E, - 22350 - 11904: 0xA7A2, - 22351 - 11904: 0xA7A5, - 22352 - 11904: 0xA7A4, - 22353 - 11904: 0xA77C, - 22354 - 11904: 0xCAAF, - 22356 - 11904: 0x99E5, - 22359 - 11904: 0x9AC2, - 22363 - 11904: 0x91FB, - 22367 - 11904: 0xA073, - 22369 - 11904: 0xA959, - 22370 - 11904: 0xCBFE, - 22372 - 11904: 0xA95B, - 22374 - 11904: 0xA95A, - 22375 - 11904: 0x9F72, - 22376 - 11904: 0xCC40, - 22377 - 11904: 0xA958, - 22378 - 11904: 0xA957, - 22379 - 11904: 0xCBF5, - 22381 - 11904: 0xCBF4, - 22383 - 11904: 0xCBF2, - 22384 - 11904: 0xCBF7, - 22385 - 11904: 0xCBF6, - 22386 - 11904: 0xCBF3, - 22387 - 11904: 0xCBFC, - 22388 - 11904: 0xCBFD, - 22389 - 11904: 0xCBFA, - 22390 - 11904: 0xCBF8, - 22391 - 11904: 0xA956, - 22394 - 11904: 0x9FCC, - 22395 - 11904: 0xCBFB, - 22396 - 11904: 0xA95C, - 22397 - 11904: 0xCC41, - 22398 - 11904: 0x98A5, - 22399 - 11904: 0x92E8, - 22400 - 11904: 0xCBF9, - 22402 - 11904: 0xABAB, - 22403 - 11904: 0xA955, - 22408 - 11904: 0x9BBC, - 22410 - 11904: 0x96F3, - 22411 - 11904: 0xABAC, - 22412 - 11904: 0xCE54, - 22413 - 11904: 0x92E7, - 22415 - 11904: 0xCE5A, - 22416 - 11904: 0xFC67, - 22419 - 11904: 0xABB2, - 22420 - 11904: 0xCE58, - 22421 - 11904: 0xCE5E, - 22423 - 11904: 0xCE55, - 22424 - 11904: 0xCE59, - 22425 - 11904: 0xCE5B, - 22426 - 11904: 0xCE5D, - 22427 - 11904: 0xCE57, - 22428 - 11904: 0x8B7D, - 22429 - 11904: 0xCE56, - 22430 - 11904: 0xCE51, - 22431 - 11904: 0xCE52, - 22432 - 11904: 0xABAD, - 22433 - 11904: 0x9BF4, - 22434 - 11904: 0xABAF, - 22435 - 11904: 0xABAE, - 22436 - 11904: 0xCE53, - 22437 - 11904: 0xCE5C, - 22439 - 11904: 0x9EF7, - 22442 - 11904: 0x9EC1, - 22446 - 11904: 0xABB1, - 22451 - 11904: 0x87C3, - 22452 - 11904: 0x996F, - 22453 - 11904: 0xCE50, - 22454 - 11904: 0xD153, - 22456 - 11904: 0xD152, - 22457 - 11904: 0xD157, - 22458 - 11904: 0xD14E, - 22459 - 11904: 0x96F1, - 22460 - 11904: 0xD151, - 22461 - 11904: 0xD150, - 22462 - 11904: 0x8E41, - 22463 - 11904: 0xD154, - 22465 - 11904: 0xD158, - 22466 - 11904: 0xAE47, - 22467 - 11904: 0xAE4A, - 22468 - 11904: 0x954A, - 22470 - 11904: 0xD14F, - 22471 - 11904: 0xD155, - 22472 - 11904: 0x97E6, - 22475 - 11904: 0xAE49, - 22476 - 11904: 0xD14A, - 22478 - 11904: 0xABB0, - 22479 - 11904: 0xD4BA, - 22480 - 11904: 0xD156, - 22482 - 11904: 0xD14D, - 22484 - 11904: 0xAE48, - 22485 - 11904: 0xD14C, - 22487 - 11904: 0x96F5, - 22492 - 11904: 0xD4B1, - 22493 - 11904: 0x92E6, - 22494 - 11904: 0x9F42, - 22495 - 11904: 0xB0EC, - 22496 - 11904: 0xB0F0, - 22497 - 11904: 0xD4C1, - 22498 - 11904: 0xD4AF, - 22499 - 11904: 0xD4BD, - 22500 - 11904: 0xB0F1, - 22501 - 11904: 0xD4BF, - 22502 - 11904: 0xFB67, - 22503 - 11904: 0xD4C5, - 22505 - 11904: 0xD4C9, - 22508 - 11904: 0xD4C0, - 22509 - 11904: 0xD4B4, - 22510 - 11904: 0xD4BC, - 22511 - 11904: 0x99A9, - 22512 - 11904: 0xD4CA, - 22513 - 11904: 0xD4C8, - 22514 - 11904: 0xD4BE, - 22515 - 11904: 0xD4B9, - 22516 - 11904: 0xD4B2, - 22517 - 11904: 0xD8A6, - 22518 - 11904: 0xD4B0, - 22519 - 11904: 0xB0F5, - 22520 - 11904: 0xD4B7, - 22521 - 11904: 0xB0F6, - 22522 - 11904: 0xB0F2, - 22523 - 11904: 0xD4AD, - 22524 - 11904: 0xD4C3, - 22525 - 11904: 0xD4B5, - 22526 - 11904: 0xFAE6, - 22528 - 11904: 0xD4B3, - 22529 - 11904: 0xD4C6, - 22530 - 11904: 0xB0F3, - 22531 - 11904: 0xFB69, - 22532 - 11904: 0xD4CC, - 22533 - 11904: 0xB0ED, - 22534 - 11904: 0xB0EF, - 22535 - 11904: 0xD4BB, - 22536 - 11904: 0xD4B6, - 22537 - 11904: 0xAE4B, - 22538 - 11904: 0xB0EE, - 22539 - 11904: 0xD4B8, - 22540 - 11904: 0xD4C7, - 22541 - 11904: 0xD4CB, - 22542 - 11904: 0xD4C2, - 22544 - 11904: 0xD4C4, - 22546 - 11904: 0x97E5, - 22548 - 11904: 0xD4AE, - 22552 - 11904: 0x87C8, - 22553 - 11904: 0xD8A1, - 22555 - 11904: 0xD8AA, - 22556 - 11904: 0xD8A9, - 22557 - 11904: 0xB3FA, - 22558 - 11904: 0xD8A2, - 22560 - 11904: 0xB3FB, - 22561 - 11904: 0xB3F9, - 22562 - 11904: 0x967D, - 22563 - 11904: 0xD8A4, - 22564 - 11904: 0xB3F6, - 22565 - 11904: 0xD8A8, - 22566 - 11904: 0xFB6C, - 22567 - 11904: 0xD8A3, - 22568 - 11904: 0xD8A5, - 22569 - 11904: 0xD87D, - 22570 - 11904: 0xB3F4, - 22572 - 11904: 0xD8B2, - 22573 - 11904: 0xD8B1, - 22574 - 11904: 0xD8AE, - 22575 - 11904: 0xB3F3, - 22576 - 11904: 0xB3F7, - 22577 - 11904: 0xB3F8, - 22578 - 11904: 0xD14B, - 22579 - 11904: 0xD8AB, - 22580 - 11904: 0xB3F5, - 22581 - 11904: 0xB0F4, - 22582 - 11904: 0xD8AD, - 22583 - 11904: 0xD87E, - 22584 - 11904: 0xD8B0, - 22585 - 11904: 0xD8AF, - 22586 - 11904: 0x99A2, - 22587 - 11904: 0xD8B3, - 22589 - 11904: 0xDCEF, - 22591 - 11904: 0xD8AC, - 22592 - 11904: 0x9ABB, - 22596 - 11904: 0x9A65, - 22599 - 11904: 0x944E, - 22600 - 11904: 0xD8A7, - 22601 - 11904: 0xDCE7, - 22602 - 11904: 0xB6F4, - 22603 - 11904: 0xB6F7, - 22604 - 11904: 0xB6F2, - 22605 - 11904: 0xDCE6, - 22606 - 11904: 0xDCEA, - 22607 - 11904: 0xDCE5, - 22609 - 11904: 0xB6EC, - 22610 - 11904: 0xB6F6, - 22611 - 11904: 0xDCE2, - 22612 - 11904: 0xB6F0, - 22613 - 11904: 0xDCE9, - 22615 - 11904: 0xB6EE, - 22616 - 11904: 0xB6ED, - 22617 - 11904: 0xDCEC, - 22618 - 11904: 0xB6EF, - 22619 - 11904: 0xDCEE, - 22620 - 11904: 0xFB6E, - 22621 - 11904: 0xDCEB, - 22622 - 11904: 0xB6EB, - 22623 - 11904: 0x99DF, - 22626 - 11904: 0xB6F5, - 22627 - 11904: 0xDCF0, - 22628 - 11904: 0xDCE4, - 22629 - 11904: 0xDCED, - 22632 - 11904: 0xDCE3, - 22633 - 11904: 0x98E3, - 22635 - 11904: 0xB6F1, - 22636 - 11904: 0x9254, - 22637 - 11904: 0xB6F3, - 22639 - 11904: 0xDCE8, - 22641 - 11904: 0xDCF1, - 22642 - 11904: 0x967B, - 22643 - 11904: 0x8AAF, - 22644 - 11904: 0xE15D, - 22645 - 11904: 0xB9D0, - 22646 - 11904: 0xE163, - 22649 - 11904: 0xB9D5, - 22650 - 11904: 0xE15F, - 22651 - 11904: 0xE166, - 22652 - 11904: 0xE157, - 22653 - 11904: 0xB9D7, - 22654 - 11904: 0xB9D1, - 22655 - 11904: 0xE15C, - 22656 - 11904: 0xBC55, - 22657 - 11904: 0xE15B, - 22658 - 11904: 0xE164, - 22659 - 11904: 0xB9D2, - 22661 - 11904: 0xB9D6, - 22662 - 11904: 0xE15A, - 22663 - 11904: 0xE160, - 22664 - 11904: 0xE165, - 22665 - 11904: 0xE156, - 22666 - 11904: 0xB9D4, - 22667 - 11904: 0xE15E, - 22670 - 11904: 0xE162, - 22671 - 11904: 0xE168, - 22672 - 11904: 0xE158, - 22673 - 11904: 0xE161, - 22674 - 11904: 0x8C77, - 22675 - 11904: 0xB9D3, - 22676 - 11904: 0xE167, - 22678 - 11904: 0x87B0, - 22680 - 11904: 0xE159, - 22681 - 11904: 0x8BAF, - 22682 - 11904: 0x9EBD, - 22684 - 11904: 0xBC59, - 22685 - 11904: 0xE54B, - 22686 - 11904: 0xBC57, - 22687 - 11904: 0xBC56, - 22688 - 11904: 0xE54D, - 22689 - 11904: 0xE552, - 22691 - 11904: 0xE54E, - 22693 - 11904: 0xE551, - 22694 - 11904: 0xBC5C, - 22695 - 11904: 0x9EE6, - 22696 - 11904: 0xBEA5, - 22697 - 11904: 0xBC5B, - 22698 - 11904: 0xFB6F, - 22699 - 11904: 0xE54A, - 22700 - 11904: 0xE550, - 22702 - 11904: 0xBC5A, - 22703 - 11904: 0xE54F, - 22704 - 11904: 0x8EE1, - 22705 - 11904: 0xE54C, - 22707 - 11904: 0xBC58, - 22709 - 11904: 0x9B7D, - 22710 - 11904: 0x9C7E, - 22714 - 11904: 0xE94D, - 22715 - 11904: 0xF9D9, - 22716 - 11904: 0xE94F, - 22717 - 11904: 0xE94A, - 22718 - 11904: 0xBEC1, - 22719 - 11904: 0xE94C, - 22721 - 11904: 0xBEC0, - 22722 - 11904: 0xE94E, - 22725 - 11904: 0xBEC3, - 22726 - 11904: 0xE950, - 22727 - 11904: 0xBEC2, - 22728 - 11904: 0xE949, - 22729 - 11904: 0xE94B, - 22731 - 11904: 0x92EA, - 22734 - 11904: 0xC0A5, - 22735 - 11904: 0xECCC, - 22736 - 11904: 0x8C78, - 22737 - 11904: 0xC0A4, - 22738 - 11904: 0xECCD, - 22739 - 11904: 0xC0A3, - 22740 - 11904: 0xECCB, - 22741 - 11904: 0xC0A2, - 22742 - 11904: 0xECCA, - 22744 - 11904: 0xC253, - 22745 - 11904: 0xC252, - 22746 - 11904: 0xF1F6, - 22747 - 11904: 0xF1F8, - 22748 - 11904: 0xFB72, - 22749 - 11904: 0xF1F7, - 22750 - 11904: 0xC361, - 22751 - 11904: 0xC362, - 22752 - 11904: 0xFB71, - 22754 - 11904: 0xC363, - 22755 - 11904: 0xF442, - 22756 - 11904: 0xC45B, - 22759 - 11904: 0xF7D3, - 22760 - 11904: 0xF7D2, - 22761 - 11904: 0xC5F2, - 22763 - 11904: 0xA468, - 22764 - 11904: 0xA4D0, - 22767 - 11904: 0xA7A7, - 22768 - 11904: 0x895C, - 22770 - 11904: 0x98F0, - 22771 - 11904: 0x96F2, - 22772 - 11904: 0xCE5F, - 22777 - 11904: 0xB3FC, - 22778 - 11904: 0xB3FD, - 22779 - 11904: 0xFB74, - 22780 - 11904: 0xDCF2, - 22781 - 11904: 0xB9D8, - 22782 - 11904: 0xE169, - 22783 - 11904: 0xE553, - 22786 - 11904: 0x8BC1, - 22787 - 11904: 0xC95A, - 22788 - 11904: 0x895D, - 22789 - 11904: 0x89DE, - 22790 - 11904: 0xCAB0, - 22791 - 11904: 0x895E, - 22794 - 11904: 0xC6CA, - 22796 - 11904: 0xCC42, - 22797 - 11904: 0xCE60, - 22798 - 11904: 0xD159, - 22799 - 11904: 0xAE4C, - 22801 - 11904: 0xFE42, - 22802 - 11904: 0xF1F9, - 22804 - 11904: 0xC4DC, - 22805 - 11904: 0xA469, - 22806 - 11904: 0xA57E, - 22807 - 11904: 0xC970, - 22809 - 11904: 0xA667, - 22810 - 11904: 0xA668, - 22812 - 11904: 0xA95D, - 22813 - 11904: 0x8768, - 22815 - 11904: 0xFB7B, - 22816 - 11904: 0xB0F7, - 22818 - 11904: 0xB9DA, - 22820 - 11904: 0xB9DB, - 22821 - 11904: 0xB9D9, - 22823 - 11904: 0xA46A, - 22825 - 11904: 0xA4D1, - 22826 - 11904: 0xA4D3, - 22827 - 11904: 0xA4D2, - 22828 - 11904: 0xC95B, - 22829 - 11904: 0xA4D4, - 22830 - 11904: 0xA5A1, - 22831 - 11904: 0xC971, - 22833 - 11904: 0xA5A2, - 22834 - 11904: 0x895F, - 22836 - 11904: 0x8960, - 22839 - 11904: 0xA669, - 22840 - 11904: 0xA66A, - 22844 - 11904: 0xC9CB, - 22846 - 11904: 0xA7A8, - 22848 - 11904: 0xCAB1, - 22852 - 11904: 0xA961, - 22853 - 11904: 0xCC43, - 22855 - 11904: 0xA95F, - 22856 - 11904: 0xA960, - 22857 - 11904: 0xA95E, - 22858 - 11904: 0xD15A, - 22862 - 11904: 0xABB6, - 22863 - 11904: 0xABB5, - 22864 - 11904: 0xABB7, - 22865 - 11904: 0xABB4, - 22867 - 11904: 0xCE61, - 22868 - 11904: 0xA962, - 22869 - 11904: 0xABB3, - 22871 - 11904: 0xAE4D, - 22872 - 11904: 0xAE4E, - 22874 - 11904: 0xAE4F, - 22876 - 11904: 0xD4CD, - 22880 - 11904: 0xB3FE, - 22881 - 11904: 0xD8B4, - 22882 - 11904: 0xB0F8, - 22885 - 11904: 0x9BCD, - 22887 - 11904: 0xB6F8, - 22889 - 11904: 0xB9DD, - 22890 - 11904: 0xB9DC, - 22891 - 11904: 0xE16A, - 22893 - 11904: 0xBC5D, - 22894 - 11904: 0xBEC4, - 22896 - 11904: 0xEFC0, - 22897 - 11904: 0xF6DA, - 22898 - 11904: 0xF7D4, - 22899 - 11904: 0xA46B, - 22900 - 11904: 0xA5A3, - 22901 - 11904: 0x9DD3, - 22902 - 11904: 0xA5A4, - 22903 - 11904: 0xC9D1, - 22904 - 11904: 0xA66C, - 22905 - 11904: 0xA66F, - 22907 - 11904: 0xC9CF, - 22908 - 11904: 0xC9CD, - 22909 - 11904: 0xA66E, - 22910 - 11904: 0xC9D0, - 22911 - 11904: 0xC9D2, - 22912 - 11904: 0xC9CC, - 22913 - 11904: 0xA671, - 22914 - 11904: 0xA670, - 22915 - 11904: 0xA66D, - 22916 - 11904: 0xA66B, - 22917 - 11904: 0xC9CE, - 22921 - 11904: 0x984C, - 22922 - 11904: 0xA7B3, - 22925 - 11904: 0xA7B0, - 22926 - 11904: 0xCAB6, - 22927 - 11904: 0xCAB9, - 22928 - 11904: 0xCAB8, - 22930 - 11904: 0xA7AA, - 22931 - 11904: 0xA7B2, - 22932 - 11904: 0x9752, - 22934 - 11904: 0xA7AF, - 22935 - 11904: 0xCAB5, - 22936 - 11904: 0xCAB3, - 22937 - 11904: 0xA7AE, - 22938 - 11904: 0x95C3, - 22941 - 11904: 0xA7A9, - 22942 - 11904: 0xA7AC, - 22943 - 11904: 0x9BB6, - 22944 - 11904: 0xCAB4, - 22945 - 11904: 0xCABB, - 22946 - 11904: 0xCAB7, - 22947 - 11904: 0xA7AD, - 22948 - 11904: 0xA7B1, - 22949 - 11904: 0xA7B4, - 22950 - 11904: 0xCAB2, - 22951 - 11904: 0xCABA, - 22952 - 11904: 0xA7AB, - 22956 - 11904: 0x9AB9, - 22958 - 11904: 0xA967, - 22959 - 11904: 0xA96F, - 22960 - 11904: 0x97B3, - 22961 - 11904: 0xCC4F, - 22962 - 11904: 0xCC48, - 22963 - 11904: 0xA970, - 22964 - 11904: 0xCC53, - 22965 - 11904: 0xCC44, - 22966 - 11904: 0xCC4B, - 22967 - 11904: 0x9F74, - 22968 - 11904: 0x92F1, - 22969 - 11904: 0xA966, - 22970 - 11904: 0xCC45, - 22971 - 11904: 0xA964, - 22972 - 11904: 0xCC4C, - 22973 - 11904: 0xCC50, - 22974 - 11904: 0xA963, - 22975 - 11904: 0x8CFA, - 22976 - 11904: 0xCC51, - 22977 - 11904: 0xCC4A, - 22979 - 11904: 0xCC4D, - 22980 - 11904: 0x97DF, - 22981 - 11904: 0xA972, - 22982 - 11904: 0xA969, - 22983 - 11904: 0xCC54, - 22984 - 11904: 0xCC52, - 22985 - 11904: 0xFBA6, - 22986 - 11904: 0xA96E, - 22987 - 11904: 0xA96C, - 22988 - 11904: 0xCC49, - 22989 - 11904: 0xA96B, - 22990 - 11904: 0xCC47, - 22991 - 11904: 0xCC46, - 22992 - 11904: 0xA96A, - 22993 - 11904: 0xA968, - 22994 - 11904: 0xA971, - 22995 - 11904: 0xA96D, - 22996 - 11904: 0xA965, - 22998 - 11904: 0xCC4E, - 23000 - 11904: 0xABB9, - 23001 - 11904: 0xFBAB, - 23002 - 11904: 0xABC0, - 23003 - 11904: 0xCE6F, - 23004 - 11904: 0xABB8, - 23005 - 11904: 0xCE67, - 23006 - 11904: 0xCE63, - 23008 - 11904: 0xCE73, - 23009 - 11904: 0xCE62, - 23011 - 11904: 0xABBB, - 23012 - 11904: 0xCE6C, - 23013 - 11904: 0xABBE, - 23014 - 11904: 0xABC1, - 23016 - 11904: 0xABBC, - 23017 - 11904: 0xCE70, - 23018 - 11904: 0xABBF, - 23019 - 11904: 0x9877, - 23020 - 11904: 0xAE56, - 23021 - 11904: 0xCE76, - 23022 - 11904: 0xCE64, - 23023 - 11904: 0x9854, - 23024 - 11904: 0x95C5, - 23025 - 11904: 0xCE66, - 23026 - 11904: 0xCE6D, - 23027 - 11904: 0xCE71, - 23028 - 11904: 0xCE75, - 23029 - 11904: 0xCE72, - 23030 - 11904: 0xCE6B, - 23031 - 11904: 0xCE6E, - 23032 - 11904: 0x9D55, - 23033 - 11904: 0xFBB2, - 23034 - 11904: 0xCE68, - 23035 - 11904: 0xABC3, - 23036 - 11904: 0xCE6A, - 23037 - 11904: 0xCE69, - 23038 - 11904: 0xCE74, - 23039 - 11904: 0xABBA, - 23040 - 11904: 0xCE65, - 23041 - 11904: 0xABC2, - 23042 - 11904: 0x957E, - 23043 - 11904: 0xABBD, - 23049 - 11904: 0xAE5C, - 23050 - 11904: 0xD162, - 23051 - 11904: 0x9742, - 23052 - 11904: 0xAE5B, - 23053 - 11904: 0x94E6, - 23055 - 11904: 0xD160, - 23057 - 11904: 0xAE50, - 23058 - 11904: 0x92F5, - 23059 - 11904: 0xAE55, - 23061 - 11904: 0xD15F, - 23062 - 11904: 0xD15C, - 23063 - 11904: 0xD161, - 23064 - 11904: 0xAE51, - 23065 - 11904: 0xD15B, - 23066 - 11904: 0x8CC5, - 23067 - 11904: 0xAE54, - 23068 - 11904: 0xAE52, - 23070 - 11904: 0xD163, - 23071 - 11904: 0xAE53, - 23072 - 11904: 0xAE57, - 23073 - 11904: 0x92FD, - 23075 - 11904: 0xAE58, - 23076 - 11904: 0xFBA2, - 23077 - 11904: 0xAE5A, - 23079 - 11904: 0x9C51, - 23081 - 11904: 0xAE59, - 23082 - 11904: 0x94E9, - 23083 - 11904: 0x985C, - 23084 - 11904: 0x92F0, - 23085 - 11904: 0xD15D, - 23086 - 11904: 0xD15E, - 23091 - 11904: 0xD164, - 23093 - 11904: 0xD4D4, - 23094 - 11904: 0xB0F9, - 23095 - 11904: 0xD8C2, - 23096 - 11904: 0xD4D3, - 23097 - 11904: 0xD4E6, - 23100 - 11904: 0xB140, - 23101 - 11904: 0x944C, - 23102 - 11904: 0xD4E4, - 23104 - 11904: 0xB0FE, - 23105 - 11904: 0xB0FA, - 23106 - 11904: 0xD4ED, - 23107 - 11904: 0xD4DD, - 23108 - 11904: 0xD4E0, - 23109 - 11904: 0x916B, - 23110 - 11904: 0xB143, - 23111 - 11904: 0xD4EA, - 23112 - 11904: 0xD4E2, - 23113 - 11904: 0xB0FB, - 23114 - 11904: 0xB144, - 23116 - 11904: 0xD4E7, - 23117 - 11904: 0xD4E5, - 23120 - 11904: 0xD4D6, - 23121 - 11904: 0xD4EB, - 23122 - 11904: 0xD4DF, - 23123 - 11904: 0xD4DA, - 23124 - 11904: 0x8B78, - 23125 - 11904: 0xD4D0, - 23126 - 11904: 0xD4EC, - 23127 - 11904: 0xD4DC, - 23128 - 11904: 0xD4CF, - 23129 - 11904: 0x94E2, - 23130 - 11904: 0xB142, - 23131 - 11904: 0xD4E1, - 23132 - 11904: 0xD4EE, - 23133 - 11904: 0xD4DE, - 23134 - 11904: 0xD4D2, - 23135 - 11904: 0xD4D7, - 23136 - 11904: 0xD4CE, - 23137 - 11904: 0x984F, - 23138 - 11904: 0xB141, - 23139 - 11904: 0xFBB5, - 23140 - 11904: 0xD4DB, - 23141 - 11904: 0xD4D8, - 23142 - 11904: 0xB0FC, - 23143 - 11904: 0xD4D1, - 23144 - 11904: 0x9271, - 23145 - 11904: 0xD4E9, - 23146 - 11904: 0xB0FD, - 23147 - 11904: 0x9365, - 23148 - 11904: 0xD4D9, - 23149 - 11904: 0xD4D5, - 23150 - 11904: 0x985B, - 23152 - 11904: 0xD4E8, - 23153 - 11904: 0x9850, - 23159 - 11904: 0xFBB8, - 23160 - 11904: 0xD8BB, - 23161 - 11904: 0x97BC, - 23162 - 11904: 0xD8B8, - 23163 - 11904: 0xD8C9, - 23164 - 11904: 0xD8BD, - 23165 - 11904: 0xD8CA, - 23166 - 11904: 0x92F3, - 23167 - 11904: 0xB442, - 23169 - 11904: 0x9340, - 23170 - 11904: 0x984D, - 23171 - 11904: 0xD8C6, - 23172 - 11904: 0xD8C3, - 23174 - 11904: 0x9572, - 23176 - 11904: 0xFDEF, - 23178 - 11904: 0xD8C4, - 23179 - 11904: 0xD8C7, - 23180 - 11904: 0xD8CB, - 23182 - 11904: 0xD4E3, - 23183 - 11904: 0xD8CD, - 23184 - 11904: 0xDD47, - 23185 - 11904: 0xFDC1, - 23186 - 11904: 0xB443, - 23187 - 11904: 0xD8CE, - 23188 - 11904: 0xD8B6, - 23189 - 11904: 0xD8C0, - 23190 - 11904: 0xFBBA, - 23191 - 11904: 0xD8C5, - 23193 - 11904: 0x92EB, - 23194 - 11904: 0xB441, - 23195 - 11904: 0xB444, - 23196 - 11904: 0xD8CC, - 23197 - 11904: 0xD8CF, - 23198 - 11904: 0xD8BA, - 23199 - 11904: 0xD8B7, - 23200 - 11904: 0xFC73, - 23201 - 11904: 0x97B7, - 23202 - 11904: 0xD8B9, - 23204 - 11904: 0x876F, - 23205 - 11904: 0xD8BE, - 23206 - 11904: 0xD8BC, - 23207 - 11904: 0xB445, - 23209 - 11904: 0xD8C8, - 23211 - 11904: 0xFBB4, - 23212 - 11904: 0xD8BF, - 23214 - 11904: 0xD8C1, - 23215 - 11904: 0xD8B5, - 23216 - 11904: 0xDCFA, - 23217 - 11904: 0xDCF8, - 23218 - 11904: 0xB742, - 23219 - 11904: 0xB740, - 23220 - 11904: 0xDD43, - 23221 - 11904: 0xDCF9, - 23222 - 11904: 0xDD44, - 23223 - 11904: 0xDD40, - 23224 - 11904: 0xDCF7, - 23225 - 11904: 0xDD46, - 23226 - 11904: 0xDCF6, - 23227 - 11904: 0xDCFD, - 23228 - 11904: 0xB6FE, - 23229 - 11904: 0xB6FD, - 23230 - 11904: 0xB6FC, - 23231 - 11904: 0xDCFB, - 23232 - 11904: 0xDD41, - 23233 - 11904: 0xB6F9, - 23234 - 11904: 0xB741, - 23235 - 11904: 0x90A7, - 23236 - 11904: 0xDCF4, - 23238 - 11904: 0xDCFE, - 23239 - 11904: 0xDCF3, - 23240 - 11904: 0xDCFC, - 23241 - 11904: 0xB6FA, - 23242 - 11904: 0xDD42, - 23243 - 11904: 0xDCF5, - 23244 - 11904: 0xB6FB, - 23245 - 11904: 0xDD45, - 23246 - 11904: 0x9741, - 23247 - 11904: 0x92F4, - 23249 - 11904: 0x8772, - 23251 - 11904: 0xFBBC, - 23253 - 11904: 0xE16E, - 23254 - 11904: 0xB9E2, - 23255 - 11904: 0xB9E1, - 23256 - 11904: 0xB9E3, - 23257 - 11904: 0xE17A, - 23258 - 11904: 0xE170, - 23259 - 11904: 0xE176, - 23260 - 11904: 0xE16B, - 23261 - 11904: 0xE179, - 23262 - 11904: 0xE178, - 23263 - 11904: 0xE17C, - 23264 - 11904: 0xE175, - 23265 - 11904: 0xB9DE, - 23266 - 11904: 0xE174, - 23267 - 11904: 0xB9E4, - 23268 - 11904: 0x9577, - 23269 - 11904: 0xE16D, - 23270 - 11904: 0xB9DF, - 23272 - 11904: 0xE17B, - 23273 - 11904: 0xB9E0, - 23274 - 11904: 0xE16F, - 23275 - 11904: 0xE172, - 23276 - 11904: 0xE177, - 23277 - 11904: 0xE171, - 23278 - 11904: 0xE16C, - 23280 - 11904: 0x9EE2, - 23282 - 11904: 0x8F78, - 23283 - 11904: 0xE173, - 23284 - 11904: 0xE555, - 23285 - 11904: 0xBC61, - 23286 - 11904: 0xE558, - 23287 - 11904: 0xE557, - 23288 - 11904: 0xE55A, - 23289 - 11904: 0xE55C, - 23290 - 11904: 0xF9DC, - 23291 - 11904: 0xBC5F, - 23293 - 11904: 0xE556, - 23294 - 11904: 0x9672, - 23295 - 11904: 0xE554, - 23297 - 11904: 0xE55D, - 23298 - 11904: 0xE55B, - 23299 - 11904: 0xE559, - 23301 - 11904: 0xE55F, - 23303 - 11904: 0xE55E, - 23304 - 11904: 0xBC63, - 23305 - 11904: 0xBC5E, - 23307 - 11904: 0xBC60, - 23308 - 11904: 0xBC62, - 23309 - 11904: 0x9EB5, - 23311 - 11904: 0xE560, - 23312 - 11904: 0xE957, - 23313 - 11904: 0x964B, - 23315 - 11904: 0xE956, - 23316 - 11904: 0xE955, - 23317 - 11904: 0x8CAC, - 23318 - 11904: 0xE958, - 23319 - 11904: 0xE951, - 23321 - 11904: 0xE952, - 23322 - 11904: 0xE95A, - 23323 - 11904: 0xE953, - 23325 - 11904: 0xBEC5, - 23326 - 11904: 0xE95C, - 23327 - 11904: 0xA0FA, - 23328 - 11904: 0xE95B, - 23329 - 11904: 0xE954, - 23331 - 11904: 0xECD1, - 23332 - 11904: 0xC0A8, - 23333 - 11904: 0xECCF, - 23334 - 11904: 0xECD4, - 23335 - 11904: 0xECD3, - 23336 - 11904: 0xE959, - 23338 - 11904: 0xC0A7, - 23339 - 11904: 0x9575, - 23340 - 11904: 0xECD2, - 23341 - 11904: 0xECCE, - 23342 - 11904: 0xECD6, - 23343 - 11904: 0xECD5, - 23344 - 11904: 0xC0A6, - 23346 - 11904: 0xECD0, - 23348 - 11904: 0xBEC6, - 23352 - 11904: 0xC254, - 23356 - 11904: 0xEFC1, - 23357 - 11904: 0xF1FA, - 23358 - 11904: 0xF1FB, - 23359 - 11904: 0xF1FC, - 23360 - 11904: 0xC45C, - 23361 - 11904: 0x90DA, - 23363 - 11904: 0xC45D, - 23364 - 11904: 0x9367, - 23365 - 11904: 0xF443, - 23366 - 11904: 0xFEA4, - 23367 - 11904: 0xF5C8, - 23368 - 11904: 0xF5C7, - 23370 - 11904: 0x90DF, - 23371 - 11904: 0xF6DB, - 23372 - 11904: 0xF6DC, - 23373 - 11904: 0xF7D5, - 23374 - 11904: 0xF8A7, - 23375 - 11904: 0x9354, - 23376 - 11904: 0xA46C, - 23377 - 11904: 0xA46D, - 23379 - 11904: 0xA46E, - 23380 - 11904: 0xA4D5, - 23381 - 11904: 0xA5A5, - 23382 - 11904: 0xC9D3, - 23383 - 11904: 0xA672, - 23384 - 11904: 0xA673, - 23386 - 11904: 0xA7B7, - 23387 - 11904: 0xA7B8, - 23388 - 11904: 0xA7B6, - 23389 - 11904: 0xA7B5, - 23391 - 11904: 0xA973, - 23394 - 11904: 0xCC55, - 23395 - 11904: 0xA975, - 23396 - 11904: 0xA974, - 23397 - 11904: 0xCC56, - 23398 - 11904: 0x8961, - 23400 - 11904: 0x8BB4, - 23401 - 11904: 0xABC4, - 23403 - 11904: 0xAE5D, - 23404 - 11904: 0xD165, - 23405 - 11904: 0x9DC0, - 23406 - 11904: 0xD4F0, - 23408 - 11904: 0xB145, - 23409 - 11904: 0xB447, - 23410 - 11904: 0xD4EF, - 23411 - 11904: 0xB446, - 23412 - 11904: 0x8E48, - 23413 - 11904: 0xB9E5, - 23414 - 11904: 0xFBC5, - 23415 - 11904: 0xE17D, - 23416 - 11904: 0xBEC7, - 23418 - 11904: 0xC0A9, - 23419 - 11904: 0xECD7, - 23420 - 11904: 0xFBC7, - 23421 - 11904: 0xC45E, - 23423 - 11904: 0xC570, - 23424 - 11904: 0xC6CB, - 23425 - 11904: 0xC972, - 23426 - 11904: 0xFA79, - 23427 - 11904: 0xA5A6, - 23428 - 11904: 0xC973, - 23429 - 11904: 0xA676, - 23431 - 11904: 0xA674, - 23432 - 11904: 0xA675, - 23433 - 11904: 0xA677, - 23435 - 11904: 0xA7BA, - 23436 - 11904: 0xA7B9, - 23438 - 11904: 0xCABC, - 23439 - 11904: 0xA7BB, - 23440 - 11904: 0x9E67, - 23442 - 11904: 0xCABD, - 23443 - 11904: 0xCC57, - 23445 - 11904: 0xCC58, - 23446 - 11904: 0x8CD9, - 23447 - 11904: 0xA976, - 23448 - 11904: 0xA978, - 23449 - 11904: 0xA97A, - 23450 - 11904: 0xA977, - 23451 - 11904: 0xA97B, - 23452 - 11904: 0xA979, - 23453 - 11904: 0xFBD2, - 23454 - 11904: 0x8962, - 23455 - 11904: 0x8963, - 23458 - 11904: 0xABC8, - 23459 - 11904: 0xABC5, - 23460 - 11904: 0xABC7, - 23461 - 11904: 0xABC9, - 23462 - 11904: 0xABC6, - 23463 - 11904: 0xD166, - 23464 - 11904: 0xCE77, - 23466 - 11904: 0xFC7D, - 23468 - 11904: 0xD168, - 23469 - 11904: 0xD167, - 23470 - 11904: 0xAE63, - 23472 - 11904: 0xAE5F, - 23475 - 11904: 0xAE60, - 23476 - 11904: 0xAE62, - 23477 - 11904: 0xAE64, - 23478 - 11904: 0xAE61, - 23479 - 11904: 0x8773, - 23480 - 11904: 0xAE66, - 23481 - 11904: 0xAE65, - 23487 - 11904: 0xB14A, - 23488 - 11904: 0xD4F2, - 23489 - 11904: 0xD4F1, - 23490 - 11904: 0xB149, - 23491 - 11904: 0x9F6B, - 23492 - 11904: 0xB148, - 23493 - 11904: 0xB147, - 23494 - 11904: 0xB14B, - 23495 - 11904: 0xB146, - 23498 - 11904: 0xD8D5, - 23499 - 11904: 0xD8D2, - 23500 - 11904: 0xB449, - 23501 - 11904: 0xD8D1, - 23502 - 11904: 0xD8D6, - 23504 - 11904: 0xB44B, - 23505 - 11904: 0xD8D4, - 23506 - 11904: 0xB448, - 23507 - 11904: 0xB44A, - 23508 - 11904: 0xD8D3, - 23509 - 11904: 0xFBCC, - 23510 - 11904: 0xDD48, - 23511 - 11904: 0xFEAE, - 23512 - 11904: 0xDD49, - 23513 - 11904: 0xDD4A, - 23515 - 11904: 0x876D, - 23518 - 11904: 0xB9E6, - 23519 - 11904: 0xB9EE, - 23520 - 11904: 0xE17E, - 23521 - 11904: 0xB9E8, - 23522 - 11904: 0xB9EC, - 23523 - 11904: 0xE1A1, - 23524 - 11904: 0xB9ED, - 23525 - 11904: 0xB9E9, - 23526 - 11904: 0xB9EA, - 23527 - 11904: 0xB9E7, - 23528 - 11904: 0xB9EB, - 23529 - 11904: 0xBC66, - 23530 - 11904: 0xD8D0, - 23531 - 11904: 0xBC67, - 23532 - 11904: 0xBC65, - 23534 - 11904: 0xBC64, - 23535 - 11904: 0xE95D, - 23536 - 11904: 0xBEC8, - 23537 - 11904: 0xECD8, - 23538 - 11904: 0xECD9, - 23539 - 11904: 0xFBD1, - 23541 - 11904: 0xC364, - 23542 - 11904: 0xC45F, - 23544 - 11904: 0xA46F, - 23546 - 11904: 0xA678, - 23551 - 11904: 0xFB75, - 23553 - 11904: 0xABCA, - 23555 - 11904: 0xD169, - 23556 - 11904: 0xAE67, - 23557 - 11904: 0xFBD4, - 23559 - 11904: 0xB14E, - 23560 - 11904: 0xB14D, - 23561 - 11904: 0xB14C, - 23562 - 11904: 0xB44C, - 23563 - 11904: 0xB44D, - 23564 - 11904: 0xD8D7, - 23565 - 11904: 0xB9EF, - 23566 - 11904: 0xBEC9, - 23567 - 11904: 0xA470, - 23568 - 11904: 0xC95C, - 23569 - 11904: 0xA4D6, - 23570 - 11904: 0xC974, - 23571 - 11904: 0xFBD6, - 23572 - 11904: 0xFBD8, - 23573 - 11904: 0xC9D4, - 23574 - 11904: 0xA679, - 23578 - 11904: 0xA97C, - 23580 - 11904: 0x8B5D, - 23582 - 11904: 0x934C, - 23583 - 11904: 0xDD4B, - 23584 - 11904: 0x9AE2, - 23586 - 11904: 0xA471, - 23587 - 11904: 0x8BC9, - 23588 - 11904: 0xA4D7, - 23589 - 11904: 0xC9D5, - 23592 - 11904: 0xCABE, - 23594 - 11904: 0xCABF, - 23596 - 11904: 0xA7BC, - 23600 - 11904: 0xD8D8, - 23601 - 11904: 0xB44E, - 23603 - 11904: 0xDD4C, - 23607 - 11904: 0xC0AA, - 23608 - 11904: 0xA472, - 23609 - 11904: 0xA4A8, - 23610 - 11904: 0xA4D8, - 23611 - 11904: 0xC975, - 23612 - 11904: 0xA5A7, - 23614 - 11904: 0xA7C0, - 23615 - 11904: 0xA7BF, - 23616 - 11904: 0xA7BD, - 23617 - 11904: 0xA7BE, - 23620 - 11904: 0xCC59, - 23621 - 11904: 0xA97E, - 23622 - 11904: 0xA9A1, - 23623 - 11904: 0xCC5A, - 23624 - 11904: 0xA97D, - 23625 - 11904: 0xFBDB, - 23626 - 11904: 0x9FC9, - 23627 - 11904: 0xABCE, - 23628 - 11904: 0xCE78, - 23629 - 11904: 0xABCD, - 23630 - 11904: 0xABCB, - 23631 - 11904: 0xABCC, - 23632 - 11904: 0xAE6A, - 23633 - 11904: 0xAE68, - 23635 - 11904: 0x9F44, - 23636 - 11904: 0xD16B, - 23637 - 11904: 0xAE69, - 23638 - 11904: 0xD16A, - 23640 - 11904: 0xAE5E, - 23641 - 11904: 0xD4F3, - 23644 - 11904: 0xB150, - 23645 - 11904: 0xB151, - 23646 - 11904: 0x98ED, - 23648 - 11904: 0xB14F, - 23650 - 11904: 0xB9F0, - 23651 - 11904: 0xE1A2, - 23652 - 11904: 0xBC68, - 23653 - 11904: 0xBC69, - 23655 - 11904: 0xE561, - 23656 - 11904: 0xC0AB, - 23657 - 11904: 0xEFC2, - 23658 - 11904: 0xEFC3, - 23660 - 11904: 0xC4DD, - 23661 - 11904: 0xF8A8, - 23662 - 11904: 0xC94B, - 23663 - 11904: 0xA4D9, - 23665 - 11904: 0xA473, - 23667 - 11904: 0xC977, - 23668 - 11904: 0xC976, - 23672 - 11904: 0x8CE9, - 23673 - 11904: 0xA67A, - 23674 - 11904: 0xC9D7, - 23675 - 11904: 0xC9D8, - 23676 - 11904: 0xC9D6, - 23678 - 11904: 0xC9D9, - 23685 - 11904: 0xFBDD, - 23686 - 11904: 0xCAC7, - 23688 - 11904: 0xCAC2, - 23689 - 11904: 0xCAC4, - 23690 - 11904: 0xCAC6, - 23691 - 11904: 0xCAC3, - 23692 - 11904: 0xA7C4, - 23693 - 11904: 0xCAC0, - 23695 - 11904: 0xCAC1, - 23696 - 11904: 0xA7C1, - 23697 - 11904: 0xA7C2, - 23698 - 11904: 0xCAC5, - 23699 - 11904: 0xCAC8, - 23700 - 11904: 0xA7C3, - 23701 - 11904: 0xCAC9, - 23705 - 11904: 0x8DF2, - 23706 - 11904: 0x8964, - 23708 - 11904: 0xFDF2, - 23709 - 11904: 0xCC68, - 23710 - 11904: 0x934D, - 23711 - 11904: 0xCC62, - 23712 - 11904: 0xCC5D, - 23713 - 11904: 0xA9A3, - 23714 - 11904: 0xCC65, - 23715 - 11904: 0xCC63, - 23716 - 11904: 0xCC5C, - 23717 - 11904: 0xCC69, - 23718 - 11904: 0xCC6C, - 23719 - 11904: 0xCC67, - 23720 - 11904: 0xCC60, - 23721 - 11904: 0xA9A5, - 23722 - 11904: 0xCC66, - 23723 - 11904: 0xA9A6, - 23724 - 11904: 0xCC61, - 23725 - 11904: 0xCC64, - 23726 - 11904: 0xCC5B, - 23727 - 11904: 0xCC5F, - 23728 - 11904: 0xCC6B, - 23729 - 11904: 0xA9A7, - 23731 - 11904: 0xA9A8, - 23733 - 11904: 0xCC5E, - 23734 - 11904: 0xCC6A, - 23735 - 11904: 0xA9A2, - 23736 - 11904: 0xA9A4, - 23738 - 11904: 0xFBE7, - 23745 - 11904: 0xA0F2, - 23746 - 11904: 0x9868, - 23750 - 11904: 0xCEAB, - 23751 - 11904: 0xCEA4, - 23752 - 11904: 0xCEAA, - 23753 - 11904: 0xCEA3, - 23754 - 11904: 0xCEA5, - 23755 - 11904: 0xCE7D, - 23756 - 11904: 0xCE7B, - 23758 - 11904: 0xCEAC, - 23759 - 11904: 0xCEA9, - 23760 - 11904: 0xCE79, - 23761 - 11904: 0x9F58, - 23762 - 11904: 0xABD0, - 23763 - 11904: 0xCEA7, - 23764 - 11904: 0xCEA8, - 23765 - 11904: 0x8CE6, - 23766 - 11904: 0xCEA6, - 23767 - 11904: 0xCE7C, - 23768 - 11904: 0xCE7A, - 23769 - 11904: 0xABCF, - 23770 - 11904: 0xCEA2, - 23771 - 11904: 0xCE7E, - 23774 - 11904: 0xCEA1, - 23775 - 11904: 0xCEAD, - 23781 - 11904: 0x8D73, - 23784 - 11904: 0xAE6F, - 23785 - 11904: 0xFBDE, - 23786 - 11904: 0xAE6E, - 23788 - 11904: 0xD16C, - 23789 - 11904: 0xAE6B, - 23790 - 11904: 0xD16E, - 23791 - 11904: 0xFBDF, - 23792 - 11904: 0xAE70, - 23793 - 11904: 0xD16F, - 23796 - 11904: 0xAE73, - 23797 - 11904: 0x8C48, - 23798 - 11904: 0xAE71, - 23799 - 11904: 0xD170, - 23800 - 11904: 0xCEAE, - 23801 - 11904: 0xD172, - 23803 - 11904: 0xAE6D, - 23804 - 11904: 0x8774, - 23805 - 11904: 0xAE6C, - 23807 - 11904: 0xD16D, - 23808 - 11904: 0xD171, - 23809 - 11904: 0xAE72, - 23814 - 11904: 0xB153, - 23815 - 11904: 0xB152, - 23819 - 11904: 0xD4F5, - 23820 - 11904: 0xD4F9, - 23821 - 11904: 0xD4FB, - 23822 - 11904: 0xB154, - 23823 - 11904: 0xD4FE, - 23824 - 11904: 0xFBE3, - 23825 - 11904: 0xB158, - 23826 - 11904: 0xD541, - 23828 - 11904: 0xB15A, - 23829 - 11904: 0x8DA8, - 23830 - 11904: 0xB156, - 23831 - 11904: 0xB15E, - 23832 - 11904: 0xFBE4, - 23833 - 11904: 0xB15B, - 23834 - 11904: 0xD4F7, - 23835 - 11904: 0xB155, - 23837 - 11904: 0xD4F6, - 23838 - 11904: 0xD4F4, - 23839 - 11904: 0xD543, - 23840 - 11904: 0xD4F8, - 23842 - 11904: 0xB157, - 23843 - 11904: 0xD542, - 23844 - 11904: 0xB15C, - 23845 - 11904: 0xD4FD, - 23846 - 11904: 0xD4FC, - 23847 - 11904: 0xB15D, - 23848 - 11904: 0xD4FA, - 23849 - 11904: 0xB159, - 23852 - 11904: 0x9C75, - 23854 - 11904: 0xD544, - 23855 - 11904: 0x9878, - 23856 - 11904: 0xD540, - 23857 - 11904: 0xD8E7, - 23858 - 11904: 0xD8EE, - 23859 - 11904: 0xD8E3, - 23860 - 11904: 0xB451, - 23861 - 11904: 0xD8DF, - 23862 - 11904: 0xD8EF, - 23863 - 11904: 0xD8D9, - 23864 - 11904: 0xD8EC, - 23865 - 11904: 0xD8EA, - 23866 - 11904: 0xD8E4, - 23868 - 11904: 0xD8ED, - 23869 - 11904: 0xD8E6, - 23870 - 11904: 0x8D60, - 23871 - 11904: 0xD8DE, - 23872 - 11904: 0xD8F0, - 23873 - 11904: 0xD8DC, - 23874 - 11904: 0xD8E9, - 23875 - 11904: 0xD8DA, - 23877 - 11904: 0xD8F1, - 23878 - 11904: 0xFBE5, - 23879 - 11904: 0xB452, - 23880 - 11904: 0x8D61, - 23881 - 11904: 0xD8EB, - 23882 - 11904: 0xDD4F, - 23883 - 11904: 0xD8DD, - 23884 - 11904: 0xB44F, - 23886 - 11904: 0xD8E1, - 23888 - 11904: 0xB450, - 23889 - 11904: 0xD8E0, - 23890 - 11904: 0xD8E5, - 23893 - 11904: 0xD8E2, - 23894 - 11904: 0x8D62, - 23895 - 11904: 0xA0A1, - 23897 - 11904: 0xD8E8, - 23899 - 11904: 0x9C40, - 23902 - 11904: 0xDD53, - 23906 - 11904: 0xDD56, - 23907 - 11904: 0xDD4E, - 23909 - 11904: 0xDD50, - 23911 - 11904: 0xDD55, - 23912 - 11904: 0xDD54, - 23913 - 11904: 0xB743, - 23915 - 11904: 0xD8DB, - 23916 - 11904: 0xDD52, - 23919 - 11904: 0xB744, - 23920 - 11904: 0x98AD, - 23921 - 11904: 0xDD4D, - 23922 - 11904: 0xDD51, - 23924 - 11904: 0x9EEA, - 23927 - 11904: 0xE1A9, - 23928 - 11904: 0x8CEC, - 23929 - 11904: 0xE1B0, - 23930 - 11904: 0xE1A7, - 23931 - 11904: 0x8CD4, - 23932 - 11904: 0xE1AE, - 23933 - 11904: 0xE1A5, - 23934 - 11904: 0xE1AD, - 23935 - 11904: 0xE1B1, - 23936 - 11904: 0xE1A4, - 23937 - 11904: 0xE1A8, - 23938 - 11904: 0xE1A3, - 23940 - 11904: 0xB9F1, - 23941 - 11904: 0x9CEB, - 23942 - 11904: 0xE1A6, - 23943 - 11904: 0xB9F2, - 23944 - 11904: 0xE1AC, - 23945 - 11904: 0xE1AB, - 23946 - 11904: 0xE1AA, - 23947 - 11904: 0xFBE0, - 23949 - 11904: 0xE1AF, - 23950 - 11904: 0x9F51, - 23954 - 11904: 0xE565, - 23955 - 11904: 0xE567, - 23956 - 11904: 0xBC6B, - 23957 - 11904: 0xE568, - 23959 - 11904: 0xE563, - 23961 - 11904: 0xE562, - 23962 - 11904: 0xE56C, - 23964 - 11904: 0xE56A, - 23965 - 11904: 0xBC6A, - 23966 - 11904: 0xE56D, - 23967 - 11904: 0xE564, - 23968 - 11904: 0xE569, - 23969 - 11904: 0xE56B, - 23970 - 11904: 0xE566, - 23972 - 11904: 0x8D65, - 23975 - 11904: 0xE961, - 23976 - 11904: 0xE966, - 23977 - 11904: 0xE960, - 23978 - 11904: 0xE965, - 23979 - 11904: 0x9CF1, - 23980 - 11904: 0xE95E, - 23981 - 11904: 0xE968, - 23982 - 11904: 0xE964, - 23983 - 11904: 0xE969, - 23984 - 11904: 0xE963, - 23985 - 11904: 0xE95F, - 23986 - 11904: 0xE967, - 23988 - 11904: 0xE96A, - 23989 - 11904: 0xE962, - 23990 - 11904: 0xFC58, - 23991 - 11904: 0xECDA, - 23992 - 11904: 0xC0AF, - 23993 - 11904: 0x8D66, - 23994 - 11904: 0xC0AD, - 23996 - 11904: 0xC0AC, - 23997 - 11904: 0xC0AE, - 24000 - 11904: 0xEFC4, - 24001 - 11904: 0x9654, - 24002 - 11904: 0xF172, - 24003 - 11904: 0xF1FD, - 24006 - 11904: 0xF444, - 24007 - 11904: 0xF445, - 24009 - 11904: 0xC460, - 24011 - 11904: 0xF5C9, - 24013 - 11904: 0xC4DE, - 24015 - 11904: 0xF5CA, - 24017 - 11904: 0xF6DE, - 24018 - 11904: 0xC572, - 24020 - 11904: 0xC571, - 24021 - 11904: 0xF6DD, - 24022 - 11904: 0xC5C9, - 24023 - 11904: 0xFBE8, - 24024 - 11904: 0xF7D6, - 24027 - 11904: 0xC6CC, - 24029 - 11904: 0xA474, - 24030 - 11904: 0xA67B, - 24031 - 11904: 0xC9DA, - 24032 - 11904: 0xCACA, - 24033 - 11904: 0xA8B5, - 24034 - 11904: 0xB15F, - 24037 - 11904: 0xA475, - 24038 - 11904: 0xA5AA, - 24039 - 11904: 0xA5A9, - 24040 - 11904: 0xA5A8, - 24043 - 11904: 0xA7C5, - 24046 - 11904: 0xAE74, - 24048 - 11904: 0xDD57, - 24049 - 11904: 0xA476, - 24050 - 11904: 0xA477, - 24051 - 11904: 0xA478, - 24052 - 11904: 0xA4DA, - 24053 - 11904: 0x9FCE, - 24055 - 11904: 0xABD1, - 24057 - 11904: 0xCEAF, - 24061 - 11904: 0xB453, - 24062 - 11904: 0xA479, - 24063 - 11904: 0xC95D, - 24066 - 11904: 0xA5AB, - 24067 - 11904: 0xA5AC, - 24068 - 11904: 0xC978, - 24070 - 11904: 0xA67C, - 24073 - 11904: 0xFBFC, - 24074 - 11904: 0xCACB, - 24075 - 11904: 0x9AE4, - 24076 - 11904: 0xA7C6, - 24078 - 11904: 0xCACC, - 24081 - 11904: 0xA9AE, - 24082 - 11904: 0x9F75, - 24084 - 11904: 0xCC6E, - 24085 - 11904: 0xA9AC, - 24086 - 11904: 0xA9AB, - 24087 - 11904: 0xCC6D, - 24088 - 11904: 0xA9A9, - 24089 - 11904: 0xCC6F, - 24090 - 11904: 0xA9AA, - 24091 - 11904: 0xA9AD, - 24093 - 11904: 0xABD2, - 24095 - 11904: 0xABD4, - 24096 - 11904: 0xCEB3, - 24097 - 11904: 0xCEB0, - 24098 - 11904: 0xCEB1, - 24099 - 11904: 0xCEB2, - 24100 - 11904: 0xCEB4, - 24101 - 11904: 0xABD3, - 24104 - 11904: 0xD174, - 24105 - 11904: 0xD173, - 24107 - 11904: 0xAE76, - 24109 - 11904: 0xAE75, - 24110 - 11904: 0xFBF1, - 24115 - 11904: 0xB162, - 24116 - 11904: 0xD546, - 24118 - 11904: 0xB161, - 24119 - 11904: 0xB163, - 24120 - 11904: 0xB160, - 24125 - 11904: 0xB455, - 24126 - 11904: 0xD545, - 24128 - 11904: 0xB456, - 24129 - 11904: 0xD8F3, - 24130 - 11904: 0x8D69, - 24131 - 11904: 0xB457, - 24132 - 11904: 0xD8F2, - 24133 - 11904: 0xB454, - 24136 - 11904: 0x934F, - 24138 - 11904: 0xDD5A, - 24139 - 11904: 0xDD5C, - 24140 - 11904: 0xB745, - 24141 - 11904: 0xDD5B, - 24142 - 11904: 0xDD59, - 24143 - 11904: 0xDD58, - 24147 - 11904: 0xE1B4, - 24148 - 11904: 0xB9F7, - 24149 - 11904: 0xB9F5, - 24151 - 11904: 0xB9F6, - 24152 - 11904: 0xE1B2, - 24153 - 11904: 0xE1B3, - 24155 - 11904: 0xB9F3, - 24156 - 11904: 0xE571, - 24157 - 11904: 0xE56F, - 24158 - 11904: 0x934E, - 24159 - 11904: 0xBC6D, - 24160 - 11904: 0xE570, - 24161 - 11904: 0xBC6E, - 24162 - 11904: 0xBC6C, - 24163 - 11904: 0xB9F4, - 24166 - 11904: 0xE96D, - 24167 - 11904: 0xE96B, - 24168 - 11904: 0xE96C, - 24169 - 11904: 0xE56E, - 24170 - 11904: 0xECDC, - 24171 - 11904: 0xC0B0, - 24172 - 11904: 0xECDB, - 24173 - 11904: 0xEFC5, - 24174 - 11904: 0xEFC6, - 24175 - 11904: 0xE96E, - 24176 - 11904: 0xF1FE, - 24178 - 11904: 0xA47A, - 24179 - 11904: 0xA5AD, - 24180 - 11904: 0xA67E, - 24181 - 11904: 0xFBF3, - 24182 - 11904: 0xA67D, - 24184 - 11904: 0xA9AF, - 24185 - 11904: 0xB746, - 24186 - 11904: 0xFBF4, - 24187 - 11904: 0xA4DB, - 24188 - 11904: 0xA5AE, - 24189 - 11904: 0xABD5, - 24190 - 11904: 0xB458, - 24191 - 11904: 0xC6CE, - 24192 - 11904: 0xC979, - 24194 - 11904: 0xC97A, - 24195 - 11904: 0xFBC3, - 24196 - 11904: 0xC9DC, - 24198 - 11904: 0x8965, - 24199 - 11904: 0xA7C8, - 24200 - 11904: 0xCAD0, - 24201 - 11904: 0xCACE, - 24202 - 11904: 0xA7C9, - 24203 - 11904: 0xCACD, - 24204 - 11904: 0xCACF, - 24205 - 11904: 0xCAD1, - 24207 - 11904: 0xA7C7, - 24210 - 11904: 0x8C7A, - 24213 - 11904: 0xA9B3, - 24214 - 11904: 0xA9B4, - 24215 - 11904: 0xA9B1, - 24217 - 11904: 0x8C7B, - 24218 - 11904: 0xA9B0, - 24219 - 11904: 0xCEB8, - 24220 - 11904: 0xA9B2, - 24224 - 11904: 0xABD6, - 24226 - 11904: 0xCEB7, - 24227 - 11904: 0xCEB9, - 24228 - 11904: 0xCEB6, - 24229 - 11904: 0xCEBA, - 24230 - 11904: 0xABD7, - 24231 - 11904: 0xAE79, - 24232 - 11904: 0xD175, - 24234 - 11904: 0xD177, - 24235 - 11904: 0xAE77, - 24236 - 11904: 0xD178, - 24237 - 11904: 0xAE78, - 24238 - 11904: 0xD176, - 24240 - 11904: 0xCEB5, - 24241 - 11904: 0xD547, - 24242 - 11904: 0xD54A, - 24243 - 11904: 0xD54B, - 24244 - 11904: 0xD548, - 24245 - 11904: 0xB167, - 24246 - 11904: 0xB166, - 24247 - 11904: 0xB164, - 24248 - 11904: 0xB165, - 24249 - 11904: 0xD549, - 24253 - 11904: 0x8D6A, - 24254 - 11904: 0xB168, - 24257 - 11904: 0xB45A, - 24258 - 11904: 0xB45B, - 24260 - 11904: 0xB45C, - 24261 - 11904: 0xDD5D, - 24262 - 11904: 0xDD5F, - 24263 - 11904: 0xDD61, - 24264 - 11904: 0xB748, - 24265 - 11904: 0xB747, - 24266 - 11904: 0xB459, - 24267 - 11904: 0xDD60, - 24268 - 11904: 0xDD5E, - 24269 - 11904: 0x9353, - 24270 - 11904: 0xE1B8, - 24272 - 11904: 0xFBF9, - 24273 - 11904: 0xE1B6, - 24274 - 11904: 0xE1BC, - 24275 - 11904: 0xB9F8, - 24276 - 11904: 0xE1BD, - 24277 - 11904: 0xE1BA, - 24278 - 11904: 0xB9F9, - 24279 - 11904: 0xE1B7, - 24280 - 11904: 0xE1B5, - 24281 - 11904: 0xE1BB, - 24282 - 11904: 0xBC70, - 24283 - 11904: 0xE573, - 24284 - 11904: 0xE1B9, - 24285 - 11904: 0xBC72, - 24286 - 11904: 0xE574, - 24287 - 11904: 0xBC71, - 24288 - 11904: 0xBC74, - 24289 - 11904: 0xE575, - 24290 - 11904: 0xBC6F, - 24291 - 11904: 0xBC73, - 24293 - 11904: 0xE973, - 24294 - 11904: 0xE971, - 24295 - 11904: 0xE970, - 24296 - 11904: 0xE972, - 24297 - 11904: 0xE96F, - 24300 - 11904: 0xC366, - 24302 - 11904: 0xF446, - 24303 - 11904: 0xF447, - 24305 - 11904: 0xF5CB, - 24306 - 11904: 0xF6DF, - 24307 - 11904: 0xC655, - 24308 - 11904: 0xFBFD, - 24310 - 11904: 0xA9B5, - 24311 - 11904: 0xA7CA, - 24312 - 11904: 0x9059, - 24313 - 11904: 0xFC40, - 24314 - 11904: 0xABD8, - 24315 - 11904: 0xFC41, - 24316 - 11904: 0xFC43, - 24318 - 11904: 0xA47B, - 24319 - 11904: 0xA4DC, - 24321 - 11904: 0xA5AF, - 24322 - 11904: 0xC9DD, - 24324 - 11904: 0xA7CB, - 24325 - 11904: 0xCAD2, - 24327 - 11904: 0xCEBB, - 24328 - 11904: 0xABD9, - 24330 - 11904: 0xB9FA, - 24331 - 11904: 0xA47C, - 24332 - 11904: 0x9FD8, - 24333 - 11904: 0xFC46, - 24334 - 11904: 0x9362, - 24335 - 11904: 0xA6A1, - 24338 - 11904: 0xB749, - 24339 - 11904: 0xA47D, - 24340 - 11904: 0xA4DD, - 24341 - 11904: 0xA4DE, - 24343 - 11904: 0xA5B1, - 24344 - 11904: 0xA5B0, - 24346 - 11904: 0xC9DE, - 24347 - 11904: 0xA6A2, - 24349 - 11904: 0xCAD3, - 24351 - 11904: 0xA7CC, - 24354 - 11904: 0xCC71, - 24355 - 11904: 0xCC72, - 24356 - 11904: 0xCC73, - 24357 - 11904: 0x8D6B, - 24358 - 11904: 0xA9B6, - 24359 - 11904: 0xA9B7, - 24360 - 11904: 0xCC70, - 24361 - 11904: 0xA9B8, - 24365 - 11904: 0xABDA, - 24366 - 11904: 0xCEBC, - 24368 - 11904: 0xD17A, - 24369 - 11904: 0xAE7A, - 24371 - 11904: 0xD179, - 24373 - 11904: 0xB169, - 24374 - 11904: 0xD54C, - 24375 - 11904: 0xB16A, - 24376 - 11904: 0xD54D, - 24378 - 11904: 0xFC4C, - 24379 - 11904: 0x8CFE, - 24380 - 11904: 0xB45D, - 24384 - 11904: 0xDD62, - 24387 - 11904: 0xE1BF, - 24388 - 11904: 0xE1BE, - 24390 - 11904: 0xB9FB, - 24392 - 11904: 0xBC75, - 24393 - 11904: 0xE576, - 24394 - 11904: 0xBECA, - 24395 - 11904: 0xE974, - 24396 - 11904: 0xC0B1, - 24397 - 11904: 0x95B8, - 24398 - 11904: 0xC573, - 24399 - 11904: 0xF7D8, - 24400 - 11904: 0xC6D0, - 24401 - 11904: 0x8BCA, - 24404 - 11904: 0xCC74, - 24406 - 11904: 0xCEBD, - 24407 - 11904: 0xB16B, - 24408 - 11904: 0xFC4F, - 24409 - 11904: 0xB74A, - 24412 - 11904: 0x987A, - 24413 - 11904: 0xC255, - 24417 - 11904: 0xC6D1, - 24418 - 11904: 0xA7CE, - 24419 - 11904: 0xFC51, - 24420 - 11904: 0xA7CD, - 24421 - 11904: 0xABDB, - 24423 - 11904: 0xD17B, - 24425 - 11904: 0xB16D, - 24426 - 11904: 0xB343, - 24427 - 11904: 0xB16E, - 24428 - 11904: 0xB16C, - 24429 - 11904: 0xB45E, - 24431 - 11904: 0xE1C0, - 24432 - 11904: 0xB9FC, - 24433 - 11904: 0xBC76, - 24434 - 11904: 0xFC54, - 24435 - 11904: 0xC94C, - 24436 - 11904: 0xC9DF, - 24438 - 11904: 0xCAD5, - 24439 - 11904: 0xA7CF, - 24440 - 11904: 0xCAD4, - 24441 - 11904: 0xA7D0, - 24443 - 11904: 0xFAAF, - 24444 - 11904: 0xA9BC, - 24445 - 11904: 0xCC77, - 24446 - 11904: 0xCC76, - 24447 - 11904: 0xA9BB, - 24448 - 11904: 0xA9B9, - 24449 - 11904: 0xA9BA, - 24450 - 11904: 0xCC75, - 24451 - 11904: 0x8D6C, - 24453 - 11904: 0xABDD, - 24454 - 11904: 0xCEBE, - 24455 - 11904: 0xABE0, - 24456 - 11904: 0xABDC, - 24457 - 11904: 0xABE2, - 24458 - 11904: 0xABDE, - 24459 - 11904: 0xABDF, - 24460 - 11904: 0xABE1, - 24464 - 11904: 0xAE7D, - 24465 - 11904: 0xAE7C, - 24466 - 11904: 0xAE7B, - 24470 - 11904: 0xD54F, - 24471 - 11904: 0xB16F, - 24472 - 11904: 0xB172, - 24473 - 11904: 0xB170, - 24475 - 11904: 0xD54E, - 24476 - 11904: 0xB175, - 24478 - 11904: 0xB171, - 24479 - 11904: 0xD550, - 24480 - 11904: 0xB174, - 24481 - 11904: 0xB173, - 24484 - 11904: 0xFA61, - 24485 - 11904: 0xD8F6, - 24486 - 11904: 0xD8F5, - 24487 - 11904: 0xFC57, - 24488 - 11904: 0xB461, - 24489 - 11904: 0xB45F, - 24490 - 11904: 0xB460, - 24491 - 11904: 0xD8F7, - 24492 - 11904: 0xB74B, - 24493 - 11904: 0xDD64, - 24494 - 11904: 0xB74C, - 24495 - 11904: 0xDD63, - 24497 - 11904: 0x9B70, - 24498 - 11904: 0xE577, - 24501 - 11904: 0xBC78, - 24502 - 11904: 0xE1C1, - 24503 - 11904: 0xBC77, - 24505 - 11904: 0xB9FD, - 24506 - 11904: 0xA051, - 24507 - 11904: 0xECDE, - 24508 - 11904: 0xE975, - 24509 - 11904: 0xC0B2, - 24510 - 11904: 0xECDD, - 24511 - 11904: 0xF240, - 24512 - 11904: 0xF448, - 24513 - 11904: 0xF449, - 24514 - 11904: 0x8C7C, - 24515 - 11904: 0xA4DF, - 24516 - 11904: 0x8BCB, - 24517 - 11904: 0xA5B2, - 24521 - 11904: 0xC97B, - 24524 - 11904: 0xA7D2, - 24525 - 11904: 0xA7D4, - 24527 - 11904: 0xC9E2, - 24528 - 11904: 0xCAD8, - 24529 - 11904: 0xCAD7, - 24530 - 11904: 0xCAD6, - 24532 - 11904: 0xC9E1, - 24533 - 11904: 0xC9E0, - 24534 - 11904: 0xA6A4, - 24535 - 11904: 0xA7D3, - 24536 - 11904: 0xA7D1, - 24537 - 11904: 0xA6A3, - 24539 - 11904: 0x936E, - 24541 - 11904: 0xA9BD, - 24542 - 11904: 0xCC78, - 24543 - 11904: 0xFCD5, - 24544 - 11904: 0xA9BE, - 24545 - 11904: 0xCADD, - 24547 - 11904: 0xCADF, - 24548 - 11904: 0xCADE, - 24549 - 11904: 0xCC79, - 24552 - 11904: 0xCADA, - 24554 - 11904: 0xA7D8, - 24555 - 11904: 0xA7D6, - 24557 - 11904: 0xCAD9, - 24558 - 11904: 0xCADB, - 24559 - 11904: 0xCAE1, - 24561 - 11904: 0xA7D5, - 24563 - 11904: 0xCADC, - 24564 - 11904: 0xCAE5, - 24565 - 11904: 0xA9C0, - 24567 - 11904: 0xCAE2, - 24568 - 11904: 0xA7D7, - 24570 - 11904: 0xCAE0, - 24571 - 11904: 0xCAE3, - 24573 - 11904: 0xA9BF, - 24575 - 11904: 0xA9C1, - 24576 - 11904: 0xCAE4, - 24585 - 11904: 0xCCAF, - 24586 - 11904: 0xCCA2, - 24587 - 11904: 0xCC7E, - 24588 - 11904: 0xCCAE, - 24589 - 11904: 0xCCA9, - 24590 - 11904: 0xABE7, - 24591 - 11904: 0xA9C2, - 24592 - 11904: 0xCCAA, - 24593 - 11904: 0xCCAD, - 24594 - 11904: 0xABE3, - 24595 - 11904: 0xCCAC, - 24596 - 11904: 0xA9C3, - 24597 - 11904: 0xA9C8, - 24598 - 11904: 0xA9C6, - 24599 - 11904: 0xCCA3, - 24601 - 11904: 0xCC7C, - 24602 - 11904: 0xCCA5, - 24603 - 11904: 0xA9CD, - 24604 - 11904: 0xCCB0, - 24605 - 11904: 0xABE4, - 24606 - 11904: 0xCCA6, - 24608 - 11904: 0xABE5, - 24609 - 11904: 0xA9C9, - 24610 - 11904: 0xCCA8, - 24611 - 11904: 0xFCA9, - 24612 - 11904: 0xCECD, - 24613 - 11904: 0xABE6, - 24614 - 11904: 0xCC7B, - 24615 - 11904: 0xA9CA, - 24616 - 11904: 0xABE8, - 24617 - 11904: 0xA9CB, - 24618 - 11904: 0xA9C7, - 24619 - 11904: 0xA9CC, - 24620 - 11904: 0xCCA7, - 24621 - 11904: 0xCC7A, - 24622 - 11904: 0xCCAB, - 24623 - 11904: 0xA9C4, - 24625 - 11904: 0xFC61, - 24626 - 11904: 0xCC7D, - 24627 - 11904: 0xCCA4, - 24628 - 11904: 0xCCA1, - 24629 - 11904: 0xA9C5, - 24631 - 11904: 0xCEBF, - 24633 - 11904: 0xCEC0, - 24635 - 11904: 0x8966, - 24640 - 11904: 0xCECA, - 24641 - 11904: 0xD1A1, - 24642 - 11904: 0xCECB, - 24643 - 11904: 0xABEE, - 24644 - 11904: 0xCECE, - 24645 - 11904: 0xCEC4, - 24646 - 11904: 0xABED, - 24647 - 11904: 0xCEC6, - 24649 - 11904: 0xCEC7, - 24650 - 11904: 0xFACB, - 24652 - 11904: 0xCEC9, - 24653 - 11904: 0xABE9, - 24656 - 11904: 0xAEA3, - 24658 - 11904: 0xF9DA, - 24659 - 11904: 0xCEC5, - 24660 - 11904: 0xCEC1, - 24661 - 11904: 0xAEA4, - 24664 - 11904: 0xCECF, - 24665 - 11904: 0xAE7E, - 24666 - 11904: 0xD17D, - 24667 - 11904: 0xCEC8, - 24669 - 11904: 0xD17C, - 24670 - 11904: 0xCEC3, - 24671 - 11904: 0xCECC, - 24674 - 11904: 0xABEC, - 24675 - 11904: 0xAEA1, - 24676 - 11904: 0xABF2, - 24677 - 11904: 0xAEA2, - 24678 - 11904: 0xCED0, - 24679 - 11904: 0xD17E, - 24680 - 11904: 0xABEB, - 24681 - 11904: 0xAEA6, - 24682 - 11904: 0xABF1, - 24683 - 11904: 0xABF0, - 24684 - 11904: 0xABEF, - 24685 - 11904: 0xAEA5, - 24686 - 11904: 0xCED1, - 24687 - 11904: 0xAEA7, - 24688 - 11904: 0xABEA, - 24690 - 11904: 0xCEC2, - 24693 - 11904: 0x937A, - 24695 - 11904: 0xA0E0, - 24702 - 11904: 0x936B, - 24703 - 11904: 0xB176, - 24704 - 11904: 0xD1A4, - 24705 - 11904: 0xD1A6, - 24707 - 11904: 0xD1A8, - 24708 - 11904: 0xAEA8, - 24709 - 11904: 0xAEAE, - 24710 - 11904: 0xD553, - 24711 - 11904: 0xD1AC, - 24712 - 11904: 0xD1A3, - 24713 - 11904: 0xB178, - 24714 - 11904: 0xD551, - 24716 - 11904: 0xAEAD, - 24717 - 11904: 0xAEAB, - 24718 - 11904: 0xD1AE, - 24720 - 11904: 0xD552, - 24722 - 11904: 0xD1A5, - 24724 - 11904: 0xAEAC, - 24725 - 11904: 0xD1A9, - 24726 - 11904: 0xAEAF, - 24727 - 11904: 0xD1AB, - 24730 - 11904: 0xAEAA, - 24731 - 11904: 0xD1AA, - 24732 - 11904: 0xD1AD, - 24733 - 11904: 0xD1A7, - 24734 - 11904: 0xFC6B, - 24735 - 11904: 0xAEA9, - 24736 - 11904: 0xB179, - 24738 - 11904: 0xD1A2, - 24739 - 11904: 0xB177, - 24740 - 11904: 0xFC6C, - 24743 - 11904: 0x9468, - 24744 - 11904: 0xB17A, - 24752 - 11904: 0xD555, - 24753 - 11904: 0xD55E, - 24754 - 11904: 0xB464, - 24755 - 11904: 0xFC6D, - 24756 - 11904: 0xB17C, - 24757 - 11904: 0xB1A3, - 24758 - 11904: 0xB465, - 24759 - 11904: 0xD560, - 24760 - 11904: 0xB1AA, - 24761 - 11904: 0xD8F9, - 24762 - 11904: 0xD556, - 24763 - 11904: 0xB1A2, - 24764 - 11904: 0xB1A5, - 24765 - 11904: 0xB17E, - 24766 - 11904: 0xD554, - 24767 - 11904: 0xD562, - 24768 - 11904: 0xD565, - 24769 - 11904: 0xD949, - 24771 - 11904: 0xD563, - 24772 - 11904: 0xD8FD, - 24773 - 11904: 0xB1A1, - 24774 - 11904: 0xB1A8, - 24775 - 11904: 0xB1AC, - 24776 - 11904: 0xD55D, - 24777 - 11904: 0xD8F8, - 24778 - 11904: 0xD561, - 24779 - 11904: 0xB17B, - 24780 - 11904: 0xD8FA, - 24781 - 11904: 0xD564, - 24782 - 11904: 0xD8FC, - 24783 - 11904: 0xD559, - 24785 - 11904: 0xB462, - 24787 - 11904: 0xD557, - 24788 - 11904: 0xD558, - 24789 - 11904: 0xB1A7, - 24791 - 11904: 0x8D71, - 24792 - 11904: 0xB1A6, - 24793 - 11904: 0xD55B, - 24794 - 11904: 0xB1AB, - 24795 - 11904: 0xD55F, - 24796 - 11904: 0xB1A4, - 24797 - 11904: 0xD55C, - 24798 - 11904: 0xFD64, - 24799 - 11904: 0xB1A9, - 24800 - 11904: 0xB466, - 24801 - 11904: 0xB463, - 24802 - 11904: 0xD8FB, - 24803 - 11904: 0x99BA, - 24804 - 11904: 0xD55A, - 24806 - 11904: 0xB17D, - 24807 - 11904: 0x9AD0, - 24808 - 11904: 0x9A61, - 24809 - 11904: 0xA0E5, - 24816 - 11904: 0xB46B, - 24817 - 11904: 0xB46F, - 24818 - 11904: 0xD940, - 24819 - 11904: 0xB751, - 24820 - 11904: 0xB46D, - 24821 - 11904: 0xD944, - 24822 - 11904: 0xB471, - 24823 - 11904: 0xDD65, - 24824 - 11904: 0xD946, - 24825 - 11904: 0xB753, - 24826 - 11904: 0xB469, - 24827 - 11904: 0xB46C, - 24828 - 11904: 0xD947, - 24829 - 11904: 0xA05B, - 24830 - 11904: 0xD948, - 24831 - 11904: 0xD94E, - 24832 - 11904: 0xB473, - 24833 - 11904: 0xB754, - 24835 - 11904: 0xD94A, - 24836 - 11904: 0xD94F, - 24837 - 11904: 0xD943, - 24838 - 11904: 0xB75E, - 24839 - 11904: 0x96AC, - 24840 - 11904: 0xB755, - 24841 - 11904: 0xB472, - 24842 - 11904: 0xD941, - 24843 - 11904: 0xD950, - 24844 - 11904: 0x9740, - 24845 - 11904: 0xB75D, - 24846 - 11904: 0xB470, - 24847 - 11904: 0xB74E, - 24848 - 11904: 0xD94D, - 24850 - 11904: 0xB474, - 24851 - 11904: 0xD945, - 24852 - 11904: 0xD8FE, - 24853 - 11904: 0xB46A, - 24854 - 11904: 0xD942, - 24856 - 11904: 0xD94B, - 24857 - 11904: 0x9EF1, - 24858 - 11904: 0xB74D, - 24859 - 11904: 0xB752, - 24860 - 11904: 0xB467, - 24861 - 11904: 0xD94C, - 24863 - 11904: 0xB750, - 24866 - 11904: 0x8C4D, - 24867 - 11904: 0xB468, - 24871 - 11904: 0xB75C, - 24872 - 11904: 0xE1C3, - 24873 - 11904: 0xDD70, - 24875 - 11904: 0xDD68, - 24876 - 11904: 0xE1C2, - 24878 - 11904: 0xDD6C, - 24879 - 11904: 0xDD6E, - 24880 - 11904: 0x9F7E, - 24882 - 11904: 0xDD6B, - 24884 - 11904: 0xB75B, - 24886 - 11904: 0xDD6A, - 24887 - 11904: 0xB75F, - 24891 - 11904: 0xE1D2, - 24893 - 11904: 0x8D72, - 24894 - 11904: 0xB75A, - 24895 - 11904: 0xBA40, - 24896 - 11904: 0xDD71, - 24897 - 11904: 0xE1C4, - 24898 - 11904: 0xFC76, - 24900 - 11904: 0xB758, - 24901 - 11904: 0xDD69, - 24902 - 11904: 0xDD6D, - 24903 - 11904: 0xB9FE, - 24904 - 11904: 0xB74F, - 24905 - 11904: 0xDD66, - 24906 - 11904: 0xDD67, - 24907 - 11904: 0xBA41, - 24908 - 11904: 0xB757, - 24909 - 11904: 0xB759, - 24910 - 11904: 0xB756, - 24911 - 11904: 0xDD6F, - 24912 - 11904: 0x96A9, - 24914 - 11904: 0xE1C8, - 24915 - 11904: 0xE1C9, - 24916 - 11904: 0xE1CE, - 24917 - 11904: 0xBC7D, - 24918 - 11904: 0xE1D5, - 24920 - 11904: 0xBA47, - 24921 - 11904: 0xA06E, - 24922 - 11904: 0xBA46, - 24923 - 11904: 0xE1D0, - 24924 - 11904: 0xFCAA, - 24925 - 11904: 0xBC7C, - 24926 - 11904: 0xE1C5, - 24927 - 11904: 0xBA45, - 24928 - 11904: 0xFBCD, - 24929 - 11904: 0xE1D4, - 24930 - 11904: 0xBA43, - 24931 - 11904: 0xBA44, - 24932 - 11904: 0xFC74, - 24933 - 11904: 0xE1D1, - 24934 - 11904: 0xE5AA, - 24935 - 11904: 0xBC7A, - 24936 - 11904: 0xB46E, - 24938 - 11904: 0xE1D3, - 24939 - 11904: 0xBCA3, - 24940 - 11904: 0xE1CB, - 24942 - 11904: 0xBC7B, - 24943 - 11904: 0xA074, - 24944 - 11904: 0xBCA2, - 24945 - 11904: 0xE1C6, - 24946 - 11904: 0xE1CA, - 24947 - 11904: 0xE1C7, - 24948 - 11904: 0xE1CD, - 24949 - 11904: 0xBA48, - 24950 - 11904: 0xBC79, - 24951 - 11904: 0xBA42, - 24953 - 11904: 0xE57A, - 24954 - 11904: 0xE1CF, - 24956 - 11904: 0xBCA1, - 24957 - 11904: 0xA071, - 24958 - 11904: 0xBCA4, - 24960 - 11904: 0xE1CC, - 24961 - 11904: 0xFC79, - 24962 - 11904: 0xBC7E, - 24963 - 11904: 0xE579, - 24967 - 11904: 0xFC7C, - 24969 - 11904: 0xE57E, - 24970 - 11904: 0xBECE, - 24971 - 11904: 0xE578, - 24972 - 11904: 0xE9A3, - 24973 - 11904: 0xE5A9, - 24974 - 11904: 0xBCA8, - 24976 - 11904: 0xBCA6, - 24977 - 11904: 0xBECC, - 24978 - 11904: 0xE5A6, - 24979 - 11904: 0xE5A2, - 24980 - 11904: 0xBCAC, - 24981 - 11904: 0x9C50, - 24982 - 11904: 0xE978, - 24984 - 11904: 0x9379, - 24985 - 11904: 0x9378, - 24986 - 11904: 0xBCAA, - 24987 - 11904: 0xE5A1, - 24988 - 11904: 0xA0DD, - 24989 - 11904: 0xE976, - 24991 - 11904: 0xE5A5, - 24993 - 11904: 0xE5A8, - 24994 - 11904: 0xE57D, - 24996 - 11904: 0xBCAB, - 24999 - 11904: 0xBCA5, - 25000 - 11904: 0xE977, - 25001 - 11904: 0xBECD, - 25002 - 11904: 0xE5A7, - 25003 - 11904: 0xBCA7, - 25004 - 11904: 0xBCA9, - 25005 - 11904: 0xE5A4, - 25006 - 11904: 0xBCAD, - 25007 - 11904: 0xE5A3, - 25008 - 11904: 0xE57C, - 25009 - 11904: 0xE57B, - 25010 - 11904: 0xBECB, - 25011 - 11904: 0xE5AB, - 25012 - 11904: 0xE97A, - 25013 - 11904: 0xECE0, - 25014 - 11904: 0xBED0, - 25015 - 11904: 0x8D75, - 25016 - 11904: 0xE9A2, - 25017 - 11904: 0x8D76, - 25018 - 11904: 0xE97E, - 25020 - 11904: 0xECE1, - 25022 - 11904: 0xBED1, - 25023 - 11904: 0xE9A1, - 25024 - 11904: 0x9374, - 25025 - 11904: 0xE97C, - 25026 - 11904: 0xC0B4, - 25027 - 11904: 0xECDF, - 25029 - 11904: 0xE979, - 25030 - 11904: 0xE97B, - 25031 - 11904: 0xC0B5, - 25032 - 11904: 0xBED3, - 25033 - 11904: 0xC0B3, - 25034 - 11904: 0xBED2, - 25035 - 11904: 0xC0B7, - 25036 - 11904: 0xE97D, - 25037 - 11904: 0xBECF, - 25039 - 11904: 0x8D77, - 25040 - 11904: 0xFCA5, - 25043 - 11904: 0xFCA2, - 25046 - 11904: 0xEFCF, - 25048 - 11904: 0xEFC7, - 25050 - 11904: 0x90C3, - 25054 - 11904: 0xECE7, - 25055 - 11904: 0xEFC8, - 25056 - 11904: 0xECE3, - 25058 - 11904: 0xA079, - 25059 - 11904: 0xC256, - 25060 - 11904: 0xECE5, - 25061 - 11904: 0xECE4, - 25062 - 11904: 0xC0B6, - 25063 - 11904: 0xECE2, - 25064 - 11904: 0xECE6, - 25065 - 11904: 0xEFD0, - 25066 - 11904: 0xEFCC, - 25067 - 11904: 0xEFCE, - 25069 - 11904: 0xEFC9, - 25070 - 11904: 0xEFCA, - 25072 - 11904: 0xEFCD, - 25073 - 11904: 0xEFCB, - 25074 - 11904: 0xC367, - 25077 - 11904: 0xC36A, - 25078 - 11904: 0xC369, - 25079 - 11904: 0xC368, - 25080 - 11904: 0xC461, - 25081 - 11904: 0xF44A, - 25082 - 11904: 0xC462, - 25083 - 11904: 0xF241, - 25084 - 11904: 0xC4DF, - 25085 - 11904: 0xF5CC, - 25086 - 11904: 0xC4E0, - 25087 - 11904: 0xC574, - 25088 - 11904: 0xC5CA, - 25089 - 11904: 0xF7D9, - 25091 - 11904: 0xF7DA, - 25092 - 11904: 0xF7DB, - 25095 - 11904: 0xF9BA, - 25096 - 11904: 0xA4E0, - 25097 - 11904: 0xC97C, - 25098 - 11904: 0xA5B3, - 25100 - 11904: 0xA6A6, - 25101 - 11904: 0xA6A7, - 25102 - 11904: 0xA6A5, - 25104 - 11904: 0xA6A8, - 25105 - 11904: 0xA7DA, - 25106 - 11904: 0xA7D9, - 25108 - 11904: 0xCCB1, - 25109 - 11904: 0xA9CF, - 25110 - 11904: 0xA9CE, - 25113 - 11904: 0xD1AF, - 25114 - 11904: 0xB1AD, - 25115 - 11904: 0xB1AE, - 25119 - 11904: 0xB475, - 25120 - 11904: 0xDD72, - 25121 - 11904: 0xB760, - 25122 - 11904: 0xB761, - 25123 - 11904: 0xDD74, - 25124 - 11904: 0xDD76, - 25125 - 11904: 0xDD75, - 25127 - 11904: 0xE1D7, - 25129 - 11904: 0xE1D6, - 25130 - 11904: 0xBA49, - 25131 - 11904: 0xE1D8, - 25132 - 11904: 0x8D79, - 25133 - 11904: 0xE5AC, - 25134 - 11904: 0xBCAE, - 25136 - 11904: 0xBED4, - 25138 - 11904: 0xC0B8, - 25139 - 11904: 0xC257, - 25140 - 11904: 0xC0B9, - 25142 - 11904: 0xA4E1, - 25143 - 11904: 0x8BFC, - 25145 - 11904: 0xA076, - 25146 - 11904: 0xCAE6, - 25149 - 11904: 0xCCB2, - 25150 - 11904: 0xA9D1, - 25151 - 11904: 0xA9D0, - 25152 - 11904: 0xA9D2, - 25153 - 11904: 0xABF3, - 25154 - 11904: 0xCED2, - 25155 - 11904: 0xCED3, - 25158 - 11904: 0xD1B0, - 25159 - 11904: 0xAEB0, - 25160 - 11904: 0xB1AF, - 25161 - 11904: 0xB476, - 25162 - 11904: 0xD951, - 25163 - 11904: 0xA4E2, - 25164 - 11904: 0x8BCD, - 25165 - 11904: 0xA47E, - 25166 - 11904: 0xA4E3, - 25168 - 11904: 0xC97D, - 25169 - 11904: 0xA5B7, - 25170 - 11904: 0xA5B6, - 25171 - 11904: 0xA5B4, - 25172 - 11904: 0xA5B5, - 25176 - 11904: 0xA6AB, - 25177 - 11904: 0xC9E9, - 25178 - 11904: 0xC9EB, - 25179 - 11904: 0xA6AA, - 25180 - 11904: 0xC9E3, - 25182 - 11904: 0xC9E4, - 25184 - 11904: 0xC9EA, - 25185 - 11904: 0xC9E6, - 25186 - 11904: 0xC9E8, - 25187 - 11904: 0xA6A9, - 25188 - 11904: 0xC9E5, - 25189 - 11904: 0xC9EC, - 25190 - 11904: 0xC9E7, - 25192 - 11904: 0x9F5A, - 25197 - 11904: 0xA7E1, - 25198 - 11904: 0xA7EA, - 25199 - 11904: 0xA7E8, - 25200 - 11904: 0xCAF0, - 25201 - 11904: 0xCAED, - 25202 - 11904: 0xCAF5, - 25203 - 11904: 0xA7E6, - 25204 - 11904: 0xCAF6, - 25206 - 11904: 0xA7DF, - 25207 - 11904: 0xCAF3, - 25209 - 11904: 0xA7E5, - 25210 - 11904: 0xCAEF, - 25211 - 11904: 0xCAEE, - 25212 - 11904: 0xA7E3, - 25213 - 11904: 0xCAF4, - 25214 - 11904: 0xA7E4, - 25215 - 11904: 0xA9D3, - 25216 - 11904: 0xA7DE, - 25217 - 11904: 0xCAF1, - 25218 - 11904: 0x9FF4, - 25219 - 11904: 0xCAE7, - 25220 - 11904: 0xA7DB, - 25221 - 11904: 0x9FBA, - 25222 - 11904: 0xA7EE, - 25223 - 11904: 0xCAEC, - 25224 - 11904: 0xCAF2, - 25225 - 11904: 0xA7E0, - 25226 - 11904: 0xA7E2, - 25228 - 11904: 0xCAE8, - 25230 - 11904: 0xCAE9, - 25231 - 11904: 0xCAEA, - 25232 - 11904: 0x8D7A, - 25233 - 11904: 0xA7ED, - 25234 - 11904: 0xA7E7, - 25235 - 11904: 0xA7EC, - 25236 - 11904: 0xCAEB, - 25237 - 11904: 0xA7EB, - 25238 - 11904: 0xA7DD, - 25239 - 11904: 0xA7DC, - 25240 - 11904: 0xA7E9, - 25245 - 11904: 0x9E45, - 25252 - 11904: 0x93B0, - 25254 - 11904: 0xA075, - 25256 - 11904: 0xA9E1, - 25257 - 11904: 0xCCBE, - 25258 - 11904: 0xCCB7, - 25259 - 11904: 0xA9DC, - 25260 - 11904: 0xA9EF, - 25261 - 11904: 0xCCB3, - 25262 - 11904: 0xCCBA, - 25263 - 11904: 0xCCBC, - 25264 - 11904: 0xCCBF, - 25265 - 11904: 0xA9EA, - 25267 - 11904: 0xCCBB, - 25268 - 11904: 0xCCB4, - 25269 - 11904: 0xA9E8, - 25270 - 11904: 0xCCB8, - 25272 - 11904: 0xCCC0, - 25273 - 11904: 0xA9D9, - 25275 - 11904: 0xCCBD, - 25276 - 11904: 0xA9E3, - 25277 - 11904: 0xA9E2, - 25278 - 11904: 0xCCB6, - 25279 - 11904: 0xA9D7, - 25281 - 11904: 0x87DD, - 25282 - 11904: 0xA9D8, - 25283 - 11904: 0x9B46, - 25284 - 11904: 0xA9D6, - 25285 - 11904: 0xFCAE, - 25286 - 11904: 0xA9EE, - 25287 - 11904: 0xA9E6, - 25288 - 11904: 0xA9E0, - 25289 - 11904: 0xA9D4, - 25290 - 11904: 0xCCB9, - 25291 - 11904: 0xA9DF, - 25292 - 11904: 0xA9D5, - 25293 - 11904: 0xA9E7, - 25294 - 11904: 0xA9F0, - 25295 - 11904: 0xCED4, - 25296 - 11904: 0xA9E4, - 25297 - 11904: 0xCCB5, - 25298 - 11904: 0xA9DA, - 25299 - 11904: 0xA9DD, - 25300 - 11904: 0xA9DE, - 25301 - 11904: 0xFCB0, - 25302 - 11904: 0xA9EC, - 25303 - 11904: 0xA9ED, - 25304 - 11904: 0xA9EB, - 25305 - 11904: 0xA9E5, - 25306 - 11904: 0xA9E9, - 25307 - 11904: 0xA9DB, - 25308 - 11904: 0xABF4, - 25311 - 11904: 0xFA51, - 25317 - 11904: 0x8D7B, - 25323 - 11904: 0xCEDA, - 25324 - 11904: 0xAC41, - 25325 - 11904: 0xABF8, - 25326 - 11904: 0xABFA, - 25327 - 11904: 0xAC40, - 25328 - 11904: 0xCEE6, - 25329 - 11904: 0xABFD, - 25330 - 11904: 0xD1B1, - 25331 - 11904: 0xAEB1, - 25332 - 11904: 0xAC43, - 25333 - 11904: 0xCED7, - 25334 - 11904: 0xCEDF, - 25335 - 11904: 0xABFE, - 25336 - 11904: 0xCEDE, - 25337 - 11904: 0xCEDB, - 25338 - 11904: 0xCEE3, - 25339 - 11904: 0xCEE5, - 25340 - 11904: 0xABF7, - 25341 - 11904: 0xABFB, - 25342 - 11904: 0xAC42, - 25343 - 11904: 0xAEB3, - 25344 - 11904: 0xCEE0, - 25345 - 11904: 0xABF9, - 25346 - 11904: 0xAC45, - 25347 - 11904: 0xCED9, - 25351 - 11904: 0xABFC, - 25352 - 11904: 0xAEB2, - 25353 - 11904: 0xABF6, - 25355 - 11904: 0xCED6, - 25356 - 11904: 0xCEDD, - 25357 - 11904: 0xCED5, - 25358 - 11904: 0xCED8, - 25359 - 11904: 0xCEDC, - 25360 - 11904: 0xD1B2, - 25361 - 11904: 0xAC44, - 25363 - 11904: 0xCEE1, - 25364 - 11904: 0xCEE2, - 25365 - 11904: 0xCEE4, - 25366 - 11904: 0xABF5, - 25368 - 11904: 0x8D7C, - 25384 - 11904: 0xAEC1, - 25385 - 11904: 0xD1BE, - 25386 - 11904: 0xAEBF, - 25387 - 11904: 0xAEC0, - 25388 - 11904: 0xD1B4, - 25389 - 11904: 0xD1C4, - 25390 - 11904: 0x9ED6, - 25391 - 11904: 0xAEB6, - 25393 - 11904: 0x93AC, - 25394 - 11904: 0xD566, - 25395 - 11904: 0xD1C6, - 25396 - 11904: 0xD1C0, - 25397 - 11904: 0x9F5B, - 25398 - 11904: 0xD1B7, - 25399 - 11904: 0x93A9, - 25400 - 11904: 0xD1C9, - 25401 - 11904: 0xD1BA, - 25402 - 11904: 0xAEBC, - 25403 - 11904: 0xD57D, - 25404 - 11904: 0xD1BD, - 25405 - 11904: 0xAEBE, - 25406 - 11904: 0xAEB5, - 25408 - 11904: 0xD1CB, - 25409 - 11904: 0xD1BF, - 25410 - 11904: 0xAEB8, - 25411 - 11904: 0xD1B8, - 25412 - 11904: 0xD1B5, - 25413 - 11904: 0xD1B6, - 25414 - 11904: 0xAEB9, - 25415 - 11904: 0xD1C5, - 25416 - 11904: 0xD1CC, - 25417 - 11904: 0xAEBB, - 25418 - 11904: 0xD1BC, - 25419 - 11904: 0xD1BB, - 25420 - 11904: 0xAEC3, - 25421 - 11904: 0xAEC2, - 25422 - 11904: 0xAEB4, - 25423 - 11904: 0xAEBA, - 25424 - 11904: 0xAEBD, - 25425 - 11904: 0xD1C8, - 25428 - 11904: 0xD1C2, - 25429 - 11904: 0xAEB7, - 25430 - 11904: 0xD1B3, - 25431 - 11904: 0xD1CA, - 25432 - 11904: 0xD1C1, - 25433 - 11904: 0xD1C3, - 25434 - 11904: 0xD1C7, - 25444 - 11904: 0xA07C, - 25445 - 11904: 0xD567, - 25447 - 11904: 0xB1B7, - 25448 - 11904: 0xB1CB, - 25449 - 11904: 0xB1CA, - 25451 - 11904: 0xB1BF, - 25452 - 11904: 0xFCB2, - 25453 - 11904: 0xD579, - 25454 - 11904: 0xD575, - 25455 - 11904: 0xD572, - 25456 - 11904: 0xD5A6, - 25457 - 11904: 0xB1BA, - 25458 - 11904: 0xB1B2, - 25461 - 11904: 0xD577, - 25462 - 11904: 0xB4A8, - 25463 - 11904: 0xB1B6, - 25464 - 11904: 0xD5A1, - 25465 - 11904: 0x8AC1, - 25466 - 11904: 0xB1CC, - 25467 - 11904: 0xB1C9, - 25468 - 11904: 0xD57B, - 25469 - 11904: 0xD56A, - 25471 - 11904: 0x9FB4, - 25472 - 11904: 0xB1C8, - 25473 - 11904: 0xD5A3, - 25474 - 11904: 0xD569, - 25475 - 11904: 0xB1BD, - 25476 - 11904: 0xB1C1, - 25477 - 11904: 0xD5A2, - 25479 - 11904: 0xD573, - 25480 - 11904: 0xB1C2, - 25481 - 11904: 0xB1BC, - 25482 - 11904: 0xD568, - 25483 - 11904: 0xFCAC, - 25484 - 11904: 0xB478, - 25485 - 11904: 0xD5A5, - 25486 - 11904: 0xD571, - 25487 - 11904: 0xB1C7, - 25488 - 11904: 0xD574, - 25489 - 11904: 0xD5A4, - 25490 - 11904: 0xB1C6, - 25492 - 11904: 0xD952, - 25494 - 11904: 0xB1B3, - 25495 - 11904: 0xD56F, - 25496 - 11904: 0xB1B8, - 25497 - 11904: 0xB1C3, - 25499 - 11904: 0xB1BE, - 25500 - 11904: 0xD578, - 25501 - 11904: 0xD56E, - 25502 - 11904: 0xD56C, - 25503 - 11904: 0xD57E, - 25504 - 11904: 0xB1B0, - 25505 - 11904: 0xB1C4, - 25506 - 11904: 0xB1B4, - 25507 - 11904: 0xB477, - 25508 - 11904: 0xD57C, - 25509 - 11904: 0xB1B5, - 25511 - 11904: 0xB1B1, - 25512 - 11904: 0xB1C0, - 25513 - 11904: 0xB1BB, - 25514 - 11904: 0xB1B9, - 25515 - 11904: 0xD570, - 25516 - 11904: 0xB1C5, - 25517 - 11904: 0xD56D, - 25518 - 11904: 0xD57A, - 25519 - 11904: 0xD576, - 25520 - 11904: 0xD954, - 25521 - 11904: 0xD953, - 25529 - 11904: 0x9E4C, - 25533 - 11904: 0xD56B, - 25534 - 11904: 0xD964, - 25536 - 11904: 0xB47A, - 25537 - 11904: 0x8FC5, - 25538 - 11904: 0xD96A, - 25539 - 11904: 0xD959, - 25540 - 11904: 0xD967, - 25541 - 11904: 0xDD77, - 25542 - 11904: 0xB47D, - 25543 - 11904: 0xD96B, - 25544 - 11904: 0xD96E, - 25545 - 11904: 0xB47C, - 25546 - 11904: 0xD95C, - 25547 - 11904: 0xD96D, - 25548 - 11904: 0xD96C, - 25549 - 11904: 0xB47E, - 25550 - 11904: 0xD955, - 25551 - 11904: 0xB479, - 25552 - 11904: 0xB4A3, - 25553 - 11904: 0x93AD, - 25554 - 11904: 0xB4A1, - 25555 - 11904: 0xD969, - 25557 - 11904: 0xD95F, - 25558 - 11904: 0xB4A5, - 25559 - 11904: 0xD970, - 25560 - 11904: 0xD968, - 25561 - 11904: 0xD971, - 25562 - 11904: 0xB4AD, - 25563 - 11904: 0xB4AB, - 25564 - 11904: 0xD966, - 25565 - 11904: 0xD965, - 25566 - 11904: 0x9DC3, - 25567 - 11904: 0xD963, - 25568 - 11904: 0xD95D, - 25569 - 11904: 0xB4A4, - 25570 - 11904: 0x8DA2, - 25571 - 11904: 0xB4A2, - 25572 - 11904: 0xD1B9, - 25573 - 11904: 0xD956, - 25574 - 11904: 0x9D4A, - 25575 - 11904: 0xDDB7, - 25576 - 11904: 0xD957, - 25577 - 11904: 0xB47B, - 25578 - 11904: 0xB4AA, - 25579 - 11904: 0xDD79, - 25581 - 11904: 0xB4A6, - 25582 - 11904: 0xB4A7, - 25583 - 11904: 0xD958, - 25584 - 11904: 0xD96F, - 25585 - 11904: 0xDD78, - 25586 - 11904: 0xD960, - 25587 - 11904: 0xD95B, - 25588 - 11904: 0xB4A9, - 25589 - 11904: 0xD961, - 25590 - 11904: 0xD95E, - 25592 - 11904: 0xFCB6, - 25593 - 11904: 0xB4AE, - 25595 - 11904: 0x8DA3, - 25596 - 11904: 0x9E4B, - 25598 - 11904: 0x9E4D, - 25606 - 11904: 0xB770, - 25607 - 11904: 0x8DA4, - 25609 - 11904: 0xDD7C, - 25610 - 11904: 0xDDB1, - 25611 - 11904: 0xDDB6, - 25612 - 11904: 0xDDAA, - 25613 - 11904: 0xB76C, - 25614 - 11904: 0xDDBB, - 25615 - 11904: 0xB769, - 25616 - 11904: 0xDD7A, - 25618 - 11904: 0xDD7B, - 25619 - 11904: 0xB762, - 25620 - 11904: 0xB76B, - 25621 - 11904: 0xDDA4, - 25622 - 11904: 0xB76E, - 25623 - 11904: 0xB76F, - 25624 - 11904: 0xDDA5, - 25626 - 11904: 0xDDB2, - 25627 - 11904: 0xDDB8, - 25628 - 11904: 0xB76A, - 25630 - 11904: 0xB764, - 25631 - 11904: 0xDDA3, - 25632 - 11904: 0xDD7D, - 25633 - 11904: 0xDDBA, - 25634 - 11904: 0xDDA8, - 25635 - 11904: 0xDDA9, - 25636 - 11904: 0xDD7E, - 25637 - 11904: 0xDDB4, - 25638 - 11904: 0xDDAB, - 25639 - 11904: 0xDDB5, - 25640 - 11904: 0xDDAD, - 25642 - 11904: 0xB765, - 25643 - 11904: 0xE1D9, - 25644 - 11904: 0xB768, - 25645 - 11904: 0xB766, - 25646 - 11904: 0xDDB9, - 25647 - 11904: 0xDDB0, - 25648 - 11904: 0xDDAC, - 25650 - 11904: 0x8AFD, - 25651 - 11904: 0xDDA1, - 25652 - 11904: 0xBA53, - 25653 - 11904: 0xDDAF, - 25654 - 11904: 0xB76D, - 25655 - 11904: 0xDDA7, - 25656 - 11904: 0xFCB5, - 25657 - 11904: 0xDDA6, - 25658 - 11904: 0xFCC3, - 25659 - 11904: 0x93B2, - 25661 - 11904: 0xB767, - 25662 - 11904: 0xB763, - 25663 - 11904: 0xE1EE, - 25664 - 11904: 0xDDB3, - 25665 - 11904: 0xDDAE, - 25667 - 11904: 0xDDA2, - 25675 - 11904: 0xE1E9, - 25677 - 11904: 0xE1DA, - 25678 - 11904: 0xE1E5, - 25680 - 11904: 0xE1EC, - 25681 - 11904: 0xBA51, - 25682 - 11904: 0xB4AC, - 25683 - 11904: 0xE1EA, - 25684 - 11904: 0xBA4C, - 25688 - 11904: 0xBA4B, - 25689 - 11904: 0xE1F1, - 25690 - 11904: 0x8DA5, - 25691 - 11904: 0xE1DB, - 25692 - 11904: 0xE1E8, - 25693 - 11904: 0xE1DC, - 25694 - 11904: 0xE1E7, - 25695 - 11904: 0xBA4F, - 25696 - 11904: 0xE1EB, - 25697 - 11904: 0xD962, - 25701 - 11904: 0xE1F2, - 25702 - 11904: 0xE1E3, - 25703 - 11904: 0xBA52, - 25704 - 11904: 0xE5BA, - 25705 - 11904: 0xBCAF, - 25707 - 11904: 0xE1F0, - 25708 - 11904: 0xE1EF, - 25709 - 11904: 0xBA54, - 25710 - 11904: 0xE5AD, - 25711 - 11904: 0xBCB0, - 25712 - 11904: 0xE5AE, - 25713 - 11904: 0x93A1, - 25714 - 11904: 0xE1DF, - 25715 - 11904: 0xE1E0, - 25716 - 11904: 0xE1DD, - 25717 - 11904: 0xE1E2, - 25718 - 11904: 0xE1DE, - 25719 - 11904: 0xE1F3, - 25720 - 11904: 0xBA4E, - 25721 - 11904: 0xBCB1, - 25722 - 11904: 0xBA50, - 25723 - 11904: 0xBA55, - 25724 - 11904: 0x8AC6, - 25725 - 11904: 0xE1E1, - 25727 - 11904: 0xE1ED, - 25730 - 11904: 0xE1E6, - 25733 - 11904: 0xE5B1, - 25735 - 11904: 0xBA4A, - 25736 - 11904: 0xBCB4, - 25737 - 11904: 0xE9AA, - 25738 - 11904: 0xE5B6, - 25739 - 11904: 0xE5B5, - 25740 - 11904: 0xE5B7, - 25741 - 11904: 0x8A5B, - 25743 - 11904: 0xE5B4, - 25744 - 11904: 0xFCB9, - 25745 - 11904: 0x894D, - 25746 - 11904: 0xBCBB, - 25747 - 11904: 0xBCB8, - 25749 - 11904: 0xBCB9, - 25750 - 11904: 0xE5AF, - 25751 - 11904: 0xE5B2, - 25752 - 11904: 0xE5BC, - 25753 - 11904: 0xBCC1, - 25754 - 11904: 0xBCBF, - 25756 - 11904: 0xE5B3, - 25757 - 11904: 0xD95A, - 25758 - 11904: 0xBCB2, - 25759 - 11904: 0xE5B9, - 25760 - 11904: 0xE5B0, - 25762 - 11904: 0xBCC2, - 25763 - 11904: 0xE5B8, - 25764 - 11904: 0xBA4D, - 25765 - 11904: 0xBCB7, - 25766 - 11904: 0xE1E4, - 25769 - 11904: 0xBCBA, - 25771 - 11904: 0xBCBE, - 25772 - 11904: 0xBCC0, - 25773 - 11904: 0xBCBD, - 25774 - 11904: 0xBCBC, - 25775 - 11904: 0xFED4, - 25776 - 11904: 0xBCB6, - 25777 - 11904: 0xE5BB, - 25778 - 11904: 0xBCB3, - 25779 - 11904: 0xBCC3, - 25780 - 11904: 0x8A78, - 25782 - 11904: 0x93AB, - 25787 - 11904: 0xBED8, - 25788 - 11904: 0xBED9, - 25789 - 11904: 0xE9A9, - 25790 - 11904: 0xBEE2, - 25791 - 11904: 0xBEDF, - 25792 - 11904: 0x8DA7, - 25793 - 11904: 0xBED6, - 25794 - 11904: 0xBEDD, - 25795 - 11904: 0xE9AB, - 25796 - 11904: 0xBEDB, - 25797 - 11904: 0xBED5, - 25799 - 11904: 0xBEDC, - 25801 - 11904: 0xE9A8, - 25802 - 11904: 0xC0BB, - 25803 - 11904: 0xBED7, - 25805 - 11904: 0xBEDE, - 25806 - 11904: 0xC0BA, - 25807 - 11904: 0xE9A7, - 25808 - 11904: 0xE9A6, - 25810 - 11904: 0xBEE0, - 25811 - 11904: 0x9F45, - 25812 - 11904: 0xBEE1, - 25814 - 11904: 0xE9A5, - 25815 - 11904: 0xE9A4, - 25816 - 11904: 0xC0BC, - 25817 - 11904: 0xE9AE, - 25818 - 11904: 0xBEDA, - 25819 - 11904: 0xE9AC, - 25821 - 11904: 0x8A56, - 25824 - 11904: 0xC0BD, - 25825 - 11904: 0xFCBF, - 25826 - 11904: 0xC0C2, - 25827 - 11904: 0xECEA, - 25828 - 11904: 0xECEC, - 25829 - 11904: 0xFCC0, - 25830 - 11904: 0xC0BF, - 25831 - 11904: 0x8EE6, - 25832 - 11904: 0xECED, - 25833 - 11904: 0xECE9, - 25834 - 11904: 0x8AA4, - 25835 - 11904: 0xECEB, - 25836 - 11904: 0xC0C0, - 25837 - 11904: 0xC0C3, - 25839 - 11904: 0xECE8, - 25840 - 11904: 0xC0BE, - 25841 - 11904: 0xC0C1, - 25842 - 11904: 0xC259, - 25843 - 11904: 0xE9AD, - 25844 - 11904: 0xC258, - 25847 - 11904: 0xC25E, - 25848 - 11904: 0xEFD4, - 25850 - 11904: 0xC25C, - 25851 - 11904: 0xC25D, - 25852 - 11904: 0xEFD7, - 25853 - 11904: 0xEFD3, - 25854 - 11904: 0xC25A, - 25855 - 11904: 0xEFD1, - 25856 - 11904: 0xC36B, - 25857 - 11904: 0xEFD5, - 25859 - 11904: 0xEFD6, - 25860 - 11904: 0xEFD2, - 25862 - 11904: 0xC25B, - 25863 - 11904: 0xF242, - 25865 - 11904: 0xF245, - 25866 - 11904: 0x8943, - 25868 - 11904: 0xF246, - 25869 - 11904: 0xF244, - 25870 - 11904: 0xF247, - 25871 - 11904: 0xC36C, - 25872 - 11904: 0xF243, - 25873 - 11904: 0x93F3, - 25875 - 11904: 0xF44E, - 25876 - 11904: 0xC464, - 25877 - 11904: 0xF44D, - 25878 - 11904: 0xF44C, - 25879 - 11904: 0xF44B, - 25880 - 11904: 0xC463, - 25881 - 11904: 0xC465, - 25883 - 11904: 0xF5CD, - 25884 - 11904: 0xC4E2, - 25885 - 11904: 0xC4E1, - 25886 - 11904: 0xFCAB, - 25887 - 11904: 0x9EA2, - 25888 - 11904: 0xF6E1, - 25889 - 11904: 0xF6E0, - 25890 - 11904: 0xF6E3, - 25891 - 11904: 0xC5CB, - 25892 - 11904: 0xC575, - 25893 - 11904: 0xF7DD, - 25894 - 11904: 0xF6E2, - 25897 - 11904: 0xF7DC, - 25898 - 11904: 0xC5CD, - 25899 - 11904: 0xC5CC, - 25900 - 11904: 0xC5F3, - 25901 - 11904: 0xF8A9, - 25902 - 11904: 0xF8EF, - 25903 - 11904: 0xA4E4, - 25904 - 11904: 0x9DC7, - 25906 - 11904: 0xD972, - 25907 - 11904: 0xE9AF, - 25908 - 11904: 0xC6D2, - 25909 - 11904: 0x8BCE, - 25910 - 11904: 0xA6AC, - 25911 - 11904: 0xCAF7, - 25912 - 11904: 0xA7F1, - 25913 - 11904: 0xA7EF, - 25915 - 11904: 0xA7F0, - 25917 - 11904: 0xCCC1, - 25918 - 11904: 0xA9F1, - 25919 - 11904: 0xAC46, - 25921 - 11904: 0xCEE7, - 25923 - 11904: 0xCEE8, - 25925 - 11904: 0xAC47, - 25926 - 11904: 0xD1CE, - 25928 - 11904: 0xAEC4, - 25929 - 11904: 0xAEC5, - 25930 - 11904: 0xD1CD, - 25933 - 11904: 0xFCC5, - 25935 - 11904: 0xB1D3, - 25937 - 11904: 0xB1CF, - 25939 - 11904: 0xD5A7, - 25940 - 11904: 0xB1D6, - 25941 - 11904: 0xB1D5, - 25942 - 11904: 0xB1CE, - 25943 - 11904: 0xB1D1, - 25944 - 11904: 0xB1D4, - 25945 - 11904: 0xB1D0, - 25948 - 11904: 0xD976, - 25949 - 11904: 0xB1CD, - 25950 - 11904: 0xB4AF, - 25951 - 11904: 0xFCCB, - 25954 - 11904: 0xB4B1, - 25955 - 11904: 0xB4B2, - 25956 - 11904: 0xD975, - 25957 - 11904: 0xD978, - 25958 - 11904: 0xB4B0, - 25959 - 11904: 0xD973, - 25960 - 11904: 0xD977, - 25962 - 11904: 0xD974, - 25963 - 11904: 0x93B3, - 25964 - 11904: 0xB771, - 25965 - 11904: 0xFCCA, - 25967 - 11904: 0xDDBC, - 25970 - 11904: 0xBA56, - 25971 - 11904: 0xE1F4, - 25972 - 11904: 0xBEE3, - 25973 - 11904: 0xBCC4, - 25974 - 11904: 0xE5BD, - 25975 - 11904: 0xBCC5, - 25976 - 11904: 0xBCC6, - 25977 - 11904: 0xE5BF, - 25978 - 11904: 0xE5BE, - 25979 - 11904: 0xE5C0, - 25980 - 11904: 0xE9B1, - 25983 - 11904: 0xE9B0, - 25984 - 11904: 0xECEF, - 25985 - 11904: 0xECEE, - 25986 - 11904: 0xC0C4, - 25987 - 11904: 0xC0C5, - 25988 - 11904: 0xF248, - 25989 - 11904: 0xFCC9, - 25990 - 11904: 0x8DAC, - 25991 - 11904: 0xA4E5, - 25992 - 11904: 0xFBC6, - 25993 - 11904: 0x8967, - 25995 - 11904: 0x8C7E, - 25996 - 11904: 0xD979, - 26000 - 11904: 0xB4B4, - 26001 - 11904: 0xB4B3, - 26002 - 11904: 0xDDBD, - 26004 - 11904: 0xEFD8, - 26005 - 11904: 0xC4E3, - 26006 - 11904: 0xF7DE, - 26007 - 11904: 0xA4E6, - 26009 - 11904: 0xAEC6, - 26011 - 11904: 0xB1D8, - 26012 - 11904: 0xB1D7, - 26013 - 11904: 0xD97A, - 26014 - 11904: 0xD97B, - 26015 - 11904: 0xB772, - 26016 - 11904: 0xE1F5, - 26017 - 11904: 0xBA57, - 26018 - 11904: 0xE9B2, - 26020 - 11904: 0xA4E7, - 26021 - 11904: 0xA5B8, - 26023 - 11904: 0xA9F2, - 26024 - 11904: 0xCCC2, - 26026 - 11904: 0xCEE9, - 26027 - 11904: 0xAC48, - 26028 - 11904: 0xB1D9, - 26030 - 11904: 0xD97C, - 26031 - 11904: 0xB4B5, - 26032 - 11904: 0xB773, - 26034 - 11904: 0xE5C1, - 26035 - 11904: 0xE5C2, - 26037 - 11904: 0xFCCD, - 26038 - 11904: 0xECF0, - 26039 - 11904: 0xC25F, - 26040 - 11904: 0xF8F0, - 26041 - 11904: 0xA4E8, - 26043 - 11904: 0xCCC3, - 26044 - 11904: 0xA9F3, - 26045 - 11904: 0xAC49, - 26046 - 11904: 0x9CF3, - 26047 - 11904: 0xCEEA, - 26049 - 11904: 0xAEC7, - 26050 - 11904: 0xD1D2, - 26051 - 11904: 0xD1D0, - 26052 - 11904: 0xD1D1, - 26053 - 11904: 0xAEC8, - 26054 - 11904: 0xD1CF, - 26059 - 11904: 0xB1DB, - 26060 - 11904: 0xB1DC, - 26061 - 11904: 0xD5A8, - 26062 - 11904: 0xB1DD, - 26063 - 11904: 0xB1DA, - 26064 - 11904: 0xD97D, - 26065 - 11904: 0xFCD0, - 26066 - 11904: 0xD97E, - 26067 - 11904: 0xDDBE, - 26068 - 11904: 0x95BB, - 26070 - 11904: 0xBA59, - 26071 - 11904: 0xBA58, - 26074 - 11904: 0xECF1, - 26075 - 11904: 0xEFD9, - 26077 - 11904: 0xF24A, - 26078 - 11904: 0xF249, - 26079 - 11904: 0xF44F, - 26080 - 11904: 0xFCD3, - 26081 - 11904: 0xC95E, - 26082 - 11904: 0xAC4A, - 26083 - 11904: 0xFCD4, - 26085 - 11904: 0xA4E9, - 26086 - 11904: 0xA5B9, - 26088 - 11904: 0xA6AE, - 26089 - 11904: 0xA6AD, - 26092 - 11904: 0xA6AF, - 26093 - 11904: 0xA6B0, - 26094 - 11904: 0xC9EE, - 26095 - 11904: 0xC9ED, - 26096 - 11904: 0xCAF8, - 26097 - 11904: 0xA7F2, - 26098 - 11904: 0xCAFB, - 26099 - 11904: 0xCAFA, - 26100 - 11904: 0xCAF9, - 26101 - 11904: 0xCAFC, - 26106 - 11904: 0xA9F4, - 26107 - 11904: 0xCCC9, - 26108 - 11904: 0xCCC5, - 26109 - 11904: 0xCCCE, - 26111 - 11904: 0x8DAE, - 26112 - 11904: 0xA9FB, - 26114 - 11904: 0xA9F9, - 26115 - 11904: 0xCCCA, - 26116 - 11904: 0xCCC6, - 26117 - 11904: 0xCCCD, - 26118 - 11904: 0xA9F8, - 26119 - 11904: 0xAA40, - 26120 - 11904: 0xCCC8, - 26121 - 11904: 0xCCC4, - 26122 - 11904: 0xA9FE, - 26123 - 11904: 0xCCCB, - 26124 - 11904: 0xA9F7, - 26125 - 11904: 0xCCCC, - 26126 - 11904: 0xA9FA, - 26127 - 11904: 0xA9FC, - 26128 - 11904: 0xCCD0, - 26129 - 11904: 0xCCCF, - 26130 - 11904: 0xCCC7, - 26131 - 11904: 0xA9F6, - 26132 - 11904: 0xA9F5, - 26133 - 11904: 0xA9FD, - 26136 - 11904: 0xFCD7, - 26140 - 11904: 0xCEEF, - 26141 - 11904: 0xCEF5, - 26142 - 11904: 0x93DB, - 26143 - 11904: 0xAC50, - 26144 - 11904: 0xAC4D, - 26145 - 11904: 0xCEEC, - 26146 - 11904: 0xCEF1, - 26147 - 11904: 0xFE63, - 26148 - 11904: 0xAC53, - 26149 - 11904: 0xAC4B, - 26150 - 11904: 0xCEF0, - 26151 - 11904: 0xAC4E, - 26152 - 11904: 0xAC51, - 26155 - 11904: 0xCEF3, - 26157 - 11904: 0xAC4C, - 26158 - 11904: 0xCEF8, - 26159 - 11904: 0xAC4F, - 26160 - 11904: 0x93D5, - 26161 - 11904: 0xAC52, - 26162 - 11904: 0xCEED, - 26163 - 11904: 0xCEF2, - 26164 - 11904: 0xCEF6, - 26165 - 11904: 0xCEEE, - 26166 - 11904: 0xCEEB, - 26169 - 11904: 0xCEF7, - 26170 - 11904: 0xCEF4, - 26177 - 11904: 0xAED0, - 26178 - 11904: 0xAEC9, - 26179 - 11904: 0xAECC, - 26180 - 11904: 0xFCDA, - 26181 - 11904: 0xAECF, - 26183 - 11904: 0xD1D5, - 26184 - 11904: 0x9B71, - 26185 - 11904: 0xAECA, - 26186 - 11904: 0xD1D3, - 26187 - 11904: 0xFCDD, - 26188 - 11904: 0xAECE, - 26189 - 11904: 0x8764, - 26191 - 11904: 0xAECB, - 26193 - 11904: 0xD1D6, - 26194 - 11904: 0xAECD, - 26195 - 11904: 0x8DAF, - 26199 - 11904: 0xFAF2, - 26201 - 11904: 0xD5AC, - 26202 - 11904: 0xB1DF, - 26203 - 11904: 0xD5AB, - 26204 - 11904: 0xD5AD, - 26205 - 11904: 0xB1DE, - 26206 - 11904: 0xB1E3, - 26207 - 11904: 0xD1D4, - 26208 - 11904: 0x87B5, - 26209 - 11904: 0xD5AA, - 26210 - 11904: 0xD5AE, - 26211 - 11904: 0x93D8, - 26212 - 11904: 0xB1E0, - 26213 - 11904: 0xD5A9, - 26214 - 11904: 0xB1E2, - 26215 - 11904: 0xFCDF, - 26216 - 11904: 0xB1E1, - 26218 - 11904: 0xD9A7, - 26219 - 11904: 0x93D3, - 26220 - 11904: 0xD9A2, - 26222 - 11904: 0xB4B6, - 26223 - 11904: 0xB4BA, - 26224 - 11904: 0xB4B7, - 26225 - 11904: 0xD9A5, - 26226 - 11904: 0xD9A8, - 26227 - 11904: 0xFCE1, - 26228 - 11904: 0xFCE2, - 26230 - 11904: 0xB4B9, - 26231 - 11904: 0xB4BE, - 26232 - 11904: 0xDDC7, - 26233 - 11904: 0xD9A6, - 26234 - 11904: 0xB4BC, - 26235 - 11904: 0xD9A3, - 26236 - 11904: 0xD9A1, - 26237 - 11904: 0x8E76, - 26238 - 11904: 0xB4BD, - 26240 - 11904: 0xD9A4, - 26244 - 11904: 0xB779, - 26245 - 11904: 0xFC62, - 26246 - 11904: 0xDDBF, - 26247 - 11904: 0xB776, - 26248 - 11904: 0xB777, - 26249 - 11904: 0xB775, - 26250 - 11904: 0xDDC4, - 26251 - 11904: 0xDDC3, - 26252 - 11904: 0xDDC0, - 26253 - 11904: 0xB77B, - 26254 - 11904: 0x93D1, - 26256 - 11904: 0xDDC2, - 26257 - 11904: 0xB4BB, - 26258 - 11904: 0x8DB1, - 26260 - 11904: 0xDDC6, - 26261 - 11904: 0xDDC1, - 26262 - 11904: 0xB778, - 26263 - 11904: 0xB774, - 26264 - 11904: 0xB77A, - 26265 - 11904: 0xDDC5, - 26266 - 11904: 0x9859, - 26269 - 11904: 0xBA5C, - 26271 - 11904: 0xE1F8, - 26272 - 11904: 0xE1F7, - 26273 - 11904: 0xE1F6, - 26274 - 11904: 0xBA5A, - 26276 - 11904: 0xFB52, - 26280 - 11904: 0xBA5B, - 26281 - 11904: 0xE5C5, - 26282 - 11904: 0xE5C8, - 26283 - 11904: 0xBCC8, - 26285 - 11904: 0xFB53, - 26286 - 11904: 0xBCC7, - 26287 - 11904: 0xE5C9, - 26288 - 11904: 0xE5C4, - 26289 - 11904: 0xBCCA, - 26290 - 11904: 0xE5C6, - 26291 - 11904: 0xFB4D, - 26292 - 11904: 0xBCC9, - 26293 - 11904: 0xE5C3, - 26294 - 11904: 0x9CBF, - 26295 - 11904: 0xE5C7, - 26296 - 11904: 0xBEE9, - 26297 - 11904: 0xBEE6, - 26298 - 11904: 0xE9BB, - 26299 - 11904: 0xE9BA, - 26301 - 11904: 0xE9B9, - 26302 - 11904: 0xE9B4, - 26303 - 11904: 0x9B72, - 26304 - 11904: 0xE9B5, - 26308 - 11904: 0xBEE7, - 26310 - 11904: 0xBEE4, - 26311 - 11904: 0xBEE8, - 26312 - 11904: 0xE9B3, - 26313 - 11904: 0xBEE5, - 26314 - 11904: 0xE9B6, - 26315 - 11904: 0xE9B7, - 26316 - 11904: 0xE9BC, - 26317 - 11904: 0xFB50, - 26318 - 11904: 0x93BE, - 26319 - 11904: 0xE9B8, - 26322 - 11904: 0xECF2, - 26326 - 11904: 0xC0C7, - 26328 - 11904: 0xEFDC, - 26329 - 11904: 0xC0C6, - 26330 - 11904: 0xEFDA, - 26331 - 11904: 0xEFDB, - 26332 - 11904: 0xC260, - 26333 - 11904: 0xC36E, - 26334 - 11904: 0xF24B, - 26336 - 11904: 0xC36D, - 26339 - 11904: 0xF451, - 26340 - 11904: 0xF452, - 26342 - 11904: 0xC466, - 26343 - 11904: 0x8CDB, - 26344 - 11904: 0xF450, - 26345 - 11904: 0xC4E4, - 26347 - 11904: 0xF7DF, - 26348 - 11904: 0xC5CE, - 26349 - 11904: 0xF8AA, - 26350 - 11904: 0xF8AB, - 26352 - 11904: 0xA4EA, - 26353 - 11904: 0x9DF1, - 26354 - 11904: 0xA6B1, - 26355 - 11904: 0xA6B2, - 26356 - 11904: 0xA7F3, - 26358 - 11904: 0xCCD1, - 26359 - 11904: 0xAC54, - 26360 - 11904: 0xAED1, - 26361 - 11904: 0xB1E4, - 26364 - 11904: 0xB0D2, - 26366 - 11904: 0xB4BF, - 26367 - 11904: 0xB4C0, - 26368 - 11904: 0xB3CC, - 26369 - 11904: 0xD9A9, - 26370 - 11904: 0xFCEB, - 26371 - 11904: 0xB77C, - 26372 - 11904: 0xE1FA, - 26373 - 11904: 0xE1F9, - 26376 - 11904: 0xA4EB, - 26377 - 11904: 0xA6B3, - 26378 - 11904: 0xCCD2, - 26379 - 11904: 0xAA42, - 26380 - 11904: 0xA0BB, - 26381 - 11904: 0xAA41, - 26382 - 11904: 0x9B7E, - 26383 - 11904: 0xCEF9, - 26384 - 11904: 0xCEFA, - 26386 - 11904: 0xD1D7, - 26387 - 11904: 0xD1D8, - 26388 - 11904: 0xAED2, - 26389 - 11904: 0xAED3, - 26390 - 11904: 0x8DB3, - 26391 - 11904: 0xAED4, - 26392 - 11904: 0xD5AF, - 26393 - 11904: 0x8C52, - 26395 - 11904: 0xB1E6, - 26397 - 11904: 0xB4C2, - 26398 - 11904: 0x9AE8, - 26399 - 11904: 0xB4C1, - 26400 - 11904: 0xDDC8, - 26401 - 11904: 0xDF7A, - 26402 - 11904: 0xE1FB, - 26403 - 11904: 0xE9BD, - 26405 - 11904: 0x8EDC, - 26406 - 11904: 0xC261, - 26407 - 11904: 0xC467, - 26408 - 11904: 0xA4EC, - 26410 - 11904: 0xA5BC, - 26411 - 11904: 0xA5BD, - 26412 - 11904: 0xA5BB, - 26413 - 11904: 0xA5BE, - 26414 - 11904: 0xA5BA, - 26417 - 11904: 0xA6B6, - 26419 - 11904: 0xC9F6, - 26420 - 11904: 0xA6B5, - 26421 - 11904: 0xA6B7, - 26422 - 11904: 0x9CF9, - 26424 - 11904: 0xC9F1, - 26425 - 11904: 0xC9F0, - 26426 - 11904: 0xC9F3, - 26427 - 11904: 0xC9F2, - 26428 - 11904: 0xC9F5, - 26429 - 11904: 0xA6B4, - 26430 - 11904: 0xC9EF, - 26431 - 11904: 0xC9F4, - 26436 - 11904: 0xFA50, - 26437 - 11904: 0xCAFD, - 26438 - 11904: 0xA7FD, - 26439 - 11904: 0xCAFE, - 26440 - 11904: 0xCB43, - 26441 - 11904: 0xA7FC, - 26443 - 11904: 0xCB47, - 26444 - 11904: 0xCB42, - 26445 - 11904: 0xCB45, - 26446 - 11904: 0xA7F5, - 26447 - 11904: 0xA7F6, - 26448 - 11904: 0xA7F7, - 26449 - 11904: 0xA7F8, - 26451 - 11904: 0xA840, - 26453 - 11904: 0xCB41, - 26454 - 11904: 0xA7FA, - 26455 - 11904: 0xA841, - 26457 - 11904: 0xCB40, - 26458 - 11904: 0xCB46, - 26460 - 11904: 0xA7F9, - 26461 - 11904: 0xCB44, - 26462 - 11904: 0xFCF1, - 26463 - 11904: 0xA7F4, - 26464 - 11904: 0xA7FE, - 26465 - 11904: 0x98E7, - 26466 - 11904: 0xFCF3, - 26471 - 11904: 0xFCF2, - 26474 - 11904: 0xAA57, - 26475 - 11904: 0x8CCA, - 26476 - 11904: 0xCCD4, - 26477 - 11904: 0xAA43, - 26478 - 11904: 0x8775, - 26479 - 11904: 0xAA4D, - 26480 - 11904: 0xAA4E, - 26481 - 11904: 0xAA46, - 26482 - 11904: 0xAA58, - 26483 - 11904: 0xAA48, - 26484 - 11904: 0xCCDC, - 26485 - 11904: 0xAA53, - 26486 - 11904: 0xCCD7, - 26487 - 11904: 0xAA49, - 26488 - 11904: 0xCCE6, - 26489 - 11904: 0xCCE7, - 26490 - 11904: 0xCCDF, - 26491 - 11904: 0xCCD8, - 26492 - 11904: 0xAA56, - 26493 - 11904: 0xCCE4, - 26494 - 11904: 0xAA51, - 26495 - 11904: 0xAA4F, - 26497 - 11904: 0xCCE5, - 26498 - 11904: 0x87BA, - 26499 - 11904: 0xCCE3, - 26500 - 11904: 0xCCDB, - 26501 - 11904: 0xCCD3, - 26502 - 11904: 0xCCDA, - 26503 - 11904: 0xAA4A, - 26505 - 11904: 0xAA50, - 26507 - 11904: 0xAA44, - 26508 - 11904: 0xCCDE, - 26509 - 11904: 0xCCDD, - 26510 - 11904: 0xCCD5, - 26511 - 11904: 0x93E5, - 26512 - 11904: 0xAA52, - 26513 - 11904: 0xCCE1, - 26514 - 11904: 0xCCD6, - 26515 - 11904: 0xAA55, - 26516 - 11904: 0xCCE8, - 26517 - 11904: 0xAA45, - 26519 - 11904: 0xAA4C, - 26520 - 11904: 0xCCD9, - 26521 - 11904: 0xCCE2, - 26522 - 11904: 0xAA54, - 26524 - 11904: 0xAA47, - 26525 - 11904: 0xAA4B, - 26527 - 11904: 0xCCE0, - 26528 - 11904: 0x9A59, - 26532 - 11904: 0x8DB5, - 26540 - 11904: 0xFD4D, - 26542 - 11904: 0xCF5B, - 26543 - 11904: 0xAC5C, - 26544 - 11904: 0xAC69, - 26545 - 11904: 0xFD5E, - 26546 - 11904: 0xCF56, - 26547 - 11904: 0xCF4C, - 26548 - 11904: 0xAC62, - 26549 - 11904: 0xCF4A, - 26550 - 11904: 0xAC5B, - 26551 - 11904: 0xCF45, - 26552 - 11904: 0xAC65, - 26553 - 11904: 0xCF52, - 26554 - 11904: 0xCEFE, - 26555 - 11904: 0xCF41, - 26559 - 11904: 0x8F7D, - 26560 - 11904: 0xCF44, - 26561 - 11904: 0xCEFB, - 26562 - 11904: 0xCF51, - 26563 - 11904: 0xCF61, - 26564 - 11904: 0xAC60, - 26565 - 11904: 0xCF46, - 26566 - 11904: 0xCF58, - 26568 - 11904: 0xCEFD, - 26569 - 11904: 0xCF5F, - 26570 - 11904: 0xCF60, - 26571 - 11904: 0xCF63, - 26572 - 11904: 0xCF5A, - 26573 - 11904: 0xCF4B, - 26574 - 11904: 0xCF53, - 26575 - 11904: 0xAC66, - 26576 - 11904: 0xAC59, - 26577 - 11904: 0xAC61, - 26578 - 11904: 0xAC6D, - 26579 - 11904: 0xAC56, - 26580 - 11904: 0xAC58, - 26582 - 11904: 0x9547, - 26583 - 11904: 0xFCF6, - 26584 - 11904: 0xCF43, - 26585 - 11904: 0xAC6A, - 26586 - 11904: 0xAC63, - 26587 - 11904: 0xCF5D, - 26588 - 11904: 0xCF40, - 26589 - 11904: 0xAC6C, - 26590 - 11904: 0xAC67, - 26591 - 11904: 0xCF49, - 26594 - 11904: 0xAC6B, - 26595 - 11904: 0xCF50, - 26596 - 11904: 0xCF48, - 26597 - 11904: 0xAC64, - 26598 - 11904: 0xCF5C, - 26599 - 11904: 0xCF54, - 26601 - 11904: 0xAC5E, - 26602 - 11904: 0xCF62, - 26603 - 11904: 0xCF47, - 26604 - 11904: 0xAC5A, - 26605 - 11904: 0xCF59, - 26606 - 11904: 0xCF4F, - 26607 - 11904: 0xAC5F, - 26608 - 11904: 0xCF55, - 26609 - 11904: 0xAC57, - 26610 - 11904: 0xCEFC, - 26611 - 11904: 0xAC68, - 26612 - 11904: 0xAEE3, - 26613 - 11904: 0xAC5D, - 26614 - 11904: 0xCF4E, - 26615 - 11904: 0xCF4D, - 26616 - 11904: 0xCF42, - 26617 - 11904: 0x9250, - 26618 - 11904: 0xCF5E, - 26620 - 11904: 0xCF57, - 26622 - 11904: 0x8968, - 26623 - 11904: 0xAC55, - 26624 - 11904: 0x8DB6, - 26625 - 11904: 0xFCFB, - 26626 - 11904: 0xA07D, - 26627 - 11904: 0x98FC, - 26628 - 11904: 0x8969, - 26637 - 11904: 0xFE4F, - 26640 - 11904: 0x9256, - 26642 - 11904: 0xD1EC, - 26643 - 11904: 0xAEEA, - 26644 - 11904: 0xD1ED, - 26646 - 11904: 0xD1E1, - 26647 - 11904: 0xAEDF, - 26648 - 11904: 0xAEEB, - 26650 - 11904: 0xD1DA, - 26651 - 11904: 0xFAC9, - 26652 - 11904: 0xD1E3, - 26653 - 11904: 0xD1EB, - 26654 - 11904: 0x93E8, - 26655 - 11904: 0xD1D9, - 26656 - 11904: 0xD1F4, - 26657 - 11904: 0xAED5, - 26658 - 11904: 0xFCF8, - 26661 - 11904: 0xD1F3, - 26662 - 11904: 0xD1EE, - 26664 - 11904: 0xD1EF, - 26665 - 11904: 0xAEDD, - 26666 - 11904: 0xAEE8, - 26667 - 11904: 0xD1E5, - 26669 - 11904: 0xD1E6, - 26670 - 11904: 0xD1F0, - 26671 - 11904: 0xD1E7, - 26673 - 11904: 0xD1E2, - 26674 - 11904: 0xD1DC, - 26675 - 11904: 0xD1DD, - 26676 - 11904: 0xD1EA, - 26677 - 11904: 0xD1E4, - 26678 - 11904: 0x9CE3, - 26679 - 11904: 0xFDA9, - 26680 - 11904: 0xAED6, - 26681 - 11904: 0xAEDA, - 26682 - 11904: 0xD1F2, - 26683 - 11904: 0xD1DE, - 26684 - 11904: 0xAEE6, - 26685 - 11904: 0xAEE2, - 26686 - 11904: 0xFC44, - 26688 - 11904: 0xAEE5, - 26689 - 11904: 0xAEEC, - 26690 - 11904: 0xAEDB, - 26691 - 11904: 0xAEE7, - 26692 - 11904: 0xD1E9, - 26693 - 11904: 0xAEE9, - 26694 - 11904: 0xAED8, - 26695 - 11904: 0x9640, - 26696 - 11904: 0xAED7, - 26697 - 11904: 0xD1DB, - 26698 - 11904: 0x8DB8, - 26699 - 11904: 0xD1DF, - 26700 - 11904: 0xAEE0, - 26701 - 11904: 0xD1F1, - 26702 - 11904: 0xD1E8, - 26703 - 11904: 0xD1E0, - 26704 - 11904: 0xAEE4, - 26705 - 11904: 0xAEE1, - 26707 - 11904: 0xAED9, - 26708 - 11904: 0xAEDC, - 26709 - 11904: 0x9B4A, - 26710 - 11904: 0x8FB9, - 26717 - 11904: 0xFCFE, - 26725 - 11904: 0x896A, - 26731 - 11904: 0xD5C4, - 26733 - 11904: 0xD5B4, - 26734 - 11904: 0xD5B5, - 26735 - 11904: 0xD5B9, - 26737 - 11904: 0xD5C8, - 26738 - 11904: 0xD5C5, - 26740 - 11904: 0xD5BE, - 26741 - 11904: 0xD5BD, - 26742 - 11904: 0xB1ED, - 26743 - 11904: 0xD5C1, - 26744 - 11904: 0xD5D0, - 26745 - 11904: 0xD5B0, - 26747 - 11904: 0xD5D1, - 26748 - 11904: 0xD5C3, - 26749 - 11904: 0xD5D5, - 26750 - 11904: 0xD5C9, - 26751 - 11904: 0xB1EC, - 26752 - 11904: 0xD5C7, - 26753 - 11904: 0xB1E7, - 26754 - 11904: 0xB1FC, - 26755 - 11904: 0xB1F2, - 26756 - 11904: 0x8DB9, - 26757 - 11904: 0xB1F6, - 26758 - 11904: 0xB1F5, - 26759 - 11904: 0xD5B1, - 26760 - 11904: 0x917E, - 26761 - 11904: 0xD5CE, - 26762 - 11904: 0xD5D4, - 26763 - 11904: 0xD5CC, - 26764 - 11904: 0xD5D3, - 26767 - 11904: 0xD5C0, - 26768 - 11904: 0xD5B2, - 26769 - 11904: 0xD5D2, - 26770 - 11904: 0xD5C2, - 26771 - 11904: 0xB1EA, - 26772 - 11904: 0xB1F7, - 26774 - 11904: 0xD5CB, - 26775 - 11904: 0xB1F0, - 26776 - 11904: 0x93F4, - 26779 - 11904: 0xD5CA, - 26780 - 11904: 0xD5B3, - 26781 - 11904: 0xB1F8, - 26783 - 11904: 0xB1FA, - 26784 - 11904: 0xD5CD, - 26785 - 11904: 0xB1FB, - 26786 - 11904: 0xB1E9, - 26787 - 11904: 0xD5BA, - 26788 - 11904: 0xD5CF, - 26790 - 11904: 0xFB7C, - 26791 - 11904: 0xB1EF, - 26792 - 11904: 0xB1F9, - 26793 - 11904: 0xD5BC, - 26794 - 11904: 0xD5C6, - 26795 - 11904: 0xD5B7, - 26796 - 11904: 0xD5BB, - 26797 - 11904: 0xB1F4, - 26798 - 11904: 0xD5B6, - 26799 - 11904: 0xB1E8, - 26800 - 11904: 0xB1F1, - 26801 - 11904: 0xB1EE, - 26802 - 11904: 0xD5BF, - 26803 - 11904: 0xAEDE, - 26804 - 11904: 0xD9C0, - 26805 - 11904: 0xB1EB, - 26806 - 11904: 0x93E7, - 26809 - 11904: 0x97EF, - 26813 - 11904: 0xFE4A, - 26819 - 11904: 0xFD45, - 26820 - 11904: 0xB1F3, - 26821 - 11904: 0x96A5, - 26822 - 11904: 0xD9C3, - 26823 - 11904: 0xD9D9, - 26824 - 11904: 0xD9CE, - 26825 - 11904: 0xB4D6, - 26826 - 11904: 0xFEE0, - 26827 - 11904: 0xB4D1, - 26828 - 11904: 0xD9BD, - 26829 - 11904: 0xB4D2, - 26830 - 11904: 0xD9CD, - 26832 - 11904: 0xD9C6, - 26833 - 11904: 0xD9D3, - 26834 - 11904: 0xB4CE, - 26835 - 11904: 0xD9AB, - 26836 - 11904: 0xD9D5, - 26837 - 11904: 0xB4C4, - 26838 - 11904: 0xD9B3, - 26839 - 11904: 0xB4C7, - 26840 - 11904: 0xB4C6, - 26842 - 11904: 0xB4D7, - 26844 - 11904: 0xD9AD, - 26845 - 11904: 0xD9CF, - 26846 - 11904: 0xD9D0, - 26847 - 11904: 0xB4C9, - 26848 - 11904: 0xB4C5, - 26849 - 11904: 0xD9BB, - 26851 - 11904: 0xB4D0, - 26852 - 11904: 0xD9B6, - 26854 - 11904: 0xD9D1, - 26855 - 11904: 0xB4CC, - 26856 - 11904: 0xD9C9, - 26857 - 11904: 0xD9D6, - 26858 - 11904: 0xD9B0, - 26859 - 11904: 0xD9B5, - 26860 - 11904: 0xD9AF, - 26862 - 11904: 0xB4CB, - 26863 - 11904: 0xD9C2, - 26864 - 11904: 0xDDDE, - 26865 - 11904: 0xD9B1, - 26866 - 11904: 0xB4CF, - 26867 - 11904: 0xD9BA, - 26868 - 11904: 0xD9D2, - 26869 - 11904: 0xB4CA, - 26870 - 11904: 0xD9B7, - 26871 - 11904: 0xD9B4, - 26872 - 11904: 0xD9C5, - 26873 - 11904: 0xB4CD, - 26874 - 11904: 0xB4C3, - 26875 - 11904: 0xB4D9, - 26876 - 11904: 0xD9C8, - 26877 - 11904: 0xD9C7, - 26880 - 11904: 0xFD48, - 26881 - 11904: 0xFD47, - 26882 - 11904: 0xFEF2, - 26883 - 11904: 0xFE6A, - 26884 - 11904: 0xD9AC, - 26885 - 11904: 0xB4C8, - 26886 - 11904: 0xD9D4, - 26887 - 11904: 0xD9BC, - 26888 - 11904: 0xD9BE, - 26889 - 11904: 0x8DBD, - 26890 - 11904: 0xD9CB, - 26891 - 11904: 0xD9CA, - 26892 - 11904: 0xD9AA, - 26893 - 11904: 0xB4D3, - 26894 - 11904: 0xB4D5, - 26895 - 11904: 0xD9B2, - 26896 - 11904: 0xD9B9, - 26897 - 11904: 0xD9C1, - 26898 - 11904: 0xB4D4, - 26899 - 11904: 0xD9B8, - 26900 - 11904: 0xD9C4, - 26901 - 11904: 0xD9D7, - 26903 - 11904: 0xD9CC, - 26904 - 11904: 0x9BA1, - 26905 - 11904: 0x8CA2, - 26906 - 11904: 0x9AB7, - 26907 - 11904: 0x8EFC, - 26917 - 11904: 0xD9D8, - 26922 - 11904: 0xD9AE, - 26924 - 11904: 0x9FA1, - 26927 - 11904: 0xDDF2, - 26928 - 11904: 0xB7A6, - 26930 - 11904: 0xDDF0, - 26931 - 11904: 0xDDDB, - 26932 - 11904: 0xDDE0, - 26933 - 11904: 0xDDD9, - 26934 - 11904: 0xFD51, - 26935 - 11904: 0xDDEC, - 26936 - 11904: 0xDDCB, - 26937 - 11904: 0xDDD2, - 26939 - 11904: 0xDDEA, - 26940 - 11904: 0xDDF4, - 26941 - 11904: 0xDDDC, - 26942 - 11904: 0xFAAD, - 26943 - 11904: 0xDDCF, - 26944 - 11904: 0xDDE2, - 26945 - 11904: 0xDDE7, - 26946 - 11904: 0xDDD3, - 26947 - 11904: 0x8DBE, - 26948 - 11904: 0xDDE4, - 26949 - 11904: 0xDDD0, - 26950 - 11904: 0x89A4, - 26952 - 11904: 0xDDD7, - 26953 - 11904: 0xDDD8, - 26954 - 11904: 0xB7A8, - 26955 - 11904: 0xDDEB, - 26956 - 11904: 0xDDE9, - 26958 - 11904: 0xDDCC, - 26959 - 11904: 0xDDEE, - 26961 - 11904: 0xDDEF, - 26962 - 11904: 0xDDF1, - 26963 - 11904: 0xB7AC, - 26964 - 11904: 0xB7A4, - 26965 - 11904: 0x9AD9, - 26966 - 11904: 0xD5B8, - 26967 - 11904: 0xDDD4, - 26968 - 11904: 0xDDE6, - 26969 - 11904: 0xDDD5, - 26970 - 11904: 0xB7A1, - 26971 - 11904: 0xB7B1, - 26972 - 11904: 0xDDED, - 26973 - 11904: 0xB7AF, - 26974 - 11904: 0xB7AB, - 26975 - 11904: 0xDDCA, - 26976 - 11904: 0xB7A3, - 26977 - 11904: 0xFD4E, - 26978 - 11904: 0xDDCD, - 26979 - 11904: 0xB7B0, - 26980 - 11904: 0x8DC0, - 26981 - 11904: 0xDDDD, - 26982 - 11904: 0xDDC9, - 26983 - 11904: 0x97F0, - 26984 - 11904: 0xB7A9, - 26985 - 11904: 0xDDE1, - 26986 - 11904: 0xDDD1, - 26987 - 11904: 0xB7AA, - 26988 - 11904: 0xDDDA, - 26989 - 11904: 0xB77E, - 26990 - 11904: 0xB4D8, - 26991 - 11904: 0xDDE3, - 26992 - 11904: 0xD9BF, - 26993 - 11904: 0xDDCE, - 26994 - 11904: 0x93B4, - 26995 - 11904: 0xFD44, - 26996 - 11904: 0xDDE8, - 26997 - 11904: 0xB7A5, - 26998 - 11904: 0xDDE5, - 26999 - 11904: 0xB7A2, - 27000 - 11904: 0xDDDF, - 27001 - 11904: 0xB7AD, - 27002 - 11904: 0xDDD6, - 27003 - 11904: 0xDDF3, - 27008 - 11904: 0x9FA7, - 27010 - 11904: 0xB7A7, - 27011 - 11904: 0xDEC6, - 27013 - 11904: 0x8DC2, - 27014 - 11904: 0xB7AE, - 27018 - 11904: 0x99B6, - 27021 - 11904: 0xE24A, - 27022 - 11904: 0xE248, - 27024 - 11904: 0xE25E, - 27025 - 11904: 0xE246, - 27027 - 11904: 0xE258, - 27028 - 11904: 0xB77D, - 27029 - 11904: 0xBA5F, - 27030 - 11904: 0xE242, - 27031 - 11904: 0xE25D, - 27032 - 11904: 0xFD52, - 27033 - 11904: 0xE247, - 27034 - 11904: 0xE255, - 27035 - 11904: 0xBA64, - 27036 - 11904: 0xBA5D, - 27038 - 11904: 0xE25B, - 27039 - 11904: 0x8DC1, - 27040 - 11904: 0xE240, - 27041 - 11904: 0xE25A, - 27042 - 11904: 0x8E46, - 27043 - 11904: 0xBA6F, - 27044 - 11904: 0xE251, - 27045 - 11904: 0xE261, - 27046 - 11904: 0xBA6D, - 27047 - 11904: 0xE249, - 27048 - 11904: 0xBA5E, - 27049 - 11904: 0xE24B, - 27050 - 11904: 0xE259, - 27051 - 11904: 0xBA67, - 27052 - 11904: 0xE244, - 27053 - 11904: 0xBA6B, - 27054 - 11904: 0xBA61, - 27055 - 11904: 0xE24D, - 27056 - 11904: 0xE243, - 27057 - 11904: 0xE1FC, - 27058 - 11904: 0xA0D1, - 27059 - 11904: 0xE257, - 27060 - 11904: 0xBA68, - 27061 - 11904: 0xE260, - 27062 - 11904: 0xE1FD, - 27063 - 11904: 0xBA65, - 27065 - 11904: 0xE253, - 27067 - 11904: 0xBA66, - 27068 - 11904: 0xE245, - 27069 - 11904: 0xE250, - 27070 - 11904: 0xE24C, - 27071 - 11904: 0xE24E, - 27072 - 11904: 0x9FCA, - 27073 - 11904: 0xBA60, - 27074 - 11904: 0xE25F, - 27075 - 11904: 0xBA6E, - 27076 - 11904: 0xE24F, - 27078 - 11904: 0xE262, - 27081 - 11904: 0xE1FE, - 27082 - 11904: 0xE254, - 27083 - 11904: 0xBA63, - 27084 - 11904: 0xBA6C, - 27085 - 11904: 0xBA6A, - 27086 - 11904: 0xE241, - 27087 - 11904: 0xE256, - 27088 - 11904: 0xBA69, - 27089 - 11904: 0x92CF, - 27091 - 11904: 0xBA62, - 27092 - 11904: 0xE252, - 27093 - 11904: 0x9CF4, - 27094 - 11904: 0x8DC4, - 27097 - 11904: 0xE25C, - 27105 - 11904: 0xFD41, - 27106 - 11904: 0xE5D5, - 27108 - 11904: 0xE5D1, - 27109 - 11904: 0xE5CD, - 27110 - 11904: 0xE5E1, - 27111 - 11904: 0xE5DE, - 27112 - 11904: 0xBCCD, - 27113 - 11904: 0x9B4C, - 27115 - 11904: 0xE5E5, - 27116 - 11904: 0xE5D4, - 27117 - 11904: 0xBCD8, - 27118 - 11904: 0xE5DB, - 27121 - 11904: 0xE5D0, - 27122 - 11904: 0xE5DA, - 27123 - 11904: 0xBCD5, - 27124 - 11904: 0xE5EE, - 27126 - 11904: 0xE5EB, - 27127 - 11904: 0xE5DD, - 27128 - 11904: 0xE5CE, - 27129 - 11904: 0xFD57, - 27130 - 11904: 0xFCEF, - 27131 - 11904: 0xE5E2, - 27132 - 11904: 0xE5E4, - 27133 - 11904: 0xBCD1, - 27134 - 11904: 0xE5D8, - 27135 - 11904: 0xE5D3, - 27136 - 11904: 0xE5CA, - 27137 - 11904: 0xBCCE, - 27138 - 11904: 0xBCD6, - 27139 - 11904: 0x9CDE, - 27140 - 11904: 0xE5E7, - 27141 - 11904: 0xBCD7, - 27142 - 11904: 0xE5CB, - 27143 - 11904: 0xE5ED, - 27144 - 11904: 0xE5E0, - 27145 - 11904: 0xE5E6, - 27146 - 11904: 0xBCD4, - 27147 - 11904: 0xFD42, - 27148 - 11904: 0x986C, - 27149 - 11904: 0xE5E3, - 27151 - 11904: 0xE5EA, - 27153 - 11904: 0xBCD9, - 27155 - 11904: 0xBCD3, - 27156 - 11904: 0xE5DC, - 27157 - 11904: 0xE5CF, - 27158 - 11904: 0xE5EF, - 27159 - 11904: 0xE5CC, - 27160 - 11904: 0xE5E8, - 27161 - 11904: 0xBCD0, - 27162 - 11904: 0x97F9, - 27163 - 11904: 0xE5D6, - 27164 - 11904: 0x9558, - 27165 - 11904: 0xE5D7, - 27166 - 11904: 0xBCCF, - 27167 - 11904: 0xBCCC, - 27168 - 11904: 0xE5D2, - 27169 - 11904: 0xBCD2, - 27171 - 11904: 0xBCCB, - 27173 - 11904: 0xE5E9, - 27174 - 11904: 0xE5EC, - 27175 - 11904: 0xE5D9, - 27176 - 11904: 0xE9CA, - 27177 - 11904: 0x87B6, - 27179 - 11904: 0x985E, - 27180 - 11904: 0xFE7B, - 27181 - 11904: 0x94CD, - 27186 - 11904: 0xE9C2, - 27187 - 11904: 0x93EE, - 27188 - 11904: 0xE9BE, - 27189 - 11904: 0xBEF6, - 27192 - 11904: 0xBEEB, - 27193 - 11904: 0xBEF0, - 27194 - 11904: 0xBEEC, - 27195 - 11904: 0xE9CC, - 27196 - 11904: 0xE9D7, - 27197 - 11904: 0xBEEA, - 27198 - 11904: 0xE9C4, - 27199 - 11904: 0xE9CD, - 27200 - 11904: 0xE5DF, - 27201 - 11904: 0xE9CE, - 27203 - 11904: 0x8CA3, - 27204 - 11904: 0xBEF1, - 27205 - 11904: 0xFD5A, - 27206 - 11904: 0xE9DD, - 27207 - 11904: 0xBEF5, - 27208 - 11904: 0xBEF8, - 27209 - 11904: 0xE9C0, - 27211 - 11904: 0xBEF4, - 27212 - 11904: 0x93F5, - 27213 - 11904: 0xE9DB, - 27214 - 11904: 0xE9DC, - 27215 - 11904: 0xE9D2, - 27216 - 11904: 0xE9D1, - 27217 - 11904: 0xE9C9, - 27218 - 11904: 0x93EF, - 27219 - 11904: 0x8EEA, - 27220 - 11904: 0xE9D3, - 27221 - 11904: 0xE9DA, - 27222 - 11904: 0xE9D9, - 27223 - 11904: 0x8F5B, - 27224 - 11904: 0xBEEF, - 27225 - 11904: 0xBEED, - 27226 - 11904: 0xE9CB, - 27227 - 11904: 0xE9C8, - 27229 - 11904: 0xE9C5, - 27230 - 11904: 0xE9D8, - 27231 - 11904: 0xBEF7, - 27232 - 11904: 0xE9D6, - 27233 - 11904: 0xBEF3, - 27234 - 11904: 0xBEF2, - 27235 - 11904: 0x8C5E, - 27236 - 11904: 0xE9D0, - 27237 - 11904: 0x8DC6, - 27238 - 11904: 0xE9BF, - 27239 - 11904: 0xE9C1, - 27240 - 11904: 0xE9C3, - 27241 - 11904: 0xE9D5, - 27242 - 11904: 0xE9CF, - 27243 - 11904: 0xBEEE, - 27245 - 11904: 0xE9C6, - 27247 - 11904: 0xE9D4, - 27249 - 11904: 0x8DC8, - 27252 - 11904: 0x8DC7, - 27254 - 11904: 0xE9C7, - 27258 - 11904: 0x93F7, - 27262 - 11904: 0xC0CF, - 27263 - 11904: 0xED45, - 27264 - 11904: 0xC0C8, - 27265 - 11904: 0xECF5, - 27266 - 11904: 0x8DC9, - 27267 - 11904: 0xED41, - 27268 - 11904: 0xC0CA, - 27269 - 11904: 0xED48, - 27271 - 11904: 0xECFC, - 27273 - 11904: 0xECF7, - 27274 - 11904: 0xFBF2, - 27276 - 11904: 0xED49, - 27277 - 11904: 0xECF3, - 27278 - 11904: 0xECFE, - 27279 - 11904: 0x9670, - 27280 - 11904: 0xC0D1, - 27281 - 11904: 0xED44, - 27282 - 11904: 0xED4A, - 27283 - 11904: 0xECFD, - 27284 - 11904: 0xC0C9, - 27285 - 11904: 0xED40, - 27286 - 11904: 0xECF4, - 27287 - 11904: 0xC0D0, - 27289 - 11904: 0x8DCB, - 27290 - 11904: 0xED47, - 27291 - 11904: 0xECF9, - 27292 - 11904: 0xC0CC, - 27293 - 11904: 0xFD5C, - 27294 - 11904: 0xECFB, - 27295 - 11904: 0xECF8, - 27296 - 11904: 0xC0D2, - 27297 - 11904: 0xECFA, - 27298 - 11904: 0xC0CB, - 27299 - 11904: 0xC0CE, - 27300 - 11904: 0xED43, - 27301 - 11904: 0xECF6, - 27302 - 11904: 0xED46, - 27303 - 11904: 0x8F65, - 27304 - 11904: 0xED42, - 27307 - 11904: 0x8DCD, - 27308 - 11904: 0xC263, - 27309 - 11904: 0xEFE7, - 27310 - 11904: 0xC268, - 27311 - 11904: 0xC269, - 27313 - 11904: 0x9DA8, - 27314 - 11904: 0x94F9, - 27315 - 11904: 0xC262, - 27316 - 11904: 0xEFE6, - 27317 - 11904: 0x8DCE, - 27318 - 11904: 0xEFE3, - 27319 - 11904: 0xEFE4, - 27320 - 11904: 0xC266, - 27321 - 11904: 0xEFDE, - 27322 - 11904: 0xEFE2, - 27323 - 11904: 0xC265, - 27325 - 11904: 0xEFDF, - 27326 - 11904: 0x93EA, - 27330 - 11904: 0xC267, - 27331 - 11904: 0xC264, - 27333 - 11904: 0xEFDD, - 27334 - 11904: 0xEFE1, - 27335 - 11904: 0xEFE5, - 27336 - 11904: 0xFD5F, - 27337 - 11904: 0x93F0, - 27338 - 11904: 0x9FB6, - 27339 - 11904: 0xF251, - 27340 - 11904: 0xF24E, - 27341 - 11904: 0xF257, - 27343 - 11904: 0xF256, - 27344 - 11904: 0xF254, - 27345 - 11904: 0xF24F, - 27347 - 11904: 0xC372, - 27348 - 11904: 0x8DCF, - 27352 - 11904: 0x9763, - 27353 - 11904: 0xF250, - 27354 - 11904: 0xC371, - 27355 - 11904: 0xC0CD, - 27356 - 11904: 0xF253, - 27357 - 11904: 0xC370, - 27358 - 11904: 0xF258, - 27359 - 11904: 0xF252, - 27360 - 11904: 0xF24D, - 27361 - 11904: 0xEFE0, - 27365 - 11904: 0xC36F, - 27367 - 11904: 0xF24C, - 27368 - 11904: 0xF456, - 27370 - 11904: 0xF455, - 27371 - 11904: 0xF255, - 27372 - 11904: 0xC468, - 27374 - 11904: 0xF459, - 27375 - 11904: 0xF45A, - 27376 - 11904: 0xF454, - 27377 - 11904: 0xF458, - 27379 - 11904: 0xF453, - 27382 - 11904: 0x8DD0, - 27384 - 11904: 0xF5D1, - 27385 - 11904: 0xF457, - 27386 - 11904: 0xC4E7, - 27387 - 11904: 0xC4E5, - 27388 - 11904: 0xF5CF, - 27392 - 11904: 0xF5D2, - 27394 - 11904: 0xF5CE, - 27395 - 11904: 0xF5D0, - 27396 - 11904: 0xC4E6, - 27397 - 11904: 0x93F1, - 27400 - 11904: 0xF6E5, - 27401 - 11904: 0xF6E6, - 27402 - 11904: 0xC576, - 27403 - 11904: 0xF6E4, - 27407 - 11904: 0xF7E2, - 27408 - 11904: 0xC5CF, - 27409 - 11904: 0xF7E0, - 27410 - 11904: 0xF7E1, - 27411 - 11904: 0xF8AC, - 27414 - 11904: 0xC656, - 27415 - 11904: 0xF8F3, - 27416 - 11904: 0xF8F1, - 27417 - 11904: 0xF8F2, - 27418 - 11904: 0xF8F4, - 27421 - 11904: 0xFD62, - 27422 - 11904: 0xF9BB, - 27424 - 11904: 0xA4ED, - 27425 - 11904: 0xA6B8, - 27427 - 11904: 0xAA59, - 27429 - 11904: 0xCCE9, - 27432 - 11904: 0xCF64, - 27436 - 11904: 0xD1F5, - 27437 - 11904: 0xD1F7, - 27439 - 11904: 0xD1F6, - 27441 - 11904: 0xD1F8, - 27442 - 11904: 0xB1FD, - 27443 - 11904: 0xD5D7, - 27444 - 11904: 0xD1F9, - 27445 - 11904: 0xFD65, - 27446 - 11904: 0xD5D6, - 27447 - 11904: 0xD5D8, - 27448 - 11904: 0xD5D9, - 27449 - 11904: 0xD9DA, - 27450 - 11904: 0xB4DB, - 27451 - 11904: 0xD9DB, - 27452 - 11904: 0xD9DD, - 27453 - 11904: 0xB4DC, - 27454 - 11904: 0xB4DA, - 27455 - 11904: 0xD9DC, - 27457 - 11904: 0xDDFA, - 27458 - 11904: 0xDDF8, - 27459 - 11904: 0xDDF7, - 27461 - 11904: 0xDDF6, - 27462 - 11904: 0xDDF5, - 27463 - 11904: 0xB7B2, - 27464 - 11904: 0xDDF9, - 27465 - 11904: 0xBA70, - 27466 - 11904: 0xE263, - 27467 - 11904: 0xE265, - 27468 - 11904: 0xBA71, - 27469 - 11904: 0xE264, - 27470 - 11904: 0xBCDB, - 27472 - 11904: 0xBCDA, - 27473 - 11904: 0xE5F0, - 27474 - 11904: 0x9FDB, - 27476 - 11904: 0xE9DF, - 27477 - 11904: 0xE9DE, - 27478 - 11904: 0xE9E0, - 27479 - 11904: 0x93F8, - 27481 - 11904: 0xBEF9, - 27483 - 11904: 0xED4B, - 27484 - 11904: 0xC0D3, - 27486 - 11904: 0xEFE8, - 27487 - 11904: 0xC26A, - 27488 - 11904: 0xF259, - 27489 - 11904: 0xC577, - 27490 - 11904: 0xA4EE, - 27491 - 11904: 0xA5BF, - 27492 - 11904: 0xA6B9, - 27493 - 11904: 0xA842, - 27494 - 11904: 0xAA5A, - 27495 - 11904: 0xAA5B, - 27498 - 11904: 0xAC6E, - 27501 - 11904: 0xD1FA, - 27503 - 11904: 0x8BF7, - 27506 - 11904: 0xB7B3, - 27508 - 11904: 0xFD66, - 27510 - 11904: 0xE6D1, - 27511 - 11904: 0xBEFA, - 27512 - 11904: 0xC26B, - 27513 - 11904: 0xA4EF, - 27514 - 11904: 0x8BCF, - 27515 - 11904: 0xA6BA, - 27518 - 11904: 0xCCEB, - 27519 - 11904: 0xAA5C, - 27520 - 11904: 0xCCEA, - 27521 - 11904: 0x8DD1, - 27522 - 11904: 0xCF65, - 27523 - 11904: 0xAC6F, - 27524 - 11904: 0xCF66, - 27526 - 11904: 0xAC70, - 27528 - 11904: 0xD1FC, - 27529 - 11904: 0xAEEE, - 27530 - 11904: 0xAEED, - 27532 - 11904: 0xD5DE, - 27533 - 11904: 0xD5DC, - 27534 - 11904: 0xD5DD, - 27535 - 11904: 0xD5DB, - 27537 - 11904: 0xD5DA, - 27540 - 11904: 0xD9DE, - 27541 - 11904: 0xD9E1, - 27542 - 11904: 0xB4DE, - 27543 - 11904: 0xD9DF, - 27544 - 11904: 0xB4DD, - 27545 - 11904: 0xD9E0, - 27547 - 11904: 0xDDFB, - 27550 - 11904: 0xE266, - 27551 - 11904: 0xE267, - 27552 - 11904: 0xE268, - 27554 - 11904: 0xE5F3, - 27555 - 11904: 0xE5F2, - 27556 - 11904: 0xBCDC, - 27557 - 11904: 0xE5F1, - 27558 - 11904: 0xE5F4, - 27559 - 11904: 0xE9E1, - 27562 - 11904: 0xE9E2, - 27563 - 11904: 0xE9E3, - 27565 - 11904: 0xED4C, - 27566 - 11904: 0xC0D4, - 27567 - 11904: 0xC26C, - 27568 - 11904: 0xF25A, - 27570 - 11904: 0xC4E8, - 27571 - 11904: 0xC95F, - 27573 - 11904: 0xAC71, - 27574 - 11904: 0xCF67, - 27575 - 11904: 0xAEEF, - 27578 - 11904: 0xB1FE, - 27580 - 11904: 0xB4DF, - 27581 - 11904: 0xD9E2, - 27583 - 11904: 0xB7B5, - 27584 - 11904: 0xB7B4, - 27585 - 11904: 0x8DD2, - 27587 - 11904: 0xE269, - 27588 - 11904: 0xE26A, - 27589 - 11904: 0xBCDD, - 27590 - 11904: 0xBCDE, - 27591 - 11904: 0xE9E5, - 27592 - 11904: 0xE9E4, - 27593 - 11904: 0xEFE9, - 27594 - 11904: 0xF7E3, - 27595 - 11904: 0xA4F0, - 27596 - 11904: 0xC960, - 27597 - 11904: 0xA5C0, - 27599 - 11904: 0xA843, - 27600 - 11904: 0xCB48, - 27602 - 11904: 0xAC72, - 27603 - 11904: 0xB7B6, - 27604 - 11904: 0xA4F1, - 27606 - 11904: 0xCF68, - 27607 - 11904: 0xAC73, - 27608 - 11904: 0xCF69, - 27610 - 11904: 0xC0D5, - 27611 - 11904: 0xA4F2, - 27612 - 11904: 0xFD71, - 27614 - 11904: 0xCCEC, - 27616 - 11904: 0xCF6A, - 27617 - 11904: 0xFD6F, - 27618 - 11904: 0xD242, - 27619 - 11904: 0xD241, - 27620 - 11904: 0xD1FE, - 27622 - 11904: 0xD1FD, - 27623 - 11904: 0xD243, - 27624 - 11904: 0xD240, - 27626 - 11904: 0x8DD3, - 27627 - 11904: 0xB240, - 27628 - 11904: 0xB241, - 27631 - 11904: 0xB4E0, - 27632 - 11904: 0xD9E3, - 27634 - 11904: 0xD9E4, - 27635 - 11904: 0xD9E5, - 27639 - 11904: 0xDE41, - 27640 - 11904: 0xDE42, - 27641 - 11904: 0xDE40, - 27642 - 11904: 0x9FE7, - 27643 - 11904: 0xDDFD, - 27644 - 11904: 0xDDFE, - 27645 - 11904: 0xB7B7, - 27646 - 11904: 0xE26B, - 27647 - 11904: 0xE5F7, - 27648 - 11904: 0xE5F6, - 27649 - 11904: 0xE5F5, - 27650 - 11904: 0xE5F8, - 27651 - 11904: 0xE9E7, - 27652 - 11904: 0xE9E6, - 27653 - 11904: 0xBEFB, - 27654 - 11904: 0xE9E8, - 27656 - 11904: 0xC0D6, - 27657 - 11904: 0xED4D, - 27659 - 11904: 0xEFEA, - 27660 - 11904: 0xF25B, - 27661 - 11904: 0xF6E7, - 27663 - 11904: 0xA4F3, - 27664 - 11904: 0xA5C2, - 27665 - 11904: 0xA5C1, - 27667 - 11904: 0xAA5D, - 27668 - 11904: 0xC961, - 27669 - 11904: 0xC97E, - 27670 - 11904: 0xA6BB, - 27672 - 11904: 0xC9F7, - 27673 - 11904: 0xCB49, - 27674 - 11904: 0xCB4A, - 27675 - 11904: 0xAA5E, - 27676 - 11904: 0x90BD, - 27677 - 11904: 0xCCED, - 27679 - 11904: 0xAC74, - 27680 - 11904: 0xCF6B, - 27681 - 11904: 0xCF6C, - 27683 - 11904: 0xAEF0, - 27684 - 11904: 0xAEF4, - 27685 - 11904: 0xD244, - 27686 - 11904: 0xAEF3, - 27687 - 11904: 0xAEF1, - 27688 - 11904: 0xAEF2, - 27690 - 11904: 0xD5DF, - 27691 - 11904: 0xB242, - 27692 - 11904: 0xB4E3, - 27694 - 11904: 0xB4E1, - 27695 - 11904: 0xB4E2, - 27696 - 11904: 0xD9E6, - 27697 - 11904: 0x9FD0, - 27699 - 11904: 0xBA72, - 27700 - 11904: 0xA4F4, - 27701 - 11904: 0x8BD0, - 27702 - 11904: 0xC9A1, - 27703 - 11904: 0xFD72, - 27704 - 11904: 0xA5C3, - 27705 - 11904: 0x9CAE, - 27706 - 11904: 0x8BD1, - 27707 - 11904: 0xC9A4, - 27709 - 11904: 0x8ADB, - 27710 - 11904: 0xA5C6, - 27711 - 11904: 0xC9A3, - 27712 - 11904: 0xA5C5, - 27713 - 11904: 0xA5C4, - 27714 - 11904: 0xA844, - 27715 - 11904: 0xC9A2, - 27718 - 11904: 0xC9F8, - 27721 - 11904: 0xFAE4, - 27722 - 11904: 0xC9FC, - 27723 - 11904: 0xC9FE, - 27724 - 11904: 0xCA40, - 27725 - 11904: 0xA6C5, - 27726 - 11904: 0xA6C6, - 27727 - 11904: 0xC9FB, - 27728 - 11904: 0xA6C1, - 27730 - 11904: 0xC9F9, - 27732 - 11904: 0xC9FD, - 27733 - 11904: 0xA6C2, - 27735 - 11904: 0xA6BD, - 27736 - 11904: 0x95CE, - 27737 - 11904: 0xA6BE, - 27738 - 11904: 0xFD76, - 27739 - 11904: 0xA6C4, - 27740 - 11904: 0xC9FA, - 27741 - 11904: 0xA6BC, - 27742 - 11904: 0xA845, - 27743 - 11904: 0xA6BF, - 27744 - 11904: 0xA6C0, - 27745 - 11904: 0xA6C3, - 27749 - 11904: 0xCB5B, - 27750 - 11904: 0xCB59, - 27751 - 11904: 0xCB4C, - 27752 - 11904: 0xA851, - 27753 - 11904: 0xCB53, - 27754 - 11904: 0xA84C, - 27755 - 11904: 0xCB4D, - 27757 - 11904: 0xCB55, - 27758 - 11904: 0xFB62, - 27759 - 11904: 0xCB52, - 27760 - 11904: 0xA84F, - 27761 - 11904: 0xCB51, - 27762 - 11904: 0xA856, - 27763 - 11904: 0xCB5A, - 27764 - 11904: 0xA858, - 27765 - 11904: 0x8DD4, - 27766 - 11904: 0xA85A, - 27768 - 11904: 0xCB4B, - 27769 - 11904: 0xFD78, - 27770 - 11904: 0xA84D, - 27771 - 11904: 0xCB5C, - 27773 - 11904: 0xA854, - 27774 - 11904: 0xA857, - 27775 - 11904: 0x8EE3, - 27776 - 11904: 0xCD45, - 27777 - 11904: 0xA847, - 27778 - 11904: 0xA85E, - 27779 - 11904: 0xA855, - 27780 - 11904: 0xCB4E, - 27781 - 11904: 0xA84A, - 27782 - 11904: 0xA859, - 27783 - 11904: 0xCB56, - 27784 - 11904: 0xA848, - 27785 - 11904: 0xA849, - 27786 - 11904: 0xCD43, - 27787 - 11904: 0xCB4F, - 27788 - 11904: 0xA850, - 27789 - 11904: 0xA85B, - 27790 - 11904: 0xCB5D, - 27791 - 11904: 0xCB50, - 27792 - 11904: 0xA84E, - 27794 - 11904: 0xA853, - 27795 - 11904: 0xCCEE, - 27796 - 11904: 0xA85C, - 27797 - 11904: 0xCB57, - 27798 - 11904: 0xA852, - 27800 - 11904: 0xA85D, - 27801 - 11904: 0xA846, - 27802 - 11904: 0xCB54, - 27803 - 11904: 0xA84B, - 27804 - 11904: 0xFDB7, - 27805 - 11904: 0xCD44, - 27807 - 11904: 0x9076, - 27810 - 11904: 0x98C6, - 27818 - 11904: 0x8DD5, - 27819 - 11904: 0xAA6A, - 27820 - 11904: 0xAA7A, - 27821 - 11904: 0xCCF5, - 27822 - 11904: 0xAA71, - 27823 - 11904: 0x97D1, - 27824 - 11904: 0xCD4B, - 27825 - 11904: 0xAA62, - 27826 - 11904: 0x9EB6, - 27827 - 11904: 0xAA65, - 27828 - 11904: 0xCD42, - 27830 - 11904: 0xCCF3, - 27831 - 11904: 0xCCF7, - 27832 - 11904: 0xAA6D, - 27833 - 11904: 0xAA6F, - 27834 - 11904: 0xCCFA, - 27835 - 11904: 0xAA76, - 27836 - 11904: 0xAA68, - 27837 - 11904: 0xAA66, - 27838 - 11904: 0xAA67, - 27839 - 11904: 0xAA75, - 27840 - 11904: 0xCD47, - 27841 - 11904: 0xAA70, - 27842 - 11904: 0xCCF9, - 27843 - 11904: 0xCCFB, - 27844 - 11904: 0xAA6E, - 27845 - 11904: 0xAA73, - 27846 - 11904: 0xCCFC, - 27847 - 11904: 0xCD4A, - 27849 - 11904: 0xAC75, - 27850 - 11904: 0xAA79, - 27851 - 11904: 0xFAC7, - 27852 - 11904: 0xAA63, - 27853 - 11904: 0xCD49, - 27854 - 11904: 0xA042, - 27855 - 11904: 0xCD4D, - 27856 - 11904: 0xCCF8, - 27857 - 11904: 0xCD4F, - 27858 - 11904: 0xCD40, - 27859 - 11904: 0xAA6C, - 27860 - 11904: 0xCCF4, - 27861 - 11904: 0xAA6B, - 27862 - 11904: 0xAA7D, - 27863 - 11904: 0xAA72, - 27865 - 11904: 0xCCF2, - 27866 - 11904: 0xCF75, - 27867 - 11904: 0xAA78, - 27868 - 11904: 0xAA7C, - 27869 - 11904: 0xCD41, - 27870 - 11904: 0xCD46, - 27871 - 11904: 0x9873, - 27872 - 11904: 0xAA7E, - 27873 - 11904: 0xAA77, - 27874 - 11904: 0xAA69, - 27875 - 11904: 0xAA5F, - 27877 - 11904: 0xAA64, - 27879 - 11904: 0xCCF6, - 27880 - 11904: 0xAA60, - 27881 - 11904: 0xCD4E, - 27882 - 11904: 0x9FFC, - 27883 - 11904: 0xCCF0, - 27884 - 11904: 0xCCEF, - 27885 - 11904: 0xCCFD, - 27886 - 11904: 0xCCF1, - 27887 - 11904: 0xAA7B, - 27888 - 11904: 0xAEF5, - 27889 - 11904: 0xAA74, - 27890 - 11904: 0xCCFE, - 27891 - 11904: 0xAA61, - 27893 - 11904: 0xACA6, - 27897 - 11904: 0xCD4C, - 27903 - 11904: 0x8CA5, - 27904 - 11904: 0xCF7C, - 27905 - 11904: 0xCFA1, - 27906 - 11904: 0x8DD7, - 27907 - 11904: 0xCFA4, - 27908 - 11904: 0xCF77, - 27909 - 11904: 0x92FB, - 27910 - 11904: 0x8DD8, - 27911 - 11904: 0xCFA7, - 27912 - 11904: 0xCFAA, - 27913 - 11904: 0xCFAC, - 27914 - 11904: 0xCF74, - 27915 - 11904: 0xAC76, - 27916 - 11904: 0xAC7B, - 27917 - 11904: 0xD249, - 27918 - 11904: 0xACAD, - 27919 - 11904: 0xCFA5, - 27920 - 11904: 0xCFAD, - 27921 - 11904: 0xCF7B, - 27922 - 11904: 0xCF73, - 27926 - 11904: 0xD264, - 27927 - 11904: 0xAC7E, - 27928 - 11904: 0xCFA2, - 27929 - 11904: 0xCF78, - 27930 - 11904: 0xCF7A, - 27931 - 11904: 0xACA5, - 27933 - 11904: 0xCF7D, - 27934 - 11904: 0xAC7D, - 27935 - 11904: 0xCF70, - 27936 - 11904: 0xCFA8, - 27938 - 11904: 0xCFAB, - 27940 - 11904: 0x944F, - 27941 - 11904: 0xAC7A, - 27942 - 11904: 0x8DD9, - 27943 - 11904: 0xACA8, - 27944 - 11904: 0xCF6D, - 27945 - 11904: 0xACAA, - 27946 - 11904: 0xAC78, - 27947 - 11904: 0xACAE, - 27948 - 11904: 0xCFA9, - 27949 - 11904: 0xCF6F, - 27950 - 11904: 0xACAB, - 27951 - 11904: 0xD25E, - 27952 - 11904: 0xCD48, - 27953 - 11904: 0xAC7C, - 27954 - 11904: 0xAC77, - 27955 - 11904: 0xCF76, - 27956 - 11904: 0xCF6E, - 27957 - 11904: 0xACAC, - 27958 - 11904: 0xACA4, - 27959 - 11904: 0xCFA3, - 27960 - 11904: 0xACA9, - 27961 - 11904: 0xACA7, - 27962 - 11904: 0xCF79, - 27963 - 11904: 0xACA1, - 27964 - 11904: 0xCF71, - 27965 - 11904: 0xACA2, - 27966 - 11904: 0xACA3, - 27967 - 11904: 0xCF72, - 27968 - 11904: 0xCFA6, - 27969 - 11904: 0xAC79, - 27970 - 11904: 0xCF7E, - 27982 - 11904: 0x896B, - 27991 - 11904: 0x97CE, - 27992 - 11904: 0xD24C, - 27993 - 11904: 0xAEFD, - 27994 - 11904: 0xAF43, - 27995 - 11904: 0xFAF3, - 27996 - 11904: 0xFDAE, - 27998 - 11904: 0xD255, - 27999 - 11904: 0xD25B, - 28000 - 11904: 0xD257, - 28001 - 11904: 0xD24A, - 28002 - 11904: 0xD24D, - 28003 - 11904: 0xD246, - 28004 - 11904: 0xD247, - 28005 - 11904: 0xAF4A, - 28006 - 11904: 0xAEFA, - 28007 - 11904: 0xD256, - 28008 - 11904: 0xD25F, - 28009 - 11904: 0xAF45, - 28010 - 11904: 0xAEF6, - 28012 - 11904: 0xAF40, - 28013 - 11904: 0xD24E, - 28014 - 11904: 0xAF42, - 28015 - 11904: 0xD24F, - 28016 - 11904: 0xD259, - 28017 - 11904: 0xFBAF, - 28018 - 11904: 0x92B7, - 28020 - 11904: 0xAF44, - 28021 - 11904: 0xD268, - 28022 - 11904: 0xD248, - 28023 - 11904: 0xAEFC, - 28024 - 11904: 0xAEFB, - 28025 - 11904: 0xAF48, - 28026 - 11904: 0xD245, - 28027 - 11904: 0xD266, - 28028 - 11904: 0xD25A, - 28029 - 11904: 0xD267, - 28030 - 11904: 0xD261, - 28031 - 11904: 0xD253, - 28032 - 11904: 0xD262, - 28033 - 11904: 0x8DDA, - 28034 - 11904: 0xD25C, - 28035 - 11904: 0xD265, - 28036 - 11904: 0xD263, - 28037 - 11904: 0xAF49, - 28038 - 11904: 0xD254, - 28039 - 11904: 0xAEF9, - 28040 - 11904: 0xAEF8, - 28041 - 11904: 0xAF41, - 28042 - 11904: 0xAF47, - 28043 - 11904: 0xD260, - 28044 - 11904: 0xAF46, - 28045 - 11904: 0xD251, - 28046 - 11904: 0xB243, - 28047 - 11904: 0x9C5A, - 28048 - 11904: 0xD269, - 28049 - 11904: 0xD250, - 28050 - 11904: 0xD24B, - 28051 - 11904: 0xAEFE, - 28052 - 11904: 0xAF4B, - 28053 - 11904: 0xAEF7, - 28054 - 11904: 0xFDAD, - 28055 - 11904: 0xD258, - 28056 - 11904: 0xD25D, - 28068 - 11904: 0x8DDC, - 28069 - 11904: 0x9444, - 28074 - 11904: 0xB265, - 28075 - 11904: 0xD5E1, - 28076 - 11904: 0xD5E5, - 28078 - 11904: 0xB252, - 28079 - 11904: 0xB250, - 28081 - 11904: 0x8DDD, - 28082 - 11904: 0xB247, - 28083 - 11904: 0xD5E3, - 28084 - 11904: 0xD5E2, - 28085 - 11904: 0xB25B, - 28087 - 11904: 0xD5E8, - 28088 - 11904: 0xB255, - 28089 - 11904: 0xA0D6, - 28090 - 11904: 0xD5FA, - 28091 - 11904: 0xD647, - 28092 - 11904: 0xB244, - 28093 - 11904: 0xD5F7, - 28094 - 11904: 0xD5F0, - 28095 - 11904: 0xB267, - 28096 - 11904: 0xD5E0, - 28098 - 11904: 0xD5FC, - 28100 - 11904: 0xB264, - 28101 - 11904: 0xB258, - 28102 - 11904: 0xB263, - 28103 - 11904: 0xB24E, - 28104 - 11904: 0xD5EC, - 28105 - 11904: 0xD5FE, - 28106 - 11904: 0xD5F6, - 28107 - 11904: 0xB24F, - 28108 - 11904: 0xB249, - 28109 - 11904: 0xD645, - 28111 - 11904: 0xD5FD, - 28112 - 11904: 0xD640, - 28113 - 11904: 0xB251, - 28114 - 11904: 0xB259, - 28115 - 11904: 0xD642, - 28116 - 11904: 0xD5EA, - 28117 - 11904: 0xD5FB, - 28118 - 11904: 0xD5EF, - 28119 - 11904: 0xD644, - 28120 - 11904: 0xB25E, - 28121 - 11904: 0xB246, - 28122 - 11904: 0xB25C, - 28123 - 11904: 0xD5F4, - 28124 - 11904: 0xD5F2, - 28125 - 11904: 0xD5F3, - 28126 - 11904: 0xB253, - 28127 - 11904: 0xD5EE, - 28128 - 11904: 0xD5ED, - 28129 - 11904: 0xB248, - 28130 - 11904: 0xD5E7, - 28131 - 11904: 0xD646, - 28132 - 11904: 0xB24A, - 28133 - 11904: 0xD5F1, - 28134 - 11904: 0xB268, - 28136 - 11904: 0xB262, - 28137 - 11904: 0xD5E6, - 28138 - 11904: 0xB25F, - 28139 - 11904: 0xB25D, - 28140 - 11904: 0xB266, - 28141 - 11904: 0xD5F8, - 28142 - 11904: 0xB261, - 28143 - 11904: 0xD252, - 28144 - 11904: 0xD5F9, - 28145 - 11904: 0xB260, - 28146 - 11904: 0xD641, - 28147 - 11904: 0xB245, - 28148 - 11904: 0xD5F5, - 28149 - 11904: 0xB257, - 28150 - 11904: 0xD5E9, - 28151 - 11904: 0xB256, - 28153 - 11904: 0xB254, - 28154 - 11904: 0xB24C, - 28155 - 11904: 0xB24B, - 28156 - 11904: 0xD9E7, - 28157 - 11904: 0xD643, - 28158 - 11904: 0x8C41, - 28160 - 11904: 0xD5EB, - 28162 - 11904: 0x97D5, - 28163 - 11904: 0xD9FC, - 28164 - 11904: 0x944A, - 28165 - 11904: 0xB24D, - 28170 - 11904: 0x944D, - 28175 - 11904: 0x97CB, - 28181 - 11904: 0x8DDE, - 28184 - 11904: 0x8DDF, - 28185 - 11904: 0xB541, - 28186 - 11904: 0xB25A, - 28187 - 11904: 0xB4EE, - 28188 - 11904: 0xD9F6, - 28189 - 11904: 0xFDB8, - 28191 - 11904: 0xD9EA, - 28192 - 11904: 0xB4EB, - 28193 - 11904: 0xB4E7, - 28194 - 11904: 0xDA49, - 28195 - 11904: 0xB4ED, - 28196 - 11904: 0xB4F1, - 28197 - 11904: 0xB4EC, - 28198 - 11904: 0xB4F5, - 28199 - 11904: 0xDA4D, - 28200 - 11904: 0xDA44, - 28201 - 11904: 0x8DE0, - 28202 - 11904: 0xFEF9, - 28203 - 11904: 0xD9F1, - 28204 - 11904: 0xB4FA, - 28205 - 11904: 0xB4F4, - 28206 - 11904: 0xD9FD, - 28207 - 11904: 0xFDBB, - 28208 - 11904: 0xDA4A, - 28209 - 11904: 0xDA43, - 28210 - 11904: 0xB4E8, - 28211 - 11904: 0xD9F7, - 28212 - 11904: 0xB4F7, - 28213 - 11904: 0xDA55, - 28214 - 11904: 0xDA56, - 28216 - 11904: 0xB4E5, - 28217 - 11904: 0xDA48, - 28218 - 11904: 0xB4F9, - 28219 - 11904: 0xD9FB, - 28220 - 11904: 0xD9ED, - 28221 - 11904: 0xD9EE, - 28222 - 11904: 0xB4FD, - 28223 - 11904: 0xD9F2, - 28224 - 11904: 0xD9F9, - 28225 - 11904: 0xD9F3, - 28227 - 11904: 0xB4FB, - 28228 - 11904: 0xB544, - 28229 - 11904: 0xD9EF, - 28230 - 11904: 0xD9E8, - 28231 - 11904: 0xD9E9, - 28233 - 11904: 0xD9EB, - 28234 - 11904: 0xB4EA, - 28235 - 11904: 0xD9F8, - 28237 - 11904: 0xB4F8, - 28238 - 11904: 0xB542, - 28239 - 11904: 0xFDC0, - 28240 - 11904: 0xFCF9, - 28241 - 11904: 0xD9FA, - 28242 - 11904: 0xDA53, - 28243 - 11904: 0xDA4B, - 28244 - 11904: 0xB4E6, - 28245 - 11904: 0xDA51, - 28246 - 11904: 0xB4F2, - 28247 - 11904: 0x8CDD, - 28248 - 11904: 0xB4F0, - 28249 - 11904: 0xFB7E, - 28250 - 11904: 0xDA57, - 28251 - 11904: 0xB4EF, - 28252 - 11904: 0xDA41, - 28253 - 11904: 0xD9F4, - 28254 - 11904: 0xD9FE, - 28255 - 11904: 0xB547, - 28256 - 11904: 0xDA45, - 28257 - 11904: 0xDA42, - 28258 - 11904: 0xD9F0, - 28259 - 11904: 0xB543, - 28260 - 11904: 0xDA4F, - 28261 - 11904: 0xDA4C, - 28262 - 11904: 0xDA54, - 28263 - 11904: 0xB4E9, - 28264 - 11904: 0xDA40, - 28265 - 11904: 0xB546, - 28267 - 11904: 0xDA47, - 28270 - 11904: 0xB4F3, - 28271 - 11904: 0xB4F6, - 28273 - 11904: 0xDA46, - 28274 - 11904: 0xB545, - 28275 - 11904: 0xD9F5, - 28276 - 11904: 0xD5E4, - 28278 - 11904: 0x92B3, - 28279 - 11904: 0xDA50, - 28280 - 11904: 0xDA4E, - 28281 - 11904: 0xDA52, - 28284 - 11904: 0xFDAF, - 28294 - 11904: 0x8DE1, - 28296 - 11904: 0xD9EC, - 28297 - 11904: 0xB540, - 28299 - 11904: 0x95D3, - 28301 - 11904: 0xDE61, - 28302 - 11904: 0xDE60, - 28303 - 11904: 0xDE46, - 28304 - 11904: 0xB7BD, - 28306 - 11904: 0xDE5F, - 28307 - 11904: 0xDE49, - 28308 - 11904: 0xDE4A, - 28310 - 11904: 0xB7C7, - 28311 - 11904: 0xDE68, - 28312 - 11904: 0xB7C2, - 28313 - 11904: 0xDE5E, - 28314 - 11904: 0x89C1, - 28315 - 11904: 0xDE43, - 28316 - 11904: 0xB7C8, - 28317 - 11904: 0xB7BE, - 28318 - 11904: 0xDE52, - 28319 - 11904: 0xDE48, - 28320 - 11904: 0xDE4B, - 28321 - 11904: 0xDE63, - 28322 - 11904: 0xB7B8, - 28323 - 11904: 0xDE6A, - 28324 - 11904: 0xDE62, - 28325 - 11904: 0xB7C1, - 28326 - 11904: 0xDE57, - 28327 - 11904: 0xB7CC, - 28330 - 11904: 0xB7CB, - 28331 - 11904: 0xB7C5, - 28334 - 11904: 0xDE69, - 28335 - 11904: 0xB7B9, - 28336 - 11904: 0xDE55, - 28337 - 11904: 0xDE4C, - 28338 - 11904: 0xDE59, - 28339 - 11904: 0xDE65, - 28340 - 11904: 0xB7CD, - 28341 - 11904: 0xFD68, - 28342 - 11904: 0xB7BB, - 28343 - 11904: 0xDE54, - 28344 - 11904: 0x9CB7, - 28345 - 11904: 0xDE4D, - 28346 - 11904: 0xB7C4, - 28347 - 11904: 0x8DE3, - 28348 - 11904: 0xB7C3, - 28349 - 11904: 0xDE50, - 28350 - 11904: 0xDE5A, - 28351 - 11904: 0xDE64, - 28352 - 11904: 0xDE47, - 28353 - 11904: 0xDE51, - 28354 - 11904: 0xB7BC, - 28355 - 11904: 0xDE5B, - 28356 - 11904: 0xB7C9, - 28357 - 11904: 0xB7C0, - 28358 - 11904: 0xDE4E, - 28359 - 11904: 0xB7BF, - 28360 - 11904: 0xDE45, - 28361 - 11904: 0xDE53, - 28362 - 11904: 0xDE67, - 28363 - 11904: 0xB4FE, - 28364 - 11904: 0xBAB0, - 28365 - 11904: 0xDE56, - 28366 - 11904: 0xE26C, - 28367 - 11904: 0xDE58, - 28368 - 11904: 0xDE66, - 28369 - 11904: 0xB7C6, - 28370 - 11904: 0xDE4F, - 28371 - 11904: 0xB7BA, - 28372 - 11904: 0xB7CA, - 28373 - 11904: 0xBCF0, - 28374 - 11904: 0xDE44, - 28376 - 11904: 0xDE5D, - 28377 - 11904: 0xFAC0, - 28378 - 11904: 0x8DE5, - 28379 - 11904: 0xFA64, - 28380 - 11904: 0xDE5C, - 28381 - 11904: 0x8947, - 28386 - 11904: 0x8DE4, - 28392 - 11904: 0x8DE7, - 28393 - 11904: 0x8DE8, - 28395 - 11904: 0xE2AA, - 28396 - 11904: 0xBAAD, - 28397 - 11904: 0xE27D, - 28398 - 11904: 0xE2A4, - 28399 - 11904: 0xBAA2, - 28401 - 11904: 0xE26E, - 28402 - 11904: 0xBAAF, - 28404 - 11904: 0xBA77, - 28405 - 11904: 0xE26D, - 28406 - 11904: 0xE2B0, - 28407 - 11904: 0xBAB1, - 28408 - 11904: 0xE271, - 28409 - 11904: 0xE2A3, - 28410 - 11904: 0xFDC7, - 28411 - 11904: 0xE273, - 28412 - 11904: 0xE2B3, - 28413 - 11904: 0xE2AF, - 28414 - 11904: 0xBA75, - 28415 - 11904: 0xBAA1, - 28416 - 11904: 0xE653, - 28417 - 11904: 0xBAAE, - 28418 - 11904: 0xBA7D, - 28419 - 11904: 0xE26F, - 28420 - 11904: 0xFDB0, - 28421 - 11904: 0xE2AE, - 28422 - 11904: 0xBAA3, - 28423 - 11904: 0xE2AB, - 28424 - 11904: 0xE2B8, - 28425 - 11904: 0xE275, - 28426 - 11904: 0xE27E, - 28427 - 11904: 0x9445, - 28428 - 11904: 0x97D6, - 28429 - 11904: 0xE2B6, - 28430 - 11904: 0xE2AC, - 28431 - 11904: 0xBA7C, - 28434 - 11904: 0xE27C, - 28435 - 11904: 0xBA76, - 28436 - 11904: 0xBA74, - 28437 - 11904: 0xBAA8, - 28438 - 11904: 0xFCC6, - 28439 - 11904: 0x9844, - 28440 - 11904: 0xE27A, - 28441 - 11904: 0xE277, - 28442 - 11904: 0xE278, - 28444 - 11904: 0xE2B2, - 28446 - 11904: 0xE2B7, - 28447 - 11904: 0xE2B5, - 28448 - 11904: 0xBA7A, - 28449 - 11904: 0xE2B9, - 28450 - 11904: 0xBA7E, - 28451 - 11904: 0xBAA7, - 28452 - 11904: 0x8DE9, - 28453 - 11904: 0xE270, - 28454 - 11904: 0xE5FA, - 28455 - 11904: 0xE279, - 28457 - 11904: 0xBA78, - 28458 - 11904: 0xBAAC, - 28459 - 11904: 0xBAA9, - 28460 - 11904: 0xBA7B, - 28461 - 11904: 0xE2A5, - 28462 - 11904: 0xE274, - 28463 - 11904: 0xBAAA, - 28464 - 11904: 0xE2A7, - 28465 - 11904: 0xBAA4, - 28466 - 11904: 0xBAA6, - 28467 - 11904: 0xBA73, - 28468 - 11904: 0x8DEA, - 28469 - 11904: 0xE2A9, - 28470 - 11904: 0xE2A1, - 28471 - 11904: 0xE272, - 28472 - 11904: 0xBAA5, - 28473 - 11904: 0xE2B1, - 28474 - 11904: 0xE2B4, - 28475 - 11904: 0xE27B, - 28476 - 11904: 0xE2A8, - 28477 - 11904: 0xFE50, - 28478 - 11904: 0xBA79, - 28479 - 11904: 0xBCDF, - 28480 - 11904: 0xE2A6, - 28481 - 11904: 0xE5F9, - 28483 - 11904: 0xE2AD, - 28484 - 11904: 0xFDCC, - 28494 - 11904: 0xE276, - 28495 - 11904: 0xE644, - 28496 - 11904: 0xE64E, - 28497 - 11904: 0xBCE2, - 28498 - 11904: 0xE64D, - 28499 - 11904: 0xE659, - 28500 - 11904: 0xBCE4, - 28501 - 11904: 0xE64B, - 28502 - 11904: 0x9DA7, - 28503 - 11904: 0xE64F, - 28504 - 11904: 0xBCEF, - 28506 - 11904: 0xE646, - 28507 - 11904: 0xBCE7, - 28508 - 11904: 0xFDCD, - 28509 - 11904: 0xE652, - 28510 - 11904: 0xE9F0, - 28511 - 11904: 0xBCF3, - 28512 - 11904: 0xBCF2, - 28513 - 11904: 0xE654, - 28514 - 11904: 0xE643, - 28515 - 11904: 0xE65E, - 28516 - 11904: 0xBCED, - 28518 - 11904: 0xBCE3, - 28519 - 11904: 0xE657, - 28521 - 11904: 0xE65B, - 28522 - 11904: 0xE660, - 28523 - 11904: 0xE655, - 28524 - 11904: 0xE649, - 28525 - 11904: 0xBCE6, - 28526 - 11904: 0xBCE9, - 28527 - 11904: 0xBCF1, - 28528 - 11904: 0xBCEC, - 28530 - 11904: 0xE64C, - 28531 - 11904: 0xE2A2, - 28532 - 11904: 0xFDCF, - 28534 - 11904: 0xE648, - 28535 - 11904: 0xE65F, - 28536 - 11904: 0xBCE8, - 28537 - 11904: 0x95D2, - 28538 - 11904: 0xBCEB, - 28539 - 11904: 0xE661, - 28540 - 11904: 0xBCE0, - 28541 - 11904: 0xE656, - 28542 - 11904: 0xE5FB, - 28543 - 11904: 0xE65C, - 28544 - 11904: 0xC0DF, - 28545 - 11904: 0x8DED, - 28546 - 11904: 0xE64A, - 28548 - 11904: 0xBCE1, - 28549 - 11904: 0xE645, - 28550 - 11904: 0xBCE5, - 28551 - 11904: 0xE5FC, - 28552 - 11904: 0xBAAB, - 28553 - 11904: 0xE641, - 28554 - 11904: 0xFCBA, - 28555 - 11904: 0xE65A, - 28556 - 11904: 0xE642, - 28557 - 11904: 0xE640, - 28558 - 11904: 0xBCEA, - 28560 - 11904: 0xE658, - 28562 - 11904: 0xE5FE, - 28563 - 11904: 0xE651, - 28564 - 11904: 0xE650, - 28565 - 11904: 0xE65D, - 28566 - 11904: 0xE647, - 28567 - 11904: 0xBCEE, - 28573 - 11904: 0xFDC5, - 28574 - 11904: 0xE9F3, - 28575 - 11904: 0xFDD2, - 28576 - 11904: 0xBF49, - 28577 - 11904: 0xBEFE, - 28578 - 11904: 0xEA40, - 28579 - 11904: 0xE9EB, - 28580 - 11904: 0xBF41, - 28581 - 11904: 0xE9F7, - 28582 - 11904: 0xBF48, - 28583 - 11904: 0xBF43, - 28584 - 11904: 0xE9F5, - 28585 - 11904: 0xED4F, - 28586 - 11904: 0xE9FB, - 28587 - 11904: 0xEA42, - 28588 - 11904: 0xE9FA, - 28589 - 11904: 0xE9E9, - 28590 - 11904: 0xE9F8, - 28591 - 11904: 0xEA44, - 28592 - 11904: 0xEA46, - 28593 - 11904: 0xBEFD, - 28594 - 11904: 0xEA45, - 28595 - 11904: 0xBF44, - 28596 - 11904: 0xBF4A, - 28597 - 11904: 0x9CDC, - 28598 - 11904: 0xBF47, - 28600 - 11904: 0xE9FE, - 28601 - 11904: 0xBF46, - 28602 - 11904: 0xE9F9, - 28603 - 11904: 0x95CF, - 28604 - 11904: 0xE9ED, - 28605 - 11904: 0xE9F2, - 28606 - 11904: 0x8DEE, - 28607 - 11904: 0xE9FD, - 28608 - 11904: 0xBF45, - 28609 - 11904: 0xBF42, - 28610 - 11904: 0xBEFC, - 28611 - 11904: 0xBF40, - 28612 - 11904: 0xE9F1, - 28614 - 11904: 0xE5FD, - 28615 - 11904: 0xE9EC, - 28616 - 11904: 0xE9EF, - 28617 - 11904: 0xEA41, - 28618 - 11904: 0xE9F4, - 28619 - 11904: 0xE9EA, - 28620 - 11904: 0xED4E, - 28621 - 11904: 0xEA43, - 28622 - 11904: 0xE9EE, - 28623 - 11904: 0xE9FC, - 28627 - 11904: 0xFDD4, - 28628 - 11904: 0xED51, - 28629 - 11904: 0xC0E3, - 28632 - 11904: 0xC0D7, - 28633 - 11904: 0x96EC, - 28634 - 11904: 0x96EB, - 28635 - 11904: 0xC0DB, - 28636 - 11904: 0xED53, - 28637 - 11904: 0xED59, - 28638 - 11904: 0xED57, - 28639 - 11904: 0xC0D9, - 28640 - 11904: 0xC0DA, - 28641 - 11904: 0xC0E1, - 28642 - 11904: 0xED5A, - 28643 - 11904: 0xED52, - 28644 - 11904: 0xC0DC, - 28646 - 11904: 0xED56, - 28647 - 11904: 0xED55, - 28648 - 11904: 0xED5B, - 28649 - 11904: 0xC0E2, - 28651 - 11904: 0xC0DD, - 28652 - 11904: 0xC0E0, - 28653 - 11904: 0xED54, - 28654 - 11904: 0xC0E4, - 28655 - 11904: 0xC0DE, - 28656 - 11904: 0xC0E5, - 28657 - 11904: 0xC0D8, - 28658 - 11904: 0xED58, - 28660 - 11904: 0xED50, - 28662 - 11904: 0x90B6, - 28663 - 11904: 0xEFF7, - 28664 - 11904: 0xFDC3, - 28666 - 11904: 0xC271, - 28667 - 11904: 0xEFF4, - 28668 - 11904: 0xEFF6, - 28670 - 11904: 0xC26F, - 28671 - 11904: 0xEFF2, - 28672 - 11904: 0xEFF3, - 28673 - 11904: 0xEFEE, - 28675 - 11904: 0x98AB, - 28676 - 11904: 0xE9F6, - 28677 - 11904: 0xEFEF, - 28678 - 11904: 0xC270, - 28679 - 11904: 0xEFEB, - 28681 - 11904: 0xC26D, - 28682 - 11904: 0xEFF8, - 28683 - 11904: 0xC26E, - 28684 - 11904: 0xEFEC, - 28685 - 11904: 0xEFED, - 28686 - 11904: 0xEFF1, - 28687 - 11904: 0xC273, - 28689 - 11904: 0xC272, - 28692 - 11904: 0xEFF0, - 28693 - 11904: 0xC378, - 28694 - 11904: 0xF25F, - 28695 - 11904: 0xF265, - 28696 - 11904: 0xC379, - 28697 - 11904: 0xF25C, - 28698 - 11904: 0xC376, - 28699 - 11904: 0xC373, - 28700 - 11904: 0xF267, - 28701 - 11904: 0xC377, - 28702 - 11904: 0x96EE, - 28703 - 11904: 0xC374, - 28704 - 11904: 0xF25E, - 28705 - 11904: 0xF261, - 28706 - 11904: 0xF262, - 28707 - 11904: 0xF263, - 28708 - 11904: 0xF266, - 28710 - 11904: 0xEFF5, - 28711 - 11904: 0xF25D, - 28712 - 11904: 0xC375, - 28713 - 11904: 0xF264, - 28714 - 11904: 0xF268, - 28715 - 11904: 0xF260, - 28716 - 11904: 0x8DF4, - 28719 - 11904: 0xF45D, - 28720 - 11904: 0xC46A, - 28721 - 11904: 0xF460, - 28722 - 11904: 0xC46B, - 28723 - 11904: 0xF468, - 28724 - 11904: 0xF45F, - 28725 - 11904: 0xF45C, - 28727 - 11904: 0xF45E, - 28728 - 11904: 0xF462, - 28729 - 11904: 0xF465, - 28730 - 11904: 0xF464, - 28731 - 11904: 0xF467, - 28732 - 11904: 0xF45B, - 28734 - 11904: 0xC469, - 28735 - 11904: 0xF463, - 28736 - 11904: 0xF466, - 28737 - 11904: 0xF469, - 28738 - 11904: 0xF461, - 28739 - 11904: 0xF5D3, - 28740 - 11904: 0xF5D4, - 28741 - 11904: 0xF5D8, - 28742 - 11904: 0xF5D9, - 28744 - 11904: 0xF5D6, - 28745 - 11904: 0xF5D7, - 28746 - 11904: 0xF5D5, - 28747 - 11904: 0xFDE0, - 28748 - 11904: 0xC4E9, - 28749 - 11904: 0x8C67, - 28752 - 11904: 0x8DF6, - 28753 - 11904: 0xC578, - 28754 - 11904: 0xF6EB, - 28756 - 11904: 0x8DF7, - 28757 - 11904: 0xF6E8, - 28758 - 11904: 0xF6E9, - 28759 - 11904: 0xF6EA, - 28760 - 11904: 0xC579, - 28762 - 11904: 0xF7E5, - 28763 - 11904: 0xF7E4, - 28764 - 11904: 0x8FFA, - 28765 - 11904: 0xF8AF, - 28766 - 11904: 0xC5F4, - 28767 - 11904: 0xF8AD, - 28768 - 11904: 0xF8B0, - 28769 - 11904: 0xF8AE, - 28770 - 11904: 0xF8F5, - 28771 - 11904: 0xC657, - 28772 - 11904: 0xC665, - 28773 - 11904: 0xF9A3, - 28774 - 11904: 0xF96C, - 28775 - 11904: 0x97D0, - 28776 - 11904: 0xF9A2, - 28777 - 11904: 0xF9D0, - 28778 - 11904: 0xF9D1, - 28779 - 11904: 0xA4F5, - 28780 - 11904: 0x8BD2, - 28782 - 11904: 0x87DE, - 28783 - 11904: 0x8DF8, - 28784 - 11904: 0xA6C7, - 28785 - 11904: 0xCA41, - 28788 - 11904: 0xCB5E, - 28789 - 11904: 0x90D9, - 28790 - 11904: 0xA85F, - 28791 - 11904: 0x8C47, - 28792 - 11904: 0xA862, - 28793 - 11904: 0xFAF0, - 28794 - 11904: 0xCB5F, - 28796 - 11904: 0xA860, - 28797 - 11904: 0xA861, - 28798 - 11904: 0xFDE1, - 28799 - 11904: 0x8DF9, - 28801 - 11904: 0xFDE3, - 28802 - 11904: 0xCD58, - 28803 - 11904: 0xCD5A, - 28804 - 11904: 0xCD55, - 28805 - 11904: 0xCD52, - 28806 - 11904: 0xCD54, - 28809 - 11904: 0x8DFA, - 28810 - 11904: 0xAAA4, - 28811 - 11904: 0xFB63, - 28814 - 11904: 0xAAA2, - 28815 - 11904: 0x90A6, - 28817 - 11904: 0xCD56, - 28818 - 11904: 0xAAA3, - 28819 - 11904: 0xCD53, - 28820 - 11904: 0xCD50, - 28821 - 11904: 0xAAA1, - 28822 - 11904: 0xCD57, - 28824 - 11904: 0xCD51, - 28825 - 11904: 0xAAA5, - 28826 - 11904: 0xCD59, - 28831 - 11904: 0xCFAF, - 28832 - 11904: 0x9970, - 28833 - 11904: 0xCFB3, - 28835 - 11904: 0x91EB, - 28836 - 11904: 0xACB7, - 28837 - 11904: 0x9770, - 28838 - 11904: 0x986F, - 28839 - 11904: 0xFDE2, - 28841 - 11904: 0xCFB6, - 28843 - 11904: 0xACAF, - 28844 - 11904: 0xACB2, - 28845 - 11904: 0xACB4, - 28846 - 11904: 0xACB6, - 28847 - 11904: 0xACB3, - 28848 - 11904: 0xCFB2, - 28849 - 11904: 0xCFB1, - 28851 - 11904: 0xACB1, - 28852 - 11904: 0xCFB4, - 28853 - 11904: 0xCFB5, - 28855 - 11904: 0xCFAE, - 28856 - 11904: 0xACB5, - 28857 - 11904: 0x98F2, - 28858 - 11904: 0xACB0, - 28859 - 11904: 0x9AFC, - 28860 - 11904: 0x896C, - 28861 - 11904: 0xFDFD, - 28862 - 11904: 0xCFB0, - 28864 - 11904: 0x995E, - 28868 - 11904: 0x95BD, - 28869 - 11904: 0xD277, - 28870 - 11904: 0xD278, - 28871 - 11904: 0xD279, - 28872 - 11904: 0xAF50, - 28874 - 11904: 0xAF4C, - 28875 - 11904: 0xD26E, - 28876 - 11904: 0xFDE4, - 28877 - 11904: 0xD276, - 28878 - 11904: 0xD27B, - 28879 - 11904: 0xAF51, - 28880 - 11904: 0x91E6, - 28881 - 11904: 0xD26C, - 28882 - 11904: 0xD272, - 28883 - 11904: 0xD26B, - 28884 - 11904: 0xD275, - 28885 - 11904: 0xFDE5, - 28886 - 11904: 0xFDE6, - 28887 - 11904: 0xD271, - 28888 - 11904: 0xAF4D, - 28889 - 11904: 0xAF4F, - 28890 - 11904: 0xD27A, - 28892 - 11904: 0xD26A, - 28893 - 11904: 0xD26D, - 28894 - 11904: 0xD273, - 28895 - 11904: 0xFDE7, - 28896 - 11904: 0xD274, - 28897 - 11904: 0xD27C, - 28898 - 11904: 0xD270, - 28900 - 11904: 0xAF4E, - 28911 - 11904: 0xB26D, - 28912 - 11904: 0xD64E, - 28913 - 11904: 0x9454, - 28915 - 11904: 0xD650, - 28916 - 11904: 0xD64C, - 28917 - 11904: 0x99B8, - 28918 - 11904: 0xD658, - 28919 - 11904: 0xD64A, - 28920 - 11904: 0xD657, - 28921 - 11904: 0xB269, - 28922 - 11904: 0xD648, - 28923 - 11904: 0xDA5B, - 28924 - 11904: 0xD652, - 28925 - 11904: 0xB26C, - 28926 - 11904: 0x97E9, - 28927 - 11904: 0xD653, - 28928 - 11904: 0xD656, - 28930 - 11904: 0xD65A, - 28932 - 11904: 0xD64F, - 28933 - 11904: 0x9346, - 28934 - 11904: 0xD654, - 28937 - 11904: 0xB26A, - 28938 - 11904: 0xB26B, - 28939 - 11904: 0xD659, - 28940 - 11904: 0xD64D, - 28941 - 11904: 0xD649, - 28942 - 11904: 0xD65B, - 28944 - 11904: 0xD651, - 28947 - 11904: 0xD655, - 28951 - 11904: 0xD64B, - 28953 - 11904: 0xB548, - 28954 - 11904: 0xB549, - 28955 - 11904: 0xDA65, - 28956 - 11904: 0xB54F, - 28957 - 11904: 0x9863, - 28958 - 11904: 0xDA59, - 28959 - 11904: 0xDA62, - 28960 - 11904: 0xDA58, - 28961 - 11904: 0xB54C, - 28962 - 11904: 0xDA60, - 28963 - 11904: 0xDA5E, - 28965 - 11904: 0xDA5F, - 28966 - 11904: 0xB54A, - 28968 - 11904: 0xDA63, - 28969 - 11904: 0x95BC, - 28971 - 11904: 0xFDED, - 28972 - 11904: 0xFDF7, - 28974 - 11904: 0xDA5C, - 28975 - 11904: 0xDA5A, - 28976 - 11904: 0xB54B, - 28977 - 11904: 0xDA5D, - 28978 - 11904: 0xDA61, - 28979 - 11904: 0x9870, - 28980 - 11904: 0x96F6, - 28981 - 11904: 0x8EA9, - 28982 - 11904: 0xB54D, - 28986 - 11904: 0xDA64, - 28987 - 11904: 0x9451, - 28990 - 11904: 0x8E43, - 28992 - 11904: 0x8B5A, - 28993 - 11904: 0xDE70, - 28994 - 11904: 0xDE77, - 28995 - 11904: 0xDE79, - 28996 - 11904: 0xDEA1, - 28997 - 11904: 0xFDEE, - 28998 - 11904: 0xB7DA, - 28999 - 11904: 0xDE6B, - 29001 - 11904: 0xB7D2, - 29002 - 11904: 0xFDF0, - 29003 - 11904: 0xDE7A, - 29004 - 11904: 0xB7D7, - 29005 - 11904: 0xDEA2, - 29006 - 11904: 0xB7CE, - 29007 - 11904: 0xFDF4, - 29008 - 11904: 0xDE7D, - 29009 - 11904: 0x9BF5, - 29010 - 11904: 0xDE6D, - 29011 - 11904: 0xDE7E, - 29012 - 11904: 0xDE6C, - 29014 - 11904: 0xB7DC, - 29015 - 11904: 0x8CEE, - 29016 - 11904: 0xDE78, - 29017 - 11904: 0xB7CF, - 29018 - 11904: 0xDEA3, - 29020 - 11904: 0xB7D4, - 29021 - 11904: 0xDE71, - 29022 - 11904: 0xB7D9, - 29023 - 11904: 0xDE7C, - 29024 - 11904: 0xDE6F, - 29025 - 11904: 0xDE76, - 29026 - 11904: 0xDE72, - 29027 - 11904: 0xDE6E, - 29028 - 11904: 0xB7D1, - 29029 - 11904: 0xB7D8, - 29030 - 11904: 0xB7D6, - 29031 - 11904: 0xB7D3, - 29032 - 11904: 0xB7DB, - 29033 - 11904: 0xB7D0, - 29034 - 11904: 0xDE75, - 29035 - 11904: 0x977E, - 29036 - 11904: 0xB7D5, - 29038 - 11904: 0xFDF1, - 29040 - 11904: 0xDE7B, - 29041 - 11904: 0x9BD5, - 29042 - 11904: 0xDE73, - 29043 - 11904: 0x9AC3, - 29045 - 11904: 0x97C8, - 29046 - 11904: 0xA0DB, - 29047 - 11904: 0x91D0, - 29048 - 11904: 0xDE74, - 29050 - 11904: 0x9FE4, - 29051 - 11904: 0xE2C1, - 29052 - 11904: 0x8FDD, - 29053 - 11904: 0xBAB4, - 29054 - 11904: 0x91E9, - 29056 - 11904: 0xE2BD, - 29057 - 11904: 0xE2C3, - 29058 - 11904: 0xE2BF, - 29060 - 11904: 0xBAB6, - 29061 - 11904: 0xE2BE, - 29062 - 11904: 0xE2C2, - 29063 - 11904: 0xE2BA, - 29064 - 11904: 0x98E0, - 29065 - 11904: 0xE2BC, - 29066 - 11904: 0xBAB5, - 29068 - 11904: 0x92CA, - 29070 - 11904: 0x9857, - 29071 - 11904: 0xE2C0, - 29072 - 11904: 0xE2BB, - 29073 - 11904: 0x8C51, - 29074 - 11904: 0xBAB7, - 29076 - 11904: 0xBAB2, - 29078 - 11904: 0xFDEB, - 29079 - 11904: 0xE2C4, - 29080 - 11904: 0x9B49, - 29081 - 11904: 0xBAB3, - 29082 - 11904: 0xE667, - 29083 - 11904: 0xE664, - 29084 - 11904: 0xE670, - 29085 - 11904: 0xE66A, - 29086 - 11904: 0xE66C, - 29087 - 11904: 0xBCF4, - 29088 - 11904: 0xE666, - 29089 - 11904: 0xE66E, - 29090 - 11904: 0x9D76, - 29091 - 11904: 0x9EAF, - 29092 - 11904: 0xE66D, - 29093 - 11904: 0xE66B, - 29095 - 11904: 0xE671, - 29096 - 11904: 0xBCF7, - 29097 - 11904: 0xE668, - 29098 - 11904: 0xE66F, - 29100 - 11904: 0xBCF5, - 29101 - 11904: 0x9CCC, - 29103 - 11904: 0xE663, - 29104 - 11904: 0xE665, - 29105 - 11904: 0xBCF6, - 29106 - 11904: 0xE662, - 29107 - 11904: 0xE672, - 29108 - 11904: 0xFDEA, - 29109 - 11904: 0xE669, - 29111 - 11904: 0x8DF1, - 29112 - 11904: 0xEA4A, - 29113 - 11904: 0xBF51, - 29114 - 11904: 0xFDFB, - 29116 - 11904: 0xEA55, - 29117 - 11904: 0xEA53, - 29118 - 11904: 0xBF4B, - 29119 - 11904: 0xEA49, - 29120 - 11904: 0xEA4C, - 29121 - 11904: 0xEA4D, - 29122 - 11904: 0xEA48, - 29123 - 11904: 0xBF55, - 29124 - 11904: 0xBF56, - 29125 - 11904: 0xEA47, - 29126 - 11904: 0xEA56, - 29127 - 11904: 0xEA51, - 29128 - 11904: 0xBF4F, - 29129 - 11904: 0xBF4C, - 29130 - 11904: 0xEA50, - 29131 - 11904: 0xEA4E, - 29134 - 11904: 0xBF52, - 29135 - 11904: 0xEA52, - 29136 - 11904: 0xBF4D, - 29137 - 11904: 0x8E53, - 29138 - 11904: 0xBF4E, - 29140 - 11904: 0xEA4F, - 29141 - 11904: 0xBF50, - 29142 - 11904: 0xEA4B, - 29144 - 11904: 0xEA54, - 29145 - 11904: 0xBF53, - 29146 - 11904: 0xEA57, - 29147 - 11904: 0xEA58, - 29148 - 11904: 0xBF54, - 29149 - 11904: 0xFACF, - 29151 - 11904: 0xC0E7, - 29152 - 11904: 0xC0EE, - 29153 - 11904: 0xED5C, - 29154 - 11904: 0xED62, - 29156 - 11904: 0xED60, - 29157 - 11904: 0xC0EA, - 29158 - 11904: 0xC0E9, - 29159 - 11904: 0xC0E6, - 29160 - 11904: 0xED5E, - 29163 - 11904: 0x96F9, - 29164 - 11904: 0xC0EC, - 29165 - 11904: 0xC0EB, - 29166 - 11904: 0xC0E8, - 29168 - 11904: 0xED61, - 29169 - 11904: 0xED5D, - 29170 - 11904: 0xED5F, - 29172 - 11904: 0xC0ED, - 29173 - 11904: 0x98BF, - 29174 - 11904: 0x9E49, - 29176 - 11904: 0xC277, - 29177 - 11904: 0xEFFB, - 29179 - 11904: 0xC274, - 29180 - 11904: 0xC275, - 29181 - 11904: 0xEFFD, - 29182 - 11904: 0xC276, - 29183 - 11904: 0xEFFA, - 29184 - 11904: 0x8CA7, - 29185 - 11904: 0xEFF9, - 29186 - 11904: 0xF26C, - 29187 - 11904: 0xEFFC, - 29189 - 11904: 0xF26D, - 29190 - 11904: 0xC37A, - 29191 - 11904: 0xF26B, - 29193 - 11904: 0x9BCA, - 29194 - 11904: 0xF26A, - 29196 - 11904: 0xF269, - 29197 - 11904: 0xC37B, - 29198 - 11904: 0xFDFE, - 29199 - 11904: 0x92DC, - 29200 - 11904: 0xC46C, - 29203 - 11904: 0xF46A, - 29204 - 11904: 0xF46B, - 29205 - 11904: 0xFE41, - 29206 - 11904: 0x91CC, - 29207 - 11904: 0x91E2, - 29209 - 11904: 0xF5DC, - 29210 - 11904: 0xF5DB, - 29211 - 11904: 0xC4EA, - 29213 - 11904: 0xF5DA, - 29214 - 11904: 0xF6EC, - 29215 - 11904: 0xF6ED, - 29218 - 11904: 0xF7E6, - 29219 - 11904: 0xF8B1, - 29220 - 11904: 0xFE44, - 29221 - 11904: 0x875F, - 29222 - 11904: 0xF8F6, - 29223 - 11904: 0xF9BC, - 29224 - 11904: 0xC679, - 29225 - 11904: 0xF9C6, - 29226 - 11904: 0xA4F6, - 29227 - 11904: 0x8BD3, - 29228 - 11904: 0xAAA6, - 29229 - 11904: 0xAAA7, - 29230 - 11904: 0xFE47, - 29232 - 11904: 0xACB8, - 29237 - 11904: 0xC0EF, - 29238 - 11904: 0xA4F7, - 29240 - 11904: 0xAAA8, - 29241 - 11904: 0xAF52, - 29242 - 11904: 0xB7DD, - 29243 - 11904: 0xA4F8, - 29245 - 11904: 0xB26E, - 29246 - 11904: 0xBAB8, - 29247 - 11904: 0xC962, - 29248 - 11904: 0xFE48, - 29249 - 11904: 0xCFB7, - 29250 - 11904: 0xD27D, - 29252 - 11904: 0xE2C5, - 29254 - 11904: 0xC0F0, - 29255 - 11904: 0xA4F9, - 29256 - 11904: 0xAAA9, - 29257 - 11904: 0xCFB8, - 29258 - 11904: 0xCFB9, - 29259 - 11904: 0xDA66, - 29260 - 11904: 0xB550, - 29263 - 11904: 0xDEA4, - 29264 - 11904: 0xA0E4, - 29266 - 11904: 0xB7DE, - 29267 - 11904: 0xE2C6, - 29269 - 11904: 0xFE4B, - 29270 - 11904: 0xBCF8, - 29271 - 11904: 0xFE4C, - 29272 - 11904: 0xC37C, - 29273 - 11904: 0xA4FA, - 29274 - 11904: 0xDA67, - 29275 - 11904: 0xA4FB, - 29276 - 11904: 0x8DBF, - 29277 - 11904: 0xA6C9, - 29278 - 11904: 0xCA42, - 29279 - 11904: 0xA6C8, - 29280 - 11904: 0xA865, - 29281 - 11904: 0xA864, - 29282 - 11904: 0xA863, - 29283 - 11904: 0xCB60, - 29286 - 11904: 0x9E78, - 29287 - 11904: 0xAAAA, - 29289 - 11904: 0xAAAB, - 29290 - 11904: 0xCD5B, - 29292 - 11904: 0xCFBA, - 29294 - 11904: 0xCFBD, - 29295 - 11904: 0xACBA, - 29296 - 11904: 0xCFBB, - 29298 - 11904: 0xACB9, - 29299 - 11904: 0xCFBC, - 29300 - 11904: 0xACBB, - 29302 - 11904: 0xD2A2, - 29303 - 11904: 0xD2A1, - 29304 - 11904: 0xD27E, - 29305 - 11904: 0xAF53, - 29307 - 11904: 0xD65D, - 29308 - 11904: 0xD65E, - 29309 - 11904: 0xB26F, - 29310 - 11904: 0xD65C, - 29311 - 11904: 0xD65F, - 29312 - 11904: 0xB552, - 29313 - 11904: 0xB270, - 29314 - 11904: 0xFE51, - 29316 - 11904: 0xB551, - 29317 - 11904: 0xDA6B, - 29318 - 11904: 0xDA6A, - 29319 - 11904: 0x9456, - 29320 - 11904: 0xDA68, - 29321 - 11904: 0xDA69, - 29323 - 11904: 0xDA6C, - 29324 - 11904: 0xDEA6, - 29325 - 11904: 0xDEA5, - 29326 - 11904: 0xDEA9, - 29327 - 11904: 0x9D61, - 29328 - 11904: 0xDEA8, - 29329 - 11904: 0xDEA7, - 29330 - 11904: 0xBAB9, - 29331 - 11904: 0xE2C9, - 29332 - 11904: 0x9457, - 29333 - 11904: 0xE2C8, - 29334 - 11904: 0xBABA, - 29335 - 11904: 0xE2C7, - 29336 - 11904: 0xE673, - 29338 - 11904: 0xE674, - 29339 - 11904: 0xBCF9, - 29341 - 11904: 0xEA59, - 29342 - 11904: 0xEA5A, - 29343 - 11904: 0x9966, - 29345 - 11904: 0xF272, - 29346 - 11904: 0xC37D, - 29347 - 11904: 0xF271, - 29348 - 11904: 0xF270, - 29349 - 11904: 0xF26E, - 29350 - 11904: 0xF26F, - 29351 - 11904: 0xC4EB, - 29352 - 11904: 0xF46C, - 29353 - 11904: 0xF6EE, - 29354 - 11904: 0xF8F7, - 29356 - 11904: 0xA4FC, - 29357 - 11904: 0x8BD5, - 29358 - 11904: 0xC9A5, - 29359 - 11904: 0xA5C7, - 29360 - 11904: 0xC9A6, - 29362 - 11904: 0xA069, - 29364 - 11904: 0xCA43, - 29365 - 11904: 0xCA44, - 29370 - 11904: 0xCB66, - 29373 - 11904: 0xCB62, - 29375 - 11904: 0xCB61, - 29376 - 11904: 0xAAAC, - 29377 - 11904: 0xCB65, - 29378 - 11904: 0xA867, - 29379 - 11904: 0xCB63, - 29380 - 11904: 0xA866, - 29381 - 11904: 0xCB67, - 29382 - 11904: 0xCB64, - 29385 - 11904: 0xCD5F, - 29386 - 11904: 0xCFBE, - 29387 - 11904: 0xCD5D, - 29388 - 11904: 0xCD64, - 29389 - 11904: 0x98B4, - 29390 - 11904: 0xAAAD, - 29392 - 11904: 0xAAB0, - 29393 - 11904: 0xCD65, - 29394 - 11904: 0xCD61, - 29396 - 11904: 0xCD62, - 29398 - 11904: 0xCD5C, - 29399 - 11904: 0xAAAF, - 29400 - 11904: 0xCD5E, - 29401 - 11904: 0xAAAE, - 29402 - 11904: 0xCD63, - 29404 - 11904: 0xCD60, - 29407 - 11904: 0xCFC2, - 29408 - 11904: 0xACBD, - 29409 - 11904: 0xACBE, - 29410 - 11904: 0xA049, - 29411 - 11904: 0xCFC5, - 29412 - 11904: 0xCFBF, - 29414 - 11904: 0xCFC4, - 29416 - 11904: 0xCFC0, - 29417 - 11904: 0xACBC, - 29418 - 11904: 0xCFC3, - 29419 - 11904: 0xCFC1, - 29427 - 11904: 0xD2A8, - 29428 - 11904: 0xD2A5, - 29430 - 11904: 0xD2A7, - 29431 - 11904: 0xAF58, - 29432 - 11904: 0xAF57, - 29433 - 11904: 0xAF55, - 29434 - 11904: 0xD2A4, - 29435 - 11904: 0xD2A9, - 29436 - 11904: 0xAF54, - 29437 - 11904: 0xAF56, - 29438 - 11904: 0xD2A6, - 29439 - 11904: 0xD667, - 29440 - 11904: 0xD2A3, - 29441 - 11904: 0xD2AA, - 29442 - 11904: 0xA04C, - 29444 - 11904: 0x9E65, - 29447 - 11904: 0xD662, - 29448 - 11904: 0xD666, - 29450 - 11904: 0xD665, - 29451 - 11904: 0xDA6E, - 29452 - 11904: 0xDA79, - 29455 - 11904: 0xD668, - 29456 - 11904: 0x98B5, - 29457 - 11904: 0xD663, - 29458 - 11904: 0xDA6D, - 29459 - 11904: 0xB274, - 29462 - 11904: 0xB273, - 29463 - 11904: 0xD661, - 29464 - 11904: 0xD664, - 29465 - 11904: 0xB275, - 29467 - 11904: 0xB272, - 29468 - 11904: 0xB271, - 29469 - 11904: 0xD660, - 29470 - 11904: 0xD669, - 29474 - 11904: 0xDA70, - 29475 - 11904: 0xDA77, - 29477 - 11904: 0xB554, - 29478 - 11904: 0xDA76, - 29479 - 11904: 0xDA73, - 29480 - 11904: 0xFE58, - 29481 - 11904: 0xB556, - 29482 - 11904: 0xFE52, - 29483 - 11904: 0xFE53, - 29484 - 11904: 0xA065, - 29485 - 11904: 0xDA75, - 29486 - 11904: 0xFE59, - 29488 - 11904: 0xDA6F, - 29489 - 11904: 0xDA71, - 29490 - 11904: 0xDA74, - 29491 - 11904: 0xDA72, - 29492 - 11904: 0xB555, - 29493 - 11904: 0xDA78, - 29494 - 11904: 0xB553, - 29495 - 11904: 0xB7DF, - 29496 - 11904: 0x98B7, - 29497 - 11904: 0x98B8, - 29498 - 11904: 0xDEAD, - 29499 - 11904: 0xDEAC, - 29500 - 11904: 0xDEAA, - 29502 - 11904: 0xB7E2, - 29503 - 11904: 0xB7E1, - 29504 - 11904: 0xDEAE, - 29505 - 11904: 0x98BA, - 29506 - 11904: 0xDEAB, - 29507 - 11904: 0xE2CA, - 29508 - 11904: 0xBABB, - 29509 - 11904: 0xB7E0, - 29512 - 11904: 0x98BB, - 29513 - 11904: 0xDEB0, - 29514 - 11904: 0xDEAF, - 29516 - 11904: 0xE2CD, - 29517 - 11904: 0xE2CB, - 29518 - 11904: 0xBCFA, - 29519 - 11904: 0x9FBC, - 29520 - 11904: 0xBABC, - 29521 - 11904: 0xE2CC, - 29522 - 11904: 0xE676, - 29527 - 11904: 0xBCFB, - 29528 - 11904: 0xE675, - 29529 - 11904: 0xE67E, - 29530 - 11904: 0xE67D, - 29531 - 11904: 0xE67B, - 29533 - 11904: 0xE67A, - 29534 - 11904: 0xE677, - 29535 - 11904: 0xE678, - 29536 - 11904: 0xE679, - 29537 - 11904: 0xE67C, - 29538 - 11904: 0xE6A1, - 29541 - 11904: 0xEA5F, - 29542 - 11904: 0xEA5C, - 29543 - 11904: 0xEA5D, - 29544 - 11904: 0xBF57, - 29545 - 11904: 0xEA5B, - 29546 - 11904: 0xEA61, - 29547 - 11904: 0xEA60, - 29548 - 11904: 0xEA5E, - 29550 - 11904: 0xED64, - 29551 - 11904: 0xED65, - 29552 - 11904: 0xC0F1, - 29553 - 11904: 0xA04A, - 29554 - 11904: 0xC0F2, - 29555 - 11904: 0xED63, - 29556 - 11904: 0x9EC7, - 29557 - 11904: 0xC279, - 29558 - 11904: 0xEFFE, - 29559 - 11904: 0xC278, - 29560 - 11904: 0xC37E, - 29562 - 11904: 0xC3A1, - 29563 - 11904: 0xC46D, - 29564 - 11904: 0xF46E, - 29565 - 11904: 0xF46D, - 29566 - 11904: 0xF5DD, - 29567 - 11904: 0xF6EF, - 29568 - 11904: 0xC57A, - 29569 - 11904: 0xF7E8, - 29570 - 11904: 0xF7E7, - 29571 - 11904: 0xF7E9, - 29572 - 11904: 0xA5C8, - 29573 - 11904: 0xCFC6, - 29574 - 11904: 0xAF59, - 29575 - 11904: 0xB276, - 29576 - 11904: 0xD66A, - 29577 - 11904: 0xA5C9, - 29578 - 11904: 0xC9A7, - 29579 - 11904: 0xA4FD, - 29580 - 11904: 0x8CA9, - 29582 - 11904: 0xCA45, - 29583 - 11904: 0x98AE, - 29586 - 11904: 0xCB6C, - 29587 - 11904: 0xCB6A, - 29588 - 11904: 0xCB6B, - 29589 - 11904: 0xCB68, - 29590 - 11904: 0xA868, - 29591 - 11904: 0xCB69, - 29592 - 11904: 0x92D6, - 29596 - 11904: 0xFAE1, - 29597 - 11904: 0xCD6D, - 29598 - 11904: 0x91D4, - 29599 - 11904: 0xAAB3, - 29600 - 11904: 0xCD6B, - 29601 - 11904: 0xCD67, - 29602 - 11904: 0xCD6A, - 29604 - 11904: 0xCD66, - 29605 - 11904: 0xAAB5, - 29606 - 11904: 0xCD69, - 29607 - 11904: 0xFADE, - 29608 - 11904: 0xAAB2, - 29609 - 11904: 0xAAB1, - 29610 - 11904: 0xFE5B, - 29611 - 11904: 0xAAB4, - 29612 - 11904: 0xCD6C, - 29613 - 11904: 0xCD68, - 29618 - 11904: 0xACC2, - 29619 - 11904: 0xACC5, - 29620 - 11904: 0xCFCE, - 29621 - 11904: 0xCFCD, - 29622 - 11904: 0xCFCC, - 29623 - 11904: 0xACBF, - 29624 - 11904: 0xCFD5, - 29625 - 11904: 0xCFCB, - 29626 - 11904: 0x8C53, - 29627 - 11904: 0xACC1, - 29628 - 11904: 0xD2AF, - 29630 - 11904: 0xCFD2, - 29631 - 11904: 0xCFD0, - 29632 - 11904: 0xACC4, - 29634 - 11904: 0xCFC8, - 29635 - 11904: 0xCFD3, - 29636 - 11904: 0x87BF, - 29637 - 11904: 0xCFCA, - 29638 - 11904: 0xCFD4, - 29639 - 11904: 0xCFD1, - 29640 - 11904: 0xCFC9, - 29641 - 11904: 0xFE5E, - 29642 - 11904: 0xACC0, - 29643 - 11904: 0xCFD6, - 29644 - 11904: 0xCFC7, - 29645 - 11904: 0xACC3, - 29646 - 11904: 0xFBD7, - 29647 - 11904: 0xFE5A, - 29648 - 11904: 0x94C5, - 29650 - 11904: 0xD2B4, - 29651 - 11904: 0xD2AB, - 29652 - 11904: 0xD2B6, - 29653 - 11904: 0xFACA, - 29654 - 11904: 0xD2AE, - 29655 - 11904: 0xD2B9, - 29656 - 11904: 0xD2BA, - 29657 - 11904: 0xD2AC, - 29658 - 11904: 0xD2B8, - 29659 - 11904: 0xD2B5, - 29660 - 11904: 0xD2B3, - 29661 - 11904: 0xD2B7, - 29662 - 11904: 0xAF5F, - 29664 - 11904: 0xAF5D, - 29665 - 11904: 0x98C1, - 29666 - 11904: 0x975C, - 29667 - 11904: 0xD2B1, - 29668 - 11904: 0xFE74, - 29669 - 11904: 0xD2AD, - 29670 - 11904: 0x9773, - 29671 - 11904: 0xD2B0, - 29672 - 11904: 0xD2BB, - 29673 - 11904: 0xD2B2, - 29674 - 11904: 0xAF5E, - 29675 - 11904: 0xCFCF, - 29677 - 11904: 0xAF5A, - 29678 - 11904: 0xAF5C, - 29679 - 11904: 0xFA46, - 29683 - 11904: 0x9764, - 29684 - 11904: 0xD678, - 29685 - 11904: 0xD66D, - 29686 - 11904: 0xD66B, - 29687 - 11904: 0xFE68, - 29688 - 11904: 0xD66C, - 29689 - 11904: 0x964E, - 29690 - 11904: 0xD673, - 29691 - 11904: 0x9765, - 29692 - 11904: 0xD674, - 29693 - 11904: 0xD670, - 29694 - 11904: 0xB27B, - 29695 - 11904: 0xD675, - 29696 - 11904: 0xD672, - 29697 - 11904: 0xD66F, - 29698 - 11904: 0x8C5A, - 29699 - 11904: 0xB279, - 29700 - 11904: 0xD66E, - 29701 - 11904: 0xB277, - 29702 - 11904: 0xB27A, - 29703 - 11904: 0xD671, - 29704 - 11904: 0xD679, - 29705 - 11904: 0xAF5B, - 29706 - 11904: 0xB278, - 29707 - 11904: 0xD677, - 29708 - 11904: 0xD676, - 29709 - 11904: 0xB27C, - 29713 - 11904: 0x89A1, - 29714 - 11904: 0x95FA, - 29716 - 11904: 0x92D4, - 29717 - 11904: 0xFE69, - 29718 - 11904: 0xDA7E, - 29719 - 11904: 0xFB45, - 29721 - 11904: 0x98C8, - 29722 - 11904: 0xDAA1, - 29723 - 11904: 0xB560, - 29724 - 11904: 0x90EF, - 29725 - 11904: 0xDAA7, - 29726 - 11904: 0x98C9, - 29727 - 11904: 0x98CA, - 29728 - 11904: 0xDAA9, - 29729 - 11904: 0xDAA2, - 29730 - 11904: 0xB55A, - 29731 - 11904: 0xDAA6, - 29732 - 11904: 0xDAA5, - 29733 - 11904: 0xB55B, - 29734 - 11904: 0xB561, - 29736 - 11904: 0xB562, - 29737 - 11904: 0xDAA8, - 29738 - 11904: 0xB558, - 29739 - 11904: 0xDA7D, - 29740 - 11904: 0xDA7B, - 29741 - 11904: 0xDAA3, - 29742 - 11904: 0xDA7A, - 29743 - 11904: 0xB55F, - 29744 - 11904: 0xDA7C, - 29745 - 11904: 0xDAA4, - 29746 - 11904: 0xDAAA, - 29747 - 11904: 0xB559, - 29748 - 11904: 0xB55E, - 29749 - 11904: 0xB55C, - 29750 - 11904: 0xB55D, - 29751 - 11904: 0x946D, - 29752 - 11904: 0x94B7, - 29753 - 11904: 0xFE6C, - 29754 - 11904: 0xB557, - 29756 - 11904: 0x946B, - 29759 - 11904: 0xB7E9, - 29760 - 11904: 0xDEB7, - 29761 - 11904: 0xB7E8, - 29762 - 11904: 0xDEBB, - 29763 - 11904: 0x92FC, - 29764 - 11904: 0xDEB1, - 29765 - 11904: 0x95EB, - 29766 - 11904: 0xDEBC, - 29767 - 11904: 0xFE73, - 29768 - 11904: 0x976E, - 29769 - 11904: 0xFE5F, - 29770 - 11904: 0xDEB2, - 29771 - 11904: 0xDEB3, - 29772 - 11904: 0x87B8, - 29773 - 11904: 0xDEBD, - 29774 - 11904: 0xDEBA, - 29775 - 11904: 0xDEB8, - 29776 - 11904: 0xDEB9, - 29777 - 11904: 0xDEB5, - 29778 - 11904: 0xDEB4, - 29779 - 11904: 0xFDBD, - 29780 - 11904: 0xDEBE, - 29781 - 11904: 0xB7E5, - 29782 - 11904: 0x92D5, - 29783 - 11904: 0xDEB6, - 29785 - 11904: 0xB7EA, - 29786 - 11904: 0xB7E4, - 29787 - 11904: 0xB7EB, - 29788 - 11904: 0xFE6F, - 29789 - 11904: 0xFEB9, - 29790 - 11904: 0xB7E7, - 29791 - 11904: 0xB7E6, - 29792 - 11904: 0xFE71, - 29793 - 11904: 0x8778, - 29794 - 11904: 0xE2CE, - 29795 - 11904: 0xBABE, - 29796 - 11904: 0xBABD, - 29797 - 11904: 0xFBBB, - 29799 - 11904: 0xE2D3, - 29800 - 11904: 0xA0D5, - 29801 - 11904: 0xBCFC, - 29802 - 11904: 0xBABF, - 29803 - 11904: 0x95FB, - 29804 - 11904: 0xFE77, - 29805 - 11904: 0xBAC1, - 29806 - 11904: 0xE2D4, - 29807 - 11904: 0xB7E3, - 29808 - 11904: 0xBAC0, - 29809 - 11904: 0xE2D0, - 29810 - 11904: 0xE2D2, - 29811 - 11904: 0xE2CF, - 29812 - 11904: 0xFE79, - 29813 - 11904: 0xE2D1, - 29814 - 11904: 0xFE75, - 29817 - 11904: 0xE6AB, - 29818 - 11904: 0x945D, - 29820 - 11904: 0xE6AA, - 29821 - 11904: 0xE6A7, - 29822 - 11904: 0xBD40, - 29823 - 11904: 0xEA62, - 29824 - 11904: 0xBD41, - 29825 - 11904: 0xE6A6, - 29826 - 11904: 0xFE7C, - 29827 - 11904: 0xBCFE, - 29829 - 11904: 0xE6A8, - 29830 - 11904: 0xE6A5, - 29831 - 11904: 0xE6A2, - 29832 - 11904: 0xE6A9, - 29833 - 11904: 0xE6A3, - 29834 - 11904: 0xE6A4, - 29835 - 11904: 0xBCFD, - 29836 - 11904: 0x9344, - 29837 - 11904: 0x8EA6, - 29840 - 11904: 0xED69, - 29842 - 11904: 0xEA66, - 29844 - 11904: 0xEA65, - 29845 - 11904: 0xEA67, - 29847 - 11904: 0xED66, - 29848 - 11904: 0xBF5A, - 29849 - 11904: 0x92D3, - 29850 - 11904: 0xEA63, - 29851 - 11904: 0x94B8, - 29852 - 11904: 0xBF58, - 29853 - 11904: 0x8779, - 29854 - 11904: 0xBF5C, - 29855 - 11904: 0xBF5B, - 29856 - 11904: 0xEA64, - 29857 - 11904: 0xEA68, - 29859 - 11904: 0xBF59, - 29860 - 11904: 0xFC71, - 29861 - 11904: 0xED6D, - 29862 - 11904: 0xC0F5, - 29863 - 11904: 0xC27A, - 29864 - 11904: 0xC0F6, - 29865 - 11904: 0xC0F3, - 29866 - 11904: 0xED6A, - 29867 - 11904: 0xED68, - 29869 - 11904: 0xED6B, - 29871 - 11904: 0xED6E, - 29872 - 11904: 0xC0F4, - 29873 - 11904: 0xED6C, - 29874 - 11904: 0xED67, - 29876 - 11904: 0x975E, - 29877 - 11904: 0xF042, - 29878 - 11904: 0xF045, - 29879 - 11904: 0xF275, - 29880 - 11904: 0xF040, - 29881 - 11904: 0x8CAD, - 29882 - 11904: 0xF46F, - 29883 - 11904: 0xF046, - 29885 - 11904: 0xC3A2, - 29886 - 11904: 0xF044, - 29887 - 11904: 0xC27B, - 29888 - 11904: 0xF041, - 29889 - 11904: 0xF043, - 29890 - 11904: 0xF047, - 29891 - 11904: 0xF276, - 29893 - 11904: 0xF274, - 29894 - 11904: 0x87C1, - 29896 - 11904: 0xFEA7, - 29898 - 11904: 0xC3A3, - 29899 - 11904: 0xF273, - 29900 - 11904: 0x946A, - 29903 - 11904: 0xC46E, - 29904 - 11904: 0x93E3, - 29907 - 11904: 0x98CF, - 29908 - 11904: 0xC4ED, - 29909 - 11904: 0xF6F1, - 29910 - 11904: 0xC4EC, - 29911 - 11904: 0xF6F3, - 29912 - 11904: 0xF6F0, - 29913 - 11904: 0xF6F2, - 29914 - 11904: 0xC5D0, - 29915 - 11904: 0xF8B2, - 29916 - 11904: 0xA5CA, - 29917 - 11904: 0xCD6E, - 29918 - 11904: 0xD2BC, - 29919 - 11904: 0xD2BD, - 29920 - 11904: 0xB27D, - 29921 - 11904: 0xDEBF, - 29922 - 11904: 0xBF5D, - 29923 - 11904: 0xC3A4, - 29924 - 11904: 0xC57B, - 29925 - 11904: 0xF8B3, - 29926 - 11904: 0xA5CB, - 29927 - 11904: 0xA0D9, - 29928 - 11904: 0xCD6F, - 29929 - 11904: 0xFEAA, - 29932 - 11904: 0xCFD7, - 29934 - 11904: 0xCFD8, - 29936 - 11904: 0xA0BF, - 29937 - 11904: 0xA04D, - 29938 - 11904: 0xA0B8, - 29940 - 11904: 0xD2BE, - 29941 - 11904: 0xD2BF, - 29942 - 11904: 0xB27E, - 29943 - 11904: 0xB2A1, - 29944 - 11904: 0xA0CE, - 29947 - 11904: 0xDAAB, - 29949 - 11904: 0xDEC2, - 29950 - 11904: 0xDEC1, - 29951 - 11904: 0xDEC0, - 29952 - 11904: 0xE2D5, - 29954 - 11904: 0xE2D6, - 29955 - 11904: 0xE2D7, - 29956 - 11904: 0xBAC2, - 29957 - 11904: 0xA0B7, - 29959 - 11904: 0xE6AD, - 29960 - 11904: 0xE6AC, - 29963 - 11904: 0xEA69, - 29964 - 11904: 0xBF5E, - 29965 - 11904: 0xBF5F, - 29966 - 11904: 0xFEA9, - 29967 - 11904: 0xED72, - 29968 - 11904: 0xED6F, - 29969 - 11904: 0xED70, - 29970 - 11904: 0xED71, - 29971 - 11904: 0xF049, - 29972 - 11904: 0xF048, - 29973 - 11904: 0xC27C, - 29974 - 11904: 0xF277, - 29975 - 11904: 0xF5DE, - 29976 - 11904: 0xA5CC, - 29977 - 11904: 0x89C3, - 29978 - 11904: 0xACC6, - 29980 - 11904: 0xB2A2, - 29981 - 11904: 0xDEC3, - 29982 - 11904: 0xFEAB, - 29983 - 11904: 0xA5CD, - 29985 - 11904: 0xD2C0, - 29986 - 11904: 0xB2A3, - 29989 - 11904: 0xB563, - 29990 - 11904: 0xB564, - 29992 - 11904: 0xA5CE, - 29993 - 11904: 0xA5CF, - 29994 - 11904: 0xCA46, - 29995 - 11904: 0xA86A, - 29996 - 11904: 0xA869, - 29997 - 11904: 0xACC7, - 29998 - 11904: 0xCFD9, - 29999 - 11904: 0xDAAC, - 30000 - 11904: 0xA5D0, - 30001 - 11904: 0xA5D1, - 30002 - 11904: 0xA5D2, - 30003 - 11904: 0xA5D3, - 30004 - 11904: 0x9DF4, - 30005 - 11904: 0x896D, - 30007 - 11904: 0xA86B, - 30008 - 11904: 0xA86C, - 30009 - 11904: 0xCB6E, - 30010 - 11904: 0xCB6D, - 30011 - 11904: 0x9C7B, - 30013 - 11904: 0xAAB6, - 30014 - 11904: 0xCD72, - 30015 - 11904: 0xCD70, - 30016 - 11904: 0xCD71, - 30018 - 11904: 0x98D2, - 30022 - 11904: 0x9FA9, - 30023 - 11904: 0xCFDA, - 30024 - 11904: 0xCFDB, - 30026 - 11904: 0xFEB2, - 30027 - 11904: 0xACCB, - 30028 - 11904: 0xACC9, - 30029 - 11904: 0xFEB1, - 30030 - 11904: 0xACCA, - 30031 - 11904: 0xACC8, - 30033 - 11904: 0x97D9, - 30035 - 11904: 0xA0C4, - 30036 - 11904: 0xAF60, - 30037 - 11904: 0x9476, - 30041 - 11904: 0xAF64, - 30042 - 11904: 0xAF63, - 30043 - 11904: 0xD2C1, - 30044 - 11904: 0xAF62, - 30045 - 11904: 0xAF61, - 30047 - 11904: 0xD2C2, - 30048 - 11904: 0x9978, - 30050 - 11904: 0xB2A6, - 30051 - 11904: 0xD67B, - 30052 - 11904: 0xD67A, - 30053 - 11904: 0xB2A4, - 30054 - 11904: 0xB2A5, - 30055 - 11904: 0xFEB3, - 30058 - 11904: 0xB566, - 30059 - 11904: 0xB565, - 30060 - 11904: 0xDAAE, - 30061 - 11904: 0x98D3, - 30062 - 11904: 0xFEB4, - 30063 - 11904: 0xDAAD, - 30064 - 11904: 0xB2A7, - 30066 - 11904: 0x98D4, - 30070 - 11904: 0xB7ED, - 30071 - 11904: 0xDEC5, - 30072 - 11904: 0xB7EE, - 30073 - 11904: 0xDEC4, - 30074 - 11904: 0x9FB9, - 30077 - 11904: 0xE2D8, - 30078 - 11904: 0xE6AE, - 30079 - 11904: 0xBD42, - 30080 - 11904: 0xEA6A, - 30083 - 11904: 0x9471, - 30084 - 11904: 0xED73, - 30086 - 11904: 0xC3A6, - 30087 - 11904: 0xC3A5, - 30090 - 11904: 0xC57C, - 30091 - 11904: 0xA5D4, - 30092 - 11904: 0xCD73, - 30093 - 11904: 0x98D5, - 30094 - 11904: 0xFEB8, - 30095 - 11904: 0xB2A8, - 30096 - 11904: 0xE2D9, - 30097 - 11904: 0xBAC3, - 30098 - 11904: 0xC6D4, - 30100 - 11904: 0xCB6F, - 30101 - 11904: 0xCB70, - 30104 - 11904: 0xCD74, - 30105 - 11904: 0xAAB8, - 30106 - 11904: 0xAAB9, - 30109 - 11904: 0xAAB7, - 30110 - 11904: 0xFEBA, - 30114 - 11904: 0xACCF, - 30115 - 11904: 0xACD0, - 30116 - 11904: 0xACCD, - 30117 - 11904: 0xACCE, - 30119 - 11904: 0xCFDC, - 30122 - 11904: 0xCFDD, - 30123 - 11904: 0xACCC, - 30128 - 11904: 0xD2C3, - 30129 - 11904: 0x9E5C, - 30130 - 11904: 0xAF68, - 30131 - 11904: 0xAF69, - 30132 - 11904: 0xFEBB, - 30133 - 11904: 0xB2AB, - 30134 - 11904: 0xD2C9, - 30136 - 11904: 0xAF6E, - 30137 - 11904: 0xAF6C, - 30138 - 11904: 0xD2CA, - 30139 - 11904: 0xD2C5, - 30140 - 11904: 0xAF6B, - 30141 - 11904: 0xAF6A, - 30142 - 11904: 0xAF65, - 30143 - 11904: 0xD2C8, - 30144 - 11904: 0xD2C7, - 30145 - 11904: 0xD2C4, - 30146 - 11904: 0xAF6D, - 30147 - 11904: 0xA044, - 30148 - 11904: 0xD2C6, - 30149 - 11904: 0xAF66, - 30151 - 11904: 0xAF67, - 30152 - 11904: 0x98D7, - 30154 - 11904: 0xB2AC, - 30155 - 11904: 0xD6A1, - 30156 - 11904: 0xD6A2, - 30157 - 11904: 0xB2AD, - 30158 - 11904: 0xD67C, - 30159 - 11904: 0xD67E, - 30160 - 11904: 0xD6A4, - 30161 - 11904: 0xD6A3, - 30162 - 11904: 0xD67D, - 30164 - 11904: 0xB2A9, - 30165 - 11904: 0xB2AA, - 30167 - 11904: 0xDAB6, - 30168 - 11904: 0xB56B, - 30169 - 11904: 0xB56A, - 30170 - 11904: 0xDAB0, - 30171 - 11904: 0xB568, - 30172 - 11904: 0x98D8, - 30173 - 11904: 0xDAB3, - 30174 - 11904: 0xB56C, - 30175 - 11904: 0xDAB4, - 30176 - 11904: 0xB56D, - 30177 - 11904: 0xDAB1, - 30178 - 11904: 0xB567, - 30179 - 11904: 0xB569, - 30180 - 11904: 0xDAB5, - 30182 - 11904: 0xDAB2, - 30183 - 11904: 0xDAAF, - 30189 - 11904: 0xDED2, - 30191 - 11904: 0xDEC7, - 30192 - 11904: 0xB7F0, - 30193 - 11904: 0xB7F3, - 30194 - 11904: 0xB7F2, - 30195 - 11904: 0xB7F7, - 30196 - 11904: 0xB7F6, - 30197 - 11904: 0xDED3, - 30198 - 11904: 0xDED1, - 30199 - 11904: 0xDECA, - 30200 - 11904: 0xDECE, - 30201 - 11904: 0xDECD, - 30202 - 11904: 0xB7F4, - 30203 - 11904: 0xDED0, - 30204 - 11904: 0xDECC, - 30205 - 11904: 0xDED4, - 30206 - 11904: 0xDECB, - 30207 - 11904: 0xB7F5, - 30208 - 11904: 0xB7EF, - 30209 - 11904: 0xB7F1, - 30210 - 11904: 0xFEBC, - 30211 - 11904: 0xDEC9, - 30215 - 11904: 0x9FFE, - 30216 - 11904: 0xE2DB, - 30217 - 11904: 0xBAC7, - 30218 - 11904: 0xE2DF, - 30219 - 11904: 0xBAC6, - 30220 - 11904: 0xE2DC, - 30221 - 11904: 0xBAC5, - 30223 - 11904: 0xDEC8, - 30224 - 11904: 0xDECF, - 30225 - 11904: 0xE2DE, - 30227 - 11904: 0xBAC8, - 30228 - 11904: 0xE2E0, - 30229 - 11904: 0xE2DD, - 30230 - 11904: 0xE2DA, - 30233 - 11904: 0xE6B1, - 30234 - 11904: 0xE6B5, - 30235 - 11904: 0xE6B7, - 30236 - 11904: 0xE6B3, - 30237 - 11904: 0xE6B2, - 30238 - 11904: 0xE6B0, - 30239 - 11904: 0xBD45, - 30240 - 11904: 0xBD43, - 30241 - 11904: 0xBD48, - 30242 - 11904: 0xBD49, - 30243 - 11904: 0xE6B4, - 30244 - 11904: 0xBD46, - 30245 - 11904: 0xE6AF, - 30246 - 11904: 0xBD47, - 30247 - 11904: 0xBAC4, - 30248 - 11904: 0xE6B6, - 30249 - 11904: 0xBD44, - 30252 - 11904: 0xFEBD, - 30253 - 11904: 0xEA6C, - 30255 - 11904: 0xEA6B, - 30256 - 11904: 0xEA73, - 30257 - 11904: 0xEA6D, - 30258 - 11904: 0xEA72, - 30259 - 11904: 0xEA6F, - 30260 - 11904: 0xBF60, - 30261 - 11904: 0xEA71, - 30264 - 11904: 0xBF61, - 30266 - 11904: 0xBF62, - 30267 - 11904: 0x9DDD, - 30268 - 11904: 0xEA70, - 30269 - 11904: 0xEA6E, - 30272 - 11904: 0x9EE1, - 30274 - 11904: 0xC0F8, - 30275 - 11904: 0xED74, - 30278 - 11904: 0xC0F7, - 30279 - 11904: 0xED77, - 30280 - 11904: 0xED75, - 30281 - 11904: 0xED76, - 30284 - 11904: 0xC0F9, - 30285 - 11904: 0x98DA, - 30286 - 11904: 0x9DDF, - 30287 - 11904: 0xFEBF, - 30288 - 11904: 0xF04D, - 30289 - 11904: 0xFEBE, - 30290 - 11904: 0xC2A1, - 30291 - 11904: 0xF04E, - 30292 - 11904: 0x9EEB, - 30294 - 11904: 0xC27D, - 30295 - 11904: 0xF04F, - 30296 - 11904: 0xC27E, - 30297 - 11904: 0xF04C, - 30298 - 11904: 0xF050, - 30300 - 11904: 0xF04A, - 30303 - 11904: 0xC3A7, - 30304 - 11904: 0xF278, - 30305 - 11904: 0xC3A8, - 30306 - 11904: 0xC46F, - 30308 - 11904: 0xF04B, - 30309 - 11904: 0xC470, - 30310 - 11904: 0x9E59, - 30311 - 11904: 0xA05C, - 30313 - 11904: 0xC4EE, - 30314 - 11904: 0xF5DF, - 30316 - 11904: 0xC57E, - 30317 - 11904: 0xF6F4, - 30318 - 11904: 0xC57D, - 30319 - 11904: 0xFEC0, - 30320 - 11904: 0xF7EA, - 30321 - 11904: 0xC5F5, - 30322 - 11904: 0xC5F6, - 30323 - 11904: 0x9477, - 30324 - 11904: 0x98DC, - 30325 - 11904: 0xF9CC, - 30326 - 11904: 0xFEC1, - 30328 - 11904: 0xACD1, - 30329 - 11904: 0xCFDE, - 30330 - 11904: 0x98DE, - 30331 - 11904: 0xB56E, - 30332 - 11904: 0xB56F, - 30333 - 11904: 0xA5D5, - 30334 - 11904: 0xA6CA, - 30335 - 11904: 0xCA47, - 30337 - 11904: 0xCB71, - 30338 - 11904: 0xA86D, - 30340 - 11904: 0xAABA, - 30342 - 11904: 0xACD2, - 30343 - 11904: 0xACD3, - 30344 - 11904: 0xACD4, - 30345 - 11904: 0xD6A6, - 30346 - 11904: 0xD2CB, - 30347 - 11904: 0xAF6F, - 30350 - 11904: 0xB2AE, - 30351 - 11904: 0xD6A5, - 30352 - 11904: 0xFEC3, - 30354 - 11904: 0xDAB8, - 30355 - 11904: 0xB571, - 30357 - 11904: 0xDAB7, - 30358 - 11904: 0xB570, - 30361 - 11904: 0xDED5, - 30362 - 11904: 0xBD4A, - 30363 - 11904: 0xE6BB, - 30364 - 11904: 0xE6B8, - 30365 - 11904: 0xE6B9, - 30366 - 11904: 0xE6BA, - 30369 - 11904: 0xFEC8, - 30372 - 11904: 0xED78, - 30373 - 11904: 0xFEC9, - 30374 - 11904: 0xF051, - 30378 - 11904: 0xF471, - 30379 - 11904: 0xF470, - 30381 - 11904: 0xF6F5, - 30382 - 11904: 0xA5D6, - 30383 - 11904: 0xCD75, - 30384 - 11904: 0xAF70, - 30388 - 11904: 0xB572, - 30389 - 11904: 0xDED6, - 30391 - 11904: 0xFECA, - 30392 - 11904: 0xE2E1, - 30394 - 11904: 0xBD4B, - 30395 - 11904: 0xEA74, - 30397 - 11904: 0xF052, - 30398 - 11904: 0xF472, - 30399 - 11904: 0xA5D7, - 30402 - 11904: 0xAABB, - 30403 - 11904: 0xACD7, - 30404 - 11904: 0xCFDF, - 30405 - 11904: 0xACD8, - 30406 - 11904: 0xACD6, - 30408 - 11904: 0xACD5, - 30409 - 11904: 0xD2CC, - 30410 - 11904: 0xAF71, - 30412 - 11904: 0xFECB, - 30413 - 11904: 0xAF72, - 30414 - 11904: 0xAF73, - 30418 - 11904: 0xB2B0, - 30419 - 11904: 0xD6A7, - 30420 - 11904: 0xB2AF, - 30422 - 11904: 0x9FC2, - 30425 - 11904: 0x8C6B, - 30426 - 11904: 0xDAB9, - 30427 - 11904: 0xB2B1, - 30428 - 11904: 0xB573, - 30429 - 11904: 0xDED7, - 30430 - 11904: 0xB7F8, - 30431 - 11904: 0xB7F9, - 30433 - 11904: 0xBAC9, - 30435 - 11904: 0xBACA, - 30436 - 11904: 0xBD4C, - 30437 - 11904: 0xBF64, - 30438 - 11904: 0xEA75, - 30439 - 11904: 0xBF63, - 30441 - 11904: 0xED79, - 30442 - 11904: 0xC0FA, - 30444 - 11904: 0xF053, - 30445 - 11904: 0xF473, - 30446 - 11904: 0xA5D8, - 30447 - 11904: 0xA86E, - 30448 - 11904: 0xCD78, - 30449 - 11904: 0xCD77, - 30450 - 11904: 0xAABC, - 30451 - 11904: 0xCD76, - 30452 - 11904: 0xAABD, - 30453 - 11904: 0xCD79, - 30455 - 11904: 0xCFE5, - 30456 - 11904: 0xACDB, - 30457 - 11904: 0xACDA, - 30458 - 11904: 0xCFE7, - 30459 - 11904: 0xCFE6, - 30460 - 11904: 0xACDF, - 30462 - 11904: 0xACDE, - 30465 - 11904: 0xACD9, - 30467 - 11904: 0xCFE1, - 30468 - 11904: 0xCFE2, - 30469 - 11904: 0xCFE3, - 30471 - 11904: 0xACE0, - 30472 - 11904: 0xCFE0, - 30473 - 11904: 0xACDC, - 30474 - 11904: 0xCFE4, - 30475 - 11904: 0xACDD, - 30476 - 11904: 0x98C4, - 30478 - 11904: 0x94B0, - 30479 - 11904: 0x94B1, - 30480 - 11904: 0xD2CF, - 30481 - 11904: 0xD2D3, - 30482 - 11904: 0xD2D1, - 30483 - 11904: 0xD2D0, - 30485 - 11904: 0xD2D4, - 30489 - 11904: 0xD2D5, - 30490 - 11904: 0xD2D6, - 30491 - 11904: 0xD2CE, - 30493 - 11904: 0xD2CD, - 30494 - 11904: 0xFED1, - 30495 - 11904: 0xAF75, - 30496 - 11904: 0xAF76, - 30498 - 11904: 0xD2D7, - 30499 - 11904: 0xD2D2, - 30500 - 11904: 0xA0C1, - 30501 - 11904: 0xD6B0, - 30502 - 11904: 0xFED2, - 30503 - 11904: 0xD2D8, - 30504 - 11904: 0xAF77, - 30505 - 11904: 0xAF74, - 30507 - 11904: 0xA0CD, - 30509 - 11904: 0xD6AA, - 30511 - 11904: 0xD6A9, - 30513 - 11904: 0xD6AB, - 30514 - 11904: 0xD6AC, - 30515 - 11904: 0xD6AE, - 30516 - 11904: 0xD6AD, - 30517 - 11904: 0xD6B2, - 30518 - 11904: 0xB2B5, - 30519 - 11904: 0xB2B2, - 30520 - 11904: 0xB2B6, - 30521 - 11904: 0xD6A8, - 30522 - 11904: 0xB2B7, - 30523 - 11904: 0xD6B1, - 30524 - 11904: 0xB2B4, - 30525 - 11904: 0xD6AF, - 30526 - 11904: 0xB2B3, - 30528 - 11904: 0xFED3, - 30531 - 11904: 0x98E5, - 30532 - 11904: 0xDABC, - 30533 - 11904: 0xDABE, - 30534 - 11904: 0xDABA, - 30535 - 11904: 0xDABB, - 30538 - 11904: 0xDABF, - 30539 - 11904: 0xDAC1, - 30540 - 11904: 0xDAC2, - 30541 - 11904: 0xDABD, - 30542 - 11904: 0xDAC0, - 30543 - 11904: 0xB574, - 30546 - 11904: 0xDEDB, - 30548 - 11904: 0xDEE0, - 30549 - 11904: 0xDED8, - 30550 - 11904: 0xDEDC, - 30552 - 11904: 0xFED6, - 30553 - 11904: 0xDEE1, - 30554 - 11904: 0xDEDD, - 30555 - 11904: 0xB7FA, - 30556 - 11904: 0xB843, - 30558 - 11904: 0xB7FD, - 30559 - 11904: 0xDED9, - 30560 - 11904: 0xDEDA, - 30561 - 11904: 0xBACE, - 30562 - 11904: 0xB846, - 30563 - 11904: 0xB7FE, - 30565 - 11904: 0xB844, - 30566 - 11904: 0xB7FC, - 30567 - 11904: 0xDEDF, - 30568 - 11904: 0xB845, - 30569 - 11904: 0xDEDE, - 30570 - 11904: 0xB841, - 30571 - 11904: 0xB7FB, - 30572 - 11904: 0xB842, - 30573 - 11904: 0xDEE2, - 30574 - 11904: 0xE2E6, - 30575 - 11904: 0xE2E8, - 30578 - 11904: 0x91E4, - 30583 - 11904: 0x8FC7, - 30584 - 11904: 0x94AE, - 30585 - 11904: 0xB840, - 30586 - 11904: 0x8A4F, - 30587 - 11904: 0x94B2, - 30588 - 11904: 0xE2E3, - 30589 - 11904: 0xBACC, - 30590 - 11904: 0xE2E9, - 30591 - 11904: 0xBACD, - 30592 - 11904: 0xE2E7, - 30593 - 11904: 0xE2E2, - 30594 - 11904: 0xE2E5, - 30595 - 11904: 0xE2EA, - 30596 - 11904: 0xBACB, - 30597 - 11904: 0xE2E4, - 30599 - 11904: 0xBD4E, - 30600 - 11904: 0xE6BF, - 30601 - 11904: 0xE6BE, - 30603 - 11904: 0xBD51, - 30604 - 11904: 0xBD4F, - 30605 - 11904: 0xE6BC, - 30606 - 11904: 0xBD4D, - 30607 - 11904: 0xE6BD, - 30609 - 11904: 0xBD50, - 30611 - 11904: 0x8FD4, - 30613 - 11904: 0xEA7D, - 30615 - 11904: 0xEAA1, - 30616 - 11904: 0x98EA, - 30617 - 11904: 0xEA7E, - 30618 - 11904: 0xEA76, - 30619 - 11904: 0xEA7A, - 30620 - 11904: 0xEA79, - 30621 - 11904: 0xEA77, - 30622 - 11904: 0xBF66, - 30623 - 11904: 0xBF67, - 30624 - 11904: 0xBF65, - 30625 - 11904: 0xEA78, - 30626 - 11904: 0xEA7B, - 30627 - 11904: 0xEA7C, - 30629 - 11904: 0xBF68, - 30631 - 11904: 0xC140, - 30632 - 11904: 0xEDA3, - 30634 - 11904: 0xC0FC, - 30635 - 11904: 0xED7B, - 30636 - 11904: 0xC0FE, - 30637 - 11904: 0xC141, - 30639 - 11904: 0xFED8, - 30640 - 11904: 0xC0FD, - 30641 - 11904: 0xEDA2, - 30642 - 11904: 0xED7C, - 30643 - 11904: 0xC0FB, - 30644 - 11904: 0xEDA1, - 30645 - 11904: 0xED7A, - 30646 - 11904: 0xED7E, - 30647 - 11904: 0xED7D, - 30649 - 11904: 0x9DE0, - 30650 - 11904: 0xF055, - 30651 - 11904: 0xC2A4, - 30652 - 11904: 0xC2A5, - 30653 - 11904: 0xC2A2, - 30654 - 11904: 0x98EE, - 30655 - 11904: 0xC2A3, - 30658 - 11904: 0xF054, - 30659 - 11904: 0x95C4, - 30660 - 11904: 0xF27B, - 30661 - 11904: 0xFCE8, - 30663 - 11904: 0xC3A9, - 30665 - 11904: 0xF279, - 30666 - 11904: 0xF27A, - 30667 - 11904: 0x98EF, - 30668 - 11904: 0xF474, - 30669 - 11904: 0xF477, - 30670 - 11904: 0xF475, - 30671 - 11904: 0xF476, - 30672 - 11904: 0xF5E0, - 30675 - 11904: 0xC4EF, - 30676 - 11904: 0xF7EB, - 30677 - 11904: 0xF8B4, - 30679 - 11904: 0xC5F7, - 30680 - 11904: 0xF8F8, - 30681 - 11904: 0xF8F9, - 30682 - 11904: 0xC666, - 30683 - 11904: 0xA5D9, - 30684 - 11904: 0xACE1, - 30685 - 11904: 0x8C6E, - 30686 - 11904: 0xDAC3, - 30688 - 11904: 0xDEE3, - 30690 - 11904: 0xA5DA, - 30691 - 11904: 0xA86F, - 30693 - 11904: 0xAABE, - 30694 - 11904: 0xFAD8, - 30695 - 11904: 0xCFE8, - 30696 - 11904: 0xCFE9, - 30697 - 11904: 0xAF78, - 30700 - 11904: 0xDAC4, - 30701 - 11904: 0xB575, - 30702 - 11904: 0xB847, - 30703 - 11904: 0xC142, - 30704 - 11904: 0xEDA4, - 30705 - 11904: 0xF27C, - 30706 - 11904: 0xF478, - 30707 - 11904: 0xA5DB, - 30708 - 11904: 0xFEDC, - 30711 - 11904: 0xCDA1, - 30712 - 11904: 0xCD7A, - 30713 - 11904: 0xCD7C, - 30714 - 11904: 0xCD7E, - 30715 - 11904: 0xCD7D, - 30716 - 11904: 0xCD7B, - 30717 - 11904: 0xAABF, - 30718 - 11904: 0xA0AE, - 30722 - 11904: 0xACE2, - 30723 - 11904: 0xCFF2, - 30725 - 11904: 0xCFED, - 30726 - 11904: 0xCFEA, - 30728 - 11904: 0x9D4C, - 30729 - 11904: 0xFEDD, - 30732 - 11904: 0xACE4, - 30733 - 11904: 0xACE5, - 30734 - 11904: 0xCFF0, - 30735 - 11904: 0xCFEF, - 30736 - 11904: 0xCFEE, - 30737 - 11904: 0xCFEB, - 30738 - 11904: 0xCFEC, - 30739 - 11904: 0xCFF3, - 30740 - 11904: 0xACE3, - 30744 - 11904: 0x98F1, - 30748 - 11904: 0x98F3, - 30749 - 11904: 0xAF7C, - 30750 - 11904: 0x94C1, - 30751 - 11904: 0xAFA4, - 30752 - 11904: 0xAFA3, - 30753 - 11904: 0xD2E1, - 30754 - 11904: 0xD2DB, - 30755 - 11904: 0xD2D9, - 30757 - 11904: 0xAFA1, - 30758 - 11904: 0xD6B9, - 30759 - 11904: 0xAF7A, - 30760 - 11904: 0xD2DE, - 30761 - 11904: 0xD2E2, - 30762 - 11904: 0xD2E4, - 30763 - 11904: 0xD2E0, - 30764 - 11904: 0xD2DA, - 30765 - 11904: 0xAFA2, - 30766 - 11904: 0xD2DF, - 30767 - 11904: 0xD2DD, - 30768 - 11904: 0xAF79, - 30769 - 11904: 0xD2E5, - 30770 - 11904: 0xAFA5, - 30771 - 11904: 0xD2E3, - 30772 - 11904: 0xAF7D, - 30773 - 11904: 0xD2DC, - 30775 - 11904: 0xAF7E, - 30776 - 11904: 0xAF7B, - 30777 - 11904: 0x98F5, - 30780 - 11904: 0xFA4F, - 30781 - 11904: 0x96E2, - 30786 - 11904: 0x9450, - 30787 - 11904: 0xB2B9, - 30788 - 11904: 0x96A2, - 30789 - 11904: 0xD6BA, - 30791 - 11904: 0x98F6, - 30792 - 11904: 0xD6B3, - 30793 - 11904: 0xD6B5, - 30794 - 11904: 0xD6B7, - 30795 - 11904: 0x96E5, - 30796 - 11904: 0xD6B8, - 30797 - 11904: 0xD6B6, - 30798 - 11904: 0xB2BA, - 30800 - 11904: 0xD6BB, - 30801 - 11904: 0x98F7, - 30802 - 11904: 0xD6B4, - 30803 - 11904: 0xA046, - 30804 - 11904: 0x96E3, - 30812 - 11904: 0xDAC8, - 30813 - 11904: 0xB576, - 30814 - 11904: 0xDAD0, - 30816 - 11904: 0xDAC5, - 30818 - 11904: 0xDAD1, - 30820 - 11904: 0xDAC6, - 30821 - 11904: 0xDAC7, - 30822 - 11904: 0x98F8, - 30824 - 11904: 0xDACF, - 30825 - 11904: 0xDACE, - 30826 - 11904: 0xDACB, - 30827 - 11904: 0xB2B8, - 30828 - 11904: 0xB577, - 30829 - 11904: 0xDAC9, - 30830 - 11904: 0xDACC, - 30831 - 11904: 0xB578, - 30832 - 11904: 0xDACD, - 30833 - 11904: 0xDACA, - 30841 - 11904: 0xDEEE, - 30842 - 11904: 0x9EE4, - 30843 - 11904: 0xDEF2, - 30844 - 11904: 0xB84E, - 30846 - 11904: 0xE2F0, - 30847 - 11904: 0xB851, - 30848 - 11904: 0xDEF0, - 30849 - 11904: 0xF9D6, - 30851 - 11904: 0xDEED, - 30852 - 11904: 0xDEE8, - 30853 - 11904: 0xDEEA, - 30854 - 11904: 0xDEEB, - 30855 - 11904: 0xDEE4, - 30856 - 11904: 0x94C3, - 30857 - 11904: 0xB84D, - 30860 - 11904: 0xB84C, - 30861 - 11904: 0x94C2, - 30862 - 11904: 0xB848, - 30863 - 11904: 0xDEE7, - 30865 - 11904: 0xB84F, - 30867 - 11904: 0xB850, - 30868 - 11904: 0xDEE6, - 30869 - 11904: 0xDEE9, - 30870 - 11904: 0xDEF1, - 30871 - 11904: 0xB84A, - 30872 - 11904: 0xB84B, - 30873 - 11904: 0xDEEF, - 30874 - 11904: 0xDEE5, - 30878 - 11904: 0xE2F2, - 30879 - 11904: 0xBAD0, - 30880 - 11904: 0xE2F4, - 30881 - 11904: 0xDEEC, - 30882 - 11904: 0xE2F6, - 30883 - 11904: 0xBAD4, - 30884 - 11904: 0xE2F7, - 30885 - 11904: 0xE2F3, - 30887 - 11904: 0xBAD1, - 30888 - 11904: 0xE2EF, - 30889 - 11904: 0xBAD3, - 30890 - 11904: 0xE2EC, - 30891 - 11904: 0xE2F1, - 30892 - 11904: 0xE2F5, - 30893 - 11904: 0xE2EE, - 30895 - 11904: 0xFEE1, - 30896 - 11904: 0xB849, - 30897 - 11904: 0xFEE9, - 30898 - 11904: 0xE2EB, - 30899 - 11904: 0xBAD2, - 30900 - 11904: 0xE2ED, - 30902 - 11904: 0x96E4, - 30904 - 11904: 0x89AC, - 30905 - 11904: 0x96DB, - 30906 - 11904: 0xBD54, - 30907 - 11904: 0xE6C1, - 30908 - 11904: 0xBD58, - 30910 - 11904: 0xBD56, - 30913 - 11904: 0xBACF, - 30915 - 11904: 0xE6C8, - 30916 - 11904: 0xE6C9, - 30917 - 11904: 0xBD53, - 30919 - 11904: 0xFEE2, - 30920 - 11904: 0xE6C7, - 30921 - 11904: 0xE6CA, - 30922 - 11904: 0xBD55, - 30923 - 11904: 0xBD52, - 30924 - 11904: 0xE6C3, - 30925 - 11904: 0xE6C0, - 30926 - 11904: 0xE6C5, - 30927 - 11904: 0xE6C2, - 30928 - 11904: 0xBD59, - 30929 - 11904: 0xE6C4, - 30930 - 11904: 0x94C4, - 30931 - 11904: 0xFEE3, - 30932 - 11904: 0xE6C6, - 30933 - 11904: 0xBD57, - 30935 - 11904: 0xFEE7, - 30936 - 11904: 0x9FFB, - 30938 - 11904: 0xBF6A, - 30939 - 11904: 0xEAA8, - 30941 - 11904: 0xEAA2, - 30942 - 11904: 0xEAA6, - 30943 - 11904: 0xEAAC, - 30944 - 11904: 0xEAAD, - 30945 - 11904: 0xEAA9, - 30946 - 11904: 0xEAAA, - 30947 - 11904: 0xEAA7, - 30948 - 11904: 0x8C59, - 30949 - 11904: 0xEAA4, - 30951 - 11904: 0xBF6C, - 30952 - 11904: 0xBF69, - 30953 - 11904: 0xEAA3, - 30954 - 11904: 0xEAA5, - 30956 - 11904: 0xBF6B, - 30957 - 11904: 0xEAAB, - 30958 - 11904: 0x93C9, - 30959 - 11904: 0xC146, - 30960 - 11904: 0x94E8, - 30961 - 11904: 0xFB56, - 30962 - 11904: 0xEDAA, - 30963 - 11904: 0xEDA5, - 30964 - 11904: 0xC145, - 30965 - 11904: 0x90C5, - 30967 - 11904: 0xC143, - 30969 - 11904: 0xEDAC, - 30970 - 11904: 0xC144, - 30971 - 11904: 0xEDA8, - 30972 - 11904: 0xEDA9, - 30973 - 11904: 0xEDA6, - 30974 - 11904: 0xEDAD, - 30975 - 11904: 0xF056, - 30977 - 11904: 0xC147, - 30978 - 11904: 0xEDA7, - 30980 - 11904: 0xEDAE, - 30981 - 11904: 0xEDAB, - 30982 - 11904: 0xA0A8, - 30985 - 11904: 0xF05A, - 30988 - 11904: 0xF057, - 30990 - 11904: 0xC2A6, - 30992 - 11904: 0xF05B, - 30993 - 11904: 0xF05D, - 30994 - 11904: 0xF05C, - 30995 - 11904: 0xF058, - 30996 - 11904: 0xF059, - 30999 - 11904: 0xF2A3, - 31001 - 11904: 0xC3AA, - 31003 - 11904: 0xF27E, - 31004 - 11904: 0xF2A2, - 31005 - 11904: 0xF27D, - 31006 - 11904: 0xF2A4, - 31009 - 11904: 0xF2A1, - 31011 - 11904: 0xF47A, - 31012 - 11904: 0xF47D, - 31013 - 11904: 0xF479, - 31014 - 11904: 0xC471, - 31015 - 11904: 0xF47B, - 31016 - 11904: 0xF47C, - 31017 - 11904: 0xF47E, - 31018 - 11904: 0xC472, - 31019 - 11904: 0xC474, - 31020 - 11904: 0xC473, - 31021 - 11904: 0xF5E1, - 31022 - 11904: 0xFEE5, - 31023 - 11904: 0xF5E3, - 31025 - 11904: 0xF5E2, - 31026 - 11904: 0x98FD, - 31027 - 11904: 0x98FB, - 31028 - 11904: 0xFEE8, - 31029 - 11904: 0xF6F6, - 31030 - 11904: 0x8EBF, - 31032 - 11904: 0xF8B5, - 31033 - 11904: 0xF8FA, - 31034 - 11904: 0xA5DC, - 31035 - 11904: 0x8BD8, - 31036 - 11904: 0xFEF7, - 31037 - 11904: 0xCB72, - 31038 - 11904: 0xAAC0, - 31039 - 11904: 0xCDA3, - 31040 - 11904: 0xAAC1, - 31041 - 11904: 0xAAC2, - 31042 - 11904: 0xCDA2, - 31044 - 11904: 0xCFF8, - 31045 - 11904: 0xCFF7, - 31046 - 11904: 0xACE6, - 31047 - 11904: 0xACE9, - 31048 - 11904: 0xACE8, - 31049 - 11904: 0xACE7, - 31050 - 11904: 0xCFF4, - 31051 - 11904: 0xCFF6, - 31052 - 11904: 0xCFF5, - 31055 - 11904: 0xD2E8, - 31056 - 11904: 0xAFA7, - 31057 - 11904: 0xD2EC, - 31058 - 11904: 0xD2EB, - 31059 - 11904: 0xD2EA, - 31060 - 11904: 0xD2E6, - 31061 - 11904: 0xAFA6, - 31062 - 11904: 0xAFAA, - 31063 - 11904: 0xAFAD, - 31064 - 11904: 0x8F68, - 31065 - 11904: 0x94C6, - 31066 - 11904: 0xAFAE, - 31067 - 11904: 0xD2E7, - 31068 - 11904: 0xD2E9, - 31069 - 11904: 0xAFAC, - 31070 - 11904: 0xAFAB, - 31071 - 11904: 0xAFA9, - 31072 - 11904: 0xAFA8, - 31073 - 11904: 0xD6C2, - 31074 - 11904: 0x9DEA, - 31075 - 11904: 0xD6C0, - 31076 - 11904: 0xD6BC, - 31077 - 11904: 0xB2BB, - 31079 - 11904: 0xD6BD, - 31080 - 11904: 0xB2BC, - 31081 - 11904: 0xD6BE, - 31082 - 11904: 0xD6BF, - 31083 - 11904: 0xD6C1, - 31085 - 11904: 0xB2BD, - 31088 - 11904: 0xDAD5, - 31089 - 11904: 0xFC69, - 31090 - 11904: 0xDAD4, - 31091 - 11904: 0xDAD3, - 31092 - 11904: 0xDAD2, - 31097 - 11904: 0xDEF6, - 31098 - 11904: 0xB852, - 31100 - 11904: 0xDEF3, - 31101 - 11904: 0xDEF5, - 31102 - 11904: 0x9CDA, - 31103 - 11904: 0xB853, - 31104 - 11904: 0xFEF3, - 31105 - 11904: 0xB854, - 31106 - 11904: 0xDEF4, - 31107 - 11904: 0x9C72, - 31110 - 11904: 0xFEF0, - 31111 - 11904: 0x89C9, - 31112 - 11904: 0xE341, - 31114 - 11904: 0xE2F9, - 31115 - 11904: 0xE2FA, - 31117 - 11904: 0xBAD7, - 31118 - 11904: 0xBAD5, - 31119 - 11904: 0xBAD6, - 31120 - 11904: 0xE343, - 31121 - 11904: 0x9941, - 31122 - 11904: 0xE342, - 31123 - 11904: 0xE2FE, - 31124 - 11904: 0xE2FD, - 31125 - 11904: 0xE2FC, - 31126 - 11904: 0xE2FB, - 31127 - 11904: 0xE340, - 31128 - 11904: 0xE2F8, - 31129 - 11904: 0x9942, - 31130 - 11904: 0xE6CB, - 31131 - 11904: 0xE6D0, - 31132 - 11904: 0xE6CE, - 31133 - 11904: 0xFEF5, - 31135 - 11904: 0x91D7, - 31136 - 11904: 0xE6CD, - 31137 - 11904: 0xE6CC, - 31138 - 11904: 0xE6CF, - 31140 - 11904: 0xEAAE, - 31141 - 11904: 0x94CC, - 31142 - 11904: 0xBF6D, - 31143 - 11904: 0xC148, - 31144 - 11904: 0xEDB0, - 31145 - 11904: 0xFEF8, - 31146 - 11904: 0xC149, - 31147 - 11904: 0xEDAF, - 31148 - 11904: 0xF05F, - 31149 - 11904: 0xF05E, - 31150 - 11904: 0xC2A7, - 31152 - 11904: 0xF2A5, - 31153 - 11904: 0xC3AB, - 31154 - 11904: 0xF4A1, - 31155 - 11904: 0xC5A1, - 31156 - 11904: 0xF6F7, - 31158 - 11904: 0xF8B7, - 31159 - 11904: 0xF8B6, - 31160 - 11904: 0xC9A8, - 31161 - 11904: 0xACEA, - 31162 - 11904: 0xACEB, - 31163 - 11904: 0xD6C3, - 31165 - 11904: 0xB856, - 31166 - 11904: 0xA5DD, - 31167 - 11904: 0xA872, - 31168 - 11904: 0xA871, - 31169 - 11904: 0xA870, - 31172 - 11904: 0x97A8, - 31173 - 11904: 0xCDA4, - 31174 - 11904: 0xFEFC, - 31176 - 11904: 0xAAC4, - 31177 - 11904: 0xAAC3, - 31178 - 11904: 0x8CDE, - 31179 - 11904: 0xACEE, - 31180 - 11904: 0xFDBF, - 31181 - 11904: 0xCFFA, - 31182 - 11904: 0xCFFD, - 31183 - 11904: 0xCFFB, - 31184 - 11904: 0x87B3, - 31185 - 11904: 0xACEC, - 31186 - 11904: 0xACED, - 31188 - 11904: 0xFEFE, - 31189 - 11904: 0xCFF9, - 31190 - 11904: 0xCFFC, - 31192 - 11904: 0xAFB5, - 31196 - 11904: 0xD2F3, - 31197 - 11904: 0xD2F5, - 31198 - 11904: 0xD2F4, - 31199 - 11904: 0xAFB2, - 31200 - 11904: 0xD2EF, - 31202 - 11904: 0x96D1, - 31203 - 11904: 0xAFB0, - 31204 - 11904: 0xAFAF, - 31206 - 11904: 0xAFB3, - 31207 - 11904: 0xAFB1, - 31209 - 11904: 0xAFB4, - 31210 - 11904: 0xD2F2, - 31211 - 11904: 0xD2ED, - 31212 - 11904: 0xD2EE, - 31213 - 11904: 0xD2F1, - 31214 - 11904: 0xD2F0, - 31217 - 11904: 0x94D5, - 31220 - 11904: 0x94D0, - 31222 - 11904: 0xD6C6, - 31223 - 11904: 0xD6C7, - 31224 - 11904: 0xD6C5, - 31226 - 11904: 0xD6C4, - 31227 - 11904: 0xB2BE, - 31232 - 11904: 0xB57D, - 31234 - 11904: 0xDAD6, - 31235 - 11904: 0xDAD8, - 31236 - 11904: 0xDADA, - 31237 - 11904: 0xB57C, - 31238 - 11904: 0x9944, - 31240 - 11904: 0xB57A, - 31242 - 11904: 0xDAD7, - 31243 - 11904: 0xB57B, - 31244 - 11904: 0xDAD9, - 31245 - 11904: 0xB579, - 31248 - 11904: 0xDF41, - 31249 - 11904: 0xDEF7, - 31250 - 11904: 0xDEFA, - 31251 - 11904: 0xDEFE, - 31252 - 11904: 0xB85A, - 31253 - 11904: 0xDEFC, - 31255 - 11904: 0xDEFB, - 31256 - 11904: 0xDEF8, - 31257 - 11904: 0xDEF9, - 31258 - 11904: 0xB858, - 31259 - 11904: 0xDF40, - 31260 - 11904: 0xB857, - 31262 - 11904: 0xB85C, - 31263 - 11904: 0xB85B, - 31264 - 11904: 0xB859, - 31266 - 11904: 0xDEFD, - 31270 - 11904: 0xE349, - 31272 - 11904: 0xE348, - 31274 - 11904: 0x8C63, - 31275 - 11904: 0xE344, - 31276 - 11904: 0x87BB, - 31277 - 11904: 0xA0B3, - 31278 - 11904: 0xBAD8, - 31279 - 11904: 0xE347, - 31280 - 11904: 0xE346, - 31281 - 11904: 0xBAD9, - 31282 - 11904: 0x87B4, - 31287 - 11904: 0xBD5E, - 31289 - 11904: 0xE6D2, - 31290 - 11904: 0x94CF, - 31291 - 11904: 0xBD5F, - 31292 - 11904: 0xBD5B, - 31293 - 11904: 0xBD5D, - 31294 - 11904: 0x9FFA, - 31295 - 11904: 0xBD5A, - 31296 - 11904: 0xBD5C, - 31299 - 11904: 0x91E5, - 31300 - 11904: 0xEAAF, - 31301 - 11904: 0x9C6A, - 31302 - 11904: 0xBF70, - 31303 - 11904: 0xEAB1, - 31304 - 11904: 0xEAB0, - 31305 - 11904: 0x8E49, - 31306 - 11904: 0xE345, - 31307 - 11904: 0xBF72, - 31308 - 11904: 0xBF71, - 31309 - 11904: 0xBF6E, - 31310 - 11904: 0xBF6F, - 31316 - 11904: 0xEDB5, - 31318 - 11904: 0xEDB3, - 31319 - 11904: 0xC14A, - 31320 - 11904: 0xEDB4, - 31322 - 11904: 0xEDB6, - 31323 - 11904: 0xEDB2, - 31324 - 11904: 0xEDB1, - 31327 - 11904: 0xF060, - 31328 - 11904: 0xC2AA, - 31329 - 11904: 0xC2A8, - 31330 - 11904: 0xC2A9, - 31333 - 11904: 0x8E4C, - 31335 - 11904: 0xF2A6, - 31336 - 11904: 0xF2A7, - 31337 - 11904: 0xC3AD, - 31339 - 11904: 0xC3AC, - 31340 - 11904: 0xF4A3, - 31341 - 11904: 0xF4A4, - 31342 - 11904: 0xF4A2, - 31344 - 11904: 0xF6F8, - 31345 - 11904: 0xF6F9, - 31346 - 11904: 0x87C9, - 31348 - 11904: 0xA5DE, - 31349 - 11904: 0xCA48, - 31350 - 11904: 0xA873, - 31352 - 11904: 0xCDA5, - 31353 - 11904: 0xAAC6, - 31354 - 11904: 0xAAC5, - 31355 - 11904: 0xCDA6, - 31357 - 11904: 0x8E4D, - 31358 - 11904: 0xD040, - 31359 - 11904: 0xACEF, - 31360 - 11904: 0xCFFE, - 31361 - 11904: 0xACF0, - 31363 - 11904: 0x9A73, - 31364 - 11904: 0xAFB6, - 31365 - 11904: 0xD2F8, - 31366 - 11904: 0xD2F6, - 31367 - 11904: 0xD2FC, - 31368 - 11904: 0xAFB7, - 31369 - 11904: 0xD2F7, - 31370 - 11904: 0xD2FB, - 31371 - 11904: 0xD2F9, - 31372 - 11904: 0xD2FA, - 31375 - 11904: 0xD6C8, - 31376 - 11904: 0xD6CA, - 31377 - 11904: 0x9947, - 31378 - 11904: 0xB2BF, - 31379 - 11904: 0x8CB1, - 31380 - 11904: 0xD6C9, - 31381 - 11904: 0xB2C0, - 31382 - 11904: 0xB5A2, - 31383 - 11904: 0xB5A1, - 31384 - 11904: 0xB57E, - 31385 - 11904: 0xDADB, - 31390 - 11904: 0xDF44, - 31391 - 11904: 0xB85D, - 31392 - 11904: 0xB85E, - 31394 - 11904: 0xDF43, - 31395 - 11904: 0xDF42, - 31400 - 11904: 0xE34A, - 31401 - 11904: 0xBADB, - 31402 - 11904: 0xBADA, - 31403 - 11904: 0xE34B, - 31404 - 11904: 0xE34C, - 31406 - 11904: 0xBD61, - 31407 - 11904: 0xBD60, - 31408 - 11904: 0x8E50, - 31409 - 11904: 0xEAB5, - 31410 - 11904: 0xE6D3, - 31411 - 11904: 0xE6D5, - 31412 - 11904: 0xE6D4, - 31413 - 11904: 0xEAB4, - 31414 - 11904: 0xEAB2, - 31415 - 11904: 0xEAB6, - 31416 - 11904: 0xEAB3, - 31418 - 11904: 0xBF73, - 31419 - 11904: 0x8E4F, - 31420 - 11904: 0x9949, - 31422 - 11904: 0xEDB7, - 31423 - 11904: 0xC14B, - 31424 - 11904: 0xEDB8, - 31425 - 11904: 0xEDB9, - 31426 - 11904: 0x8E51, - 31427 - 11904: 0x8E52, - 31428 - 11904: 0xC2AB, - 31429 - 11904: 0xC2AC, - 31431 - 11904: 0xC475, - 31432 - 11904: 0x9AB2, - 31433 - 11904: 0x89A5, - 31434 - 11904: 0xC5D1, - 31435 - 11904: 0xA5DF, - 31439 - 11904: 0x994C, - 31441 - 11904: 0xD041, - 31443 - 11904: 0x9FF8, - 31448 - 11904: 0xD2FD, - 31449 - 11904: 0xAFB8, - 31450 - 11904: 0x8E56, - 31451 - 11904: 0x994D, - 31452 - 11904: 0x91CA, - 31453 - 11904: 0x8E57, - 31455 - 11904: 0xB3BA, - 31456 - 11904: 0xB3B9, - 31458 - 11904: 0x94E1, - 31459 - 11904: 0xB5A4, - 31460 - 11904: 0xDADD, - 31461 - 11904: 0xB5A3, - 31462 - 11904: 0xDADC, - 31463 - 11904: 0x9047, - 31465 - 11904: 0x8FD8, - 31466 - 11904: 0x8E58, - 31467 - 11904: 0xDF45, - 31469 - 11904: 0xBADC, - 31470 - 11904: 0xE34D, - 31471 - 11904: 0xBADD, - 31478 - 11904: 0xC476, - 31479 - 11904: 0xF4A5, - 31481 - 11904: 0xA6CB, - 31482 - 11904: 0xAAC7, - 31483 - 11904: 0xCDA7, - 31484 - 11904: 0x87A3, - 31485 - 11904: 0xACF2, - 31486 - 11904: 0x94EB, - 31487 - 11904: 0xACF1, - 31488 - 11904: 0xD042, - 31489 - 11904: 0xD043, - 31492 - 11904: 0xD340, - 31493 - 11904: 0xD342, - 31494 - 11904: 0xAFB9, - 31496 - 11904: 0xD344, - 31497 - 11904: 0xD347, - 31498 - 11904: 0xD345, - 31499 - 11904: 0x8E5C, - 31500 - 11904: 0x9553, - 31502 - 11904: 0xD346, - 31503 - 11904: 0xD343, - 31504 - 11904: 0xD2FE, - 31505 - 11904: 0xAFBA, - 31506 - 11904: 0xD348, - 31507 - 11904: 0xD341, - 31508 - 11904: 0x9FE5, - 31512 - 11904: 0xD6D3, - 31513 - 11904: 0xB2C6, - 31514 - 11904: 0xD6DC, - 31515 - 11904: 0xB2C3, - 31517 - 11904: 0xD6D5, - 31518 - 11904: 0xB2C7, - 31519 - 11904: 0x9F56, - 31520 - 11904: 0xB2C1, - 31522 - 11904: 0xD6D0, - 31523 - 11904: 0xD6DD, - 31524 - 11904: 0xD6D1, - 31525 - 11904: 0xD6CE, - 31526 - 11904: 0xB2C5, - 31527 - 11904: 0x954F, - 31528 - 11904: 0xB2C2, - 31529 - 11904: 0x8E5E, - 31530 - 11904: 0xD6D4, - 31531 - 11904: 0xD6D7, - 31532 - 11904: 0xB2C4, - 31533 - 11904: 0xD6D8, - 31534 - 11904: 0xB2C8, - 31535 - 11904: 0xD6D9, - 31536 - 11904: 0xD6CF, - 31537 - 11904: 0xD6D6, - 31538 - 11904: 0xD6DA, - 31539 - 11904: 0xD6D2, - 31540 - 11904: 0xD6CD, - 31541 - 11904: 0xD6CB, - 31544 - 11904: 0xD6DB, - 31545 - 11904: 0x996A, - 31547 - 11904: 0xDADF, - 31552 - 11904: 0xDAE4, - 31554 - 11904: 0x9C64, - 31555 - 11904: 0x9CD9, - 31556 - 11904: 0xDAE0, - 31557 - 11904: 0xDAE6, - 31558 - 11904: 0xB5A7, - 31559 - 11904: 0xD6CC, - 31560 - 11904: 0xDAE1, - 31561 - 11904: 0xB5A5, - 31562 - 11904: 0xDADE, - 31563 - 11904: 0xB5AC, - 31564 - 11904: 0xDAE2, - 31565 - 11904: 0xB5AB, - 31566 - 11904: 0xDAE3, - 31567 - 11904: 0xB5AD, - 31568 - 11904: 0xB5A8, - 31569 - 11904: 0xB5AE, - 31570 - 11904: 0xB5A9, - 31572 - 11904: 0xB5AA, - 31573 - 11904: 0x8E5D, - 31574 - 11904: 0xB5A6, - 31576 - 11904: 0xDAE5, - 31584 - 11904: 0xB861, - 31585 - 11904: 0xDF50, - 31586 - 11904: 0x9950, - 31587 - 11904: 0xDF53, - 31588 - 11904: 0xDF47, - 31589 - 11904: 0xDF4C, - 31590 - 11904: 0xDF46, - 31591 - 11904: 0xB863, - 31593 - 11904: 0xDF4A, - 31596 - 11904: 0x9951, - 31597 - 11904: 0xDF48, - 31598 - 11904: 0xB862, - 31599 - 11904: 0x8E62, - 31600 - 11904: 0xDF4F, - 31601 - 11904: 0xDF4E, - 31602 - 11904: 0xDF4B, - 31603 - 11904: 0xDF4D, - 31604 - 11904: 0xDF49, - 31605 - 11904: 0xBAE1, - 31606 - 11904: 0xDF52, - 31607 - 11904: 0xB85F, - 31608 - 11904: 0xDF51, - 31611 - 11904: 0x9952, - 31618 - 11904: 0xE35D, - 31620 - 11904: 0xBAE8, - 31621 - 11904: 0xE358, - 31623 - 11904: 0xBAE7, - 31624 - 11904: 0xE34E, - 31626 - 11904: 0xE350, - 31627 - 11904: 0xBAE0, - 31628 - 11904: 0xE355, - 31629 - 11904: 0xE354, - 31630 - 11904: 0xE357, - 31631 - 11904: 0xBAE5, - 31632 - 11904: 0xE352, - 31633 - 11904: 0xE351, - 31634 - 11904: 0x8E68, - 31636 - 11904: 0xBAE4, - 31637 - 11904: 0xBADF, - 31638 - 11904: 0xE353, - 31639 - 11904: 0xBAE2, - 31640 - 11904: 0xE359, - 31641 - 11904: 0xE35B, - 31643 - 11904: 0xE356, - 31644 - 11904: 0xE34F, - 31645 - 11904: 0xBAE3, - 31648 - 11904: 0xBD69, - 31649 - 11904: 0xBADE, - 31650 - 11904: 0x8E61, - 31651 - 11904: 0x9F59, - 31652 - 11904: 0xE35C, - 31660 - 11904: 0xE6D9, - 31661 - 11904: 0xBD62, - 31662 - 11904: 0x87D0, - 31663 - 11904: 0xE6DB, - 31665 - 11904: 0xBD63, - 31666 - 11904: 0x8BB3, - 31668 - 11904: 0xBD65, - 31669 - 11904: 0xE6DE, - 31671 - 11904: 0xE6D6, - 31672 - 11904: 0xBAE6, - 31673 - 11904: 0xE6DC, - 31678 - 11904: 0xE6D8, - 31680 - 11904: 0xB860, - 31681 - 11904: 0xBD68, - 31684 - 11904: 0xBD64, - 31685 - 11904: 0x87B9, - 31686 - 11904: 0xBD66, - 31687 - 11904: 0xBD67, - 31689 - 11904: 0xBF76, - 31690 - 11904: 0xE6DD, - 31691 - 11904: 0xE6D7, - 31692 - 11904: 0xBD6A, - 31694 - 11904: 0xE6DA, - 31695 - 11904: 0x9F5D, - 31696 - 11904: 0x8E66, - 31700 - 11904: 0xEAC0, - 31701 - 11904: 0xEABB, - 31704 - 11904: 0xEAC5, - 31705 - 11904: 0xBF74, - 31706 - 11904: 0xEABD, - 31707 - 11904: 0xBF78, - 31708 - 11904: 0xEAC3, - 31709 - 11904: 0xEABA, - 31710 - 11904: 0xEAB7, - 31711 - 11904: 0xEAC6, - 31712 - 11904: 0xC151, - 31713 - 11904: 0xBF79, - 31714 - 11904: 0xEAC2, - 31715 - 11904: 0xEAB8, - 31716 - 11904: 0xBF77, - 31717 - 11904: 0xEABC, - 31718 - 11904: 0xBF7B, - 31719 - 11904: 0xEAB9, - 31720 - 11904: 0xEABE, - 31721 - 11904: 0xBF7A, - 31722 - 11904: 0xEAC1, - 31723 - 11904: 0xEAC4, - 31724 - 11904: 0x8CB2, - 31728 - 11904: 0xEDCB, - 31729 - 11904: 0xEDCC, - 31730 - 11904: 0xEDBC, - 31731 - 11904: 0xEDC3, - 31732 - 11904: 0xEDC1, - 31735 - 11904: 0xC14F, - 31736 - 11904: 0xEDC8, - 31737 - 11904: 0xEABF, - 31738 - 11904: 0x8E6E, - 31739 - 11904: 0xEDBF, - 31740 - 11904: 0x9F64, - 31741 - 11904: 0xEDC9, - 31742 - 11904: 0xC14E, - 31743 - 11904: 0xEDBE, - 31744 - 11904: 0xEDBD, - 31745 - 11904: 0xEDC7, - 31746 - 11904: 0xEDC4, - 31747 - 11904: 0xEDC6, - 31749 - 11904: 0xEDBA, - 31750 - 11904: 0xEDCA, - 31751 - 11904: 0xC14C, - 31753 - 11904: 0xEDC5, - 31754 - 11904: 0xEDCE, - 31755 - 11904: 0xEDC2, - 31756 - 11904: 0xC150, - 31757 - 11904: 0xC14D, - 31758 - 11904: 0xEDC0, - 31759 - 11904: 0xEDBB, - 31760 - 11904: 0xEDCD, - 31761 - 11904: 0xBF75, - 31762 - 11904: 0x9953, - 31765 - 11904: 0xFAB8, - 31769 - 11904: 0xF063, - 31771 - 11904: 0x9954, - 31772 - 11904: 0xF061, - 31773 - 11904: 0xF067, - 31774 - 11904: 0xC2B0, - 31775 - 11904: 0xF065, - 31776 - 11904: 0xF064, - 31777 - 11904: 0xC2B2, - 31778 - 11904: 0xF06A, - 31779 - 11904: 0xC2B1, - 31781 - 11904: 0xF06B, - 31782 - 11904: 0xF068, - 31783 - 11904: 0xC2AE, - 31784 - 11904: 0xF069, - 31785 - 11904: 0xF062, - 31786 - 11904: 0xC2AF, - 31787 - 11904: 0xC2AD, - 31788 - 11904: 0xF2AB, - 31789 - 11904: 0xF066, - 31792 - 11904: 0xF06C, - 31795 - 11904: 0xF2A8, - 31797 - 11904: 0x8E70, - 31799 - 11904: 0xC3B2, - 31800 - 11904: 0xC3B0, - 31801 - 11904: 0xF2AA, - 31803 - 11904: 0xF2AC, - 31804 - 11904: 0xF2A9, - 31805 - 11904: 0xC3B1, - 31806 - 11904: 0xC3AE, - 31807 - 11904: 0xC3AF, - 31808 - 11904: 0xC3B3, - 31810 - 11904: 0x9F61, - 31811 - 11904: 0xC478, - 31812 - 11904: 0x8E72, - 31813 - 11904: 0xF4AA, - 31815 - 11904: 0xF4A9, - 31816 - 11904: 0xF4A7, - 31817 - 11904: 0xF4A6, - 31818 - 11904: 0xF4A8, - 31820 - 11904: 0xC477, - 31821 - 11904: 0xC479, - 31824 - 11904: 0xC4F0, - 31825 - 11904: 0xA06B, - 31827 - 11904: 0xF5E5, - 31828 - 11904: 0xF5E4, - 31830 - 11904: 0x9F40, - 31831 - 11904: 0xF6FA, - 31833 - 11904: 0xF6FC, - 31834 - 11904: 0xF6FE, - 31835 - 11904: 0xF6FD, - 31836 - 11904: 0xF6FB, - 31837 - 11904: 0x94ED, - 31839 - 11904: 0xC5A3, - 31840 - 11904: 0xC5A2, - 31843 - 11904: 0xC5D3, - 31844 - 11904: 0xC5D2, - 31845 - 11904: 0xC5D4, - 31846 - 11904: 0xF7ED, - 31847 - 11904: 0xF7EC, - 31849 - 11904: 0xF8FB, - 31850 - 11904: 0xF8B8, - 31851 - 11904: 0xF8FC, - 31852 - 11904: 0xC658, - 31853 - 11904: 0x94EE, - 31854 - 11904: 0xC659, - 31855 - 11904: 0xF96D, - 31856 - 11904: 0x9FBD, - 31858 - 11904: 0xC67E, - 31859 - 11904: 0xA6CC, - 31860 - 11904: 0x8E7B, - 31861 - 11904: 0xCDA8, - 31864 - 11904: 0xD045, - 31865 - 11904: 0xD046, - 31866 - 11904: 0xD044, - 31867 - 11904: 0x9957, - 31868 - 11904: 0x94F7, - 31869 - 11904: 0xACF3, - 31870 - 11904: 0x9F5F, - 31871 - 11904: 0xD047, - 31872 - 11904: 0xD048, - 31873 - 11904: 0xD049, - 31875 - 11904: 0x8E73, - 31876 - 11904: 0xD349, - 31877 - 11904: 0xD34F, - 31878 - 11904: 0x9F62, - 31880 - 11904: 0xD34D, - 31881 - 11904: 0xAFBB, - 31882 - 11904: 0xD34B, - 31884 - 11904: 0xD34C, - 31885 - 11904: 0xD34E, - 31886 - 11904: 0x94F6, - 31889 - 11904: 0xD34A, - 31890 - 11904: 0xB2C9, - 31892 - 11904: 0xD6DE, - 31893 - 11904: 0xB2CB, - 31894 - 11904: 0xD6E0, - 31895 - 11904: 0xB2CA, - 31896 - 11904: 0xD6DF, - 31900 - 11904: 0x9958, - 31902 - 11904: 0xDAE8, - 31903 - 11904: 0xB5AF, - 31905 - 11904: 0xDAEA, - 31906 - 11904: 0xDAE7, - 31907 - 11904: 0xD6E1, - 31909 - 11904: 0xB5B0, - 31910 - 11904: 0x8E75, - 31911 - 11904: 0xF9DB, - 31912 - 11904: 0xDAE9, - 31916 - 11904: 0x9072, - 31918 - 11904: 0x94F8, - 31919 - 11904: 0xDF56, - 31921 - 11904: 0xB864, - 31922 - 11904: 0xDF54, - 31923 - 11904: 0xB865, - 31924 - 11904: 0xDF55, - 31925 - 11904: 0xB866, - 31928 - 11904: 0x995A, - 31929 - 11904: 0xBAE9, - 31930 - 11904: 0xE361, - 31931 - 11904: 0xE35E, - 31932 - 11904: 0xE360, - 31933 - 11904: 0xBAEA, - 31934 - 11904: 0xBAEB, - 31935 - 11904: 0xE35F, - 31938 - 11904: 0xA0B0, - 31939 - 11904: 0x8CB3, - 31941 - 11904: 0xE6DF, - 31943 - 11904: 0x8E79, - 31944 - 11904: 0xE6E0, - 31945 - 11904: 0x8E78, - 31946 - 11904: 0xBD6B, - 31947 - 11904: 0xE6E2, - 31948 - 11904: 0xE6E1, - 31949 - 11904: 0x94F3, - 31950 - 11904: 0xA261, - 31952 - 11904: 0xEACA, - 31953 - 11904: 0xEACB, - 31954 - 11904: 0xEAC7, - 31955 - 11904: 0x98AF, - 31956 - 11904: 0xEAC8, - 31957 - 11904: 0xBF7C, - 31958 - 11904: 0xBF7D, - 31959 - 11904: 0xEAC9, - 31961 - 11904: 0xC157, - 31962 - 11904: 0xA0B2, - 31964 - 11904: 0xC153, - 31965 - 11904: 0xC158, - 31966 - 11904: 0xC154, - 31967 - 11904: 0xC156, - 31968 - 11904: 0xC152, - 31970 - 11904: 0xC155, - 31974 - 11904: 0x8E7A, - 31975 - 11904: 0xC2B3, - 31976 - 11904: 0xEDCF, - 31978 - 11904: 0xF2AE, - 31980 - 11904: 0xF2AD, - 31981 - 11904: 0x995C, - 31982 - 11904: 0xF4AB, - 31983 - 11904: 0xC47A, - 31984 - 11904: 0xC47B, - 31985 - 11904: 0xF741, - 31986 - 11904: 0xF5E6, - 31987 - 11904: 0x8E7C, - 31988 - 11904: 0xF740, - 31989 - 11904: 0x8E7D, - 31990 - 11904: 0xF8FD, - 31991 - 11904: 0xF9A4, - 31992 - 11904: 0xA6CD, - 31993 - 11904: 0x8BD9, - 31995 - 11904: 0xA874, - 31996 - 11904: 0x89A2, - 31997 - 11904: 0xCDA9, - 31998 - 11904: 0xAAC8, - 32000 - 11904: 0xACF6, - 32001 - 11904: 0xD04C, - 32002 - 11904: 0xACF4, - 32003 - 11904: 0xD04A, - 32004 - 11904: 0xACF9, - 32005 - 11904: 0xACF5, - 32006 - 11904: 0xACFA, - 32007 - 11904: 0xACF8, - 32008 - 11904: 0xD04B, - 32009 - 11904: 0xACF7, - 32010 - 11904: 0xAFBF, - 32011 - 11904: 0xAFBE, - 32012 - 11904: 0xD35A, - 32013 - 11904: 0xAFC7, - 32014 - 11904: 0xD353, - 32015 - 11904: 0xD359, - 32016 - 11904: 0xAFC3, - 32017 - 11904: 0xD352, - 32018 - 11904: 0xD358, - 32019 - 11904: 0xD356, - 32020 - 11904: 0xAFC2, - 32021 - 11904: 0xAFC4, - 32022 - 11904: 0xD355, - 32023 - 11904: 0xAFBD, - 32024 - 11904: 0xD354, - 32025 - 11904: 0xAFC8, - 32026 - 11904: 0xAFC5, - 32027 - 11904: 0xAFC9, - 32028 - 11904: 0xAFC6, - 32029 - 11904: 0xD351, - 32030 - 11904: 0xD350, - 32031 - 11904: 0xD357, - 32032 - 11904: 0xAFC0, - 32033 - 11904: 0xAFBC, - 32034 - 11904: 0xAFC1, - 32037 - 11904: 0x9ED7, - 32040 - 11904: 0xD6F0, - 32041 - 11904: 0xD6E9, - 32043 - 11904: 0xB5B5, - 32044 - 11904: 0xD6E8, - 32046 - 11904: 0xB2CF, - 32047 - 11904: 0xB2D6, - 32048 - 11904: 0xB2D3, - 32049 - 11904: 0xB2D9, - 32050 - 11904: 0xB2D8, - 32051 - 11904: 0xB2D4, - 32053 - 11904: 0xD6E2, - 32054 - 11904: 0xD6E5, - 32056 - 11904: 0xD6E4, - 32057 - 11904: 0xB2D0, - 32058 - 11904: 0xD6E6, - 32059 - 11904: 0xD6EF, - 32060 - 11904: 0xB2D1, - 32061 - 11904: 0xD6E3, - 32062 - 11904: 0xD6EC, - 32063 - 11904: 0xD6ED, - 32064 - 11904: 0xB2D2, - 32065 - 11904: 0xD6EA, - 32066 - 11904: 0xB2D7, - 32067 - 11904: 0xB2CD, - 32068 - 11904: 0xB2D5, - 32069 - 11904: 0xD6E7, - 32070 - 11904: 0xB2CC, - 32071 - 11904: 0xD6EB, - 32074 - 11904: 0xD6EE, - 32077 - 11904: 0xA0B6, - 32078 - 11904: 0xDAFB, - 32079 - 11904: 0xDAF2, - 32080 - 11904: 0xB5B2, - 32081 - 11904: 0xDAF9, - 32082 - 11904: 0xDAF6, - 32083 - 11904: 0xDAEE, - 32084 - 11904: 0xDAF7, - 32085 - 11904: 0xB5B4, - 32086 - 11904: 0xDAEF, - 32088 - 11904: 0xDAEB, - 32090 - 11904: 0x9E42, - 32091 - 11904: 0xB86C, - 32092 - 11904: 0xDAF4, - 32093 - 11904: 0x8EA4, - 32094 - 11904: 0xB5B1, - 32095 - 11904: 0xDAFA, - 32097 - 11904: 0xB5B8, - 32098 - 11904: 0xB5BA, - 32099 - 11904: 0xDAED, - 32102 - 11904: 0xB5B9, - 32103 - 11904: 0xDAF0, - 32104 - 11904: 0xB5B3, - 32105 - 11904: 0xDAF8, - 32106 - 11904: 0xDAF1, - 32107 - 11904: 0xDAF5, - 32109 - 11904: 0xDAF3, - 32110 - 11904: 0xB5B6, - 32111 - 11904: 0xDAEC, - 32112 - 11904: 0xB5BB, - 32113 - 11904: 0xB2CE, - 32114 - 11904: 0xB5B7, - 32115 - 11904: 0xB5BC, - 32121 - 11904: 0xB868, - 32122 - 11904: 0xDF5D, - 32123 - 11904: 0xDF5F, - 32124 - 11904: 0xDF61, - 32125 - 11904: 0xDF65, - 32127 - 11904: 0xDF5B, - 32128 - 11904: 0xDF59, - 32129 - 11904: 0xB86A, - 32131 - 11904: 0xDF60, - 32132 - 11904: 0xDF64, - 32133 - 11904: 0xDF5C, - 32134 - 11904: 0xDF58, - 32136 - 11904: 0xDF57, - 32137 - 11904: 0x8EA7, - 32139 - 11904: 0x8C76, - 32140 - 11904: 0xDF62, - 32141 - 11904: 0xDF5A, - 32142 - 11904: 0xDF5E, - 32143 - 11904: 0xB86B, - 32145 - 11904: 0xB869, - 32146 - 11904: 0xDF66, - 32147 - 11904: 0xB867, - 32148 - 11904: 0xDF63, - 32149 - 11904: 0x8767, - 32150 - 11904: 0xE372, - 32151 - 11904: 0x9542, - 32156 - 11904: 0xBAEE, - 32157 - 11904: 0xE36A, - 32158 - 11904: 0xBD78, - 32159 - 11904: 0xE374, - 32160 - 11904: 0xBAF1, - 32161 - 11904: 0xE378, - 32162 - 11904: 0xBAF7, - 32163 - 11904: 0xE365, - 32164 - 11904: 0x987D, - 32166 - 11904: 0xE375, - 32167 - 11904: 0xE362, - 32168 - 11904: 0x9755, - 32169 - 11904: 0xE377, - 32170 - 11904: 0xE366, - 32171 - 11904: 0x8EA8, - 32172 - 11904: 0xBAFE, - 32173 - 11904: 0xBAFB, - 32174 - 11904: 0xE376, - 32175 - 11904: 0xE370, - 32176 - 11904: 0xBAED, - 32177 - 11904: 0xBAF5, - 32178 - 11904: 0xBAF4, - 32179 - 11904: 0x8EAA, - 32180 - 11904: 0xBAF3, - 32181 - 11904: 0xBAF9, - 32183 - 11904: 0xE363, - 32184 - 11904: 0xBAFA, - 32185 - 11904: 0xE371, - 32186 - 11904: 0xBAF6, - 32187 - 11904: 0xBAEC, - 32188 - 11904: 0xE373, - 32189 - 11904: 0xBAEF, - 32190 - 11904: 0xBAF0, - 32191 - 11904: 0xBAF8, - 32192 - 11904: 0xE368, - 32193 - 11904: 0xE367, - 32194 - 11904: 0xE364, - 32196 - 11904: 0xE36C, - 32197 - 11904: 0xE369, - 32198 - 11904: 0xE36D, - 32199 - 11904: 0xBAFD, - 32201 - 11904: 0xE379, - 32202 - 11904: 0xBAF2, - 32203 - 11904: 0xE36E, - 32204 - 11904: 0xE36F, - 32205 - 11904: 0x89A3, - 32206 - 11904: 0xE36B, - 32207 - 11904: 0x9960, - 32208 - 11904: 0x9962, - 32210 - 11904: 0xBAFC, - 32211 - 11904: 0x94FC, - 32212 - 11904: 0x9961, - 32215 - 11904: 0xE6E7, - 32216 - 11904: 0xBD70, - 32217 - 11904: 0xBD79, - 32218 - 11904: 0xBD75, - 32219 - 11904: 0xE6E4, - 32220 - 11904: 0x94FA, - 32221 - 11904: 0xBD72, - 32222 - 11904: 0xBD76, - 32223 - 11904: 0xE6F0, - 32224 - 11904: 0xBD6C, - 32225 - 11904: 0xE6E8, - 32227 - 11904: 0xBD74, - 32228 - 11904: 0x8EAE, - 32229 - 11904: 0x8EB2, - 32230 - 11904: 0xE6EB, - 32231 - 11904: 0xE6E6, - 32232 - 11904: 0xBD73, - 32233 - 11904: 0xBD77, - 32234 - 11904: 0xE6E5, - 32236 - 11904: 0xBD71, - 32238 - 11904: 0xE6EF, - 32239 - 11904: 0xBD6E, - 32240 - 11904: 0xE6EE, - 32241 - 11904: 0xE6ED, - 32242 - 11904: 0xBD7A, - 32243 - 11904: 0xE572, - 32244 - 11904: 0xBD6D, - 32245 - 11904: 0x8EB0, - 32246 - 11904: 0xE6EC, - 32247 - 11904: 0xE6E3, - 32249 - 11904: 0xBD7B, - 32250 - 11904: 0xE6EA, - 32251 - 11904: 0xBD6F, - 32253 - 11904: 0x9963, - 32254 - 11904: 0x97AA, - 32259 - 11904: 0xE6E9, - 32263 - 11904: 0x94FB, - 32264 - 11904: 0xBFA2, - 32265 - 11904: 0xBFA7, - 32266 - 11904: 0xBF7E, - 32267 - 11904: 0xEAD8, - 32268 - 11904: 0xEACF, - 32269 - 11904: 0xEADB, - 32270 - 11904: 0xEAD3, - 32271 - 11904: 0xEAD9, - 32272 - 11904: 0xBFA8, - 32273 - 11904: 0xBFA1, - 32274 - 11904: 0xEACC, - 32275 - 11904: 0xEAD2, - 32276 - 11904: 0xEADC, - 32277 - 11904: 0xEAD5, - 32278 - 11904: 0xEADA, - 32279 - 11904: 0xEACE, - 32282 - 11904: 0xEAD6, - 32283 - 11904: 0xBFA3, - 32284 - 11904: 0xEAD4, - 32285 - 11904: 0xBFA6, - 32286 - 11904: 0xBFA5, - 32287 - 11904: 0xEAD0, - 32288 - 11904: 0xEAD1, - 32289 - 11904: 0xEACD, - 32290 - 11904: 0xEAD7, - 32291 - 11904: 0xBFA4, - 32292 - 11904: 0xEADE, - 32293 - 11904: 0xEADD, - 32295 - 11904: 0x8EBB, - 32297 - 11904: 0xEDDA, - 32298 - 11904: 0xEDD6, - 32299 - 11904: 0xC15F, - 32301 - 11904: 0xEDD0, - 32302 - 11904: 0xC159, - 32303 - 11904: 0xC169, - 32304 - 11904: 0xEDDC, - 32305 - 11904: 0xC161, - 32306 - 11904: 0xC15D, - 32307 - 11904: 0xEDD3, - 32308 - 11904: 0xC164, - 32309 - 11904: 0xC167, - 32310 - 11904: 0xEDDE, - 32311 - 11904: 0xC15C, - 32312 - 11904: 0xEDD5, - 32313 - 11904: 0xC165, - 32314 - 11904: 0xEDE0, - 32315 - 11904: 0xEDDD, - 32316 - 11904: 0xEDD1, - 32317 - 11904: 0xC160, - 32318 - 11904: 0xC15A, - 32319 - 11904: 0xC168, - 32320 - 11904: 0xEDD8, - 32321 - 11904: 0xC163, - 32322 - 11904: 0xEDD2, - 32323 - 11904: 0xC15E, - 32324 - 11904: 0xEDDF, - 32325 - 11904: 0xC162, - 32326 - 11904: 0xC15B, - 32327 - 11904: 0xEDD9, - 32328 - 11904: 0xC166, - 32329 - 11904: 0xEDD7, - 32332 - 11904: 0xEDDB, - 32336 - 11904: 0xF06E, - 32337 - 11904: 0xF074, - 32338 - 11904: 0xC2B9, - 32339 - 11904: 0xF077, - 32340 - 11904: 0xC2B4, - 32341 - 11904: 0xC2B5, - 32342 - 11904: 0xF06F, - 32343 - 11904: 0xF076, - 32344 - 11904: 0xF071, - 32345 - 11904: 0xC2BA, - 32346 - 11904: 0xC2B7, - 32347 - 11904: 0x8CDC, - 32348 - 11904: 0xF06D, - 32350 - 11904: 0xC2B6, - 32351 - 11904: 0xF073, - 32352 - 11904: 0xF075, - 32353 - 11904: 0xC2B8, - 32354 - 11904: 0xF072, - 32355 - 11904: 0xF070, - 32357 - 11904: 0x9876, - 32359 - 11904: 0x8EA1, - 32360 - 11904: 0xF2B8, - 32361 - 11904: 0xC3B7, - 32362 - 11904: 0xC3B8, - 32363 - 11904: 0xC3B4, - 32364 - 11904: 0x8CB4, - 32365 - 11904: 0xC3B5, - 32366 - 11904: 0x8EB7, - 32367 - 11904: 0xF2B4, - 32368 - 11904: 0xF2B2, - 32370 - 11904: 0xF2B6, - 32371 - 11904: 0xC3BA, - 32372 - 11904: 0xF2B7, - 32373 - 11904: 0xF2B0, - 32374 - 11904: 0xF2AF, - 32375 - 11904: 0xF2B3, - 32376 - 11904: 0xF2B1, - 32377 - 11904: 0xC3B6, - 32378 - 11904: 0xF2B5, - 32379 - 11904: 0xF4AC, - 32380 - 11904: 0xC47E, - 32381 - 11904: 0xC47D, - 32382 - 11904: 0xF4AD, - 32383 - 11904: 0x9DA6, - 32384 - 11904: 0xF4AF, - 32385 - 11904: 0xF4AE, - 32386 - 11904: 0xC4A1, - 32390 - 11904: 0xF5EB, - 32391 - 11904: 0xF5E8, - 32392 - 11904: 0xF5E9, - 32394 - 11904: 0xF5E7, - 32395 - 11904: 0xF5EA, - 32396 - 11904: 0xC4F2, - 32397 - 11904: 0xF5EC, - 32398 - 11904: 0x9EB0, - 32399 - 11904: 0xC4F1, - 32401 - 11904: 0xF742, - 32402 - 11904: 0x8EB8, - 32403 - 11904: 0xC5D5, - 32404 - 11904: 0xC5D7, - 32405 - 11904: 0xF7EE, - 32406 - 11904: 0xC5D6, - 32407 - 11904: 0xF8B9, - 32408 - 11904: 0xF940, - 32409 - 11904: 0xF942, - 32410 - 11904: 0xF8FE, - 32411 - 11904: 0xF941, - 32412 - 11904: 0xC66C, - 32415 - 11904: 0x9D70, - 32420 - 11904: 0x896E, - 32428 - 11904: 0x896F, - 32442 - 11904: 0x8970, - 32455 - 11904: 0x8971, - 32463 - 11904: 0x8972, - 32479 - 11904: 0x8973, - 32518 - 11904: 0x8974, - 32566 - 11904: 0xA6CE, - 32567 - 11904: 0x8975, - 32568 - 11904: 0xACFB, - 32569 - 11904: 0xD26F, - 32570 - 11904: 0xAFCA, - 32573 - 11904: 0xB2DA, - 32574 - 11904: 0xDAFC, - 32575 - 11904: 0xDAFD, - 32576 - 11904: 0x8EBC, - 32577 - 11904: 0x8EBD, - 32579 - 11904: 0xEADF, - 32580 - 11904: 0xC16A, - 32581 - 11904: 0xEDE1, - 32583 - 11904: 0x8EBE, - 32584 - 11904: 0xC2BB, - 32585 - 11904: 0x9DD1, - 32586 - 11904: 0xF2BA, - 32587 - 11904: 0xF2B9, - 32588 - 11904: 0xC4A2, - 32589 - 11904: 0xF5ED, - 32590 - 11904: 0x94FD, - 32591 - 11904: 0xF743, - 32592 - 11904: 0xC5F8, - 32593 - 11904: 0xCA49, - 32594 - 11904: 0x8BD7, - 32595 - 11904: 0x8BDA, - 32596 - 11904: 0xAAC9, - 32597 - 11904: 0xA875, - 32600 - 11904: 0xD04D, - 32603 - 11904: 0xD360, - 32604 - 11904: 0xD35B, - 32605 - 11904: 0xD35F, - 32606 - 11904: 0xD35D, - 32607 - 11904: 0xAFCB, - 32608 - 11904: 0xD35E, - 32609 - 11904: 0xD35C, - 32611 - 11904: 0xD6F1, - 32613 - 11904: 0xDAFE, - 32614 - 11904: 0xDB40, - 32615 - 11904: 0xDF69, - 32616 - 11904: 0xDF6A, - 32617 - 11904: 0xB86E, - 32618 - 11904: 0xB86F, - 32619 - 11904: 0xDF68, - 32620 - 11904: 0xDF6B, - 32621 - 11904: 0xDF67, - 32622 - 11904: 0xB86D, - 32624 - 11904: 0xBB40, - 32625 - 11904: 0xA0E2, - 32626 - 11904: 0xB870, - 32627 - 11904: 0xE37A, - 32629 - 11904: 0xBD7C, - 32630 - 11904: 0xE6F1, - 32631 - 11904: 0xBD7D, - 32632 - 11904: 0x9FE9, - 32633 - 11904: 0xBFA9, - 32634 - 11904: 0xEAE2, - 32635 - 11904: 0xEAE0, - 32636 - 11904: 0xEAE1, - 32637 - 11904: 0xEDE4, - 32638 - 11904: 0xEDE3, - 32639 - 11904: 0xEDE2, - 32643 - 11904: 0xF2BB, - 32645 - 11904: 0xC3B9, - 32646 - 11904: 0xF2BC, - 32647 - 11904: 0xF744, - 32648 - 11904: 0xC5F9, - 32649 - 11904: 0xF8BA, - 32650 - 11904: 0xA6CF, - 32651 - 11904: 0xAACB, - 32652 - 11904: 0xAACA, - 32653 - 11904: 0xD04F, - 32654 - 11904: 0xACFC, - 32655 - 11904: 0xFDA8, - 32657 - 11904: 0xD04E, - 32658 - 11904: 0xD362, - 32659 - 11904: 0x8AE7, - 32660 - 11904: 0xAFCC, - 32661 - 11904: 0xD6F2, - 32662 - 11904: 0xD361, - 32663 - 11904: 0x8EC2, - 32666 - 11904: 0xB2DC, - 32667 - 11904: 0xD6F5, - 32668 - 11904: 0xD6F3, - 32669 - 11904: 0xD6F4, - 32670 - 11904: 0xB2DB, - 32672 - 11904: 0xDB42, - 32673 - 11904: 0xDB43, - 32674 - 11904: 0xDB41, - 32675 - 11904: 0x8EC4, - 32676 - 11904: 0xB873, - 32677 - 11904: 0xDF6D, - 32678 - 11904: 0xDF6C, - 32679 - 11904: 0xDF6E, - 32680 - 11904: 0xB872, - 32681 - 11904: 0xB871, - 32684 - 11904: 0xE6F2, - 32685 - 11904: 0xE6F4, - 32686 - 11904: 0x9964, - 32687 - 11904: 0xBD7E, - 32688 - 11904: 0xE6F3, - 32689 - 11904: 0xEAE3, - 32690 - 11904: 0xBFAA, - 32691 - 11904: 0xF079, - 32692 - 11904: 0x9965, - 32693 - 11904: 0xF078, - 32694 - 11904: 0xC3BB, - 32695 - 11904: 0xF2BD, - 32696 - 11904: 0xC3BD, - 32697 - 11904: 0xC3BC, - 32698 - 11904: 0xF4B0, - 32699 - 11904: 0xF5EE, - 32700 - 11904: 0xC4F3, - 32701 - 11904: 0xA6D0, - 32702 - 11904: 0xD050, - 32703 - 11904: 0xACFD, - 32704 - 11904: 0xD365, - 32705 - 11904: 0xAFCE, - 32706 - 11904: 0xD364, - 32707 - 11904: 0xD363, - 32709 - 11904: 0xAFCD, - 32711 - 11904: 0xD6FB, - 32713 - 11904: 0xD6FD, - 32714 - 11904: 0xD6F6, - 32715 - 11904: 0xD6F7, - 32716 - 11904: 0xB2DD, - 32717 - 11904: 0xD6F8, - 32718 - 11904: 0xB2DE, - 32719 - 11904: 0xD6FC, - 32720 - 11904: 0xD6F9, - 32721 - 11904: 0xD6FA, - 32722 - 11904: 0xB2DF, - 32724 - 11904: 0xB5BE, - 32725 - 11904: 0xB5BF, - 32727 - 11904: 0xDB44, - 32731 - 11904: 0xDF6F, - 32732 - 11904: 0xDF70, - 32733 - 11904: 0x954E, - 32734 - 11904: 0xE37E, - 32735 - 11904: 0xBB43, - 32736 - 11904: 0xBB41, - 32737 - 11904: 0xBB42, - 32738 - 11904: 0xE37B, - 32739 - 11904: 0xE37C, - 32741 - 11904: 0xE37D, - 32742 - 11904: 0xE6F9, - 32743 - 11904: 0x98B3, - 32744 - 11904: 0xE6FA, - 32745 - 11904: 0xBDA1, - 32746 - 11904: 0xE6F7, - 32747 - 11904: 0xE6F6, - 32748 - 11904: 0xE6F8, - 32749 - 11904: 0xE6F5, - 32750 - 11904: 0xBFAD, - 32751 - 11904: 0xEAE4, - 32752 - 11904: 0xBFAB, - 32753 - 11904: 0xBFAC, - 32754 - 11904: 0xEDE6, - 32755 - 11904: 0xC16B, - 32756 - 11904: 0xEDE5, - 32757 - 11904: 0xEFA8, - 32759 - 11904: 0xF07A, - 32760 - 11904: 0xF07B, - 32761 - 11904: 0xC2BC, - 32762 - 11904: 0x8ECB, - 32763 - 11904: 0xC2BD, - 32764 - 11904: 0xC16C, - 32765 - 11904: 0xF2BE, - 32766 - 11904: 0xF2BF, - 32767 - 11904: 0xF4B1, - 32768 - 11904: 0xC4A3, - 32769 - 11904: 0xA6D1, - 32770 - 11904: 0x8BDF, - 32771 - 11904: 0xA6D2, - 32772 - 11904: 0xACFE, - 32773 - 11904: 0xAACC, - 32774 - 11904: 0xAFCF, - 32775 - 11904: 0xD051, - 32776 - 11904: 0x8ECE, - 32779 - 11904: 0xB5C0, - 32780 - 11904: 0xA6D3, - 32781 - 11904: 0xAD41, - 32782 - 11904: 0xD052, - 32783 - 11904: 0xD053, - 32784 - 11904: 0xAD40, - 32785 - 11904: 0xAD42, - 32786 - 11904: 0xA6D4, - 32788 - 11904: 0xD054, - 32789 - 11904: 0xAFD1, - 32790 - 11904: 0xD366, - 32791 - 11904: 0xAFD3, - 32792 - 11904: 0xAFD0, - 32793 - 11904: 0xAFD2, - 32795 - 11904: 0xD741, - 32796 - 11904: 0xB2E0, - 32797 - 11904: 0x8ECF, - 32798 - 11904: 0xD740, - 32799 - 11904: 0xD6FE, - 32800 - 11904: 0x9968, - 32801 - 11904: 0xDF71, - 32804 - 11904: 0xE3A1, - 32805 - 11904: 0x9969, - 32806 - 11904: 0xBDA2, - 32808 - 11904: 0xBFAE, - 32809 - 11904: 0xEAE6, - 32810 - 11904: 0xEAE5, - 32812 - 11904: 0xEDE7, - 32814 - 11904: 0x996B, - 32815 - 11904: 0x8ED1, - 32816 - 11904: 0xF5EF, - 32817 - 11904: 0x996C, - 32819 - 11904: 0xA6D5, - 32820 - 11904: 0xCB73, - 32821 - 11904: 0xCDAA, - 32822 - 11904: 0xAD43, - 32823 - 11904: 0xD055, - 32825 - 11904: 0xD368, - 32827 - 11904: 0x8ED4, - 32828 - 11904: 0x8ED5, - 32829 - 11904: 0xAFD4, - 32830 - 11904: 0xD367, - 32831 - 11904: 0xAFD5, - 32835 - 11904: 0xD743, - 32838 - 11904: 0xB2E2, - 32839 - 11904: 0xD742, - 32840 - 11904: 0xD744, - 32842 - 11904: 0xB2E1, - 32847 - 11904: 0xDB46, - 32848 - 11904: 0xDB47, - 32849 - 11904: 0xDB45, - 32850 - 11904: 0xB5C1, - 32852 - 11904: 0x996D, - 32854 - 11904: 0xB874, - 32856 - 11904: 0xB875, - 32858 - 11904: 0xBB45, - 32859 - 11904: 0xA0BE, - 32860 - 11904: 0xE3A3, - 32861 - 11904: 0xE3A2, - 32862 - 11904: 0xBB44, - 32865 - 11904: 0x8ED6, - 32866 - 11904: 0xA0BC, - 32867 - 11904: 0xA0B5, - 32868 - 11904: 0xE6FB, - 32870 - 11904: 0xA0B4, - 32871 - 11904: 0xE6FC, - 32876 - 11904: 0xEAE7, - 32879 - 11904: 0xC170, - 32880 - 11904: 0xC16F, - 32881 - 11904: 0xC16D, - 32882 - 11904: 0xC16E, - 32883 - 11904: 0xC171, - 32885 - 11904: 0xF07C, - 32886 - 11904: 0xC2BF, - 32887 - 11904: 0xC2BE, - 32888 - 11904: 0xF2C0, - 32889 - 11904: 0xF4B2, - 32893 - 11904: 0xC5A5, - 32894 - 11904: 0xC5A4, - 32895 - 11904: 0xA6D6, - 32896 - 11904: 0x8BE0, - 32898 - 11904: 0xD1FB, - 32900 - 11904: 0xB877, - 32901 - 11904: 0xB5C2, - 32902 - 11904: 0xB876, - 32903 - 11904: 0xBB46, - 32905 - 11904: 0xA6D7, - 32906 - 11904: 0xC9A9, - 32907 - 11904: 0xA6D8, - 32908 - 11904: 0xA6D9, - 32911 - 11904: 0xCDAB, - 32912 - 11904: 0xCB76, - 32914 - 11904: 0xCB77, - 32915 - 11904: 0xA877, - 32917 - 11904: 0xCB74, - 32918 - 11904: 0xA876, - 32920 - 11904: 0xA879, - 32921 - 11904: 0xCB75, - 32922 - 11904: 0xA87B, - 32923 - 11904: 0xA87A, - 32924 - 11904: 0xCB78, - 32925 - 11904: 0xA878, - 32927 - 11904: 0x89B5, - 32929 - 11904: 0xAAD1, - 32930 - 11904: 0xAACF, - 32931 - 11904: 0xCDAD, - 32933 - 11904: 0xAACE, - 32935 - 11904: 0x8EDD, - 32937 - 11904: 0xAAD3, - 32938 - 11904: 0xAAD5, - 32939 - 11904: 0xAAD2, - 32941 - 11904: 0xCDB0, - 32942 - 11904: 0xCDAC, - 32943 - 11904: 0xAAD6, - 32945 - 11904: 0xAAD0, - 32946 - 11904: 0xA87C, - 32948 - 11904: 0xAAD4, - 32949 - 11904: 0xCDAF, - 32950 - 11904: 0x9E5D, - 32951 - 11904: 0x9971, - 32952 - 11904: 0xCDAE, - 32954 - 11904: 0xAACD, - 32956 - 11904: 0x89AE, - 32957 - 11904: 0x9DE8, - 32962 - 11904: 0xD05B, - 32963 - 11904: 0xAD47, - 32964 - 11904: 0xAD48, - 32965 - 11904: 0xD05D, - 32966 - 11904: 0x9565, - 32967 - 11904: 0xD057, - 32968 - 11904: 0xD05A, - 32969 - 11904: 0xD063, - 32970 - 11904: 0xD061, - 32972 - 11904: 0xAD49, - 32973 - 11904: 0xD067, - 32974 - 11904: 0xAD4C, - 32975 - 11904: 0xD064, - 32976 - 11904: 0xD05C, - 32977 - 11904: 0xD059, - 32980 - 11904: 0xDB49, - 32981 - 11904: 0xD062, - 32982 - 11904: 0xAD44, - 32983 - 11904: 0xD065, - 32984 - 11904: 0xD056, - 32985 - 11904: 0xD05F, - 32986 - 11904: 0xAD46, - 32987 - 11904: 0xAD4B, - 32988 - 11904: 0xD060, - 32989 - 11904: 0xAD4F, - 32990 - 11904: 0xAD4D, - 32992 - 11904: 0xD058, - 32993 - 11904: 0xAD4A, - 32995 - 11904: 0xD05E, - 32996 - 11904: 0xAD4E, - 32997 - 11904: 0xAD45, - 32998 - 11904: 0xD066, - 33001 - 11904: 0x9972, - 33004 - 11904: 0x8B5C, - 33005 - 11904: 0xAFDA, - 33007 - 11904: 0xAFE3, - 33008 - 11904: 0xAFD8, - 33009 - 11904: 0xAFD6, - 33010 - 11904: 0xD36A, - 33011 - 11904: 0xAFDE, - 33012 - 11904: 0xAFDB, - 33013 - 11904: 0xD36C, - 33014 - 11904: 0x89B1, - 33016 - 11904: 0xAFDD, - 33017 - 11904: 0xD36B, - 33018 - 11904: 0xD369, - 33019 - 11904: 0xD36E, - 33020 - 11904: 0xAFE2, - 33021 - 11904: 0xAFE0, - 33022 - 11904: 0xDB48, - 33024 - 11904: 0xD36F, - 33025 - 11904: 0xD36D, - 33026 - 11904: 0xAFD7, - 33027 - 11904: 0xA0C0, - 33029 - 11904: 0xAFD9, - 33030 - 11904: 0xAFDC, - 33031 - 11904: 0x8EDF, - 33032 - 11904: 0xAFDF, - 33033 - 11904: 0x9566, - 33034 - 11904: 0xAFE1, - 33036 - 11904: 0x9974, - 33038 - 11904: 0x9976, - 33042 - 11904: 0x9977, - 33044 - 11904: 0x9979, - 33045 - 11904: 0xD74E, - 33046 - 11904: 0xB2E4, - 33047 - 11904: 0x9DDA, - 33048 - 11904: 0xD745, - 33049 - 11904: 0xD747, - 33050 - 11904: 0x8EE0, - 33051 - 11904: 0xD748, - 33053 - 11904: 0xD750, - 33054 - 11904: 0xD74C, - 33055 - 11904: 0xD74A, - 33057 - 11904: 0xD74D, - 33058 - 11904: 0xD751, - 33059 - 11904: 0xB2E5, - 33060 - 11904: 0xB2E9, - 33061 - 11904: 0xD746, - 33063 - 11904: 0xD74F, - 33065 - 11904: 0xB2E7, - 33066 - 11904: 0x935C, - 33067 - 11904: 0xB2E6, - 33068 - 11904: 0xD74B, - 33069 - 11904: 0xD749, - 33071 - 11904: 0xB2E3, - 33072 - 11904: 0xB2E8, - 33074 - 11904: 0x9DE6, - 33076 - 11904: 0x8B5F, - 33079 - 11904: 0x9563, - 33081 - 11904: 0xB5C8, - 33082 - 11904: 0xDB51, - 33085 - 11904: 0xDB4F, - 33086 - 11904: 0xB5CA, - 33090 - 11904: 0x9567, - 33091 - 11904: 0xDB4A, - 33092 - 11904: 0xDFA1, - 33094 - 11904: 0xB5C9, - 33095 - 11904: 0xDB4E, - 33096 - 11904: 0x9DE3, - 33098 - 11904: 0xDB4B, - 33099 - 11904: 0xB5C5, - 33100 - 11904: 0xB5CB, - 33101 - 11904: 0xDB50, - 33102 - 11904: 0xB5C7, - 33103 - 11904: 0xDB4D, - 33104 - 11904: 0xBB47, - 33105 - 11904: 0xB5C6, - 33106 - 11904: 0xDB4C, - 33107 - 11904: 0xB5CC, - 33108 - 11904: 0xB5C4, - 33109 - 11904: 0xB5C3, - 33110 - 11904: 0x997C, - 33113 - 11904: 0x997D, - 33114 - 11904: 0x997E, - 33115 - 11904: 0xDF77, - 33116 - 11904: 0xDF75, - 33118 - 11904: 0xDF7B, - 33120 - 11904: 0xDF73, - 33121 - 11904: 0xDFA2, - 33122 - 11904: 0xDF78, - 33124 - 11904: 0xDF72, - 33125 - 11904: 0xB87B, - 33126 - 11904: 0xB8A3, - 33127 - 11904: 0xDF7D, - 33129 - 11904: 0xDF76, - 33131 - 11904: 0xB87E, - 33132 - 11904: 0x8CFB, - 33133 - 11904: 0x8B5B, - 33134 - 11904: 0xB87C, - 33135 - 11904: 0xDF7E, - 33136 - 11904: 0xB879, - 33137 - 11904: 0xB878, - 33138 - 11904: 0xDF79, - 33139 - 11904: 0xB87D, - 33140 - 11904: 0xB5CD, - 33142 - 11904: 0xDF7C, - 33143 - 11904: 0xDF74, - 33144 - 11904: 0xB87A, - 33145 - 11904: 0xB8A1, - 33146 - 11904: 0xB8A2, - 33148 - 11904: 0x99A3, - 33151 - 11904: 0xBB4C, - 33152 - 11904: 0xBB48, - 33154 - 11904: 0xBB4D, - 33155 - 11904: 0xE3A6, - 33156 - 11904: 0x99A4, - 33158 - 11904: 0xE3A5, - 33159 - 11904: 0xE3A7, - 33160 - 11904: 0xBB4A, - 33161 - 11904: 0xE3A4, - 33162 - 11904: 0xBB4B, - 33163 - 11904: 0xE3AA, - 33164 - 11904: 0xE3A9, - 33165 - 11904: 0xE3A8, - 33167 - 11904: 0xBB49, - 33171 - 11904: 0x99A6, - 33173 - 11904: 0xE741, - 33175 - 11904: 0xE744, - 33176 - 11904: 0xBDA8, - 33177 - 11904: 0xE743, - 33178 - 11904: 0xBDA7, - 33179 - 11904: 0xBDA3, - 33180 - 11904: 0xBDA4, - 33181 - 11904: 0xBDA5, - 33182 - 11904: 0xE740, - 33183 - 11904: 0xE6FE, - 33184 - 11904: 0xBDA6, - 33186 - 11904: 0xE742, - 33187 - 11904: 0xE6FD, - 33189 - 11904: 0x99A8, - 33190 - 11904: 0xEAE9, - 33191 - 11904: 0xEAF3, - 33192 - 11904: 0xBFB1, - 33193 - 11904: 0xBFB0, - 33194 - 11904: 0x8ABE, - 33195 - 11904: 0xEAED, - 33196 - 11904: 0xEAEF, - 33198 - 11904: 0xEAEA, - 33200 - 11904: 0xEAEE, - 33201 - 11904: 0xEAE8, - 33202 - 11904: 0xEAF1, - 33203 - 11904: 0xBFAF, - 33204 - 11904: 0xEAF0, - 33205 - 11904: 0xEAEC, - 33206 - 11904: 0x9E61, - 33207 - 11904: 0xEAF2, - 33209 - 11904: 0xEAEB, - 33210 - 11904: 0xC174, - 33211 - 11904: 0xEDE8, - 33212 - 11904: 0xEDEE, - 33213 - 11904: 0xC178, - 33214 - 11904: 0xC17A, - 33215 - 11904: 0xC177, - 33216 - 11904: 0xC176, - 33217 - 11904: 0x99AA, - 33218 - 11904: 0xC175, - 33219 - 11904: 0xC173, - 33220 - 11904: 0xEDE9, - 33221 - 11904: 0xEDEC, - 33222 - 11904: 0xC172, - 33223 - 11904: 0xEDED, - 33224 - 11904: 0xA0C8, - 33225 - 11904: 0xC179, - 33226 - 11904: 0xEDEB, - 33228 - 11904: 0xEDEA, - 33229 - 11904: 0xC2C0, - 33231 - 11904: 0xC2C1, - 33232 - 11904: 0xF0A1, - 33233 - 11904: 0xF07D, - 33234 - 11904: 0xF07E, - 33237 - 11904: 0xF2C2, - 33239 - 11904: 0xF2C1, - 33240 - 11904: 0xC3BE, - 33241 - 11904: 0xF4B4, - 33242 - 11904: 0xC4A4, - 33243 - 11904: 0xF4B3, - 33245 - 11904: 0xF5F0, - 33246 - 11904: 0xF745, - 33247 - 11904: 0xC5A6, - 33248 - 11904: 0xF943, - 33249 - 11904: 0xF944, - 33250 - 11904: 0xC5D8, - 33251 - 11904: 0xA6DA, - 33252 - 11904: 0x99AB, - 33253 - 11904: 0xAAD7, - 33254 - 11904: 0xDB52, - 33255 - 11904: 0xBB4E, - 33256 - 11904: 0xC17B, - 33257 - 11904: 0xEDEF, - 33258 - 11904: 0xA6DB, - 33260 - 11904: 0xAFE5, - 33261 - 11904: 0xAFE4, - 33262 - 11904: 0xDB53, - 33263 - 11904: 0xFEC4, - 33266 - 11904: 0xEAF4, - 33267 - 11904: 0xA6DC, - 33268 - 11904: 0xAD50, - 33270 - 11904: 0x98C2, - 33271 - 11904: 0xDB54, - 33272 - 11904: 0xDB55, - 33273 - 11904: 0xDB56, - 33274 - 11904: 0xBB4F, - 33275 - 11904: 0xBFB2, - 33276 - 11904: 0xA6DD, - 33278 - 11904: 0xAAD8, - 33279 - 11904: 0xD068, - 33280 - 11904: 0xAFE6, - 33281 - 11904: 0xD370, - 33282 - 11904: 0xB2EA, - 33284 - 11904: 0xDB57, - 33285 - 11904: 0xB8A4, - 33287 - 11904: 0xBB50, - 33288 - 11904: 0xBFB3, - 33289 - 11904: 0xC17C, - 33290 - 11904: 0xC2C2, - 33291 - 11904: 0xF4B5, - 33292 - 11904: 0xA6DE, - 33293 - 11904: 0xAAD9, - 33296 - 11904: 0xAFE7, - 33297 - 11904: 0xD752, - 33298 - 11904: 0xB5CE, - 33300 - 11904: 0xBB51, - 33301 - 11904: 0xE3AB, - 33302 - 11904: 0xE745, - 33304 - 11904: 0x8EE8, - 33306 - 11904: 0xA0BA, - 33307 - 11904: 0xA6DF, - 33308 - 11904: 0xB5CF, - 33309 - 11904: 0xDFA3, - 33310 - 11904: 0xBB52, - 33311 - 11904: 0xA6E0, - 33312 - 11904: 0xCDB1, - 33313 - 11904: 0xD069, - 33314 - 11904: 0xAD51, - 33317 - 11904: 0xD372, - 33318 - 11904: 0xFD77, - 33320 - 11904: 0xAFEA, - 33321 - 11904: 0x8EEE, - 33322 - 11904: 0xAFE8, - 33323 - 11904: 0xAFE9, - 33324 - 11904: 0xAFEB, - 33325 - 11904: 0x9EBF, - 33327 - 11904: 0xD371, - 33330 - 11904: 0xD757, - 33331 - 11904: 0xD754, - 33332 - 11904: 0xD756, - 33333 - 11904: 0xB2EB, - 33334 - 11904: 0xB2ED, - 33335 - 11904: 0xB2EC, - 33336 - 11904: 0xD753, - 33337 - 11904: 0xB2EE, - 33338 - 11904: 0xD755, - 33340 - 11904: 0xDB58, - 33341 - 11904: 0xDB59, - 33342 - 11904: 0x89C2, - 33343 - 11904: 0xDB5A, - 33344 - 11904: 0xDFA6, - 33346 - 11904: 0xDFA7, - 33348 - 11904: 0xDFA5, - 33349 - 11904: 0xDFA8, - 33351 - 11904: 0xB8A5, - 33353 - 11904: 0xDFA4, - 33355 - 11904: 0xBB53, - 33358 - 11904: 0xE74A, - 33359 - 11904: 0xE746, - 33360 - 11904: 0xE749, - 33361 - 11904: 0xE74B, - 33362 - 11904: 0xE748, - 33363 - 11904: 0xE747, - 33364 - 11904: 0x99AC, - 33365 - 11904: 0xEAF5, - 33366 - 11904: 0xEAF6, - 33367 - 11904: 0xEAF7, - 33368 - 11904: 0xBFB4, - 33369 - 11904: 0xBFB5, - 33370 - 11904: 0xEDF1, - 33371 - 11904: 0xEDF0, - 33372 - 11904: 0xEDF2, - 33374 - 11904: 0xF0A3, - 33375 - 11904: 0xF0A2, - 33377 - 11904: 0xF2C4, - 33378 - 11904: 0x956B, - 33379 - 11904: 0xF2C5, - 33380 - 11904: 0xF2C3, - 33381 - 11904: 0x956C, - 33382 - 11904: 0xC4A5, - 33384 - 11904: 0xF4B6, - 33385 - 11904: 0xF4B7, - 33387 - 11904: 0xF746, - 33388 - 11904: 0xF7EF, - 33389 - 11904: 0xF8BB, - 33390 - 11904: 0xA6E1, - 33391 - 11904: 0xA87D, - 33393 - 11904: 0xC17D, - 33394 - 11904: 0xA6E2, - 33396 - 11904: 0xD758, - 33397 - 11904: 0xDB5B, - 33398 - 11904: 0x99AF, - 33399 - 11904: 0xC641, - 33400 - 11904: 0xCA4A, - 33401 - 11904: 0x994A, - 33402 - 11904: 0x8976, - 33403 - 11904: 0x8F48, - 33404 - 11904: 0xCA4B, - 33405 - 11904: 0xCA4D, - 33406 - 11904: 0xA6E3, - 33407 - 11904: 0xCA4E, - 33408 - 11904: 0xCA4C, - 33411 - 11904: 0xCBA2, - 33412 - 11904: 0xCBA3, - 33413 - 11904: 0xCB7B, - 33415 - 11904: 0xFBEE, - 33418 - 11904: 0xCBA1, - 33419 - 11904: 0xA8A1, - 33421 - 11904: 0xA8A2, - 33422 - 11904: 0xCB7C, - 33423 - 11904: 0xCB7A, - 33424 - 11904: 0xCB79, - 33425 - 11904: 0xCB7D, - 33426 - 11904: 0xA87E, - 33427 - 11904: 0xCB7E, - 33428 - 11904: 0xD06A, - 33432 - 11904: 0xCDB6, - 33433 - 11904: 0xAADC, - 33434 - 11904: 0xCDB5, - 33435 - 11904: 0xCDB7, - 33437 - 11904: 0xAADB, - 33438 - 11904: 0xCDBC, - 33439 - 11904: 0xAADF, - 33440 - 11904: 0xCDB2, - 33441 - 11904: 0xCDC0, - 33442 - 11904: 0xCDC6, - 33443 - 11904: 0xAAE6, - 33444 - 11904: 0xCDC3, - 33445 - 11904: 0xAAE3, - 33446 - 11904: 0x99AE, - 33447 - 11904: 0xCDB9, - 33448 - 11904: 0xCDBF, - 33449 - 11904: 0xCDC1, - 33450 - 11904: 0x8EFB, - 33451 - 11904: 0xCDB4, - 33452 - 11904: 0xAAE2, - 33453 - 11904: 0xAADD, - 33454 - 11904: 0xCDBA, - 33455 - 11904: 0xAAE4, - 33456 - 11904: 0xAAE7, - 33457 - 11904: 0xAAE1, - 33459 - 11904: 0xAADA, - 33460 - 11904: 0xCDBE, - 33461 - 11904: 0xCDB8, - 33462 - 11904: 0xCDC5, - 33463 - 11904: 0xAAE9, - 33464 - 11904: 0xAAE5, - 33465 - 11904: 0xAAE0, - 33466 - 11904: 0xCDBD, - 33467 - 11904: 0xAFEC, - 33468 - 11904: 0xCDBB, - 33469 - 11904: 0xAADE, - 33470 - 11904: 0xAAE8, - 33471 - 11904: 0x8CD0, - 33472 - 11904: 0xCDB3, - 33474 - 11904: 0xCDC2, - 33475 - 11904: 0xCDC4, - 33476 - 11904: 0x8B52, - 33482 - 11904: 0x99B0, - 33487 - 11904: 0x8977, - 33488 - 11904: 0x8F41, - 33489 - 11904: 0xAD62, - 33490 - 11904: 0xAD5C, - 33491 - 11904: 0xAD64, - 33492 - 11904: 0xAD61, - 33493 - 11904: 0xD071, - 33494 - 11904: 0xD074, - 33495 - 11904: 0xAD5D, - 33496 - 11904: 0x99B1, - 33497 - 11904: 0xD06B, - 33499 - 11904: 0xAD56, - 33500 - 11904: 0xAD60, - 33502 - 11904: 0xAD63, - 33503 - 11904: 0xAD65, - 33504 - 11904: 0xD0A2, - 33505 - 11904: 0xD077, - 33506 - 11904: 0x8F49, - 33507 - 11904: 0xAD55, - 33508 - 11904: 0xD0A1, - 33509 - 11904: 0xAD59, - 33510 - 11904: 0xAD57, - 33511 - 11904: 0xAD52, - 33512 - 11904: 0xD06F, - 33514 - 11904: 0xD07E, - 33515 - 11904: 0xD073, - 33516 - 11904: 0xD076, - 33517 - 11904: 0xD0A5, - 33518 - 11904: 0xFA4D, - 33519 - 11904: 0xAD66, - 33520 - 11904: 0xD07D, - 33521 - 11904: 0xAD5E, - 33522 - 11904: 0xD078, - 33523 - 11904: 0xD0A4, - 33524 - 11904: 0xD075, - 33525 - 11904: 0xD079, - 33526 - 11904: 0xD07C, - 33527 - 11904: 0x9DE4, - 33528 - 11904: 0x8CB5, - 33529 - 11904: 0xD06D, - 33530 - 11904: 0xD0A3, - 33531 - 11904: 0xD07B, - 33532 - 11904: 0xFBE9, - 33533 - 11904: 0x9B54, - 33534 - 11904: 0xD06C, - 33535 - 11904: 0x99B2, - 33536 - 11904: 0xD070, - 33537 - 11904: 0xAD5F, - 33538 - 11904: 0xAD5A, - 33539 - 11904: 0xAD53, - 33540 - 11904: 0xAD58, - 33541 - 11904: 0xAD54, - 33542 - 11904: 0xAD67, - 33543 - 11904: 0xD06E, - 33544 - 11904: 0xD3A5, - 33545 - 11904: 0xAD5B, - 33547 - 11904: 0x9E68, - 33548 - 11904: 0xD07A, - 33549 - 11904: 0xCE41, - 33558 - 11904: 0xD3A8, - 33559 - 11904: 0xAFFA, - 33560 - 11904: 0x8F4A, - 33561 - 11904: 0xD376, - 33562 - 11904: 0x8F42, - 33563 - 11904: 0xD3A3, - 33564 - 11904: 0xD37D, - 33565 - 11904: 0x8F51, - 33566 - 11904: 0xD3B2, - 33568 - 11904: 0xD3AA, - 33570 - 11904: 0xD37E, - 33572 - 11904: 0xD3A9, - 33573 - 11904: 0xD378, - 33574 - 11904: 0xD37C, - 33575 - 11904: 0xD3B5, - 33576 - 11904: 0xAFFD, - 33577 - 11904: 0xD3AD, - 33578 - 11904: 0xD3A4, - 33579 - 11904: 0xAFED, - 33580 - 11904: 0xD3B3, - 33581 - 11904: 0xD374, - 33583 - 11904: 0xD3AC, - 33585 - 11904: 0xAFFC, - 33586 - 11904: 0xAFF7, - 33587 - 11904: 0xD373, - 33588 - 11904: 0xAFF5, - 33589 - 11904: 0xAFF4, - 33590 - 11904: 0xAFF9, - 33591 - 11904: 0xD3AB, - 33592 - 11904: 0xAFF1, - 33593 - 11904: 0xAFF8, - 33594 - 11904: 0xD072, - 33595 - 11904: 0xDB5C, - 33596 - 11904: 0xD3A6, - 33597 - 11904: 0x9846, - 33599 - 11904: 0xD37A, - 33600 - 11904: 0xAFFB, - 33601 - 11904: 0xD37B, - 33602 - 11904: 0xD3A1, - 33603 - 11904: 0xAFFE, - 33604 - 11904: 0xD375, - 33605 - 11904: 0xD3AF, - 33607 - 11904: 0xD3AE, - 33608 - 11904: 0xD3B6, - 33609 - 11904: 0xAFF3, - 33610 - 11904: 0xAFF0, - 33611 - 11904: 0xD3B4, - 33612 - 11904: 0xD3B0, - 33613 - 11904: 0xD3A7, - 33614 - 11904: 0xD3A2, - 33615 - 11904: 0xAFF6, - 33616 - 11904: 0xAFF2, - 33617 - 11904: 0xD377, - 33618 - 11904: 0xAFEE, - 33619 - 11904: 0xD3B1, - 33620 - 11904: 0xAFEF, - 33622 - 11904: 0xD379, - 33623 - 11904: 0x99B4, - 33634 - 11904: 0x8EF5, - 33635 - 11904: 0xFD55, - 33638 - 11904: 0x9CCD, - 33647 - 11904: 0x8978, - 33651 - 11904: 0xD75E, - 33652 - 11904: 0xD760, - 33653 - 11904: 0xD765, - 33654 - 11904: 0xD779, - 33655 - 11904: 0xB2FC, - 33656 - 11904: 0xB2F2, - 33658 - 11904: 0xD75D, - 33659 - 11904: 0xB2FD, - 33660 - 11904: 0xB2FE, - 33661 - 11904: 0xD768, - 33662 - 11904: 0xD76F, - 33663 - 11904: 0xD775, - 33665 - 11904: 0xD762, - 33667 - 11904: 0xD769, - 33669 - 11904: 0x8F53, - 33670 - 11904: 0xB340, - 33671 - 11904: 0xD777, - 33672 - 11904: 0xD772, - 33673 - 11904: 0xB2FA, - 33674 - 11904: 0xB2F8, - 33675 - 11904: 0xD76E, - 33676 - 11904: 0xD76A, - 33677 - 11904: 0xD75C, - 33678 - 11904: 0xB2EF, - 33679 - 11904: 0xD761, - 33680 - 11904: 0xD759, - 33681 - 11904: 0x8F6F, - 33682 - 11904: 0xB2F7, - 33683 - 11904: 0xB2F9, - 33684 - 11904: 0xD766, - 33685 - 11904: 0xD763, - 33686 - 11904: 0xB2F4, - 33687 - 11904: 0xD773, - 33688 - 11904: 0xB2F1, - 33689 - 11904: 0xD764, - 33690 - 11904: 0xD77A, - 33691 - 11904: 0xD76C, - 33692 - 11904: 0x8E63, - 33693 - 11904: 0xD76B, - 33694 - 11904: 0xB2F0, - 33696 - 11904: 0xB2FB, - 33698 - 11904: 0xB2F3, - 33699 - 11904: 0xD75A, - 33700 - 11904: 0xD75F, - 33701 - 11904: 0xD770, - 33702 - 11904: 0xD776, - 33703 - 11904: 0xB341, - 33704 - 11904: 0xD75B, - 33705 - 11904: 0xD767, - 33706 - 11904: 0xD76D, - 33707 - 11904: 0xB2F6, - 33708 - 11904: 0x8F56, - 33710 - 11904: 0xD778, - 33711 - 11904: 0xD771, - 33712 - 11904: 0xD774, - 33721 - 11904: 0xFE76, - 33725 - 11904: 0xB2F5, - 33726 - 11904: 0x9FC6, - 33727 - 11904: 0xDB6C, - 33728 - 11904: 0xDB60, - 33729 - 11904: 0xB5D7, - 33730 - 11904: 0xDB7D, - 33731 - 11904: 0xDBA7, - 33732 - 11904: 0xDBAA, - 33733 - 11904: 0xB5D5, - 33734 - 11904: 0xDB68, - 33735 - 11904: 0xDBA3, - 33736 - 11904: 0xDB69, - 33737 - 11904: 0xDB77, - 33738 - 11904: 0xB5E2, - 33739 - 11904: 0xDB73, - 33740 - 11904: 0xB5DF, - 33741 - 11904: 0xFAAC, - 33742 - 11904: 0xDB74, - 33743 - 11904: 0xDB5D, - 33745 - 11904: 0xDBA4, - 33747 - 11904: 0x8F58, - 33748 - 11904: 0xB5E8, - 33749 - 11904: 0xDBA1, - 33750 - 11904: 0xDB75, - 33751 - 11904: 0xDBAC, - 33752 - 11904: 0xDB70, - 33753 - 11904: 0xDFC8, - 33755 - 11904: 0xDBAF, - 33756 - 11904: 0xB5E6, - 33757 - 11904: 0xDB6E, - 33758 - 11904: 0xDB7A, - 33759 - 11904: 0xB5E9, - 33760 - 11904: 0xB5D4, - 33761 - 11904: 0xDB72, - 33762 - 11904: 0xDBAD, - 33763 - 11904: 0xDB6B, - 33764 - 11904: 0xDB64, - 33765 - 11904: 0xDB6F, - 33767 - 11904: 0xDB63, - 33768 - 11904: 0xDB61, - 33769 - 11904: 0xB5D0, - 33770 - 11904: 0xDBA5, - 33771 - 11904: 0xDB6A, - 33772 - 11904: 0xDBA8, - 33773 - 11904: 0x9848, - 33774 - 11904: 0xDBA9, - 33775 - 11904: 0xB5D8, - 33776 - 11904: 0xB5DD, - 33777 - 11904: 0xB5D9, - 33778 - 11904: 0xB5E1, - 33779 - 11904: 0xDB7E, - 33780 - 11904: 0xB5DA, - 33781 - 11904: 0xDB76, - 33782 - 11904: 0xDB66, - 33784 - 11904: 0xB5D2, - 33785 - 11904: 0xDB5E, - 33786 - 11904: 0xDBA2, - 33787 - 11904: 0xDBAB, - 33788 - 11904: 0xDB65, - 33789 - 11904: 0xB5E0, - 33790 - 11904: 0xDBB0, - 33791 - 11904: 0xDB71, - 33793 - 11904: 0xDB6D, - 33795 - 11904: 0xB5D1, - 33796 - 11904: 0xB5E5, - 33797 - 11904: 0x99B7, - 33798 - 11904: 0xDB7C, - 33799 - 11904: 0xB5E7, - 33801 - 11904: 0xDB78, - 33802 - 11904: 0xB5DC, - 33803 - 11904: 0xB5D6, - 33804 - 11904: 0xB5DE, - 33805 - 11904: 0xB5D3, - 33806 - 11904: 0xB5E4, - 33807 - 11904: 0xDB79, - 33808 - 11904: 0xDB67, - 33809 - 11904: 0xDB7B, - 33810 - 11904: 0xDB62, - 33811 - 11904: 0xDBA6, - 33812 - 11904: 0x9665, - 33814 - 11904: 0xFA6C, - 33816 - 11904: 0x9DE7, - 33819 - 11904: 0xDBAE, - 33820 - 11904: 0x9E62, - 33824 - 11904: 0x96CC, - 33825 - 11904: 0x8E67, - 33827 - 11904: 0xDB5F, - 33828 - 11904: 0xFC75, - 33830 - 11904: 0x987E, - 33833 - 11904: 0xDFC7, - 33835 - 11904: 0xDFDD, - 33836 - 11904: 0xB855, - 33837 - 11904: 0xDFCC, - 33838 - 11904: 0xFDB9, - 33839 - 11904: 0xDFCA, - 33840 - 11904: 0xDFB5, - 33841 - 11904: 0xB8A9, - 33842 - 11904: 0xDFC5, - 33843 - 11904: 0xDFD9, - 33844 - 11904: 0xDFC1, - 33845 - 11904: 0xB8B1, - 33846 - 11904: 0xDFD8, - 33847 - 11904: 0xDFBF, - 33848 - 11904: 0xB5E3, - 33849 - 11904: 0xDFCF, - 33850 - 11904: 0xDFC0, - 33851 - 11904: 0xDFD6, - 33852 - 11904: 0xB8B0, - 33853 - 11904: 0xB8A8, - 33854 - 11904: 0x97FC, - 33855 - 11904: 0xDFAA, - 33856 - 11904: 0xDFB2, - 33858 - 11904: 0xDFCB, - 33859 - 11904: 0xDFC3, - 33860 - 11904: 0xDFDC, - 33861 - 11904: 0xDFC6, - 33862 - 11904: 0xB8B6, - 33863 - 11904: 0xDFD7, - 33864 - 11904: 0x98F9, - 33865 - 11904: 0xB8AD, - 33866 - 11904: 0x8F66, - 33867 - 11904: 0xDFC9, - 33868 - 11904: 0xDFD1, - 33869 - 11904: 0xDFB6, - 33870 - 11904: 0xDFD0, - 33872 - 11904: 0xDFE1, - 33873 - 11904: 0xDFB1, - 33874 - 11904: 0xDFD2, - 33875 - 11904: 0x956E, - 33876 - 11904: 0xDFDF, - 33877 - 11904: 0x9245, - 33878 - 11904: 0xDFAB, - 33879 - 11904: 0xB5DB, - 33880 - 11904: 0x8F60, - 33881 - 11904: 0xDFB9, - 33882 - 11904: 0xDFB8, - 33883 - 11904: 0xB8AF, - 33884 - 11904: 0x9ED1, - 33885 - 11904: 0xDFBC, - 33886 - 11904: 0xDFBE, - 33887 - 11904: 0xDFCD, - 33888 - 11904: 0xDFDE, - 33889 - 11904: 0xB8B2, - 33890 - 11904: 0xFECD, - 33891 - 11904: 0xB8B3, - 33892 - 11904: 0x99B9, - 33893 - 11904: 0xDFB0, - 33894 - 11904: 0xB8AB, - 33895 - 11904: 0xDFB4, - 33896 - 11904: 0xDFDA, - 33897 - 11904: 0xB8B4, - 33899 - 11904: 0xB8AC, - 33900 - 11904: 0xB8AE, - 33901 - 11904: 0xB8B5, - 33902 - 11904: 0xDFE0, - 33903 - 11904: 0xDFD3, - 33904 - 11904: 0xDFCE, - 33905 - 11904: 0x8F62, - 33906 - 11904: 0x974C, - 33907 - 11904: 0xDFBB, - 33908 - 11904: 0xDFBA, - 33909 - 11904: 0xB8AA, - 33910 - 11904: 0xDFAC, - 33911 - 11904: 0xB8A7, - 33912 - 11904: 0xDFC4, - 33913 - 11904: 0xDFAD, - 33914 - 11904: 0xDFC2, - 33917 - 11904: 0xDFB7, - 33918 - 11904: 0xDFDB, - 33919 - 11904: 0x91C7, - 33920 - 11904: 0x955F, - 33922 - 11904: 0xB8A6, - 33924 - 11904: 0x87AB, - 33926 - 11904: 0xDFB3, - 33928 - 11904: 0x99BB, - 33933 - 11904: 0xDFAF, - 33934 - 11904: 0xDFD5, - 33935 - 11904: 0xDFAE, - 33936 - 11904: 0xBB60, - 33937 - 11904: 0xE3D3, - 33938 - 11904: 0x8E6D, - 33939 - 11904: 0x8F71, - 33940 - 11904: 0xE3C2, - 33942 - 11904: 0x94CB, - 33943 - 11904: 0xE3AC, - 33944 - 11904: 0xE3CA, - 33945 - 11904: 0xBB58, - 33946 - 11904: 0xE3BB, - 33947 - 11904: 0xE3C5, - 33948 - 11904: 0xBB5B, - 33949 - 11904: 0xE3BE, - 33950 - 11904: 0xBB59, - 33951 - 11904: 0xE3AF, - 33952 - 11904: 0xE3CD, - 33953 - 11904: 0xE3AE, - 33954 - 11904: 0xE3C1, - 33955 - 11904: 0x95B1, - 33956 - 11904: 0xE3AD, - 33959 - 11904: 0xE3BF, - 33960 - 11904: 0xE3C8, - 33961 - 11904: 0xE3C6, - 33962 - 11904: 0xE3BA, - 33963 - 11904: 0xE3B5, - 33964 - 11904: 0xE3B3, - 33965 - 11904: 0x9AF2, - 33966 - 11904: 0xE3B4, - 33967 - 11904: 0xE3C7, - 33968 - 11904: 0xE3D2, - 33969 - 11904: 0xE3BC, - 33970 - 11904: 0xBB5A, - 33972 - 11904: 0xE3B7, - 33974 - 11904: 0xE3CB, - 33976 - 11904: 0xBB5D, - 33977 - 11904: 0xE3B6, - 33978 - 11904: 0xE3B0, - 33979 - 11904: 0xE3C0, - 33980 - 11904: 0xBB61, - 33981 - 11904: 0x96C3, - 33982 - 11904: 0x99BD, - 33983 - 11904: 0xBB55, - 33984 - 11904: 0xBB5E, - 33985 - 11904: 0xE3B8, - 33986 - 11904: 0xE3B2, - 33988 - 11904: 0xBB57, - 33989 - 11904: 0xDFD4, - 33990 - 11904: 0xBB56, - 33991 - 11904: 0xE3C3, - 33993 - 11904: 0xBB54, - 33994 - 11904: 0xBB63, - 33995 - 11904: 0xBB5C, - 33996 - 11904: 0xE3C4, - 33997 - 11904: 0xE3B9, - 33998 - 11904: 0xE3B1, - 33999 - 11904: 0xE3CC, - 34000 - 11904: 0xE3BD, - 34001 - 11904: 0xBB62, - 34002 - 11904: 0xE3D0, - 34003 - 11904: 0xBB5F, - 34004 - 11904: 0xE3CF, - 34006 - 11904: 0xE3C9, - 34007 - 11904: 0xE3CE, - 34010 - 11904: 0xA0CF, - 34011 - 11904: 0xE3D1, - 34014 - 11904: 0x8F6D, - 34017 - 11904: 0x99BE, - 34018 - 11904: 0x8EF4, - 34020 - 11904: 0x8F72, - 34021 - 11904: 0x95E4, - 34023 - 11904: 0xE773, - 34024 - 11904: 0xE774, - 34025 - 11904: 0xE767, - 34026 - 11904: 0xE766, - 34027 - 11904: 0xE762, - 34028 - 11904: 0xBDB4, - 34030 - 11904: 0xBDAC, - 34031 - 11904: 0xE776, - 34032 - 11904: 0xE775, - 34033 - 11904: 0xDFA9, - 34034 - 11904: 0xE75F, - 34035 - 11904: 0xE763, - 34036 - 11904: 0xE75D, - 34038 - 11904: 0xE770, - 34039 - 11904: 0xE761, - 34040 - 11904: 0x99BF, - 34041 - 11904: 0xE777, - 34042 - 11904: 0xE75A, - 34043 - 11904: 0xE758, - 34044 - 11904: 0xE764, - 34045 - 11904: 0xE76E, - 34046 - 11904: 0xE769, - 34047 - 11904: 0xBDB6, - 34048 - 11904: 0xE74F, - 34050 - 11904: 0xE76D, - 34051 - 11904: 0x9244, - 34052 - 11904: 0x87D7, - 34053 - 11904: 0xFBA5, - 34054 - 11904: 0xBDB7, - 34055 - 11904: 0xDFBD, - 34056 - 11904: 0xE75B, - 34057 - 11904: 0xE752, - 34058 - 11904: 0xE755, - 34059 - 11904: 0xE77B, - 34060 - 11904: 0xE75C, - 34061 - 11904: 0xE753, - 34062 - 11904: 0xE751, - 34063 - 11904: 0xE74E, - 34064 - 11904: 0x99C0, - 34065 - 11904: 0xBDB0, - 34066 - 11904: 0xE765, - 34067 - 11904: 0xBDAF, - 34068 - 11904: 0xBDB3, - 34069 - 11904: 0xE760, - 34070 - 11904: 0xE768, - 34071 - 11904: 0xBDA9, - 34072 - 11904: 0xE778, - 34073 - 11904: 0xE77C, - 34074 - 11904: 0xBDAB, - 34076 - 11904: 0xE757, - 34077 - 11904: 0xE76B, - 34078 - 11904: 0xE76F, - 34079 - 11904: 0xE754, - 34080 - 11904: 0xE779, - 34081 - 11904: 0xBDB2, - 34083 - 11904: 0xBDB1, - 34084 - 11904: 0xE74C, - 34085 - 11904: 0xBDB5, - 34086 - 11904: 0xE772, - 34087 - 11904: 0xE756, - 34088 - 11904: 0xE76A, - 34089 - 11904: 0xE750, - 34090 - 11904: 0xE75E, - 34091 - 11904: 0xE759, - 34092 - 11904: 0xBDAD, - 34093 - 11904: 0xBDAE, - 34094 - 11904: 0xE76C, - 34095 - 11904: 0xE77D, - 34096 - 11904: 0xE77A, - 34097 - 11904: 0xE771, - 34099 - 11904: 0xFDB4, - 34100 - 11904: 0x8F77, - 34104 - 11904: 0x99C1, - 34107 - 11904: 0xE74D, - 34109 - 11904: 0xBDAA, - 34110 - 11904: 0xEB49, - 34112 - 11904: 0xEB40, - 34113 - 11904: 0xEB43, - 34114 - 11904: 0xFAB9, - 34115 - 11904: 0xBFBB, - 34116 - 11904: 0xEB45, - 34117 - 11904: 0xEAF9, - 34118 - 11904: 0xEB41, - 34119 - 11904: 0xEB47, - 34120 - 11904: 0xBFB8, - 34121 - 11904: 0xBFBC, - 34122 - 11904: 0xBFB6, - 34123 - 11904: 0x8F40, - 34124 - 11904: 0xFA44, - 34125 - 11904: 0xEAFB, - 34126 - 11904: 0xEB4C, - 34129 - 11904: 0xEB46, - 34130 - 11904: 0x99C2, - 34131 - 11904: 0xEAFC, - 34132 - 11904: 0xEB55, - 34133 - 11904: 0xEB4F, - 34134 - 11904: 0xEAF8, - 34135 - 11904: 0xEE46, - 34136 - 11904: 0xEAFE, - 34137 - 11904: 0xBFB7, - 34138 - 11904: 0x8F5C, - 34139 - 11904: 0xEB4A, - 34141 - 11904: 0xEB54, - 34142 - 11904: 0xBFBF, - 34143 - 11904: 0x8CBD, - 34144 - 11904: 0xEB51, - 34145 - 11904: 0xEAFD, - 34146 - 11904: 0xEB44, - 34147 - 11904: 0xEB48, - 34148 - 11904: 0xEB42, - 34149 - 11904: 0xEB56, - 34150 - 11904: 0xEB53, - 34151 - 11904: 0xEB50, - 34152 - 11904: 0xBFB9, - 34153 - 11904: 0xBFBA, - 34154 - 11904: 0xBFBE, - 34155 - 11904: 0xEAFA, - 34156 - 11904: 0xEB57, - 34157 - 11904: 0xBFBD, - 34158 - 11904: 0xEB4D, - 34159 - 11904: 0x99C4, - 34160 - 11904: 0x99C5, - 34161 - 11904: 0xEB4B, - 34163 - 11904: 0x8F7B, - 34165 - 11904: 0xEB4E, - 34166 - 11904: 0xEE53, - 34167 - 11904: 0xEE40, - 34168 - 11904: 0xEE45, - 34169 - 11904: 0xEE52, - 34170 - 11904: 0xEE44, - 34171 - 11904: 0xEDFB, - 34172 - 11904: 0xEE41, - 34174 - 11904: 0xC1A2, - 34176 - 11904: 0xEDF4, - 34177 - 11904: 0xEE4D, - 34178 - 11904: 0xEE4F, - 34179 - 11904: 0xEDF3, - 34180 - 11904: 0xC1A1, - 34181 - 11904: 0xEE51, - 34182 - 11904: 0xEE49, - 34183 - 11904: 0xC1A8, - 34184 - 11904: 0xEE50, - 34185 - 11904: 0xEE42, - 34186 - 11904: 0xC1AA, - 34187 - 11904: 0xEDF9, - 34188 - 11904: 0xEB52, - 34189 - 11904: 0xEE4A, - 34190 - 11904: 0xEE47, - 34191 - 11904: 0xEDF5, - 34192 - 11904: 0xEE55, - 34193 - 11904: 0xC1A4, - 34195 - 11904: 0x8776, - 34196 - 11904: 0xC1A5, - 34197 - 11904: 0xEDF7, - 34198 - 11904: 0xEE48, - 34199 - 11904: 0x8CB6, - 34200 - 11904: 0xEE54, - 34201 - 11904: 0xEE4B, - 34202 - 11904: 0xEDFD, - 34203 - 11904: 0xC1A7, - 34204 - 11904: 0xC1A3, - 34205 - 11904: 0xEE4C, - 34206 - 11904: 0xEDFE, - 34207 - 11904: 0xEE56, - 34208 - 11904: 0xEDF8, - 34209 - 11904: 0xEE43, - 34210 - 11904: 0xEE4E, - 34211 - 11904: 0xEDFA, - 34212 - 11904: 0xEDFC, - 34214 - 11904: 0xC2CB, - 34215 - 11904: 0xEDF6, - 34216 - 11904: 0xC1A9, - 34217 - 11904: 0xC2C4, - 34218 - 11904: 0xC17E, - 34223 - 11904: 0xC1A6, - 34224 - 11904: 0xC2C8, - 34225 - 11904: 0xF0B3, - 34227 - 11904: 0xF0A9, - 34228 - 11904: 0xF0A4, - 34229 - 11904: 0xF0AA, - 34230 - 11904: 0xF0B4, - 34231 - 11904: 0xF0B8, - 34232 - 11904: 0xF0B7, - 34233 - 11904: 0xC2CA, - 34234 - 11904: 0xC2C9, - 34237 - 11904: 0xF0AB, - 34238 - 11904: 0xF0B9, - 34239 - 11904: 0xF0AE, - 34240 - 11904: 0xF0A6, - 34241 - 11904: 0x8FA3, - 34242 - 11904: 0xF0A8, - 34243 - 11904: 0xF0A7, - 34244 - 11904: 0xF0AD, - 34245 - 11904: 0xF0B2, - 34246 - 11904: 0xF0A5, - 34247 - 11904: 0xF0AC, - 34248 - 11904: 0xF0B1, - 34249 - 11904: 0xC2C7, - 34251 - 11904: 0xF0AF, - 34253 - 11904: 0xC2C5, - 34254 - 11904: 0xF0B0, - 34255 - 11904: 0xC2C3, - 34256 - 11904: 0xC2C6, - 34257 - 11904: 0xF2D5, - 34258 - 11904: 0xF0B5, - 34261 - 11904: 0xC3C2, - 34262 - 11904: 0x8CCE, - 34263 - 11904: 0xF2CD, - 34264 - 11904: 0xF2D1, - 34265 - 11904: 0xF2C9, - 34266 - 11904: 0xF2CC, - 34268 - 11904: 0xF2D4, - 34269 - 11904: 0xC3C0, - 34270 - 11904: 0xF2D9, - 34271 - 11904: 0xF2D2, - 34272 - 11904: 0x99C6, - 34273 - 11904: 0xF2CA, - 34274 - 11904: 0xF2DA, - 34275 - 11904: 0xF2D3, - 34276 - 11904: 0xC3C3, - 34277 - 11904: 0xC3C4, - 34278 - 11904: 0xF2D7, - 34280 - 11904: 0xF2CB, - 34281 - 11904: 0xC3BF, - 34282 - 11904: 0xC3C1, - 34283 - 11904: 0xF2C6, - 34284 - 11904: 0xF2CE, - 34285 - 11904: 0xF2C8, - 34286 - 11904: 0x96CD, - 34287 - 11904: 0xF2D8, - 34288 - 11904: 0xF2D6, - 34289 - 11904: 0xF2C7, - 34290 - 11904: 0xF2CF, - 34294 - 11904: 0xF4BE, - 34295 - 11904: 0xC3C5, - 34296 - 11904: 0xF2D0, - 34297 - 11904: 0xC4A7, - 34298 - 11904: 0xC4A9, - 34299 - 11904: 0xC4A6, - 34300 - 11904: 0x96C7, - 34301 - 11904: 0xF4C3, - 34302 - 11904: 0xF4BB, - 34303 - 11904: 0xF4B9, - 34304 - 11904: 0xF4BD, - 34305 - 11904: 0xF4BA, - 34306 - 11904: 0x8FA5, - 34308 - 11904: 0xF4BF, - 34309 - 11904: 0xF4C1, - 34310 - 11904: 0xC4AA, - 34311 - 11904: 0xC4AC, - 34313 - 11904: 0xF4C0, - 34314 - 11904: 0xC4AD, - 34315 - 11904: 0xC4AB, - 34316 - 11904: 0xF4C2, - 34317 - 11904: 0xFABB, - 34319 - 11904: 0x8C61, - 34320 - 11904: 0x9570, - 34321 - 11904: 0xC4A8, - 34323 - 11904: 0x87AF, - 34324 - 11904: 0x9368, - 34326 - 11904: 0x8F7E, - 34327 - 11904: 0xC4F4, - 34328 - 11904: 0xF5F1, - 34329 - 11904: 0xF5F7, - 34330 - 11904: 0xC4F6, - 34331 - 11904: 0xF4BC, - 34332 - 11904: 0xF5F6, - 34334 - 11904: 0xF5FD, - 34335 - 11904: 0xF5F4, - 34336 - 11904: 0xF5FB, - 34337 - 11904: 0xF5FA, - 34338 - 11904: 0xF4B8, - 34339 - 11904: 0xF5F5, - 34340 - 11904: 0xF0B6, - 34341 - 11904: 0xF5FE, - 34342 - 11904: 0xF5F3, - 34343 - 11904: 0xF5F8, - 34344 - 11904: 0x8FAA, - 34345 - 11904: 0xF5FC, - 34346 - 11904: 0xF5F2, - 34348 - 11904: 0xF74A, - 34349 - 11904: 0xC4F5, - 34350 - 11904: 0xF5F9, - 34351 - 11904: 0xA050, - 34353 - 11904: 0xF7F4, - 34354 - 11904: 0xF74B, - 34355 - 11904: 0xF749, - 34356 - 11904: 0xF747, - 34357 - 11904: 0xF748, - 34358 - 11904: 0xF74C, - 34360 - 11904: 0xC5D9, - 34361 - 11904: 0xF7F2, - 34362 - 11904: 0xF7F0, - 34363 - 11904: 0xF7F5, - 34364 - 11904: 0xF7F3, - 34366 - 11904: 0xF7F6, - 34367 - 11904: 0xC5DA, - 34368 - 11904: 0xF7F1, - 34370 - 11904: 0x90D3, - 34371 - 11904: 0xF8BC, - 34373 - 11904: 0x9556, - 34374 - 11904: 0xF945, - 34375 - 11904: 0xF946, - 34376 - 11904: 0xF947, - 34379 - 11904: 0xF9C7, - 34380 - 11904: 0xF9BD, - 34381 - 11904: 0xCA4F, - 34382 - 11904: 0xAAEA, - 34384 - 11904: 0xAD68, - 34386 - 11904: 0xD3B8, - 34387 - 11904: 0xD3B7, - 34388 - 11904: 0xB040, - 34389 - 11904: 0xB342, - 34390 - 11904: 0xD77C, - 34393 - 11904: 0xD77B, - 34395 - 11904: 0xB5EA, - 34396 - 11904: 0xB8B8, - 34398 - 11904: 0xB8B7, - 34399 - 11904: 0xB8B9, - 34401 - 11904: 0xE3D4, - 34402 - 11904: 0xE77E, - 34403 - 11904: 0xEB58, - 34404 - 11904: 0xEB5A, - 34405 - 11904: 0xEB59, - 34407 - 11904: 0xC1AB, - 34408 - 11904: 0xEE57, - 34409 - 11904: 0xF0BA, - 34410 - 11904: 0xF9A5, - 34411 - 11904: 0xA6E4, - 34412 - 11904: 0x8FB8, - 34413 - 11904: 0xCDC9, - 34414 - 11904: 0xCDCA, - 34415 - 11904: 0xCDC8, - 34416 - 11904: 0xCDC7, - 34417 - 11904: 0xAAEB, - 34418 - 11904: 0x99C8, - 34419 - 11904: 0xD0A9, - 34420 - 11904: 0xD0A7, - 34423 - 11904: 0xD0A6, - 34425 - 11904: 0xAD69, - 34426 - 11904: 0xAD6B, - 34427 - 11904: 0xAD6A, - 34428 - 11904: 0xD0A8, - 34430 - 11904: 0x8FAF, - 34437 - 11904: 0xD3C4, - 34438 - 11904: 0xD3C1, - 34439 - 11904: 0xD3BF, - 34442 - 11904: 0xB041, - 34443 - 11904: 0xD3C2, - 34444 - 11904: 0xB046, - 34445 - 11904: 0xD3BC, - 34446 - 11904: 0xD3CB, - 34448 - 11904: 0xD3CD, - 34449 - 11904: 0xD3BD, - 34450 - 11904: 0x99C9, - 34451 - 11904: 0xB043, - 34452 - 11904: 0xD3CE, - 34453 - 11904: 0xD3C9, - 34454 - 11904: 0xD3BB, - 34455 - 11904: 0xD3C0, - 34456 - 11904: 0xD3CA, - 34457 - 11904: 0xD3C6, - 34458 - 11904: 0xD3C3, - 34460 - 11904: 0xB048, - 34461 - 11904: 0xD3CC, - 34462 - 11904: 0xD3BE, - 34464 - 11904: 0x9579, - 34465 - 11904: 0xD3C7, - 34466 - 11904: 0xD3B9, - 34467 - 11904: 0xB047, - 34468 - 11904: 0xB044, - 34469 - 11904: 0xD3C5, - 34471 - 11904: 0xD3C8, - 34472 - 11904: 0xD3BA, - 34473 - 11904: 0xB045, - 34474 - 11904: 0xB042, - 34477 - 11904: 0x9F49, - 34479 - 11904: 0xB34C, - 34480 - 11904: 0xD7A5, - 34481 - 11904: 0xB34B, - 34482 - 11904: 0x99CA, - 34483 - 11904: 0xD7A8, - 34484 - 11904: 0xD7AB, - 34485 - 11904: 0xB348, - 34486 - 11904: 0xB346, - 34487 - 11904: 0xD77E, - 34488 - 11904: 0xD7A9, - 34489 - 11904: 0xD7A7, - 34490 - 11904: 0xD7A4, - 34491 - 11904: 0xD7AC, - 34492 - 11904: 0xD7AD, - 34493 - 11904: 0xD7AF, - 34494 - 11904: 0xD7B0, - 34495 - 11904: 0xD77D, - 34496 - 11904: 0xB345, - 34497 - 11904: 0xD7A2, - 34498 - 11904: 0xD7A1, - 34499 - 11904: 0xD7AE, - 34500 - 11904: 0xB347, - 34501 - 11904: 0xD7A3, - 34502 - 11904: 0xB349, - 34503 - 11904: 0xB344, - 34504 - 11904: 0xD7A6, - 34505 - 11904: 0xB34D, - 34507 - 11904: 0xB34A, - 34508 - 11904: 0xD7AA, - 34512 - 11904: 0xB5F1, - 34513 - 11904: 0xDBBF, - 34515 - 11904: 0xDBB4, - 34516 - 11904: 0xB5EE, - 34518 - 11904: 0xDFE7, - 34519 - 11904: 0xDBBD, - 34520 - 11904: 0xDBB1, - 34521 - 11904: 0xB5EC, - 34522 - 11904: 0xDBB6, - 34523 - 11904: 0xB5EF, - 34524 - 11904: 0xDBBA, - 34525 - 11904: 0xDBB8, - 34526 - 11904: 0xB5F2, - 34527 - 11904: 0xB5EB, - 34530 - 11904: 0xDBB2, - 34531 - 11904: 0xDBB5, - 34532 - 11904: 0xB5F0, - 34534 - 11904: 0xDBB3, - 34536 - 11904: 0xDBBE, - 34537 - 11904: 0xDBBC, - 34538 - 11904: 0xDBB7, - 34539 - 11904: 0xDBB9, - 34540 - 11904: 0xDBBB, - 34541 - 11904: 0xB5ED, - 34543 - 11904: 0x99CB, - 34549 - 11904: 0xDFE8, - 34550 - 11904: 0xDFEE, - 34551 - 11904: 0xDFE4, - 34552 - 11904: 0xDFEA, - 34553 - 11904: 0xB8BA, - 34554 - 11904: 0xDFE6, - 34555 - 11904: 0xB8C0, - 34558 - 11904: 0xB8BF, - 34560 - 11904: 0xB8BE, - 34561 - 11904: 0xDFED, - 34562 - 11904: 0xB8C1, - 34563 - 11904: 0xB8C2, - 34564 - 11904: 0xDFE3, - 34565 - 11904: 0xDFF0, - 34566 - 11904: 0xB8C3, - 34567 - 11904: 0xB8BD, - 34568 - 11904: 0xB8BC, - 34569 - 11904: 0xDFEC, - 34570 - 11904: 0xB8C4, - 34571 - 11904: 0xDFE2, - 34572 - 11904: 0xDFE5, - 34573 - 11904: 0xDFEF, - 34574 - 11904: 0xDFEB, - 34577 - 11904: 0xE3F4, - 34578 - 11904: 0xE3E9, - 34579 - 11904: 0xB8BB, - 34584 - 11904: 0xBB6A, - 34585 - 11904: 0xE3DD, - 34586 - 11904: 0xE3F2, - 34587 - 11904: 0xE3DE, - 34588 - 11904: 0xBB65, - 34590 - 11904: 0xE3DB, - 34592 - 11904: 0xE3E4, - 34593 - 11904: 0xE3DC, - 34594 - 11904: 0xBB67, - 34595 - 11904: 0xE3D6, - 34596 - 11904: 0xE3F1, - 34597 - 11904: 0xBB68, - 34598 - 11904: 0xE3EE, - 34599 - 11904: 0xE3EF, - 34600 - 11904: 0xE3D7, - 34601 - 11904: 0xBB6D, - 34602 - 11904: 0xE3E6, - 34604 - 11904: 0xE3E0, - 34605 - 11904: 0xE3E7, - 34606 - 11904: 0xE3DA, - 34608 - 11904: 0xE3F3, - 34609 - 11904: 0xE3EB, - 34610 - 11904: 0xE3E5, - 34611 - 11904: 0xE3D5, - 34612 - 11904: 0xBB69, - 34613 - 11904: 0xE3EC, - 34615 - 11904: 0xBB6C, - 34616 - 11904: 0xE3F0, - 34618 - 11904: 0xE3EA, - 34619 - 11904: 0xBB66, - 34620 - 11904: 0xE3E8, - 34622 - 11904: 0xE3E2, - 34623 - 11904: 0xBB64, - 34624 - 11904: 0xE3D9, - 34625 - 11904: 0xE3E1, - 34626 - 11904: 0xE3ED, - 34627 - 11904: 0xE3DF, - 34630 - 11904: 0xE3E3, - 34636 - 11904: 0xBDC1, - 34637 - 11904: 0xDFE9, - 34638 - 11904: 0xE7B2, - 34639 - 11904: 0xE7BB, - 34640 - 11904: 0xE7B1, - 34641 - 11904: 0xE7AD, - 34642 - 11904: 0xE7AA, - 34643 - 11904: 0xBDC2, - 34644 - 11904: 0xE7A8, - 34645 - 11904: 0xBB6B, - 34646 - 11904: 0xE7A1, - 34647 - 11904: 0xBDC0, - 34648 - 11904: 0xE7A7, - 34649 - 11904: 0xBDBF, - 34650 - 11904: 0xE7AC, - 34651 - 11904: 0xE7A9, - 34652 - 11904: 0xE7B9, - 34653 - 11904: 0xE7B4, - 34654 - 11904: 0xE7AE, - 34655 - 11904: 0xE7B3, - 34656 - 11904: 0xBDBB, - 34657 - 11904: 0xE7AB, - 34658 - 11904: 0xE7BE, - 34659 - 11904: 0xE7A2, - 34660 - 11904: 0xE7A3, - 34661 - 11904: 0xE7BA, - 34662 - 11904: 0xBDBC, - 34663 - 11904: 0xE7BF, - 34664 - 11904: 0xBDBE, - 34665 - 11904: 0xE7C0, - 34666 - 11904: 0xE7B0, - 34667 - 11904: 0xE3D8, - 34668 - 11904: 0xE7B6, - 34669 - 11904: 0xE7AF, - 34670 - 11904: 0xE7B8, - 34671 - 11904: 0xE7B5, - 34672 - 11904: 0x9DD5, - 34673 - 11904: 0x8FB0, - 34675 - 11904: 0xE7A6, - 34676 - 11904: 0xBDB9, - 34677 - 11904: 0xE7BD, - 34678 - 11904: 0xBDBA, - 34679 - 11904: 0xE7A4, - 34680 - 11904: 0xBDBD, - 34681 - 11904: 0xEB64, - 34682 - 11904: 0xE7B7, - 34683 - 11904: 0xE7BC, - 34685 - 11904: 0xFA7A, - 34689 - 11904: 0xEB61, - 34690 - 11904: 0xBDB8, - 34691 - 11904: 0xBFC0, - 34692 - 11904: 0xEB6B, - 34693 - 11904: 0xEB67, - 34694 - 11904: 0x9E5F, - 34695 - 11904: 0xEB65, - 34696 - 11904: 0xEB60, - 34697 - 11904: 0xEB6F, - 34699 - 11904: 0x99CD, - 34700 - 11904: 0xA0C9, - 34701 - 11904: 0xBFC4, - 34703 - 11904: 0xEB5C, - 34704 - 11904: 0xEB68, - 34705 - 11904: 0xEB69, - 34706 - 11904: 0xEB5F, - 34707 - 11904: 0xEB5E, - 34708 - 11904: 0xEB6C, - 34710 - 11904: 0xEB62, - 34711 - 11904: 0xEB5D, - 34712 - 11904: 0xEB63, - 34714 - 11904: 0xEB6E, - 34715 - 11904: 0xEB5B, - 34716 - 11904: 0xEB6D, - 34717 - 11904: 0xEB6A, - 34718 - 11904: 0xBFC2, - 34719 - 11904: 0xBFC1, - 34722 - 11904: 0xBFC3, - 34723 - 11904: 0xEB66, - 34724 - 11904: 0xF0CB, - 34725 - 11904: 0x9ADB, - 34729 - 11904: 0xA0C6, - 34730 - 11904: 0xEE59, - 34731 - 11904: 0xC1B1, - 34732 - 11904: 0xEE5D, - 34733 - 11904: 0xEE5A, - 34734 - 11904: 0xEE61, - 34735 - 11904: 0xEE67, - 34736 - 11904: 0xEE5C, - 34737 - 11904: 0x8FB4, - 34738 - 11904: 0xEE70, - 34739 - 11904: 0xC1AE, - 34740 - 11904: 0xEE6A, - 34741 - 11904: 0xEE5F, - 34742 - 11904: 0xEE6B, - 34743 - 11904: 0xEE66, - 34744 - 11904: 0xEE6D, - 34745 - 11904: 0xEE5E, - 34746 - 11904: 0xC1B3, - 34747 - 11904: 0xC1B2, - 34748 - 11904: 0xEE60, - 34749 - 11904: 0xEE6E, - 34750 - 11904: 0xEE58, - 34751 - 11904: 0xEE6C, - 34752 - 11904: 0xC1AC, - 34753 - 11904: 0xA0D7, - 34754 - 11904: 0xEE64, - 34755 - 11904: 0xEE63, - 34756 - 11904: 0xEE68, - 34757 - 11904: 0xEE5B, - 34758 - 11904: 0xC1B0, - 34760 - 11904: 0xC1B4, - 34761 - 11904: 0xEE62, - 34762 - 11904: 0xEE69, - 34763 - 11904: 0xC1B5, - 34764 - 11904: 0xEE65, - 34766 - 11904: 0xA0C7, - 34769 - 11904: 0xC1AD, - 34770 - 11904: 0xC1AF, - 34771 - 11904: 0xF0C7, - 34772 - 11904: 0xF0C5, - 34774 - 11904: 0xA043, - 34775 - 11904: 0xF0CC, - 34776 - 11904: 0xF0C9, - 34777 - 11904: 0xF0CD, - 34778 - 11904: 0x8FB5, - 34779 - 11904: 0xF0BE, - 34780 - 11904: 0xF0C6, - 34781 - 11904: 0xF0D1, - 34782 - 11904: 0xEE6F, - 34783 - 11904: 0xF0C2, - 34784 - 11904: 0xC2CF, - 34785 - 11904: 0xE7A5, - 34786 - 11904: 0xF0BD, - 34787 - 11904: 0xF0CA, - 34788 - 11904: 0xF0C4, - 34789 - 11904: 0xF0C1, - 34790 - 11904: 0xF0BC, - 34791 - 11904: 0xF0BB, - 34792 - 11904: 0xF0D0, - 34794 - 11904: 0xF0C0, - 34795 - 11904: 0xF0BF, - 34796 - 11904: 0xC2CD, - 34797 - 11904: 0xF0C8, - 34798 - 11904: 0x8FB2, - 34799 - 11904: 0xC2CC, - 34802 - 11904: 0xC2CE, - 34803 - 11904: 0xF0C3, - 34804 - 11904: 0xF0CF, - 34805 - 11904: 0xA061, - 34806 - 11904: 0xF2DE, - 34807 - 11904: 0xF2DF, - 34809 - 11904: 0xC3C9, - 34810 - 11904: 0xF2DC, - 34811 - 11904: 0xC3C6, - 34812 - 11904: 0xF2E4, - 34814 - 11904: 0xC3CA, - 34815 - 11904: 0xF2E6, - 34816 - 11904: 0xF2DB, - 34817 - 11904: 0xF0CE, - 34818 - 11904: 0xF2E8, - 34819 - 11904: 0xF2DD, - 34820 - 11904: 0x9E5E, - 34821 - 11904: 0xC3C7, - 34822 - 11904: 0xF2E3, - 34824 - 11904: 0xF2E5, - 34825 - 11904: 0xF2E0, - 34826 - 11904: 0xF2E7, - 34827 - 11904: 0xF2E2, - 34828 - 11904: 0xF2E1, - 34829 - 11904: 0xC3C8, - 34831 - 11904: 0xA063, - 34832 - 11904: 0xF4C5, - 34833 - 11904: 0xF4C6, - 34835 - 11904: 0xF4C8, - 34836 - 11904: 0xC4AE, - 34837 - 11904: 0xC4AF, - 34838 - 11904: 0xF4C9, - 34839 - 11904: 0xF4C7, - 34840 - 11904: 0x9FE8, - 34841 - 11904: 0xF4C4, - 34843 - 11904: 0xF642, - 34844 - 11904: 0xF645, - 34845 - 11904: 0xF641, - 34847 - 11904: 0xC4FA, - 34848 - 11904: 0xF643, - 34849 - 11904: 0xC4F9, - 34850 - 11904: 0xC4F8, - 34851 - 11904: 0xC4F7, - 34852 - 11904: 0xF644, - 34853 - 11904: 0xF751, - 34854 - 11904: 0xF74F, - 34855 - 11904: 0x9CB2, - 34856 - 11904: 0xF74E, - 34857 - 11904: 0xF640, - 34858 - 11904: 0xF750, - 34859 - 11904: 0xF646, - 34860 - 11904: 0xF74D, - 34861 - 11904: 0x957C, - 34862 - 11904: 0xF7F9, - 34863 - 11904: 0xF7D7, - 34864 - 11904: 0xF7F7, - 34865 - 11904: 0xC5DB, - 34866 - 11904: 0xF7F8, - 34867 - 11904: 0xF7FA, - 34869 - 11904: 0xF8BF, - 34870 - 11904: 0xC5FA, - 34871 - 11904: 0xF8BE, - 34872 - 11904: 0xF8BD, - 34873 - 11904: 0xC5FB, - 34875 - 11904: 0xC65A, - 34876 - 11904: 0xF96E, - 34877 - 11904: 0xF9A7, - 34878 - 11904: 0xF9A6, - 34879 - 11904: 0xF9A8, - 34880 - 11904: 0xA6E5, - 34881 - 11904: 0xD0AA, - 34882 - 11904: 0x9FC7, - 34883 - 11904: 0xD3CF, - 34884 - 11904: 0xD3D0, - 34885 - 11904: 0x8FBB, - 34886 - 11904: 0x8FBC, - 34888 - 11904: 0xDBC0, - 34890 - 11904: 0xF647, - 34891 - 11904: 0xF8C0, - 34892 - 11904: 0xA6E6, - 34893 - 11904: 0xAD6C, - 34894 - 11904: 0xD0AB, - 34895 - 11904: 0x8FEC, - 34898 - 11904: 0xD7B1, - 34899 - 11904: 0xB34E, - 34901 - 11904: 0xDBC2, - 34902 - 11904: 0xDBC1, - 34903 - 11904: 0xB5F3, - 34905 - 11904: 0xB8C5, - 34906 - 11904: 0xE7C1, - 34907 - 11904: 0xBDC3, - 34909 - 11904: 0xBDC4, - 34910 - 11904: 0x8FC0, - 34912 - 11904: 0x936A, - 34913 - 11904: 0xBFC5, - 34914 - 11904: 0xC5FC, - 34915 - 11904: 0xA6E7, - 34916 - 11904: 0x8BE4, - 34917 - 11904: 0x9C7C, - 34919 - 11904: 0xD0AC, - 34920 - 11904: 0xAAED, - 34921 - 11904: 0xD0AE, - 34922 - 11904: 0xD0AD, - 34923 - 11904: 0xAD6D, - 34925 - 11904: 0xD3D1, - 34926 - 11904: 0x95A1, - 34927 - 11904: 0xD3D8, - 34928 - 11904: 0xB049, - 34929 - 11904: 0xD3D6, - 34930 - 11904: 0xD3D4, - 34932 - 11904: 0xD3DB, - 34933 - 11904: 0xD3D2, - 34934 - 11904: 0xD3D3, - 34935 - 11904: 0xB04A, - 34937 - 11904: 0xB04E, - 34940 - 11904: 0xD3DC, - 34941 - 11904: 0xB04D, - 34942 - 11904: 0xD3DA, - 34943 - 11904: 0xD3D7, - 34944 - 11904: 0xD3D5, - 34945 - 11904: 0xB04B, - 34946 - 11904: 0xB04C, - 34947 - 11904: 0xD3D9, - 34948 - 11904: 0xFEEC, - 34951 - 11904: 0x95A3, - 34952 - 11904: 0xB350, - 34953 - 11904: 0xD7B2, - 34955 - 11904: 0xB355, - 34956 - 11904: 0xD7C2, - 34957 - 11904: 0xB354, - 34958 - 11904: 0xD7C4, - 34959 - 11904: 0x8C45, - 34960 - 11904: 0x8CB8, - 34961 - 11904: 0xD7B8, - 34962 - 11904: 0xB352, - 34963 - 11904: 0xD7C3, - 34965 - 11904: 0xD7B3, - 34966 - 11904: 0xB353, - 34967 - 11904: 0xD7BF, - 34968 - 11904: 0xD7BB, - 34969 - 11904: 0xD7BD, - 34970 - 11904: 0xD7B7, - 34971 - 11904: 0xD7BE, - 34972 - 11904: 0x8FC1, - 34973 - 11904: 0x87B7, - 34974 - 11904: 0xB34F, - 34975 - 11904: 0xD7BA, - 34976 - 11904: 0xA052, - 34977 - 11904: 0xD7B9, - 34978 - 11904: 0xD7B5, - 34980 - 11904: 0xD7C0, - 34983 - 11904: 0xD7BC, - 34984 - 11904: 0xD7B4, - 34986 - 11904: 0xD7B6, - 34987 - 11904: 0xB351, - 34988 - 11904: 0xD7C1, - 34990 - 11904: 0x99D0, - 34993 - 11904: 0xB5F6, - 34994 - 11904: 0xDBCD, - 34996 - 11904: 0x8FC3, - 34997 - 11904: 0x8FC4, - 34998 - 11904: 0xDBC9, - 34999 - 11904: 0xDBCB, - 35000 - 11904: 0xDBC6, - 35001 - 11904: 0xDBC5, - 35002 - 11904: 0xDBC3, - 35004 - 11904: 0xDBCA, - 35005 - 11904: 0xDBCC, - 35006 - 11904: 0xDBC8, - 35007 - 11904: 0x95A4, - 35008 - 11904: 0xDBC7, - 35009 - 11904: 0xB5F4, - 35010 - 11904: 0xB5F5, - 35013 - 11904: 0x8FC6, - 35015 - 11904: 0x9E60, - 35017 - 11904: 0xDBCF, - 35018 - 11904: 0xB8CD, - 35019 - 11904: 0xDFF2, - 35020 - 11904: 0xDFF8, - 35021 - 11904: 0xDFF3, - 35022 - 11904: 0xDFF4, - 35023 - 11904: 0xF9D8, - 35024 - 11904: 0xDFF9, - 35026 - 11904: 0xB8CF, - 35028 - 11904: 0xB8C7, - 35029 - 11904: 0xB8CE, - 35030 - 11904: 0xDFF1, - 35031 - 11904: 0xDBC4, - 35032 - 11904: 0xB8CA, - 35033 - 11904: 0xB8C8, - 35034 - 11904: 0xDFF7, - 35035 - 11904: 0xDFF6, - 35036 - 11904: 0xB8C9, - 35037 - 11904: 0xB8CB, - 35038 - 11904: 0xDFF5, - 35039 - 11904: 0xB8C6, - 35041 - 11904: 0xB8CC, - 35046 - 11904: 0x95A5, - 35047 - 11904: 0xE3F6, - 35048 - 11904: 0xBB74, - 35051 - 11904: 0xE442, - 35052 - 11904: 0xE441, - 35054 - 11904: 0xE3FB, - 35055 - 11904: 0xBB76, - 35056 - 11904: 0xE440, - 35057 - 11904: 0xE3F7, - 35058 - 11904: 0xE3F8, - 35059 - 11904: 0xBB6E, - 35060 - 11904: 0xBB70, - 35061 - 11904: 0x9CB3, - 35062 - 11904: 0xE3FD, - 35063 - 11904: 0xE3F5, - 35064 - 11904: 0xBB72, - 35065 - 11904: 0xBB71, - 35066 - 11904: 0xE3F9, - 35067 - 11904: 0xE3FE, - 35068 - 11904: 0xE3FC, - 35069 - 11904: 0xBB73, - 35070 - 11904: 0xE3FA, - 35071 - 11904: 0x99D1, - 35072 - 11904: 0xFEF1, - 35073 - 11904: 0xDBCE, - 35074 - 11904: 0xBB6F, - 35077 - 11904: 0xE7C2, - 35078 - 11904: 0xE7C9, - 35079 - 11904: 0xBDC6, - 35081 - 11904: 0xE7CD, - 35082 - 11904: 0xBDCA, - 35083 - 11904: 0xE7C5, - 35084 - 11904: 0xE7C3, - 35086 - 11904: 0xE7CC, - 35088 - 11904: 0xBDC5, - 35089 - 11904: 0xE7CB, - 35090 - 11904: 0xBDC7, - 35091 - 11904: 0xBDC8, - 35092 - 11904: 0xE7C4, - 35093 - 11904: 0xBDC9, - 35094 - 11904: 0xE7CA, - 35095 - 11904: 0xE7C6, - 35096 - 11904: 0xE7C7, - 35097 - 11904: 0xE7C8, - 35098 - 11904: 0xBB75, - 35102 - 11904: 0xEB70, - 35103 - 11904: 0xEB7C, - 35105 - 11904: 0xBFCA, - 35106 - 11904: 0xEB77, - 35107 - 11904: 0xEB79, - 35108 - 11904: 0x99D2, - 35109 - 11904: 0xBFC8, - 35110 - 11904: 0xEB71, - 35111 - 11904: 0xEB75, - 35113 - 11904: 0xEB78, - 35114 - 11904: 0xBFC6, - 35115 - 11904: 0xBFC9, - 35116 - 11904: 0xEB7B, - 35117 - 11904: 0xEB73, - 35118 - 11904: 0xEB74, - 35119 - 11904: 0xEB7A, - 35120 - 11904: 0xEB72, - 35121 - 11904: 0xEB76, - 35122 - 11904: 0xBFC7, - 35123 - 11904: 0xEE72, - 35125 - 11904: 0xEE71, - 35126 - 11904: 0xC1B7, - 35127 - 11904: 0xEE77, - 35128 - 11904: 0xC1B9, - 35131 - 11904: 0xC1B6, - 35132 - 11904: 0xEE73, - 35133 - 11904: 0xC1BA, - 35134 - 11904: 0xEE74, - 35137 - 11904: 0xEE75, - 35138 - 11904: 0xEE78, - 35139 - 11904: 0x9CC2, - 35140 - 11904: 0xC1B8, - 35142 - 11904: 0xF0D6, - 35143 - 11904: 0x99D3, - 35145 - 11904: 0xF0D9, - 35147 - 11904: 0xF0D3, - 35148 - 11904: 0xF0D5, - 35149 - 11904: 0x95A7, - 35151 - 11904: 0xF0D4, - 35152 - 11904: 0xF0D7, - 35153 - 11904: 0xF0D8, - 35154 - 11904: 0xEE76, - 35155 - 11904: 0xF0D2, - 35156 - 11904: 0x95A9, - 35158 - 11904: 0xC3CD, - 35159 - 11904: 0xF2EC, - 35160 - 11904: 0xF2EF, - 35161 - 11904: 0xF2F1, - 35162 - 11904: 0xF2EA, - 35163 - 11904: 0xF2EB, - 35164 - 11904: 0xF2EE, - 35165 - 11904: 0xF2F0, - 35166 - 11904: 0xC3CE, - 35167 - 11904: 0xC3CC, - 35168 - 11904: 0xC3CB, - 35169 - 11904: 0xF2ED, - 35170 - 11904: 0xF2E9, - 35171 - 11904: 0xF4CA, - 35172 - 11904: 0xC4B0, - 35173 - 11904: 0x95A6, - 35174 - 11904: 0xF4CB, - 35177 - 11904: 0xF649, - 35178 - 11904: 0xC4FB, - 35179 - 11904: 0xF64B, - 35180 - 11904: 0xC4FC, - 35181 - 11904: 0xF648, - 35182 - 11904: 0xF64A, - 35183 - 11904: 0xC5A8, - 35185 - 11904: 0xF752, - 35186 - 11904: 0xC5A7, - 35187 - 11904: 0xF7FD, - 35188 - 11904: 0xF7FC, - 35190 - 11904: 0xF7FB, - 35191 - 11904: 0x9C5D, - 35193 - 11904: 0xF948, - 35194 - 11904: 0xF949, - 35195 - 11904: 0xF94B, - 35196 - 11904: 0xF94A, - 35198 - 11904: 0xCA50, - 35199 - 11904: 0xA6E8, - 35200 - 11904: 0x98E2, - 35201 - 11904: 0xAD6E, - 35202 - 11904: 0xD7C5, - 35203 - 11904: 0xB5F7, - 35205 - 11904: 0xDFFA, - 35206 - 11904: 0xC2D0, - 35207 - 11904: 0x8FC9, - 35208 - 11904: 0xF2F2, - 35209 - 11904: 0xA0C2, - 35210 - 11904: 0x8FCA, - 35211 - 11904: 0xA8A3, - 35215 - 11904: 0xB357, - 35217 - 11904: 0x99D4, - 35219 - 11904: 0xB356, - 35220 - 11904: 0xA0B9, - 35221 - 11904: 0xDBD0, - 35222 - 11904: 0xB5F8, - 35223 - 11904: 0xDBD2, - 35224 - 11904: 0xDBD1, - 35227 - 11904: 0xDFFB, - 35228 - 11904: 0xB8D0, - 35229 - 11904: 0xE443, - 35230 - 11904: 0xE446, - 35231 - 11904: 0xE445, - 35233 - 11904: 0xE444, - 35234 - 11904: 0xE7CE, - 35235 - 11904: 0xE7D0, - 35236 - 11904: 0xE7CF, - 35237 - 11904: 0x9B58, - 35238 - 11904: 0xBFCC, - 35239 - 11904: 0x8FCD, - 35241 - 11904: 0xA0D4, - 35242 - 11904: 0xBFCB, - 35244 - 11904: 0xC1BB, - 35245 - 11904: 0xEE79, - 35246 - 11904: 0xEE7B, - 35247 - 11904: 0xEE7A, - 35250 - 11904: 0xC2D1, - 35254 - 11904: 0xF2F4, - 35255 - 11904: 0xF2F3, - 35257 - 11904: 0xF4CC, - 35258 - 11904: 0xC4B1, - 35260 - 11904: 0x8FCE, - 35261 - 11904: 0xC4FD, - 35262 - 11904: 0xF754, - 35263 - 11904: 0xF753, - 35264 - 11904: 0xC65B, - 35265 - 11904: 0x8BE5, - 35270 - 11904: 0x8979, - 35282 - 11904: 0xA8A4, - 35283 - 11904: 0xD0AF, - 35284 - 11904: 0xAD6F, - 35285 - 11904: 0xD7C8, - 35286 - 11904: 0xD7C6, - 35289 - 11904: 0xD7C7, - 35290 - 11904: 0xDBD4, - 35291 - 11904: 0xDBD5, - 35292 - 11904: 0xE043, - 35293 - 11904: 0xDBD3, - 35295 - 11904: 0xDFFC, - 35296 - 11904: 0xE041, - 35297 - 11904: 0xE040, - 35298 - 11904: 0xE042, - 35299 - 11904: 0xB8D1, - 35300 - 11904: 0xDFFE, - 35301 - 11904: 0xDFFD, - 35302 - 11904: 0xE044, - 35303 - 11904: 0x8FD0, - 35304 - 11904: 0xE449, - 35305 - 11904: 0xE447, - 35307 - 11904: 0xE448, - 35308 - 11904: 0xE7D3, - 35309 - 11904: 0xE7D1, - 35312 - 11904: 0xE7D2, - 35313 - 11904: 0xEB7D, - 35314 - 11904: 0xEE7C, - 35315 - 11904: 0xEE7D, - 35316 - 11904: 0xC2D2, - 35318 - 11904: 0xF2F5, - 35319 - 11904: 0xF4CD, - 35320 - 11904: 0xC4B2, - 35322 - 11904: 0xF64C, - 35323 - 11904: 0xF755, - 35324 - 11904: 0xC5A9, - 35326 - 11904: 0xF7FE, - 35327 - 11904: 0xF94C, - 35328 - 11904: 0xA8A5, - 35330 - 11904: 0xAD71, - 35331 - 11904: 0xAD72, - 35332 - 11904: 0xD0B0, - 35335 - 11904: 0xD0B1, - 35336 - 11904: 0xAD70, - 35338 - 11904: 0xB054, - 35340 - 11904: 0xB052, - 35342 - 11904: 0xB051, - 35343 - 11904: 0xB058, - 35344 - 11904: 0xB050, - 35345 - 11904: 0xB059, - 35346 - 11904: 0xD3DD, - 35347 - 11904: 0xB056, - 35349 - 11904: 0xB053, - 35350 - 11904: 0xB057, - 35351 - 11904: 0xB055, - 35352 - 11904: 0xB04F, - 35355 - 11904: 0xB35F, - 35356 - 11904: 0x95B6, - 35357 - 11904: 0xB359, - 35358 - 11904: 0xD7CC, - 35359 - 11904: 0xB35E, - 35362 - 11904: 0xB360, - 35363 - 11904: 0xB35A, - 35365 - 11904: 0xB35B, - 35367 - 11904: 0xD7CA, - 35369 - 11904: 0x99D6, - 35370 - 11904: 0xB358, - 35371 - 11904: 0x95E5, - 35372 - 11904: 0xD7CB, - 35373 - 11904: 0xB35D, - 35376 - 11904: 0xD7C9, - 35377 - 11904: 0xB35C, - 35380 - 11904: 0xB644, - 35382 - 11904: 0xB646, - 35384 - 11904: 0x99D7, - 35385 - 11904: 0xDBD8, - 35386 - 11904: 0xB645, - 35387 - 11904: 0xB5F9, - 35388 - 11904: 0xB5FD, - 35389 - 11904: 0x95B5, - 35390 - 11904: 0xB8E4, - 35391 - 11904: 0xE049, - 35392 - 11904: 0xDBDA, - 35393 - 11904: 0xB5FE, - 35396 - 11904: 0xDBDD, - 35397 - 11904: 0xDBDE, - 35398 - 11904: 0xB643, - 35400 - 11904: 0xDBE0, - 35401 - 11904: 0xA0CA, - 35402 - 11904: 0xDBE2, - 35404 - 11904: 0xDBE3, - 35405 - 11904: 0xDBD7, - 35406 - 11904: 0xDBD6, - 35407 - 11904: 0xDBE4, - 35408 - 11904: 0xB642, - 35409 - 11904: 0xDBE1, - 35410 - 11904: 0xDBDF, - 35412 - 11904: 0xB640, - 35413 - 11904: 0xB5FB, - 35414 - 11904: 0xB647, - 35415 - 11904: 0xDBDB, - 35416 - 11904: 0xDBDC, - 35417 - 11904: 0xDBD9, - 35419 - 11904: 0xB641, - 35422 - 11904: 0xB5FC, - 35424 - 11904: 0xB5FA, - 35425 - 11904: 0xE048, - 35426 - 11904: 0xB8DF, - 35427 - 11904: 0xB8DA, - 35430 - 11904: 0xB8D5, - 35431 - 11904: 0x9FFD, - 35432 - 11904: 0xB8E5, - 35433 - 11904: 0xB8D6, - 35435 - 11904: 0xB8D2, - 35436 - 11904: 0xB8E1, - 35437 - 11904: 0xB8DE, - 35438 - 11904: 0xB8E0, - 35440 - 11904: 0xB8D7, - 35441 - 11904: 0xB8DC, - 35442 - 11904: 0xB8D3, - 35443 - 11904: 0xB8D4, - 35444 - 11904: 0xE050, - 35445 - 11904: 0xE04D, - 35446 - 11904: 0xE045, - 35447 - 11904: 0xE04A, - 35449 - 11904: 0xB8E2, - 35450 - 11904: 0xE051, - 35451 - 11904: 0xB8E3, - 35452 - 11904: 0xB8D9, - 35454 - 11904: 0xA058, - 35455 - 11904: 0xE047, - 35457 - 11904: 0xE04F, - 35458 - 11904: 0xE04B, - 35459 - 11904: 0xE04E, - 35460 - 11904: 0xE04C, - 35461 - 11904: 0xB8DD, - 35462 - 11904: 0xE046, - 35463 - 11904: 0xB8D8, - 35467 - 11904: 0xE44C, - 35468 - 11904: 0xBB78, - 35469 - 11904: 0xBB7B, - 35471 - 11904: 0xE44E, - 35472 - 11904: 0x8FD6, - 35473 - 11904: 0xBBA5, - 35474 - 11904: 0xE44D, - 35475 - 11904: 0xBB7D, - 35476 - 11904: 0x99D8, - 35477 - 11904: 0xBDCF, - 35478 - 11904: 0xE44F, - 35480 - 11904: 0xBBA4, - 35481 - 11904: 0xE44B, - 35482 - 11904: 0xBBA6, - 35484 - 11904: 0x8FD3, - 35486 - 11904: 0xBB79, - 35488 - 11904: 0xB8DB, - 35489 - 11904: 0xBB7C, - 35491 - 11904: 0xBB7A, - 35492 - 11904: 0xBB7E, - 35493 - 11904: 0xBBA2, - 35494 - 11904: 0xBB77, - 35495 - 11904: 0xBBA7, - 35496 - 11904: 0xBBA3, - 35497 - 11904: 0x8FE5, - 35498 - 11904: 0xBBA1, - 35499 - 11904: 0xE44A, - 35503 - 11904: 0x8FE9, - 35504 - 11904: 0xBDD6, - 35506 - 11904: 0xBDD2, - 35508 - 11904: 0x99D9, - 35510 - 11904: 0xBDD9, - 35512 - 11904: 0xE7D6, - 35513 - 11904: 0xBDDA, - 35514 - 11904: 0xE7E2, - 35515 - 11904: 0xE7DB, - 35516 - 11904: 0xBDCB, - 35517 - 11904: 0xE7E3, - 35518 - 11904: 0xE7DD, - 35519 - 11904: 0xBDD5, - 35520 - 11904: 0xE7DE, - 35522 - 11904: 0xBDD4, - 35523 - 11904: 0xE7E1, - 35524 - 11904: 0xBDCE, - 35525 - 11904: 0xE7DF, - 35526 - 11904: 0xE7D5, - 35527 - 11904: 0xBDCD, - 35528 - 11904: 0xEBAA, - 35529 - 11904: 0xBDD3, - 35531 - 11904: 0xBDD0, - 35532 - 11904: 0x8CF7, - 35533 - 11904: 0xBDD8, - 35535 - 11904: 0xE7D4, - 35537 - 11904: 0xE7D8, - 35538 - 11904: 0xBDCC, - 35539 - 11904: 0xE7D7, - 35540 - 11904: 0xE7D9, - 35541 - 11904: 0xE7DA, - 35542 - 11904: 0xBDD7, - 35543 - 11904: 0xE7DC, - 35544 - 11904: 0xE7E0, - 35545 - 11904: 0xE7E4, - 35546 - 11904: 0x927C, - 35547 - 11904: 0xBDDB, - 35548 - 11904: 0xBFD2, - 35549 - 11904: 0xEBA5, - 35550 - 11904: 0xEBAB, - 35551 - 11904: 0xEBA8, - 35552 - 11904: 0xEB7E, - 35553 - 11904: 0xEBAC, - 35554 - 11904: 0xEBA1, - 35556 - 11904: 0xEBA7, - 35558 - 11904: 0xBFCD, - 35559 - 11904: 0xBFD3, - 35560 - 11904: 0xEBAD, - 35562 - 11904: 0x9C45, - 35563 - 11904: 0xBFCF, - 35565 - 11904: 0xBFD9, - 35566 - 11904: 0xBFD4, - 35567 - 11904: 0xEBAF, - 35568 - 11904: 0xEBA9, - 35569 - 11904: 0xBFD0, - 35570 - 11904: 0xEBA2, - 35571 - 11904: 0xBFDA, - 35572 - 11904: 0xEBA3, - 35573 - 11904: 0xEBA4, - 35574 - 11904: 0xBFDB, - 35575 - 11904: 0xBFD8, - 35576 - 11904: 0xBDD1, - 35577 - 11904: 0x8CE8, - 35578 - 11904: 0xBFCE, - 35579 - 11904: 0xEBB0, - 35580 - 11904: 0xBFDC, - 35582 - 11904: 0xBFD5, - 35583 - 11904: 0xEBAE, - 35584 - 11904: 0xBFD1, - 35585 - 11904: 0xBFD6, - 35586 - 11904: 0xBFD7, - 35588 - 11904: 0xC1C3, - 35589 - 11904: 0xEEA4, - 35590 - 11904: 0xEEAD, - 35591 - 11904: 0xEEAA, - 35592 - 11904: 0xEEAC, - 35594 - 11904: 0xC1C0, - 35595 - 11904: 0xEEA5, - 35596 - 11904: 0x8FDE, - 35597 - 11904: 0xEEAB, - 35598 - 11904: 0xC1BC, - 35599 - 11904: 0xEEA7, - 35600 - 11904: 0xC1C4, - 35601 - 11904: 0xEEA3, - 35602 - 11904: 0xEEA8, - 35603 - 11904: 0xEEAF, - 35604 - 11904: 0xEBA6, - 35605 - 11904: 0xEEA9, - 35606 - 11904: 0xEEA2, - 35607 - 11904: 0xC1BD, - 35608 - 11904: 0xEEA1, - 35609 - 11904: 0xC1BE, - 35610 - 11904: 0xEEB0, - 35611 - 11904: 0xC1BF, - 35612 - 11904: 0xEEAE, - 35613 - 11904: 0xC1C2, - 35614 - 11904: 0xEE7E, - 35615 - 11904: 0x8FDF, - 35616 - 11904: 0xC1C1, - 35618 - 11904: 0xEEA6, - 35619 - 11904: 0xF0DC, - 35620 - 11904: 0xF0EA, - 35621 - 11904: 0xF0E5, - 35622 - 11904: 0xF0E7, - 35623 - 11904: 0xF0DB, - 35624 - 11904: 0xC2D3, - 35626 - 11904: 0xF0DA, - 35627 - 11904: 0xC2D6, - 35628 - 11904: 0xC2D5, - 35629 - 11904: 0xA04B, - 35630 - 11904: 0xF0E9, - 35631 - 11904: 0xF0E1, - 35632 - 11904: 0xF0DE, - 35633 - 11904: 0xF0E4, - 35635 - 11904: 0xF0DD, - 35637 - 11904: 0xF0DF, - 35638 - 11904: 0xF0E8, - 35639 - 11904: 0xF0E6, - 35641 - 11904: 0xC2D4, - 35642 - 11904: 0xF0ED, - 35643 - 11904: 0xF0EB, - 35644 - 11904: 0xF0E2, - 35645 - 11904: 0xF0EC, - 35646 - 11904: 0xF0E3, - 35647 - 11904: 0x8FE2, - 35648 - 11904: 0xF2F9, - 35649 - 11904: 0xC3CF, - 35650 - 11904: 0xF341, - 35651 - 11904: 0xA0CC, - 35653 - 11904: 0xF64F, - 35654 - 11904: 0xC3D6, - 35655 - 11904: 0xF0E0, - 35656 - 11904: 0xF2F7, - 35657 - 11904: 0xC3D2, - 35658 - 11904: 0xF2F8, - 35659 - 11904: 0xF2FD, - 35660 - 11904: 0x8FE3, - 35661 - 11904: 0x8FE4, - 35662 - 11904: 0xC3D4, - 35663 - 11904: 0xC3D5, - 35664 - 11904: 0xF2F6, - 35665 - 11904: 0xF340, - 35666 - 11904: 0xF342, - 35667 - 11904: 0xF2FA, - 35668 - 11904: 0xF2FC, - 35669 - 11904: 0xF2FE, - 35670 - 11904: 0xF2FB, - 35671 - 11904: 0xF343, - 35672 - 11904: 0xC3D1, - 35673 - 11904: 0xC3D7, - 35674 - 11904: 0xC3D3, - 35676 - 11904: 0xC3D0, - 35677 - 11904: 0xF4D0, - 35678 - 11904: 0x9BC4, - 35679 - 11904: 0xC4B7, - 35680 - 11904: 0xF4CE, - 35682 - 11904: 0x9BFC, - 35683 - 11904: 0xF4D2, - 35685 - 11904: 0xF4D3, - 35686 - 11904: 0xC4B5, - 35687 - 11904: 0xF4D4, - 35688 - 11904: 0xF4D1, - 35689 - 11904: 0x964C, - 35690 - 11904: 0xF4CF, - 35691 - 11904: 0xC4B8, - 35692 - 11904: 0xC4B4, - 35693 - 11904: 0xF4D5, - 35695 - 11904: 0xC4B6, - 35696 - 11904: 0xC4B3, - 35700 - 11904: 0xC4FE, - 35703 - 11904: 0xC540, - 35704 - 11904: 0xF64E, - 35705 - 11904: 0xF64D, - 35706 - 11904: 0xF650, - 35707 - 11904: 0xF651, - 35709 - 11904: 0xC541, - 35710 - 11904: 0xF756, - 35711 - 11904: 0xF75B, - 35712 - 11904: 0xC5AA, - 35713 - 11904: 0x9AF6, - 35714 - 11904: 0xF758, - 35715 - 11904: 0x8CAE, - 35716 - 11904: 0xF757, - 35717 - 11904: 0xF75A, - 35718 - 11904: 0xF759, - 35720 - 11904: 0xF843, - 35722 - 11904: 0xC5DC, - 35723 - 11904: 0xF842, - 35724 - 11904: 0xF840, - 35726 - 11904: 0xF841, - 35727 - 11904: 0x87CB, - 35728 - 11904: 0x8FE7, - 35730 - 11904: 0xC5FE, - 35731 - 11904: 0xC5FD, - 35732 - 11904: 0xF8C1, - 35733 - 11904: 0xF8C2, - 35734 - 11904: 0xC640, - 35736 - 11904: 0xF94D, - 35737 - 11904: 0xF94E, - 35738 - 11904: 0xC667, - 35739 - 11904: 0x8FE8, - 35740 - 11904: 0xC66D, - 35742 - 11904: 0xF9A9, - 35743 - 11904: 0xF9C8, - 35744 - 11904: 0x8BE7, - 35774 - 11904: 0x897A, - 35810 - 11904: 0x897B, - 35895 - 11904: 0xA8A6, - 35897 - 11904: 0xD7CD, - 35899 - 11904: 0xD7CE, - 35900 - 11904: 0xE052, - 35901 - 11904: 0xE450, - 35902 - 11904: 0xE7E5, - 35903 - 11904: 0xC1C6, - 35905 - 11904: 0xC1C5, - 35906 - 11904: 0xF0EE, - 35907 - 11904: 0xF344, - 35909 - 11904: 0xF844, - 35910 - 11904: 0xA8A7, - 35911 - 11904: 0xD3DE, - 35912 - 11904: 0xB05A, - 35913 - 11904: 0xB361, - 35914 - 11904: 0xE054, - 35915 - 11904: 0xE053, - 35916 - 11904: 0xBDDC, - 35917 - 11904: 0xE7E6, - 35918 - 11904: 0xBDDD, - 35919 - 11904: 0xEEB1, - 35920 - 11904: 0xC2D7, - 35921 - 11904: 0x99DA, - 35924 - 11904: 0xC676, - 35925 - 11904: 0xA8A8, - 35926 - 11904: 0xCDCB, - 35927 - 11904: 0xD3DF, - 35930 - 11904: 0xB362, - 35932 - 11904: 0xD7CF, - 35933 - 11904: 0xD7D0, - 35935 - 11904: 0xDBE5, - 35937 - 11904: 0xB648, - 35938 - 11904: 0xB8E6, - 35940 - 11904: 0xE056, - 35941 - 11904: 0xE055, - 35942 - 11904: 0xE057, - 35944 - 11904: 0xE451, - 35945 - 11904: 0xE452, - 35946 - 11904: 0xBBA8, - 35947 - 11904: 0xBFDD, - 35948 - 11904: 0xBDDE, - 35949 - 11904: 0xBFDE, - 35951 - 11904: 0xEEB5, - 35952 - 11904: 0xEEB2, - 35953 - 11904: 0xEEB4, - 35954 - 11904: 0xEEB3, - 35955 - 11904: 0xC1C7, - 35957 - 11904: 0xF0EF, - 35958 - 11904: 0xF346, - 35959 - 11904: 0xF345, - 35960 - 11904: 0xCBA4, - 35961 - 11904: 0xB05C, - 35962 - 11904: 0xB05B, - 35963 - 11904: 0xD3E0, - 35965 - 11904: 0xD7D1, - 35968 - 11904: 0xDBE7, - 35969 - 11904: 0xDBE6, - 35970 - 11904: 0xB649, - 35972 - 11904: 0xE059, - 35973 - 11904: 0xE05A, - 35974 - 11904: 0xE058, - 35977 - 11904: 0xB8E8, - 35978 - 11904: 0xB8E7, - 35980 - 11904: 0xBBAA, - 35981 - 11904: 0xBBA9, - 35983 - 11904: 0xE7E7, - 35984 - 11904: 0xEBB3, - 35985 - 11904: 0xEBB1, - 35986 - 11904: 0xEBB2, - 35987 - 11904: 0xBFDF, - 35988 - 11904: 0xEEB7, - 35989 - 11904: 0xEEB6, - 35991 - 11904: 0xF0F2, - 35992 - 11904: 0xF0F1, - 35993 - 11904: 0xF0F0, - 35994 - 11904: 0xF347, - 35995 - 11904: 0x8FED, - 35996 - 11904: 0xF9AA, - 35997 - 11904: 0xA8A9, - 35998 - 11904: 0xAD73, - 35999 - 11904: 0x95C0, - 36000 - 11904: 0xAD74, - 36001 - 11904: 0xB05D, - 36002 - 11904: 0xB05E, - 36003 - 11904: 0xD3E2, - 36004 - 11904: 0xD3E1, - 36005 - 11904: 0xD7D2, - 36007 - 11904: 0xB368, - 36008 - 11904: 0xB366, - 36009 - 11904: 0xB363, - 36010 - 11904: 0xB367, - 36011 - 11904: 0xB365, - 36012 - 11904: 0xB364, - 36013 - 11904: 0xA0CB, - 36015 - 11904: 0xB64A, - 36016 - 11904: 0xDBEA, - 36018 - 11904: 0xB8ED, - 36019 - 11904: 0xB64C, - 36020 - 11904: 0xB651, - 36021 - 11904: 0xDBEC, - 36022 - 11904: 0xB653, - 36023 - 11904: 0xB652, - 36024 - 11904: 0xB655, - 36025 - 11904: 0xDBEB, - 36026 - 11904: 0xDBE8, - 36027 - 11904: 0xB64F, - 36028 - 11904: 0xB64B, - 36029 - 11904: 0xB64D, - 36030 - 11904: 0xDBE9, - 36031 - 11904: 0xB654, - 36032 - 11904: 0xB650, - 36033 - 11904: 0xB64E, - 36034 - 11904: 0xB8EF, - 36035 - 11904: 0xB8EE, - 36036 - 11904: 0xB8EC, - 36037 - 11904: 0xB8F0, - 36039 - 11904: 0xB8EA, - 36040 - 11904: 0xB8EB, - 36042 - 11904: 0xB8E9, - 36044 - 11904: 0xE05B, - 36045 - 11904: 0x9E48, - 36047 - 11904: 0xE454, - 36049 - 11904: 0xBBAC, - 36050 - 11904: 0xBBAD, - 36051 - 11904: 0xBBAB, - 36052 - 11904: 0x99DB, - 36053 - 11904: 0xE453, - 36054 - 11904: 0x8FF3, - 36055 - 11904: 0xE455, - 36057 - 11904: 0xE7EA, - 36058 - 11904: 0xE7EC, - 36059 - 11904: 0x8FF9, - 36060 - 11904: 0xBDE7, - 36061 - 11904: 0xE7ED, - 36062 - 11904: 0xBDE0, - 36063 - 11904: 0xE7E9, - 36064 - 11904: 0xBDDF, - 36065 - 11904: 0xBDE9, - 36066 - 11904: 0xBDE5, - 36067 - 11904: 0xBDE6, - 36068 - 11904: 0xBDE2, - 36069 - 11904: 0xE7E8, - 36070 - 11904: 0xBDE1, - 36071 - 11904: 0xE7EE, - 36072 - 11904: 0xE7EB, - 36073 - 11904: 0x95C1, - 36074 - 11904: 0xBDE8, - 36075 - 11904: 0xA04E, - 36076 - 11904: 0xBDE3, - 36077 - 11904: 0xBDE4, - 36078 - 11904: 0xEBB5, - 36080 - 11904: 0xEBB7, - 36081 - 11904: 0xEBB6, - 36082 - 11904: 0x99DC, - 36083 - 11904: 0xEBB8, - 36084 - 11904: 0xBFE0, - 36085 - 11904: 0xEBB4, - 36087 - 11904: 0xA064, - 36088 - 11904: 0xC1CB, - 36089 - 11904: 0xEEB8, - 36090 - 11904: 0xC1C8, - 36091 - 11904: 0xC1CC, - 36092 - 11904: 0xC1CA, - 36093 - 11904: 0xC1C9, - 36094 - 11904: 0xF0F3, - 36096 - 11904: 0xF0F6, - 36098 - 11904: 0xF0F5, - 36099 - 11904: 0x8FF7, - 36100 - 11904: 0xF0F4, - 36101 - 11904: 0xC2D8, - 36102 - 11904: 0xF348, - 36103 - 11904: 0xF349, - 36104 - 11904: 0xC3D8, - 36105 - 11904: 0xF34A, - 36106 - 11904: 0xC3D9, - 36107 - 11904: 0x89B0, - 36108 - 11904: 0xA048, - 36109 - 11904: 0xC4BA, - 36111 - 11904: 0xC4B9, - 36112 - 11904: 0xF652, - 36113 - 11904: 0x8FFB, - 36114 - 11904: 0x8FF6, - 36115 - 11904: 0xC542, - 36116 - 11904: 0xF653, - 36117 - 11904: 0xF75C, - 36118 - 11904: 0xC5AB, - 36119 - 11904: 0xC5AC, - 36120 - 11904: 0x9DDC, - 36121 - 11904: 0xF845, - 36123 - 11904: 0xC642, - 36124 - 11904: 0x99DD, - 36125 - 11904: 0x8BE8, - 36196 - 11904: 0xA8AA, - 36198 - 11904: 0xB36A, - 36199 - 11904: 0xB369, - 36200 - 11904: 0xE05C, - 36201 - 11904: 0xE05D, - 36203 - 11904: 0xBBAE, - 36204 - 11904: 0xEBB9, - 36205 - 11904: 0xBDEA, - 36206 - 11904: 0xEBBA, - 36207 - 11904: 0xEEB9, - 36208 - 11904: 0xA8AB, - 36210 - 11904: 0xD0B2, - 36211 - 11904: 0xAD76, - 36212 - 11904: 0xAD75, - 36214 - 11904: 0xD3E3, - 36215 - 11904: 0xB05F, - 36216 - 11904: 0xD3E4, - 36217 - 11904: 0xD7D5, - 36218 - 11904: 0x92C1, - 36219 - 11904: 0xD7D4, - 36221 - 11904: 0xD7D3, - 36224 - 11904: 0xDBEE, - 36225 - 11904: 0xB658, - 36226 - 11904: 0x9FD6, - 36228 - 11904: 0xDBED, - 36229 - 11904: 0xB657, - 36233 - 11904: 0xDBEF, - 36234 - 11904: 0xB656, - 36236 - 11904: 0xE05F, - 36237 - 11904: 0xE062, - 36238 - 11904: 0xE060, - 36239 - 11904: 0xE061, - 36240 - 11904: 0xE065, - 36241 - 11904: 0xE05E, - 36242 - 11904: 0xE066, - 36243 - 11904: 0xE063, - 36244 - 11904: 0xE064, - 36245 - 11904: 0xBBB0, - 36246 - 11904: 0xE456, - 36249 - 11904: 0xBBAF, - 36251 - 11904: 0xE7F2, - 36252 - 11904: 0xE7F0, - 36255 - 11904: 0xBDEB, - 36256 - 11904: 0xE7EF, - 36257 - 11904: 0xE7F1, - 36259 - 11904: 0xBDEC, - 36261 - 11904: 0xEBBB, - 36262 - 11904: 0xA0D2, - 36263 - 11904: 0xEBBC, - 36264 - 11904: 0xC1CD, - 36265 - 11904: 0x9040, - 36266 - 11904: 0xF34C, - 36267 - 11904: 0xF34E, - 36268 - 11904: 0xF34B, - 36269 - 11904: 0xF34D, - 36270 - 11904: 0xF4D6, - 36271 - 11904: 0xF654, - 36274 - 11904: 0xF96F, - 36275 - 11904: 0xA8AC, - 36276 - 11904: 0xAD77, - 36277 - 11904: 0xD3E5, - 36278 - 11904: 0xD3E7, - 36279 - 11904: 0xD3E6, - 36281 - 11904: 0xD7D8, - 36282 - 11904: 0xB36C, - 36284 - 11904: 0xD7D6, - 36286 - 11904: 0xB36B, - 36287 - 11904: 0xD7D9, - 36288 - 11904: 0x8AC4, - 36289 - 11904: 0xD7DA, - 36290 - 11904: 0xD7D7, - 36291 - 11904: 0x99E0, - 36293 - 11904: 0xDBFB, - 36294 - 11904: 0xB660, - 36295 - 11904: 0xDBF3, - 36296 - 11904: 0xDBF9, - 36299 - 11904: 0xB65B, - 36300 - 11904: 0xB65E, - 36301 - 11904: 0xDBF2, - 36302 - 11904: 0xB659, - 36303 - 11904: 0xDBF6, - 36304 - 11904: 0xE06C, - 36305 - 11904: 0xB65D, - 36307 - 11904: 0xDBF1, - 36308 - 11904: 0x9FF0, - 36309 - 11904: 0xDBF7, - 36310 - 11904: 0xDBF4, - 36311 - 11904: 0xDBFA, - 36312 - 11904: 0xDBF0, - 36313 - 11904: 0xDBF8, - 36314 - 11904: 0xB65C, - 36315 - 11904: 0xB65F, - 36316 - 11904: 0xDBF5, - 36317 - 11904: 0xB65A, - 36319 - 11904: 0xB8F2, - 36320 - 11904: 0xE068, - 36321 - 11904: 0xB8F1, - 36322 - 11904: 0xE06F, - 36323 - 11904: 0xE06E, - 36324 - 11904: 0xB8F8, - 36326 - 11904: 0xB8F9, - 36327 - 11904: 0xE070, - 36328 - 11904: 0xB8F3, - 36329 - 11904: 0xE06D, - 36330 - 11904: 0xB8F7, - 36331 - 11904: 0xE072, - 36332 - 11904: 0xE069, - 36334 - 11904: 0xE06B, - 36335 - 11904: 0xB8F4, - 36336 - 11904: 0xE067, - 36337 - 11904: 0xE06A, - 36338 - 11904: 0xE071, - 36339 - 11904: 0xB8F5, - 36340 - 11904: 0xE073, - 36346 - 11904: 0xB8F6, - 36348 - 11904: 0xBBB1, - 36349 - 11904: 0xE45B, - 36350 - 11904: 0xE461, - 36351 - 11904: 0xE459, - 36352 - 11904: 0xE462, - 36353 - 11904: 0x9FF3, - 36354 - 11904: 0xE458, - 36355 - 11904: 0xE45D, - 36356 - 11904: 0xE463, - 36357 - 11904: 0xE460, - 36358 - 11904: 0xE45F, - 36359 - 11904: 0xE45E, - 36361 - 11904: 0xE457, - 36362 - 11904: 0xE45C, - 36365 - 11904: 0xE45A, - 36366 - 11904: 0x9DBF, - 36367 - 11904: 0xBDF1, - 36368 - 11904: 0xBDEE, - 36369 - 11904: 0xE7FB, - 36370 - 11904: 0xE841, - 36371 - 11904: 0xE843, - 36372 - 11904: 0xE840, - 36373 - 11904: 0xE7F8, - 36374 - 11904: 0xE7FA, - 36375 - 11904: 0xE845, - 36376 - 11904: 0xE842, - 36377 - 11904: 0xE7FC, - 36378 - 11904: 0xE846, - 36379 - 11904: 0xE7F9, - 36380 - 11904: 0xE844, - 36381 - 11904: 0xBDEF, - 36382 - 11904: 0xBDF5, - 36383 - 11904: 0xBDF3, - 36384 - 11904: 0xE7F3, - 36385 - 11904: 0xBDF4, - 36386 - 11904: 0xBDF0, - 36387 - 11904: 0xE7F4, - 36388 - 11904: 0xE7F6, - 36389 - 11904: 0xE7F5, - 36390 - 11904: 0xE7FD, - 36391 - 11904: 0xE7FE, - 36392 - 11904: 0x9FF6, - 36393 - 11904: 0xBDF2, - 36394 - 11904: 0x95C8, - 36395 - 11904: 0xBDED, - 36397 - 11904: 0x9E5A, - 36398 - 11904: 0xE7F7, - 36400 - 11904: 0xEBC6, - 36401 - 11904: 0xBFE2, - 36403 - 11904: 0xEBBD, - 36404 - 11904: 0xBFE3, - 36405 - 11904: 0xBFE6, - 36406 - 11904: 0xEBC2, - 36408 - 11904: 0xEBBF, - 36409 - 11904: 0xBFE5, - 36410 - 11904: 0x99E3, - 36412 - 11904: 0xEBC3, - 36413 - 11904: 0xEBC4, - 36414 - 11904: 0xEBBE, - 36415 - 11904: 0xEBC7, - 36416 - 11904: 0xEBC0, - 36417 - 11904: 0xEBC5, - 36418 - 11904: 0xBFE4, - 36420 - 11904: 0xBFE1, - 36421 - 11904: 0xEBC1, - 36422 - 11904: 0x8A4A, - 36423 - 11904: 0xEEBF, - 36424 - 11904: 0xC1D0, - 36425 - 11904: 0xC1CE, - 36426 - 11904: 0xC1D1, - 36427 - 11904: 0xC1CF, - 36428 - 11904: 0xEEBE, - 36429 - 11904: 0xEEBB, - 36430 - 11904: 0xEEBA, - 36431 - 11904: 0x9FF1, - 36432 - 11904: 0xEEBD, - 36435 - 11904: 0xEEBC, - 36436 - 11904: 0xF145, - 36437 - 11904: 0xC2DE, - 36438 - 11904: 0xF0FB, - 36439 - 11904: 0xF0FA, - 36441 - 11904: 0xC2D9, - 36442 - 11904: 0xF141, - 36443 - 11904: 0xF140, - 36444 - 11904: 0xF0F7, - 36445 - 11904: 0xF143, - 36446 - 11904: 0xF0FC, - 36447 - 11904: 0xC2DD, - 36448 - 11904: 0xF0F9, - 36449 - 11904: 0xF142, - 36450 - 11904: 0xF0F8, - 36451 - 11904: 0xC2DA, - 36452 - 11904: 0xC2DC, - 36453 - 11904: 0xF0FD, - 36454 - 11904: 0xC2DB, - 36455 - 11904: 0xF0FE, - 36456 - 11904: 0x8AA7, - 36457 - 11904: 0xF144, - 36458 - 11904: 0xF352, - 36460 - 11904: 0xC3DE, - 36461 - 11904: 0xF34F, - 36463 - 11904: 0xF353, - 36465 - 11904: 0x99E6, - 36466 - 11904: 0xC3DB, - 36467 - 11904: 0xF351, - 36468 - 11904: 0xC3E0, - 36469 - 11904: 0x9FF7, - 36470 - 11904: 0xC3DD, - 36471 - 11904: 0x9FED, - 36472 - 11904: 0xF350, - 36474 - 11904: 0xC3DF, - 36475 - 11904: 0xF354, - 36476 - 11904: 0xC3DA, - 36478 - 11904: 0x8A5C, - 36480 - 11904: 0x9DAE, - 36481 - 11904: 0xC4BC, - 36482 - 11904: 0xC4BE, - 36484 - 11904: 0xF4D9, - 36485 - 11904: 0xC4BD, - 36486 - 11904: 0xF4D7, - 36487 - 11904: 0xC3DC, - 36488 - 11904: 0xF4D8, - 36489 - 11904: 0xC4BB, - 36490 - 11904: 0xC543, - 36491 - 11904: 0xC545, - 36492 - 11904: 0xF656, - 36493 - 11904: 0xC544, - 36494 - 11904: 0xF655, - 36496 - 11904: 0xF761, - 36497 - 11904: 0xC5AD, - 36498 - 11904: 0xF760, - 36499 - 11904: 0xC5AE, - 36500 - 11904: 0xF75E, - 36501 - 11904: 0xF75D, - 36502 - 11904: 0xF762, - 36503 - 11904: 0xF763, - 36504 - 11904: 0xF846, - 36506 - 11904: 0xF75F, - 36509 - 11904: 0xF8C6, - 36510 - 11904: 0xF8C3, - 36511 - 11904: 0xF8C4, - 36512 - 11904: 0xF8C5, - 36513 - 11904: 0xC65C, - 36515 - 11904: 0xF951, - 36516 - 11904: 0xF950, - 36517 - 11904: 0xF94F, - 36518 - 11904: 0xF970, - 36519 - 11904: 0x95C9, - 36520 - 11904: 0xF9BE, - 36521 - 11904: 0xF9AB, - 36522 - 11904: 0xC66E, - 36523 - 11904: 0xA8AD, - 36524 - 11904: 0xB060, - 36525 - 11904: 0x9048, - 36528 - 11904: 0x99E8, - 36530 - 11904: 0xB8FA, - 36534 - 11904: 0x9049, - 36537 - 11904: 0x8CBA, - 36538 - 11904: 0xBDF6, - 36540 - 11904: 0x90B1, - 36541 - 11904: 0xEBC8, - 36544 - 11904: 0xC2DF, - 36546 - 11904: 0xF355, - 36547 - 11904: 0x904A, - 36553 - 11904: 0xF9AC, - 36554 - 11904: 0xA8AE, - 36555 - 11904: 0xAAEE, - 36556 - 11904: 0xAD79, - 36557 - 11904: 0xAD78, - 36558 - 11904: 0x99EA, - 36559 - 11904: 0xB063, - 36561 - 11904: 0xD3E8, - 36562 - 11904: 0xB061, - 36563 - 11904: 0xD3E9, - 36564 - 11904: 0xB062, - 36567 - 11904: 0xD7DF, - 36568 - 11904: 0xD7DB, - 36570 - 11904: 0x9BD1, - 36571 - 11904: 0xB36D, - 36572 - 11904: 0xD7DE, - 36573 - 11904: 0xD7DD, - 36574 - 11904: 0xD7DC, - 36575 - 11904: 0xB36E, - 36576 - 11904: 0xD7E0, - 36577 - 11904: 0xD7E1, - 36578 - 11904: 0x99EB, - 36580 - 11904: 0x99EC, - 36581 - 11904: 0xDC43, - 36582 - 11904: 0xDC41, - 36583 - 11904: 0xDC45, - 36584 - 11904: 0xDC46, - 36585 - 11904: 0xDC4C, - 36587 - 11904: 0xDC48, - 36588 - 11904: 0xDC4A, - 36589 - 11904: 0x99ED, - 36590 - 11904: 0xDC42, - 36591 - 11904: 0xDBFC, - 36593 - 11904: 0xDC49, - 36594 - 11904: 0x99EE, - 36596 - 11904: 0xDC4B, - 36597 - 11904: 0xDC44, - 36598 - 11904: 0xDC47, - 36599 - 11904: 0xDBFD, - 36600 - 11904: 0xB662, - 36601 - 11904: 0xDC40, - 36602 - 11904: 0xDBFE, - 36603 - 11904: 0xB661, - 36604 - 11904: 0xB663, - 36606 - 11904: 0xB8FD, - 36607 - 11904: 0xE075, - 36608 - 11904: 0xE077, - 36609 - 11904: 0xE076, - 36610 - 11904: 0xE07B, - 36611 - 11904: 0xB8FB, - 36613 - 11904: 0xE078, - 36614 - 11904: 0xE074, - 36615 - 11904: 0xE079, - 36616 - 11904: 0xE07A, - 36617 - 11904: 0xB8FC, - 36618 - 11904: 0xB8FE, - 36619 - 11904: 0xE07C, - 36621 - 11904: 0xE467, - 36622 - 11904: 0xE466, - 36624 - 11904: 0xE464, - 36625 - 11904: 0xE465, - 36626 - 11904: 0xBBB3, - 36627 - 11904: 0xBBB5, - 36628 - 11904: 0xBBB2, - 36629 - 11904: 0xBBB4, - 36630 - 11904: 0xE84D, - 36631 - 11904: 0xE84E, - 36632 - 11904: 0xE849, - 36633 - 11904: 0x904C, - 36634 - 11904: 0xE84A, - 36635 - 11904: 0xBDF8, - 36636 - 11904: 0xBDFD, - 36637 - 11904: 0xBDF7, - 36638 - 11904: 0xBDFE, - 36639 - 11904: 0xBDF9, - 36640 - 11904: 0xE84B, - 36643 - 11904: 0xE84C, - 36644 - 11904: 0xE848, - 36645 - 11904: 0xBE40, - 36646 - 11904: 0xBDFB, - 36649 - 11904: 0xBDFA, - 36650 - 11904: 0xBDFC, - 36652 - 11904: 0xE847, - 36653 - 11904: 0x904D, - 36654 - 11904: 0xEBCA, - 36655 - 11904: 0xBFE8, - 36656 - 11904: 0x95CB, - 36658 - 11904: 0xEBCC, - 36659 - 11904: 0xBFEA, - 36660 - 11904: 0xEBCF, - 36661 - 11904: 0xEBCB, - 36662 - 11904: 0xEBC9, - 36663 - 11904: 0xEBCE, - 36664 - 11904: 0xBFE9, - 36665 - 11904: 0xEBCD, - 36667 - 11904: 0xBFE7, - 36670 - 11904: 0xC1D3, - 36671 - 11904: 0xC1D6, - 36672 - 11904: 0xEEC1, - 36673 - 11904: 0x97E2, - 36674 - 11904: 0xC1D4, - 36675 - 11904: 0xEEC0, - 36676 - 11904: 0xC1D2, - 36677 - 11904: 0xC1D5, - 36678 - 11904: 0xF146, - 36679 - 11904: 0xF147, - 36680 - 11904: 0xF148, - 36681 - 11904: 0xC2E0, - 36682 - 11904: 0x95CC, - 36683 - 11904: 0xF149, - 36685 - 11904: 0xC2E1, - 36686 - 11904: 0xC3E2, - 36687 - 11904: 0xF358, - 36688 - 11904: 0xF359, - 36689 - 11904: 0xF357, - 36690 - 11904: 0xF356, - 36691 - 11904: 0xF35A, - 36692 - 11904: 0xC3E1, - 36693 - 11904: 0xF4DD, - 36694 - 11904: 0xF4DB, - 36695 - 11904: 0xF4DC, - 36696 - 11904: 0xF4DE, - 36697 - 11904: 0xF4DA, - 36698 - 11904: 0xF4DF, - 36699 - 11904: 0xF658, - 36700 - 11904: 0x9F78, - 36701 - 11904: 0xF659, - 36702 - 11904: 0xF657, - 36703 - 11904: 0xC546, - 36704 - 11904: 0xF764, - 36705 - 11904: 0xC5AF, - 36706 - 11904: 0xF765, - 36707 - 11904: 0xF848, - 36708 - 11904: 0xF847, - 36710 - 11904: 0x897C, - 36711 - 11904: 0x897D, - 36718 - 11904: 0x897E, - 36755 - 11904: 0x995D, - 36763 - 11904: 0xA8AF, - 36764 - 11904: 0xB664, - 36767 - 11904: 0xB940, - 36768 - 11904: 0x9B5A, - 36771 - 11904: 0xBBB6, - 36773 - 11904: 0x9050, - 36774 - 11904: 0xBFEC, - 36775 - 11904: 0x8C4F, - 36776 - 11904: 0xBFEB, - 36781 - 11904: 0xC3E3, - 36782 - 11904: 0xC47C, - 36783 - 11904: 0xC547, - 36784 - 11904: 0xA8B0, - 36785 - 11904: 0xB064, - 36786 - 11904: 0xB941, - 36787 - 11904: 0x9054, - 36788 - 11904: 0xF35B, - 36789 - 11904: 0xC6D6, - 36790 - 11904: 0x9AA8, - 36791 - 11904: 0x99EF, - 36792 - 11904: 0xFEEB, - 36793 - 11904: 0x9DA3, - 36794 - 11904: 0x9DA1, - 36795 - 11904: 0x9943, - 36796 - 11904: 0x9945, - 36798 - 11904: 0x9D7D, - 36799 - 11904: 0xCBA6, - 36801 - 11904: 0x99F0, - 36802 - 11904: 0xA8B1, - 36804 - 11904: 0xA8B4, - 36805 - 11904: 0xA8B3, - 36806 - 11904: 0xA8B2, - 36809 - 11904: 0xCBA5, - 36810 - 11904: 0x99F1, - 36811 - 11904: 0xCDCD, - 36812 - 11904: 0x99F2, - 36813 - 11904: 0xCDCF, - 36814 - 11904: 0xAAEF, - 36815 - 11904: 0x8CBC, - 36816 - 11904: 0x9D60, - 36817 - 11904: 0xAAF1, - 36818 - 11904: 0xCDCC, - 36819 - 11904: 0xCDCE, - 36820 - 11904: 0xAAF0, - 36821 - 11904: 0xCDD1, - 36822 - 11904: 0xCDD0, - 36823 - 11904: 0xCDD2, - 36826 - 11904: 0xA0A3, - 36832 - 11904: 0xD0B6, - 36833 - 11904: 0xD0B4, - 36834 - 11904: 0xAD7C, - 36835 - 11904: 0xD0B3, - 36836 - 11904: 0xADA3, - 36837 - 11904: 0xAD7E, - 36838 - 11904: 0xAD7B, - 36840 - 11904: 0xADA4, - 36842 - 11904: 0xAD7D, - 36843 - 11904: 0xADA2, - 36845 - 11904: 0xADA1, - 36846 - 11904: 0xD0B5, - 36848 - 11904: 0xAD7A, - 36852 - 11904: 0xB06A, - 36853 - 11904: 0xD3EB, - 36854 - 11904: 0xD3F1, - 36855 - 11904: 0xB067, - 36856 - 11904: 0xB06E, - 36857 - 11904: 0x905B, - 36858 - 11904: 0xB069, - 36859 - 11904: 0xD3EE, - 36860 - 11904: 0xD3F0, - 36861 - 11904: 0xB06C, - 36862 - 11904: 0xD3EA, - 36863 - 11904: 0xD3ED, - 36864 - 11904: 0xB068, - 36865 - 11904: 0xB065, - 36866 - 11904: 0xD3EC, - 36867 - 11904: 0xB06B, - 36868 - 11904: 0xD3EF, - 36869 - 11904: 0xB06D, - 36870 - 11904: 0xB066, - 36872 - 11904: 0x9EDB, - 36875 - 11904: 0xD7E3, - 36876 - 11904: 0xD7E6, - 36877 - 11904: 0xB370, - 36879 - 11904: 0xB37A, - 36880 - 11904: 0xB376, - 36881 - 11904: 0xD7E4, - 36882 - 11904: 0x9D79, - 36884 - 11904: 0xB37E, - 36885 - 11904: 0xB377, - 36886 - 11904: 0xB37C, - 36887 - 11904: 0xB372, - 36889 - 11904: 0xB36F, - 36890 - 11904: 0xB371, - 36891 - 11904: 0xB37D, - 36892 - 11904: 0xD7E5, - 36893 - 11904: 0xB375, - 36894 - 11904: 0xB378, - 36895 - 11904: 0xB374, - 36896 - 11904: 0xB379, - 36897 - 11904: 0xD7E7, - 36898 - 11904: 0xB37B, - 36899 - 11904: 0xB373, - 36900 - 11904: 0xD7E2, - 36909 - 11904: 0xDC4D, - 36910 - 11904: 0xB665, - 36911 - 11904: 0xDC4F, - 36913 - 11904: 0xB667, - 36914 - 11904: 0xB669, - 36915 - 11904: 0x99F3, - 36916 - 11904: 0xDC4E, - 36917 - 11904: 0xB666, - 36918 - 11904: 0xB66A, - 36919 - 11904: 0x9062, - 36920 - 11904: 0xB668, - 36924 - 11904: 0xB947, - 36925 - 11904: 0xE0A3, - 36926 - 11904: 0xB94F, - 36927 - 11904: 0xE07E, - 36929 - 11904: 0xB950, - 36930 - 11904: 0xB945, - 36932 - 11904: 0xE0A1, - 36934 - 11904: 0x87BD, - 36935 - 11904: 0xB94A, - 36937 - 11904: 0xE0A2, - 36938 - 11904: 0xB943, - 36939 - 11904: 0xB942, - 36940 - 11904: 0x9F55, - 36941 - 11904: 0xB94D, - 36942 - 11904: 0xB94C, - 36943 - 11904: 0xB94B, - 36944 - 11904: 0xB949, - 36945 - 11904: 0xB94E, - 36946 - 11904: 0xE07D, - 36947 - 11904: 0xB944, - 36948 - 11904: 0xB946, - 36949 - 11904: 0xB948, - 36950 - 11904: 0x9BF9, - 36952 - 11904: 0xBBB8, - 36953 - 11904: 0xBBBB, - 36955 - 11904: 0xBBBF, - 36956 - 11904: 0xBBB9, - 36957 - 11904: 0xBBBE, - 36958 - 11904: 0xBBBC, - 36960 - 11904: 0xBBB7, - 36961 - 11904: 0x9065, - 36962 - 11904: 0xBBBD, - 36963 - 11904: 0xBBBA, - 36964 - 11904: 0x96E0, - 36967 - 11904: 0xE852, - 36968 - 11904: 0xBE43, - 36969 - 11904: 0xBE41, - 36971 - 11904: 0xE853, - 36972 - 11904: 0x98BE, - 36973 - 11904: 0xBE44, - 36974 - 11904: 0xBE42, - 36975 - 11904: 0xE851, - 36976 - 11904: 0xE850, - 36978 - 11904: 0xBFF0, - 36979 - 11904: 0xE84F, - 36980 - 11904: 0xBFEE, - 36981 - 11904: 0xBFED, - 36982 - 11904: 0xEBD0, - 36983 - 11904: 0xBE45, - 36984 - 11904: 0xBFEF, - 36985 - 11904: 0xEBD1, - 36986 - 11904: 0xBFF2, - 36987 - 11904: 0xEBD2, - 36988 - 11904: 0xBFF1, - 36989 - 11904: 0xC1D8, - 36990 - 11904: 0xEEC3, - 36991 - 11904: 0xC1D7, - 36992 - 11904: 0xC1DC, - 36993 - 11904: 0xC1DA, - 36994 - 11904: 0xC1DB, - 36995 - 11904: 0xC2E3, - 36996 - 11904: 0xC1D9, - 36997 - 11904: 0xEEC2, - 36998 - 11904: 0xEBD3, - 36999 - 11904: 0xC2E2, - 37000 - 11904: 0xC2E4, - 37002 - 11904: 0xC3E4, - 37003 - 11904: 0xC3E5, - 37005 - 11904: 0xF4E0, - 37007 - 11904: 0xC5DE, - 37008 - 11904: 0xC5DD, - 37009 - 11904: 0xA8B6, - 37012 - 11904: 0xCA55, - 37013 - 11904: 0xB06F, - 37015 - 11904: 0xCA52, - 37016 - 11904: 0xCA53, - 37017 - 11904: 0xCA51, - 37019 - 11904: 0xCA54, - 37022 - 11904: 0xCBAA, - 37023 - 11904: 0xCBA7, - 37024 - 11904: 0xCBAC, - 37025 - 11904: 0xCBA8, - 37026 - 11904: 0xA8B7, - 37027 - 11904: 0xA8BA, - 37029 - 11904: 0xCBA9, - 37030 - 11904: 0xA8B9, - 37031 - 11904: 0xCBAB, - 37032 - 11904: 0x9068, - 37034 - 11904: 0xA8B8, - 37038 - 11904: 0x906C, - 37039 - 11904: 0xCDD5, - 37040 - 11904: 0xCDD7, - 37041 - 11904: 0xAAF4, - 37042 - 11904: 0xCDD3, - 37043 - 11904: 0xCDD6, - 37044 - 11904: 0xCDD4, - 37045 - 11904: 0xAAF2, - 37046 - 11904: 0xAAF5, - 37048 - 11904: 0xAAF3, - 37051 - 11904: 0x95D8, - 37053 - 11904: 0xD0B8, - 37054 - 11904: 0xD0BC, - 37055 - 11904: 0xD0B9, - 37057 - 11904: 0xADA7, - 37059 - 11904: 0xADA8, - 37060 - 11904: 0x906A, - 37061 - 11904: 0xD0BB, - 37063 - 11904: 0xD0BD, - 37064 - 11904: 0xD0BF, - 37066 - 11904: 0xADA5, - 37067 - 11904: 0xD0BE, - 37070 - 11904: 0xADA6, - 37076 - 11904: 0xD7EE, - 37077 - 11904: 0xD0BA, - 37078 - 11904: 0xD3F2, - 37079 - 11904: 0xD3FB, - 37080 - 11904: 0xD3F9, - 37081 - 11904: 0xD3F4, - 37082 - 11904: 0xD3F5, - 37083 - 11904: 0xD3FA, - 37084 - 11904: 0xD3FC, - 37085 - 11904: 0xB071, - 37087 - 11904: 0xD3F7, - 37088 - 11904: 0xD3F3, - 37089 - 11904: 0xB070, - 37090 - 11904: 0xB072, - 37091 - 11904: 0xD3F6, - 37092 - 11904: 0xD3FD, - 37093 - 11904: 0xD3F8, - 37096 - 11904: 0xB3A1, - 37097 - 11904: 0xD7F1, - 37098 - 11904: 0xD7E9, - 37099 - 11904: 0xD7EF, - 37100 - 11904: 0xD7F0, - 37101 - 11904: 0xB3A2, - 37103 - 11904: 0xD7E8, - 37104 - 11904: 0xD7EA, - 37105 - 11904: 0xD0B7, - 37106 - 11904: 0xD7EC, - 37107 - 11904: 0xD7ED, - 37108 - 11904: 0xD7EB, - 37109 - 11904: 0xB66C, - 37113 - 11904: 0xDC56, - 37114 - 11904: 0xEBD4, - 37115 - 11904: 0xDC57, - 37116 - 11904: 0xDC54, - 37117 - 11904: 0xB3A3, - 37118 - 11904: 0xB66E, - 37119 - 11904: 0xDC53, - 37120 - 11904: 0xDC59, - 37121 - 11904: 0xDC58, - 37122 - 11904: 0xB66B, - 37123 - 11904: 0xDC5C, - 37124 - 11904: 0xDC52, - 37125 - 11904: 0xDC5B, - 37126 - 11904: 0xDC50, - 37127 - 11904: 0xDC5A, - 37128 - 11904: 0xDC55, - 37129 - 11904: 0xB66D, - 37131 - 11904: 0xE0AA, - 37133 - 11904: 0xE0A5, - 37134 - 11904: 0xE0AB, - 37135 - 11904: 0xE0A6, - 37136 - 11904: 0xE0A4, - 37137 - 11904: 0xE0A7, - 37138 - 11904: 0xB951, - 37140 - 11904: 0xE0A9, - 37142 - 11904: 0xE0A8, - 37143 - 11904: 0xB952, - 37144 - 11904: 0xBBC1, - 37145 - 11904: 0xBBC0, - 37146 - 11904: 0xE46E, - 37147 - 11904: 0xE471, - 37148 - 11904: 0xE469, - 37149 - 11904: 0xE46D, - 37150 - 11904: 0xBBC2, - 37151 - 11904: 0xE46C, - 37152 - 11904: 0xE46A, - 37153 - 11904: 0xE470, - 37154 - 11904: 0xE46B, - 37155 - 11904: 0xE468, - 37156 - 11904: 0xE46F, - 37158 - 11904: 0xE859, - 37159 - 11904: 0xBE48, - 37160 - 11904: 0xF14A, - 37161 - 11904: 0xE856, - 37162 - 11904: 0xE857, - 37163 - 11904: 0xE855, - 37164 - 11904: 0xDC51, - 37165 - 11904: 0xBE47, - 37166 - 11904: 0xE85A, - 37167 - 11904: 0xE854, - 37168 - 11904: 0xBE46, - 37169 - 11904: 0xBE49, - 37170 - 11904: 0xE858, - 37171 - 11904: 0xEBD5, - 37172 - 11904: 0xBFF3, - 37173 - 11904: 0xEBD6, - 37174 - 11904: 0xEBD7, - 37176 - 11904: 0xEEC4, - 37177 - 11904: 0xC1DD, - 37178 - 11904: 0xF14B, - 37179 - 11904: 0xF14C, - 37182 - 11904: 0xF14D, - 37183 - 11904: 0xF35D, - 37184 - 11904: 0xF35C, - 37185 - 11904: 0xF4E2, - 37187 - 11904: 0xF4E1, - 37188 - 11904: 0xF65B, - 37189 - 11904: 0xF65C, - 37190 - 11904: 0xF65A, - 37191 - 11904: 0xF766, - 37192 - 11904: 0xC5B0, - 37193 - 11904: 0xA8BB, - 37194 - 11904: 0xADAA, - 37195 - 11904: 0xADA9, - 37196 - 11904: 0xB075, - 37197 - 11904: 0xB074, - 37198 - 11904: 0xD440, - 37199 - 11904: 0xD441, - 37200 - 11904: 0xD3FE, - 37201 - 11904: 0x9FB2, - 37202 - 11904: 0xB073, - 37203 - 11904: 0xD7F5, - 37205 - 11904: 0xD7F6, - 37206 - 11904: 0xD7F2, - 37207 - 11904: 0xB3A4, - 37208 - 11904: 0xD7F3, - 37209 - 11904: 0x9FAE, - 37210 - 11904: 0xD7F4, - 37212 - 11904: 0x9FB0, - 37214 - 11904: 0x89AD, - 37215 - 11904: 0xDC5F, - 37216 - 11904: 0xDC61, - 37217 - 11904: 0xDC5D, - 37218 - 11904: 0xDC60, - 37219 - 11904: 0xB66F, - 37220 - 11904: 0xDC5E, - 37221 - 11904: 0xB670, - 37223 - 11904: 0x906E, - 37224 - 11904: 0xDD73, - 37225 - 11904: 0xB955, - 37226 - 11904: 0xB954, - 37228 - 11904: 0xB953, - 37230 - 11904: 0xE0AC, - 37231 - 11904: 0xE0AD, - 37232 - 11904: 0x9E71, - 37234 - 11904: 0xE473, - 37235 - 11904: 0xE475, - 37236 - 11904: 0xBBC6, - 37237 - 11904: 0xBBC3, - 37238 - 11904: 0x9E4A, - 37239 - 11904: 0xBBC5, - 37240 - 11904: 0xBBC4, - 37241 - 11904: 0xE474, - 37242 - 11904: 0xE472, - 37244 - 11904: 0x9FDC, - 37248 - 11904: 0xE861, - 37249 - 11904: 0xE85E, - 37250 - 11904: 0xE85F, - 37251 - 11904: 0xBE4D, - 37252 - 11904: 0xE860, - 37253 - 11904: 0xE85B, - 37254 - 11904: 0xE85C, - 37255 - 11904: 0xBE4A, - 37257 - 11904: 0xBE4B, - 37258 - 11904: 0xE85D, - 37259 - 11904: 0xBE4C, - 37260 - 11904: 0x89AB, - 37261 - 11904: 0xEBDB, - 37262 - 11904: 0x9FB8, - 37263 - 11904: 0xEBDC, - 37264 - 11904: 0xEBD9, - 37265 - 11904: 0xEBDA, - 37266 - 11904: 0xBFF4, - 37267 - 11904: 0xEBD8, - 37273 - 11904: 0xEEC8, - 37274 - 11904: 0xEEC5, - 37275 - 11904: 0xEEC7, - 37276 - 11904: 0xC1E0, - 37277 - 11904: 0xEECB, - 37278 - 11904: 0xC1DF, - 37279 - 11904: 0xEEC9, - 37280 - 11904: 0xEECC, - 37281 - 11904: 0xEECA, - 37282 - 11904: 0xEEC6, - 37283 - 11904: 0xC1DE, - 37285 - 11904: 0xF14F, - 37287 - 11904: 0xF150, - 37288 - 11904: 0xF14E, - 37289 - 11904: 0x9070, - 37290 - 11904: 0xF152, - 37291 - 11904: 0xC2E5, - 37292 - 11904: 0xC2E6, - 37293 - 11904: 0xF35F, - 37294 - 11904: 0xC3E7, - 37295 - 11904: 0xF151, - 37296 - 11904: 0xF35E, - 37297 - 11904: 0xC3E6, - 37298 - 11904: 0xF4E5, - 37299 - 11904: 0xF4E6, - 37300 - 11904: 0xC4BF, - 37301 - 11904: 0xF4E4, - 37302 - 11904: 0x8B63, - 37303 - 11904: 0xF4E3, - 37305 - 11904: 0xF65D, - 37306 - 11904: 0xC548, - 37307 - 11904: 0x95DC, - 37308 - 11904: 0xF849, - 37309 - 11904: 0xF8C8, - 37310 - 11904: 0xF8C7, - 37312 - 11904: 0xC643, - 37313 - 11904: 0xC65D, - 37314 - 11904: 0xF8C9, - 37315 - 11904: 0xF971, - 37316 - 11904: 0x9071, - 37317 - 11904: 0xC66F, - 37318 - 11904: 0xA8BC, - 37319 - 11904: 0xAAF6, - 37321 - 11904: 0xB956, - 37323 - 11904: 0xC4C0, - 37324 - 11904: 0xA8BD, - 37325 - 11904: 0xADAB, - 37326 - 11904: 0xB3A5, - 37327 - 11904: 0xB671, - 37328 - 11904: 0xC2E7, - 37329 - 11904: 0xAAF7, - 37331 - 11904: 0xD0C1, - 37332 - 11904: 0xD0C0, - 37333 - 11904: 0xD442, - 37334 - 11904: 0xFC5E, - 37335 - 11904: 0xB078, - 37336 - 11904: 0xB076, - 37337 - 11904: 0xB07A, - 37338 - 11904: 0xD444, - 37340 - 11904: 0xB079, - 37341 - 11904: 0xB077, - 37343 - 11904: 0x8949, - 37346 - 11904: 0xD443, - 37347 - 11904: 0xB3A8, - 37348 - 11904: 0xD7FC, - 37349 - 11904: 0x965B, - 37350 - 11904: 0xB3A7, - 37351 - 11904: 0xB3A9, - 37352 - 11904: 0xD842, - 37353 - 11904: 0xB3AB, - 37354 - 11904: 0xD7FE, - 37355 - 11904: 0xD840, - 37356 - 11904: 0xD7F7, - 37357 - 11904: 0xB3AA, - 37358 - 11904: 0xD843, - 37361 - 11904: 0xD7F9, - 37363 - 11904: 0xD7FA, - 37364 - 11904: 0xD7F8, - 37365 - 11904: 0xB3A6, - 37366 - 11904: 0x8C50, - 37367 - 11904: 0xD841, - 37368 - 11904: 0xD7FB, - 37369 - 11904: 0xD7FD, - 37370 - 11904: 0x94A6, - 37373 - 11904: 0xDC6D, - 37374 - 11904: 0x8FD5, - 37375 - 11904: 0xDC6C, - 37376 - 11904: 0xDC6A, - 37377 - 11904: 0xDC62, - 37378 - 11904: 0xDC71, - 37379 - 11904: 0xDC65, - 37380 - 11904: 0xDC6F, - 37381 - 11904: 0xDC76, - 37382 - 11904: 0xDC6E, - 37383 - 11904: 0xB679, - 37384 - 11904: 0x9E73, - 37385 - 11904: 0xB675, - 37386 - 11904: 0xDC63, - 37388 - 11904: 0xDC69, - 37389 - 11904: 0xB677, - 37390 - 11904: 0x9075, - 37391 - 11904: 0xDC68, - 37392 - 11904: 0xB678, - 37393 - 11904: 0xB67A, - 37394 - 11904: 0xDC6B, - 37395 - 11904: 0x99F7, - 37396 - 11904: 0xB672, - 37397 - 11904: 0xB673, - 37398 - 11904: 0xDC77, - 37399 - 11904: 0xDC75, - 37400 - 11904: 0x87B2, - 37401 - 11904: 0xDC74, - 37402 - 11904: 0xDC66, - 37404 - 11904: 0xDC72, - 37406 - 11904: 0xB676, - 37409 - 11904: 0x8CBF, - 37411 - 11904: 0xB674, - 37412 - 11904: 0xDC73, - 37413 - 11904: 0xDC64, - 37414 - 11904: 0xDC67, - 37415 - 11904: 0xDC70, - 37416 - 11904: 0x99F9, - 37418 - 11904: 0x9663, - 37419 - 11904: 0x95B9, - 37421 - 11904: 0xE4BA, - 37422 - 11904: 0xE0B7, - 37424 - 11904: 0xE0B0, - 37425 - 11904: 0xE0C3, - 37426 - 11904: 0xE0CC, - 37427 - 11904: 0xE0B3, - 37428 - 11904: 0xB961, - 37429 - 11904: 0x94D4, - 37430 - 11904: 0xE0C0, - 37431 - 11904: 0xB957, - 37432 - 11904: 0xB959, - 37433 - 11904: 0xB965, - 37434 - 11904: 0xE0B1, - 37436 - 11904: 0xFCFA, - 37437 - 11904: 0xB95A, - 37438 - 11904: 0xB95C, - 37439 - 11904: 0xB966, - 37440 - 11904: 0xB95B, - 37441 - 11904: 0x9077, - 37444 - 11904: 0x90AB, - 37445 - 11904: 0xB964, - 37446 - 11904: 0xE0B9, - 37448 - 11904: 0xE0AE, - 37449 - 11904: 0xB962, - 37450 - 11904: 0xE0B8, - 37451 - 11904: 0xB95E, - 37452 - 11904: 0xE0CA, - 37453 - 11904: 0xB963, - 37454 - 11904: 0xE0C8, - 37455 - 11904: 0xE0BC, - 37456 - 11904: 0xE0C6, - 37457 - 11904: 0xB960, - 37458 - 11904: 0xE0AF, - 37459 - 11904: 0xE0C9, - 37460 - 11904: 0xE0C4, - 37461 - 11904: 0x9D4D, - 37462 - 11904: 0xE0CB, - 37463 - 11904: 0xB958, - 37464 - 11904: 0x99FA, - 37466 - 11904: 0xB967, - 37467 - 11904: 0xB95D, - 37469 - 11904: 0x92E3, - 37470 - 11904: 0xE0B5, - 37471 - 11904: 0x97BB, - 37472 - 11904: 0xE0BD, - 37473 - 11904: 0xE0C1, - 37474 - 11904: 0x9078, - 37475 - 11904: 0xE0C5, - 37476 - 11904: 0xB95F, - 37477 - 11904: 0xE0B4, - 37478 - 11904: 0xE0B2, - 37479 - 11904: 0xE0BE, - 37483 - 11904: 0x99FB, - 37484 - 11904: 0xE0BB, - 37485 - 11904: 0xE0BA, - 37486 - 11904: 0x97E0, - 37487 - 11904: 0xE0BF, - 37488 - 11904: 0xE0C2, - 37490 - 11904: 0xE0C7, - 37494 - 11904: 0xE478, - 37495 - 11904: 0x96DC, - 37496 - 11904: 0xBBC7, - 37497 - 11904: 0xE4A4, - 37498 - 11904: 0xE47A, - 37499 - 11904: 0xBBCC, - 37500 - 11904: 0xBBD0, - 37501 - 11904: 0xE4AD, - 37502 - 11904: 0xE4B5, - 37503 - 11904: 0xE4A6, - 37504 - 11904: 0xBBC8, - 37505 - 11904: 0x9CA8, - 37506 - 11904: 0xE4AA, - 37507 - 11904: 0xE0B6, - 37508 - 11904: 0x9772, - 37509 - 11904: 0xBBC9, - 37510 - 11904: 0xE4B1, - 37511 - 11904: 0xE4B6, - 37512 - 11904: 0xE4AE, - 37513 - 11904: 0x9440, - 37514 - 11904: 0xE4B0, - 37515 - 11904: 0xE4B9, - 37516 - 11904: 0xE4B2, - 37517 - 11904: 0xE47E, - 37518 - 11904: 0xE4A9, - 37519 - 11904: 0x92F2, - 37521 - 11904: 0xBBD1, - 37523 - 11904: 0xBBCD, - 37524 - 11904: 0xE47C, - 37525 - 11904: 0xE4AB, - 37526 - 11904: 0xBBCB, - 37527 - 11904: 0xE4A5, - 37528 - 11904: 0xBBCA, - 37529 - 11904: 0xE4B3, - 37530 - 11904: 0xE4A2, - 37531 - 11904: 0xE479, - 37532 - 11904: 0xBBCE, - 37533 - 11904: 0xE4B8, - 37536 - 11904: 0xE47B, - 37537 - 11904: 0xE4AF, - 37538 - 11904: 0xE4AC, - 37539 - 11904: 0xE4A7, - 37540 - 11904: 0xE477, - 37541 - 11904: 0xE476, - 37542 - 11904: 0xE4A1, - 37543 - 11904: 0xE4B4, - 37544 - 11904: 0xBBCF, - 37545 - 11904: 0xE4B7, - 37546 - 11904: 0xE47D, - 37547 - 11904: 0xE4A3, - 37548 - 11904: 0xBE52, - 37550 - 11904: 0x99FD, - 37553 - 11904: 0x99FC, - 37554 - 11904: 0xBE5A, - 37555 - 11904: 0xBE55, - 37556 - 11904: 0xE8A4, - 37557 - 11904: 0xE8A1, - 37558 - 11904: 0xE867, - 37559 - 11904: 0xBE50, - 37561 - 11904: 0xF9D7, - 37562 - 11904: 0x964A, - 37563 - 11904: 0xBE4F, - 37564 - 11904: 0xBE56, - 37566 - 11904: 0x96D8, - 37567 - 11904: 0x99FE, - 37568 - 11904: 0xE865, - 37569 - 11904: 0xBE54, - 37570 - 11904: 0xE871, - 37571 - 11904: 0xE863, - 37572 - 11904: 0xE864, - 37573 - 11904: 0xBE4E, - 37574 - 11904: 0xE8A3, - 37575 - 11904: 0xBE58, - 37576 - 11904: 0xE874, - 37577 - 11904: 0xE879, - 37578 - 11904: 0xE873, - 37579 - 11904: 0xEBEE, - 37580 - 11904: 0xE86F, - 37581 - 11904: 0xE877, - 37582 - 11904: 0xE875, - 37583 - 11904: 0xE868, - 37584 - 11904: 0xE862, - 37585 - 11904: 0xE87D, - 37586 - 11904: 0xBE57, - 37587 - 11904: 0xE87E, - 37588 - 11904: 0x904B, - 37589 - 11904: 0xE878, - 37591 - 11904: 0xE86D, - 37592 - 11904: 0xE86B, - 37593 - 11904: 0xE866, - 37595 - 11904: 0xFA41, - 37597 - 11904: 0xE86E, - 37598 - 11904: 0xE87B, - 37599 - 11904: 0xE86A, - 37600 - 11904: 0xE87A, - 37601 - 11904: 0xE8A2, - 37603 - 11904: 0x9A40, - 37604 - 11904: 0xBE53, - 37605 - 11904: 0x975B, - 37606 - 11904: 0xE876, - 37607 - 11904: 0xE87C, - 37608 - 11904: 0xE872, - 37609 - 11904: 0xE86C, - 37610 - 11904: 0xBE51, - 37611 - 11904: 0x9A41, - 37612 - 11904: 0x91DD, - 37614 - 11904: 0xE4A8, - 37615 - 11904: 0xE870, - 37616 - 11904: 0xBE59, - 37617 - 11904: 0xE869, - 37618 - 11904: 0x93FC, - 37619 - 11904: 0x9A42, - 37620 - 11904: 0x9A43, - 37622 - 11904: 0x9659, - 37623 - 11904: 0xEBF4, - 37624 - 11904: 0xBFF7, - 37625 - 11904: 0xEBF3, - 37626 - 11904: 0xEBF0, - 37627 - 11904: 0xEC44, - 37628 - 11904: 0xBFFB, - 37629 - 11904: 0x9A44, - 37630 - 11904: 0xEC41, - 37631 - 11904: 0xEBF8, - 37632 - 11904: 0xEC43, - 37633 - 11904: 0xEBE9, - 37634 - 11904: 0xEBF6, - 37635 - 11904: 0x9051, - 37636 - 11904: 0xBFFD, - 37638 - 11904: 0xEBE1, - 37639 - 11904: 0x94BF, - 37640 - 11904: 0xEBDF, - 37641 - 11904: 0xEC42, - 37643 - 11904: 0xEC40, - 37644 - 11904: 0xEBFE, - 37645 - 11904: 0xEBED, - 37646 - 11904: 0xEBEC, - 37647 - 11904: 0xEBE2, - 37648 - 11904: 0xC040, - 37650 - 11904: 0xEBE8, - 37651 - 11904: 0xEBF2, - 37652 - 11904: 0xEBFD, - 37653 - 11904: 0xC043, - 37654 - 11904: 0xEC45, - 37656 - 11904: 0xC1E8, - 37657 - 11904: 0xC045, - 37658 - 11904: 0xBFFE, - 37659 - 11904: 0xEBE6, - 37661 - 11904: 0xEBEF, - 37662 - 11904: 0xEBDE, - 37663 - 11904: 0xEBE0, - 37664 - 11904: 0xBFF5, - 37665 - 11904: 0xC042, - 37666 - 11904: 0xBFFA, - 37667 - 11904: 0xEBE7, - 37668 - 11904: 0xEBF7, - 37669 - 11904: 0xEBF1, - 37670 - 11904: 0xC041, - 37671 - 11904: 0xEBDD, - 37672 - 11904: 0xC1E3, - 37673 - 11904: 0xEBF9, - 37674 - 11904: 0xEBFC, - 37675 - 11904: 0xBFFC, - 37676 - 11904: 0x90A2, - 37677 - 11904: 0xEBEB, - 37678 - 11904: 0xC044, - 37679 - 11904: 0xBFF9, - 37680 - 11904: 0x9CAB, - 37681 - 11904: 0x9776, - 37683 - 11904: 0xBFF8, - 37684 - 11904: 0xEBF5, - 37685 - 11904: 0xEBFB, - 37686 - 11904: 0xBFF6, - 37688 - 11904: 0xEBE4, - 37689 - 11904: 0xEBFA, - 37692 - 11904: 0xEBE5, - 37696 - 11904: 0xFC55, - 37697 - 11904: 0xFE45, - 37698 - 11904: 0x94A8, - 37699 - 11904: 0x9A45, - 37700 - 11904: 0xFA4B, - 37701 - 11904: 0x9DE1, - 37702 - 11904: 0xEBEA, - 37703 - 11904: 0xEED2, - 37704 - 11904: 0x96D9, - 37705 - 11904: 0xEED7, - 37706 - 11904: 0xC1E5, - 37707 - 11904: 0xC1E7, - 37708 - 11904: 0xEEDD, - 37709 - 11904: 0xC1E1, - 37710 - 11904: 0xEEEC, - 37711 - 11904: 0xEEE3, - 37712 - 11904: 0xEED8, - 37713 - 11904: 0xEED9, - 37714 - 11904: 0xEEE2, - 37716 - 11904: 0xC1EE, - 37717 - 11904: 0xEEE1, - 37718 - 11904: 0xEED1, - 37719 - 11904: 0xEEE0, - 37720 - 11904: 0xEED4, - 37721 - 11904: 0xEEED, - 37722 - 11904: 0xC1ED, - 37723 - 11904: 0xC1EB, - 37724 - 11904: 0xEED5, - 37726 - 11904: 0xEEE8, - 37727 - 11904: 0x9774, - 37728 - 11904: 0xEEDA, - 37729 - 11904: 0xEEE7, - 37730 - 11904: 0xFDF5, - 37731 - 11904: 0xEEE9, - 37732 - 11904: 0xEED0, - 37733 - 11904: 0xC1E6, - 37734 - 11904: 0x92E5, - 37735 - 11904: 0xEEEA, - 37736 - 11904: 0x9645, - 37737 - 11904: 0x91DA, - 37738 - 11904: 0xEEDE, - 37739 - 11904: 0x90A3, - 37740 - 11904: 0xC1EA, - 37741 - 11904: 0xEEDB, - 37742 - 11904: 0xA05F, - 37744 - 11904: 0xC1EC, - 37745 - 11904: 0xEEE4, - 37747 - 11904: 0x90AF, - 37748 - 11904: 0x97BF, - 37749 - 11904: 0xC1E4, - 37750 - 11904: 0xEED6, - 37751 - 11904: 0xEEE5, - 37752 - 11904: 0x914C, - 37753 - 11904: 0xEEDF, - 37754 - 11904: 0xEBE3, - 37755 - 11904: 0xEEE6, - 37756 - 11904: 0xEED3, - 37757 - 11904: 0x967A, - 37758 - 11904: 0xC1E9, - 37760 - 11904: 0xEEEB, - 37761 - 11904: 0x91DE, - 37762 - 11904: 0xC1E2, - 37763 - 11904: 0xEECE, - 37764 - 11904: 0x9A46, - 37765 - 11904: 0xFEB0, - 37766 - 11904: 0x9779, - 37767 - 11904: 0x946C, - 37768 - 11904: 0xF160, - 37769 - 11904: 0xF159, - 37770 - 11904: 0xC2E9, - 37772 - 11904: 0xF154, - 37773 - 11904: 0xF163, - 37774 - 11904: 0xF15B, - 37775 - 11904: 0xEEDC, - 37776 - 11904: 0x9858, - 37777 - 11904: 0xF165, - 37778 - 11904: 0xF155, - 37780 - 11904: 0xC2E8, - 37781 - 11904: 0xF15F, - 37782 - 11904: 0xC2EA, - 37783 - 11904: 0xC2F2, - 37784 - 11904: 0xC2F0, - 37785 - 11904: 0xF161, - 37786 - 11904: 0xC2F1, - 37787 - 11904: 0xF157, - 37788 - 11904: 0x9266, - 37789 - 11904: 0xF158, - 37790 - 11904: 0xF15D, - 37791 - 11904: 0xF162, - 37792 - 11904: 0x93FB, - 37793 - 11904: 0xEECD, - 37794 - 11904: 0xC2EB, - 37795 - 11904: 0xF16A, - 37796 - 11904: 0xF167, - 37797 - 11904: 0xF16B, - 37798 - 11904: 0xF15E, - 37799 - 11904: 0xF15A, - 37800 - 11904: 0xF168, - 37801 - 11904: 0xF36A, - 37802 - 11904: 0xF15C, - 37804 - 11904: 0xC2EE, - 37805 - 11904: 0x9A47, - 37806 - 11904: 0xC2ED, - 37807 - 11904: 0xEECF, - 37808 - 11904: 0xC2EF, - 37809 - 11904: 0xF164, - 37810 - 11904: 0xF166, - 37811 - 11904: 0xC2EC, - 37812 - 11904: 0xF169, - 37813 - 11904: 0xF153, - 37815 - 11904: 0xF156, - 37816 - 11904: 0x9749, - 37819 - 11904: 0x9748, - 37821 - 11904: 0x934A, - 37823 - 11904: 0x9CE2, - 37824 - 11904: 0xF373, - 37826 - 11904: 0xF363, - 37827 - 11904: 0xC3EB, - 37828 - 11904: 0xF371, - 37830 - 11904: 0x9264, - 37831 - 11904: 0xF361, - 37832 - 11904: 0xC3EC, - 37834 - 11904: 0xF36C, - 37835 - 11904: 0x91DF, - 37836 - 11904: 0xF368, - 37837 - 11904: 0xC3F1, - 37838 - 11904: 0xF372, - 37839 - 11904: 0xF362, - 37840 - 11904: 0xF365, - 37841 - 11904: 0xC3E9, - 37842 - 11904: 0xF374, - 37843 - 11904: 0xFB79, - 37844 - 11904: 0xF36D, - 37845 - 11904: 0xF370, - 37846 - 11904: 0xC3EF, - 37847 - 11904: 0xC3F4, - 37848 - 11904: 0xC3F2, - 37849 - 11904: 0xF369, - 37850 - 11904: 0xF364, - 37851 - 11904: 0x96D7, - 37852 - 11904: 0xC3ED, - 37853 - 11904: 0xC3EE, - 37854 - 11904: 0xF360, - 37855 - 11904: 0xC3EA, - 37856 - 11904: 0x9343, - 37857 - 11904: 0xC3E8, - 37858 - 11904: 0xC3F0, - 37859 - 11904: 0xF36F, - 37860 - 11904: 0xC3F3, - 37862 - 11904: 0xF36B, - 37863 - 11904: 0xF375, - 37864 - 11904: 0xC3F5, - 37868 - 11904: 0xF367, - 37870 - 11904: 0xF36E, - 37872 - 11904: 0xFDCB, - 37873 - 11904: 0xFE7A, - 37875 - 11904: 0x91DB, - 37876 - 11904: 0x8C6A, - 37877 - 11904: 0xF4F3, - 37878 - 11904: 0xF542, - 37879 - 11904: 0xF4F5, - 37880 - 11904: 0xF4FC, - 37881 - 11904: 0xF366, - 37882 - 11904: 0xF4FA, - 37883 - 11904: 0xF4E9, - 37884 - 11904: 0xF540, - 37885 - 11904: 0xC4C3, - 37886 - 11904: 0xF4ED, - 37887 - 11904: 0xF4FE, - 37888 - 11904: 0xF4F4, - 37889 - 11904: 0x97AF, - 37891 - 11904: 0xC4C2, - 37892 - 11904: 0x95DD, - 37894 - 11904: 0xF544, - 37895 - 11904: 0xF4F6, - 37896 - 11904: 0x9348, - 37897 - 11904: 0xF4FB, - 37898 - 11904: 0xF4FD, - 37899 - 11904: 0xF4E7, - 37900 - 11904: 0xF541, - 37901 - 11904: 0xF4F2, - 37902 - 11904: 0xF4F7, - 37903 - 11904: 0xF4EB, - 37904 - 11904: 0xF4EF, - 37905 - 11904: 0xF543, - 37906 - 11904: 0xF4F9, - 37907 - 11904: 0xF4E8, - 37908 - 11904: 0xF4EC, - 37909 - 11904: 0xF4EE, - 37910 - 11904: 0xF4F8, - 37911 - 11904: 0x9A4B, - 37912 - 11904: 0xC4C1, - 37913 - 11904: 0xF4F1, - 37915 - 11904: 0xFC45, - 37917 - 11904: 0x9A4D, - 37920 - 11904: 0xF4EA, - 37924 - 11904: 0x91BC, - 37925 - 11904: 0x90E2, - 37926 - 11904: 0x90B4, - 37927 - 11904: 0x95E1, - 37928 - 11904: 0xF4F0, - 37929 - 11904: 0xF661, - 37930 - 11904: 0xF666, - 37931 - 11904: 0xC54F, - 37932 - 11904: 0xF668, - 37933 - 11904: 0x9A4E, - 37934 - 11904: 0xC549, - 37935 - 11904: 0x87AD, - 37936 - 11904: 0xF664, - 37937 - 11904: 0xF66A, - 37938 - 11904: 0xC54E, - 37939 - 11904: 0xC54A, - 37941 - 11904: 0xC54B, - 37942 - 11904: 0xF660, - 37943 - 11904: 0xF667, - 37944 - 11904: 0xC54D, - 37945 - 11904: 0xF665, - 37946 - 11904: 0xC54C, - 37947 - 11904: 0xF65F, - 37948 - 11904: 0xF663, - 37949 - 11904: 0xF662, - 37950 - 11904: 0x9A4F, - 37951 - 11904: 0xF65E, - 37952 - 11904: 0xF669, - 37954 - 11904: 0xFE40, - 37955 - 11904: 0xFE43, - 37956 - 11904: 0xC5B1, - 37957 - 11904: 0xF76D, - 37958 - 11904: 0xF770, - 37959 - 11904: 0xF76C, - 37960 - 11904: 0xF76E, - 37961 - 11904: 0xF76F, - 37962 - 11904: 0xF769, - 37963 - 11904: 0xF76A, - 37964 - 11904: 0xF767, - 37965 - 11904: 0x96DD, - 37967 - 11904: 0xF76B, - 37968 - 11904: 0xF768, - 37969 - 11904: 0xC5B2, - 37970 - 11904: 0xC5B3, - 37972 - 11904: 0x9A51, - 37973 - 11904: 0xF84B, - 37975 - 11904: 0xF84D, - 37976 - 11904: 0x96A7, - 37979 - 11904: 0x90B0, - 37981 - 11904: 0xF84C, - 37982 - 11904: 0xF84E, - 37984 - 11904: 0xC5E0, - 37986 - 11904: 0xF84A, - 37987 - 11904: 0xC5DF, - 37988 - 11904: 0xC5E1, - 37989 - 11904: 0x9C4E, - 37991 - 11904: 0x9443, - 37992 - 11904: 0xF8CB, - 37993 - 11904: 0xF8CC, - 37994 - 11904: 0xC644, - 37995 - 11904: 0xF8CA, - 37996 - 11904: 0x8EBA, - 37997 - 11904: 0xF953, - 37998 - 11904: 0xF952, - 37999 - 11904: 0xF954, - 38000 - 11904: 0xC65F, - 38001 - 11904: 0xF955, - 38002 - 11904: 0xC65E, - 38003 - 11904: 0xF956, - 38004 - 11904: 0xF972, - 38005 - 11904: 0xF975, - 38006 - 11904: 0xF974, - 38007 - 11904: 0xC668, - 38008 - 11904: 0xF973, - 38009 - 11904: 0x9A52, - 38011 - 11904: 0xFCC1, - 38012 - 11904: 0xC672, - 38013 - 11904: 0xC670, - 38014 - 11904: 0xC671, - 38015 - 11904: 0xC677, - 38016 - 11904: 0xF9C0, - 38017 - 11904: 0xF9C1, - 38018 - 11904: 0xF9BF, - 38019 - 11904: 0xF9C9, - 38021 - 11904: 0x8BE9, - 38047 - 11904: 0x9CAF, - 38050 - 11904: 0x8BFD, - 38081 - 11904: 0x9ABC, - 38083 - 11904: 0x9AB8, - 38108 - 11904: 0x9AAE, - 38134 - 11904: 0x9AA7, - 38189 - 11904: 0x9A53, - 38215 - 11904: 0x9D74, - 38263 - 11904: 0xAAF8, - 38264 - 11904: 0x8BEA, - 38266 - 11904: 0xD844, - 38267 - 11904: 0xDC78, - 38268 - 11904: 0xE8A5, - 38269 - 11904: 0xF376, - 38271 - 11904: 0x8BEB, - 38272 - 11904: 0xAAF9, - 38274 - 11904: 0xADAC, - 38275 - 11904: 0xB07B, - 38277 - 11904: 0x90B2, - 38278 - 11904: 0xD845, - 38280 - 11904: 0xD846, - 38281 - 11904: 0xB3AC, - 38283 - 11904: 0xB67D, - 38284 - 11904: 0xDC7A, - 38285 - 11904: 0xDC79, - 38286 - 11904: 0xB6A3, - 38287 - 11904: 0xB67C, - 38288 - 11904: 0xDC7B, - 38289 - 11904: 0xB67E, - 38290 - 11904: 0xB6A2, - 38291 - 11904: 0xB6A1, - 38292 - 11904: 0xB67B, - 38294 - 11904: 0x95E9, - 38295 - 11904: 0x95E8, - 38296 - 11904: 0xB968, - 38297 - 11904: 0x95E6, - 38299 - 11904: 0xE0D0, - 38300 - 11904: 0xE0CE, - 38302 - 11904: 0xE0CF, - 38303 - 11904: 0xE0CD, - 38304 - 11904: 0x90B5, - 38305 - 11904: 0xBBD2, - 38306 - 11904: 0x9A54, - 38307 - 11904: 0xBBD5, - 38308 - 11904: 0xBBD7, - 38309 - 11904: 0xBBD6, - 38310 - 11904: 0x90B3, - 38311 - 11904: 0x95E7, - 38312 - 11904: 0xBBD3, - 38313 - 11904: 0xBBD4, - 38314 - 11904: 0x8B50, - 38315 - 11904: 0xE8A7, - 38316 - 11904: 0xE8A6, - 38317 - 11904: 0xBE5B, - 38318 - 11904: 0xE8A8, - 38320 - 11904: 0xE8A9, - 38321 - 11904: 0xBE5C, - 38325 - 11904: 0xEC4D, - 38326 - 11904: 0xEC4B, - 38327 - 11904: 0xEEF3, - 38329 - 11904: 0xEC49, - 38330 - 11904: 0xEC4A, - 38331 - 11904: 0xC046, - 38332 - 11904: 0xEC46, - 38333 - 11904: 0xEC4E, - 38334 - 11904: 0xEC48, - 38335 - 11904: 0xEC4C, - 38336 - 11904: 0xEEEF, - 38339 - 11904: 0xEEF1, - 38341 - 11904: 0xEEF2, - 38342 - 11904: 0xC1F3, - 38343 - 11904: 0xEEEE, - 38344 - 11904: 0xC1F2, - 38345 - 11904: 0xEEF0, - 38346 - 11904: 0xC1EF, - 38347 - 11904: 0xC1F0, - 38348 - 11904: 0xC1F1, - 38349 - 11904: 0xEC47, - 38352 - 11904: 0xC2F5, - 38353 - 11904: 0xF16E, - 38354 - 11904: 0xF16C, - 38355 - 11904: 0xF16D, - 38356 - 11904: 0xC2F3, - 38357 - 11904: 0xC2F6, - 38358 - 11904: 0xC2F4, - 38362 - 11904: 0xF377, - 38363 - 11904: 0xF378, - 38364 - 11904: 0xC3F6, - 38366 - 11904: 0xF545, - 38367 - 11904: 0xF547, - 38368 - 11904: 0xF546, - 38369 - 11904: 0xC4C4, - 38370 - 11904: 0xC550, - 38371 - 11904: 0xF66D, - 38372 - 11904: 0xF66C, - 38373 - 11904: 0xF66B, - 38376 - 11904: 0x8BEC, - 38388 - 11904: 0x9A56, - 38428 - 11904: 0xAAFA, - 38429 - 11904: 0x8BFB, - 38430 - 11904: 0xC9AA, - 38432 - 11904: 0xCA58, - 38433 - 11904: 0xA6E9, - 38434 - 11904: 0xCA56, - 38435 - 11904: 0xCA59, - 38436 - 11904: 0xCA57, - 38440 - 11904: 0xCBAE, - 38442 - 11904: 0xA8C1, - 38444 - 11904: 0xA8C2, - 38445 - 11904: 0xCBB0, - 38446 - 11904: 0xA8BF, - 38447 - 11904: 0xCBAF, - 38448 - 11904: 0xCBAD, - 38449 - 11904: 0xA8C0, - 38450 - 11904: 0xA8BE, - 38451 - 11904: 0x9A57, - 38456 - 11904: 0xA0AA, - 38457 - 11904: 0xCDD8, - 38458 - 11904: 0xCDDB, - 38459 - 11904: 0xAAFD, - 38460 - 11904: 0xCDDA, - 38461 - 11904: 0xCDD9, - 38463 - 11904: 0xAAFC, - 38464 - 11904: 0xAAFB, - 38465 - 11904: 0x9FA6, - 38466 - 11904: 0xAB40, - 38467 - 11904: 0xCDDC, - 38468 - 11904: 0xAAFE, - 38469 - 11904: 0x99CC, - 38474 - 11904: 0xD0C6, - 38475 - 11904: 0xADAE, - 38476 - 11904: 0xADAF, - 38477 - 11904: 0xADB0, - 38478 - 11904: 0xD0C7, - 38479 - 11904: 0xD0C3, - 38480 - 11904: 0xADAD, - 38481 - 11904: 0xD0C4, - 38483 - 11904: 0xD0C5, - 38484 - 11904: 0xD0C2, - 38486 - 11904: 0x9C59, - 38488 - 11904: 0xB0A4, - 38491 - 11904: 0xB0A1, - 38492 - 11904: 0xD445, - 38493 - 11904: 0xB0A2, - 38494 - 11904: 0xB0A5, - 38495 - 11904: 0xD446, - 38497 - 11904: 0xB07E, - 38498 - 11904: 0xB07C, - 38499 - 11904: 0xB07D, - 38500 - 11904: 0xB0A3, - 38505 - 11904: 0x99B5, - 38506 - 11904: 0xB3AD, - 38507 - 11904: 0xD849, - 38508 - 11904: 0xB3B5, - 38509 - 11904: 0xD848, - 38511 - 11904: 0xD84B, - 38512 - 11904: 0xB3B1, - 38513 - 11904: 0xD84A, - 38514 - 11904: 0xB6AB, - 38515 - 11904: 0xB3AF, - 38516 - 11904: 0xB3B2, - 38517 - 11904: 0xB3AE, - 38518 - 11904: 0xB3B3, - 38519 - 11904: 0xB3B4, - 38520 - 11904: 0xB3B0, - 38523 - 11904: 0x90BE, - 38524 - 11904: 0xD847, - 38525 - 11904: 0xB6A7, - 38526 - 11904: 0xDC7D, - 38528 - 11904: 0xDCA3, - 38529 - 11904: 0x9FAF, - 38531 - 11904: 0xDCA2, - 38532 - 11904: 0xB6AC, - 38533 - 11904: 0xB6A8, - 38534 - 11904: 0xB6A9, - 38535 - 11904: 0xDC7C, - 38536 - 11904: 0xDC7E, - 38537 - 11904: 0xDCA1, - 38538 - 11904: 0xB6A4, - 38539 - 11904: 0xB6A6, - 38541 - 11904: 0xB6AA, - 38542 - 11904: 0xB6A5, - 38543 - 11904: 0x95F2, - 38545 - 11904: 0xE0D3, - 38546 - 11904: 0xE0D1, - 38547 - 11904: 0xE0D2, - 38548 - 11904: 0xB96A, - 38549 - 11904: 0xB96B, - 38550 - 11904: 0x90BF, - 38551 - 11904: 0xE0D4, - 38552 - 11904: 0xB969, - 38553 - 11904: 0xBBD8, - 38555 - 11904: 0xBBDA, - 38556 - 11904: 0xBBD9, - 38558 - 11904: 0xE4BB, - 38561 - 11904: 0xE4BC, - 38562 - 11904: 0xE8AB, - 38563 - 11904: 0x90C1, - 38564 - 11904: 0xE8AA, - 38565 - 11904: 0xFEE4, - 38567 - 11904: 0xC047, - 38568 - 11904: 0xC048, - 38569 - 11904: 0xEC4F, - 38570 - 11904: 0xC049, - 38572 - 11904: 0xEEF6, - 38574 - 11904: 0xEEF4, - 38576 - 11904: 0xEEF5, - 38577 - 11904: 0xC1F4, - 38579 - 11904: 0xF16F, - 38580 - 11904: 0xC3F7, - 38582 - 11904: 0xC6D7, - 38584 - 11904: 0xC1F5, - 38585 - 11904: 0xAB41, - 38587 - 11904: 0xB0A6, - 38588 - 11904: 0xD447, - 38589 - 11904: 0x90C7, - 38591 - 11904: 0xD84C, - 38592 - 11904: 0xB3B6, - 38593 - 11904: 0xB6AD, - 38594 - 11904: 0xDCA4, - 38595 - 11904: 0xDCA6, - 38596 - 11904: 0xB6AF, - 38597 - 11904: 0xB6AE, - 38598 - 11904: 0xB6B0, - 38599 - 11904: 0xB6B1, - 38600 - 11904: 0xDCA5, - 38601 - 11904: 0xB96E, - 38602 - 11904: 0xB96F, - 38603 - 11904: 0xB96D, - 38604 - 11904: 0xBBDB, - 38605 - 11904: 0xB96C, - 38606 - 11904: 0xE0D5, - 38610 - 11904: 0xBBDC, - 38611 - 11904: 0xE8AC, - 38612 - 11904: 0xEC50, - 38613 - 11904: 0xC04A, - 38614 - 11904: 0xC1F6, - 38615 - 11904: 0xF170, - 38616 - 11904: 0xF174, - 38617 - 11904: 0xC2F9, - 38618 - 11904: 0xF171, - 38619 - 11904: 0xC2FA, - 38620 - 11904: 0xC2F8, - 38621 - 11904: 0xF175, - 38622 - 11904: 0xC2FB, - 38623 - 11904: 0xF173, - 38625 - 11904: 0xF379, - 38626 - 11904: 0xC2F7, - 38627 - 11904: 0xC3F8, - 38629 - 11904: 0xF8CD, - 38632 - 11904: 0xAB42, - 38633 - 11904: 0xB3B8, - 38634 - 11904: 0xB3B7, - 38639 - 11904: 0xB6B2, - 38640 - 11904: 0xDCA8, - 38641 - 11904: 0xDCA7, - 38642 - 11904: 0xB6B3, - 38644 - 11904: 0x92E4, - 38645 - 11904: 0xE0D9, - 38646 - 11904: 0xB973, - 38647 - 11904: 0xB970, - 38648 - 11904: 0xE0D8, - 38649 - 11904: 0xB972, - 38650 - 11904: 0xE0D6, - 38651 - 11904: 0xB971, - 38653 - 11904: 0xE0D7, - 38655 - 11904: 0xE4BD, - 38656 - 11904: 0xBBDD, - 38658 - 11904: 0xE8AF, - 38659 - 11904: 0x9F52, - 38660 - 11904: 0xBE5D, - 38661 - 11904: 0xE8AD, - 38662 - 11904: 0xBE5E, - 38663 - 11904: 0xBE5F, - 38664 - 11904: 0xE8AE, - 38665 - 11904: 0xBE60, - 38667 - 11904: 0xEC51, - 38669 - 11904: 0xC04E, - 38670 - 11904: 0xC04B, - 38671 - 11904: 0xC050, - 38672 - 11904: 0xEC53, - 38673 - 11904: 0xC04C, - 38674 - 11904: 0xEC52, - 38675 - 11904: 0xC04F, - 38678 - 11904: 0xC04D, - 38680 - 11904: 0xEEF9, - 38681 - 11904: 0xEEFB, - 38683 - 11904: 0x90DB, - 38684 - 11904: 0xC1F7, - 38685 - 11904: 0xEEFA, - 38686 - 11904: 0xC1F8, - 38687 - 11904: 0xEEF8, - 38688 - 11904: 0xEEF7, - 38689 - 11904: 0xA066, - 38690 - 11904: 0xF177, - 38691 - 11904: 0xF176, - 38692 - 11904: 0xC2FC, - 38693 - 11904: 0xF178, - 38694 - 11904: 0xF37E, - 38695 - 11904: 0xC3FA, - 38696 - 11904: 0xF37D, - 38697 - 11904: 0xF37A, - 38698 - 11904: 0xC3F9, - 38699 - 11904: 0xF37B, - 38700 - 11904: 0xF37C, - 38702 - 11904: 0xF548, - 38703 - 11904: 0xF549, - 38704 - 11904: 0xC4C5, - 38705 - 11904: 0x90D2, - 38706 - 11904: 0xC553, - 38708 - 11904: 0x876B, - 38709 - 11904: 0xF66E, - 38710 - 11904: 0x90D4, - 38712 - 11904: 0xC551, - 38713 - 11904: 0xC552, - 38714 - 11904: 0xF66F, - 38717 - 11904: 0xC5B4, - 38718 - 11904: 0xC5B5, - 38719 - 11904: 0xF771, - 38720 - 11904: 0x9A5B, - 38721 - 11904: 0x95FD, - 38722 - 11904: 0xC645, - 38723 - 11904: 0xF8CF, - 38724 - 11904: 0xC647, - 38726 - 11904: 0xF8CE, - 38727 - 11904: 0xF8D0, - 38728 - 11904: 0xC646, - 38729 - 11904: 0xF957, - 38730 - 11904: 0x87B1, - 38731 - 11904: 0xF9AD, - 38737 - 11904: 0x8BC4, - 38738 - 11904: 0xAB43, - 38741 - 11904: 0x8C66, - 38742 - 11904: 0xB974, - 38743 - 11904: 0x90DE, - 38744 - 11904: 0xE4BE, - 38746 - 11904: 0xE8B0, - 38747 - 11904: 0xC051, - 38748 - 11904: 0xC052, - 38749 - 11904: 0x9CE4, - 38750 - 11904: 0xAB44, - 38751 - 11904: 0x90E1, - 38752 - 11904: 0xBE61, - 38753 - 11904: 0xC3FB, - 38754 - 11904: 0xADB1, - 38758 - 11904: 0xC053, - 38760 - 11904: 0xC5E2, - 38761 - 11904: 0xADB2, - 38762 - 11904: 0xD84D, - 38764 - 11904: 0xDCA9, - 38765 - 11904: 0x9E46, - 38766 - 11904: 0xDCAB, - 38768 - 11904: 0xDCAA, - 38769 - 11904: 0x9651, - 38770 - 11904: 0xE0DD, - 38771 - 11904: 0xE0DA, - 38772 - 11904: 0xB975, - 38774 - 11904: 0xB976, - 38775 - 11904: 0xE0DB, - 38776 - 11904: 0xE0DC, - 38778 - 11904: 0xE4C0, - 38779 - 11904: 0xE4C5, - 38780 - 11904: 0xBBDE, - 38781 - 11904: 0xE4BF, - 38782 - 11904: 0xE4C1, - 38783 - 11904: 0xE4C8, - 38784 - 11904: 0xE4C3, - 38785 - 11904: 0xE4C7, - 38786 - 11904: 0xE4C4, - 38787 - 11904: 0xE4C2, - 38788 - 11904: 0xE4C6, - 38789 - 11904: 0xBBDF, - 38791 - 11904: 0xFB58, - 38792 - 11904: 0xE8B3, - 38793 - 11904: 0x90E6, - 38794 - 11904: 0xE8B1, - 38795 - 11904: 0xBE63, - 38797 - 11904: 0xBE62, - 38798 - 11904: 0xE8B2, - 38799 - 11904: 0xBE64, - 38804 - 11904: 0xEC56, - 38807 - 11904: 0xEC55, - 38808 - 11904: 0xC054, - 38809 - 11904: 0xEC54, - 38810 - 11904: 0xEEFC, - 38811 - 11904: 0x9650, - 38812 - 11904: 0xEEFE, - 38813 - 11904: 0xEF41, - 38814 - 11904: 0xEF40, - 38815 - 11904: 0x90E7, - 38816 - 11904: 0xC1F9, - 38817 - 11904: 0xEEFD, - 38818 - 11904: 0xF1A1, - 38819 - 11904: 0xC2FD, - 38820 - 11904: 0xF17D, - 38821 - 11904: 0xF1A2, - 38822 - 11904: 0xC2FE, - 38824 - 11904: 0xF17B, - 38826 - 11904: 0xF17E, - 38827 - 11904: 0xF17C, - 38828 - 11904: 0xF179, - 38829 - 11904: 0xC340, - 38830 - 11904: 0xF17A, - 38833 - 11904: 0x90E8, - 38834 - 11904: 0x9A5D, - 38835 - 11904: 0xF3A1, - 38836 - 11904: 0x9F7A, - 38838 - 11904: 0xF3A3, - 38839 - 11904: 0xF3A2, - 38840 - 11904: 0x9B5C, - 38841 - 11904: 0xF54A, - 38842 - 11904: 0x9F7C, - 38843 - 11904: 0xF54B, - 38845 - 11904: 0xFC52, - 38846 - 11904: 0x90E9, - 38847 - 11904: 0xF670, - 38848 - 11904: 0x90EA, - 38849 - 11904: 0xC5B7, - 38850 - 11904: 0x9A5E, - 38851 - 11904: 0xC5B6, - 38852 - 11904: 0xF84F, - 38853 - 11904: 0xF850, - 38854 - 11904: 0xC648, - 38855 - 11904: 0xF8D1, - 38856 - 11904: 0x9F76, - 38857 - 11904: 0xC669, - 38859 - 11904: 0xADB3, - 38860 - 11904: 0xB6B4, - 38861 - 11904: 0xE4CA, - 38862 - 11904: 0xE4C9, - 38863 - 11904: 0xE8B5, - 38864 - 11904: 0xE8B4, - 38866 - 11904: 0x90EB, - 38867 - 11904: 0xC1FA, - 38868 - 11904: 0xEF43, - 38869 - 11904: 0xEF42, - 38870 - 11904: 0xF1A5, - 38871 - 11904: 0xF1A3, - 38872 - 11904: 0xF1A6, - 38873 - 11904: 0xF1A4, - 38876 - 11904: 0xC3FC, - 38877 - 11904: 0xF3A4, - 38878 - 11904: 0xF3A5, - 38879 - 11904: 0xF3A6, - 38880 - 11904: 0x90EC, - 38881 - 11904: 0xF671, - 38883 - 11904: 0xF772, - 38885 - 11904: 0xF8D2, - 38886 - 11904: 0x8BEE, - 38893 - 11904: 0xADB4, - 38894 - 11904: 0x90EE, - 38896 - 11904: 0xEC57, - 38897 - 11904: 0xEF44, - 38898 - 11904: 0x91C6, - 38899 - 11904: 0xADB5, - 38901 - 11904: 0x90F2, - 38902 - 11904: 0xBBE0, - 38904 - 11904: 0xEC58, - 38905 - 11904: 0xC341, - 38906 - 11904: 0xF1A7, - 38907 - 11904: 0xC3FD, - 38909 - 11904: 0xF54C, - 38910 - 11904: 0xF54D, - 38911 - 11904: 0xC554, - 38912 - 11904: 0xF851, - 38913 - 11904: 0xADB6, - 38914 - 11904: 0xB3BB, - 38915 - 11904: 0xB3BC, - 38916 - 11904: 0xD84E, - 38917 - 11904: 0xB6B5, - 38918 - 11904: 0xB6B6, - 38919 - 11904: 0xDCAC, - 38920 - 11904: 0xB6B7, - 38922 - 11904: 0xB97A, - 38924 - 11904: 0xB97C, - 38925 - 11904: 0xE0DF, - 38926 - 11904: 0xE0E0, - 38927 - 11904: 0xE0DE, - 38928 - 11904: 0xB977, - 38929 - 11904: 0xB978, - 38930 - 11904: 0xB97B, - 38931 - 11904: 0xB979, - 38932 - 11904: 0xFCBC, - 38933 - 11904: 0x8A74, - 38934 - 11904: 0xE4CB, - 38935 - 11904: 0xBBE1, - 38936 - 11904: 0xBBE2, - 38939 - 11904: 0xE8BC, - 38940 - 11904: 0xBE67, - 38941 - 11904: 0xE8B7, - 38942 - 11904: 0xE8B6, - 38943 - 11904: 0x9657, - 38944 - 11904: 0xE8BB, - 38945 - 11904: 0xBE65, - 38947 - 11904: 0x9CEF, - 38948 - 11904: 0xC05B, - 38950 - 11904: 0xE8B8, - 38951 - 11904: 0xE8BD, - 38952 - 11904: 0xE8BA, - 38953 - 11904: 0xE8B9, - 38955 - 11904: 0xBE66, - 38957 - 11904: 0xC059, - 38958 - 11904: 0x9FDF, - 38959 - 11904: 0xEC5A, - 38960 - 11904: 0xC055, - 38962 - 11904: 0xEC5B, - 38963 - 11904: 0x90F7, - 38964 - 11904: 0x90F6, - 38965 - 11904: 0xEC59, - 38967 - 11904: 0xC058, - 38968 - 11904: 0xC056, - 38969 - 11904: 0xC05A, - 38971 - 11904: 0xC057, - 38977 - 11904: 0xEF45, - 38979 - 11904: 0xEF4A, - 38980 - 11904: 0xEF46, - 38981 - 11904: 0xEF49, - 38982 - 11904: 0xC1FB, - 38983 - 11904: 0x9B5E, - 38984 - 11904: 0xEDD4, - 38985 - 11904: 0xEF48, - 38986 - 11904: 0xEF47, - 38987 - 11904: 0x90F8, - 38988 - 11904: 0xC344, - 38989 - 11904: 0xC342, - 38990 - 11904: 0xC345, - 38991 - 11904: 0xC343, - 38992 - 11904: 0xF1A8, - 38993 - 11904: 0xF1A9, - 38994 - 11904: 0xF1AA, - 38995 - 11904: 0xC346, - 38998 - 11904: 0x8CFC, - 38999 - 11904: 0xF3AA, - 39000 - 11904: 0xC440, - 39001 - 11904: 0xF3A8, - 39003 - 11904: 0xC441, - 39004 - 11904: 0xF3A7, - 39005 - 11904: 0xF3A9, - 39006 - 11904: 0xC3FE, - 39007 - 11904: 0xF551, - 39008 - 11904: 0xF54E, - 39010 - 11904: 0xF54F, - 39011 - 11904: 0xF550, - 39012 - 11904: 0xF672, - 39013 - 11904: 0xC556, - 39014 - 11904: 0x90F9, - 39015 - 11904: 0xC555, - 39016 - 11904: 0x8CC9, - 39017 - 11904: 0xF774, - 39018 - 11904: 0xF773, - 39019 - 11904: 0xC5B8, - 39020 - 11904: 0xFA6A, - 39023 - 11904: 0xC5E3, - 39024 - 11904: 0xC649, - 39025 - 11904: 0xC660, - 39026 - 11904: 0xF958, - 39027 - 11904: 0xF9AE, - 39028 - 11904: 0xF9AF, - 39029 - 11904: 0x8BEF, - 39080 - 11904: 0xADB7, - 39081 - 11904: 0xDCAD, - 39084 - 11904: 0xE0E1, - 39085 - 11904: 0xE4CC, - 39086 - 11904: 0xE4CD, - 39087 - 11904: 0xBBE3, - 39089 - 11904: 0xBBE4, - 39090 - 11904: 0xE8BE, - 39091 - 11904: 0xBE68, - 39092 - 11904: 0x9FE0, - 39094 - 11904: 0xC1FC, - 39095 - 11904: 0x9142, - 39096 - 11904: 0xF1AB, - 39097 - 11904: 0x9A62, - 39098 - 11904: 0xC347, - 39099 - 11904: 0xF3AD, - 39100 - 11904: 0xC442, - 39101 - 11904: 0xF3AC, - 39102 - 11904: 0xF3AE, - 39103 - 11904: 0xF3AB, - 39104 - 11904: 0xF675, - 39105 - 11904: 0xF552, - 39106 - 11904: 0xF553, - 39107 - 11904: 0x9569, - 39108 - 11904: 0xC4C6, - 39110 - 11904: 0xF674, - 39111 - 11904: 0x9144, - 39112 - 11904: 0x9143, - 39113 - 11904: 0xF673, - 39114 - 11904: 0x9141, - 39115 - 11904: 0xF775, - 39116 - 11904: 0xF9B0, - 39118 - 11904: 0x8BF0, - 39131 - 11904: 0xADB8, - 39132 - 11904: 0x9660, - 39134 - 11904: 0x8BF1, - 39135 - 11904: 0xADB9, - 39136 - 11904: 0x99F6, - 39137 - 11904: 0x9149, - 39138 - 11904: 0xB0A7, - 39139 - 11904: 0xD448, - 39141 - 11904: 0xD84F, - 39142 - 11904: 0x914A, - 39143 - 11904: 0xB6B8, - 39145 - 11904: 0xB6BB, - 39146 - 11904: 0xB6B9, - 39147 - 11904: 0xDCAE, - 39148 - 11904: 0x914B, - 39149 - 11904: 0xB6BD, - 39151 - 11904: 0xB6BA, - 39153 - 11904: 0x9A64, - 39154 - 11904: 0xB6BC, - 39156 - 11904: 0xB97E, - 39157 - 11904: 0x8ABF, - 39158 - 11904: 0xE0E2, - 39161 - 11904: 0xE0E3, - 39162 - 11904: 0xE8C0, - 39164 - 11904: 0xB97D, - 39165 - 11904: 0xB9A1, - 39166 - 11904: 0xB9A2, - 39168 - 11904: 0xE4CF, - 39170 - 11904: 0xE4CE, - 39171 - 11904: 0xBBE5, - 39173 - 11904: 0xBBE6, - 39175 - 11904: 0xE4D0, - 39176 - 11904: 0xE8BF, - 39177 - 11904: 0xBBE8, - 39178 - 11904: 0xBE69, - 39180 - 11904: 0xBBE7, - 39182 - 11904: 0x9A66, - 39184 - 11904: 0xC05C, - 39185 - 11904: 0xE8C1, - 39186 - 11904: 0xBE6B, - 39187 - 11904: 0xBE6A, - 39188 - 11904: 0xE8C2, - 39189 - 11904: 0xE8C5, - 39190 - 11904: 0xE8C3, - 39191 - 11904: 0xE8C4, - 39192 - 11904: 0xBE6C, - 39193 - 11904: 0x9A67, - 39194 - 11904: 0xC061, - 39195 - 11904: 0xC05F, - 39196 - 11904: 0x9A69, - 39198 - 11904: 0xC05E, - 39199 - 11904: 0xEC5D, - 39201 - 11904: 0xC060, - 39204 - 11904: 0xEC5C, - 39205 - 11904: 0xEF4B, - 39207 - 11904: 0xEC5E, - 39208 - 11904: 0xC05D, - 39209 - 11904: 0xEC5F, - 39210 - 11904: 0xEF4E, - 39211 - 11904: 0xEF4C, - 39212 - 11904: 0xEF4D, - 39213 - 11904: 0xEF52, - 39214 - 11904: 0xC34B, - 39215 - 11904: 0xEF51, - 39216 - 11904: 0xEF54, - 39217 - 11904: 0xEF53, - 39218 - 11904: 0xEF50, - 39219 - 11904: 0xEF4F, - 39221 - 11904: 0xC1FD, - 39223 - 11904: 0x9A6A, - 39224 - 11904: 0x9652, - 39225 - 11904: 0x914D, - 39226 - 11904: 0xF1AE, - 39227 - 11904: 0x9666, - 39228 - 11904: 0xF1AD, - 39229 - 11904: 0xC34A, - 39230 - 11904: 0xC348, - 39231 - 11904: 0xC349, - 39232 - 11904: 0x9F7B, - 39233 - 11904: 0xF1AC, - 39234 - 11904: 0x9A6B, - 39235 - 11904: 0xF3B1, - 39237 - 11904: 0xC443, - 39239 - 11904: 0xF3B0, - 39240 - 11904: 0xF3AF, - 39241 - 11904: 0xC444, - 39242 - 11904: 0xA06C, - 39243 - 11904: 0xF558, - 39244 - 11904: 0xF557, - 39245 - 11904: 0x9667, - 39246 - 11904: 0xF555, - 39248 - 11904: 0xF554, - 39249 - 11904: 0xC4C8, - 39250 - 11904: 0xC4C7, - 39251 - 11904: 0xF559, - 39252 - 11904: 0xF776, - 39253 - 11904: 0xC5B9, - 39254 - 11904: 0xF677, - 39255 - 11904: 0xC557, - 39256 - 11904: 0xF676, - 39257 - 11904: 0xF556, - 39259 - 11904: 0xF777, - 39260 - 11904: 0xC5E4, - 39261 - 11904: 0x9A6C, - 39262 - 11904: 0xC661, - 39263 - 11904: 0xF959, - 39265 - 11904: 0xF9B1, - 39266 - 11904: 0x9A6D, - 39267 - 11904: 0x8BF2, - 39318 - 11904: 0xADBA, - 39319 - 11904: 0xD850, - 39320 - 11904: 0xEF55, - 39321 - 11904: 0xADBB, - 39323 - 11904: 0x966A, - 39324 - 11904: 0xE4D2, - 39325 - 11904: 0xE4D1, - 39326 - 11904: 0xEC60, - 39329 - 11904: 0xEF57, - 39331 - 11904: 0xEF56, - 39332 - 11904: 0xFCEA, - 39333 - 11904: 0xC34C, - 39334 - 11904: 0xF3B2, - 39335 - 11904: 0xF3B3, - 39336 - 11904: 0xC4C9, - 39338 - 11904: 0x966C, - 39339 - 11904: 0xF9B2, - 39340 - 11904: 0xB0A8, - 39341 - 11904: 0xB6BF, - 39342 - 11904: 0xB6BE, - 39343 - 11904: 0xE0E4, - 39344 - 11904: 0xE0E6, - 39345 - 11904: 0xB9A4, - 39346 - 11904: 0xE0E5, - 39347 - 11904: 0xB9A3, - 39348 - 11904: 0xB9A5, - 39349 - 11904: 0xE0E7, - 39352 - 11904: 0x91C4, - 39353 - 11904: 0xE4D4, - 39354 - 11904: 0xE4D6, - 39355 - 11904: 0xE4D5, - 39356 - 11904: 0x9677, - 39357 - 11904: 0xE4D8, - 39361 - 11904: 0xBBE9, - 39362 - 11904: 0xE4D7, - 39363 - 11904: 0xE4D3, - 39364 - 11904: 0x99F4, - 39365 - 11904: 0x9A6F, - 39367 - 11904: 0xE4D9, - 39369 - 11904: 0xE8CC, - 39371 - 11904: 0xE8CF, - 39372 - 11904: 0xE8D1, - 39373 - 11904: 0xE8C7, - 39374 - 11904: 0xE8CB, - 39375 - 11904: 0xE8C8, - 39376 - 11904: 0xBE6E, - 39377 - 11904: 0xBE71, - 39378 - 11904: 0xBE73, - 39379 - 11904: 0xE8C9, - 39380 - 11904: 0xE8CA, - 39381 - 11904: 0xBE72, - 39382 - 11904: 0xE8CD, - 39383 - 11904: 0xE8D0, - 39384 - 11904: 0xE8CE, - 39385 - 11904: 0xBE74, - 39386 - 11904: 0x9FAB, - 39387 - 11904: 0xBE70, - 39388 - 11904: 0xE8C6, - 39389 - 11904: 0xBE6D, - 39391 - 11904: 0xBE6F, - 39392 - 11904: 0x8CBE, - 39393 - 11904: 0x8EC1, - 39394 - 11904: 0xC063, - 39395 - 11904: 0xEC66, - 39396 - 11904: 0xEC64, - 39397 - 11904: 0xEC63, - 39398 - 11904: 0x9555, - 39399 - 11904: 0xEC69, - 39401 - 11904: 0xEC68, - 39402 - 11904: 0xEC67, - 39404 - 11904: 0xEC62, - 39405 - 11904: 0xC062, - 39406 - 11904: 0xEC61, - 39408 - 11904: 0xEC65, - 39409 - 11904: 0xC064, - 39412 - 11904: 0xEF5A, - 39413 - 11904: 0x9152, - 39414 - 11904: 0xEF5E, - 39415 - 11904: 0xEF5B, - 39416 - 11904: 0xEF5D, - 39417 - 11904: 0xEF5C, - 39418 - 11904: 0xEF59, - 39419 - 11904: 0xEF5F, - 39420 - 11904: 0xEF62, - 39421 - 11904: 0xEF60, - 39422 - 11904: 0xEF61, - 39423 - 11904: 0xC240, - 39425 - 11904: 0xC1FE, - 39426 - 11904: 0xEF58, - 39427 - 11904: 0xEF63, - 39428 - 11904: 0xF1B3, - 39429 - 11904: 0xF1B6, - 39430 - 11904: 0xF1B8, - 39431 - 11904: 0xF1B7, - 39433 - 11904: 0xF1B1, - 39434 - 11904: 0xF1B5, - 39435 - 11904: 0xF1B0, - 39436 - 11904: 0x9153, - 39437 - 11904: 0xF1B2, - 39438 - 11904: 0xC34D, - 39439 - 11904: 0xF1AF, - 39440 - 11904: 0x9155, - 39441 - 11904: 0xF1B4, - 39444 - 11904: 0xF3C0, - 39445 - 11904: 0xF3B5, - 39446 - 11904: 0xC445, - 39449 - 11904: 0xC446, - 39450 - 11904: 0xF3B4, - 39451 - 11904: 0xF3B9, - 39452 - 11904: 0xF3BF, - 39453 - 11904: 0xF3B7, - 39454 - 11904: 0xF3BE, - 39455 - 11904: 0x955D, - 39456 - 11904: 0xF3BB, - 39457 - 11904: 0x9671, - 39458 - 11904: 0xF3BA, - 39459 - 11904: 0xF3BD, - 39460 - 11904: 0xF3B8, - 39461 - 11904: 0xF3B6, - 39462 - 11904: 0x9C6D, - 39463 - 11904: 0xF3BC, - 39465 - 11904: 0xF560, - 39466 - 11904: 0xF55E, - 39467 - 11904: 0xC4CA, - 39468 - 11904: 0xF55D, - 39469 - 11904: 0xF563, - 39470 - 11904: 0xF561, - 39471 - 11904: 0x9673, - 39472 - 11904: 0xC4CB, - 39473 - 11904: 0xF55C, - 39474 - 11904: 0xF55A, - 39476 - 11904: 0xF55B, - 39477 - 11904: 0xC4CD, - 39478 - 11904: 0xF55F, - 39479 - 11904: 0xC4CC, - 39480 - 11904: 0xF562, - 39481 - 11904: 0xF678, - 39482 - 11904: 0xF67E, - 39483 - 11904: 0x9154, - 39484 - 11904: 0x9A71, - 39485 - 11904: 0xF679, - 39486 - 11904: 0xC55B, - 39487 - 11904: 0xF6A1, - 39488 - 11904: 0xC55A, - 39489 - 11904: 0xF67D, - 39490 - 11904: 0xF67C, - 39491 - 11904: 0xC559, - 39492 - 11904: 0xF67B, - 39493 - 11904: 0xC558, - 39494 - 11904: 0xF67A, - 39496 - 11904: 0xF77D, - 39497 - 11904: 0xF7A1, - 39498 - 11904: 0xF77E, - 39500 - 11904: 0xF77B, - 39501 - 11904: 0xC5BB, - 39502 - 11904: 0xF778, - 39503 - 11904: 0xF77C, - 39504 - 11904: 0xF7A3, - 39506 - 11904: 0xF7A2, - 39507 - 11904: 0xF779, - 39508 - 11904: 0xF77A, - 39509 - 11904: 0xC5BA, - 39510 - 11904: 0xF852, - 39511 - 11904: 0xC5E7, - 39512 - 11904: 0x9156, - 39513 - 11904: 0xF853, - 39514 - 11904: 0xC5E5, - 39515 - 11904: 0xC5E6, - 39516 - 11904: 0x966D, - 39518 - 11904: 0xF8D3, - 39519 - 11904: 0xC64A, - 39520 - 11904: 0xF976, - 39522 - 11904: 0xC66A, - 39523 - 11904: 0x9557, - 39524 - 11904: 0xF9B3, - 39525 - 11904: 0xC66B, - 39526 - 11904: 0xF9B4, - 39527 - 11904: 0xF9B5, - 39528 - 11904: 0xF9C3, - 39529 - 11904: 0xF9C2, - 39530 - 11904: 0xC67A, - 39531 - 11904: 0xF9CD, - 39532 - 11904: 0x89C6, - 39567 - 11904: 0x89C7, - 39592 - 11904: 0xB0A9, - 39595 - 11904: 0xE0E9, - 39597 - 11904: 0xE0E8, - 39599 - 11904: 0xBBEA, - 39600 - 11904: 0xBBEB, - 39601 - 11904: 0xE4DA, - 39602 - 11904: 0x8A6A, - 39603 - 11904: 0xE8D2, - 39604 - 11904: 0xEC6C, - 39606 - 11904: 0x8B57, - 39607 - 11904: 0xBE75, - 39608 - 11904: 0xC065, - 39609 - 11904: 0xEC6A, - 39610 - 11904: 0x9FE1, - 39611 - 11904: 0xEC6D, - 39612 - 11904: 0xC066, - 39613 - 11904: 0x9B5F, - 39614 - 11904: 0xEF64, - 39615 - 11904: 0xEC6B, - 39616 - 11904: 0xF1B9, - 39617 - 11904: 0xC34E, - 39618 - 11904: 0xF3C1, - 39622 - 11904: 0xF566, - 39623 - 11904: 0xF564, - 39626 - 11904: 0xF565, - 39629 - 11904: 0xF6A2, - 39631 - 11904: 0xC55C, - 39632 - 11904: 0xF7A4, - 39633 - 11904: 0xC5EA, - 39634 - 11904: 0xC5BC, - 39635 - 11904: 0xC5E8, - 39636 - 11904: 0xC5E9, - 39637 - 11904: 0xF8D4, - 39638 - 11904: 0xC662, - 39639 - 11904: 0xA05D, - 39640 - 11904: 0xB0AA, - 39644 - 11904: 0xF1BA, - 39647 - 11904: 0xD449, - 39648 - 11904: 0x915B, - 39649 - 11904: 0xB9A6, - 39650 - 11904: 0x915C, - 39651 - 11904: 0xE4DB, - 39654 - 11904: 0xBBEC, - 39655 - 11904: 0xE4DC, - 39659 - 11904: 0xE8D4, - 39660 - 11904: 0xE8D3, - 39661 - 11904: 0xC068, - 39662 - 11904: 0xBE76, - 39663 - 11904: 0xBE77, - 39665 - 11904: 0xE8D7, - 39666 - 11904: 0xE8D6, - 39667 - 11904: 0xE8D5, - 39668 - 11904: 0x915E, - 39670 - 11904: 0xEC6E, - 39671 - 11904: 0xEC71, - 39673 - 11904: 0xEC70, - 39674 - 11904: 0xEC6F, - 39675 - 11904: 0xC067, - 39676 - 11904: 0xEF68, - 39677 - 11904: 0xEF66, - 39678 - 11904: 0xEF65, - 39679 - 11904: 0x9F5C, - 39681 - 11904: 0xEF67, - 39682 - 11904: 0x9F57, - 39683 - 11904: 0xC34F, - 39684 - 11904: 0xF1BC, - 39685 - 11904: 0xF1BD, - 39686 - 11904: 0xC350, - 39688 - 11904: 0xF1BB, - 39689 - 11904: 0x9F65, - 39690 - 11904: 0xF3C3, - 39691 - 11904: 0xF3C2, - 39692 - 11904: 0xF3C5, - 39693 - 11904: 0xC447, - 39694 - 11904: 0xF3C4, - 39695 - 11904: 0x9A72, - 39696 - 11904: 0xF567, - 39697 - 11904: 0xF569, - 39698 - 11904: 0xF568, - 39700 - 11904: 0x9160, - 39701 - 11904: 0xF6A3, - 39702 - 11904: 0xF6A6, - 39703 - 11904: 0xF6A4, - 39704 - 11904: 0xF6A5, - 39705 - 11904: 0xF7A5, - 39706 - 11904: 0xC5BD, - 39710 - 11904: 0xF854, - 39711 - 11904: 0xF855, - 39712 - 11904: 0xF856, - 39714 - 11904: 0xC64B, - 39715 - 11904: 0xC663, - 39716 - 11904: 0xF9B6, - 39717 - 11904: 0xB0AB, - 39719 - 11904: 0xBE78, - 39720 - 11904: 0xC069, - 39721 - 11904: 0xF1BE, - 39722 - 11904: 0x9F5E, - 39723 - 11904: 0xF7A6, - 39725 - 11904: 0x9161, - 39726 - 11904: 0xF9C4, - 39727 - 11904: 0xD44A, - 39729 - 11904: 0xC67B, - 39730 - 11904: 0xB0AC, - 39731 - 11904: 0xEC72, - 39732 - 11904: 0x9164, - 39733 - 11904: 0xF1BF, - 39735 - 11904: 0xF3C6, - 39737 - 11904: 0x9F41, - 39738 - 11904: 0xF6A7, - 39739 - 11904: 0xF7A7, - 39740 - 11904: 0xB0AD, - 39742 - 11904: 0xE4DD, - 39743 - 11904: 0xE4DE, - 39744 - 11904: 0x9169, - 39745 - 11904: 0xBBED, - 39746 - 11904: 0xBBEE, - 39747 - 11904: 0xE8D9, - 39748 - 11904: 0xBE7A, - 39749 - 11904: 0xBE79, - 39750 - 11904: 0xE8D8, - 39752 - 11904: 0xEF69, - 39754 - 11904: 0xF1C0, - 39755 - 11904: 0xF1C2, - 39756 - 11904: 0xF1C1, - 39757 - 11904: 0xC353, - 39758 - 11904: 0xC352, - 39759 - 11904: 0xC351, - 39760 - 11904: 0x9168, - 39761 - 11904: 0xC55E, - 39762 - 11904: 0xF6A8, - 39764 - 11904: 0xC55D, - 39765 - 11904: 0xF7A9, - 39766 - 11904: 0xF7A8, - 39768 - 11904: 0xC64C, - 39769 - 11904: 0xF8D5, - 39770 - 11904: 0xB3BD, - 39771 - 11904: 0xE0EA, - 39775 - 11904: 0xE4E1, - 39776 - 11904: 0xE4DF, - 39777 - 11904: 0xE4E0, - 39780 - 11904: 0xE8E2, - 39782 - 11904: 0xE8DD, - 39783 - 11904: 0xE8DA, - 39784 - 11904: 0xE8E1, - 39785 - 11904: 0x9A74, - 39788 - 11904: 0xE8E3, - 39791 - 11904: 0xBE7C, - 39792 - 11904: 0xE8E0, - 39793 - 11904: 0xE8DC, - 39796 - 11904: 0xE8DB, - 39797 - 11904: 0xE8DF, - 39798 - 11904: 0xE8DE, - 39799 - 11904: 0xBE7B, - 39802 - 11904: 0xEC7D, - 39803 - 11904: 0xEC78, - 39804 - 11904: 0xEC76, - 39805 - 11904: 0xECA1, - 39806 - 11904: 0xEC77, - 39807 - 11904: 0x96B2, - 39808 - 11904: 0xEC73, - 39809 - 11904: 0x9A75, - 39810 - 11904: 0xEC79, - 39811 - 11904: 0xFDA5, - 39813 - 11904: 0xEC74, - 39814 - 11904: 0xEF72, - 39815 - 11904: 0xEC75, - 39816 - 11904: 0xECA2, - 39819 - 11904: 0x9EE9, - 39821 - 11904: 0x8BBA, - 39822 - 11904: 0x916D, - 39823 - 11904: 0xA060, - 39824 - 11904: 0xEC7C, - 39825 - 11904: 0xC06A, - 39826 - 11904: 0xEC7B, - 39827 - 11904: 0xEC7A, - 39829 - 11904: 0xEC7E, - 39831 - 11904: 0x9FDE, - 39834 - 11904: 0xEF6A, - 39835 - 11904: 0xEF6D, - 39837 - 11904: 0x9FC3, - 39838 - 11904: 0xEF6C, - 39839 - 11904: 0x96B5, - 39840 - 11904: 0xEF74, - 39841 - 11904: 0xEF6F, - 39842 - 11904: 0xEF73, - 39844 - 11904: 0xEF71, - 39845 - 11904: 0xEF70, - 39846 - 11904: 0xEF6E, - 39848 - 11904: 0xEF6B, - 39850 - 11904: 0xC243, - 39851 - 11904: 0xC242, - 39853 - 11904: 0xC244, - 39854 - 11904: 0xC241, - 39855 - 11904: 0xEF75, - 39856 - 11904: 0xA067, - 39861 - 11904: 0xF1C8, - 39862 - 11904: 0xF1CB, - 39864 - 11904: 0xF1C9, - 39865 - 11904: 0xF1CD, - 39869 - 11904: 0xF1CE, - 39871 - 11904: 0xF1C6, - 39872 - 11904: 0xC358, - 39873 - 11904: 0xF1C7, - 39875 - 11904: 0xF1C5, - 39876 - 11904: 0xF1CC, - 39878 - 11904: 0xF1C4, - 39879 - 11904: 0xF1C3, - 39880 - 11904: 0xC357, - 39881 - 11904: 0xC355, - 39882 - 11904: 0xC354, - 39887 - 11904: 0x96B3, - 39891 - 11904: 0xF1CA, - 39892 - 11904: 0xF3CF, - 39893 - 11904: 0xF3D5, - 39894 - 11904: 0xC44A, - 39895 - 11904: 0xF3D0, - 39897 - 11904: 0xF3D3, - 39898 - 11904: 0xF3D7, - 39899 - 11904: 0xC44B, - 39900 - 11904: 0xF3D2, - 39901 - 11904: 0x9A76, - 39902 - 11904: 0xF3CA, - 39904 - 11904: 0xF3C9, - 39905 - 11904: 0xF3D6, - 39906 - 11904: 0xF3CD, - 39908 - 11904: 0xF3CB, - 39909 - 11904: 0xF3D4, - 39910 - 11904: 0xF3CC, - 39911 - 11904: 0xC449, - 39912 - 11904: 0xC448, - 39913 - 11904: 0x95D5, - 39914 - 11904: 0xF3C7, - 39915 - 11904: 0xF3C8, - 39916 - 11904: 0xF3D1, - 39917 - 11904: 0x9ECA, - 39920 - 11904: 0xF3CE, - 39921 - 11904: 0x9A77, - 39924 - 11904: 0x9A78, - 39927 - 11904: 0xF56C, - 39928 - 11904: 0xF56F, - 39933 - 11904: 0xC356, - 39935 - 11904: 0x9170, - 39938 - 11904: 0x916F, - 39941 - 11904: 0xF56D, - 39942 - 11904: 0xF573, - 39943 - 11904: 0xF571, - 39944 - 11904: 0xF56B, - 39945 - 11904: 0xF576, - 39946 - 11904: 0x9FA3, - 39947 - 11904: 0xF56A, - 39948 - 11904: 0x9171, - 39949 - 11904: 0xC4CF, - 39950 - 11904: 0xF572, - 39952 - 11904: 0x96B1, - 39954 - 11904: 0xF56E, - 39955 - 11904: 0xC4CE, - 39956 - 11904: 0xF575, - 39957 - 11904: 0x9F63, - 39959 - 11904: 0xF574, - 39963 - 11904: 0x9F67, - 39964 - 11904: 0xF6AB, - 39965 - 11904: 0xF6AA, - 39967 - 11904: 0x8BB9, - 39968 - 11904: 0x9A7A, - 39969 - 11904: 0xF6B1, - 39971 - 11904: 0xF6AD, - 39972 - 11904: 0xF6B0, - 39973 - 11904: 0xC560, - 39974 - 11904: 0x8B56, - 39976 - 11904: 0xF6AE, - 39977 - 11904: 0xF6AF, - 39979 - 11904: 0xF6A9, - 39980 - 11904: 0xF6AC, - 39981 - 11904: 0xC55F, - 39983 - 11904: 0x9ADA, - 39985 - 11904: 0xC5BF, - 39986 - 11904: 0xF7B4, - 39987 - 11904: 0xF7AF, - 39988 - 11904: 0xF7B3, - 39989 - 11904: 0x96B0, - 39990 - 11904: 0xF7B6, - 39991 - 11904: 0xF7B2, - 39993 - 11904: 0xF7AE, - 39994 - 11904: 0x9A7E, - 39995 - 11904: 0xC5C1, - 39996 - 11904: 0xF7B1, - 39997 - 11904: 0xF7B5, - 39998 - 11904: 0xC5C0, - 39999 - 11904: 0xF7AC, - 40000 - 11904: 0xF570, - 40001 - 11904: 0xF7B0, - 40004 - 11904: 0xF7AD, - 40005 - 11904: 0x9DDE, - 40006 - 11904: 0xF7AA, - 40008 - 11904: 0xF7AB, - 40009 - 11904: 0xC5BE, - 40010 - 11904: 0xF85A, - 40011 - 11904: 0xF85C, - 40012 - 11904: 0xF85F, - 40013 - 11904: 0xF85B, - 40014 - 11904: 0xF860, - 40015 - 11904: 0x96AD, - 40016 - 11904: 0xF859, - 40018 - 11904: 0xF857, - 40019 - 11904: 0x96AE, - 40020 - 11904: 0xC5EB, - 40021 - 11904: 0xF85D, - 40022 - 11904: 0xC5ED, - 40023 - 11904: 0xC5EC, - 40024 - 11904: 0xF858, - 40025 - 11904: 0xF85E, - 40029 - 11904: 0x9EA1, - 40030 - 11904: 0xF8DA, - 40031 - 11904: 0xC64D, - 40032 - 11904: 0xF8DB, - 40034 - 11904: 0xF8D9, - 40035 - 11904: 0xF8D6, - 40038 - 11904: 0xF8D8, - 40039 - 11904: 0xF8D7, - 40040 - 11904: 0xF95A, - 40045 - 11904: 0xF95C, - 40046 - 11904: 0xF95B, - 40049 - 11904: 0xF979, - 40050 - 11904: 0x9E50, - 40051 - 11904: 0xF978, - 40052 - 11904: 0xF977, - 40053 - 11904: 0xF97A, - 40055 - 11904: 0xC673, - 40056 - 11904: 0xC674, - 40057 - 11904: 0xF9CA, - 40058 - 11904: 0xF9CE, - 40059 - 11904: 0x96AF, - 40060 - 11904: 0x8BF4, - 40165 - 11904: 0xB3BE, - 40166 - 11904: 0xDCAF, - 40167 - 11904: 0xE0ED, - 40169 - 11904: 0xB9A7, - 40170 - 11904: 0xE0EB, - 40173 - 11904: 0xE0EC, - 40177 - 11904: 0xE4E2, - 40178 - 11904: 0xE4E3, - 40179 - 11904: 0xBBF1, - 40180 - 11904: 0xBBEF, - 40181 - 11904: 0xE4E4, - 40182 - 11904: 0xBBF0, - 40183 - 11904: 0xE8E8, - 40185 - 11904: 0xE8EB, - 40186 - 11904: 0xE8E5, - 40187 - 11904: 0xE8EC, - 40188 - 11904: 0xE8E4, - 40189 - 11904: 0xE8E6, - 40191 - 11904: 0xE8E7, - 40192 - 11904: 0xE8EA, - 40194 - 11904: 0x9FA4, - 40195 - 11904: 0xBEA1, - 40196 - 11904: 0xE8EF, - 40197 - 11904: 0xE8EE, - 40198 - 11904: 0xBE7D, - 40199 - 11904: 0xE8E9, - 40200 - 11904: 0xE8ED, - 40201 - 11904: 0xBE7E, - 40204 - 11904: 0x96BD, - 40208 - 11904: 0xECAC, - 40210 - 11904: 0xC06F, - 40212 - 11904: 0xECA7, - 40213 - 11904: 0xC06B, - 40214 - 11904: 0x96F4, - 40215 - 11904: 0xECA4, - 40216 - 11904: 0xECAA, - 40217 - 11904: 0xECAD, - 40219 - 11904: 0xC070, - 40221 - 11904: 0xECA9, - 40222 - 11904: 0xECA6, - 40223 - 11904: 0xECAE, - 40224 - 11904: 0xECA5, - 40225 - 11904: 0x96B8, - 40226 - 11904: 0xECAB, - 40227 - 11904: 0xC06C, - 40229 - 11904: 0xECA3, - 40230 - 11904: 0xC06D, - 40232 - 11904: 0xC06E, - 40233 - 11904: 0xECA8, - 40237 - 11904: 0xEFA9, - 40238 - 11904: 0xEF7A, - 40239 - 11904: 0xEF7B, - 40240 - 11904: 0xEF7E, - 40241 - 11904: 0xEF7C, - 40243 - 11904: 0xEF76, - 40244 - 11904: 0xFAA1, - 40246 - 11904: 0xEF79, - 40247 - 11904: 0xEFA5, - 40248 - 11904: 0xEF7D, - 40249 - 11904: 0x91A7, - 40251 - 11904: 0xC245, - 40253 - 11904: 0xEFA7, - 40254 - 11904: 0xEFA4, - 40255 - 11904: 0xC246, - 40256 - 11904: 0xEFA6, - 40257 - 11904: 0xEF77, - 40258 - 11904: 0xEFA2, - 40259 - 11904: 0xEFA3, - 40260 - 11904: 0xA05E, - 40261 - 11904: 0xEFA1, - 40265 - 11904: 0x9A7D, - 40266 - 11904: 0xF1D2, - 40267 - 11904: 0xF1D4, - 40268 - 11904: 0xF1D7, - 40270 - 11904: 0x8948, - 40271 - 11904: 0xF1D1, - 40272 - 11904: 0x9EB1, - 40273 - 11904: 0xC359, - 40274 - 11904: 0xF1D9, - 40275 - 11904: 0xF1D0, - 40276 - 11904: 0xF1DA, - 40278 - 11904: 0xF1D6, - 40279 - 11904: 0xF1D8, - 40280 - 11904: 0xF1DC, - 40281 - 11904: 0xF1D5, - 40282 - 11904: 0xF1DD, - 40283 - 11904: 0xF1D3, - 40284 - 11904: 0xF1CF, - 40285 - 11904: 0xC35A, - 40286 - 11904: 0x9DDB, - 40287 - 11904: 0xF1DB, - 40288 - 11904: 0xC35B, - 40289 - 11904: 0xC44D, - 40295 - 11904: 0xEF78, - 40296 - 11904: 0xF3F1, - 40297 - 11904: 0xF3E8, - 40298 - 11904: 0xC44F, - 40299 - 11904: 0xF3E4, - 40300 - 11904: 0xC450, - 40301 - 11904: 0x95BF, - 40302 - 11904: 0x8A73, - 40303 - 11904: 0xF3ED, - 40304 - 11904: 0xF3E7, - 40305 - 11904: 0xF3DD, - 40306 - 11904: 0xC44E, - 40307 - 11904: 0xF3EA, - 40308 - 11904: 0xF3E5, - 40309 - 11904: 0xF3E6, - 40311 - 11904: 0xF3D8, - 40312 - 11904: 0xF3DF, - 40313 - 11904: 0xF3EE, - 40315 - 11904: 0xF3EB, - 40316 - 11904: 0x9EFE, - 40317 - 11904: 0xF3E3, - 40318 - 11904: 0x917A, - 40319 - 11904: 0xF3EF, - 40320 - 11904: 0xF3DE, - 40321 - 11904: 0xF3D9, - 40322 - 11904: 0xF3EC, - 40323 - 11904: 0x917B, - 40324 - 11904: 0xF3DB, - 40325 - 11904: 0xF3E9, - 40326 - 11904: 0xF3E0, - 40327 - 11904: 0xF3F0, - 40328 - 11904: 0xF3DC, - 40329 - 11904: 0xC44C, - 40330 - 11904: 0xF3DA, - 40331 - 11904: 0xF3E1, - 40332 - 11904: 0xF3E2, - 40336 - 11904: 0xF57D, - 40338 - 11904: 0xF57B, - 40339 - 11904: 0x9AA3, - 40340 - 11904: 0xF5A2, - 40342 - 11904: 0xF5AE, - 40343 - 11904: 0xF5A5, - 40344 - 11904: 0xF57C, - 40345 - 11904: 0xF578, - 40346 - 11904: 0xF5A7, - 40347 - 11904: 0xF57E, - 40348 - 11904: 0xF5A3, - 40349 - 11904: 0xF57A, - 40350 - 11904: 0xF5AA, - 40351 - 11904: 0xF577, - 40352 - 11904: 0xF5A1, - 40353 - 11904: 0xF5A6, - 40354 - 11904: 0xF5A8, - 40355 - 11904: 0xF5AB, - 40356 - 11904: 0xF579, - 40357 - 11904: 0x96C2, - 40358 - 11904: 0xF5AF, - 40359 - 11904: 0xF5B0, - 40360 - 11904: 0xF5A9, - 40361 - 11904: 0xF5AD, - 40362 - 11904: 0xF5A4, - 40363 - 11904: 0x9F77, - 40364 - 11904: 0xF6C1, - 40365 - 11904: 0xF6C4, - 40367 - 11904: 0xC561, - 40369 - 11904: 0xF6C3, - 40370 - 11904: 0xF6C8, - 40371 - 11904: 0xF6C6, - 40372 - 11904: 0xC562, - 40373 - 11904: 0xF6BD, - 40374 - 11904: 0xF6B3, - 40375 - 11904: 0xF6B2, - 40376 - 11904: 0xC564, - 40377 - 11904: 0xF6BF, - 40378 - 11904: 0xF6C0, - 40379 - 11904: 0xF6BC, - 40380 - 11904: 0xF6B4, - 40381 - 11904: 0x9AA4, - 40382 - 11904: 0xF6B9, - 40383 - 11904: 0xF5AC, - 40384 - 11904: 0x9AA5, - 40385 - 11904: 0xF6B5, - 40386 - 11904: 0xC563, - 40387 - 11904: 0xF6BB, - 40388 - 11904: 0x91A1, - 40389 - 11904: 0xF6BA, - 40391 - 11904: 0xF6B6, - 40392 - 11904: 0xF6C2, - 40393 - 11904: 0x89B8, - 40394 - 11904: 0xF6B7, - 40395 - 11904: 0xF7BB, - 40396 - 11904: 0xF6C5, - 40397 - 11904: 0xF6C7, - 40398 - 11904: 0xF6BE, - 40399 - 11904: 0xF6B8, - 40400 - 11904: 0xF7BC, - 40401 - 11904: 0xF7BE, - 40402 - 11904: 0xF7B8, - 40403 - 11904: 0xC5C2, - 40404 - 11904: 0x9173, - 40405 - 11904: 0xF7C5, - 40406 - 11904: 0xF7C3, - 40407 - 11904: 0xC5C3, - 40408 - 11904: 0xF7C2, - 40409 - 11904: 0xF7C1, - 40410 - 11904: 0xF7BA, - 40411 - 11904: 0xF7B7, - 40412 - 11904: 0xF7BD, - 40413 - 11904: 0xF7C6, - 40414 - 11904: 0xF7B9, - 40415 - 11904: 0xF7BF, - 40417 - 11904: 0xF869, - 40418 - 11904: 0xF86E, - 40419 - 11904: 0xF864, - 40420 - 11904: 0xF867, - 40421 - 11904: 0xC5EE, - 40422 - 11904: 0xF86B, - 40424 - 11904: 0xF872, - 40425 - 11904: 0xF7C0, - 40427 - 11904: 0xF865, - 40428 - 11904: 0xF86F, - 40429 - 11904: 0xF873, - 40430 - 11904: 0xF86A, - 40431 - 11904: 0xF863, - 40432 - 11904: 0xF86D, - 40434 - 11904: 0xF86C, - 40435 - 11904: 0xF871, - 40436 - 11904: 0xF870, - 40437 - 11904: 0xF7C4, - 40438 - 11904: 0xF868, - 40439 - 11904: 0xF862, - 40440 - 11904: 0xF866, - 40441 - 11904: 0xC64E, - 40442 - 11904: 0xC64F, - 40443 - 11904: 0xF861, - 40444 - 11904: 0x9AA6, - 40445 - 11904: 0xF8E6, - 40446 - 11904: 0xF8DD, - 40447 - 11904: 0xF8E5, - 40448 - 11904: 0xF8E2, - 40449 - 11904: 0xF8E3, - 40450 - 11904: 0xF8DC, - 40451 - 11904: 0xF8DF, - 40452 - 11904: 0xF8E7, - 40453 - 11904: 0xF8E1, - 40454 - 11904: 0xF8E0, - 40455 - 11904: 0xF8DE, - 40457 - 11904: 0xF8E4, - 40458 - 11904: 0x89BD, - 40459 - 11904: 0xF95D, - 40460 - 11904: 0x89B9, - 40461 - 11904: 0xF95E, - 40462 - 11904: 0x917D, - 40463 - 11904: 0xF960, - 40464 - 11904: 0xF95F, - 40465 - 11904: 0xF962, - 40466 - 11904: 0xF961, - 40467 - 11904: 0xF97C, - 40468 - 11904: 0xF97B, - 40469 - 11904: 0xF9B7, - 40471 - 11904: 0xF9B8, - 40472 - 11904: 0x96BB, - 40473 - 11904: 0xF9C5, - 40474 - 11904: 0xC678, - 40475 - 11904: 0xC67C, - 40476 - 11904: 0x9FF2, - 40477 - 11904: 0xF9CF, - 40478 - 11904: 0xC67D, - 40479 - 11904: 0x8BF5, - 40565 - 11904: 0xB3BF, - 40569 - 11904: 0xC4D0, - 40570 - 11904: 0xF6C9, - 40571 - 11904: 0x9AA9, - 40572 - 11904: 0xC650, - 40573 - 11904: 0xC651, - 40575 - 11904: 0xB3C0, - 40576 - 11904: 0xE0EE, - 40577 - 11904: 0x9F54, - 40578 - 11904: 0xB9A8, - 40579 - 11904: 0xE8F0, - 40580 - 11904: 0x9FE3, - 40581 - 11904: 0x9EED, - 40582 - 11904: 0xECB0, - 40583 - 11904: 0xECB1, - 40584 - 11904: 0xECAF, - 40585 - 11904: 0xEFAB, - 40586 - 11904: 0xEFAA, - 40587 - 11904: 0xC247, - 40588 - 11904: 0xF1DF, - 40589 - 11904: 0xEFAC, - 40590 - 11904: 0xF1DE, - 40592 - 11904: 0x91AA, - 40593 - 11904: 0xF3F3, - 40594 - 11904: 0xC451, - 40595 - 11904: 0xC453, - 40596 - 11904: 0xF3F2, - 40597 - 11904: 0x91AB, - 40598 - 11904: 0xA070, - 40599 - 11904: 0xC452, - 40600 - 11904: 0x9F6D, - 40601 - 11904: 0xF5B1, - 40602 - 11904: 0xF5B3, - 40603 - 11904: 0xF5B2, - 40604 - 11904: 0xF6CA, - 40605 - 11904: 0xC565, - 40606 - 11904: 0x91AC, - 40607 - 11904: 0xC5EF, - 40608 - 11904: 0xF8E8, - 40609 - 11904: 0xF963, - 40610 - 11904: 0x91AD, - 40612 - 11904: 0xF9D2, - 40613 - 11904: 0xB3C1, - 40614 - 11904: 0xA0FD, - 40615 - 11904: 0xE4E5, - 40616 - 11904: 0x9FE2, - 40617 - 11904: 0xBEA2, - 40618 - 11904: 0x91AF, - 40619 - 11904: 0x9E41, - 40620 - 11904: 0x9AAA, - 40621 - 11904: 0xECB3, - 40622 - 11904: 0xECB2, - 40623 - 11904: 0x91B0, - 40624 - 11904: 0xEFAD, - 40625 - 11904: 0x9AAB, - 40628 - 11904: 0xC454, - 40629 - 11904: 0xC4D1, - 40630 - 11904: 0xF7C7, - 40631 - 11904: 0xF9CB, - 40635 - 11904: 0xB3C2, - 40636 - 11904: 0xBBF2, - 40637 - 11904: 0x9AAC, - 40638 - 11904: 0xBEA3, - 40639 - 11904: 0x9A4A, - 40640 - 11904: 0xF3F4, - 40641 - 11904: 0x91B2, - 40642 - 11904: 0xF874, - 40643 - 11904: 0xB6C0, - 40644 - 11904: 0x8BF6, - 40646 - 11904: 0x9AAD, - 40647 - 11904: 0x89B6, - 40648 - 11904: 0xEFAE, - 40652 - 11904: 0xC664, - 40653 - 11904: 0xB6C1, - 40654 - 11904: 0xBEA4, - 40655 - 11904: 0xC248, - 40656 - 11904: 0xF875, - 40657 - 11904: 0xB6C2, - 40659 - 11904: 0xE8F1, - 40660 - 11904: 0xC072, - 40661 - 11904: 0xECB4, - 40662 - 11904: 0xECB5, - 40664 - 11904: 0xC071, - 40666 - 11904: 0xEFAF, - 40667 - 11904: 0xC24C, - 40668 - 11904: 0xC24A, - 40669 - 11904: 0xC24B, - 40670 - 11904: 0xC249, - 40671 - 11904: 0xF1E0, - 40672 - 11904: 0xC35C, - 40674 - 11904: 0x9AAF, - 40676 - 11904: 0xF5B5, - 40677 - 11904: 0xF5B4, - 40678 - 11904: 0xF5B7, - 40679 - 11904: 0xF5B6, - 40680 - 11904: 0xC4D2, - 40683 - 11904: 0xF6CB, - 40685 - 11904: 0xF6CD, - 40686 - 11904: 0xF6CC, - 40687 - 11904: 0xC566, - 40688 - 11904: 0xF7C8, - 40689 - 11904: 0x9AB0, - 40690 - 11904: 0xF876, - 40691 - 11904: 0xF877, - 40692 - 11904: 0xC5F0, - 40693 - 11904: 0xF964, - 40694 - 11904: 0xF97D, - 40695 - 11904: 0xC675, - 40696 - 11904: 0x9AB1, - 40697 - 11904: 0xDCB0, - 40698 - 11904: 0xECB6, - 40699 - 11904: 0xEFB0, - 40700 - 11904: 0xF3F5, - 40701 - 11904: 0xE0EF, - 40702 - 11904: 0x9AA1, - 40703 - 11904: 0xEFB1, - 40704 - 11904: 0xF1E2, - 40705 - 11904: 0xF1E1, - 40706 - 11904: 0x91B9, - 40710 - 11904: 0xF878, - 40711 - 11904: 0xC652, - 40712 - 11904: 0x91BA, - 40713 - 11904: 0xF965, - 40714 - 11904: 0xF97E, - 40718 - 11904: 0xB9A9, - 40719 - 11904: 0xE8F2, - 40720 - 11904: 0xE8F3, - 40722 - 11904: 0xECB7, - 40723 - 11904: 0xB9AA, - 40725 - 11904: 0xC35D, - 40726 - 11904: 0xF1E3, - 40727 - 11904: 0x9F66, - 40728 - 11904: 0xF6CF, - 40729 - 11904: 0xC567, - 40730 - 11904: 0xF6D0, - 40731 - 11904: 0xF6CE, - 40732 - 11904: 0xF879, - 40734 - 11904: 0xF8E9, - 40736 - 11904: 0xB9AB, - 40738 - 11904: 0xEFB4, - 40739 - 11904: 0xEFB3, - 40740 - 11904: 0xEFB2, - 40741 - 11904: 0xF1E4, - 40742 - 11904: 0xA041, - 40743 - 11904: 0x8BB7, - 40744 - 11904: 0xF1E8, - 40745 - 11904: 0xF1E7, - 40746 - 11904: 0xF1E6, - 40747 - 11904: 0xF1E5, - 40748 - 11904: 0xC35E, - 40749 - 11904: 0xF3F6, - 40750 - 11904: 0xF5B9, - 40751 - 11904: 0xC4D3, - 40752 - 11904: 0xF5B8, - 40753 - 11904: 0xF6D1, - 40754 - 11904: 0xF7CB, - 40755 - 11904: 0xF7CA, - 40756 - 11904: 0xC5C4, - 40757 - 11904: 0xF7C9, - 40758 - 11904: 0xF87C, - 40759 - 11904: 0xF87B, - 40760 - 11904: 0xF87A, - 40761 - 11904: 0x91C0, - 40763 - 11904: 0xBBF3, - 40765 - 11904: 0xECB8, - 40766 - 11904: 0xC24D, - 40768 - 11904: 0xF3F7, - 40769 - 11904: 0xF3F8, - 40770 - 11904: 0xF7CC, - 40771 - 11904: 0xF87D, - 40772 - 11904: 0x9AB3, - 40773 - 11904: 0x91C3, - 40774 - 11904: 0xF8EA, - 40775 - 11904: 0xF966, - 40776 - 11904: 0xF9B9, - 40777 - 11904: 0xF9D4, - 40778 - 11904: 0xBBF4, - 40779 - 11904: 0xC24E, - 40780 - 11904: 0xF1E9, - 40781 - 11904: 0xF3F9, - 40782 - 11904: 0xF6D2, - 40783 - 11904: 0xF87E, - 40784 - 11904: 0xA0FC, - 40786 - 11904: 0xBEA6, - 40787 - 11904: 0x9FEE, - 40788 - 11904: 0xEFB5, - 40789 - 11904: 0xF1EA, - 40790 - 11904: 0xF3FA, - 40791 - 11904: 0xF3FB, - 40792 - 11904: 0xF3FC, - 40793 - 11904: 0xF5BE, - 40794 - 11904: 0x9F69, - 40795 - 11904: 0xF5BA, - 40796 - 11904: 0xC568, - 40797 - 11904: 0xF5BD, - 40798 - 11904: 0xF5BC, - 40799 - 11904: 0xC4D4, - 40800 - 11904: 0xF5BB, - 40801 - 11904: 0xC4D6, - 40802 - 11904: 0x91C8, - 40803 - 11904: 0xC4D5, - 40804 - 11904: 0xF6D4, - 40805 - 11904: 0xF6D3, - 40806 - 11904: 0xC569, - 40807 - 11904: 0xC56A, - 40809 - 11904: 0x91C9, - 40810 - 11904: 0xC5C6, - 40811 - 11904: 0xF7CD, - 40812 - 11904: 0xC5C5, - 40814 - 11904: 0xF8A3, - 40815 - 11904: 0xF8A4, - 40816 - 11904: 0xF8A2, - 40817 - 11904: 0xF8A1, - 40818 - 11904: 0xC654, - 40820 - 11904: 0xF8EB, - 40821 - 11904: 0xF8EC, - 40822 - 11904: 0xF8ED, - 40823 - 11904: 0xC653, - 40824 - 11904: 0xF967, - 40825 - 11904: 0xF96A, - 40826 - 11904: 0xF969, - 40827 - 11904: 0xF968, - 40830 - 11904: 0xF9D3, - 40831 - 11904: 0x8DE6, - 40845 - 11904: 0xC073, - 40846 - 11904: 0x91CB, - 40848 - 11904: 0xC365, - 40849 - 11904: 0xF5BF, - 40850 - 11904: 0xF6D5, - 40852 - 11904: 0xC5C7, - 40853 - 11904: 0xF7CE, - 40854 - 11904: 0x87AC, - 40855 - 11904: 0x87A4, - 40856 - 11904: 0xF9D5, - 40857 - 11904: 0x89C8, - 40860 - 11904: 0xC074, - 40863 - 11904: 0x8DAA, - 40864 - 11904: 0xEFB6, - 40866 - 11904: 0xF7CF, - 40868 - 11904: 0xF9A1, - 40869 - 11904: 0x9FDD, - 40870 - 11904: 0x8C43, - 40871 - 11904: 0x8C6D, - 40872 - 11904: 0x8C74, - 40873 - 11904: 0x8CB7, - 40874 - 11904: 0x8CB9, - 40875 - 11904: 0x8CBB, - 40876 - 11904: 0x8CC0, - 40877 - 11904: 0x8CD7, - 40878 - 11904: 0x8CD8, - 40879 - 11904: 0x8CDA, - 40880 - 11904: 0xC8A1, - 40881 - 11904: 0xC8A3, - 40882 - 11904: 0x8CED, - 40883 - 11904: 0x8D48, - 40903 - 11904: 0x87C2, - 40904 - 11904: 0x87D2, - 40905 - 11904: 0x87D6, - 40906 - 11904: 0x87DA, - 40907 - 11904: 0x87DF, -} - -const encode2Low, encode2High = 7870, 10046 - -var encode2 = [...]uint16{ - 7870 - 7870: 0x8863, - 7871 - 7870: 0x88A4, - 7872 - 7870: 0x8865, - 7873 - 7870: 0x88A6, - 8211 - 7870: 0xA156, - 8212 - 7870: 0xA158, - 8216 - 7870: 0xA1A5, - 8217 - 7870: 0xA1A6, - 8220 - 7870: 0xA1A7, - 8221 - 7870: 0xA1A8, - 8229 - 7870: 0xA14C, - 8230 - 7870: 0xA14B, - 8231 - 7870: 0xA145, - 8242 - 7870: 0xA1AC, - 8245 - 7870: 0xA1AB, - 8251 - 7870: 0xA1B0, - 8364 - 7870: 0xA3E1, - 8451 - 7870: 0xA24A, - 8453 - 7870: 0xA1C1, - 8457 - 7870: 0xA24B, - 8470 - 7870: 0xC8D2, - 8481 - 7870: 0xC8D3, - 8544 - 7870: 0xA2B9, - 8545 - 7870: 0xA2BA, - 8546 - 7870: 0xA2BB, - 8547 - 7870: 0xA2BC, - 8548 - 7870: 0xA2BD, - 8549 - 7870: 0xA2BE, - 8550 - 7870: 0xA2BF, - 8551 - 7870: 0xA2C0, - 8552 - 7870: 0xA2C1, - 8553 - 7870: 0xA2C2, - 8560 - 7870: 0xC6B5, - 8561 - 7870: 0xC6B6, - 8562 - 7870: 0xC6B7, - 8563 - 7870: 0xC6B8, - 8564 - 7870: 0xC6B9, - 8565 - 7870: 0xC6BA, - 8566 - 7870: 0xC6BB, - 8567 - 7870: 0xC6BC, - 8568 - 7870: 0xC6BD, - 8569 - 7870: 0xC6BE, - 8592 - 7870: 0xA1F6, - 8593 - 7870: 0xA1F4, - 8594 - 7870: 0xA1F7, - 8595 - 7870: 0xA1F5, - 8598 - 7870: 0xA1F8, - 8599 - 7870: 0xA1F9, - 8600 - 7870: 0xA1FB, - 8601 - 7870: 0xA1FA, - 8632 - 7870: 0xC877, - 8633 - 7870: 0xC878, - 8679 - 7870: 0xC876, - 8725 - 7870: 0xA241, - 8730 - 7870: 0xA1D4, - 8734 - 7870: 0xA1DB, - 8735 - 7870: 0xA1E8, - 8736 - 7870: 0xA1E7, - 8739 - 7870: 0xA1FD, - 8741 - 7870: 0xA1FC, - 8745 - 7870: 0xA1E4, - 8746 - 7870: 0xA1E5, - 8747 - 7870: 0xA1EC, - 8750 - 7870: 0xA1ED, - 8756 - 7870: 0xA1EF, - 8757 - 7870: 0xA1EE, - 8786 - 7870: 0xA1DC, - 8800 - 7870: 0xA1DA, - 8801 - 7870: 0xA1DD, - 8806 - 7870: 0xA1D8, - 8807 - 7870: 0xA1D9, - 8853 - 7870: 0xA1F2, - 8857 - 7870: 0xA1F3, - 8869 - 7870: 0xA1E6, - 8895 - 7870: 0xA1E9, - 9178 - 7870: 0x88A9, - 9179 - 7870: 0x88AA, - 9216 - 7870: 0xA3C0, - 9217 - 7870: 0xA3C1, - 9218 - 7870: 0xA3C2, - 9219 - 7870: 0xA3C3, - 9220 - 7870: 0xA3C4, - 9221 - 7870: 0xA3C5, - 9222 - 7870: 0xA3C6, - 9223 - 7870: 0xA3C7, - 9224 - 7870: 0xA3C8, - 9225 - 7870: 0xA3C9, - 9226 - 7870: 0xA3CA, - 9227 - 7870: 0xA3CB, - 9228 - 7870: 0xA3CC, - 9229 - 7870: 0xA3CD, - 9230 - 7870: 0xA3CE, - 9231 - 7870: 0xA3CF, - 9232 - 7870: 0xA3D0, - 9233 - 7870: 0xA3D1, - 9234 - 7870: 0xA3D2, - 9235 - 7870: 0xA3D3, - 9236 - 7870: 0xA3D4, - 9237 - 7870: 0xA3D5, - 9238 - 7870: 0xA3D6, - 9239 - 7870: 0xA3D7, - 9240 - 7870: 0xA3D8, - 9241 - 7870: 0xA3D9, - 9242 - 7870: 0xA3DA, - 9243 - 7870: 0xA3DB, - 9244 - 7870: 0xA3DC, - 9245 - 7870: 0xA3DD, - 9246 - 7870: 0xA3DE, - 9247 - 7870: 0xA3DF, - 9249 - 7870: 0xA3E0, - 9312 - 7870: 0xC6A1, - 9313 - 7870: 0xC6A2, - 9314 - 7870: 0xC6A3, - 9315 - 7870: 0xC6A4, - 9316 - 7870: 0xC6A5, - 9317 - 7870: 0xC6A6, - 9318 - 7870: 0xC6A7, - 9319 - 7870: 0xC6A8, - 9320 - 7870: 0xC6A9, - 9321 - 7870: 0xC6AA, - 9332 - 7870: 0xC6AB, - 9333 - 7870: 0xC6AC, - 9334 - 7870: 0xC6AD, - 9335 - 7870: 0xC6AE, - 9336 - 7870: 0xC6AF, - 9337 - 7870: 0xC6B0, - 9338 - 7870: 0xC6B1, - 9339 - 7870: 0xC6B2, - 9340 - 7870: 0xC6B3, - 9341 - 7870: 0xC6B4, - 9472 - 7870: 0xA277, - 9474 - 7870: 0xA278, - 9484 - 7870: 0xA27A, - 9488 - 7870: 0xA27B, - 9492 - 7870: 0xA27C, - 9496 - 7870: 0xA27D, - 9500 - 7870: 0xA275, - 9508 - 7870: 0xA274, - 9516 - 7870: 0xA273, - 9524 - 7870: 0xA272, - 9532 - 7870: 0xA271, - 9552 - 7870: 0xF9F9, - 9553 - 7870: 0xF9F8, - 9554 - 7870: 0xF9E6, - 9555 - 7870: 0xF9EF, - 9556 - 7870: 0xF9DD, - 9557 - 7870: 0xF9E8, - 9558 - 7870: 0xF9F1, - 9559 - 7870: 0xF9DF, - 9560 - 7870: 0xF9EC, - 9561 - 7870: 0xF9F5, - 9562 - 7870: 0xF9E3, - 9563 - 7870: 0xF9EE, - 9564 - 7870: 0xF9F7, - 9565 - 7870: 0xF9E5, - 9566 - 7870: 0xF9E9, - 9567 - 7870: 0xF9F2, - 9568 - 7870: 0xF9E0, - 9569 - 7870: 0xF9EB, - 9570 - 7870: 0xF9F4, - 9571 - 7870: 0xF9E2, - 9572 - 7870: 0xF9E7, - 9573 - 7870: 0xF9F0, - 9574 - 7870: 0xF9DE, - 9575 - 7870: 0xF9ED, - 9576 - 7870: 0xF9F6, - 9577 - 7870: 0xF9E4, - 9578 - 7870: 0xF9EA, - 9579 - 7870: 0xF9F3, - 9580 - 7870: 0xF9E1, - 9581 - 7870: 0xF9FA, - 9582 - 7870: 0xF9FB, - 9583 - 7870: 0xF9FD, - 9584 - 7870: 0xF9FC, - 9585 - 7870: 0xA2AC, - 9586 - 7870: 0xA2AD, - 9587 - 7870: 0xA2AE, - 9588 - 7870: 0xA15A, - 9601 - 7870: 0xA262, - 9602 - 7870: 0xA263, - 9603 - 7870: 0xA264, - 9604 - 7870: 0xA265, - 9605 - 7870: 0xA266, - 9606 - 7870: 0xA267, - 9607 - 7870: 0xA268, - 9608 - 7870: 0xA269, - 9609 - 7870: 0xA270, - 9610 - 7870: 0xA26F, - 9611 - 7870: 0xA26E, - 9612 - 7870: 0xA26D, - 9613 - 7870: 0xA26C, - 9614 - 7870: 0xA26B, - 9615 - 7870: 0xA26A, - 9620 - 7870: 0xA276, - 9621 - 7870: 0xA279, - 9632 - 7870: 0xA1BD, - 9633 - 7870: 0xA1BC, - 9650 - 7870: 0xA1B6, - 9651 - 7870: 0xA1B5, - 9660 - 7870: 0xA1BF, - 9661 - 7870: 0xA1BE, - 9670 - 7870: 0xA1BB, - 9671 - 7870: 0xA1BA, - 9675 - 7870: 0xA1B3, - 9678 - 7870: 0xA1B7, - 9679 - 7870: 0xA1B4, - 9698 - 7870: 0xA2A8, - 9699 - 7870: 0xA2A9, - 9700 - 7870: 0xA2AB, - 9701 - 7870: 0xA2AA, - 9733 - 7870: 0xA1B9, - 9734 - 7870: 0xA1B8, - 9792 - 7870: 0xA1F0, - 9794 - 7870: 0xA1F1, - 10045 - 7870: 0xC6E6, -} - -const encode3Low, encode3High = 167, 1106 - -var encode3 = [...]uint16{ - 167 - 167: 0xA1B1, - 168 - 167: 0xC6D8, - 175 - 167: 0xA1C2, - 176 - 167: 0xA258, - 177 - 167: 0xA1D3, - 183 - 167: 0xA150, - 192 - 167: 0x8859, - 193 - 167: 0x8857, - 200 - 167: 0x885D, - 201 - 167: 0x885B, - 202 - 167: 0x8866, - 210 - 167: 0x8861, - 211 - 167: 0x885F, - 215 - 167: 0xA1D1, - 224 - 167: 0x886A, - 225 - 167: 0x8868, - 232 - 167: 0x886F, - 233 - 167: 0x886D, - 234 - 167: 0x88A7, - 236 - 167: 0x8873, - 237 - 167: 0x8871, - 242 - 167: 0x8877, - 243 - 167: 0x8875, - 247 - 167: 0xA1D2, - 248 - 167: 0xC8FB, - 249 - 167: 0x887B, - 250 - 167: 0x8879, - 252 - 167: 0x88A2, - 256 - 167: 0x8856, - 257 - 167: 0x8867, - 274 - 167: 0x885A, - 275 - 167: 0x886C, - 282 - 167: 0x885C, - 283 - 167: 0x886E, - 299 - 167: 0x8870, - 331 - 167: 0xC8FC, - 332 - 167: 0x885E, - 333 - 167: 0x8874, - 339 - 167: 0xC8FA, - 363 - 167: 0x8878, - 461 - 167: 0x8858, - 462 - 167: 0x8869, - 464 - 167: 0x8872, - 465 - 167: 0x8860, - 466 - 167: 0x8876, - 468 - 167: 0x887A, - 470 - 167: 0x887C, - 472 - 167: 0x887D, - 474 - 167: 0x887E, - 476 - 167: 0x88A1, - 592 - 167: 0xC8F6, - 593 - 167: 0x886B, - 596 - 167: 0xC8F8, - 603 - 167: 0xC8F7, - 609 - 167: 0x88A8, - 618 - 167: 0xC8FE, - 629 - 167: 0xC8F9, - 643 - 167: 0xC8F5, - 650 - 167: 0xC8FD, - 710 - 167: 0xC6D9, - 711 - 167: 0xA3BE, - 713 - 167: 0xA3BC, - 714 - 167: 0xA3BD, - 715 - 167: 0xA3BF, - 717 - 167: 0xA1C5, - 729 - 167: 0xA3BB, - 913 - 167: 0xA344, - 914 - 167: 0xA345, - 915 - 167: 0xA346, - 916 - 167: 0xA347, - 917 - 167: 0xA348, - 918 - 167: 0xA349, - 919 - 167: 0xA34A, - 920 - 167: 0xA34B, - 921 - 167: 0xA34C, - 922 - 167: 0xA34D, - 923 - 167: 0xA34E, - 924 - 167: 0xA34F, - 925 - 167: 0xA350, - 926 - 167: 0xA351, - 927 - 167: 0xA352, - 928 - 167: 0xA353, - 929 - 167: 0xA354, - 931 - 167: 0xA355, - 932 - 167: 0xA356, - 933 - 167: 0xA357, - 934 - 167: 0xA358, - 935 - 167: 0xA359, - 936 - 167: 0xA35A, - 937 - 167: 0xA35B, - 945 - 167: 0xA35C, - 946 - 167: 0xA35D, - 947 - 167: 0xA35E, - 948 - 167: 0xA35F, - 949 - 167: 0xA360, - 950 - 167: 0xA361, - 951 - 167: 0xA362, - 952 - 167: 0xA363, - 953 - 167: 0xA364, - 954 - 167: 0xA365, - 955 - 167: 0xA366, - 956 - 167: 0xA367, - 957 - 167: 0xA368, - 958 - 167: 0xA369, - 959 - 167: 0xA36A, - 960 - 167: 0xA36B, - 961 - 167: 0xA36C, - 963 - 167: 0xA36D, - 964 - 167: 0xA36E, - 965 - 167: 0xA36F, - 966 - 167: 0xA370, - 967 - 167: 0xA371, - 968 - 167: 0xA372, - 969 - 167: 0xA373, - 1025 - 167: 0xC7F9, - 1040 - 167: 0xC7F3, - 1041 - 167: 0xC7F4, - 1042 - 167: 0xC7F5, - 1043 - 167: 0xC7F6, - 1044 - 167: 0xC7F7, - 1045 - 167: 0xC7F8, - 1046 - 167: 0xC7FA, - 1047 - 167: 0xC7FB, - 1048 - 167: 0xC7FC, - 1049 - 167: 0xC7FD, - 1050 - 167: 0xC7FE, - 1051 - 167: 0xC840, - 1052 - 167: 0xC841, - 1053 - 167: 0xC842, - 1054 - 167: 0xC843, - 1055 - 167: 0xC844, - 1056 - 167: 0xC845, - 1057 - 167: 0xC846, - 1058 - 167: 0xC847, - 1059 - 167: 0xC848, - 1060 - 167: 0xC849, - 1061 - 167: 0xC84A, - 1062 - 167: 0xC84B, - 1063 - 167: 0xC84C, - 1064 - 167: 0xC84D, - 1065 - 167: 0xC84E, - 1066 - 167: 0xC84F, - 1067 - 167: 0xC850, - 1068 - 167: 0xC851, - 1069 - 167: 0xC852, - 1070 - 167: 0xC853, - 1071 - 167: 0xC854, - 1072 - 167: 0xC855, - 1073 - 167: 0xC856, - 1074 - 167: 0xC857, - 1075 - 167: 0xC858, - 1076 - 167: 0xC859, - 1077 - 167: 0xC85A, - 1078 - 167: 0xC85C, - 1079 - 167: 0xC85D, - 1080 - 167: 0xC85E, - 1081 - 167: 0xC85F, - 1082 - 167: 0xC860, - 1083 - 167: 0xC861, - 1084 - 167: 0xC862, - 1085 - 167: 0xC863, - 1086 - 167: 0xC864, - 1087 - 167: 0xC865, - 1088 - 167: 0xC866, - 1089 - 167: 0xC867, - 1090 - 167: 0xC868, - 1091 - 167: 0xC869, - 1092 - 167: 0xC86A, - 1093 - 167: 0xC86B, - 1094 - 167: 0xC86C, - 1095 - 167: 0xC86D, - 1096 - 167: 0xC86E, - 1097 - 167: 0xC86F, - 1098 - 167: 0xC870, - 1099 - 167: 0xC871, - 1100 - 167: 0xC872, - 1101 - 167: 0xC873, - 1102 - 167: 0xC874, - 1103 - 167: 0xC875, - 1105 - 167: 0xC85B, -} - -const encode4Low, encode4High = 65072, 65518 - -var encode4 = [...]uint16{ - 65072 - 65072: 0xA14A, - 65073 - 65072: 0xA157, - 65075 - 65072: 0xA159, - 65076 - 65072: 0xA15B, - 65077 - 65072: 0xA15F, - 65078 - 65072: 0xA160, - 65079 - 65072: 0xA163, - 65080 - 65072: 0xA164, - 65081 - 65072: 0xA167, - 65082 - 65072: 0xA168, - 65083 - 65072: 0xA16B, - 65084 - 65072: 0xA16C, - 65085 - 65072: 0xA16F, - 65086 - 65072: 0xA170, - 65087 - 65072: 0xA173, - 65088 - 65072: 0xA174, - 65089 - 65072: 0xA177, - 65090 - 65072: 0xA178, - 65091 - 65072: 0xA17B, - 65092 - 65072: 0xA17C, - 65097 - 65072: 0xA1C6, - 65098 - 65072: 0xA1C7, - 65099 - 65072: 0xA1CA, - 65100 - 65072: 0xA1CB, - 65101 - 65072: 0xA1C8, - 65102 - 65072: 0xA1C9, - 65103 - 65072: 0xA15C, - 65104 - 65072: 0xA14D, - 65105 - 65072: 0xA14E, - 65106 - 65072: 0xA14F, - 65108 - 65072: 0xA151, - 65109 - 65072: 0xA152, - 65110 - 65072: 0xA153, - 65111 - 65072: 0xA154, - 65113 - 65072: 0xA17D, - 65114 - 65072: 0xA17E, - 65115 - 65072: 0xA1A1, - 65116 - 65072: 0xA1A2, - 65117 - 65072: 0xA1A3, - 65118 - 65072: 0xA1A4, - 65119 - 65072: 0xA1CC, - 65120 - 65072: 0xA1CD, - 65121 - 65072: 0xA1CE, - 65122 - 65072: 0xA1DE, - 65123 - 65072: 0xA1DF, - 65124 - 65072: 0xA1E0, - 65125 - 65072: 0xA1E1, - 65126 - 65072: 0xA1E2, - 65128 - 65072: 0xA242, - 65129 - 65072: 0xA24C, - 65130 - 65072: 0xA24D, - 65131 - 65072: 0xA24E, - 65281 - 65072: 0xA149, - 65282 - 65072: 0xC8D0, - 65283 - 65072: 0xA1AD, - 65284 - 65072: 0xA243, - 65285 - 65072: 0xA248, - 65286 - 65072: 0xA1AE, - 65287 - 65072: 0xC8CF, - 65288 - 65072: 0xA15D, - 65289 - 65072: 0xA15E, - 65290 - 65072: 0xA1AF, - 65291 - 65072: 0xA1CF, - 65292 - 65072: 0xA141, - 65293 - 65072: 0xA1D0, - 65294 - 65072: 0xA144, - 65295 - 65072: 0xA1FE, - 65296 - 65072: 0xA2AF, - 65297 - 65072: 0xA2B0, - 65298 - 65072: 0xA2B1, - 65299 - 65072: 0xA2B2, - 65300 - 65072: 0xA2B3, - 65301 - 65072: 0xA2B4, - 65302 - 65072: 0xA2B5, - 65303 - 65072: 0xA2B6, - 65304 - 65072: 0xA2B7, - 65305 - 65072: 0xA2B8, - 65306 - 65072: 0xA147, - 65307 - 65072: 0xA146, - 65308 - 65072: 0xA1D5, - 65309 - 65072: 0xA1D7, - 65310 - 65072: 0xA1D6, - 65311 - 65072: 0xA148, - 65312 - 65072: 0xA249, - 65313 - 65072: 0xA2CF, - 65314 - 65072: 0xA2D0, - 65315 - 65072: 0xA2D1, - 65316 - 65072: 0xA2D2, - 65317 - 65072: 0xA2D3, - 65318 - 65072: 0xA2D4, - 65319 - 65072: 0xA2D5, - 65320 - 65072: 0xA2D6, - 65321 - 65072: 0xA2D7, - 65322 - 65072: 0xA2D8, - 65323 - 65072: 0xA2D9, - 65324 - 65072: 0xA2DA, - 65325 - 65072: 0xA2DB, - 65326 - 65072: 0xA2DC, - 65327 - 65072: 0xA2DD, - 65328 - 65072: 0xA2DE, - 65329 - 65072: 0xA2DF, - 65330 - 65072: 0xA2E0, - 65331 - 65072: 0xA2E1, - 65332 - 65072: 0xA2E2, - 65333 - 65072: 0xA2E3, - 65334 - 65072: 0xA2E4, - 65335 - 65072: 0xA2E5, - 65336 - 65072: 0xA2E6, - 65337 - 65072: 0xA2E7, - 65338 - 65072: 0xA2E8, - 65339 - 65072: 0xC6E4, - 65340 - 65072: 0xA240, - 65341 - 65072: 0xC6E5, - 65343 - 65072: 0xA1C4, - 65345 - 65072: 0xA2E9, - 65346 - 65072: 0xA2EA, - 65347 - 65072: 0xA2EB, - 65348 - 65072: 0xA2EC, - 65349 - 65072: 0xA2ED, - 65350 - 65072: 0xA2EE, - 65351 - 65072: 0xA2EF, - 65352 - 65072: 0xA2F0, - 65353 - 65072: 0xA2F1, - 65354 - 65072: 0xA2F2, - 65355 - 65072: 0xA2F3, - 65356 - 65072: 0xA2F4, - 65357 - 65072: 0xA2F5, - 65358 - 65072: 0xA2F6, - 65359 - 65072: 0xA2F7, - 65360 - 65072: 0xA2F8, - 65361 - 65072: 0xA2F9, - 65362 - 65072: 0xA2FA, - 65363 - 65072: 0xA2FB, - 65364 - 65072: 0xA2FC, - 65365 - 65072: 0xA2FD, - 65366 - 65072: 0xA2FE, - 65367 - 65072: 0xA340, - 65368 - 65072: 0xA341, - 65369 - 65072: 0xA342, - 65370 - 65072: 0xA343, - 65371 - 65072: 0xA161, - 65372 - 65072: 0xA155, - 65373 - 65072: 0xA162, - 65374 - 65072: 0xA1E3, - 65504 - 65072: 0xA246, - 65505 - 65072: 0xA247, - 65506 - 65072: 0xC8CD, - 65507 - 65072: 0xA1C3, - 65508 - 65072: 0xC8CE, - 65509 - 65072: 0xA244, - 65517 - 65072: 0xF9FE, -} - -const encode5Low, encode5High = 194597, 195029 - -var encode5 = [...]uint16{ - 194597 - 194597: 0x9874, - 194619 - 194597: 0x9AC8, - 194624 - 194597: 0xA047, - 194680 - 194597: 0x8BC3, - 194708 - 194597: 0xFC48, - 194726 - 194597: 0xFC77, - 194765 - 194597: 0x9C52, - 194964 - 194597: 0x8EFD, - 194994 - 194597: 0x8FA8, - 195004 - 194597: 0x957A, - 195028 - 194597: 0x8FF0, -} - -const encode6Low, encode6High = 63751, 64014 - -var encode6 = [...]uint16{ - 63751 - 63751: 0x8BF8, - 64012 - 63751: 0xC94A, - 64013 - 63751: 0xDDFC, -} - -const encode7Low, encode7High = 175615, 175616 - -var encode7 = [...]uint16{ - 175615 - 175615: 0x87DC, -} diff --git a/vendor/golang.org/x/text/encoding/unicode/override.go b/vendor/golang.org/x/text/encoding/unicode/override.go deleted file mode 100644 index 35d62fc..0000000 --- a/vendor/golang.org/x/text/encoding/unicode/override.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package unicode - -import ( - "golang.org/x/text/transform" -) - -// BOMOverride returns a new decoder transformer that is identical to fallback, -// except that the presence of a Byte Order Mark at the start of the input -// causes it to switch to the corresponding Unicode decoding. It will only -// consider BOMs for UTF-8, UTF-16BE, and UTF-16LE. -// -// This differs from using ExpectBOM by allowing a BOM to switch to UTF-8, not -// just UTF-16 variants, and allowing falling back to any encoding scheme. -// -// This technique is recommended by the W3C for use in HTML 5: "For -// compatibility with deployed content, the byte order mark (also known as BOM) -// is considered more authoritative than anything else." -// http://www.w3.org/TR/encoding/#specification-hooks -// -// Using BOMOverride is mostly intended for use cases where the first characters -// of a fallback encoding are known to not be a BOM, for example, for valid HTML -// and most encodings. -func BOMOverride(fallback transform.Transformer) transform.Transformer { - // TODO: possibly allow a variadic argument of unicode encodings to allow - // specifying details of which fallbacks are supported as well as - // specifying the details of the implementations. This would also allow for - // support for UTF-32, which should not be supported by default. - return &bomOverride{fallback: fallback} -} - -type bomOverride struct { - fallback transform.Transformer - current transform.Transformer -} - -func (d *bomOverride) Reset() { - d.current = nil - d.fallback.Reset() -} - -var ( - // TODO: we could use decode functions here, instead of allocating a new - // decoder on every NewDecoder as IgnoreBOM decoders can be stateless. - utf16le = UTF16(LittleEndian, IgnoreBOM) - utf16be = UTF16(BigEndian, IgnoreBOM) -) - -const utf8BOM = "\ufeff" - -func (d *bomOverride) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if d.current != nil { - return d.current.Transform(dst, src, atEOF) - } - if len(src) < 3 && !atEOF { - return 0, 0, transform.ErrShortSrc - } - d.current = d.fallback - bomSize := 0 - if len(src) >= 2 { - if src[0] == 0xFF && src[1] == 0xFE { - d.current = utf16le.NewDecoder() - bomSize = 2 - } else if src[0] == 0xFE && src[1] == 0xFF { - d.current = utf16be.NewDecoder() - bomSize = 2 - } else if len(src) >= 3 && - src[0] == utf8BOM[0] && - src[1] == utf8BOM[1] && - src[2] == utf8BOM[2] { - d.current = transform.Nop - bomSize = 3 - } - } - if bomSize < len(src) { - nDst, nSrc, err = d.current.Transform(dst, src[bomSize:], atEOF) - } - return nDst, nSrc + bomSize, err -} diff --git a/vendor/golang.org/x/text/encoding/unicode/unicode.go b/vendor/golang.org/x/text/encoding/unicode/unicode.go deleted file mode 100644 index dd99ad1..0000000 --- a/vendor/golang.org/x/text/encoding/unicode/unicode.go +++ /dev/null @@ -1,512 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package unicode provides Unicode encodings such as UTF-16. -package unicode // import "golang.org/x/text/encoding/unicode" - -import ( - "bytes" - "errors" - "unicode/utf16" - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/internal/utf8internal" - "golang.org/x/text/runes" - "golang.org/x/text/transform" -) - -// TODO: I think the Transformers really should return errors on unmatched -// surrogate pairs and odd numbers of bytes. This is not required by RFC 2781, -// which leaves it open, but is suggested by WhatWG. It will allow for all error -// modes as defined by WhatWG: fatal, HTML and Replacement. This would require -// the introduction of some kind of error type for conveying the erroneous code -// point. - -// UTF8 is the UTF-8 encoding. It neither removes nor adds byte order marks. -var UTF8 encoding.Encoding = utf8enc - -// UTF8BOM is an UTF-8 encoding where the decoder strips a leading byte order -// mark while the encoder adds one. -// -// Some editors add a byte order mark as a signature to UTF-8 files. Although -// the byte order mark is not useful for detecting byte order in UTF-8, it is -// sometimes used as a convention to mark UTF-8-encoded files. This relies on -// the observation that the UTF-8 byte order mark is either an illegal or at -// least very unlikely sequence in any other character encoding. -var UTF8BOM encoding.Encoding = utf8bomEncoding{} - -type utf8bomEncoding struct{} - -func (utf8bomEncoding) String() string { - return "UTF-8-BOM" -} - -func (utf8bomEncoding) ID() (identifier.MIB, string) { - return identifier.Unofficial, "x-utf8bom" -} - -func (utf8bomEncoding) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{ - Transformer: &utf8bomEncoder{t: runes.ReplaceIllFormed()}, - } -} - -func (utf8bomEncoding) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: &utf8bomDecoder{}} -} - -var utf8enc = &internal.Encoding{ - &internal.SimpleEncoding{utf8Decoder{}, runes.ReplaceIllFormed()}, - "UTF-8", - identifier.UTF8, -} - -type utf8bomDecoder struct { - checked bool -} - -func (t *utf8bomDecoder) Reset() { - t.checked = false -} - -func (t *utf8bomDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if !t.checked { - if !atEOF && len(src) < len(utf8BOM) { - if len(src) == 0 { - return 0, 0, nil - } - return 0, 0, transform.ErrShortSrc - } - if bytes.HasPrefix(src, []byte(utf8BOM)) { - nSrc += len(utf8BOM) - src = src[len(utf8BOM):] - } - t.checked = true - } - nDst, n, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF) - nSrc += n - return nDst, nSrc, err -} - -type utf8bomEncoder struct { - written bool - t transform.Transformer -} - -func (t *utf8bomEncoder) Reset() { - t.written = false - t.t.Reset() -} - -func (t *utf8bomEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if !t.written { - if len(dst) < len(utf8BOM) { - return nDst, 0, transform.ErrShortDst - } - nDst = copy(dst, utf8BOM) - t.written = true - } - n, nSrc, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF) - nDst += n - return nDst, nSrc, err -} - -type utf8Decoder struct{ transform.NopResetter } - -func (utf8Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - var pSrc int // point from which to start copy in src - var accept utf8internal.AcceptRange - - // The decoder can only make the input larger, not smaller. - n := len(src) - if len(dst) < n { - err = transform.ErrShortDst - n = len(dst) - atEOF = false - } - for nSrc < n { - c := src[nSrc] - if c < utf8.RuneSelf { - nSrc++ - continue - } - first := utf8internal.First[c] - size := int(first & utf8internal.SizeMask) - if first == utf8internal.FirstInvalid { - goto handleInvalid // invalid starter byte - } - accept = utf8internal.AcceptRanges[first>>utf8internal.AcceptShift] - if nSrc+size > n { - if !atEOF { - // We may stop earlier than necessary here if the short sequence - // has invalid bytes. Not checking for this simplifies the code - // and may avoid duplicate computations in certain conditions. - if err == nil { - err = transform.ErrShortSrc - } - break - } - // Determine the maximal subpart of an ill-formed subsequence. - switch { - case nSrc+1 >= n || src[nSrc+1] < accept.Lo || accept.Hi < src[nSrc+1]: - size = 1 - case nSrc+2 >= n || src[nSrc+2] < utf8internal.LoCB || utf8internal.HiCB < src[nSrc+2]: - size = 2 - default: - size = 3 // As we are short, the maximum is 3. - } - goto handleInvalid - } - if c = src[nSrc+1]; c < accept.Lo || accept.Hi < c { - size = 1 - goto handleInvalid // invalid continuation byte - } else if size == 2 { - } else if c = src[nSrc+2]; c < utf8internal.LoCB || utf8internal.HiCB < c { - size = 2 - goto handleInvalid // invalid continuation byte - } else if size == 3 { - } else if c = src[nSrc+3]; c < utf8internal.LoCB || utf8internal.HiCB < c { - size = 3 - goto handleInvalid // invalid continuation byte - } - nSrc += size - continue - - handleInvalid: - // Copy the scanned input so far. - nDst += copy(dst[nDst:], src[pSrc:nSrc]) - - // Append RuneError to the destination. - const runeError = "\ufffd" - if nDst+len(runeError) > len(dst) { - return nDst, nSrc, transform.ErrShortDst - } - nDst += copy(dst[nDst:], runeError) - - // Skip the maximal subpart of an ill-formed subsequence according to - // the W3C standard way instead of the Go way. This Transform is - // probably the only place in the text repo where it is warranted. - nSrc += size - pSrc = nSrc - - // Recompute the maximum source length. - if sz := len(dst) - nDst; sz < len(src)-nSrc { - err = transform.ErrShortDst - n = nSrc + sz - atEOF = false - } - } - return nDst + copy(dst[nDst:], src[pSrc:nSrc]), nSrc, err -} - -// UTF16 returns a UTF-16 Encoding for the given default endianness and byte -// order mark (BOM) policy. -// -// When decoding from UTF-16 to UTF-8, if the BOMPolicy is IgnoreBOM then -// neither BOMs U+FEFF nor noncharacters U+FFFE in the input stream will affect -// the endianness used for decoding, and will instead be output as their -// standard UTF-8 encodings: "\xef\xbb\xbf" and "\xef\xbf\xbe". If the BOMPolicy -// is UseBOM or ExpectBOM a staring BOM is not written to the UTF-8 output. -// Instead, it overrides the default endianness e for the remainder of the -// transformation. Any subsequent BOMs U+FEFF or noncharacters U+FFFE will not -// affect the endianness used, and will instead be output as their standard -// UTF-8 encodings. For UseBOM, if there is no starting BOM, it will proceed -// with the default Endianness. For ExpectBOM, in that case, the transformation -// will return early with an ErrMissingBOM error. -// -// When encoding from UTF-8 to UTF-16, a BOM will be inserted at the start of -// the output if the BOMPolicy is UseBOM or ExpectBOM. Otherwise, a BOM will not -// be inserted. The UTF-8 input does not need to contain a BOM. -// -// There is no concept of a 'native' endianness. If the UTF-16 data is produced -// and consumed in a greater context that implies a certain endianness, use -// IgnoreBOM. Otherwise, use ExpectBOM and always produce and consume a BOM. -// -// In the language of https://www.unicode.org/faq/utf_bom.html#bom10, IgnoreBOM -// corresponds to "Where the precise type of the data stream is known... the -// BOM should not be used" and ExpectBOM corresponds to "A particular -// protocol... may require use of the BOM". -func UTF16(e Endianness, b BOMPolicy) encoding.Encoding { - return utf16Encoding{config{e, b}, mibValue[e][b&bomMask]} -} - -// mibValue maps Endianness and BOMPolicy settings to MIB constants. Note that -// some configurations map to the same MIB identifier. RFC 2781 has requirements -// and recommendations. Some of the "configurations" are merely recommendations, -// so multiple configurations could match. -var mibValue = map[Endianness][numBOMValues]identifier.MIB{ - BigEndian: [numBOMValues]identifier.MIB{ - IgnoreBOM: identifier.UTF16BE, - UseBOM: identifier.UTF16, // BigEnding default is preferred by RFC 2781. - // TODO: acceptBOM | strictBOM would map to UTF16BE as well. - }, - LittleEndian: [numBOMValues]identifier.MIB{ - IgnoreBOM: identifier.UTF16LE, - UseBOM: identifier.UTF16, // LittleEndian default is allowed and preferred on Windows. - // TODO: acceptBOM | strictBOM would map to UTF16LE as well. - }, - // ExpectBOM is not widely used and has no valid MIB identifier. -} - -// All lists a configuration for each IANA-defined UTF-16 variant. -var All = []encoding.Encoding{ - UTF8, - UTF16(BigEndian, UseBOM), - UTF16(BigEndian, IgnoreBOM), - UTF16(LittleEndian, IgnoreBOM), -} - -// BOMPolicy is a UTF-16 encoding's byte order mark policy. -type BOMPolicy uint8 - -const ( - writeBOM BOMPolicy = 0x01 - acceptBOM BOMPolicy = 0x02 - requireBOM BOMPolicy = 0x04 - bomMask BOMPolicy = 0x07 - - // HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a - // map of an array of length 8 of a type that is also used as a key or value - // in another map). See golang.org/issue/11354. - // TODO: consider changing this value back to 8 if the use of 1.4.* has - // been minimized. - numBOMValues = 8 + 1 - - // IgnoreBOM means to ignore any byte order marks. - IgnoreBOM BOMPolicy = 0 - // Common and RFC 2781-compliant interpretation for UTF-16BE/LE. - - // UseBOM means that the UTF-16 form may start with a byte order mark, which - // will be used to override the default encoding. - UseBOM BOMPolicy = writeBOM | acceptBOM - // Common and RFC 2781-compliant interpretation for UTF-16. - - // ExpectBOM means that the UTF-16 form must start with a byte order mark, - // which will be used to override the default encoding. - ExpectBOM BOMPolicy = writeBOM | acceptBOM | requireBOM - // Used in Java as Unicode (not to be confused with Java's UTF-16) and - // ICU's UTF-16,version=1. Not compliant with RFC 2781. - - // TODO (maybe): strictBOM: BOM must match Endianness. This would allow: - // - UTF-16(B|L)E,version=1: writeBOM | acceptBOM | requireBOM | strictBOM - // (UnicodeBig and UnicodeLittle in Java) - // - RFC 2781-compliant, but less common interpretation for UTF-16(B|L)E: - // acceptBOM | strictBOM (e.g. assigned to CheckBOM). - // This addition would be consistent with supporting ExpectBOM. -) - -// Endianness is a UTF-16 encoding's default endianness. -type Endianness bool - -const ( - // BigEndian is UTF-16BE. - BigEndian Endianness = false - // LittleEndian is UTF-16LE. - LittleEndian Endianness = true -) - -// ErrMissingBOM means that decoding UTF-16 input with ExpectBOM did not find a -// starting byte order mark. -var ErrMissingBOM = errors.New("encoding: missing byte order mark") - -type utf16Encoding struct { - config - mib identifier.MIB -} - -type config struct { - endianness Endianness - bomPolicy BOMPolicy -} - -func (u utf16Encoding) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: &utf16Decoder{ - initial: u.config, - current: u.config, - }} -} - -func (u utf16Encoding) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{Transformer: &utf16Encoder{ - endianness: u.endianness, - initialBOMPolicy: u.bomPolicy, - currentBOMPolicy: u.bomPolicy, - }} -} - -func (u utf16Encoding) ID() (mib identifier.MIB, other string) { - return u.mib, "" -} - -func (u utf16Encoding) String() string { - e, b := "B", "" - if u.endianness == LittleEndian { - e = "L" - } - switch u.bomPolicy { - case ExpectBOM: - b = "Expect" - case UseBOM: - b = "Use" - case IgnoreBOM: - b = "Ignore" - } - return "UTF-16" + e + "E (" + b + " BOM)" -} - -type utf16Decoder struct { - initial config - current config -} - -func (u *utf16Decoder) Reset() { - u.current = u.initial -} - -func (u *utf16Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if len(src) < 2 && atEOF && u.current.bomPolicy&requireBOM != 0 { - return 0, 0, ErrMissingBOM - } - if len(src) == 0 { - return 0, 0, nil - } - if len(src) >= 2 && u.current.bomPolicy&acceptBOM != 0 { - switch { - case src[0] == 0xfe && src[1] == 0xff: - u.current.endianness = BigEndian - nSrc = 2 - case src[0] == 0xff && src[1] == 0xfe: - u.current.endianness = LittleEndian - nSrc = 2 - default: - if u.current.bomPolicy&requireBOM != 0 { - return 0, 0, ErrMissingBOM - } - } - u.current.bomPolicy = IgnoreBOM - } - - var r rune - var dSize, sSize int - for nSrc < len(src) { - if nSrc+1 < len(src) { - x := uint16(src[nSrc+0])<<8 | uint16(src[nSrc+1]) - if u.current.endianness == LittleEndian { - x = x>>8 | x<<8 - } - r, sSize = rune(x), 2 - if utf16.IsSurrogate(r) { - if nSrc+3 < len(src) { - x = uint16(src[nSrc+2])<<8 | uint16(src[nSrc+3]) - if u.current.endianness == LittleEndian { - x = x>>8 | x<<8 - } - // Save for next iteration if it is not a high surrogate. - if isHighSurrogate(rune(x)) { - r, sSize = utf16.DecodeRune(r, rune(x)), 4 - } - } else if !atEOF { - err = transform.ErrShortSrc - break - } - } - if dSize = utf8.RuneLen(r); dSize < 0 { - r, dSize = utf8.RuneError, 3 - } - } else if atEOF { - // Single trailing byte. - r, dSize, sSize = utf8.RuneError, 3, 1 - } else { - err = transform.ErrShortSrc - break - } - if nDst+dSize > len(dst) { - err = transform.ErrShortDst - break - } - nDst += utf8.EncodeRune(dst[nDst:], r) - nSrc += sSize - } - return nDst, nSrc, err -} - -func isHighSurrogate(r rune) bool { - return 0xDC00 <= r && r <= 0xDFFF -} - -type utf16Encoder struct { - endianness Endianness - initialBOMPolicy BOMPolicy - currentBOMPolicy BOMPolicy -} - -func (u *utf16Encoder) Reset() { - u.currentBOMPolicy = u.initialBOMPolicy -} - -func (u *utf16Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if u.currentBOMPolicy&writeBOM != 0 { - if len(dst) < 2 { - return 0, 0, transform.ErrShortDst - } - dst[0], dst[1] = 0xfe, 0xff - u.currentBOMPolicy = IgnoreBOM - nDst = 2 - } - - r, size := rune(0), 0 - for nSrc < len(src) { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - } - - if r <= 0xffff { - if nDst+2 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = uint8(r >> 8) - dst[nDst+1] = uint8(r) - nDst += 2 - } else { - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - r1, r2 := utf16.EncodeRune(r) - dst[nDst+0] = uint8(r1 >> 8) - dst[nDst+1] = uint8(r1) - dst[nDst+2] = uint8(r2 >> 8) - dst[nDst+3] = uint8(r2) - nDst += 4 - } - nSrc += size - } - - if u.endianness == LittleEndian { - for i := 0; i < nDst; i += 2 { - dst[i], dst[i+1] = dst[i+1], dst[i] - } - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/internal/language/common.go b/vendor/golang.org/x/text/internal/language/common.go deleted file mode 100644 index cdfdb74..0000000 --- a/vendor/golang.org/x/text/internal/language/common.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package language - -// This file contains code common to the maketables.go and the package code. - -// AliasType is the type of an alias in AliasMap. -type AliasType int8 - -const ( - Deprecated AliasType = iota - Macro - Legacy - - AliasTypeUnknown AliasType = -1 -) diff --git a/vendor/golang.org/x/text/internal/language/compact.go b/vendor/golang.org/x/text/internal/language/compact.go deleted file mode 100644 index 46a0015..0000000 --- a/vendor/golang.org/x/text/internal/language/compact.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -// CompactCoreInfo is a compact integer with the three core tags encoded. -type CompactCoreInfo uint32 - -// GetCompactCore generates a uint32 value that is guaranteed to be unique for -// different language, region, and script values. -func GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) { - if t.LangID > langNoIndexOffset { - return 0, false - } - cci |= CompactCoreInfo(t.LangID) << (8 + 12) - cci |= CompactCoreInfo(t.ScriptID) << 12 - cci |= CompactCoreInfo(t.RegionID) - return cci, true -} - -// Tag generates a tag from c. -func (c CompactCoreInfo) Tag() Tag { - return Tag{ - LangID: Language(c >> 20), - RegionID: Region(c & 0x3ff), - ScriptID: Script(c>>12) & 0xff, - } -} diff --git a/vendor/golang.org/x/text/internal/language/compact/compact.go b/vendor/golang.org/x/text/internal/language/compact/compact.go deleted file mode 100644 index 1b36935..0000000 --- a/vendor/golang.org/x/text/internal/language/compact/compact.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package compact defines a compact representation of language tags. -// -// Common language tags (at least all for which locale information is defined -// in CLDR) are assigned a unique index. Each Tag is associated with such an -// ID for selecting language-related resources (such as translations) as well -// as one for selecting regional defaults (currency, number formatting, etc.) -// -// It may want to export this functionality at some point, but at this point -// this is only available for use within x/text. -package compact // import "golang.org/x/text/internal/language/compact" - -import ( - "sort" - "strings" - - "golang.org/x/text/internal/language" -) - -// ID is an integer identifying a single tag. -type ID uint16 - -func getCoreIndex(t language.Tag) (id ID, ok bool) { - cci, ok := language.GetCompactCore(t) - if !ok { - return 0, false - } - i := sort.Search(len(coreTags), func(i int) bool { - return cci <= coreTags[i] - }) - if i == len(coreTags) || coreTags[i] != cci { - return 0, false - } - return ID(i), true -} - -// Parent returns the ID of the parent or the root ID if id is already the root. -func (id ID) Parent() ID { - return parents[id] -} - -// Tag converts id to an internal language Tag. -func (id ID) Tag() language.Tag { - if int(id) >= len(coreTags) { - return specialTags[int(id)-len(coreTags)] - } - return coreTags[id].Tag() -} - -var specialTags []language.Tag - -func init() { - tags := strings.Split(specialTagsStr, " ") - specialTags = make([]language.Tag, len(tags)) - for i, t := range tags { - specialTags[i] = language.MustParse(t) - } -} diff --git a/vendor/golang.org/x/text/internal/language/compact/language.go b/vendor/golang.org/x/text/internal/language/compact/language.go deleted file mode 100644 index 8c1b666..0000000 --- a/vendor/golang.org/x/text/internal/language/compact/language.go +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go gen_index.go -output tables.go -//go:generate go run gen_parents.go - -package compact - -// TODO: Remove above NOTE after: -// - verifying that tables are dropped correctly (most notably matcher tables). - -import ( - "strings" - - "golang.org/x/text/internal/language" -) - -// Tag represents a BCP 47 language tag. It is used to specify an instance of a -// specific language or locale. All language tag values are guaranteed to be -// well-formed. -type Tag struct { - // NOTE: exported tags will become part of the public API. - language ID - locale ID - full fullTag // always a language.Tag for now. -} - -const _und = 0 - -type fullTag interface { - IsRoot() bool - Parent() language.Tag -} - -// Make a compact Tag from a fully specified internal language Tag. -func Make(t language.Tag) (tag Tag) { - if region := t.TypeForKey("rg"); len(region) == 6 && region[2:] == "zzzz" { - if r, err := language.ParseRegion(region[:2]); err == nil { - tFull := t - t, _ = t.SetTypeForKey("rg", "") - // TODO: should we not consider "va" for the language tag? - var exact1, exact2 bool - tag.language, exact1 = FromTag(t) - t.RegionID = r - tag.locale, exact2 = FromTag(t) - if !exact1 || !exact2 { - tag.full = tFull - } - return tag - } - } - lang, ok := FromTag(t) - tag.language = lang - tag.locale = lang - if !ok { - tag.full = t - } - return tag -} - -// Tag returns an internal language Tag version of this tag. -func (t Tag) Tag() language.Tag { - if t.full != nil { - return t.full.(language.Tag) - } - tag := t.language.Tag() - if t.language != t.locale { - loc := t.locale.Tag() - tag, _ = tag.SetTypeForKey("rg", strings.ToLower(loc.RegionID.String())+"zzzz") - } - return tag -} - -// IsCompact reports whether this tag is fully defined in terms of ID. -func (t *Tag) IsCompact() bool { - return t.full == nil -} - -// MayHaveVariants reports whether a tag may have variants. If it returns false -// it is guaranteed the tag does not have variants. -func (t Tag) MayHaveVariants() bool { - return t.full != nil || int(t.language) >= len(coreTags) -} - -// MayHaveExtensions reports whether a tag may have extensions. If it returns -// false it is guaranteed the tag does not have them. -func (t Tag) MayHaveExtensions() bool { - return t.full != nil || - int(t.language) >= len(coreTags) || - t.language != t.locale -} - -// IsRoot returns true if t is equal to language "und". -func (t Tag) IsRoot() bool { - if t.full != nil { - return t.full.IsRoot() - } - return t.language == _und -} - -// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a -// specific language are substituted with fields from the parent language. -// The parent for a language may change for newer versions of CLDR. -func (t Tag) Parent() Tag { - if t.full != nil { - return Make(t.full.Parent()) - } - if t.language != t.locale { - // Simulate stripping -u-rg-xxxxxx - return Tag{language: t.language, locale: t.language} - } - // TODO: use parent lookup table once cycle from internal package is - // removed. Probably by internalizing the table and declaring this fast - // enough. - // lang := compactID(internal.Parent(uint16(t.language))) - lang, _ := FromTag(t.language.Tag().Parent()) - return Tag{language: lang, locale: lang} -} - -// nextToken returns token t and the rest of the string. -func nextToken(s string) (t, tail string) { - p := strings.Index(s[1:], "-") - if p == -1 { - return s[1:], "" - } - p++ - return s[1:p], s[p:] -} - -// LanguageID returns an index, where 0 <= index < NumCompactTags, for tags -// for which data exists in the text repository.The index will change over time -// and should not be stored in persistent storage. If t does not match a compact -// index, exact will be false and the compact index will be returned for the -// first match after repeatedly taking the Parent of t. -func LanguageID(t Tag) (id ID, exact bool) { - return t.language, t.full == nil -} - -// RegionalID returns the ID for the regional variant of this tag. This index is -// used to indicate region-specific overrides, such as default currency, default -// calendar and week data, default time cycle, and default measurement system -// and unit preferences. -// -// For instance, the tag en-GB-u-rg-uszzzz specifies British English with US -// settings for currency, number formatting, etc. The CompactIndex for this tag -// will be that for en-GB, while the RegionalID will be the one corresponding to -// en-US. -func RegionalID(t Tag) (id ID, exact bool) { - return t.locale, t.full == nil -} - -// LanguageTag returns t stripped of regional variant indicators. -// -// At the moment this means it is stripped of a regional and variant subtag "rg" -// and "va" in the "u" extension. -func (t Tag) LanguageTag() Tag { - if t.full == nil { - return Tag{language: t.language, locale: t.language} - } - tt := t.Tag() - tt.SetTypeForKey("rg", "") - tt.SetTypeForKey("va", "") - return Make(tt) -} - -// RegionalTag returns the regional variant of the tag. -// -// At the moment this means that the region is set from the regional subtag -// "rg" in the "u" extension. -func (t Tag) RegionalTag() Tag { - rt := Tag{language: t.locale, locale: t.locale} - if t.full == nil { - return rt - } - b := language.Builder{} - tag := t.Tag() - // tag, _ = tag.SetTypeForKey("rg", "") - b.SetTag(t.locale.Tag()) - if v := tag.Variants(); v != "" { - for _, v := range strings.Split(v, "-") { - b.AddVariant(v) - } - } - for _, e := range tag.Extensions() { - b.AddExt(e) - } - return t -} - -// FromTag reports closest matching ID for an internal language Tag. -func FromTag(t language.Tag) (id ID, exact bool) { - // TODO: perhaps give more frequent tags a lower index. - // TODO: we could make the indexes stable. This will excluded some - // possibilities for optimization, so don't do this quite yet. - exact = true - - b, s, r := t.Raw() - if t.HasString() { - if t.IsPrivateUse() { - // We have no entries for user-defined tags. - return 0, false - } - hasExtra := false - if t.HasVariants() { - if t.HasExtensions() { - build := language.Builder{} - build.SetTag(language.Tag{LangID: b, ScriptID: s, RegionID: r}) - build.AddVariant(t.Variants()) - exact = false - t = build.Make() - } - hasExtra = true - } else if _, ok := t.Extension('u'); ok { - // TODO: va may mean something else. Consider not considering it. - // Strip all but the 'va' entry. - old := t - variant := t.TypeForKey("va") - t = language.Tag{LangID: b, ScriptID: s, RegionID: r} - if variant != "" { - t, _ = t.SetTypeForKey("va", variant) - hasExtra = true - } - exact = old == t - } else { - exact = false - } - if hasExtra { - // We have some variants. - for i, s := range specialTags { - if s == t { - return ID(i + len(coreTags)), exact - } - } - exact = false - } - } - if x, ok := getCoreIndex(t); ok { - return x, exact - } - exact = false - if r != 0 && s == 0 { - // Deal with cases where an extra script is inserted for the region. - t, _ := t.Maximize() - if x, ok := getCoreIndex(t); ok { - return x, exact - } - } - for t = t.Parent(); t != root; t = t.Parent() { - // No variants specified: just compare core components. - // The key has the form lllssrrr, where l, s, and r are nibbles for - // respectively the langID, scriptID, and regionID. - if x, ok := getCoreIndex(t); ok { - return x, exact - } - } - return 0, exact -} - -var root = language.Tag{} diff --git a/vendor/golang.org/x/text/internal/language/compact/parents.go b/vendor/golang.org/x/text/internal/language/compact/parents.go deleted file mode 100644 index 8d81072..0000000 --- a/vendor/golang.org/x/text/internal/language/compact/parents.go +++ /dev/null @@ -1,120 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package compact - -// parents maps a compact index of a tag to the compact index of the parent of -// this tag. -var parents = []ID{ // 775 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0004, 0x0000, 0x0006, - 0x0000, 0x0008, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, - 0x0000, 0x0028, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x0000, - 0x002f, 0x002e, 0x002e, 0x0000, 0x0033, 0x0000, 0x0035, 0x0000, - 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x0000, 0x003e, - // Entry 40 - 7F - 0x0000, 0x0040, 0x0040, 0x0000, 0x0043, 0x0043, 0x0000, 0x0046, - 0x0000, 0x0048, 0x0000, 0x0000, 0x004b, 0x004a, 0x004a, 0x0000, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0000, 0x0054, 0x0054, 0x0000, - 0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x005d, - 0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066, - 0x0066, 0x0000, 0x0069, 0x0000, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x0000, 0x0073, 0x0000, 0x0075, 0x0000, - 0x0077, 0x0000, 0x0000, 0x007a, 0x0000, 0x007c, 0x0000, 0x007e, - // Entry 80 - BF - 0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0083, 0x0000, 0x0086, - 0x0087, 0x0087, 0x0087, 0x0086, 0x0088, 0x0087, 0x0087, 0x0087, - 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, 0x0088, 0x0087, - 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0086, - // Entry C0 - FF - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, - 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0086, 0x0087, - 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0000, - 0x00ef, 0x0000, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, - 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f1, 0x00f1, - // Entry 100 - 13F - 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, - 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x0000, 0x010e, - 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0114, 0x0000, - 0x0117, 0x0117, 0x0117, 0x0117, 0x0000, 0x011c, 0x0000, 0x011e, - 0x0000, 0x0120, 0x0120, 0x0000, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - // Entry 140 - 17F - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156, - 0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x015c, 0x015c, - 0x0000, 0x0160, 0x0000, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000, - 0x0167, 0x0167, 0x0167, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000, - 0x016f, 0x0000, 0x0171, 0x0171, 0x0000, 0x0174, 0x0000, 0x0176, - 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0184, 0x0184, - 0x0184, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e, - 0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x0000, 0x0195, 0x0000, - 0x0197, 0x0000, 0x0000, 0x019a, 0x0000, 0x0000, 0x019d, 0x0000, - 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000, - 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000, - 0x01af, 0x0000, 0x01b1, 0x01b1, 0x0000, 0x01b4, 0x0000, 0x01b6, - 0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x01bc, 0x0000, 0x0000, - // Entry 1C0 - 1FF - 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000, - 0x01c7, 0x0000, 0x01c9, 0x0000, 0x01cb, 0x01cb, 0x01cb, 0x01cb, - 0x0000, 0x01d0, 0x0000, 0x01d2, 0x01d2, 0x0000, 0x01d5, 0x0000, - 0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x0000, - 0x01df, 0x01df, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6, - 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee, - 0x0000, 0x01f0, 0x0000, 0x0000, 0x01f3, 0x0000, 0x01f5, 0x01f5, - 0x01f5, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x0000, - // Entry 200 - 23F - 0x01ff, 0x0000, 0x0000, 0x0202, 0x0000, 0x0204, 0x0204, 0x0000, - 0x0207, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x0000, - 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0000, - 0x0217, 0x0000, 0x0219, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0221, 0x0000, 0x0000, 0x0224, 0x0000, 0x0226, - 0x0226, 0x0000, 0x0229, 0x0000, 0x022b, 0x022b, 0x0000, 0x0000, - 0x022f, 0x022e, 0x022e, 0x0000, 0x0000, 0x0234, 0x0000, 0x0236, - 0x0000, 0x0238, 0x0000, 0x0244, 0x023a, 0x0244, 0x0244, 0x0244, - // Entry 240 - 27F - 0x0244, 0x0244, 0x0244, 0x0244, 0x023a, 0x0244, 0x0244, 0x0000, - 0x0247, 0x0247, 0x0247, 0x0000, 0x024b, 0x0000, 0x024d, 0x0000, - 0x024f, 0x024f, 0x0000, 0x0252, 0x0000, 0x0254, 0x0254, 0x0254, - 0x0254, 0x0254, 0x0254, 0x0000, 0x025b, 0x0000, 0x025d, 0x0000, - 0x025f, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000, - 0x0000, 0x0268, 0x0268, 0x0268, 0x0000, 0x026c, 0x0000, 0x026e, - 0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0274, 0x0273, 0x0273, - 0x0000, 0x0278, 0x0000, 0x027a, 0x0000, 0x027c, 0x0000, 0x0000, - // Entry 280 - 2BF - 0x0000, 0x0000, 0x0281, 0x0000, 0x0000, 0x0284, 0x0000, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0000, 0x028b, 0x028b, 0x028b, 0x0000, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x0000, 0x0295, 0x0295, - 0x0295, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x029d, - 0x029d, 0x0000, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x0000, 0x0000, - 0x02a7, 0x02a7, 0x02a7, 0x02a7, 0x0000, 0x02ac, 0x0000, 0x02ae, - 0x02ae, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x02b5, - 0x0000, 0x0000, 0x02b9, 0x0000, 0x0000, 0x0000, 0x02bd, 0x0000, - // Entry 2C0 - 2FF - 0x02bf, 0x02bf, 0x0000, 0x0000, 0x02c3, 0x0000, 0x02c5, 0x0000, - 0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x02cd, 0x02cd, - 0x0000, 0x0000, 0x02d1, 0x0000, 0x02d3, 0x02d0, 0x02d0, 0x0000, - 0x0000, 0x02d8, 0x02d7, 0x02d7, 0x0000, 0x0000, 0x02dd, 0x0000, - 0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6, - 0x0000, 0x0000, 0x02e9, 0x0000, 0x02eb, 0x0000, 0x02ed, 0x0000, - 0x02ef, 0x02ef, 0x0000, 0x0000, 0x02f3, 0x02f2, 0x02f2, 0x0000, - 0x02f7, 0x0000, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0000, - // Entry 300 - 33F - 0x02ff, 0x0300, 0x02ff, 0x0000, 0x0303, 0x0051, 0x00e6, -} // Size: 1574 bytes - -// Total table size 1574 bytes (1KiB); checksum: 895AAF0B diff --git a/vendor/golang.org/x/text/internal/language/compact/tables.go b/vendor/golang.org/x/text/internal/language/compact/tables.go deleted file mode 100644 index a09ed19..0000000 --- a/vendor/golang.org/x/text/internal/language/compact/tables.go +++ /dev/null @@ -1,1015 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package compact - -import "golang.org/x/text/internal/language" - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -// NumCompactTags is the number of common tags. The maximum tag is -// NumCompactTags-1. -const NumCompactTags = 775 -const ( - undIndex ID = 0 - afIndex ID = 1 - afNAIndex ID = 2 - afZAIndex ID = 3 - agqIndex ID = 4 - agqCMIndex ID = 5 - akIndex ID = 6 - akGHIndex ID = 7 - amIndex ID = 8 - amETIndex ID = 9 - arIndex ID = 10 - ar001Index ID = 11 - arAEIndex ID = 12 - arBHIndex ID = 13 - arDJIndex ID = 14 - arDZIndex ID = 15 - arEGIndex ID = 16 - arEHIndex ID = 17 - arERIndex ID = 18 - arILIndex ID = 19 - arIQIndex ID = 20 - arJOIndex ID = 21 - arKMIndex ID = 22 - arKWIndex ID = 23 - arLBIndex ID = 24 - arLYIndex ID = 25 - arMAIndex ID = 26 - arMRIndex ID = 27 - arOMIndex ID = 28 - arPSIndex ID = 29 - arQAIndex ID = 30 - arSAIndex ID = 31 - arSDIndex ID = 32 - arSOIndex ID = 33 - arSSIndex ID = 34 - arSYIndex ID = 35 - arTDIndex ID = 36 - arTNIndex ID = 37 - arYEIndex ID = 38 - arsIndex ID = 39 - asIndex ID = 40 - asINIndex ID = 41 - asaIndex ID = 42 - asaTZIndex ID = 43 - astIndex ID = 44 - astESIndex ID = 45 - azIndex ID = 46 - azCyrlIndex ID = 47 - azCyrlAZIndex ID = 48 - azLatnIndex ID = 49 - azLatnAZIndex ID = 50 - basIndex ID = 51 - basCMIndex ID = 52 - beIndex ID = 53 - beBYIndex ID = 54 - bemIndex ID = 55 - bemZMIndex ID = 56 - bezIndex ID = 57 - bezTZIndex ID = 58 - bgIndex ID = 59 - bgBGIndex ID = 60 - bhIndex ID = 61 - bmIndex ID = 62 - bmMLIndex ID = 63 - bnIndex ID = 64 - bnBDIndex ID = 65 - bnINIndex ID = 66 - boIndex ID = 67 - boCNIndex ID = 68 - boINIndex ID = 69 - brIndex ID = 70 - brFRIndex ID = 71 - brxIndex ID = 72 - brxINIndex ID = 73 - bsIndex ID = 74 - bsCyrlIndex ID = 75 - bsCyrlBAIndex ID = 76 - bsLatnIndex ID = 77 - bsLatnBAIndex ID = 78 - caIndex ID = 79 - caADIndex ID = 80 - caESIndex ID = 81 - caFRIndex ID = 82 - caITIndex ID = 83 - ccpIndex ID = 84 - ccpBDIndex ID = 85 - ccpINIndex ID = 86 - ceIndex ID = 87 - ceRUIndex ID = 88 - cggIndex ID = 89 - cggUGIndex ID = 90 - chrIndex ID = 91 - chrUSIndex ID = 92 - ckbIndex ID = 93 - ckbIQIndex ID = 94 - ckbIRIndex ID = 95 - csIndex ID = 96 - csCZIndex ID = 97 - cuIndex ID = 98 - cuRUIndex ID = 99 - cyIndex ID = 100 - cyGBIndex ID = 101 - daIndex ID = 102 - daDKIndex ID = 103 - daGLIndex ID = 104 - davIndex ID = 105 - davKEIndex ID = 106 - deIndex ID = 107 - deATIndex ID = 108 - deBEIndex ID = 109 - deCHIndex ID = 110 - deDEIndex ID = 111 - deITIndex ID = 112 - deLIIndex ID = 113 - deLUIndex ID = 114 - djeIndex ID = 115 - djeNEIndex ID = 116 - dsbIndex ID = 117 - dsbDEIndex ID = 118 - duaIndex ID = 119 - duaCMIndex ID = 120 - dvIndex ID = 121 - dyoIndex ID = 122 - dyoSNIndex ID = 123 - dzIndex ID = 124 - dzBTIndex ID = 125 - ebuIndex ID = 126 - ebuKEIndex ID = 127 - eeIndex ID = 128 - eeGHIndex ID = 129 - eeTGIndex ID = 130 - elIndex ID = 131 - elCYIndex ID = 132 - elGRIndex ID = 133 - enIndex ID = 134 - en001Index ID = 135 - en150Index ID = 136 - enAGIndex ID = 137 - enAIIndex ID = 138 - enASIndex ID = 139 - enATIndex ID = 140 - enAUIndex ID = 141 - enBBIndex ID = 142 - enBEIndex ID = 143 - enBIIndex ID = 144 - enBMIndex ID = 145 - enBSIndex ID = 146 - enBWIndex ID = 147 - enBZIndex ID = 148 - enCAIndex ID = 149 - enCCIndex ID = 150 - enCHIndex ID = 151 - enCKIndex ID = 152 - enCMIndex ID = 153 - enCXIndex ID = 154 - enCYIndex ID = 155 - enDEIndex ID = 156 - enDGIndex ID = 157 - enDKIndex ID = 158 - enDMIndex ID = 159 - enERIndex ID = 160 - enFIIndex ID = 161 - enFJIndex ID = 162 - enFKIndex ID = 163 - enFMIndex ID = 164 - enGBIndex ID = 165 - enGDIndex ID = 166 - enGGIndex ID = 167 - enGHIndex ID = 168 - enGIIndex ID = 169 - enGMIndex ID = 170 - enGUIndex ID = 171 - enGYIndex ID = 172 - enHKIndex ID = 173 - enIEIndex ID = 174 - enILIndex ID = 175 - enIMIndex ID = 176 - enINIndex ID = 177 - enIOIndex ID = 178 - enJEIndex ID = 179 - enJMIndex ID = 180 - enKEIndex ID = 181 - enKIIndex ID = 182 - enKNIndex ID = 183 - enKYIndex ID = 184 - enLCIndex ID = 185 - enLRIndex ID = 186 - enLSIndex ID = 187 - enMGIndex ID = 188 - enMHIndex ID = 189 - enMOIndex ID = 190 - enMPIndex ID = 191 - enMSIndex ID = 192 - enMTIndex ID = 193 - enMUIndex ID = 194 - enMWIndex ID = 195 - enMYIndex ID = 196 - enNAIndex ID = 197 - enNFIndex ID = 198 - enNGIndex ID = 199 - enNLIndex ID = 200 - enNRIndex ID = 201 - enNUIndex ID = 202 - enNZIndex ID = 203 - enPGIndex ID = 204 - enPHIndex ID = 205 - enPKIndex ID = 206 - enPNIndex ID = 207 - enPRIndex ID = 208 - enPWIndex ID = 209 - enRWIndex ID = 210 - enSBIndex ID = 211 - enSCIndex ID = 212 - enSDIndex ID = 213 - enSEIndex ID = 214 - enSGIndex ID = 215 - enSHIndex ID = 216 - enSIIndex ID = 217 - enSLIndex ID = 218 - enSSIndex ID = 219 - enSXIndex ID = 220 - enSZIndex ID = 221 - enTCIndex ID = 222 - enTKIndex ID = 223 - enTOIndex ID = 224 - enTTIndex ID = 225 - enTVIndex ID = 226 - enTZIndex ID = 227 - enUGIndex ID = 228 - enUMIndex ID = 229 - enUSIndex ID = 230 - enVCIndex ID = 231 - enVGIndex ID = 232 - enVIIndex ID = 233 - enVUIndex ID = 234 - enWSIndex ID = 235 - enZAIndex ID = 236 - enZMIndex ID = 237 - enZWIndex ID = 238 - eoIndex ID = 239 - eo001Index ID = 240 - esIndex ID = 241 - es419Index ID = 242 - esARIndex ID = 243 - esBOIndex ID = 244 - esBRIndex ID = 245 - esBZIndex ID = 246 - esCLIndex ID = 247 - esCOIndex ID = 248 - esCRIndex ID = 249 - esCUIndex ID = 250 - esDOIndex ID = 251 - esEAIndex ID = 252 - esECIndex ID = 253 - esESIndex ID = 254 - esGQIndex ID = 255 - esGTIndex ID = 256 - esHNIndex ID = 257 - esICIndex ID = 258 - esMXIndex ID = 259 - esNIIndex ID = 260 - esPAIndex ID = 261 - esPEIndex ID = 262 - esPHIndex ID = 263 - esPRIndex ID = 264 - esPYIndex ID = 265 - esSVIndex ID = 266 - esUSIndex ID = 267 - esUYIndex ID = 268 - esVEIndex ID = 269 - etIndex ID = 270 - etEEIndex ID = 271 - euIndex ID = 272 - euESIndex ID = 273 - ewoIndex ID = 274 - ewoCMIndex ID = 275 - faIndex ID = 276 - faAFIndex ID = 277 - faIRIndex ID = 278 - ffIndex ID = 279 - ffCMIndex ID = 280 - ffGNIndex ID = 281 - ffMRIndex ID = 282 - ffSNIndex ID = 283 - fiIndex ID = 284 - fiFIIndex ID = 285 - filIndex ID = 286 - filPHIndex ID = 287 - foIndex ID = 288 - foDKIndex ID = 289 - foFOIndex ID = 290 - frIndex ID = 291 - frBEIndex ID = 292 - frBFIndex ID = 293 - frBIIndex ID = 294 - frBJIndex ID = 295 - frBLIndex ID = 296 - frCAIndex ID = 297 - frCDIndex ID = 298 - frCFIndex ID = 299 - frCGIndex ID = 300 - frCHIndex ID = 301 - frCIIndex ID = 302 - frCMIndex ID = 303 - frDJIndex ID = 304 - frDZIndex ID = 305 - frFRIndex ID = 306 - frGAIndex ID = 307 - frGFIndex ID = 308 - frGNIndex ID = 309 - frGPIndex ID = 310 - frGQIndex ID = 311 - frHTIndex ID = 312 - frKMIndex ID = 313 - frLUIndex ID = 314 - frMAIndex ID = 315 - frMCIndex ID = 316 - frMFIndex ID = 317 - frMGIndex ID = 318 - frMLIndex ID = 319 - frMQIndex ID = 320 - frMRIndex ID = 321 - frMUIndex ID = 322 - frNCIndex ID = 323 - frNEIndex ID = 324 - frPFIndex ID = 325 - frPMIndex ID = 326 - frREIndex ID = 327 - frRWIndex ID = 328 - frSCIndex ID = 329 - frSNIndex ID = 330 - frSYIndex ID = 331 - frTDIndex ID = 332 - frTGIndex ID = 333 - frTNIndex ID = 334 - frVUIndex ID = 335 - frWFIndex ID = 336 - frYTIndex ID = 337 - furIndex ID = 338 - furITIndex ID = 339 - fyIndex ID = 340 - fyNLIndex ID = 341 - gaIndex ID = 342 - gaIEIndex ID = 343 - gdIndex ID = 344 - gdGBIndex ID = 345 - glIndex ID = 346 - glESIndex ID = 347 - gswIndex ID = 348 - gswCHIndex ID = 349 - gswFRIndex ID = 350 - gswLIIndex ID = 351 - guIndex ID = 352 - guINIndex ID = 353 - guwIndex ID = 354 - guzIndex ID = 355 - guzKEIndex ID = 356 - gvIndex ID = 357 - gvIMIndex ID = 358 - haIndex ID = 359 - haGHIndex ID = 360 - haNEIndex ID = 361 - haNGIndex ID = 362 - hawIndex ID = 363 - hawUSIndex ID = 364 - heIndex ID = 365 - heILIndex ID = 366 - hiIndex ID = 367 - hiINIndex ID = 368 - hrIndex ID = 369 - hrBAIndex ID = 370 - hrHRIndex ID = 371 - hsbIndex ID = 372 - hsbDEIndex ID = 373 - huIndex ID = 374 - huHUIndex ID = 375 - hyIndex ID = 376 - hyAMIndex ID = 377 - idIndex ID = 378 - idIDIndex ID = 379 - igIndex ID = 380 - igNGIndex ID = 381 - iiIndex ID = 382 - iiCNIndex ID = 383 - inIndex ID = 384 - ioIndex ID = 385 - isIndex ID = 386 - isISIndex ID = 387 - itIndex ID = 388 - itCHIndex ID = 389 - itITIndex ID = 390 - itSMIndex ID = 391 - itVAIndex ID = 392 - iuIndex ID = 393 - iwIndex ID = 394 - jaIndex ID = 395 - jaJPIndex ID = 396 - jboIndex ID = 397 - jgoIndex ID = 398 - jgoCMIndex ID = 399 - jiIndex ID = 400 - jmcIndex ID = 401 - jmcTZIndex ID = 402 - jvIndex ID = 403 - jwIndex ID = 404 - kaIndex ID = 405 - kaGEIndex ID = 406 - kabIndex ID = 407 - kabDZIndex ID = 408 - kajIndex ID = 409 - kamIndex ID = 410 - kamKEIndex ID = 411 - kcgIndex ID = 412 - kdeIndex ID = 413 - kdeTZIndex ID = 414 - keaIndex ID = 415 - keaCVIndex ID = 416 - khqIndex ID = 417 - khqMLIndex ID = 418 - kiIndex ID = 419 - kiKEIndex ID = 420 - kkIndex ID = 421 - kkKZIndex ID = 422 - kkjIndex ID = 423 - kkjCMIndex ID = 424 - klIndex ID = 425 - klGLIndex ID = 426 - klnIndex ID = 427 - klnKEIndex ID = 428 - kmIndex ID = 429 - kmKHIndex ID = 430 - knIndex ID = 431 - knINIndex ID = 432 - koIndex ID = 433 - koKPIndex ID = 434 - koKRIndex ID = 435 - kokIndex ID = 436 - kokINIndex ID = 437 - ksIndex ID = 438 - ksINIndex ID = 439 - ksbIndex ID = 440 - ksbTZIndex ID = 441 - ksfIndex ID = 442 - ksfCMIndex ID = 443 - kshIndex ID = 444 - kshDEIndex ID = 445 - kuIndex ID = 446 - kwIndex ID = 447 - kwGBIndex ID = 448 - kyIndex ID = 449 - kyKGIndex ID = 450 - lagIndex ID = 451 - lagTZIndex ID = 452 - lbIndex ID = 453 - lbLUIndex ID = 454 - lgIndex ID = 455 - lgUGIndex ID = 456 - lktIndex ID = 457 - lktUSIndex ID = 458 - lnIndex ID = 459 - lnAOIndex ID = 460 - lnCDIndex ID = 461 - lnCFIndex ID = 462 - lnCGIndex ID = 463 - loIndex ID = 464 - loLAIndex ID = 465 - lrcIndex ID = 466 - lrcIQIndex ID = 467 - lrcIRIndex ID = 468 - ltIndex ID = 469 - ltLTIndex ID = 470 - luIndex ID = 471 - luCDIndex ID = 472 - luoIndex ID = 473 - luoKEIndex ID = 474 - luyIndex ID = 475 - luyKEIndex ID = 476 - lvIndex ID = 477 - lvLVIndex ID = 478 - masIndex ID = 479 - masKEIndex ID = 480 - masTZIndex ID = 481 - merIndex ID = 482 - merKEIndex ID = 483 - mfeIndex ID = 484 - mfeMUIndex ID = 485 - mgIndex ID = 486 - mgMGIndex ID = 487 - mghIndex ID = 488 - mghMZIndex ID = 489 - mgoIndex ID = 490 - mgoCMIndex ID = 491 - mkIndex ID = 492 - mkMKIndex ID = 493 - mlIndex ID = 494 - mlINIndex ID = 495 - mnIndex ID = 496 - mnMNIndex ID = 497 - moIndex ID = 498 - mrIndex ID = 499 - mrINIndex ID = 500 - msIndex ID = 501 - msBNIndex ID = 502 - msMYIndex ID = 503 - msSGIndex ID = 504 - mtIndex ID = 505 - mtMTIndex ID = 506 - muaIndex ID = 507 - muaCMIndex ID = 508 - myIndex ID = 509 - myMMIndex ID = 510 - mznIndex ID = 511 - mznIRIndex ID = 512 - nahIndex ID = 513 - naqIndex ID = 514 - naqNAIndex ID = 515 - nbIndex ID = 516 - nbNOIndex ID = 517 - nbSJIndex ID = 518 - ndIndex ID = 519 - ndZWIndex ID = 520 - ndsIndex ID = 521 - ndsDEIndex ID = 522 - ndsNLIndex ID = 523 - neIndex ID = 524 - neINIndex ID = 525 - neNPIndex ID = 526 - nlIndex ID = 527 - nlAWIndex ID = 528 - nlBEIndex ID = 529 - nlBQIndex ID = 530 - nlCWIndex ID = 531 - nlNLIndex ID = 532 - nlSRIndex ID = 533 - nlSXIndex ID = 534 - nmgIndex ID = 535 - nmgCMIndex ID = 536 - nnIndex ID = 537 - nnNOIndex ID = 538 - nnhIndex ID = 539 - nnhCMIndex ID = 540 - noIndex ID = 541 - nqoIndex ID = 542 - nrIndex ID = 543 - nsoIndex ID = 544 - nusIndex ID = 545 - nusSSIndex ID = 546 - nyIndex ID = 547 - nynIndex ID = 548 - nynUGIndex ID = 549 - omIndex ID = 550 - omETIndex ID = 551 - omKEIndex ID = 552 - orIndex ID = 553 - orINIndex ID = 554 - osIndex ID = 555 - osGEIndex ID = 556 - osRUIndex ID = 557 - paIndex ID = 558 - paArabIndex ID = 559 - paArabPKIndex ID = 560 - paGuruIndex ID = 561 - paGuruINIndex ID = 562 - papIndex ID = 563 - plIndex ID = 564 - plPLIndex ID = 565 - prgIndex ID = 566 - prg001Index ID = 567 - psIndex ID = 568 - psAFIndex ID = 569 - ptIndex ID = 570 - ptAOIndex ID = 571 - ptBRIndex ID = 572 - ptCHIndex ID = 573 - ptCVIndex ID = 574 - ptGQIndex ID = 575 - ptGWIndex ID = 576 - ptLUIndex ID = 577 - ptMOIndex ID = 578 - ptMZIndex ID = 579 - ptPTIndex ID = 580 - ptSTIndex ID = 581 - ptTLIndex ID = 582 - quIndex ID = 583 - quBOIndex ID = 584 - quECIndex ID = 585 - quPEIndex ID = 586 - rmIndex ID = 587 - rmCHIndex ID = 588 - rnIndex ID = 589 - rnBIIndex ID = 590 - roIndex ID = 591 - roMDIndex ID = 592 - roROIndex ID = 593 - rofIndex ID = 594 - rofTZIndex ID = 595 - ruIndex ID = 596 - ruBYIndex ID = 597 - ruKGIndex ID = 598 - ruKZIndex ID = 599 - ruMDIndex ID = 600 - ruRUIndex ID = 601 - ruUAIndex ID = 602 - rwIndex ID = 603 - rwRWIndex ID = 604 - rwkIndex ID = 605 - rwkTZIndex ID = 606 - sahIndex ID = 607 - sahRUIndex ID = 608 - saqIndex ID = 609 - saqKEIndex ID = 610 - sbpIndex ID = 611 - sbpTZIndex ID = 612 - sdIndex ID = 613 - sdPKIndex ID = 614 - sdhIndex ID = 615 - seIndex ID = 616 - seFIIndex ID = 617 - seNOIndex ID = 618 - seSEIndex ID = 619 - sehIndex ID = 620 - sehMZIndex ID = 621 - sesIndex ID = 622 - sesMLIndex ID = 623 - sgIndex ID = 624 - sgCFIndex ID = 625 - shIndex ID = 626 - shiIndex ID = 627 - shiLatnIndex ID = 628 - shiLatnMAIndex ID = 629 - shiTfngIndex ID = 630 - shiTfngMAIndex ID = 631 - siIndex ID = 632 - siLKIndex ID = 633 - skIndex ID = 634 - skSKIndex ID = 635 - slIndex ID = 636 - slSIIndex ID = 637 - smaIndex ID = 638 - smiIndex ID = 639 - smjIndex ID = 640 - smnIndex ID = 641 - smnFIIndex ID = 642 - smsIndex ID = 643 - snIndex ID = 644 - snZWIndex ID = 645 - soIndex ID = 646 - soDJIndex ID = 647 - soETIndex ID = 648 - soKEIndex ID = 649 - soSOIndex ID = 650 - sqIndex ID = 651 - sqALIndex ID = 652 - sqMKIndex ID = 653 - sqXKIndex ID = 654 - srIndex ID = 655 - srCyrlIndex ID = 656 - srCyrlBAIndex ID = 657 - srCyrlMEIndex ID = 658 - srCyrlRSIndex ID = 659 - srCyrlXKIndex ID = 660 - srLatnIndex ID = 661 - srLatnBAIndex ID = 662 - srLatnMEIndex ID = 663 - srLatnRSIndex ID = 664 - srLatnXKIndex ID = 665 - ssIndex ID = 666 - ssyIndex ID = 667 - stIndex ID = 668 - svIndex ID = 669 - svAXIndex ID = 670 - svFIIndex ID = 671 - svSEIndex ID = 672 - swIndex ID = 673 - swCDIndex ID = 674 - swKEIndex ID = 675 - swTZIndex ID = 676 - swUGIndex ID = 677 - syrIndex ID = 678 - taIndex ID = 679 - taINIndex ID = 680 - taLKIndex ID = 681 - taMYIndex ID = 682 - taSGIndex ID = 683 - teIndex ID = 684 - teINIndex ID = 685 - teoIndex ID = 686 - teoKEIndex ID = 687 - teoUGIndex ID = 688 - tgIndex ID = 689 - tgTJIndex ID = 690 - thIndex ID = 691 - thTHIndex ID = 692 - tiIndex ID = 693 - tiERIndex ID = 694 - tiETIndex ID = 695 - tigIndex ID = 696 - tkIndex ID = 697 - tkTMIndex ID = 698 - tlIndex ID = 699 - tnIndex ID = 700 - toIndex ID = 701 - toTOIndex ID = 702 - trIndex ID = 703 - trCYIndex ID = 704 - trTRIndex ID = 705 - tsIndex ID = 706 - ttIndex ID = 707 - ttRUIndex ID = 708 - twqIndex ID = 709 - twqNEIndex ID = 710 - tzmIndex ID = 711 - tzmMAIndex ID = 712 - ugIndex ID = 713 - ugCNIndex ID = 714 - ukIndex ID = 715 - ukUAIndex ID = 716 - urIndex ID = 717 - urINIndex ID = 718 - urPKIndex ID = 719 - uzIndex ID = 720 - uzArabIndex ID = 721 - uzArabAFIndex ID = 722 - uzCyrlIndex ID = 723 - uzCyrlUZIndex ID = 724 - uzLatnIndex ID = 725 - uzLatnUZIndex ID = 726 - vaiIndex ID = 727 - vaiLatnIndex ID = 728 - vaiLatnLRIndex ID = 729 - vaiVaiiIndex ID = 730 - vaiVaiiLRIndex ID = 731 - veIndex ID = 732 - viIndex ID = 733 - viVNIndex ID = 734 - voIndex ID = 735 - vo001Index ID = 736 - vunIndex ID = 737 - vunTZIndex ID = 738 - waIndex ID = 739 - waeIndex ID = 740 - waeCHIndex ID = 741 - woIndex ID = 742 - woSNIndex ID = 743 - xhIndex ID = 744 - xogIndex ID = 745 - xogUGIndex ID = 746 - yavIndex ID = 747 - yavCMIndex ID = 748 - yiIndex ID = 749 - yi001Index ID = 750 - yoIndex ID = 751 - yoBJIndex ID = 752 - yoNGIndex ID = 753 - yueIndex ID = 754 - yueHansIndex ID = 755 - yueHansCNIndex ID = 756 - yueHantIndex ID = 757 - yueHantHKIndex ID = 758 - zghIndex ID = 759 - zghMAIndex ID = 760 - zhIndex ID = 761 - zhHansIndex ID = 762 - zhHansCNIndex ID = 763 - zhHansHKIndex ID = 764 - zhHansMOIndex ID = 765 - zhHansSGIndex ID = 766 - zhHantIndex ID = 767 - zhHantHKIndex ID = 768 - zhHantMOIndex ID = 769 - zhHantTWIndex ID = 770 - zuIndex ID = 771 - zuZAIndex ID = 772 - caESvalenciaIndex ID = 773 - enUSuvaposixIndex ID = 774 -) - -var coreTags = []language.CompactCoreInfo{ // 773 elements - // Entry 0 - 1F - 0x00000000, 0x01600000, 0x016000d3, 0x01600162, - 0x01c00000, 0x01c00052, 0x02100000, 0x02100081, - 0x02700000, 0x02700070, 0x03a00000, 0x03a00001, - 0x03a00023, 0x03a00039, 0x03a00063, 0x03a00068, - 0x03a0006c, 0x03a0006d, 0x03a0006e, 0x03a00098, - 0x03a0009c, 0x03a000a2, 0x03a000a9, 0x03a000ad, - 0x03a000b1, 0x03a000ba, 0x03a000bb, 0x03a000ca, - 0x03a000e2, 0x03a000ee, 0x03a000f4, 0x03a00109, - // Entry 20 - 3F - 0x03a0010c, 0x03a00116, 0x03a00118, 0x03a0011d, - 0x03a00121, 0x03a00129, 0x03a0015f, 0x04000000, - 0x04300000, 0x0430009a, 0x04400000, 0x04400130, - 0x04800000, 0x0480006f, 0x05800000, 0x05820000, - 0x05820032, 0x0585b000, 0x0585b032, 0x05e00000, - 0x05e00052, 0x07100000, 0x07100047, 0x07500000, - 0x07500163, 0x07900000, 0x07900130, 0x07e00000, - 0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c4, - // Entry 40 - 5F - 0x0a500000, 0x0a500035, 0x0a50009a, 0x0a900000, - 0x0a900053, 0x0a90009a, 0x0b200000, 0x0b200079, - 0x0b500000, 0x0b50009a, 0x0b700000, 0x0b720000, - 0x0b720033, 0x0b75b000, 0x0b75b033, 0x0d700000, - 0x0d700022, 0x0d70006f, 0x0d700079, 0x0d70009f, - 0x0db00000, 0x0db00035, 0x0db0009a, 0x0dc00000, - 0x0dc00107, 0x0df00000, 0x0df00132, 0x0e500000, - 0x0e500136, 0x0e900000, 0x0e90009c, 0x0e90009d, - // Entry 60 - 7F - 0x0fa00000, 0x0fa0005f, 0x0fe00000, 0x0fe00107, - 0x10000000, 0x1000007c, 0x10100000, 0x10100064, - 0x10100083, 0x10800000, 0x108000a5, 0x10d00000, - 0x10d0002e, 0x10d00036, 0x10d0004e, 0x10d00061, - 0x10d0009f, 0x10d000b3, 0x10d000b8, 0x11700000, - 0x117000d5, 0x11f00000, 0x11f00061, 0x12400000, - 0x12400052, 0x12800000, 0x12b00000, 0x12b00115, - 0x12d00000, 0x12d00043, 0x12f00000, 0x12f000a5, - // Entry 80 - 9F - 0x13000000, 0x13000081, 0x13000123, 0x13600000, - 0x1360005e, 0x13600088, 0x13900000, 0x13900001, - 0x1390001a, 0x13900025, 0x13900026, 0x1390002d, - 0x1390002e, 0x1390002f, 0x13900034, 0x13900036, - 0x1390003a, 0x1390003d, 0x13900042, 0x13900046, - 0x13900048, 0x13900049, 0x1390004a, 0x1390004e, - 0x13900050, 0x13900052, 0x1390005d, 0x1390005e, - 0x13900061, 0x13900062, 0x13900064, 0x13900065, - // Entry A0 - BF - 0x1390006e, 0x13900073, 0x13900074, 0x13900075, - 0x13900076, 0x1390007c, 0x1390007d, 0x13900080, - 0x13900081, 0x13900082, 0x13900084, 0x1390008b, - 0x1390008d, 0x1390008e, 0x13900097, 0x13900098, - 0x13900099, 0x1390009a, 0x1390009b, 0x139000a0, - 0x139000a1, 0x139000a5, 0x139000a8, 0x139000aa, - 0x139000ae, 0x139000b2, 0x139000b5, 0x139000b6, - 0x139000c0, 0x139000c1, 0x139000c7, 0x139000c8, - // Entry C0 - DF - 0x139000cb, 0x139000cc, 0x139000cd, 0x139000cf, - 0x139000d1, 0x139000d3, 0x139000d6, 0x139000d7, - 0x139000da, 0x139000de, 0x139000e0, 0x139000e1, - 0x139000e7, 0x139000e8, 0x139000e9, 0x139000ec, - 0x139000ed, 0x139000f1, 0x13900108, 0x1390010a, - 0x1390010b, 0x1390010c, 0x1390010d, 0x1390010e, - 0x1390010f, 0x13900110, 0x13900113, 0x13900118, - 0x1390011c, 0x1390011e, 0x13900120, 0x13900126, - // Entry E0 - FF - 0x1390012a, 0x1390012d, 0x1390012e, 0x13900130, - 0x13900132, 0x13900134, 0x13900136, 0x1390013a, - 0x1390013d, 0x1390013e, 0x13900140, 0x13900143, - 0x13900162, 0x13900163, 0x13900165, 0x13c00000, - 0x13c00001, 0x13e00000, 0x13e0001f, 0x13e0002c, - 0x13e0003f, 0x13e00041, 0x13e00048, 0x13e00051, - 0x13e00054, 0x13e00057, 0x13e0005a, 0x13e00066, - 0x13e00069, 0x13e0006a, 0x13e0006f, 0x13e00087, - // Entry 100 - 11F - 0x13e0008a, 0x13e00090, 0x13e00095, 0x13e000d0, - 0x13e000d9, 0x13e000e3, 0x13e000e5, 0x13e000e8, - 0x13e000ed, 0x13e000f2, 0x13e0011b, 0x13e00136, - 0x13e00137, 0x13e0013c, 0x14000000, 0x1400006b, - 0x14500000, 0x1450006f, 0x14600000, 0x14600052, - 0x14800000, 0x14800024, 0x1480009d, 0x14e00000, - 0x14e00052, 0x14e00085, 0x14e000ca, 0x14e00115, - 0x15100000, 0x15100073, 0x15300000, 0x153000e8, - // Entry 120 - 13F - 0x15800000, 0x15800064, 0x15800077, 0x15e00000, - 0x15e00036, 0x15e00037, 0x15e0003a, 0x15e0003b, - 0x15e0003c, 0x15e00049, 0x15e0004b, 0x15e0004c, - 0x15e0004d, 0x15e0004e, 0x15e0004f, 0x15e00052, - 0x15e00063, 0x15e00068, 0x15e00079, 0x15e0007b, - 0x15e0007f, 0x15e00085, 0x15e00086, 0x15e00087, - 0x15e00092, 0x15e000a9, 0x15e000b8, 0x15e000bb, - 0x15e000bc, 0x15e000bf, 0x15e000c0, 0x15e000c4, - // Entry 140 - 15F - 0x15e000c9, 0x15e000ca, 0x15e000cd, 0x15e000d4, - 0x15e000d5, 0x15e000e6, 0x15e000eb, 0x15e00103, - 0x15e00108, 0x15e0010b, 0x15e00115, 0x15e0011d, - 0x15e00121, 0x15e00123, 0x15e00129, 0x15e00140, - 0x15e00141, 0x15e00160, 0x16900000, 0x1690009f, - 0x16d00000, 0x16d000da, 0x16e00000, 0x16e00097, - 0x17e00000, 0x17e0007c, 0x19000000, 0x1900006f, - 0x1a300000, 0x1a30004e, 0x1a300079, 0x1a3000b3, - // Entry 160 - 17F - 0x1a400000, 0x1a40009a, 0x1a900000, 0x1ab00000, - 0x1ab000a5, 0x1ac00000, 0x1ac00099, 0x1b400000, - 0x1b400081, 0x1b4000d5, 0x1b4000d7, 0x1b800000, - 0x1b800136, 0x1bc00000, 0x1bc00098, 0x1be00000, - 0x1be0009a, 0x1d100000, 0x1d100033, 0x1d100091, - 0x1d200000, 0x1d200061, 0x1d500000, 0x1d500093, - 0x1d700000, 0x1d700028, 0x1e100000, 0x1e100096, - 0x1e700000, 0x1e7000d7, 0x1ea00000, 0x1ea00053, - // Entry 180 - 19F - 0x1f300000, 0x1f500000, 0x1f800000, 0x1f80009e, - 0x1f900000, 0x1f90004e, 0x1f90009f, 0x1f900114, - 0x1f900139, 0x1fa00000, 0x1fb00000, 0x20000000, - 0x200000a3, 0x20300000, 0x20700000, 0x20700052, - 0x20800000, 0x20a00000, 0x20a00130, 0x20e00000, - 0x20f00000, 0x21000000, 0x2100007e, 0x21200000, - 0x21200068, 0x21600000, 0x21700000, 0x217000a5, - 0x21f00000, 0x22300000, 0x22300130, 0x22700000, - // Entry 1A0 - 1BF - 0x2270005b, 0x23400000, 0x234000c4, 0x23900000, - 0x239000a5, 0x24200000, 0x242000af, 0x24400000, - 0x24400052, 0x24500000, 0x24500083, 0x24600000, - 0x246000a5, 0x24a00000, 0x24a000a7, 0x25100000, - 0x2510009a, 0x25400000, 0x254000ab, 0x254000ac, - 0x25600000, 0x2560009a, 0x26a00000, 0x26a0009a, - 0x26b00000, 0x26b00130, 0x26d00000, 0x26d00052, - 0x26e00000, 0x26e00061, 0x27400000, 0x28100000, - // Entry 1C0 - 1DF - 0x2810007c, 0x28a00000, 0x28a000a6, 0x29100000, - 0x29100130, 0x29500000, 0x295000b8, 0x2a300000, - 0x2a300132, 0x2af00000, 0x2af00136, 0x2b500000, - 0x2b50002a, 0x2b50004b, 0x2b50004c, 0x2b50004d, - 0x2b800000, 0x2b8000b0, 0x2bf00000, 0x2bf0009c, - 0x2bf0009d, 0x2c000000, 0x2c0000b7, 0x2c200000, - 0x2c20004b, 0x2c400000, 0x2c4000a5, 0x2c500000, - 0x2c5000a5, 0x2c700000, 0x2c7000b9, 0x2d100000, - // Entry 1E0 - 1FF - 0x2d1000a5, 0x2d100130, 0x2e900000, 0x2e9000a5, - 0x2ed00000, 0x2ed000cd, 0x2f100000, 0x2f1000c0, - 0x2f200000, 0x2f2000d2, 0x2f400000, 0x2f400052, - 0x2ff00000, 0x2ff000c3, 0x30400000, 0x3040009a, - 0x30b00000, 0x30b000c6, 0x31000000, 0x31b00000, - 0x31b0009a, 0x31f00000, 0x31f0003e, 0x31f000d1, - 0x31f0010e, 0x32000000, 0x320000cc, 0x32500000, - 0x32500052, 0x33100000, 0x331000c5, 0x33a00000, - // Entry 200 - 21F - 0x33a0009d, 0x34100000, 0x34500000, 0x345000d3, - 0x34700000, 0x347000db, 0x34700111, 0x34e00000, - 0x34e00165, 0x35000000, 0x35000061, 0x350000da, - 0x35100000, 0x3510009a, 0x351000dc, 0x36700000, - 0x36700030, 0x36700036, 0x36700040, 0x3670005c, - 0x367000da, 0x36700117, 0x3670011c, 0x36800000, - 0x36800052, 0x36a00000, 0x36a000db, 0x36c00000, - 0x36c00052, 0x36f00000, 0x37500000, 0x37600000, - // Entry 220 - 23F - 0x37a00000, 0x38000000, 0x38000118, 0x38700000, - 0x38900000, 0x38900132, 0x39000000, 0x39000070, - 0x390000a5, 0x39500000, 0x3950009a, 0x39800000, - 0x3980007e, 0x39800107, 0x39d00000, 0x39d05000, - 0x39d050e9, 0x39d36000, 0x39d3609a, 0x3a100000, - 0x3b300000, 0x3b3000ea, 0x3bd00000, 0x3bd00001, - 0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a, - 0x3c000041, 0x3c00004e, 0x3c00005b, 0x3c000087, - // Entry 240 - 25F - 0x3c00008c, 0x3c0000b8, 0x3c0000c7, 0x3c0000d2, - 0x3c0000ef, 0x3c000119, 0x3c000127, 0x3c400000, - 0x3c40003f, 0x3c40006a, 0x3c4000e5, 0x3d400000, - 0x3d40004e, 0x3d900000, 0x3d90003a, 0x3dc00000, - 0x3dc000bd, 0x3dc00105, 0x3de00000, 0x3de00130, - 0x3e200000, 0x3e200047, 0x3e2000a6, 0x3e2000af, - 0x3e2000bd, 0x3e200107, 0x3e200131, 0x3e500000, - 0x3e500108, 0x3e600000, 0x3e600130, 0x3eb00000, - // Entry 260 - 27F - 0x3eb00107, 0x3ec00000, 0x3ec000a5, 0x3f300000, - 0x3f300130, 0x3fa00000, 0x3fa000e9, 0x3fc00000, - 0x3fd00000, 0x3fd00073, 0x3fd000db, 0x3fd0010d, - 0x3ff00000, 0x3ff000d2, 0x40100000, 0x401000c4, - 0x40200000, 0x4020004c, 0x40700000, 0x40800000, - 0x4085b000, 0x4085b0bb, 0x408eb000, 0x408eb0bb, - 0x40c00000, 0x40c000b4, 0x41200000, 0x41200112, - 0x41600000, 0x41600110, 0x41c00000, 0x41d00000, - // Entry 280 - 29F - 0x41e00000, 0x41f00000, 0x41f00073, 0x42200000, - 0x42300000, 0x42300165, 0x42900000, 0x42900063, - 0x42900070, 0x429000a5, 0x42900116, 0x43100000, - 0x43100027, 0x431000c3, 0x4310014e, 0x43200000, - 0x43220000, 0x43220033, 0x432200be, 0x43220106, - 0x4322014e, 0x4325b000, 0x4325b033, 0x4325b0be, - 0x4325b106, 0x4325b14e, 0x43700000, 0x43a00000, - 0x43b00000, 0x44400000, 0x44400031, 0x44400073, - // Entry 2A0 - 2BF - 0x4440010d, 0x44500000, 0x4450004b, 0x445000a5, - 0x44500130, 0x44500132, 0x44e00000, 0x45000000, - 0x4500009a, 0x450000b4, 0x450000d1, 0x4500010e, - 0x46100000, 0x4610009a, 0x46400000, 0x464000a5, - 0x46400132, 0x46700000, 0x46700125, 0x46b00000, - 0x46b00124, 0x46f00000, 0x46f0006e, 0x46f00070, - 0x47100000, 0x47600000, 0x47600128, 0x47a00000, - 0x48000000, 0x48200000, 0x4820012a, 0x48a00000, - // Entry 2C0 - 2DF - 0x48a0005e, 0x48a0012c, 0x48e00000, 0x49400000, - 0x49400107, 0x4a400000, 0x4a4000d5, 0x4a900000, - 0x4a9000bb, 0x4ac00000, 0x4ac00053, 0x4ae00000, - 0x4ae00131, 0x4b400000, 0x4b40009a, 0x4b4000e9, - 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000, - 0x4bc20138, 0x4bc5b000, 0x4bc5b138, 0x4be00000, - 0x4be5b000, 0x4be5b0b5, 0x4bef4000, 0x4bef40b5, - 0x4c000000, 0x4c300000, 0x4c30013f, 0x4c900000, - // Entry 2E0 - 2FF - 0x4c900001, 0x4cc00000, 0x4cc00130, 0x4ce00000, - 0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500115, - 0x4f200000, 0x4fb00000, 0x4fb00132, 0x50900000, - 0x50900052, 0x51200000, 0x51200001, 0x51800000, - 0x5180003b, 0x518000d7, 0x51f00000, 0x51f3b000, - 0x51f3b053, 0x51f3c000, 0x51f3c08e, 0x52800000, - 0x528000bb, 0x52900000, 0x5293b000, 0x5293b053, - 0x5293b08e, 0x5293b0c7, 0x5293b10e, 0x5293c000, - // Entry 300 - 31F - 0x5293c08e, 0x5293c0c7, 0x5293c12f, 0x52f00000, - 0x52f00162, -} // Size: 3116 bytes - -const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix" - -// Total table size 3147 bytes (3KiB); checksum: 5A8FFFA5 diff --git a/vendor/golang.org/x/text/internal/language/compact/tags.go b/vendor/golang.org/x/text/internal/language/compact/tags.go deleted file mode 100644 index ca135d2..0000000 --- a/vendor/golang.org/x/text/internal/language/compact/tags.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package compact - -var ( - und = Tag{} - - Und Tag = Tag{} - - Afrikaans Tag = Tag{language: afIndex, locale: afIndex} - Amharic Tag = Tag{language: amIndex, locale: amIndex} - Arabic Tag = Tag{language: arIndex, locale: arIndex} - ModernStandardArabic Tag = Tag{language: ar001Index, locale: ar001Index} - Azerbaijani Tag = Tag{language: azIndex, locale: azIndex} - Bulgarian Tag = Tag{language: bgIndex, locale: bgIndex} - Bengali Tag = Tag{language: bnIndex, locale: bnIndex} - Catalan Tag = Tag{language: caIndex, locale: caIndex} - Czech Tag = Tag{language: csIndex, locale: csIndex} - Danish Tag = Tag{language: daIndex, locale: daIndex} - German Tag = Tag{language: deIndex, locale: deIndex} - Greek Tag = Tag{language: elIndex, locale: elIndex} - English Tag = Tag{language: enIndex, locale: enIndex} - AmericanEnglish Tag = Tag{language: enUSIndex, locale: enUSIndex} - BritishEnglish Tag = Tag{language: enGBIndex, locale: enGBIndex} - Spanish Tag = Tag{language: esIndex, locale: esIndex} - EuropeanSpanish Tag = Tag{language: esESIndex, locale: esESIndex} - LatinAmericanSpanish Tag = Tag{language: es419Index, locale: es419Index} - Estonian Tag = Tag{language: etIndex, locale: etIndex} - Persian Tag = Tag{language: faIndex, locale: faIndex} - Finnish Tag = Tag{language: fiIndex, locale: fiIndex} - Filipino Tag = Tag{language: filIndex, locale: filIndex} - French Tag = Tag{language: frIndex, locale: frIndex} - CanadianFrench Tag = Tag{language: frCAIndex, locale: frCAIndex} - Gujarati Tag = Tag{language: guIndex, locale: guIndex} - Hebrew Tag = Tag{language: heIndex, locale: heIndex} - Hindi Tag = Tag{language: hiIndex, locale: hiIndex} - Croatian Tag = Tag{language: hrIndex, locale: hrIndex} - Hungarian Tag = Tag{language: huIndex, locale: huIndex} - Armenian Tag = Tag{language: hyIndex, locale: hyIndex} - Indonesian Tag = Tag{language: idIndex, locale: idIndex} - Icelandic Tag = Tag{language: isIndex, locale: isIndex} - Italian Tag = Tag{language: itIndex, locale: itIndex} - Japanese Tag = Tag{language: jaIndex, locale: jaIndex} - Georgian Tag = Tag{language: kaIndex, locale: kaIndex} - Kazakh Tag = Tag{language: kkIndex, locale: kkIndex} - Khmer Tag = Tag{language: kmIndex, locale: kmIndex} - Kannada Tag = Tag{language: knIndex, locale: knIndex} - Korean Tag = Tag{language: koIndex, locale: koIndex} - Kirghiz Tag = Tag{language: kyIndex, locale: kyIndex} - Lao Tag = Tag{language: loIndex, locale: loIndex} - Lithuanian Tag = Tag{language: ltIndex, locale: ltIndex} - Latvian Tag = Tag{language: lvIndex, locale: lvIndex} - Macedonian Tag = Tag{language: mkIndex, locale: mkIndex} - Malayalam Tag = Tag{language: mlIndex, locale: mlIndex} - Mongolian Tag = Tag{language: mnIndex, locale: mnIndex} - Marathi Tag = Tag{language: mrIndex, locale: mrIndex} - Malay Tag = Tag{language: msIndex, locale: msIndex} - Burmese Tag = Tag{language: myIndex, locale: myIndex} - Nepali Tag = Tag{language: neIndex, locale: neIndex} - Dutch Tag = Tag{language: nlIndex, locale: nlIndex} - Norwegian Tag = Tag{language: noIndex, locale: noIndex} - Punjabi Tag = Tag{language: paIndex, locale: paIndex} - Polish Tag = Tag{language: plIndex, locale: plIndex} - Portuguese Tag = Tag{language: ptIndex, locale: ptIndex} - BrazilianPortuguese Tag = Tag{language: ptBRIndex, locale: ptBRIndex} - EuropeanPortuguese Tag = Tag{language: ptPTIndex, locale: ptPTIndex} - Romanian Tag = Tag{language: roIndex, locale: roIndex} - Russian Tag = Tag{language: ruIndex, locale: ruIndex} - Sinhala Tag = Tag{language: siIndex, locale: siIndex} - Slovak Tag = Tag{language: skIndex, locale: skIndex} - Slovenian Tag = Tag{language: slIndex, locale: slIndex} - Albanian Tag = Tag{language: sqIndex, locale: sqIndex} - Serbian Tag = Tag{language: srIndex, locale: srIndex} - SerbianLatin Tag = Tag{language: srLatnIndex, locale: srLatnIndex} - Swedish Tag = Tag{language: svIndex, locale: svIndex} - Swahili Tag = Tag{language: swIndex, locale: swIndex} - Tamil Tag = Tag{language: taIndex, locale: taIndex} - Telugu Tag = Tag{language: teIndex, locale: teIndex} - Thai Tag = Tag{language: thIndex, locale: thIndex} - Turkish Tag = Tag{language: trIndex, locale: trIndex} - Ukrainian Tag = Tag{language: ukIndex, locale: ukIndex} - Urdu Tag = Tag{language: urIndex, locale: urIndex} - Uzbek Tag = Tag{language: uzIndex, locale: uzIndex} - Vietnamese Tag = Tag{language: viIndex, locale: viIndex} - Chinese Tag = Tag{language: zhIndex, locale: zhIndex} - SimplifiedChinese Tag = Tag{language: zhHansIndex, locale: zhHansIndex} - TraditionalChinese Tag = Tag{language: zhHantIndex, locale: zhHantIndex} - Zulu Tag = Tag{language: zuIndex, locale: zuIndex} -) diff --git a/vendor/golang.org/x/text/internal/language/compose.go b/vendor/golang.org/x/text/internal/language/compose.go deleted file mode 100644 index 4ae78e0..0000000 --- a/vendor/golang.org/x/text/internal/language/compose.go +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "sort" - "strings" -) - -// A Builder allows constructing a Tag from individual components. -// Its main user is Compose in the top-level language package. -type Builder struct { - Tag Tag - - private string // the x extension - variants []string - extensions []string -} - -// Make returns a new Tag from the current settings. -func (b *Builder) Make() Tag { - t := b.Tag - - if len(b.extensions) > 0 || len(b.variants) > 0 { - sort.Sort(sortVariants(b.variants)) - sort.Strings(b.extensions) - - if b.private != "" { - b.extensions = append(b.extensions, b.private) - } - n := maxCoreSize + tokenLen(b.variants...) + tokenLen(b.extensions...) - buf := make([]byte, n) - p := t.genCoreBytes(buf) - t.pVariant = byte(p) - p += appendTokens(buf[p:], b.variants...) - t.pExt = uint16(p) - p += appendTokens(buf[p:], b.extensions...) - t.str = string(buf[:p]) - // We may not always need to remake the string, but when or when not - // to do so is rather tricky. - scan := makeScanner(buf[:p]) - t, _ = parse(&scan, "") - return t - - } else if b.private != "" { - t.str = b.private - t.RemakeString() - } - return t -} - -// SetTag copies all the settings from a given Tag. Any previously set values -// are discarded. -func (b *Builder) SetTag(t Tag) { - b.Tag.LangID = t.LangID - b.Tag.RegionID = t.RegionID - b.Tag.ScriptID = t.ScriptID - // TODO: optimize - b.variants = b.variants[:0] - if variants := t.Variants(); variants != "" { - for _, vr := range strings.Split(variants[1:], "-") { - b.variants = append(b.variants, vr) - } - } - b.extensions, b.private = b.extensions[:0], "" - for _, e := range t.Extensions() { - b.AddExt(e) - } -} - -// AddExt adds extension e to the tag. e must be a valid extension as returned -// by Tag.Extension. If the extension already exists, it will be discarded, -// except for a -u extension, where non-existing key-type pairs will added. -func (b *Builder) AddExt(e string) { - if e[0] == 'x' { - if b.private == "" { - b.private = e - } - return - } - for i, s := range b.extensions { - if s[0] == e[0] { - if e[0] == 'u' { - b.extensions[i] += e[1:] - } - return - } - } - b.extensions = append(b.extensions, e) -} - -// SetExt sets the extension e to the tag. e must be a valid extension as -// returned by Tag.Extension. If the extension already exists, it will be -// overwritten, except for a -u extension, where the individual key-type pairs -// will be set. -func (b *Builder) SetExt(e string) { - if e[0] == 'x' { - b.private = e - return - } - for i, s := range b.extensions { - if s[0] == e[0] { - if e[0] == 'u' { - b.extensions[i] = e + s[1:] - } else { - b.extensions[i] = e - } - return - } - } - b.extensions = append(b.extensions, e) -} - -// AddVariant adds any number of variants. -func (b *Builder) AddVariant(v ...string) { - for _, v := range v { - if v != "" { - b.variants = append(b.variants, v) - } - } -} - -// ClearVariants removes any variants previously added, including those -// copied from a Tag in SetTag. -func (b *Builder) ClearVariants() { - b.variants = b.variants[:0] -} - -// ClearExtensions removes any extensions previously added, including those -// copied from a Tag in SetTag. -func (b *Builder) ClearExtensions() { - b.private = "" - b.extensions = b.extensions[:0] -} - -func tokenLen(token ...string) (n int) { - for _, t := range token { - n += len(t) + 1 - } - return -} - -func appendTokens(b []byte, token ...string) int { - p := 0 - for _, t := range token { - b[p] = '-' - copy(b[p+1:], t) - p += 1 + len(t) - } - return p -} - -type sortVariants []string - -func (s sortVariants) Len() int { - return len(s) -} - -func (s sortVariants) Swap(i, j int) { - s[j], s[i] = s[i], s[j] -} - -func (s sortVariants) Less(i, j int) bool { - return variantIndex[s[i]] < variantIndex[s[j]] -} diff --git a/vendor/golang.org/x/text/internal/language/coverage.go b/vendor/golang.org/x/text/internal/language/coverage.go deleted file mode 100644 index 9b20b88..0000000 --- a/vendor/golang.org/x/text/internal/language/coverage.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -// BaseLanguages returns the list of all supported base languages. It generates -// the list by traversing the internal structures. -func BaseLanguages() []Language { - base := make([]Language, 0, NumLanguages) - for i := 0; i < langNoIndexOffset; i++ { - // We included "und" already for the value 0. - if i != nonCanonicalUnd { - base = append(base, Language(i)) - } - } - i := langNoIndexOffset - for _, v := range langNoIndex { - for k := 0; k < 8; k++ { - if v&1 == 1 { - base = append(base, Language(i)) - } - v >>= 1 - i++ - } - } - return base -} diff --git a/vendor/golang.org/x/text/internal/language/language.go b/vendor/golang.org/x/text/internal/language/language.go deleted file mode 100644 index 09d41c7..0000000 --- a/vendor/golang.org/x/text/internal/language/language.go +++ /dev/null @@ -1,627 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go gen_common.go -output tables.go - -package language // import "golang.org/x/text/internal/language" - -// TODO: Remove above NOTE after: -// - verifying that tables are dropped correctly (most notably matcher tables). - -import ( - "errors" - "fmt" - "strings" -) - -const ( - // maxCoreSize is the maximum size of a BCP 47 tag without variants and - // extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes. - maxCoreSize = 12 - - // max99thPercentileSize is a somewhat arbitrary buffer size that presumably - // is large enough to hold at least 99% of the BCP 47 tags. - max99thPercentileSize = 32 - - // maxSimpleUExtensionSize is the maximum size of a -u extension with one - // key-type pair. Equals len("-u-") + key (2) + dash + max value (8). - maxSimpleUExtensionSize = 14 -) - -// Tag represents a BCP 47 language tag. It is used to specify an instance of a -// specific language or locale. All language tag values are guaranteed to be -// well-formed. The zero value of Tag is Und. -type Tag struct { - // TODO: the following fields have the form TagTypeID. This name is chosen - // to allow refactoring the public package without conflicting with its - // Base, Script, and Region methods. Once the transition is fully completed - // the ID can be stripped from the name. - - LangID Language - RegionID Region - // TODO: we will soon run out of positions for ScriptID. Idea: instead of - // storing lang, region, and ScriptID codes, store only the compact index and - // have a lookup table from this code to its expansion. This greatly speeds - // up table lookup, speed up common variant cases. - // This will also immediately free up 3 extra bytes. Also, the pVariant - // field can now be moved to the lookup table, as the compact index uniquely - // determines the offset of a possible variant. - ScriptID Script - pVariant byte // offset in str, includes preceding '-' - pExt uint16 // offset of first extension, includes preceding '-' - - // str is the string representation of the Tag. It will only be used if the - // tag has variants or extensions. - str string -} - -// Make is a convenience wrapper for Parse that omits the error. -// In case of an error, a sensible default is returned. -func Make(s string) Tag { - t, _ := Parse(s) - return t -} - -// Raw returns the raw base language, script and region, without making an -// attempt to infer their values. -// TODO: consider removing -func (t Tag) Raw() (b Language, s Script, r Region) { - return t.LangID, t.ScriptID, t.RegionID -} - -// equalTags compares language, script and region subtags only. -func (t Tag) equalTags(a Tag) bool { - return t.LangID == a.LangID && t.ScriptID == a.ScriptID && t.RegionID == a.RegionID -} - -// IsRoot returns true if t is equal to language "und". -func (t Tag) IsRoot() bool { - if int(t.pVariant) < len(t.str) { - return false - } - return t.equalTags(Und) -} - -// IsPrivateUse reports whether the Tag consists solely of an IsPrivateUse use -// tag. -func (t Tag) IsPrivateUse() bool { - return t.str != "" && t.pVariant == 0 -} - -// RemakeString is used to update t.str in case lang, script or region changed. -// It is assumed that pExt and pVariant still point to the start of the -// respective parts. -func (t *Tag) RemakeString() { - if t.str == "" { - return - } - extra := t.str[t.pVariant:] - if t.pVariant > 0 { - extra = extra[1:] - } - if t.equalTags(Und) && strings.HasPrefix(extra, "x-") { - t.str = extra - t.pVariant = 0 - t.pExt = 0 - return - } - var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases. - b := buf[:t.genCoreBytes(buf[:])] - if extra != "" { - diff := len(b) - int(t.pVariant) - b = append(b, '-') - b = append(b, extra...) - t.pVariant = uint8(int(t.pVariant) + diff) - t.pExt = uint16(int(t.pExt) + diff) - } else { - t.pVariant = uint8(len(b)) - t.pExt = uint16(len(b)) - } - t.str = string(b) -} - -// genCoreBytes writes a string for the base languages, script and region tags -// to the given buffer and returns the number of bytes written. It will never -// write more than maxCoreSize bytes. -func (t *Tag) genCoreBytes(buf []byte) int { - n := t.LangID.StringToBuf(buf[:]) - if t.ScriptID != 0 { - n += copy(buf[n:], "-") - n += copy(buf[n:], t.ScriptID.String()) - } - if t.RegionID != 0 { - n += copy(buf[n:], "-") - n += copy(buf[n:], t.RegionID.String()) - } - return n -} - -// String returns the canonical string representation of the language tag. -func (t Tag) String() string { - if t.str != "" { - return t.str - } - if t.ScriptID == 0 && t.RegionID == 0 { - return t.LangID.String() - } - buf := [maxCoreSize]byte{} - return string(buf[:t.genCoreBytes(buf[:])]) -} - -// MarshalText implements encoding.TextMarshaler. -func (t Tag) MarshalText() (text []byte, err error) { - if t.str != "" { - text = append(text, t.str...) - } else if t.ScriptID == 0 && t.RegionID == 0 { - text = append(text, t.LangID.String()...) - } else { - buf := [maxCoreSize]byte{} - text = buf[:t.genCoreBytes(buf[:])] - } - return text, nil -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (t *Tag) UnmarshalText(text []byte) error { - tag, err := Parse(string(text)) - *t = tag - return err -} - -// Variants returns the part of the tag holding all variants or the empty string -// if there are no variants defined. -func (t Tag) Variants() string { - if t.pVariant == 0 { - return "" - } - return t.str[t.pVariant:t.pExt] -} - -// VariantOrPrivateUseTags returns variants or private use tags. -func (t Tag) VariantOrPrivateUseTags() string { - if t.pExt > 0 { - return t.str[t.pVariant:t.pExt] - } - return t.str[t.pVariant:] -} - -// HasString reports whether this tag defines more than just the raw -// components. -func (t Tag) HasString() bool { - return t.str != "" -} - -// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a -// specific language are substituted with fields from the parent language. -// The parent for a language may change for newer versions of CLDR. -func (t Tag) Parent() Tag { - if t.str != "" { - // Strip the variants and extensions. - b, s, r := t.Raw() - t = Tag{LangID: b, ScriptID: s, RegionID: r} - if t.RegionID == 0 && t.ScriptID != 0 && t.LangID != 0 { - base, _ := addTags(Tag{LangID: t.LangID}) - if base.ScriptID == t.ScriptID { - return Tag{LangID: t.LangID} - } - } - return t - } - if t.LangID != 0 { - if t.RegionID != 0 { - maxScript := t.ScriptID - if maxScript == 0 { - max, _ := addTags(t) - maxScript = max.ScriptID - } - - for i := range parents { - if Language(parents[i].lang) == t.LangID && Script(parents[i].maxScript) == maxScript { - for _, r := range parents[i].fromRegion { - if Region(r) == t.RegionID { - return Tag{ - LangID: t.LangID, - ScriptID: Script(parents[i].script), - RegionID: Region(parents[i].toRegion), - } - } - } - } - } - - // Strip the script if it is the default one. - base, _ := addTags(Tag{LangID: t.LangID}) - if base.ScriptID != maxScript { - return Tag{LangID: t.LangID, ScriptID: maxScript} - } - return Tag{LangID: t.LangID} - } else if t.ScriptID != 0 { - // The parent for an base-script pair with a non-default script is - // "und" instead of the base language. - base, _ := addTags(Tag{LangID: t.LangID}) - if base.ScriptID != t.ScriptID { - return Und - } - return Tag{LangID: t.LangID} - } - } - return Und -} - -// ParseExtension parses s as an extension and returns it on success. -func ParseExtension(s string) (ext string, err error) { - defer func() { - if recover() != nil { - ext = "" - err = ErrSyntax - } - }() - - scan := makeScannerString(s) - var end int - if n := len(scan.token); n != 1 { - return "", ErrSyntax - } - scan.toLower(0, len(scan.b)) - end = parseExtension(&scan) - if end != len(s) { - return "", ErrSyntax - } - return string(scan.b), nil -} - -// HasVariants reports whether t has variants. -func (t Tag) HasVariants() bool { - return uint16(t.pVariant) < t.pExt -} - -// HasExtensions reports whether t has extensions. -func (t Tag) HasExtensions() bool { - return int(t.pExt) < len(t.str) -} - -// Extension returns the extension of type x for tag t. It will return -// false for ok if t does not have the requested extension. The returned -// extension will be invalid in this case. -func (t Tag) Extension(x byte) (ext string, ok bool) { - for i := int(t.pExt); i < len(t.str)-1; { - var ext string - i, ext = getExtension(t.str, i) - if ext[0] == x { - return ext, true - } - } - return "", false -} - -// Extensions returns all extensions of t. -func (t Tag) Extensions() []string { - e := []string{} - for i := int(t.pExt); i < len(t.str)-1; { - var ext string - i, ext = getExtension(t.str, i) - e = append(e, ext) - } - return e -} - -// TypeForKey returns the type associated with the given key, where key and type -// are of the allowed values defined for the Unicode locale extension ('u') in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// TypeForKey will traverse the inheritance chain to get the correct value. -// -// If there are multiple types associated with a key, only the first will be -// returned. If there is no type associated with a key, it returns the empty -// string. -func (t Tag) TypeForKey(key string) string { - if _, start, end, _ := t.findTypeForKey(key); end != start { - s := t.str[start:end] - if p := strings.IndexByte(s, '-'); p >= 0 { - s = s[:p] - } - return s - } - return "" -} - -var ( - errPrivateUse = errors.New("cannot set a key on a private use tag") - errInvalidArguments = errors.New("invalid key or type") -) - -// SetTypeForKey returns a new Tag with the key set to type, where key and type -// are of the allowed values defined for the Unicode locale extension ('u') in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// An empty value removes an existing pair with the same key. -func (t Tag) SetTypeForKey(key, value string) (Tag, error) { - if t.IsPrivateUse() { - return t, errPrivateUse - } - if len(key) != 2 { - return t, errInvalidArguments - } - - // Remove the setting if value is "". - if value == "" { - start, sep, end, _ := t.findTypeForKey(key) - if start != sep { - // Remove a possible empty extension. - switch { - case t.str[start-2] != '-': // has previous elements. - case end == len(t.str), // end of string - end+2 < len(t.str) && t.str[end+2] == '-': // end of extension - start -= 2 - } - if start == int(t.pVariant) && end == len(t.str) { - t.str = "" - t.pVariant, t.pExt = 0, 0 - } else { - t.str = fmt.Sprintf("%s%s", t.str[:start], t.str[end:]) - } - } - return t, nil - } - - if len(value) < 3 || len(value) > 8 { - return t, errInvalidArguments - } - - var ( - buf [maxCoreSize + maxSimpleUExtensionSize]byte - uStart int // start of the -u extension. - ) - - // Generate the tag string if needed. - if t.str == "" { - uStart = t.genCoreBytes(buf[:]) - buf[uStart] = '-' - uStart++ - } - - // Create new key-type pair and parse it to verify. - b := buf[uStart:] - copy(b, "u-") - copy(b[2:], key) - b[4] = '-' - b = b[:5+copy(b[5:], value)] - scan := makeScanner(b) - if parseExtensions(&scan); scan.err != nil { - return t, scan.err - } - - // Assemble the replacement string. - if t.str == "" { - t.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1) - t.str = string(buf[:uStart+len(b)]) - } else { - s := t.str - start, sep, end, hasExt := t.findTypeForKey(key) - if start == sep { - if hasExt { - b = b[2:] - } - t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:]) - } else { - t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:]) - } - } - return t, nil -} - -// findTypeForKey returns the start and end position for the type corresponding -// to key or the point at which to insert the key-value pair if the type -// wasn't found. The hasExt return value reports whether an -u extension was present. -// Note: the extensions are typically very small and are likely to contain -// only one key-type pair. -func (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) { - p := int(t.pExt) - if len(key) != 2 || p == len(t.str) || p == 0 { - return p, p, p, false - } - s := t.str - - // Find the correct extension. - for p++; s[p] != 'u'; p++ { - if s[p] > 'u' { - p-- - return p, p, p, false - } - if p = nextExtension(s, p); p == len(s) { - return len(s), len(s), len(s), false - } - } - // Proceed to the hyphen following the extension name. - p++ - - // curKey is the key currently being processed. - curKey := "" - - // Iterate over keys until we get the end of a section. - for { - end = p - for p++; p < len(s) && s[p] != '-'; p++ { - } - n := p - end - 1 - if n <= 2 && curKey == key { - if sep < end { - sep++ - } - return start, sep, end, true - } - switch n { - case 0, // invalid string - 1: // next extension - return end, end, end, true - case 2: - // next key - curKey = s[end+1 : p] - if curKey > key { - return end, end, end, true - } - start = end - sep = p - } - } -} - -// ParseBase parses a 2- or 3-letter ISO 639 code. -// It returns a ValueError if s is a well-formed but unknown language identifier -// or another error if another error occurred. -func ParseBase(s string) (l Language, err error) { - defer func() { - if recover() != nil { - l = 0 - err = ErrSyntax - } - }() - - if n := len(s); n < 2 || 3 < n { - return 0, ErrSyntax - } - var buf [3]byte - return getLangID(buf[:copy(buf[:], s)]) -} - -// ParseScript parses a 4-letter ISO 15924 code. -// It returns a ValueError if s is a well-formed but unknown script identifier -// or another error if another error occurred. -func ParseScript(s string) (scr Script, err error) { - defer func() { - if recover() != nil { - scr = 0 - err = ErrSyntax - } - }() - - if len(s) != 4 { - return 0, ErrSyntax - } - var buf [4]byte - return getScriptID(script, buf[:copy(buf[:], s)]) -} - -// EncodeM49 returns the Region for the given UN M.49 code. -// It returns an error if r is not a valid code. -func EncodeM49(r int) (Region, error) { - return getRegionM49(r) -} - -// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. -// It returns a ValueError if s is a well-formed but unknown region identifier -// or another error if another error occurred. -func ParseRegion(s string) (r Region, err error) { - defer func() { - if recover() != nil { - r = 0 - err = ErrSyntax - } - }() - - if n := len(s); n < 2 || 3 < n { - return 0, ErrSyntax - } - var buf [3]byte - return getRegionID(buf[:copy(buf[:], s)]) -} - -// IsCountry returns whether this region is a country or autonomous area. This -// includes non-standard definitions from CLDR. -func (r Region) IsCountry() bool { - if r == 0 || r.IsGroup() || r.IsPrivateUse() && r != _XK { - return false - } - return true -} - -// IsGroup returns whether this region defines a collection of regions. This -// includes non-standard definitions from CLDR. -func (r Region) IsGroup() bool { - if r == 0 { - return false - } - return int(regionInclusion[r]) < len(regionContainment) -} - -// Contains returns whether Region c is contained by Region r. It returns true -// if c == r. -func (r Region) Contains(c Region) bool { - if r == c { - return true - } - g := regionInclusion[r] - if g >= nRegionGroups { - return false - } - m := regionContainment[g] - - d := regionInclusion[c] - b := regionInclusionBits[d] - - // A contained country may belong to multiple disjoint groups. Matching any - // of these indicates containment. If the contained region is a group, it - // must strictly be a subset. - if d >= nRegionGroups { - return b&m != 0 - } - return b&^m == 0 -} - -var errNoTLD = errors.New("language: region is not a valid ccTLD") - -// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. -// In all other cases it returns either the region itself or an error. -// -// This method may return an error for a region for which there exists a -// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The -// region will already be canonicalized it was obtained from a Tag that was -// obtained using any of the default methods. -func (r Region) TLD() (Region, error) { - // See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the - // difference between ISO 3166-1 and IANA ccTLD. - if r == _GB { - r = _UK - } - if (r.typ() & ccTLD) == 0 { - return 0, errNoTLD - } - return r, nil -} - -// Canonicalize returns the region or a possible replacement if the region is -// deprecated. It will not return a replacement for deprecated regions that -// are split into multiple regions. -func (r Region) Canonicalize() Region { - if cr := normRegion(r); cr != 0 { - return cr - } - return r -} - -// Variant represents a registered variant of a language as defined by BCP 47. -type Variant struct { - ID uint8 - str string -} - -// ParseVariant parses and returns a Variant. An error is returned if s is not -// a valid variant. -func ParseVariant(s string) (v Variant, err error) { - defer func() { - if recover() != nil { - v = Variant{} - err = ErrSyntax - } - }() - - s = strings.ToLower(s) - if id, ok := variantIndex[s]; ok { - return Variant{id, s}, nil - } - return Variant{}, NewValueError([]byte(s)) -} - -// String returns the string representation of the variant. -func (v Variant) String() string { - return v.str -} diff --git a/vendor/golang.org/x/text/internal/language/lookup.go b/vendor/golang.org/x/text/internal/language/lookup.go deleted file mode 100644 index 231b4fb..0000000 --- a/vendor/golang.org/x/text/internal/language/lookup.go +++ /dev/null @@ -1,412 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "bytes" - "fmt" - "sort" - "strconv" - - "golang.org/x/text/internal/tag" -) - -// findIndex tries to find the given tag in idx and returns a standardized error -// if it could not be found. -func findIndex(idx tag.Index, key []byte, form string) (index int, err error) { - if !tag.FixCase(form, key) { - return 0, ErrSyntax - } - i := idx.Index(key) - if i == -1 { - return 0, NewValueError(key) - } - return i, nil -} - -func searchUint(imap []uint16, key uint16) int { - return sort.Search(len(imap), func(i int) bool { - return imap[i] >= key - }) -} - -type Language uint16 - -// getLangID returns the langID of s if s is a canonical subtag -// or langUnknown if s is not a canonical subtag. -func getLangID(s []byte) (Language, error) { - if len(s) == 2 { - return getLangISO2(s) - } - return getLangISO3(s) -} - -// TODO language normalization as well as the AliasMaps could be moved to the -// higher level package, but it is a bit tricky to separate the generation. - -func (id Language) Canonicalize() (Language, AliasType) { - return normLang(id) -} - -// normLang returns the mapped langID of id according to mapping m. -func normLang(id Language) (Language, AliasType) { - k := sort.Search(len(AliasMap), func(i int) bool { - return AliasMap[i].From >= uint16(id) - }) - if k < len(AliasMap) && AliasMap[k].From == uint16(id) { - return Language(AliasMap[k].To), AliasTypes[k] - } - return id, AliasTypeUnknown -} - -// getLangISO2 returns the langID for the given 2-letter ISO language code -// or unknownLang if this does not exist. -func getLangISO2(s []byte) (Language, error) { - if !tag.FixCase("zz", s) { - return 0, ErrSyntax - } - if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 { - return Language(i), nil - } - return 0, NewValueError(s) -} - -const base = 'z' - 'a' + 1 - -func strToInt(s []byte) uint { - v := uint(0) - for i := 0; i < len(s); i++ { - v *= base - v += uint(s[i] - 'a') - } - return v -} - -// converts the given integer to the original ASCII string passed to strToInt. -// len(s) must match the number of characters obtained. -func intToStr(v uint, s []byte) { - for i := len(s) - 1; i >= 0; i-- { - s[i] = byte(v%base) + 'a' - v /= base - } -} - -// getLangISO3 returns the langID for the given 3-letter ISO language code -// or unknownLang if this does not exist. -func getLangISO3(s []byte) (Language, error) { - if tag.FixCase("und", s) { - // first try to match canonical 3-letter entries - for i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) { - if e := lang.Elem(i); e[3] == 0 && e[2] == s[2] { - // We treat "und" as special and always translate it to "unspecified". - // Note that ZZ and Zzzz are private use and are not treated as - // unspecified by default. - id := Language(i) - if id == nonCanonicalUnd { - return 0, nil - } - return id, nil - } - } - if i := altLangISO3.Index(s); i != -1 { - return Language(altLangIndex[altLangISO3.Elem(i)[3]]), nil - } - n := strToInt(s) - if langNoIndex[n/8]&(1<<(n%8)) != 0 { - return Language(n) + langNoIndexOffset, nil - } - // Check for non-canonical uses of ISO3. - for i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) { - if e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] { - return Language(i), nil - } - } - return 0, NewValueError(s) - } - return 0, ErrSyntax -} - -// StringToBuf writes the string to b and returns the number of bytes -// written. cap(b) must be >= 3. -func (id Language) StringToBuf(b []byte) int { - if id >= langNoIndexOffset { - intToStr(uint(id)-langNoIndexOffset, b[:3]) - return 3 - } else if id == 0 { - return copy(b, "und") - } - l := lang[id<<2:] - if l[3] == 0 { - return copy(b, l[:3]) - } - return copy(b, l[:2]) -} - -// String returns the BCP 47 representation of the langID. -// Use b as variable name, instead of id, to ensure the variable -// used is consistent with that of Base in which this type is embedded. -func (b Language) String() string { - if b == 0 { - return "und" - } else if b >= langNoIndexOffset { - b -= langNoIndexOffset - buf := [3]byte{} - intToStr(uint(b), buf[:]) - return string(buf[:]) - } - l := lang.Elem(int(b)) - if l[3] == 0 { - return l[:3] - } - return l[:2] -} - -// ISO3 returns the ISO 639-3 language code. -func (b Language) ISO3() string { - if b == 0 || b >= langNoIndexOffset { - return b.String() - } - l := lang.Elem(int(b)) - if l[3] == 0 { - return l[:3] - } else if l[2] == 0 { - return altLangISO3.Elem(int(l[3]))[:3] - } - // This allocation will only happen for 3-letter ISO codes - // that are non-canonical BCP 47 language identifiers. - return l[0:1] + l[2:4] -} - -// IsPrivateUse reports whether this language code is reserved for private use. -func (b Language) IsPrivateUse() bool { - return langPrivateStart <= b && b <= langPrivateEnd -} - -// SuppressScript returns the script marked as SuppressScript in the IANA -// language tag repository, or 0 if there is no such script. -func (b Language) SuppressScript() Script { - if b < langNoIndexOffset { - return Script(suppressScript[b]) - } - return 0 -} - -type Region uint16 - -// getRegionID returns the region id for s if s is a valid 2-letter region code -// or unknownRegion. -func getRegionID(s []byte) (Region, error) { - if len(s) == 3 { - if isAlpha(s[0]) { - return getRegionISO3(s) - } - if i, err := strconv.ParseUint(string(s), 10, 10); err == nil { - return getRegionM49(int(i)) - } - } - return getRegionISO2(s) -} - -// getRegionISO2 returns the regionID for the given 2-letter ISO country code -// or unknownRegion if this does not exist. -func getRegionISO2(s []byte) (Region, error) { - i, err := findIndex(regionISO, s, "ZZ") - if err != nil { - return 0, err - } - return Region(i) + isoRegionOffset, nil -} - -// getRegionISO3 returns the regionID for the given 3-letter ISO country code -// or unknownRegion if this does not exist. -func getRegionISO3(s []byte) (Region, error) { - if tag.FixCase("ZZZ", s) { - for i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) { - if e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] { - return Region(i) + isoRegionOffset, nil - } - } - for i := 0; i < len(altRegionISO3); i += 3 { - if tag.Compare(altRegionISO3[i:i+3], s) == 0 { - return Region(altRegionIDs[i/3]), nil - } - } - return 0, NewValueError(s) - } - return 0, ErrSyntax -} - -func getRegionM49(n int) (Region, error) { - if 0 < n && n <= 999 { - const ( - searchBits = 7 - regionBits = 9 - regionMask = 1<<regionBits - 1 - ) - idx := n >> searchBits - buf := fromM49[m49Index[idx]:m49Index[idx+1]] - val := uint16(n) << regionBits // we rely on bits shifting out - i := sort.Search(len(buf), func(i int) bool { - return buf[i] >= val - }) - if r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val { - return Region(r & regionMask), nil - } - } - var e ValueError - fmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n) - return 0, e -} - -// normRegion returns a region if r is deprecated or 0 otherwise. -// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ). -// TODO: consider mapping split up regions to new most populous one (like CLDR). -func normRegion(r Region) Region { - m := regionOldMap - k := sort.Search(len(m), func(i int) bool { - return m[i].From >= uint16(r) - }) - if k < len(m) && m[k].From == uint16(r) { - return Region(m[k].To) - } - return 0 -} - -const ( - iso3166UserAssigned = 1 << iota - ccTLD - bcp47Region -) - -func (r Region) typ() byte { - return regionTypes[r] -} - -// String returns the BCP 47 representation for the region. -// It returns "ZZ" for an unspecified region. -func (r Region) String() string { - if r < isoRegionOffset { - if r == 0 { - return "ZZ" - } - return fmt.Sprintf("%03d", r.M49()) - } - r -= isoRegionOffset - return regionISO.Elem(int(r))[:2] -} - -// ISO3 returns the 3-letter ISO code of r. -// Note that not all regions have a 3-letter ISO code. -// In such cases this method returns "ZZZ". -func (r Region) ISO3() string { - if r < isoRegionOffset { - return "ZZZ" - } - r -= isoRegionOffset - reg := regionISO.Elem(int(r)) - switch reg[2] { - case 0: - return altRegionISO3[reg[3]:][:3] - case ' ': - return "ZZZ" - } - return reg[0:1] + reg[2:4] -} - -// M49 returns the UN M.49 encoding of r, or 0 if this encoding -// is not defined for r. -func (r Region) M49() int { - return int(m49[r]) -} - -// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This -// may include private-use tags that are assigned by CLDR and used in this -// implementation. So IsPrivateUse and IsCountry can be simultaneously true. -func (r Region) IsPrivateUse() bool { - return r.typ()&iso3166UserAssigned != 0 -} - -type Script uint16 - -// getScriptID returns the script id for string s. It assumes that s -// is of the format [A-Z][a-z]{3}. -func getScriptID(idx tag.Index, s []byte) (Script, error) { - i, err := findIndex(idx, s, "Zzzz") - return Script(i), err -} - -// String returns the script code in title case. -// It returns "Zzzz" for an unspecified script. -func (s Script) String() string { - if s == 0 { - return "Zzzz" - } - return script.Elem(int(s)) -} - -// IsPrivateUse reports whether this script code is reserved for private use. -func (s Script) IsPrivateUse() bool { - return _Qaaa <= s && s <= _Qabx -} - -const ( - maxAltTaglen = len("en-US-POSIX") - maxLen = maxAltTaglen -) - -var ( - // grandfatheredMap holds a mapping from legacy and grandfathered tags to - // their base language or index to more elaborate tag. - grandfatheredMap = map[[maxLen]byte]int16{ - [maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban - [maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami - [maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn - [maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak - [maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon - [maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux - [maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo - [maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn - [maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao - [maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay - [maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu - [maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok - [maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn - [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR - [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL - [maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE - [maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu - [maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka - [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan - [maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang - - // Grandfathered tags with no modern replacement will be converted as - // follows: - [maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish - [maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed - [maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default - [maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian - [maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo - [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min - - // CLDR-specific tag. - [maxLen]byte{'r', 'o', 'o', 't'}: 0, // root - [maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX" - } - - altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102} - - altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix" -) - -func grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) { - if v, ok := grandfatheredMap[s]; ok { - if v < 0 { - return Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true - } - t.LangID = Language(v) - return t, true - } - return t, false -} diff --git a/vendor/golang.org/x/text/internal/language/match.go b/vendor/golang.org/x/text/internal/language/match.go deleted file mode 100644 index 75a2dbc..0000000 --- a/vendor/golang.org/x/text/internal/language/match.go +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import "errors" - -type scriptRegionFlags uint8 - -const ( - isList = 1 << iota - scriptInFrom - regionInFrom -) - -func (t *Tag) setUndefinedLang(id Language) { - if t.LangID == 0 { - t.LangID = id - } -} - -func (t *Tag) setUndefinedScript(id Script) { - if t.ScriptID == 0 { - t.ScriptID = id - } -} - -func (t *Tag) setUndefinedRegion(id Region) { - if t.RegionID == 0 || t.RegionID.Contains(id) { - t.RegionID = id - } -} - -// ErrMissingLikelyTagsData indicates no information was available -// to compute likely values of missing tags. -var ErrMissingLikelyTagsData = errors.New("missing likely tags data") - -// addLikelySubtags sets subtags to their most likely value, given the locale. -// In most cases this means setting fields for unknown values, but in some -// cases it may alter a value. It returns an ErrMissingLikelyTagsData error -// if the given locale cannot be expanded. -func (t Tag) addLikelySubtags() (Tag, error) { - id, err := addTags(t) - if err != nil { - return t, err - } else if id.equalTags(t) { - return t, nil - } - id.RemakeString() - return id, nil -} - -// specializeRegion attempts to specialize a group region. -func specializeRegion(t *Tag) bool { - if i := regionInclusion[t.RegionID]; i < nRegionGroups { - x := likelyRegionGroup[i] - if Language(x.lang) == t.LangID && Script(x.script) == t.ScriptID { - t.RegionID = Region(x.region) - } - return true - } - return false -} - -// Maximize returns a new tag with missing tags filled in. -func (t Tag) Maximize() (Tag, error) { - return addTags(t) -} - -func addTags(t Tag) (Tag, error) { - // We leave private use identifiers alone. - if t.IsPrivateUse() { - return t, nil - } - if t.ScriptID != 0 && t.RegionID != 0 { - if t.LangID != 0 { - // already fully specified - specializeRegion(&t) - return t, nil - } - // Search matches for und-script-region. Note that for these cases - // region will never be a group so there is no need to check for this. - list := likelyRegion[t.RegionID : t.RegionID+1] - if x := list[0]; x.flags&isList != 0 { - list = likelyRegionList[x.lang : x.lang+uint16(x.script)] - } - for _, x := range list { - // Deviating from the spec. See match_test.go for details. - if Script(x.script) == t.ScriptID { - t.setUndefinedLang(Language(x.lang)) - return t, nil - } - } - } - if t.LangID != 0 { - // Search matches for lang-script and lang-region, where lang != und. - if t.LangID < langNoIndexOffset { - x := likelyLang[t.LangID] - if x.flags&isList != 0 { - list := likelyLangList[x.region : x.region+uint16(x.script)] - if t.ScriptID != 0 { - for _, x := range list { - if Script(x.script) == t.ScriptID && x.flags&scriptInFrom != 0 { - t.setUndefinedRegion(Region(x.region)) - return t, nil - } - } - } else if t.RegionID != 0 { - count := 0 - goodScript := true - tt := t - for _, x := range list { - // We visit all entries for which the script was not - // defined, including the ones where the region was not - // defined. This allows for proper disambiguation within - // regions. - if x.flags&scriptInFrom == 0 && t.RegionID.Contains(Region(x.region)) { - tt.RegionID = Region(x.region) - tt.setUndefinedScript(Script(x.script)) - goodScript = goodScript && tt.ScriptID == Script(x.script) - count++ - } - } - if count == 1 { - return tt, nil - } - // Even if we fail to find a unique Region, we might have - // an unambiguous script. - if goodScript { - t.ScriptID = tt.ScriptID - } - } - } - } - } else { - // Search matches for und-script. - if t.ScriptID != 0 { - x := likelyScript[t.ScriptID] - if x.region != 0 { - t.setUndefinedRegion(Region(x.region)) - t.setUndefinedLang(Language(x.lang)) - return t, nil - } - } - // Search matches for und-region. If und-script-region exists, it would - // have been found earlier. - if t.RegionID != 0 { - if i := regionInclusion[t.RegionID]; i < nRegionGroups { - x := likelyRegionGroup[i] - if x.region != 0 { - t.setUndefinedLang(Language(x.lang)) - t.setUndefinedScript(Script(x.script)) - t.RegionID = Region(x.region) - } - } else { - x := likelyRegion[t.RegionID] - if x.flags&isList != 0 { - x = likelyRegionList[x.lang] - } - if x.script != 0 && x.flags != scriptInFrom { - t.setUndefinedLang(Language(x.lang)) - t.setUndefinedScript(Script(x.script)) - return t, nil - } - } - } - } - - // Search matches for lang. - if t.LangID < langNoIndexOffset { - x := likelyLang[t.LangID] - if x.flags&isList != 0 { - x = likelyLangList[x.region] - } - if x.region != 0 { - t.setUndefinedScript(Script(x.script)) - t.setUndefinedRegion(Region(x.region)) - } - specializeRegion(&t) - if t.LangID == 0 { - t.LangID = _en // default language - } - return t, nil - } - return t, ErrMissingLikelyTagsData -} - -func (t *Tag) setTagsFrom(id Tag) { - t.LangID = id.LangID - t.ScriptID = id.ScriptID - t.RegionID = id.RegionID -} - -// minimize removes the region or script subtags from t such that -// t.addLikelySubtags() == t.minimize().addLikelySubtags(). -func (t Tag) minimize() (Tag, error) { - t, err := minimizeTags(t) - if err != nil { - return t, err - } - t.RemakeString() - return t, nil -} - -// minimizeTags mimics the behavior of the ICU 51 C implementation. -func minimizeTags(t Tag) (Tag, error) { - if t.equalTags(Und) { - return t, nil - } - max, err := addTags(t) - if err != nil { - return t, err - } - for _, id := range [...]Tag{ - {LangID: t.LangID}, - {LangID: t.LangID, RegionID: t.RegionID}, - {LangID: t.LangID, ScriptID: t.ScriptID}, - } { - if x, err := addTags(id); err == nil && max.equalTags(x) { - t.setTagsFrom(id) - break - } - } - return t, nil -} diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go deleted file mode 100644 index aad1e0a..0000000 --- a/vendor/golang.org/x/text/internal/language/parse.go +++ /dev/null @@ -1,608 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "bytes" - "errors" - "fmt" - "sort" - - "golang.org/x/text/internal/tag" -) - -// isAlpha returns true if the byte is not a digit. -// b must be an ASCII letter or digit. -func isAlpha(b byte) bool { - return b > '9' -} - -// isAlphaNum returns true if the string contains only ASCII letters or digits. -func isAlphaNum(s []byte) bool { - for _, c := range s { - if !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') { - return false - } - } - return true -} - -// ErrSyntax is returned by any of the parsing functions when the -// input is not well-formed, according to BCP 47. -// TODO: return the position at which the syntax error occurred? -var ErrSyntax = errors.New("language: tag is not well-formed") - -// ErrDuplicateKey is returned when a tag contains the same key twice with -// different values in the -u section. -var ErrDuplicateKey = errors.New("language: different values for same key in -u extension") - -// ValueError is returned by any of the parsing functions when the -// input is well-formed but the respective subtag is not recognized -// as a valid value. -type ValueError struct { - v [8]byte -} - -// NewValueError creates a new ValueError. -func NewValueError(tag []byte) ValueError { - var e ValueError - copy(e.v[:], tag) - return e -} - -func (e ValueError) tag() []byte { - n := bytes.IndexByte(e.v[:], 0) - if n == -1 { - n = 8 - } - return e.v[:n] -} - -// Error implements the error interface. -func (e ValueError) Error() string { - return fmt.Sprintf("language: subtag %q is well-formed but unknown", e.tag()) -} - -// Subtag returns the subtag for which the error occurred. -func (e ValueError) Subtag() string { - return string(e.tag()) -} - -// scanner is used to scan BCP 47 tokens, which are separated by _ or -. -type scanner struct { - b []byte - bytes [max99thPercentileSize]byte - token []byte - start int // start position of the current token - end int // end position of the current token - next int // next point for scan - err error - done bool -} - -func makeScannerString(s string) scanner { - scan := scanner{} - if len(s) <= len(scan.bytes) { - scan.b = scan.bytes[:copy(scan.bytes[:], s)] - } else { - scan.b = []byte(s) - } - scan.init() - return scan -} - -// makeScanner returns a scanner using b as the input buffer. -// b is not copied and may be modified by the scanner routines. -func makeScanner(b []byte) scanner { - scan := scanner{b: b} - scan.init() - return scan -} - -func (s *scanner) init() { - for i, c := range s.b { - if c == '_' { - s.b[i] = '-' - } - } - s.scan() -} - -// restToLower converts the string between start and end to lower case. -func (s *scanner) toLower(start, end int) { - for i := start; i < end; i++ { - c := s.b[i] - if 'A' <= c && c <= 'Z' { - s.b[i] += 'a' - 'A' - } - } -} - -func (s *scanner) setError(e error) { - if s.err == nil || (e == ErrSyntax && s.err != ErrSyntax) { - s.err = e - } -} - -// resizeRange shrinks or grows the array at position oldStart such that -// a new string of size newSize can fit between oldStart and oldEnd. -// Sets the scan point to after the resized range. -func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { - s.start = oldStart - if end := oldStart + newSize; end != oldEnd { - diff := end - oldEnd - var b []byte - if n := len(s.b) + diff; n > cap(s.b) { - b = make([]byte, n) - copy(b, s.b[:oldStart]) - } else { - b = s.b[:n] - } - copy(b[end:], s.b[oldEnd:]) - s.b = b - s.next = end + (s.next - s.end) - s.end = end - } -} - -// replace replaces the current token with repl. -func (s *scanner) replace(repl string) { - s.resizeRange(s.start, s.end, len(repl)) - copy(s.b[s.start:], repl) -} - -// gobble removes the current token from the input. -// Caller must call scan after calling gobble. -func (s *scanner) gobble(e error) { - s.setError(e) - if s.start == 0 { - s.b = s.b[:+copy(s.b, s.b[s.next:])] - s.end = 0 - } else { - s.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])] - s.end = s.start - 1 - } - s.next = s.start -} - -// deleteRange removes the given range from s.b before the current token. -func (s *scanner) deleteRange(start, end int) { - s.b = s.b[:start+copy(s.b[start:], s.b[end:])] - diff := end - start - s.next -= diff - s.start -= diff - s.end -= diff -} - -// scan parses the next token of a BCP 47 string. Tokens that are larger -// than 8 characters or include non-alphanumeric characters result in an error -// and are gobbled and removed from the output. -// It returns the end position of the last token consumed. -func (s *scanner) scan() (end int) { - end = s.end - s.token = nil - for s.start = s.next; s.next < len(s.b); { - i := bytes.IndexByte(s.b[s.next:], '-') - if i == -1 { - s.end = len(s.b) - s.next = len(s.b) - i = s.end - s.start - } else { - s.end = s.next + i - s.next = s.end + 1 - } - token := s.b[s.start:s.end] - if i < 1 || i > 8 || !isAlphaNum(token) { - s.gobble(ErrSyntax) - continue - } - s.token = token - return end - } - if n := len(s.b); n > 0 && s.b[n-1] == '-' { - s.setError(ErrSyntax) - s.b = s.b[:len(s.b)-1] - } - s.done = true - return end -} - -// acceptMinSize parses multiple tokens of the given size or greater. -// It returns the end position of the last token consumed. -func (s *scanner) acceptMinSize(min int) (end int) { - end = s.end - s.scan() - for ; len(s.token) >= min; s.scan() { - end = s.end - } - return end -} - -// Parse parses the given BCP 47 string and returns a valid Tag. If parsing -// failed it returns an error and any part of the tag that could be parsed. -// If parsing succeeded but an unknown value was found, it returns -// ValueError. The Tag returned in this case is just stripped of the unknown -// value. All other values are preserved. It accepts tags in the BCP 47 format -// and extensions to this standard defined in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -func Parse(s string) (t Tag, err error) { - // TODO: consider supporting old-style locale key-value pairs. - if s == "" { - return Und, ErrSyntax - } - defer func() { - if recover() != nil { - t = Und - err = ErrSyntax - return - } - }() - if len(s) <= maxAltTaglen { - b := [maxAltTaglen]byte{} - for i, c := range s { - // Generating invalid UTF-8 is okay as it won't match. - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } else if c == '_' { - c = '-' - } - b[i] = byte(c) - } - if t, ok := grandfathered(b); ok { - return t, nil - } - } - scan := makeScannerString(s) - return parse(&scan, s) -} - -func parse(scan *scanner, s string) (t Tag, err error) { - t = Und - var end int - if n := len(scan.token); n <= 1 { - scan.toLower(0, len(scan.b)) - if n == 0 || scan.token[0] != 'x' { - return t, ErrSyntax - } - end = parseExtensions(scan) - } else if n >= 4 { - return Und, ErrSyntax - } else { // the usual case - t, end = parseTag(scan, true) - if n := len(scan.token); n == 1 { - t.pExt = uint16(end) - end = parseExtensions(scan) - } else if end < len(scan.b) { - scan.setError(ErrSyntax) - scan.b = scan.b[:end] - } - } - if int(t.pVariant) < len(scan.b) { - if end < len(s) { - s = s[:end] - } - if len(s) > 0 && tag.Compare(s, scan.b) == 0 { - t.str = s - } else { - t.str = string(scan.b) - } - } else { - t.pVariant, t.pExt = 0, 0 - } - return t, scan.err -} - -// parseTag parses language, script, region and variants. -// It returns a Tag and the end position in the input that was parsed. -// If doNorm is true, then <lang>-<extlang> will be normalized to <extlang>. -func parseTag(scan *scanner, doNorm bool) (t Tag, end int) { - var e error - // TODO: set an error if an unknown lang, script or region is encountered. - t.LangID, e = getLangID(scan.token) - scan.setError(e) - scan.replace(t.LangID.String()) - langStart := scan.start - end = scan.scan() - for len(scan.token) == 3 && isAlpha(scan.token[0]) { - // From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent - // to a tag of the form <extlang>. - if doNorm { - lang, e := getLangID(scan.token) - if lang != 0 { - t.LangID = lang - langStr := lang.String() - copy(scan.b[langStart:], langStr) - scan.b[langStart+len(langStr)] = '-' - scan.start = langStart + len(langStr) + 1 - } - scan.gobble(e) - } - end = scan.scan() - } - if len(scan.token) == 4 && isAlpha(scan.token[0]) { - t.ScriptID, e = getScriptID(script, scan.token) - if t.ScriptID == 0 { - scan.gobble(e) - } - end = scan.scan() - } - if n := len(scan.token); n >= 2 && n <= 3 { - t.RegionID, e = getRegionID(scan.token) - if t.RegionID == 0 { - scan.gobble(e) - } else { - scan.replace(t.RegionID.String()) - } - end = scan.scan() - } - scan.toLower(scan.start, len(scan.b)) - t.pVariant = byte(end) - end = parseVariants(scan, end, t) - t.pExt = uint16(end) - return t, end -} - -var separator = []byte{'-'} - -// parseVariants scans tokens as long as each token is a valid variant string. -// Duplicate variants are removed. -func parseVariants(scan *scanner, end int, t Tag) int { - start := scan.start - varIDBuf := [4]uint8{} - variantBuf := [4][]byte{} - varID := varIDBuf[:0] - variant := variantBuf[:0] - last := -1 - needSort := false - for ; len(scan.token) >= 4; scan.scan() { - // TODO: measure the impact of needing this conversion and redesign - // the data structure if there is an issue. - v, ok := variantIndex[string(scan.token)] - if !ok { - // unknown variant - // TODO: allow user-defined variants? - scan.gobble(NewValueError(scan.token)) - continue - } - varID = append(varID, v) - variant = append(variant, scan.token) - if !needSort { - if last < int(v) { - last = int(v) - } else { - needSort = true - // There is no legal combinations of more than 7 variants - // (and this is by no means a useful sequence). - const maxVariants = 8 - if len(varID) > maxVariants { - break - } - } - } - end = scan.end - } - if needSort { - sort.Sort(variantsSort{varID, variant}) - k, l := 0, -1 - for i, v := range varID { - w := int(v) - if l == w { - // Remove duplicates. - continue - } - varID[k] = varID[i] - variant[k] = variant[i] - k++ - l = w - } - if str := bytes.Join(variant[:k], separator); len(str) == 0 { - end = start - 1 - } else { - scan.resizeRange(start, end, len(str)) - copy(scan.b[scan.start:], str) - end = scan.end - } - } - return end -} - -type variantsSort struct { - i []uint8 - v [][]byte -} - -func (s variantsSort) Len() int { - return len(s.i) -} - -func (s variantsSort) Swap(i, j int) { - s.i[i], s.i[j] = s.i[j], s.i[i] - s.v[i], s.v[j] = s.v[j], s.v[i] -} - -func (s variantsSort) Less(i, j int) bool { - return s.i[i] < s.i[j] -} - -type bytesSort struct { - b [][]byte - n int // first n bytes to compare -} - -func (b bytesSort) Len() int { - return len(b.b) -} - -func (b bytesSort) Swap(i, j int) { - b.b[i], b.b[j] = b.b[j], b.b[i] -} - -func (b bytesSort) Less(i, j int) bool { - for k := 0; k < b.n; k++ { - if b.b[i][k] == b.b[j][k] { - continue - } - return b.b[i][k] < b.b[j][k] - } - return false -} - -// parseExtensions parses and normalizes the extensions in the buffer. -// It returns the last position of scan.b that is part of any extension. -// It also trims scan.b to remove excess parts accordingly. -func parseExtensions(scan *scanner) int { - start := scan.start - exts := [][]byte{} - private := []byte{} - end := scan.end - for len(scan.token) == 1 { - extStart := scan.start - ext := scan.token[0] - end = parseExtension(scan) - extension := scan.b[extStart:end] - if len(extension) < 3 || (ext != 'x' && len(extension) < 4) { - scan.setError(ErrSyntax) - end = extStart - continue - } else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) { - scan.b = scan.b[:end] - return end - } else if ext == 'x' { - private = extension - break - } - exts = append(exts, extension) - } - sort.Sort(bytesSort{exts, 1}) - if len(private) > 0 { - exts = append(exts, private) - } - scan.b = scan.b[:start] - if len(exts) > 0 { - scan.b = append(scan.b, bytes.Join(exts, separator)...) - } else if start > 0 { - // Strip trailing '-'. - scan.b = scan.b[:start-1] - } - return end -} - -// parseExtension parses a single extension and returns the position of -// the extension end. -func parseExtension(scan *scanner) int { - start, end := scan.start, scan.end - switch scan.token[0] { - case 'u': // https://www.ietf.org/rfc/rfc6067.txt - attrStart := end - scan.scan() - for last := []byte{}; len(scan.token) > 2; scan.scan() { - if bytes.Compare(scan.token, last) != -1 { - // Attributes are unsorted. Start over from scratch. - p := attrStart + 1 - scan.next = p - attrs := [][]byte{} - for scan.scan(); len(scan.token) > 2; scan.scan() { - attrs = append(attrs, scan.token) - end = scan.end - } - sort.Sort(bytesSort{attrs, 3}) - copy(scan.b[p:], bytes.Join(attrs, separator)) - break - } - last = scan.token - end = scan.end - } - // Scan key-type sequences. A key is of length 2 and may be followed - // by 0 or more "type" subtags from 3 to the maximum of 8 letters. - var last, key []byte - for attrEnd := end; len(scan.token) == 2; last = key { - key = scan.token - end = scan.end - for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { - end = scan.end - } - // TODO: check key value validity - if bytes.Compare(key, last) != 1 || scan.err != nil { - // We have an invalid key or the keys are not sorted. - // Start scanning keys from scratch and reorder. - p := attrEnd + 1 - scan.next = p - keys := [][]byte{} - for scan.scan(); len(scan.token) == 2; { - keyStart := scan.start - end = scan.end - for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { - end = scan.end - } - keys = append(keys, scan.b[keyStart:end]) - } - sort.Stable(bytesSort{keys, 2}) - if n := len(keys); n > 0 { - k := 0 - for i := 1; i < n; i++ { - if !bytes.Equal(keys[k][:2], keys[i][:2]) { - k++ - keys[k] = keys[i] - } else if !bytes.Equal(keys[k], keys[i]) { - scan.setError(ErrDuplicateKey) - } - } - keys = keys[:k+1] - } - reordered := bytes.Join(keys, separator) - if e := p + len(reordered); e < end { - scan.deleteRange(e, end) - end = e - } - copy(scan.b[p:], reordered) - break - } - } - case 't': // https://www.ietf.org/rfc/rfc6497.txt - scan.scan() - if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) { - _, end = parseTag(scan, false) - scan.toLower(start, end) - } - for len(scan.token) == 2 && !isAlpha(scan.token[1]) { - end = scan.acceptMinSize(3) - } - case 'x': - end = scan.acceptMinSize(1) - default: - end = scan.acceptMinSize(2) - } - return end -} - -// getExtension returns the name, body and end position of the extension. -func getExtension(s string, p int) (end int, ext string) { - if s[p] == '-' { - p++ - } - if s[p] == 'x' { - return len(s), s[p:] - } - end = nextExtension(s, p) - return end, s[p:end] -} - -// nextExtension finds the next extension within the string, searching -// for the -<char>- pattern from position p. -// In the fast majority of cases, language tags will have at most -// one extension and extensions tend to be small. -func nextExtension(s string, p int) int { - for n := len(s) - 3; p < n; { - if s[p] == '-' { - if s[p+2] == '-' { - return p - } - p += 3 - } else { - p++ - } - } - return len(s) -} diff --git a/vendor/golang.org/x/text/internal/language/tables.go b/vendor/golang.org/x/text/internal/language/tables.go deleted file mode 100644 index 14167e7..0000000 --- a/vendor/golang.org/x/text/internal/language/tables.go +++ /dev/null @@ -1,3494 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package language - -import "golang.org/x/text/internal/tag" - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -const NumLanguages = 8798 - -const NumScripts = 261 - -const NumRegions = 358 - -type FromTo struct { - From uint16 - To uint16 -} - -const nonCanonicalUnd = 1201 -const ( - _af = 22 - _am = 39 - _ar = 58 - _az = 88 - _bg = 126 - _bn = 165 - _ca = 215 - _cs = 250 - _da = 257 - _de = 269 - _el = 310 - _en = 313 - _es = 318 - _et = 320 - _fa = 328 - _fi = 337 - _fil = 339 - _fr = 350 - _gu = 420 - _he = 444 - _hi = 446 - _hr = 465 - _hu = 469 - _hy = 471 - _id = 481 - _is = 504 - _it = 505 - _ja = 512 - _ka = 528 - _kk = 578 - _km = 586 - _kn = 593 - _ko = 596 - _ky = 650 - _lo = 696 - _lt = 704 - _lv = 711 - _mk = 767 - _ml = 772 - _mn = 779 - _mo = 784 - _mr = 795 - _ms = 799 - _mul = 806 - _my = 817 - _nb = 839 - _ne = 849 - _nl = 871 - _no = 879 - _pa = 925 - _pl = 947 - _pt = 960 - _ro = 988 - _ru = 994 - _sh = 1031 - _si = 1036 - _sk = 1042 - _sl = 1046 - _sq = 1073 - _sr = 1074 - _sv = 1092 - _sw = 1093 - _ta = 1104 - _te = 1121 - _th = 1131 - _tl = 1146 - _tn = 1152 - _tr = 1162 - _uk = 1198 - _ur = 1204 - _uz = 1212 - _vi = 1219 - _zh = 1321 - _zu = 1327 - _jbo = 515 - _ami = 1650 - _bnn = 2357 - _hak = 438 - _tlh = 14467 - _lb = 661 - _nv = 899 - _pwn = 12055 - _tao = 14188 - _tay = 14198 - _tsu = 14662 - _nn = 874 - _sfb = 13629 - _vgt = 15701 - _sgg = 13660 - _cmn = 3007 - _nan = 835 - _hsn = 467 -) - -const langPrivateStart = 0x2f72 - -const langPrivateEnd = 0x3179 - -// lang holds an alphabetically sorted list of ISO-639 language identifiers. -// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag. -// For 2-byte language identifiers, the two successive bytes have the following meaning: -// - if the first letter of the 2- and 3-letter ISO codes are the same: -// the second and third letter of the 3-letter ISO code. -// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3. -// -// For 3-byte language identifiers the 4th byte is 0. -const lang tag.Index = "" + // Size: 5324 bytes - "---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" + - "cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" + - "\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" + - "jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" + - "p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" + - "ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" + - "\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" + - "tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" + - "\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" + - "bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" + - "m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" + - "bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" + - "\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" + - "\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" + - "\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" + - "\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" + - "bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" + - "\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" + - "uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" + - "\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" + - "\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" + - "\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" + - "kl\x00cko\x00cky\x00cla\x00cme\x00cmg\x00cooscop\x00cps\x00crrecrh\x00cr" + - "j\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymda" + - "andad\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00" + - "ddn\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia" + - "\x00dje\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm" + - "\x00dtp\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00d" + - "yo\x00dyu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00el" + - "llema\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr" + - "\x00ett\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai" + - "\x00fan\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00" + - "foaofod\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00f" + - "ub\x00fud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyr" + - "ygalegaa\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gba" + - "\x00gbf\x00gbm\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00g" + - "ej\x00gel\x00gez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju" + - "\x00gkn\x00gkp\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof" + - "\x00goi\x00gom\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw" + - "\x00gsw\x00guujgub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf" + - "\x00gvr\x00gvs\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00h" + - "aw\x00haz\x00hbb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hi" + - "l\x00hla\x00hlu\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homo" + - "hoc\x00hoj\x00hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian" + - "\x00iar\x00iba\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00i" + - "eleife\x00igboigb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00i" + - "lo\x00imo\x00inndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00i" + - "ws\x00izh\x00izi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo" + - "\x00ji\x00\x06jib\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab" + - "\x00kac\x00kad\x00kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq" + - "\x00kbx\x00kby\x00kcg\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt" + - "\x00kea\x00ken\x00kez\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00k" + - "ha\x00khb\x00khn\x00khq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu" + - "\x00kiw\x00kjuakjd\x00kjg\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00" + - "klq\x00klt\x00klx\x00kmhmkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knank" + - "nf\x00knp\x00koorkoi\x00kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo" + - "\x00kpr\x00kpx\x00kqb\x00kqf\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00k" + - "rl\x00krs\x00kru\x00ksasksb\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb" + - "\x00ktm\x00kto\x00kuurkub\x00kud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00k" + - "us\x00kvomkvg\x00kvr\x00kvx\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm" + - "\x00kxp\x00kxw\x00kxz\x00kyirkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag" + - "\x00lah\x00laj\x00las\x00lbtzlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00l" + - "ed\x00lee\x00lem\x00lep\x00leq\x00leu\x00lez\x00lguglgg\x00liimlia\x00li" + - "d\x00lif\x00lig\x00lih\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln" + - "\x00lmn\x00lmo\x00lmp\x00lninlns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor" + - "\x00los\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvav" + - "lwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas\x00ma" + - "w\x00maz\x00mbh\x00mbo\x00mbq\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr" + - "\x00mcu\x00mda\x00mde\x00mdf\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee" + - "\x00mek\x00men\x00mer\x00met\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq" + - "\x00mglgmgh\x00mgl\x00mgo\x00mgp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00" + - "min\x00mis\x00miw\x00mkkdmki\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00m" + - "ls\x00mmo\x00mmu\x00mmx\x00mnonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00mo" + - "e\x00moh\x00mos\x00mox\x00mpp\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00" + - "mrj\x00mro\x00mssamtltmtc\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00m" + - "us\x00mva\x00mvn\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk" + - "\x00mym\x00myv\x00myw\x00myx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw" + - "\x00mzz\x00naaunac\x00naf\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00n" + - "bobnca\x00nce\x00ncf\x00nch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb" + - "\x00new\x00nex\x00nfr\x00ngdonga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00n" + - "if\x00nii\x00nij\x00nin\x00niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nll" + - "dnmg\x00nmz\x00nnnonnf\x00nnh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00" + - "nop\x00nou\x00nqo\x00nrblnrb\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr" + - "\x00nui\x00nup\x00nus\x00nuv\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym" + - "\x00nyn\x00nzi\x00occiogc\x00ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00" + - "opm\x00orrioro\x00oru\x00osssosa\x00ota\x00otk\x00ozm\x00paanpag\x00pal" + - "\x00pam\x00pap\x00pau\x00pbi\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo" + - "\x00pex\x00pfl\x00phl\x00phn\x00pilipil\x00pip\x00pka\x00pko\x00plolpla" + - "\x00pms\x00png\x00pnn\x00pnt\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psusp" + - "ss\x00ptorptp\x00puu\x00pwa\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rc" + - "f\x00rej\x00rel\x00res\x00rgn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmoh" + - "rmf\x00rmo\x00rmt\x00rmu\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00r" + - "ro\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf" + - "\x00sah\x00saq\x00sas\x00sat\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrds" + - "ck\x00scl\x00scn\x00sco\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00se" + - "i\x00ses\x00sgagsga\x00sgs\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn" + - "\x00shu\x00siinsid\x00sig\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks" + - "\x00sllvsld\x00sli\x00sll\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp" + - "\x00smq\x00sms\x00snnasnc\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq" + - "\x00sou\x00soy\x00spd\x00spl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx" + - "\x00ssswssd\x00ssg\x00ssy\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00" + - "sur\x00sus\x00svweswwaswb\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00s" + - "yl\x00syr\x00szl\x00taamtaj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf" + - "\x00tbg\x00tbo\x00tbw\x00tbz\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelt" + - "ed\x00tem\x00teo\x00tet\x00tfi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00th" + - "q\x00thr\x00tiirtif\x00tig\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr" + - "\x00tkt\x00tlgltlf\x00tlx\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00" + - "tog\x00toq\x00tpi\x00tpm\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssot" + - "sd\x00tsf\x00tsg\x00tsj\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts" + - "\x00ttt\x00tuh\x00tul\x00tum\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00t" + - "wq\x00txg\x00tyahtya\x00tyv\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli" + - "\x00umb\x00und\x00unr\x00unx\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00u" + - "vh\x00uvl\x00uzzbvag\x00vai\x00van\x00veenvec\x00vep\x00viievic\x00viv" + - "\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00vut\x00walnwae\x00waj" + - "\x00wal\x00wan\x00war\x00wbp\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg" + - "\x00wib\x00wiu\x00wiv\x00wja\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu" + - "\x00woolwob\x00wos\x00wrs\x00wsk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00x" + - "bi\x00xcr\x00xes\x00xhhoxla\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna" + - "\x00xnr\x00xog\x00xon\x00xpr\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe" + - "\x00yam\x00yao\x00yap\x00yas\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb" + - "\x00yby\x00yer\x00ygr\x00ygw\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00y" + - "ooryon\x00yrb\x00yre\x00yrl\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw" + - "\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozhx\x00zia\x00zlm\x00zmi" + - "\x00zne\x00zuulzxx\x00zza\x00\xff\xff\xff\xff" - -const langNoIndexOffset = 1330 - -// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index -// in lookup tables. The language ids for these language codes are derived directly -// from the letters and are not consecutive. -// Size: 2197 bytes, 2197 elements -var langNoIndex = [2197]uint8{ - // Entry 0 - 3F - 0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2, - 0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57, - 0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70, - 0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x72, - 0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77, - 0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2, - 0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xbc, 0x0a, 0x6a, - 0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff, - // Entry 40 - 7F - 0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0, - 0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed, - 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35, - 0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff, - 0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5, - 0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3, - 0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce, - 0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf, - // Entry 80 - BF - 0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x7f, 0xff, 0xff, - 0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7, - 0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba, - 0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff, - 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff, - 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5, - 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, - 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, - // Entry C0 - FF - 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96, - 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56, - 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7f, 0xf3, 0xef, - 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, - 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x7b, 0x35, - 0x3e, 0xc7, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00, - 0xb0, 0x05, 0x80, 0x00, 0x20, 0x00, 0x00, 0x03, - 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d, - // Entry 100 - 13F - 0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64, - 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00, - 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3, - 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x41, 0x0c, - 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f, - 0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56, - 0x90, 0x6d, 0x01, 0x2e, 0x96, 0x69, 0x20, 0xfb, - // Entry 140 - 17F - 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16, - 0x03, 0x00, 0x00, 0xb0, 0x14, 0x23, 0x50, 0x06, - 0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09, - 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x05, - 0x08, 0x00, 0x00, 0x05, 0x00, 0x80, 0x28, 0x04, - 0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35, - 0x24, 0x52, 0xf4, 0xd5, 0xbf, 0x62, 0xc9, 0x03, - // Entry 180 - 1BF - 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98, - 0x21, 0x18, 0x81, 0x08, 0x00, 0x01, 0x40, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea, - 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - // Entry 1C0 - 1FF - 0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00, - 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55, - 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40, - 0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf, - // Entry 200 - 23F - 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, - 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, - 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe1, 0xdf, - 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x81, 0xe3, - 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d, - 0x79, 0xed, 0x1c, 0x7f, 0x04, 0x08, 0x00, 0x01, - 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f, - 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54, - // Entry 240 - 27F - 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00, - 0x20, 0x7b, 0x78, 0x02, 0x07, 0x84, 0x00, 0xf0, - 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00, - 0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04, - 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00, - 0x91, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, - 0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66, - // Entry 280 - 2BF - 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05, - 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51, - 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, - 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, - 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, - 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, - // Entry 2C0 - 2FF - 0x02, 0x50, 0x80, 0x11, 0x00, 0x99, 0x6c, 0xe2, - 0x50, 0x27, 0x1d, 0x11, 0x29, 0x0e, 0x59, 0xe9, - 0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00, - 0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d, - 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00, - 0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01, - 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x40, 0x08, - 0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x8d, 0x12, 0x00, - // Entry 300 - 33F - 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0, - 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80, - 0x00, 0x01, 0xd0, 0x16, 0x40, 0x00, 0x10, 0xb0, - 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00, - 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80, - 0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00, - // Entry 340 - 37F - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, - 0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3, - 0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb, - 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6, - 0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff, - 0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff, - 0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f, - 0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f, - // Entry 380 - 3BF - 0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f, - 0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d, - 0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf, - 0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff, - 0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb, - 0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe, - 0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x7d, 0x1f, - 0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44, - // Entry 3C0 - 3FF - 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57, - 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, - 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x20, - 0x40, 0x54, 0x9f, 0x8a, 0xdf, 0xf9, 0x6e, 0x11, - 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x03, - 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x40, 0x00, 0x10, - 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, - 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, - // Entry 400 - 43F - 0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f, - 0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7, - 0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f, - 0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b, - 0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7, - 0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe, - 0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde, - 0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf, - // Entry 440 - 47F - 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d, - 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd, - 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf, - 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, - 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, - 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd, - 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, - 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4, - // Entry 480 - 4BF - 0x93, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb, - 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, - 0x14, 0x00, 0x55, 0x51, 0xc2, 0x65, 0xf5, 0x41, - 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x85, 0xc5, 0x05, - 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x05, - 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00, - 0x06, 0x11, 0x20, 0x00, 0x18, 0x01, 0x92, 0xf1, - // Entry 4C0 - 4FF - 0xfd, 0x47, 0x69, 0x06, 0x95, 0x06, 0x57, 0xed, - 0xfb, 0x4d, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40, - 0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83, - 0xb8, 0x4f, 0x10, 0x8e, 0x89, 0x46, 0xde, 0xf7, - 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00, - 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d, - 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, - // Entry 500 - 53F - 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49, - 0x2d, 0x14, 0x27, 0x5f, 0xed, 0xf1, 0x3f, 0xe7, - 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8, - 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7, - 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10, - 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9, - 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c, - 0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40, - // Entry 540 - 57F - 0x00, 0x00, 0x01, 0x43, 0x19, 0x24, 0x08, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - // Entry 580 - 5BF - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d, - 0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 0xbf, - 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00, - 0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x20, 0x81, - 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40, - // Entry 5C0 - 5FF - 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0xbe, 0x02, - 0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02, - 0x3d, 0x40, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d, - 0x31, 0x00, 0x00, 0x00, 0x01, 0x18, 0x02, 0x20, - 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, - 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, - 0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe, - // Entry 600 - 63F - 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, - 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, - 0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7, - 0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd, - 0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x9f, - 0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe, - 0xbe, 0x5f, 0x46, 0x5b, 0xe9, 0x5f, 0x50, 0x18, - 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f, - // Entry 640 - 67F - 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c, - 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, - 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98, - 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, - 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4, - 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7, - 0x5f, 0xff, 0xff, 0x9e, 0xdf, 0xf6, 0xd7, 0xb9, - 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3, - // Entry 680 - 6BF - 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37, - 0xce, 0x7f, 0x44, 0x1d, 0x73, 0x7f, 0xf8, 0xda, - 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x79, 0xa0, - 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08, - 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x09, 0x06, - 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f, - // Entry 6C0 - 6FF - 0x54, 0x4d, 0xf1, 0x16, 0x44, 0xd5, 0x42, 0x08, - 0x40, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, - 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41, - 0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab, - 0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00, - // Entry 700 - 73F - 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x80, 0x86, 0xc2, 0x00, 0x00, 0x01, 0x00, 0x01, - 0xff, 0x18, 0x02, 0x00, 0x02, 0xf0, 0xfd, 0x79, - 0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 740 - 77F - 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e, - 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x46, - 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, - 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, - 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75, - 0x97, 0x7c, 0xdf, 0x31, 0xcc, 0x68, 0xd1, 0x03, - 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60, - // Entry 780 - 7BF - 0x83, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01, - 0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00, - 0x10, 0x03, 0x31, 0x02, 0x01, 0x00, 0x00, 0xf0, - 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78, - 0x78, 0x15, 0x50, 0x05, 0xa4, 0x84, 0xa9, 0x41, - 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x40, - 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, - 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed, - // Entry 7C0 - 7FF - 0xdd, 0xbf, 0xf2, 0x5d, 0xc7, 0x0c, 0xd5, 0x42, - 0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56, - 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff, - 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d, - 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80, - 0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60, - 0xfe, 0x01, 0x02, 0x88, 0x2a, 0x40, 0x16, 0x01, - 0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10, - // Entry 800 - 83F - 0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf, - 0xbf, 0x03, 0x00, 0x00, 0x10, 0xdc, 0xa3, 0xd1, - 0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3, - 0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80, - 0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84, - 0x2f, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93, - 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10, - 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00, - // Entry 840 - 87F - 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x16, 0x89, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28, - 0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00, - 0x00, 0xcb, 0xe4, 0x3a, 0x46, 0x88, 0x54, 0xf1, - 0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50, - 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40, - 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1, - // Entry 880 - 8BF - 0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24, - 0x0a, 0x00, 0x80, 0x00, 0x00, -} - -// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives -// to 2-letter language codes that cannot be derived using the method described above. -// Each 3-letter code is followed by its 1-byte langID. -const altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff" - -// altLangIndex is used to convert indexes in altLangISO3 to langIDs. -// Size: 12 bytes, 6 elements -var altLangIndex = [6]uint16{ - 0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208, -} - -// AliasMap maps langIDs to their suggested replacements. -// Size: 772 bytes, 193 elements -var AliasMap = [193]FromTo{ - 0: {From: 0x82, To: 0x88}, - 1: {From: 0x187, To: 0x1ae}, - 2: {From: 0x1f3, To: 0x1e1}, - 3: {From: 0x1fb, To: 0x1bc}, - 4: {From: 0x208, To: 0x512}, - 5: {From: 0x20f, To: 0x20e}, - 6: {From: 0x310, To: 0x3dc}, - 7: {From: 0x347, To: 0x36f}, - 8: {From: 0x407, To: 0x432}, - 9: {From: 0x47a, To: 0x153}, - 10: {From: 0x490, To: 0x451}, - 11: {From: 0x4a2, To: 0x21}, - 12: {From: 0x53e, To: 0x544}, - 13: {From: 0x58f, To: 0x12d}, - 14: {From: 0x62b, To: 0x34}, - 15: {From: 0x62f, To: 0x14}, - 16: {From: 0x630, To: 0x1eb1}, - 17: {From: 0x651, To: 0x431}, - 18: {From: 0x662, To: 0x431}, - 19: {From: 0x6ed, To: 0x3a}, - 20: {From: 0x6f8, To: 0x1d7}, - 21: {From: 0x709, To: 0x3625}, - 22: {From: 0x73e, To: 0x21a1}, - 23: {From: 0x7b3, To: 0x56}, - 24: {From: 0x7b9, To: 0x299b}, - 25: {From: 0x7c5, To: 0x58}, - 26: {From: 0x7e6, To: 0x145}, - 27: {From: 0x80c, To: 0x5a}, - 28: {From: 0x815, To: 0x8d}, - 29: {From: 0x87e, To: 0x810}, - 30: {From: 0x8a8, To: 0x8b7}, - 31: {From: 0x8c3, To: 0xee3}, - 32: {From: 0x8fa, To: 0x1dc}, - 33: {From: 0x9ef, To: 0x331}, - 34: {From: 0xa36, To: 0x2c5}, - 35: {From: 0xa3d, To: 0xbf}, - 36: {From: 0xabe, To: 0x3322}, - 37: {From: 0xb38, To: 0x529}, - 38: {From: 0xb75, To: 0x265a}, - 39: {From: 0xb7e, To: 0xbc3}, - 40: {From: 0xb9b, To: 0x44e}, - 41: {From: 0xbbc, To: 0x4229}, - 42: {From: 0xbbf, To: 0x529}, - 43: {From: 0xbfe, To: 0x2da7}, - 44: {From: 0xc2e, To: 0x3181}, - 45: {From: 0xcb9, To: 0xf3}, - 46: {From: 0xd08, To: 0xfa}, - 47: {From: 0xdc8, To: 0x11a}, - 48: {From: 0xdd7, To: 0x32d}, - 49: {From: 0xdf8, To: 0xdfb}, - 50: {From: 0xdfe, To: 0x531}, - 51: {From: 0xe01, To: 0xdf3}, - 52: {From: 0xedf, To: 0x205a}, - 53: {From: 0xee9, To: 0x222e}, - 54: {From: 0xeee, To: 0x2e9a}, - 55: {From: 0xf39, To: 0x367}, - 56: {From: 0x10d0, To: 0x140}, - 57: {From: 0x1104, To: 0x2d0}, - 58: {From: 0x11a0, To: 0x1ec}, - 59: {From: 0x1279, To: 0x21}, - 60: {From: 0x1424, To: 0x15e}, - 61: {From: 0x1470, To: 0x14e}, - 62: {From: 0x151f, To: 0xd9b}, - 63: {From: 0x1523, To: 0x390}, - 64: {From: 0x1532, To: 0x19f}, - 65: {From: 0x1580, To: 0x210}, - 66: {From: 0x1583, To: 0x10d}, - 67: {From: 0x15a3, To: 0x3caf}, - 68: {From: 0x1630, To: 0x222e}, - 69: {From: 0x166a, To: 0x19b}, - 70: {From: 0x16c8, To: 0x136}, - 71: {From: 0x1700, To: 0x29f8}, - 72: {From: 0x1718, To: 0x194}, - 73: {From: 0x1727, To: 0xf3f}, - 74: {From: 0x177a, To: 0x178}, - 75: {From: 0x1809, To: 0x17b6}, - 76: {From: 0x1816, To: 0x18f3}, - 77: {From: 0x188a, To: 0x436}, - 78: {From: 0x1979, To: 0x1d01}, - 79: {From: 0x1a74, To: 0x2bb0}, - 80: {From: 0x1a8a, To: 0x1f8}, - 81: {From: 0x1b5a, To: 0x1fa}, - 82: {From: 0x1b86, To: 0x1515}, - 83: {From: 0x1d64, To: 0x2c9b}, - 84: {From: 0x2038, To: 0x37b1}, - 85: {From: 0x203d, To: 0x20dd}, - 86: {From: 0x2042, To: 0x2e00}, - 87: {From: 0x205a, To: 0x30b}, - 88: {From: 0x20e3, To: 0x274}, - 89: {From: 0x20ee, To: 0x263}, - 90: {From: 0x20f2, To: 0x22d}, - 91: {From: 0x20f9, To: 0x256}, - 92: {From: 0x210f, To: 0x21eb}, - 93: {From: 0x2135, To: 0x27d}, - 94: {From: 0x2160, To: 0x913}, - 95: {From: 0x2199, To: 0x121}, - 96: {From: 0x21ce, To: 0x1561}, - 97: {From: 0x21e6, To: 0x504}, - 98: {From: 0x21f4, To: 0x49f}, - 99: {From: 0x21fb, To: 0x269}, - 100: {From: 0x222d, To: 0x121}, - 101: {From: 0x2237, To: 0x121}, - 102: {From: 0x2248, To: 0x217d}, - 103: {From: 0x2262, To: 0x92a}, - 104: {From: 0x2316, To: 0x3226}, - 105: {From: 0x236a, To: 0x2835}, - 106: {From: 0x2382, To: 0x3365}, - 107: {From: 0x2472, To: 0x2c7}, - 108: {From: 0x24e4, To: 0x2ff}, - 109: {From: 0x24f0, To: 0x2fa}, - 110: {From: 0x24fa, To: 0x31f}, - 111: {From: 0x2550, To: 0xb5b}, - 112: {From: 0x25a9, To: 0xe2}, - 113: {From: 0x263e, To: 0x2d0}, - 114: {From: 0x26c9, To: 0x26b4}, - 115: {From: 0x26f9, To: 0x3c8}, - 116: {From: 0x2727, To: 0x3caf}, - 117: {From: 0x2755, To: 0x6a4}, - 118: {From: 0x2765, To: 0x26b4}, - 119: {From: 0x2789, To: 0x4358}, - 120: {From: 0x27c9, To: 0x2001}, - 121: {From: 0x28ea, To: 0x27b1}, - 122: {From: 0x28ef, To: 0x2837}, - 123: {From: 0x28fe, To: 0xaa5}, - 124: {From: 0x2914, To: 0x351}, - 125: {From: 0x2986, To: 0x2da7}, - 126: {From: 0x29f0, To: 0x96b}, - 127: {From: 0x2b1a, To: 0x38d}, - 128: {From: 0x2bfc, To: 0x395}, - 129: {From: 0x2c3f, To: 0x3caf}, - 130: {From: 0x2ce1, To: 0x2201}, - 131: {From: 0x2cfc, To: 0x3be}, - 132: {From: 0x2d13, To: 0x597}, - 133: {From: 0x2d47, To: 0x148}, - 134: {From: 0x2d48, To: 0x148}, - 135: {From: 0x2dff, To: 0x2f1}, - 136: {From: 0x2e08, To: 0x19cc}, - 137: {From: 0x2e10, To: 0xc45}, - 138: {From: 0x2e1a, To: 0x2d95}, - 139: {From: 0x2e21, To: 0x292}, - 140: {From: 0x2e54, To: 0x7d}, - 141: {From: 0x2e65, To: 0x2282}, - 142: {From: 0x2e97, To: 0x1a4}, - 143: {From: 0x2ea0, To: 0x2e9b}, - 144: {From: 0x2eef, To: 0x2ed7}, - 145: {From: 0x3193, To: 0x3c4}, - 146: {From: 0x3366, To: 0x338e}, - 147: {From: 0x342a, To: 0x3dc}, - 148: {From: 0x34ee, To: 0x18d0}, - 149: {From: 0x35c8, To: 0x2c9b}, - 150: {From: 0x35e6, To: 0x412}, - 151: {From: 0x35f5, To: 0x24b}, - 152: {From: 0x360d, To: 0x1dc}, - 153: {From: 0x3658, To: 0x246}, - 154: {From: 0x3676, To: 0x3f4}, - 155: {From: 0x36fd, To: 0x445}, - 156: {From: 0x3747, To: 0x3b42}, - 157: {From: 0x37c0, To: 0x121}, - 158: {From: 0x3816, To: 0x38f2}, - 159: {From: 0x382a, To: 0x2b48}, - 160: {From: 0x382b, To: 0x2c9b}, - 161: {From: 0x382f, To: 0xa9}, - 162: {From: 0x3832, To: 0x3228}, - 163: {From: 0x386c, To: 0x39a6}, - 164: {From: 0x3892, To: 0x3fc0}, - 165: {From: 0x38a0, To: 0x45f}, - 166: {From: 0x38a5, To: 0x39d7}, - 167: {From: 0x38b4, To: 0x1fa4}, - 168: {From: 0x38b5, To: 0x2e9a}, - 169: {From: 0x38fa, To: 0x38f1}, - 170: {From: 0x395c, To: 0x47e}, - 171: {From: 0x3b4e, To: 0xd91}, - 172: {From: 0x3b78, To: 0x137}, - 173: {From: 0x3c99, To: 0x4bc}, - 174: {From: 0x3fbd, To: 0x100}, - 175: {From: 0x4208, To: 0xa91}, - 176: {From: 0x42be, To: 0x573}, - 177: {From: 0x42f9, To: 0x3f60}, - 178: {From: 0x4378, To: 0x25a}, - 179: {From: 0x43b8, To: 0xe6c}, - 180: {From: 0x43cd, To: 0x10f}, - 181: {From: 0x43d4, To: 0x4848}, - 182: {From: 0x44af, To: 0x3322}, - 183: {From: 0x44e3, To: 0x512}, - 184: {From: 0x45ca, To: 0x2409}, - 185: {From: 0x45dd, To: 0x26dc}, - 186: {From: 0x4610, To: 0x48ae}, - 187: {From: 0x46ae, To: 0x46a0}, - 188: {From: 0x473e, To: 0x4745}, - 189: {From: 0x4817, To: 0x3503}, - 190: {From: 0x483b, To: 0x208b}, - 191: {From: 0x4916, To: 0x31f}, - 192: {From: 0x49a7, To: 0x523}, -} - -// Size: 193 bytes, 193 elements -var AliasTypes = [193]AliasType{ - // Entry 0 - 3F - 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0, - 1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 0, - 0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, - 1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1, - // Entry 40 - 7F - 1, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, - 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0, - 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - // Entry 80 - BF - 1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0, - 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, - // Entry C0 - FF - 1, -} - -const ( - _Latn = 91 - _Hani = 57 - _Hans = 59 - _Hant = 60 - _Qaaa = 149 - _Qaai = 157 - _Qabx = 198 - _Zinh = 255 - _Zyyy = 260 - _Zzzz = 261 -) - -// script is an alphabetically sorted list of ISO 15924 codes. The index -// of the script in the string, divided by 4, is the internal scriptID. -const script tag.Index = "" + // Size: 1052 bytes - "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + - "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" + - "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" + - "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" + - "JavaJpanJurcKaliKanaKawiKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatf" + - "LatgLatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedf" + - "MendMercMeroMlymModiMongMoonMrooMteiMultMymrNagmNandNarbNbatNewaNkdbNkgb" + - "NkooNshuOgamOlckOrkhOryaOsgeOsmaOugrPalmPaucPcunPelmPermPhagPhliPhlpPhlv" + - "PhnxPiqdPlrdPrtiPsinQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" + - "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" + - "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" + - "QabxRanjRjngRohgRoroRunrSamrSaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogd" + - "SogoSoraSoyoSundSunuSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTelu" + - "TengTfngTglgThaaThaiTibtTirhTnsaTotoUgarVaiiVispVithWaraWchoWoleXpeoXsux" + - "YeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff\xff" - -// suppressScript is an index from langID to the dominant script for that language, -// if it exists. If a script is given, it should be suppressed from the language tag. -// Size: 1330 bytes, 1330 elements -var suppressScript = [1330]uint8{ - // Entry 0 - 3F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 40 - 7F - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - // Entry 80 - BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry C0 - FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 100 - 13F - 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xed, 0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x5b, 0x00, - // Entry 140 - 17F - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 180 - 1BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5b, 0x35, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00, - // Entry 1C0 - 1FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x5b, 0x00, 0x5b, 0x5b, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x5b, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, - // Entry 200 - 23F - 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 240 - 27F - 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x53, 0x00, 0x00, 0x54, 0x00, 0x22, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 280 - 2BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 2C0 - 2FF - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - // Entry 300 - 33F - 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5b, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - // Entry 340 - 37F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x5b, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5b, 0x00, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 380 - 3BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, - // Entry 3C0 - 3FF - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 400 - 43F - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - // Entry 440 - 47F - 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe9, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, - // Entry 480 - 4BF - 0x5b, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 4C0 - 4FF - 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 500 - 53F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, -} - -const ( - _001 = 1 - _419 = 31 - _BR = 65 - _CA = 73 - _ES = 111 - _GB = 124 - _MD = 189 - _PT = 239 - _UK = 307 - _US = 310 - _ZZ = 358 - _XA = 324 - _XC = 326 - _XK = 334 -) - -// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID -// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for -// the UN.M49 codes used for groups.) -const isoRegionOffset = 32 - -// regionTypes defines the status of a region for various standards. -// Size: 359 bytes, 359 elements -var regionTypes = [359]uint8{ - // Entry 0 - 3F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - // Entry 40 - 7F - 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06, - 0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x04, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, - 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x00, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, - // Entry 80 - BF - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - // Entry C0 - FF - 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, - 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x00, 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - // Entry 100 - 13F - 0x05, 0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, - // Entry 140 - 17F - 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, - 0x06, 0x04, 0x06, 0x06, 0x04, 0x06, 0x05, -} - -// regionISO holds a list of alphabetically sorted 2-letter ISO region codes. -// Each 2-letter codes is followed by two bytes with the following meaning: -// - [A-Z}{2}: the first letter of the 2-letter code plus these two -// letters form the 3-letter ISO code. -// - 0, n: index into altRegionISO3. -const regionISO tag.Index = "" + // Size: 1312 bytes - "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" + - "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" + - "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" + - "CQ CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADO" + - "OMDYHYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03EZ FIINFJJIFKLKFMSM" + - "FOROFQ\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQ" + - "NQGRRCGS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERL" + - "ILSRIMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM" + - "\x00\x09KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSO" + - "LTTULUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNP" + - "MQTQMRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLD" + - "NOORNPPLNQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM" + - "\x00\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSS" + - "QTTTQU\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLB" + - "SCYCSDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXM" + - "SYYRSZWZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTT" + - "TOTVUVTWWNTZZAUAKRUGGAUK UMMIUN USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVN" + - "NMVUUTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXN" + - "NNXOOOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUG" + - "ZAAFZMMBZRARZWWEZZZZ\xff\xff\xff\xff" - -// altRegionISO3 holds a list of 3-letter region codes that cannot be -// mapped to 2-letter codes using the default algorithm. This is a short list. -const altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN" - -// altRegionIDs holds a list of regionIDs the positions of which match those -// of the 3-letter ISO codes in altRegionISO3. -// Size: 22 bytes, 11 elements -var altRegionIDs = [11]uint16{ - 0x0058, 0x0071, 0x0089, 0x00a9, 0x00ab, 0x00ae, 0x00eb, 0x0106, - 0x0122, 0x0160, 0x00dd, -} - -// Size: 80 bytes, 20 elements -var regionOldMap = [20]FromTo{ - 0: {From: 0x44, To: 0xc5}, - 1: {From: 0x59, To: 0xa8}, - 2: {From: 0x60, To: 0x61}, - 3: {From: 0x67, To: 0x3b}, - 4: {From: 0x7a, To: 0x79}, - 5: {From: 0x94, To: 0x37}, - 6: {From: 0xa4, To: 0x134}, - 7: {From: 0xc2, To: 0x134}, - 8: {From: 0xd8, To: 0x140}, - 9: {From: 0xdd, To: 0x2b}, - 10: {From: 0xf0, To: 0x134}, - 11: {From: 0xf3, To: 0xe3}, - 12: {From: 0xfd, To: 0x71}, - 13: {From: 0x104, To: 0x165}, - 14: {From: 0x12b, To: 0x127}, - 15: {From: 0x133, To: 0x7c}, - 16: {From: 0x13b, To: 0x13f}, - 17: {From: 0x142, To: 0x134}, - 18: {From: 0x15e, To: 0x15f}, - 19: {From: 0x164, To: 0x4b}, -} - -// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are -// codes indicating collections of regions. -// Size: 718 bytes, 359 elements -var m49 = [359]int16{ - // Entry 0 - 3F - 0, 1, 2, 3, 5, 9, 11, 13, - 14, 15, 17, 18, 19, 21, 29, 30, - 34, 35, 39, 53, 54, 57, 61, 142, - 143, 145, 150, 151, 154, 155, 202, 419, - 958, 0, 20, 784, 4, 28, 660, 8, - 51, 530, 24, 10, 32, 16, 40, 36, - 533, 248, 31, 70, 52, 50, 56, 854, - 100, 48, 108, 204, 652, 60, 96, 68, - // Entry 40 - 7F - 535, 76, 44, 64, 104, 74, 72, 112, - 84, 124, 166, 180, 140, 178, 756, 384, - 184, 152, 120, 156, 170, 0, 0, 188, - 891, 296, 192, 132, 531, 162, 196, 203, - 278, 276, 0, 262, 208, 212, 214, 204, - 12, 0, 218, 233, 818, 732, 232, 724, - 231, 967, 0, 246, 242, 238, 583, 234, - 0, 250, 249, 266, 826, 308, 268, 254, - // Entry 80 - BF - 831, 288, 292, 304, 270, 324, 312, 226, - 300, 239, 320, 316, 624, 328, 344, 334, - 340, 191, 332, 348, 854, 0, 360, 372, - 376, 833, 356, 86, 368, 364, 352, 380, - 832, 388, 400, 392, 581, 404, 417, 116, - 296, 174, 659, 408, 410, 414, 136, 398, - 418, 422, 662, 438, 144, 430, 426, 440, - 442, 428, 434, 504, 492, 498, 499, 663, - // Entry C0 - FF - 450, 584, 581, 807, 466, 104, 496, 446, - 580, 474, 478, 500, 470, 480, 462, 454, - 484, 458, 508, 516, 540, 562, 574, 566, - 548, 558, 528, 578, 524, 10, 520, 536, - 570, 554, 512, 591, 0, 604, 258, 598, - 608, 586, 616, 666, 612, 630, 275, 620, - 581, 585, 600, 591, 634, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 969, - // Entry 100 - 13F - 970, 971, 972, 638, 716, 642, 688, 643, - 646, 682, 90, 690, 729, 752, 702, 654, - 705, 744, 703, 694, 674, 686, 706, 740, - 728, 678, 810, 222, 534, 760, 748, 0, - 796, 148, 260, 768, 764, 762, 772, 626, - 795, 788, 776, 626, 792, 780, 798, 158, - 834, 804, 800, 826, 581, 0, 840, 858, - 860, 336, 670, 704, 862, 92, 850, 704, - // Entry 140 - 17F - 548, 876, 581, 882, 973, 974, 975, 976, - 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 720, 887, - 175, 891, 710, 894, 180, 716, 999, -} - -// m49Index gives indexes into fromM49 based on the three most significant bits -// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in -// -// fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]] -// -// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code. -// The region code is stored in the 9 lsb of the indexed value. -// Size: 18 bytes, 9 elements -var m49Index = [9]int16{ - 0, 59, 108, 143, 181, 220, 259, 291, - 333, -} - -// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details. -// Size: 666 bytes, 333 elements -var fromM49 = [333]uint16{ - // Entry 0 - 3F - 0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b, - 0x1606, 0x1868, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b, - 0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32, - 0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039, - 0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d, - 0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848, - 0xac9b, 0xb50a, 0xb93d, 0xc03e, 0xc838, 0xd0c5, 0xd83a, 0xe047, - 0xe8a7, 0xf052, 0xf849, 0x085b, 0x10ae, 0x184c, 0x1c17, 0x1e18, - // Entry 40 - 7F - 0x20b4, 0x2219, 0x2921, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d, - 0x3853, 0x3d2f, 0x445d, 0x4c4a, 0x5454, 0x5ca9, 0x5f60, 0x644d, - 0x684b, 0x7050, 0x7857, 0x7e91, 0x805a, 0x885e, 0x941e, 0x965f, - 0x983b, 0xa064, 0xa865, 0xac66, 0xb46a, 0xbd1b, 0xc487, 0xcc70, - 0xce70, 0xd06e, 0xd26b, 0xd477, 0xdc75, 0xde89, 0xe474, 0xec73, - 0xf031, 0xf27a, 0xf479, 0xfc7f, 0x04e6, 0x0922, 0x0c63, 0x147b, - 0x187e, 0x1c84, 0x26ee, 0x2861, 0x2c60, 0x3061, 0x4081, 0x4882, - 0x50a8, 0x5888, 0x6083, 0x687d, 0x7086, 0x788b, 0x808a, 0x8885, - // Entry 80 - BF - 0x908d, 0x9892, 0x9c8f, 0xa139, 0xa890, 0xb08e, 0xb893, 0xc09e, - 0xc89a, 0xd096, 0xd89d, 0xe09c, 0xe897, 0xf098, 0xf89f, 0x004f, - 0x08a1, 0x10a3, 0x1caf, 0x20a2, 0x28a5, 0x30ab, 0x34ac, 0x3cad, - 0x42a6, 0x44b0, 0x461f, 0x4cb1, 0x54b6, 0x58b9, 0x5cb5, 0x64ba, - 0x6cb3, 0x70b7, 0x74b8, 0x7cc7, 0x84c0, 0x8ccf, 0x94d1, 0x9cce, - 0xa4c4, 0xaccc, 0xb4c9, 0xbcca, 0xc0cd, 0xc8d0, 0xd8bc, 0xe0c6, - 0xe4bd, 0xe6be, 0xe8cb, 0xf0bb, 0xf8d2, 0x00e2, 0x08d3, 0x10de, - 0x18dc, 0x20da, 0x2429, 0x265c, 0x2a30, 0x2d1c, 0x2e40, 0x30df, - // Entry C0 - FF - 0x38d4, 0x4940, 0x54e1, 0x5cd9, 0x64d5, 0x6cd7, 0x74e0, 0x7cd6, - 0x84db, 0x88c8, 0x8b34, 0x8e76, 0x90c1, 0x92f1, 0x94e9, 0x9ee3, - 0xace7, 0xb0f2, 0xb8e5, 0xc0e8, 0xc8ec, 0xd0ea, 0xd8ef, 0xe08c, - 0xe527, 0xeced, 0xf4f4, 0xfd03, 0x0505, 0x0707, 0x0d08, 0x183c, - 0x1d0f, 0x26aa, 0x2826, 0x2cb2, 0x2ebf, 0x34eb, 0x3d3a, 0x4514, - 0x4d19, 0x5509, 0x5d15, 0x6106, 0x650b, 0x6d13, 0x7d0e, 0x7f12, - 0x813f, 0x8310, 0x8516, 0x8d62, 0x9965, 0xa15e, 0xa86f, 0xb118, - 0xb30c, 0xb86d, 0xc10c, 0xc917, 0xd111, 0xd91e, 0xe10d, 0xe84e, - // Entry 100 - 13F - 0xf11d, 0xf525, 0xf924, 0x0123, 0x0926, 0x112a, 0x192d, 0x2023, - 0x2929, 0x312c, 0x3728, 0x3920, 0x3d2e, 0x4132, 0x4931, 0x4ec3, - 0x551a, 0x646c, 0x747c, 0x7e80, 0x80a0, 0x8299, 0x8530, 0x9136, - 0xa53e, 0xac37, 0xb537, 0xb938, 0xbd3c, 0xd941, 0xe543, 0xed5f, - 0xef5f, 0xf658, 0xfd63, 0x7c20, 0x7ef5, 0x80f6, 0x82f7, 0x84f8, - 0x86f9, 0x88fa, 0x8afb, 0x8cfc, 0x8e71, 0x90fe, 0x92ff, 0x9500, - 0x9701, 0x9902, 0x9b44, 0x9d45, 0x9f46, 0xa147, 0xa348, 0xa549, - 0xa74a, 0xa94b, 0xab4c, 0xad4d, 0xaf4e, 0xb14f, 0xb350, 0xb551, - // Entry 140 - 17F - 0xb752, 0xb953, 0xbb54, 0xbd55, 0xbf56, 0xc157, 0xc358, 0xc559, - 0xc75a, 0xc95b, 0xcb5c, 0xcd5d, 0xcf66, -} - -// Size: 2128 bytes -var variantIndex = map[string]uint8{ - "1606nict": 0x0, - "1694acad": 0x1, - "1901": 0x2, - "1959acad": 0x3, - "1994": 0x67, - "1996": 0x4, - "abl1943": 0x5, - "akuapem": 0x6, - "alalc97": 0x69, - "aluku": 0x7, - "ao1990": 0x8, - "aranes": 0x9, - "arevela": 0xa, - "arevmda": 0xb, - "arkaika": 0xc, - "asante": 0xd, - "auvern": 0xe, - "baku1926": 0xf, - "balanka": 0x10, - "barla": 0x11, - "basiceng": 0x12, - "bauddha": 0x13, - "bciav": 0x14, - "bcizbl": 0x15, - "biscayan": 0x16, - "biske": 0x62, - "bohoric": 0x17, - "boont": 0x18, - "bornholm": 0x19, - "cisaup": 0x1a, - "colb1945": 0x1b, - "cornu": 0x1c, - "creiss": 0x1d, - "dajnko": 0x1e, - "ekavsk": 0x1f, - "emodeng": 0x20, - "fonipa": 0x6a, - "fonkirsh": 0x6b, - "fonnapa": 0x6c, - "fonupa": 0x6d, - "fonxsamp": 0x6e, - "gallo": 0x21, - "gascon": 0x22, - "grclass": 0x23, - "grital": 0x24, - "grmistr": 0x25, - "hepburn": 0x26, - "heploc": 0x68, - "hognorsk": 0x27, - "hsistemo": 0x28, - "ijekavsk": 0x29, - "itihasa": 0x2a, - "ivanchov": 0x2b, - "jauer": 0x2c, - "jyutping": 0x2d, - "kkcor": 0x2e, - "kociewie": 0x2f, - "kscor": 0x30, - "laukika": 0x31, - "lemosin": 0x32, - "lengadoc": 0x33, - "lipaw": 0x63, - "ltg1929": 0x34, - "ltg2007": 0x35, - "luna1918": 0x36, - "metelko": 0x37, - "monoton": 0x38, - "ndyuka": 0x39, - "nedis": 0x3a, - "newfound": 0x3b, - "nicard": 0x3c, - "njiva": 0x64, - "nulik": 0x3d, - "osojs": 0x65, - "oxendict": 0x3e, - "pahawh2": 0x3f, - "pahawh3": 0x40, - "pahawh4": 0x41, - "pamaka": 0x42, - "peano": 0x43, - "petr1708": 0x44, - "pinyin": 0x45, - "polyton": 0x46, - "provenc": 0x47, - "puter": 0x48, - "rigik": 0x49, - "rozaj": 0x4a, - "rumgr": 0x4b, - "scotland": 0x4c, - "scouse": 0x4d, - "simple": 0x6f, - "solba": 0x66, - "sotav": 0x4e, - "spanglis": 0x4f, - "surmiran": 0x50, - "sursilv": 0x51, - "sutsilv": 0x52, - "synnejyl": 0x53, - "tarask": 0x54, - "tongyong": 0x55, - "tunumiit": 0x56, - "uccor": 0x57, - "ucrcor": 0x58, - "ulster": 0x59, - "unifon": 0x5a, - "vaidika": 0x5b, - "valencia": 0x5c, - "vallader": 0x5d, - "vecdruka": 0x5e, - "vivaraup": 0x5f, - "wadegile": 0x60, - "xsistemo": 0x61, -} - -// variantNumSpecialized is the number of specialized variants in variants. -const variantNumSpecialized = 105 - -// nRegionGroups is the number of region groups. -const nRegionGroups = 33 - -type likelyLangRegion struct { - lang uint16 - region uint16 -} - -// likelyScript is a lookup table, indexed by scriptID, for the most likely -// languages and regions given a script. -// Size: 1052 bytes, 263 elements -var likelyScript = [263]likelyLangRegion{ - 1: {lang: 0x14e, region: 0x85}, - 3: {lang: 0x2a2, region: 0x107}, - 4: {lang: 0x1f, region: 0x9a}, - 5: {lang: 0x3a, region: 0x6c}, - 7: {lang: 0x3b, region: 0x9d}, - 8: {lang: 0x1d7, region: 0x28}, - 9: {lang: 0x13, region: 0x9d}, - 10: {lang: 0x5b, region: 0x96}, - 11: {lang: 0x60, region: 0x52}, - 12: {lang: 0xb9, region: 0xb5}, - 13: {lang: 0x63, region: 0x96}, - 14: {lang: 0xa5, region: 0x35}, - 15: {lang: 0x3e9, region: 0x9a}, - 17: {lang: 0x529, region: 0x12f}, - 18: {lang: 0x3b1, region: 0x9a}, - 19: {lang: 0x15e, region: 0x79}, - 20: {lang: 0xc2, region: 0x96}, - 21: {lang: 0x9d, region: 0xe8}, - 22: {lang: 0xdb, region: 0x35}, - 23: {lang: 0xf3, region: 0x49}, - 24: {lang: 0x4f0, region: 0x12c}, - 25: {lang: 0xe7, region: 0x13f}, - 26: {lang: 0xe5, region: 0x136}, - 29: {lang: 0xf1, region: 0x6c}, - 31: {lang: 0x1a0, region: 0x5e}, - 32: {lang: 0x3e2, region: 0x107}, - 34: {lang: 0x1be, region: 0x9a}, - 38: {lang: 0x15e, region: 0x79}, - 41: {lang: 0x133, region: 0x6c}, - 42: {lang: 0x431, region: 0x27}, - 44: {lang: 0x27, region: 0x70}, - 46: {lang: 0x210, region: 0x7e}, - 47: {lang: 0xfe, region: 0x38}, - 49: {lang: 0x19b, region: 0x9a}, - 50: {lang: 0x19e, region: 0x131}, - 51: {lang: 0x3e9, region: 0x9a}, - 52: {lang: 0x136, region: 0x88}, - 53: {lang: 0x1a4, region: 0x9a}, - 54: {lang: 0x39d, region: 0x9a}, - 55: {lang: 0x529, region: 0x12f}, - 56: {lang: 0x254, region: 0xac}, - 57: {lang: 0x529, region: 0x53}, - 58: {lang: 0x1cb, region: 0xe8}, - 59: {lang: 0x529, region: 0x53}, - 60: {lang: 0x529, region: 0x12f}, - 61: {lang: 0x2fd, region: 0x9c}, - 62: {lang: 0x1bc, region: 0x98}, - 63: {lang: 0x200, region: 0xa3}, - 64: {lang: 0x1c5, region: 0x12c}, - 65: {lang: 0x1ca, region: 0xb0}, - 68: {lang: 0x1d5, region: 0x93}, - 70: {lang: 0x142, region: 0x9f}, - 71: {lang: 0x254, region: 0xac}, - 72: {lang: 0x20e, region: 0x96}, - 73: {lang: 0x200, region: 0xa3}, - 75: {lang: 0x135, region: 0xc5}, - 76: {lang: 0x200, region: 0xa3}, - 78: {lang: 0x3bb, region: 0xe9}, - 79: {lang: 0x24a, region: 0xa7}, - 80: {lang: 0x3fa, region: 0x9a}, - 83: {lang: 0x251, region: 0x9a}, - 84: {lang: 0x254, region: 0xac}, - 86: {lang: 0x88, region: 0x9a}, - 87: {lang: 0x370, region: 0x124}, - 88: {lang: 0x2b8, region: 0xb0}, - 93: {lang: 0x29f, region: 0x9a}, - 94: {lang: 0x2a8, region: 0x9a}, - 95: {lang: 0x28f, region: 0x88}, - 96: {lang: 0x1a0, region: 0x88}, - 97: {lang: 0x2ac, region: 0x53}, - 99: {lang: 0x4f4, region: 0x12c}, - 100: {lang: 0x4f5, region: 0x12c}, - 101: {lang: 0x1be, region: 0x9a}, - 103: {lang: 0x337, region: 0x9d}, - 104: {lang: 0x4f7, region: 0x53}, - 105: {lang: 0xa9, region: 0x53}, - 108: {lang: 0x2e8, region: 0x113}, - 109: {lang: 0x4f8, region: 0x10c}, - 110: {lang: 0x4f8, region: 0x10c}, - 111: {lang: 0x304, region: 0x9a}, - 112: {lang: 0x31b, region: 0x9a}, - 113: {lang: 0x30b, region: 0x53}, - 115: {lang: 0x31e, region: 0x35}, - 116: {lang: 0x30e, region: 0x9a}, - 117: {lang: 0x414, region: 0xe9}, - 118: {lang: 0x331, region: 0xc5}, - 121: {lang: 0x4f9, region: 0x109}, - 122: {lang: 0x3b, region: 0xa2}, - 123: {lang: 0x353, region: 0xdc}, - 126: {lang: 0x2d0, region: 0x85}, - 127: {lang: 0x52a, region: 0x53}, - 128: {lang: 0x403, region: 0x97}, - 129: {lang: 0x3ee, region: 0x9a}, - 130: {lang: 0x39b, region: 0xc6}, - 131: {lang: 0x395, region: 0x9a}, - 132: {lang: 0x399, region: 0x136}, - 133: {lang: 0x429, region: 0x116}, - 135: {lang: 0x3b, region: 0x11d}, - 136: {lang: 0xfd, region: 0xc5}, - 139: {lang: 0x27d, region: 0x107}, - 140: {lang: 0x2c9, region: 0x53}, - 141: {lang: 0x39f, region: 0x9d}, - 142: {lang: 0x39f, region: 0x53}, - 144: {lang: 0x3ad, region: 0xb1}, - 146: {lang: 0x1c6, region: 0x53}, - 147: {lang: 0x4fd, region: 0x9d}, - 200: {lang: 0x3cb, region: 0x96}, - 203: {lang: 0x372, region: 0x10d}, - 204: {lang: 0x420, region: 0x98}, - 206: {lang: 0x4ff, region: 0x15f}, - 207: {lang: 0x3f0, region: 0x9a}, - 208: {lang: 0x45, region: 0x136}, - 209: {lang: 0x139, region: 0x7c}, - 210: {lang: 0x3e9, region: 0x9a}, - 212: {lang: 0x3e9, region: 0x9a}, - 213: {lang: 0x3fa, region: 0x9a}, - 214: {lang: 0x40c, region: 0xb4}, - 217: {lang: 0x433, region: 0x9a}, - 218: {lang: 0xef, region: 0xc6}, - 219: {lang: 0x43e, region: 0x96}, - 221: {lang: 0x44d, region: 0x35}, - 222: {lang: 0x44e, region: 0x9c}, - 226: {lang: 0x45a, region: 0xe8}, - 227: {lang: 0x11a, region: 0x9a}, - 228: {lang: 0x45e, region: 0x53}, - 229: {lang: 0x232, region: 0x53}, - 230: {lang: 0x450, region: 0x9a}, - 231: {lang: 0x4a5, region: 0x53}, - 232: {lang: 0x9f, region: 0x13f}, - 233: {lang: 0x461, region: 0x9a}, - 235: {lang: 0x528, region: 0xbb}, - 236: {lang: 0x153, region: 0xe8}, - 237: {lang: 0x128, region: 0xce}, - 238: {lang: 0x46b, region: 0x124}, - 239: {lang: 0xa9, region: 0x53}, - 240: {lang: 0x2ce, region: 0x9a}, - 243: {lang: 0x4ad, region: 0x11d}, - 244: {lang: 0x4be, region: 0xb5}, - 247: {lang: 0x1ce, region: 0x9a}, - 250: {lang: 0x3a9, region: 0x9d}, - 251: {lang: 0x22, region: 0x9c}, - 253: {lang: 0x1ea, region: 0x53}, - 254: {lang: 0xef, region: 0xc6}, -} - -type likelyScriptRegion struct { - region uint16 - script uint16 - flags uint8 -} - -// likelyLang is a lookup table, indexed by langID, for the most likely -// scripts and regions given incomplete information. If more entries exist for a -// given language, region and script are the index and size respectively -// of the list in likelyLangList. -// Size: 7980 bytes, 1330 elements -var likelyLang = [1330]likelyScriptRegion{ - 0: {region: 0x136, script: 0x5b, flags: 0x0}, - 1: {region: 0x70, script: 0x5b, flags: 0x0}, - 2: {region: 0x166, script: 0x5b, flags: 0x0}, - 3: {region: 0x166, script: 0x5b, flags: 0x0}, - 4: {region: 0x166, script: 0x5b, flags: 0x0}, - 5: {region: 0x7e, script: 0x20, flags: 0x0}, - 6: {region: 0x166, script: 0x5b, flags: 0x0}, - 7: {region: 0x166, script: 0x20, flags: 0x0}, - 8: {region: 0x81, script: 0x5b, flags: 0x0}, - 9: {region: 0x166, script: 0x5b, flags: 0x0}, - 10: {region: 0x166, script: 0x5b, flags: 0x0}, - 11: {region: 0x166, script: 0x5b, flags: 0x0}, - 12: {region: 0x96, script: 0x5b, flags: 0x0}, - 13: {region: 0x132, script: 0x5b, flags: 0x0}, - 14: {region: 0x81, script: 0x5b, flags: 0x0}, - 15: {region: 0x166, script: 0x5b, flags: 0x0}, - 16: {region: 0x166, script: 0x5b, flags: 0x0}, - 17: {region: 0x107, script: 0x20, flags: 0x0}, - 18: {region: 0x166, script: 0x5b, flags: 0x0}, - 19: {region: 0x9d, script: 0x9, flags: 0x0}, - 20: {region: 0x129, script: 0x5, flags: 0x0}, - 21: {region: 0x166, script: 0x5b, flags: 0x0}, - 22: {region: 0x162, script: 0x5b, flags: 0x0}, - 23: {region: 0x166, script: 0x5b, flags: 0x0}, - 24: {region: 0x166, script: 0x5b, flags: 0x0}, - 25: {region: 0x166, script: 0x5b, flags: 0x0}, - 26: {region: 0x166, script: 0x5b, flags: 0x0}, - 27: {region: 0x166, script: 0x5b, flags: 0x0}, - 28: {region: 0x52, script: 0x5b, flags: 0x0}, - 29: {region: 0x166, script: 0x5b, flags: 0x0}, - 30: {region: 0x166, script: 0x5b, flags: 0x0}, - 31: {region: 0x9a, script: 0x4, flags: 0x0}, - 32: {region: 0x166, script: 0x5b, flags: 0x0}, - 33: {region: 0x81, script: 0x5b, flags: 0x0}, - 34: {region: 0x9c, script: 0xfb, flags: 0x0}, - 35: {region: 0x166, script: 0x5b, flags: 0x0}, - 36: {region: 0x166, script: 0x5b, flags: 0x0}, - 37: {region: 0x14e, script: 0x5b, flags: 0x0}, - 38: {region: 0x107, script: 0x20, flags: 0x0}, - 39: {region: 0x70, script: 0x2c, flags: 0x0}, - 40: {region: 0x166, script: 0x5b, flags: 0x0}, - 41: {region: 0x166, script: 0x5b, flags: 0x0}, - 42: {region: 0xd7, script: 0x5b, flags: 0x0}, - 43: {region: 0x166, script: 0x5b, flags: 0x0}, - 45: {region: 0x166, script: 0x5b, flags: 0x0}, - 46: {region: 0x166, script: 0x5b, flags: 0x0}, - 47: {region: 0x166, script: 0x5b, flags: 0x0}, - 48: {region: 0x166, script: 0x5b, flags: 0x0}, - 49: {region: 0x166, script: 0x5b, flags: 0x0}, - 50: {region: 0x166, script: 0x5b, flags: 0x0}, - 51: {region: 0x96, script: 0x5b, flags: 0x0}, - 52: {region: 0x166, script: 0x5, flags: 0x0}, - 53: {region: 0x123, script: 0x5, flags: 0x0}, - 54: {region: 0x166, script: 0x5b, flags: 0x0}, - 55: {region: 0x166, script: 0x5b, flags: 0x0}, - 56: {region: 0x166, script: 0x5b, flags: 0x0}, - 57: {region: 0x166, script: 0x5b, flags: 0x0}, - 58: {region: 0x6c, script: 0x5, flags: 0x0}, - 59: {region: 0x0, script: 0x3, flags: 0x1}, - 60: {region: 0x166, script: 0x5b, flags: 0x0}, - 61: {region: 0x51, script: 0x5b, flags: 0x0}, - 62: {region: 0x3f, script: 0x5b, flags: 0x0}, - 63: {region: 0x68, script: 0x5, flags: 0x0}, - 65: {region: 0xbb, script: 0x5, flags: 0x0}, - 66: {region: 0x6c, script: 0x5, flags: 0x0}, - 67: {region: 0x9a, script: 0xe, flags: 0x0}, - 68: {region: 0x130, script: 0x5b, flags: 0x0}, - 69: {region: 0x136, script: 0xd0, flags: 0x0}, - 70: {region: 0x166, script: 0x5b, flags: 0x0}, - 71: {region: 0x166, script: 0x5b, flags: 0x0}, - 72: {region: 0x6f, script: 0x5b, flags: 0x0}, - 73: {region: 0x166, script: 0x5b, flags: 0x0}, - 74: {region: 0x166, script: 0x5b, flags: 0x0}, - 75: {region: 0x49, script: 0x5b, flags: 0x0}, - 76: {region: 0x166, script: 0x5b, flags: 0x0}, - 77: {region: 0x107, script: 0x20, flags: 0x0}, - 78: {region: 0x166, script: 0x5, flags: 0x0}, - 79: {region: 0x166, script: 0x5b, flags: 0x0}, - 80: {region: 0x166, script: 0x5b, flags: 0x0}, - 81: {region: 0x166, script: 0x5b, flags: 0x0}, - 82: {region: 0x9a, script: 0x22, flags: 0x0}, - 83: {region: 0x166, script: 0x5b, flags: 0x0}, - 84: {region: 0x166, script: 0x5b, flags: 0x0}, - 85: {region: 0x166, script: 0x5b, flags: 0x0}, - 86: {region: 0x3f, script: 0x5b, flags: 0x0}, - 87: {region: 0x166, script: 0x5b, flags: 0x0}, - 88: {region: 0x3, script: 0x5, flags: 0x1}, - 89: {region: 0x107, script: 0x20, flags: 0x0}, - 90: {region: 0xe9, script: 0x5, flags: 0x0}, - 91: {region: 0x96, script: 0x5b, flags: 0x0}, - 92: {region: 0xdc, script: 0x22, flags: 0x0}, - 93: {region: 0x2e, script: 0x5b, flags: 0x0}, - 94: {region: 0x52, script: 0x5b, flags: 0x0}, - 95: {region: 0x166, script: 0x5b, flags: 0x0}, - 96: {region: 0x52, script: 0xb, flags: 0x0}, - 97: {region: 0x166, script: 0x5b, flags: 0x0}, - 98: {region: 0x166, script: 0x5b, flags: 0x0}, - 99: {region: 0x96, script: 0x5b, flags: 0x0}, - 100: {region: 0x166, script: 0x5b, flags: 0x0}, - 101: {region: 0x52, script: 0x5b, flags: 0x0}, - 102: {region: 0x166, script: 0x5b, flags: 0x0}, - 103: {region: 0x166, script: 0x5b, flags: 0x0}, - 104: {region: 0x166, script: 0x5b, flags: 0x0}, - 105: {region: 0x166, script: 0x5b, flags: 0x0}, - 106: {region: 0x4f, script: 0x5b, flags: 0x0}, - 107: {region: 0x166, script: 0x5b, flags: 0x0}, - 108: {region: 0x166, script: 0x5b, flags: 0x0}, - 109: {region: 0x166, script: 0x5b, flags: 0x0}, - 110: {region: 0x166, script: 0x2c, flags: 0x0}, - 111: {region: 0x166, script: 0x5b, flags: 0x0}, - 112: {region: 0x166, script: 0x5b, flags: 0x0}, - 113: {region: 0x47, script: 0x20, flags: 0x0}, - 114: {region: 0x166, script: 0x5b, flags: 0x0}, - 115: {region: 0x166, script: 0x5b, flags: 0x0}, - 116: {region: 0x10c, script: 0x5, flags: 0x0}, - 117: {region: 0x163, script: 0x5b, flags: 0x0}, - 118: {region: 0x166, script: 0x5b, flags: 0x0}, - 119: {region: 0x96, script: 0x5b, flags: 0x0}, - 120: {region: 0x166, script: 0x5b, flags: 0x0}, - 121: {region: 0x130, script: 0x5b, flags: 0x0}, - 122: {region: 0x52, script: 0x5b, flags: 0x0}, - 123: {region: 0x9a, script: 0xe6, flags: 0x0}, - 124: {region: 0xe9, script: 0x5, flags: 0x0}, - 125: {region: 0x9a, script: 0x22, flags: 0x0}, - 126: {region: 0x38, script: 0x20, flags: 0x0}, - 127: {region: 0x9a, script: 0x22, flags: 0x0}, - 128: {region: 0xe9, script: 0x5, flags: 0x0}, - 129: {region: 0x12c, script: 0x34, flags: 0x0}, - 131: {region: 0x9a, script: 0x22, flags: 0x0}, - 132: {region: 0x166, script: 0x5b, flags: 0x0}, - 133: {region: 0x9a, script: 0x22, flags: 0x0}, - 134: {region: 0xe8, script: 0x5b, flags: 0x0}, - 135: {region: 0x166, script: 0x5b, flags: 0x0}, - 136: {region: 0x9a, script: 0x22, flags: 0x0}, - 137: {region: 0x166, script: 0x5b, flags: 0x0}, - 138: {region: 0x140, script: 0x5b, flags: 0x0}, - 139: {region: 0x166, script: 0x5b, flags: 0x0}, - 140: {region: 0x166, script: 0x5b, flags: 0x0}, - 141: {region: 0xe8, script: 0x5b, flags: 0x0}, - 142: {region: 0x166, script: 0x5b, flags: 0x0}, - 143: {region: 0xd7, script: 0x5b, flags: 0x0}, - 144: {region: 0x166, script: 0x5b, flags: 0x0}, - 145: {region: 0x166, script: 0x5b, flags: 0x0}, - 146: {region: 0x166, script: 0x5b, flags: 0x0}, - 147: {region: 0x166, script: 0x2c, flags: 0x0}, - 148: {region: 0x9a, script: 0x22, flags: 0x0}, - 149: {region: 0x96, script: 0x5b, flags: 0x0}, - 150: {region: 0x166, script: 0x5b, flags: 0x0}, - 151: {region: 0x166, script: 0x5b, flags: 0x0}, - 152: {region: 0x115, script: 0x5b, flags: 0x0}, - 153: {region: 0x166, script: 0x5b, flags: 0x0}, - 154: {region: 0x166, script: 0x5b, flags: 0x0}, - 155: {region: 0x52, script: 0x5b, flags: 0x0}, - 156: {region: 0x166, script: 0x5b, flags: 0x0}, - 157: {region: 0xe8, script: 0x5b, flags: 0x0}, - 158: {region: 0x166, script: 0x5b, flags: 0x0}, - 159: {region: 0x13f, script: 0xe8, flags: 0x0}, - 160: {region: 0xc4, script: 0x5b, flags: 0x0}, - 161: {region: 0x166, script: 0x5b, flags: 0x0}, - 162: {region: 0x166, script: 0x5b, flags: 0x0}, - 163: {region: 0xc4, script: 0x5b, flags: 0x0}, - 164: {region: 0x166, script: 0x5b, flags: 0x0}, - 165: {region: 0x35, script: 0xe, flags: 0x0}, - 166: {region: 0x166, script: 0x5b, flags: 0x0}, - 167: {region: 0x166, script: 0x5b, flags: 0x0}, - 168: {region: 0x166, script: 0x5b, flags: 0x0}, - 169: {region: 0x53, script: 0xef, flags: 0x0}, - 170: {region: 0x166, script: 0x5b, flags: 0x0}, - 171: {region: 0x166, script: 0x5b, flags: 0x0}, - 172: {region: 0x166, script: 0x5b, flags: 0x0}, - 173: {region: 0x9a, script: 0xe, flags: 0x0}, - 174: {region: 0x166, script: 0x5b, flags: 0x0}, - 175: {region: 0x9d, script: 0x5, flags: 0x0}, - 176: {region: 0x166, script: 0x5b, flags: 0x0}, - 177: {region: 0x4f, script: 0x5b, flags: 0x0}, - 178: {region: 0x79, script: 0x5b, flags: 0x0}, - 179: {region: 0x9a, script: 0x22, flags: 0x0}, - 180: {region: 0xe9, script: 0x5, flags: 0x0}, - 181: {region: 0x9a, script: 0x22, flags: 0x0}, - 182: {region: 0x166, script: 0x5b, flags: 0x0}, - 183: {region: 0x33, script: 0x5b, flags: 0x0}, - 184: {region: 0x166, script: 0x5b, flags: 0x0}, - 185: {region: 0xb5, script: 0xc, flags: 0x0}, - 186: {region: 0x52, script: 0x5b, flags: 0x0}, - 187: {region: 0x166, script: 0x2c, flags: 0x0}, - 188: {region: 0xe8, script: 0x5b, flags: 0x0}, - 189: {region: 0x166, script: 0x5b, flags: 0x0}, - 190: {region: 0xe9, script: 0x22, flags: 0x0}, - 191: {region: 0x107, script: 0x20, flags: 0x0}, - 192: {region: 0x160, script: 0x5b, flags: 0x0}, - 193: {region: 0x166, script: 0x5b, flags: 0x0}, - 194: {region: 0x96, script: 0x5b, flags: 0x0}, - 195: {region: 0x166, script: 0x5b, flags: 0x0}, - 196: {region: 0x52, script: 0x5b, flags: 0x0}, - 197: {region: 0x166, script: 0x5b, flags: 0x0}, - 198: {region: 0x166, script: 0x5b, flags: 0x0}, - 199: {region: 0x166, script: 0x5b, flags: 0x0}, - 200: {region: 0x87, script: 0x5b, flags: 0x0}, - 201: {region: 0x166, script: 0x5b, flags: 0x0}, - 202: {region: 0x166, script: 0x5b, flags: 0x0}, - 203: {region: 0x166, script: 0x5b, flags: 0x0}, - 204: {region: 0x166, script: 0x5b, flags: 0x0}, - 205: {region: 0x6e, script: 0x2c, flags: 0x0}, - 206: {region: 0x166, script: 0x5b, flags: 0x0}, - 207: {region: 0x166, script: 0x5b, flags: 0x0}, - 208: {region: 0x52, script: 0x5b, flags: 0x0}, - 209: {region: 0x166, script: 0x5b, flags: 0x0}, - 210: {region: 0x166, script: 0x5b, flags: 0x0}, - 211: {region: 0xc4, script: 0x5b, flags: 0x0}, - 212: {region: 0x166, script: 0x5b, flags: 0x0}, - 213: {region: 0x166, script: 0x5b, flags: 0x0}, - 214: {region: 0x166, script: 0x5b, flags: 0x0}, - 215: {region: 0x6f, script: 0x5b, flags: 0x0}, - 216: {region: 0x166, script: 0x5b, flags: 0x0}, - 217: {region: 0x166, script: 0x5b, flags: 0x0}, - 218: {region: 0xd7, script: 0x5b, flags: 0x0}, - 219: {region: 0x35, script: 0x16, flags: 0x0}, - 220: {region: 0x107, script: 0x20, flags: 0x0}, - 221: {region: 0xe8, script: 0x5b, flags: 0x0}, - 222: {region: 0x166, script: 0x5b, flags: 0x0}, - 223: {region: 0x132, script: 0x5b, flags: 0x0}, - 224: {region: 0x8b, script: 0x5b, flags: 0x0}, - 225: {region: 0x76, script: 0x5b, flags: 0x0}, - 226: {region: 0x107, script: 0x20, flags: 0x0}, - 227: {region: 0x136, script: 0x5b, flags: 0x0}, - 228: {region: 0x49, script: 0x5b, flags: 0x0}, - 229: {region: 0x136, script: 0x1a, flags: 0x0}, - 230: {region: 0xa7, script: 0x5, flags: 0x0}, - 231: {region: 0x13f, script: 0x19, flags: 0x0}, - 232: {region: 0x166, script: 0x5b, flags: 0x0}, - 233: {region: 0x9c, script: 0x5, flags: 0x0}, - 234: {region: 0x166, script: 0x5b, flags: 0x0}, - 235: {region: 0x166, script: 0x5b, flags: 0x0}, - 236: {region: 0x166, script: 0x5b, flags: 0x0}, - 237: {region: 0x166, script: 0x5b, flags: 0x0}, - 238: {region: 0x166, script: 0x5b, flags: 0x0}, - 239: {region: 0xc6, script: 0xda, flags: 0x0}, - 240: {region: 0x79, script: 0x5b, flags: 0x0}, - 241: {region: 0x6c, script: 0x1d, flags: 0x0}, - 242: {region: 0xe8, script: 0x5b, flags: 0x0}, - 243: {region: 0x49, script: 0x17, flags: 0x0}, - 244: {region: 0x131, script: 0x20, flags: 0x0}, - 245: {region: 0x49, script: 0x17, flags: 0x0}, - 246: {region: 0x49, script: 0x17, flags: 0x0}, - 247: {region: 0x49, script: 0x17, flags: 0x0}, - 248: {region: 0x49, script: 0x17, flags: 0x0}, - 249: {region: 0x10b, script: 0x5b, flags: 0x0}, - 250: {region: 0x5f, script: 0x5b, flags: 0x0}, - 251: {region: 0xea, script: 0x5b, flags: 0x0}, - 252: {region: 0x49, script: 0x17, flags: 0x0}, - 253: {region: 0xc5, script: 0x88, flags: 0x0}, - 254: {region: 0x8, script: 0x2, flags: 0x1}, - 255: {region: 0x107, script: 0x20, flags: 0x0}, - 256: {region: 0x7c, script: 0x5b, flags: 0x0}, - 257: {region: 0x64, script: 0x5b, flags: 0x0}, - 258: {region: 0x166, script: 0x5b, flags: 0x0}, - 259: {region: 0x166, script: 0x5b, flags: 0x0}, - 260: {region: 0x166, script: 0x5b, flags: 0x0}, - 261: {region: 0x166, script: 0x5b, flags: 0x0}, - 262: {region: 0x136, script: 0x5b, flags: 0x0}, - 263: {region: 0x107, script: 0x20, flags: 0x0}, - 264: {region: 0xa5, script: 0x5b, flags: 0x0}, - 265: {region: 0x166, script: 0x5b, flags: 0x0}, - 266: {region: 0x166, script: 0x5b, flags: 0x0}, - 267: {region: 0x9a, script: 0x5, flags: 0x0}, - 268: {region: 0x166, script: 0x5b, flags: 0x0}, - 269: {region: 0x61, script: 0x5b, flags: 0x0}, - 270: {region: 0x166, script: 0x5b, flags: 0x0}, - 271: {region: 0x49, script: 0x5b, flags: 0x0}, - 272: {region: 0x166, script: 0x5b, flags: 0x0}, - 273: {region: 0x166, script: 0x5b, flags: 0x0}, - 274: {region: 0x166, script: 0x5b, flags: 0x0}, - 275: {region: 0x166, script: 0x5, flags: 0x0}, - 276: {region: 0x49, script: 0x5b, flags: 0x0}, - 277: {region: 0x166, script: 0x5b, flags: 0x0}, - 278: {region: 0x166, script: 0x5b, flags: 0x0}, - 279: {region: 0xd5, script: 0x5b, flags: 0x0}, - 280: {region: 0x4f, script: 0x5b, flags: 0x0}, - 281: {region: 0x166, script: 0x5b, flags: 0x0}, - 282: {region: 0x9a, script: 0x5, flags: 0x0}, - 283: {region: 0x166, script: 0x5b, flags: 0x0}, - 284: {region: 0x166, script: 0x5b, flags: 0x0}, - 285: {region: 0x166, script: 0x5b, flags: 0x0}, - 286: {region: 0x166, script: 0x2c, flags: 0x0}, - 287: {region: 0x61, script: 0x5b, flags: 0x0}, - 288: {region: 0xc4, script: 0x5b, flags: 0x0}, - 289: {region: 0xd1, script: 0x5b, flags: 0x0}, - 290: {region: 0x166, script: 0x5b, flags: 0x0}, - 291: {region: 0xdc, script: 0x22, flags: 0x0}, - 292: {region: 0x52, script: 0x5b, flags: 0x0}, - 293: {region: 0x166, script: 0x5b, flags: 0x0}, - 294: {region: 0x166, script: 0x5b, flags: 0x0}, - 295: {region: 0x166, script: 0x5b, flags: 0x0}, - 296: {region: 0xce, script: 0xed, flags: 0x0}, - 297: {region: 0x166, script: 0x5b, flags: 0x0}, - 298: {region: 0x166, script: 0x5b, flags: 0x0}, - 299: {region: 0x115, script: 0x5b, flags: 0x0}, - 300: {region: 0x37, script: 0x5b, flags: 0x0}, - 301: {region: 0x43, script: 0xef, flags: 0x0}, - 302: {region: 0x166, script: 0x5b, flags: 0x0}, - 303: {region: 0xa5, script: 0x5b, flags: 0x0}, - 304: {region: 0x81, script: 0x5b, flags: 0x0}, - 305: {region: 0xd7, script: 0x5b, flags: 0x0}, - 306: {region: 0x9f, script: 0x5b, flags: 0x0}, - 307: {region: 0x6c, script: 0x29, flags: 0x0}, - 308: {region: 0x166, script: 0x5b, flags: 0x0}, - 309: {region: 0xc5, script: 0x4b, flags: 0x0}, - 310: {region: 0x88, script: 0x34, flags: 0x0}, - 311: {region: 0x166, script: 0x5b, flags: 0x0}, - 312: {region: 0x166, script: 0x5b, flags: 0x0}, - 313: {region: 0xa, script: 0x2, flags: 0x1}, - 314: {region: 0x166, script: 0x5b, flags: 0x0}, - 315: {region: 0x166, script: 0x5b, flags: 0x0}, - 316: {region: 0x1, script: 0x5b, flags: 0x0}, - 317: {region: 0x166, script: 0x5b, flags: 0x0}, - 318: {region: 0x6f, script: 0x5b, flags: 0x0}, - 319: {region: 0x136, script: 0x5b, flags: 0x0}, - 320: {region: 0x6b, script: 0x5b, flags: 0x0}, - 321: {region: 0x166, script: 0x5b, flags: 0x0}, - 322: {region: 0x9f, script: 0x46, flags: 0x0}, - 323: {region: 0x166, script: 0x5b, flags: 0x0}, - 324: {region: 0x166, script: 0x5b, flags: 0x0}, - 325: {region: 0x6f, script: 0x5b, flags: 0x0}, - 326: {region: 0x52, script: 0x5b, flags: 0x0}, - 327: {region: 0x6f, script: 0x5b, flags: 0x0}, - 328: {region: 0x9d, script: 0x5, flags: 0x0}, - 329: {region: 0x166, script: 0x5b, flags: 0x0}, - 330: {region: 0x166, script: 0x5b, flags: 0x0}, - 331: {region: 0x166, script: 0x5b, flags: 0x0}, - 332: {region: 0x166, script: 0x5b, flags: 0x0}, - 333: {region: 0x87, script: 0x5b, flags: 0x0}, - 334: {region: 0xc, script: 0x2, flags: 0x1}, - 335: {region: 0x166, script: 0x5b, flags: 0x0}, - 336: {region: 0xc4, script: 0x5b, flags: 0x0}, - 337: {region: 0x73, script: 0x5b, flags: 0x0}, - 338: {region: 0x10c, script: 0x5, flags: 0x0}, - 339: {region: 0xe8, script: 0x5b, flags: 0x0}, - 340: {region: 0x10d, script: 0x5b, flags: 0x0}, - 341: {region: 0x74, script: 0x5b, flags: 0x0}, - 342: {region: 0x166, script: 0x5b, flags: 0x0}, - 343: {region: 0x166, script: 0x5b, flags: 0x0}, - 344: {region: 0x77, script: 0x5b, flags: 0x0}, - 345: {region: 0x166, script: 0x5b, flags: 0x0}, - 346: {region: 0x3b, script: 0x5b, flags: 0x0}, - 347: {region: 0x166, script: 0x5b, flags: 0x0}, - 348: {region: 0x166, script: 0x5b, flags: 0x0}, - 349: {region: 0x166, script: 0x5b, flags: 0x0}, - 350: {region: 0x79, script: 0x5b, flags: 0x0}, - 351: {region: 0x136, script: 0x5b, flags: 0x0}, - 352: {region: 0x79, script: 0x5b, flags: 0x0}, - 353: {region: 0x61, script: 0x5b, flags: 0x0}, - 354: {region: 0x61, script: 0x5b, flags: 0x0}, - 355: {region: 0x52, script: 0x5, flags: 0x0}, - 356: {region: 0x141, script: 0x5b, flags: 0x0}, - 357: {region: 0x166, script: 0x5b, flags: 0x0}, - 358: {region: 0x85, script: 0x5b, flags: 0x0}, - 359: {region: 0x166, script: 0x5b, flags: 0x0}, - 360: {region: 0xd5, script: 0x5b, flags: 0x0}, - 361: {region: 0x9f, script: 0x5b, flags: 0x0}, - 362: {region: 0xd7, script: 0x5b, flags: 0x0}, - 363: {region: 0x166, script: 0x5b, flags: 0x0}, - 364: {region: 0x10c, script: 0x5b, flags: 0x0}, - 365: {region: 0xda, script: 0x5b, flags: 0x0}, - 366: {region: 0x97, script: 0x5b, flags: 0x0}, - 367: {region: 0x81, script: 0x5b, flags: 0x0}, - 368: {region: 0x166, script: 0x5b, flags: 0x0}, - 369: {region: 0xbd, script: 0x5b, flags: 0x0}, - 370: {region: 0x166, script: 0x5b, flags: 0x0}, - 371: {region: 0x166, script: 0x5b, flags: 0x0}, - 372: {region: 0x166, script: 0x5b, flags: 0x0}, - 373: {region: 0x53, script: 0x3b, flags: 0x0}, - 374: {region: 0x166, script: 0x5b, flags: 0x0}, - 375: {region: 0x96, script: 0x5b, flags: 0x0}, - 376: {region: 0x166, script: 0x5b, flags: 0x0}, - 377: {region: 0x166, script: 0x5b, flags: 0x0}, - 378: {region: 0x9a, script: 0x22, flags: 0x0}, - 379: {region: 0x166, script: 0x5b, flags: 0x0}, - 380: {region: 0x9d, script: 0x5, flags: 0x0}, - 381: {region: 0x7f, script: 0x5b, flags: 0x0}, - 382: {region: 0x7c, script: 0x5b, flags: 0x0}, - 383: {region: 0x166, script: 0x5b, flags: 0x0}, - 384: {region: 0x166, script: 0x5b, flags: 0x0}, - 385: {region: 0x166, script: 0x5b, flags: 0x0}, - 386: {region: 0x166, script: 0x5b, flags: 0x0}, - 387: {region: 0x166, script: 0x5b, flags: 0x0}, - 388: {region: 0x166, script: 0x5b, flags: 0x0}, - 389: {region: 0x70, script: 0x2c, flags: 0x0}, - 390: {region: 0x166, script: 0x5b, flags: 0x0}, - 391: {region: 0xdc, script: 0x22, flags: 0x0}, - 392: {region: 0x166, script: 0x5b, flags: 0x0}, - 393: {region: 0xa8, script: 0x5b, flags: 0x0}, - 394: {region: 0x166, script: 0x5b, flags: 0x0}, - 395: {region: 0xe9, script: 0x5, flags: 0x0}, - 396: {region: 0x166, script: 0x5b, flags: 0x0}, - 397: {region: 0xe9, script: 0x5, flags: 0x0}, - 398: {region: 0x166, script: 0x5b, flags: 0x0}, - 399: {region: 0x166, script: 0x5b, flags: 0x0}, - 400: {region: 0x6f, script: 0x5b, flags: 0x0}, - 401: {region: 0x9d, script: 0x5, flags: 0x0}, - 402: {region: 0x166, script: 0x5b, flags: 0x0}, - 403: {region: 0x166, script: 0x2c, flags: 0x0}, - 404: {region: 0xf2, script: 0x5b, flags: 0x0}, - 405: {region: 0x166, script: 0x5b, flags: 0x0}, - 406: {region: 0x166, script: 0x5b, flags: 0x0}, - 407: {region: 0x166, script: 0x5b, flags: 0x0}, - 408: {region: 0x166, script: 0x2c, flags: 0x0}, - 409: {region: 0x166, script: 0x5b, flags: 0x0}, - 410: {region: 0x9a, script: 0x22, flags: 0x0}, - 411: {region: 0x9a, script: 0xe9, flags: 0x0}, - 412: {region: 0x96, script: 0x5b, flags: 0x0}, - 413: {region: 0xda, script: 0x5b, flags: 0x0}, - 414: {region: 0x131, script: 0x32, flags: 0x0}, - 415: {region: 0x166, script: 0x5b, flags: 0x0}, - 416: {region: 0xe, script: 0x2, flags: 0x1}, - 417: {region: 0x9a, script: 0xe, flags: 0x0}, - 418: {region: 0x166, script: 0x5b, flags: 0x0}, - 419: {region: 0x4e, script: 0x5b, flags: 0x0}, - 420: {region: 0x9a, script: 0x35, flags: 0x0}, - 421: {region: 0x41, script: 0x5b, flags: 0x0}, - 422: {region: 0x54, script: 0x5b, flags: 0x0}, - 423: {region: 0x166, script: 0x5b, flags: 0x0}, - 424: {region: 0x81, script: 0x5b, flags: 0x0}, - 425: {region: 0x166, script: 0x5b, flags: 0x0}, - 426: {region: 0x166, script: 0x5b, flags: 0x0}, - 427: {region: 0xa5, script: 0x5b, flags: 0x0}, - 428: {region: 0x99, script: 0x5b, flags: 0x0}, - 429: {region: 0x166, script: 0x5b, flags: 0x0}, - 430: {region: 0xdc, script: 0x22, flags: 0x0}, - 431: {region: 0x166, script: 0x5b, flags: 0x0}, - 432: {region: 0x166, script: 0x5, flags: 0x0}, - 433: {region: 0x49, script: 0x5b, flags: 0x0}, - 434: {region: 0x166, script: 0x5, flags: 0x0}, - 435: {region: 0x166, script: 0x5b, flags: 0x0}, - 436: {region: 0x10, script: 0x3, flags: 0x1}, - 437: {region: 0x166, script: 0x5b, flags: 0x0}, - 438: {region: 0x53, script: 0x3b, flags: 0x0}, - 439: {region: 0x166, script: 0x5b, flags: 0x0}, - 440: {region: 0x136, script: 0x5b, flags: 0x0}, - 441: {region: 0x24, script: 0x5, flags: 0x0}, - 442: {region: 0x166, script: 0x5b, flags: 0x0}, - 443: {region: 0x166, script: 0x2c, flags: 0x0}, - 444: {region: 0x98, script: 0x3e, flags: 0x0}, - 445: {region: 0x166, script: 0x5b, flags: 0x0}, - 446: {region: 0x9a, script: 0x22, flags: 0x0}, - 447: {region: 0x166, script: 0x5b, flags: 0x0}, - 448: {region: 0x74, script: 0x5b, flags: 0x0}, - 449: {region: 0x166, script: 0x5b, flags: 0x0}, - 450: {region: 0x166, script: 0x5b, flags: 0x0}, - 451: {region: 0xe8, script: 0x5b, flags: 0x0}, - 452: {region: 0x166, script: 0x5b, flags: 0x0}, - 453: {region: 0x12c, script: 0x40, flags: 0x0}, - 454: {region: 0x53, script: 0x92, flags: 0x0}, - 455: {region: 0x166, script: 0x5b, flags: 0x0}, - 456: {region: 0xe9, script: 0x5, flags: 0x0}, - 457: {region: 0x9a, script: 0x22, flags: 0x0}, - 458: {region: 0xb0, script: 0x41, flags: 0x0}, - 459: {region: 0xe8, script: 0x5b, flags: 0x0}, - 460: {region: 0xe9, script: 0x5, flags: 0x0}, - 461: {region: 0xe7, script: 0x5b, flags: 0x0}, - 462: {region: 0x9a, script: 0x22, flags: 0x0}, - 463: {region: 0x9a, script: 0x22, flags: 0x0}, - 464: {region: 0x166, script: 0x5b, flags: 0x0}, - 465: {region: 0x91, script: 0x5b, flags: 0x0}, - 466: {region: 0x61, script: 0x5b, flags: 0x0}, - 467: {region: 0x53, script: 0x3b, flags: 0x0}, - 468: {region: 0x92, script: 0x5b, flags: 0x0}, - 469: {region: 0x93, script: 0x5b, flags: 0x0}, - 470: {region: 0x166, script: 0x5b, flags: 0x0}, - 471: {region: 0x28, script: 0x8, flags: 0x0}, - 472: {region: 0xd3, script: 0x5b, flags: 0x0}, - 473: {region: 0x79, script: 0x5b, flags: 0x0}, - 474: {region: 0x166, script: 0x5b, flags: 0x0}, - 475: {region: 0x166, script: 0x5b, flags: 0x0}, - 476: {region: 0xd1, script: 0x5b, flags: 0x0}, - 477: {region: 0xd7, script: 0x5b, flags: 0x0}, - 478: {region: 0x166, script: 0x5b, flags: 0x0}, - 479: {region: 0x166, script: 0x5b, flags: 0x0}, - 480: {region: 0x166, script: 0x5b, flags: 0x0}, - 481: {region: 0x96, script: 0x5b, flags: 0x0}, - 482: {region: 0x166, script: 0x5b, flags: 0x0}, - 483: {region: 0x166, script: 0x5b, flags: 0x0}, - 484: {region: 0x166, script: 0x5b, flags: 0x0}, - 486: {region: 0x123, script: 0x5b, flags: 0x0}, - 487: {region: 0xd7, script: 0x5b, flags: 0x0}, - 488: {region: 0x166, script: 0x5b, flags: 0x0}, - 489: {region: 0x166, script: 0x5b, flags: 0x0}, - 490: {region: 0x53, script: 0xfd, flags: 0x0}, - 491: {region: 0x166, script: 0x5b, flags: 0x0}, - 492: {region: 0x136, script: 0x5b, flags: 0x0}, - 493: {region: 0x166, script: 0x5b, flags: 0x0}, - 494: {region: 0x49, script: 0x5b, flags: 0x0}, - 495: {region: 0x166, script: 0x5b, flags: 0x0}, - 496: {region: 0x166, script: 0x5b, flags: 0x0}, - 497: {region: 0xe8, script: 0x5b, flags: 0x0}, - 498: {region: 0x166, script: 0x5b, flags: 0x0}, - 499: {region: 0x96, script: 0x5b, flags: 0x0}, - 500: {region: 0x107, script: 0x20, flags: 0x0}, - 501: {region: 0x1, script: 0x5b, flags: 0x0}, - 502: {region: 0x166, script: 0x5b, flags: 0x0}, - 503: {region: 0x166, script: 0x5b, flags: 0x0}, - 504: {region: 0x9e, script: 0x5b, flags: 0x0}, - 505: {region: 0x9f, script: 0x5b, flags: 0x0}, - 506: {region: 0x49, script: 0x17, flags: 0x0}, - 507: {region: 0x98, script: 0x3e, flags: 0x0}, - 508: {region: 0x166, script: 0x5b, flags: 0x0}, - 509: {region: 0x166, script: 0x5b, flags: 0x0}, - 510: {region: 0x107, script: 0x5b, flags: 0x0}, - 511: {region: 0x166, script: 0x5b, flags: 0x0}, - 512: {region: 0xa3, script: 0x49, flags: 0x0}, - 513: {region: 0x166, script: 0x5b, flags: 0x0}, - 514: {region: 0xa1, script: 0x5b, flags: 0x0}, - 515: {region: 0x1, script: 0x5b, flags: 0x0}, - 516: {region: 0x166, script: 0x5b, flags: 0x0}, - 517: {region: 0x166, script: 0x5b, flags: 0x0}, - 518: {region: 0x166, script: 0x5b, flags: 0x0}, - 519: {region: 0x52, script: 0x5b, flags: 0x0}, - 520: {region: 0x131, script: 0x3e, flags: 0x0}, - 521: {region: 0x166, script: 0x5b, flags: 0x0}, - 522: {region: 0x130, script: 0x5b, flags: 0x0}, - 523: {region: 0xdc, script: 0x22, flags: 0x0}, - 524: {region: 0x166, script: 0x5b, flags: 0x0}, - 525: {region: 0x64, script: 0x5b, flags: 0x0}, - 526: {region: 0x96, script: 0x5b, flags: 0x0}, - 527: {region: 0x96, script: 0x5b, flags: 0x0}, - 528: {region: 0x7e, script: 0x2e, flags: 0x0}, - 529: {region: 0x138, script: 0x20, flags: 0x0}, - 530: {region: 0x68, script: 0x5b, flags: 0x0}, - 531: {region: 0xc5, script: 0x5b, flags: 0x0}, - 532: {region: 0x166, script: 0x5b, flags: 0x0}, - 533: {region: 0x166, script: 0x5b, flags: 0x0}, - 534: {region: 0xd7, script: 0x5b, flags: 0x0}, - 535: {region: 0xa5, script: 0x5b, flags: 0x0}, - 536: {region: 0xc4, script: 0x5b, flags: 0x0}, - 537: {region: 0x107, script: 0x20, flags: 0x0}, - 538: {region: 0x166, script: 0x5b, flags: 0x0}, - 539: {region: 0x166, script: 0x5b, flags: 0x0}, - 540: {region: 0x166, script: 0x5b, flags: 0x0}, - 541: {region: 0x166, script: 0x5b, flags: 0x0}, - 542: {region: 0xd5, script: 0x5, flags: 0x0}, - 543: {region: 0xd7, script: 0x5b, flags: 0x0}, - 544: {region: 0x165, script: 0x5b, flags: 0x0}, - 545: {region: 0x166, script: 0x5b, flags: 0x0}, - 546: {region: 0x166, script: 0x5b, flags: 0x0}, - 547: {region: 0x130, script: 0x5b, flags: 0x0}, - 548: {region: 0x123, script: 0x5, flags: 0x0}, - 549: {region: 0x166, script: 0x5b, flags: 0x0}, - 550: {region: 0x124, script: 0xee, flags: 0x0}, - 551: {region: 0x5b, script: 0x5b, flags: 0x0}, - 552: {region: 0x52, script: 0x5b, flags: 0x0}, - 553: {region: 0x166, script: 0x5b, flags: 0x0}, - 554: {region: 0x4f, script: 0x5b, flags: 0x0}, - 555: {region: 0x9a, script: 0x22, flags: 0x0}, - 556: {region: 0x9a, script: 0x22, flags: 0x0}, - 557: {region: 0x4b, script: 0x5b, flags: 0x0}, - 558: {region: 0x96, script: 0x5b, flags: 0x0}, - 559: {region: 0x166, script: 0x5b, flags: 0x0}, - 560: {region: 0x41, script: 0x5b, flags: 0x0}, - 561: {region: 0x9a, script: 0x5b, flags: 0x0}, - 562: {region: 0x53, script: 0xe5, flags: 0x0}, - 563: {region: 0x9a, script: 0x22, flags: 0x0}, - 564: {region: 0xc4, script: 0x5b, flags: 0x0}, - 565: {region: 0x166, script: 0x5b, flags: 0x0}, - 566: {region: 0x9a, script: 0x76, flags: 0x0}, - 567: {region: 0xe9, script: 0x5, flags: 0x0}, - 568: {region: 0x166, script: 0x5b, flags: 0x0}, - 569: {region: 0xa5, script: 0x5b, flags: 0x0}, - 570: {region: 0x166, script: 0x5b, flags: 0x0}, - 571: {region: 0x12c, script: 0x5b, flags: 0x0}, - 572: {region: 0x166, script: 0x5b, flags: 0x0}, - 573: {region: 0xd3, script: 0x5b, flags: 0x0}, - 574: {region: 0x166, script: 0x5b, flags: 0x0}, - 575: {region: 0xb0, script: 0x58, flags: 0x0}, - 576: {region: 0x166, script: 0x5b, flags: 0x0}, - 577: {region: 0x166, script: 0x5b, flags: 0x0}, - 578: {region: 0x13, script: 0x6, flags: 0x1}, - 579: {region: 0x166, script: 0x5b, flags: 0x0}, - 580: {region: 0x52, script: 0x5b, flags: 0x0}, - 581: {region: 0x83, script: 0x5b, flags: 0x0}, - 582: {region: 0xa5, script: 0x5b, flags: 0x0}, - 583: {region: 0x166, script: 0x5b, flags: 0x0}, - 584: {region: 0x166, script: 0x5b, flags: 0x0}, - 585: {region: 0x166, script: 0x5b, flags: 0x0}, - 586: {region: 0xa7, script: 0x4f, flags: 0x0}, - 587: {region: 0x2a, script: 0x5b, flags: 0x0}, - 588: {region: 0x166, script: 0x5b, flags: 0x0}, - 589: {region: 0x166, script: 0x5b, flags: 0x0}, - 590: {region: 0x166, script: 0x5b, flags: 0x0}, - 591: {region: 0x166, script: 0x5b, flags: 0x0}, - 592: {region: 0x166, script: 0x5b, flags: 0x0}, - 593: {region: 0x9a, script: 0x53, flags: 0x0}, - 594: {region: 0x8c, script: 0x5b, flags: 0x0}, - 595: {region: 0x166, script: 0x5b, flags: 0x0}, - 596: {region: 0xac, script: 0x54, flags: 0x0}, - 597: {region: 0x107, script: 0x20, flags: 0x0}, - 598: {region: 0x9a, script: 0x22, flags: 0x0}, - 599: {region: 0x166, script: 0x5b, flags: 0x0}, - 600: {region: 0x76, script: 0x5b, flags: 0x0}, - 601: {region: 0x166, script: 0x5b, flags: 0x0}, - 602: {region: 0xb5, script: 0x5b, flags: 0x0}, - 603: {region: 0x166, script: 0x5b, flags: 0x0}, - 604: {region: 0x166, script: 0x5b, flags: 0x0}, - 605: {region: 0x166, script: 0x5b, flags: 0x0}, - 606: {region: 0x166, script: 0x5b, flags: 0x0}, - 607: {region: 0x166, script: 0x5b, flags: 0x0}, - 608: {region: 0x166, script: 0x5b, flags: 0x0}, - 609: {region: 0x166, script: 0x5b, flags: 0x0}, - 610: {region: 0x166, script: 0x2c, flags: 0x0}, - 611: {region: 0x166, script: 0x5b, flags: 0x0}, - 612: {region: 0x107, script: 0x20, flags: 0x0}, - 613: {region: 0x113, script: 0x5b, flags: 0x0}, - 614: {region: 0xe8, script: 0x5b, flags: 0x0}, - 615: {region: 0x107, script: 0x5b, flags: 0x0}, - 616: {region: 0x166, script: 0x5b, flags: 0x0}, - 617: {region: 0x9a, script: 0x22, flags: 0x0}, - 618: {region: 0x9a, script: 0x5, flags: 0x0}, - 619: {region: 0x130, script: 0x5b, flags: 0x0}, - 620: {region: 0x166, script: 0x5b, flags: 0x0}, - 621: {region: 0x52, script: 0x5b, flags: 0x0}, - 622: {region: 0x61, script: 0x5b, flags: 0x0}, - 623: {region: 0x166, script: 0x5b, flags: 0x0}, - 624: {region: 0x166, script: 0x5b, flags: 0x0}, - 625: {region: 0x166, script: 0x2c, flags: 0x0}, - 626: {region: 0x166, script: 0x5b, flags: 0x0}, - 627: {region: 0x166, script: 0x5b, flags: 0x0}, - 628: {region: 0x19, script: 0x3, flags: 0x1}, - 629: {region: 0x166, script: 0x5b, flags: 0x0}, - 630: {region: 0x166, script: 0x5b, flags: 0x0}, - 631: {region: 0x166, script: 0x5b, flags: 0x0}, - 632: {region: 0x166, script: 0x5b, flags: 0x0}, - 633: {region: 0x107, script: 0x20, flags: 0x0}, - 634: {region: 0x166, script: 0x5b, flags: 0x0}, - 635: {region: 0x166, script: 0x5b, flags: 0x0}, - 636: {region: 0x166, script: 0x5b, flags: 0x0}, - 637: {region: 0x107, script: 0x20, flags: 0x0}, - 638: {region: 0x166, script: 0x5b, flags: 0x0}, - 639: {region: 0x96, script: 0x5b, flags: 0x0}, - 640: {region: 0xe9, script: 0x5, flags: 0x0}, - 641: {region: 0x7c, script: 0x5b, flags: 0x0}, - 642: {region: 0x166, script: 0x5b, flags: 0x0}, - 643: {region: 0x166, script: 0x5b, flags: 0x0}, - 644: {region: 0x166, script: 0x5b, flags: 0x0}, - 645: {region: 0x166, script: 0x2c, flags: 0x0}, - 646: {region: 0x124, script: 0xee, flags: 0x0}, - 647: {region: 0xe9, script: 0x5, flags: 0x0}, - 648: {region: 0x166, script: 0x5b, flags: 0x0}, - 649: {region: 0x166, script: 0x5b, flags: 0x0}, - 650: {region: 0x1c, script: 0x5, flags: 0x1}, - 651: {region: 0x166, script: 0x5b, flags: 0x0}, - 652: {region: 0x166, script: 0x5b, flags: 0x0}, - 653: {region: 0x166, script: 0x5b, flags: 0x0}, - 654: {region: 0x139, script: 0x5b, flags: 0x0}, - 655: {region: 0x88, script: 0x5f, flags: 0x0}, - 656: {region: 0x98, script: 0x3e, flags: 0x0}, - 657: {region: 0x130, script: 0x5b, flags: 0x0}, - 658: {region: 0xe9, script: 0x5, flags: 0x0}, - 659: {region: 0x132, script: 0x5b, flags: 0x0}, - 660: {region: 0x166, script: 0x5b, flags: 0x0}, - 661: {region: 0xb8, script: 0x5b, flags: 0x0}, - 662: {region: 0x107, script: 0x20, flags: 0x0}, - 663: {region: 0x166, script: 0x5b, flags: 0x0}, - 664: {region: 0x96, script: 0x5b, flags: 0x0}, - 665: {region: 0x166, script: 0x5b, flags: 0x0}, - 666: {region: 0x53, script: 0xee, flags: 0x0}, - 667: {region: 0x166, script: 0x5b, flags: 0x0}, - 668: {region: 0x166, script: 0x5b, flags: 0x0}, - 669: {region: 0x166, script: 0x5b, flags: 0x0}, - 670: {region: 0x166, script: 0x5b, flags: 0x0}, - 671: {region: 0x9a, script: 0x5d, flags: 0x0}, - 672: {region: 0x166, script: 0x5b, flags: 0x0}, - 673: {region: 0x166, script: 0x5b, flags: 0x0}, - 674: {region: 0x107, script: 0x20, flags: 0x0}, - 675: {region: 0x132, script: 0x5b, flags: 0x0}, - 676: {region: 0x166, script: 0x5b, flags: 0x0}, - 677: {region: 0xda, script: 0x5b, flags: 0x0}, - 678: {region: 0x166, script: 0x5b, flags: 0x0}, - 679: {region: 0x166, script: 0x5b, flags: 0x0}, - 680: {region: 0x21, script: 0x2, flags: 0x1}, - 681: {region: 0x166, script: 0x5b, flags: 0x0}, - 682: {region: 0x166, script: 0x5b, flags: 0x0}, - 683: {region: 0x9f, script: 0x5b, flags: 0x0}, - 684: {region: 0x53, script: 0x61, flags: 0x0}, - 685: {region: 0x96, script: 0x5b, flags: 0x0}, - 686: {region: 0x9d, script: 0x5, flags: 0x0}, - 687: {region: 0x136, script: 0x5b, flags: 0x0}, - 688: {region: 0x166, script: 0x5b, flags: 0x0}, - 689: {region: 0x166, script: 0x5b, flags: 0x0}, - 690: {region: 0x9a, script: 0xe9, flags: 0x0}, - 691: {region: 0x9f, script: 0x5b, flags: 0x0}, - 692: {region: 0x166, script: 0x5b, flags: 0x0}, - 693: {region: 0x4b, script: 0x5b, flags: 0x0}, - 694: {region: 0x166, script: 0x5b, flags: 0x0}, - 695: {region: 0x166, script: 0x5b, flags: 0x0}, - 696: {region: 0xb0, script: 0x58, flags: 0x0}, - 697: {region: 0x166, script: 0x5b, flags: 0x0}, - 698: {region: 0x166, script: 0x5b, flags: 0x0}, - 699: {region: 0x4b, script: 0x5b, flags: 0x0}, - 700: {region: 0x166, script: 0x5b, flags: 0x0}, - 701: {region: 0x166, script: 0x5b, flags: 0x0}, - 702: {region: 0x163, script: 0x5b, flags: 0x0}, - 703: {region: 0x9d, script: 0x5, flags: 0x0}, - 704: {region: 0xb7, script: 0x5b, flags: 0x0}, - 705: {region: 0xb9, script: 0x5b, flags: 0x0}, - 706: {region: 0x4b, script: 0x5b, flags: 0x0}, - 707: {region: 0x4b, script: 0x5b, flags: 0x0}, - 708: {region: 0xa5, script: 0x5b, flags: 0x0}, - 709: {region: 0xa5, script: 0x5b, flags: 0x0}, - 710: {region: 0x9d, script: 0x5, flags: 0x0}, - 711: {region: 0xb9, script: 0x5b, flags: 0x0}, - 712: {region: 0x124, script: 0xee, flags: 0x0}, - 713: {region: 0x53, script: 0x3b, flags: 0x0}, - 714: {region: 0x12c, script: 0x5b, flags: 0x0}, - 715: {region: 0x96, script: 0x5b, flags: 0x0}, - 716: {region: 0x52, script: 0x5b, flags: 0x0}, - 717: {region: 0x9a, script: 0x22, flags: 0x0}, - 718: {region: 0x9a, script: 0x22, flags: 0x0}, - 719: {region: 0x96, script: 0x5b, flags: 0x0}, - 720: {region: 0x23, script: 0x3, flags: 0x1}, - 721: {region: 0xa5, script: 0x5b, flags: 0x0}, - 722: {region: 0x166, script: 0x5b, flags: 0x0}, - 723: {region: 0xd0, script: 0x5b, flags: 0x0}, - 724: {region: 0x166, script: 0x5b, flags: 0x0}, - 725: {region: 0x166, script: 0x5b, flags: 0x0}, - 726: {region: 0x166, script: 0x5b, flags: 0x0}, - 727: {region: 0x166, script: 0x5b, flags: 0x0}, - 728: {region: 0x166, script: 0x5b, flags: 0x0}, - 729: {region: 0x166, script: 0x5b, flags: 0x0}, - 730: {region: 0x166, script: 0x5b, flags: 0x0}, - 731: {region: 0x166, script: 0x5b, flags: 0x0}, - 732: {region: 0x166, script: 0x5b, flags: 0x0}, - 733: {region: 0x166, script: 0x5b, flags: 0x0}, - 734: {region: 0x166, script: 0x5b, flags: 0x0}, - 735: {region: 0x166, script: 0x5, flags: 0x0}, - 736: {region: 0x107, script: 0x20, flags: 0x0}, - 737: {region: 0xe8, script: 0x5b, flags: 0x0}, - 738: {region: 0x166, script: 0x5b, flags: 0x0}, - 739: {region: 0x96, script: 0x5b, flags: 0x0}, - 740: {region: 0x166, script: 0x2c, flags: 0x0}, - 741: {region: 0x166, script: 0x5b, flags: 0x0}, - 742: {region: 0x166, script: 0x5b, flags: 0x0}, - 743: {region: 0x166, script: 0x5b, flags: 0x0}, - 744: {region: 0x113, script: 0x5b, flags: 0x0}, - 745: {region: 0xa5, script: 0x5b, flags: 0x0}, - 746: {region: 0x166, script: 0x5b, flags: 0x0}, - 747: {region: 0x166, script: 0x5b, flags: 0x0}, - 748: {region: 0x124, script: 0x5, flags: 0x0}, - 749: {region: 0xcd, script: 0x5b, flags: 0x0}, - 750: {region: 0x166, script: 0x5b, flags: 0x0}, - 751: {region: 0x166, script: 0x5b, flags: 0x0}, - 752: {region: 0x166, script: 0x5b, flags: 0x0}, - 753: {region: 0xc0, script: 0x5b, flags: 0x0}, - 754: {region: 0xd2, script: 0x5b, flags: 0x0}, - 755: {region: 0x166, script: 0x5b, flags: 0x0}, - 756: {region: 0x52, script: 0x5b, flags: 0x0}, - 757: {region: 0xdc, script: 0x22, flags: 0x0}, - 758: {region: 0x130, script: 0x5b, flags: 0x0}, - 759: {region: 0xc1, script: 0x5b, flags: 0x0}, - 760: {region: 0x166, script: 0x5b, flags: 0x0}, - 761: {region: 0x166, script: 0x5b, flags: 0x0}, - 762: {region: 0xe1, script: 0x5b, flags: 0x0}, - 763: {region: 0x166, script: 0x5b, flags: 0x0}, - 764: {region: 0x96, script: 0x5b, flags: 0x0}, - 765: {region: 0x9c, script: 0x3d, flags: 0x0}, - 766: {region: 0x166, script: 0x5b, flags: 0x0}, - 767: {region: 0xc3, script: 0x20, flags: 0x0}, - 768: {region: 0x166, script: 0x5, flags: 0x0}, - 769: {region: 0x166, script: 0x5b, flags: 0x0}, - 770: {region: 0x166, script: 0x5b, flags: 0x0}, - 771: {region: 0x166, script: 0x5b, flags: 0x0}, - 772: {region: 0x9a, script: 0x6f, flags: 0x0}, - 773: {region: 0x166, script: 0x5b, flags: 0x0}, - 774: {region: 0x166, script: 0x5b, flags: 0x0}, - 775: {region: 0x10c, script: 0x5b, flags: 0x0}, - 776: {region: 0x166, script: 0x5b, flags: 0x0}, - 777: {region: 0x166, script: 0x5b, flags: 0x0}, - 778: {region: 0x166, script: 0x5b, flags: 0x0}, - 779: {region: 0x26, script: 0x3, flags: 0x1}, - 780: {region: 0x166, script: 0x5b, flags: 0x0}, - 781: {region: 0x166, script: 0x5b, flags: 0x0}, - 782: {region: 0x9a, script: 0xe, flags: 0x0}, - 783: {region: 0xc5, script: 0x76, flags: 0x0}, - 785: {region: 0x166, script: 0x5b, flags: 0x0}, - 786: {region: 0x49, script: 0x5b, flags: 0x0}, - 787: {region: 0x49, script: 0x5b, flags: 0x0}, - 788: {region: 0x37, script: 0x5b, flags: 0x0}, - 789: {region: 0x166, script: 0x5b, flags: 0x0}, - 790: {region: 0x166, script: 0x5b, flags: 0x0}, - 791: {region: 0x166, script: 0x5b, flags: 0x0}, - 792: {region: 0x166, script: 0x5b, flags: 0x0}, - 793: {region: 0x166, script: 0x5b, flags: 0x0}, - 794: {region: 0x166, script: 0x5b, flags: 0x0}, - 795: {region: 0x9a, script: 0x22, flags: 0x0}, - 796: {region: 0xdc, script: 0x22, flags: 0x0}, - 797: {region: 0x107, script: 0x20, flags: 0x0}, - 798: {region: 0x35, script: 0x73, flags: 0x0}, - 799: {region: 0x29, script: 0x3, flags: 0x1}, - 800: {region: 0xcc, script: 0x5b, flags: 0x0}, - 801: {region: 0x166, script: 0x5b, flags: 0x0}, - 802: {region: 0x166, script: 0x5b, flags: 0x0}, - 803: {region: 0x166, script: 0x5b, flags: 0x0}, - 804: {region: 0x9a, script: 0x22, flags: 0x0}, - 805: {region: 0x52, script: 0x5b, flags: 0x0}, - 807: {region: 0x166, script: 0x5b, flags: 0x0}, - 808: {region: 0x136, script: 0x5b, flags: 0x0}, - 809: {region: 0x166, script: 0x5b, flags: 0x0}, - 810: {region: 0x166, script: 0x5b, flags: 0x0}, - 811: {region: 0xe9, script: 0x5, flags: 0x0}, - 812: {region: 0xc4, script: 0x5b, flags: 0x0}, - 813: {region: 0x9a, script: 0x22, flags: 0x0}, - 814: {region: 0x96, script: 0x5b, flags: 0x0}, - 815: {region: 0x165, script: 0x5b, flags: 0x0}, - 816: {region: 0x166, script: 0x5b, flags: 0x0}, - 817: {region: 0xc5, script: 0x76, flags: 0x0}, - 818: {region: 0x166, script: 0x5b, flags: 0x0}, - 819: {region: 0x166, script: 0x2c, flags: 0x0}, - 820: {region: 0x107, script: 0x20, flags: 0x0}, - 821: {region: 0x166, script: 0x5b, flags: 0x0}, - 822: {region: 0x132, script: 0x5b, flags: 0x0}, - 823: {region: 0x9d, script: 0x67, flags: 0x0}, - 824: {region: 0x166, script: 0x5b, flags: 0x0}, - 825: {region: 0x166, script: 0x5b, flags: 0x0}, - 826: {region: 0x9d, script: 0x5, flags: 0x0}, - 827: {region: 0x166, script: 0x5b, flags: 0x0}, - 828: {region: 0x166, script: 0x5b, flags: 0x0}, - 829: {region: 0x166, script: 0x5b, flags: 0x0}, - 830: {region: 0xde, script: 0x5b, flags: 0x0}, - 831: {region: 0x166, script: 0x5b, flags: 0x0}, - 832: {region: 0x166, script: 0x5b, flags: 0x0}, - 834: {region: 0x166, script: 0x5b, flags: 0x0}, - 835: {region: 0x53, script: 0x3b, flags: 0x0}, - 836: {region: 0x9f, script: 0x5b, flags: 0x0}, - 837: {region: 0xd3, script: 0x5b, flags: 0x0}, - 838: {region: 0x166, script: 0x5b, flags: 0x0}, - 839: {region: 0xdb, script: 0x5b, flags: 0x0}, - 840: {region: 0x166, script: 0x5b, flags: 0x0}, - 841: {region: 0x166, script: 0x5b, flags: 0x0}, - 842: {region: 0x166, script: 0x5b, flags: 0x0}, - 843: {region: 0xd0, script: 0x5b, flags: 0x0}, - 844: {region: 0x166, script: 0x5b, flags: 0x0}, - 845: {region: 0x166, script: 0x5b, flags: 0x0}, - 846: {region: 0x165, script: 0x5b, flags: 0x0}, - 847: {region: 0xd2, script: 0x5b, flags: 0x0}, - 848: {region: 0x61, script: 0x5b, flags: 0x0}, - 849: {region: 0xdc, script: 0x22, flags: 0x0}, - 850: {region: 0x166, script: 0x5b, flags: 0x0}, - 851: {region: 0xdc, script: 0x22, flags: 0x0}, - 852: {region: 0x166, script: 0x5b, flags: 0x0}, - 853: {region: 0x166, script: 0x5b, flags: 0x0}, - 854: {region: 0xd3, script: 0x5b, flags: 0x0}, - 855: {region: 0x166, script: 0x5b, flags: 0x0}, - 856: {region: 0x166, script: 0x5b, flags: 0x0}, - 857: {region: 0xd2, script: 0x5b, flags: 0x0}, - 858: {region: 0x166, script: 0x5b, flags: 0x0}, - 859: {region: 0xd0, script: 0x5b, flags: 0x0}, - 860: {region: 0xd0, script: 0x5b, flags: 0x0}, - 861: {region: 0x166, script: 0x5b, flags: 0x0}, - 862: {region: 0x166, script: 0x5b, flags: 0x0}, - 863: {region: 0x96, script: 0x5b, flags: 0x0}, - 864: {region: 0x166, script: 0x5b, flags: 0x0}, - 865: {region: 0xe0, script: 0x5b, flags: 0x0}, - 866: {region: 0x166, script: 0x5b, flags: 0x0}, - 867: {region: 0x166, script: 0x5b, flags: 0x0}, - 868: {region: 0x9a, script: 0x5b, flags: 0x0}, - 869: {region: 0x166, script: 0x5b, flags: 0x0}, - 870: {region: 0x166, script: 0x5b, flags: 0x0}, - 871: {region: 0xda, script: 0x5b, flags: 0x0}, - 872: {region: 0x52, script: 0x5b, flags: 0x0}, - 873: {region: 0x166, script: 0x5b, flags: 0x0}, - 874: {region: 0xdb, script: 0x5b, flags: 0x0}, - 875: {region: 0x166, script: 0x5b, flags: 0x0}, - 876: {region: 0x52, script: 0x5b, flags: 0x0}, - 877: {region: 0x166, script: 0x5b, flags: 0x0}, - 878: {region: 0x166, script: 0x5b, flags: 0x0}, - 879: {region: 0xdb, script: 0x5b, flags: 0x0}, - 880: {region: 0x124, script: 0x57, flags: 0x0}, - 881: {region: 0x9a, script: 0x22, flags: 0x0}, - 882: {region: 0x10d, script: 0xcb, flags: 0x0}, - 883: {region: 0x166, script: 0x5b, flags: 0x0}, - 884: {region: 0x166, script: 0x5b, flags: 0x0}, - 885: {region: 0x85, script: 0x7e, flags: 0x0}, - 886: {region: 0x162, script: 0x5b, flags: 0x0}, - 887: {region: 0x166, script: 0x5b, flags: 0x0}, - 888: {region: 0x49, script: 0x17, flags: 0x0}, - 889: {region: 0x166, script: 0x5b, flags: 0x0}, - 890: {region: 0x162, script: 0x5b, flags: 0x0}, - 891: {region: 0x166, script: 0x5b, flags: 0x0}, - 892: {region: 0x166, script: 0x5b, flags: 0x0}, - 893: {region: 0x166, script: 0x5b, flags: 0x0}, - 894: {region: 0x166, script: 0x5b, flags: 0x0}, - 895: {region: 0x166, script: 0x5b, flags: 0x0}, - 896: {region: 0x118, script: 0x5b, flags: 0x0}, - 897: {region: 0x166, script: 0x5b, flags: 0x0}, - 898: {region: 0x166, script: 0x5b, flags: 0x0}, - 899: {region: 0x136, script: 0x5b, flags: 0x0}, - 900: {region: 0x166, script: 0x5b, flags: 0x0}, - 901: {region: 0x53, script: 0x5b, flags: 0x0}, - 902: {region: 0x166, script: 0x5b, flags: 0x0}, - 903: {region: 0xcf, script: 0x5b, flags: 0x0}, - 904: {region: 0x130, script: 0x5b, flags: 0x0}, - 905: {region: 0x132, script: 0x5b, flags: 0x0}, - 906: {region: 0x81, script: 0x5b, flags: 0x0}, - 907: {region: 0x79, script: 0x5b, flags: 0x0}, - 908: {region: 0x166, script: 0x5b, flags: 0x0}, - 910: {region: 0x166, script: 0x5b, flags: 0x0}, - 911: {region: 0x166, script: 0x5b, flags: 0x0}, - 912: {region: 0x70, script: 0x5b, flags: 0x0}, - 913: {region: 0x166, script: 0x5b, flags: 0x0}, - 914: {region: 0x166, script: 0x5b, flags: 0x0}, - 915: {region: 0x166, script: 0x5b, flags: 0x0}, - 916: {region: 0x166, script: 0x5b, flags: 0x0}, - 917: {region: 0x9a, script: 0x83, flags: 0x0}, - 918: {region: 0x166, script: 0x5b, flags: 0x0}, - 919: {region: 0x166, script: 0x5, flags: 0x0}, - 920: {region: 0x7e, script: 0x20, flags: 0x0}, - 921: {region: 0x136, script: 0x84, flags: 0x0}, - 922: {region: 0x166, script: 0x5, flags: 0x0}, - 923: {region: 0xc6, script: 0x82, flags: 0x0}, - 924: {region: 0x166, script: 0x5b, flags: 0x0}, - 925: {region: 0x2c, script: 0x3, flags: 0x1}, - 926: {region: 0xe8, script: 0x5b, flags: 0x0}, - 927: {region: 0x2f, script: 0x2, flags: 0x1}, - 928: {region: 0xe8, script: 0x5b, flags: 0x0}, - 929: {region: 0x30, script: 0x5b, flags: 0x0}, - 930: {region: 0xf1, script: 0x5b, flags: 0x0}, - 931: {region: 0x166, script: 0x5b, flags: 0x0}, - 932: {region: 0x79, script: 0x5b, flags: 0x0}, - 933: {region: 0xd7, script: 0x5b, flags: 0x0}, - 934: {region: 0x136, script: 0x5b, flags: 0x0}, - 935: {region: 0x49, script: 0x5b, flags: 0x0}, - 936: {region: 0x166, script: 0x5b, flags: 0x0}, - 937: {region: 0x9d, script: 0xfa, flags: 0x0}, - 938: {region: 0x166, script: 0x5b, flags: 0x0}, - 939: {region: 0x61, script: 0x5b, flags: 0x0}, - 940: {region: 0x166, script: 0x5, flags: 0x0}, - 941: {region: 0xb1, script: 0x90, flags: 0x0}, - 943: {region: 0x166, script: 0x5b, flags: 0x0}, - 944: {region: 0x166, script: 0x5b, flags: 0x0}, - 945: {region: 0x9a, script: 0x12, flags: 0x0}, - 946: {region: 0xa5, script: 0x5b, flags: 0x0}, - 947: {region: 0xea, script: 0x5b, flags: 0x0}, - 948: {region: 0x166, script: 0x5b, flags: 0x0}, - 949: {region: 0x9f, script: 0x5b, flags: 0x0}, - 950: {region: 0x166, script: 0x5b, flags: 0x0}, - 951: {region: 0x166, script: 0x5b, flags: 0x0}, - 952: {region: 0x88, script: 0x34, flags: 0x0}, - 953: {region: 0x76, script: 0x5b, flags: 0x0}, - 954: {region: 0x166, script: 0x5b, flags: 0x0}, - 955: {region: 0xe9, script: 0x4e, flags: 0x0}, - 956: {region: 0x9d, script: 0x5, flags: 0x0}, - 957: {region: 0x1, script: 0x5b, flags: 0x0}, - 958: {region: 0x24, script: 0x5, flags: 0x0}, - 959: {region: 0x166, script: 0x5b, flags: 0x0}, - 960: {region: 0x41, script: 0x5b, flags: 0x0}, - 961: {region: 0x166, script: 0x5b, flags: 0x0}, - 962: {region: 0x7b, script: 0x5b, flags: 0x0}, - 963: {region: 0x166, script: 0x5b, flags: 0x0}, - 964: {region: 0xe5, script: 0x5b, flags: 0x0}, - 965: {region: 0x8a, script: 0x5b, flags: 0x0}, - 966: {region: 0x6a, script: 0x5b, flags: 0x0}, - 967: {region: 0x166, script: 0x5b, flags: 0x0}, - 968: {region: 0x9a, script: 0x22, flags: 0x0}, - 969: {region: 0x166, script: 0x5b, flags: 0x0}, - 970: {region: 0x103, script: 0x5b, flags: 0x0}, - 971: {region: 0x96, script: 0x5b, flags: 0x0}, - 972: {region: 0x166, script: 0x5b, flags: 0x0}, - 973: {region: 0x166, script: 0x5b, flags: 0x0}, - 974: {region: 0x9f, script: 0x5b, flags: 0x0}, - 975: {region: 0x166, script: 0x5, flags: 0x0}, - 976: {region: 0x9a, script: 0x5b, flags: 0x0}, - 977: {region: 0x31, script: 0x2, flags: 0x1}, - 978: {region: 0xdc, script: 0x22, flags: 0x0}, - 979: {region: 0x35, script: 0xe, flags: 0x0}, - 980: {region: 0x4e, script: 0x5b, flags: 0x0}, - 981: {region: 0x73, script: 0x5b, flags: 0x0}, - 982: {region: 0x4e, script: 0x5b, flags: 0x0}, - 983: {region: 0x9d, script: 0x5, flags: 0x0}, - 984: {region: 0x10d, script: 0x5b, flags: 0x0}, - 985: {region: 0x3a, script: 0x5b, flags: 0x0}, - 986: {region: 0x166, script: 0x5b, flags: 0x0}, - 987: {region: 0xd2, script: 0x5b, flags: 0x0}, - 988: {region: 0x105, script: 0x5b, flags: 0x0}, - 989: {region: 0x96, script: 0x5b, flags: 0x0}, - 990: {region: 0x130, script: 0x5b, flags: 0x0}, - 991: {region: 0x166, script: 0x5b, flags: 0x0}, - 992: {region: 0x166, script: 0x5b, flags: 0x0}, - 993: {region: 0x74, script: 0x5b, flags: 0x0}, - 994: {region: 0x107, script: 0x20, flags: 0x0}, - 995: {region: 0x131, script: 0x20, flags: 0x0}, - 996: {region: 0x10a, script: 0x5b, flags: 0x0}, - 997: {region: 0x108, script: 0x5b, flags: 0x0}, - 998: {region: 0x130, script: 0x5b, flags: 0x0}, - 999: {region: 0x166, script: 0x5b, flags: 0x0}, - 1000: {region: 0xa3, script: 0x4c, flags: 0x0}, - 1001: {region: 0x9a, script: 0x22, flags: 0x0}, - 1002: {region: 0x81, script: 0x5b, flags: 0x0}, - 1003: {region: 0x107, script: 0x20, flags: 0x0}, - 1004: {region: 0xa5, script: 0x5b, flags: 0x0}, - 1005: {region: 0x96, script: 0x5b, flags: 0x0}, - 1006: {region: 0x9a, script: 0x5b, flags: 0x0}, - 1007: {region: 0x115, script: 0x5b, flags: 0x0}, - 1008: {region: 0x9a, script: 0xcf, flags: 0x0}, - 1009: {region: 0x166, script: 0x5b, flags: 0x0}, - 1010: {region: 0x166, script: 0x5b, flags: 0x0}, - 1011: {region: 0x130, script: 0x5b, flags: 0x0}, - 1012: {region: 0x9f, script: 0x5b, flags: 0x0}, - 1013: {region: 0x9a, script: 0x22, flags: 0x0}, - 1014: {region: 0x166, script: 0x5, flags: 0x0}, - 1015: {region: 0x9f, script: 0x5b, flags: 0x0}, - 1016: {region: 0x7c, script: 0x5b, flags: 0x0}, - 1017: {region: 0x49, script: 0x5b, flags: 0x0}, - 1018: {region: 0x33, script: 0x4, flags: 0x1}, - 1019: {region: 0x9f, script: 0x5b, flags: 0x0}, - 1020: {region: 0x9d, script: 0x5, flags: 0x0}, - 1021: {region: 0xdb, script: 0x5b, flags: 0x0}, - 1022: {region: 0x4f, script: 0x5b, flags: 0x0}, - 1023: {region: 0xd2, script: 0x5b, flags: 0x0}, - 1024: {region: 0xd0, script: 0x5b, flags: 0x0}, - 1025: {region: 0xc4, script: 0x5b, flags: 0x0}, - 1026: {region: 0x4c, script: 0x5b, flags: 0x0}, - 1027: {region: 0x97, script: 0x80, flags: 0x0}, - 1028: {region: 0xb7, script: 0x5b, flags: 0x0}, - 1029: {region: 0x166, script: 0x2c, flags: 0x0}, - 1030: {region: 0x166, script: 0x5b, flags: 0x0}, - 1032: {region: 0xbb, script: 0xeb, flags: 0x0}, - 1033: {region: 0x166, script: 0x5b, flags: 0x0}, - 1034: {region: 0xc5, script: 0x76, flags: 0x0}, - 1035: {region: 0x166, script: 0x5, flags: 0x0}, - 1036: {region: 0xb4, script: 0xd6, flags: 0x0}, - 1037: {region: 0x70, script: 0x5b, flags: 0x0}, - 1038: {region: 0x166, script: 0x5b, flags: 0x0}, - 1039: {region: 0x166, script: 0x5b, flags: 0x0}, - 1040: {region: 0x166, script: 0x5b, flags: 0x0}, - 1041: {region: 0x166, script: 0x5b, flags: 0x0}, - 1042: {region: 0x112, script: 0x5b, flags: 0x0}, - 1043: {region: 0x166, script: 0x5b, flags: 0x0}, - 1044: {region: 0xe9, script: 0x5, flags: 0x0}, - 1045: {region: 0x166, script: 0x5b, flags: 0x0}, - 1046: {region: 0x110, script: 0x5b, flags: 0x0}, - 1047: {region: 0x166, script: 0x5b, flags: 0x0}, - 1048: {region: 0xea, script: 0x5b, flags: 0x0}, - 1049: {region: 0x166, script: 0x5b, flags: 0x0}, - 1050: {region: 0x96, script: 0x5b, flags: 0x0}, - 1051: {region: 0x143, script: 0x5b, flags: 0x0}, - 1052: {region: 0x10d, script: 0x5b, flags: 0x0}, - 1054: {region: 0x10d, script: 0x5b, flags: 0x0}, - 1055: {region: 0x73, script: 0x5b, flags: 0x0}, - 1056: {region: 0x98, script: 0xcc, flags: 0x0}, - 1057: {region: 0x166, script: 0x5b, flags: 0x0}, - 1058: {region: 0x73, script: 0x5b, flags: 0x0}, - 1059: {region: 0x165, script: 0x5b, flags: 0x0}, - 1060: {region: 0x166, script: 0x5b, flags: 0x0}, - 1061: {region: 0xc4, script: 0x5b, flags: 0x0}, - 1062: {region: 0x166, script: 0x5b, flags: 0x0}, - 1063: {region: 0x166, script: 0x5b, flags: 0x0}, - 1064: {region: 0x166, script: 0x5b, flags: 0x0}, - 1065: {region: 0x116, script: 0x5b, flags: 0x0}, - 1066: {region: 0x166, script: 0x5b, flags: 0x0}, - 1067: {region: 0x166, script: 0x5b, flags: 0x0}, - 1068: {region: 0x124, script: 0xee, flags: 0x0}, - 1069: {region: 0x166, script: 0x5b, flags: 0x0}, - 1070: {region: 0x166, script: 0x5b, flags: 0x0}, - 1071: {region: 0x166, script: 0x5b, flags: 0x0}, - 1072: {region: 0x166, script: 0x5b, flags: 0x0}, - 1073: {region: 0x27, script: 0x5b, flags: 0x0}, - 1074: {region: 0x37, script: 0x5, flags: 0x1}, - 1075: {region: 0x9a, script: 0xd9, flags: 0x0}, - 1076: {region: 0x117, script: 0x5b, flags: 0x0}, - 1077: {region: 0x115, script: 0x5b, flags: 0x0}, - 1078: {region: 0x9a, script: 0x22, flags: 0x0}, - 1079: {region: 0x162, script: 0x5b, flags: 0x0}, - 1080: {region: 0x166, script: 0x5b, flags: 0x0}, - 1081: {region: 0x166, script: 0x5b, flags: 0x0}, - 1082: {region: 0x6e, script: 0x5b, flags: 0x0}, - 1083: {region: 0x162, script: 0x5b, flags: 0x0}, - 1084: {region: 0x166, script: 0x5b, flags: 0x0}, - 1085: {region: 0x61, script: 0x5b, flags: 0x0}, - 1086: {region: 0x96, script: 0x5b, flags: 0x0}, - 1087: {region: 0x166, script: 0x5b, flags: 0x0}, - 1088: {region: 0x166, script: 0x5b, flags: 0x0}, - 1089: {region: 0x130, script: 0x5b, flags: 0x0}, - 1090: {region: 0x166, script: 0x5b, flags: 0x0}, - 1091: {region: 0x85, script: 0x5b, flags: 0x0}, - 1092: {region: 0x10d, script: 0x5b, flags: 0x0}, - 1093: {region: 0x130, script: 0x5b, flags: 0x0}, - 1094: {region: 0x160, script: 0x5, flags: 0x0}, - 1095: {region: 0x4b, script: 0x5b, flags: 0x0}, - 1096: {region: 0x61, script: 0x5b, flags: 0x0}, - 1097: {region: 0x166, script: 0x5b, flags: 0x0}, - 1098: {region: 0x9a, script: 0x22, flags: 0x0}, - 1099: {region: 0x96, script: 0x5b, flags: 0x0}, - 1100: {region: 0x166, script: 0x5b, flags: 0x0}, - 1101: {region: 0x35, script: 0xe, flags: 0x0}, - 1102: {region: 0x9c, script: 0xde, flags: 0x0}, - 1103: {region: 0xea, script: 0x5b, flags: 0x0}, - 1104: {region: 0x9a, script: 0xe6, flags: 0x0}, - 1105: {region: 0xdc, script: 0x22, flags: 0x0}, - 1106: {region: 0x166, script: 0x5b, flags: 0x0}, - 1107: {region: 0x166, script: 0x5b, flags: 0x0}, - 1108: {region: 0x166, script: 0x5b, flags: 0x0}, - 1109: {region: 0x166, script: 0x5b, flags: 0x0}, - 1110: {region: 0x166, script: 0x5b, flags: 0x0}, - 1111: {region: 0x166, script: 0x5b, flags: 0x0}, - 1112: {region: 0x166, script: 0x5b, flags: 0x0}, - 1113: {region: 0x166, script: 0x5b, flags: 0x0}, - 1114: {region: 0xe8, script: 0x5b, flags: 0x0}, - 1115: {region: 0x166, script: 0x5b, flags: 0x0}, - 1116: {region: 0x166, script: 0x5b, flags: 0x0}, - 1117: {region: 0x9a, script: 0x53, flags: 0x0}, - 1118: {region: 0x53, script: 0xe4, flags: 0x0}, - 1119: {region: 0xdc, script: 0x22, flags: 0x0}, - 1120: {region: 0xdc, script: 0x22, flags: 0x0}, - 1121: {region: 0x9a, script: 0xe9, flags: 0x0}, - 1122: {region: 0x166, script: 0x5b, flags: 0x0}, - 1123: {region: 0x113, script: 0x5b, flags: 0x0}, - 1124: {region: 0x132, script: 0x5b, flags: 0x0}, - 1125: {region: 0x127, script: 0x5b, flags: 0x0}, - 1126: {region: 0x166, script: 0x5b, flags: 0x0}, - 1127: {region: 0x3c, script: 0x3, flags: 0x1}, - 1128: {region: 0x166, script: 0x5b, flags: 0x0}, - 1129: {region: 0x166, script: 0x5b, flags: 0x0}, - 1130: {region: 0x166, script: 0x5b, flags: 0x0}, - 1131: {region: 0x124, script: 0xee, flags: 0x0}, - 1132: {region: 0xdc, script: 0x22, flags: 0x0}, - 1133: {region: 0xdc, script: 0x22, flags: 0x0}, - 1134: {region: 0xdc, script: 0x22, flags: 0x0}, - 1135: {region: 0x70, script: 0x2c, flags: 0x0}, - 1136: {region: 0x166, script: 0x5b, flags: 0x0}, - 1137: {region: 0x6e, script: 0x2c, flags: 0x0}, - 1138: {region: 0x166, script: 0x5b, flags: 0x0}, - 1139: {region: 0x166, script: 0x5b, flags: 0x0}, - 1140: {region: 0x166, script: 0x5b, flags: 0x0}, - 1141: {region: 0xd7, script: 0x5b, flags: 0x0}, - 1142: {region: 0x128, script: 0x5b, flags: 0x0}, - 1143: {region: 0x126, script: 0x5b, flags: 0x0}, - 1144: {region: 0x32, script: 0x5b, flags: 0x0}, - 1145: {region: 0xdc, script: 0x22, flags: 0x0}, - 1146: {region: 0xe8, script: 0x5b, flags: 0x0}, - 1147: {region: 0x166, script: 0x5b, flags: 0x0}, - 1148: {region: 0x166, script: 0x5b, flags: 0x0}, - 1149: {region: 0x32, script: 0x5b, flags: 0x0}, - 1150: {region: 0xd5, script: 0x5b, flags: 0x0}, - 1151: {region: 0x166, script: 0x5b, flags: 0x0}, - 1152: {region: 0x162, script: 0x5b, flags: 0x0}, - 1153: {region: 0x166, script: 0x5b, flags: 0x0}, - 1154: {region: 0x12a, script: 0x5b, flags: 0x0}, - 1155: {region: 0x166, script: 0x5b, flags: 0x0}, - 1156: {region: 0xcf, script: 0x5b, flags: 0x0}, - 1157: {region: 0x166, script: 0x5b, flags: 0x0}, - 1158: {region: 0xe7, script: 0x5b, flags: 0x0}, - 1159: {region: 0x166, script: 0x5b, flags: 0x0}, - 1160: {region: 0x166, script: 0x5b, flags: 0x0}, - 1161: {region: 0x166, script: 0x5b, flags: 0x0}, - 1162: {region: 0x12c, script: 0x5b, flags: 0x0}, - 1163: {region: 0x12c, script: 0x5b, flags: 0x0}, - 1164: {region: 0x12f, script: 0x5b, flags: 0x0}, - 1165: {region: 0x166, script: 0x5, flags: 0x0}, - 1166: {region: 0x162, script: 0x5b, flags: 0x0}, - 1167: {region: 0x88, script: 0x34, flags: 0x0}, - 1168: {region: 0xdc, script: 0x22, flags: 0x0}, - 1169: {region: 0xe8, script: 0x5b, flags: 0x0}, - 1170: {region: 0x43, script: 0xef, flags: 0x0}, - 1171: {region: 0x166, script: 0x5b, flags: 0x0}, - 1172: {region: 0x107, script: 0x20, flags: 0x0}, - 1173: {region: 0x166, script: 0x5b, flags: 0x0}, - 1174: {region: 0x166, script: 0x5b, flags: 0x0}, - 1175: {region: 0x132, script: 0x5b, flags: 0x0}, - 1176: {region: 0x166, script: 0x5b, flags: 0x0}, - 1177: {region: 0x124, script: 0xee, flags: 0x0}, - 1178: {region: 0x32, script: 0x5b, flags: 0x0}, - 1179: {region: 0x166, script: 0x5b, flags: 0x0}, - 1180: {region: 0x166, script: 0x5b, flags: 0x0}, - 1181: {region: 0xcf, script: 0x5b, flags: 0x0}, - 1182: {region: 0x166, script: 0x5b, flags: 0x0}, - 1183: {region: 0x166, script: 0x5b, flags: 0x0}, - 1184: {region: 0x12e, script: 0x5b, flags: 0x0}, - 1185: {region: 0x166, script: 0x5b, flags: 0x0}, - 1187: {region: 0x166, script: 0x5b, flags: 0x0}, - 1188: {region: 0xd5, script: 0x5b, flags: 0x0}, - 1189: {region: 0x53, script: 0xe7, flags: 0x0}, - 1190: {region: 0xe6, script: 0x5b, flags: 0x0}, - 1191: {region: 0x166, script: 0x5b, flags: 0x0}, - 1192: {region: 0x107, script: 0x20, flags: 0x0}, - 1193: {region: 0xbb, script: 0x5b, flags: 0x0}, - 1194: {region: 0x166, script: 0x5b, flags: 0x0}, - 1195: {region: 0x107, script: 0x20, flags: 0x0}, - 1196: {region: 0x3f, script: 0x4, flags: 0x1}, - 1197: {region: 0x11d, script: 0xf3, flags: 0x0}, - 1198: {region: 0x131, script: 0x20, flags: 0x0}, - 1199: {region: 0x76, script: 0x5b, flags: 0x0}, - 1200: {region: 0x2a, script: 0x5b, flags: 0x0}, - 1202: {region: 0x43, script: 0x3, flags: 0x1}, - 1203: {region: 0x9a, script: 0xe, flags: 0x0}, - 1204: {region: 0xe9, script: 0x5, flags: 0x0}, - 1205: {region: 0x166, script: 0x5b, flags: 0x0}, - 1206: {region: 0x166, script: 0x5b, flags: 0x0}, - 1207: {region: 0x166, script: 0x5b, flags: 0x0}, - 1208: {region: 0x166, script: 0x5b, flags: 0x0}, - 1209: {region: 0x166, script: 0x5b, flags: 0x0}, - 1210: {region: 0x166, script: 0x5b, flags: 0x0}, - 1211: {region: 0x166, script: 0x5b, flags: 0x0}, - 1212: {region: 0x46, script: 0x4, flags: 0x1}, - 1213: {region: 0x166, script: 0x5b, flags: 0x0}, - 1214: {region: 0xb5, script: 0xf4, flags: 0x0}, - 1215: {region: 0x166, script: 0x5b, flags: 0x0}, - 1216: {region: 0x162, script: 0x5b, flags: 0x0}, - 1217: {region: 0x9f, script: 0x5b, flags: 0x0}, - 1218: {region: 0x107, script: 0x5b, flags: 0x0}, - 1219: {region: 0x13f, script: 0x5b, flags: 0x0}, - 1220: {region: 0x11c, script: 0x5b, flags: 0x0}, - 1221: {region: 0x166, script: 0x5b, flags: 0x0}, - 1222: {region: 0x36, script: 0x5b, flags: 0x0}, - 1223: {region: 0x61, script: 0x5b, flags: 0x0}, - 1224: {region: 0xd2, script: 0x5b, flags: 0x0}, - 1225: {region: 0x1, script: 0x5b, flags: 0x0}, - 1226: {region: 0x107, script: 0x5b, flags: 0x0}, - 1227: {region: 0x6b, script: 0x5b, flags: 0x0}, - 1228: {region: 0x130, script: 0x5b, flags: 0x0}, - 1229: {region: 0x166, script: 0x5b, flags: 0x0}, - 1230: {region: 0x36, script: 0x5b, flags: 0x0}, - 1231: {region: 0x4e, script: 0x5b, flags: 0x0}, - 1232: {region: 0x166, script: 0x5b, flags: 0x0}, - 1233: {region: 0x70, script: 0x2c, flags: 0x0}, - 1234: {region: 0x166, script: 0x5b, flags: 0x0}, - 1235: {region: 0xe8, script: 0x5b, flags: 0x0}, - 1236: {region: 0x2f, script: 0x5b, flags: 0x0}, - 1237: {region: 0x9a, script: 0xe9, flags: 0x0}, - 1238: {region: 0x9a, script: 0x22, flags: 0x0}, - 1239: {region: 0x166, script: 0x5b, flags: 0x0}, - 1240: {region: 0x166, script: 0x5b, flags: 0x0}, - 1241: {region: 0x166, script: 0x5b, flags: 0x0}, - 1242: {region: 0x166, script: 0x5b, flags: 0x0}, - 1243: {region: 0x166, script: 0x5b, flags: 0x0}, - 1244: {region: 0x166, script: 0x5b, flags: 0x0}, - 1245: {region: 0x166, script: 0x5b, flags: 0x0}, - 1246: {region: 0x166, script: 0x5b, flags: 0x0}, - 1247: {region: 0x166, script: 0x5b, flags: 0x0}, - 1248: {region: 0x141, script: 0x5b, flags: 0x0}, - 1249: {region: 0x166, script: 0x5b, flags: 0x0}, - 1250: {region: 0x166, script: 0x5b, flags: 0x0}, - 1251: {region: 0xa9, script: 0x5, flags: 0x0}, - 1252: {region: 0x166, script: 0x5b, flags: 0x0}, - 1253: {region: 0x115, script: 0x5b, flags: 0x0}, - 1254: {region: 0x166, script: 0x5b, flags: 0x0}, - 1255: {region: 0x166, script: 0x5b, flags: 0x0}, - 1256: {region: 0x166, script: 0x5b, flags: 0x0}, - 1257: {region: 0x166, script: 0x5b, flags: 0x0}, - 1258: {region: 0x9a, script: 0x22, flags: 0x0}, - 1259: {region: 0x53, script: 0x3b, flags: 0x0}, - 1260: {region: 0x166, script: 0x5b, flags: 0x0}, - 1261: {region: 0x166, script: 0x5b, flags: 0x0}, - 1262: {region: 0x41, script: 0x5b, flags: 0x0}, - 1263: {region: 0x166, script: 0x5b, flags: 0x0}, - 1264: {region: 0x12c, script: 0x18, flags: 0x0}, - 1265: {region: 0x166, script: 0x5b, flags: 0x0}, - 1266: {region: 0x162, script: 0x5b, flags: 0x0}, - 1267: {region: 0x166, script: 0x5b, flags: 0x0}, - 1268: {region: 0x12c, script: 0x63, flags: 0x0}, - 1269: {region: 0x12c, script: 0x64, flags: 0x0}, - 1270: {region: 0x7e, script: 0x2e, flags: 0x0}, - 1271: {region: 0x53, script: 0x68, flags: 0x0}, - 1272: {region: 0x10c, script: 0x6d, flags: 0x0}, - 1273: {region: 0x109, script: 0x79, flags: 0x0}, - 1274: {region: 0x9a, script: 0x22, flags: 0x0}, - 1275: {region: 0x132, script: 0x5b, flags: 0x0}, - 1276: {region: 0x166, script: 0x5b, flags: 0x0}, - 1277: {region: 0x9d, script: 0x93, flags: 0x0}, - 1278: {region: 0x166, script: 0x5b, flags: 0x0}, - 1279: {region: 0x15f, script: 0xce, flags: 0x0}, - 1280: {region: 0x166, script: 0x5b, flags: 0x0}, - 1281: {region: 0x166, script: 0x5b, flags: 0x0}, - 1282: {region: 0xdc, script: 0x22, flags: 0x0}, - 1283: {region: 0x166, script: 0x5b, flags: 0x0}, - 1284: {region: 0x166, script: 0x5b, flags: 0x0}, - 1285: {region: 0xd2, script: 0x5b, flags: 0x0}, - 1286: {region: 0x76, script: 0x5b, flags: 0x0}, - 1287: {region: 0x166, script: 0x5b, flags: 0x0}, - 1288: {region: 0x166, script: 0x5b, flags: 0x0}, - 1289: {region: 0x52, script: 0x5b, flags: 0x0}, - 1290: {region: 0x166, script: 0x5b, flags: 0x0}, - 1291: {region: 0x166, script: 0x5b, flags: 0x0}, - 1292: {region: 0x166, script: 0x5b, flags: 0x0}, - 1293: {region: 0x52, script: 0x5b, flags: 0x0}, - 1294: {region: 0x166, script: 0x5b, flags: 0x0}, - 1295: {region: 0x166, script: 0x5b, flags: 0x0}, - 1296: {region: 0x166, script: 0x5b, flags: 0x0}, - 1297: {region: 0x166, script: 0x5b, flags: 0x0}, - 1298: {region: 0x1, script: 0x3e, flags: 0x0}, - 1299: {region: 0x166, script: 0x5b, flags: 0x0}, - 1300: {region: 0x166, script: 0x5b, flags: 0x0}, - 1301: {region: 0x166, script: 0x5b, flags: 0x0}, - 1302: {region: 0x166, script: 0x5b, flags: 0x0}, - 1303: {region: 0x166, script: 0x5b, flags: 0x0}, - 1304: {region: 0xd7, script: 0x5b, flags: 0x0}, - 1305: {region: 0x166, script: 0x5b, flags: 0x0}, - 1306: {region: 0x166, script: 0x5b, flags: 0x0}, - 1307: {region: 0x166, script: 0x5b, flags: 0x0}, - 1308: {region: 0x41, script: 0x5b, flags: 0x0}, - 1309: {region: 0x166, script: 0x5b, flags: 0x0}, - 1310: {region: 0xd0, script: 0x5b, flags: 0x0}, - 1311: {region: 0x4a, script: 0x3, flags: 0x1}, - 1312: {region: 0x166, script: 0x5b, flags: 0x0}, - 1313: {region: 0x166, script: 0x5b, flags: 0x0}, - 1314: {region: 0x166, script: 0x5b, flags: 0x0}, - 1315: {region: 0x53, script: 0x5b, flags: 0x0}, - 1316: {region: 0x10c, script: 0x5b, flags: 0x0}, - 1318: {region: 0xa9, script: 0x5, flags: 0x0}, - 1319: {region: 0xda, script: 0x5b, flags: 0x0}, - 1320: {region: 0xbb, script: 0xeb, flags: 0x0}, - 1321: {region: 0x4d, script: 0x14, flags: 0x1}, - 1322: {region: 0x53, script: 0x7f, flags: 0x0}, - 1323: {region: 0x166, script: 0x5b, flags: 0x0}, - 1324: {region: 0x123, script: 0x5b, flags: 0x0}, - 1325: {region: 0xd1, script: 0x5b, flags: 0x0}, - 1326: {region: 0x166, script: 0x5b, flags: 0x0}, - 1327: {region: 0x162, script: 0x5b, flags: 0x0}, - 1329: {region: 0x12c, script: 0x5b, flags: 0x0}, -} - -// likelyLangList holds lists info associated with likelyLang. -// Size: 582 bytes, 97 elements -var likelyLangList = [97]likelyScriptRegion{ - 0: {region: 0x9d, script: 0x7, flags: 0x0}, - 1: {region: 0xa2, script: 0x7a, flags: 0x2}, - 2: {region: 0x11d, script: 0x87, flags: 0x2}, - 3: {region: 0x32, script: 0x5b, flags: 0x0}, - 4: {region: 0x9c, script: 0x5, flags: 0x4}, - 5: {region: 0x9d, script: 0x5, flags: 0x4}, - 6: {region: 0x107, script: 0x20, flags: 0x4}, - 7: {region: 0x9d, script: 0x5, flags: 0x2}, - 8: {region: 0x107, script: 0x20, flags: 0x0}, - 9: {region: 0x38, script: 0x2f, flags: 0x2}, - 10: {region: 0x136, script: 0x5b, flags: 0x0}, - 11: {region: 0x7c, script: 0xd1, flags: 0x2}, - 12: {region: 0x115, script: 0x5b, flags: 0x0}, - 13: {region: 0x85, script: 0x1, flags: 0x2}, - 14: {region: 0x5e, script: 0x1f, flags: 0x0}, - 15: {region: 0x88, script: 0x60, flags: 0x2}, - 16: {region: 0xd7, script: 0x5b, flags: 0x0}, - 17: {region: 0x52, script: 0x5, flags: 0x4}, - 18: {region: 0x10c, script: 0x5, flags: 0x4}, - 19: {region: 0xaf, script: 0x20, flags: 0x0}, - 20: {region: 0x24, script: 0x5, flags: 0x4}, - 21: {region: 0x53, script: 0x5, flags: 0x4}, - 22: {region: 0x9d, script: 0x5, flags: 0x4}, - 23: {region: 0xc6, script: 0x5, flags: 0x4}, - 24: {region: 0x53, script: 0x5, flags: 0x2}, - 25: {region: 0x12c, script: 0x5b, flags: 0x0}, - 26: {region: 0xb1, script: 0x5, flags: 0x4}, - 27: {region: 0x9c, script: 0x5, flags: 0x2}, - 28: {region: 0xa6, script: 0x20, flags: 0x0}, - 29: {region: 0x53, script: 0x5, flags: 0x4}, - 30: {region: 0x12c, script: 0x5b, flags: 0x4}, - 31: {region: 0x53, script: 0x5, flags: 0x2}, - 32: {region: 0x12c, script: 0x5b, flags: 0x2}, - 33: {region: 0xdc, script: 0x22, flags: 0x0}, - 34: {region: 0x9a, script: 0x5e, flags: 0x2}, - 35: {region: 0x84, script: 0x5b, flags: 0x0}, - 36: {region: 0x85, script: 0x7e, flags: 0x4}, - 37: {region: 0x85, script: 0x7e, flags: 0x2}, - 38: {region: 0xc6, script: 0x20, flags: 0x0}, - 39: {region: 0x53, script: 0x71, flags: 0x4}, - 40: {region: 0x53, script: 0x71, flags: 0x2}, - 41: {region: 0xd1, script: 0x5b, flags: 0x0}, - 42: {region: 0x4a, script: 0x5, flags: 0x4}, - 43: {region: 0x96, script: 0x5, flags: 0x4}, - 44: {region: 0x9a, script: 0x36, flags: 0x0}, - 45: {region: 0xe9, script: 0x5, flags: 0x4}, - 46: {region: 0xe9, script: 0x5, flags: 0x2}, - 47: {region: 0x9d, script: 0x8d, flags: 0x0}, - 48: {region: 0x53, script: 0x8e, flags: 0x2}, - 49: {region: 0xbb, script: 0xeb, flags: 0x0}, - 50: {region: 0xda, script: 0x5b, flags: 0x4}, - 51: {region: 0xe9, script: 0x5, flags: 0x0}, - 52: {region: 0x9a, script: 0x22, flags: 0x2}, - 53: {region: 0x9a, script: 0x50, flags: 0x2}, - 54: {region: 0x9a, script: 0xd5, flags: 0x2}, - 55: {region: 0x106, script: 0x20, flags: 0x0}, - 56: {region: 0xbe, script: 0x5b, flags: 0x4}, - 57: {region: 0x105, script: 0x5b, flags: 0x4}, - 58: {region: 0x107, script: 0x5b, flags: 0x4}, - 59: {region: 0x12c, script: 0x5b, flags: 0x4}, - 60: {region: 0x125, script: 0x20, flags: 0x0}, - 61: {region: 0xe9, script: 0x5, flags: 0x4}, - 62: {region: 0xe9, script: 0x5, flags: 0x2}, - 63: {region: 0x53, script: 0x5, flags: 0x0}, - 64: {region: 0xaf, script: 0x20, flags: 0x4}, - 65: {region: 0xc6, script: 0x20, flags: 0x4}, - 66: {region: 0xaf, script: 0x20, flags: 0x2}, - 67: {region: 0x9a, script: 0xe, flags: 0x0}, - 68: {region: 0xdc, script: 0x22, flags: 0x4}, - 69: {region: 0xdc, script: 0x22, flags: 0x2}, - 70: {region: 0x138, script: 0x5b, flags: 0x0}, - 71: {region: 0x24, script: 0x5, flags: 0x4}, - 72: {region: 0x53, script: 0x20, flags: 0x4}, - 73: {region: 0x24, script: 0x5, flags: 0x2}, - 74: {region: 0x8e, script: 0x3c, flags: 0x0}, - 75: {region: 0x53, script: 0x3b, flags: 0x4}, - 76: {region: 0x53, script: 0x3b, flags: 0x2}, - 77: {region: 0x53, script: 0x3b, flags: 0x0}, - 78: {region: 0x2f, script: 0x3c, flags: 0x4}, - 79: {region: 0x3e, script: 0x3c, flags: 0x4}, - 80: {region: 0x7c, script: 0x3c, flags: 0x4}, - 81: {region: 0x7f, script: 0x3c, flags: 0x4}, - 82: {region: 0x8e, script: 0x3c, flags: 0x4}, - 83: {region: 0x96, script: 0x3c, flags: 0x4}, - 84: {region: 0xc7, script: 0x3c, flags: 0x4}, - 85: {region: 0xd1, script: 0x3c, flags: 0x4}, - 86: {region: 0xe3, script: 0x3c, flags: 0x4}, - 87: {region: 0xe6, script: 0x3c, flags: 0x4}, - 88: {region: 0xe8, script: 0x3c, flags: 0x4}, - 89: {region: 0x117, script: 0x3c, flags: 0x4}, - 90: {region: 0x124, script: 0x3c, flags: 0x4}, - 91: {region: 0x12f, script: 0x3c, flags: 0x4}, - 92: {region: 0x136, script: 0x3c, flags: 0x4}, - 93: {region: 0x13f, script: 0x3c, flags: 0x4}, - 94: {region: 0x12f, script: 0x11, flags: 0x2}, - 95: {region: 0x12f, script: 0x37, flags: 0x2}, - 96: {region: 0x12f, script: 0x3c, flags: 0x2}, -} - -type likelyLangScript struct { - lang uint16 - script uint16 - flags uint8 -} - -// likelyRegion is a lookup table, indexed by regionID, for the most likely -// languages and scripts given incomplete information. If more entries exist -// for a given regionID, lang and script are the index and size respectively -// of the list in likelyRegionList. -// TODO: exclude containers and user-definable regions from the list. -// Size: 2154 bytes, 359 elements -var likelyRegion = [359]likelyLangScript{ - 34: {lang: 0xd7, script: 0x5b, flags: 0x0}, - 35: {lang: 0x3a, script: 0x5, flags: 0x0}, - 36: {lang: 0x0, script: 0x2, flags: 0x1}, - 39: {lang: 0x2, script: 0x2, flags: 0x1}, - 40: {lang: 0x4, script: 0x2, flags: 0x1}, - 42: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 43: {lang: 0x0, script: 0x5b, flags: 0x0}, - 44: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 45: {lang: 0x41b, script: 0x5b, flags: 0x0}, - 46: {lang: 0x10d, script: 0x5b, flags: 0x0}, - 48: {lang: 0x367, script: 0x5b, flags: 0x0}, - 49: {lang: 0x444, script: 0x5b, flags: 0x0}, - 50: {lang: 0x58, script: 0x5b, flags: 0x0}, - 51: {lang: 0x6, script: 0x2, flags: 0x1}, - 53: {lang: 0xa5, script: 0xe, flags: 0x0}, - 54: {lang: 0x367, script: 0x5b, flags: 0x0}, - 55: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 56: {lang: 0x7e, script: 0x20, flags: 0x0}, - 57: {lang: 0x3a, script: 0x5, flags: 0x0}, - 58: {lang: 0x3d9, script: 0x5b, flags: 0x0}, - 59: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 60: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 62: {lang: 0x31f, script: 0x5b, flags: 0x0}, - 63: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 64: {lang: 0x3a1, script: 0x5b, flags: 0x0}, - 65: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 67: {lang: 0x8, script: 0x2, flags: 0x1}, - 69: {lang: 0x0, script: 0x5b, flags: 0x0}, - 71: {lang: 0x71, script: 0x20, flags: 0x0}, - 73: {lang: 0x512, script: 0x3e, flags: 0x2}, - 74: {lang: 0x31f, script: 0x5, flags: 0x2}, - 75: {lang: 0x445, script: 0x5b, flags: 0x0}, - 76: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 77: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 78: {lang: 0x10d, script: 0x5b, flags: 0x0}, - 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 81: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 82: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 83: {lang: 0xa, script: 0x4, flags: 0x1}, - 84: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 85: {lang: 0x0, script: 0x5b, flags: 0x0}, - 87: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 90: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 91: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 92: {lang: 0x3a1, script: 0x5b, flags: 0x0}, - 94: {lang: 0xe, script: 0x2, flags: 0x1}, - 95: {lang: 0xfa, script: 0x5b, flags: 0x0}, - 97: {lang: 0x10d, script: 0x5b, flags: 0x0}, - 99: {lang: 0x1, script: 0x5b, flags: 0x0}, - 100: {lang: 0x101, script: 0x5b, flags: 0x0}, - 102: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 104: {lang: 0x10, script: 0x2, flags: 0x1}, - 105: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 106: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 107: {lang: 0x140, script: 0x5b, flags: 0x0}, - 108: {lang: 0x3a, script: 0x5, flags: 0x0}, - 109: {lang: 0x3a, script: 0x5, flags: 0x0}, - 110: {lang: 0x46f, script: 0x2c, flags: 0x0}, - 111: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 112: {lang: 0x12, script: 0x2, flags: 0x1}, - 114: {lang: 0x10d, script: 0x5b, flags: 0x0}, - 115: {lang: 0x151, script: 0x5b, flags: 0x0}, - 116: {lang: 0x1c0, script: 0x22, flags: 0x2}, - 119: {lang: 0x158, script: 0x5b, flags: 0x0}, - 121: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 123: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 124: {lang: 0x14, script: 0x2, flags: 0x1}, - 126: {lang: 0x16, script: 0x3, flags: 0x1}, - 127: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 129: {lang: 0x21, script: 0x5b, flags: 0x0}, - 131: {lang: 0x245, script: 0x5b, flags: 0x0}, - 133: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 134: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 135: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 136: {lang: 0x19, script: 0x2, flags: 0x1}, - 137: {lang: 0x0, script: 0x5b, flags: 0x0}, - 138: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 140: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 142: {lang: 0x529, script: 0x3c, flags: 0x0}, - 143: {lang: 0x0, script: 0x5b, flags: 0x0}, - 144: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 145: {lang: 0x1d1, script: 0x5b, flags: 0x0}, - 146: {lang: 0x1d4, script: 0x5b, flags: 0x0}, - 147: {lang: 0x1d5, script: 0x5b, flags: 0x0}, - 149: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 150: {lang: 0x1b, script: 0x2, flags: 0x1}, - 152: {lang: 0x1bc, script: 0x3e, flags: 0x0}, - 154: {lang: 0x1d, script: 0x3, flags: 0x1}, - 156: {lang: 0x3a, script: 0x5, flags: 0x0}, - 157: {lang: 0x20, script: 0x2, flags: 0x1}, - 158: {lang: 0x1f8, script: 0x5b, flags: 0x0}, - 159: {lang: 0x1f9, script: 0x5b, flags: 0x0}, - 162: {lang: 0x3a, script: 0x5, flags: 0x0}, - 163: {lang: 0x200, script: 0x49, flags: 0x0}, - 165: {lang: 0x445, script: 0x5b, flags: 0x0}, - 166: {lang: 0x28a, script: 0x20, flags: 0x0}, - 167: {lang: 0x22, script: 0x3, flags: 0x1}, - 169: {lang: 0x25, script: 0x2, flags: 0x1}, - 171: {lang: 0x254, script: 0x54, flags: 0x0}, - 172: {lang: 0x254, script: 0x54, flags: 0x0}, - 173: {lang: 0x3a, script: 0x5, flags: 0x0}, - 175: {lang: 0x3e2, script: 0x20, flags: 0x0}, - 176: {lang: 0x27, script: 0x2, flags: 0x1}, - 177: {lang: 0x3a, script: 0x5, flags: 0x0}, - 179: {lang: 0x10d, script: 0x5b, flags: 0x0}, - 180: {lang: 0x40c, script: 0xd6, flags: 0x0}, - 182: {lang: 0x43b, script: 0x5b, flags: 0x0}, - 183: {lang: 0x2c0, script: 0x5b, flags: 0x0}, - 184: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 185: {lang: 0x2c7, script: 0x5b, flags: 0x0}, - 186: {lang: 0x3a, script: 0x5, flags: 0x0}, - 187: {lang: 0x29, script: 0x2, flags: 0x1}, - 188: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 189: {lang: 0x2b, script: 0x2, flags: 0x1}, - 190: {lang: 0x432, script: 0x5b, flags: 0x0}, - 191: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 192: {lang: 0x2f1, script: 0x5b, flags: 0x0}, - 195: {lang: 0x2d, script: 0x2, flags: 0x1}, - 196: {lang: 0xa0, script: 0x5b, flags: 0x0}, - 197: {lang: 0x2f, script: 0x2, flags: 0x1}, - 198: {lang: 0x31, script: 0x2, flags: 0x1}, - 199: {lang: 0x33, script: 0x2, flags: 0x1}, - 201: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 202: {lang: 0x35, script: 0x2, flags: 0x1}, - 204: {lang: 0x320, script: 0x5b, flags: 0x0}, - 205: {lang: 0x37, script: 0x3, flags: 0x1}, - 206: {lang: 0x128, script: 0xed, flags: 0x0}, - 208: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 209: {lang: 0x31f, script: 0x5b, flags: 0x0}, - 210: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 211: {lang: 0x16, script: 0x5b, flags: 0x0}, - 212: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 213: {lang: 0x1b4, script: 0x5b, flags: 0x0}, - 215: {lang: 0x1b4, script: 0x5, flags: 0x2}, - 217: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 218: {lang: 0x367, script: 0x5b, flags: 0x0}, - 219: {lang: 0x347, script: 0x5b, flags: 0x0}, - 220: {lang: 0x351, script: 0x22, flags: 0x0}, - 226: {lang: 0x3a, script: 0x5, flags: 0x0}, - 227: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 229: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 230: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 231: {lang: 0x486, script: 0x5b, flags: 0x0}, - 232: {lang: 0x153, script: 0x5b, flags: 0x0}, - 233: {lang: 0x3a, script: 0x3, flags: 0x1}, - 234: {lang: 0x3b3, script: 0x5b, flags: 0x0}, - 235: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 237: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 238: {lang: 0x3a, script: 0x5, flags: 0x0}, - 239: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 241: {lang: 0x3a2, script: 0x5b, flags: 0x0}, - 242: {lang: 0x194, script: 0x5b, flags: 0x0}, - 244: {lang: 0x3a, script: 0x5, flags: 0x0}, - 259: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 261: {lang: 0x3d, script: 0x2, flags: 0x1}, - 262: {lang: 0x432, script: 0x20, flags: 0x0}, - 263: {lang: 0x3f, script: 0x2, flags: 0x1}, - 264: {lang: 0x3e5, script: 0x5b, flags: 0x0}, - 265: {lang: 0x3a, script: 0x5, flags: 0x0}, - 267: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 268: {lang: 0x3a, script: 0x5, flags: 0x0}, - 269: {lang: 0x41, script: 0x2, flags: 0x1}, - 272: {lang: 0x416, script: 0x5b, flags: 0x0}, - 273: {lang: 0x347, script: 0x5b, flags: 0x0}, - 274: {lang: 0x43, script: 0x2, flags: 0x1}, - 276: {lang: 0x1f9, script: 0x5b, flags: 0x0}, - 277: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 278: {lang: 0x429, script: 0x5b, flags: 0x0}, - 279: {lang: 0x367, script: 0x5b, flags: 0x0}, - 281: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 283: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 285: {lang: 0x45, script: 0x2, flags: 0x1}, - 289: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 290: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 291: {lang: 0x47, script: 0x2, flags: 0x1}, - 292: {lang: 0x49, script: 0x3, flags: 0x1}, - 293: {lang: 0x4c, script: 0x2, flags: 0x1}, - 294: {lang: 0x477, script: 0x5b, flags: 0x0}, - 295: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 296: {lang: 0x476, script: 0x5b, flags: 0x0}, - 297: {lang: 0x4e, script: 0x2, flags: 0x1}, - 298: {lang: 0x482, script: 0x5b, flags: 0x0}, - 300: {lang: 0x50, script: 0x4, flags: 0x1}, - 302: {lang: 0x4a0, script: 0x5b, flags: 0x0}, - 303: {lang: 0x54, script: 0x2, flags: 0x1}, - 304: {lang: 0x445, script: 0x5b, flags: 0x0}, - 305: {lang: 0x56, script: 0x3, flags: 0x1}, - 306: {lang: 0x445, script: 0x5b, flags: 0x0}, - 310: {lang: 0x512, script: 0x3e, flags: 0x2}, - 311: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 312: {lang: 0x4bc, script: 0x5b, flags: 0x0}, - 313: {lang: 0x1f9, script: 0x5b, flags: 0x0}, - 316: {lang: 0x13e, script: 0x5b, flags: 0x0}, - 319: {lang: 0x4c3, script: 0x5b, flags: 0x0}, - 320: {lang: 0x8a, script: 0x5b, flags: 0x0}, - 321: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 323: {lang: 0x41b, script: 0x5b, flags: 0x0}, - 334: {lang: 0x59, script: 0x2, flags: 0x1}, - 351: {lang: 0x3a, script: 0x5, flags: 0x0}, - 352: {lang: 0x5b, script: 0x2, flags: 0x1}, - 357: {lang: 0x423, script: 0x5b, flags: 0x0}, -} - -// likelyRegionList holds lists info associated with likelyRegion. -// Size: 558 bytes, 93 elements -var likelyRegionList = [93]likelyLangScript{ - 0: {lang: 0x148, script: 0x5, flags: 0x0}, - 1: {lang: 0x476, script: 0x5b, flags: 0x0}, - 2: {lang: 0x431, script: 0x5b, flags: 0x0}, - 3: {lang: 0x2ff, script: 0x20, flags: 0x0}, - 4: {lang: 0x1d7, script: 0x8, flags: 0x0}, - 5: {lang: 0x274, script: 0x5b, flags: 0x0}, - 6: {lang: 0xb7, script: 0x5b, flags: 0x0}, - 7: {lang: 0x432, script: 0x20, flags: 0x0}, - 8: {lang: 0x12d, script: 0xef, flags: 0x0}, - 9: {lang: 0x351, script: 0x22, flags: 0x0}, - 10: {lang: 0x529, script: 0x3b, flags: 0x0}, - 11: {lang: 0x4ac, script: 0x5, flags: 0x0}, - 12: {lang: 0x523, script: 0x5b, flags: 0x0}, - 13: {lang: 0x29a, script: 0xee, flags: 0x0}, - 14: {lang: 0x136, script: 0x34, flags: 0x0}, - 15: {lang: 0x48a, script: 0x5b, flags: 0x0}, - 16: {lang: 0x3a, script: 0x5, flags: 0x0}, - 17: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 18: {lang: 0x27, script: 0x2c, flags: 0x0}, - 19: {lang: 0x139, script: 0x5b, flags: 0x0}, - 20: {lang: 0x26a, script: 0x5, flags: 0x2}, - 21: {lang: 0x512, script: 0x3e, flags: 0x2}, - 22: {lang: 0x210, script: 0x2e, flags: 0x0}, - 23: {lang: 0x5, script: 0x20, flags: 0x0}, - 24: {lang: 0x274, script: 0x5b, flags: 0x0}, - 25: {lang: 0x136, script: 0x34, flags: 0x0}, - 26: {lang: 0x2ff, script: 0x20, flags: 0x0}, - 27: {lang: 0x1e1, script: 0x5b, flags: 0x0}, - 28: {lang: 0x31f, script: 0x5, flags: 0x0}, - 29: {lang: 0x1be, script: 0x22, flags: 0x0}, - 30: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 31: {lang: 0x236, script: 0x76, flags: 0x0}, - 32: {lang: 0x148, script: 0x5, flags: 0x0}, - 33: {lang: 0x476, script: 0x5b, flags: 0x0}, - 34: {lang: 0x24a, script: 0x4f, flags: 0x0}, - 35: {lang: 0xe6, script: 0x5, flags: 0x0}, - 36: {lang: 0x226, script: 0xee, flags: 0x0}, - 37: {lang: 0x3a, script: 0x5, flags: 0x0}, - 38: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 39: {lang: 0x2b8, script: 0x58, flags: 0x0}, - 40: {lang: 0x226, script: 0xee, flags: 0x0}, - 41: {lang: 0x3a, script: 0x5, flags: 0x0}, - 42: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 43: {lang: 0x3dc, script: 0x5b, flags: 0x0}, - 44: {lang: 0x4ae, script: 0x20, flags: 0x0}, - 45: {lang: 0x2ff, script: 0x20, flags: 0x0}, - 46: {lang: 0x431, script: 0x5b, flags: 0x0}, - 47: {lang: 0x331, script: 0x76, flags: 0x0}, - 48: {lang: 0x213, script: 0x5b, flags: 0x0}, - 49: {lang: 0x30b, script: 0x20, flags: 0x0}, - 50: {lang: 0x242, script: 0x5, flags: 0x0}, - 51: {lang: 0x529, script: 0x3c, flags: 0x0}, - 52: {lang: 0x3c0, script: 0x5b, flags: 0x0}, - 53: {lang: 0x3a, script: 0x5, flags: 0x0}, - 54: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 55: {lang: 0x2ed, script: 0x5b, flags: 0x0}, - 56: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 57: {lang: 0x88, script: 0x22, flags: 0x0}, - 58: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 59: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 60: {lang: 0xbe, script: 0x22, flags: 0x0}, - 61: {lang: 0x3dc, script: 0x5b, flags: 0x0}, - 62: {lang: 0x7e, script: 0x20, flags: 0x0}, - 63: {lang: 0x3e2, script: 0x20, flags: 0x0}, - 64: {lang: 0x267, script: 0x5b, flags: 0x0}, - 65: {lang: 0x444, script: 0x5b, flags: 0x0}, - 66: {lang: 0x512, script: 0x3e, flags: 0x0}, - 67: {lang: 0x412, script: 0x5b, flags: 0x0}, - 68: {lang: 0x4ae, script: 0x20, flags: 0x0}, - 69: {lang: 0x3a, script: 0x5, flags: 0x0}, - 70: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 71: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 72: {lang: 0x35, script: 0x5, flags: 0x0}, - 73: {lang: 0x46b, script: 0xee, flags: 0x0}, - 74: {lang: 0x2ec, script: 0x5, flags: 0x0}, - 75: {lang: 0x30f, script: 0x76, flags: 0x0}, - 76: {lang: 0x467, script: 0x20, flags: 0x0}, - 77: {lang: 0x148, script: 0x5, flags: 0x0}, - 78: {lang: 0x3a, script: 0x5, flags: 0x0}, - 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 80: {lang: 0x48a, script: 0x5b, flags: 0x0}, - 81: {lang: 0x58, script: 0x5, flags: 0x0}, - 82: {lang: 0x219, script: 0x20, flags: 0x0}, - 83: {lang: 0x81, script: 0x34, flags: 0x0}, - 84: {lang: 0x529, script: 0x3c, flags: 0x0}, - 85: {lang: 0x48c, script: 0x5b, flags: 0x0}, - 86: {lang: 0x4ae, script: 0x20, flags: 0x0}, - 87: {lang: 0x512, script: 0x3e, flags: 0x0}, - 88: {lang: 0x3b3, script: 0x5b, flags: 0x0}, - 89: {lang: 0x431, script: 0x5b, flags: 0x0}, - 90: {lang: 0x432, script: 0x20, flags: 0x0}, - 91: {lang: 0x15e, script: 0x5b, flags: 0x0}, - 92: {lang: 0x446, script: 0x5, flags: 0x0}, -} - -type likelyTag struct { - lang uint16 - region uint16 - script uint16 -} - -// Size: 198 bytes, 33 elements -var likelyRegionGroup = [33]likelyTag{ - 1: {lang: 0x139, region: 0xd7, script: 0x5b}, - 2: {lang: 0x139, region: 0x136, script: 0x5b}, - 3: {lang: 0x3c0, region: 0x41, script: 0x5b}, - 4: {lang: 0x139, region: 0x2f, script: 0x5b}, - 5: {lang: 0x139, region: 0xd7, script: 0x5b}, - 6: {lang: 0x13e, region: 0xd0, script: 0x5b}, - 7: {lang: 0x445, region: 0x130, script: 0x5b}, - 8: {lang: 0x3a, region: 0x6c, script: 0x5}, - 9: {lang: 0x445, region: 0x4b, script: 0x5b}, - 10: {lang: 0x139, region: 0x162, script: 0x5b}, - 11: {lang: 0x139, region: 0x136, script: 0x5b}, - 12: {lang: 0x139, region: 0x136, script: 0x5b}, - 13: {lang: 0x13e, region: 0x5a, script: 0x5b}, - 14: {lang: 0x529, region: 0x53, script: 0x3b}, - 15: {lang: 0x1be, region: 0x9a, script: 0x22}, - 16: {lang: 0x1e1, region: 0x96, script: 0x5b}, - 17: {lang: 0x1f9, region: 0x9f, script: 0x5b}, - 18: {lang: 0x139, region: 0x2f, script: 0x5b}, - 19: {lang: 0x139, region: 0xe7, script: 0x5b}, - 20: {lang: 0x139, region: 0x8b, script: 0x5b}, - 21: {lang: 0x41b, region: 0x143, script: 0x5b}, - 22: {lang: 0x529, region: 0x53, script: 0x3b}, - 23: {lang: 0x4bc, region: 0x138, script: 0x5b}, - 24: {lang: 0x3a, region: 0x109, script: 0x5}, - 25: {lang: 0x3e2, region: 0x107, script: 0x20}, - 26: {lang: 0x3e2, region: 0x107, script: 0x20}, - 27: {lang: 0x139, region: 0x7c, script: 0x5b}, - 28: {lang: 0x10d, region: 0x61, script: 0x5b}, - 29: {lang: 0x139, region: 0xd7, script: 0x5b}, - 30: {lang: 0x13e, region: 0x1f, script: 0x5b}, - 31: {lang: 0x139, region: 0x9b, script: 0x5b}, - 32: {lang: 0x139, region: 0x7c, script: 0x5b}, -} - -// Size: 264 bytes, 33 elements -var regionContainment = [33]uint64{ - // Entry 0 - 1F - 0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008, - 0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080, - 0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c, - 0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000, - 0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000, - 0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000, - 0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000, - 0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000, - // Entry 20 - 3F - 0x0000000100000000, -} - -// regionInclusion maps region identifiers to sets of regions in regionInclusionBits, -// where each set holds all groupings that are directly connected in a region -// containment graph. -// Size: 359 bytes, 359 elements -var regionInclusion = [359]uint8{ - // Entry 0 - 3F - 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, - 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23, - 0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b, - 0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d, - 0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28, - // Entry 40 - 7F - 0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33, - 0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d, - 0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x21, 0x34, - 0x23, 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e, - 0x35, 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21, - 0x39, 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a, - 0x2f, 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c, - 0x21, 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28, - // Entry 80 - BF - 0x2c, 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27, - 0x3a, 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22, - 0x34, 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38, - 0x24, 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a, - 0x2c, 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31, - 0x3c, 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d, - 0x31, 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38, - 0x2a, 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26, - // Entry C0 - FF - 0x2f, 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36, - 0x3c, 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f, - 0x34, 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d, - 0x21, 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24, - 0x29, 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b, - 0x31, 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a, - 0x21, 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - // Entry 100 - 13F - 0x21, 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33, - 0x2f, 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d, - 0x3a, 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28, - 0x2f, 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22, - 0x26, 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31, - 0x3d, 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36, - 0x2f, 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28, - 0x3d, 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31, - // Entry 140 - 17F - 0x3b, 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24, - 0x2f, 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21, -} - -// regionInclusionBits is an array of bit vectors where every vector represents -// a set of region groupings. These sets are used to compute the distance -// between two regions for the purpose of language matching. -// Size: 584 bytes, 73 elements -var regionInclusionBits = [73]uint64{ - // Entry 0 - 1F - 0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808, - 0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082, - 0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d, - 0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000, - 0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010, - 0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000, - 0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000, - 0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010, - // Entry 20 - 3F - 0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000, - 0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200, - 0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000, - 0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080, - 0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000, - 0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000, - 0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000, - 0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3, - // Entry 40 - 5F - 0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813, - 0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001, - 0x0000000102020001, -} - -// regionInclusionNext marks, for each entry in regionInclusionBits, the set of -// all groups that are reachable from the groups set in the respective entry. -// Size: 73 bytes, 73 elements -var regionInclusionNext = [73]uint8{ - // Entry 0 - 3F - 0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01, - 0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16, - 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16, - 0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04, - 0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09, - 0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07, - 0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46, - 0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e, - // Entry 40 - 7F - 0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43, - 0x43, -} - -type parentRel struct { - lang uint16 - script uint16 - maxScript uint16 - toRegion uint16 - fromRegion []uint16 -} - -// Size: 414 bytes, 5 elements -var parents = [5]parentRel{ - 0: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5d, 0x5e, 0x62, 0x65, 0x6e, 0x74, 0x75, 0x76, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x8d, 0x8e, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa0, 0xa1, 0xa5, 0xa8, 0xaa, 0xae, 0xb2, 0xb5, 0xb6, 0xc0, 0xc7, 0xcb, 0xcc, 0xcd, 0xcf, 0xd1, 0xd3, 0xd6, 0xd7, 0xde, 0xe0, 0xe1, 0xe7, 0xe8, 0xe9, 0xec, 0xf1, 0x108, 0x10a, 0x10b, 0x10c, 0x10e, 0x10f, 0x113, 0x118, 0x11c, 0x11e, 0x120, 0x126, 0x12a, 0x12d, 0x12e, 0x130, 0x132, 0x13a, 0x13d, 0x140, 0x143, 0x162, 0x163, 0x165}}, - 1: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x61, 0x64, 0x73, 0xda, 0x10d, 0x110}}, - 2: {lang: 0x13e, script: 0x0, maxScript: 0x5b, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x57, 0x5a, 0x66, 0x6a, 0x8a, 0x90, 0xd0, 0xd9, 0xe3, 0xe5, 0xed, 0xf2, 0x11b, 0x136, 0x137, 0x13c}}, - 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5b, toRegion: 0xef, fromRegion: []uint16{0x2a, 0x4e, 0x5b, 0x87, 0x8c, 0xb8, 0xc7, 0xd2, 0x119, 0x127}}, - 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8e, fromRegion: []uint16{0xc7}}, -} - -// Total table size 30466 bytes (29KiB); checksum: 7544152B diff --git a/vendor/golang.org/x/text/internal/language/tags.go b/vendor/golang.org/x/text/internal/language/tags.go deleted file mode 100644 index e7afd31..0000000 --- a/vendor/golang.org/x/text/internal/language/tags.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. -// It simplifies safe initialization of Tag values. -func MustParse(s string) Tag { - t, err := Parse(s) - if err != nil { - panic(err) - } - return t -} - -// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. -// It simplifies safe initialization of Base values. -func MustParseBase(s string) Language { - b, err := ParseBase(s) - if err != nil { - panic(err) - } - return b -} - -// MustParseScript is like ParseScript, but panics if the given script cannot be -// parsed. It simplifies safe initialization of Script values. -func MustParseScript(s string) Script { - scr, err := ParseScript(s) - if err != nil { - panic(err) - } - return scr -} - -// MustParseRegion is like ParseRegion, but panics if the given region cannot be -// parsed. It simplifies safe initialization of Region values. -func MustParseRegion(s string) Region { - r, err := ParseRegion(s) - if err != nil { - panic(err) - } - return r -} - -// Und is the root language. -var Und Tag diff --git a/vendor/golang.org/x/text/internal/tag/tag.go b/vendor/golang.org/x/text/internal/tag/tag.go deleted file mode 100644 index b5d3488..0000000 --- a/vendor/golang.org/x/text/internal/tag/tag.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package tag contains functionality handling tags and related data. -package tag // import "golang.org/x/text/internal/tag" - -import "sort" - -// An Index converts tags to a compact numeric value. -// -// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can -// be used to store additional information about the tag. -type Index string - -// Elem returns the element data at the given index. -func (s Index) Elem(x int) string { - return string(s[x*4 : x*4+4]) -} - -// Index reports the index of the given key or -1 if it could not be found. -// Only the first len(key) bytes from the start of the 4-byte entries will be -// considered for the search and the first match in Index will be returned. -func (s Index) Index(key []byte) int { - n := len(key) - // search the index of the first entry with an equal or higher value than - // key in s. - index := sort.Search(len(s)/4, func(i int) bool { - return cmp(s[i*4:i*4+n], key) != -1 - }) - i := index * 4 - if cmp(s[i:i+len(key)], key) != 0 { - return -1 - } - return index -} - -// Next finds the next occurrence of key after index x, which must have been -// obtained from a call to Index using the same key. It returns x+1 or -1. -func (s Index) Next(key []byte, x int) int { - if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 { - return x - } - return -1 -} - -// cmp returns an integer comparing a and b lexicographically. -func cmp(a Index, b []byte) int { - n := len(a) - if len(b) < n { - n = len(b) - } - for i, c := range b[:n] { - switch { - case a[i] > c: - return 1 - case a[i] < c: - return -1 - } - } - switch { - case len(a) < len(b): - return -1 - case len(a) > len(b): - return 1 - } - return 0 -} - -// Compare returns an integer comparing a and b lexicographically. -func Compare(a string, b []byte) int { - return cmp(Index(a), b) -} - -// FixCase reformats b to the same pattern of cases as form. -// If returns false if string b is malformed. -func FixCase(form string, b []byte) bool { - if len(form) != len(b) { - return false - } - for i, c := range b { - if form[i] <= 'Z' { - if c >= 'a' { - c -= 'z' - 'Z' - } - if c < 'A' || 'Z' < c { - return false - } - } else { - if c <= 'Z' { - c += 'z' - 'Z' - } - if c < 'a' || 'z' < c { - return false - } - } - b[i] = c - } - return true -} diff --git a/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go b/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go deleted file mode 100644 index e5c53b1..0000000 --- a/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package utf8internal contains low-level utf8-related constants, tables, etc. -// that are used internally by the text package. -package utf8internal - -// The default lowest and highest continuation byte. -const ( - LoCB = 0x80 // 1000 0000 - HiCB = 0xBF // 1011 1111 -) - -// Constants related to getting information of first bytes of UTF-8 sequences. -const ( - // ASCII identifies a UTF-8 byte as ASCII. - ASCII = as - - // FirstInvalid indicates a byte is invalid as a first byte of a UTF-8 - // sequence. - FirstInvalid = xx - - // SizeMask is a mask for the size bits. Use use x&SizeMask to get the size. - SizeMask = 7 - - // AcceptShift is the right-shift count for the first byte info byte to get - // the index into the AcceptRanges table. See AcceptRanges. - AcceptShift = 4 - - // The names of these constants are chosen to give nice alignment in the - // table below. The first nibble is an index into acceptRanges or F for - // special one-byte cases. The second nibble is the Rune length or the - // Status for the special one-byte case. - xx = 0xF1 // invalid: size 1 - as = 0xF0 // ASCII: size 1 - s1 = 0x02 // accept 0, size 2 - s2 = 0x13 // accept 1, size 3 - s3 = 0x03 // accept 0, size 3 - s4 = 0x23 // accept 2, size 3 - s5 = 0x34 // accept 3, size 4 - s6 = 0x04 // accept 0, size 4 - s7 = 0x44 // accept 4, size 4 -) - -// First is information about the first byte in a UTF-8 sequence. -var First = [256]uint8{ - // 1 2 3 4 5 6 7 8 9 A B C D E F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F - as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F - // 1 2 3 4 5 6 7 8 9 A B C D E F - xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F - xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F - xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF - xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF - xx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF - s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF - s2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF - s5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF -} - -// AcceptRange gives the range of valid values for the second byte in a UTF-8 -// sequence for any value for First that is not ASCII or FirstInvalid. -type AcceptRange struct { - Lo uint8 // lowest value for second byte. - Hi uint8 // highest value for second byte. -} - -// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b -// -// AcceptRanges[First[b[0]]>>AcceptShift] -// -// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting -// at b[0]. -var AcceptRanges = [...]AcceptRange{ - 0: {LoCB, HiCB}, - 1: {0xA0, HiCB}, - 2: {LoCB, 0x9F}, - 3: {0x90, HiCB}, - 4: {LoCB, 0x8F}, -} diff --git a/vendor/golang.org/x/text/language/coverage.go b/vendor/golang.org/x/text/language/coverage.go deleted file mode 100644 index a24fd1a..0000000 --- a/vendor/golang.org/x/text/language/coverage.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "fmt" - "sort" - - "golang.org/x/text/internal/language" -) - -// The Coverage interface is used to define the level of coverage of an -// internationalization service. Note that not all types are supported by all -// services. As lists may be generated on the fly, it is recommended that users -// of a Coverage cache the results. -type Coverage interface { - // Tags returns the list of supported tags. - Tags() []Tag - - // BaseLanguages returns the list of supported base languages. - BaseLanguages() []Base - - // Scripts returns the list of supported scripts. - Scripts() []Script - - // Regions returns the list of supported regions. - Regions() []Region -} - -var ( - // Supported defines a Coverage that lists all supported subtags. Tags - // always returns nil. - Supported Coverage = allSubtags{} -) - -// TODO: -// - Support Variants, numbering systems. -// - CLDR coverage levels. -// - Set of common tags defined in this package. - -type allSubtags struct{} - -// Regions returns the list of supported regions. As all regions are in a -// consecutive range, it simply returns a slice of numbers in increasing order. -// The "undefined" region is not returned. -func (s allSubtags) Regions() []Region { - reg := make([]Region, language.NumRegions) - for i := range reg { - reg[i] = Region{language.Region(i + 1)} - } - return reg -} - -// Scripts returns the list of supported scripts. As all scripts are in a -// consecutive range, it simply returns a slice of numbers in increasing order. -// The "undefined" script is not returned. -func (s allSubtags) Scripts() []Script { - scr := make([]Script, language.NumScripts) - for i := range scr { - scr[i] = Script{language.Script(i + 1)} - } - return scr -} - -// BaseLanguages returns the list of all supported base languages. It generates -// the list by traversing the internal structures. -func (s allSubtags) BaseLanguages() []Base { - bs := language.BaseLanguages() - base := make([]Base, len(bs)) - for i, b := range bs { - base[i] = Base{b} - } - return base -} - -// Tags always returns nil. -func (s allSubtags) Tags() []Tag { - return nil -} - -// coverage is used by NewCoverage which is used as a convenient way for -// creating Coverage implementations for partially defined data. Very often a -// package will only need to define a subset of slices. coverage provides a -// convenient way to do this. Moreover, packages using NewCoverage, instead of -// their own implementation, will not break if later new slice types are added. -type coverage struct { - tags func() []Tag - bases func() []Base - scripts func() []Script - regions func() []Region -} - -func (s *coverage) Tags() []Tag { - if s.tags == nil { - return nil - } - return s.tags() -} - -// bases implements sort.Interface and is used to sort base languages. -type bases []Base - -func (b bases) Len() int { - return len(b) -} - -func (b bases) Swap(i, j int) { - b[i], b[j] = b[j], b[i] -} - -func (b bases) Less(i, j int) bool { - return b[i].langID < b[j].langID -} - -// BaseLanguages returns the result from calling s.bases if it is specified or -// otherwise derives the set of supported base languages from tags. -func (s *coverage) BaseLanguages() []Base { - if s.bases == nil { - tags := s.Tags() - if len(tags) == 0 { - return nil - } - a := make([]Base, len(tags)) - for i, t := range tags { - a[i] = Base{language.Language(t.lang())} - } - sort.Sort(bases(a)) - k := 0 - for i := 1; i < len(a); i++ { - if a[k] != a[i] { - k++ - a[k] = a[i] - } - } - return a[:k+1] - } - return s.bases() -} - -func (s *coverage) Scripts() []Script { - if s.scripts == nil { - return nil - } - return s.scripts() -} - -func (s *coverage) Regions() []Region { - if s.regions == nil { - return nil - } - return s.regions() -} - -// NewCoverage returns a Coverage for the given lists. It is typically used by -// packages providing internationalization services to define their level of -// coverage. A list may be of type []T or func() []T, where T is either Tag, -// Base, Script or Region. The returned Coverage derives the value for Bases -// from Tags if no func or slice for []Base is specified. For other unspecified -// types the returned Coverage will return nil for the respective methods. -func NewCoverage(list ...interface{}) Coverage { - s := &coverage{} - for _, x := range list { - switch v := x.(type) { - case func() []Base: - s.bases = v - case func() []Script: - s.scripts = v - case func() []Region: - s.regions = v - case func() []Tag: - s.tags = v - case []Base: - s.bases = func() []Base { return v } - case []Script: - s.scripts = func() []Script { return v } - case []Region: - s.regions = func() []Region { return v } - case []Tag: - s.tags = func() []Tag { return v } - default: - panic(fmt.Sprintf("language: unsupported set type %T", v)) - } - } - return s -} diff --git a/vendor/golang.org/x/text/language/doc.go b/vendor/golang.org/x/text/language/doc.go deleted file mode 100644 index 212b77c..0000000 --- a/vendor/golang.org/x/text/language/doc.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package language implements BCP 47 language tags and related functionality. -// -// The most important function of package language is to match a list of -// user-preferred languages to a list of supported languages. -// It alleviates the developer of dealing with the complexity of this process -// and provides the user with the best experience -// (see https://blog.golang.org/matchlang). -// -// # Matching preferred against supported languages -// -// A Matcher for an application that supports English, Australian English, -// Danish, and standard Mandarin can be created as follows: -// -// var matcher = language.NewMatcher([]language.Tag{ -// language.English, // The first language is used as fallback. -// language.MustParse("en-AU"), -// language.Danish, -// language.Chinese, -// }) -// -// This list of supported languages is typically implied by the languages for -// which there exists translations of the user interface. -// -// User-preferred languages usually come as a comma-separated list of BCP 47 -// language tags. -// The MatchString finds best matches for such strings: -// -// handler(w http.ResponseWriter, r *http.Request) { -// lang, _ := r.Cookie("lang") -// accept := r.Header.Get("Accept-Language") -// tag, _ := language.MatchStrings(matcher, lang.String(), accept) -// -// // tag should now be used for the initialization of any -// // locale-specific service. -// } -// -// The Matcher's Match method can be used to match Tags directly. -// -// Matchers are aware of the intricacies of equivalence between languages, such -// as deprecated subtags, legacy tags, macro languages, mutual -// intelligibility between scripts and languages, and transparently passing -// BCP 47 user configuration. -// For instance, it will know that a reader of Bokmål Danish can read Norwegian -// and will know that Cantonese ("yue") is a good match for "zh-HK". -// -// # Using match results -// -// To guarantee a consistent user experience to the user it is important to -// use the same language tag for the selection of any locale-specific services. -// For example, it is utterly confusing to substitute spelled-out numbers -// or dates in one language in text of another language. -// More subtly confusing is using the wrong sorting order or casing -// algorithm for a certain language. -// -// All the packages in x/text that provide locale-specific services -// (e.g. collate, cases) should be initialized with the tag that was -// obtained at the start of an interaction with the user. -// -// Note that Tag that is returned by Match and MatchString may differ from any -// of the supported languages, as it may contain carried over settings from -// the user tags. -// This may be inconvenient when your application has some additional -// locale-specific data for your supported languages. -// Match and MatchString both return the index of the matched supported tag -// to simplify associating such data with the matched tag. -// -// # Canonicalization -// -// If one uses the Matcher to compare languages one does not need to -// worry about canonicalization. -// -// The meaning of a Tag varies per application. The language package -// therefore delays canonicalization and preserves information as much -// as possible. The Matcher, however, will always take into account that -// two different tags may represent the same language. -// -// By default, only legacy and deprecated tags are converted into their -// canonical equivalent. All other information is preserved. This approach makes -// the confidence scores more accurate and allows matchers to distinguish -// between variants that are otherwise lost. -// -// As a consequence, two tags that should be treated as identical according to -// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The -// Matcher handles such distinctions, though, and is aware of the -// equivalence relations. The CanonType type can be used to alter the -// canonicalization form. -// -// # References -// -// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47 -package language // import "golang.org/x/text/language" - -// TODO: explanation on how to match languages for your own locale-specific -// service. diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go deleted file mode 100644 index 4d9c661..0000000 --- a/vendor/golang.org/x/text/language/language.go +++ /dev/null @@ -1,605 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go -output tables.go - -package language - -// TODO: Remove above NOTE after: -// - verifying that tables are dropped correctly (most notably matcher tables). - -import ( - "strings" - - "golang.org/x/text/internal/language" - "golang.org/x/text/internal/language/compact" -) - -// Tag represents a BCP 47 language tag. It is used to specify an instance of a -// specific language or locale. All language tag values are guaranteed to be -// well-formed. -type Tag compact.Tag - -func makeTag(t language.Tag) (tag Tag) { - return Tag(compact.Make(t)) -} - -func (t *Tag) tag() language.Tag { - return (*compact.Tag)(t).Tag() -} - -func (t *Tag) isCompact() bool { - return (*compact.Tag)(t).IsCompact() -} - -// TODO: improve performance. -func (t *Tag) lang() language.Language { return t.tag().LangID } -func (t *Tag) region() language.Region { return t.tag().RegionID } -func (t *Tag) script() language.Script { return t.tag().ScriptID } - -// Make is a convenience wrapper for Parse that omits the error. -// In case of an error, a sensible default is returned. -func Make(s string) Tag { - return Default.Make(s) -} - -// Make is a convenience wrapper for c.Parse that omits the error. -// In case of an error, a sensible default is returned. -func (c CanonType) Make(s string) Tag { - t, _ := c.Parse(s) - return t -} - -// Raw returns the raw base language, script and region, without making an -// attempt to infer their values. -func (t Tag) Raw() (b Base, s Script, r Region) { - tt := t.tag() - return Base{tt.LangID}, Script{tt.ScriptID}, Region{tt.RegionID} -} - -// IsRoot returns true if t is equal to language "und". -func (t Tag) IsRoot() bool { - return compact.Tag(t).IsRoot() -} - -// CanonType can be used to enable or disable various types of canonicalization. -type CanonType int - -const ( - // Replace deprecated base languages with their preferred replacements. - DeprecatedBase CanonType = 1 << iota - // Replace deprecated scripts with their preferred replacements. - DeprecatedScript - // Replace deprecated regions with their preferred replacements. - DeprecatedRegion - // Remove redundant scripts. - SuppressScript - // Normalize legacy encodings. This includes legacy languages defined in - // CLDR as well as bibliographic codes defined in ISO-639. - Legacy - // Map the dominant language of a macro language group to the macro language - // subtag. For example cmn -> zh. - Macro - // The CLDR flag should be used if full compatibility with CLDR is required. - // There are a few cases where language.Tag may differ from CLDR. To follow all - // of CLDR's suggestions, use All|CLDR. - CLDR - - // Raw can be used to Compose or Parse without Canonicalization. - Raw CanonType = 0 - - // Replace all deprecated tags with their preferred replacements. - Deprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion - - // All canonicalizations recommended by BCP 47. - BCP47 = Deprecated | SuppressScript - - // All canonicalizations. - All = BCP47 | Legacy | Macro - - // Default is the canonicalization used by Parse, Make and Compose. To - // preserve as much information as possible, canonicalizations that remove - // potentially valuable information are not included. The Matcher is - // designed to recognize similar tags that would be the same if - // they were canonicalized using All. - Default = Deprecated | Legacy - - canonLang = DeprecatedBase | Legacy | Macro - - // TODO: LikelyScript, LikelyRegion: suppress similar to ICU. -) - -// canonicalize returns the canonicalized equivalent of the tag and -// whether there was any change. -func canonicalize(c CanonType, t language.Tag) (language.Tag, bool) { - if c == Raw { - return t, false - } - changed := false - if c&SuppressScript != 0 { - if t.LangID.SuppressScript() == t.ScriptID { - t.ScriptID = 0 - changed = true - } - } - if c&canonLang != 0 { - for { - if l, aliasType := t.LangID.Canonicalize(); l != t.LangID { - switch aliasType { - case language.Legacy: - if c&Legacy != 0 { - if t.LangID == _sh && t.ScriptID == 0 { - t.ScriptID = _Latn - } - t.LangID = l - changed = true - } - case language.Macro: - if c&Macro != 0 { - // We deviate here from CLDR. The mapping "nb" -> "no" - // qualifies as a typical Macro language mapping. However, - // for legacy reasons, CLDR maps "no", the macro language - // code for Norwegian, to the dominant variant "nb". This - // change is currently under consideration for CLDR as well. - // See https://unicode.org/cldr/trac/ticket/2698 and also - // https://unicode.org/cldr/trac/ticket/1790 for some of the - // practical implications. TODO: this check could be removed - // if CLDR adopts this change. - if c&CLDR == 0 || t.LangID != _nb { - changed = true - t.LangID = l - } - } - case language.Deprecated: - if c&DeprecatedBase != 0 { - if t.LangID == _mo && t.RegionID == 0 { - t.RegionID = _MD - } - t.LangID = l - changed = true - // Other canonicalization types may still apply. - continue - } - } - } else if c&Legacy != 0 && t.LangID == _no && c&CLDR != 0 { - t.LangID = _nb - changed = true - } - break - } - } - if c&DeprecatedScript != 0 { - if t.ScriptID == _Qaai { - changed = true - t.ScriptID = _Zinh - } - } - if c&DeprecatedRegion != 0 { - if r := t.RegionID.Canonicalize(); r != t.RegionID { - changed = true - t.RegionID = r - } - } - return t, changed -} - -// Canonicalize returns the canonicalized equivalent of the tag. -func (c CanonType) Canonicalize(t Tag) (Tag, error) { - // First try fast path. - if t.isCompact() { - if _, changed := canonicalize(c, compact.Tag(t).Tag()); !changed { - return t, nil - } - } - // It is unlikely that one will canonicalize a tag after matching. So do - // a slow but simple approach here. - if tag, changed := canonicalize(c, t.tag()); changed { - tag.RemakeString() - return makeTag(tag), nil - } - return t, nil - -} - -// Confidence indicates the level of certainty for a given return value. -// For example, Serbian may be written in Cyrillic or Latin script. -// The confidence level indicates whether a value was explicitly specified, -// whether it is typically the only possible value, or whether there is -// an ambiguity. -type Confidence int - -const ( - No Confidence = iota // full confidence that there was no match - Low // most likely value picked out of a set of alternatives - High // value is generally assumed to be the correct match - Exact // exact match or explicitly specified value -) - -var confName = []string{"No", "Low", "High", "Exact"} - -func (c Confidence) String() string { - return confName[c] -} - -// String returns the canonical string representation of the language tag. -func (t Tag) String() string { - return t.tag().String() -} - -// MarshalText implements encoding.TextMarshaler. -func (t Tag) MarshalText() (text []byte, err error) { - return t.tag().MarshalText() -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (t *Tag) UnmarshalText(text []byte) error { - var tag language.Tag - err := tag.UnmarshalText(text) - *t = makeTag(tag) - return err -} - -// Base returns the base language of the language tag. If the base language is -// unspecified, an attempt will be made to infer it from the context. -// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. -func (t Tag) Base() (Base, Confidence) { - if b := t.lang(); b != 0 { - return Base{b}, Exact - } - tt := t.tag() - c := High - if tt.ScriptID == 0 && !tt.RegionID.IsCountry() { - c = Low - } - if tag, err := tt.Maximize(); err == nil && tag.LangID != 0 { - return Base{tag.LangID}, c - } - return Base{0}, No -} - -// Script infers the script for the language tag. If it was not explicitly given, it will infer -// a most likely candidate. -// If more than one script is commonly used for a language, the most likely one -// is returned with a low confidence indication. For example, it returns (Cyrl, Low) -// for Serbian. -// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined) -// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks -// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts. -// See https://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for -// unknown value in CLDR. (Zzzz, Exact) is returned if Zzzz was explicitly specified. -// Note that an inferred script is never guaranteed to be the correct one. Latin is -// almost exclusively used for Afrikaans, but Arabic has been used for some texts -// in the past. Also, the script that is commonly used may change over time. -// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. -func (t Tag) Script() (Script, Confidence) { - if scr := t.script(); scr != 0 { - return Script{scr}, Exact - } - tt := t.tag() - sc, c := language.Script(_Zzzz), No - if scr := tt.LangID.SuppressScript(); scr != 0 { - // Note: it is not always the case that a language with a suppress - // script value is only written in one script (e.g. kk, ms, pa). - if tt.RegionID == 0 { - return Script{scr}, High - } - sc, c = scr, High - } - if tag, err := tt.Maximize(); err == nil { - if tag.ScriptID != sc { - sc, c = tag.ScriptID, Low - } - } else { - tt, _ = canonicalize(Deprecated|Macro, tt) - if tag, err := tt.Maximize(); err == nil && tag.ScriptID != sc { - sc, c = tag.ScriptID, Low - } - } - return Script{sc}, c -} - -// Region returns the region for the language tag. If it was not explicitly given, it will -// infer a most likely candidate from the context. -// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. -func (t Tag) Region() (Region, Confidence) { - if r := t.region(); r != 0 { - return Region{r}, Exact - } - tt := t.tag() - if tt, err := tt.Maximize(); err == nil { - return Region{tt.RegionID}, Low // TODO: differentiate between high and low. - } - tt, _ = canonicalize(Deprecated|Macro, tt) - if tag, err := tt.Maximize(); err == nil { - return Region{tag.RegionID}, Low - } - return Region{_ZZ}, No // TODO: return world instead of undetermined? -} - -// Variants returns the variants specified explicitly for this language tag. -// or nil if no variant was specified. -func (t Tag) Variants() []Variant { - if !compact.Tag(t).MayHaveVariants() { - return nil - } - v := []Variant{} - x, str := "", t.tag().Variants() - for str != "" { - x, str = nextToken(str) - v = append(v, Variant{x}) - } - return v -} - -// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a -// specific language are substituted with fields from the parent language. -// The parent for a language may change for newer versions of CLDR. -// -// Parent returns a tag for a less specific language that is mutually -// intelligible or Und if there is no such language. This may not be the same as -// simply stripping the last BCP 47 subtag. For instance, the parent of "zh-TW" -// is "zh-Hant", and the parent of "zh-Hant" is "und". -func (t Tag) Parent() Tag { - return Tag(compact.Tag(t).Parent()) -} - -// nextToken returns token t and the rest of the string. -func nextToken(s string) (t, tail string) { - p := strings.Index(s[1:], "-") - if p == -1 { - return s[1:], "" - } - p++ - return s[1:p], s[p:] -} - -// Extension is a single BCP 47 extension. -type Extension struct { - s string -} - -// String returns the string representation of the extension, including the -// type tag. -func (e Extension) String() string { - return e.s -} - -// ParseExtension parses s as an extension and returns it on success. -func ParseExtension(s string) (e Extension, err error) { - ext, err := language.ParseExtension(s) - return Extension{ext}, err -} - -// Type returns the one-byte extension type of e. It returns 0 for the zero -// exception. -func (e Extension) Type() byte { - if e.s == "" { - return 0 - } - return e.s[0] -} - -// Tokens returns the list of tokens of e. -func (e Extension) Tokens() []string { - return strings.Split(e.s, "-") -} - -// Extension returns the extension of type x for tag t. It will return -// false for ok if t does not have the requested extension. The returned -// extension will be invalid in this case. -func (t Tag) Extension(x byte) (ext Extension, ok bool) { - if !compact.Tag(t).MayHaveExtensions() { - return Extension{}, false - } - e, ok := t.tag().Extension(x) - return Extension{e}, ok -} - -// Extensions returns all extensions of t. -func (t Tag) Extensions() []Extension { - if !compact.Tag(t).MayHaveExtensions() { - return nil - } - e := []Extension{} - for _, ext := range t.tag().Extensions() { - e = append(e, Extension{ext}) - } - return e -} - -// TypeForKey returns the type associated with the given key, where key and type -// are of the allowed values defined for the Unicode locale extension ('u') in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// TypeForKey will traverse the inheritance chain to get the correct value. -// -// If there are multiple types associated with a key, only the first will be -// returned. If there is no type associated with a key, it returns the empty -// string. -func (t Tag) TypeForKey(key string) string { - if !compact.Tag(t).MayHaveExtensions() { - if key != "rg" && key != "va" { - return "" - } - } - return t.tag().TypeForKey(key) -} - -// SetTypeForKey returns a new Tag with the key set to type, where key and type -// are of the allowed values defined for the Unicode locale extension ('u') in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// An empty value removes an existing pair with the same key. -func (t Tag) SetTypeForKey(key, value string) (Tag, error) { - tt, err := t.tag().SetTypeForKey(key, value) - return makeTag(tt), err -} - -// NumCompactTags is the number of compact tags. The maximum tag is -// NumCompactTags-1. -const NumCompactTags = compact.NumCompactTags - -// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags -// for which data exists in the text repository.The index will change over time -// and should not be stored in persistent storage. If t does not match a compact -// index, exact will be false and the compact index will be returned for the -// first match after repeatedly taking the Parent of t. -func CompactIndex(t Tag) (index int, exact bool) { - id, exact := compact.LanguageID(compact.Tag(t)) - return int(id), exact -} - -var root = language.Tag{} - -// Base is an ISO 639 language code, used for encoding the base language -// of a language tag. -type Base struct { - langID language.Language -} - -// ParseBase parses a 2- or 3-letter ISO 639 code. -// It returns a ValueError if s is a well-formed but unknown language identifier -// or another error if another error occurred. -func ParseBase(s string) (Base, error) { - l, err := language.ParseBase(s) - return Base{l}, err -} - -// String returns the BCP 47 representation of the base language. -func (b Base) String() string { - return b.langID.String() -} - -// ISO3 returns the ISO 639-3 language code. -func (b Base) ISO3() string { - return b.langID.ISO3() -} - -// IsPrivateUse reports whether this language code is reserved for private use. -func (b Base) IsPrivateUse() bool { - return b.langID.IsPrivateUse() -} - -// Script is a 4-letter ISO 15924 code for representing scripts. -// It is idiomatically represented in title case. -type Script struct { - scriptID language.Script -} - -// ParseScript parses a 4-letter ISO 15924 code. -// It returns a ValueError if s is a well-formed but unknown script identifier -// or another error if another error occurred. -func ParseScript(s string) (Script, error) { - sc, err := language.ParseScript(s) - return Script{sc}, err -} - -// String returns the script code in title case. -// It returns "Zzzz" for an unspecified script. -func (s Script) String() string { - return s.scriptID.String() -} - -// IsPrivateUse reports whether this script code is reserved for private use. -func (s Script) IsPrivateUse() bool { - return s.scriptID.IsPrivateUse() -} - -// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions. -type Region struct { - regionID language.Region -} - -// EncodeM49 returns the Region for the given UN M.49 code. -// It returns an error if r is not a valid code. -func EncodeM49(r int) (Region, error) { - rid, err := language.EncodeM49(r) - return Region{rid}, err -} - -// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. -// It returns a ValueError if s is a well-formed but unknown region identifier -// or another error if another error occurred. -func ParseRegion(s string) (Region, error) { - r, err := language.ParseRegion(s) - return Region{r}, err -} - -// String returns the BCP 47 representation for the region. -// It returns "ZZ" for an unspecified region. -func (r Region) String() string { - return r.regionID.String() -} - -// ISO3 returns the 3-letter ISO code of r. -// Note that not all regions have a 3-letter ISO code. -// In such cases this method returns "ZZZ". -func (r Region) ISO3() string { - return r.regionID.ISO3() -} - -// M49 returns the UN M.49 encoding of r, or 0 if this encoding -// is not defined for r. -func (r Region) M49() int { - return r.regionID.M49() -} - -// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This -// may include private-use tags that are assigned by CLDR and used in this -// implementation. So IsPrivateUse and IsCountry can be simultaneously true. -func (r Region) IsPrivateUse() bool { - return r.regionID.IsPrivateUse() -} - -// IsCountry returns whether this region is a country or autonomous area. This -// includes non-standard definitions from CLDR. -func (r Region) IsCountry() bool { - return r.regionID.IsCountry() -} - -// IsGroup returns whether this region defines a collection of regions. This -// includes non-standard definitions from CLDR. -func (r Region) IsGroup() bool { - return r.regionID.IsGroup() -} - -// Contains returns whether Region c is contained by Region r. It returns true -// if c == r. -func (r Region) Contains(c Region) bool { - return r.regionID.Contains(c.regionID) -} - -// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. -// In all other cases it returns either the region itself or an error. -// -// This method may return an error for a region for which there exists a -// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The -// region will already be canonicalized it was obtained from a Tag that was -// obtained using any of the default methods. -func (r Region) TLD() (Region, error) { - tld, err := r.regionID.TLD() - return Region{tld}, err -} - -// Canonicalize returns the region or a possible replacement if the region is -// deprecated. It will not return a replacement for deprecated regions that -// are split into multiple regions. -func (r Region) Canonicalize() Region { - return Region{r.regionID.Canonicalize()} -} - -// Variant represents a registered variant of a language as defined by BCP 47. -type Variant struct { - variant string -} - -// ParseVariant parses and returns a Variant. An error is returned if s is not -// a valid variant. -func ParseVariant(s string) (Variant, error) { - v, err := language.ParseVariant(s) - return Variant{v.String()}, err -} - -// String returns the string representation of the variant. -func (v Variant) String() string { - return v.variant -} diff --git a/vendor/golang.org/x/text/language/match.go b/vendor/golang.org/x/text/language/match.go deleted file mode 100644 index 1153baf..0000000 --- a/vendor/golang.org/x/text/language/match.go +++ /dev/null @@ -1,735 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "errors" - "strings" - - "golang.org/x/text/internal/language" -) - -// A MatchOption configures a Matcher. -type MatchOption func(*matcher) - -// PreferSameScript will, in the absence of a match, result in the first -// preferred tag with the same script as a supported tag to match this supported -// tag. The default is currently true, but this may change in the future. -func PreferSameScript(preferSame bool) MatchOption { - return func(m *matcher) { m.preferSameScript = preferSame } -} - -// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface. -// There doesn't seem to be too much need for multiple types. -// Making it a concrete type allows MatchStrings to be a method, which will -// improve its discoverability. - -// MatchStrings parses and matches the given strings until one of them matches -// the language in the Matcher. A string may be an Accept-Language header as -// handled by ParseAcceptLanguage. The default language is returned if no -// other language matched. -func MatchStrings(m Matcher, lang ...string) (tag Tag, index int) { - for _, accept := range lang { - desired, _, err := ParseAcceptLanguage(accept) - if err != nil { - continue - } - if tag, index, conf := m.Match(desired...); conf != No { - return tag, index - } - } - tag, index, _ = m.Match() - return -} - -// Matcher is the interface that wraps the Match method. -// -// Match returns the best match for any of the given tags, along with -// a unique index associated with the returned tag and a confidence -// score. -type Matcher interface { - Match(t ...Tag) (tag Tag, index int, c Confidence) -} - -// Comprehends reports the confidence score for a speaker of a given language -// to being able to comprehend the written form of an alternative language. -func Comprehends(speaker, alternative Tag) Confidence { - _, _, c := NewMatcher([]Tag{alternative}).Match(speaker) - return c -} - -// NewMatcher returns a Matcher that matches an ordered list of preferred tags -// against a list of supported tags based on written intelligibility, closeness -// of dialect, equivalence of subtags and various other rules. It is initialized -// with the list of supported tags. The first element is used as the default -// value in case no match is found. -// -// Its Match method matches the first of the given Tags to reach a certain -// confidence threshold. The tags passed to Match should therefore be specified -// in order of preference. Extensions are ignored for matching. -// -// The index returned by the Match method corresponds to the index of the -// matched tag in t, but is augmented with the Unicode extension ('u')of the -// corresponding preferred tag. This allows user locale options to be passed -// transparently. -func NewMatcher(t []Tag, options ...MatchOption) Matcher { - return newMatcher(t, options) -} - -func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) { - var tt language.Tag - match, w, c := m.getBest(want...) - if match != nil { - tt, index = match.tag, match.index - } else { - // TODO: this should be an option - tt = m.default_.tag - if m.preferSameScript { - outer: - for _, w := range want { - script, _ := w.Script() - if script.scriptID == 0 { - // Don't do anything if there is no script, such as with - // private subtags. - continue - } - for i, h := range m.supported { - if script.scriptID == h.maxScript { - tt, index = h.tag, i - break outer - } - } - } - } - // TODO: select first language tag based on script. - } - if w.RegionID != tt.RegionID && w.RegionID != 0 { - if w.RegionID != 0 && tt.RegionID != 0 && tt.RegionID.Contains(w.RegionID) { - tt.RegionID = w.RegionID - tt.RemakeString() - } else if r := w.RegionID.String(); len(r) == 2 { - // TODO: also filter macro and deprecated. - tt, _ = tt.SetTypeForKey("rg", strings.ToLower(r)+"zzzz") - } - } - // Copy options from the user-provided tag into the result tag. This is hard - // to do after the fact, so we do it here. - // TODO: add in alternative variants to -u-va-. - // TODO: add preferred region to -u-rg-. - if e := w.Extensions(); len(e) > 0 { - b := language.Builder{} - b.SetTag(tt) - for _, e := range e { - b.AddExt(e) - } - tt = b.Make() - } - return makeTag(tt), index, c -} - -// ErrMissingLikelyTagsData indicates no information was available -// to compute likely values of missing tags. -var ErrMissingLikelyTagsData = errors.New("missing likely tags data") - -// func (t *Tag) setTagsFrom(id Tag) { -// t.LangID = id.LangID -// t.ScriptID = id.ScriptID -// t.RegionID = id.RegionID -// } - -// Tag Matching -// CLDR defines an algorithm for finding the best match between two sets of language -// tags. The basic algorithm defines how to score a possible match and then find -// the match with the best score -// (see https://www.unicode.org/reports/tr35/#LanguageMatching). -// Using scoring has several disadvantages. The scoring obfuscates the importance of -// the various factors considered, making the algorithm harder to understand. Using -// scoring also requires the full score to be computed for each pair of tags. -// -// We will use a different algorithm which aims to have the following properties: -// - clarity on the precedence of the various selection factors, and -// - improved performance by allowing early termination of a comparison. -// -// Matching algorithm (overview) -// Input: -// - supported: a set of supported tags -// - default: the default tag to return in case there is no match -// - desired: list of desired tags, ordered by preference, starting with -// the most-preferred. -// -// Algorithm: -// 1) Set the best match to the lowest confidence level -// 2) For each tag in "desired": -// a) For each tag in "supported": -// 1) compute the match between the two tags. -// 2) if the match is better than the previous best match, replace it -// with the new match. (see next section) -// b) if the current best match is Exact and pin is true the result will be -// frozen to the language found thusfar, although better matches may -// still be found for the same language. -// 3) If the best match so far is below a certain threshold, return "default". -// -// Ranking: -// We use two phases to determine whether one pair of tags are a better match -// than another pair of tags. First, we determine a rough confidence level. If the -// levels are different, the one with the highest confidence wins. -// Second, if the rough confidence levels are identical, we use a set of tie-breaker -// rules. -// -// The confidence level of matching a pair of tags is determined by finding the -// lowest confidence level of any matches of the corresponding subtags (the -// result is deemed as good as its weakest link). -// We define the following levels: -// Exact - An exact match of a subtag, before adding likely subtags. -// MaxExact - An exact match of a subtag, after adding likely subtags. -// [See Note 2]. -// High - High level of mutual intelligibility between different subtag -// variants. -// Low - Low level of mutual intelligibility between different subtag -// variants. -// No - No mutual intelligibility. -// -// The following levels can occur for each type of subtag: -// Base: Exact, MaxExact, High, Low, No -// Script: Exact, MaxExact [see Note 3], Low, No -// Region: Exact, MaxExact, High -// Variant: Exact, High -// Private: Exact, No -// -// Any result with a confidence level of Low or higher is deemed a possible match. -// Once a desired tag matches any of the supported tags with a level of MaxExact -// or higher, the next desired tag is not considered (see Step 2.b). -// Note that CLDR provides languageMatching data that defines close equivalence -// classes for base languages, scripts and regions. -// -// Tie-breaking -// If we get the same confidence level for two matches, we apply a sequence of -// tie-breaking rules. The first that succeeds defines the result. The rules are -// applied in the following order. -// 1) Original language was defined and was identical. -// 2) Original region was defined and was identical. -// 3) Distance between two maximized regions was the smallest. -// 4) Original script was defined and was identical. -// 5) Distance from want tag to have tag using the parent relation [see Note 5.] -// If there is still no winner after these rules are applied, the first match -// found wins. -// -// Notes: -// [2] In practice, as matching of Exact is done in a separate phase from -// matching the other levels, we reuse the Exact level to mean MaxExact in -// the second phase. As a consequence, we only need the levels defined by -// the Confidence type. The MaxExact confidence level is mapped to High in -// the public API. -// [3] We do not differentiate between maximized script values that were derived -// from suppressScript versus most likely tag data. We determined that in -// ranking the two, one ranks just after the other. Moreover, the two cannot -// occur concurrently. As a consequence, they are identical for practical -// purposes. -// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign -// the MaxExact level to allow iw vs he to still be a closer match than -// en-AU vs en-US, for example. -// [5] In CLDR a locale inherits fields that are unspecified for this locale -// from its parent. Therefore, if a locale is a parent of another locale, -// it is a strong measure for closeness, especially when no other tie -// breaker rule applies. One could also argue it is inconsistent, for -// example, when pt-AO matches pt (which CLDR equates with pt-BR), even -// though its parent is pt-PT according to the inheritance rules. -// -// Implementation Details: -// There are several performance considerations worth pointing out. Most notably, -// we preprocess as much as possible (within reason) at the time of creation of a -// matcher. This includes: -// - creating a per-language map, which includes data for the raw base language -// and its canonicalized variant (if applicable), -// - expanding entries for the equivalence classes defined in CLDR's -// languageMatch data. -// The per-language map ensures that typically only a very small number of tags -// need to be considered. The pre-expansion of canonicalized subtags and -// equivalence classes reduces the amount of map lookups that need to be done at -// runtime. - -// matcher keeps a set of supported language tags, indexed by language. -type matcher struct { - default_ *haveTag - supported []*haveTag - index map[language.Language]*matchHeader - passSettings bool - preferSameScript bool -} - -// matchHeader has the lists of tags for exact matches and matches based on -// maximized and canonicalized tags for a given language. -type matchHeader struct { - haveTags []*haveTag - original bool -} - -// haveTag holds a supported Tag and its maximized script and region. The maximized -// or canonicalized language is not stored as it is not needed during matching. -type haveTag struct { - tag language.Tag - - // index of this tag in the original list of supported tags. - index int - - // conf is the maximum confidence that can result from matching this haveTag. - // When conf < Exact this means it was inserted after applying a CLDR equivalence rule. - conf Confidence - - // Maximized region and script. - maxRegion language.Region - maxScript language.Script - - // altScript may be checked as an alternative match to maxScript. If altScript - // matches, the confidence level for this match is Low. Theoretically there - // could be multiple alternative scripts. This does not occur in practice. - altScript language.Script - - // nextMax is the index of the next haveTag with the same maximized tags. - nextMax uint16 -} - -func makeHaveTag(tag language.Tag, index int) (haveTag, language.Language) { - max := tag - if tag.LangID != 0 || tag.RegionID != 0 || tag.ScriptID != 0 { - max, _ = canonicalize(All, max) - max, _ = max.Maximize() - max.RemakeString() - } - return haveTag{tag, index, Exact, max.RegionID, max.ScriptID, altScript(max.LangID, max.ScriptID), 0}, max.LangID -} - -// altScript returns an alternative script that may match the given script with -// a low confidence. At the moment, the langMatch data allows for at most one -// script to map to another and we rely on this to keep the code simple. -func altScript(l language.Language, s language.Script) language.Script { - for _, alt := range matchScript { - // TODO: also match cases where language is not the same. - if (language.Language(alt.wantLang) == l || language.Language(alt.haveLang) == l) && - language.Script(alt.haveScript) == s { - return language.Script(alt.wantScript) - } - } - return 0 -} - -// addIfNew adds a haveTag to the list of tags only if it is a unique tag. -// Tags that have the same maximized values are linked by index. -func (h *matchHeader) addIfNew(n haveTag, exact bool) { - h.original = h.original || exact - // Don't add new exact matches. - for _, v := range h.haveTags { - if equalsRest(v.tag, n.tag) { - return - } - } - // Allow duplicate maximized tags, but create a linked list to allow quickly - // comparing the equivalents and bail out. - for i, v := range h.haveTags { - if v.maxScript == n.maxScript && - v.maxRegion == n.maxRegion && - v.tag.VariantOrPrivateUseTags() == n.tag.VariantOrPrivateUseTags() { - for h.haveTags[i].nextMax != 0 { - i = int(h.haveTags[i].nextMax) - } - h.haveTags[i].nextMax = uint16(len(h.haveTags)) - break - } - } - h.haveTags = append(h.haveTags, &n) -} - -// header returns the matchHeader for the given language. It creates one if -// it doesn't already exist. -func (m *matcher) header(l language.Language) *matchHeader { - if h := m.index[l]; h != nil { - return h - } - h := &matchHeader{} - m.index[l] = h - return h -} - -func toConf(d uint8) Confidence { - if d <= 10 { - return High - } - if d < 30 { - return Low - } - return No -} - -// newMatcher builds an index for the given supported tags and returns it as -// a matcher. It also expands the index by considering various equivalence classes -// for a given tag. -func newMatcher(supported []Tag, options []MatchOption) *matcher { - m := &matcher{ - index: make(map[language.Language]*matchHeader), - preferSameScript: true, - } - for _, o := range options { - o(m) - } - if len(supported) == 0 { - m.default_ = &haveTag{} - return m - } - // Add supported languages to the index. Add exact matches first to give - // them precedence. - for i, tag := range supported { - tt := tag.tag() - pair, _ := makeHaveTag(tt, i) - m.header(tt.LangID).addIfNew(pair, true) - m.supported = append(m.supported, &pair) - } - m.default_ = m.header(supported[0].lang()).haveTags[0] - // Keep these in two different loops to support the case that two equivalent - // languages are distinguished, such as iw and he. - for i, tag := range supported { - tt := tag.tag() - pair, max := makeHaveTag(tt, i) - if max != tt.LangID { - m.header(max).addIfNew(pair, true) - } - } - - // update is used to add indexes in the map for equivalent languages. - // update will only add entries to original indexes, thus not computing any - // transitive relations. - update := func(want, have uint16, conf Confidence) { - if hh := m.index[language.Language(have)]; hh != nil { - if !hh.original { - return - } - hw := m.header(language.Language(want)) - for _, ht := range hh.haveTags { - v := *ht - if conf < v.conf { - v.conf = conf - } - v.nextMax = 0 // this value needs to be recomputed - if v.altScript != 0 { - v.altScript = altScript(language.Language(want), v.maxScript) - } - hw.addIfNew(v, conf == Exact && hh.original) - } - } - } - - // Add entries for languages with mutual intelligibility as defined by CLDR's - // languageMatch data. - for _, ml := range matchLang { - update(ml.want, ml.have, toConf(ml.distance)) - if !ml.oneway { - update(ml.have, ml.want, toConf(ml.distance)) - } - } - - // Add entries for possible canonicalizations. This is an optimization to - // ensure that only one map lookup needs to be done at runtime per desired tag. - // First we match deprecated equivalents. If they are perfect equivalents - // (their canonicalization simply substitutes a different language code, but - // nothing else), the match confidence is Exact, otherwise it is High. - for i, lm := range language.AliasMap { - // If deprecated codes match and there is no fiddling with the script - // or region, we consider it an exact match. - conf := Exact - if language.AliasTypes[i] != language.Macro { - if !isExactEquivalent(language.Language(lm.From)) { - conf = High - } - update(lm.To, lm.From, conf) - } - update(lm.From, lm.To, conf) - } - return m -} - -// getBest gets the best matching tag in m for any of the given tags, taking into -// account the order of preference of the given tags. -func (m *matcher) getBest(want ...Tag) (got *haveTag, orig language.Tag, c Confidence) { - best := bestMatch{} - for i, ww := range want { - w := ww.tag() - var max language.Tag - // Check for exact match first. - h := m.index[w.LangID] - if w.LangID != 0 { - if h == nil { - continue - } - // Base language is defined. - max, _ = canonicalize(Legacy|Deprecated|Macro, w) - // A region that is added through canonicalization is stronger than - // a maximized region: set it in the original (e.g. mo -> ro-MD). - if w.RegionID != max.RegionID { - w.RegionID = max.RegionID - } - // TODO: should we do the same for scripts? - // See test case: en, sr, nl ; sh ; sr - max, _ = max.Maximize() - } else { - // Base language is not defined. - if h != nil { - for i := range h.haveTags { - have := h.haveTags[i] - if equalsRest(have.tag, w) { - return have, w, Exact - } - } - } - if w.ScriptID == 0 && w.RegionID == 0 { - // We skip all tags matching und for approximate matching, including - // private tags. - continue - } - max, _ = w.Maximize() - if h = m.index[max.LangID]; h == nil { - continue - } - } - pin := true - for _, t := range want[i+1:] { - if w.LangID == t.lang() { - pin = false - break - } - } - // Check for match based on maximized tag. - for i := range h.haveTags { - have := h.haveTags[i] - best.update(have, w, max.ScriptID, max.RegionID, pin) - if best.conf == Exact { - for have.nextMax != 0 { - have = h.haveTags[have.nextMax] - best.update(have, w, max.ScriptID, max.RegionID, pin) - } - return best.have, best.want, best.conf - } - } - } - if best.conf <= No { - if len(want) != 0 { - return nil, want[0].tag(), No - } - return nil, language.Tag{}, No - } - return best.have, best.want, best.conf -} - -// bestMatch accumulates the best match so far. -type bestMatch struct { - have *haveTag - want language.Tag - conf Confidence - pinnedRegion language.Region - pinLanguage bool - sameRegionGroup bool - // Cached results from applying tie-breaking rules. - origLang bool - origReg bool - paradigmReg bool - regGroupDist uint8 - origScript bool -} - -// update updates the existing best match if the new pair is considered to be a -// better match. To determine if the given pair is a better match, it first -// computes the rough confidence level. If this surpasses the current match, it -// will replace it and update the tie-breaker rule cache. If there is a tie, it -// proceeds with applying a series of tie-breaker rules. If there is no -// conclusive winner after applying the tie-breaker rules, it leaves the current -// match as the preferred match. -// -// If pin is true and have and tag are a strong match, it will henceforth only -// consider matches for this language. This corresponds to the idea that most -// users have a strong preference for the first defined language. A user can -// still prefer a second language over a dialect of the preferred language by -// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should -// be false. -func (m *bestMatch) update(have *haveTag, tag language.Tag, maxScript language.Script, maxRegion language.Region, pin bool) { - // Bail if the maximum attainable confidence is below that of the current best match. - c := have.conf - if c < m.conf { - return - } - // Don't change the language once we already have found an exact match. - if m.pinLanguage && tag.LangID != m.want.LangID { - return - } - // Pin the region group if we are comparing tags for the same language. - if tag.LangID == m.want.LangID && m.sameRegionGroup { - _, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.LangID) - if !sameGroup { - return - } - } - if c == Exact && have.maxScript == maxScript { - // If there is another language and then another entry of this language, - // don't pin anything, otherwise pin the language. - m.pinLanguage = pin - } - if equalsRest(have.tag, tag) { - } else if have.maxScript != maxScript { - // There is usually very little comprehension between different scripts. - // In a few cases there may still be Low comprehension. This possibility - // is pre-computed and stored in have.altScript. - if Low < m.conf || have.altScript != maxScript { - return - } - c = Low - } else if have.maxRegion != maxRegion { - if High < c { - // There is usually a small difference between languages across regions. - c = High - } - } - - // We store the results of the computations of the tie-breaker rules along - // with the best match. There is no need to do the checks once we determine - // we have a winner, but we do still need to do the tie-breaker computations. - // We use "beaten" to keep track if we still need to do the checks. - beaten := false // true if the new pair defeats the current one. - if c != m.conf { - if c < m.conf { - return - } - beaten = true - } - - // Tie-breaker rules: - // We prefer if the pre-maximized language was specified and identical. - origLang := have.tag.LangID == tag.LangID && tag.LangID != 0 - if !beaten && m.origLang != origLang { - if m.origLang { - return - } - beaten = true - } - - // We prefer if the pre-maximized region was specified and identical. - origReg := have.tag.RegionID == tag.RegionID && tag.RegionID != 0 - if !beaten && m.origReg != origReg { - if m.origReg { - return - } - beaten = true - } - - regGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.LangID) - if !beaten && m.regGroupDist != regGroupDist { - if regGroupDist > m.regGroupDist { - return - } - beaten = true - } - - paradigmReg := isParadigmLocale(tag.LangID, have.maxRegion) - if !beaten && m.paradigmReg != paradigmReg { - if !paradigmReg { - return - } - beaten = true - } - - // Next we prefer if the pre-maximized script was specified and identical. - origScript := have.tag.ScriptID == tag.ScriptID && tag.ScriptID != 0 - if !beaten && m.origScript != origScript { - if m.origScript { - return - } - beaten = true - } - - // Update m to the newly found best match. - if beaten { - m.have = have - m.want = tag - m.conf = c - m.pinnedRegion = maxRegion - m.sameRegionGroup = sameGroup - m.origLang = origLang - m.origReg = origReg - m.paradigmReg = paradigmReg - m.origScript = origScript - m.regGroupDist = regGroupDist - } -} - -func isParadigmLocale(lang language.Language, r language.Region) bool { - for _, e := range paradigmLocales { - if language.Language(e[0]) == lang && (r == language.Region(e[1]) || r == language.Region(e[2])) { - return true - } - } - return false -} - -// regionGroupDist computes the distance between two regions based on their -// CLDR grouping. -func regionGroupDist(a, b language.Region, script language.Script, lang language.Language) (dist uint8, same bool) { - const defaultDistance = 4 - - aGroup := uint(regionToGroups[a]) << 1 - bGroup := uint(regionToGroups[b]) << 1 - for _, ri := range matchRegion { - if language.Language(ri.lang) == lang && (ri.script == 0 || language.Script(ri.script) == script) { - group := uint(1 << (ri.group &^ 0x80)) - if 0x80&ri.group == 0 { - if aGroup&bGroup&group != 0 { // Both regions are in the group. - return ri.distance, ri.distance == defaultDistance - } - } else { - if (aGroup|bGroup)&group == 0 { // Both regions are not in the group. - return ri.distance, ri.distance == defaultDistance - } - } - } - } - return defaultDistance, true -} - -// equalsRest compares everything except the language. -func equalsRest(a, b language.Tag) bool { - // TODO: don't include extensions in this comparison. To do this efficiently, - // though, we should handle private tags separately. - return a.ScriptID == b.ScriptID && a.RegionID == b.RegionID && a.VariantOrPrivateUseTags() == b.VariantOrPrivateUseTags() -} - -// isExactEquivalent returns true if canonicalizing the language will not alter -// the script or region of a tag. -func isExactEquivalent(l language.Language) bool { - for _, o := range notEquivalent { - if o == l { - return false - } - } - return true -} - -var notEquivalent []language.Language - -func init() { - // Create a list of all languages for which canonicalization may alter the - // script or region. - for _, lm := range language.AliasMap { - tag := language.Tag{LangID: language.Language(lm.From)} - if tag, _ = canonicalize(All, tag); tag.ScriptID != 0 || tag.RegionID != 0 { - notEquivalent = append(notEquivalent, language.Language(lm.From)) - } - } - // Maximize undefined regions of paradigm locales. - for i, v := range paradigmLocales { - t := language.Tag{LangID: language.Language(v[0])} - max, _ := t.Maximize() - if v[1] == 0 { - paradigmLocales[i][1] = uint16(max.RegionID) - } - if v[2] == 0 { - paradigmLocales[i][2] = uint16(max.RegionID) - } - } -} diff --git a/vendor/golang.org/x/text/language/parse.go b/vendor/golang.org/x/text/language/parse.go deleted file mode 100644 index 4d57222..0000000 --- a/vendor/golang.org/x/text/language/parse.go +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import ( - "errors" - "sort" - "strconv" - "strings" - - "golang.org/x/text/internal/language" -) - -// ValueError is returned by any of the parsing functions when the -// input is well-formed but the respective subtag is not recognized -// as a valid value. -type ValueError interface { - error - - // Subtag returns the subtag for which the error occurred. - Subtag() string -} - -// Parse parses the given BCP 47 string and returns a valid Tag. If parsing -// failed it returns an error and any part of the tag that could be parsed. -// If parsing succeeded but an unknown value was found, it returns -// ValueError. The Tag returned in this case is just stripped of the unknown -// value. All other values are preserved. It accepts tags in the BCP 47 format -// and extensions to this standard defined in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// The resulting tag is canonicalized using the default canonicalization type. -func Parse(s string) (t Tag, err error) { - return Default.Parse(s) -} - -// Parse parses the given BCP 47 string and returns a valid Tag. If parsing -// failed it returns an error and any part of the tag that could be parsed. -// If parsing succeeded but an unknown value was found, it returns -// ValueError. The Tag returned in this case is just stripped of the unknown -// value. All other values are preserved. It accepts tags in the BCP 47 format -// and extensions to this standard defined in -// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. -// The resulting tag is canonicalized using the canonicalization type c. -func (c CanonType) Parse(s string) (t Tag, err error) { - defer func() { - if recover() != nil { - t = Tag{} - err = language.ErrSyntax - } - }() - - tt, err := language.Parse(s) - if err != nil { - return makeTag(tt), err - } - tt, changed := canonicalize(c, tt) - if changed { - tt.RemakeString() - } - return makeTag(tt), err -} - -// Compose creates a Tag from individual parts, which may be of type Tag, Base, -// Script, Region, Variant, []Variant, Extension, []Extension or error. If a -// Base, Script or Region or slice of type Variant or Extension is passed more -// than once, the latter will overwrite the former. Variants and Extensions are -// accumulated, but if two extensions of the same type are passed, the latter -// will replace the former. For -u extensions, though, the key-type pairs are -// added, where later values overwrite older ones. A Tag overwrites all former -// values and typically only makes sense as the first argument. The resulting -// tag is returned after canonicalizing using the Default CanonType. If one or -// more errors are encountered, one of the errors is returned. -func Compose(part ...interface{}) (t Tag, err error) { - return Default.Compose(part...) -} - -// Compose creates a Tag from individual parts, which may be of type Tag, Base, -// Script, Region, Variant, []Variant, Extension, []Extension or error. If a -// Base, Script or Region or slice of type Variant or Extension is passed more -// than once, the latter will overwrite the former. Variants and Extensions are -// accumulated, but if two extensions of the same type are passed, the latter -// will replace the former. For -u extensions, though, the key-type pairs are -// added, where later values overwrite older ones. A Tag overwrites all former -// values and typically only makes sense as the first argument. The resulting -// tag is returned after canonicalizing using CanonType c. If one or more errors -// are encountered, one of the errors is returned. -func (c CanonType) Compose(part ...interface{}) (t Tag, err error) { - defer func() { - if recover() != nil { - t = Tag{} - err = language.ErrSyntax - } - }() - - var b language.Builder - if err = update(&b, part...); err != nil { - return und, err - } - b.Tag, _ = canonicalize(c, b.Tag) - return makeTag(b.Make()), err -} - -var errInvalidArgument = errors.New("invalid Extension or Variant") - -func update(b *language.Builder, part ...interface{}) (err error) { - for _, x := range part { - switch v := x.(type) { - case Tag: - b.SetTag(v.tag()) - case Base: - b.Tag.LangID = v.langID - case Script: - b.Tag.ScriptID = v.scriptID - case Region: - b.Tag.RegionID = v.regionID - case Variant: - if v.variant == "" { - err = errInvalidArgument - break - } - b.AddVariant(v.variant) - case Extension: - if v.s == "" { - err = errInvalidArgument - break - } - b.SetExt(v.s) - case []Variant: - b.ClearVariants() - for _, v := range v { - b.AddVariant(v.variant) - } - case []Extension: - b.ClearExtensions() - for _, e := range v { - b.SetExt(e.s) - } - // TODO: support parsing of raw strings based on morphology or just extensions? - case error: - if v != nil { - err = v - } - } - } - return -} - -var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") -var errTagListTooLarge = errors.New("tag list exceeds max length") - -// ParseAcceptLanguage parses the contents of an Accept-Language header as -// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and -// a list of corresponding quality weights. It is more permissive than RFC 2616 -// and may return non-nil slices even if the input is not valid. -// The Tags will be sorted by highest weight first and then by first occurrence. -// Tags with a weight of zero will be dropped. An error will be returned if the -// input could not be parsed. -func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) { - defer func() { - if recover() != nil { - tag = nil - q = nil - err = language.ErrSyntax - } - }() - - if strings.Count(s, "-") > 1000 { - return nil, nil, errTagListTooLarge - } - - var entry string - for s != "" { - if entry, s = split(s, ','); entry == "" { - continue - } - - entry, weight := split(entry, ';') - - // Scan the language. - t, err := Parse(entry) - if err != nil { - id, ok := acceptFallback[entry] - if !ok { - return nil, nil, err - } - t = makeTag(language.Tag{LangID: id}) - } - - // Scan the optional weight. - w := 1.0 - if weight != "" { - weight = consume(weight, 'q') - weight = consume(weight, '=') - // consume returns the empty string when a token could not be - // consumed, resulting in an error for ParseFloat. - if w, err = strconv.ParseFloat(weight, 32); err != nil { - return nil, nil, errInvalidWeight - } - // Drop tags with a quality weight of 0. - if w <= 0 { - continue - } - } - - tag = append(tag, t) - q = append(q, float32(w)) - } - sort.Stable(&tagSort{tag, q}) - return tag, q, nil -} - -// consume removes a leading token c from s and returns the result or the empty -// string if there is no such token. -func consume(s string, c byte) string { - if s == "" || s[0] != c { - return "" - } - return strings.TrimSpace(s[1:]) -} - -func split(s string, c byte) (head, tail string) { - if i := strings.IndexByte(s, c); i >= 0 { - return strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:]) - } - return strings.TrimSpace(s), "" -} - -// Add hack mapping to deal with a small number of cases that occur -// in Accept-Language (with reasonable frequency). -var acceptFallback = map[string]language.Language{ - "english": _en, - "deutsch": _de, - "italian": _it, - "french": _fr, - "*": _mul, // defined in the spec to match all languages. -} - -type tagSort struct { - tag []Tag - q []float32 -} - -func (s *tagSort) Len() int { - return len(s.q) -} - -func (s *tagSort) Less(i, j int) bool { - return s.q[i] > s.q[j] -} - -func (s *tagSort) Swap(i, j int) { - s.tag[i], s.tag[j] = s.tag[j], s.tag[i] - s.q[i], s.q[j] = s.q[j], s.q[i] -} diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go deleted file mode 100644 index a6573dc..0000000 --- a/vendor/golang.org/x/text/language/tables.go +++ /dev/null @@ -1,298 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package language - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -const ( - _de = 269 - _en = 313 - _fr = 350 - _it = 505 - _mo = 784 - _no = 879 - _nb = 839 - _pt = 960 - _sh = 1031 - _mul = 806 - _und = 0 -) -const ( - _001 = 1 - _419 = 31 - _BR = 65 - _CA = 73 - _ES = 111 - _GB = 124 - _MD = 189 - _PT = 239 - _UK = 307 - _US = 310 - _ZZ = 358 - _XA = 324 - _XC = 326 - _XK = 334 -) -const ( - _Latn = 91 - _Hani = 57 - _Hans = 59 - _Hant = 60 - _Qaaa = 149 - _Qaai = 157 - _Qabx = 198 - _Zinh = 255 - _Zyyy = 260 - _Zzzz = 261 -) - -var regionToGroups = []uint8{ // 359 elements - // Entry 0 - 3F - 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, - // Entry 40 - 7F - 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, - // Entry 80 - BF - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, - 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, - // Entry C0 - FF - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x01, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 100 - 13F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, - 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, - // Entry 140 - 17F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -} // Size: 383 bytes - -var paradigmLocales = [][3]uint16{ // 3 elements - 0: [3]uint16{0x139, 0x0, 0x7c}, - 1: [3]uint16{0x13e, 0x0, 0x1f}, - 2: [3]uint16{0x3c0, 0x41, 0xef}, -} // Size: 42 bytes - -type mutualIntelligibility struct { - want uint16 - have uint16 - distance uint8 - oneway bool -} -type scriptIntelligibility struct { - wantLang uint16 - haveLang uint16 - wantScript uint8 - haveScript uint8 - distance uint8 -} -type regionIntelligibility struct { - lang uint16 - script uint8 - group uint8 - distance uint8 -} - -// matchLang holds pairs of langIDs of base languages that are typically -// mutually intelligible. Each pair is associated with a confidence and -// whether the intelligibility goes one or both ways. -var matchLang = []mutualIntelligibility{ // 113 elements - 0: {want: 0x1d1, have: 0xb7, distance: 0x4, oneway: false}, - 1: {want: 0x407, have: 0xb7, distance: 0x4, oneway: false}, - 2: {want: 0x407, have: 0x1d1, distance: 0x4, oneway: false}, - 3: {want: 0x407, have: 0x432, distance: 0x4, oneway: false}, - 4: {want: 0x43a, have: 0x1, distance: 0x4, oneway: false}, - 5: {want: 0x1a3, have: 0x10d, distance: 0x4, oneway: true}, - 6: {want: 0x295, have: 0x10d, distance: 0x4, oneway: true}, - 7: {want: 0x101, have: 0x36f, distance: 0x8, oneway: false}, - 8: {want: 0x101, have: 0x347, distance: 0x8, oneway: false}, - 9: {want: 0x5, have: 0x3e2, distance: 0xa, oneway: true}, - 10: {want: 0xd, have: 0x139, distance: 0xa, oneway: true}, - 11: {want: 0x16, have: 0x367, distance: 0xa, oneway: true}, - 12: {want: 0x21, have: 0x139, distance: 0xa, oneway: true}, - 13: {want: 0x56, have: 0x13e, distance: 0xa, oneway: true}, - 14: {want: 0x58, have: 0x3e2, distance: 0xa, oneway: true}, - 15: {want: 0x71, have: 0x3e2, distance: 0xa, oneway: true}, - 16: {want: 0x75, have: 0x139, distance: 0xa, oneway: true}, - 17: {want: 0x82, have: 0x1be, distance: 0xa, oneway: true}, - 18: {want: 0xa5, have: 0x139, distance: 0xa, oneway: true}, - 19: {want: 0xb2, have: 0x15e, distance: 0xa, oneway: true}, - 20: {want: 0xdd, have: 0x153, distance: 0xa, oneway: true}, - 21: {want: 0xe5, have: 0x139, distance: 0xa, oneway: true}, - 22: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, - 23: {want: 0xf0, have: 0x15e, distance: 0xa, oneway: true}, - 24: {want: 0xf9, have: 0x15e, distance: 0xa, oneway: true}, - 25: {want: 0x100, have: 0x139, distance: 0xa, oneway: true}, - 26: {want: 0x130, have: 0x139, distance: 0xa, oneway: true}, - 27: {want: 0x13c, have: 0x139, distance: 0xa, oneway: true}, - 28: {want: 0x140, have: 0x151, distance: 0xa, oneway: true}, - 29: {want: 0x145, have: 0x13e, distance: 0xa, oneway: true}, - 30: {want: 0x158, have: 0x101, distance: 0xa, oneway: true}, - 31: {want: 0x16d, have: 0x367, distance: 0xa, oneway: true}, - 32: {want: 0x16e, have: 0x139, distance: 0xa, oneway: true}, - 33: {want: 0x16f, have: 0x139, distance: 0xa, oneway: true}, - 34: {want: 0x17e, have: 0x139, distance: 0xa, oneway: true}, - 35: {want: 0x190, have: 0x13e, distance: 0xa, oneway: true}, - 36: {want: 0x194, have: 0x13e, distance: 0xa, oneway: true}, - 37: {want: 0x1a4, have: 0x1be, distance: 0xa, oneway: true}, - 38: {want: 0x1b4, have: 0x139, distance: 0xa, oneway: true}, - 39: {want: 0x1b8, have: 0x139, distance: 0xa, oneway: true}, - 40: {want: 0x1d4, have: 0x15e, distance: 0xa, oneway: true}, - 41: {want: 0x1d7, have: 0x3e2, distance: 0xa, oneway: true}, - 42: {want: 0x1d9, have: 0x139, distance: 0xa, oneway: true}, - 43: {want: 0x1e7, have: 0x139, distance: 0xa, oneway: true}, - 44: {want: 0x1f8, have: 0x139, distance: 0xa, oneway: true}, - 45: {want: 0x20e, have: 0x1e1, distance: 0xa, oneway: true}, - 46: {want: 0x210, have: 0x139, distance: 0xa, oneway: true}, - 47: {want: 0x22d, have: 0x15e, distance: 0xa, oneway: true}, - 48: {want: 0x242, have: 0x3e2, distance: 0xa, oneway: true}, - 49: {want: 0x24a, have: 0x139, distance: 0xa, oneway: true}, - 50: {want: 0x251, have: 0x139, distance: 0xa, oneway: true}, - 51: {want: 0x265, have: 0x139, distance: 0xa, oneway: true}, - 52: {want: 0x274, have: 0x48a, distance: 0xa, oneway: true}, - 53: {want: 0x28a, have: 0x3e2, distance: 0xa, oneway: true}, - 54: {want: 0x28e, have: 0x1f9, distance: 0xa, oneway: true}, - 55: {want: 0x2a3, have: 0x139, distance: 0xa, oneway: true}, - 56: {want: 0x2b5, have: 0x15e, distance: 0xa, oneway: true}, - 57: {want: 0x2b8, have: 0x139, distance: 0xa, oneway: true}, - 58: {want: 0x2be, have: 0x139, distance: 0xa, oneway: true}, - 59: {want: 0x2c3, have: 0x15e, distance: 0xa, oneway: true}, - 60: {want: 0x2ed, have: 0x139, distance: 0xa, oneway: true}, - 61: {want: 0x2f1, have: 0x15e, distance: 0xa, oneway: true}, - 62: {want: 0x2fa, have: 0x139, distance: 0xa, oneway: true}, - 63: {want: 0x2ff, have: 0x7e, distance: 0xa, oneway: true}, - 64: {want: 0x304, have: 0x139, distance: 0xa, oneway: true}, - 65: {want: 0x30b, have: 0x3e2, distance: 0xa, oneway: true}, - 66: {want: 0x31b, have: 0x1be, distance: 0xa, oneway: true}, - 67: {want: 0x31f, have: 0x1e1, distance: 0xa, oneway: true}, - 68: {want: 0x320, have: 0x139, distance: 0xa, oneway: true}, - 69: {want: 0x331, have: 0x139, distance: 0xa, oneway: true}, - 70: {want: 0x351, have: 0x139, distance: 0xa, oneway: true}, - 71: {want: 0x36a, have: 0x347, distance: 0xa, oneway: false}, - 72: {want: 0x36a, have: 0x36f, distance: 0xa, oneway: true}, - 73: {want: 0x37a, have: 0x139, distance: 0xa, oneway: true}, - 74: {want: 0x387, have: 0x139, distance: 0xa, oneway: true}, - 75: {want: 0x389, have: 0x139, distance: 0xa, oneway: true}, - 76: {want: 0x38b, have: 0x15e, distance: 0xa, oneway: true}, - 77: {want: 0x390, have: 0x139, distance: 0xa, oneway: true}, - 78: {want: 0x395, have: 0x139, distance: 0xa, oneway: true}, - 79: {want: 0x39d, have: 0x139, distance: 0xa, oneway: true}, - 80: {want: 0x3a5, have: 0x139, distance: 0xa, oneway: true}, - 81: {want: 0x3be, have: 0x139, distance: 0xa, oneway: true}, - 82: {want: 0x3c4, have: 0x13e, distance: 0xa, oneway: true}, - 83: {want: 0x3d4, have: 0x10d, distance: 0xa, oneway: true}, - 84: {want: 0x3d9, have: 0x139, distance: 0xa, oneway: true}, - 85: {want: 0x3e5, have: 0x15e, distance: 0xa, oneway: true}, - 86: {want: 0x3e9, have: 0x1be, distance: 0xa, oneway: true}, - 87: {want: 0x3fa, have: 0x139, distance: 0xa, oneway: true}, - 88: {want: 0x40c, have: 0x139, distance: 0xa, oneway: true}, - 89: {want: 0x423, have: 0x139, distance: 0xa, oneway: true}, - 90: {want: 0x429, have: 0x139, distance: 0xa, oneway: true}, - 91: {want: 0x431, have: 0x139, distance: 0xa, oneway: true}, - 92: {want: 0x43b, have: 0x139, distance: 0xa, oneway: true}, - 93: {want: 0x43e, have: 0x1e1, distance: 0xa, oneway: true}, - 94: {want: 0x445, have: 0x139, distance: 0xa, oneway: true}, - 95: {want: 0x450, have: 0x139, distance: 0xa, oneway: true}, - 96: {want: 0x461, have: 0x139, distance: 0xa, oneway: true}, - 97: {want: 0x467, have: 0x3e2, distance: 0xa, oneway: true}, - 98: {want: 0x46f, have: 0x139, distance: 0xa, oneway: true}, - 99: {want: 0x476, have: 0x3e2, distance: 0xa, oneway: true}, - 100: {want: 0x3883, have: 0x139, distance: 0xa, oneway: true}, - 101: {want: 0x480, have: 0x139, distance: 0xa, oneway: true}, - 102: {want: 0x482, have: 0x139, distance: 0xa, oneway: true}, - 103: {want: 0x494, have: 0x3e2, distance: 0xa, oneway: true}, - 104: {want: 0x49d, have: 0x139, distance: 0xa, oneway: true}, - 105: {want: 0x4ac, have: 0x529, distance: 0xa, oneway: true}, - 106: {want: 0x4b4, have: 0x139, distance: 0xa, oneway: true}, - 107: {want: 0x4bc, have: 0x3e2, distance: 0xa, oneway: true}, - 108: {want: 0x4e5, have: 0x15e, distance: 0xa, oneway: true}, - 109: {want: 0x4f2, have: 0x139, distance: 0xa, oneway: true}, - 110: {want: 0x512, have: 0x139, distance: 0xa, oneway: true}, - 111: {want: 0x518, have: 0x139, distance: 0xa, oneway: true}, - 112: {want: 0x52f, have: 0x139, distance: 0xa, oneway: true}, -} // Size: 702 bytes - -// matchScript holds pairs of scriptIDs where readers of one script -// can typically also read the other. Each is associated with a confidence. -var matchScript = []scriptIntelligibility{ // 26 elements - 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5b, haveScript: 0x20, distance: 0x5}, - 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5b, distance: 0x5}, - 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, - 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5b, distance: 0xa}, - 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa}, - 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5b, distance: 0xa}, - 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x5b, distance: 0xa}, - 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x53, haveScript: 0x5b, distance: 0xa}, - 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x58, haveScript: 0x5b, distance: 0xa}, - 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6f, haveScript: 0x5b, distance: 0xa}, - 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x76, haveScript: 0x5b, distance: 0xa}, - 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5b, distance: 0xa}, - 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x83, haveScript: 0x5b, distance: 0xa}, - 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5b, distance: 0xa}, - 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, - 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, - 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xd6, haveScript: 0x5b, distance: 0xa}, - 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xe6, haveScript: 0x5b, distance: 0xa}, - 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe9, haveScript: 0x5b, distance: 0xa}, - 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5b, distance: 0xa}, - 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, - 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, - 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, - 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5b, distance: 0xa}, - 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf}, - 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13}, -} // Size: 232 bytes - -var matchRegion = []regionIntelligibility{ // 15 elements - 0: {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4}, - 1: {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4}, - 2: {lang: 0x139, script: 0x0, group: 0x1, distance: 0x4}, - 3: {lang: 0x139, script: 0x0, group: 0x81, distance: 0x4}, - 4: {lang: 0x13e, script: 0x0, group: 0x3, distance: 0x4}, - 5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4}, - 6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4}, - 7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4}, - 8: {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4}, - 9: {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4}, - 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, - 11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5}, - 12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5}, - 13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5}, - 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5}, -} // Size: 114 bytes - -// Total table size 1473 bytes (1KiB); checksum: 7BB90B5C diff --git a/vendor/golang.org/x/text/language/tags.go b/vendor/golang.org/x/text/language/tags.go deleted file mode 100644 index 42ea792..0000000 --- a/vendor/golang.org/x/text/language/tags.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package language - -import "golang.org/x/text/internal/language/compact" - -// TODO: Various sets of commonly use tags and regions. - -// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. -// It simplifies safe initialization of Tag values. -func MustParse(s string) Tag { - t, err := Parse(s) - if err != nil { - panic(err) - } - return t -} - -// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. -// It simplifies safe initialization of Tag values. -func (c CanonType) MustParse(s string) Tag { - t, err := c.Parse(s) - if err != nil { - panic(err) - } - return t -} - -// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. -// It simplifies safe initialization of Base values. -func MustParseBase(s string) Base { - b, err := ParseBase(s) - if err != nil { - panic(err) - } - return b -} - -// MustParseScript is like ParseScript, but panics if the given script cannot be -// parsed. It simplifies safe initialization of Script values. -func MustParseScript(s string) Script { - scr, err := ParseScript(s) - if err != nil { - panic(err) - } - return scr -} - -// MustParseRegion is like ParseRegion, but panics if the given region cannot be -// parsed. It simplifies safe initialization of Region values. -func MustParseRegion(s string) Region { - r, err := ParseRegion(s) - if err != nil { - panic(err) - } - return r -} - -var ( - und = Tag{} - - Und Tag = Tag{} - - Afrikaans Tag = Tag(compact.Afrikaans) - Amharic Tag = Tag(compact.Amharic) - Arabic Tag = Tag(compact.Arabic) - ModernStandardArabic Tag = Tag(compact.ModernStandardArabic) - Azerbaijani Tag = Tag(compact.Azerbaijani) - Bulgarian Tag = Tag(compact.Bulgarian) - Bengali Tag = Tag(compact.Bengali) - Catalan Tag = Tag(compact.Catalan) - Czech Tag = Tag(compact.Czech) - Danish Tag = Tag(compact.Danish) - German Tag = Tag(compact.German) - Greek Tag = Tag(compact.Greek) - English Tag = Tag(compact.English) - AmericanEnglish Tag = Tag(compact.AmericanEnglish) - BritishEnglish Tag = Tag(compact.BritishEnglish) - Spanish Tag = Tag(compact.Spanish) - EuropeanSpanish Tag = Tag(compact.EuropeanSpanish) - LatinAmericanSpanish Tag = Tag(compact.LatinAmericanSpanish) - Estonian Tag = Tag(compact.Estonian) - Persian Tag = Tag(compact.Persian) - Finnish Tag = Tag(compact.Finnish) - Filipino Tag = Tag(compact.Filipino) - French Tag = Tag(compact.French) - CanadianFrench Tag = Tag(compact.CanadianFrench) - Gujarati Tag = Tag(compact.Gujarati) - Hebrew Tag = Tag(compact.Hebrew) - Hindi Tag = Tag(compact.Hindi) - Croatian Tag = Tag(compact.Croatian) - Hungarian Tag = Tag(compact.Hungarian) - Armenian Tag = Tag(compact.Armenian) - Indonesian Tag = Tag(compact.Indonesian) - Icelandic Tag = Tag(compact.Icelandic) - Italian Tag = Tag(compact.Italian) - Japanese Tag = Tag(compact.Japanese) - Georgian Tag = Tag(compact.Georgian) - Kazakh Tag = Tag(compact.Kazakh) - Khmer Tag = Tag(compact.Khmer) - Kannada Tag = Tag(compact.Kannada) - Korean Tag = Tag(compact.Korean) - Kirghiz Tag = Tag(compact.Kirghiz) - Lao Tag = Tag(compact.Lao) - Lithuanian Tag = Tag(compact.Lithuanian) - Latvian Tag = Tag(compact.Latvian) - Macedonian Tag = Tag(compact.Macedonian) - Malayalam Tag = Tag(compact.Malayalam) - Mongolian Tag = Tag(compact.Mongolian) - Marathi Tag = Tag(compact.Marathi) - Malay Tag = Tag(compact.Malay) - Burmese Tag = Tag(compact.Burmese) - Nepali Tag = Tag(compact.Nepali) - Dutch Tag = Tag(compact.Dutch) - Norwegian Tag = Tag(compact.Norwegian) - Punjabi Tag = Tag(compact.Punjabi) - Polish Tag = Tag(compact.Polish) - Portuguese Tag = Tag(compact.Portuguese) - BrazilianPortuguese Tag = Tag(compact.BrazilianPortuguese) - EuropeanPortuguese Tag = Tag(compact.EuropeanPortuguese) - Romanian Tag = Tag(compact.Romanian) - Russian Tag = Tag(compact.Russian) - Sinhala Tag = Tag(compact.Sinhala) - Slovak Tag = Tag(compact.Slovak) - Slovenian Tag = Tag(compact.Slovenian) - Albanian Tag = Tag(compact.Albanian) - Serbian Tag = Tag(compact.Serbian) - SerbianLatin Tag = Tag(compact.SerbianLatin) - Swedish Tag = Tag(compact.Swedish) - Swahili Tag = Tag(compact.Swahili) - Tamil Tag = Tag(compact.Tamil) - Telugu Tag = Tag(compact.Telugu) - Thai Tag = Tag(compact.Thai) - Turkish Tag = Tag(compact.Turkish) - Ukrainian Tag = Tag(compact.Ukrainian) - Urdu Tag = Tag(compact.Urdu) - Uzbek Tag = Tag(compact.Uzbek) - Vietnamese Tag = Tag(compact.Vietnamese) - Chinese Tag = Tag(compact.Chinese) - SimplifiedChinese Tag = Tag(compact.SimplifiedChinese) - TraditionalChinese Tag = Tag(compact.TraditionalChinese) - Zulu Tag = Tag(compact.Zulu) -) diff --git a/vendor/golang.org/x/text/runes/cond.go b/vendor/golang.org/x/text/runes/cond.go deleted file mode 100644 index df7aa02..0000000 --- a/vendor/golang.org/x/text/runes/cond.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package runes - -import ( - "unicode/utf8" - - "golang.org/x/text/transform" -) - -// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is. -// This is done for various reasons: -// - To retain the semantics of the Nop transformer: if input is passed to a Nop -// one would expect it to be unchanged. -// - It would be very expensive to pass a converted RuneError to a transformer: -// a transformer might need more source bytes after RuneError, meaning that -// the only way to pass it safely is to create a new buffer and manage the -// intermingling of RuneErrors and normal input. -// - Many transformers leave ill-formed UTF-8 as is, so this is not -// inconsistent. Generally ill-formed UTF-8 is only replaced if it is a -// logical consequence of the operation (as for Map) or if it otherwise would -// pose security concerns (as for Remove). -// - An alternative would be to return an error on ill-formed UTF-8, but this -// would be inconsistent with other operations. - -// If returns a transformer that applies tIn to consecutive runes for which -// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset -// is called on tIn and tNotIn at the start of each run. A Nop transformer will -// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated -// to RuneError to determine which transformer to apply, but is passed as is to -// the respective transformer. -func If(s Set, tIn, tNotIn transform.Transformer) Transformer { - if tIn == nil && tNotIn == nil { - return Transformer{transform.Nop} - } - if tIn == nil { - tIn = transform.Nop - } - if tNotIn == nil { - tNotIn = transform.Nop - } - sIn, ok := tIn.(transform.SpanningTransformer) - if !ok { - sIn = dummySpan{tIn} - } - sNotIn, ok := tNotIn.(transform.SpanningTransformer) - if !ok { - sNotIn = dummySpan{tNotIn} - } - - a := &cond{ - tIn: sIn, - tNotIn: sNotIn, - f: s.Contains, - } - a.Reset() - return Transformer{a} -} - -type dummySpan struct{ transform.Transformer } - -func (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) { - return 0, transform.ErrEndOfSpan -} - -type cond struct { - tIn, tNotIn transform.SpanningTransformer - f func(rune) bool - check func(rune) bool // current check to perform - t transform.SpanningTransformer // current transformer to use -} - -// Reset implements transform.Transformer. -func (t *cond) Reset() { - t.check = t.is - t.t = t.tIn - t.t.Reset() // notIn will be reset on first usage. -} - -func (t *cond) is(r rune) bool { - if t.f(r) { - return true - } - t.check = t.isNot - t.t = t.tNotIn - t.tNotIn.Reset() - return false -} - -func (t *cond) isNot(r rune) bool { - if !t.f(r) { - return true - } - t.check = t.is - t.t = t.tIn - t.tIn.Reset() - return false -} - -// This implementation of Span doesn't help all too much, but it needs to be -// there to satisfy this package's Transformer interface. -// TODO: there are certainly room for improvements, though. For example, if -// t.t == transform.Nop (which will a common occurrence) it will save a bundle -// to special-case that loop. -func (t *cond) Span(src []byte, atEOF bool) (n int, err error) { - p := 0 - for n < len(src) && err == nil { - // Don't process too much at a time as the Spanner that will be - // called on this block may terminate early. - const maxChunk = 4096 - max := len(src) - if v := n + maxChunk; v < max { - max = v - } - atEnd := false - size := 0 - current := t.t - for ; p < max; p += size { - r := rune(src[p]) - if r < utf8.RuneSelf { - size = 1 - } else if r, size = utf8.DecodeRune(src[p:]); size == 1 { - if !atEOF && !utf8.FullRune(src[p:]) { - err = transform.ErrShortSrc - break - } - } - if !t.check(r) { - // The next rune will be the start of a new run. - atEnd = true - break - } - } - n2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src))) - n += n2 - if err2 != nil { - return n, err2 - } - // At this point either err != nil or t.check will pass for the rune at p. - p = n + size - } - return n, err -} - -func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - p := 0 - for nSrc < len(src) && err == nil { - // Don't process too much at a time, as the work might be wasted if the - // destination buffer isn't large enough to hold the result or a - // transform returns an error early. - const maxChunk = 4096 - max := len(src) - if n := nSrc + maxChunk; n < len(src) { - max = n - } - atEnd := false - size := 0 - current := t.t - for ; p < max; p += size { - r := rune(src[p]) - if r < utf8.RuneSelf { - size = 1 - } else if r, size = utf8.DecodeRune(src[p:]); size == 1 { - if !atEOF && !utf8.FullRune(src[p:]) { - err = transform.ErrShortSrc - break - } - } - if !t.check(r) { - // The next rune will be the start of a new run. - atEnd = true - break - } - } - nDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src))) - nDst += nDst2 - nSrc += nSrc2 - if err2 != nil { - return nDst, nSrc, err2 - } - // At this point either err != nil or t.check will pass for the rune at p. - p = nSrc + size - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/runes/runes.go b/vendor/golang.org/x/text/runes/runes.go deleted file mode 100644 index 930e87f..0000000 --- a/vendor/golang.org/x/text/runes/runes.go +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package runes provide transforms for UTF-8 encoded text. -package runes // import "golang.org/x/text/runes" - -import ( - "unicode" - "unicode/utf8" - - "golang.org/x/text/transform" -) - -// A Set is a collection of runes. -type Set interface { - // Contains returns true if r is contained in the set. - Contains(r rune) bool -} - -type setFunc func(rune) bool - -func (s setFunc) Contains(r rune) bool { - return s(r) -} - -// Note: using funcs here instead of wrapping types result in cleaner -// documentation and a smaller API. - -// In creates a Set with a Contains method that returns true for all runes in -// the given RangeTable. -func In(rt *unicode.RangeTable) Set { - return setFunc(func(r rune) bool { return unicode.Is(rt, r) }) -} - -// NotIn creates a Set with a Contains method that returns true for all runes not -// in the given RangeTable. -func NotIn(rt *unicode.RangeTable) Set { - return setFunc(func(r rune) bool { return !unicode.Is(rt, r) }) -} - -// Predicate creates a Set with a Contains method that returns f(r). -func Predicate(f func(rune) bool) Set { - return setFunc(f) -} - -// Transformer implements the transform.Transformer interface. -type Transformer struct { - t transform.SpanningTransformer -} - -func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return t.t.Transform(dst, src, atEOF) -} - -func (t Transformer) Span(b []byte, atEOF bool) (n int, err error) { - return t.t.Span(b, atEOF) -} - -func (t Transformer) Reset() { t.t.Reset() } - -// Bytes returns a new byte slice with the result of converting b using t. It -// calls Reset on t. It returns nil if any error was found. This can only happen -// if an error-producing Transformer is passed to If. -func (t Transformer) Bytes(b []byte) []byte { - b, _, err := transform.Bytes(t, b) - if err != nil { - return nil - } - return b -} - -// String returns a string with the result of converting s using t. It calls -// Reset on t. It returns the empty string if any error was found. This can only -// happen if an error-producing Transformer is passed to If. -func (t Transformer) String(s string) string { - s, _, err := transform.String(t, s) - if err != nil { - return "" - } - return s -} - -// TODO: -// - Copy: copying strings and bytes in whole-rune units. -// - Validation (maybe) -// - Well-formed-ness (maybe) - -const runeErrorString = string(utf8.RuneError) - -// Remove returns a Transformer that removes runes r for which s.Contains(r). -// Illegal input bytes are replaced by RuneError before being passed to f. -func Remove(s Set) Transformer { - if f, ok := s.(setFunc); ok { - // This little trick cuts the running time of BenchmarkRemove for sets - // created by Predicate roughly in half. - // TODO: special-case RangeTables as well. - return Transformer{remove(f)} - } - return Transformer{remove(s.Contains)} -} - -// TODO: remove transform.RemoveFunc. - -type remove func(r rune) bool - -func (remove) Reset() {} - -// Span implements transform.Spanner. -func (t remove) Span(src []byte, atEOF bool) (n int, err error) { - for r, size := rune(0), 0; n < len(src); { - if r = rune(src[n]); r < utf8.RuneSelf { - size = 1 - } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src[n:]) { - err = transform.ErrShortSrc - } else { - err = transform.ErrEndOfSpan - } - break - } - if t(r) { - err = transform.ErrEndOfSpan - break - } - n += size - } - return -} - -// Transform implements transform.Transformer. -func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for r, size := rune(0), 0; nSrc < len(src); { - if r = rune(src[nSrc]); r < utf8.RuneSelf { - size = 1 - } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - // We replace illegal bytes with RuneError. Not doing so might - // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. - // The resulting byte sequence may subsequently contain runes - // for which t(r) is true that were passed unnoticed. - if !t(utf8.RuneError) { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = runeErrorString[0] - dst[nDst+1] = runeErrorString[1] - dst[nDst+2] = runeErrorString[2] - nDst += 3 - } - nSrc++ - continue - } - if t(r) { - nSrc += size - continue - } - if nDst+size > len(dst) { - err = transform.ErrShortDst - break - } - for i := 0; i < size; i++ { - dst[nDst] = src[nSrc] - nDst++ - nSrc++ - } - } - return -} - -// Map returns a Transformer that maps the runes in the input using the given -// mapping. Illegal bytes in the input are converted to utf8.RuneError before -// being passed to the mapping func. -func Map(mapping func(rune) rune) Transformer { - return Transformer{mapper(mapping)} -} - -type mapper func(rune) rune - -func (mapper) Reset() {} - -// Span implements transform.Spanner. -func (t mapper) Span(src []byte, atEOF bool) (n int, err error) { - for r, size := rune(0), 0; n < len(src); n += size { - if r = rune(src[n]); r < utf8.RuneSelf { - size = 1 - } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src[n:]) { - err = transform.ErrShortSrc - } else { - err = transform.ErrEndOfSpan - } - break - } - if t(r) != r { - err = transform.ErrEndOfSpan - break - } - } - return n, err -} - -// Transform implements transform.Transformer. -func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - var replacement rune - var b [utf8.UTFMax]byte - - for r, size := rune(0), 0; nSrc < len(src); { - if r = rune(src[nSrc]); r < utf8.RuneSelf { - if replacement = t(r); replacement < utf8.RuneSelf { - if nDst == len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = byte(replacement) - nDst++ - nSrc++ - continue - } - size = 1 - } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - - if replacement = t(utf8.RuneError); replacement == utf8.RuneError { - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = runeErrorString[0] - dst[nDst+1] = runeErrorString[1] - dst[nDst+2] = runeErrorString[2] - nDst += 3 - nSrc++ - continue - } - } else if replacement = t(r); replacement == r { - if nDst+size > len(dst) { - err = transform.ErrShortDst - break - } - for i := 0; i < size; i++ { - dst[nDst] = src[nSrc] - nDst++ - nSrc++ - } - continue - } - - n := utf8.EncodeRune(b[:], replacement) - - if nDst+n > len(dst) { - err = transform.ErrShortDst - break - } - for i := 0; i < n; i++ { - dst[nDst] = b[i] - nDst++ - } - nSrc += size - } - return -} - -// ReplaceIllFormed returns a transformer that replaces all input bytes that are -// not part of a well-formed UTF-8 code sequence with utf8.RuneError. -func ReplaceIllFormed() Transformer { - return Transformer{&replaceIllFormed{}} -} - -type replaceIllFormed struct{ transform.NopResetter } - -func (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) { - for n < len(src) { - // ASCII fast path. - if src[n] < utf8.RuneSelf { - n++ - continue - } - - r, size := utf8.DecodeRune(src[n:]) - - // Look for a valid non-ASCII rune. - if r != utf8.RuneError || size != 1 { - n += size - continue - } - - // Look for short source data. - if !atEOF && !utf8.FullRune(src[n:]) { - err = transform.ErrShortSrc - break - } - - // We have an invalid rune. - err = transform.ErrEndOfSpan - break - } - return n, err -} - -func (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for nSrc < len(src) { - // ASCII fast path. - if r := src[nSrc]; r < utf8.RuneSelf { - if nDst == len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst] = r - nDst++ - nSrc++ - continue - } - - // Look for a valid non-ASCII rune. - if _, size := utf8.DecodeRune(src[nSrc:]); size != 1 { - if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { - err = transform.ErrShortDst - break - } - nDst += size - nSrc += size - continue - } - - // Look for short source data. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - - // We have an invalid rune. - if nDst+3 > len(dst) { - err = transform.ErrShortDst - break - } - dst[nDst+0] = runeErrorString[0] - dst[nDst+1] = runeErrorString[1] - dst[nDst+2] = runeErrorString[2] - nDst += 3 - nSrc++ - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go deleted file mode 100644 index 48ec64b..0000000 --- a/vendor/golang.org/x/text/transform/transform.go +++ /dev/null @@ -1,709 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package transform provides reader and writer wrappers that transform the -// bytes passing through as well as various transformations. Example -// transformations provided by other packages include normalization and -// conversion between character sets. -package transform // import "golang.org/x/text/transform" - -import ( - "bytes" - "errors" - "io" - "unicode/utf8" -) - -var ( - // ErrShortDst means that the destination buffer was too short to - // receive all of the transformed bytes. - ErrShortDst = errors.New("transform: short destination buffer") - - // ErrShortSrc means that the source buffer has insufficient data to - // complete the transformation. - ErrShortSrc = errors.New("transform: short source buffer") - - // ErrEndOfSpan means that the input and output (the transformed input) - // are not identical. - ErrEndOfSpan = errors.New("transform: input and output are not identical") - - // errInconsistentByteCount means that Transform returned success (nil - // error) but also returned nSrc inconsistent with the src argument. - errInconsistentByteCount = errors.New("transform: inconsistent byte count returned") - - // errShortInternal means that an internal buffer is not large enough - // to make progress and the Transform operation must be aborted. - errShortInternal = errors.New("transform: short internal buffer") -) - -// Transformer transforms bytes. -type Transformer interface { - // Transform writes to dst the transformed bytes read from src, and - // returns the number of dst bytes written and src bytes read. The - // atEOF argument tells whether src represents the last bytes of the - // input. - // - // Callers should always process the nDst bytes produced and account - // for the nSrc bytes consumed before considering the error err. - // - // A nil error means that all of the transformed bytes (whether freshly - // transformed from src or left over from previous Transform calls) - // were written to dst. A nil error can be returned regardless of - // whether atEOF is true. If err is nil then nSrc must equal len(src); - // the converse is not necessarily true. - // - // ErrShortDst means that dst was too short to receive all of the - // transformed bytes. ErrShortSrc means that src had insufficient data - // to complete the transformation. If both conditions apply, then - // either error may be returned. Other than the error conditions listed - // here, implementations are free to report other errors that arise. - Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) - - // Reset resets the state and allows a Transformer to be reused. - Reset() -} - -// SpanningTransformer extends the Transformer interface with a Span method -// that determines how much of the input already conforms to the Transformer. -type SpanningTransformer interface { - Transformer - - // Span returns a position in src such that transforming src[:n] results in - // identical output src[:n] for these bytes. It does not necessarily return - // the largest such n. The atEOF argument tells whether src represents the - // last bytes of the input. - // - // Callers should always account for the n bytes consumed before - // considering the error err. - // - // A nil error means that all input bytes are known to be identical to the - // output produced by the Transformer. A nil error can be returned - // regardless of whether atEOF is true. If err is nil, then n must - // equal len(src); the converse is not necessarily true. - // - // ErrEndOfSpan means that the Transformer output may differ from the - // input after n bytes. Note that n may be len(src), meaning that the output - // would contain additional bytes after otherwise identical output. - // ErrShortSrc means that src had insufficient data to determine whether the - // remaining bytes would change. Other than the error conditions listed - // here, implementations are free to report other errors that arise. - // - // Calling Span can modify the Transformer state as a side effect. In - // effect, it does the transformation just as calling Transform would, only - // without copying to a destination buffer and only up to a point it can - // determine the input and output bytes are the same. This is obviously more - // limited than calling Transform, but can be more efficient in terms of - // copying and allocating buffers. Calls to Span and Transform may be - // interleaved. - Span(src []byte, atEOF bool) (n int, err error) -} - -// NopResetter can be embedded by implementations of Transformer to add a nop -// Reset method. -type NopResetter struct{} - -// Reset implements the Reset method of the Transformer interface. -func (NopResetter) Reset() {} - -// Reader wraps another io.Reader by transforming the bytes read. -type Reader struct { - r io.Reader - t Transformer - err error - - // dst[dst0:dst1] contains bytes that have been transformed by t but - // not yet copied out via Read. - dst []byte - dst0, dst1 int - - // src[src0:src1] contains bytes that have been read from r but not - // yet transformed through t. - src []byte - src0, src1 int - - // transformComplete is whether the transformation is complete, - // regardless of whether or not it was successful. - transformComplete bool -} - -const defaultBufSize = 4096 - -// NewReader returns a new Reader that wraps r by transforming the bytes read -// via t. It calls Reset on t. -func NewReader(r io.Reader, t Transformer) *Reader { - t.Reset() - return &Reader{ - r: r, - t: t, - dst: make([]byte, defaultBufSize), - src: make([]byte, defaultBufSize), - } -} - -// Read implements the io.Reader interface. -func (r *Reader) Read(p []byte) (int, error) { - n, err := 0, error(nil) - for { - // Copy out any transformed bytes and return the final error if we are done. - if r.dst0 != r.dst1 { - n = copy(p, r.dst[r.dst0:r.dst1]) - r.dst0 += n - if r.dst0 == r.dst1 && r.transformComplete { - return n, r.err - } - return n, nil - } else if r.transformComplete { - return 0, r.err - } - - // Try to transform some source bytes, or to flush the transformer if we - // are out of source bytes. We do this even if r.r.Read returned an error. - // As the io.Reader documentation says, "process the n > 0 bytes returned - // before considering the error". - if r.src0 != r.src1 || r.err != nil { - r.dst0 = 0 - r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) - r.src0 += n - - switch { - case err == nil: - if r.src0 != r.src1 { - r.err = errInconsistentByteCount - } - // The Transform call was successful; we are complete if we - // cannot read more bytes into src. - r.transformComplete = r.err != nil - continue - case err == ErrShortDst && (r.dst1 != 0 || n != 0): - // Make room in dst by copying out, and try again. - continue - case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: - // Read more bytes into src via the code below, and try again. - default: - r.transformComplete = true - // The reader error (r.err) takes precedence over the - // transformer error (err) unless r.err is nil or io.EOF. - if r.err == nil || r.err == io.EOF { - r.err = err - } - continue - } - } - - // Move any untransformed source bytes to the start of the buffer - // and read more bytes. - if r.src0 != 0 { - r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1]) - } - n, r.err = r.r.Read(r.src[r.src1:]) - r.src1 += n - } -} - -// TODO: implement ReadByte (and ReadRune??). - -// Writer wraps another io.Writer by transforming the bytes read. -// The user needs to call Close to flush unwritten bytes that may -// be buffered. -type Writer struct { - w io.Writer - t Transformer - dst []byte - - // src[:n] contains bytes that have not yet passed through t. - src []byte - n int -} - -// NewWriter returns a new Writer that wraps w by transforming the bytes written -// via t. It calls Reset on t. -func NewWriter(w io.Writer, t Transformer) *Writer { - t.Reset() - return &Writer{ - w: w, - t: t, - dst: make([]byte, defaultBufSize), - src: make([]byte, defaultBufSize), - } -} - -// Write implements the io.Writer interface. If there are not enough -// bytes available to complete a Transform, the bytes will be buffered -// for the next write. Call Close to convert the remaining bytes. -func (w *Writer) Write(data []byte) (n int, err error) { - src := data - if w.n > 0 { - // Append bytes from data to the last remainder. - // TODO: limit the amount copied on first try. - n = copy(w.src[w.n:], data) - w.n += n - src = w.src[:w.n] - } - for { - nDst, nSrc, err := w.t.Transform(w.dst, src, false) - if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { - return n, werr - } - src = src[nSrc:] - if w.n == 0 { - n += nSrc - } else if len(src) <= n { - // Enough bytes from w.src have been consumed. We make src point - // to data instead to reduce the copying. - w.n = 0 - n -= len(src) - src = data[n:] - if n < len(data) && (err == nil || err == ErrShortSrc) { - continue - } - } - switch err { - case ErrShortDst: - // This error is okay as long as we are making progress. - if nDst > 0 || nSrc > 0 { - continue - } - case ErrShortSrc: - if len(src) < len(w.src) { - m := copy(w.src, src) - // If w.n > 0, bytes from data were already copied to w.src and n - // was already set to the number of bytes consumed. - if w.n == 0 { - n += m - } - w.n = m - err = nil - } else if nDst > 0 || nSrc > 0 { - // Not enough buffer to store the remainder. Keep processing as - // long as there is progress. Without this case, transforms that - // require a lookahead larger than the buffer may result in an - // error. This is not something one may expect to be common in - // practice, but it may occur when buffers are set to small - // sizes during testing. - continue - } - case nil: - if w.n > 0 { - err = errInconsistentByteCount - } - } - return n, err - } -} - -// Close implements the io.Closer interface. -func (w *Writer) Close() error { - src := w.src[:w.n] - for { - nDst, nSrc, err := w.t.Transform(w.dst, src, true) - if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { - return werr - } - if err != ErrShortDst { - return err - } - src = src[nSrc:] - } -} - -type nop struct{ NopResetter } - -func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := copy(dst, src) - if n < len(src) { - err = ErrShortDst - } - return n, n, err -} - -func (nop) Span(src []byte, atEOF bool) (n int, err error) { - return len(src), nil -} - -type discard struct{ NopResetter } - -func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return 0, len(src), nil -} - -var ( - // Discard is a Transformer for which all Transform calls succeed - // by consuming all bytes and writing nothing. - Discard Transformer = discard{} - - // Nop is a SpanningTransformer that copies src to dst. - Nop SpanningTransformer = nop{} -) - -// chain is a sequence of links. A chain with N Transformers has N+1 links and -// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst -// buffers given to chain.Transform and the middle N-1 buffers are intermediate -// buffers owned by the chain. The i'th link transforms bytes from the i'th -// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer -// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N). -type chain struct { - link []link - err error - // errStart is the index at which the error occurred plus 1. Processing - // errStart at this level at the next call to Transform. As long as - // errStart > 0, chain will not consume any more source bytes. - errStart int -} - -func (c *chain) fatalError(errIndex int, err error) { - if i := errIndex + 1; i > c.errStart { - c.errStart = i - c.err = err - } -} - -type link struct { - t Transformer - // b[p:n] holds the bytes to be transformed by t. - b []byte - p int - n int -} - -func (l *link) src() []byte { - return l.b[l.p:l.n] -} - -func (l *link) dst() []byte { - return l.b[l.n:] -} - -// Chain returns a Transformer that applies t in sequence. -func Chain(t ...Transformer) Transformer { - if len(t) == 0 { - return nop{} - } - c := &chain{link: make([]link, len(t)+1)} - for i, tt := range t { - c.link[i].t = tt - } - // Allocate intermediate buffers. - b := make([][defaultBufSize]byte, len(t)-1) - for i := range b { - c.link[i+1].b = b[i][:] - } - return c -} - -// Reset resets the state of Chain. It calls Reset on all the Transformers. -func (c *chain) Reset() { - for i, l := range c.link { - if l.t != nil { - l.t.Reset() - } - c.link[i].p, c.link[i].n = 0, 0 - } -} - -// TODO: make chain use Span (is going to be fun to implement!) - -// Transform applies the transformers of c in sequence. -func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - // Set up src and dst in the chain. - srcL := &c.link[0] - dstL := &c.link[len(c.link)-1] - srcL.b, srcL.p, srcL.n = src, 0, len(src) - dstL.b, dstL.n = dst, 0 - var lastFull, needProgress bool // for detecting progress - - // i is the index of the next Transformer to apply, for i in [low, high]. - // low is the lowest index for which c.link[low] may still produce bytes. - // high is the highest index for which c.link[high] has a Transformer. - // The error returned by Transform determines whether to increase or - // decrease i. We try to completely fill a buffer before converting it. - for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; { - in, out := &c.link[i], &c.link[i+1] - nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i) - out.n += nDst - in.p += nSrc - if i > 0 && in.p == in.n { - in.p, in.n = 0, 0 - } - needProgress, lastFull = lastFull, false - switch err0 { - case ErrShortDst: - // Process the destination buffer next. Return if we are already - // at the high index. - if i == high { - return dstL.n, srcL.p, ErrShortDst - } - if out.n != 0 { - i++ - // If the Transformer at the next index is not able to process any - // source bytes there is nothing that can be done to make progress - // and the bytes will remain unprocessed. lastFull is used to - // detect this and break out of the loop with a fatal error. - lastFull = true - continue - } - // The destination buffer was too small, but is completely empty. - // Return a fatal error as this transformation can never complete. - c.fatalError(i, errShortInternal) - case ErrShortSrc: - if i == 0 { - // Save ErrShortSrc in err. All other errors take precedence. - err = ErrShortSrc - break - } - // Source bytes were depleted before filling up the destination buffer. - // Verify we made some progress, move the remaining bytes to the errStart - // and try to get more source bytes. - if needProgress && nSrc == 0 || in.n-in.p == len(in.b) { - // There were not enough source bytes to proceed while the source - // buffer cannot hold any more bytes. Return a fatal error as this - // transformation can never complete. - c.fatalError(i, errShortInternal) - break - } - // in.b is an internal buffer and we can make progress. - in.p, in.n = 0, copy(in.b, in.src()) - fallthrough - case nil: - // if i == low, we have depleted the bytes at index i or any lower levels. - // In that case we increase low and i. In all other cases we decrease i to - // fetch more bytes before proceeding to the next index. - if i > low { - i-- - continue - } - default: - c.fatalError(i, err0) - } - // Exhausted level low or fatal error: increase low and continue - // to process the bytes accepted so far. - i++ - low = i - } - - // If c.errStart > 0, this means we found a fatal error. We will clear - // all upstream buffers. At this point, no more progress can be made - // downstream, as Transform would have bailed while handling ErrShortDst. - if c.errStart > 0 { - for i := 1; i < c.errStart; i++ { - c.link[i].p, c.link[i].n = 0, 0 - } - err, c.errStart, c.err = c.err, 0, nil - } - return dstL.n, srcL.p, err -} - -// Deprecated: Use runes.Remove instead. -func RemoveFunc(f func(r rune) bool) Transformer { - return removeF(f) -} - -type removeF func(r rune) bool - -func (removeF) Reset() {} - -// Transform implements the Transformer interface. -func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] { - - if r = rune(src[0]); r < utf8.RuneSelf { - sz = 1 - } else { - r, sz = utf8.DecodeRune(src) - - if sz == 1 { - // Invalid rune. - if !atEOF && !utf8.FullRune(src) { - err = ErrShortSrc - break - } - // We replace illegal bytes with RuneError. Not doing so might - // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. - // The resulting byte sequence may subsequently contain runes - // for which t(r) is true that were passed unnoticed. - if !t(r) { - if nDst+3 > len(dst) { - err = ErrShortDst - break - } - nDst += copy(dst[nDst:], "\uFFFD") - } - nSrc++ - continue - } - } - - if !t(r) { - if nDst+sz > len(dst) { - err = ErrShortDst - break - } - nDst += copy(dst[nDst:], src[:sz]) - } - nSrc += sz - } - return -} - -// grow returns a new []byte that is longer than b, and copies the first n bytes -// of b to the start of the new slice. -func grow(b []byte, n int) []byte { - m := len(b) - if m <= 32 { - m = 64 - } else if m <= 256 { - m *= 2 - } else { - m += m >> 1 - } - buf := make([]byte, m) - copy(buf, b[:n]) - return buf -} - -const initialBufSize = 128 - -// String returns a string with the result of converting s[:n] using t, where -// n <= len(s). If err == nil, n will be len(s). It calls Reset on t. -func String(t Transformer, s string) (result string, n int, err error) { - t.Reset() - if s == "" { - // Fast path for the common case for empty input. Results in about a - // 86% reduction of running time for BenchmarkStringLowerEmpty. - if _, _, err := t.Transform(nil, nil, true); err == nil { - return "", 0, nil - } - } - - // Allocate only once. Note that both dst and src escape when passed to - // Transform. - buf := [2 * initialBufSize]byte{} - dst := buf[:initialBufSize:initialBufSize] - src := buf[initialBufSize : 2*initialBufSize] - - // The input string s is transformed in multiple chunks (starting with a - // chunk size of initialBufSize). nDst and nSrc are per-chunk (or - // per-Transform-call) indexes, pDst and pSrc are overall indexes. - nDst, nSrc := 0, 0 - pDst, pSrc := 0, 0 - - // pPrefix is the length of a common prefix: the first pPrefix bytes of the - // result will equal the first pPrefix bytes of s. It is not guaranteed to - // be the largest such value, but if pPrefix, len(result) and len(s) are - // all equal after the final transform (i.e. calling Transform with atEOF - // being true returned nil error) then we don't need to allocate a new - // result string. - pPrefix := 0 - for { - // Invariant: pDst == pPrefix && pSrc == pPrefix. - - n := copy(src, s[pSrc:]) - nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s)) - pDst += nDst - pSrc += nSrc - - // TODO: let transformers implement an optional Spanner interface, akin - // to norm's QuickSpan. This would even allow us to avoid any allocation. - if !bytes.Equal(dst[:nDst], src[:nSrc]) { - break - } - pPrefix = pSrc - if err == ErrShortDst { - // A buffer can only be short if a transformer modifies its input. - break - } else if err == ErrShortSrc { - if nSrc == 0 { - // No progress was made. - break - } - // Equal so far and !atEOF, so continue checking. - } else if err != nil || pPrefix == len(s) { - return string(s[:pPrefix]), pPrefix, err - } - } - // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc. - - // We have transformed the first pSrc bytes of the input s to become pDst - // transformed bytes. Those transformed bytes are discontiguous: the first - // pPrefix of them equal s[:pPrefix] and the last nDst of them equal - // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so - // that they become one contiguous slice: dst[:pDst]. - if pPrefix != 0 { - newDst := dst - if pDst > len(newDst) { - newDst = make([]byte, len(s)+nDst-nSrc) - } - copy(newDst[pPrefix:pDst], dst[:nDst]) - copy(newDst[:pPrefix], s[:pPrefix]) - dst = newDst - } - - // Prevent duplicate Transform calls with atEOF being true at the end of - // the input. Also return if we have an unrecoverable error. - if (err == nil && pSrc == len(s)) || - (err != nil && err != ErrShortDst && err != ErrShortSrc) { - return string(dst[:pDst]), pSrc, err - } - - // Transform the remaining input, growing dst and src buffers as necessary. - for { - n := copy(src, s[pSrc:]) - atEOF := pSrc+n == len(s) - nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF) - pDst += nDst - pSrc += nSrc - - // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can - // make progress. This may avoid excessive allocations. - if err == ErrShortDst { - if nDst == 0 { - dst = grow(dst, pDst) - } - } else if err == ErrShortSrc { - if atEOF { - return string(dst[:pDst]), pSrc, err - } - if nSrc == 0 { - src = grow(src, 0) - } - } else if err != nil || pSrc == len(s) { - return string(dst[:pDst]), pSrc, err - } - } -} - -// Bytes returns a new byte slice with the result of converting b[:n] using t, -// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t. -func Bytes(t Transformer, b []byte) (result []byte, n int, err error) { - return doAppend(t, 0, make([]byte, len(b)), b) -} - -// Append appends the result of converting src[:n] using t to dst, where -// n <= len(src), If err == nil, n will be len(src). It calls Reset on t. -func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) { - if len(dst) == cap(dst) { - n := len(src) + len(dst) // It is okay for this to be 0. - b := make([]byte, n) - dst = b[:copy(b, dst)] - } - return doAppend(t, len(dst), dst[:cap(dst)], src) -} - -func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) { - t.Reset() - pSrc := 0 - for { - nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true) - pDst += nDst - pSrc += nSrc - if err != ErrShortDst { - return dst[:pDst], pSrc, err - } - - // Grow the destination buffer, but do not grow as long as we can make - // progress. This may avoid excessive allocations. - if nDst == 0 { - dst = grow(dst, pDst) - } - } -} diff --git a/vendor/google.golang.org/protobuf/LICENSE b/vendor/google.golang.org/protobuf/LICENSE deleted file mode 100644 index 49ea0f9..0000000 --- a/vendor/google.golang.org/protobuf/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2018 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/google.golang.org/protobuf/PATENTS b/vendor/google.golang.org/protobuf/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/google.golang.org/protobuf/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go deleted file mode 100644 index 24bc98a..0000000 --- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +++ /dev/null @@ -1,772 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package prototext - -import ( - "fmt" - "unicode/utf8" - - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/encoding/text" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/internal/set" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// Unmarshal reads the given []byte into the given [proto.Message]. -// The provided message must be mutable (e.g., a non-nil pointer to a message). -func Unmarshal(b []byte, m proto.Message) error { - return UnmarshalOptions{}.Unmarshal(b, m) -} - -// UnmarshalOptions is a configurable textproto format unmarshaler. -type UnmarshalOptions struct { - pragma.NoUnkeyedLiterals - - // AllowPartial accepts input for messages that will result in missing - // required fields. If AllowPartial is false (the default), Unmarshal will - // return error if there are any missing required fields. - AllowPartial bool - - // DiscardUnknown specifies whether to ignore unknown fields when parsing. - // An unknown field is any field whose field name or field number does not - // resolve to any known or extension field in the message. - // By default, unmarshal rejects unknown fields as an error. - DiscardUnknown bool - - // Resolver is used for looking up types when unmarshaling - // google.protobuf.Any messages or extension fields. - // If nil, this defaults to using protoregistry.GlobalTypes. - Resolver interface { - protoregistry.MessageTypeResolver - protoregistry.ExtensionTypeResolver - } -} - -// Unmarshal reads the given []byte and populates the given [proto.Message] -// using options in the UnmarshalOptions object. -// The provided message must be mutable (e.g., a non-nil pointer to a message). -func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error { - return o.unmarshal(b, m) -} - -// unmarshal is a centralized function that all unmarshal operations go through. -// For profiling purposes, avoid changing the name of this function or -// introducing other code paths for unmarshal that do not go through this. -func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error { - proto.Reset(m) - - if o.Resolver == nil { - o.Resolver = protoregistry.GlobalTypes - } - - dec := decoder{text.NewDecoder(b), o} - if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil { - return err - } - if o.AllowPartial { - return nil - } - return proto.CheckInitialized(m) -} - -type decoder struct { - *text.Decoder - opts UnmarshalOptions -} - -// newError returns an error object with position info. -func (d decoder) newError(pos int, f string, x ...any) error { - line, column := d.Position(pos) - head := fmt.Sprintf("(line %d:%d): ", line, column) - return errors.New(head+f, x...) -} - -// unexpectedTokenError returns a syntax error for the given unexpected token. -func (d decoder) unexpectedTokenError(tok text.Token) error { - return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString()) -} - -// syntaxError returns a syntax error for given position. -func (d decoder) syntaxError(pos int, f string, x ...any) error { - line, column := d.Position(pos) - head := fmt.Sprintf("syntax error (line %d:%d): ", line, column) - return errors.New(head+f, x...) -} - -// unmarshalMessage unmarshals into the given protoreflect.Message. -func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error { - messageDesc := m.Descriptor() - if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { - return errors.New("no support for proto1 MessageSets") - } - - if messageDesc.FullName() == genid.Any_message_fullname { - return d.unmarshalAny(m, checkDelims) - } - - if checkDelims { - tok, err := d.Read() - if err != nil { - return err - } - - if tok.Kind() != text.MessageOpen { - return d.unexpectedTokenError(tok) - } - } - - var seenNums set.Ints - var seenOneofs set.Ints - fieldDescs := messageDesc.Fields() - - for { - // Read field name. - tok, err := d.Read() - if err != nil { - return err - } - switch typ := tok.Kind(); typ { - case text.Name: - // Continue below. - case text.EOF: - if checkDelims { - return text.ErrUnexpectedEOF - } - return nil - default: - if checkDelims && typ == text.MessageClose { - return nil - } - return d.unexpectedTokenError(tok) - } - - // Resolve the field descriptor. - var name protoreflect.Name - var fd protoreflect.FieldDescriptor - var xt protoreflect.ExtensionType - var xtErr error - var isFieldNumberName bool - - switch tok.NameKind() { - case text.IdentName: - name = protoreflect.Name(tok.IdentName()) - fd = fieldDescs.ByTextName(string(name)) - - case text.TypeName: - // Handle extensions only. This code path is not for Any. - xt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName())) - - case text.FieldNumber: - isFieldNumberName = true - num := protoreflect.FieldNumber(tok.FieldNumber()) - if !num.IsValid() { - return d.newError(tok.Pos(), "invalid field number: %d", num) - } - fd = fieldDescs.ByNumber(num) - if fd == nil { - xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num) - } - } - - if xt != nil { - fd = xt.TypeDescriptor() - if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() { - return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName()) - } - } else if xtErr != nil && xtErr != protoregistry.NotFound { - return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr) - } - if flags.ProtoLegacy { - if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() { - fd = nil // reset since the weak reference is not linked in - } - } - - // Handle unknown fields. - if fd == nil { - if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) { - d.skipValue() - continue - } - return d.newError(tok.Pos(), "unknown field: %v", tok.RawString()) - } - - // Handle fields identified by field number. - if isFieldNumberName { - // TODO: Add an option to permit parsing field numbers. - // - // This requires careful thought as the MarshalOptions.EmitUnknown - // option allows formatting unknown fields as the field number and the - // best-effort textual representation of the field value. In that case, - // it may not be possible to unmarshal the value from a parser that does - // have information about the unknown field. - return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString()) - } - - switch { - case fd.IsList(): - kind := fd.Kind() - if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { - return d.syntaxError(tok.Pos(), "missing field separator :") - } - - list := m.Mutable(fd).List() - if err := d.unmarshalList(fd, list); err != nil { - return err - } - - case fd.IsMap(): - mmap := m.Mutable(fd).Map() - if err := d.unmarshalMap(fd, mmap); err != nil { - return err - } - - default: - kind := fd.Kind() - if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { - return d.syntaxError(tok.Pos(), "missing field separator :") - } - - // If field is a oneof, check if it has already been set. - if od := fd.ContainingOneof(); od != nil { - idx := uint64(od.Index()) - if seenOneofs.Has(idx) { - return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName()) - } - seenOneofs.Set(idx) - } - - num := uint64(fd.Number()) - if seenNums.Has(num) { - return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString()) - } - - if err := d.unmarshalSingular(fd, m); err != nil { - return err - } - seenNums.Set(num) - } - } - - return nil -} - -// unmarshalSingular unmarshals a non-repeated field value specified by the -// given FieldDescriptor. -func (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error { - var val protoreflect.Value - var err error - switch fd.Kind() { - case protoreflect.MessageKind, protoreflect.GroupKind: - val = m.NewField(fd) - err = d.unmarshalMessage(val.Message(), true) - default: - val, err = d.unmarshalScalar(fd) - } - if err == nil { - m.Set(fd, val) - } - return err -} - -// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the -// given FieldDescriptor. -func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { - tok, err := d.Read() - if err != nil { - return protoreflect.Value{}, err - } - - if tok.Kind() != text.Scalar { - return protoreflect.Value{}, d.unexpectedTokenError(tok) - } - - kind := fd.Kind() - switch kind { - case protoreflect.BoolKind: - if b, ok := tok.Bool(); ok { - return protoreflect.ValueOfBool(b), nil - } - - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - if n, ok := tok.Int32(); ok { - return protoreflect.ValueOfInt32(n), nil - } - - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - if n, ok := tok.Int64(); ok { - return protoreflect.ValueOfInt64(n), nil - } - - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - if n, ok := tok.Uint32(); ok { - return protoreflect.ValueOfUint32(n), nil - } - - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - if n, ok := tok.Uint64(); ok { - return protoreflect.ValueOfUint64(n), nil - } - - case protoreflect.FloatKind: - if n, ok := tok.Float32(); ok { - return protoreflect.ValueOfFloat32(n), nil - } - - case protoreflect.DoubleKind: - if n, ok := tok.Float64(); ok { - return protoreflect.ValueOfFloat64(n), nil - } - - case protoreflect.StringKind: - if s, ok := tok.String(); ok { - if strs.EnforceUTF8(fd) && !utf8.ValidString(s) { - return protoreflect.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") - } - return protoreflect.ValueOfString(s), nil - } - - case protoreflect.BytesKind: - if b, ok := tok.String(); ok { - return protoreflect.ValueOfBytes([]byte(b)), nil - } - - case protoreflect.EnumKind: - if lit, ok := tok.Enum(); ok { - // Lookup EnumNumber based on name. - if enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil { - return protoreflect.ValueOfEnum(enumVal.Number()), nil - } - } - if num, ok := tok.Int32(); ok { - return protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil - } - - default: - panic(fmt.Sprintf("invalid scalar kind %v", kind)) - } - - return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) -} - -// unmarshalList unmarshals into given protoreflect.List. A list value can -// either be in [] syntax or simply just a single scalar/message value. -func (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error { - tok, err := d.Peek() - if err != nil { - return err - } - - switch fd.Kind() { - case protoreflect.MessageKind, protoreflect.GroupKind: - switch tok.Kind() { - case text.ListOpen: - d.Read() - for { - tok, err := d.Peek() - if err != nil { - return err - } - - switch tok.Kind() { - case text.ListClose: - d.Read() - return nil - case text.MessageOpen: - pval := list.NewElement() - if err := d.unmarshalMessage(pval.Message(), true); err != nil { - return err - } - list.Append(pval) - default: - return d.unexpectedTokenError(tok) - } - } - - case text.MessageOpen: - pval := list.NewElement() - if err := d.unmarshalMessage(pval.Message(), true); err != nil { - return err - } - list.Append(pval) - return nil - } - - default: - switch tok.Kind() { - case text.ListOpen: - d.Read() - for { - tok, err := d.Peek() - if err != nil { - return err - } - - switch tok.Kind() { - case text.ListClose: - d.Read() - return nil - case text.Scalar: - pval, err := d.unmarshalScalar(fd) - if err != nil { - return err - } - list.Append(pval) - default: - return d.unexpectedTokenError(tok) - } - } - - case text.Scalar: - pval, err := d.unmarshalScalar(fd) - if err != nil { - return err - } - list.Append(pval) - return nil - } - } - - return d.unexpectedTokenError(tok) -} - -// unmarshalMap unmarshals into given protoreflect.Map. A map value is a -// textproto message containing {key: <kvalue>, value: <mvalue>}. -func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error { - // Determine ahead whether map entry is a scalar type or a message type in - // order to call the appropriate unmarshalMapValue func inside - // unmarshalMapEntry. - var unmarshalMapValue func() (protoreflect.Value, error) - switch fd.MapValue().Kind() { - case protoreflect.MessageKind, protoreflect.GroupKind: - unmarshalMapValue = func() (protoreflect.Value, error) { - pval := mmap.NewValue() - if err := d.unmarshalMessage(pval.Message(), true); err != nil { - return protoreflect.Value{}, err - } - return pval, nil - } - default: - unmarshalMapValue = func() (protoreflect.Value, error) { - return d.unmarshalScalar(fd.MapValue()) - } - } - - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case text.MessageOpen: - return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue) - - case text.ListOpen: - for { - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case text.ListClose: - return nil - case text.MessageOpen: - if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil { - return err - } - default: - return d.unexpectedTokenError(tok) - } - } - - default: - return d.unexpectedTokenError(tok) - } -} - -// unmarshalMap unmarshals into given protoreflect.Map. A map value is a -// textproto message containing {key: <kvalue>, value: <mvalue>}. -func (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error { - var key protoreflect.MapKey - var pval protoreflect.Value -Loop: - for { - // Read field name. - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case text.Name: - if tok.NameKind() != text.IdentName { - if !d.opts.DiscardUnknown { - return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString()) - } - d.skipValue() - continue Loop - } - // Continue below. - case text.MessageClose: - break Loop - default: - return d.unexpectedTokenError(tok) - } - - switch name := protoreflect.Name(tok.IdentName()); name { - case genid.MapEntry_Key_field_name: - if !tok.HasSeparator() { - return d.syntaxError(tok.Pos(), "missing field separator :") - } - if key.IsValid() { - return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) - } - val, err := d.unmarshalScalar(fd.MapKey()) - if err != nil { - return err - } - key = val.MapKey() - - case genid.MapEntry_Value_field_name: - if kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) { - if !tok.HasSeparator() { - return d.syntaxError(tok.Pos(), "missing field separator :") - } - } - if pval.IsValid() { - return d.newError(tok.Pos(), "map entry %q cannot be repeated", name) - } - pval, err = unmarshalMapValue() - if err != nil { - return err - } - - default: - if !d.opts.DiscardUnknown { - return d.newError(tok.Pos(), "unknown map entry field %q", name) - } - d.skipValue() - } - } - - if !key.IsValid() { - key = fd.MapKey().Default().MapKey() - } - if !pval.IsValid() { - switch fd.MapValue().Kind() { - case protoreflect.MessageKind, protoreflect.GroupKind: - // If value field is not set for message/group types, construct an - // empty one as default. - pval = mmap.NewValue() - default: - pval = fd.MapValue().Default() - } - } - mmap.Set(key, pval) - return nil -} - -// unmarshalAny unmarshals an Any textproto. It can either be in expanded form -// or non-expanded form. -func (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error { - var typeURL string - var bValue []byte - var seenTypeUrl bool - var seenValue bool - var isExpanded bool - - if checkDelims { - tok, err := d.Read() - if err != nil { - return err - } - - if tok.Kind() != text.MessageOpen { - return d.unexpectedTokenError(tok) - } - } - -Loop: - for { - // Read field name. Can only have 3 possible field names, i.e. type_url, - // value and type URL name inside []. - tok, err := d.Read() - if err != nil { - return err - } - if typ := tok.Kind(); typ != text.Name { - if checkDelims { - if typ == text.MessageClose { - break Loop - } - } else if typ == text.EOF { - break Loop - } - return d.unexpectedTokenError(tok) - } - - switch tok.NameKind() { - case text.IdentName: - // Both type_url and value fields require field separator :. - if !tok.HasSeparator() { - return d.syntaxError(tok.Pos(), "missing field separator :") - } - - switch name := protoreflect.Name(tok.IdentName()); name { - case genid.Any_TypeUrl_field_name: - if seenTypeUrl { - return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname) - } - if isExpanded { - return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) - } - tok, err := d.Read() - if err != nil { - return err - } - var ok bool - typeURL, ok = tok.String() - if !ok { - return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString()) - } - seenTypeUrl = true - - case genid.Any_Value_field_name: - if seenValue { - return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname) - } - if isExpanded { - return d.newError(tok.Pos(), "conflict with [%s] field", typeURL) - } - tok, err := d.Read() - if err != nil { - return err - } - s, ok := tok.String() - if !ok { - return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString()) - } - bValue = []byte(s) - seenValue = true - - default: - if !d.opts.DiscardUnknown { - return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) - } - } - - case text.TypeName: - if isExpanded { - return d.newError(tok.Pos(), "cannot have more than one type") - } - if seenTypeUrl { - return d.newError(tok.Pos(), "conflict with type_url field") - } - typeURL = tok.TypeName() - var err error - bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos()) - if err != nil { - return err - } - isExpanded = true - - default: - if !d.opts.DiscardUnknown { - return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname) - } - } - } - - fds := m.Descriptor().Fields() - if len(typeURL) > 0 { - m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL)) - } - if len(bValue) > 0 { - m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue)) - } - return nil -} - -func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) { - mt, err := d.opts.Resolver.FindMessageByURL(typeURL) - if err != nil { - return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err) - } - // Create new message for the embedded message type and unmarshal the value - // field into it. - m := mt.New() - if err := d.unmarshalMessage(m, true); err != nil { - return nil, err - } - // Serialize the embedded message and return the resulting bytes. - b, err := proto.MarshalOptions{ - AllowPartial: true, // Never check required fields inside an Any. - Deterministic: true, - }.Marshal(m.Interface()) - if err != nil { - return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err) - } - return b, nil -} - -// skipValue makes the decoder parse a field value in order to advance the read -// to the next field. It relies on Read returning an error if the types are not -// in valid sequence. -func (d decoder) skipValue() error { - tok, err := d.Read() - if err != nil { - return err - } - // Only need to continue reading for messages and lists. - switch tok.Kind() { - case text.MessageOpen: - return d.skipMessageValue() - - case text.ListOpen: - for { - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case text.ListClose: - return nil - case text.MessageOpen: - if err := d.skipMessageValue(); err != nil { - return err - } - default: - // Skip items. This will not validate whether skipped values are - // of the same type or not, same behavior as C++ - // TextFormat::Parser::AllowUnknownField(true) version 3.8.0. - } - } - } - return nil -} - -// skipMessageValue makes the decoder parse and skip over all fields in a -// message. It assumes that the previous read type is MessageOpen. -func (d decoder) skipMessageValue() error { - for { - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case text.MessageClose: - return nil - case text.Name: - if err := d.skipValue(); err != nil { - return err - } - } - } -} diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/doc.go b/vendor/google.golang.org/protobuf/encoding/prototext/doc.go deleted file mode 100644 index 162b4f9..0000000 --- a/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package prototext marshals and unmarshals protocol buffer messages as the -// textproto format. -package prototext diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go deleted file mode 100644 index 1f57e66..0000000 --- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +++ /dev/null @@ -1,380 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package prototext - -import ( - "fmt" - "strconv" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/encoding/text" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/order" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -const defaultIndent = " " - -// Format formats the message as a multiline string. -// This function is only intended for human consumption and ignores errors. -// Do not depend on the output being stable. Its output will change across -// different builds of your program, even when using the same version of the -// protobuf module. -func Format(m proto.Message) string { - return MarshalOptions{Multiline: true}.Format(m) -} - -// Marshal writes the given [proto.Message] in textproto format using default -// options. Do not depend on the output being stable. Its output will change -// across different builds of your program, even when using the same version of -// the protobuf module. -func Marshal(m proto.Message) ([]byte, error) { - return MarshalOptions{}.Marshal(m) -} - -// MarshalOptions is a configurable text format marshaler. -type MarshalOptions struct { - pragma.NoUnkeyedLiterals - - // Multiline specifies whether the marshaler should format the output in - // indented-form with every textual element on a new line. - // If Indent is an empty string, then an arbitrary indent is chosen. - Multiline bool - - // Indent specifies the set of indentation characters to use in a multiline - // formatted output such that every entry is preceded by Indent and - // terminated by a newline. If non-empty, then Multiline is treated as true. - // Indent can only be composed of space or tab characters. - Indent string - - // EmitASCII specifies whether to format strings and bytes as ASCII only - // as opposed to using UTF-8 encoding when possible. - EmitASCII bool - - // allowInvalidUTF8 specifies whether to permit the encoding of strings - // with invalid UTF-8. This is unexported as it is intended to only - // be specified by the Format method. - allowInvalidUTF8 bool - - // AllowPartial allows messages that have missing required fields to marshal - // without returning an error. If AllowPartial is false (the default), - // Marshal will return error if there are any missing required fields. - AllowPartial bool - - // EmitUnknown specifies whether to emit unknown fields in the output. - // If specified, the unmarshaler may be unable to parse the output. - // The default is to exclude unknown fields. - EmitUnknown bool - - // Resolver is used for looking up types when expanding google.protobuf.Any - // messages. If nil, this defaults to using protoregistry.GlobalTypes. - Resolver interface { - protoregistry.ExtensionTypeResolver - protoregistry.MessageTypeResolver - } -} - -// Format formats the message as a string. -// This method is only intended for human consumption and ignores errors. -// Do not depend on the output being stable. Its output will change across -// different builds of your program, even when using the same version of the -// protobuf module. -func (o MarshalOptions) Format(m proto.Message) string { - if m == nil || !m.ProtoReflect().IsValid() { - return "<nil>" // invalid syntax, but okay since this is for debugging - } - o.allowInvalidUTF8 = true - o.AllowPartial = true - o.EmitUnknown = true - b, _ := o.Marshal(m) - return string(b) -} - -// Marshal writes the given [proto.Message] in textproto format using options in -// MarshalOptions object. Do not depend on the output being stable. Its output -// will change across different builds of your program, even when using the -// same version of the protobuf module. -func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { - return o.marshal(nil, m) -} - -// MarshalAppend appends the textproto format encoding of m to b, -// returning the result. -func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) { - return o.marshal(b, m) -} - -// marshal is a centralized function that all marshal operations go through. -// For profiling purposes, avoid changing the name of this function or -// introducing other code paths for marshal that do not go through this. -func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) { - var delims = [2]byte{'{', '}'} - - if o.Multiline && o.Indent == "" { - o.Indent = defaultIndent - } - if o.Resolver == nil { - o.Resolver = protoregistry.GlobalTypes - } - - internalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII) - if err != nil { - return nil, err - } - - // Treat nil message interface as an empty message, - // in which case there is nothing to output. - if m == nil { - return b, nil - } - - enc := encoder{internalEnc, o} - err = enc.marshalMessage(m.ProtoReflect(), false) - if err != nil { - return nil, err - } - out := enc.Bytes() - if len(o.Indent) > 0 && len(out) > 0 { - out = append(out, '\n') - } - if o.AllowPartial { - return out, nil - } - return out, proto.CheckInitialized(m) -} - -type encoder struct { - *text.Encoder - opts MarshalOptions -} - -// marshalMessage marshals the given protoreflect.Message. -func (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error { - messageDesc := m.Descriptor() - if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { - return errors.New("no support for proto1 MessageSets") - } - - if inclDelims { - e.StartMessage() - defer e.EndMessage() - } - - // Handle Any expansion. - if messageDesc.FullName() == genid.Any_message_fullname { - if e.marshalAny(m) { - return nil - } - // If unable to expand, continue on to marshal Any as a regular message. - } - - // Marshal fields. - var err error - order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - if err = e.marshalField(fd.TextName(), v, fd); err != nil { - return false - } - return true - }) - if err != nil { - return err - } - - // Marshal unknown fields. - if e.opts.EmitUnknown { - e.marshalUnknown(m.GetUnknown()) - } - - return nil -} - -// marshalField marshals the given field with protoreflect.Value. -func (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error { - switch { - case fd.IsList(): - return e.marshalList(name, val.List(), fd) - case fd.IsMap(): - return e.marshalMap(name, val.Map(), fd) - default: - e.WriteName(name) - return e.marshalSingular(val, fd) - } -} - -// marshalSingular marshals the given non-repeated field value. This includes -// all scalar types, enums, messages, and groups. -func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { - kind := fd.Kind() - switch kind { - case protoreflect.BoolKind: - e.WriteBool(val.Bool()) - - case protoreflect.StringKind: - s := val.String() - if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) { - return errors.InvalidUTF8(string(fd.FullName())) - } - e.WriteString(s) - - case protoreflect.Int32Kind, protoreflect.Int64Kind, - protoreflect.Sint32Kind, protoreflect.Sint64Kind, - protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: - e.WriteInt(val.Int()) - - case protoreflect.Uint32Kind, protoreflect.Uint64Kind, - protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: - e.WriteUint(val.Uint()) - - case protoreflect.FloatKind: - // Encoder.WriteFloat handles the special numbers NaN and infinites. - e.WriteFloat(val.Float(), 32) - - case protoreflect.DoubleKind: - // Encoder.WriteFloat handles the special numbers NaN and infinites. - e.WriteFloat(val.Float(), 64) - - case protoreflect.BytesKind: - e.WriteString(string(val.Bytes())) - - case protoreflect.EnumKind: - num := val.Enum() - if desc := fd.Enum().Values().ByNumber(num); desc != nil { - e.WriteLiteral(string(desc.Name())) - } else { - // Use numeric value if there is no enum description. - e.WriteInt(int64(num)) - } - - case protoreflect.MessageKind, protoreflect.GroupKind: - return e.marshalMessage(val.Message(), true) - - default: - panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind)) - } - return nil -} - -// marshalList marshals the given protoreflect.List as multiple name-value fields. -func (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error { - size := list.Len() - for i := 0; i < size; i++ { - e.WriteName(name) - if err := e.marshalSingular(list.Get(i), fd); err != nil { - return err - } - } - return nil -} - -// marshalMap marshals the given protoreflect.Map as multiple name-value fields. -func (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { - var err error - order.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool { - e.WriteName(name) - e.StartMessage() - defer e.EndMessage() - - e.WriteName(string(genid.MapEntry_Key_field_name)) - err = e.marshalSingular(key.Value(), fd.MapKey()) - if err != nil { - return false - } - - e.WriteName(string(genid.MapEntry_Value_field_name)) - err = e.marshalSingular(val, fd.MapValue()) - if err != nil { - return false - } - return true - }) - return err -} - -// marshalUnknown parses the given []byte and marshals fields out. -// This function assumes proper encoding in the given []byte. -func (e encoder) marshalUnknown(b []byte) { - const dec = 10 - const hex = 16 - for len(b) > 0 { - num, wtype, n := protowire.ConsumeTag(b) - b = b[n:] - e.WriteName(strconv.FormatInt(int64(num), dec)) - - switch wtype { - case protowire.VarintType: - var v uint64 - v, n = protowire.ConsumeVarint(b) - e.WriteUint(v) - case protowire.Fixed32Type: - var v uint32 - v, n = protowire.ConsumeFixed32(b) - e.WriteLiteral("0x" + strconv.FormatUint(uint64(v), hex)) - case protowire.Fixed64Type: - var v uint64 - v, n = protowire.ConsumeFixed64(b) - e.WriteLiteral("0x" + strconv.FormatUint(v, hex)) - case protowire.BytesType: - var v []byte - v, n = protowire.ConsumeBytes(b) - e.WriteString(string(v)) - case protowire.StartGroupType: - e.StartMessage() - var v []byte - v, n = protowire.ConsumeGroup(num, b) - e.marshalUnknown(v) - e.EndMessage() - default: - panic(fmt.Sprintf("prototext: error parsing unknown field wire type: %v", wtype)) - } - - b = b[n:] - } -} - -// marshalAny marshals the given google.protobuf.Any message in expanded form. -// It returns true if it was able to marshal, else false. -func (e encoder) marshalAny(any protoreflect.Message) bool { - // Construct the embedded message. - fds := any.Descriptor().Fields() - fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) - typeURL := any.Get(fdType).String() - mt, err := e.opts.Resolver.FindMessageByURL(typeURL) - if err != nil { - return false - } - m := mt.New().Interface() - - // Unmarshal bytes into embedded message. - fdValue := fds.ByNumber(genid.Any_Value_field_number) - value := any.Get(fdValue) - err = proto.UnmarshalOptions{ - AllowPartial: true, - Resolver: e.opts.Resolver, - }.Unmarshal(value.Bytes(), m) - if err != nil { - return false - } - - // Get current encoder position. If marshaling fails, reset encoder output - // back to this position. - pos := e.Snapshot() - - // Field name is the proto field name enclosed in []. - e.WriteName("[" + typeURL + "]") - err = e.marshalMessage(m.ProtoReflect(), true) - if err != nil { - e.Reset(pos) - return false - } - return true -} diff --git a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/vendor/google.golang.org/protobuf/encoding/protowire/wire.go deleted file mode 100644 index e942bc9..0000000 --- a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +++ /dev/null @@ -1,547 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protowire parses and formats the raw wire encoding. -// See https://protobuf.dev/programming-guides/encoding. -// -// For marshaling and unmarshaling entire protobuf messages, -// use the [google.golang.org/protobuf/proto] package instead. -package protowire - -import ( - "io" - "math" - "math/bits" - - "google.golang.org/protobuf/internal/errors" -) - -// Number represents the field number. -type Number int32 - -const ( - MinValidNumber Number = 1 - FirstReservedNumber Number = 19000 - LastReservedNumber Number = 19999 - MaxValidNumber Number = 1<<29 - 1 - DefaultRecursionLimit = 10000 -) - -// IsValid reports whether the field number is semantically valid. -func (n Number) IsValid() bool { - return MinValidNumber <= n && n <= MaxValidNumber -} - -// Type represents the wire type. -type Type int8 - -const ( - VarintType Type = 0 - Fixed32Type Type = 5 - Fixed64Type Type = 1 - BytesType Type = 2 - StartGroupType Type = 3 - EndGroupType Type = 4 -) - -const ( - _ = -iota - errCodeTruncated - errCodeFieldNumber - errCodeOverflow - errCodeReserved - errCodeEndGroup - errCodeRecursionDepth -) - -var ( - errFieldNumber = errors.New("invalid field number") - errOverflow = errors.New("variable length integer overflow") - errReserved = errors.New("cannot parse reserved wire type") - errEndGroup = errors.New("mismatching end group marker") - errParse = errors.New("parse error") -) - -// ParseError converts an error code into an error value. -// This returns nil if n is a non-negative number. -func ParseError(n int) error { - if n >= 0 { - return nil - } - switch n { - case errCodeTruncated: - return io.ErrUnexpectedEOF - case errCodeFieldNumber: - return errFieldNumber - case errCodeOverflow: - return errOverflow - case errCodeReserved: - return errReserved - case errCodeEndGroup: - return errEndGroup - default: - return errParse - } -} - -// ConsumeField parses an entire field record (both tag and value) and returns -// the field number, the wire type, and the total length. -// This returns a negative length upon an error (see [ParseError]). -// -// The total length includes the tag header and the end group marker (if the -// field is a group). -func ConsumeField(b []byte) (Number, Type, int) { - num, typ, n := ConsumeTag(b) - if n < 0 { - return 0, 0, n // forward error code - } - m := ConsumeFieldValue(num, typ, b[n:]) - if m < 0 { - return 0, 0, m // forward error code - } - return num, typ, n + m -} - -// ConsumeFieldValue parses a field value and returns its length. -// This assumes that the field [Number] and wire [Type] have already been parsed. -// This returns a negative length upon an error (see [ParseError]). -// -// When parsing a group, the length includes the end group marker and -// the end group is verified to match the starting field number. -func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { - return consumeFieldValueD(num, typ, b, DefaultRecursionLimit) -} - -func consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) { - switch typ { - case VarintType: - _, n = ConsumeVarint(b) - return n - case Fixed32Type: - _, n = ConsumeFixed32(b) - return n - case Fixed64Type: - _, n = ConsumeFixed64(b) - return n - case BytesType: - _, n = ConsumeBytes(b) - return n - case StartGroupType: - if depth < 0 { - return errCodeRecursionDepth - } - n0 := len(b) - for { - num2, typ2, n := ConsumeTag(b) - if n < 0 { - return n // forward error code - } - b = b[n:] - if typ2 == EndGroupType { - if num != num2 { - return errCodeEndGroup - } - return n0 - len(b) - } - - n = consumeFieldValueD(num2, typ2, b, depth-1) - if n < 0 { - return n // forward error code - } - b = b[n:] - } - case EndGroupType: - return errCodeEndGroup - default: - return errCodeReserved - } -} - -// AppendTag encodes num and typ as a varint-encoded tag and appends it to b. -func AppendTag(b []byte, num Number, typ Type) []byte { - return AppendVarint(b, EncodeTag(num, typ)) -} - -// ConsumeTag parses b as a varint-encoded tag, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeTag(b []byte) (Number, Type, int) { - v, n := ConsumeVarint(b) - if n < 0 { - return 0, 0, n // forward error code - } - num, typ := DecodeTag(v) - if num < MinValidNumber { - return 0, 0, errCodeFieldNumber - } - return num, typ, n -} - -func SizeTag(num Number) int { - return SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size -} - -// AppendVarint appends v to b as a varint-encoded uint64. -func AppendVarint(b []byte, v uint64) []byte { - switch { - case v < 1<<7: - b = append(b, byte(v)) - case v < 1<<14: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte(v>>7)) - case v < 1<<21: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte(v>>14)) - case v < 1<<28: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte(v>>21)) - case v < 1<<35: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte(v>>28)) - case v < 1<<42: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte(v>>35)) - case v < 1<<49: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte(v>>42)) - case v < 1<<56: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte(v>>49)) - case v < 1<<63: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte(v>>56)) - default: - b = append(b, - byte((v>>0)&0x7f|0x80), - byte((v>>7)&0x7f|0x80), - byte((v>>14)&0x7f|0x80), - byte((v>>21)&0x7f|0x80), - byte((v>>28)&0x7f|0x80), - byte((v>>35)&0x7f|0x80), - byte((v>>42)&0x7f|0x80), - byte((v>>49)&0x7f|0x80), - byte((v>>56)&0x7f|0x80), - 1) - } - return b -} - -// ConsumeVarint parses b as a varint-encoded uint64, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeVarint(b []byte) (v uint64, n int) { - var y uint64 - if len(b) <= 0 { - return 0, errCodeTruncated - } - v = uint64(b[0]) - if v < 0x80 { - return v, 1 - } - v -= 0x80 - - if len(b) <= 1 { - return 0, errCodeTruncated - } - y = uint64(b[1]) - v += y << 7 - if y < 0x80 { - return v, 2 - } - v -= 0x80 << 7 - - if len(b) <= 2 { - return 0, errCodeTruncated - } - y = uint64(b[2]) - v += y << 14 - if y < 0x80 { - return v, 3 - } - v -= 0x80 << 14 - - if len(b) <= 3 { - return 0, errCodeTruncated - } - y = uint64(b[3]) - v += y << 21 - if y < 0x80 { - return v, 4 - } - v -= 0x80 << 21 - - if len(b) <= 4 { - return 0, errCodeTruncated - } - y = uint64(b[4]) - v += y << 28 - if y < 0x80 { - return v, 5 - } - v -= 0x80 << 28 - - if len(b) <= 5 { - return 0, errCodeTruncated - } - y = uint64(b[5]) - v += y << 35 - if y < 0x80 { - return v, 6 - } - v -= 0x80 << 35 - - if len(b) <= 6 { - return 0, errCodeTruncated - } - y = uint64(b[6]) - v += y << 42 - if y < 0x80 { - return v, 7 - } - v -= 0x80 << 42 - - if len(b) <= 7 { - return 0, errCodeTruncated - } - y = uint64(b[7]) - v += y << 49 - if y < 0x80 { - return v, 8 - } - v -= 0x80 << 49 - - if len(b) <= 8 { - return 0, errCodeTruncated - } - y = uint64(b[8]) - v += y << 56 - if y < 0x80 { - return v, 9 - } - v -= 0x80 << 56 - - if len(b) <= 9 { - return 0, errCodeTruncated - } - y = uint64(b[9]) - v += y << 63 - if y < 2 { - return v, 10 - } - return 0, errCodeOverflow -} - -// SizeVarint returns the encoded size of a varint. -// The size is guaranteed to be within 1 and 10, inclusive. -func SizeVarint(v uint64) int { - // This computes 1 + (bits.Len64(v)-1)/7. - // 9/64 is a good enough approximation of 1/7 - return int(9*uint32(bits.Len64(v))+64) / 64 -} - -// AppendFixed32 appends v to b as a little-endian uint32. -func AppendFixed32(b []byte, v uint32) []byte { - return append(b, - byte(v>>0), - byte(v>>8), - byte(v>>16), - byte(v>>24)) -} - -// ConsumeFixed32 parses b as a little-endian uint32, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeFixed32(b []byte) (v uint32, n int) { - if len(b) < 4 { - return 0, errCodeTruncated - } - v = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - return v, 4 -} - -// SizeFixed32 returns the encoded size of a fixed32; which is always 4. -func SizeFixed32() int { - return 4 -} - -// AppendFixed64 appends v to b as a little-endian uint64. -func AppendFixed64(b []byte, v uint64) []byte { - return append(b, - byte(v>>0), - byte(v>>8), - byte(v>>16), - byte(v>>24), - byte(v>>32), - byte(v>>40), - byte(v>>48), - byte(v>>56)) -} - -// ConsumeFixed64 parses b as a little-endian uint64, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeFixed64(b []byte) (v uint64, n int) { - if len(b) < 8 { - return 0, errCodeTruncated - } - v = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 - return v, 8 -} - -// SizeFixed64 returns the encoded size of a fixed64; which is always 8. -func SizeFixed64() int { - return 8 -} - -// AppendBytes appends v to b as a length-prefixed bytes value. -func AppendBytes(b []byte, v []byte) []byte { - return append(AppendVarint(b, uint64(len(v))), v...) -} - -// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeBytes(b []byte) (v []byte, n int) { - m, n := ConsumeVarint(b) - if n < 0 { - return nil, n // forward error code - } - if m > uint64(len(b[n:])) { - return nil, errCodeTruncated - } - return b[n:][:m], n + int(m) -} - -// SizeBytes returns the encoded size of a length-prefixed bytes value, -// given only the length. -func SizeBytes(n int) int { - return SizeVarint(uint64(n)) + n -} - -// AppendString appends v to b as a length-prefixed bytes value. -func AppendString(b []byte, v string) []byte { - return append(AppendVarint(b, uint64(len(v))), v...) -} - -// ConsumeString parses b as a length-prefixed bytes value, reporting its length. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeString(b []byte) (v string, n int) { - bb, n := ConsumeBytes(b) - return string(bb), n -} - -// AppendGroup appends v to b as group value, with a trailing end group marker. -// The value v must not contain the end marker. -func AppendGroup(b []byte, num Number, v []byte) []byte { - return AppendVarint(append(b, v...), EncodeTag(num, EndGroupType)) -} - -// ConsumeGroup parses b as a group value until the trailing end group marker, -// and verifies that the end marker matches the provided num. The value v -// does not contain the end marker, while the length does contain the end marker. -// This returns a negative length upon an error (see [ParseError]). -func ConsumeGroup(num Number, b []byte) (v []byte, n int) { - n = ConsumeFieldValue(num, StartGroupType, b) - if n < 0 { - return nil, n // forward error code - } - b = b[:n] - - // Truncate off end group marker, but need to handle denormalized varints. - // Assuming end marker is never 0 (which is always the case since - // EndGroupType is non-zero), we can truncate all trailing bytes where the - // lower 7 bits are all zero (implying that the varint is denormalized). - for len(b) > 0 && b[len(b)-1]&0x7f == 0 { - b = b[:len(b)-1] - } - b = b[:len(b)-SizeTag(num)] - return b, n -} - -// SizeGroup returns the encoded size of a group, given only the length. -func SizeGroup(num Number, n int) int { - return n + SizeTag(num) -} - -// DecodeTag decodes the field [Number] and wire [Type] from its unified form. -// The [Number] is -1 if the decoded field number overflows int32. -// Other than overflow, this does not check for field number validity. -func DecodeTag(x uint64) (Number, Type) { - // NOTE: MessageSet allows for larger field numbers than normal. - if x>>3 > uint64(math.MaxInt32) { - return -1, 0 - } - return Number(x >> 3), Type(x & 7) -} - -// EncodeTag encodes the field [Number] and wire [Type] into its unified form. -func EncodeTag(num Number, typ Type) uint64 { - return uint64(num)<<3 | uint64(typ&7) -} - -// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64. -// -// Input: {…, 5, 3, 1, 0, 2, 4, 6, …} -// Output: {…, -3, -2, -1, 0, +1, +2, +3, …} -func DecodeZigZag(x uint64) int64 { - return int64(x>>1) ^ int64(x)<<63>>63 -} - -// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64. -// -// Input: {…, -3, -2, -1, 0, +1, +2, +3, …} -// Output: {…, 5, 3, 1, 0, 2, 4, 6, …} -func EncodeZigZag(x int64) uint64 { - return uint64(x<<1) ^ uint64(x>>63) -} - -// DecodeBool decodes a uint64 as a bool. -// -// Input: { 0, 1, 2, …} -// Output: {false, true, true, …} -func DecodeBool(x uint64) bool { - return x != 0 -} - -// EncodeBool encodes a bool as a uint64. -// -// Input: {false, true} -// Output: { 0, 1} -func EncodeBool(x bool) uint64 { - if x { - return 1 - } - return 0 -} diff --git a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go deleted file mode 100644 index 87e46bd..0000000 --- a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +++ /dev/null @@ -1,414 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package descfmt provides functionality to format descriptors. -package descfmt - -import ( - "fmt" - "io" - "reflect" - "strconv" - "strings" - - "google.golang.org/protobuf/internal/detrand" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type list interface { - Len() int - pragma.DoNotImplement -} - -func FormatList(s fmt.State, r rune, vs list) { - io.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#')))) -} -func formatListOpt(vs list, isRoot, allowMulti bool) string { - start, end := "[", "]" - if isRoot { - var name string - switch vs.(type) { - case protoreflect.Names: - name = "Names" - case protoreflect.FieldNumbers: - name = "FieldNumbers" - case protoreflect.FieldRanges: - name = "FieldRanges" - case protoreflect.EnumRanges: - name = "EnumRanges" - case protoreflect.FileImports: - name = "FileImports" - case protoreflect.Descriptor: - name = reflect.ValueOf(vs).MethodByName("Get").Type().Out(0).Name() + "s" - default: - name = reflect.ValueOf(vs).Elem().Type().Name() - } - start, end = name+"{", "}" - } - - var ss []string - switch vs := vs.(type) { - case protoreflect.Names: - for i := 0; i < vs.Len(); i++ { - ss = append(ss, fmt.Sprint(vs.Get(i))) - } - return start + joinStrings(ss, false) + end - case protoreflect.FieldNumbers: - for i := 0; i < vs.Len(); i++ { - ss = append(ss, fmt.Sprint(vs.Get(i))) - } - return start + joinStrings(ss, false) + end - case protoreflect.FieldRanges: - for i := 0; i < vs.Len(); i++ { - r := vs.Get(i) - if r[0]+1 == r[1] { - ss = append(ss, fmt.Sprintf("%d", r[0])) - } else { - ss = append(ss, fmt.Sprintf("%d:%d", r[0], r[1])) // enum ranges are end exclusive - } - } - return start + joinStrings(ss, false) + end - case protoreflect.EnumRanges: - for i := 0; i < vs.Len(); i++ { - r := vs.Get(i) - if r[0] == r[1] { - ss = append(ss, fmt.Sprintf("%d", r[0])) - } else { - ss = append(ss, fmt.Sprintf("%d:%d", r[0], int64(r[1])+1)) // enum ranges are end inclusive - } - } - return start + joinStrings(ss, false) + end - case protoreflect.FileImports: - for i := 0; i < vs.Len(); i++ { - var rs records - rv := reflect.ValueOf(vs.Get(i)) - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("IsPublic"), "IsPublic"}, - {rv.MethodByName("IsWeak"), "IsWeak"}, - }...) - ss = append(ss, "{"+rs.Join()+"}") - } - return start + joinStrings(ss, allowMulti) + end - default: - _, isEnumValue := vs.(protoreflect.EnumValueDescriptors) - for i := 0; i < vs.Len(); i++ { - m := reflect.ValueOf(vs).MethodByName("Get") - v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface() - ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil)) - } - return start + joinStrings(ss, allowMulti && isEnumValue) + end - } -} - -type methodAndName struct { - method reflect.Value - name string -} - -func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { - io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil)) -} - -func InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { - return formatDescOpt(t, isRoot, allowMulti, record) -} - -func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { - rv := reflect.ValueOf(t) - rt := rv.MethodByName("ProtoType").Type().In(0) - - start, end := "{", "}" - if isRoot { - start = rt.Name() + "{" - } - - _, isFile := t.(protoreflect.FileDescriptor) - rs := records{ - allowMulti: allowMulti, - record: record, - } - if t.IsPlaceholder() { - if isFile { - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, - }...) - } else { - rs.Append(rv, []methodAndName{ - {rv.MethodByName("FullName"), "FullName"}, - {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, - }...) - } - } else { - switch { - case isFile: - rs.Append(rv, methodAndName{rv.MethodByName("Syntax"), "Syntax"}) - case isRoot: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Syntax"), "Syntax"}, - {rv.MethodByName("FullName"), "FullName"}, - }...) - default: - rs.Append(rv, methodAndName{rv.MethodByName("Name"), "Name"}) - } - switch t := t.(type) { - case protoreflect.FieldDescriptor: - accessors := []methodAndName{ - {rv.MethodByName("Number"), "Number"}, - {rv.MethodByName("Cardinality"), "Cardinality"}, - {rv.MethodByName("Kind"), "Kind"}, - {rv.MethodByName("HasJSONName"), "HasJSONName"}, - {rv.MethodByName("JSONName"), "JSONName"}, - {rv.MethodByName("HasPresence"), "HasPresence"}, - {rv.MethodByName("IsExtension"), "IsExtension"}, - {rv.MethodByName("IsPacked"), "IsPacked"}, - {rv.MethodByName("IsWeak"), "IsWeak"}, - {rv.MethodByName("IsList"), "IsList"}, - {rv.MethodByName("IsMap"), "IsMap"}, - {rv.MethodByName("MapKey"), "MapKey"}, - {rv.MethodByName("MapValue"), "MapValue"}, - {rv.MethodByName("HasDefault"), "HasDefault"}, - {rv.MethodByName("Default"), "Default"}, - {rv.MethodByName("ContainingOneof"), "ContainingOneof"}, - {rv.MethodByName("ContainingMessage"), "ContainingMessage"}, - {rv.MethodByName("Message"), "Message"}, - {rv.MethodByName("Enum"), "Enum"}, - } - for _, s := range accessors { - switch s.name { - case "MapKey": - if k := t.MapKey(); k != nil { - rs.recs = append(rs.recs, [2]string{"MapKey", k.Kind().String()}) - } - case "MapValue": - if v := t.MapValue(); v != nil { - switch v.Kind() { - case protoreflect.EnumKind: - rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Enum().FullName())}) - case protoreflect.MessageKind, protoreflect.GroupKind: - rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Message().FullName())}) - default: - rs.AppendRecs("MapValue", [2]string{"MapValue", v.Kind().String()}) - } - } - case "ContainingOneof": - if od := t.ContainingOneof(); od != nil { - rs.AppendRecs("ContainingOneof", [2]string{"Oneof", string(od.Name())}) - } - case "ContainingMessage": - if t.IsExtension() { - rs.AppendRecs("ContainingMessage", [2]string{"Extendee", string(t.ContainingMessage().FullName())}) - } - case "Message": - if !t.IsMap() { - rs.Append(rv, s) - } - default: - rs.Append(rv, s) - } - } - case protoreflect.OneofDescriptor: - var ss []string - fs := t.Fields() - for i := 0; i < fs.Len(); i++ { - ss = append(ss, string(fs.Get(i).Name())) - } - if len(ss) > 0 { - rs.AppendRecs("Fields", [2]string{"Fields", "[" + joinStrings(ss, false) + "]"}) - } - - case protoreflect.FileDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Path"), "Path"}, - {rv.MethodByName("Package"), "Package"}, - {rv.MethodByName("Imports"), "Imports"}, - {rv.MethodByName("Messages"), "Messages"}, - {rv.MethodByName("Enums"), "Enums"}, - {rv.MethodByName("Extensions"), "Extensions"}, - {rv.MethodByName("Services"), "Services"}, - }...) - - case protoreflect.MessageDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("IsMapEntry"), "IsMapEntry"}, - {rv.MethodByName("Fields"), "Fields"}, - {rv.MethodByName("Oneofs"), "Oneofs"}, - {rv.MethodByName("ReservedNames"), "ReservedNames"}, - {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, - {rv.MethodByName("RequiredNumbers"), "RequiredNumbers"}, - {rv.MethodByName("ExtensionRanges"), "ExtensionRanges"}, - {rv.MethodByName("Messages"), "Messages"}, - {rv.MethodByName("Enums"), "Enums"}, - {rv.MethodByName("Extensions"), "Extensions"}, - }...) - - case protoreflect.EnumDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Values"), "Values"}, - {rv.MethodByName("ReservedNames"), "ReservedNames"}, - {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, - {rv.MethodByName("IsClosed"), "IsClosed"}, - }...) - - case protoreflect.EnumValueDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Number"), "Number"}, - }...) - - case protoreflect.ServiceDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Methods"), "Methods"}, - }...) - - case protoreflect.MethodDescriptor: - rs.Append(rv, []methodAndName{ - {rv.MethodByName("Input"), "Input"}, - {rv.MethodByName("Output"), "Output"}, - {rv.MethodByName("IsStreamingClient"), "IsStreamingClient"}, - {rv.MethodByName("IsStreamingServer"), "IsStreamingServer"}, - }...) - } - if m := rv.MethodByName("GoType"); m.IsValid() { - rs.Append(rv, methodAndName{m, "GoType"}) - } - } - return start + rs.Join() + end -} - -type records struct { - recs [][2]string - allowMulti bool - - // record is a function that will be called for every Append() or - // AppendRecs() call, to be used for testing with the - // InternalFormatDescOptForTesting function. - record func(string) -} - -func (rs *records) AppendRecs(fieldName string, newRecs [2]string) { - if rs.record != nil { - rs.record(fieldName) - } - rs.recs = append(rs.recs, newRecs) -} - -func (rs *records) Append(v reflect.Value, accessors ...methodAndName) { - for _, a := range accessors { - if rs.record != nil { - rs.record(a.name) - } - var rv reflect.Value - if a.method.IsValid() { - rv = a.method.Call(nil)[0] - } - if v.Kind() == reflect.Struct && !rv.IsValid() { - rv = v.FieldByName(a.name) - } - if !rv.IsValid() { - panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a.name)) - } - if _, ok := rv.Interface().(protoreflect.Value); ok { - rv = rv.MethodByName("Interface").Call(nil)[0] - if !rv.IsNil() { - rv = rv.Elem() - } - } - - // Ignore zero values. - var isZero bool - switch rv.Kind() { - case reflect.Interface, reflect.Slice: - isZero = rv.IsNil() - case reflect.Bool: - isZero = rv.Bool() == false - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - isZero = rv.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - isZero = rv.Uint() == 0 - case reflect.String: - isZero = rv.String() == "" - } - if n, ok := rv.Interface().(list); ok { - isZero = n.Len() == 0 - } - if isZero { - continue - } - - // Format the value. - var s string - v := rv.Interface() - switch v := v.(type) { - case list: - s = formatListOpt(v, false, rs.allowMulti) - case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: - s = string(v.(protoreflect.Descriptor).Name()) - case protoreflect.Descriptor: - s = string(v.FullName()) - case string: - s = strconv.Quote(v) - case []byte: - s = fmt.Sprintf("%q", v) - default: - s = fmt.Sprint(v) - } - rs.recs = append(rs.recs, [2]string{a.name, s}) - } -} - -func (rs *records) Join() string { - var ss []string - - // In single line mode, simply join all records with commas. - if !rs.allowMulti { - for _, r := range rs.recs { - ss = append(ss, r[0]+formatColon(0)+r[1]) - } - return joinStrings(ss, false) - } - - // In allowMulti line mode, align single line records for more readable output. - var maxLen int - flush := func(i int) { - for _, r := range rs.recs[len(ss):i] { - ss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1]) - } - maxLen = 0 - } - for i, r := range rs.recs { - if isMulti := strings.Contains(r[1], "\n"); isMulti { - flush(i) - ss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], "\n"), "\n\t")) - } else if maxLen < len(r[0]) { - maxLen = len(r[0]) - } - } - flush(len(rs.recs)) - return joinStrings(ss, true) -} - -func formatColon(padding int) string { - // Deliberately introduce instability into the debug output to - // discourage users from performing string comparisons. - // This provides us flexibility to change the output in the future. - if detrand.Bool() { - return ":" + strings.Repeat(" ", 1+padding) // use non-breaking spaces (U+00a0) - } else { - return ":" + strings.Repeat(" ", 1+padding) // use regular spaces (U+0020) - } -} - -func joinStrings(ss []string, isMulti bool) string { - if len(ss) == 0 { - return "" - } - if isMulti { - return "\n\t" + strings.Join(ss, "\n\t") + "\n" - } - return strings.Join(ss, ", ") -} diff --git a/vendor/google.golang.org/protobuf/internal/descopts/options.go b/vendor/google.golang.org/protobuf/internal/descopts/options.go deleted file mode 100644 index 024ffeb..0000000 --- a/vendor/google.golang.org/protobuf/internal/descopts/options.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package descopts contains the nil pointers to concrete descriptor options. -// -// This package exists as a form of reverse dependency injection so that certain -// packages (e.g., internal/filedesc and internal/filetype can avoid a direct -// dependency on the descriptor proto package). -package descopts - -import "google.golang.org/protobuf/reflect/protoreflect" - -// These variables are set by the init function in descriptor.pb.go via logic -// in internal/filetype. In other words, so long as the descriptor proto package -// is linked in, these variables will be populated. -// -// Each variable is populated with a nil pointer to the options struct. -var ( - File protoreflect.ProtoMessage - Enum protoreflect.ProtoMessage - EnumValue protoreflect.ProtoMessage - Message protoreflect.ProtoMessage - Field protoreflect.ProtoMessage - Oneof protoreflect.ProtoMessage - ExtensionRange protoreflect.ProtoMessage - Service protoreflect.ProtoMessage - Method protoreflect.ProtoMessage -) diff --git a/vendor/google.golang.org/protobuf/internal/detrand/rand.go b/vendor/google.golang.org/protobuf/internal/detrand/rand.go deleted file mode 100644 index 49c8676..0000000 --- a/vendor/google.golang.org/protobuf/internal/detrand/rand.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package detrand provides deterministically random functionality. -// -// The pseudo-randomness of these functions is seeded by the program binary -// itself and guarantees that the output does not change within a program, -// while ensuring that the output is unstable across different builds. -package detrand - -import ( - "encoding/binary" - "hash/fnv" - "os" -) - -// Disable disables detrand such that all functions returns the zero value. -// This function is not concurrent-safe and must be called during program init. -func Disable() { - randSeed = 0 -} - -// Bool returns a deterministically random boolean. -func Bool() bool { - return randSeed%2 == 1 -} - -// Intn returns a deterministically random integer between 0 and n-1, inclusive. -func Intn(n int) int { - if n <= 0 { - panic("must be positive") - } - return int(randSeed % uint64(n)) -} - -// randSeed is a best-effort at an approximate hash of the Go binary. -var randSeed = binaryHash() - -func binaryHash() uint64 { - // Open the Go binary. - s, err := os.Executable() - if err != nil { - return 0 - } - f, err := os.Open(s) - if err != nil { - return 0 - } - defer f.Close() - - // Hash the size and several samples of the Go binary. - const numSamples = 8 - var buf [64]byte - h := fnv.New64() - fi, err := f.Stat() - if err != nil { - return 0 - } - binary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size())) - h.Write(buf[:8]) - for i := int64(0); i < numSamples; i++ { - if _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil { - return 0 - } - h.Write(buf[:]) - } - return h.Sum64() -} diff --git a/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go b/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go deleted file mode 100644 index 14656b6..0000000 --- a/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package editiondefaults contains the binary representation of the editions -// defaults. -package editiondefaults - -import _ "embed" - -//go:embed editions_defaults.binpb -var Defaults []byte diff --git a/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb deleted file mode 100644 index ff6a38360add36f53d48bb0863b701696e0d7b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmd;*mUzal#C*w)K}(Q>QGiK;Nr72|(SYfa9TNv5m$bxlxFnMRqXeS@6Ht;7B*_4j Ve8H{+(u69m1u{(G8N0>{b^xZ!4_5#H diff --git a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go deleted file mode 100644 index 08dad76..0000000 --- a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package editionssupport defines constants for editions that are supported. -package editionssupport - -import "google.golang.org/protobuf/types/descriptorpb" - -const ( - Minimum = descriptorpb.Edition_EDITION_PROTO2 - Maximum = descriptorpb.Edition_EDITION_2023 -) diff --git a/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go b/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go deleted file mode 100644 index 328dc73..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +++ /dev/null @@ -1,213 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package defval marshals and unmarshals textual forms of default values. -// -// This package handles both the form historically used in Go struct field tags -// and also the form used by google.protobuf.FieldDescriptorProto.default_value -// since they differ in superficial ways. -package defval - -import ( - "fmt" - "math" - "strconv" - - ptext "google.golang.org/protobuf/internal/encoding/text" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// Format is the serialization format used to represent the default value. -type Format int - -const ( - _ Format = iota - - // Descriptor uses the serialization format that protoc uses with the - // google.protobuf.FieldDescriptorProto.default_value field. - Descriptor - - // GoTag uses the historical serialization format in Go struct field tags. - GoTag -) - -// Unmarshal deserializes the default string s according to the given kind k. -// When k is an enum, a list of enum value descriptors must be provided. -func Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) { - switch k { - case protoreflect.BoolKind: - if f == GoTag { - switch s { - case "1": - return protoreflect.ValueOfBool(true), nil, nil - case "0": - return protoreflect.ValueOfBool(false), nil, nil - } - } else { - switch s { - case "true": - return protoreflect.ValueOfBool(true), nil, nil - case "false": - return protoreflect.ValueOfBool(false), nil, nil - } - } - case protoreflect.EnumKind: - if f == GoTag { - // Go tags use the numeric form of the enum value. - if n, err := strconv.ParseInt(s, 10, 32); err == nil { - if ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil { - return protoreflect.ValueOfEnum(ev.Number()), ev, nil - } - } - } else { - // Descriptor default_value use the enum identifier. - ev := evs.ByName(protoreflect.Name(s)) - if ev != nil { - return protoreflect.ValueOfEnum(ev.Number()), ev, nil - } - } - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - if v, err := strconv.ParseInt(s, 10, 32); err == nil { - return protoreflect.ValueOfInt32(int32(v)), nil, nil - } - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - if v, err := strconv.ParseInt(s, 10, 64); err == nil { - return protoreflect.ValueOfInt64(int64(v)), nil, nil - } - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - if v, err := strconv.ParseUint(s, 10, 32); err == nil { - return protoreflect.ValueOfUint32(uint32(v)), nil, nil - } - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - if v, err := strconv.ParseUint(s, 10, 64); err == nil { - return protoreflect.ValueOfUint64(uint64(v)), nil, nil - } - case protoreflect.FloatKind, protoreflect.DoubleKind: - var v float64 - var err error - switch s { - case "-inf": - v = math.Inf(-1) - case "inf": - v = math.Inf(+1) - case "nan": - v = math.NaN() - default: - v, err = strconv.ParseFloat(s, 64) - } - if err == nil { - if k == protoreflect.FloatKind { - return protoreflect.ValueOfFloat32(float32(v)), nil, nil - } else { - return protoreflect.ValueOfFloat64(float64(v)), nil, nil - } - } - case protoreflect.StringKind: - // String values are already unescaped and can be used as is. - return protoreflect.ValueOfString(s), nil, nil - case protoreflect.BytesKind: - if b, ok := unmarshalBytes(s); ok { - return protoreflect.ValueOfBytes(b), nil, nil - } - } - return protoreflect.Value{}, nil, errors.New("could not parse value for %v: %q", k, s) -} - -// Marshal serializes v as the default string according to the given kind k. -// When specifying the Descriptor format for an enum kind, the associated -// enum value descriptor must be provided. -func Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) { - switch k { - case protoreflect.BoolKind: - if f == GoTag { - if v.Bool() { - return "1", nil - } else { - return "0", nil - } - } else { - if v.Bool() { - return "true", nil - } else { - return "false", nil - } - } - case protoreflect.EnumKind: - if f == GoTag { - return strconv.FormatInt(int64(v.Enum()), 10), nil - } else { - return string(ev.Name()), nil - } - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - return strconv.FormatInt(v.Int(), 10), nil - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - return strconv.FormatUint(v.Uint(), 10), nil - case protoreflect.FloatKind, protoreflect.DoubleKind: - f := v.Float() - switch { - case math.IsInf(f, -1): - return "-inf", nil - case math.IsInf(f, +1): - return "inf", nil - case math.IsNaN(f): - return "nan", nil - default: - if k == protoreflect.FloatKind { - return strconv.FormatFloat(f, 'g', -1, 32), nil - } else { - return strconv.FormatFloat(f, 'g', -1, 64), nil - } - } - case protoreflect.StringKind: - // String values are serialized as is without any escaping. - return v.String(), nil - case protoreflect.BytesKind: - if s, ok := marshalBytes(v.Bytes()); ok { - return s, nil - } - } - return "", errors.New("could not format value for %v: %v", k, v) -} - -// unmarshalBytes deserializes bytes by applying C unescaping. -func unmarshalBytes(s string) ([]byte, bool) { - // Bytes values use the same escaping as the text format, - // however they lack the surrounding double quotes. - v, err := ptext.UnmarshalString(`"` + s + `"`) - if err != nil { - return nil, false - } - return []byte(v), true -} - -// marshalBytes serializes bytes by using C escaping. -// To match the exact output of protoc, this is identical to the -// CEscape function in strutil.cc of the protoc source code. -func marshalBytes(b []byte) (string, bool) { - var s []byte - for _, c := range b { - switch c { - case '\n': - s = append(s, `\n`...) - case '\r': - s = append(s, `\r`...) - case '\t': - s = append(s, `\t`...) - case '"': - s = append(s, `\"`...) - case '\'': - s = append(s, `\'`...) - case '\\': - s = append(s, `\\`...) - default: - if printableASCII := c >= 0x20 && c <= 0x7e; printableASCII { - s = append(s, c) - } else { - s = append(s, fmt.Sprintf(`\%03o`, c)...) - } - } - } - return string(s), true -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go b/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go deleted file mode 100644 index a6693f0..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package messageset encodes and decodes the obsolete MessageSet wire format. -package messageset - -import ( - "math" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// The MessageSet wire format is equivalent to a message defined as follows, -// where each Item defines an extension field with a field number of 'type_id' -// and content of 'message'. MessageSet extensions must be non-repeated message -// fields. -// -// message MessageSet { -// repeated group Item = 1 { -// required int32 type_id = 2; -// required string message = 3; -// } -// } -const ( - FieldItem = protowire.Number(1) - FieldTypeID = protowire.Number(2) - FieldMessage = protowire.Number(3) -) - -// ExtensionName is the field name for extensions of MessageSet. -// -// A valid MessageSet extension must be of the form: -// -// message MyMessage { -// extend proto2.bridge.MessageSet { -// optional MyMessage message_set_extension = 1234; -// } -// ... -// } -const ExtensionName = "message_set_extension" - -// IsMessageSet returns whether the message uses the MessageSet wire format. -func IsMessageSet(md protoreflect.MessageDescriptor) bool { - xmd, ok := md.(interface{ IsMessageSet() bool }) - return ok && xmd.IsMessageSet() -} - -// IsMessageSetExtension reports this field properly extends a MessageSet. -func IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool { - switch { - case fd.Name() != ExtensionName: - return false - case !IsMessageSet(fd.ContainingMessage()): - return false - case fd.FullName().Parent() != fd.Message().FullName(): - return false - } - return true -} - -// SizeField returns the size of a MessageSet item field containing an extension -// with the given field number, not counting the contents of the message subfield. -func SizeField(num protowire.Number) int { - return 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num)) -} - -// Unmarshal parses a MessageSet. -// -// It calls fn with the type ID and value of each item in the MessageSet. -// Unknown fields are discarded. -// -// If wantLen is true, the item values include the varint length prefix. -// This is ugly, but simplifies the fast-path decoder in internal/impl. -func Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error { - for len(b) > 0 { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return protowire.ParseError(n) - } - b = b[n:] - if num != FieldItem || wtyp != protowire.StartGroupType { - n := protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return protowire.ParseError(n) - } - b = b[n:] - continue - } - typeID, value, n, err := ConsumeFieldValue(b, wantLen) - if err != nil { - return err - } - b = b[n:] - if typeID == 0 { - continue - } - if err := fn(typeID, value); err != nil { - return err - } - } - return nil -} - -// ConsumeFieldValue parses b as a MessageSet item field value until and including -// the trailing end group marker. It assumes the start group tag has already been parsed. -// It returns the contents of the type_id and message subfields and the total -// item length. -// -// If wantLen is true, the returned message value includes the length prefix. -func ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) { - ilen := len(b) - for { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return 0, nil, 0, protowire.ParseError(n) - } - b = b[n:] - switch { - case num == FieldItem && wtyp == protowire.EndGroupType: - if wantLen && len(message) == 0 { - // The message field was missing, which should never happen. - // Be prepared for this case anyway. - message = protowire.AppendVarint(message, 0) - } - return typeid, message, ilen - len(b), nil - case num == FieldTypeID && wtyp == protowire.VarintType: - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, nil, 0, protowire.ParseError(n) - } - b = b[n:] - if v < 1 || v > math.MaxInt32 { - return 0, nil, 0, errors.New("invalid type_id in message set") - } - typeid = protowire.Number(v) - case num == FieldMessage && wtyp == protowire.BytesType: - m, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, nil, 0, protowire.ParseError(n) - } - if message == nil { - if wantLen { - message = b[:n:n] - } else { - message = m[:len(m):len(m)] - } - } else { - // This case should never happen in practice, but handle it for - // correctness: The MessageSet item contains multiple message - // fields, which need to be merged. - // - // In the case where we're returning the length, this becomes - // quite inefficient since we need to strip the length off - // the existing data and reconstruct it with the combined length. - if wantLen { - _, nn := protowire.ConsumeVarint(message) - m0 := message[nn:] - message = nil - message = protowire.AppendVarint(message, uint64(len(m0)+len(m))) - message = append(message, m0...) - message = append(message, m...) - } else { - message = append(message, m...) - } - } - b = b[n:] - default: - // We have no place to put it, so we just ignore unknown fields. - n := protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return 0, nil, 0, protowire.ParseError(n) - } - b = b[n:] - } - } -} - -// AppendFieldStart appends the start of a MessageSet item field containing -// an extension with the given number. The caller must add the message -// subfield (including the tag). -func AppendFieldStart(b []byte, num protowire.Number) []byte { - b = protowire.AppendTag(b, FieldItem, protowire.StartGroupType) - b = protowire.AppendTag(b, FieldTypeID, protowire.VarintType) - b = protowire.AppendVarint(b, uint64(num)) - return b -} - -// AppendFieldEnd appends the trailing end group marker for a MessageSet item field. -func AppendFieldEnd(b []byte) []byte { - return protowire.AppendTag(b, FieldItem, protowire.EndGroupType) -} - -// SizeUnknown returns the size of an unknown fields section in MessageSet format. -// -// See AppendUnknown. -func SizeUnknown(unknown []byte) (size int) { - for len(unknown) > 0 { - num, typ, n := protowire.ConsumeTag(unknown) - if n < 0 || typ != protowire.BytesType { - return 0 - } - unknown = unknown[n:] - _, n = protowire.ConsumeBytes(unknown) - if n < 0 { - return 0 - } - unknown = unknown[n:] - size += SizeField(num) + protowire.SizeTag(FieldMessage) + n - } - return size -} - -// AppendUnknown appends unknown fields to b in MessageSet format. -// -// For historic reasons, unresolved items in a MessageSet are stored in a -// message's unknown fields section in non-MessageSet format. That is, an -// unknown item with typeID T and value V appears in the unknown fields as -// a field with number T and value V. -// -// This function converts the unknown fields back into MessageSet form. -func AppendUnknown(b, unknown []byte) ([]byte, error) { - for len(unknown) > 0 { - num, typ, n := protowire.ConsumeTag(unknown) - if n < 0 || typ != protowire.BytesType { - return nil, errors.New("invalid data in message set unknown fields") - } - unknown = unknown[n:] - _, n = protowire.ConsumeBytes(unknown) - if n < 0 { - return nil, errors.New("invalid data in message set unknown fields") - } - b = AppendFieldStart(b, num) - b = protowire.AppendTag(b, FieldMessage, protowire.BytesType) - b = append(b, unknown[:n]...) - b = AppendFieldEnd(b) - unknown = unknown[n:] - } - return b, nil -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go deleted file mode 100644 index 7e87c76..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package tag marshals and unmarshals the legacy struct tags as generated -// by historical versions of protoc-gen-go. -package tag - -import ( - "reflect" - "strconv" - "strings" - - "google.golang.org/protobuf/internal/encoding/defval" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -var byteType = reflect.TypeOf(byte(0)) - -// Unmarshal decodes the tag into a prototype.Field. -// -// The goType is needed to determine the original protoreflect.Kind since the -// tag does not record sufficient information to determine that. -// The type is the underlying field type (e.g., a repeated field may be -// represented by []T, but the Go type passed in is just T). -// A list of enum value descriptors must be provided for enum fields. -// This does not populate the Enum or Message (except for weak message). -// -// This function is a best effort attempt; parsing errors are ignored. -func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor { - f := new(filedesc.Field) - f.L0.ParentFile = filedesc.SurrogateProto2 - f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures - for len(tag) > 0 { - i := strings.IndexByte(tag, ',') - if i < 0 { - i = len(tag) - } - switch s := tag[:i]; { - case strings.HasPrefix(s, "name="): - f.L0.FullName = protoreflect.FullName(s[len("name="):]) - case strings.Trim(s, "0123456789") == "": - n, _ := strconv.ParseUint(s, 10, 32) - f.L1.Number = protoreflect.FieldNumber(n) - case s == "opt": - f.L1.Cardinality = protoreflect.Optional - case s == "req": - f.L1.Cardinality = protoreflect.Required - case s == "rep": - f.L1.Cardinality = protoreflect.Repeated - case s == "varint": - switch goType.Kind() { - case reflect.Bool: - f.L1.Kind = protoreflect.BoolKind - case reflect.Int32: - f.L1.Kind = protoreflect.Int32Kind - case reflect.Int64: - f.L1.Kind = protoreflect.Int64Kind - case reflect.Uint32: - f.L1.Kind = protoreflect.Uint32Kind - case reflect.Uint64: - f.L1.Kind = protoreflect.Uint64Kind - } - case s == "zigzag32": - if goType.Kind() == reflect.Int32 { - f.L1.Kind = protoreflect.Sint32Kind - } - case s == "zigzag64": - if goType.Kind() == reflect.Int64 { - f.L1.Kind = protoreflect.Sint64Kind - } - case s == "fixed32": - switch goType.Kind() { - case reflect.Int32: - f.L1.Kind = protoreflect.Sfixed32Kind - case reflect.Uint32: - f.L1.Kind = protoreflect.Fixed32Kind - case reflect.Float32: - f.L1.Kind = protoreflect.FloatKind - } - case s == "fixed64": - switch goType.Kind() { - case reflect.Int64: - f.L1.Kind = protoreflect.Sfixed64Kind - case reflect.Uint64: - f.L1.Kind = protoreflect.Fixed64Kind - case reflect.Float64: - f.L1.Kind = protoreflect.DoubleKind - } - case s == "bytes": - switch { - case goType.Kind() == reflect.String: - f.L1.Kind = protoreflect.StringKind - case goType.Kind() == reflect.Slice && goType.Elem() == byteType: - f.L1.Kind = protoreflect.BytesKind - default: - f.L1.Kind = protoreflect.MessageKind - } - case s == "group": - f.L1.Kind = protoreflect.GroupKind - case strings.HasPrefix(s, "enum="): - f.L1.Kind = protoreflect.EnumKind - case strings.HasPrefix(s, "json="): - jsonName := s[len("json="):] - if jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) { - f.L1.StringName.InitJSON(jsonName) - } - case s == "packed": - f.L1.EditionFeatures.IsPacked = true - case strings.HasPrefix(s, "weak="): - f.L1.IsWeak = true - f.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len("weak="):])) - case strings.HasPrefix(s, "def="): - // The default tag is special in that everything afterwards is the - // default regardless of the presence of commas. - s, i = tag[len("def="):], len(tag) - v, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag) - f.L1.Default = filedesc.DefaultValue(v, ev) - case s == "proto3": - f.L0.ParentFile = filedesc.SurrogateProto3 - } - tag = strings.TrimPrefix(tag[i:], ",") - } - - // The generator uses the group message name instead of the field name. - // We obtain the real field name by lowercasing the group name. - if f.L1.Kind == protoreflect.GroupKind { - f.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName))) - } - return f -} - -// Marshal encodes the protoreflect.FieldDescriptor as a tag. -// -// The enumName must be provided if the kind is an enum. -// Historically, the formulation of the enum "name" was the proto package -// dot-concatenated with the generated Go identifier for the enum type. -// Depending on the context on how Marshal is called, there are different ways -// through which that information is determined. As such it is the caller's -// responsibility to provide a function to obtain that information. -func Marshal(fd protoreflect.FieldDescriptor, enumName string) string { - var tag []string - switch fd.Kind() { - case protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind: - tag = append(tag, "varint") - case protoreflect.Sint32Kind: - tag = append(tag, "zigzag32") - case protoreflect.Sint64Kind: - tag = append(tag, "zigzag64") - case protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind: - tag = append(tag, "fixed32") - case protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind: - tag = append(tag, "fixed64") - case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind: - tag = append(tag, "bytes") - case protoreflect.GroupKind: - tag = append(tag, "group") - } - tag = append(tag, strconv.Itoa(int(fd.Number()))) - switch fd.Cardinality() { - case protoreflect.Optional: - tag = append(tag, "opt") - case protoreflect.Required: - tag = append(tag, "req") - case protoreflect.Repeated: - tag = append(tag, "rep") - } - if fd.IsPacked() { - tag = append(tag, "packed") - } - name := string(fd.Name()) - if fd.Kind() == protoreflect.GroupKind { - // The name of the FieldDescriptor for a group field is - // lowercased. To find the original capitalization, we - // look in the field's MessageType. - name = string(fd.Message().Name()) - } - tag = append(tag, "name="+name) - if jsonName := fd.JSONName(); jsonName != "" && jsonName != name && !fd.IsExtension() { - // NOTE: The jsonName != name condition is suspect, but it preserve - // the exact same semantics from the previous generator. - tag = append(tag, "json="+jsonName) - } - if fd.IsWeak() { - tag = append(tag, "weak="+string(fd.Message().FullName())) - } - // The previous implementation does not tag extension fields as proto3, - // even when the field is defined in a proto3 file. Match that behavior - // for consistency. - if fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() { - tag = append(tag, "proto3") - } - if fd.Kind() == protoreflect.EnumKind && enumName != "" { - tag = append(tag, "enum="+enumName) - } - if fd.ContainingOneof() != nil { - tag = append(tag, "oneof") - } - // This must appear last in the tag, since commas in strings aren't escaped. - if fd.HasDefault() { - def, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag) - tag = append(tag, "def="+def) - } - return strings.Join(tag, ",") -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go deleted file mode 100644 index 099b2bf..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +++ /dev/null @@ -1,686 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package text - -import ( - "bytes" - "fmt" - "io" - "strconv" - "unicode/utf8" - - "google.golang.org/protobuf/internal/errors" -) - -// Decoder is a token-based textproto decoder. -type Decoder struct { - // lastCall is last method called, either readCall or peekCall. - // Initial value is readCall. - lastCall call - - // lastToken contains the last read token. - lastToken Token - - // lastErr contains the last read error. - lastErr error - - // openStack is a stack containing the byte characters for MessageOpen and - // ListOpen kinds. The top of stack represents the message or the list that - // the current token is nested in. An empty stack means the current token is - // at the top level message. The characters '{' and '<' both represent the - // MessageOpen kind. - openStack []byte - - // orig is used in reporting line and column. - orig []byte - // in contains the unconsumed input. - in []byte -} - -// NewDecoder returns a Decoder to read the given []byte. -func NewDecoder(b []byte) *Decoder { - return &Decoder{orig: b, in: b} -} - -// ErrUnexpectedEOF means that EOF was encountered in the middle of the input. -var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF) - -// call specifies which Decoder method was invoked. -type call uint8 - -const ( - readCall call = iota - peekCall -) - -// Peek looks ahead and returns the next token and error without advancing a read. -func (d *Decoder) Peek() (Token, error) { - defer func() { d.lastCall = peekCall }() - if d.lastCall == readCall { - d.lastToken, d.lastErr = d.Read() - } - return d.lastToken, d.lastErr -} - -// Read returns the next token. -// It will return an error if there is no valid token. -func (d *Decoder) Read() (Token, error) { - defer func() { d.lastCall = readCall }() - if d.lastCall == peekCall { - return d.lastToken, d.lastErr - } - - tok, err := d.parseNext(d.lastToken.kind) - if err != nil { - return Token{}, err - } - - switch tok.kind { - case comma, semicolon: - tok, err = d.parseNext(tok.kind) - if err != nil { - return Token{}, err - } - } - d.lastToken = tok - return tok, nil -} - -const ( - mismatchedFmt = "mismatched close character %q" - unexpectedFmt = "unexpected character %q" -) - -// parseNext parses the next Token based on given last kind. -func (d *Decoder) parseNext(lastKind Kind) (Token, error) { - // Trim leading spaces. - d.consume(0) - isEOF := false - if len(d.in) == 0 { - isEOF = true - } - - switch lastKind { - case EOF: - return d.consumeToken(EOF, 0, 0), nil - - case bof: - // Start of top level message. Next token can be EOF or Name. - if isEOF { - return d.consumeToken(EOF, 0, 0), nil - } - return d.parseFieldName() - - case Name: - // Next token can be MessageOpen, ListOpen or Scalar. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case '{', '<': - d.pushOpenStack(ch) - return d.consumeToken(MessageOpen, 1, 0), nil - case '[': - d.pushOpenStack(ch) - return d.consumeToken(ListOpen, 1, 0), nil - default: - return d.parseScalar() - } - - case Scalar: - openKind, closeCh := d.currentOpenKind() - switch openKind { - case bof: - // Top level message. - // Next token can be EOF, comma, semicolon or Name. - if isEOF { - return d.consumeToken(EOF, 0, 0), nil - } - switch d.in[0] { - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - case MessageOpen: - // Next token can be MessageClose, comma, semicolon or Name. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(MessageClose, 1, 0), nil - case otherCloseChar[closeCh]: - return Token{}, d.newSyntaxError(mismatchedFmt, ch) - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - case ListOpen: - // Next token can be ListClose or comma. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case ']': - d.popOpenStack() - return d.consumeToken(ListClose, 1, 0), nil - case ',': - return d.consumeToken(comma, 1, 0), nil - default: - return Token{}, d.newSyntaxError(unexpectedFmt, ch) - } - } - - case MessageOpen: - // Next token can be MessageClose or Name. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - _, closeCh := d.currentOpenKind() - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(MessageClose, 1, 0), nil - case otherCloseChar[closeCh]: - return Token{}, d.newSyntaxError(mismatchedFmt, ch) - default: - return d.parseFieldName() - } - - case MessageClose: - openKind, closeCh := d.currentOpenKind() - switch openKind { - case bof: - // Top level message. - // Next token can be EOF, comma, semicolon or Name. - if isEOF { - return d.consumeToken(EOF, 0, 0), nil - } - switch ch := d.in[0]; ch { - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - case MessageOpen: - // Next token can be MessageClose, comma, semicolon or Name. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(MessageClose, 1, 0), nil - case otherCloseChar[closeCh]: - return Token{}, d.newSyntaxError(mismatchedFmt, ch) - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - case ListOpen: - // Next token can be ListClose or comma - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(ListClose, 1, 0), nil - case ',': - return d.consumeToken(comma, 1, 0), nil - default: - return Token{}, d.newSyntaxError(unexpectedFmt, ch) - } - } - - case ListOpen: - // Next token can be ListClose, MessageStart or Scalar. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case ']': - d.popOpenStack() - return d.consumeToken(ListClose, 1, 0), nil - case '{', '<': - d.pushOpenStack(ch) - return d.consumeToken(MessageOpen, 1, 0), nil - default: - return d.parseScalar() - } - - case ListClose: - openKind, closeCh := d.currentOpenKind() - switch openKind { - case bof: - // Top level message. - // Next token can be EOF, comma, semicolon or Name. - if isEOF { - return d.consumeToken(EOF, 0, 0), nil - } - switch ch := d.in[0]; ch { - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - case MessageOpen: - // Next token can be MessageClose, comma, semicolon or Name. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(MessageClose, 1, 0), nil - case otherCloseChar[closeCh]: - return Token{}, d.newSyntaxError(mismatchedFmt, ch) - case ',': - return d.consumeToken(comma, 1, 0), nil - case ';': - return d.consumeToken(semicolon, 1, 0), nil - default: - return d.parseFieldName() - } - - default: - // It is not possible to have this case. Let it panic below. - } - - case comma, semicolon: - openKind, closeCh := d.currentOpenKind() - switch openKind { - case bof: - // Top level message. Next token can be EOF or Name. - if isEOF { - return d.consumeToken(EOF, 0, 0), nil - } - return d.parseFieldName() - - case MessageOpen: - // Next token can be MessageClose or Name. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case closeCh: - d.popOpenStack() - return d.consumeToken(MessageClose, 1, 0), nil - case otherCloseChar[closeCh]: - return Token{}, d.newSyntaxError(mismatchedFmt, ch) - default: - return d.parseFieldName() - } - - case ListOpen: - if lastKind == semicolon { - // It is not be possible to have this case as logic here - // should not have produced a semicolon Token when inside a - // list. Let it panic below. - break - } - // Next token can be MessageOpen or Scalar. - if isEOF { - return Token{}, ErrUnexpectedEOF - } - switch ch := d.in[0]; ch { - case '{', '<': - d.pushOpenStack(ch) - return d.consumeToken(MessageOpen, 1, 0), nil - default: - return d.parseScalar() - } - } - } - - line, column := d.Position(len(d.orig) - len(d.in)) - panic(fmt.Sprintf("Decoder.parseNext: bug at handling line %d:%d with lastKind=%v", line, column, lastKind)) -} - -var otherCloseChar = map[byte]byte{ - '}': '>', - '>': '}', -} - -// currentOpenKind indicates whether current position is inside a message, list -// or top-level message by returning MessageOpen, ListOpen or bof respectively. -// If the returned kind is either a MessageOpen or ListOpen, it also returns the -// corresponding closing character. -func (d *Decoder) currentOpenKind() (Kind, byte) { - if len(d.openStack) == 0 { - return bof, 0 - } - openCh := d.openStack[len(d.openStack)-1] - switch openCh { - case '{': - return MessageOpen, '}' - case '<': - return MessageOpen, '>' - case '[': - return ListOpen, ']' - } - panic(fmt.Sprintf("Decoder: openStack contains invalid byte %c", openCh)) -} - -func (d *Decoder) pushOpenStack(ch byte) { - d.openStack = append(d.openStack, ch) -} - -func (d *Decoder) popOpenStack() { - d.openStack = d.openStack[:len(d.openStack)-1] -} - -// parseFieldName parses field name and separator. -func (d *Decoder) parseFieldName() (tok Token, err error) { - defer func() { - if err == nil && d.tryConsumeChar(':') { - tok.attrs |= hasSeparator - } - }() - - // Extension or Any type URL. - if d.in[0] == '[' { - return d.parseTypeName() - } - - // Identifier. - if size := parseIdent(d.in, false); size > 0 { - return d.consumeToken(Name, size, uint8(IdentName)), nil - } - - // Field number. Identify if input is a valid number that is not negative - // and is decimal integer within 32-bit range. - if num := parseNumber(d.in); num.size > 0 { - str := num.string(d.in) - if !num.neg && num.kind == numDec { - if _, err := strconv.ParseInt(str, 10, 32); err == nil { - return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil - } - } - return Token{}, d.newSyntaxError("invalid field number: %s", str) - } - - return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in)) -} - -// parseTypeName parses Any type URL or extension field name. The name is -// enclosed in [ and ] characters. The C++ parser does not handle many legal URL -// strings. This implementation is more liberal and allows for the pattern -// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed -// in between [ ], '.', '/' and the sub names. -func (d *Decoder) parseTypeName() (Token, error) { - startPos := len(d.orig) - len(d.in) - // Use alias s to advance first in order to use d.in for error handling. - // Caller already checks for [ as first character. - s := consume(d.in[1:], 0) - if len(s) == 0 { - return Token{}, ErrUnexpectedEOF - } - - var name []byte - for len(s) > 0 && isTypeNameChar(s[0]) { - name = append(name, s[0]) - s = s[1:] - } - s = consume(s, 0) - - var closed bool - for len(s) > 0 && !closed { - switch { - case s[0] == ']': - s = s[1:] - closed = true - - case s[0] == '/', s[0] == '.': - if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') { - return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", - d.orig[startPos:len(d.orig)-len(s)+1]) - } - name = append(name, s[0]) - s = s[1:] - s = consume(s, 0) - for len(s) > 0 && isTypeNameChar(s[0]) { - name = append(name, s[0]) - s = s[1:] - } - s = consume(s, 0) - - default: - return Token{}, d.newSyntaxError( - "invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1]) - } - } - - if !closed { - return Token{}, ErrUnexpectedEOF - } - - // First character cannot be '.'. Last character cannot be '.' or '/'. - size := len(name) - if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' { - return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s", - d.orig[startPos:len(d.orig)-len(s)]) - } - - d.in = s - endPos := len(d.orig) - len(d.in) - d.consume(0) - - return Token{ - kind: Name, - attrs: uint8(TypeName), - pos: startPos, - raw: d.orig[startPos:endPos], - str: string(name), - }, nil -} - -func isTypeNameChar(b byte) bool { - return (b == '-' || b == '_' || - ('0' <= b && b <= '9') || - ('a' <= b && b <= 'z') || - ('A' <= b && b <= 'Z')) -} - -func isWhiteSpace(b byte) bool { - switch b { - case ' ', '\n', '\r', '\t': - return true - default: - return false - } -} - -// parseIdent parses an unquoted proto identifier and returns size. -// If allowNeg is true, it allows '-' to be the first character in the -// identifier. This is used when parsing literal values like -infinity, etc. -// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*` -func parseIdent(input []byte, allowNeg bool) int { - var size int - - s := input - if len(s) == 0 { - return 0 - } - - if allowNeg && s[0] == '-' { - s = s[1:] - size++ - if len(s) == 0 { - return 0 - } - } - - switch { - case s[0] == '_', - 'a' <= s[0] && s[0] <= 'z', - 'A' <= s[0] && s[0] <= 'Z': - s = s[1:] - size++ - default: - return 0 - } - - for len(s) > 0 && (s[0] == '_' || - 'a' <= s[0] && s[0] <= 'z' || - 'A' <= s[0] && s[0] <= 'Z' || - '0' <= s[0] && s[0] <= '9') { - s = s[1:] - size++ - } - - if len(s) > 0 && !isDelim(s[0]) { - return 0 - } - - return size -} - -// parseScalar parses for a string, literal or number value. -func (d *Decoder) parseScalar() (Token, error) { - if d.in[0] == '"' || d.in[0] == '\'' { - return d.parseStringValue() - } - - if tok, ok := d.parseLiteralValue(); ok { - return tok, nil - } - - if tok, ok := d.parseNumberValue(); ok { - return tok, nil - } - - return Token{}, d.newSyntaxError("invalid scalar value: %s", errId(d.in)) -} - -// parseLiteralValue parses a literal value. A literal value is used for -// bools, special floats and enums. This function simply identifies that the -// field value is a literal. -func (d *Decoder) parseLiteralValue() (Token, bool) { - size := parseIdent(d.in, true) - if size == 0 { - return Token{}, false - } - return d.consumeToken(Scalar, size, literalValue), true -} - -// consumeToken constructs a Token for given Kind from d.in and consumes given -// size-length from it. -func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token { - // Important to compute raw and pos before consuming. - tok := Token{ - kind: kind, - attrs: attrs, - pos: len(d.orig) - len(d.in), - raw: d.in[:size], - } - d.consume(size) - return tok -} - -// newSyntaxError returns a syntax error with line and column information for -// current position. -func (d *Decoder) newSyntaxError(f string, x ...any) error { - e := errors.New(f, x...) - line, column := d.Position(len(d.orig) - len(d.in)) - return errors.New("syntax error (line %d:%d): %v", line, column, e) -} - -// Position returns line and column number of given index of the original input. -// It will panic if index is out of range. -func (d *Decoder) Position(idx int) (line int, column int) { - b := d.orig[:idx] - line = bytes.Count(b, []byte("\n")) + 1 - if i := bytes.LastIndexByte(b, '\n'); i >= 0 { - b = b[i+1:] - } - column = utf8.RuneCount(b) + 1 // ignore multi-rune characters - return line, column -} - -func (d *Decoder) tryConsumeChar(c byte) bool { - if len(d.in) > 0 && d.in[0] == c { - d.consume(1) - return true - } - return false -} - -// consume consumes n bytes of input and any subsequent whitespace or comments. -func (d *Decoder) consume(n int) { - d.in = consume(d.in, n) - return -} - -// consume consumes n bytes of input and any subsequent whitespace or comments. -func consume(b []byte, n int) []byte { - b = b[n:] - for len(b) > 0 { - switch b[0] { - case ' ', '\n', '\r', '\t': - b = b[1:] - case '#': - if i := bytes.IndexByte(b, '\n'); i >= 0 { - b = b[i+len("\n"):] - } else { - b = nil - } - default: - return b - } - } - return b -} - -// errId extracts a byte sequence that looks like an invalid ID -// (for the purposes of error reporting). -func errId(seq []byte) []byte { - const maxLen = 32 - for i := 0; i < len(seq); { - if i > maxLen { - return append(seq[:i:i], "…"...) - } - r, size := utf8.DecodeRune(seq[i:]) - if r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) { - if i == 0 { - // Either the first byte is invalid UTF-8 or a - // delimiter, or the first rune is non-ASCII. - // Return it as-is. - i = size - } - return seq[:i:i] - } - i += size - } - // No delimiter found. - return seq -} - -// isDelim returns true if given byte is a delimiter character. -func isDelim(c byte) bool { - return !(c == '-' || c == '+' || c == '.' || c == '_' || - ('a' <= c && c <= 'z') || - ('A' <= c && c <= 'Z') || - ('0' <= c && c <= '9')) -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go deleted file mode 100644 index 45c81f0..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package text - -// parseNumberValue parses a number from the input and returns a Token object. -func (d *Decoder) parseNumberValue() (Token, bool) { - in := d.in - num := parseNumber(in) - if num.size == 0 { - return Token{}, false - } - numAttrs := num.kind - if num.neg { - numAttrs |= isNegative - } - tok := Token{ - kind: Scalar, - attrs: numberValue, - pos: len(d.orig) - len(d.in), - raw: d.in[:num.size], - str: num.string(d.in), - numAttrs: numAttrs, - } - d.consume(num.size) - return tok, true -} - -const ( - numDec uint8 = (1 << iota) / 2 - numHex - numOct - numFloat -) - -// number is the result of parsing out a valid number from parseNumber. It -// contains data for doing float or integer conversion via the strconv package -// in conjunction with the input bytes. -type number struct { - kind uint8 - neg bool - size int - // if neg, this is the length of whitespace and comments between - // the minus sign and the rest fo the number literal - sep int -} - -func (num number) string(data []byte) string { - strSize := num.size - last := num.size - 1 - if num.kind == numFloat && (data[last] == 'f' || data[last] == 'F') { - strSize = last - } - if num.neg && num.sep > 0 { - // strip whitespace/comments between negative sign and the rest - strLen := strSize - num.sep - str := make([]byte, strLen) - str[0] = data[0] - copy(str[1:], data[num.sep+1:strSize]) - return string(str) - } - return string(data[:strSize]) - -} - -// parseNumber constructs a number object from given input. It allows for the -// following patterns: -// -// integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*) -// float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?) -// -// It also returns the number of parsed bytes for the given number, 0 if it is -// not a number. -func parseNumber(input []byte) number { - kind := numDec - var size int - var neg bool - - s := input - if len(s) == 0 { - return number{} - } - - // Optional - - var sep int - if s[0] == '-' { - neg = true - s = s[1:] - size++ - // Consume any whitespace or comments between the - // negative sign and the rest of the number - lenBefore := len(s) - s = consume(s, 0) - sep = lenBefore - len(s) - size += sep - if len(s) == 0 { - return number{} - } - } - - switch { - case s[0] == '0': - if len(s) > 1 { - switch { - case s[1] == 'x' || s[1] == 'X': - // Parse as hex number. - kind = numHex - n := 2 - s = s[2:] - for len(s) > 0 && (('0' <= s[0] && s[0] <= '9') || - ('a' <= s[0] && s[0] <= 'f') || - ('A' <= s[0] && s[0] <= 'F')) { - s = s[1:] - n++ - } - if n == 2 { - return number{} - } - size += n - - case '0' <= s[1] && s[1] <= '7': - // Parse as octal number. - kind = numOct - n := 2 - s = s[2:] - for len(s) > 0 && '0' <= s[0] && s[0] <= '7' { - s = s[1:] - n++ - } - size += n - } - - if kind&(numHex|numOct) > 0 { - if len(s) > 0 && !isDelim(s[0]) { - return number{} - } - return number{kind: kind, neg: neg, size: size, sep: sep} - } - } - s = s[1:] - size++ - - case '1' <= s[0] && s[0] <= '9': - n := 1 - s = s[1:] - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - n++ - } - size += n - - case s[0] == '.': - // Set kind to numFloat to signify the intent to parse as float. And - // that it needs to have other digits after '.'. - kind = numFloat - - default: - return number{} - } - - // . followed by 0 or more digits. - if len(s) > 0 && s[0] == '.' { - n := 1 - s = s[1:] - // If decimal point was before any digits, it should be followed by - // other digits. - if len(s) == 0 && kind == numFloat { - return number{} - } - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - n++ - } - size += n - kind = numFloat - } - - // e or E followed by an optional - or + and 1 or more digits. - if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { - kind = numFloat - s = s[1:] - n := 1 - if s[0] == '+' || s[0] == '-' { - s = s[1:] - n++ - if len(s) == 0 { - return number{} - } - } - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - n++ - } - size += n - } - - // Optional suffix f or F for floats. - if len(s) > 0 && (s[0] == 'f' || s[0] == 'F') { - kind = numFloat - s = s[1:] - size++ - } - - // Check that next byte is a delimiter or it is at the end. - if len(s) > 0 && !isDelim(s[0]) { - return number{} - } - - return number{kind: kind, neg: neg, size: size, sep: sep} -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go deleted file mode 100644 index d4d3490..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package text - -import ( - "bytes" - "strconv" - "strings" - "unicode" - "unicode/utf16" - "unicode/utf8" - - "google.golang.org/protobuf/internal/strs" -) - -// parseStringValue parses string field token. -// This differs from parseString since the text format allows -// multiple back-to-back string literals where they are semantically treated -// as a single large string with all values concatenated. -// -// E.g., `"foo" "bar" "baz"` => "foobarbaz" -func (d *Decoder) parseStringValue() (Token, error) { - // Note that the ending quote is sufficient to unambiguously mark the end - // of a string. Thus, the text grammar does not require intervening - // whitespace or control characters in-between strings. - // Thus, the following is valid: - // `"foo"'bar'"baz"` => "foobarbaz" - in0 := d.in - var ss []string - for len(d.in) > 0 && (d.in[0] == '"' || d.in[0] == '\'') { - s, err := d.parseString() - if err != nil { - return Token{}, err - } - ss = append(ss, s) - } - // d.in already points to the end of the value at this point. - return Token{ - kind: Scalar, - attrs: stringValue, - pos: len(d.orig) - len(in0), - raw: in0[:len(in0)-len(d.in)], - str: strings.Join(ss, ""), - }, nil -} - -// parseString parses a string value enclosed in " or '. -func (d *Decoder) parseString() (string, error) { - in := d.in - if len(in) == 0 { - return "", ErrUnexpectedEOF - } - quote := in[0] - in = in[1:] - i := indexNeedEscapeInBytes(in) - in, out := in[i:], in[:i:i] // set cap to prevent mutations - for len(in) > 0 { - switch r, n := utf8.DecodeRune(in); { - case r == utf8.RuneError && n == 1: - return "", d.newSyntaxError("invalid UTF-8 detected") - case r == 0 || r == '\n': - return "", d.newSyntaxError("invalid character %q in string", r) - case r == rune(quote): - in = in[1:] - d.consume(len(d.in) - len(in)) - return string(out), nil - case r == '\\': - if len(in) < 2 { - return "", ErrUnexpectedEOF - } - switch r := in[1]; r { - case '"', '\'', '\\', '?': - in, out = in[2:], append(out, r) - case 'a': - in, out = in[2:], append(out, '\a') - case 'b': - in, out = in[2:], append(out, '\b') - case 'n': - in, out = in[2:], append(out, '\n') - case 'r': - in, out = in[2:], append(out, '\r') - case 't': - in, out = in[2:], append(out, '\t') - case 'v': - in, out = in[2:], append(out, '\v') - case 'f': - in, out = in[2:], append(out, '\f') - case '0', '1', '2', '3', '4', '5', '6', '7': - // One, two, or three octal characters. - n := len(in[1:]) - len(bytes.TrimLeft(in[1:], "01234567")) - if n > 3 { - n = 3 - } - v, err := strconv.ParseUint(string(in[1:1+n]), 8, 8) - if err != nil { - return "", d.newSyntaxError("invalid octal escape code %q in string", in[:1+n]) - } - in, out = in[1+n:], append(out, byte(v)) - case 'x': - // One or two hexadecimal characters. - n := len(in[2:]) - len(bytes.TrimLeft(in[2:], "0123456789abcdefABCDEF")) - if n > 2 { - n = 2 - } - v, err := strconv.ParseUint(string(in[2:2+n]), 16, 8) - if err != nil { - return "", d.newSyntaxError("invalid hex escape code %q in string", in[:2+n]) - } - in, out = in[2+n:], append(out, byte(v)) - case 'u', 'U': - // Four or eight hexadecimal characters - n := 6 - if r == 'U' { - n = 10 - } - if len(in) < n { - return "", ErrUnexpectedEOF - } - v, err := strconv.ParseUint(string(in[2:n]), 16, 32) - if utf8.MaxRune < v || err != nil { - return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:n]) - } - in = in[n:] - - r := rune(v) - if utf16.IsSurrogate(r) { - if len(in) < 6 { - return "", ErrUnexpectedEOF - } - v, err := strconv.ParseUint(string(in[2:6]), 16, 16) - r = utf16.DecodeRune(r, rune(v)) - if in[0] != '\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil { - return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:6]) - } - in = in[6:] - } - out = append(out, string(r)...) - default: - return "", d.newSyntaxError("invalid escape code %q in string", in[:2]) - } - default: - i := indexNeedEscapeInBytes(in[n:]) - in, out = in[n+i:], append(out, in[:n+i]...) - } - } - return "", ErrUnexpectedEOF -} - -// indexNeedEscapeInString returns the index of the character that needs -// escaping. If no characters need escaping, this returns the input length. -func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) } - -// UnmarshalString returns an unescaped string given a textproto string value. -// String value needs to contain single or double quotes. This is only used by -// internal/encoding/defval package for unmarshaling bytes. -func UnmarshalString(s string) (string, error) { - d := NewDecoder([]byte(s)) - return d.parseString() -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go deleted file mode 100644 index 83d2b0d..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +++ /dev/null @@ -1,373 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package text - -import ( - "bytes" - "fmt" - "math" - "strconv" - "strings" - - "google.golang.org/protobuf/internal/flags" -) - -// Kind represents a token kind expressible in the textproto format. -type Kind uint8 - -// Kind values. -const ( - Invalid Kind = iota - EOF - Name // Name indicates the field name. - Scalar // Scalar are scalar values, e.g. "string", 47, ENUM_LITERAL, true. - MessageOpen - MessageClose - ListOpen - ListClose - - // comma and semi-colon are only for parsing in between values and should not be exposed. - comma - semicolon - - // bof indicates beginning of file, which is the default token - // kind at the beginning of parsing. - bof = Invalid -) - -func (t Kind) String() string { - switch t { - case Invalid: - return "<invalid>" - case EOF: - return "eof" - case Scalar: - return "scalar" - case Name: - return "name" - case MessageOpen: - return "{" - case MessageClose: - return "}" - case ListOpen: - return "[" - case ListClose: - return "]" - case comma: - return "," - case semicolon: - return ";" - default: - return fmt.Sprintf("<invalid:%v>", uint8(t)) - } -} - -// NameKind represents different types of field names. -type NameKind uint8 - -// NameKind values. -const ( - IdentName NameKind = iota + 1 - TypeName - FieldNumber -) - -func (t NameKind) String() string { - switch t { - case IdentName: - return "IdentName" - case TypeName: - return "TypeName" - case FieldNumber: - return "FieldNumber" - default: - return fmt.Sprintf("<invalid:%v>", uint8(t)) - } -} - -// Bit mask in Token.attrs to indicate if a Name token is followed by the -// separator char ':'. The field name separator char is optional for message -// field or repeated message field, but required for all other types. Decoder -// simply indicates whether a Name token is followed by separator or not. It is -// up to the prototext package to validate. -const hasSeparator = 1 << 7 - -// Scalar value types. -const ( - numberValue = iota + 1 - stringValue - literalValue -) - -// Bit mask in Token.numAttrs to indicate that the number is a negative. -const isNegative = 1 << 7 - -// Token provides a parsed token kind and value. Values are provided by the -// different accessor methods. -type Token struct { - // Kind of the Token object. - kind Kind - // attrs contains metadata for the following Kinds: - // Name: hasSeparator bit and one of NameKind. - // Scalar: one of numberValue, stringValue, literalValue. - attrs uint8 - // numAttrs contains metadata for numberValue: - // - highest bit is whether negative or positive. - // - lower bits indicate one of numDec, numHex, numOct, numFloat. - numAttrs uint8 - // pos provides the position of the token in the original input. - pos int - // raw bytes of the serialized token. - // This is a subslice into the original input. - raw []byte - // str contains parsed string for the following: - // - stringValue of Scalar kind - // - numberValue of Scalar kind - // - TypeName of Name kind - str string -} - -// Kind returns the token kind. -func (t Token) Kind() Kind { - return t.kind -} - -// RawString returns the read value in string. -func (t Token) RawString() string { - return string(t.raw) -} - -// Pos returns the token position from the input. -func (t Token) Pos() int { - return t.pos -} - -// NameKind returns IdentName, TypeName or FieldNumber. -// It panics if type is not Name. -func (t Token) NameKind() NameKind { - if t.kind == Name { - return NameKind(t.attrs &^ hasSeparator) - } - panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) -} - -// HasSeparator returns true if the field name is followed by the separator char -// ':', else false. It panics if type is not Name. -func (t Token) HasSeparator() bool { - if t.kind == Name { - return t.attrs&hasSeparator != 0 - } - panic(fmt.Sprintf("Token is not a Name type: %s", t.kind)) -} - -// IdentName returns the value for IdentName type. -func (t Token) IdentName() string { - if t.kind == Name && t.attrs&uint8(IdentName) != 0 { - return string(t.raw) - } - panic(fmt.Sprintf("Token is not an IdentName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) -} - -// TypeName returns the value for TypeName type. -func (t Token) TypeName() string { - if t.kind == Name && t.attrs&uint8(TypeName) != 0 { - return t.str - } - panic(fmt.Sprintf("Token is not a TypeName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) -} - -// FieldNumber returns the value for FieldNumber type. It returns a -// non-negative int32 value. Caller will still need to validate for the correct -// field number range. -func (t Token) FieldNumber() int32 { - if t.kind != Name || t.attrs&uint8(FieldNumber) == 0 { - panic(fmt.Sprintf("Token is not a FieldNumber: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator))) - } - // Following should not return an error as it had already been called right - // before this Token was constructed. - num, _ := strconv.ParseInt(string(t.raw), 10, 32) - return int32(num) -} - -// String returns the string value for a Scalar type. -func (t Token) String() (string, bool) { - if t.kind != Scalar || t.attrs != stringValue { - return "", false - } - return t.str, true -} - -// Enum returns the literal value for a Scalar type for use as enum literals. -func (t Token) Enum() (string, bool) { - if t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') { - return "", false - } - return string(t.raw), true -} - -// Bool returns the bool value for a Scalar type. -func (t Token) Bool() (bool, bool) { - if t.kind != Scalar { - return false, false - } - switch t.attrs { - case literalValue: - if b, ok := boolLits[string(t.raw)]; ok { - return b, true - } - case numberValue: - // Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01, - // 0x1, etc. - n, err := strconv.ParseUint(t.str, 0, 64) - if err == nil { - switch n { - case 0: - return false, true - case 1: - return true, true - } - } - } - return false, false -} - -// These exact boolean literals are the ones supported in C++. -var boolLits = map[string]bool{ - "t": true, - "true": true, - "True": true, - "f": false, - "false": false, - "False": false, -} - -// Uint64 returns the uint64 value for a Scalar type. -func (t Token) Uint64() (uint64, bool) { - if t.kind != Scalar || t.attrs != numberValue || - t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { - return 0, false - } - n, err := strconv.ParseUint(t.str, 0, 64) - if err != nil { - return 0, false - } - return n, true -} - -// Uint32 returns the uint32 value for a Scalar type. -func (t Token) Uint32() (uint32, bool) { - if t.kind != Scalar || t.attrs != numberValue || - t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 { - return 0, false - } - n, err := strconv.ParseUint(t.str, 0, 32) - if err != nil { - return 0, false - } - return uint32(n), true -} - -// Int64 returns the int64 value for a Scalar type. -func (t Token) Int64() (int64, bool) { - if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { - return 0, false - } - if n, err := strconv.ParseInt(t.str, 0, 64); err == nil { - return n, true - } - // C++ accepts large positive hex numbers as negative values. - // This feature is here for proto1 backwards compatibility purposes. - if flags.ProtoLegacy && (t.numAttrs == numHex) { - if n, err := strconv.ParseUint(t.str, 0, 64); err == nil { - return int64(n), true - } - } - return 0, false -} - -// Int32 returns the int32 value for a Scalar type. -func (t Token) Int32() (int32, bool) { - if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 { - return 0, false - } - if n, err := strconv.ParseInt(t.str, 0, 32); err == nil { - return int32(n), true - } - // C++ accepts large positive hex numbers as negative values. - // This feature is here for proto1 backwards compatibility purposes. - if flags.ProtoLegacy && (t.numAttrs == numHex) { - if n, err := strconv.ParseUint(t.str, 0, 32); err == nil { - return int32(n), true - } - } - return 0, false -} - -// Float64 returns the float64 value for a Scalar type. -func (t Token) Float64() (float64, bool) { - if t.kind != Scalar { - return 0, false - } - switch t.attrs { - case literalValue: - if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { - return f, true - } - case numberValue: - n, err := strconv.ParseFloat(t.str, 64) - if err == nil { - return n, true - } - nerr := err.(*strconv.NumError) - if nerr.Err == strconv.ErrRange { - return n, true - } - } - return 0, false -} - -// Float32 returns the float32 value for a Scalar type. -func (t Token) Float32() (float32, bool) { - if t.kind != Scalar { - return 0, false - } - switch t.attrs { - case literalValue: - if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok { - return float32(f), true - } - case numberValue: - n, err := strconv.ParseFloat(t.str, 64) - if err == nil { - // Overflows are treated as (-)infinity. - return float32(n), true - } - nerr := err.(*strconv.NumError) - if nerr.Err == strconv.ErrRange { - return float32(n), true - } - } - return 0, false -} - -// These are the supported float literals which C++ permits case-insensitive -// variants of these. -var floatLits = map[string]float64{ - "nan": math.NaN(), - "inf": math.Inf(1), - "infinity": math.Inf(1), - "-inf": math.Inf(-1), - "-infinity": math.Inf(-1), -} - -// TokenEquals returns true if given Tokens are equal, else false. -func TokenEquals(x, y Token) bool { - return x.kind == y.kind && - x.attrs == y.attrs && - x.numAttrs == y.numAttrs && - x.pos == y.pos && - bytes.Equal(x.raw, y.raw) && - x.str == y.str -} diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go b/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go deleted file mode 100644 index 7ae6c2a..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package text implements the text format for protocol buffers. -// This package has no semantic understanding for protocol buffers and is only -// a parser and composer for the format. -// -// There is no formal specification for the protobuf text format, as such the -// C++ implementation (see google::protobuf::TextFormat) is the reference -// implementation of the text format. -// -// This package is neither a superset nor a subset of the C++ implementation. -// This implementation permits a more liberal grammar in some cases to be -// backwards compatible with the historical Go implementation. -// Future parsings unique to Go should not be added. -// Some grammars allowed by the C++ implementation are deliberately -// not implemented here because they are considered a bug by the protobuf team -// and should not be replicated. -// -// The Go implementation should implement a sufficient amount of the C++ -// grammar such that the default text serialization by C++ can be parsed by Go. -// However, just because the C++ parser accepts some input does not mean that -// the Go implementation should as well. -// -// The text format is almost a superset of JSON except: -// - message keys are not quoted strings, but identifiers -// - the top-level value must be a message without the delimiters -package text diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go deleted file mode 100644 index cf7aed7..0000000 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +++ /dev/null @@ -1,272 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package text - -import ( - "math" - "math/bits" - "strconv" - "strings" - "unicode/utf8" - - "google.golang.org/protobuf/internal/detrand" - "google.golang.org/protobuf/internal/errors" -) - -// encType represents an encoding type. -type encType uint8 - -const ( - _ encType = (1 << iota) / 2 - name - scalar - messageOpen - messageClose -) - -// Encoder provides methods to write out textproto constructs and values. The user is -// responsible for producing valid sequences of constructs and values. -type Encoder struct { - encoderState - - indent string - delims [2]byte - outputASCII bool -} - -type encoderState struct { - lastType encType - indents []byte - out []byte -} - -// NewEncoder returns an Encoder. -// -// If indent is a non-empty string, it causes every entry in a List or Message -// to be preceded by the indent and trailed by a newline. -// -// If delims is not the zero value, it controls the delimiter characters used -// for messages (e.g., "{}" vs "<>"). -// -// If outputASCII is true, strings will be serialized in such a way that -// multi-byte UTF-8 sequences are escaped. This property ensures that the -// overall output is ASCII (as opposed to UTF-8). -func NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error) { - e := &Encoder{ - encoderState: encoderState{out: buf}, - } - if len(indent) > 0 { - if strings.Trim(indent, " \t") != "" { - return nil, errors.New("indent may only be composed of space and tab characters") - } - e.indent = indent - } - switch delims { - case [2]byte{0, 0}: - e.delims = [2]byte{'{', '}'} - case [2]byte{'{', '}'}, [2]byte{'<', '>'}: - e.delims = delims - default: - return nil, errors.New("delimiters may only be \"{}\" or \"<>\"") - } - e.outputASCII = outputASCII - - return e, nil -} - -// Bytes returns the content of the written bytes. -func (e *Encoder) Bytes() []byte { - return e.out -} - -// StartMessage writes out the '{' or '<' symbol. -func (e *Encoder) StartMessage() { - e.prepareNext(messageOpen) - e.out = append(e.out, e.delims[0]) -} - -// EndMessage writes out the '}' or '>' symbol. -func (e *Encoder) EndMessage() { - e.prepareNext(messageClose) - e.out = append(e.out, e.delims[1]) -} - -// WriteName writes out the field name and the separator ':'. -func (e *Encoder) WriteName(s string) { - e.prepareNext(name) - e.out = append(e.out, s...) - e.out = append(e.out, ':') -} - -// WriteBool writes out the given boolean value. -func (e *Encoder) WriteBool(b bool) { - if b { - e.WriteLiteral("true") - } else { - e.WriteLiteral("false") - } -} - -// WriteString writes out the given string value. -func (e *Encoder) WriteString(s string) { - e.prepareNext(scalar) - e.out = appendString(e.out, s, e.outputASCII) -} - -func appendString(out []byte, in string, outputASCII bool) []byte { - out = append(out, '"') - i := indexNeedEscapeInString(in) - in, out = in[i:], append(out, in[:i]...) - for len(in) > 0 { - switch r, n := utf8.DecodeRuneInString(in); { - case r == utf8.RuneError && n == 1: - // We do not report invalid UTF-8 because strings in the text format - // are used to represent both the proto string and bytes type. - r = rune(in[0]) - fallthrough - case r < ' ' || r == '"' || r == '\\' || r == 0x7f: - out = append(out, '\\') - switch r { - case '"', '\\': - out = append(out, byte(r)) - case '\n': - out = append(out, 'n') - case '\r': - out = append(out, 'r') - case '\t': - out = append(out, 't') - default: - out = append(out, 'x') - out = append(out, "00"[1+(bits.Len32(uint32(r))-1)/4:]...) - out = strconv.AppendUint(out, uint64(r), 16) - } - in = in[n:] - case r >= utf8.RuneSelf && (outputASCII || r <= 0x009f): - out = append(out, '\\') - if r <= math.MaxUint16 { - out = append(out, 'u') - out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...) - out = strconv.AppendUint(out, uint64(r), 16) - } else { - out = append(out, 'U') - out = append(out, "00000000"[1+(bits.Len32(uint32(r))-1)/4:]...) - out = strconv.AppendUint(out, uint64(r), 16) - } - in = in[n:] - default: - i := indexNeedEscapeInString(in[n:]) - in, out = in[n+i:], append(out, in[:n+i]...) - } - } - out = append(out, '"') - return out -} - -// indexNeedEscapeInString returns the index of the character that needs -// escaping. If no characters need escaping, this returns the input length. -func indexNeedEscapeInString(s string) int { - for i := 0; i < len(s); i++ { - if c := s[i]; c < ' ' || c == '"' || c == '\'' || c == '\\' || c >= 0x7f { - return i - } - } - return len(s) -} - -// WriteFloat writes out the given float value for given bitSize. -func (e *Encoder) WriteFloat(n float64, bitSize int) { - e.prepareNext(scalar) - e.out = appendFloat(e.out, n, bitSize) -} - -func appendFloat(out []byte, n float64, bitSize int) []byte { - switch { - case math.IsNaN(n): - return append(out, "nan"...) - case math.IsInf(n, +1): - return append(out, "inf"...) - case math.IsInf(n, -1): - return append(out, "-inf"...) - default: - return strconv.AppendFloat(out, n, 'g', -1, bitSize) - } -} - -// WriteInt writes out the given signed integer value. -func (e *Encoder) WriteInt(n int64) { - e.prepareNext(scalar) - e.out = strconv.AppendInt(e.out, n, 10) -} - -// WriteUint writes out the given unsigned integer value. -func (e *Encoder) WriteUint(n uint64) { - e.prepareNext(scalar) - e.out = strconv.AppendUint(e.out, n, 10) -} - -// WriteLiteral writes out the given string as a literal value without quotes. -// This is used for writing enum literal strings. -func (e *Encoder) WriteLiteral(s string) { - e.prepareNext(scalar) - e.out = append(e.out, s...) -} - -// prepareNext adds possible space and indentation for the next value based -// on last encType and indent option. It also updates e.lastType to next. -func (e *Encoder) prepareNext(next encType) { - defer func() { - e.lastType = next - }() - - // Single line. - if len(e.indent) == 0 { - // Add space after each field before the next one. - if e.lastType&(scalar|messageClose) != 0 && next == name { - e.out = append(e.out, ' ') - // Add a random extra space to make output unstable. - if detrand.Bool() { - e.out = append(e.out, ' ') - } - } - return - } - - // Multi-line. - switch { - case e.lastType == name: - e.out = append(e.out, ' ') - // Add a random extra space after name: to make output unstable. - if detrand.Bool() { - e.out = append(e.out, ' ') - } - - case e.lastType == messageOpen && next != messageClose: - e.indents = append(e.indents, e.indent...) - e.out = append(e.out, '\n') - e.out = append(e.out, e.indents...) - - case e.lastType&(scalar|messageClose) != 0: - if next == messageClose { - e.indents = e.indents[:len(e.indents)-len(e.indent)] - } - e.out = append(e.out, '\n') - e.out = append(e.out, e.indents...) - } -} - -// Snapshot returns the current snapshot for use in Reset. -func (e *Encoder) Snapshot() encoderState { - return e.encoderState -} - -// Reset resets the Encoder to the given encoderState from a Snapshot. -func (e *Encoder) Reset(es encoderState) { - e.encoderState = es -} - -// AppendString appends the escaped form of the input string to b. -func AppendString(b []byte, s string) []byte { - return appendString(b, s, false) -} diff --git a/vendor/google.golang.org/protobuf/internal/errors/errors.go b/vendor/google.golang.org/protobuf/internal/errors/errors.go deleted file mode 100644 index c2d6bd5..0000000 --- a/vendor/google.golang.org/protobuf/internal/errors/errors.go +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package errors implements functions to manipulate errors. -package errors - -import ( - "errors" - "fmt" - - "google.golang.org/protobuf/internal/detrand" -) - -// Error is a sentinel matching all errors produced by this package. -var Error = errors.New("protobuf error") - -// New formats a string according to the format specifier and arguments and -// returns an error that has a "proto" prefix. -func New(f string, x ...any) error { - return &prefixError{s: format(f, x...)} -} - -type prefixError struct{ s string } - -var prefix = func() string { - // Deliberately introduce instability into the error message string to - // discourage users from performing error string comparisons. - if detrand.Bool() { - return "proto: " // use non-breaking spaces (U+00a0) - } else { - return "proto: " // use regular spaces (U+0020) - } -}() - -func (e *prefixError) Error() string { - return prefix + e.s -} - -func (e *prefixError) Unwrap() error { - return Error -} - -// Wrap returns an error that has a "proto" prefix, the formatted string described -// by the format specifier and arguments, and a suffix of err. The error wraps err. -func Wrap(err error, f string, x ...any) error { - return &wrapError{ - s: format(f, x...), - err: err, - } -} - -type wrapError struct { - s string - err error -} - -func (e *wrapError) Error() string { - return format("%v%v: %v", prefix, e.s, e.err) -} - -func (e *wrapError) Unwrap() error { - return e.err -} - -func (e *wrapError) Is(target error) bool { - return target == Error -} - -func format(f string, x ...any) string { - // avoid "proto: " prefix when chaining - for i := 0; i < len(x); i++ { - switch e := x[i].(type) { - case *prefixError: - x[i] = e.s - case *wrapError: - x[i] = format("%v: %v", e.s, e.err) - } - } - return fmt.Sprintf(f, x...) -} - -func InvalidUTF8(name string) error { - return New("field %v contains invalid UTF-8", name) -} - -func RequiredNotSet(name string) error { - return New("required field %v not set", name) -} - -type SizeMismatchError struct { - Calculated, Measured int -} - -func (e *SizeMismatchError) Error() string { - return fmt.Sprintf("size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d", e.Calculated, e.Measured) -} - -func MismatchedSizeCalculation(calculated, measured int) error { - return &SizeMismatchError{ - Calculated: calculated, - Measured: measured, - } -} diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/vendor/google.golang.org/protobuf/internal/errors/is_go112.go deleted file mode 100644 index fbcd349..0000000 --- a/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.13 -// +build !go1.13 - -package errors - -import "reflect" - -// Is is a copy of Go 1.13's errors.Is for use with older Go versions. -func Is(err, target error) bool { - if target == nil { - return err == target - } - - isComparable := reflect.TypeOf(target).Comparable() - for { - if isComparable && err == target { - return true - } - if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { - return true - } - if err = unwrap(err); err == nil { - return false - } - } -} - -func unwrap(err error) error { - u, ok := err.(interface { - Unwrap() error - }) - if !ok { - return nil - } - return u.Unwrap() -} diff --git a/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/vendor/google.golang.org/protobuf/internal/errors/is_go113.go deleted file mode 100644 index 5e72f1c..0000000 --- a/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.13 -// +build go1.13 - -package errors - -import "errors" - -// Is is errors.Is. -func Is(err, target error) bool { return errors.Is(err, target) } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/build.go b/vendor/google.golang.org/protobuf/internal/filedesc/build.go deleted file mode 100644 index 7cac1c1..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/build.go +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package filedesc provides functionality for constructing descriptors. -// -// The types in this package implement interfaces in the protoreflect package -// related to protobuf descripriptors. -package filedesc - -import ( - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// Builder construct a protoreflect.FileDescriptor from the raw descriptor. -type Builder struct { - // GoPackagePath is the Go package path that is invoking this builder. - GoPackagePath string - - // RawDescriptor is the wire-encoded bytes of FileDescriptorProto - // and must be populated. - RawDescriptor []byte - - // NumEnums is the total number of enums declared in the file. - NumEnums int32 - // NumMessages is the total number of messages declared in the file. - // It includes the implicit message declarations for map entries. - NumMessages int32 - // NumExtensions is the total number of extensions declared in the file. - NumExtensions int32 - // NumServices is the total number of services declared in the file. - NumServices int32 - - // TypeResolver resolves extension field types for descriptor options. - // If nil, it uses protoregistry.GlobalTypes. - TypeResolver interface { - protoregistry.ExtensionTypeResolver - } - - // FileRegistry is use to lookup file, enum, and message dependencies. - // Once constructed, the file descriptor is registered here. - // If nil, it uses protoregistry.GlobalFiles. - FileRegistry interface { - FindFileByPath(string) (protoreflect.FileDescriptor, error) - FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) - RegisterFile(protoreflect.FileDescriptor) error - } -} - -// resolverByIndex is an interface Builder.FileRegistry may implement. -// If so, it permits looking up an enum or message dependency based on the -// sub-list and element index into filetype.Builder.DependencyIndexes. -type resolverByIndex interface { - FindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor - FindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor -} - -// Indexes of each sub-list in filetype.Builder.DependencyIndexes. -const ( - listFieldDeps int32 = iota - listExtTargets - listExtDeps - listMethInDeps - listMethOutDeps -) - -// Out is the output of the Builder. -type Out struct { - File protoreflect.FileDescriptor - - // Enums is all enum descriptors in "flattened ordering". - Enums []Enum - // Messages is all message descriptors in "flattened ordering". - // It includes the implicit message declarations for map entries. - Messages []Message - // Extensions is all extension descriptors in "flattened ordering". - Extensions []Extension - // Service is all service descriptors in "flattened ordering". - Services []Service -} - -// Build constructs a FileDescriptor given the parameters set in Builder. -// It assumes that the inputs are well-formed and panics if any inconsistencies -// are encountered. -// -// If NumEnums+NumMessages+NumExtensions+NumServices is zero, -// then Build automatically derives them from the raw descriptor. -func (db Builder) Build() (out Out) { - // Populate the counts if uninitialized. - if db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 { - db.unmarshalCounts(db.RawDescriptor, true) - } - - // Initialize resolvers and registries if unpopulated. - if db.TypeResolver == nil { - db.TypeResolver = protoregistry.GlobalTypes - } - if db.FileRegistry == nil { - db.FileRegistry = protoregistry.GlobalFiles - } - - fd := newRawFile(db) - out.File = fd - out.Enums = fd.allEnums - out.Messages = fd.allMessages - out.Extensions = fd.allExtensions - out.Services = fd.allServices - - if err := db.FileRegistry.RegisterFile(fd); err != nil { - panic(err) - } - return out -} - -// unmarshalCounts counts the number of enum, message, extension, and service -// declarations in the raw message, which is either a FileDescriptorProto -// or a MessageDescriptorProto depending on whether isFile is set. -func (db *Builder) unmarshalCounts(b []byte, isFile bool) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - if isFile { - switch num { - case genid.FileDescriptorProto_EnumType_field_number: - db.NumEnums++ - case genid.FileDescriptorProto_MessageType_field_number: - db.unmarshalCounts(v, false) - db.NumMessages++ - case genid.FileDescriptorProto_Extension_field_number: - db.NumExtensions++ - case genid.FileDescriptorProto_Service_field_number: - db.NumServices++ - } - } else { - switch num { - case genid.DescriptorProto_EnumType_field_number: - db.NumEnums++ - case genid.DescriptorProto_NestedType_field_number: - db.unmarshalCounts(v, false) - db.NumMessages++ - case genid.DescriptorProto_Extension_field_number: - db.NumExtensions++ - } - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go deleted file mode 100644 index fa790e0..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ /dev/null @@ -1,737 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "bytes" - "fmt" - "strings" - "sync" - "sync/atomic" - - "google.golang.org/protobuf/internal/descfmt" - "google.golang.org/protobuf/internal/descopts" - "google.golang.org/protobuf/internal/encoding/defval" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// Edition is an Enum for proto2.Edition -type Edition int32 - -// These values align with the value of Enum in descriptor.proto which allows -// direct conversion between the proto enum and this enum. -const ( - EditionUnknown Edition = 0 - EditionProto2 Edition = 998 - EditionProto3 Edition = 999 - Edition2023 Edition = 1000 - EditionUnsupported Edition = 100000 -) - -// The types in this file may have a suffix: -// • L0: Contains fields common to all descriptors (except File) and -// must be initialized up front. -// • L1: Contains fields specific to a descriptor and -// must be initialized up front. If the associated proto uses Editions, the -// Editions features must always be resolved. If not explicitly set, the -// appropriate default must be resolved and set. -// • L2: Contains fields that are lazily initialized when constructing -// from the raw file descriptor. When constructing as a literal, the L2 -// fields must be initialized up front. -// -// The types are exported so that packages like reflect/protodesc can -// directly construct descriptors. - -type ( - File struct { - fileRaw - L1 FileL1 - - once uint32 // atomically set if L2 is valid - mu sync.Mutex // protects L2 - L2 *FileL2 - } - FileL1 struct { - Syntax protoreflect.Syntax - Edition Edition // Only used if Syntax == Editions - Path string - Package protoreflect.FullName - - Enums Enums - Messages Messages - Extensions Extensions - Services Services - - EditionFeatures EditionFeatures - } - FileL2 struct { - Options func() protoreflect.ProtoMessage - Imports FileImports - Locations SourceLocations - } - - EditionFeatures struct { - // IsFieldPresence is true if field_presence is EXPLICIT - // https://protobuf.dev/editions/features/#field_presence - IsFieldPresence bool - // IsFieldPresence is true if field_presence is LEGACY_REQUIRED - // https://protobuf.dev/editions/features/#field_presence - IsLegacyRequired bool - // IsOpenEnum is true if enum_type is OPEN - // https://protobuf.dev/editions/features/#enum_type - IsOpenEnum bool - // IsPacked is true if repeated_field_encoding is PACKED - // https://protobuf.dev/editions/features/#repeated_field_encoding - IsPacked bool - // IsUTF8Validated is true if utf_validation is VERIFY - // https://protobuf.dev/editions/features/#utf8_validation - IsUTF8Validated bool - // IsDelimitedEncoded is true if message_encoding is DELIMITED - // https://protobuf.dev/editions/features/#message_encoding - IsDelimitedEncoded bool - // IsJSONCompliant is true if json_format is ALLOW - // https://protobuf.dev/editions/features/#json_format - IsJSONCompliant bool - // GenerateLegacyUnmarshalJSON determines if the plugin generates the - // UnmarshalJSON([]byte) error method for enums. - GenerateLegacyUnmarshalJSON bool - } -) - -func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } -func (fd *File) Parent() protoreflect.Descriptor { return nil } -func (fd *File) Index() int { return 0 } -func (fd *File) Syntax() protoreflect.Syntax { return fd.L1.Syntax } - -// Not exported and just used to reconstruct the original FileDescriptor proto -func (fd *File) Edition() int32 { return int32(fd.L1.Edition) } -func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } -func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } -func (fd *File) IsPlaceholder() bool { return false } -func (fd *File) Options() protoreflect.ProtoMessage { - if f := fd.lazyInit().Options; f != nil { - return f() - } - return descopts.File -} -func (fd *File) Path() string { return fd.L1.Path } -func (fd *File) Package() protoreflect.FullName { return fd.L1.Package } -func (fd *File) Imports() protoreflect.FileImports { return &fd.lazyInit().Imports } -func (fd *File) Enums() protoreflect.EnumDescriptors { return &fd.L1.Enums } -func (fd *File) Messages() protoreflect.MessageDescriptors { return &fd.L1.Messages } -func (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions } -func (fd *File) Services() protoreflect.ServiceDescriptors { return &fd.L1.Services } -func (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations } -func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } -func (fd *File) ProtoType(protoreflect.FileDescriptor) {} -func (fd *File) ProtoInternal(pragma.DoNotImplement) {} - -func (fd *File) lazyInit() *FileL2 { - if atomic.LoadUint32(&fd.once) == 0 { - fd.lazyInitOnce() - } - return fd.L2 -} - -func (fd *File) lazyInitOnce() { - fd.mu.Lock() - if fd.L2 == nil { - fd.lazyRawInit() // recursively initializes all L2 structures - } - atomic.StoreUint32(&fd.once, 1) - fd.mu.Unlock() -} - -// GoPackagePath is a pseudo-internal API for determining the Go package path -// that this file descriptor is declared in. -// -// WARNING: This method is exempt from the compatibility promise and may be -// removed in the future without warning. -func (fd *File) GoPackagePath() string { - return fd.builder.GoPackagePath -} - -type ( - Enum struct { - Base - L1 EnumL1 - L2 *EnumL2 // protected by fileDesc.once - } - EnumL1 struct { - eagerValues bool // controls whether EnumL2.Values is already populated - - EditionFeatures EditionFeatures - } - EnumL2 struct { - Options func() protoreflect.ProtoMessage - Values EnumValues - ReservedNames Names - ReservedRanges EnumRanges - } - - EnumValue struct { - Base - L1 EnumValueL1 - } - EnumValueL1 struct { - Options func() protoreflect.ProtoMessage - Number protoreflect.EnumNumber - } -) - -func (ed *Enum) Options() protoreflect.ProtoMessage { - if f := ed.lazyInit().Options; f != nil { - return f() - } - return descopts.Enum -} -func (ed *Enum) Values() protoreflect.EnumValueDescriptors { - if ed.L1.eagerValues { - return &ed.L2.Values - } - return &ed.lazyInit().Values -} -func (ed *Enum) ReservedNames() protoreflect.Names { return &ed.lazyInit().ReservedNames } -func (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges } -func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } -func (ed *Enum) ProtoType(protoreflect.EnumDescriptor) {} -func (ed *Enum) lazyInit() *EnumL2 { - ed.L0.ParentFile.lazyInit() // implicitly initializes L2 - return ed.L2 -} -func (ed *Enum) IsClosed() bool { - return !ed.L1.EditionFeatures.IsOpenEnum -} - -func (ed *EnumValue) Options() protoreflect.ProtoMessage { - if f := ed.L1.Options; f != nil { - return f() - } - return descopts.EnumValue -} -func (ed *EnumValue) Number() protoreflect.EnumNumber { return ed.L1.Number } -func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } -func (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {} - -type ( - Message struct { - Base - L1 MessageL1 - L2 *MessageL2 // protected by fileDesc.once - } - MessageL1 struct { - Enums Enums - Messages Messages - Extensions Extensions - IsMapEntry bool // promoted from google.protobuf.MessageOptions - IsMessageSet bool // promoted from google.protobuf.MessageOptions - - EditionFeatures EditionFeatures - } - MessageL2 struct { - Options func() protoreflect.ProtoMessage - Fields Fields - Oneofs Oneofs - ReservedNames Names - ReservedRanges FieldRanges - RequiredNumbers FieldNumbers // must be consistent with Fields.Cardinality - ExtensionRanges FieldRanges - ExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges - } - - Field struct { - Base - L1 FieldL1 - } - FieldL1 struct { - Options func() protoreflect.ProtoMessage - Number protoreflect.FieldNumber - Cardinality protoreflect.Cardinality // must be consistent with Message.RequiredNumbers - Kind protoreflect.Kind - StringName stringName - IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto - IsWeak bool // promoted from google.protobuf.FieldOptions - IsLazy bool // promoted from google.protobuf.FieldOptions - Default defaultValue - ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields - Enum protoreflect.EnumDescriptor - Message protoreflect.MessageDescriptor - - EditionFeatures EditionFeatures - } - - Oneof struct { - Base - L1 OneofL1 - } - OneofL1 struct { - Options func() protoreflect.ProtoMessage - Fields OneofFields // must be consistent with Message.Fields.ContainingOneof - - EditionFeatures EditionFeatures - } -) - -func (md *Message) Options() protoreflect.ProtoMessage { - if f := md.lazyInit().Options; f != nil { - return f() - } - return descopts.Message -} -func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry } -func (md *Message) Fields() protoreflect.FieldDescriptors { return &md.lazyInit().Fields } -func (md *Message) Oneofs() protoreflect.OneofDescriptors { return &md.lazyInit().Oneofs } -func (md *Message) ReservedNames() protoreflect.Names { return &md.lazyInit().ReservedNames } -func (md *Message) ReservedRanges() protoreflect.FieldRanges { return &md.lazyInit().ReservedRanges } -func (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers } -func (md *Message) ExtensionRanges() protoreflect.FieldRanges { return &md.lazyInit().ExtensionRanges } -func (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage { - if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil { - return f() - } - return descopts.ExtensionRange -} -func (md *Message) Enums() protoreflect.EnumDescriptors { return &md.L1.Enums } -func (md *Message) Messages() protoreflect.MessageDescriptors { return &md.L1.Messages } -func (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions } -func (md *Message) ProtoType(protoreflect.MessageDescriptor) {} -func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } -func (md *Message) lazyInit() *MessageL2 { - md.L0.ParentFile.lazyInit() // implicitly initializes L2 - return md.L2 -} - -// IsMessageSet is a pseudo-internal API for checking whether a message -// should serialize in the proto1 message format. -// -// WARNING: This method is exempt from the compatibility promise and may be -// removed in the future without warning. -func (md *Message) IsMessageSet() bool { - return md.L1.IsMessageSet -} - -func (fd *Field) Options() protoreflect.ProtoMessage { - if f := fd.L1.Options; f != nil { - return f() - } - return descopts.Field -} -func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number } -func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality } -func (fd *Field) Kind() protoreflect.Kind { - return fd.L1.Kind -} -func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } -func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } -func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } -func (fd *Field) HasPresence() bool { - if fd.L1.Cardinality == protoreflect.Repeated { - return false - } - return fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil -} -func (fd *Field) HasOptionalKeyword() bool { - return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional -} -func (fd *Field) IsPacked() bool { - if fd.L1.Cardinality != protoreflect.Repeated { - return false - } - switch fd.L1.Kind { - case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: - return false - } - return fd.L1.EditionFeatures.IsPacked -} -func (fd *Field) IsExtension() bool { return false } -func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } -func (fd *Field) IsLazy() bool { return fd.L1.IsLazy } -func (fd *Field) IsList() bool { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() } -func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() } -func (fd *Field) MapKey() protoreflect.FieldDescriptor { - if !fd.IsMap() { - return nil - } - return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number) -} -func (fd *Field) MapValue() protoreflect.FieldDescriptor { - if !fd.IsMap() { - return nil - } - return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number) -} -func (fd *Field) HasDefault() bool { return fd.L1.Default.has } -func (fd *Field) Default() protoreflect.Value { return fd.L1.Default.get(fd) } -func (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum } -func (fd *Field) ContainingOneof() protoreflect.OneofDescriptor { return fd.L1.ContainingOneof } -func (fd *Field) ContainingMessage() protoreflect.MessageDescriptor { - return fd.L0.Parent.(protoreflect.MessageDescriptor) -} -func (fd *Field) Enum() protoreflect.EnumDescriptor { - return fd.L1.Enum -} -func (fd *Field) Message() protoreflect.MessageDescriptor { - if fd.L1.IsWeak { - if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil { - return d.(protoreflect.MessageDescriptor) - } - } - return fd.L1.Message -} -func (fd *Field) IsMapEntry() bool { - parent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor) - return ok && parent.IsMapEntry() -} -func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } -func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} - -// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8 -// validation for the string field. This exists for Google-internal use only -// since proto3 did not enforce UTF-8 validity prior to the open-source release. -// If this method does not exist, the default is to enforce valid UTF-8. -// -// WARNING: This method is exempt from the compatibility promise and may be -// removed in the future without warning. -func (fd *Field) EnforceUTF8() bool { - return fd.L1.EditionFeatures.IsUTF8Validated -} - -func (od *Oneof) IsSynthetic() bool { - return od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword() -} -func (od *Oneof) Options() protoreflect.ProtoMessage { - if f := od.L1.Options; f != nil { - return f() - } - return descopts.Oneof -} -func (od *Oneof) Fields() protoreflect.FieldDescriptors { return &od.L1.Fields } -func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) } -func (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {} - -type ( - Extension struct { - Base - L1 ExtensionL1 - L2 *ExtensionL2 // protected by fileDesc.once - } - ExtensionL1 struct { - Number protoreflect.FieldNumber - Extendee protoreflect.MessageDescriptor - Cardinality protoreflect.Cardinality - Kind protoreflect.Kind - IsLazy bool - EditionFeatures EditionFeatures - } - ExtensionL2 struct { - Options func() protoreflect.ProtoMessage - StringName stringName - IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto - Default defaultValue - Enum protoreflect.EnumDescriptor - Message protoreflect.MessageDescriptor - } -) - -func (xd *Extension) Options() protoreflect.ProtoMessage { - if f := xd.lazyInit().Options; f != nil { - return f() - } - return descopts.Field -} -func (xd *Extension) Number() protoreflect.FieldNumber { return xd.L1.Number } -func (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality } -func (xd *Extension) Kind() protoreflect.Kind { return xd.L1.Kind } -func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON } -func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) } -func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) } -func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != protoreflect.Repeated } -func (xd *Extension) HasOptionalKeyword() bool { - return (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional -} -func (xd *Extension) IsPacked() bool { - if xd.L1.Cardinality != protoreflect.Repeated { - return false - } - switch xd.L1.Kind { - case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: - return false - } - return xd.L1.EditionFeatures.IsPacked -} -func (xd *Extension) IsExtension() bool { return true } -func (xd *Extension) IsWeak() bool { return false } -func (xd *Extension) IsLazy() bool { return xd.L1.IsLazy } -func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } -func (xd *Extension) IsMap() bool { return false } -func (xd *Extension) MapKey() protoreflect.FieldDescriptor { return nil } -func (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil } -func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has } -func (xd *Extension) Default() protoreflect.Value { return xd.lazyInit().Default.get(xd) } -func (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor { - return xd.lazyInit().Default.enum -} -func (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor { return nil } -func (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee } -func (xd *Extension) Enum() protoreflect.EnumDescriptor { return xd.lazyInit().Enum } -func (xd *Extension) Message() protoreflect.MessageDescriptor { return xd.lazyInit().Message } -func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) } -func (xd *Extension) ProtoType(protoreflect.FieldDescriptor) {} -func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {} -func (xd *Extension) lazyInit() *ExtensionL2 { - xd.L0.ParentFile.lazyInit() // implicitly initializes L2 - return xd.L2 -} - -type ( - Service struct { - Base - L1 ServiceL1 - L2 *ServiceL2 // protected by fileDesc.once - } - ServiceL1 struct{} - ServiceL2 struct { - Options func() protoreflect.ProtoMessage - Methods Methods - } - - Method struct { - Base - L1 MethodL1 - } - MethodL1 struct { - Options func() protoreflect.ProtoMessage - Input protoreflect.MessageDescriptor - Output protoreflect.MessageDescriptor - IsStreamingClient bool - IsStreamingServer bool - } -) - -func (sd *Service) Options() protoreflect.ProtoMessage { - if f := sd.lazyInit().Options; f != nil { - return f() - } - return descopts.Service -} -func (sd *Service) Methods() protoreflect.MethodDescriptors { return &sd.lazyInit().Methods } -func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) } -func (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {} -func (sd *Service) ProtoInternal(pragma.DoNotImplement) {} -func (sd *Service) lazyInit() *ServiceL2 { - sd.L0.ParentFile.lazyInit() // implicitly initializes L2 - return sd.L2 -} - -func (md *Method) Options() protoreflect.ProtoMessage { - if f := md.L1.Options; f != nil { - return f() - } - return descopts.Method -} -func (md *Method) Input() protoreflect.MessageDescriptor { return md.L1.Input } -func (md *Method) Output() protoreflect.MessageDescriptor { return md.L1.Output } -func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient } -func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer } -func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } -func (md *Method) ProtoType(protoreflect.MethodDescriptor) {} -func (md *Method) ProtoInternal(pragma.DoNotImplement) {} - -// Surrogate files are can be used to create standalone descriptors -// where the syntax is only information derived from the parent file. -var ( - SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} - SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} - SurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}} -) - -type ( - Base struct { - L0 BaseL0 - } - BaseL0 struct { - FullName protoreflect.FullName // must be populated - ParentFile *File // must be populated - Parent protoreflect.Descriptor - Index int - } -) - -func (d *Base) Name() protoreflect.Name { return d.L0.FullName.Name() } -func (d *Base) FullName() protoreflect.FullName { return d.L0.FullName } -func (d *Base) ParentFile() protoreflect.FileDescriptor { - if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 { - return nil // surrogate files are not real parents - } - return d.L0.ParentFile -} -func (d *Base) Parent() protoreflect.Descriptor { return d.L0.Parent } -func (d *Base) Index() int { return d.L0.Index } -func (d *Base) Syntax() protoreflect.Syntax { return d.L0.ParentFile.Syntax() } -func (d *Base) IsPlaceholder() bool { return false } -func (d *Base) ProtoInternal(pragma.DoNotImplement) {} - -type stringName struct { - hasJSON bool - once sync.Once - nameJSON string - nameText string -} - -// InitJSON initializes the name. It is exported for use by other internal packages. -func (s *stringName) InitJSON(name string) { - s.hasJSON = true - s.nameJSON = name -} - -// Returns true if this field is structured like the synthetic field of a proto2 -// group. This allows us to expand our treatment of delimited fields without -// breaking proto2 files that have been upgraded to editions. -func isGroupLike(fd protoreflect.FieldDescriptor) bool { - // Groups are always group types. - if fd.Kind() != protoreflect.GroupKind { - return false - } - - // Group fields are always the lowercase type name. - if strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) { - return false - } - - // Groups could only be defined in the same file they're used. - if fd.Message().ParentFile() != fd.ParentFile() { - return false - } - - // Group messages are always defined in the same scope as the field. File - // level extensions will compare NULL == NULL here, which is why the file - // comparison above is necessary to ensure both come from the same file. - if fd.IsExtension() { - return fd.Parent() == fd.Message().Parent() - } - return fd.ContainingMessage() == fd.Message().Parent() -} - -func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { - s.once.Do(func() { - if fd.IsExtension() { - // For extensions, JSON and text are formatted the same way. - var name string - if messageset.IsMessageSetExtension(fd) { - name = string("[" + fd.FullName().Parent() + "]") - } else { - name = string("[" + fd.FullName() + "]") - } - s.nameJSON = name - s.nameText = name - } else { - // Format the JSON name. - if !s.hasJSON { - s.nameJSON = strs.JSONCamelCase(string(fd.Name())) - } - - // Format the text name. - s.nameText = string(fd.Name()) - if isGroupLike(fd) { - s.nameText = string(fd.Message().Name()) - } - } - }) - return s -} - -func (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON } -func (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText } - -func DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue { - dv := defaultValue{has: v.IsValid(), val: v, enum: ev} - if b, ok := v.Interface().([]byte); ok { - // Store a copy of the default bytes, so that we can detect - // accidental mutations of the original value. - dv.bytes = append([]byte(nil), b...) - } - return dv -} - -func unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue { - var evs protoreflect.EnumValueDescriptors - if k == protoreflect.EnumKind { - // If the enum is declared within the same file, be careful not to - // blindly call the Values method, lest we bind ourselves in a deadlock. - if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf { - evs = &e.L2.Values - } else { - evs = ed.Values() - } - - // If we are unable to resolve the enum dependency, use a placeholder - // enum value since we will not be able to parse the default value. - if ed.IsPlaceholder() && protoreflect.Name(b).IsValid() { - v := protoreflect.ValueOfEnum(0) - ev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b))) - return DefaultValue(v, ev) - } - } - - v, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor) - if err != nil { - panic(err) - } - return DefaultValue(v, ev) -} - -type defaultValue struct { - has bool - val protoreflect.Value - enum protoreflect.EnumValueDescriptor - bytes []byte -} - -func (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value { - // Return the zero value as the default if unpopulated. - if !dv.has { - if fd.Cardinality() == protoreflect.Repeated { - return protoreflect.Value{} - } - switch fd.Kind() { - case protoreflect.BoolKind: - return protoreflect.ValueOfBool(false) - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - return protoreflect.ValueOfInt32(0) - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - return protoreflect.ValueOfInt64(0) - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - return protoreflect.ValueOfUint32(0) - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - return protoreflect.ValueOfUint64(0) - case protoreflect.FloatKind: - return protoreflect.ValueOfFloat32(0) - case protoreflect.DoubleKind: - return protoreflect.ValueOfFloat64(0) - case protoreflect.StringKind: - return protoreflect.ValueOfString("") - case protoreflect.BytesKind: - return protoreflect.ValueOfBytes(nil) - case protoreflect.EnumKind: - if evs := fd.Enum().Values(); evs.Len() > 0 { - return protoreflect.ValueOfEnum(evs.Get(0).Number()) - } - return protoreflect.ValueOfEnum(0) - } - } - - if len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) { - // TODO: Avoid panic if we're running with the race detector - // and instead spawn a goroutine that periodically resets - // this value back to the original to induce a race. - panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName())) - } - return dv.val -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go deleted file mode 100644 index d2f5494..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +++ /dev/null @@ -1,560 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "fmt" - "sync" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// fileRaw is a data struct used when initializing a file descriptor from -// a raw FileDescriptorProto. -type fileRaw struct { - builder Builder - allEnums []Enum - allMessages []Message - allExtensions []Extension - allServices []Service -} - -func newRawFile(db Builder) *File { - fd := &File{fileRaw: fileRaw{builder: db}} - fd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices) - fd.unmarshalSeed(db.RawDescriptor) - - // Extended message targets are eagerly resolved since registration - // needs this information at program init time. - for i := range fd.allExtensions { - xd := &fd.allExtensions[i] - xd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i)) - } - - fd.checkDecls() - return fd -} - -// initDecls pre-allocates slices for the exact number of enums, messages -// (including map entries), extensions, and services declared in the proto file. -// This is done to avoid regrowing the slice, which would change the address -// for any previously seen declaration. -// -// The alloc methods "allocates" slices by pulling from the capacity. -func (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) { - fd.allEnums = make([]Enum, 0, numEnums) - fd.allMessages = make([]Message, 0, numMessages) - fd.allExtensions = make([]Extension, 0, numExtensions) - fd.allServices = make([]Service, 0, numServices) -} - -func (fd *File) allocEnums(n int) []Enum { - total := len(fd.allEnums) - es := fd.allEnums[total : total+n] - fd.allEnums = fd.allEnums[:total+n] - return es -} -func (fd *File) allocMessages(n int) []Message { - total := len(fd.allMessages) - ms := fd.allMessages[total : total+n] - fd.allMessages = fd.allMessages[:total+n] - return ms -} -func (fd *File) allocExtensions(n int) []Extension { - total := len(fd.allExtensions) - xs := fd.allExtensions[total : total+n] - fd.allExtensions = fd.allExtensions[:total+n] - return xs -} -func (fd *File) allocServices(n int) []Service { - total := len(fd.allServices) - xs := fd.allServices[total : total+n] - fd.allServices = fd.allServices[:total+n] - return xs -} - -// checkDecls performs a sanity check that the expected number of expected -// declarations matches the number that were found in the descriptor proto. -func (fd *File) checkDecls() { - switch { - case len(fd.allEnums) != cap(fd.allEnums): - case len(fd.allMessages) != cap(fd.allMessages): - case len(fd.allExtensions) != cap(fd.allExtensions): - case len(fd.allServices) != cap(fd.allServices): - default: - return - } - panic("mismatching cardinality") -} - -func (fd *File) unmarshalSeed(b []byte) { - sb := getBuilder() - defer putBuilder(sb) - - var prevField protoreflect.FieldNumber - var numEnums, numMessages, numExtensions, numServices int - var posEnums, posMessages, posExtensions, posServices int - var options []byte - b0 := b - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FileDescriptorProto_Syntax_field_number: - switch string(v) { - case "proto2": - fd.L1.Syntax = protoreflect.Proto2 - fd.L1.Edition = EditionProto2 - case "proto3": - fd.L1.Syntax = protoreflect.Proto3 - fd.L1.Edition = EditionProto3 - case "editions": - fd.L1.Syntax = protoreflect.Editions - default: - panic("invalid syntax") - } - case genid.FileDescriptorProto_Name_field_number: - fd.L1.Path = sb.MakeString(v) - case genid.FileDescriptorProto_Package_field_number: - fd.L1.Package = protoreflect.FullName(sb.MakeString(v)) - case genid.FileDescriptorProto_Options_field_number: - options = v - case genid.FileDescriptorProto_EnumType_field_number: - if prevField != genid.FileDescriptorProto_EnumType_field_number { - if numEnums > 0 { - panic("non-contiguous repeated field") - } - posEnums = len(b0) - len(b) - n - m - } - numEnums++ - case genid.FileDescriptorProto_MessageType_field_number: - if prevField != genid.FileDescriptorProto_MessageType_field_number { - if numMessages > 0 { - panic("non-contiguous repeated field") - } - posMessages = len(b0) - len(b) - n - m - } - numMessages++ - case genid.FileDescriptorProto_Extension_field_number: - if prevField != genid.FileDescriptorProto_Extension_field_number { - if numExtensions > 0 { - panic("non-contiguous repeated field") - } - posExtensions = len(b0) - len(b) - n - m - } - numExtensions++ - case genid.FileDescriptorProto_Service_field_number: - if prevField != genid.FileDescriptorProto_Service_field_number { - if numServices > 0 { - panic("non-contiguous repeated field") - } - posServices = len(b0) - len(b) - n - m - } - numServices++ - } - prevField = num - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FileDescriptorProto_Edition_field_number: - fd.L1.Edition = Edition(v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - prevField = -1 // ignore known field numbers of unknown wire type - } - } - - // If syntax is missing, it is assumed to be proto2. - if fd.L1.Syntax == 0 { - fd.L1.Syntax = protoreflect.Proto2 - fd.L1.Edition = EditionProto2 - } - - fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) - - // Parse editions features from options if any - if options != nil { - fd.unmarshalSeedOptions(options) - } - - // Must allocate all declarations before parsing each descriptor type - // to ensure we handled all descriptors in "flattened ordering". - if numEnums > 0 { - fd.L1.Enums.List = fd.allocEnums(numEnums) - } - if numMessages > 0 { - fd.L1.Messages.List = fd.allocMessages(numMessages) - } - if numExtensions > 0 { - fd.L1.Extensions.List = fd.allocExtensions(numExtensions) - } - if numServices > 0 { - fd.L1.Services.List = fd.allocServices(numServices) - } - - if numEnums > 0 { - b := b0[posEnums:] - for i := range fd.L1.Enums.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - fd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i) - b = b[n+m:] - } - } - if numMessages > 0 { - b := b0[posMessages:] - for i := range fd.L1.Messages.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - fd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i) - b = b[n+m:] - } - } - if numExtensions > 0 { - b := b0[posExtensions:] - for i := range fd.L1.Extensions.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - fd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i) - b = b[n+m:] - } - } - if numServices > 0 { - b := b0[posServices:] - for i := range fd.L1.Services.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - fd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i) - b = b[n+m:] - } - } -} - -func (fd *File) unmarshalSeedOptions(b []byte) { - for b := b; len(b) > 0; { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FileOptions_Features_field_number: - if fd.Syntax() != protoreflect.Editions { - panic(fmt.Sprintf("invalid descriptor: using edition features in a proto with syntax %s", fd.Syntax())) - } - fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - ed.L0.ParentFile = pf - ed.L0.Parent = pd - ed.L0.Index = i - ed.L1.EditionFeatures = featuresFromParentDesc(ed.Parent()) - - var numValues int - for b := b; len(b) > 0; { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.EnumDescriptorProto_Name_field_number: - ed.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.EnumDescriptorProto_Value_field_number: - numValues++ - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - - // Only construct enum value descriptors for top-level enums since - // they are needed for registration. - if pd != pf { - return - } - ed.L1.eagerValues = true - ed.L2 = new(EnumL2) - ed.L2.Values.List = make([]EnumValue, numValues) - for i := 0; len(b) > 0; { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.EnumDescriptorProto_Value_field_number: - ed.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i) - i++ - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - md.L0.ParentFile = pf - md.L0.Parent = pd - md.L0.Index = i - md.L1.EditionFeatures = featuresFromParentDesc(md.Parent()) - - var prevField protoreflect.FieldNumber - var numEnums, numMessages, numExtensions int - var posEnums, posMessages, posExtensions int - b0 := b - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.DescriptorProto_Name_field_number: - md.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.DescriptorProto_EnumType_field_number: - if prevField != genid.DescriptorProto_EnumType_field_number { - if numEnums > 0 { - panic("non-contiguous repeated field") - } - posEnums = len(b0) - len(b) - n - m - } - numEnums++ - case genid.DescriptorProto_NestedType_field_number: - if prevField != genid.DescriptorProto_NestedType_field_number { - if numMessages > 0 { - panic("non-contiguous repeated field") - } - posMessages = len(b0) - len(b) - n - m - } - numMessages++ - case genid.DescriptorProto_Extension_field_number: - if prevField != genid.DescriptorProto_Extension_field_number { - if numExtensions > 0 { - panic("non-contiguous repeated field") - } - posExtensions = len(b0) - len(b) - n - m - } - numExtensions++ - case genid.DescriptorProto_Options_field_number: - md.unmarshalSeedOptions(v) - } - prevField = num - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - prevField = -1 // ignore known field numbers of unknown wire type - } - } - - // Must allocate all declarations before parsing each descriptor type - // to ensure we handled all descriptors in "flattened ordering". - if numEnums > 0 { - md.L1.Enums.List = pf.allocEnums(numEnums) - } - if numMessages > 0 { - md.L1.Messages.List = pf.allocMessages(numMessages) - } - if numExtensions > 0 { - md.L1.Extensions.List = pf.allocExtensions(numExtensions) - } - - if numEnums > 0 { - b := b0[posEnums:] - for i := range md.L1.Enums.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - md.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i) - b = b[n+m:] - } - } - if numMessages > 0 { - b := b0[posMessages:] - for i := range md.L1.Messages.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - md.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i) - b = b[n+m:] - } - } - if numExtensions > 0 { - b := b0[posExtensions:] - for i := range md.L1.Extensions.List { - _, n := protowire.ConsumeVarint(b) - v, m := protowire.ConsumeBytes(b[n:]) - md.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i) - b = b[n+m:] - } - } -} - -func (md *Message) unmarshalSeedOptions(b []byte) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.MessageOptions_MapEntry_field_number: - md.L1.IsMapEntry = protowire.DecodeBool(v) - case genid.MessageOptions_MessageSetWireFormat_field_number: - md.L1.IsMessageSet = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.MessageOptions_Features_field_number: - md.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - xd.L0.ParentFile = pf - xd.L0.Parent = pd - xd.L0.Index = i - xd.L1.EditionFeatures = featuresFromParentDesc(pd) - - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_Number_field_number: - xd.L1.Number = protoreflect.FieldNumber(v) - case genid.FieldDescriptorProto_Label_field_number: - xd.L1.Cardinality = protoreflect.Cardinality(v) - case genid.FieldDescriptorProto_Type_field_number: - xd.L1.Kind = protoreflect.Kind(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_Name_field_number: - xd.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.FieldDescriptorProto_Extendee_field_number: - xd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v)) - case genid.FieldDescriptorProto_Options_field_number: - xd.unmarshalOptions(v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - - if xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { - xd.L1.Kind = protoreflect.GroupKind - } -} - -func (xd *Extension) unmarshalOptions(b []byte) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldOptions_Packed_field_number: - xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) - case genid.FieldOptions_Lazy_field_number: - xd.L1.IsLazy = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldOptions_Features_field_number: - xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - sd.L0.ParentFile = pf - sd.L0.Parent = pd - sd.L0.Index = i - - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.ServiceDescriptorProto_Name_field_number: - sd.L0.FullName = appendFullName(sb, pd.FullName(), v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -var nameBuilderPool = sync.Pool{ - New: func() any { return new(strs.Builder) }, -} - -func getBuilder() *strs.Builder { - return nameBuilderPool.Get().(*strs.Builder) -} -func putBuilder(b *strs.Builder) { - nameBuilderPool.Put(b) -} - -// makeFullName converts b to a protoreflect.FullName, -// where b must start with a leading dot. -func makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName { - if len(b) == 0 || b[0] != '.' { - panic("name reference must be fully qualified") - } - return protoreflect.FullName(sb.MakeString(b[1:])) -} - -func appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName { - return sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix))) -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go deleted file mode 100644 index 67a51b3..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +++ /dev/null @@ -1,703 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "reflect" - "sync" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/descopts" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" -) - -func (fd *File) lazyRawInit() { - fd.unmarshalFull(fd.builder.RawDescriptor) - fd.resolveMessages() - fd.resolveExtensions() - fd.resolveServices() -} - -func (file *File) resolveMessages() { - var depIdx int32 - for i := range file.allMessages { - md := &file.allMessages[i] - - // Resolve message field dependencies. - for j := range md.L2.Fields.List { - fd := &md.L2.Fields.List[j] - - // Weak fields are resolved upon actual use. - if fd.L1.IsWeak { - continue - } - - // Resolve message field dependency. - switch fd.L1.Kind { - case protoreflect.EnumKind: - fd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx) - depIdx++ - case protoreflect.MessageKind, protoreflect.GroupKind: - fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx) - depIdx++ - if fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) { - // A map field might inherit delimited encoding from a file-wide default feature. - // But maps never actually use delimited encoding. (At least for now...) - fd.L1.Kind = protoreflect.MessageKind - } - } - - // Default is resolved here since it depends on Enum being resolved. - if v := fd.L1.Default.val; v.IsValid() { - fd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum) - } - } - } -} - -func (file *File) resolveExtensions() { - var depIdx int32 - for i := range file.allExtensions { - xd := &file.allExtensions[i] - - // Resolve extension field dependency. - switch xd.L1.Kind { - case protoreflect.EnumKind: - xd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx) - depIdx++ - case protoreflect.MessageKind, protoreflect.GroupKind: - xd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx) - depIdx++ - } - - // Default is resolved here since it depends on Enum being resolved. - if v := xd.L2.Default.val; v.IsValid() { - xd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum) - } - } -} - -func (file *File) resolveServices() { - var depIdx int32 - for i := range file.allServices { - sd := &file.allServices[i] - - // Resolve method dependencies. - for j := range sd.L2.Methods.List { - md := &sd.L2.Methods.List[j] - md.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx) - md.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx) - depIdx++ - } - } -} - -func (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor { - r := file.builder.FileRegistry - if r, ok := r.(resolverByIndex); ok { - if ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil { - return ed2 - } - } - for i := range file.allEnums { - if ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() { - return ed2 - } - } - if d, _ := r.FindDescriptorByName(ed.FullName()); d != nil { - return d.(protoreflect.EnumDescriptor) - } - return ed -} - -func (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor { - r := file.builder.FileRegistry - if r, ok := r.(resolverByIndex); ok { - if md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil { - return md2 - } - } - for i := range file.allMessages { - if md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() { - return md2 - } - } - if d, _ := r.FindDescriptorByName(md.FullName()); d != nil { - return d.(protoreflect.MessageDescriptor) - } - return md -} - -func (fd *File) unmarshalFull(b []byte) { - sb := getBuilder() - defer putBuilder(sb) - - var enumIdx, messageIdx, extensionIdx, serviceIdx int - var rawOptions []byte - fd.L2 = new(FileL2) - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FileDescriptorProto_PublicDependency_field_number: - fd.L2.Imports[v].IsPublic = true - case genid.FileDescriptorProto_WeakDependency_field_number: - fd.L2.Imports[v].IsWeak = true - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FileDescriptorProto_Dependency_field_number: - path := sb.MakeString(v) - imp, _ := fd.builder.FileRegistry.FindFileByPath(path) - if imp == nil { - imp = PlaceholderFile(path) - } - fd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp}) - case genid.FileDescriptorProto_EnumType_field_number: - fd.L1.Enums.List[enumIdx].unmarshalFull(v, sb) - enumIdx++ - case genid.FileDescriptorProto_MessageType_field_number: - fd.L1.Messages.List[messageIdx].unmarshalFull(v, sb) - messageIdx++ - case genid.FileDescriptorProto_Extension_field_number: - fd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) - extensionIdx++ - case genid.FileDescriptorProto_Service_field_number: - fd.L1.Services.List[serviceIdx].unmarshalFull(v, sb) - serviceIdx++ - case genid.FileDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - fd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions) -} - -func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) { - var rawValues [][]byte - var rawOptions []byte - if !ed.L1.eagerValues { - ed.L2 = new(EnumL2) - } - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.EnumDescriptorProto_Value_field_number: - rawValues = append(rawValues, v) - case genid.EnumDescriptorProto_ReservedName_field_number: - ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) - case genid.EnumDescriptorProto_ReservedRange_field_number: - ed.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v)) - case genid.EnumDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - if !ed.L1.eagerValues && len(rawValues) > 0 { - ed.L2.Values.List = make([]EnumValue, len(rawValues)) - for i, b := range rawValues { - ed.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i) - } - } - ed.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions) -} - -func unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.EnumDescriptorProto_EnumReservedRange_Start_field_number: - r[0] = protoreflect.EnumNumber(v) - case genid.EnumDescriptorProto_EnumReservedRange_End_field_number: - r[1] = protoreflect.EnumNumber(v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - return r -} - -func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - vd.L0.ParentFile = pf - vd.L0.Parent = pd - vd.L0.Index = i - - var rawOptions []byte - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.EnumValueDescriptorProto_Number_field_number: - vd.L1.Number = protoreflect.EnumNumber(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.EnumValueDescriptorProto_Name_field_number: - // NOTE: Enum values are in the same scope as the enum parent. - vd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v) - case genid.EnumValueDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - vd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions) -} - -func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) { - var rawFields, rawOneofs [][]byte - var enumIdx, messageIdx, extensionIdx int - var rawOptions []byte - md.L2 = new(MessageL2) - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.DescriptorProto_Field_field_number: - rawFields = append(rawFields, v) - case genid.DescriptorProto_OneofDecl_field_number: - rawOneofs = append(rawOneofs, v) - case genid.DescriptorProto_ReservedName_field_number: - md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) - case genid.DescriptorProto_ReservedRange_field_number: - md.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v)) - case genid.DescriptorProto_ExtensionRange_field_number: - r, rawOptions := unmarshalMessageExtensionRange(v) - opts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions) - md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r) - md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts) - case genid.DescriptorProto_EnumType_field_number: - md.L1.Enums.List[enumIdx].unmarshalFull(v, sb) - enumIdx++ - case genid.DescriptorProto_NestedType_field_number: - md.L1.Messages.List[messageIdx].unmarshalFull(v, sb) - messageIdx++ - case genid.DescriptorProto_Extension_field_number: - md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb) - extensionIdx++ - case genid.DescriptorProto_Options_field_number: - md.unmarshalOptions(v) - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - if len(rawFields) > 0 || len(rawOneofs) > 0 { - md.L2.Fields.List = make([]Field, len(rawFields)) - md.L2.Oneofs.List = make([]Oneof, len(rawOneofs)) - for i, b := range rawFields { - fd := &md.L2.Fields.List[i] - fd.unmarshalFull(b, sb, md.L0.ParentFile, md, i) - if fd.L1.Cardinality == protoreflect.Required { - md.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number) - } - } - for i, b := range rawOneofs { - od := &md.L2.Oneofs.List[i] - od.unmarshalFull(b, sb, md.L0.ParentFile, md, i) - } - } - md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions) -} - -func (md *Message) unmarshalOptions(b []byte) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.MessageOptions_MapEntry_field_number: - md.L1.IsMapEntry = protowire.DecodeBool(v) - case genid.MessageOptions_MessageSetWireFormat_field_number: - md.L1.IsMessageSet = protowire.DecodeBool(v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.DescriptorProto_ReservedRange_Start_field_number: - r[0] = protoreflect.FieldNumber(v) - case genid.DescriptorProto_ReservedRange_End_field_number: - r[1] = protoreflect.FieldNumber(v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - return r -} - -func unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.DescriptorProto_ExtensionRange_Start_field_number: - r[0] = protoreflect.FieldNumber(v) - case genid.DescriptorProto_ExtensionRange_End_field_number: - r[1] = protoreflect.FieldNumber(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.DescriptorProto_ExtensionRange_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - return r, rawOptions -} - -func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - fd.L0.ParentFile = pf - fd.L0.Parent = pd - fd.L0.Index = i - fd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent()) - - var rawTypeName []byte - var rawOptions []byte - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_Number_field_number: - fd.L1.Number = protoreflect.FieldNumber(v) - case genid.FieldDescriptorProto_Label_field_number: - fd.L1.Cardinality = protoreflect.Cardinality(v) - case genid.FieldDescriptorProto_Type_field_number: - fd.L1.Kind = protoreflect.Kind(v) - case genid.FieldDescriptorProto_OneofIndex_field_number: - // In Message.unmarshalFull, we allocate slices for both - // the field and oneof descriptors before unmarshaling either - // of them. This ensures pointers to slice elements are stable. - od := &pd.(*Message).L2.Oneofs.List[v] - od.L1.Fields.List = append(od.L1.Fields.List, fd) - if fd.L1.ContainingOneof != nil { - panic("oneof type already set") - } - fd.L1.ContainingOneof = od - case genid.FieldDescriptorProto_Proto3Optional_field_number: - fd.L1.IsProto3Optional = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_Name_field_number: - fd.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.FieldDescriptorProto_JsonName_field_number: - fd.L1.StringName.InitJSON(sb.MakeString(v)) - case genid.FieldDescriptorProto_DefaultValue_field_number: - fd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages - case genid.FieldDescriptorProto_TypeName_field_number: - rawTypeName = v - case genid.FieldDescriptorProto_Options_field_number: - fd.unmarshalOptions(v) - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - if fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { - fd.L1.Kind = protoreflect.GroupKind - } - if fd.L1.EditionFeatures.IsLegacyRequired { - fd.L1.Cardinality = protoreflect.Required - } - if rawTypeName != nil { - name := makeFullName(sb, rawTypeName) - switch fd.L1.Kind { - case protoreflect.EnumKind: - fd.L1.Enum = PlaceholderEnum(name) - case protoreflect.MessageKind, protoreflect.GroupKind: - fd.L1.Message = PlaceholderMessage(name) - } - } - fd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions) -} - -func (fd *Field) unmarshalOptions(b []byte) { - const FieldOptions_EnforceUTF8 = 13 - - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldOptions_Packed_field_number: - fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) - case genid.FieldOptions_Weak_field_number: - fd.L1.IsWeak = protowire.DecodeBool(v) - case genid.FieldOptions_Lazy_field_number: - fd.L1.IsLazy = protowire.DecodeBool(v) - case FieldOptions_EnforceUTF8: - fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldOptions_Features_field_number: - fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - -func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - od.L0.ParentFile = pf - od.L0.Parent = pd - od.L0.Index = i - - var rawOptions []byte - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.OneofDescriptorProto_Name_field_number: - od.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.OneofDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - od.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions) -} - -func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { - var rawTypeName []byte - var rawOptions []byte - xd.L2 = new(ExtensionL2) - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_Proto3Optional_field_number: - xd.L2.IsProto3Optional = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldDescriptorProto_JsonName_field_number: - xd.L2.StringName.InitJSON(sb.MakeString(v)) - case genid.FieldDescriptorProto_DefaultValue_field_number: - xd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions - case genid.FieldDescriptorProto_TypeName_field_number: - rawTypeName = v - case genid.FieldDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - if rawTypeName != nil { - name := makeFullName(sb, rawTypeName) - switch xd.L1.Kind { - case protoreflect.EnumKind: - xd.L2.Enum = PlaceholderEnum(name) - case protoreflect.MessageKind, protoreflect.GroupKind: - xd.L2.Message = PlaceholderMessage(name) - } - } - xd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions) -} - -func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) { - var rawMethods [][]byte - var rawOptions []byte - sd.L2 = new(ServiceL2) - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.ServiceDescriptorProto_Method_field_number: - rawMethods = append(rawMethods, v) - case genid.ServiceDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - if len(rawMethods) > 0 { - sd.L2.Methods.List = make([]Method, len(rawMethods)) - for i, b := range rawMethods { - sd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i) - } - } - sd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions) -} - -func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { - md.L0.ParentFile = pf - md.L0.Parent = pd - md.L0.Index = i - - var rawOptions []byte - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.MethodDescriptorProto_ClientStreaming_field_number: - md.L1.IsStreamingClient = protowire.DecodeBool(v) - case genid.MethodDescriptorProto_ServerStreaming_field_number: - md.L1.IsStreamingServer = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.MethodDescriptorProto_Name_field_number: - md.L0.FullName = appendFullName(sb, pd.FullName(), v) - case genid.MethodDescriptorProto_InputType_field_number: - md.L1.Input = PlaceholderMessage(makeFullName(sb, v)) - case genid.MethodDescriptorProto_OutputType_field_number: - md.L1.Output = PlaceholderMessage(makeFullName(sb, v)) - case genid.MethodDescriptorProto_Options_field_number: - rawOptions = appendOptions(rawOptions, v) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } - md.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions) -} - -// appendOptions appends src to dst, where the returned slice is never nil. -// This is necessary to distinguish between empty and unpopulated options. -func appendOptions(dst, src []byte) []byte { - if dst == nil { - dst = []byte{} - } - return append(dst, src...) -} - -// optionsUnmarshaler constructs a lazy unmarshal function for an options message. -// -// The type of message to unmarshal to is passed as a pointer since the -// vars in descopts may not yet be populated at the time this function is called. -func (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage { - if b == nil { - return nil - } - var opts protoreflect.ProtoMessage - var once sync.Once - return func() protoreflect.ProtoMessage { - once.Do(func() { - if *p == nil { - panic("Descriptor.Options called without importing the descriptor package") - } - opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage) - if err := (proto.UnmarshalOptions{ - AllowPartial: true, - Resolver: db.TypeResolver, - }).Unmarshal(b, opts); err != nil { - panic(err) - } - }) - return opts - } -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go deleted file mode 100644 index e3b6587..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +++ /dev/null @@ -1,457 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "fmt" - "math" - "sort" - "sync" - - "google.golang.org/protobuf/internal/genid" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/descfmt" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type FileImports []protoreflect.FileImport - -func (p *FileImports) Len() int { return len(*p) } -func (p *FileImports) Get(i int) protoreflect.FileImport { return (*p)[i] } -func (p *FileImports) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *FileImports) ProtoInternal(pragma.DoNotImplement) {} - -type Names struct { - List []protoreflect.Name - once sync.Once - has map[protoreflect.Name]int // protected by once -} - -func (p *Names) Len() int { return len(p.List) } -func (p *Names) Get(i int) protoreflect.Name { return p.List[i] } -func (p *Names) Has(s protoreflect.Name) bool { return p.lazyInit().has[s] > 0 } -func (p *Names) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *Names) ProtoInternal(pragma.DoNotImplement) {} -func (p *Names) lazyInit() *Names { - p.once.Do(func() { - if len(p.List) > 0 { - p.has = make(map[protoreflect.Name]int, len(p.List)) - for _, s := range p.List { - p.has[s] = p.has[s] + 1 - } - } - }) - return p -} - -// CheckValid reports any errors with the set of names with an error message -// that completes the sentence: "ranges is invalid because it has ..." -func (p *Names) CheckValid() error { - for s, n := range p.lazyInit().has { - switch { - case n > 1: - return errors.New("duplicate name: %q", s) - case false && !s.IsValid(): - // NOTE: The C++ implementation does not validate the identifier. - // See https://github.com/protocolbuffers/protobuf/issues/6335. - return errors.New("invalid name: %q", s) - } - } - return nil -} - -type EnumRanges struct { - List [][2]protoreflect.EnumNumber // start inclusive; end inclusive - once sync.Once - sorted [][2]protoreflect.EnumNumber // protected by once -} - -func (p *EnumRanges) Len() int { return len(p.List) } -func (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] } -func (p *EnumRanges) Has(n protoreflect.EnumNumber) bool { - for ls := p.lazyInit().sorted; len(ls) > 0; { - i := len(ls) / 2 - switch r := enumRange(ls[i]); { - case n < r.Start(): - ls = ls[:i] // search lower - case n > r.End(): - ls = ls[i+1:] // search upper - default: - return true - } - } - return false -} -func (p *EnumRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {} -func (p *EnumRanges) lazyInit() *EnumRanges { - p.once.Do(func() { - p.sorted = append(p.sorted, p.List...) - sort.Slice(p.sorted, func(i, j int) bool { - return p.sorted[i][0] < p.sorted[j][0] - }) - }) - return p -} - -// CheckValid reports any errors with the set of names with an error message -// that completes the sentence: "ranges is invalid because it has ..." -func (p *EnumRanges) CheckValid() error { - var rp enumRange - for i, r := range p.lazyInit().sorted { - r := enumRange(r) - switch { - case !(r.Start() <= r.End()): - return errors.New("invalid range: %v", r) - case !(rp.End() < r.Start()) && i > 0: - return errors.New("overlapping ranges: %v with %v", rp, r) - } - rp = r - } - return nil -} - -type enumRange [2]protoreflect.EnumNumber - -func (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive -func (r enumRange) End() protoreflect.EnumNumber { return r[1] } // inclusive -func (r enumRange) String() string { - if r.Start() == r.End() { - return fmt.Sprintf("%d", r.Start()) - } - return fmt.Sprintf("%d to %d", r.Start(), r.End()) -} - -type FieldRanges struct { - List [][2]protoreflect.FieldNumber // start inclusive; end exclusive - once sync.Once - sorted [][2]protoreflect.FieldNumber // protected by once -} - -func (p *FieldRanges) Len() int { return len(p.List) } -func (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] } -func (p *FieldRanges) Has(n protoreflect.FieldNumber) bool { - for ls := p.lazyInit().sorted; len(ls) > 0; { - i := len(ls) / 2 - switch r := fieldRange(ls[i]); { - case n < r.Start(): - ls = ls[:i] // search lower - case n > r.End(): - ls = ls[i+1:] // search upper - default: - return true - } - } - return false -} -func (p *FieldRanges) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {} -func (p *FieldRanges) lazyInit() *FieldRanges { - p.once.Do(func() { - p.sorted = append(p.sorted, p.List...) - sort.Slice(p.sorted, func(i, j int) bool { - return p.sorted[i][0] < p.sorted[j][0] - }) - }) - return p -} - -// CheckValid reports any errors with the set of ranges with an error message -// that completes the sentence: "ranges is invalid because it has ..." -func (p *FieldRanges) CheckValid(isMessageSet bool) error { - var rp fieldRange - for i, r := range p.lazyInit().sorted { - r := fieldRange(r) - switch { - case !isValidFieldNumber(r.Start(), isMessageSet): - return errors.New("invalid field number: %d", r.Start()) - case !isValidFieldNumber(r.End(), isMessageSet): - return errors.New("invalid field number: %d", r.End()) - case !(r.Start() <= r.End()): - return errors.New("invalid range: %v", r) - case !(rp.End() < r.Start()) && i > 0: - return errors.New("overlapping ranges: %v with %v", rp, r) - } - rp = r - } - return nil -} - -// isValidFieldNumber reports whether the field number is valid. -// Unlike the FieldNumber.IsValid method, it allows ranges that cover the -// reserved number range. -func isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool { - return protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet) -} - -// CheckOverlap reports an error if p and q overlap. -func (p *FieldRanges) CheckOverlap(q *FieldRanges) error { - rps := p.lazyInit().sorted - rqs := q.lazyInit().sorted - for pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); { - rp := fieldRange(rps[pi]) - rq := fieldRange(rqs[qi]) - if !(rp.End() < rq.Start() || rq.End() < rp.Start()) { - return errors.New("overlapping ranges: %v with %v", rp, rq) - } - if rp.Start() < rq.Start() { - pi++ - } else { - qi++ - } - } - return nil -} - -type fieldRange [2]protoreflect.FieldNumber - -func (r fieldRange) Start() protoreflect.FieldNumber { return r[0] } // inclusive -func (r fieldRange) End() protoreflect.FieldNumber { return r[1] - 1 } // inclusive -func (r fieldRange) String() string { - if r.Start() == r.End() { - return fmt.Sprintf("%d", r.Start()) - } - return fmt.Sprintf("%d to %d", r.Start(), r.End()) -} - -type FieldNumbers struct { - List []protoreflect.FieldNumber - once sync.Once - has map[protoreflect.FieldNumber]struct{} // protected by once -} - -func (p *FieldNumbers) Len() int { return len(p.List) } -func (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] } -func (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool { - p.once.Do(func() { - if len(p.List) > 0 { - p.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List)) - for _, n := range p.List { - p.has[n] = struct{}{} - } - } - }) - _, ok := p.has[n] - return ok -} -func (p *FieldNumbers) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {} - -type OneofFields struct { - List []protoreflect.FieldDescriptor - once sync.Once - byName map[protoreflect.Name]protoreflect.FieldDescriptor // protected by once - byJSON map[string]protoreflect.FieldDescriptor // protected by once - byText map[string]protoreflect.FieldDescriptor // protected by once - byNum map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once -} - -func (p *OneofFields) Len() int { return len(p.List) } -func (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] } -func (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { - return p.lazyInit().byName[s] -} -func (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor { - return p.lazyInit().byJSON[s] -} -func (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor { - return p.lazyInit().byText[s] -} -func (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { - return p.lazyInit().byNum[n] -} -func (p *OneofFields) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {} - -func (p *OneofFields) lazyInit() *OneofFields { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List)) - p.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List)) - p.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List)) - p.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List)) - for _, f := range p.List { - // Field names and numbers are guaranteed to be unique. - p.byName[f.Name()] = f - p.byJSON[f.JSONName()] = f - p.byText[f.TextName()] = f - p.byNum[f.Number()] = f - } - } - }) - return p -} - -type SourceLocations struct { - // List is a list of SourceLocations. - // The SourceLocation.Next field does not need to be populated - // as it will be lazily populated upon first need. - List []protoreflect.SourceLocation - - // File is the parent file descriptor that these locations are relative to. - // If non-nil, ByDescriptor verifies that the provided descriptor - // is a child of this file descriptor. - File protoreflect.FileDescriptor - - once sync.Once - byPath map[pathKey]int -} - -func (p *SourceLocations) Len() int { return len(p.List) } -func (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] } -func (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation { - if i, ok := p.lazyInit().byPath[k]; ok { - return p.List[i] - } - return protoreflect.SourceLocation{} -} -func (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation { - return p.byKey(newPathKey(path)) -} -func (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation { - if p.File != nil && desc != nil && p.File != desc.ParentFile() { - return protoreflect.SourceLocation{} // mismatching parent files - } - var pathArr [16]int32 - path := pathArr[:0] - for { - switch desc.(type) { - case protoreflect.FileDescriptor: - // Reverse the path since it was constructed in reverse. - for i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 { - path[i], path[j] = path[j], path[i] - } - return p.byKey(newPathKey(path)) - case protoreflect.MessageDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.FileDescriptor: - path = append(path, int32(genid.FileDescriptorProto_MessageType_field_number)) - case protoreflect.MessageDescriptor: - path = append(path, int32(genid.DescriptorProto_NestedType_field_number)) - default: - return protoreflect.SourceLocation{} - } - case protoreflect.FieldDescriptor: - isExtension := desc.(protoreflect.FieldDescriptor).IsExtension() - path = append(path, int32(desc.Index())) - desc = desc.Parent() - if isExtension { - switch desc.(type) { - case protoreflect.FileDescriptor: - path = append(path, int32(genid.FileDescriptorProto_Extension_field_number)) - case protoreflect.MessageDescriptor: - path = append(path, int32(genid.DescriptorProto_Extension_field_number)) - default: - return protoreflect.SourceLocation{} - } - } else { - switch desc.(type) { - case protoreflect.MessageDescriptor: - path = append(path, int32(genid.DescriptorProto_Field_field_number)) - default: - return protoreflect.SourceLocation{} - } - } - case protoreflect.OneofDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.MessageDescriptor: - path = append(path, int32(genid.DescriptorProto_OneofDecl_field_number)) - default: - return protoreflect.SourceLocation{} - } - case protoreflect.EnumDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.FileDescriptor: - path = append(path, int32(genid.FileDescriptorProto_EnumType_field_number)) - case protoreflect.MessageDescriptor: - path = append(path, int32(genid.DescriptorProto_EnumType_field_number)) - default: - return protoreflect.SourceLocation{} - } - case protoreflect.EnumValueDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.EnumDescriptor: - path = append(path, int32(genid.EnumDescriptorProto_Value_field_number)) - default: - return protoreflect.SourceLocation{} - } - case protoreflect.ServiceDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.FileDescriptor: - path = append(path, int32(genid.FileDescriptorProto_Service_field_number)) - default: - return protoreflect.SourceLocation{} - } - case protoreflect.MethodDescriptor: - path = append(path, int32(desc.Index())) - desc = desc.Parent() - switch desc.(type) { - case protoreflect.ServiceDescriptor: - path = append(path, int32(genid.ServiceDescriptorProto_Method_field_number)) - default: - return protoreflect.SourceLocation{} - } - default: - return protoreflect.SourceLocation{} - } - } -} -func (p *SourceLocations) lazyInit() *SourceLocations { - p.once.Do(func() { - if len(p.List) > 0 { - // Collect all the indexes for a given path. - pathIdxs := make(map[pathKey][]int, len(p.List)) - for i, l := range p.List { - k := newPathKey(l.Path) - pathIdxs[k] = append(pathIdxs[k], i) - } - - // Update the next index for all locations. - p.byPath = make(map[pathKey]int, len(p.List)) - for k, idxs := range pathIdxs { - for i := 0; i < len(idxs)-1; i++ { - p.List[idxs[i]].Next = idxs[i+1] - } - p.List[idxs[len(idxs)-1]].Next = 0 - p.byPath[k] = idxs[0] // record the first location for this path - } - } - }) - return p -} -func (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {} - -// pathKey is a comparable representation of protoreflect.SourcePath. -type pathKey struct { - arr [16]uint8 // first n-1 path segments; last element is the length - str string // used if the path does not fit in arr -} - -func newPathKey(p protoreflect.SourcePath) (k pathKey) { - if len(p) < len(k.arr) { - for i, ps := range p { - if ps < 0 || math.MaxUint8 <= ps { - return pathKey{str: p.String()} - } - k.arr[i] = uint8(ps) - } - k.arr[len(k.arr)-1] = uint8(len(p)) - return k - } - return pathKey{str: p.String()} -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go deleted file mode 100644 index f4107c0..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +++ /dev/null @@ -1,367 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package filedesc - -import ( - "fmt" - "strings" - "sync" - - "google.golang.org/protobuf/internal/descfmt" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type Enums struct { - List []Enum - once sync.Once - byName map[protoreflect.Name]*Enum // protected by once -} - -func (p *Enums) Len() int { - return len(p.List) -} -func (p *Enums) Get(i int) protoreflect.EnumDescriptor { - return &p.List[i] -} -func (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Enums) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Enums) ProtoInternal(pragma.DoNotImplement) {} -func (p *Enums) lazyInit() *Enums { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Enum, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} - -type EnumValues struct { - List []EnumValue - once sync.Once - byName map[protoreflect.Name]*EnumValue // protected by once - byNum map[protoreflect.EnumNumber]*EnumValue // protected by once -} - -func (p *EnumValues) Len() int { - return len(p.List) -} -func (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor { - return &p.List[i] -} -func (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { - if d := p.lazyInit().byNum[n]; d != nil { - return d - } - return nil -} -func (p *EnumValues) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {} -func (p *EnumValues) lazyInit() *EnumValues { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*EnumValue, len(p.List)) - p.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - if _, ok := p.byNum[d.Number()]; !ok { - p.byNum[d.Number()] = d - } - } - } - }) - return p -} - -type Messages struct { - List []Message - once sync.Once - byName map[protoreflect.Name]*Message // protected by once -} - -func (p *Messages) Len() int { - return len(p.List) -} -func (p *Messages) Get(i int) protoreflect.MessageDescriptor { - return &p.List[i] -} -func (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Messages) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Messages) ProtoInternal(pragma.DoNotImplement) {} -func (p *Messages) lazyInit() *Messages { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Message, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} - -type Fields struct { - List []Field - once sync.Once - byName map[protoreflect.Name]*Field // protected by once - byJSON map[string]*Field // protected by once - byText map[string]*Field // protected by once - byNum map[protoreflect.FieldNumber]*Field // protected by once -} - -func (p *Fields) Len() int { - return len(p.List) -} -func (p *Fields) Get(i int) protoreflect.FieldDescriptor { - return &p.List[i] -} -func (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor { - if d := p.lazyInit().byJSON[s]; d != nil { - return d - } - return nil -} -func (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor { - if d := p.lazyInit().byText[s]; d != nil { - return d - } - return nil -} -func (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { - if d := p.lazyInit().byNum[n]; d != nil { - return d - } - return nil -} -func (p *Fields) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Fields) ProtoInternal(pragma.DoNotImplement) {} -func (p *Fields) lazyInit() *Fields { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Field, len(p.List)) - p.byJSON = make(map[string]*Field, len(p.List)) - p.byText = make(map[string]*Field, len(p.List)) - p.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - if _, ok := p.byJSON[d.JSONName()]; !ok { - p.byJSON[d.JSONName()] = d - } - if _, ok := p.byText[d.TextName()]; !ok { - p.byText[d.TextName()] = d - } - if isGroupLike(d) { - lowerJSONName := strings.ToLower(d.JSONName()) - if _, ok := p.byJSON[lowerJSONName]; !ok { - p.byJSON[lowerJSONName] = d - } - lowerTextName := strings.ToLower(d.TextName()) - if _, ok := p.byText[lowerTextName]; !ok { - p.byText[lowerTextName] = d - } - } - if _, ok := p.byNum[d.Number()]; !ok { - p.byNum[d.Number()] = d - } - } - } - }) - return p -} - -type Oneofs struct { - List []Oneof - once sync.Once - byName map[protoreflect.Name]*Oneof // protected by once -} - -func (p *Oneofs) Len() int { - return len(p.List) -} -func (p *Oneofs) Get(i int) protoreflect.OneofDescriptor { - return &p.List[i] -} -func (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Oneofs) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {} -func (p *Oneofs) lazyInit() *Oneofs { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Oneof, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} - -type Extensions struct { - List []Extension - once sync.Once - byName map[protoreflect.Name]*Extension // protected by once -} - -func (p *Extensions) Len() int { - return len(p.List) -} -func (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor { - return &p.List[i] -} -func (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Extensions) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Extensions) ProtoInternal(pragma.DoNotImplement) {} -func (p *Extensions) lazyInit() *Extensions { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Extension, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} - -type Services struct { - List []Service - once sync.Once - byName map[protoreflect.Name]*Service // protected by once -} - -func (p *Services) Len() int { - return len(p.List) -} -func (p *Services) Get(i int) protoreflect.ServiceDescriptor { - return &p.List[i] -} -func (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Services) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Services) ProtoInternal(pragma.DoNotImplement) {} -func (p *Services) lazyInit() *Services { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Service, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} - -type Methods struct { - List []Method - once sync.Once - byName map[protoreflect.Name]*Method // protected by once -} - -func (p *Methods) Len() int { - return len(p.List) -} -func (p *Methods) Get(i int) protoreflect.MethodDescriptor { - return &p.List[i] -} -func (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor { - if d := p.lazyInit().byName[s]; d != nil { - return d - } - return nil -} -func (p *Methods) Format(s fmt.State, r rune) { - descfmt.FormatList(s, r, p) -} -func (p *Methods) ProtoInternal(pragma.DoNotImplement) {} -func (p *Methods) lazyInit() *Methods { - p.once.Do(func() { - if len(p.List) > 0 { - p.byName = make(map[protoreflect.Name]*Method, len(p.List)) - for i := range p.List { - d := &p.List[i] - if _, ok := p.byName[d.Name()]; !ok { - p.byName[d.Name()] = d - } - } - } - }) - return p -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go deleted file mode 100644 index fd4d0c8..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "fmt" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/editiondefaults" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/reflect/protoreflect" -) - -var defaultsCache = make(map[Edition]EditionFeatures) -var defaultsKeys = []Edition{} - -func init() { - unmarshalEditionDefaults(editiondefaults.Defaults) - SurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2) - SurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3) - SurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023) -} - -func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures { - for len(b) > 0 { - num, _, n := protowire.ConsumeTag(b) - b = b[n:] - switch num { - case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v) - default: - panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num)) - } - } - return parent -} - -func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FeatureSet_FieldPresence_field_number: - parent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value - parent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value - case genid.FeatureSet_EnumType_field_number: - parent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value - case genid.FeatureSet_RepeatedFieldEncoding_field_number: - parent.IsPacked = v == genid.FeatureSet_PACKED_enum_value - case genid.FeatureSet_Utf8Validation_field_number: - parent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value - case genid.FeatureSet_MessageEncoding_field_number: - parent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value - case genid.FeatureSet_JsonFormat_field_number: - parent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value - default: - panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num)) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FeatureSet_Go_ext_number: - parent = unmarshalGoFeature(v, parent) - } - } - } - - return parent -} - -func featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures { - var parentFS EditionFeatures - switch p := parentDesc.(type) { - case *File: - parentFS = p.L1.EditionFeatures - case *Message: - parentFS = p.L1.EditionFeatures - default: - panic(fmt.Sprintf("unknown parent type %T", parentDesc)) - } - return parentFS -} - -func unmarshalEditionDefault(b []byte) { - var ed Edition - var fs EditionFeatures - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number: - ed = Edition(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number: - fs = unmarshalFeatureSet(v, fs) - case genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number: - fs = unmarshalFeatureSet(v, fs) - } - } - } - defaultsCache[ed] = fs - defaultsKeys = append(defaultsKeys, ed) -} - -func unmarshalEditionDefaults(b []byte) { - for len(b) > 0 { - num, _, n := protowire.ConsumeTag(b) - b = b[n:] - switch num { - case genid.FeatureSetDefaults_Defaults_field_number: - def, m := protowire.ConsumeBytes(b) - b = b[m:] - unmarshalEditionDefault(def) - case genid.FeatureSetDefaults_MinimumEdition_field_number, - genid.FeatureSetDefaults_MaximumEdition_field_number: - // We don't care about the minimum and maximum editions. If the - // edition we are looking for later on is not in the cache we know - // it is outside of the range between minimum and maximum edition. - _, m := protowire.ConsumeVarint(b) - b = b[m:] - default: - panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num)) - } - } -} - -func getFeaturesFor(ed Edition) EditionFeatures { - match := EditionUnknown - for _, key := range defaultsKeys { - if key > ed { - break - } - match = key - } - if match == EditionUnknown { - panic(fmt.Sprintf("unsupported edition: %v", ed)) - } - return defaultsCache[match] -} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go deleted file mode 100644 index bfb3b84..0000000 --- a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package filedesc - -import ( - "google.golang.org/protobuf/internal/descopts" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -var ( - emptyNames = new(Names) - emptyEnumRanges = new(EnumRanges) - emptyFieldRanges = new(FieldRanges) - emptyFieldNumbers = new(FieldNumbers) - emptySourceLocations = new(SourceLocations) - - emptyFiles = new(FileImports) - emptyMessages = new(Messages) - emptyFields = new(Fields) - emptyOneofs = new(Oneofs) - emptyEnums = new(Enums) - emptyEnumValues = new(EnumValues) - emptyExtensions = new(Extensions) - emptyServices = new(Services) -) - -// PlaceholderFile is a placeholder, representing only the file path. -type PlaceholderFile string - -func (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor { return f } -func (f PlaceholderFile) Parent() protoreflect.Descriptor { return nil } -func (f PlaceholderFile) Index() int { return 0 } -func (f PlaceholderFile) Syntax() protoreflect.Syntax { return 0 } -func (f PlaceholderFile) Name() protoreflect.Name { return "" } -func (f PlaceholderFile) FullName() protoreflect.FullName { return "" } -func (f PlaceholderFile) IsPlaceholder() bool { return true } -func (f PlaceholderFile) Options() protoreflect.ProtoMessage { return descopts.File } -func (f PlaceholderFile) Path() string { return string(f) } -func (f PlaceholderFile) Package() protoreflect.FullName { return "" } -func (f PlaceholderFile) Imports() protoreflect.FileImports { return emptyFiles } -func (f PlaceholderFile) Messages() protoreflect.MessageDescriptors { return emptyMessages } -func (f PlaceholderFile) Enums() protoreflect.EnumDescriptors { return emptyEnums } -func (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } -func (f PlaceholderFile) Services() protoreflect.ServiceDescriptors { return emptyServices } -func (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations } -func (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor) { return } -func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement) { return } - -// PlaceholderEnum is a placeholder, representing only the full name. -type PlaceholderEnum protoreflect.FullName - -func (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor { return nil } -func (e PlaceholderEnum) Parent() protoreflect.Descriptor { return nil } -func (e PlaceholderEnum) Index() int { return 0 } -func (e PlaceholderEnum) Syntax() protoreflect.Syntax { return 0 } -func (e PlaceholderEnum) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } -func (e PlaceholderEnum) FullName() protoreflect.FullName { return protoreflect.FullName(e) } -func (e PlaceholderEnum) IsPlaceholder() bool { return true } -func (e PlaceholderEnum) Options() protoreflect.ProtoMessage { return descopts.Enum } -func (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues } -func (e PlaceholderEnum) ReservedNames() protoreflect.Names { return emptyNames } -func (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges { return emptyEnumRanges } -func (e PlaceholderEnum) IsClosed() bool { return false } -func (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor) { return } -func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } - -// PlaceholderEnumValue is a placeholder, representing only the full name. -type PlaceholderEnumValue protoreflect.FullName - -func (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor { return nil } -func (e PlaceholderEnumValue) Parent() protoreflect.Descriptor { return nil } -func (e PlaceholderEnumValue) Index() int { return 0 } -func (e PlaceholderEnumValue) Syntax() protoreflect.Syntax { return 0 } -func (e PlaceholderEnumValue) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } -func (e PlaceholderEnumValue) FullName() protoreflect.FullName { return protoreflect.FullName(e) } -func (e PlaceholderEnumValue) IsPlaceholder() bool { return true } -func (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage { return descopts.EnumValue } -func (e PlaceholderEnumValue) Number() protoreflect.EnumNumber { return 0 } -func (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return } -func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return } - -// PlaceholderMessage is a placeholder, representing only the full name. -type PlaceholderMessage protoreflect.FullName - -func (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor { return nil } -func (m PlaceholderMessage) Parent() protoreflect.Descriptor { return nil } -func (m PlaceholderMessage) Index() int { return 0 } -func (m PlaceholderMessage) Syntax() protoreflect.Syntax { return 0 } -func (m PlaceholderMessage) Name() protoreflect.Name { return protoreflect.FullName(m).Name() } -func (m PlaceholderMessage) FullName() protoreflect.FullName { return protoreflect.FullName(m) } -func (m PlaceholderMessage) IsPlaceholder() bool { return true } -func (m PlaceholderMessage) Options() protoreflect.ProtoMessage { return descopts.Message } -func (m PlaceholderMessage) IsMapEntry() bool { return false } -func (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors { return emptyFields } -func (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors { return emptyOneofs } -func (m PlaceholderMessage) ReservedNames() protoreflect.Names { return emptyNames } -func (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges { return emptyFieldRanges } -func (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers } -func (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges { return emptyFieldRanges } -func (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage { - panic("index out of range") -} -func (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors { return emptyMessages } -func (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors { return emptyEnums } -func (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } -func (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor) { return } -func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/vendor/google.golang.org/protobuf/internal/filetype/build.go b/vendor/google.golang.org/protobuf/internal/filetype/build.go deleted file mode 100644 index ba83fea..0000000 --- a/vendor/google.golang.org/protobuf/internal/filetype/build.go +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package filetype provides functionality for wrapping descriptors -// with Go type information. -package filetype - -import ( - "reflect" - - "google.golang.org/protobuf/internal/descopts" - "google.golang.org/protobuf/internal/filedesc" - pimpl "google.golang.org/protobuf/internal/impl" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// Builder constructs type descriptors from a raw file descriptor -// and associated Go types for each enum and message declaration. -// -// # Flattened Ordering -// -// The protobuf type system represents declarations as a tree. Certain nodes in -// the tree require us to either associate it with a concrete Go type or to -// resolve a dependency, which is information that must be provided separately -// since it cannot be derived from the file descriptor alone. -// -// However, representing a tree as Go literals is difficult to simply do in a -// space and time efficient way. Thus, we store them as a flattened list of -// objects where the serialization order from the tree-based form is important. -// -// The "flattened ordering" is defined as a tree traversal of all enum, message, -// extension, and service declarations using the following algorithm: -// -// def VisitFileDecls(fd): -// for e in fd.Enums: yield e -// for m in fd.Messages: yield m -// for x in fd.Extensions: yield x -// for s in fd.Services: yield s -// for m in fd.Messages: yield from VisitMessageDecls(m) -// -// def VisitMessageDecls(md): -// for e in md.Enums: yield e -// for m in md.Messages: yield m -// for x in md.Extensions: yield x -// for m in md.Messages: yield from VisitMessageDecls(m) -// -// The traversal starts at the root file descriptor and yields each direct -// declaration within each node before traversing into sub-declarations -// that children themselves may have. -type Builder struct { - // File is the underlying file descriptor builder. - File filedesc.Builder - - // GoTypes is a unique set of the Go types for all declarations and - // dependencies. Each type is represented as a zero value of the Go type. - // - // Declarations are Go types generated for enums and messages directly - // declared (not publicly imported) in the proto source file. - // Messages for map entries are accounted for, but represented by nil. - // Enum declarations in "flattened ordering" come first, followed by - // message declarations in "flattened ordering". - // - // Dependencies are Go types for enums or messages referenced by - // message fields (excluding weak fields), for parent extended messages of - // extension fields, for enums or messages referenced by extension fields, - // and for input and output messages referenced by service methods. - // Dependencies must come after declarations, but the ordering of - // dependencies themselves is unspecified. - GoTypes []any - - // DependencyIndexes is an ordered list of indexes into GoTypes for the - // dependencies of messages, extensions, or services. - // - // There are 5 sub-lists in "flattened ordering" concatenated back-to-back: - // 0. Message field dependencies: list of the enum or message type - // referred to by every message field. - // 1. Extension field targets: list of the extended parent message of - // every extension. - // 2. Extension field dependencies: list of the enum or message type - // referred to by every extension field. - // 3. Service method inputs: list of the input message type - // referred to by every service method. - // 4. Service method outputs: list of the output message type - // referred to by every service method. - // - // The offset into DependencyIndexes for the start of each sub-list - // is appended to the end in reverse order. - DependencyIndexes []int32 - - // EnumInfos is a list of enum infos in "flattened ordering". - EnumInfos []pimpl.EnumInfo - - // MessageInfos is a list of message infos in "flattened ordering". - // If provided, the GoType and PBType for each element is populated. - // - // Requirement: len(MessageInfos) == len(Build.Messages) - MessageInfos []pimpl.MessageInfo - - // ExtensionInfos is a list of extension infos in "flattened ordering". - // Each element is initialized and registered with the protoregistry package. - // - // Requirement: len(LegacyExtensions) == len(Build.Extensions) - ExtensionInfos []pimpl.ExtensionInfo - - // TypeRegistry is the registry to register each type descriptor. - // If nil, it uses protoregistry.GlobalTypes. - TypeRegistry interface { - RegisterMessage(protoreflect.MessageType) error - RegisterEnum(protoreflect.EnumType) error - RegisterExtension(protoreflect.ExtensionType) error - } -} - -// Out is the output of the builder. -type Out struct { - File protoreflect.FileDescriptor -} - -func (tb Builder) Build() (out Out) { - // Replace the resolver with one that resolves dependencies by index, - // which is faster and more reliable than relying on the global registry. - if tb.File.FileRegistry == nil { - tb.File.FileRegistry = protoregistry.GlobalFiles - } - tb.File.FileRegistry = &resolverByIndex{ - goTypes: tb.GoTypes, - depIdxs: tb.DependencyIndexes, - fileRegistry: tb.File.FileRegistry, - } - - // Initialize registry if unpopulated. - if tb.TypeRegistry == nil { - tb.TypeRegistry = protoregistry.GlobalTypes - } - - fbOut := tb.File.Build() - out.File = fbOut.File - - // Process enums. - enumGoTypes := tb.GoTypes[:len(fbOut.Enums)] - if len(tb.EnumInfos) != len(fbOut.Enums) { - panic("mismatching enum lengths") - } - if len(fbOut.Enums) > 0 { - for i := range fbOut.Enums { - tb.EnumInfos[i] = pimpl.EnumInfo{ - GoReflectType: reflect.TypeOf(enumGoTypes[i]), - Desc: &fbOut.Enums[i], - } - // Register enum types. - if err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil { - panic(err) - } - } - } - - // Process messages. - messageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)] - if len(tb.MessageInfos) != len(fbOut.Messages) { - panic("mismatching message lengths") - } - if len(fbOut.Messages) > 0 { - for i := range fbOut.Messages { - if messageGoTypes[i] == nil { - continue // skip map entry - } - - tb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i]) - tb.MessageInfos[i].Desc = &fbOut.Messages[i] - - // Register message types. - if err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil { - panic(err) - } - } - - // As a special-case for descriptor.proto, - // locally register concrete message type for the options. - if out.File.Path() == "google/protobuf/descriptor.proto" && out.File.Package() == "google.protobuf" { - for i := range fbOut.Messages { - switch fbOut.Messages[i].Name() { - case "FileOptions": - descopts.File = messageGoTypes[i].(protoreflect.ProtoMessage) - case "EnumOptions": - descopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage) - case "EnumValueOptions": - descopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage) - case "MessageOptions": - descopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage) - case "FieldOptions": - descopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage) - case "OneofOptions": - descopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage) - case "ExtensionRangeOptions": - descopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage) - case "ServiceOptions": - descopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage) - case "MethodOptions": - descopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage) - } - } - } - } - - // Process extensions. - if len(tb.ExtensionInfos) != len(fbOut.Extensions) { - panic("mismatching extension lengths") - } - var depIdx int32 - for i := range fbOut.Extensions { - // For enum and message kinds, determine the referent Go type so - // that we can construct their constructors. - const listExtDeps = 2 - var goType reflect.Type - switch fbOut.Extensions[i].L1.Kind { - case protoreflect.EnumKind: - j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) - goType = reflect.TypeOf(tb.GoTypes[j]) - depIdx++ - case protoreflect.MessageKind, protoreflect.GroupKind: - j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) - goType = reflect.TypeOf(tb.GoTypes[j]) - depIdx++ - default: - goType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind] - } - if fbOut.Extensions[i].IsList() { - goType = reflect.SliceOf(goType) - } - - pimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType) - - // Register extension types. - if err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil { - panic(err) - } - } - - return out -} - -var goTypeForPBKind = map[protoreflect.Kind]reflect.Type{ - protoreflect.BoolKind: reflect.TypeOf(bool(false)), - protoreflect.Int32Kind: reflect.TypeOf(int32(0)), - protoreflect.Sint32Kind: reflect.TypeOf(int32(0)), - protoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)), - protoreflect.Int64Kind: reflect.TypeOf(int64(0)), - protoreflect.Sint64Kind: reflect.TypeOf(int64(0)), - protoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)), - protoreflect.Uint32Kind: reflect.TypeOf(uint32(0)), - protoreflect.Fixed32Kind: reflect.TypeOf(uint32(0)), - protoreflect.Uint64Kind: reflect.TypeOf(uint64(0)), - protoreflect.Fixed64Kind: reflect.TypeOf(uint64(0)), - protoreflect.FloatKind: reflect.TypeOf(float32(0)), - protoreflect.DoubleKind: reflect.TypeOf(float64(0)), - protoreflect.StringKind: reflect.TypeOf(string("")), - protoreflect.BytesKind: reflect.TypeOf([]byte(nil)), -} - -type depIdxs []int32 - -// Get retrieves the jth element of the ith sub-list. -func (x depIdxs) Get(i, j int32) int32 { - return x[x[int32(len(x))-i-1]+j] -} - -type ( - resolverByIndex struct { - goTypes []any - depIdxs depIdxs - fileRegistry - } - fileRegistry interface { - FindFileByPath(string) (protoreflect.FileDescriptor, error) - FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) - RegisterFile(protoreflect.FileDescriptor) error - } -) - -func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor { - if depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) { - return &es[depIdx] - } else { - return pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx]) - } -} - -func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor { - if depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) { - return &ms[depIdx-len(es)] - } else { - return pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx]) - } -} diff --git a/vendor/google.golang.org/protobuf/internal/flags/flags.go b/vendor/google.golang.org/protobuf/internal/flags/flags.go deleted file mode 100644 index 58372dd..0000000 --- a/vendor/google.golang.org/protobuf/internal/flags/flags.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package flags provides a set of flags controlled by build tags. -package flags - -// ProtoLegacy specifies whether to enable support for legacy functionality -// such as MessageSets, weak fields, and various other obscure behavior -// that is necessary to maintain backwards compatibility with proto1 or -// the pre-release variants of proto2 and proto3. -// -// This is disabled by default unless built with the "protolegacy" tag. -// -// WARNING: The compatibility agreement covers nothing provided by this flag. -// As such, functionality may suddenly be removed or changed at our discretion. -const ProtoLegacy = protoLegacy - -// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions. -// -// Lazy extension unmarshaling validates the contents of message-valued -// extension fields at unmarshal time, but defers creating the message -// structure until the extension is first accessed. -const LazyUnmarshalExtensions = ProtoLegacy diff --git a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go b/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go deleted file mode 100644 index bda8e8c..0000000 --- a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !protolegacy -// +build !protolegacy - -package flags - -const protoLegacy = false diff --git a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go b/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go deleted file mode 100644 index 6d8d9bd..0000000 --- a/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build protolegacy -// +build protolegacy - -package flags - -const protoLegacy = true diff --git a/vendor/google.golang.org/protobuf/internal/genid/any_gen.go b/vendor/google.golang.org/protobuf/internal/genid/any_gen.go deleted file mode 100644 index e6f7d47..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_any_proto = "google/protobuf/any.proto" - -// Names for google.protobuf.Any. -const ( - Any_message_name protoreflect.Name = "Any" - Any_message_fullname protoreflect.FullName = "google.protobuf.Any" -) - -// Field names for google.protobuf.Any. -const ( - Any_TypeUrl_field_name protoreflect.Name = "type_url" - Any_Value_field_name protoreflect.Name = "value" - - Any_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Any.type_url" - Any_Value_field_fullname protoreflect.FullName = "google.protobuf.Any.value" -) - -// Field numbers for google.protobuf.Any. -const ( - Any_TypeUrl_field_number protoreflect.FieldNumber = 1 - Any_Value_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/api_gen.go b/vendor/google.golang.org/protobuf/internal/genid/api_gen.go deleted file mode 100644 index df8f918..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_api_proto = "google/protobuf/api.proto" - -// Names for google.protobuf.Api. -const ( - Api_message_name protoreflect.Name = "Api" - Api_message_fullname protoreflect.FullName = "google.protobuf.Api" -) - -// Field names for google.protobuf.Api. -const ( - Api_Name_field_name protoreflect.Name = "name" - Api_Methods_field_name protoreflect.Name = "methods" - Api_Options_field_name protoreflect.Name = "options" - Api_Version_field_name protoreflect.Name = "version" - Api_SourceContext_field_name protoreflect.Name = "source_context" - Api_Mixins_field_name protoreflect.Name = "mixins" - Api_Syntax_field_name protoreflect.Name = "syntax" - - Api_Name_field_fullname protoreflect.FullName = "google.protobuf.Api.name" - Api_Methods_field_fullname protoreflect.FullName = "google.protobuf.Api.methods" - Api_Options_field_fullname protoreflect.FullName = "google.protobuf.Api.options" - Api_Version_field_fullname protoreflect.FullName = "google.protobuf.Api.version" - Api_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Api.source_context" - Api_Mixins_field_fullname protoreflect.FullName = "google.protobuf.Api.mixins" - Api_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Api.syntax" -) - -// Field numbers for google.protobuf.Api. -const ( - Api_Name_field_number protoreflect.FieldNumber = 1 - Api_Methods_field_number protoreflect.FieldNumber = 2 - Api_Options_field_number protoreflect.FieldNumber = 3 - Api_Version_field_number protoreflect.FieldNumber = 4 - Api_SourceContext_field_number protoreflect.FieldNumber = 5 - Api_Mixins_field_number protoreflect.FieldNumber = 6 - Api_Syntax_field_number protoreflect.FieldNumber = 7 -) - -// Names for google.protobuf.Method. -const ( - Method_message_name protoreflect.Name = "Method" - Method_message_fullname protoreflect.FullName = "google.protobuf.Method" -) - -// Field names for google.protobuf.Method. -const ( - Method_Name_field_name protoreflect.Name = "name" - Method_RequestTypeUrl_field_name protoreflect.Name = "request_type_url" - Method_RequestStreaming_field_name protoreflect.Name = "request_streaming" - Method_ResponseTypeUrl_field_name protoreflect.Name = "response_type_url" - Method_ResponseStreaming_field_name protoreflect.Name = "response_streaming" - Method_Options_field_name protoreflect.Name = "options" - Method_Syntax_field_name protoreflect.Name = "syntax" - - Method_Name_field_fullname protoreflect.FullName = "google.protobuf.Method.name" - Method_RequestTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.request_type_url" - Method_RequestStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.request_streaming" - Method_ResponseTypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Method.response_type_url" - Method_ResponseStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.response_streaming" - Method_Options_field_fullname protoreflect.FullName = "google.protobuf.Method.options" - Method_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Method.syntax" -) - -// Field numbers for google.protobuf.Method. -const ( - Method_Name_field_number protoreflect.FieldNumber = 1 - Method_RequestTypeUrl_field_number protoreflect.FieldNumber = 2 - Method_RequestStreaming_field_number protoreflect.FieldNumber = 3 - Method_ResponseTypeUrl_field_number protoreflect.FieldNumber = 4 - Method_ResponseStreaming_field_number protoreflect.FieldNumber = 5 - Method_Options_field_number protoreflect.FieldNumber = 6 - Method_Syntax_field_number protoreflect.FieldNumber = 7 -) - -// Names for google.protobuf.Mixin. -const ( - Mixin_message_name protoreflect.Name = "Mixin" - Mixin_message_fullname protoreflect.FullName = "google.protobuf.Mixin" -) - -// Field names for google.protobuf.Mixin. -const ( - Mixin_Name_field_name protoreflect.Name = "name" - Mixin_Root_field_name protoreflect.Name = "root" - - Mixin_Name_field_fullname protoreflect.FullName = "google.protobuf.Mixin.name" - Mixin_Root_field_fullname protoreflect.FullName = "google.protobuf.Mixin.root" -) - -// Field numbers for google.protobuf.Mixin. -const ( - Mixin_Name_field_number protoreflect.FieldNumber = 1 - Mixin_Root_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go deleted file mode 100644 index f30ab6b..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +++ /dev/null @@ -1,1270 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_descriptor_proto = "google/protobuf/descriptor.proto" - -// Full and short names for google.protobuf.Edition. -const ( - Edition_enum_fullname = "google.protobuf.Edition" - Edition_enum_name = "Edition" -) - -// Enum values for google.protobuf.Edition. -const ( - Edition_EDITION_UNKNOWN_enum_value = 0 - Edition_EDITION_LEGACY_enum_value = 900 - Edition_EDITION_PROTO2_enum_value = 998 - Edition_EDITION_PROTO3_enum_value = 999 - Edition_EDITION_2023_enum_value = 1000 - Edition_EDITION_2024_enum_value = 1001 - Edition_EDITION_1_TEST_ONLY_enum_value = 1 - Edition_EDITION_2_TEST_ONLY_enum_value = 2 - Edition_EDITION_99997_TEST_ONLY_enum_value = 99997 - Edition_EDITION_99998_TEST_ONLY_enum_value = 99998 - Edition_EDITION_99999_TEST_ONLY_enum_value = 99999 - Edition_EDITION_MAX_enum_value = 2147483647 -) - -// Names for google.protobuf.FileDescriptorSet. -const ( - FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet" - FileDescriptorSet_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet" -) - -// Field names for google.protobuf.FileDescriptorSet. -const ( - FileDescriptorSet_File_field_name protoreflect.Name = "file" - - FileDescriptorSet_File_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet.file" -) - -// Field numbers for google.protobuf.FileDescriptorSet. -const ( - FileDescriptorSet_File_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.FileDescriptorProto. -const ( - FileDescriptorProto_message_name protoreflect.Name = "FileDescriptorProto" - FileDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto" -) - -// Field names for google.protobuf.FileDescriptorProto. -const ( - FileDescriptorProto_Name_field_name protoreflect.Name = "name" - FileDescriptorProto_Package_field_name protoreflect.Name = "package" - FileDescriptorProto_Dependency_field_name protoreflect.Name = "dependency" - FileDescriptorProto_PublicDependency_field_name protoreflect.Name = "public_dependency" - FileDescriptorProto_WeakDependency_field_name protoreflect.Name = "weak_dependency" - FileDescriptorProto_MessageType_field_name protoreflect.Name = "message_type" - FileDescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" - FileDescriptorProto_Service_field_name protoreflect.Name = "service" - FileDescriptorProto_Extension_field_name protoreflect.Name = "extension" - FileDescriptorProto_Options_field_name protoreflect.Name = "options" - FileDescriptorProto_SourceCodeInfo_field_name protoreflect.Name = "source_code_info" - FileDescriptorProto_Syntax_field_name protoreflect.Name = "syntax" - FileDescriptorProto_Edition_field_name protoreflect.Name = "edition" - - FileDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.name" - FileDescriptorProto_Package_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.package" - FileDescriptorProto_Dependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.dependency" - FileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.public_dependency" - FileDescriptorProto_WeakDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.weak_dependency" - FileDescriptorProto_MessageType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.message_type" - FileDescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.enum_type" - FileDescriptorProto_Service_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.service" - FileDescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.extension" - FileDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.options" - FileDescriptorProto_SourceCodeInfo_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.source_code_info" - FileDescriptorProto_Syntax_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.syntax" - FileDescriptorProto_Edition_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.edition" -) - -// Field numbers for google.protobuf.FileDescriptorProto. -const ( - FileDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - FileDescriptorProto_Package_field_number protoreflect.FieldNumber = 2 - FileDescriptorProto_Dependency_field_number protoreflect.FieldNumber = 3 - FileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10 - FileDescriptorProto_WeakDependency_field_number protoreflect.FieldNumber = 11 - FileDescriptorProto_MessageType_field_number protoreflect.FieldNumber = 4 - FileDescriptorProto_EnumType_field_number protoreflect.FieldNumber = 5 - FileDescriptorProto_Service_field_number protoreflect.FieldNumber = 6 - FileDescriptorProto_Extension_field_number protoreflect.FieldNumber = 7 - FileDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 - FileDescriptorProto_SourceCodeInfo_field_number protoreflect.FieldNumber = 9 - FileDescriptorProto_Syntax_field_number protoreflect.FieldNumber = 12 - FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 14 -) - -// Names for google.protobuf.DescriptorProto. -const ( - DescriptorProto_message_name protoreflect.Name = "DescriptorProto" - DescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto" -) - -// Field names for google.protobuf.DescriptorProto. -const ( - DescriptorProto_Name_field_name protoreflect.Name = "name" - DescriptorProto_Field_field_name protoreflect.Name = "field" - DescriptorProto_Extension_field_name protoreflect.Name = "extension" - DescriptorProto_NestedType_field_name protoreflect.Name = "nested_type" - DescriptorProto_EnumType_field_name protoreflect.Name = "enum_type" - DescriptorProto_ExtensionRange_field_name protoreflect.Name = "extension_range" - DescriptorProto_OneofDecl_field_name protoreflect.Name = "oneof_decl" - DescriptorProto_Options_field_name protoreflect.Name = "options" - DescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" - DescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" - - DescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.name" - DescriptorProto_Field_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.field" - DescriptorProto_Extension_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension" - DescriptorProto_NestedType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.nested_type" - DescriptorProto_EnumType_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.enum_type" - DescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension_range" - DescriptorProto_OneofDecl_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.oneof_decl" - DescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.options" - DescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_range" - DescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_name" -) - -// Field numbers for google.protobuf.DescriptorProto. -const ( - DescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - DescriptorProto_Field_field_number protoreflect.FieldNumber = 2 - DescriptorProto_Extension_field_number protoreflect.FieldNumber = 6 - DescriptorProto_NestedType_field_number protoreflect.FieldNumber = 3 - DescriptorProto_EnumType_field_number protoreflect.FieldNumber = 4 - DescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5 - DescriptorProto_OneofDecl_field_number protoreflect.FieldNumber = 8 - DescriptorProto_Options_field_number protoreflect.FieldNumber = 7 - DescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 9 - DescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 10 -) - -// Names for google.protobuf.DescriptorProto.ExtensionRange. -const ( - DescriptorProto_ExtensionRange_message_name protoreflect.Name = "ExtensionRange" - DescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange" -) - -// Field names for google.protobuf.DescriptorProto.ExtensionRange. -const ( - DescriptorProto_ExtensionRange_Start_field_name protoreflect.Name = "start" - DescriptorProto_ExtensionRange_End_field_name protoreflect.Name = "end" - DescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = "options" - - DescriptorProto_ExtensionRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.start" - DescriptorProto_ExtensionRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.end" - DescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.options" -) - -// Field numbers for google.protobuf.DescriptorProto.ExtensionRange. -const ( - DescriptorProto_ExtensionRange_Start_field_number protoreflect.FieldNumber = 1 - DescriptorProto_ExtensionRange_End_field_number protoreflect.FieldNumber = 2 - DescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3 -) - -// Names for google.protobuf.DescriptorProto.ReservedRange. -const ( - DescriptorProto_ReservedRange_message_name protoreflect.Name = "ReservedRange" - DescriptorProto_ReservedRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange" -) - -// Field names for google.protobuf.DescriptorProto.ReservedRange. -const ( - DescriptorProto_ReservedRange_Start_field_name protoreflect.Name = "start" - DescriptorProto_ReservedRange_End_field_name protoreflect.Name = "end" - - DescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.start" - DescriptorProto_ReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.end" -) - -// Field numbers for google.protobuf.DescriptorProto.ReservedRange. -const ( - DescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1 - DescriptorProto_ReservedRange_End_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.ExtensionRangeOptions. -const ( - ExtensionRangeOptions_message_name protoreflect.Name = "ExtensionRangeOptions" - ExtensionRangeOptions_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions" -) - -// Field names for google.protobuf.ExtensionRangeOptions. -const ( - ExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - ExtensionRangeOptions_Declaration_field_name protoreflect.Name = "declaration" - ExtensionRangeOptions_Features_field_name protoreflect.Name = "features" - ExtensionRangeOptions_Verification_field_name protoreflect.Name = "verification" - - ExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.uninterpreted_option" - ExtensionRangeOptions_Declaration_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.declaration" - ExtensionRangeOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.features" - ExtensionRangeOptions_Verification_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.verification" -) - -// Field numbers for google.protobuf.ExtensionRangeOptions. -const ( - ExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 - ExtensionRangeOptions_Declaration_field_number protoreflect.FieldNumber = 2 - ExtensionRangeOptions_Features_field_number protoreflect.FieldNumber = 50 - ExtensionRangeOptions_Verification_field_number protoreflect.FieldNumber = 3 -) - -// Full and short names for google.protobuf.ExtensionRangeOptions.VerificationState. -const ( - ExtensionRangeOptions_VerificationState_enum_fullname = "google.protobuf.ExtensionRangeOptions.VerificationState" - ExtensionRangeOptions_VerificationState_enum_name = "VerificationState" -) - -// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState. -const ( - ExtensionRangeOptions_DECLARATION_enum_value = 0 - ExtensionRangeOptions_UNVERIFIED_enum_value = 1 -) - -// Names for google.protobuf.ExtensionRangeOptions.Declaration. -const ( - ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration" - ExtensionRangeOptions_Declaration_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration" -) - -// Field names for google.protobuf.ExtensionRangeOptions.Declaration. -const ( - ExtensionRangeOptions_Declaration_Number_field_name protoreflect.Name = "number" - ExtensionRangeOptions_Declaration_FullName_field_name protoreflect.Name = "full_name" - ExtensionRangeOptions_Declaration_Type_field_name protoreflect.Name = "type" - ExtensionRangeOptions_Declaration_Reserved_field_name protoreflect.Name = "reserved" - ExtensionRangeOptions_Declaration_Repeated_field_name protoreflect.Name = "repeated" - - ExtensionRangeOptions_Declaration_Number_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.number" - ExtensionRangeOptions_Declaration_FullName_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.full_name" - ExtensionRangeOptions_Declaration_Type_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.type" - ExtensionRangeOptions_Declaration_Reserved_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.reserved" - ExtensionRangeOptions_Declaration_Repeated_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.Declaration.repeated" -) - -// Field numbers for google.protobuf.ExtensionRangeOptions.Declaration. -const ( - ExtensionRangeOptions_Declaration_Number_field_number protoreflect.FieldNumber = 1 - ExtensionRangeOptions_Declaration_FullName_field_number protoreflect.FieldNumber = 2 - ExtensionRangeOptions_Declaration_Type_field_number protoreflect.FieldNumber = 3 - ExtensionRangeOptions_Declaration_Reserved_field_number protoreflect.FieldNumber = 5 - ExtensionRangeOptions_Declaration_Repeated_field_number protoreflect.FieldNumber = 6 -) - -// Names for google.protobuf.FieldDescriptorProto. -const ( - FieldDescriptorProto_message_name protoreflect.Name = "FieldDescriptorProto" - FieldDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto" -) - -// Field names for google.protobuf.FieldDescriptorProto. -const ( - FieldDescriptorProto_Name_field_name protoreflect.Name = "name" - FieldDescriptorProto_Number_field_name protoreflect.Name = "number" - FieldDescriptorProto_Label_field_name protoreflect.Name = "label" - FieldDescriptorProto_Type_field_name protoreflect.Name = "type" - FieldDescriptorProto_TypeName_field_name protoreflect.Name = "type_name" - FieldDescriptorProto_Extendee_field_name protoreflect.Name = "extendee" - FieldDescriptorProto_DefaultValue_field_name protoreflect.Name = "default_value" - FieldDescriptorProto_OneofIndex_field_name protoreflect.Name = "oneof_index" - FieldDescriptorProto_JsonName_field_name protoreflect.Name = "json_name" - FieldDescriptorProto_Options_field_name protoreflect.Name = "options" - FieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = "proto3_optional" - - FieldDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.name" - FieldDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.number" - FieldDescriptorProto_Label_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.label" - FieldDescriptorProto_Type_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type" - FieldDescriptorProto_TypeName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type_name" - FieldDescriptorProto_Extendee_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.extendee" - FieldDescriptorProto_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.default_value" - FieldDescriptorProto_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.oneof_index" - FieldDescriptorProto_JsonName_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.json_name" - FieldDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.options" - FieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.proto3_optional" -) - -// Field numbers for google.protobuf.FieldDescriptorProto. -const ( - FieldDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - FieldDescriptorProto_Number_field_number protoreflect.FieldNumber = 3 - FieldDescriptorProto_Label_field_number protoreflect.FieldNumber = 4 - FieldDescriptorProto_Type_field_number protoreflect.FieldNumber = 5 - FieldDescriptorProto_TypeName_field_number protoreflect.FieldNumber = 6 - FieldDescriptorProto_Extendee_field_number protoreflect.FieldNumber = 2 - FieldDescriptorProto_DefaultValue_field_number protoreflect.FieldNumber = 7 - FieldDescriptorProto_OneofIndex_field_number protoreflect.FieldNumber = 9 - FieldDescriptorProto_JsonName_field_number protoreflect.FieldNumber = 10 - FieldDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 - FieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17 -) - -// Full and short names for google.protobuf.FieldDescriptorProto.Type. -const ( - FieldDescriptorProto_Type_enum_fullname = "google.protobuf.FieldDescriptorProto.Type" - FieldDescriptorProto_Type_enum_name = "Type" -) - -// Enum values for google.protobuf.FieldDescriptorProto.Type. -const ( - FieldDescriptorProto_TYPE_DOUBLE_enum_value = 1 - FieldDescriptorProto_TYPE_FLOAT_enum_value = 2 - FieldDescriptorProto_TYPE_INT64_enum_value = 3 - FieldDescriptorProto_TYPE_UINT64_enum_value = 4 - FieldDescriptorProto_TYPE_INT32_enum_value = 5 - FieldDescriptorProto_TYPE_FIXED64_enum_value = 6 - FieldDescriptorProto_TYPE_FIXED32_enum_value = 7 - FieldDescriptorProto_TYPE_BOOL_enum_value = 8 - FieldDescriptorProto_TYPE_STRING_enum_value = 9 - FieldDescriptorProto_TYPE_GROUP_enum_value = 10 - FieldDescriptorProto_TYPE_MESSAGE_enum_value = 11 - FieldDescriptorProto_TYPE_BYTES_enum_value = 12 - FieldDescriptorProto_TYPE_UINT32_enum_value = 13 - FieldDescriptorProto_TYPE_ENUM_enum_value = 14 - FieldDescriptorProto_TYPE_SFIXED32_enum_value = 15 - FieldDescriptorProto_TYPE_SFIXED64_enum_value = 16 - FieldDescriptorProto_TYPE_SINT32_enum_value = 17 - FieldDescriptorProto_TYPE_SINT64_enum_value = 18 -) - -// Full and short names for google.protobuf.FieldDescriptorProto.Label. -const ( - FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label" - FieldDescriptorProto_Label_enum_name = "Label" -) - -// Enum values for google.protobuf.FieldDescriptorProto.Label. -const ( - FieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1 - FieldDescriptorProto_LABEL_REPEATED_enum_value = 3 - FieldDescriptorProto_LABEL_REQUIRED_enum_value = 2 -) - -// Names for google.protobuf.OneofDescriptorProto. -const ( - OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto" - OneofDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto" -) - -// Field names for google.protobuf.OneofDescriptorProto. -const ( - OneofDescriptorProto_Name_field_name protoreflect.Name = "name" - OneofDescriptorProto_Options_field_name protoreflect.Name = "options" - - OneofDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.name" - OneofDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.options" -) - -// Field numbers for google.protobuf.OneofDescriptorProto. -const ( - OneofDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - OneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.EnumDescriptorProto. -const ( - EnumDescriptorProto_message_name protoreflect.Name = "EnumDescriptorProto" - EnumDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto" -) - -// Field names for google.protobuf.EnumDescriptorProto. -const ( - EnumDescriptorProto_Name_field_name protoreflect.Name = "name" - EnumDescriptorProto_Value_field_name protoreflect.Name = "value" - EnumDescriptorProto_Options_field_name protoreflect.Name = "options" - EnumDescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range" - EnumDescriptorProto_ReservedName_field_name protoreflect.Name = "reserved_name" - - EnumDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.name" - EnumDescriptorProto_Value_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.value" - EnumDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.options" - EnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_range" - EnumDescriptorProto_ReservedName_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_name" -) - -// Field numbers for google.protobuf.EnumDescriptorProto. -const ( - EnumDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - EnumDescriptorProto_Value_field_number protoreflect.FieldNumber = 2 - EnumDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 - EnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4 - EnumDescriptorProto_ReservedName_field_number protoreflect.FieldNumber = 5 -) - -// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange. -const ( - EnumDescriptorProto_EnumReservedRange_message_name protoreflect.Name = "EnumReservedRange" - EnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange" -) - -// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange. -const ( - EnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = "start" - EnumDescriptorProto_EnumReservedRange_End_field_name protoreflect.Name = "end" - - EnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.start" - EnumDescriptorProto_EnumReservedRange_End_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.end" -) - -// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange. -const ( - EnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1 - EnumDescriptorProto_EnumReservedRange_End_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.EnumValueDescriptorProto. -const ( - EnumValueDescriptorProto_message_name protoreflect.Name = "EnumValueDescriptorProto" - EnumValueDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto" -) - -// Field names for google.protobuf.EnumValueDescriptorProto. -const ( - EnumValueDescriptorProto_Name_field_name protoreflect.Name = "name" - EnumValueDescriptorProto_Number_field_name protoreflect.Name = "number" - EnumValueDescriptorProto_Options_field_name protoreflect.Name = "options" - - EnumValueDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.name" - EnumValueDescriptorProto_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.number" - EnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.options" -) - -// Field numbers for google.protobuf.EnumValueDescriptorProto. -const ( - EnumValueDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - EnumValueDescriptorProto_Number_field_number protoreflect.FieldNumber = 2 - EnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 -) - -// Names for google.protobuf.ServiceDescriptorProto. -const ( - ServiceDescriptorProto_message_name protoreflect.Name = "ServiceDescriptorProto" - ServiceDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto" -) - -// Field names for google.protobuf.ServiceDescriptorProto. -const ( - ServiceDescriptorProto_Name_field_name protoreflect.Name = "name" - ServiceDescriptorProto_Method_field_name protoreflect.Name = "method" - ServiceDescriptorProto_Options_field_name protoreflect.Name = "options" - - ServiceDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.name" - ServiceDescriptorProto_Method_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.method" - ServiceDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.options" -) - -// Field numbers for google.protobuf.ServiceDescriptorProto. -const ( - ServiceDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - ServiceDescriptorProto_Method_field_number protoreflect.FieldNumber = 2 - ServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3 -) - -// Names for google.protobuf.MethodDescriptorProto. -const ( - MethodDescriptorProto_message_name protoreflect.Name = "MethodDescriptorProto" - MethodDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto" -) - -// Field names for google.protobuf.MethodDescriptorProto. -const ( - MethodDescriptorProto_Name_field_name protoreflect.Name = "name" - MethodDescriptorProto_InputType_field_name protoreflect.Name = "input_type" - MethodDescriptorProto_OutputType_field_name protoreflect.Name = "output_type" - MethodDescriptorProto_Options_field_name protoreflect.Name = "options" - MethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = "client_streaming" - MethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = "server_streaming" - - MethodDescriptorProto_Name_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.name" - MethodDescriptorProto_InputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.input_type" - MethodDescriptorProto_OutputType_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.output_type" - MethodDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.options" - MethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.client_streaming" - MethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.server_streaming" -) - -// Field numbers for google.protobuf.MethodDescriptorProto. -const ( - MethodDescriptorProto_Name_field_number protoreflect.FieldNumber = 1 - MethodDescriptorProto_InputType_field_number protoreflect.FieldNumber = 2 - MethodDescriptorProto_OutputType_field_number protoreflect.FieldNumber = 3 - MethodDescriptorProto_Options_field_number protoreflect.FieldNumber = 4 - MethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5 - MethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6 -) - -// Names for google.protobuf.FileOptions. -const ( - FileOptions_message_name protoreflect.Name = "FileOptions" - FileOptions_message_fullname protoreflect.FullName = "google.protobuf.FileOptions" -) - -// Field names for google.protobuf.FileOptions. -const ( - FileOptions_JavaPackage_field_name protoreflect.Name = "java_package" - FileOptions_JavaOuterClassname_field_name protoreflect.Name = "java_outer_classname" - FileOptions_JavaMultipleFiles_field_name protoreflect.Name = "java_multiple_files" - FileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = "java_generate_equals_and_hash" - FileOptions_JavaStringCheckUtf8_field_name protoreflect.Name = "java_string_check_utf8" - FileOptions_OptimizeFor_field_name protoreflect.Name = "optimize_for" - FileOptions_GoPackage_field_name protoreflect.Name = "go_package" - FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services" - FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services" - FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services" - FileOptions_Deprecated_field_name protoreflect.Name = "deprecated" - FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas" - FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix" - FileOptions_CsharpNamespace_field_name protoreflect.Name = "csharp_namespace" - FileOptions_SwiftPrefix_field_name protoreflect.Name = "swift_prefix" - FileOptions_PhpClassPrefix_field_name protoreflect.Name = "php_class_prefix" - FileOptions_PhpNamespace_field_name protoreflect.Name = "php_namespace" - FileOptions_PhpMetadataNamespace_field_name protoreflect.Name = "php_metadata_namespace" - FileOptions_RubyPackage_field_name protoreflect.Name = "ruby_package" - FileOptions_Features_field_name protoreflect.Name = "features" - FileOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - FileOptions_JavaPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_package" - FileOptions_JavaOuterClassname_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_outer_classname" - FileOptions_JavaMultipleFiles_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_multiple_files" - FileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generate_equals_and_hash" - FileOptions_JavaStringCheckUtf8_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_string_check_utf8" - FileOptions_OptimizeFor_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.optimize_for" - FileOptions_GoPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.go_package" - FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services" - FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services" - FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services" - FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated" - FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas" - FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix" - FileOptions_CsharpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.csharp_namespace" - FileOptions_SwiftPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.swift_prefix" - FileOptions_PhpClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_class_prefix" - FileOptions_PhpNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_namespace" - FileOptions_PhpMetadataNamespace_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_metadata_namespace" - FileOptions_RubyPackage_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.ruby_package" - FileOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.features" - FileOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.FileOptions. -const ( - FileOptions_JavaPackage_field_number protoreflect.FieldNumber = 1 - FileOptions_JavaOuterClassname_field_number protoreflect.FieldNumber = 8 - FileOptions_JavaMultipleFiles_field_number protoreflect.FieldNumber = 10 - FileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20 - FileOptions_JavaStringCheckUtf8_field_number protoreflect.FieldNumber = 27 - FileOptions_OptimizeFor_field_number protoreflect.FieldNumber = 9 - FileOptions_GoPackage_field_number protoreflect.FieldNumber = 11 - FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16 - FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17 - FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18 - FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23 - FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31 - FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36 - FileOptions_CsharpNamespace_field_number protoreflect.FieldNumber = 37 - FileOptions_SwiftPrefix_field_number protoreflect.FieldNumber = 39 - FileOptions_PhpClassPrefix_field_number protoreflect.FieldNumber = 40 - FileOptions_PhpNamespace_field_number protoreflect.FieldNumber = 41 - FileOptions_PhpMetadataNamespace_field_number protoreflect.FieldNumber = 44 - FileOptions_RubyPackage_field_number protoreflect.FieldNumber = 45 - FileOptions_Features_field_number protoreflect.FieldNumber = 50 - FileOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Full and short names for google.protobuf.FileOptions.OptimizeMode. -const ( - FileOptions_OptimizeMode_enum_fullname = "google.protobuf.FileOptions.OptimizeMode" - FileOptions_OptimizeMode_enum_name = "OptimizeMode" -) - -// Enum values for google.protobuf.FileOptions.OptimizeMode. -const ( - FileOptions_SPEED_enum_value = 1 - FileOptions_CODE_SIZE_enum_value = 2 - FileOptions_LITE_RUNTIME_enum_value = 3 -) - -// Names for google.protobuf.MessageOptions. -const ( - MessageOptions_message_name protoreflect.Name = "MessageOptions" - MessageOptions_message_fullname protoreflect.FullName = "google.protobuf.MessageOptions" -) - -// Field names for google.protobuf.MessageOptions. -const ( - MessageOptions_MessageSetWireFormat_field_name protoreflect.Name = "message_set_wire_format" - MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor" - MessageOptions_Deprecated_field_name protoreflect.Name = "deprecated" - MessageOptions_MapEntry_field_name protoreflect.Name = "map_entry" - MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" - MessageOptions_Features_field_name protoreflect.Name = "features" - MessageOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - MessageOptions_MessageSetWireFormat_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format" - MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor" - MessageOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated" - MessageOptions_MapEntry_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.map_entry" - MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.deprecated_legacy_json_field_conflicts" - MessageOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.features" - MessageOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.MessageOptions. -const ( - MessageOptions_MessageSetWireFormat_field_number protoreflect.FieldNumber = 1 - MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2 - MessageOptions_Deprecated_field_number protoreflect.FieldNumber = 3 - MessageOptions_MapEntry_field_number protoreflect.FieldNumber = 7 - MessageOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 11 - MessageOptions_Features_field_number protoreflect.FieldNumber = 12 - MessageOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Names for google.protobuf.FieldOptions. -const ( - FieldOptions_message_name protoreflect.Name = "FieldOptions" - FieldOptions_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions" -) - -// Field names for google.protobuf.FieldOptions. -const ( - FieldOptions_Ctype_field_name protoreflect.Name = "ctype" - FieldOptions_Packed_field_name protoreflect.Name = "packed" - FieldOptions_Jstype_field_name protoreflect.Name = "jstype" - FieldOptions_Lazy_field_name protoreflect.Name = "lazy" - FieldOptions_UnverifiedLazy_field_name protoreflect.Name = "unverified_lazy" - FieldOptions_Deprecated_field_name protoreflect.Name = "deprecated" - FieldOptions_Weak_field_name protoreflect.Name = "weak" - FieldOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" - FieldOptions_Retention_field_name protoreflect.Name = "retention" - FieldOptions_Targets_field_name protoreflect.Name = "targets" - FieldOptions_EditionDefaults_field_name protoreflect.Name = "edition_defaults" - FieldOptions_Features_field_name protoreflect.Name = "features" - FieldOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" - FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - FieldOptions_Ctype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.ctype" - FieldOptions_Packed_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.packed" - FieldOptions_Jstype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.jstype" - FieldOptions_Lazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.lazy" - FieldOptions_UnverifiedLazy_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.unverified_lazy" - FieldOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.deprecated" - FieldOptions_Weak_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.weak" - FieldOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.debug_redact" - FieldOptions_Retention_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.retention" - FieldOptions_Targets_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.targets" - FieldOptions_EditionDefaults_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.edition_defaults" - FieldOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.features" - FieldOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.feature_support" - FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.FieldOptions. -const ( - FieldOptions_Ctype_field_number protoreflect.FieldNumber = 1 - FieldOptions_Packed_field_number protoreflect.FieldNumber = 2 - FieldOptions_Jstype_field_number protoreflect.FieldNumber = 6 - FieldOptions_Lazy_field_number protoreflect.FieldNumber = 5 - FieldOptions_UnverifiedLazy_field_number protoreflect.FieldNumber = 15 - FieldOptions_Deprecated_field_number protoreflect.FieldNumber = 3 - FieldOptions_Weak_field_number protoreflect.FieldNumber = 10 - FieldOptions_DebugRedact_field_number protoreflect.FieldNumber = 16 - FieldOptions_Retention_field_number protoreflect.FieldNumber = 17 - FieldOptions_Targets_field_number protoreflect.FieldNumber = 19 - FieldOptions_EditionDefaults_field_number protoreflect.FieldNumber = 20 - FieldOptions_Features_field_number protoreflect.FieldNumber = 21 - FieldOptions_FeatureSupport_field_number protoreflect.FieldNumber = 22 - FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Full and short names for google.protobuf.FieldOptions.CType. -const ( - FieldOptions_CType_enum_fullname = "google.protobuf.FieldOptions.CType" - FieldOptions_CType_enum_name = "CType" -) - -// Enum values for google.protobuf.FieldOptions.CType. -const ( - FieldOptions_STRING_enum_value = 0 - FieldOptions_CORD_enum_value = 1 - FieldOptions_STRING_PIECE_enum_value = 2 -) - -// Full and short names for google.protobuf.FieldOptions.JSType. -const ( - FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType" - FieldOptions_JSType_enum_name = "JSType" -) - -// Enum values for google.protobuf.FieldOptions.JSType. -const ( - FieldOptions_JS_NORMAL_enum_value = 0 - FieldOptions_JS_STRING_enum_value = 1 - FieldOptions_JS_NUMBER_enum_value = 2 -) - -// Full and short names for google.protobuf.FieldOptions.OptionRetention. -const ( - FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention" - FieldOptions_OptionRetention_enum_name = "OptionRetention" -) - -// Enum values for google.protobuf.FieldOptions.OptionRetention. -const ( - FieldOptions_RETENTION_UNKNOWN_enum_value = 0 - FieldOptions_RETENTION_RUNTIME_enum_value = 1 - FieldOptions_RETENTION_SOURCE_enum_value = 2 -) - -// Full and short names for google.protobuf.FieldOptions.OptionTargetType. -const ( - FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType" - FieldOptions_OptionTargetType_enum_name = "OptionTargetType" -) - -// Enum values for google.protobuf.FieldOptions.OptionTargetType. -const ( - FieldOptions_TARGET_TYPE_UNKNOWN_enum_value = 0 - FieldOptions_TARGET_TYPE_FILE_enum_value = 1 - FieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2 - FieldOptions_TARGET_TYPE_MESSAGE_enum_value = 3 - FieldOptions_TARGET_TYPE_FIELD_enum_value = 4 - FieldOptions_TARGET_TYPE_ONEOF_enum_value = 5 - FieldOptions_TARGET_TYPE_ENUM_enum_value = 6 - FieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value = 7 - FieldOptions_TARGET_TYPE_SERVICE_enum_value = 8 - FieldOptions_TARGET_TYPE_METHOD_enum_value = 9 -) - -// Names for google.protobuf.FieldOptions.EditionDefault. -const ( - FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault" - FieldOptions_EditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault" -) - -// Field names for google.protobuf.FieldOptions.EditionDefault. -const ( - FieldOptions_EditionDefault_Edition_field_name protoreflect.Name = "edition" - FieldOptions_EditionDefault_Value_field_name protoreflect.Name = "value" - - FieldOptions_EditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.edition" - FieldOptions_EditionDefault_Value_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.EditionDefault.value" -) - -// Field numbers for google.protobuf.FieldOptions.EditionDefault. -const ( - FieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3 - FieldOptions_EditionDefault_Value_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.FieldOptions.FeatureSupport. -const ( - FieldOptions_FeatureSupport_message_name protoreflect.Name = "FeatureSupport" - FieldOptions_FeatureSupport_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport" -) - -// Field names for google.protobuf.FieldOptions.FeatureSupport. -const ( - FieldOptions_FeatureSupport_EditionIntroduced_field_name protoreflect.Name = "edition_introduced" - FieldOptions_FeatureSupport_EditionDeprecated_field_name protoreflect.Name = "edition_deprecated" - FieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = "deprecation_warning" - FieldOptions_FeatureSupport_EditionRemoved_field_name protoreflect.Name = "edition_removed" - - FieldOptions_FeatureSupport_EditionIntroduced_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_introduced" - FieldOptions_FeatureSupport_EditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_deprecated" - FieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.deprecation_warning" - FieldOptions_FeatureSupport_EditionRemoved_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_removed" -) - -// Field numbers for google.protobuf.FieldOptions.FeatureSupport. -const ( - FieldOptions_FeatureSupport_EditionIntroduced_field_number protoreflect.FieldNumber = 1 - FieldOptions_FeatureSupport_EditionDeprecated_field_number protoreflect.FieldNumber = 2 - FieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3 - FieldOptions_FeatureSupport_EditionRemoved_field_number protoreflect.FieldNumber = 4 -) - -// Names for google.protobuf.OneofOptions. -const ( - OneofOptions_message_name protoreflect.Name = "OneofOptions" - OneofOptions_message_fullname protoreflect.FullName = "google.protobuf.OneofOptions" -) - -// Field names for google.protobuf.OneofOptions. -const ( - OneofOptions_Features_field_name protoreflect.Name = "features" - OneofOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - OneofOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.features" - OneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.OneofOptions. -const ( - OneofOptions_Features_field_number protoreflect.FieldNumber = 1 - OneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Names for google.protobuf.EnumOptions. -const ( - EnumOptions_message_name protoreflect.Name = "EnumOptions" - EnumOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumOptions" -) - -// Field names for google.protobuf.EnumOptions. -const ( - EnumOptions_AllowAlias_field_name protoreflect.Name = "allow_alias" - EnumOptions_Deprecated_field_name protoreflect.Name = "deprecated" - EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_name protoreflect.Name = "deprecated_legacy_json_field_conflicts" - EnumOptions_Features_field_name protoreflect.Name = "features" - EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - EnumOptions_AllowAlias_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias" - EnumOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated" - EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.deprecated_legacy_json_field_conflicts" - EnumOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.features" - EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.EnumOptions. -const ( - EnumOptions_AllowAlias_field_number protoreflect.FieldNumber = 2 - EnumOptions_Deprecated_field_number protoreflect.FieldNumber = 3 - EnumOptions_DeprecatedLegacyJsonFieldConflicts_field_number protoreflect.FieldNumber = 6 - EnumOptions_Features_field_number protoreflect.FieldNumber = 7 - EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Names for google.protobuf.EnumValueOptions. -const ( - EnumValueOptions_message_name protoreflect.Name = "EnumValueOptions" - EnumValueOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions" -) - -// Field names for google.protobuf.EnumValueOptions. -const ( - EnumValueOptions_Deprecated_field_name protoreflect.Name = "deprecated" - EnumValueOptions_Features_field_name protoreflect.Name = "features" - EnumValueOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" - EnumValueOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" - EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - EnumValueOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated" - EnumValueOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.features" - EnumValueOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.debug_redact" - EnumValueOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.feature_support" - EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.EnumValueOptions. -const ( - EnumValueOptions_Deprecated_field_number protoreflect.FieldNumber = 1 - EnumValueOptions_Features_field_number protoreflect.FieldNumber = 2 - EnumValueOptions_DebugRedact_field_number protoreflect.FieldNumber = 3 - EnumValueOptions_FeatureSupport_field_number protoreflect.FieldNumber = 4 - EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Names for google.protobuf.ServiceOptions. -const ( - ServiceOptions_message_name protoreflect.Name = "ServiceOptions" - ServiceOptions_message_fullname protoreflect.FullName = "google.protobuf.ServiceOptions" -) - -// Field names for google.protobuf.ServiceOptions. -const ( - ServiceOptions_Features_field_name protoreflect.Name = "features" - ServiceOptions_Deprecated_field_name protoreflect.Name = "deprecated" - ServiceOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - ServiceOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.features" - ServiceOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.deprecated" - ServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.ServiceOptions. -const ( - ServiceOptions_Features_field_number protoreflect.FieldNumber = 34 - ServiceOptions_Deprecated_field_number protoreflect.FieldNumber = 33 - ServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Names for google.protobuf.MethodOptions. -const ( - MethodOptions_message_name protoreflect.Name = "MethodOptions" - MethodOptions_message_fullname protoreflect.FullName = "google.protobuf.MethodOptions" -) - -// Field names for google.protobuf.MethodOptions. -const ( - MethodOptions_Deprecated_field_name protoreflect.Name = "deprecated" - MethodOptions_IdempotencyLevel_field_name protoreflect.Name = "idempotency_level" - MethodOptions_Features_field_name protoreflect.Name = "features" - MethodOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" - - MethodOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.deprecated" - MethodOptions_IdempotencyLevel_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.idempotency_level" - MethodOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.features" - MethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.uninterpreted_option" -) - -// Field numbers for google.protobuf.MethodOptions. -const ( - MethodOptions_Deprecated_field_number protoreflect.FieldNumber = 33 - MethodOptions_IdempotencyLevel_field_number protoreflect.FieldNumber = 34 - MethodOptions_Features_field_number protoreflect.FieldNumber = 35 - MethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 -) - -// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel. -const ( - MethodOptions_IdempotencyLevel_enum_fullname = "google.protobuf.MethodOptions.IdempotencyLevel" - MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel" -) - -// Enum values for google.protobuf.MethodOptions.IdempotencyLevel. -const ( - MethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0 - MethodOptions_NO_SIDE_EFFECTS_enum_value = 1 - MethodOptions_IDEMPOTENT_enum_value = 2 -) - -// Names for google.protobuf.UninterpretedOption. -const ( - UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption" - UninterpretedOption_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption" -) - -// Field names for google.protobuf.UninterpretedOption. -const ( - UninterpretedOption_Name_field_name protoreflect.Name = "name" - UninterpretedOption_IdentifierValue_field_name protoreflect.Name = "identifier_value" - UninterpretedOption_PositiveIntValue_field_name protoreflect.Name = "positive_int_value" - UninterpretedOption_NegativeIntValue_field_name protoreflect.Name = "negative_int_value" - UninterpretedOption_DoubleValue_field_name protoreflect.Name = "double_value" - UninterpretedOption_StringValue_field_name protoreflect.Name = "string_value" - UninterpretedOption_AggregateValue_field_name protoreflect.Name = "aggregate_value" - - UninterpretedOption_Name_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.name" - UninterpretedOption_IdentifierValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.identifier_value" - UninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.positive_int_value" - UninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.negative_int_value" - UninterpretedOption_DoubleValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.double_value" - UninterpretedOption_StringValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.string_value" - UninterpretedOption_AggregateValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.aggregate_value" -) - -// Field numbers for google.protobuf.UninterpretedOption. -const ( - UninterpretedOption_Name_field_number protoreflect.FieldNumber = 2 - UninterpretedOption_IdentifierValue_field_number protoreflect.FieldNumber = 3 - UninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4 - UninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5 - UninterpretedOption_DoubleValue_field_number protoreflect.FieldNumber = 6 - UninterpretedOption_StringValue_field_number protoreflect.FieldNumber = 7 - UninterpretedOption_AggregateValue_field_number protoreflect.FieldNumber = 8 -) - -// Names for google.protobuf.UninterpretedOption.NamePart. -const ( - UninterpretedOption_NamePart_message_name protoreflect.Name = "NamePart" - UninterpretedOption_NamePart_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart" -) - -// Field names for google.protobuf.UninterpretedOption.NamePart. -const ( - UninterpretedOption_NamePart_NamePart_field_name protoreflect.Name = "name_part" - UninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = "is_extension" - - UninterpretedOption_NamePart_NamePart_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.name_part" - UninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.is_extension" -) - -// Field numbers for google.protobuf.UninterpretedOption.NamePart. -const ( - UninterpretedOption_NamePart_NamePart_field_number protoreflect.FieldNumber = 1 - UninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.FeatureSet. -const ( - FeatureSet_message_name protoreflect.Name = "FeatureSet" - FeatureSet_message_fullname protoreflect.FullName = "google.protobuf.FeatureSet" -) - -// Field names for google.protobuf.FeatureSet. -const ( - FeatureSet_FieldPresence_field_name protoreflect.Name = "field_presence" - FeatureSet_EnumType_field_name protoreflect.Name = "enum_type" - FeatureSet_RepeatedFieldEncoding_field_name protoreflect.Name = "repeated_field_encoding" - FeatureSet_Utf8Validation_field_name protoreflect.Name = "utf8_validation" - FeatureSet_MessageEncoding_field_name protoreflect.Name = "message_encoding" - FeatureSet_JsonFormat_field_name protoreflect.Name = "json_format" - - FeatureSet_FieldPresence_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.field_presence" - FeatureSet_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.enum_type" - FeatureSet_RepeatedFieldEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding" - FeatureSet_Utf8Validation_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation" - FeatureSet_MessageEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding" - FeatureSet_JsonFormat_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.json_format" -) - -// Field numbers for google.protobuf.FeatureSet. -const ( - FeatureSet_FieldPresence_field_number protoreflect.FieldNumber = 1 - FeatureSet_EnumType_field_number protoreflect.FieldNumber = 2 - FeatureSet_RepeatedFieldEncoding_field_number protoreflect.FieldNumber = 3 - FeatureSet_Utf8Validation_field_number protoreflect.FieldNumber = 4 - FeatureSet_MessageEncoding_field_number protoreflect.FieldNumber = 5 - FeatureSet_JsonFormat_field_number protoreflect.FieldNumber = 6 -) - -// Full and short names for google.protobuf.FeatureSet.FieldPresence. -const ( - FeatureSet_FieldPresence_enum_fullname = "google.protobuf.FeatureSet.FieldPresence" - FeatureSet_FieldPresence_enum_name = "FieldPresence" -) - -// Enum values for google.protobuf.FeatureSet.FieldPresence. -const ( - FeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0 - FeatureSet_EXPLICIT_enum_value = 1 - FeatureSet_IMPLICIT_enum_value = 2 - FeatureSet_LEGACY_REQUIRED_enum_value = 3 -) - -// Full and short names for google.protobuf.FeatureSet.EnumType. -const ( - FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType" - FeatureSet_EnumType_enum_name = "EnumType" -) - -// Enum values for google.protobuf.FeatureSet.EnumType. -const ( - FeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0 - FeatureSet_OPEN_enum_value = 1 - FeatureSet_CLOSED_enum_value = 2 -) - -// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding. -const ( - FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding" - FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding" -) - -// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding. -const ( - FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0 - FeatureSet_PACKED_enum_value = 1 - FeatureSet_EXPANDED_enum_value = 2 -) - -// Full and short names for google.protobuf.FeatureSet.Utf8Validation. -const ( - FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation" - FeatureSet_Utf8Validation_enum_name = "Utf8Validation" -) - -// Enum values for google.protobuf.FeatureSet.Utf8Validation. -const ( - FeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0 - FeatureSet_VERIFY_enum_value = 2 - FeatureSet_NONE_enum_value = 3 -) - -// Full and short names for google.protobuf.FeatureSet.MessageEncoding. -const ( - FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding" - FeatureSet_MessageEncoding_enum_name = "MessageEncoding" -) - -// Enum values for google.protobuf.FeatureSet.MessageEncoding. -const ( - FeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0 - FeatureSet_LENGTH_PREFIXED_enum_value = 1 - FeatureSet_DELIMITED_enum_value = 2 -) - -// Full and short names for google.protobuf.FeatureSet.JsonFormat. -const ( - FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat" - FeatureSet_JsonFormat_enum_name = "JsonFormat" -) - -// Enum values for google.protobuf.FeatureSet.JsonFormat. -const ( - FeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0 - FeatureSet_ALLOW_enum_value = 1 - FeatureSet_LEGACY_BEST_EFFORT_enum_value = 2 -) - -// Names for google.protobuf.FeatureSetDefaults. -const ( - FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults" - FeatureSetDefaults_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults" -) - -// Field names for google.protobuf.FeatureSetDefaults. -const ( - FeatureSetDefaults_Defaults_field_name protoreflect.Name = "defaults" - FeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = "minimum_edition" - FeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = "maximum_edition" - - FeatureSetDefaults_Defaults_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults" - FeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition" - FeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition" -) - -// Field numbers for google.protobuf.FeatureSetDefaults. -const ( - FeatureSetDefaults_Defaults_field_number protoreflect.FieldNumber = 1 - FeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4 - FeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5 -) - -// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. -const ( - FeatureSetDefaults_FeatureSetEditionDefault_message_name protoreflect.Name = "FeatureSetEditionDefault" - FeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault" -) - -// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. -const ( - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" - FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = "overridable_features" - FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name protoreflect.Name = "fixed_features" - - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" - FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features" - FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features" -) - -// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. -const ( - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 - FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4 - FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number protoreflect.FieldNumber = 5 -) - -// Names for google.protobuf.SourceCodeInfo. -const ( - SourceCodeInfo_message_name protoreflect.Name = "SourceCodeInfo" - SourceCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo" -) - -// Field names for google.protobuf.SourceCodeInfo. -const ( - SourceCodeInfo_Location_field_name protoreflect.Name = "location" - - SourceCodeInfo_Location_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.location" -) - -// Field numbers for google.protobuf.SourceCodeInfo. -const ( - SourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.SourceCodeInfo.Location. -const ( - SourceCodeInfo_Location_message_name protoreflect.Name = "Location" - SourceCodeInfo_Location_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location" -) - -// Field names for google.protobuf.SourceCodeInfo.Location. -const ( - SourceCodeInfo_Location_Path_field_name protoreflect.Name = "path" - SourceCodeInfo_Location_Span_field_name protoreflect.Name = "span" - SourceCodeInfo_Location_LeadingComments_field_name protoreflect.Name = "leading_comments" - SourceCodeInfo_Location_TrailingComments_field_name protoreflect.Name = "trailing_comments" - SourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = "leading_detached_comments" - - SourceCodeInfo_Location_Path_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.path" - SourceCodeInfo_Location_Span_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.span" - SourceCodeInfo_Location_LeadingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_comments" - SourceCodeInfo_Location_TrailingComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.trailing_comments" - SourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_detached_comments" -) - -// Field numbers for google.protobuf.SourceCodeInfo.Location. -const ( - SourceCodeInfo_Location_Path_field_number protoreflect.FieldNumber = 1 - SourceCodeInfo_Location_Span_field_number protoreflect.FieldNumber = 2 - SourceCodeInfo_Location_LeadingComments_field_number protoreflect.FieldNumber = 3 - SourceCodeInfo_Location_TrailingComments_field_number protoreflect.FieldNumber = 4 - SourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6 -) - -// Names for google.protobuf.GeneratedCodeInfo. -const ( - GeneratedCodeInfo_message_name protoreflect.Name = "GeneratedCodeInfo" - GeneratedCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo" -) - -// Field names for google.protobuf.GeneratedCodeInfo. -const ( - GeneratedCodeInfo_Annotation_field_name protoreflect.Name = "annotation" - - GeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.annotation" -) - -// Field numbers for google.protobuf.GeneratedCodeInfo. -const ( - GeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.GeneratedCodeInfo.Annotation. -const ( - GeneratedCodeInfo_Annotation_message_name protoreflect.Name = "Annotation" - GeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation" -) - -// Field names for google.protobuf.GeneratedCodeInfo.Annotation. -const ( - GeneratedCodeInfo_Annotation_Path_field_name protoreflect.Name = "path" - GeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = "source_file" - GeneratedCodeInfo_Annotation_Begin_field_name protoreflect.Name = "begin" - GeneratedCodeInfo_Annotation_End_field_name protoreflect.Name = "end" - GeneratedCodeInfo_Annotation_Semantic_field_name protoreflect.Name = "semantic" - - GeneratedCodeInfo_Annotation_Path_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.path" - GeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.source_file" - GeneratedCodeInfo_Annotation_Begin_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.begin" - GeneratedCodeInfo_Annotation_End_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.end" - GeneratedCodeInfo_Annotation_Semantic_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.semantic" -) - -// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation. -const ( - GeneratedCodeInfo_Annotation_Path_field_number protoreflect.FieldNumber = 1 - GeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2 - GeneratedCodeInfo_Annotation_Begin_field_number protoreflect.FieldNumber = 3 - GeneratedCodeInfo_Annotation_End_field_number protoreflect.FieldNumber = 4 - GeneratedCodeInfo_Annotation_Semantic_field_number protoreflect.FieldNumber = 5 -) - -// Full and short names for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. -const ( - GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic" - GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic" -) - -// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic. -const ( - GeneratedCodeInfo_Annotation_NONE_enum_value = 0 - GeneratedCodeInfo_Annotation_SET_enum_value = 1 - GeneratedCodeInfo_Annotation_ALIAS_enum_value = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/doc.go b/vendor/google.golang.org/protobuf/internal/genid/doc.go deleted file mode 100644 index d9b9d91..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/doc.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package genid contains constants for declarations in descriptor.proto -// and the well-known types. -package genid - -import "google.golang.org/protobuf/reflect/protoreflect" - -const GoogleProtobuf_package protoreflect.FullName = "google.protobuf" diff --git a/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go b/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go deleted file mode 100644 index b070ef4..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_duration_proto = "google/protobuf/duration.proto" - -// Names for google.protobuf.Duration. -const ( - Duration_message_name protoreflect.Name = "Duration" - Duration_message_fullname protoreflect.FullName = "google.protobuf.Duration" -) - -// Field names for google.protobuf.Duration. -const ( - Duration_Seconds_field_name protoreflect.Name = "seconds" - Duration_Nanos_field_name protoreflect.Name = "nanos" - - Duration_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Duration.seconds" - Duration_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Duration.nanos" -) - -// Field numbers for google.protobuf.Duration. -const ( - Duration_Seconds_field_number protoreflect.FieldNumber = 1 - Duration_Nanos_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go b/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go deleted file mode 100644 index 762abb3..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_empty_proto = "google/protobuf/empty.proto" - -// Names for google.protobuf.Empty. -const ( - Empty_message_name protoreflect.Name = "Empty" - Empty_message_fullname protoreflect.FullName = "google.protobuf.Empty" -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go b/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go deleted file mode 100644 index 70bed45..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_field_mask_proto = "google/protobuf/field_mask.proto" - -// Names for google.protobuf.FieldMask. -const ( - FieldMask_message_name protoreflect.Name = "FieldMask" - FieldMask_message_fullname protoreflect.FullName = "google.protobuf.FieldMask" -) - -// Field names for google.protobuf.FieldMask. -const ( - FieldMask_Paths_field_name protoreflect.Name = "paths" - - FieldMask_Paths_field_fullname protoreflect.FullName = "google.protobuf.FieldMask.paths" -) - -// Field numbers for google.protobuf.FieldMask. -const ( - FieldMask_Paths_field_number protoreflect.FieldNumber = 1 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go deleted file mode 100644 index 7f67cbb..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto" - -// Names for pb.GoFeatures. -const ( - GoFeatures_message_name protoreflect.Name = "GoFeatures" - GoFeatures_message_fullname protoreflect.FullName = "pb.GoFeatures" -) - -// Field names for pb.GoFeatures. -const ( - GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum" - - GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "pb.GoFeatures.legacy_unmarshal_json_enum" -) - -// Field numbers for pb.GoFeatures. -const ( - GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1 -) - -// Extension numbers -const ( - FeatureSet_Go_ext_number protoreflect.FieldNumber = 1002 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/goname.go b/vendor/google.golang.org/protobuf/internal/genid/goname.go deleted file mode 100644 index 693d2e9..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/goname.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package genid - -// Go names of implementation-specific struct fields in generated messages. -const ( - State_goname = "state" - - SizeCache_goname = "sizeCache" - SizeCacheA_goname = "XXX_sizecache" - - WeakFields_goname = "weakFields" - WeakFieldsA_goname = "XXX_weak" - - UnknownFields_goname = "unknownFields" - UnknownFieldsA_goname = "XXX_unrecognized" - - ExtensionFields_goname = "extensionFields" - ExtensionFieldsA_goname = "XXX_InternalExtensions" - ExtensionFieldsB_goname = "XXX_extensions" - - WeakFieldPrefix_goname = "XXX_weak_" -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go deleted file mode 100644 index bef5a25..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package genid - -import "google.golang.org/protobuf/reflect/protoreflect" - -// Generic field names and numbers for synthetic map entry messages. -const ( - MapEntry_Key_field_name protoreflect.Name = "key" - MapEntry_Value_field_name protoreflect.Name = "value" - - MapEntry_Key_field_number protoreflect.FieldNumber = 1 - MapEntry_Value_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go b/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go deleted file mode 100644 index 3e99ae1..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_source_context_proto = "google/protobuf/source_context.proto" - -// Names for google.protobuf.SourceContext. -const ( - SourceContext_message_name protoreflect.Name = "SourceContext" - SourceContext_message_fullname protoreflect.FullName = "google.protobuf.SourceContext" -) - -// Field names for google.protobuf.SourceContext. -const ( - SourceContext_FileName_field_name protoreflect.Name = "file_name" - - SourceContext_FileName_field_fullname protoreflect.FullName = "google.protobuf.SourceContext.file_name" -) - -// Field numbers for google.protobuf.SourceContext. -const ( - SourceContext_FileName_field_number protoreflect.FieldNumber = 1 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go b/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go deleted file mode 100644 index ad6f80c..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_struct_proto = "google/protobuf/struct.proto" - -// Full and short names for google.protobuf.NullValue. -const ( - NullValue_enum_fullname = "google.protobuf.NullValue" - NullValue_enum_name = "NullValue" -) - -// Enum values for google.protobuf.NullValue. -const ( - NullValue_NULL_VALUE_enum_value = 0 -) - -// Names for google.protobuf.Struct. -const ( - Struct_message_name protoreflect.Name = "Struct" - Struct_message_fullname protoreflect.FullName = "google.protobuf.Struct" -) - -// Field names for google.protobuf.Struct. -const ( - Struct_Fields_field_name protoreflect.Name = "fields" - - Struct_Fields_field_fullname protoreflect.FullName = "google.protobuf.Struct.fields" -) - -// Field numbers for google.protobuf.Struct. -const ( - Struct_Fields_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.Struct.FieldsEntry. -const ( - Struct_FieldsEntry_message_name protoreflect.Name = "FieldsEntry" - Struct_FieldsEntry_message_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry" -) - -// Field names for google.protobuf.Struct.FieldsEntry. -const ( - Struct_FieldsEntry_Key_field_name protoreflect.Name = "key" - Struct_FieldsEntry_Value_field_name protoreflect.Name = "value" - - Struct_FieldsEntry_Key_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.key" - Struct_FieldsEntry_Value_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.value" -) - -// Field numbers for google.protobuf.Struct.FieldsEntry. -const ( - Struct_FieldsEntry_Key_field_number protoreflect.FieldNumber = 1 - Struct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2 -) - -// Names for google.protobuf.Value. -const ( - Value_message_name protoreflect.Name = "Value" - Value_message_fullname protoreflect.FullName = "google.protobuf.Value" -) - -// Field names for google.protobuf.Value. -const ( - Value_NullValue_field_name protoreflect.Name = "null_value" - Value_NumberValue_field_name protoreflect.Name = "number_value" - Value_StringValue_field_name protoreflect.Name = "string_value" - Value_BoolValue_field_name protoreflect.Name = "bool_value" - Value_StructValue_field_name protoreflect.Name = "struct_value" - Value_ListValue_field_name protoreflect.Name = "list_value" - - Value_NullValue_field_fullname protoreflect.FullName = "google.protobuf.Value.null_value" - Value_NumberValue_field_fullname protoreflect.FullName = "google.protobuf.Value.number_value" - Value_StringValue_field_fullname protoreflect.FullName = "google.protobuf.Value.string_value" - Value_BoolValue_field_fullname protoreflect.FullName = "google.protobuf.Value.bool_value" - Value_StructValue_field_fullname protoreflect.FullName = "google.protobuf.Value.struct_value" - Value_ListValue_field_fullname protoreflect.FullName = "google.protobuf.Value.list_value" -) - -// Field numbers for google.protobuf.Value. -const ( - Value_NullValue_field_number protoreflect.FieldNumber = 1 - Value_NumberValue_field_number protoreflect.FieldNumber = 2 - Value_StringValue_field_number protoreflect.FieldNumber = 3 - Value_BoolValue_field_number protoreflect.FieldNumber = 4 - Value_StructValue_field_number protoreflect.FieldNumber = 5 - Value_ListValue_field_number protoreflect.FieldNumber = 6 -) - -// Oneof names for google.protobuf.Value. -const ( - Value_Kind_oneof_name protoreflect.Name = "kind" - - Value_Kind_oneof_fullname protoreflect.FullName = "google.protobuf.Value.kind" -) - -// Names for google.protobuf.ListValue. -const ( - ListValue_message_name protoreflect.Name = "ListValue" - ListValue_message_fullname protoreflect.FullName = "google.protobuf.ListValue" -) - -// Field names for google.protobuf.ListValue. -const ( - ListValue_Values_field_name protoreflect.Name = "values" - - ListValue_Values_field_fullname protoreflect.FullName = "google.protobuf.ListValue.values" -) - -// Field numbers for google.protobuf.ListValue. -const ( - ListValue_Values_field_number protoreflect.FieldNumber = 1 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go b/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go deleted file mode 100644 index f5cd563..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_timestamp_proto = "google/protobuf/timestamp.proto" - -// Names for google.protobuf.Timestamp. -const ( - Timestamp_message_name protoreflect.Name = "Timestamp" - Timestamp_message_fullname protoreflect.FullName = "google.protobuf.Timestamp" -) - -// Field names for google.protobuf.Timestamp. -const ( - Timestamp_Seconds_field_name protoreflect.Name = "seconds" - Timestamp_Nanos_field_name protoreflect.Name = "nanos" - - Timestamp_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.seconds" - Timestamp_Nanos_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.nanos" -) - -// Field numbers for google.protobuf.Timestamp. -const ( - Timestamp_Seconds_field_number protoreflect.FieldNumber = 1 - Timestamp_Nanos_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go b/vendor/google.golang.org/protobuf/internal/genid/type_gen.go deleted file mode 100644 index 49bc73e..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_type_proto = "google/protobuf/type.proto" - -// Full and short names for google.protobuf.Syntax. -const ( - Syntax_enum_fullname = "google.protobuf.Syntax" - Syntax_enum_name = "Syntax" -) - -// Enum values for google.protobuf.Syntax. -const ( - Syntax_SYNTAX_PROTO2_enum_value = 0 - Syntax_SYNTAX_PROTO3_enum_value = 1 - Syntax_SYNTAX_EDITIONS_enum_value = 2 -) - -// Names for google.protobuf.Type. -const ( - Type_message_name protoreflect.Name = "Type" - Type_message_fullname protoreflect.FullName = "google.protobuf.Type" -) - -// Field names for google.protobuf.Type. -const ( - Type_Name_field_name protoreflect.Name = "name" - Type_Fields_field_name protoreflect.Name = "fields" - Type_Oneofs_field_name protoreflect.Name = "oneofs" - Type_Options_field_name protoreflect.Name = "options" - Type_SourceContext_field_name protoreflect.Name = "source_context" - Type_Syntax_field_name protoreflect.Name = "syntax" - Type_Edition_field_name protoreflect.Name = "edition" - - Type_Name_field_fullname protoreflect.FullName = "google.protobuf.Type.name" - Type_Fields_field_fullname protoreflect.FullName = "google.protobuf.Type.fields" - Type_Oneofs_field_fullname protoreflect.FullName = "google.protobuf.Type.oneofs" - Type_Options_field_fullname protoreflect.FullName = "google.protobuf.Type.options" - Type_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Type.source_context" - Type_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Type.syntax" - Type_Edition_field_fullname protoreflect.FullName = "google.protobuf.Type.edition" -) - -// Field numbers for google.protobuf.Type. -const ( - Type_Name_field_number protoreflect.FieldNumber = 1 - Type_Fields_field_number protoreflect.FieldNumber = 2 - Type_Oneofs_field_number protoreflect.FieldNumber = 3 - Type_Options_field_number protoreflect.FieldNumber = 4 - Type_SourceContext_field_number protoreflect.FieldNumber = 5 - Type_Syntax_field_number protoreflect.FieldNumber = 6 - Type_Edition_field_number protoreflect.FieldNumber = 7 -) - -// Names for google.protobuf.Field. -const ( - Field_message_name protoreflect.Name = "Field" - Field_message_fullname protoreflect.FullName = "google.protobuf.Field" -) - -// Field names for google.protobuf.Field. -const ( - Field_Kind_field_name protoreflect.Name = "kind" - Field_Cardinality_field_name protoreflect.Name = "cardinality" - Field_Number_field_name protoreflect.Name = "number" - Field_Name_field_name protoreflect.Name = "name" - Field_TypeUrl_field_name protoreflect.Name = "type_url" - Field_OneofIndex_field_name protoreflect.Name = "oneof_index" - Field_Packed_field_name protoreflect.Name = "packed" - Field_Options_field_name protoreflect.Name = "options" - Field_JsonName_field_name protoreflect.Name = "json_name" - Field_DefaultValue_field_name protoreflect.Name = "default_value" - - Field_Kind_field_fullname protoreflect.FullName = "google.protobuf.Field.kind" - Field_Cardinality_field_fullname protoreflect.FullName = "google.protobuf.Field.cardinality" - Field_Number_field_fullname protoreflect.FullName = "google.protobuf.Field.number" - Field_Name_field_fullname protoreflect.FullName = "google.protobuf.Field.name" - Field_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Field.type_url" - Field_OneofIndex_field_fullname protoreflect.FullName = "google.protobuf.Field.oneof_index" - Field_Packed_field_fullname protoreflect.FullName = "google.protobuf.Field.packed" - Field_Options_field_fullname protoreflect.FullName = "google.protobuf.Field.options" - Field_JsonName_field_fullname protoreflect.FullName = "google.protobuf.Field.json_name" - Field_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.Field.default_value" -) - -// Field numbers for google.protobuf.Field. -const ( - Field_Kind_field_number protoreflect.FieldNumber = 1 - Field_Cardinality_field_number protoreflect.FieldNumber = 2 - Field_Number_field_number protoreflect.FieldNumber = 3 - Field_Name_field_number protoreflect.FieldNumber = 4 - Field_TypeUrl_field_number protoreflect.FieldNumber = 6 - Field_OneofIndex_field_number protoreflect.FieldNumber = 7 - Field_Packed_field_number protoreflect.FieldNumber = 8 - Field_Options_field_number protoreflect.FieldNumber = 9 - Field_JsonName_field_number protoreflect.FieldNumber = 10 - Field_DefaultValue_field_number protoreflect.FieldNumber = 11 -) - -// Full and short names for google.protobuf.Field.Kind. -const ( - Field_Kind_enum_fullname = "google.protobuf.Field.Kind" - Field_Kind_enum_name = "Kind" -) - -// Enum values for google.protobuf.Field.Kind. -const ( - Field_TYPE_UNKNOWN_enum_value = 0 - Field_TYPE_DOUBLE_enum_value = 1 - Field_TYPE_FLOAT_enum_value = 2 - Field_TYPE_INT64_enum_value = 3 - Field_TYPE_UINT64_enum_value = 4 - Field_TYPE_INT32_enum_value = 5 - Field_TYPE_FIXED64_enum_value = 6 - Field_TYPE_FIXED32_enum_value = 7 - Field_TYPE_BOOL_enum_value = 8 - Field_TYPE_STRING_enum_value = 9 - Field_TYPE_GROUP_enum_value = 10 - Field_TYPE_MESSAGE_enum_value = 11 - Field_TYPE_BYTES_enum_value = 12 - Field_TYPE_UINT32_enum_value = 13 - Field_TYPE_ENUM_enum_value = 14 - Field_TYPE_SFIXED32_enum_value = 15 - Field_TYPE_SFIXED64_enum_value = 16 - Field_TYPE_SINT32_enum_value = 17 - Field_TYPE_SINT64_enum_value = 18 -) - -// Full and short names for google.protobuf.Field.Cardinality. -const ( - Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality" - Field_Cardinality_enum_name = "Cardinality" -) - -// Enum values for google.protobuf.Field.Cardinality. -const ( - Field_CARDINALITY_UNKNOWN_enum_value = 0 - Field_CARDINALITY_OPTIONAL_enum_value = 1 - Field_CARDINALITY_REQUIRED_enum_value = 2 - Field_CARDINALITY_REPEATED_enum_value = 3 -) - -// Names for google.protobuf.Enum. -const ( - Enum_message_name protoreflect.Name = "Enum" - Enum_message_fullname protoreflect.FullName = "google.protobuf.Enum" -) - -// Field names for google.protobuf.Enum. -const ( - Enum_Name_field_name protoreflect.Name = "name" - Enum_Enumvalue_field_name protoreflect.Name = "enumvalue" - Enum_Options_field_name protoreflect.Name = "options" - Enum_SourceContext_field_name protoreflect.Name = "source_context" - Enum_Syntax_field_name protoreflect.Name = "syntax" - Enum_Edition_field_name protoreflect.Name = "edition" - - Enum_Name_field_fullname protoreflect.FullName = "google.protobuf.Enum.name" - Enum_Enumvalue_field_fullname protoreflect.FullName = "google.protobuf.Enum.enumvalue" - Enum_Options_field_fullname protoreflect.FullName = "google.protobuf.Enum.options" - Enum_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Enum.source_context" - Enum_Syntax_field_fullname protoreflect.FullName = "google.protobuf.Enum.syntax" - Enum_Edition_field_fullname protoreflect.FullName = "google.protobuf.Enum.edition" -) - -// Field numbers for google.protobuf.Enum. -const ( - Enum_Name_field_number protoreflect.FieldNumber = 1 - Enum_Enumvalue_field_number protoreflect.FieldNumber = 2 - Enum_Options_field_number protoreflect.FieldNumber = 3 - Enum_SourceContext_field_number protoreflect.FieldNumber = 4 - Enum_Syntax_field_number protoreflect.FieldNumber = 5 - Enum_Edition_field_number protoreflect.FieldNumber = 6 -) - -// Names for google.protobuf.EnumValue. -const ( - EnumValue_message_name protoreflect.Name = "EnumValue" - EnumValue_message_fullname protoreflect.FullName = "google.protobuf.EnumValue" -) - -// Field names for google.protobuf.EnumValue. -const ( - EnumValue_Name_field_name protoreflect.Name = "name" - EnumValue_Number_field_name protoreflect.Name = "number" - EnumValue_Options_field_name protoreflect.Name = "options" - - EnumValue_Name_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.name" - EnumValue_Number_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.number" - EnumValue_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.options" -) - -// Field numbers for google.protobuf.EnumValue. -const ( - EnumValue_Name_field_number protoreflect.FieldNumber = 1 - EnumValue_Number_field_number protoreflect.FieldNumber = 2 - EnumValue_Options_field_number protoreflect.FieldNumber = 3 -) - -// Names for google.protobuf.Option. -const ( - Option_message_name protoreflect.Name = "Option" - Option_message_fullname protoreflect.FullName = "google.protobuf.Option" -) - -// Field names for google.protobuf.Option. -const ( - Option_Name_field_name protoreflect.Name = "name" - Option_Value_field_name protoreflect.Name = "value" - - Option_Name_field_fullname protoreflect.FullName = "google.protobuf.Option.name" - Option_Value_field_fullname protoreflect.FullName = "google.protobuf.Option.value" -) - -// Field numbers for google.protobuf.Option. -const ( - Option_Name_field_number protoreflect.FieldNumber = 1 - Option_Value_field_number protoreflect.FieldNumber = 2 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go deleted file mode 100644 index 9404270..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package genid - -import "google.golang.org/protobuf/reflect/protoreflect" - -// Generic field name and number for messages in wrappers.proto. -const ( - WrapperValue_Value_field_name protoreflect.Name = "value" - WrapperValue_Value_field_number protoreflect.FieldNumber = 1 -) diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go deleted file mode 100644 index 72527d2..0000000 --- a/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package genid - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" -) - -const File_google_protobuf_wrappers_proto = "google/protobuf/wrappers.proto" - -// Names for google.protobuf.DoubleValue. -const ( - DoubleValue_message_name protoreflect.Name = "DoubleValue" - DoubleValue_message_fullname protoreflect.FullName = "google.protobuf.DoubleValue" -) - -// Field names for google.protobuf.DoubleValue. -const ( - DoubleValue_Value_field_name protoreflect.Name = "value" - - DoubleValue_Value_field_fullname protoreflect.FullName = "google.protobuf.DoubleValue.value" -) - -// Field numbers for google.protobuf.DoubleValue. -const ( - DoubleValue_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.FloatValue. -const ( - FloatValue_message_name protoreflect.Name = "FloatValue" - FloatValue_message_fullname protoreflect.FullName = "google.protobuf.FloatValue" -) - -// Field names for google.protobuf.FloatValue. -const ( - FloatValue_Value_field_name protoreflect.Name = "value" - - FloatValue_Value_field_fullname protoreflect.FullName = "google.protobuf.FloatValue.value" -) - -// Field numbers for google.protobuf.FloatValue. -const ( - FloatValue_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.Int64Value. -const ( - Int64Value_message_name protoreflect.Name = "Int64Value" - Int64Value_message_fullname protoreflect.FullName = "google.protobuf.Int64Value" -) - -// Field names for google.protobuf.Int64Value. -const ( - Int64Value_Value_field_name protoreflect.Name = "value" - - Int64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int64Value.value" -) - -// Field numbers for google.protobuf.Int64Value. -const ( - Int64Value_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.UInt64Value. -const ( - UInt64Value_message_name protoreflect.Name = "UInt64Value" - UInt64Value_message_fullname protoreflect.FullName = "google.protobuf.UInt64Value" -) - -// Field names for google.protobuf.UInt64Value. -const ( - UInt64Value_Value_field_name protoreflect.Name = "value" - - UInt64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt64Value.value" -) - -// Field numbers for google.protobuf.UInt64Value. -const ( - UInt64Value_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.Int32Value. -const ( - Int32Value_message_name protoreflect.Name = "Int32Value" - Int32Value_message_fullname protoreflect.FullName = "google.protobuf.Int32Value" -) - -// Field names for google.protobuf.Int32Value. -const ( - Int32Value_Value_field_name protoreflect.Name = "value" - - Int32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int32Value.value" -) - -// Field numbers for google.protobuf.Int32Value. -const ( - Int32Value_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.UInt32Value. -const ( - UInt32Value_message_name protoreflect.Name = "UInt32Value" - UInt32Value_message_fullname protoreflect.FullName = "google.protobuf.UInt32Value" -) - -// Field names for google.protobuf.UInt32Value. -const ( - UInt32Value_Value_field_name protoreflect.Name = "value" - - UInt32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt32Value.value" -) - -// Field numbers for google.protobuf.UInt32Value. -const ( - UInt32Value_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.BoolValue. -const ( - BoolValue_message_name protoreflect.Name = "BoolValue" - BoolValue_message_fullname protoreflect.FullName = "google.protobuf.BoolValue" -) - -// Field names for google.protobuf.BoolValue. -const ( - BoolValue_Value_field_name protoreflect.Name = "value" - - BoolValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BoolValue.value" -) - -// Field numbers for google.protobuf.BoolValue. -const ( - BoolValue_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.StringValue. -const ( - StringValue_message_name protoreflect.Name = "StringValue" - StringValue_message_fullname protoreflect.FullName = "google.protobuf.StringValue" -) - -// Field names for google.protobuf.StringValue. -const ( - StringValue_Value_field_name protoreflect.Name = "value" - - StringValue_Value_field_fullname protoreflect.FullName = "google.protobuf.StringValue.value" -) - -// Field numbers for google.protobuf.StringValue. -const ( - StringValue_Value_field_number protoreflect.FieldNumber = 1 -) - -// Names for google.protobuf.BytesValue. -const ( - BytesValue_message_name protoreflect.Name = "BytesValue" - BytesValue_message_fullname protoreflect.FullName = "google.protobuf.BytesValue" -) - -// Field names for google.protobuf.BytesValue. -const ( - BytesValue_Value_field_name protoreflect.Name = "value" - - BytesValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BytesValue.value" -) - -// Field numbers for google.protobuf.BytesValue. -const ( - BytesValue_Value_field_number protoreflect.FieldNumber = 1 -) diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/vendor/google.golang.org/protobuf/internal/impl/api_export.go deleted file mode 100644 index 5d5771c..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/api_export.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "strconv" - - "google.golang.org/protobuf/encoding/prototext" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// Export is a zero-length named type that exists only to export a set of -// functions that we do not want to appear in godoc. -type Export struct{} - -// NewError formats a string according to the format specifier and arguments and -// returns an error that has a "proto" prefix. -func (Export) NewError(f string, x ...any) error { - return errors.New(f, x...) -} - -// enum is any enum type generated by protoc-gen-go -// and must be a named int32 type. -type enum = any - -// EnumOf returns the protoreflect.Enum interface over e. -// It returns nil if e is nil. -func (Export) EnumOf(e enum) protoreflect.Enum { - switch e := e.(type) { - case nil: - return nil - case protoreflect.Enum: - return e - default: - return legacyWrapEnum(reflect.ValueOf(e)) - } -} - -// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e. -// It returns nil if e is nil. -func (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor { - switch e := e.(type) { - case nil: - return nil - case protoreflect.Enum: - return e.Descriptor() - default: - return LegacyLoadEnumDesc(reflect.TypeOf(e)) - } -} - -// EnumTypeOf returns the protoreflect.EnumType for e. -// It returns nil if e is nil. -func (Export) EnumTypeOf(e enum) protoreflect.EnumType { - switch e := e.(type) { - case nil: - return nil - case protoreflect.Enum: - return e.Type() - default: - return legacyLoadEnumType(reflect.TypeOf(e)) - } -} - -// EnumStringOf returns the enum value as a string, either as the name if -// the number is resolvable, or the number formatted as a string. -func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string { - ev := ed.Values().ByNumber(n) - if ev != nil { - return string(ev.Name()) - } - return strconv.Itoa(int(n)) -} - -// message is any message type generated by protoc-gen-go -// and must be a pointer to a named struct type. -type message = any - -// legacyMessageWrapper wraps a v2 message as a v1 message. -type legacyMessageWrapper struct{ m protoreflect.ProtoMessage } - -func (m legacyMessageWrapper) Reset() { proto.Reset(m.m) } -func (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) } -func (m legacyMessageWrapper) ProtoMessage() {} - -// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message. -// It returns nil if m is nil. -func (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 { - switch mv := m.(type) { - case nil: - return nil - case protoiface.MessageV1: - return mv - case unwrapper: - return Export{}.ProtoMessageV1Of(mv.protoUnwrap()) - case protoreflect.ProtoMessage: - return legacyMessageWrapper{mv} - default: - panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) - } -} - -func (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage { - switch mv := m.(type) { - case nil: - return nil - case protoreflect.ProtoMessage: - return mv - case legacyMessageWrapper: - return mv.m - case protoiface.MessageV1: - return nil - default: - panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) - } -} - -// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message. -// It returns nil if m is nil. -func (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage { - if m == nil { - return nil - } - if mv := (Export{}).protoMessageV2Of(m); mv != nil { - return mv - } - return legacyWrapMessage(reflect.ValueOf(m)).Interface() -} - -// MessageOf returns the protoreflect.Message interface over m. -// It returns nil if m is nil. -func (Export) MessageOf(m message) protoreflect.Message { - if m == nil { - return nil - } - if mv := (Export{}).protoMessageV2Of(m); mv != nil { - return mv.ProtoReflect() - } - return legacyWrapMessage(reflect.ValueOf(m)) -} - -// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m. -// It returns nil if m is nil. -func (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor { - if m == nil { - return nil - } - if mv := (Export{}).protoMessageV2Of(m); mv != nil { - return mv.ProtoReflect().Descriptor() - } - return LegacyLoadMessageDesc(reflect.TypeOf(m)) -} - -// MessageTypeOf returns the protoreflect.MessageType for m. -// It returns nil if m is nil. -func (Export) MessageTypeOf(m message) protoreflect.MessageType { - if m == nil { - return nil - } - if mv := (Export{}).protoMessageV2Of(m); mv != nil { - return mv.ProtoReflect().Type() - } - return legacyLoadMessageType(reflect.TypeOf(m), "") -} - -// MessageStringOf returns the message value as a string, -// which is the message serialized in the protobuf text format. -func (Export) MessageStringOf(m protoreflect.ProtoMessage) string { - return prototext.MarshalOptions{Multiline: false}.Format(m) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go deleted file mode 100644 index f29e6a8..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "sync" - - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -func (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) { - var p pointer - if ms, ok := in.Message.(*messageState); ok { - p = ms.pointer() - } else { - p = in.Message.(*messageReflectWrapper).pointer() - } - return protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p) -} - -func (mi *MessageInfo) checkInitializedPointer(p pointer) error { - mi.init() - if !mi.needsInitCheck { - return nil - } - if p.IsNil() { - for _, f := range mi.orderedCoderFields { - if f.isRequired { - return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) - } - } - return nil - } - if mi.extensionOffset.IsValid() { - e := p.Apply(mi.extensionOffset).Extensions() - if err := mi.isInitExtensions(e); err != nil { - return err - } - } - for _, f := range mi.orderedCoderFields { - if !f.isRequired && f.funcs.isInit == nil { - continue - } - fptr := p.Apply(f.offset) - if f.isPointer && fptr.Elem().IsNil() { - if f.isRequired { - return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName())) - } - continue - } - if f.funcs.isInit == nil { - continue - } - if err := f.funcs.isInit(fptr, f); err != nil { - return err - } - } - return nil -} - -func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error { - if ext == nil { - return nil - } - for _, x := range *ext { - ei := getExtensionFieldInfo(x.Type()) - if ei.funcs.isInit == nil || x.isUnexpandedLazy() { - continue - } - v := x.Value() - if !v.IsValid() { - continue - } - if err := ei.funcs.isInit(v); err != nil { - return err - } - } - return nil -} - -var ( - needsInitCheckMu sync.Mutex - needsInitCheckMap sync.Map -) - -// needsInitCheck reports whether a message needs to be checked for partial initialization. -// -// It returns true if the message transitively includes any required or extension fields. -func needsInitCheck(md protoreflect.MessageDescriptor) bool { - if v, ok := needsInitCheckMap.Load(md); ok { - if has, ok := v.(bool); ok { - return has - } - } - needsInitCheckMu.Lock() - defer needsInitCheckMu.Unlock() - return needsInitCheckLocked(md) -} - -func needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) { - if v, ok := needsInitCheckMap.Load(md); ok { - // If has is true, we've previously determined that this message - // needs init checks. - // - // If has is false, we've previously determined that it can never - // be uninitialized. - // - // If has is not a bool, we've just encountered a cycle in the - // message graph. In this case, it is safe to return false: If - // the message does have required fields, we'll detect them later - // in the graph traversal. - has, ok := v.(bool) - return ok && has - } - needsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message - defer func() { - needsInitCheckMap.Store(md, has) - }() - if md.RequiredNumbers().Len() > 0 { - return true - } - if md.ExtensionRanges().Len() > 0 { - return true - } - for i := 0; i < md.Fields().Len(); i++ { - fd := md.Fields().Get(i) - // Map keys are never messages, so just consider the map value. - if fd.IsMap() { - fd = fd.MapValue() - } - fmd := fd.Message() - if fmd != nil && needsInitCheckLocked(fmd) { - return true - } - } - return false -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go deleted file mode 100644 index 0d5b546..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "sync" - "sync/atomic" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type extensionFieldInfo struct { - wiretag uint64 - tagsize int - unmarshalNeedsValue bool - funcs valueCoderFuncs - validation validationInfo -} - -func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { - if xi, ok := xt.(*ExtensionInfo); ok { - xi.lazyInit() - return xi.info - } - // Ideally we'd cache the resulting *extensionFieldInfo so we don't have to - // recompute this metadata repeatedly. But without support for something like - // weak references, such a cache would pin temporary values (like dynamic - // extension types, constructed for the duration of a user request) to the - // heap forever, causing memory usage of the cache to grow unbounded. - // See discussion in https://github.com/golang/protobuf/issues/1521. - return makeExtensionFieldInfo(xt.TypeDescriptor()) -} - -func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo { - var wiretag uint64 - if !xd.IsPacked() { - wiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()]) - } else { - wiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType) - } - e := &extensionFieldInfo{ - wiretag: wiretag, - tagsize: protowire.SizeVarint(wiretag), - funcs: encoderFuncsForValue(xd), - } - // Does the unmarshal function need a value passed to it? - // This is true for composite types, where we pass in a message, list, or map to fill in, - // and for enums, where we pass in a prototype value to specify the concrete enum type. - switch xd.Kind() { - case protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind: - e.unmarshalNeedsValue = true - default: - if xd.Cardinality() == protoreflect.Repeated { - e.unmarshalNeedsValue = true - } - } - return e -} - -type lazyExtensionValue struct { - atomicOnce uint32 // atomically set if value is valid - mu sync.Mutex - xi *extensionFieldInfo - value protoreflect.Value - b []byte -} - -type ExtensionField struct { - typ protoreflect.ExtensionType - - // value is either the value of GetValue, - // or a *lazyExtensionValue that then returns the value of GetValue. - value protoreflect.Value - lazy *lazyExtensionValue -} - -func (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) { - if f.lazy == nil { - f.lazy = &lazyExtensionValue{xi: xi} - } - f.typ = xt - f.lazy.xi = xi - f.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp) - f.lazy.b = append(f.lazy.b, b...) -} - -func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool { - if f.typ == nil { - return true - } - if f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { - return true - } - return false -} - -// isUnexpandedLazy returns true if the ExensionField is lazy and not -// yet expanded, which means it's present and already checked for -// initialized required fields. -func (f *ExtensionField) isUnexpandedLazy() bool { - return f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 -} - -// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded. -// -// The returned buffer has to be kept over whatever operation we're planning, -// as re-retrieving it will fail after the message is lazily decoded. -func (f *ExtensionField) lazyBuffer() []byte { - // This function might be in the critical path, so check the atomic without - // taking a look first, then only take the lock if needed. - if !f.isUnexpandedLazy() { - return nil - } - f.lazy.mu.Lock() - defer f.lazy.mu.Unlock() - return f.lazy.b -} - -func (f *ExtensionField) lazyInit() { - f.lazy.mu.Lock() - defer f.lazy.mu.Unlock() - if atomic.LoadUint32(&f.lazy.atomicOnce) == 1 { - return - } - if f.lazy.xi != nil { - b := f.lazy.b - val := f.typ.New() - for len(b) > 0 { - var tag uint64 - if b[0] < 0x80 { - tag = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - tag, n = protowire.ConsumeVarint(b) - if n < 0 { - panic(errors.New("bad tag in lazy extension decoding")) - } - b = b[n:] - } - num := protowire.Number(tag >> 3) - wtyp := protowire.Type(tag & 7) - var out unmarshalOutput - var err error - val, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions) - if err != nil { - panic(errors.New("decode failure in lazy extension decoding: %v", err)) - } - b = b[out.n:] - } - f.lazy.value = val - } else { - panic("No support for lazy fns for ExtensionField") - } - f.lazy.xi = nil - f.lazy.b = nil - atomic.StoreUint32(&f.lazy.atomicOnce, 1) -} - -// Set sets the type and value of the extension field. -// This must not be called concurrently. -func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) { - f.typ = t - f.value = v - f.lazy = nil -} - -// Value returns the value of the extension field. -// This may be called concurrently. -func (f *ExtensionField) Value() protoreflect.Value { - if f.lazy != nil { - if atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { - f.lazyInit() - } - return f.lazy.value - } - return f.value -} - -// Type returns the type of the extension field. -// This may be called concurrently. -func (f ExtensionField) Type() protoreflect.ExtensionType { - return f.typ -} - -// IsSet returns whether the extension field is set. -// This may be called concurrently. -func (f ExtensionField) IsSet() bool { - return f.typ != nil -} - -// IsLazy reports whether a field is lazily encoded. -// It is exported for testing. -func IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool { - var mi *MessageInfo - var p pointer - switch m := m.(type) { - case *messageState: - mi = m.messageInfo() - p = m.pointer() - case *messageReflectWrapper: - mi = m.messageInfo() - p = m.pointer() - default: - return false - } - xd, ok := fd.(protoreflect.ExtensionTypeDescriptor) - if !ok { - return false - } - xt := xd.Type() - ext := mi.extensionMap(p) - if ext == nil { - return false - } - f, ok := (*ext)[int32(fd.Number())] - if !ok { - return false - } - return f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go deleted file mode 100644 index 7c1f66c..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +++ /dev/null @@ -1,863 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "sync" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" -) - -type errInvalidUTF8 struct{} - -func (errInvalidUTF8) Error() string { return "string field contains invalid UTF-8" } -func (errInvalidUTF8) InvalidUTF8() bool { return true } -func (errInvalidUTF8) Unwrap() error { return errors.Error } - -// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof. -// -// For size, marshal, and isInit operations, functions are set only on the first field -// in the oneof. The functions are called when the oneof is non-nil, and will dispatch -// to the appropriate field-specific function as necessary. -// -// The unmarshal function is set on each field individually as usual. -func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) { - fs := si.oneofsByName[od.Name()] - ft := fs.Type - oneofFields := make(map[reflect.Type]*coderFieldInfo) - needIsInit := false - fields := od.Fields() - for i, lim := 0, fields.Len(); i < lim; i++ { - fd := od.Fields().Get(i) - num := fd.Number() - // Make a copy of the original coderFieldInfo for use in unmarshaling. - // - // oneofFields[oneofType].funcs.marshal is the field-specific marshal function. - // - // mi.coderFields[num].marshal is set on only the first field in the oneof, - // and dispatches to the field-specific marshaler in oneofFields. - cf := *mi.coderFields[num] - ot := si.oneofWrappersByNumber[num] - cf.ft = ot.Field(0).Type - cf.mi, cf.funcs = fieldCoder(fd, cf.ft) - oneofFields[ot] = &cf - if cf.funcs.isInit != nil { - needIsInit = true - } - mi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - var vw reflect.Value // pointer to wrapper type - vi := p.AsValueOf(ft).Elem() // oneof field value of interface kind - if !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot { - vw = vi.Elem() - } else { - vw = reflect.New(ot) - } - out, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts) - if err != nil { - return out, err - } - if cf.funcs.isInit == nil { - out.initialized = true - } - vi.Set(vw) - return out, nil - } - } - getInfo := func(p pointer) (pointer, *coderFieldInfo) { - v := p.AsValueOf(ft).Elem() - if v.IsNil() { - return pointer{}, nil - } - v = v.Elem() // interface -> *struct - if v.IsNil() { - return pointer{}, nil - } - return pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()] - } - first := mi.coderFields[od.Fields().Get(0).Number()] - first.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int { - p, info := getInfo(p) - if info == nil || info.funcs.size == nil { - return 0 - } - return info.funcs.size(p, info, opts) - } - first.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) { - p, info := getInfo(p) - if info == nil || info.funcs.marshal == nil { - return b, nil - } - return info.funcs.marshal(b, p, info, opts) - } - first.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) { - srcp, srcinfo := getInfo(src) - if srcinfo == nil || srcinfo.funcs.merge == nil { - return - } - dstp, dstinfo := getInfo(dst) - if dstinfo != srcinfo { - dst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type())) - dstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset) - } - srcinfo.funcs.merge(dstp, srcp, srcinfo, opts) - } - if needIsInit { - first.funcs.isInit = func(p pointer, _ *coderFieldInfo) error { - p, info := getInfo(p) - if info == nil || info.funcs.isInit == nil { - return nil - } - return info.funcs.isInit(p, info) - } - } -} - -func makeWeakMessageFieldCoder(fd protoreflect.FieldDescriptor) pointerCoderFuncs { - var once sync.Once - var messageType protoreflect.MessageType - lazyInit := func() { - once.Do(func() { - messageName := fd.Message().FullName() - messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) - }) - } - - return pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - m, ok := p.WeakFields().get(f.num) - if !ok { - return 0 - } - lazyInit() - if messageType == nil { - panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) - } - return sizeMessage(m, f.tagsize, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - m, ok := p.WeakFields().get(f.num) - if !ok { - return b, nil - } - lazyInit() - if messageType == nil { - panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) - } - return appendMessage(b, m, f.wiretag, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - fs := p.WeakFields() - m, ok := fs.get(f.num) - if !ok { - lazyInit() - if messageType == nil { - return unmarshalOutput{}, errUnknown - } - m = messageType.New().Interface() - fs.set(f.num, m) - } - return consumeMessage(b, m, wtyp, opts) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - m, ok := p.WeakFields().get(f.num) - if !ok { - return nil - } - return proto.CheckInitialized(m) - }, - merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - sm, ok := src.WeakFields().get(f.num) - if !ok { - return - } - dm, ok := dst.WeakFields().get(f.num) - if !ok { - lazyInit() - if messageType == nil { - panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName())) - } - dm = messageType.New().Interface() - dst.WeakFields().set(f.num, dm) - } - opts.Merge(dm, sm) - }, - } -} - -func makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { - if mi := getMessageInfo(ft); mi != nil { - funcs := pointerCoderFuncs{ - size: sizeMessageInfo, - marshal: appendMessageInfo, - unmarshal: consumeMessageInfo, - merge: mergeMessage, - } - if needsInitCheck(mi.Desc) { - funcs.isInit = isInitMessageInfo - } - return funcs - } else { - return pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - m := asMessage(p.AsValueOf(ft).Elem()) - return sizeMessage(m, f.tagsize, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - m := asMessage(p.AsValueOf(ft).Elem()) - return appendMessage(b, m, f.wiretag, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - mp := p.AsValueOf(ft).Elem() - if mp.IsNil() { - mp.Set(reflect.New(ft.Elem())) - } - return consumeMessage(b, asMessage(mp), wtyp, opts) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - m := asMessage(p.AsValueOf(ft).Elem()) - return proto.CheckInitialized(m) - }, - merge: mergeMessage, - } - } -} - -func sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize -} - -func appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - calculatedSize := f.mi.sizePointer(p.Elem(), opts) - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(calculatedSize)) - before := len(b) - b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) - if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { - return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) - } - return b, err -} - -func consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if p.Elem().IsNil() { - p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) - } - o, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts) - if err != nil { - return out, err - } - out.n = n - out.initialized = o.initialized - return out, nil -} - -func isInitMessageInfo(p pointer, f *coderFieldInfo) error { - return f.mi.checkInitializedPointer(p.Elem()) -} - -func sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int { - return protowire.SizeBytes(opts.Options().Size(m)) + tagsize -} - -func appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { - mopts := opts.Options() - calculatedSize := mopts.Size(m) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(calculatedSize)) - before := len(b) - b, err := mopts.MarshalAppend(b, m) - if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { - return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) - } - return b, err -} - -func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: v, - Message: m.ProtoReflect(), - }) - if err != nil { - return out, err - } - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return out, nil -} - -func sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - m := v.Message().Interface() - return sizeMessage(m, tagsize, opts) -} - -func appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - m := v.Message().Interface() - return appendMessage(b, m, wiretag, opts) -} - -func consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { - m := v.Message().Interface() - out, err := consumeMessage(b, m, wtyp, opts) - return v, out, err -} - -func isInitMessageValue(v protoreflect.Value) error { - m := v.Message().Interface() - return proto.CheckInitialized(m) -} - -var coderMessageValue = valueCoderFuncs{ - size: sizeMessageValue, - marshal: appendMessageValue, - unmarshal: consumeMessageValue, - isInit: isInitMessageValue, - merge: mergeMessageValue, -} - -func sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - m := v.Message().Interface() - return sizeGroup(m, tagsize, opts) -} - -func appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - m := v.Message().Interface() - return appendGroup(b, m, wiretag, opts) -} - -func consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { - m := v.Message().Interface() - out, err := consumeGroup(b, m, num, wtyp, opts) - return v, out, err -} - -var coderGroupValue = valueCoderFuncs{ - size: sizeGroupValue, - marshal: appendGroupValue, - unmarshal: consumeGroupValue, - isInit: isInitMessageValue, - merge: mergeMessageValue, -} - -func makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { - num := fd.Number() - if mi := getMessageInfo(ft); mi != nil { - funcs := pointerCoderFuncs{ - size: sizeGroupType, - marshal: appendGroupType, - unmarshal: consumeGroupType, - merge: mergeMessage, - } - if needsInitCheck(mi.Desc) { - funcs.isInit = isInitMessageInfo - } - return funcs - } else { - return pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - m := asMessage(p.AsValueOf(ft).Elem()) - return sizeGroup(m, f.tagsize, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - m := asMessage(p.AsValueOf(ft).Elem()) - return appendGroup(b, m, f.wiretag, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - mp := p.AsValueOf(ft).Elem() - if mp.IsNil() { - mp.Set(reflect.New(ft.Elem())) - } - return consumeGroup(b, asMessage(mp), num, wtyp, opts) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - m := asMessage(p.AsValueOf(ft).Elem()) - return proto.CheckInitialized(m) - }, - merge: mergeMessage, - } - } -} - -func sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts) -} - -func appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, f.wiretag) // start group - b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) - b = protowire.AppendVarint(b, f.wiretag+1) // end group - return b, err -} - -func consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.StartGroupType { - return out, errUnknown - } - if p.Elem().IsNil() { - p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) - } - return f.mi.unmarshalPointer(b, p.Elem(), f.num, opts) -} - -func sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int { - return 2*tagsize + opts.Options().Size(m) -} - -func appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) // start group - b, err := opts.Options().MarshalAppend(b, m) - b = protowire.AppendVarint(b, wiretag+1) // end group - return b, err -} - -func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.StartGroupType { - return out, errUnknown - } - b, n := protowire.ConsumeGroup(num, b) - if n < 0 { - return out, errDecode - } - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: b, - Message: m.ProtoReflect(), - }) - if err != nil { - return out, err - } - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return out, nil -} - -func makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { - if mi := getMessageInfo(ft); mi != nil { - funcs := pointerCoderFuncs{ - size: sizeMessageSliceInfo, - marshal: appendMessageSliceInfo, - unmarshal: consumeMessageSliceInfo, - merge: mergeMessageSlice, - } - if needsInitCheck(mi.Desc) { - funcs.isInit = isInitMessageSliceInfo - } - return funcs - } - return pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return sizeMessageSlice(p, ft, f.tagsize, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - return appendMessageSlice(b, p, f.wiretag, ft, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - return consumeMessageSlice(b, p, ft, wtyp, opts) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - return isInitMessageSlice(p, ft) - }, - merge: mergeMessageSlice, - } -} - -func sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { - s := p.PointerSlice() - n := 0 - for _, v := range s { - n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize - } - return n -} - -func appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := p.PointerSlice() - var err error - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - siz := f.mi.sizePointer(v, opts) - b = protowire.AppendVarint(b, uint64(siz)) - before := len(b) - b, err = f.mi.marshalAppendPointer(b, v, opts) - if err != nil { - return b, err - } - if measuredSize := len(b) - before; siz != measuredSize { - return nil, errors.MismatchedSizeCalculation(siz, measuredSize) - } - } - return b, nil -} - -func consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - m := reflect.New(f.mi.GoReflectType.Elem()).Interface() - mp := pointerOfIface(m) - o, err := f.mi.unmarshalPointer(v, mp, 0, opts) - if err != nil { - return out, err - } - p.AppendPointerSlice(mp) - out.n = n - out.initialized = o.initialized - return out, nil -} - -func isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error { - s := p.PointerSlice() - for _, v := range s { - if err := f.mi.checkInitializedPointer(v); err != nil { - return err - } - } - return nil -} - -func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int { - mopts := opts.Options() - s := p.PointerSlice() - n := 0 - for _, v := range s { - m := asMessage(v.AsValueOf(goType.Elem())) - n += protowire.SizeBytes(mopts.Size(m)) + tagsize - } - return n -} - -func appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) { - mopts := opts.Options() - s := p.PointerSlice() - var err error - for _, v := range s { - m := asMessage(v.AsValueOf(goType.Elem())) - b = protowire.AppendVarint(b, wiretag) - siz := mopts.Size(m) - b = protowire.AppendVarint(b, uint64(siz)) - before := len(b) - b, err = mopts.MarshalAppend(b, m) - if err != nil { - return b, err - } - if measuredSize := len(b) - before; siz != measuredSize { - return nil, errors.MismatchedSizeCalculation(siz, measuredSize) - } - } - return b, nil -} - -func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - mp := reflect.New(goType.Elem()) - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: v, - Message: asMessage(mp).ProtoReflect(), - }) - if err != nil { - return out, err - } - p.AppendPointerSlice(pointerOfValue(mp)) - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return out, nil -} - -func isInitMessageSlice(p pointer, goType reflect.Type) error { - s := p.PointerSlice() - for _, v := range s { - m := asMessage(v.AsValueOf(goType.Elem())) - if err := proto.CheckInitialized(m); err != nil { - return err - } - } - return nil -} - -// Slices of messages - -func sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { - mopts := opts.Options() - list := listv.List() - n := 0 - for i, llen := 0, list.Len(); i < llen; i++ { - m := list.Get(i).Message().Interface() - n += protowire.SizeBytes(mopts.Size(m)) + tagsize - } - return n -} - -func appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - mopts := opts.Options() - for i, llen := 0, list.Len(); i < llen; i++ { - m := list.Get(i).Message().Interface() - b = protowire.AppendVarint(b, wiretag) - siz := mopts.Size(m) - b = protowire.AppendVarint(b, uint64(siz)) - before := len(b) - var err error - b, err = mopts.MarshalAppend(b, m) - if err != nil { - return b, err - } - if measuredSize := len(b) - before; siz != measuredSize { - return nil, errors.MismatchedSizeCalculation(siz, measuredSize) - } - } - return b, nil -} - -func consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - m := list.NewElement() - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: v, - Message: m.Message(), - }) - if err != nil { - return protoreflect.Value{}, out, err - } - list.Append(m) - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return listv, out, nil -} - -func isInitMessageSliceValue(listv protoreflect.Value) error { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - m := list.Get(i).Message().Interface() - if err := proto.CheckInitialized(m); err != nil { - return err - } - } - return nil -} - -var coderMessageSliceValue = valueCoderFuncs{ - size: sizeMessageSliceValue, - marshal: appendMessageSliceValue, - unmarshal: consumeMessageSliceValue, - isInit: isInitMessageSliceValue, - merge: mergeMessageListValue, -} - -func sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { - mopts := opts.Options() - list := listv.List() - n := 0 - for i, llen := 0, list.Len(); i < llen; i++ { - m := list.Get(i).Message().Interface() - n += 2*tagsize + mopts.Size(m) - } - return n -} - -func appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - mopts := opts.Options() - for i, llen := 0, list.Len(); i < llen; i++ { - m := list.Get(i).Message().Interface() - b = protowire.AppendVarint(b, wiretag) // start group - var err error - b, err = mopts.MarshalAppend(b, m) - if err != nil { - return b, err - } - b = protowire.AppendVarint(b, wiretag+1) // end group - } - return b, nil -} - -func consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp != protowire.StartGroupType { - return protoreflect.Value{}, out, errUnknown - } - b, n := protowire.ConsumeGroup(num, b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - m := list.NewElement() - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: b, - Message: m.Message(), - }) - if err != nil { - return protoreflect.Value{}, out, err - } - list.Append(m) - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return listv, out, nil -} - -var coderGroupSliceValue = valueCoderFuncs{ - size: sizeGroupSliceValue, - marshal: appendGroupSliceValue, - unmarshal: consumeGroupSliceValue, - isInit: isInitMessageSliceValue, - merge: mergeMessageListValue, -} - -func makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { - num := fd.Number() - if mi := getMessageInfo(ft); mi != nil { - funcs := pointerCoderFuncs{ - size: sizeGroupSliceInfo, - marshal: appendGroupSliceInfo, - unmarshal: consumeGroupSliceInfo, - merge: mergeMessageSlice, - } - if needsInitCheck(mi.Desc) { - funcs.isInit = isInitMessageSliceInfo - } - return funcs - } - return pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return sizeGroupSlice(p, ft, f.tagsize, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - return appendGroupSlice(b, p, f.wiretag, ft, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - return consumeGroupSlice(b, p, num, wtyp, ft, opts) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - return isInitMessageSlice(p, ft) - }, - merge: mergeMessageSlice, - } -} - -func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int { - mopts := opts.Options() - s := p.PointerSlice() - n := 0 - for _, v := range s { - m := asMessage(v.AsValueOf(messageType.Elem())) - n += 2*tagsize + mopts.Size(m) - } - return n -} - -func appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) { - s := p.PointerSlice() - var err error - for _, v := range s { - m := asMessage(v.AsValueOf(messageType.Elem())) - b = protowire.AppendVarint(b, wiretag) // start group - b, err = opts.Options().MarshalAppend(b, m) - if err != nil { - return b, err - } - b = protowire.AppendVarint(b, wiretag+1) // end group - } - return b, nil -} - -func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.StartGroupType { - return out, errUnknown - } - b, n := protowire.ConsumeGroup(num, b) - if n < 0 { - return out, errDecode - } - mp := reflect.New(goType.Elem()) - o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ - Buf: b, - Message: asMessage(mp).ProtoReflect(), - }) - if err != nil { - return out, err - } - p.AppendPointerSlice(pointerOfValue(mp)) - out.n = n - out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 - return out, nil -} - -func sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { - s := p.PointerSlice() - n := 0 - for _, v := range s { - n += 2*f.tagsize + f.mi.sizePointer(v, opts) - } - return n -} - -func appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := p.PointerSlice() - var err error - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) // start group - b, err = f.mi.marshalAppendPointer(b, v, opts) - if err != nil { - return b, err - } - b = protowire.AppendVarint(b, f.wiretag+1) // end group - } - return b, nil -} - -func consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - if wtyp != protowire.StartGroupType { - return unmarshalOutput{}, errUnknown - } - m := reflect.New(f.mi.GoReflectType.Elem()).Interface() - mp := pointerOfIface(m) - out, err := f.mi.unmarshalPointer(b, mp, f.num, opts) - if err != nil { - return out, err - } - p.AppendPointerSlice(mp) - return out, nil -} - -func asMessage(v reflect.Value) protoreflect.ProtoMessage { - if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { - return m - } - return legacyWrapMessage(v).Interface() -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go b/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go deleted file mode 100644 index f55dc01..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +++ /dev/null @@ -1,5724 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package impl - -import ( - "math" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// sizeBool returns the size of wire encoding a bool pointer as a Bool. -func sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Bool() - return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) -} - -// appendBool wire encodes a bool pointer as a Bool. -func appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bool() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v)) - return b, nil -} - -// consumeBool wire decodes a bool pointer as a Bool. -func consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Bool() = protowire.DecodeBool(v) - out.n = n - return out, nil -} - -var coderBool = pointerCoderFuncs{ - size: sizeBool, - marshal: appendBool, - unmarshal: consumeBool, - merge: mergeBool, -} - -// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool. -// The zero value is not encoded. -func sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Bool() - if v == false { - return 0 - } - return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) -} - -// appendBoolNoZero wire encodes a bool pointer as a Bool. -// The zero value is not encoded. -func appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bool() - if v == false { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v)) - return b, nil -} - -var coderBoolNoZero = pointerCoderFuncs{ - size: sizeBoolNoZero, - marshal: appendBoolNoZero, - unmarshal: consumeBool, - merge: mergeBoolNoZero, -} - -// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool. -// It panics if the pointer is nil. -func sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.BoolPtr() - return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) -} - -// appendBoolPtr wire encodes a *bool pointer as a Bool. -// It panics if the pointer is nil. -func appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.BoolPtr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v)) - return b, nil -} - -// consumeBoolPtr wire decodes a *bool pointer as a Bool. -func consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.BoolPtr() - if *vp == nil { - *vp = new(bool) - } - **vp = protowire.DecodeBool(v) - out.n = n - return out, nil -} - -var coderBoolPtr = pointerCoderFuncs{ - size: sizeBoolPtr, - marshal: appendBoolPtr, - unmarshal: consumeBoolPtr, - merge: mergeBoolPtr, -} - -// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool. -func sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.BoolSlice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v)) - } - return size -} - -// appendBoolSlice encodes a []bool pointer as a repeated Bool. -func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.BoolSlice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v)) - } - return b, nil -} - -// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool. -func consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.BoolSlice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growBoolSlice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, protowire.DecodeBool(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, protowire.DecodeBool(v)) - out.n = n - return out, nil -} - -var coderBoolSlice = pointerCoderFuncs{ - size: sizeBoolSlice, - marshal: appendBoolSlice, - unmarshal: consumeBoolSlice, - merge: mergeBoolSlice, -} - -// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool. -func sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.BoolSlice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeBool(v)) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool. -func appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.BoolSlice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeBool(v)) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, protowire.EncodeBool(v)) - } - return b, nil -} - -var coderBoolPackedSlice = pointerCoderFuncs{ - size: sizeBoolPackedSlice, - marshal: appendBoolPackedSlice, - unmarshal: consumeBoolSlice, - merge: mergeBoolSlice, -} - -// sizeBoolValue returns the size of wire encoding a bool value as a Bool. -func sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) -} - -// appendBoolValue encodes a bool value as a Bool. -func appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) - return b, nil -} - -// consumeBoolValue decodes a bool value as a Bool. -func consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil -} - -var coderBoolValue = valueCoderFuncs{ - size: sizeBoolValue, - marshal: appendBoolValue, - unmarshal: consumeBoolValue, - merge: mergeScalarValue, -} - -// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool. -func sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool())) - } - return size -} - -// appendBoolSliceValue encodes a []bool value as a repeated Bool. -func appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) - } - return b, nil -} - -// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool. -func consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) - out.n = n - return listv, out, nil -} - -var coderBoolSliceValue = valueCoderFuncs{ - size: sizeBoolSliceValue, - marshal: appendBoolSliceValue, - unmarshal: consumeBoolSliceValue, - merge: mergeListValue, -} - -// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool. -func sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool. -func appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeBool(v.Bool())) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) - } - return b, nil -} - -var coderBoolPackedSliceValue = valueCoderFuncs{ - size: sizeBoolPackedSliceValue, - marshal: appendBoolPackedSliceValue, - unmarshal: consumeBoolSliceValue, - merge: mergeListValue, -} - -// sizeEnumValue returns the size of wire encoding a value as a Enum. -func sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(uint64(v.Enum())) -} - -// appendEnumValue encodes a value as a Enum. -func appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(v.Enum())) - return b, nil -} - -// consumeEnumValue decodes a value as a Enum. -func consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil -} - -var coderEnumValue = valueCoderFuncs{ - size: sizeEnumValue, - marshal: appendEnumValue, - unmarshal: consumeEnumValue, - merge: mergeScalarValue, -} - -// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum. -func sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(uint64(v.Enum())) - } - return size -} - -// appendEnumSliceValue encodes a [] value as a repeated Enum. -func appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(v.Enum())) - } - return b, nil -} - -// consumeEnumSliceValue wire decodes a [] value as a repeated Enum. -func consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) - out.n = n - return listv, out, nil -} - -var coderEnumSliceValue = valueCoderFuncs{ - size: sizeEnumSliceValue, - marshal: appendEnumSliceValue, - unmarshal: consumeEnumSliceValue, - merge: mergeListValue, -} - -// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum. -func sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(v.Enum())) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum. -func appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(v.Enum())) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, uint64(v.Enum())) - } - return b, nil -} - -var coderEnumPackedSliceValue = valueCoderFuncs{ - size: sizeEnumPackedSliceValue, - marshal: appendEnumPackedSliceValue, - unmarshal: consumeEnumSliceValue, - merge: mergeListValue, -} - -// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32. -func sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int32() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt32 wire encodes a int32 pointer as a Int32. -func appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeInt32 wire decodes a int32 pointer as a Int32. -func consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Int32() = int32(v) - out.n = n - return out, nil -} - -var coderInt32 = pointerCoderFuncs{ - size: sizeInt32, - marshal: appendInt32, - unmarshal: consumeInt32, - merge: mergeInt32, -} - -// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32. -// The zero value is not encoded. -func sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int32() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt32NoZero wire encodes a int32 pointer as a Int32. -// The zero value is not encoded. -func appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -var coderInt32NoZero = pointerCoderFuncs{ - size: sizeInt32NoZero, - marshal: appendInt32NoZero, - unmarshal: consumeInt32, - merge: mergeInt32NoZero, -} - -// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32. -// It panics if the pointer is nil. -func sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Int32Ptr() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt32Ptr wire encodes a *int32 pointer as a Int32. -// It panics if the pointer is nil. -func appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeInt32Ptr wire decodes a *int32 pointer as a Int32. -func consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Int32Ptr() - if *vp == nil { - *vp = new(int32) - } - **vp = int32(v) - out.n = n - return out, nil -} - -var coderInt32Ptr = pointerCoderFuncs{ - size: sizeInt32Ptr, - marshal: appendInt32Ptr, - unmarshal: consumeInt32Ptr, - merge: mergeInt32Ptr, -} - -// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32. -func sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(uint64(v)) - } - return size -} - -// appendInt32Slice encodes a []int32 pointer as a repeated Int32. -func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32. -func consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growInt32Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, int32(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, int32(v)) - out.n = n - return out, nil -} - -var coderInt32Slice = pointerCoderFuncs{ - size: sizeInt32Slice, - marshal: appendInt32Slice, - unmarshal: consumeInt32Slice, - merge: mergeInt32Slice, -} - -// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32. -func sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32. -func appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -var coderInt32PackedSlice = pointerCoderFuncs{ - size: sizeInt32PackedSlice, - marshal: appendInt32PackedSlice, - unmarshal: consumeInt32Slice, - merge: mergeInt32Slice, -} - -// sizeInt32Value returns the size of wire encoding a int32 value as a Int32. -func sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) -} - -// appendInt32Value encodes a int32 value as a Int32. -func appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(int32(v.Int()))) - return b, nil -} - -// consumeInt32Value decodes a int32 value as a Int32. -func consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt32(int32(v)), out, nil -} - -var coderInt32Value = valueCoderFuncs{ - size: sizeInt32Value, - marshal: appendInt32Value, - unmarshal: consumeInt32Value, - merge: mergeScalarValue, -} - -// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32. -func sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(uint64(int32(v.Int()))) - } - return size -} - -// appendInt32SliceValue encodes a []int32 value as a repeated Int32. -func appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(int32(v.Int()))) - } - return b, nil -} - -// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32. -func consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - out.n = n - return listv, out, nil -} - -var coderInt32SliceValue = valueCoderFuncs{ - size: sizeInt32SliceValue, - marshal: appendInt32SliceValue, - unmarshal: consumeInt32SliceValue, - merge: mergeListValue, -} - -// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32. -func sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(int32(v.Int()))) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32. -func appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(int32(v.Int()))) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, uint64(int32(v.Int()))) - } - return b, nil -} - -var coderInt32PackedSliceValue = valueCoderFuncs{ - size: sizeInt32PackedSliceValue, - marshal: appendInt32PackedSliceValue, - unmarshal: consumeInt32SliceValue, - merge: mergeListValue, -} - -// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32. -func sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int32() - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) -} - -// appendSint32 wire encodes a int32 pointer as a Sint32. -func appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) - return b, nil -} - -// consumeSint32 wire decodes a int32 pointer as a Sint32. -func consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32)) - out.n = n - return out, nil -} - -var coderSint32 = pointerCoderFuncs{ - size: sizeSint32, - marshal: appendSint32, - unmarshal: consumeSint32, - merge: mergeInt32, -} - -// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32. -// The zero value is not encoded. -func sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int32() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) -} - -// appendSint32NoZero wire encodes a int32 pointer as a Sint32. -// The zero value is not encoded. -func appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) - return b, nil -} - -var coderSint32NoZero = pointerCoderFuncs{ - size: sizeSint32NoZero, - marshal: appendSint32NoZero, - unmarshal: consumeSint32, - merge: mergeInt32NoZero, -} - -// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32. -// It panics if the pointer is nil. -func sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Int32Ptr() - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) -} - -// appendSint32Ptr wire encodes a *int32 pointer as a Sint32. -// It panics if the pointer is nil. -func appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) - return b, nil -} - -// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32. -func consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Int32Ptr() - if *vp == nil { - *vp = new(int32) - } - **vp = int32(protowire.DecodeZigZag(v & math.MaxUint32)) - out.n = n - return out, nil -} - -var coderSint32Ptr = pointerCoderFuncs{ - size: sizeSint32Ptr, - marshal: appendSint32Ptr, - unmarshal: consumeSint32Ptr, - merge: mergeInt32Ptr, -} - -// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32. -func sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) - } - return size -} - -// appendSint32Slice encodes a []int32 pointer as a repeated Sint32. -func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) - } - return b, nil -} - -// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32. -func consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growInt32Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32))) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32))) - out.n = n - return out, nil -} - -var coderSint32Slice = pointerCoderFuncs{ - size: sizeSint32Slice, - marshal: appendSint32Slice, - unmarshal: consumeSint32Slice, - merge: mergeInt32Slice, -} - -// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32. -func sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32. -func appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v))) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v))) - } - return b, nil -} - -var coderSint32PackedSlice = pointerCoderFuncs{ - size: sizeSint32PackedSlice, - marshal: appendSint32PackedSlice, - unmarshal: consumeSint32Slice, - merge: mergeInt32Slice, -} - -// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32. -func sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) -} - -// appendSint32Value encodes a int32 value as a Sint32. -func appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) - return b, nil -} - -// consumeSint32Value decodes a int32 value as a Sint32. -func consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil -} - -var coderSint32Value = valueCoderFuncs{ - size: sizeSint32Value, - marshal: appendSint32Value, - unmarshal: consumeSint32Value, - merge: mergeScalarValue, -} - -// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32. -func sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) - } - return size -} - -// appendSint32SliceValue encodes a []int32 value as a repeated Sint32. -func appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) - } - return b, nil -} - -// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32. -func consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) - out.n = n - return listv, out, nil -} - -var coderSint32SliceValue = valueCoderFuncs{ - size: sizeSint32SliceValue, - marshal: appendSint32SliceValue, - unmarshal: consumeSint32SliceValue, - merge: mergeListValue, -} - -// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32. -func sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32. -func appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) - } - return b, nil -} - -var coderSint32PackedSliceValue = valueCoderFuncs{ - size: sizeSint32PackedSliceValue, - marshal: appendSint32PackedSliceValue, - unmarshal: consumeSint32SliceValue, - merge: mergeListValue, -} - -// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32. -func sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint32() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendUint32 wire encodes a uint32 pointer as a Uint32. -func appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeUint32 wire decodes a uint32 pointer as a Uint32. -func consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Uint32() = uint32(v) - out.n = n - return out, nil -} - -var coderUint32 = pointerCoderFuncs{ - size: sizeUint32, - marshal: appendUint32, - unmarshal: consumeUint32, - merge: mergeUint32, -} - -// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32. -// The zero value is not encoded. -func sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint32() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendUint32NoZero wire encodes a uint32 pointer as a Uint32. -// The zero value is not encoded. -func appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint32() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -var coderUint32NoZero = pointerCoderFuncs{ - size: sizeUint32NoZero, - marshal: appendUint32NoZero, - unmarshal: consumeUint32, - merge: mergeUint32NoZero, -} - -// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32. -// It panics if the pointer is nil. -func sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Uint32Ptr() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32. -// It panics if the pointer is nil. -func appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Uint32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32. -func consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Uint32Ptr() - if *vp == nil { - *vp = new(uint32) - } - **vp = uint32(v) - out.n = n - return out, nil -} - -var coderUint32Ptr = pointerCoderFuncs{ - size: sizeUint32Ptr, - marshal: appendUint32Ptr, - unmarshal: consumeUint32Ptr, - merge: mergeUint32Ptr, -} - -// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32. -func sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint32Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(uint64(v)) - } - return size -} - -// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32. -func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32. -func consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Uint32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growUint32Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, uint32(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, uint32(v)) - out.n = n - return out, nil -} - -var coderUint32Slice = pointerCoderFuncs{ - size: sizeUint32Slice, - marshal: appendUint32Slice, - unmarshal: consumeUint32Slice, - merge: mergeUint32Slice, -} - -// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32. -func sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint32Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32. -func appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -var coderUint32PackedSlice = pointerCoderFuncs{ - size: sizeUint32PackedSlice, - marshal: appendUint32PackedSlice, - unmarshal: consumeUint32Slice, - merge: mergeUint32Slice, -} - -// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32. -func sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) -} - -// appendUint32Value encodes a uint32 value as a Uint32. -func appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) - return b, nil -} - -// consumeUint32Value decodes a uint32 value as a Uint32. -func consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfUint32(uint32(v)), out, nil -} - -var coderUint32Value = valueCoderFuncs{ - size: sizeUint32Value, - marshal: appendUint32Value, - unmarshal: consumeUint32Value, - merge: mergeScalarValue, -} - -// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32. -func sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint()))) - } - return size -} - -// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32. -func appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) - } - return b, nil -} - -// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32. -func consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - out.n = n - return listv, out, nil -} - -var coderUint32SliceValue = valueCoderFuncs{ - size: sizeUint32SliceValue, - marshal: appendUint32SliceValue, - unmarshal: consumeUint32SliceValue, - merge: mergeListValue, -} - -// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32. -func sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(uint32(v.Uint()))) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32. -func appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(uint32(v.Uint()))) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) - } - return b, nil -} - -var coderUint32PackedSliceValue = valueCoderFuncs{ - size: sizeUint32PackedSliceValue, - marshal: appendUint32PackedSliceValue, - unmarshal: consumeUint32SliceValue, - merge: mergeListValue, -} - -// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64. -func sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int64() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt64 wire encodes a int64 pointer as a Int64. -func appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeInt64 wire decodes a int64 pointer as a Int64. -func consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Int64() = int64(v) - out.n = n - return out, nil -} - -var coderInt64 = pointerCoderFuncs{ - size: sizeInt64, - marshal: appendInt64, - unmarshal: consumeInt64, - merge: mergeInt64, -} - -// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64. -// The zero value is not encoded. -func sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int64() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt64NoZero wire encodes a int64 pointer as a Int64. -// The zero value is not encoded. -func appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -var coderInt64NoZero = pointerCoderFuncs{ - size: sizeInt64NoZero, - marshal: appendInt64NoZero, - unmarshal: consumeInt64, - merge: mergeInt64NoZero, -} - -// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64. -// It panics if the pointer is nil. -func sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Int64Ptr() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -// appendInt64Ptr wire encodes a *int64 pointer as a Int64. -// It panics if the pointer is nil. -func appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -// consumeInt64Ptr wire decodes a *int64 pointer as a Int64. -func consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Int64Ptr() - if *vp == nil { - *vp = new(int64) - } - **vp = int64(v) - out.n = n - return out, nil -} - -var coderInt64Ptr = pointerCoderFuncs{ - size: sizeInt64Ptr, - marshal: appendInt64Ptr, - unmarshal: consumeInt64Ptr, - merge: mergeInt64Ptr, -} - -// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64. -func sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(uint64(v)) - } - return size -} - -// appendInt64Slice encodes a []int64 pointer as a repeated Int64. -func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64. -func consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growInt64Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, int64(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, int64(v)) - out.n = n - return out, nil -} - -var coderInt64Slice = pointerCoderFuncs{ - size: sizeInt64Slice, - marshal: appendInt64Slice, - unmarshal: consumeInt64Slice, - merge: mergeInt64Slice, -} - -// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64. -func sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64. -func appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(uint64(v)) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, uint64(v)) - } - return b, nil -} - -var coderInt64PackedSlice = pointerCoderFuncs{ - size: sizeInt64PackedSlice, - marshal: appendInt64PackedSlice, - unmarshal: consumeInt64Slice, - merge: mergeInt64Slice, -} - -// sizeInt64Value returns the size of wire encoding a int64 value as a Int64. -func sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(uint64(v.Int())) -} - -// appendInt64Value encodes a int64 value as a Int64. -func appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(v.Int())) - return b, nil -} - -// consumeInt64Value decodes a int64 value as a Int64. -func consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt64(int64(v)), out, nil -} - -var coderInt64Value = valueCoderFuncs{ - size: sizeInt64Value, - marshal: appendInt64Value, - unmarshal: consumeInt64Value, - merge: mergeScalarValue, -} - -// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64. -func sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(uint64(v.Int())) - } - return size -} - -// appendInt64SliceValue encodes a []int64 value as a repeated Int64. -func appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(v.Int())) - } - return b, nil -} - -// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64. -func consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - out.n = n - return listv, out, nil -} - -var coderInt64SliceValue = valueCoderFuncs{ - size: sizeInt64SliceValue, - marshal: appendInt64SliceValue, - unmarshal: consumeInt64SliceValue, - merge: mergeListValue, -} - -// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64. -func sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(v.Int())) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64. -func appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(uint64(v.Int())) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, uint64(v.Int())) - } - return b, nil -} - -var coderInt64PackedSliceValue = valueCoderFuncs{ - size: sizeInt64PackedSliceValue, - marshal: appendInt64PackedSliceValue, - unmarshal: consumeInt64SliceValue, - merge: mergeListValue, -} - -// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64. -func sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int64() - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) -} - -// appendSint64 wire encodes a int64 pointer as a Sint64. -func appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) - return b, nil -} - -// consumeSint64 wire decodes a int64 pointer as a Sint64. -func consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Int64() = protowire.DecodeZigZag(v) - out.n = n - return out, nil -} - -var coderSint64 = pointerCoderFuncs{ - size: sizeSint64, - marshal: appendSint64, - unmarshal: consumeSint64, - merge: mergeInt64, -} - -// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64. -// The zero value is not encoded. -func sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int64() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) -} - -// appendSint64NoZero wire encodes a int64 pointer as a Sint64. -// The zero value is not encoded. -func appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) - return b, nil -} - -var coderSint64NoZero = pointerCoderFuncs{ - size: sizeSint64NoZero, - marshal: appendSint64NoZero, - unmarshal: consumeSint64, - merge: mergeInt64NoZero, -} - -// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64. -// It panics if the pointer is nil. -func sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Int64Ptr() - return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) -} - -// appendSint64Ptr wire encodes a *int64 pointer as a Sint64. -// It panics if the pointer is nil. -func appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) - return b, nil -} - -// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64. -func consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Int64Ptr() - if *vp == nil { - *vp = new(int64) - } - **vp = protowire.DecodeZigZag(v) - out.n = n - return out, nil -} - -var coderSint64Ptr = pointerCoderFuncs{ - size: sizeSint64Ptr, - marshal: appendSint64Ptr, - unmarshal: consumeSint64Ptr, - merge: mergeInt64Ptr, -} - -// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64. -func sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v)) - } - return size -} - -// appendSint64Slice encodes a []int64 pointer as a repeated Sint64. -func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) - } - return b, nil -} - -// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64. -func consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growInt64Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, protowire.DecodeZigZag(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, protowire.DecodeZigZag(v)) - out.n = n - return out, nil -} - -var coderSint64Slice = pointerCoderFuncs{ - size: sizeSint64Slice, - marshal: appendSint64Slice, - unmarshal: consumeSint64Slice, - merge: mergeInt64Slice, -} - -// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64. -func sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeZigZag(v)) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64. -func appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(protowire.EncodeZigZag(v)) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v)) - } - return b, nil -} - -var coderSint64PackedSlice = pointerCoderFuncs{ - size: sizeSint64PackedSlice, - marshal: appendSint64PackedSlice, - unmarshal: consumeSint64Slice, - merge: mergeInt64Slice, -} - -// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64. -func sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) -} - -// appendSint64Value encodes a int64 value as a Sint64. -func appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) - return b, nil -} - -// consumeSint64Value decodes a int64 value as a Sint64. -func consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil -} - -var coderSint64Value = valueCoderFuncs{ - size: sizeSint64Value, - marshal: appendSint64Value, - unmarshal: consumeSint64Value, - merge: mergeScalarValue, -} - -// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64. -func sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) - } - return size -} - -// appendSint64SliceValue encodes a []int64 value as a repeated Sint64. -func appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) - } - return b, nil -} - -// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64. -func consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) - out.n = n - return listv, out, nil -} - -var coderSint64SliceValue = valueCoderFuncs{ - size: sizeSint64SliceValue, - marshal: appendSint64SliceValue, - unmarshal: consumeSint64SliceValue, - merge: mergeListValue, -} - -// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64. -func sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64. -func appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) - } - return b, nil -} - -var coderSint64PackedSliceValue = valueCoderFuncs{ - size: sizeSint64PackedSliceValue, - marshal: appendSint64PackedSliceValue, - unmarshal: consumeSint64SliceValue, - merge: mergeListValue, -} - -// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64. -func sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint64() - return f.tagsize + protowire.SizeVarint(v) -} - -// appendUint64 wire encodes a uint64 pointer as a Uint64. -func appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, v) - return b, nil -} - -// consumeUint64 wire decodes a uint64 pointer as a Uint64. -func consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *p.Uint64() = v - out.n = n - return out, nil -} - -var coderUint64 = pointerCoderFuncs{ - size: sizeUint64, - marshal: appendUint64, - unmarshal: consumeUint64, - merge: mergeUint64, -} - -// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64. -// The zero value is not encoded. -func sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint64() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeVarint(v) -} - -// appendUint64NoZero wire encodes a uint64 pointer as a Uint64. -// The zero value is not encoded. -func appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint64() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, v) - return b, nil -} - -var coderUint64NoZero = pointerCoderFuncs{ - size: sizeUint64NoZero, - marshal: appendUint64NoZero, - unmarshal: consumeUint64, - merge: mergeUint64NoZero, -} - -// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64. -// It panics if the pointer is nil. -func sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.Uint64Ptr() - return f.tagsize + protowire.SizeVarint(v) -} - -// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64. -// It panics if the pointer is nil. -func appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Uint64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, v) - return b, nil -} - -// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64. -func consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - vp := p.Uint64Ptr() - if *vp == nil { - *vp = new(uint64) - } - **vp = v - out.n = n - return out, nil -} - -var coderUint64Ptr = pointerCoderFuncs{ - size: sizeUint64Ptr, - marshal: appendUint64Ptr, - unmarshal: consumeUint64Ptr, - merge: mergeUint64Ptr, -} - -// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64. -func sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint64Slice() - for _, v := range s { - size += f.tagsize + protowire.SizeVarint(v) - } - return size -} - -// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64. -func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, v) - } - return b, nil -} - -// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64. -func consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Uint64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := 0 - for _, v := range b { - if v < 0x80 { - count++ - } - } - if count > 0 { - p.growUint64Slice(count) - } - s := *sp - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - s = append(s, v) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return out, errDecode - } - *sp = append(*sp, v) - out.n = n - return out, nil -} - -var coderUint64Slice = pointerCoderFuncs{ - size: sizeUint64Slice, - marshal: appendUint64Slice, - unmarshal: consumeUint64Slice, - merge: mergeUint64Slice, -} - -// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64. -func sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint64Slice() - if len(s) == 0 { - return 0 - } - n := 0 - for _, v := range s { - n += protowire.SizeVarint(v) - } - return f.tagsize + protowire.SizeBytes(n) -} - -// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64. -func appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for _, v := range s { - n += protowire.SizeVarint(v) - } - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendVarint(b, v) - } - return b, nil -} - -var coderUint64PackedSlice = pointerCoderFuncs{ - size: sizeUint64PackedSlice, - marshal: appendUint64PackedSlice, - unmarshal: consumeUint64Slice, - merge: mergeUint64Slice, -} - -// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64. -func sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeVarint(v.Uint()) -} - -// appendUint64Value encodes a uint64 value as a Uint64. -func appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, v.Uint()) - return b, nil -} - -// consumeUint64Value decodes a uint64 value as a Uint64. -func consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfUint64(v), out, nil -} - -var coderUint64Value = valueCoderFuncs{ - size: sizeUint64Value, - marshal: appendUint64Value, - unmarshal: consumeUint64Value, - merge: mergeScalarValue, -} - -// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64. -func sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeVarint(v.Uint()) - } - return size -} - -// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64. -func appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, v.Uint()) - } - return b, nil -} - -// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64. -func consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.VarintType { - return protoreflect.Value{}, out, errUnknown - } - var v uint64 - var n int - if len(b) >= 1 && b[0] < 0x80 { - v = uint64(b[0]) - n = 1 - } else if len(b) >= 2 && b[1] < 128 { - v = uint64(b[0]&0x7f) + uint64(b[1])<<7 - n = 2 - } else { - v, n = protowire.ConsumeVarint(b) - } - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - out.n = n - return listv, out, nil -} - -var coderUint64SliceValue = valueCoderFuncs{ - size: sizeUint64SliceValue, - marshal: appendUint64SliceValue, - unmarshal: consumeUint64SliceValue, - merge: mergeListValue, -} - -// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64. -func sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := 0 - for i, llen := 0, llen; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(v.Uint()) - } - return tagsize + protowire.SizeBytes(n) -} - -// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64. -func appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := 0 - for i := 0; i < llen; i++ { - v := list.Get(i) - n += protowire.SizeVarint(v.Uint()) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, v.Uint()) - } - return b, nil -} - -var coderUint64PackedSliceValue = valueCoderFuncs{ - size: sizeUint64PackedSliceValue, - marshal: appendUint64PackedSliceValue, - unmarshal: consumeUint64SliceValue, - merge: mergeListValue, -} - -// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32. -func sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed32() -} - -// appendSfixed32 wire encodes a int32 pointer as a Sfixed32. -func appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, uint32(v)) - return b, nil -} - -// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32. -func consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *p.Int32() = int32(v) - out.n = n - return out, nil -} - -var coderSfixed32 = pointerCoderFuncs{ - size: sizeSfixed32, - marshal: appendSfixed32, - unmarshal: consumeSfixed32, - merge: mergeInt32, -} - -// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32. -// The zero value is not encoded. -func sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int32() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeFixed32() -} - -// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32. -// The zero value is not encoded. -func appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int32() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, uint32(v)) - return b, nil -} - -var coderSfixed32NoZero = pointerCoderFuncs{ - size: sizeSfixed32NoZero, - marshal: appendSfixed32NoZero, - unmarshal: consumeSfixed32, - merge: mergeInt32NoZero, -} - -// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32. -// It panics if the pointer is nil. -func sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed32() -} - -// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32. -// It panics if the pointer is nil. -func appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, uint32(v)) - return b, nil -} - -// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32. -func consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - vp := p.Int32Ptr() - if *vp == nil { - *vp = new(int32) - } - **vp = int32(v) - out.n = n - return out, nil -} - -var coderSfixed32Ptr = pointerCoderFuncs{ - size: sizeSfixed32Ptr, - marshal: appendSfixed32Ptr, - unmarshal: consumeSfixed32Ptr, - merge: mergeInt32Ptr, -} - -// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32. -func sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed32()) - return size -} - -// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32. -func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, uint32(v)) - } - return b, nil -} - -// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32. -func consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed32() - if count > 0 { - p.growInt32Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - s = append(s, int32(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, int32(v)) - out.n = n - return out, nil -} - -var coderSfixed32Slice = pointerCoderFuncs{ - size: sizeSfixed32Slice, - marshal: appendSfixed32Slice, - unmarshal: consumeSfixed32Slice, - merge: mergeInt32Slice, -} - -// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32. -func sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int32Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed32() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32. -func appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed32(b, uint32(v)) - } - return b, nil -} - -var coderSfixed32PackedSlice = pointerCoderFuncs{ - size: sizeSfixed32PackedSlice, - marshal: appendSfixed32PackedSlice, - unmarshal: consumeSfixed32Slice, - merge: mergeInt32Slice, -} - -// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32. -func sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed32() -} - -// appendSfixed32Value encodes a int32 value as a Sfixed32. -func appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, uint32(v.Int())) - return b, nil -} - -// consumeSfixed32Value decodes a int32 value as a Sfixed32. -func consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt32(int32(v)), out, nil -} - -var coderSfixed32Value = valueCoderFuncs{ - size: sizeSfixed32Value, - marshal: appendSfixed32Value, - unmarshal: consumeSfixed32Value, - merge: mergeScalarValue, -} - -// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32. -func sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed32()) - return size -} - -// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32. -func appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, uint32(v.Int())) - } - return b, nil -} - -// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32. -func consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - out.n = n - return listv, out, nil -} - -var coderSfixed32SliceValue = valueCoderFuncs{ - size: sizeSfixed32SliceValue, - marshal: appendSfixed32SliceValue, - unmarshal: consumeSfixed32SliceValue, - merge: mergeListValue, -} - -// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32. -func sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed32() - return tagsize + protowire.SizeBytes(n) -} - -// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32. -func appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed32(b, uint32(v.Int())) - } - return b, nil -} - -var coderSfixed32PackedSliceValue = valueCoderFuncs{ - size: sizeSfixed32PackedSliceValue, - marshal: appendSfixed32PackedSliceValue, - unmarshal: consumeSfixed32SliceValue, - merge: mergeListValue, -} - -// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32. -func sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed32() -} - -// appendFixed32 wire encodes a uint32 pointer as a Fixed32. -func appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, v) - return b, nil -} - -// consumeFixed32 wire decodes a uint32 pointer as a Fixed32. -func consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *p.Uint32() = v - out.n = n - return out, nil -} - -var coderFixed32 = pointerCoderFuncs{ - size: sizeFixed32, - marshal: appendFixed32, - unmarshal: consumeFixed32, - merge: mergeUint32, -} - -// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32. -// The zero value is not encoded. -func sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint32() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeFixed32() -} - -// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32. -// The zero value is not encoded. -func appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint32() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, v) - return b, nil -} - -var coderFixed32NoZero = pointerCoderFuncs{ - size: sizeFixed32NoZero, - marshal: appendFixed32NoZero, - unmarshal: consumeFixed32, - merge: mergeUint32NoZero, -} - -// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32. -// It panics if the pointer is nil. -func sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed32() -} - -// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32. -// It panics if the pointer is nil. -func appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Uint32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, v) - return b, nil -} - -// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32. -func consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - vp := p.Uint32Ptr() - if *vp == nil { - *vp = new(uint32) - } - **vp = v - out.n = n - return out, nil -} - -var coderFixed32Ptr = pointerCoderFuncs{ - size: sizeFixed32Ptr, - marshal: appendFixed32Ptr, - unmarshal: consumeFixed32Ptr, - merge: mergeUint32Ptr, -} - -// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32. -func sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint32Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed32()) - return size -} - -// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32. -func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, v) - } - return b, nil -} - -// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32. -func consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Uint32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed32() - if count > 0 { - p.growUint32Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - s = append(s, v) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, v) - out.n = n - return out, nil -} - -var coderFixed32Slice = pointerCoderFuncs{ - size: sizeFixed32Slice, - marshal: appendFixed32Slice, - unmarshal: consumeFixed32Slice, - merge: mergeUint32Slice, -} - -// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32. -func sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint32Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed32() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32. -func appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed32(b, v) - } - return b, nil -} - -var coderFixed32PackedSlice = pointerCoderFuncs{ - size: sizeFixed32PackedSlice, - marshal: appendFixed32PackedSlice, - unmarshal: consumeFixed32Slice, - merge: mergeUint32Slice, -} - -// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32. -func sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed32() -} - -// appendFixed32Value encodes a uint32 value as a Fixed32. -func appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, uint32(v.Uint())) - return b, nil -} - -// consumeFixed32Value decodes a uint32 value as a Fixed32. -func consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfUint32(uint32(v)), out, nil -} - -var coderFixed32Value = valueCoderFuncs{ - size: sizeFixed32Value, - marshal: appendFixed32Value, - unmarshal: consumeFixed32Value, - merge: mergeScalarValue, -} - -// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32. -func sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed32()) - return size -} - -// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32. -func appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, uint32(v.Uint())) - } - return b, nil -} - -// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32. -func consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - out.n = n - return listv, out, nil -} - -var coderFixed32SliceValue = valueCoderFuncs{ - size: sizeFixed32SliceValue, - marshal: appendFixed32SliceValue, - unmarshal: consumeFixed32SliceValue, - merge: mergeListValue, -} - -// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32. -func sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed32() - return tagsize + protowire.SizeBytes(n) -} - -// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32. -func appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed32(b, uint32(v.Uint())) - } - return b, nil -} - -var coderFixed32PackedSliceValue = valueCoderFuncs{ - size: sizeFixed32PackedSliceValue, - marshal: appendFixed32PackedSliceValue, - unmarshal: consumeFixed32SliceValue, - merge: mergeListValue, -} - -// sizeFloat returns the size of wire encoding a float32 pointer as a Float. -func sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed32() -} - -// appendFloat wire encodes a float32 pointer as a Float. -func appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Float32() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(v)) - return b, nil -} - -// consumeFloat wire decodes a float32 pointer as a Float. -func consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *p.Float32() = math.Float32frombits(v) - out.n = n - return out, nil -} - -var coderFloat = pointerCoderFuncs{ - size: sizeFloat, - marshal: appendFloat, - unmarshal: consumeFloat, - merge: mergeFloat32, -} - -// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float. -// The zero value is not encoded. -func sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Float32() - if v == 0 && !math.Signbit(float64(v)) { - return 0 - } - return f.tagsize + protowire.SizeFixed32() -} - -// appendFloatNoZero wire encodes a float32 pointer as a Float. -// The zero value is not encoded. -func appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Float32() - if v == 0 && !math.Signbit(float64(v)) { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(v)) - return b, nil -} - -var coderFloatNoZero = pointerCoderFuncs{ - size: sizeFloatNoZero, - marshal: appendFloatNoZero, - unmarshal: consumeFloat, - merge: mergeFloat32NoZero, -} - -// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float. -// It panics if the pointer is nil. -func sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed32() -} - -// appendFloatPtr wire encodes a *float32 pointer as a Float. -// It panics if the pointer is nil. -func appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Float32Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(v)) - return b, nil -} - -// consumeFloatPtr wire decodes a *float32 pointer as a Float. -func consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - vp := p.Float32Ptr() - if *vp == nil { - *vp = new(float32) - } - **vp = math.Float32frombits(v) - out.n = n - return out, nil -} - -var coderFloatPtr = pointerCoderFuncs{ - size: sizeFloatPtr, - marshal: appendFloatPtr, - unmarshal: consumeFloatPtr, - merge: mergeFloat32Ptr, -} - -// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float. -func sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Float32Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed32()) - return size -} - -// appendFloatSlice encodes a []float32 pointer as a repeated Float. -func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Float32Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(v)) - } - return b, nil -} - -// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float. -func consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Float32Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed32() - if count > 0 { - p.growFloat32Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - s = append(s, math.Float32frombits(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed32Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, math.Float32frombits(v)) - out.n = n - return out, nil -} - -var coderFloatSlice = pointerCoderFuncs{ - size: sizeFloatSlice, - marshal: appendFloatSlice, - unmarshal: consumeFloatSlice, - merge: mergeFloat32Slice, -} - -// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float. -func sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Float32Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed32() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float. -func appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Float32Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed32(b, math.Float32bits(v)) - } - return b, nil -} - -var coderFloatPackedSlice = pointerCoderFuncs{ - size: sizeFloatPackedSlice, - marshal: appendFloatPackedSlice, - unmarshal: consumeFloatSlice, - merge: mergeFloat32Slice, -} - -// sizeFloatValue returns the size of wire encoding a float32 value as a Float. -func sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed32() -} - -// appendFloatValue encodes a float32 value as a Float. -func appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) - return b, nil -} - -// consumeFloatValue decodes a float32 value as a Float. -func consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil -} - -var coderFloatValue = valueCoderFuncs{ - size: sizeFloatValue, - marshal: appendFloatValue, - unmarshal: consumeFloatValue, - merge: mergeScalarValue, -} - -// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float. -func sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed32()) - return size -} - -// appendFloatSliceValue encodes a []float32 value as a repeated Float. -func appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) - } - return b, nil -} - -// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float. -func consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed32Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) - out.n = n - return listv, out, nil -} - -var coderFloatSliceValue = valueCoderFuncs{ - size: sizeFloatSliceValue, - marshal: appendFloatSliceValue, - unmarshal: consumeFloatSliceValue, - merge: mergeListValue, -} - -// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float. -func sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed32() - return tagsize + protowire.SizeBytes(n) -} - -// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float. -func appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed32() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) - } - return b, nil -} - -var coderFloatPackedSliceValue = valueCoderFuncs{ - size: sizeFloatPackedSliceValue, - marshal: appendFloatPackedSliceValue, - unmarshal: consumeFloatSliceValue, - merge: mergeListValue, -} - -// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64. -func sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed64() -} - -// appendSfixed64 wire encodes a int64 pointer as a Sfixed64. -func appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, uint64(v)) - return b, nil -} - -// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64. -func consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *p.Int64() = int64(v) - out.n = n - return out, nil -} - -var coderSfixed64 = pointerCoderFuncs{ - size: sizeSfixed64, - marshal: appendSfixed64, - unmarshal: consumeSfixed64, - merge: mergeInt64, -} - -// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64. -// The zero value is not encoded. -func sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Int64() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeFixed64() -} - -// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64. -// The zero value is not encoded. -func appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Int64() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, uint64(v)) - return b, nil -} - -var coderSfixed64NoZero = pointerCoderFuncs{ - size: sizeSfixed64NoZero, - marshal: appendSfixed64NoZero, - unmarshal: consumeSfixed64, - merge: mergeInt64NoZero, -} - -// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64. -// It panics if the pointer is nil. -func sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed64() -} - -// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64. -// It panics if the pointer is nil. -func appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Int64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, uint64(v)) - return b, nil -} - -// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64. -func consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - vp := p.Int64Ptr() - if *vp == nil { - *vp = new(int64) - } - **vp = int64(v) - out.n = n - return out, nil -} - -var coderSfixed64Ptr = pointerCoderFuncs{ - size: sizeSfixed64Ptr, - marshal: appendSfixed64Ptr, - unmarshal: consumeSfixed64Ptr, - merge: mergeInt64Ptr, -} - -// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64. -func sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed64()) - return size -} - -// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64. -func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, uint64(v)) - } - return b, nil -} - -// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64. -func consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Int64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed64() - if count > 0 { - p.growInt64Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - s = append(s, int64(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, int64(v)) - out.n = n - return out, nil -} - -var coderSfixed64Slice = pointerCoderFuncs{ - size: sizeSfixed64Slice, - marshal: appendSfixed64Slice, - unmarshal: consumeSfixed64Slice, - merge: mergeInt64Slice, -} - -// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64. -func sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Int64Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed64() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64. -func appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Int64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed64(b, uint64(v)) - } - return b, nil -} - -var coderSfixed64PackedSlice = pointerCoderFuncs{ - size: sizeSfixed64PackedSlice, - marshal: appendSfixed64PackedSlice, - unmarshal: consumeSfixed64Slice, - merge: mergeInt64Slice, -} - -// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64. -func sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed64() -} - -// appendSfixed64Value encodes a int64 value as a Sfixed64. -func appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, uint64(v.Int())) - return b, nil -} - -// consumeSfixed64Value decodes a int64 value as a Sfixed64. -func consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfInt64(int64(v)), out, nil -} - -var coderSfixed64Value = valueCoderFuncs{ - size: sizeSfixed64Value, - marshal: appendSfixed64Value, - unmarshal: consumeSfixed64Value, - merge: mergeScalarValue, -} - -// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64. -func sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed64()) - return size -} - -// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64. -func appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, uint64(v.Int())) - } - return b, nil -} - -// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64. -func consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - out.n = n - return listv, out, nil -} - -var coderSfixed64SliceValue = valueCoderFuncs{ - size: sizeSfixed64SliceValue, - marshal: appendSfixed64SliceValue, - unmarshal: consumeSfixed64SliceValue, - merge: mergeListValue, -} - -// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64. -func sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed64() - return tagsize + protowire.SizeBytes(n) -} - -// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64. -func appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed64(b, uint64(v.Int())) - } - return b, nil -} - -var coderSfixed64PackedSliceValue = valueCoderFuncs{ - size: sizeSfixed64PackedSliceValue, - marshal: appendSfixed64PackedSliceValue, - unmarshal: consumeSfixed64SliceValue, - merge: mergeListValue, -} - -// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64. -func sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed64() -} - -// appendFixed64 wire encodes a uint64 pointer as a Fixed64. -func appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, v) - return b, nil -} - -// consumeFixed64 wire decodes a uint64 pointer as a Fixed64. -func consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *p.Uint64() = v - out.n = n - return out, nil -} - -var coderFixed64 = pointerCoderFuncs{ - size: sizeFixed64, - marshal: appendFixed64, - unmarshal: consumeFixed64, - merge: mergeUint64, -} - -// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64. -// The zero value is not encoded. -func sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Uint64() - if v == 0 { - return 0 - } - return f.tagsize + protowire.SizeFixed64() -} - -// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64. -// The zero value is not encoded. -func appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Uint64() - if v == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, v) - return b, nil -} - -var coderFixed64NoZero = pointerCoderFuncs{ - size: sizeFixed64NoZero, - marshal: appendFixed64NoZero, - unmarshal: consumeFixed64, - merge: mergeUint64NoZero, -} - -// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64. -// It panics if the pointer is nil. -func sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed64() -} - -// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64. -// It panics if the pointer is nil. -func appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Uint64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, v) - return b, nil -} - -// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64. -func consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - vp := p.Uint64Ptr() - if *vp == nil { - *vp = new(uint64) - } - **vp = v - out.n = n - return out, nil -} - -var coderFixed64Ptr = pointerCoderFuncs{ - size: sizeFixed64Ptr, - marshal: appendFixed64Ptr, - unmarshal: consumeFixed64Ptr, - merge: mergeUint64Ptr, -} - -// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64. -func sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint64Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed64()) - return size -} - -// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64. -func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, v) - } - return b, nil -} - -// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64. -func consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Uint64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed64() - if count > 0 { - p.growUint64Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - s = append(s, v) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, v) - out.n = n - return out, nil -} - -var coderFixed64Slice = pointerCoderFuncs{ - size: sizeFixed64Slice, - marshal: appendFixed64Slice, - unmarshal: consumeFixed64Slice, - merge: mergeUint64Slice, -} - -// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64. -func sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Uint64Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed64() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64. -func appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Uint64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed64(b, v) - } - return b, nil -} - -var coderFixed64PackedSlice = pointerCoderFuncs{ - size: sizeFixed64PackedSlice, - marshal: appendFixed64PackedSlice, - unmarshal: consumeFixed64Slice, - merge: mergeUint64Slice, -} - -// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64. -func sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed64() -} - -// appendFixed64Value encodes a uint64 value as a Fixed64. -func appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, v.Uint()) - return b, nil -} - -// consumeFixed64Value decodes a uint64 value as a Fixed64. -func consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfUint64(v), out, nil -} - -var coderFixed64Value = valueCoderFuncs{ - size: sizeFixed64Value, - marshal: appendFixed64Value, - unmarshal: consumeFixed64Value, - merge: mergeScalarValue, -} - -// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64. -func sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed64()) - return size -} - -// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64. -func appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, v.Uint()) - } - return b, nil -} - -// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64. -func consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - out.n = n - return listv, out, nil -} - -var coderFixed64SliceValue = valueCoderFuncs{ - size: sizeFixed64SliceValue, - marshal: appendFixed64SliceValue, - unmarshal: consumeFixed64SliceValue, - merge: mergeListValue, -} - -// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64. -func sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed64() - return tagsize + protowire.SizeBytes(n) -} - -// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64. -func appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed64(b, v.Uint()) - } - return b, nil -} - -var coderFixed64PackedSliceValue = valueCoderFuncs{ - size: sizeFixed64PackedSliceValue, - marshal: appendFixed64PackedSliceValue, - unmarshal: consumeFixed64SliceValue, - merge: mergeListValue, -} - -// sizeDouble returns the size of wire encoding a float64 pointer as a Double. -func sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - - return f.tagsize + protowire.SizeFixed64() -} - -// appendDouble wire encodes a float64 pointer as a Double. -func appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Float64() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v)) - return b, nil -} - -// consumeDouble wire decodes a float64 pointer as a Double. -func consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *p.Float64() = math.Float64frombits(v) - out.n = n - return out, nil -} - -var coderDouble = pointerCoderFuncs{ - size: sizeDouble, - marshal: appendDouble, - unmarshal: consumeDouble, - merge: mergeFloat64, -} - -// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double. -// The zero value is not encoded. -func sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Float64() - if v == 0 && !math.Signbit(float64(v)) { - return 0 - } - return f.tagsize + protowire.SizeFixed64() -} - -// appendDoubleNoZero wire encodes a float64 pointer as a Double. -// The zero value is not encoded. -func appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Float64() - if v == 0 && !math.Signbit(float64(v)) { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v)) - return b, nil -} - -var coderDoubleNoZero = pointerCoderFuncs{ - size: sizeDoubleNoZero, - marshal: appendDoubleNoZero, - unmarshal: consumeDouble, - merge: mergeFloat64NoZero, -} - -// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double. -// It panics if the pointer is nil. -func sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return f.tagsize + protowire.SizeFixed64() -} - -// appendDoublePtr wire encodes a *float64 pointer as a Double. -// It panics if the pointer is nil. -func appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.Float64Ptr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v)) - return b, nil -} - -// consumeDoublePtr wire decodes a *float64 pointer as a Double. -func consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - vp := p.Float64Ptr() - if *vp == nil { - *vp = new(float64) - } - **vp = math.Float64frombits(v) - out.n = n - return out, nil -} - -var coderDoublePtr = pointerCoderFuncs{ - size: sizeDoublePtr, - marshal: appendDoublePtr, - unmarshal: consumeDoublePtr, - merge: mergeFloat64Ptr, -} - -// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double. -func sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Float64Slice() - size = len(s) * (f.tagsize + protowire.SizeFixed64()) - return size -} - -// appendDoubleSlice encodes a []float64 pointer as a repeated Double. -func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Float64Slice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v)) - } - return b, nil -} - -// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double. -func consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.Float64Slice() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - count := len(b) / protowire.SizeFixed64() - if count > 0 { - p.growFloat64Slice(count) - } - s := *sp - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - s = append(s, math.Float64frombits(v)) - b = b[n:] - } - *sp = s - out.n = n - return out, nil - } - if wtyp != protowire.Fixed64Type { - return out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, math.Float64frombits(v)) - out.n = n - return out, nil -} - -var coderDoubleSlice = pointerCoderFuncs{ - size: sizeDoubleSlice, - marshal: appendDoubleSlice, - unmarshal: consumeDoubleSlice, - merge: mergeFloat64Slice, -} - -// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double. -func sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.Float64Slice() - if len(s) == 0 { - return 0 - } - n := len(s) * protowire.SizeFixed64() - return f.tagsize + protowire.SizeBytes(n) -} - -// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double. -func appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.Float64Slice() - if len(s) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := len(s) * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for _, v := range s { - b = protowire.AppendFixed64(b, math.Float64bits(v)) - } - return b, nil -} - -var coderDoublePackedSlice = pointerCoderFuncs{ - size: sizeDoublePackedSlice, - marshal: appendDoublePackedSlice, - unmarshal: consumeDoubleSlice, - merge: mergeFloat64Slice, -} - -// sizeDoubleValue returns the size of wire encoding a float64 value as a Double. -func sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeFixed64() -} - -// appendDoubleValue encodes a float64 value as a Double. -func appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) - return b, nil -} - -// consumeDoubleValue decodes a float64 value as a Double. -func consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil -} - -var coderDoubleValue = valueCoderFuncs{ - size: sizeDoubleValue, - marshal: appendDoubleValue, - unmarshal: consumeDoubleValue, - merge: mergeScalarValue, -} - -// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double. -func sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - size = list.Len() * (tagsize + protowire.SizeFixed64()) - return size -} - -// appendDoubleSliceValue encodes a []float64 value as a repeated Double. -func appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) - } - return b, nil -} - -// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double. -func consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) - b = b[n:] - } - out.n = n - return listv, out, nil - } - if wtyp != protowire.Fixed64Type { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) - out.n = n - return listv, out, nil -} - -var coderDoubleSliceValue = valueCoderFuncs{ - size: sizeDoubleSliceValue, - marshal: appendDoubleSliceValue, - unmarshal: consumeDoubleSliceValue, - merge: mergeListValue, -} - -// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double. -func sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return 0 - } - n := llen * protowire.SizeFixed64() - return tagsize + protowire.SizeBytes(n) -} - -// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double. -func appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - llen := list.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, wiretag) - n := llen * protowire.SizeFixed64() - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - v := list.Get(i) - b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) - } - return b, nil -} - -var coderDoublePackedSliceValue = valueCoderFuncs{ - size: sizeDoublePackedSliceValue, - marshal: appendDoublePackedSliceValue, - unmarshal: consumeDoubleSliceValue, - merge: mergeListValue, -} - -// sizeString returns the size of wire encoding a string pointer as a String. -func sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.String() - return f.tagsize + protowire.SizeBytes(len(v)) -} - -// appendString wire encodes a string pointer as a String. -func appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.String() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - return b, nil -} - -// consumeString wire decodes a string pointer as a String. -func consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - *p.String() = string(v) - out.n = n - return out, nil -} - -var coderString = pointerCoderFuncs{ - size: sizeString, - marshal: appendString, - unmarshal: consumeString, - merge: mergeString, -} - -// appendStringValidateUTF8 wire encodes a string pointer as a String. -func appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.String() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - if !utf8.ValidString(v) { - return b, errInvalidUTF8{} - } - return b, nil -} - -// consumeStringValidateUTF8 wire decodes a string pointer as a String. -func consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - *p.String() = string(v) - out.n = n - return out, nil -} - -var coderStringValidateUTF8 = pointerCoderFuncs{ - size: sizeString, - marshal: appendStringValidateUTF8, - unmarshal: consumeStringValidateUTF8, - merge: mergeString, -} - -// sizeStringNoZero returns the size of wire encoding a string pointer as a String. -// The zero value is not encoded. -func sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.String() - if len(v) == 0 { - return 0 - } - return f.tagsize + protowire.SizeBytes(len(v)) -} - -// appendStringNoZero wire encodes a string pointer as a String. -// The zero value is not encoded. -func appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.String() - if len(v) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - return b, nil -} - -var coderStringNoZero = pointerCoderFuncs{ - size: sizeStringNoZero, - marshal: appendStringNoZero, - unmarshal: consumeString, - merge: mergeStringNoZero, -} - -// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String. -// The zero value is not encoded. -func appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.String() - if len(v) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - if !utf8.ValidString(v) { - return b, errInvalidUTF8{} - } - return b, nil -} - -var coderStringNoZeroValidateUTF8 = pointerCoderFuncs{ - size: sizeStringNoZero, - marshal: appendStringNoZeroValidateUTF8, - unmarshal: consumeStringValidateUTF8, - merge: mergeStringNoZero, -} - -// sizeStringPtr returns the size of wire encoding a *string pointer as a String. -// It panics if the pointer is nil. -func sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := **p.StringPtr() - return f.tagsize + protowire.SizeBytes(len(v)) -} - -// appendStringPtr wire encodes a *string pointer as a String. -// It panics if the pointer is nil. -func appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.StringPtr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - return b, nil -} - -// consumeStringPtr wire decodes a *string pointer as a String. -func consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - vp := p.StringPtr() - if *vp == nil { - *vp = new(string) - } - **vp = string(v) - out.n = n - return out, nil -} - -var coderStringPtr = pointerCoderFuncs{ - size: sizeStringPtr, - marshal: appendStringPtr, - unmarshal: consumeStringPtr, - merge: mergeStringPtr, -} - -// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String. -// It panics if the pointer is nil. -func appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := **p.StringPtr() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - if !utf8.ValidString(v) { - return b, errInvalidUTF8{} - } - return b, nil -} - -// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String. -func consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - vp := p.StringPtr() - if *vp == nil { - *vp = new(string) - } - **vp = string(v) - out.n = n - return out, nil -} - -var coderStringPtrValidateUTF8 = pointerCoderFuncs{ - size: sizeStringPtr, - marshal: appendStringPtrValidateUTF8, - unmarshal: consumeStringPtrValidateUTF8, - merge: mergeStringPtr, -} - -// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String. -func sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.StringSlice() - for _, v := range s { - size += f.tagsize + protowire.SizeBytes(len(v)) - } - return size -} - -// appendStringSlice encodes a []string pointer as a repeated String. -func appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.StringSlice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - } - return b, nil -} - -// consumeStringSlice wire decodes a []string pointer as a repeated String. -func consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.StringSlice() - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, string(v)) - out.n = n - return out, nil -} - -var coderStringSlice = pointerCoderFuncs{ - size: sizeStringSlice, - marshal: appendStringSlice, - unmarshal: consumeStringSlice, - merge: mergeStringSlice, -} - -// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String. -func appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.StringSlice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendString(b, v) - if !utf8.ValidString(v) { - return b, errInvalidUTF8{} - } - } - return b, nil -} - -// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String. -func consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - sp := p.StringSlice() - *sp = append(*sp, string(v)) - out.n = n - return out, nil -} - -var coderStringSliceValidateUTF8 = pointerCoderFuncs{ - size: sizeStringSlice, - marshal: appendStringSliceValidateUTF8, - unmarshal: consumeStringSliceValidateUTF8, - merge: mergeStringSlice, -} - -// sizeStringValue returns the size of wire encoding a string value as a String. -func sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeBytes(len(v.String())) -} - -// appendStringValue encodes a string value as a String. -func appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendString(b, v.String()) - return b, nil -} - -// consumeStringValue decodes a string value as a String. -func consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfString(string(v)), out, nil -} - -var coderStringValue = valueCoderFuncs{ - size: sizeStringValue, - marshal: appendStringValue, - unmarshal: consumeStringValue, - merge: mergeScalarValue, -} - -// appendStringValueValidateUTF8 encodes a string value as a String. -func appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendString(b, v.String()) - if !utf8.ValidString(v.String()) { - return b, errInvalidUTF8{} - } - return b, nil -} - -// consumeStringValueValidateUTF8 decodes a string value as a String. -func consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - if !utf8.Valid(v) { - return protoreflect.Value{}, out, errInvalidUTF8{} - } - out.n = n - return protoreflect.ValueOfString(string(v)), out, nil -} - -var coderStringValueValidateUTF8 = valueCoderFuncs{ - size: sizeStringValue, - marshal: appendStringValueValidateUTF8, - unmarshal: consumeStringValueValidateUTF8, - merge: mergeScalarValue, -} - -// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String. -func sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeBytes(len(v.String())) - } - return size -} - -// appendStringSliceValue encodes a []string value as a repeated String. -func appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendString(b, v.String()) - } - return b, nil -} - -// consumeStringSliceValue wire decodes a []string value as a repeated String. -func consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfString(string(v))) - out.n = n - return listv, out, nil -} - -var coderStringSliceValue = valueCoderFuncs{ - size: sizeStringSliceValue, - marshal: appendStringSliceValue, - unmarshal: consumeStringSliceValue, - merge: mergeListValue, -} - -// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes. -func sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Bytes() - return f.tagsize + protowire.SizeBytes(len(v)) -} - -// appendBytes wire encodes a []byte pointer as a Bytes. -func appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bytes() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - return b, nil -} - -// consumeBytes wire decodes a []byte pointer as a Bytes. -func consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - *p.Bytes() = append(emptyBuf[:], v...) - out.n = n - return out, nil -} - -var coderBytes = pointerCoderFuncs{ - size: sizeBytes, - marshal: appendBytes, - unmarshal: consumeBytes, - merge: mergeBytes, -} - -// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes. -func appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bytes() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - if !utf8.Valid(v) { - return b, errInvalidUTF8{} - } - return b, nil -} - -// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes. -func consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - *p.Bytes() = append(emptyBuf[:], v...) - out.n = n - return out, nil -} - -var coderBytesValidateUTF8 = pointerCoderFuncs{ - size: sizeBytes, - marshal: appendBytesValidateUTF8, - unmarshal: consumeBytesValidateUTF8, - merge: mergeBytes, -} - -// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes. -// The zero value is not encoded. -func sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - v := *p.Bytes() - if len(v) == 0 { - return 0 - } - return f.tagsize + protowire.SizeBytes(len(v)) -} - -// appendBytesNoZero wire encodes a []byte pointer as a Bytes. -// The zero value is not encoded. -func appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bytes() - if len(v) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - return b, nil -} - -// consumeBytesNoZero wire decodes a []byte pointer as a Bytes. -// The zero value is not decoded. -func consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - *p.Bytes() = append(([]byte)(nil), v...) - out.n = n - return out, nil -} - -var coderBytesNoZero = pointerCoderFuncs{ - size: sizeBytesNoZero, - marshal: appendBytesNoZero, - unmarshal: consumeBytesNoZero, - merge: mergeBytesNoZero, -} - -// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes. -// The zero value is not encoded. -func appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := *p.Bytes() - if len(v) == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - if !utf8.Valid(v) { - return b, errInvalidUTF8{} - } - return b, nil -} - -// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes. -func consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - *p.Bytes() = append(([]byte)(nil), v...) - out.n = n - return out, nil -} - -var coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{ - size: sizeBytesNoZero, - marshal: appendBytesNoZeroValidateUTF8, - unmarshal: consumeBytesNoZeroValidateUTF8, - merge: mergeBytesNoZero, -} - -// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes. -func sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := *p.BytesSlice() - for _, v := range s { - size += f.tagsize + protowire.SizeBytes(len(v)) - } - return size -} - -// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes. -func appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.BytesSlice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - } - return b, nil -} - -// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes. -func consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - sp := p.BytesSlice() - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - *sp = append(*sp, append(emptyBuf[:], v...)) - out.n = n - return out, nil -} - -var coderBytesSlice = pointerCoderFuncs{ - size: sizeBytesSlice, - marshal: appendBytesSlice, - unmarshal: consumeBytesSlice, - merge: mergeBytesSlice, -} - -// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes. -func appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := *p.BytesSlice() - for _, v := range s { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendBytes(b, v) - if !utf8.Valid(v) { - return b, errInvalidUTF8{} - } - } - return b, nil -} - -// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes. -func consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - if !utf8.Valid(v) { - return out, errInvalidUTF8{} - } - sp := p.BytesSlice() - *sp = append(*sp, append(emptyBuf[:], v...)) - out.n = n - return out, nil -} - -var coderBytesSliceValidateUTF8 = pointerCoderFuncs{ - size: sizeBytesSlice, - marshal: appendBytesSliceValidateUTF8, - unmarshal: consumeBytesSliceValidateUTF8, - merge: mergeBytesSlice, -} - -// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes. -func sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { - return tagsize + protowire.SizeBytes(len(v.Bytes())) -} - -// appendBytesValue encodes a []byte value as a Bytes. -func appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendBytes(b, v.Bytes()) - return b, nil -} - -// consumeBytesValue decodes a []byte value as a Bytes. -func consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - out.n = n - return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil -} - -var coderBytesValue = valueCoderFuncs{ - size: sizeBytesValue, - marshal: appendBytesValue, - unmarshal: consumeBytesValue, - merge: mergeBytesValue, -} - -// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes. -func sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - size += tagsize + protowire.SizeBytes(len(v.Bytes())) - } - return size -} - -// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes. -func appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { - list := listv.List() - for i, llen := 0, list.Len(); i < llen; i++ { - v := list.Get(i) - b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendBytes(b, v.Bytes()) - } - return b, nil -} - -// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes. -func consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { - list := listv.List() - if wtyp != protowire.BytesType { - return protoreflect.Value{}, out, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return protoreflect.Value{}, out, errDecode - } - list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) - out.n = n - return listv, out, nil -} - -var coderBytesSliceValue = valueCoderFuncs{ - size: sizeBytesSliceValue, - marshal: appendBytesSliceValue, - unmarshal: consumeBytesSliceValue, - merge: mergeBytesListValue, -} - -// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. -var emptyBuf [0]byte - -var wireTypes = map[protoreflect.Kind]protowire.Type{ - protoreflect.BoolKind: protowire.VarintType, - protoreflect.EnumKind: protowire.VarintType, - protoreflect.Int32Kind: protowire.VarintType, - protoreflect.Sint32Kind: protowire.VarintType, - protoreflect.Uint32Kind: protowire.VarintType, - protoreflect.Int64Kind: protowire.VarintType, - protoreflect.Sint64Kind: protowire.VarintType, - protoreflect.Uint64Kind: protowire.VarintType, - protoreflect.Sfixed32Kind: protowire.Fixed32Type, - protoreflect.Fixed32Kind: protowire.Fixed32Type, - protoreflect.FloatKind: protowire.Fixed32Type, - protoreflect.Sfixed64Kind: protowire.Fixed64Type, - protoreflect.Fixed64Kind: protowire.Fixed64Type, - protoreflect.DoubleKind: protowire.Fixed64Type, - protoreflect.StringKind: protowire.BytesType, - protoreflect.BytesKind: protowire.BytesType, - protoreflect.MessageKind: protowire.BytesType, - protoreflect.GroupKind: protowire.StartGroupType, -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go deleted file mode 100644 index fb35f0b..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +++ /dev/null @@ -1,399 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "reflect" - "sort" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type mapInfo struct { - goType reflect.Type - keyWiretag uint64 - valWiretag uint64 - keyFuncs valueCoderFuncs - valFuncs valueCoderFuncs - keyZero protoreflect.Value - keyKind protoreflect.Kind - conv *mapConverter -} - -func encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) { - // TODO: Consider generating specialized map coders. - keyField := fd.MapKey() - valField := fd.MapValue() - keyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()]) - valWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()]) - keyFuncs := encoderFuncsForValue(keyField) - valFuncs := encoderFuncsForValue(valField) - conv := newMapConverter(ft, fd) - - mapi := &mapInfo{ - goType: ft, - keyWiretag: keyWiretag, - valWiretag: valWiretag, - keyFuncs: keyFuncs, - valFuncs: valFuncs, - keyZero: keyField.Default(), - keyKind: keyField.Kind(), - conv: conv, - } - if valField.Kind() == protoreflect.MessageKind { - valueMessage = getMessageInfo(ft.Elem()) - } - - funcs = pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts) - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - return appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts) - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - mp := p.AsValueOf(ft) - if mp.Elem().IsNil() { - mp.Elem().Set(reflect.MakeMap(mapi.goType)) - } - if f.mi == nil { - return consumeMap(b, mp.Elem(), wtyp, mapi, f, opts) - } else { - return consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts) - } - }, - } - switch valField.Kind() { - case protoreflect.MessageKind: - funcs.merge = mergeMapOfMessage - case protoreflect.BytesKind: - funcs.merge = mergeMapOfBytes - default: - funcs.merge = mergeMap - } - if valFuncs.isInit != nil { - funcs.isInit = func(p pointer, f *coderFieldInfo) error { - return isInitMap(p.AsValueOf(ft).Elem(), mapi, f) - } - } - return valueMessage, funcs -} - -const ( - mapKeyTagSize = 1 // field 1, tag size 1. - mapValTagSize = 1 // field 2, tag size 2. -) - -func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int { - if mapv.Len() == 0 { - return 0 - } - n := 0 - iter := mapRange(mapv) - for iter.Next() { - key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey() - keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) - var valSize int - value := mapi.conv.valConv.PBValueOf(iter.Value()) - if f.mi == nil { - valSize = mapi.valFuncs.size(value, mapValTagSize, opts) - } else { - p := pointerOfValue(iter.Value()) - valSize += mapValTagSize - valSize += protowire.SizeBytes(f.mi.sizePointer(p, opts)) - } - n += f.tagsize + protowire.SizeBytes(keySize+valSize) - } - return n -} - -func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - var ( - key = mapi.keyZero - val = mapi.conv.valConv.New() - ) - for len(b) > 0 { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return out, errDecode - } - if num > protowire.MaxValidNumber { - return out, errDecode - } - b = b[n:] - err := errUnknown - switch num { - case genid.MapEntry_Key_field_number: - var v protoreflect.Value - var o unmarshalOutput - v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) - if err != nil { - break - } - key = v - n = o.n - case genid.MapEntry_Value_field_number: - var v protoreflect.Value - var o unmarshalOutput - v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts) - if err != nil { - break - } - val = v - n = o.n - } - if err == errUnknown { - n = protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return out, errDecode - } - } else if err != nil { - return out, err - } - b = b[n:] - } - mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val)) - out.n = n - return out, nil -} - -func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.BytesType { - return out, errUnknown - } - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - var ( - key = mapi.keyZero - val = reflect.New(f.mi.GoReflectType.Elem()) - ) - for len(b) > 0 { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return out, errDecode - } - if num > protowire.MaxValidNumber { - return out, errDecode - } - b = b[n:] - err := errUnknown - switch num { - case 1: - var v protoreflect.Value - var o unmarshalOutput - v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) - if err != nil { - break - } - key = v - n = o.n - case 2: - if wtyp != protowire.BytesType { - break - } - var v []byte - v, n = protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - var o unmarshalOutput - o, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts) - if o.initialized { - // Consider this map item initialized so long as we see - // an initialized value. - out.initialized = true - } - } - if err == errUnknown { - n = protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return out, errDecode - } - } else if err != nil { - return out, err - } - b = b[n:] - } - mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val) - out.n = n - return out, nil -} - -func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - if f.mi == nil { - key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() - val := mapi.conv.valConv.PBValueOf(valrv) - size := 0 - size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) - size += mapi.valFuncs.size(val, mapValTagSize, opts) - b = protowire.AppendVarint(b, uint64(size)) - before := len(b) - b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) - if err != nil { - return nil, err - } - b, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts) - if measuredSize := len(b) - before; size != measuredSize && err == nil { - return nil, errors.MismatchedSizeCalculation(size, measuredSize) - } - return b, err - } else { - key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() - val := pointerOfValue(valrv) - valSize := f.mi.sizePointer(val, opts) - size := 0 - size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) - size += mapValTagSize + protowire.SizeBytes(valSize) - b = protowire.AppendVarint(b, uint64(size)) - b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) - if err != nil { - return nil, err - } - b = protowire.AppendVarint(b, mapi.valWiretag) - b = protowire.AppendVarint(b, uint64(valSize)) - before := len(b) - b, err = f.mi.marshalAppendPointer(b, val, opts) - if measuredSize := len(b) - before; valSize != measuredSize && err == nil { - return nil, errors.MismatchedSizeCalculation(valSize, measuredSize) - } - return b, err - } -} - -func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - if mapv.Len() == 0 { - return b, nil - } - if opts.Deterministic() { - return appendMapDeterministic(b, mapv, mapi, f, opts) - } - iter := mapRange(mapv) - for iter.Next() { - var err error - b = protowire.AppendVarint(b, f.wiretag) - b, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts) - if err != nil { - return b, err - } - } - return b, nil -} - -func appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - keys := mapv.MapKeys() - sort.Slice(keys, func(i, j int) bool { - switch keys[i].Kind() { - case reflect.Bool: - return !keys[i].Bool() && keys[j].Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return keys[i].Int() < keys[j].Int() - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return keys[i].Uint() < keys[j].Uint() - case reflect.Float32, reflect.Float64: - return keys[i].Float() < keys[j].Float() - case reflect.String: - return keys[i].String() < keys[j].String() - default: - panic("invalid kind: " + keys[i].Kind().String()) - } - }) - for _, key := range keys { - var err error - b = protowire.AppendVarint(b, f.wiretag) - b, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts) - if err != nil { - return b, err - } - } - return b, nil -} - -func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error { - if mi := f.mi; mi != nil { - mi.init() - if !mi.needsInitCheck { - return nil - } - iter := mapRange(mapv) - for iter.Next() { - val := pointerOfValue(iter.Value()) - if err := mi.checkInitializedPointer(val); err != nil { - return err - } - } - } else { - iter := mapRange(mapv) - for iter.Next() { - val := mapi.conv.valConv.PBValueOf(iter.Value()) - if err := mapi.valFuncs.isInit(val); err != nil { - return err - } - } - } - return nil -} - -func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - dstm := dst.AsValueOf(f.ft).Elem() - srcm := src.AsValueOf(f.ft).Elem() - if srcm.Len() == 0 { - return - } - if dstm.IsNil() { - dstm.Set(reflect.MakeMap(f.ft)) - } - iter := mapRange(srcm) - for iter.Next() { - dstm.SetMapIndex(iter.Key(), iter.Value()) - } -} - -func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - dstm := dst.AsValueOf(f.ft).Elem() - srcm := src.AsValueOf(f.ft).Elem() - if srcm.Len() == 0 { - return - } - if dstm.IsNil() { - dstm.Set(reflect.MakeMap(f.ft)) - } - iter := mapRange(srcm) - for iter.Next() { - dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...))) - } -} - -func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - dstm := dst.AsValueOf(f.ft).Elem() - srcm := src.AsValueOf(f.ft).Elem() - if srcm.Len() == 0 { - return - } - if dstm.IsNil() { - dstm.Set(reflect.MakeMap(f.ft)) - } - iter := mapRange(srcm) - for iter.Next() { - val := reflect.New(f.ft.Elem().Elem()) - if f.mi != nil { - f.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts) - } else { - opts.Merge(asMessage(val), asMessage(iter.Value())) - } - dstm.SetMapIndex(iter.Key(), val) - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go deleted file mode 100644 index 4b15493..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.12 -// +build !go1.12 - -package impl - -import "reflect" - -type mapIter struct { - v reflect.Value - keys []reflect.Value -} - -// mapRange provides a less-efficient equivalent to -// the Go 1.12 reflect.Value.MapRange method. -func mapRange(v reflect.Value) *mapIter { - return &mapIter{v: v} -} - -func (i *mapIter) Next() bool { - if i.keys == nil { - i.keys = i.v.MapKeys() - } else { - i.keys = i.keys[1:] - } - return len(i.keys) > 0 -} - -func (i *mapIter) Key() reflect.Value { - return i.keys[0] -} - -func (i *mapIter) Value() reflect.Value { - return i.v.MapIndex(i.keys[0]) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go deleted file mode 100644 index 0b31b66..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.12 -// +build go1.12 - -package impl - -import "reflect" - -func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go deleted file mode 100644 index 78be9df..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "sort" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/order" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// coderMessageInfo contains per-message information used by the fast-path functions. -// This is a different type from MessageInfo to keep MessageInfo as general-purpose as -// possible. -type coderMessageInfo struct { - methods protoiface.Methods - - orderedCoderFields []*coderFieldInfo - denseCoderFields []*coderFieldInfo - coderFields map[protowire.Number]*coderFieldInfo - sizecacheOffset offset - unknownOffset offset - unknownPtrKind bool - extensionOffset offset - needsInitCheck bool - isMessageSet bool - numRequiredFields uint8 -} - -type coderFieldInfo struct { - funcs pointerCoderFuncs // fast-path per-field functions - mi *MessageInfo // field's message - ft reflect.Type - validation validationInfo // information used by message validation - num protoreflect.FieldNumber // field number - offset offset // struct field offset - wiretag uint64 // field tag (number + wire type) - tagsize int // size of the varint-encoded tag - isPointer bool // true if IsNil may be called on the struct field - isRequired bool // true if field is required -} - -func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { - mi.sizecacheOffset = invalidOffset - mi.unknownOffset = invalidOffset - mi.extensionOffset = invalidOffset - - if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType { - mi.sizecacheOffset = si.sizecacheOffset - } - if si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) { - mi.unknownOffset = si.unknownOffset - mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr - } - if si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType { - mi.extensionOffset = si.extensionOffset - } - - mi.coderFields = make(map[protowire.Number]*coderFieldInfo) - fields := mi.Desc.Fields() - preallocFields := make([]coderFieldInfo, fields.Len()) - for i := 0; i < fields.Len(); i++ { - fd := fields.Get(i) - - fs := si.fieldsByNumber[fd.Number()] - isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() - if isOneof { - fs = si.oneofsByName[fd.ContainingOneof().Name()] - } - ft := fs.Type - var wiretag uint64 - if !fd.IsPacked() { - wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()]) - } else { - wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType) - } - var fieldOffset offset - var funcs pointerCoderFuncs - var childMessage *MessageInfo - switch { - case ft == nil: - // This never occurs for generated message types. - // It implies that a hand-crafted type has missing Go fields - // for specific protobuf message fields. - funcs = pointerCoderFuncs{ - size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int { - return 0 - }, - marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - return nil, nil - }, - unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) { - panic("missing Go struct field for " + string(fd.FullName())) - }, - isInit: func(p pointer, f *coderFieldInfo) error { - panic("missing Go struct field for " + string(fd.FullName())) - }, - merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - panic("missing Go struct field for " + string(fd.FullName())) - }, - } - case isOneof: - fieldOffset = offsetOf(fs, mi.Exporter) - case fd.IsWeak(): - fieldOffset = si.weakOffset - funcs = makeWeakMessageFieldCoder(fd) - default: - fieldOffset = offsetOf(fs, mi.Exporter) - childMessage, funcs = fieldCoder(fd, ft) - } - cf := &preallocFields[i] - *cf = coderFieldInfo{ - num: fd.Number(), - offset: fieldOffset, - wiretag: wiretag, - ft: ft, - tagsize: protowire.SizeVarint(wiretag), - funcs: funcs, - mi: childMessage, - validation: newFieldValidationInfo(mi, si, fd, ft), - isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(), - isRequired: fd.Cardinality() == protoreflect.Required, - } - mi.orderedCoderFields = append(mi.orderedCoderFields, cf) - mi.coderFields[cf.num] = cf - } - for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ { - if od := oneofs.Get(i); !od.IsSynthetic() { - mi.initOneofFieldCoders(od, si) - } - } - if messageset.IsMessageSet(mi.Desc) { - if !mi.extensionOffset.IsValid() { - panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName())) - } - if !mi.unknownOffset.IsValid() { - panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName())) - } - mi.isMessageSet = true - } - sort.Slice(mi.orderedCoderFields, func(i, j int) bool { - return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num - }) - - var maxDense protoreflect.FieldNumber - for _, cf := range mi.orderedCoderFields { - if cf.num >= 16 && cf.num >= 2*maxDense { - break - } - maxDense = cf.num - } - mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1) - for _, cf := range mi.orderedCoderFields { - if int(cf.num) >= len(mi.denseCoderFields) { - break - } - mi.denseCoderFields[cf.num] = cf - } - - // To preserve compatibility with historic wire output, marshal oneofs last. - if mi.Desc.Oneofs().Len() > 0 { - sort.Slice(mi.orderedCoderFields, func(i, j int) bool { - fi := fields.ByNumber(mi.orderedCoderFields[i].num) - fj := fields.ByNumber(mi.orderedCoderFields[j].num) - return order.LegacyFieldOrder(fi, fj) - }) - } - - mi.needsInitCheck = needsInitCheck(mi.Desc) - if mi.methods.Marshal == nil && mi.methods.Size == nil { - mi.methods.Flags |= protoiface.SupportMarshalDeterministic - mi.methods.Marshal = mi.marshal - mi.methods.Size = mi.size - } - if mi.methods.Unmarshal == nil { - mi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown - mi.methods.Unmarshal = mi.unmarshal - } - if mi.methods.CheckInitialized == nil { - mi.methods.CheckInitialized = mi.checkInitialized - } - if mi.methods.Merge == nil { - mi.methods.Merge = mi.merge - } - if mi.methods.Equal == nil { - mi.methods.Equal = equal - } -} - -// getUnknownBytes returns a *[]byte for the unknown fields. -// It is the caller's responsibility to check whether the pointer is nil. -// This function is specially designed to be inlineable. -func (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte { - if mi.unknownPtrKind { - return *p.Apply(mi.unknownOffset).BytesPtr() - } else { - return p.Apply(mi.unknownOffset).Bytes() - } -} - -// mutableUnknownBytes returns a *[]byte for the unknown fields. -// The returned pointer is guaranteed to not be nil. -func (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte { - if mi.unknownPtrKind { - bp := p.Apply(mi.unknownOffset).BytesPtr() - if *bp == nil { - *bp = new([]byte) - } - return *bp - } else { - return p.Apply(mi.unknownOffset).Bytes() - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go deleted file mode 100644 index 7a16ec1..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "sort" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" -) - -func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) { - if !flags.ProtoLegacy { - return 0 - } - - ext := *p.Apply(mi.extensionOffset).Extensions() - for _, x := range ext { - xi := getExtensionFieldInfo(x.Type()) - if xi.funcs.size == nil { - continue - } - num, _ := protowire.DecodeTag(xi.wiretag) - size += messageset.SizeField(num) - if fullyLazyExtensions(opts) { - // Don't expand the extension, instead use the buffer to calculate size - if lb := x.lazyBuffer(); lb != nil { - // We got hold of the buffer, so it's still lazy. - // Don't count the tag size in the extension buffer, it's already added. - size += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize - continue - } - } - size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts) - } - - if u := mi.getUnknownBytes(p); u != nil { - size += messageset.SizeUnknown(*u) - } - - return size -} - -func marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) { - if !flags.ProtoLegacy { - return b, errors.New("no support for message_set_wire_format") - } - - ext := *p.Apply(mi.extensionOffset).Extensions() - switch len(ext) { - case 0: - case 1: - // Fast-path for one extension: Don't bother sorting the keys. - for _, x := range ext { - var err error - b, err = marshalMessageSetField(mi, b, x, opts) - if err != nil { - return b, err - } - } - default: - // Sort the keys to provide a deterministic encoding. - // Not sure this is required, but the old code does it. - keys := make([]int, 0, len(ext)) - for k := range ext { - keys = append(keys, int(k)) - } - sort.Ints(keys) - for _, k := range keys { - var err error - b, err = marshalMessageSetField(mi, b, ext[int32(k)], opts) - if err != nil { - return b, err - } - } - } - - if u := mi.getUnknownBytes(p); u != nil { - var err error - b, err = messageset.AppendUnknown(b, *u) - if err != nil { - return b, err - } - } - - return b, nil -} - -func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) { - xi := getExtensionFieldInfo(x.Type()) - num, _ := protowire.DecodeTag(xi.wiretag) - b = messageset.AppendFieldStart(b, num) - - if fullyLazyExtensions(opts) { - // Don't expand the extension if it's still in wire format, instead use the buffer content. - if lb := x.lazyBuffer(); lb != nil { - // The tag inside the lazy buffer is a different tag (the extension - // number), but what we need here is the tag for FieldMessage: - b = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType)) - b = append(b, lb[xi.tagsize:]...) - b = messageset.AppendFieldEnd(b) - return b, nil - } - } - - b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts) - if err != nil { - return b, err - } - b = messageset.AppendFieldEnd(b) - return b, nil -} - -func unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) { - if !flags.ProtoLegacy { - return out, errors.New("no support for message_set_wire_format") - } - - ep := p.Apply(mi.extensionOffset).Extensions() - if *ep == nil { - *ep = make(map[int32]ExtensionField) - } - ext := *ep - initialized := true - err = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error { - o, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts) - if err == errUnknown { - u := mi.mutableUnknownBytes(p) - *u = protowire.AppendTag(*u, num, protowire.BytesType) - *u = append(*u, v...) - return nil - } - if !o.initialized { - initialized = false - } - return err - }) - out.n = len(b) - out.initialized = initialized - return out, err -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go deleted file mode 100644 index 1307775..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +++ /dev/null @@ -1,557 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// pointerCoderFuncs is a set of pointer encoding functions. -type pointerCoderFuncs struct { - mi *MessageInfo - size func(p pointer, f *coderFieldInfo, opts marshalOptions) int - marshal func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) - unmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) - isInit func(p pointer, f *coderFieldInfo) error - merge func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) -} - -// valueCoderFuncs is a set of protoreflect.Value encoding functions. -type valueCoderFuncs struct { - size func(v protoreflect.Value, tagsize int, opts marshalOptions) int - marshal func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) - unmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) - isInit func(v protoreflect.Value) error - merge func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value -} - -// fieldCoder returns pointer functions for a field, used for operating on -// struct fields. -func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) { - switch { - case fd.IsMap(): - return encoderFuncsForMap(fd, ft) - case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): - // Repeated fields (not packed). - if ft.Kind() != reflect.Slice { - break - } - ft := ft.Elem() - switch fd.Kind() { - case protoreflect.BoolKind: - if ft.Kind() == reflect.Bool { - return nil, coderBoolSlice - } - case protoreflect.EnumKind: - if ft.Kind() == reflect.Int32 { - return nil, coderEnumSlice - } - case protoreflect.Int32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderInt32Slice - } - case protoreflect.Sint32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSint32Slice - } - case protoreflect.Uint32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderUint32Slice - } - case protoreflect.Int64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderInt64Slice - } - case protoreflect.Sint64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSint64Slice - } - case protoreflect.Uint64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderUint64Slice - } - case protoreflect.Sfixed32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSfixed32Slice - } - case protoreflect.Fixed32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderFixed32Slice - } - case protoreflect.FloatKind: - if ft.Kind() == reflect.Float32 { - return nil, coderFloatSlice - } - case protoreflect.Sfixed64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSfixed64Slice - } - case protoreflect.Fixed64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderFixed64Slice - } - case protoreflect.DoubleKind: - if ft.Kind() == reflect.Float64 { - return nil, coderDoubleSlice - } - case protoreflect.StringKind: - if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { - return nil, coderStringSliceValidateUTF8 - } - if ft.Kind() == reflect.String { - return nil, coderStringSlice - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { - return nil, coderBytesSliceValidateUTF8 - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytesSlice - } - case protoreflect.BytesKind: - if ft.Kind() == reflect.String { - return nil, coderStringSlice - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytesSlice - } - case protoreflect.MessageKind: - return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft) - case protoreflect.GroupKind: - return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft) - } - case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): - // Packed repeated fields. - // - // Only repeated fields of primitive numeric types - // (Varint, Fixed32, or Fixed64 wire type) can be packed. - if ft.Kind() != reflect.Slice { - break - } - ft := ft.Elem() - switch fd.Kind() { - case protoreflect.BoolKind: - if ft.Kind() == reflect.Bool { - return nil, coderBoolPackedSlice - } - case protoreflect.EnumKind: - if ft.Kind() == reflect.Int32 { - return nil, coderEnumPackedSlice - } - case protoreflect.Int32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderInt32PackedSlice - } - case protoreflect.Sint32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSint32PackedSlice - } - case protoreflect.Uint32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderUint32PackedSlice - } - case protoreflect.Int64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderInt64PackedSlice - } - case protoreflect.Sint64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSint64PackedSlice - } - case protoreflect.Uint64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderUint64PackedSlice - } - case protoreflect.Sfixed32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSfixed32PackedSlice - } - case protoreflect.Fixed32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderFixed32PackedSlice - } - case protoreflect.FloatKind: - if ft.Kind() == reflect.Float32 { - return nil, coderFloatPackedSlice - } - case protoreflect.Sfixed64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSfixed64PackedSlice - } - case protoreflect.Fixed64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderFixed64PackedSlice - } - case protoreflect.DoubleKind: - if ft.Kind() == reflect.Float64 { - return nil, coderDoublePackedSlice - } - } - case fd.Kind() == protoreflect.MessageKind: - return getMessageInfo(ft), makeMessageFieldCoder(fd, ft) - case fd.Kind() == protoreflect.GroupKind: - return getMessageInfo(ft), makeGroupFieldCoder(fd, ft) - case !fd.HasPresence() && fd.ContainingOneof() == nil: - // Populated oneof fields always encode even if set to the zero value, - // which normally are not encoded in proto3. - switch fd.Kind() { - case protoreflect.BoolKind: - if ft.Kind() == reflect.Bool { - return nil, coderBoolNoZero - } - case protoreflect.EnumKind: - if ft.Kind() == reflect.Int32 { - return nil, coderEnumNoZero - } - case protoreflect.Int32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderInt32NoZero - } - case protoreflect.Sint32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSint32NoZero - } - case protoreflect.Uint32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderUint32NoZero - } - case protoreflect.Int64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderInt64NoZero - } - case protoreflect.Sint64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSint64NoZero - } - case protoreflect.Uint64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderUint64NoZero - } - case protoreflect.Sfixed32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSfixed32NoZero - } - case protoreflect.Fixed32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderFixed32NoZero - } - case protoreflect.FloatKind: - if ft.Kind() == reflect.Float32 { - return nil, coderFloatNoZero - } - case protoreflect.Sfixed64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSfixed64NoZero - } - case protoreflect.Fixed64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderFixed64NoZero - } - case protoreflect.DoubleKind: - if ft.Kind() == reflect.Float64 { - return nil, coderDoubleNoZero - } - case protoreflect.StringKind: - if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { - return nil, coderStringNoZeroValidateUTF8 - } - if ft.Kind() == reflect.String { - return nil, coderStringNoZero - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { - return nil, coderBytesNoZeroValidateUTF8 - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytesNoZero - } - case protoreflect.BytesKind: - if ft.Kind() == reflect.String { - return nil, coderStringNoZero - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytesNoZero - } - } - case ft.Kind() == reflect.Ptr: - ft := ft.Elem() - switch fd.Kind() { - case protoreflect.BoolKind: - if ft.Kind() == reflect.Bool { - return nil, coderBoolPtr - } - case protoreflect.EnumKind: - if ft.Kind() == reflect.Int32 { - return nil, coderEnumPtr - } - case protoreflect.Int32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderInt32Ptr - } - case protoreflect.Sint32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSint32Ptr - } - case protoreflect.Uint32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderUint32Ptr - } - case protoreflect.Int64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderInt64Ptr - } - case protoreflect.Sint64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSint64Ptr - } - case protoreflect.Uint64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderUint64Ptr - } - case protoreflect.Sfixed32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSfixed32Ptr - } - case protoreflect.Fixed32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderFixed32Ptr - } - case protoreflect.FloatKind: - if ft.Kind() == reflect.Float32 { - return nil, coderFloatPtr - } - case protoreflect.Sfixed64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSfixed64Ptr - } - case protoreflect.Fixed64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderFixed64Ptr - } - case protoreflect.DoubleKind: - if ft.Kind() == reflect.Float64 { - return nil, coderDoublePtr - } - case protoreflect.StringKind: - if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { - return nil, coderStringPtrValidateUTF8 - } - if ft.Kind() == reflect.String { - return nil, coderStringPtr - } - case protoreflect.BytesKind: - if ft.Kind() == reflect.String { - return nil, coderStringPtr - } - } - default: - switch fd.Kind() { - case protoreflect.BoolKind: - if ft.Kind() == reflect.Bool { - return nil, coderBool - } - case protoreflect.EnumKind: - if ft.Kind() == reflect.Int32 { - return nil, coderEnum - } - case protoreflect.Int32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderInt32 - } - case protoreflect.Sint32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSint32 - } - case protoreflect.Uint32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderUint32 - } - case protoreflect.Int64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderInt64 - } - case protoreflect.Sint64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSint64 - } - case protoreflect.Uint64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderUint64 - } - case protoreflect.Sfixed32Kind: - if ft.Kind() == reflect.Int32 { - return nil, coderSfixed32 - } - case protoreflect.Fixed32Kind: - if ft.Kind() == reflect.Uint32 { - return nil, coderFixed32 - } - case protoreflect.FloatKind: - if ft.Kind() == reflect.Float32 { - return nil, coderFloat - } - case protoreflect.Sfixed64Kind: - if ft.Kind() == reflect.Int64 { - return nil, coderSfixed64 - } - case protoreflect.Fixed64Kind: - if ft.Kind() == reflect.Uint64 { - return nil, coderFixed64 - } - case protoreflect.DoubleKind: - if ft.Kind() == reflect.Float64 { - return nil, coderDouble - } - case protoreflect.StringKind: - if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { - return nil, coderStringValidateUTF8 - } - if ft.Kind() == reflect.String { - return nil, coderString - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) { - return nil, coderBytesValidateUTF8 - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytes - } - case protoreflect.BytesKind: - if ft.Kind() == reflect.String { - return nil, coderString - } - if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { - return nil, coderBytes - } - } - } - panic(fmt.Sprintf("invalid type: no encoder for %v %v %v/%v", fd.FullName(), fd.Cardinality(), fd.Kind(), ft)) -} - -// encoderFuncsForValue returns value functions for a field, used for -// extension values and map encoding. -func encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs { - switch { - case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): - switch fd.Kind() { - case protoreflect.BoolKind: - return coderBoolSliceValue - case protoreflect.EnumKind: - return coderEnumSliceValue - case protoreflect.Int32Kind: - return coderInt32SliceValue - case protoreflect.Sint32Kind: - return coderSint32SliceValue - case protoreflect.Uint32Kind: - return coderUint32SliceValue - case protoreflect.Int64Kind: - return coderInt64SliceValue - case protoreflect.Sint64Kind: - return coderSint64SliceValue - case protoreflect.Uint64Kind: - return coderUint64SliceValue - case protoreflect.Sfixed32Kind: - return coderSfixed32SliceValue - case protoreflect.Fixed32Kind: - return coderFixed32SliceValue - case protoreflect.FloatKind: - return coderFloatSliceValue - case protoreflect.Sfixed64Kind: - return coderSfixed64SliceValue - case protoreflect.Fixed64Kind: - return coderFixed64SliceValue - case protoreflect.DoubleKind: - return coderDoubleSliceValue - case protoreflect.StringKind: - // We don't have a UTF-8 validating coder for repeated string fields. - // Value coders are used for extensions and maps. - // Extensions are never proto3, and maps never contain lists. - return coderStringSliceValue - case protoreflect.BytesKind: - return coderBytesSliceValue - case protoreflect.MessageKind: - return coderMessageSliceValue - case protoreflect.GroupKind: - return coderGroupSliceValue - } - case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): - switch fd.Kind() { - case protoreflect.BoolKind: - return coderBoolPackedSliceValue - case protoreflect.EnumKind: - return coderEnumPackedSliceValue - case protoreflect.Int32Kind: - return coderInt32PackedSliceValue - case protoreflect.Sint32Kind: - return coderSint32PackedSliceValue - case protoreflect.Uint32Kind: - return coderUint32PackedSliceValue - case protoreflect.Int64Kind: - return coderInt64PackedSliceValue - case protoreflect.Sint64Kind: - return coderSint64PackedSliceValue - case protoreflect.Uint64Kind: - return coderUint64PackedSliceValue - case protoreflect.Sfixed32Kind: - return coderSfixed32PackedSliceValue - case protoreflect.Fixed32Kind: - return coderFixed32PackedSliceValue - case protoreflect.FloatKind: - return coderFloatPackedSliceValue - case protoreflect.Sfixed64Kind: - return coderSfixed64PackedSliceValue - case protoreflect.Fixed64Kind: - return coderFixed64PackedSliceValue - case protoreflect.DoubleKind: - return coderDoublePackedSliceValue - } - default: - switch fd.Kind() { - default: - case protoreflect.BoolKind: - return coderBoolValue - case protoreflect.EnumKind: - return coderEnumValue - case protoreflect.Int32Kind: - return coderInt32Value - case protoreflect.Sint32Kind: - return coderSint32Value - case protoreflect.Uint32Kind: - return coderUint32Value - case protoreflect.Int64Kind: - return coderInt64Value - case protoreflect.Sint64Kind: - return coderSint64Value - case protoreflect.Uint64Kind: - return coderUint64Value - case protoreflect.Sfixed32Kind: - return coderSfixed32Value - case protoreflect.Fixed32Kind: - return coderFixed32Value - case protoreflect.FloatKind: - return coderFloatValue - case protoreflect.Sfixed64Kind: - return coderSfixed64Value - case protoreflect.Fixed64Kind: - return coderFixed64Value - case protoreflect.DoubleKind: - return coderDoubleValue - case protoreflect.StringKind: - if strs.EnforceUTF8(fd) { - return coderStringValueValidateUTF8 - } - return coderStringValue - case protoreflect.BytesKind: - return coderBytesValue - case protoreflect.MessageKind: - return coderMessageValue - case protoreflect.GroupKind: - return coderGroupValue - } - } - panic(fmt.Sprintf("invalid field: no encoder for %v %v %v", fd.FullName(), fd.Cardinality(), fd.Kind())) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go deleted file mode 100644 index 077712c..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -// When using unsafe pointers, we can just treat enum values as int32s. - -var ( - coderEnumNoZero = coderInt32NoZero - coderEnum = coderInt32 - coderEnumPtr = coderInt32Ptr - coderEnumSlice = coderInt32Slice - coderEnumPackedSlice = coderInt32PackedSlice -) diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go deleted file mode 100644 index f72ddd8..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/convert.go +++ /dev/null @@ -1,495 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -// unwrapper unwraps the value to the underlying value. -// This is implemented by List and Map. -type unwrapper interface { - protoUnwrap() any -} - -// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types. -type Converter interface { - // PBValueOf converts a reflect.Value to a protoreflect.Value. - PBValueOf(reflect.Value) protoreflect.Value - - // GoValueOf converts a protoreflect.Value to a reflect.Value. - GoValueOf(protoreflect.Value) reflect.Value - - // IsValidPB returns whether a protoreflect.Value is compatible with this type. - IsValidPB(protoreflect.Value) bool - - // IsValidGo returns whether a reflect.Value is compatible with this type. - IsValidGo(reflect.Value) bool - - // New returns a new field value. - // For scalars, it returns the default value of the field. - // For composite types, it returns a new mutable value. - New() protoreflect.Value - - // Zero returns a new field value. - // For scalars, it returns the default value of the field. - // For composite types, it returns an immutable, empty value. - Zero() protoreflect.Value -} - -// NewConverter matches a Go type with a protobuf field and returns a Converter -// that converts between the two. Enums must be a named int32 kind that -// implements protoreflect.Enum, and messages must be pointer to a named -// struct type that implements protoreflect.ProtoMessage. -// -// This matcher deliberately supports a wider range of Go types than what -// protoc-gen-go historically generated to be able to automatically wrap some -// v1 messages generated by other forks of protoc-gen-go. -func NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { - switch { - case fd.IsList(): - return newListConverter(t, fd) - case fd.IsMap(): - return newMapConverter(t, fd) - default: - return newSingularConverter(t, fd) - } -} - -var ( - boolType = reflect.TypeOf(bool(false)) - int32Type = reflect.TypeOf(int32(0)) - int64Type = reflect.TypeOf(int64(0)) - uint32Type = reflect.TypeOf(uint32(0)) - uint64Type = reflect.TypeOf(uint64(0)) - float32Type = reflect.TypeOf(float32(0)) - float64Type = reflect.TypeOf(float64(0)) - stringType = reflect.TypeOf(string("")) - bytesType = reflect.TypeOf([]byte(nil)) - byteType = reflect.TypeOf(byte(0)) -) - -var ( - boolZero = protoreflect.ValueOfBool(false) - int32Zero = protoreflect.ValueOfInt32(0) - int64Zero = protoreflect.ValueOfInt64(0) - uint32Zero = protoreflect.ValueOfUint32(0) - uint64Zero = protoreflect.ValueOfUint64(0) - float32Zero = protoreflect.ValueOfFloat32(0) - float64Zero = protoreflect.ValueOfFloat64(0) - stringZero = protoreflect.ValueOfString("") - bytesZero = protoreflect.ValueOfBytes(nil) -) - -func newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { - defVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value { - if fd.Cardinality() == protoreflect.Repeated { - // Default isn't defined for repeated fields. - return zero - } - return fd.Default() - } - switch fd.Kind() { - case protoreflect.BoolKind: - if t.Kind() == reflect.Bool { - return &boolConverter{t, defVal(fd, boolZero)} - } - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: - if t.Kind() == reflect.Int32 { - return &int32Converter{t, defVal(fd, int32Zero)} - } - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: - if t.Kind() == reflect.Int64 { - return &int64Converter{t, defVal(fd, int64Zero)} - } - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: - if t.Kind() == reflect.Uint32 { - return &uint32Converter{t, defVal(fd, uint32Zero)} - } - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: - if t.Kind() == reflect.Uint64 { - return &uint64Converter{t, defVal(fd, uint64Zero)} - } - case protoreflect.FloatKind: - if t.Kind() == reflect.Float32 { - return &float32Converter{t, defVal(fd, float32Zero)} - } - case protoreflect.DoubleKind: - if t.Kind() == reflect.Float64 { - return &float64Converter{t, defVal(fd, float64Zero)} - } - case protoreflect.StringKind: - if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { - return &stringConverter{t, defVal(fd, stringZero)} - } - case protoreflect.BytesKind: - if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { - return &bytesConverter{t, defVal(fd, bytesZero)} - } - case protoreflect.EnumKind: - // Handle enums, which must be a named int32 type. - if t.Kind() == reflect.Int32 { - return newEnumConverter(t, fd) - } - case protoreflect.MessageKind, protoreflect.GroupKind: - return newMessageConverter(t) - } - panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) -} - -type boolConverter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfBool(v.Bool()) -} -func (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(v.Bool()).Convert(c.goType) -} -func (c *boolConverter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(bool) - return ok -} -func (c *boolConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *boolConverter) New() protoreflect.Value { return c.def } -func (c *boolConverter) Zero() protoreflect.Value { return c.def } - -type int32Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfInt32(int32(v.Int())) -} -func (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(int32(v.Int())).Convert(c.goType) -} -func (c *int32Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(int32) - return ok -} -func (c *int32Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *int32Converter) New() protoreflect.Value { return c.def } -func (c *int32Converter) Zero() protoreflect.Value { return c.def } - -type int64Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfInt64(int64(v.Int())) -} -func (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(int64(v.Int())).Convert(c.goType) -} -func (c *int64Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(int64) - return ok -} -func (c *int64Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *int64Converter) New() protoreflect.Value { return c.def } -func (c *int64Converter) Zero() protoreflect.Value { return c.def } - -type uint32Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfUint32(uint32(v.Uint())) -} -func (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(uint32(v.Uint())).Convert(c.goType) -} -func (c *uint32Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(uint32) - return ok -} -func (c *uint32Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *uint32Converter) New() protoreflect.Value { return c.def } -func (c *uint32Converter) Zero() protoreflect.Value { return c.def } - -type uint64Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfUint64(uint64(v.Uint())) -} -func (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(uint64(v.Uint())).Convert(c.goType) -} -func (c *uint64Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(uint64) - return ok -} -func (c *uint64Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *uint64Converter) New() protoreflect.Value { return c.def } -func (c *uint64Converter) Zero() protoreflect.Value { return c.def } - -type float32Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfFloat32(float32(v.Float())) -} -func (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(float32(v.Float())).Convert(c.goType) -} -func (c *float32Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(float32) - return ok -} -func (c *float32Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *float32Converter) New() protoreflect.Value { return c.def } -func (c *float32Converter) Zero() protoreflect.Value { return c.def } - -type float64Converter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfFloat64(float64(v.Float())) -} -func (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(float64(v.Float())).Convert(c.goType) -} -func (c *float64Converter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(float64) - return ok -} -func (c *float64Converter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *float64Converter) New() protoreflect.Value { return c.def } -func (c *float64Converter) Zero() protoreflect.Value { return c.def } - -type stringConverter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfString(v.Convert(stringType).String()) -} -func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value { - // protoreflect.Value.String never panics, so we go through an interface - // conversion here to check the type. - s := v.Interface().(string) - if c.goType.Kind() == reflect.Slice && s == "" { - return reflect.Zero(c.goType) // ensure empty string is []byte(nil) - } - return reflect.ValueOf(s).Convert(c.goType) -} -func (c *stringConverter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(string) - return ok -} -func (c *stringConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *stringConverter) New() protoreflect.Value { return c.def } -func (c *stringConverter) Zero() protoreflect.Value { return c.def } - -type bytesConverter struct { - goType reflect.Type - def protoreflect.Value -} - -func (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - if c.goType.Kind() == reflect.String && v.Len() == 0 { - return protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil) - } - return protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes()) -} -func (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(v.Bytes()).Convert(c.goType) -} -func (c *bytesConverter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().([]byte) - return ok -} -func (c *bytesConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} -func (c *bytesConverter) New() protoreflect.Value { return c.def } -func (c *bytesConverter) Zero() protoreflect.Value { return c.def } - -type enumConverter struct { - goType reflect.Type - def protoreflect.Value -} - -func newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter { - var def protoreflect.Value - if fd.Cardinality() == protoreflect.Repeated { - def = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number()) - } else { - def = fd.Default() - } - return &enumConverter{goType, def} -} - -func (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int())) -} - -func (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value { - return reflect.ValueOf(v.Enum()).Convert(c.goType) -} - -func (c *enumConverter) IsValidPB(v protoreflect.Value) bool { - _, ok := v.Interface().(protoreflect.EnumNumber) - return ok -} - -func (c *enumConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} - -func (c *enumConverter) New() protoreflect.Value { - return c.def -} - -func (c *enumConverter) Zero() protoreflect.Value { - return c.def -} - -type messageConverter struct { - goType reflect.Type -} - -func newMessageConverter(goType reflect.Type) Converter { - return &messageConverter{goType} -} - -func (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - if c.isNonPointer() { - if v.CanAddr() { - v = v.Addr() // T => *T - } else { - v = reflect.Zero(reflect.PtrTo(v.Type())) - } - } - if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { - return protoreflect.ValueOfMessage(m.ProtoReflect()) - } - return protoreflect.ValueOfMessage(legacyWrapMessage(v)) -} - -func (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value { - m := v.Message() - var rv reflect.Value - if u, ok := m.(unwrapper); ok { - rv = reflect.ValueOf(u.protoUnwrap()) - } else { - rv = reflect.ValueOf(m.Interface()) - } - if c.isNonPointer() { - if rv.Type() != reflect.PtrTo(c.goType) { - panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), reflect.PtrTo(c.goType))) - } - if !rv.IsNil() { - rv = rv.Elem() // *T => T - } else { - rv = reflect.Zero(rv.Type().Elem()) - } - } - if rv.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), c.goType)) - } - return rv -} - -func (c *messageConverter) IsValidPB(v protoreflect.Value) bool { - m := v.Message() - var rv reflect.Value - if u, ok := m.(unwrapper); ok { - rv = reflect.ValueOf(u.protoUnwrap()) - } else { - rv = reflect.ValueOf(m.Interface()) - } - if c.isNonPointer() { - return rv.Type() == reflect.PtrTo(c.goType) - } - return rv.Type() == c.goType -} - -func (c *messageConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} - -func (c *messageConverter) New() protoreflect.Value { - if c.isNonPointer() { - return c.PBValueOf(reflect.New(c.goType).Elem()) - } - return c.PBValueOf(reflect.New(c.goType.Elem())) -} - -func (c *messageConverter) Zero() protoreflect.Value { - return c.PBValueOf(reflect.Zero(c.goType)) -} - -// isNonPointer reports whether the type is a non-pointer type. -// This never occurs for generated message types. -func (c *messageConverter) isNonPointer() bool { - return c.goType.Kind() != reflect.Ptr -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go deleted file mode 100644 index 18cb96f..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -func newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { - switch { - case t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice: - return &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)} - case t.Kind() == reflect.Slice: - return &listConverter{t, newSingularConverter(t.Elem(), fd)} - } - panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) -} - -type listConverter struct { - goType reflect.Type // []T - c Converter -} - -func (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - pv := reflect.New(c.goType) - pv.Elem().Set(v) - return protoreflect.ValueOfList(&listReflect{pv, c.c}) -} - -func (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value { - rv := v.List().(*listReflect).v - if rv.IsNil() { - return reflect.Zero(c.goType) - } - return rv.Elem() -} - -func (c *listConverter) IsValidPB(v protoreflect.Value) bool { - list, ok := v.Interface().(*listReflect) - if !ok { - return false - } - return list.v.Type().Elem() == c.goType -} - -func (c *listConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} - -func (c *listConverter) New() protoreflect.Value { - return protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c}) -} - -func (c *listConverter) Zero() protoreflect.Value { - return protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c}) -} - -type listPtrConverter struct { - goType reflect.Type // *[]T - c Converter -} - -func (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfList(&listReflect{v, c.c}) -} - -func (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value { - return v.List().(*listReflect).v -} - -func (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool { - list, ok := v.Interface().(*listReflect) - if !ok { - return false - } - return list.v.Type() == c.goType -} - -func (c *listPtrConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} - -func (c *listPtrConverter) New() protoreflect.Value { - return c.PBValueOf(reflect.New(c.goType.Elem())) -} - -func (c *listPtrConverter) Zero() protoreflect.Value { - return c.PBValueOf(reflect.Zero(c.goType)) -} - -type listReflect struct { - v reflect.Value // *[]T - conv Converter -} - -func (ls *listReflect) Len() int { - if ls.v.IsNil() { - return 0 - } - return ls.v.Elem().Len() -} -func (ls *listReflect) Get(i int) protoreflect.Value { - return ls.conv.PBValueOf(ls.v.Elem().Index(i)) -} -func (ls *listReflect) Set(i int, v protoreflect.Value) { - ls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v)) -} -func (ls *listReflect) Append(v protoreflect.Value) { - ls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v))) -} -func (ls *listReflect) AppendMutable() protoreflect.Value { - if _, ok := ls.conv.(*messageConverter); !ok { - panic("invalid AppendMutable on list with non-message type") - } - v := ls.NewElement() - ls.Append(v) - return v -} -func (ls *listReflect) Truncate(i int) { - ls.v.Elem().Set(ls.v.Elem().Slice(0, i)) -} -func (ls *listReflect) NewElement() protoreflect.Value { - return ls.conv.New() -} -func (ls *listReflect) IsValid() bool { - return !ls.v.IsNil() -} -func (ls *listReflect) protoUnwrap() any { - return ls.v.Interface() -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go deleted file mode 100644 index 304244a..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -type mapConverter struct { - goType reflect.Type // map[K]V - keyConv, valConv Converter -} - -func newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter { - if t.Kind() != reflect.Map { - panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) - } - return &mapConverter{ - goType: t, - keyConv: newSingularConverter(t.Key(), fd.MapKey()), - valConv: newSingularConverter(t.Elem(), fd.MapValue()), - } -} - -func (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value { - if v.Type() != c.goType { - panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) - } - return protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv}) -} - -func (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value { - return v.Map().(*mapReflect).v -} - -func (c *mapConverter) IsValidPB(v protoreflect.Value) bool { - mapv, ok := v.Interface().(*mapReflect) - if !ok { - return false - } - return mapv.v.Type() == c.goType -} - -func (c *mapConverter) IsValidGo(v reflect.Value) bool { - return v.IsValid() && v.Type() == c.goType -} - -func (c *mapConverter) New() protoreflect.Value { - return c.PBValueOf(reflect.MakeMap(c.goType)) -} - -func (c *mapConverter) Zero() protoreflect.Value { - return c.PBValueOf(reflect.Zero(c.goType)) -} - -type mapReflect struct { - v reflect.Value // map[K]V - keyConv Converter - valConv Converter -} - -func (ms *mapReflect) Len() int { - return ms.v.Len() -} -func (ms *mapReflect) Has(k protoreflect.MapKey) bool { - rk := ms.keyConv.GoValueOf(k.Value()) - rv := ms.v.MapIndex(rk) - return rv.IsValid() -} -func (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value { - rk := ms.keyConv.GoValueOf(k.Value()) - rv := ms.v.MapIndex(rk) - if !rv.IsValid() { - return protoreflect.Value{} - } - return ms.valConv.PBValueOf(rv) -} -func (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) { - rk := ms.keyConv.GoValueOf(k.Value()) - rv := ms.valConv.GoValueOf(v) - ms.v.SetMapIndex(rk, rv) -} -func (ms *mapReflect) Clear(k protoreflect.MapKey) { - rk := ms.keyConv.GoValueOf(k.Value()) - ms.v.SetMapIndex(rk, reflect.Value{}) -} -func (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value { - if _, ok := ms.valConv.(*messageConverter); !ok { - panic("invalid Mutable on map with non-message value type") - } - v := ms.Get(k) - if !v.IsValid() { - v = ms.NewValue() - ms.Set(k, v) - } - return v -} -func (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { - iter := mapRange(ms.v) - for iter.Next() { - k := ms.keyConv.PBValueOf(iter.Key()).MapKey() - v := ms.valConv.PBValueOf(iter.Value()) - if !f(k, v) { - return - } - } -} -func (ms *mapReflect) NewValue() protoreflect.Value { - return ms.valConv.New() -} -func (ms *mapReflect) IsValid() bool { - return !ms.v.IsNil() -} -func (ms *mapReflect) protoUnwrap() any { - return ms.v.Interface() -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go deleted file mode 100644 index cda0520..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/decode.go +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "math/bits" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" -) - -var errDecode = errors.New("cannot parse invalid wire-format data") -var errRecursionDepth = errors.New("exceeded maximum recursion depth") - -type unmarshalOptions struct { - flags protoiface.UnmarshalInputFlags - resolver interface { - FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) - FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) - } - depth int -} - -func (o unmarshalOptions) Options() proto.UnmarshalOptions { - return proto.UnmarshalOptions{ - Merge: true, - AllowPartial: true, - DiscardUnknown: o.DiscardUnknown(), - Resolver: o.resolver, - } -} - -func (o unmarshalOptions) DiscardUnknown() bool { - return o.flags&protoiface.UnmarshalDiscardUnknown != 0 -} - -func (o unmarshalOptions) IsDefault() bool { - return o.flags == 0 && o.resolver == protoregistry.GlobalTypes -} - -var lazyUnmarshalOptions = unmarshalOptions{ - resolver: protoregistry.GlobalTypes, - depth: protowire.DefaultRecursionLimit, -} - -type unmarshalOutput struct { - n int // number of bytes consumed - initialized bool -} - -// unmarshal is protoreflect.Methods.Unmarshal. -func (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - var p pointer - if ms, ok := in.Message.(*messageState); ok { - p = ms.pointer() - } else { - p = in.Message.(*messageReflectWrapper).pointer() - } - out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{ - flags: in.Flags, - resolver: in.Resolver, - depth: in.Depth, - }) - var flags protoiface.UnmarshalOutputFlags - if out.initialized { - flags |= protoiface.UnmarshalInitialized - } - return protoiface.UnmarshalOutput{ - Flags: flags, - }, err -} - -// errUnknown is returned during unmarshaling to indicate a parse error that -// should result in a field being placed in the unknown fields section (for example, -// when the wire type doesn't match) as opposed to the entire unmarshal operation -// failing (for example, when a field extends past the available input). -// -// This is a sentinel error which should never be visible to the user. -var errUnknown = errors.New("unknown") - -func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) { - mi.init() - opts.depth-- - if opts.depth < 0 { - return out, errRecursionDepth - } - if flags.ProtoLegacy && mi.isMessageSet { - return unmarshalMessageSet(mi, b, p, opts) - } - initialized := true - var requiredMask uint64 - var exts *map[int32]ExtensionField - start := len(b) - for len(b) > 0 { - // Parse the tag (field number and wire type). - var tag uint64 - if b[0] < 0x80 { - tag = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - tag, n = protowire.ConsumeVarint(b) - if n < 0 { - return out, errDecode - } - b = b[n:] - } - var num protowire.Number - if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { - return out, errDecode - } else { - num = protowire.Number(n) - } - wtyp := protowire.Type(tag & 7) - - if wtyp == protowire.EndGroupType { - if num != groupTag { - return out, errDecode - } - groupTag = 0 - break - } - - var f *coderFieldInfo - if int(num) < len(mi.denseCoderFields) { - f = mi.denseCoderFields[num] - } else { - f = mi.coderFields[num] - } - var n int - err := errUnknown - switch { - case f != nil: - if f.funcs.unmarshal == nil { - break - } - var o unmarshalOutput - o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts) - n = o.n - if err != nil { - break - } - requiredMask |= f.validation.requiredBit - if f.funcs.isInit != nil && !o.initialized { - initialized = false - } - default: - // Possible extension. - if exts == nil && mi.extensionOffset.IsValid() { - exts = p.Apply(mi.extensionOffset).Extensions() - if *exts == nil { - *exts = make(map[int32]ExtensionField) - } - } - if exts == nil { - break - } - var o unmarshalOutput - o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts) - if err != nil { - break - } - n = o.n - if !o.initialized { - initialized = false - } - } - if err != nil { - if err != errUnknown { - return out, err - } - n = protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return out, errDecode - } - if !opts.DiscardUnknown() && mi.unknownOffset.IsValid() { - u := mi.mutableUnknownBytes(p) - *u = protowire.AppendTag(*u, num, wtyp) - *u = append(*u, b[:n]...) - } - } - b = b[n:] - } - if groupTag != 0 { - return out, errDecode - } - if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) { - initialized = false - } - if initialized { - out.initialized = true - } - out.n = start - len(b) - return out, nil -} - -func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) { - x := exts[int32(num)] - xt := x.Type() - if xt == nil { - var err error - xt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num) - if err != nil { - if err == protoregistry.NotFound { - return out, errUnknown - } - return out, errors.New("%v: unable to resolve extension %v: %v", mi.Desc.FullName(), num, err) - } - } - xi := getExtensionFieldInfo(xt) - if xi.funcs.unmarshal == nil { - return out, errUnknown - } - if flags.LazyUnmarshalExtensions { - if opts.IsDefault() && x.canLazy(xt) { - out, valid := skipExtension(b, xi, num, wtyp, opts) - switch valid { - case ValidationValid: - if out.initialized { - x.appendLazyBytes(xt, xi, num, wtyp, b[:out.n]) - exts[int32(num)] = x - return out, nil - } - case ValidationInvalid: - return out, errDecode - case ValidationUnknown: - } - } - } - ival := x.Value() - if !ival.IsValid() && xi.unmarshalNeedsValue { - // Create a new message, list, or map value to fill in. - // For enums, create a prototype value to let the unmarshal func know the - // concrete type. - ival = xt.New() - } - v, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts) - if err != nil { - return out, err - } - if xi.funcs.isInit == nil { - out.initialized = true - } - x.Set(xt, v) - exts[int32(num)] = x - return out, nil -} - -func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) { - if xi.validation.mi == nil { - return out, ValidationUnknown - } - xi.validation.mi.init() - switch xi.validation.typ { - case validationTypeMessage: - if wtyp != protowire.BytesType { - return out, ValidationUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, ValidationUnknown - } - out, st := xi.validation.mi.validate(v, 0, opts) - out.n = n - return out, st - case validationTypeGroup: - if wtyp != protowire.StartGroupType { - return out, ValidationUnknown - } - out, st := xi.validation.mi.validate(b, num, opts) - return out, st - default: - return out, ValidationUnknown - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/encode.go b/vendor/google.golang.org/protobuf/internal/impl/encode.go deleted file mode 100644 index 6254f5d..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/encode.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "math" - "sort" - "sync/atomic" - - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/proto" - piface "google.golang.org/protobuf/runtime/protoiface" -) - -type marshalOptions struct { - flags piface.MarshalInputFlags -} - -func (o marshalOptions) Options() proto.MarshalOptions { - return proto.MarshalOptions{ - AllowPartial: true, - Deterministic: o.Deterministic(), - UseCachedSize: o.UseCachedSize(), - } -} - -func (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 } -func (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 } - -// size is protoreflect.Methods.Size. -func (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput { - var p pointer - if ms, ok := in.Message.(*messageState); ok { - p = ms.pointer() - } else { - p = in.Message.(*messageReflectWrapper).pointer() - } - size := mi.sizePointer(p, marshalOptions{ - flags: in.Flags, - }) - return piface.SizeOutput{Size: size} -} - -func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) { - mi.init() - if p.IsNil() { - return 0 - } - if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() { - // The size cache contains the size + 1, to allow the - // zero value to be invalid, while also allowing for a - // 0 size to be cached. - if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 { - return int(size - 1) - } - } - return mi.sizePointerSlow(p, opts) -} - -func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) { - if flags.ProtoLegacy && mi.isMessageSet { - size = sizeMessageSet(mi, p, opts) - if mi.sizecacheOffset.IsValid() { - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) - } - return size - } - if mi.extensionOffset.IsValid() { - e := p.Apply(mi.extensionOffset).Extensions() - size += mi.sizeExtensions(e, opts) - } - for _, f := range mi.orderedCoderFields { - if f.funcs.size == nil { - continue - } - fptr := p.Apply(f.offset) - if f.isPointer && fptr.Elem().IsNil() { - continue - } - size += f.funcs.size(fptr, f, opts) - } - if mi.unknownOffset.IsValid() { - if u := mi.getUnknownBytes(p); u != nil { - size += len(*u) - } - } - if mi.sizecacheOffset.IsValid() { - if size > (math.MaxInt32 - 1) { - // The size is too large for the int32 sizecache field. - // We will need to recompute the size when encoding; - // unfortunately expensive, but better than invalid output. - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0) - } else { - // The size cache contains the size + 1, to allow the - // zero value to be invalid, while also allowing for a - // 0 size to be cached. - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) - } - } - return size -} - -// marshal is protoreflect.Methods.Marshal. -func (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) { - var p pointer - if ms, ok := in.Message.(*messageState); ok { - p = ms.pointer() - } else { - p = in.Message.(*messageReflectWrapper).pointer() - } - b, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{ - flags: in.Flags, - }) - return piface.MarshalOutput{Buf: b}, err -} - -func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) { - mi.init() - if p.IsNil() { - return b, nil - } - if flags.ProtoLegacy && mi.isMessageSet { - return marshalMessageSet(mi, b, p, opts) - } - var err error - // The old marshaler encodes extensions at beginning. - if mi.extensionOffset.IsValid() { - e := p.Apply(mi.extensionOffset).Extensions() - // TODO: Special handling for MessageSet? - b, err = mi.appendExtensions(b, e, opts) - if err != nil { - return b, err - } - } - for _, f := range mi.orderedCoderFields { - if f.funcs.marshal == nil { - continue - } - fptr := p.Apply(f.offset) - if f.isPointer && fptr.Elem().IsNil() { - continue - } - b, err = f.funcs.marshal(b, fptr, f, opts) - if err != nil { - return b, err - } - } - if mi.unknownOffset.IsValid() && !mi.isMessageSet { - if u := mi.getUnknownBytes(p); u != nil { - b = append(b, (*u)...) - } - } - return b, nil -} - -// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal. -func fullyLazyExtensions(opts marshalOptions) bool { - // When deterministic marshaling is requested, force an unmarshal for lazy - // extensions to produce a deterministic result, instead of passing through - // bytes lazily that may or may not match what Go Protobuf would produce. - return opts.flags&piface.MarshalDeterministic == 0 -} - -func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) { - if ext == nil { - return 0 - } - for _, x := range *ext { - xi := getExtensionFieldInfo(x.Type()) - if xi.funcs.size == nil { - continue - } - if fullyLazyExtensions(opts) { - // Don't expand the extension, instead use the buffer to calculate size - if lb := x.lazyBuffer(); lb != nil { - // We got hold of the buffer, so it's still lazy. - n += len(lb) - continue - } - } - n += xi.funcs.size(x.Value(), xi.tagsize, opts) - } - return n -} - -func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) { - if ext == nil { - return b, nil - } - - switch len(*ext) { - case 0: - return b, nil - case 1: - // Fast-path for one extension: Don't bother sorting the keys. - var err error - for _, x := range *ext { - xi := getExtensionFieldInfo(x.Type()) - if fullyLazyExtensions(opts) { - // Don't expand the extension if it's still in wire format, instead use the buffer content. - if lb := x.lazyBuffer(); lb != nil { - b = append(b, lb...) - continue - } - } - b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) - } - return b, err - default: - // Sort the keys to provide a deterministic encoding. - // Not sure this is required, but the old code does it. - keys := make([]int, 0, len(*ext)) - for k := range *ext { - keys = append(keys, int(k)) - } - sort.Ints(keys) - var err error - for _, k := range keys { - x := (*ext)[int32(k)] - xi := getExtensionFieldInfo(x.Type()) - if fullyLazyExtensions(opts) { - // Don't expand the extension if it's still in wire format, instead use the buffer content. - if lb := x.lazyBuffer(); lb != nil { - b = append(b, lb...) - continue - } - } - b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) - if err != nil { - return b, err - } - } - return b, nil - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/enum.go b/vendor/google.golang.org/protobuf/internal/impl/enum.go deleted file mode 100644 index 5f3ef5a..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/enum.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "reflect" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -type EnumInfo struct { - GoReflectType reflect.Type // int32 kind - Desc protoreflect.EnumDescriptor -} - -func (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum { - return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum) -} -func (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc } diff --git a/vendor/google.golang.org/protobuf/internal/impl/equal.go b/vendor/google.golang.org/protobuf/internal/impl/equal.go deleted file mode 100644 index 9f6c32a..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/equal.go +++ /dev/null @@ -1,224 +0,0 @@ -// Copyright 2024 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "bytes" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -func equal(in protoiface.EqualInput) protoiface.EqualOutput { - return protoiface.EqualOutput{Equal: equalMessage(in.MessageA, in.MessageB)} -} - -// equalMessage is a fast-path variant of protoreflect.equalMessage. -// It takes advantage of the internal messageState type to avoid -// unnecessary allocations, type assertions. -func equalMessage(mx, my protoreflect.Message) bool { - if mx == nil || my == nil { - return mx == my - } - if mx.Descriptor() != my.Descriptor() { - return false - } - - msx, ok := mx.(*messageState) - if !ok { - return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) - } - msy, ok := my.(*messageState) - if !ok { - return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) - } - - mi := msx.messageInfo() - miy := msy.messageInfo() - if mi != miy { - return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) - } - mi.init() - // Compares regular fields - // Modified Message.Range code that compares two messages of the same type - // while going over the fields. - for _, ri := range mi.rangeInfos { - var fd protoreflect.FieldDescriptor - var vx, vy protoreflect.Value - - switch ri := ri.(type) { - case *fieldInfo: - hx := ri.has(msx.pointer()) - hy := ri.has(msy.pointer()) - if hx != hy { - return false - } - if !hx { - continue - } - fd = ri.fieldDesc - vx = ri.get(msx.pointer()) - vy = ri.get(msy.pointer()) - case *oneofInfo: - fnx := ri.which(msx.pointer()) - fny := ri.which(msy.pointer()) - if fnx != fny { - return false - } - if fnx <= 0 { - continue - } - fi := mi.fields[fnx] - fd = fi.fieldDesc - vx = fi.get(msx.pointer()) - vy = fi.get(msy.pointer()) - } - - if !equalValue(fd, vx, vy) { - return false - } - } - - // Compare extensions. - // This is more complicated because mx or my could have empty/nil extension maps, - // however some populated extension map values are equal to nil extension maps. - emx := mi.extensionMap(msx.pointer()) - emy := mi.extensionMap(msy.pointer()) - if emx != nil { - for k, x := range *emx { - xd := x.Type().TypeDescriptor() - xv := x.Value() - var y ExtensionField - ok := false - if emy != nil { - y, ok = (*emy)[k] - } - // We need to treat empty lists as equal to nil values - if emy == nil || !ok { - if xd.IsList() && xv.List().Len() == 0 { - continue - } - return false - } - - if !equalValue(xd, xv, y.Value()) { - return false - } - } - } - if emy != nil { - // emy may have extensions emx does not have, need to check them as well - for k, y := range *emy { - if emx != nil { - // emx has the field, so we already checked it - if _, ok := (*emx)[k]; ok { - continue - } - } - // Empty lists are equal to nil - if y.Type().TypeDescriptor().IsList() && y.Value().List().Len() == 0 { - continue - } - - // Cant be equal if the extension is populated - return false - } - } - - return equalUnknown(mx.GetUnknown(), my.GetUnknown()) -} - -func equalValue(fd protoreflect.FieldDescriptor, vx, vy protoreflect.Value) bool { - // slow path - if fd.Kind() != protoreflect.MessageKind { - return vx.Equal(vy) - } - - // fast path special cases - if fd.IsMap() { - if fd.MapValue().Kind() == protoreflect.MessageKind { - return equalMessageMap(vx.Map(), vy.Map()) - } - return vx.Equal(vy) - } - - if fd.IsList() { - return equalMessageList(vx.List(), vy.List()) - } - - return equalMessage(vx.Message(), vy.Message()) -} - -// Mostly copied from protoreflect.equalMap. -// This variant only works for messages as map types. -// All other map types should be handled via Value.Equal. -func equalMessageMap(mx, my protoreflect.Map) bool { - if mx.Len() != my.Len() { - return false - } - equal := true - mx.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool { - if !my.Has(k) { - equal = false - return false - } - vy := my.Get(k) - equal = equalMessage(vx.Message(), vy.Message()) - return equal - }) - return equal -} - -// Mostly copied from protoreflect.equalList. -// The only change is the usage of equalImpl instead of protoreflect.equalValue. -func equalMessageList(lx, ly protoreflect.List) bool { - if lx.Len() != ly.Len() { - return false - } - for i := 0; i < lx.Len(); i++ { - // We only operate on messages here since equalImpl will not call us in any other case. - if !equalMessage(lx.Get(i).Message(), ly.Get(i).Message()) { - return false - } - } - return true -} - -// equalUnknown compares unknown fields by direct comparison on the raw bytes -// of each individual field number. -// Copied from protoreflect.equalUnknown. -func equalUnknown(x, y protoreflect.RawFields) bool { - if len(x) != len(y) { - return false - } - if bytes.Equal([]byte(x), []byte(y)) { - return true - } - - mx := make(map[protoreflect.FieldNumber]protoreflect.RawFields) - my := make(map[protoreflect.FieldNumber]protoreflect.RawFields) - for len(x) > 0 { - fnum, _, n := protowire.ConsumeField(x) - mx[fnum] = append(mx[fnum], x[:n]...) - x = x[n:] - } - for len(y) > 0 { - fnum, _, n := protowire.ConsumeField(y) - my[fnum] = append(my[fnum], y[:n]...) - y = y[n:] - } - if len(mx) != len(my) { - return false - } - - for k, v1 := range mx { - if v2, ok := my[k]; !ok || !bytes.Equal([]byte(v1), []byte(v2)) { - return false - } - } - - return true -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/extension.go b/vendor/google.golang.org/protobuf/internal/impl/extension.go deleted file mode 100644 index e31249f..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/extension.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "reflect" - "sync" - "sync/atomic" - - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// ExtensionInfo implements ExtensionType. -// -// This type contains a number of exported fields for legacy compatibility. -// The only non-deprecated use of this type is through the methods of the -// ExtensionType interface. -type ExtensionInfo struct { - // An ExtensionInfo may exist in several stages of initialization. - // - // extensionInfoUninitialized: Some or all of the legacy exported - // fields may be set, but none of the unexported fields have been - // initialized. This is the starting state for an ExtensionInfo - // in legacy generated code. - // - // extensionInfoDescInit: The desc field is set, but other unexported fields - // may not be initialized. Legacy exported fields may or may not be set. - // This is the starting state for an ExtensionInfo in newly generated code. - // - // extensionInfoFullInit: The ExtensionInfo is fully initialized. - // This state is only entered after lazy initialization is complete. - init uint32 - mu sync.Mutex - - goType reflect.Type - desc extensionTypeDescriptor - conv Converter - info *extensionFieldInfo // for fast-path method implementations - - // ExtendedType is a typed nil-pointer to the parent message type that - // is being extended. It is possible for this to be unpopulated in v2 - // since the message may no longer implement the MessageV1 interface. - // - // Deprecated: Use the ExtendedType method instead. - ExtendedType protoiface.MessageV1 - - // ExtensionType is the zero value of the extension type. - // - // For historical reasons, reflect.TypeOf(ExtensionType) and the - // type returned by InterfaceOf may not be identical. - // - // Deprecated: Use InterfaceOf(xt.Zero()) instead. - ExtensionType any - - // Field is the field number of the extension. - // - // Deprecated: Use the Descriptor().Number method instead. - Field int32 - - // Name is the fully qualified name of extension. - // - // Deprecated: Use the Descriptor().FullName method instead. - Name string - - // Tag is the protobuf struct tag used in the v1 API. - // - // Deprecated: Do not use. - Tag string - - // Filename is the proto filename in which the extension is defined. - // - // Deprecated: Use Descriptor().ParentFile().Path() instead. - Filename string -} - -// Stages of initialization: See the ExtensionInfo.init field. -const ( - extensionInfoUninitialized = 0 - extensionInfoDescInit = 1 - extensionInfoFullInit = 2 -) - -func InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) { - xi.goType = goType - xi.desc = extensionTypeDescriptor{xd, xi} - xi.init = extensionInfoDescInit -} - -func (xi *ExtensionInfo) New() protoreflect.Value { - return xi.lazyInit().New() -} -func (xi *ExtensionInfo) Zero() protoreflect.Value { - return xi.lazyInit().Zero() -} -func (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value { - return xi.lazyInit().PBValueOf(reflect.ValueOf(v)) -} -func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any { - return xi.lazyInit().GoValueOf(v).Interface() -} -func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool { - return xi.lazyInit().IsValidPB(v) -} -func (xi *ExtensionInfo) IsValidInterface(v any) bool { - return xi.lazyInit().IsValidGo(reflect.ValueOf(v)) -} -func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { - if atomic.LoadUint32(&xi.init) < extensionInfoDescInit { - xi.lazyInitSlow() - } - return &xi.desc -} - -func (xi *ExtensionInfo) lazyInit() Converter { - if atomic.LoadUint32(&xi.init) < extensionInfoFullInit { - xi.lazyInitSlow() - } - return xi.conv -} - -func (xi *ExtensionInfo) lazyInitSlow() { - xi.mu.Lock() - defer xi.mu.Unlock() - - if xi.init == extensionInfoFullInit { - return - } - defer atomic.StoreUint32(&xi.init, extensionInfoFullInit) - - if xi.desc.ExtensionDescriptor == nil { - xi.initFromLegacy() - } - if !xi.desc.ExtensionDescriptor.IsPlaceholder() { - if xi.ExtensionType == nil { - xi.initToLegacy() - } - xi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor) - xi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor) - xi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType) - } -} - -type extensionTypeDescriptor struct { - protoreflect.ExtensionDescriptor - xi *ExtensionInfo -} - -func (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType { - return xtd.xi -} -func (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor { - return xtd.ExtensionDescriptor -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go deleted file mode 100644 index 81b2b1a..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "strings" - "sync" - - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// legacyEnumName returns the name of enums used in legacy code. -// It is neither the protobuf full name nor the qualified Go name, -// but rather an odd hybrid of both. -func legacyEnumName(ed protoreflect.EnumDescriptor) string { - var protoPkg string - enumName := string(ed.FullName()) - if fd := ed.ParentFile(); fd != nil { - protoPkg = string(fd.Package()) - enumName = strings.TrimPrefix(enumName, protoPkg+".") - } - if protoPkg == "" { - return strs.GoCamelCase(enumName) - } - return protoPkg + "." + strs.GoCamelCase(enumName) -} - -// legacyWrapEnum wraps v as a protoreflect.Enum, -// where v must be a int32 kind and not implement the v2 API already. -func legacyWrapEnum(v reflect.Value) protoreflect.Enum { - et := legacyLoadEnumType(v.Type()) - return et.New(protoreflect.EnumNumber(v.Int())) -} - -var legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType - -// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t, -// where t must be an int32 kind and not implement the v2 API already. -func legacyLoadEnumType(t reflect.Type) protoreflect.EnumType { - // Fast-path: check if a EnumType is cached for this concrete type. - if et, ok := legacyEnumTypeCache.Load(t); ok { - return et.(protoreflect.EnumType) - } - - // Slow-path: derive enum descriptor and initialize EnumType. - var et protoreflect.EnumType - ed := LegacyLoadEnumDesc(t) - et = &legacyEnumType{ - desc: ed, - goType: t, - } - if et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok { - return et.(protoreflect.EnumType) - } - return et -} - -type legacyEnumType struct { - desc protoreflect.EnumDescriptor - goType reflect.Type - m sync.Map // map[protoreflect.EnumNumber]proto.Enum -} - -func (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum { - if e, ok := t.m.Load(n); ok { - return e.(protoreflect.Enum) - } - e := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType} - t.m.Store(n, e) - return e -} -func (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor { - return t.desc -} - -type legacyEnumWrapper struct { - num protoreflect.EnumNumber - pbTyp protoreflect.EnumType - goTyp reflect.Type -} - -func (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor { - return e.pbTyp.Descriptor() -} -func (e *legacyEnumWrapper) Type() protoreflect.EnumType { - return e.pbTyp -} -func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber { - return e.num -} -func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum { - return e -} -func (e *legacyEnumWrapper) protoUnwrap() any { - v := reflect.New(e.goTyp).Elem() - v.SetInt(int64(e.num)) - return v.Interface() -} - -var ( - _ protoreflect.Enum = (*legacyEnumWrapper)(nil) - _ unwrapper = (*legacyEnumWrapper)(nil) -) - -var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor - -// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type, -// which must be an int32 kind and not implement the v2 API already. -// -// This is exported for testing purposes. -func LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { - // Fast-path: check if an EnumDescriptor is cached for this concrete type. - if ed, ok := legacyEnumDescCache.Load(t); ok { - return ed.(protoreflect.EnumDescriptor) - } - - // Slow-path: initialize EnumDescriptor from the raw descriptor. - ev := reflect.Zero(t).Interface() - if _, ok := ev.(protoreflect.Enum); ok { - panic(fmt.Sprintf("%v already implements proto.Enum", t)) - } - edV1, ok := ev.(enumV1) - if !ok { - return aberrantLoadEnumDesc(t) - } - b, idxs := edV1.EnumDescriptor() - - var ed protoreflect.EnumDescriptor - if len(idxs) == 1 { - ed = legacyLoadFileDesc(b).Enums().Get(idxs[0]) - } else { - md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) - for _, i := range idxs[1 : len(idxs)-1] { - md = md.Messages().Get(i) - } - ed = md.Enums().Get(idxs[len(idxs)-1]) - } - if ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok { - return ed.(protoreflect.EnumDescriptor) - } - return ed -} - -var aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor - -// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type, -// which must not implement protoreflect.Enum or enumV1. -// -// If the type does not implement enumV1, then there is no reliable -// way to derive the original protobuf type information. -// We are unable to use the global enum registry since it is -// unfortunately keyed by the protobuf full name, which we also do not know. -// Thus, this produces some bogus enum descriptor based on the Go type name. -func aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { - // Fast-path: check if an EnumDescriptor is cached for this concrete type. - if ed, ok := aberrantEnumDescCache.Load(t); ok { - return ed.(protoreflect.EnumDescriptor) - } - - // Slow-path: construct a bogus, but unique EnumDescriptor. - ed := &filedesc.Enum{L2: new(filedesc.EnumL2)} - ed.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum - ed.L0.ParentFile = filedesc.SurrogateProto3 - ed.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures - ed.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{}) - - // TODO: Use the presence of a UnmarshalJSON method to determine proto2? - - vd := &ed.L2.Values.List[0] - vd.L0.FullName = ed.L0.FullName + "_UNKNOWN" // e.g., github_com.user.repo.MyEnum_UNKNOWN - vd.L0.ParentFile = ed.L0.ParentFile - vd.L0.Parent = ed - - // TODO: We could use the String method to obtain some enum value names by - // starting at 0 and print the enum until it produces invalid identifiers. - // An exhaustive query is clearly impractical, but can be best-effort. - - if ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok { - return ed.(protoreflect.EnumDescriptor) - } - return ed -} - -// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type -// The provided name is not guaranteed to be stable nor universally unique. -// It should be sufficiently unique within a program. -// -// This is exported for testing purposes. -func AberrantDeriveFullName(t reflect.Type) protoreflect.FullName { - sanitize := func(r rune) rune { - switch { - case r == '/': - return '.' - case 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9': - return r - default: - return '_' - } - } - prefix := strings.Map(sanitize, t.PkgPath()) - suffix := strings.Map(sanitize, t.Name()) - if suffix == "" { - suffix = fmt.Sprintf("UnknownX%X", reflect.ValueOf(t).Pointer()) - } - - ss := append(strings.Split(prefix, "."), suffix) - for i, s := range ss { - if s == "" || ('0' <= s[0] && s[0] <= '9') { - ss[i] = "x" + s - } - } - return protoreflect.FullName(strings.Join(ss, ".")) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go deleted file mode 100644 index 9b64ad5..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "encoding/binary" - "encoding/json" - "hash/crc32" - "math" - "reflect" - - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// These functions exist to support exported APIs in generated protobufs. -// While these are deprecated, they cannot be removed for compatibility reasons. - -// LegacyEnumName returns the name of enums used in legacy code. -func (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string { - return legacyEnumName(ed) -} - -// LegacyMessageTypeOf returns the protoreflect.MessageType for m, -// with name used as the message name if necessary. -func (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType { - if mv := (Export{}).protoMessageV2Of(m); mv != nil { - return mv.ProtoReflect().Type() - } - return legacyLoadMessageType(reflect.TypeOf(m), name) -} - -// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input. -// The input can either be a string representing the enum value by name, -// or a number representing the enum number itself. -func (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) { - if b[0] == '"' { - var name protoreflect.Name - if err := json.Unmarshal(b, &name); err != nil { - return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) - } - ev := ed.Values().ByName(name) - if ev == nil { - return 0, errors.New("invalid value for enum %v: %s", ed.FullName(), name) - } - return ev.Number(), nil - } else { - var num protoreflect.EnumNumber - if err := json.Unmarshal(b, &num); err != nil { - return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) - } - return num, nil - } -} - -// CompressGZIP compresses the input as a GZIP-encoded file. -// The current implementation does no compression. -func (Export) CompressGZIP(in []byte) (out []byte) { - // RFC 1952, section 2.3.1. - var gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff} - - // RFC 1951, section 3.2.4. - var blockHeader [5]byte - const maxBlockSize = math.MaxUint16 - numBlocks := 1 + len(in)/maxBlockSize - - // RFC 1952, section 2.3.1. - var gzipFooter [8]byte - binary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in)) - binary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in))) - - // Encode the input without compression using raw DEFLATE blocks. - out = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter)) - out = append(out, gzipHeader[:]...) - for blockHeader[0] == 0 { - blockSize := maxBlockSize - if blockSize > len(in) { - blockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3. - blockSize = len(in) - } - binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)) - binary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize)) - out = append(out, blockHeader[:]...) - out = append(out, in[:blockSize]...) - in = in[blockSize:] - } - out = append(out, gzipFooter[:]...) - return out -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go deleted file mode 100644 index b6849d6..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "reflect" - - "google.golang.org/protobuf/internal/descopts" - "google.golang.org/protobuf/internal/encoding/messageset" - ptag "google.golang.org/protobuf/internal/encoding/tag" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" -) - -func (xi *ExtensionInfo) initToLegacy() { - xd := xi.desc - var parent protoiface.MessageV1 - messageName := xd.ContainingMessage().FullName() - if mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil { - // Create a new parent message and unwrap it if possible. - mv := mt.New().Interface() - t := reflect.TypeOf(mv) - if mv, ok := mv.(unwrapper); ok { - t = reflect.TypeOf(mv.protoUnwrap()) - } - - // Check whether the message implements the legacy v1 Message interface. - mz := reflect.Zero(t).Interface() - if mz, ok := mz.(protoiface.MessageV1); ok { - parent = mz - } - } - - // Determine the v1 extension type, which is unfortunately not the same as - // the v2 ExtensionType.GoType. - extType := xi.goType - switch extType.Kind() { - case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: - extType = reflect.PtrTo(extType) // T -> *T for singular scalar fields - } - - // Reconstruct the legacy enum full name. - var enumName string - if xd.Kind() == protoreflect.EnumKind { - enumName = legacyEnumName(xd.Enum()) - } - - // Derive the proto file that the extension was declared within. - var filename string - if fd := xd.ParentFile(); fd != nil { - filename = fd.Path() - } - - // For MessageSet extensions, the name used is the parent message. - name := xd.FullName() - if messageset.IsMessageSetExtension(xd) { - name = name.Parent() - } - - xi.ExtendedType = parent - xi.ExtensionType = reflect.Zero(extType).Interface() - xi.Field = int32(xd.Number()) - xi.Name = string(name) - xi.Tag = ptag.Marshal(xd, enumName) - xi.Filename = filename -} - -// initFromLegacy initializes an ExtensionInfo from -// the contents of the deprecated exported fields of the type. -func (xi *ExtensionInfo) initFromLegacy() { - // The v1 API returns "type incomplete" descriptors where only the - // field number is specified. In such a case, use a placeholder. - if xi.ExtendedType == nil || xi.ExtensionType == nil { - xd := placeholderExtension{ - name: protoreflect.FullName(xi.Name), - number: protoreflect.FieldNumber(xi.Field), - } - xi.desc = extensionTypeDescriptor{xd, xi} - return - } - - // Resolve enum or message dependencies. - var ed protoreflect.EnumDescriptor - var md protoreflect.MessageDescriptor - t := reflect.TypeOf(xi.ExtensionType) - isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct - isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 - if isOptional || isRepeated { - t = t.Elem() - } - switch v := reflect.Zero(t).Interface().(type) { - case protoreflect.Enum: - ed = v.Descriptor() - case enumV1: - ed = LegacyLoadEnumDesc(t) - case protoreflect.ProtoMessage: - md = v.ProtoReflect().Descriptor() - case messageV1: - md = LegacyLoadMessageDesc(t) - } - - // Derive basic field information from the struct tag. - var evs protoreflect.EnumValueDescriptors - if ed != nil { - evs = ed.Values() - } - fd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field) - - // Construct a v2 ExtensionType. - xd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)} - xd.L0.ParentFile = filedesc.SurrogateProto2 - xd.L0.FullName = protoreflect.FullName(xi.Name) - xd.L1.Number = protoreflect.FieldNumber(xi.Field) - xd.L1.Cardinality = fd.L1.Cardinality - xd.L1.Kind = fd.L1.Kind - xd.L1.EditionFeatures = fd.L1.EditionFeatures - xd.L2.Default = fd.L1.Default - xd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType) - xd.L2.Enum = ed - xd.L2.Message = md - - // Derive real extension field name for MessageSets. - if messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName { - xd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName) - } - - tt := reflect.TypeOf(xi.ExtensionType) - if isOptional { - tt = tt.Elem() - } - xi.goType = tt - xi.desc = extensionTypeDescriptor{xd, xi} -} - -type placeholderExtension struct { - name protoreflect.FullName - number protoreflect.FieldNumber -} - -func (x placeholderExtension) ParentFile() protoreflect.FileDescriptor { return nil } -func (x placeholderExtension) Parent() protoreflect.Descriptor { return nil } -func (x placeholderExtension) Index() int { return 0 } -func (x placeholderExtension) Syntax() protoreflect.Syntax { return 0 } -func (x placeholderExtension) Name() protoreflect.Name { return x.name.Name() } -func (x placeholderExtension) FullName() protoreflect.FullName { return x.name } -func (x placeholderExtension) IsPlaceholder() bool { return true } -func (x placeholderExtension) Options() protoreflect.ProtoMessage { return descopts.Field } -func (x placeholderExtension) Number() protoreflect.FieldNumber { return x.number } -func (x placeholderExtension) Cardinality() protoreflect.Cardinality { return 0 } -func (x placeholderExtension) Kind() protoreflect.Kind { return 0 } -func (x placeholderExtension) HasJSONName() bool { return false } -func (x placeholderExtension) JSONName() string { return "[" + string(x.name) + "]" } -func (x placeholderExtension) TextName() string { return "[" + string(x.name) + "]" } -func (x placeholderExtension) HasPresence() bool { return false } -func (x placeholderExtension) HasOptionalKeyword() bool { return false } -func (x placeholderExtension) IsExtension() bool { return true } -func (x placeholderExtension) IsWeak() bool { return false } -func (x placeholderExtension) IsLazy() bool { return false } -func (x placeholderExtension) IsPacked() bool { return false } -func (x placeholderExtension) IsList() bool { return false } -func (x placeholderExtension) IsMap() bool { return false } -func (x placeholderExtension) MapKey() protoreflect.FieldDescriptor { return nil } -func (x placeholderExtension) MapValue() protoreflect.FieldDescriptor { return nil } -func (x placeholderExtension) HasDefault() bool { return false } -func (x placeholderExtension) Default() protoreflect.Value { return protoreflect.Value{} } -func (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil } -func (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor { return nil } -func (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor { return nil } -func (x placeholderExtension) Enum() protoreflect.EnumDescriptor { return nil } -func (x placeholderExtension) Message() protoreflect.MessageDescriptor { return nil } -func (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor) { return } -func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go deleted file mode 100644 index b649f11..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "bytes" - "compress/gzip" - "io" - "sync" - - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// Every enum and message type generated by protoc-gen-go since commit 2fc053c5 -// on February 25th, 2016 has had a method to get the raw descriptor. -// Types that were not generated by protoc-gen-go or were generated prior -// to that version are not supported. -// -// The []byte returned is the encoded form of a FileDescriptorProto message -// compressed using GZIP. The []int is the path from the top-level file -// to the specific message or enum declaration. -type ( - enumV1 interface { - EnumDescriptor() ([]byte, []int) - } - messageV1 interface { - Descriptor() ([]byte, []int) - } -) - -var legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor - -// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message. -// -// This assumes that b is immutable and that b does not refer to part of a -// concatenated series of GZIP files (which would require shenanigans that -// rely on the concatenation properties of both protobufs and GZIP). -// File descriptors generated by protoc-gen-go do not rely on that property. -func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor { - // Fast-path: check whether we already have a cached file descriptor. - if fd, ok := legacyFileDescCache.Load(&b[0]); ok { - return fd.(protoreflect.FileDescriptor) - } - - // Slow-path: decompress and unmarshal the file descriptor proto. - zr, err := gzip.NewReader(bytes.NewReader(b)) - if err != nil { - panic(err) - } - b2, err := io.ReadAll(zr) - if err != nil { - panic(err) - } - - fd := filedesc.Builder{ - RawDescriptor: b2, - FileRegistry: resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry - }.Build().File - if fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok { - return fd.(protoreflect.FileDescriptor) - } - return fd -} - -type resolverOnly struct { - reg *protoregistry.Files -} - -func (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { - return r.reg.FindFileByPath(path) -} -func (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { - return r.reg.FindDescriptorByName(name) -} -func (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error { - return nil -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go deleted file mode 100644 index bf0b604..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +++ /dev/null @@ -1,572 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "strings" - "sync" - - "google.golang.org/protobuf/internal/descopts" - ptag "google.golang.org/protobuf/internal/encoding/tag" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// legacyWrapMessage wraps v as a protoreflect.Message, -// where v must be a *struct kind and not implement the v2 API already. -func legacyWrapMessage(v reflect.Value) protoreflect.Message { - t := v.Type() - if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { - return aberrantMessage{v: v} - } - mt := legacyLoadMessageInfo(t, "") - return mt.MessageOf(v.Interface()) -} - -// legacyLoadMessageType dynamically loads a protoreflect.Type for t, -// where t must be not implement the v2 API already. -// The provided name is used if it cannot be determined from the message. -func legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType { - if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { - return aberrantMessageType{t} - } - return legacyLoadMessageInfo(t, name) -} - -var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo - -// legacyLoadMessageInfo dynamically loads a *MessageInfo for t, -// where t must be a *struct kind and not implement the v2 API already. -// The provided name is used if it cannot be determined from the message. -func legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo { - // Fast-path: check if a MessageInfo is cached for this concrete type. - if mt, ok := legacyMessageTypeCache.Load(t); ok { - return mt.(*MessageInfo) - } - - // Slow-path: derive message descriptor and initialize MessageInfo. - mi := &MessageInfo{ - Desc: legacyLoadMessageDesc(t, name), - GoReflectType: t, - } - - var hasMarshal, hasUnmarshal bool - v := reflect.Zero(t).Interface() - if _, hasMarshal = v.(legacyMarshaler); hasMarshal { - mi.methods.Marshal = legacyMarshal - - // We have no way to tell whether the type's Marshal method - // supports deterministic serialization or not, but this - // preserves the v1 implementation's behavior of always - // calling Marshal methods when present. - mi.methods.Flags |= protoiface.SupportMarshalDeterministic - } - if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal { - mi.methods.Unmarshal = legacyUnmarshal - } - if _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) { - mi.methods.Merge = legacyMerge - } - - if mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok { - return mi.(*MessageInfo) - } - return mi -} - -var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor - -// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type, -// which should be a *struct kind and must not implement the v2 API already. -// -// This is exported for testing purposes. -func LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor { - return legacyLoadMessageDesc(t, "") -} -func legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { - // Fast-path: check if a MessageDescriptor is cached for this concrete type. - if mi, ok := legacyMessageDescCache.Load(t); ok { - return mi.(protoreflect.MessageDescriptor) - } - - // Slow-path: initialize MessageDescriptor from the raw descriptor. - mv := reflect.Zero(t).Interface() - if _, ok := mv.(protoreflect.ProtoMessage); ok { - panic(fmt.Sprintf("%v already implements proto.Message", t)) - } - mdV1, ok := mv.(messageV1) - if !ok { - return aberrantLoadMessageDesc(t, name) - } - - // If this is a dynamic message type where there isn't a 1-1 mapping between - // Go and protobuf types, calling the Descriptor method on the zero value of - // the message type isn't likely to work. If it panics, swallow the panic and - // continue as if the Descriptor method wasn't present. - b, idxs := func() ([]byte, []int) { - defer func() { - recover() - }() - return mdV1.Descriptor() - }() - if b == nil { - return aberrantLoadMessageDesc(t, name) - } - - // If the Go type has no fields, then this might be a proto3 empty message - // from before the size cache was added. If there are any fields, check to - // see that at least one of them looks like something we generated. - if t.Elem().Kind() == reflect.Struct { - if nfield := t.Elem().NumField(); nfield > 0 { - hasProtoField := false - for i := 0; i < nfield; i++ { - f := t.Elem().Field(i) - if f.Tag.Get("protobuf") != "" || f.Tag.Get("protobuf_oneof") != "" || strings.HasPrefix(f.Name, "XXX_") { - hasProtoField = true - break - } - } - if !hasProtoField { - return aberrantLoadMessageDesc(t, name) - } - } - } - - md := legacyLoadFileDesc(b).Messages().Get(idxs[0]) - for _, i := range idxs[1:] { - md = md.Messages().Get(i) - } - if name != "" && md.FullName() != name { - panic(fmt.Sprintf("mismatching message name: got %v, want %v", md.FullName(), name)) - } - if md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok { - return md.(protoreflect.MessageDescriptor) - } - return md -} - -var ( - aberrantMessageDescLock sync.Mutex - aberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor -) - -// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type, -// which must not implement protoreflect.ProtoMessage or messageV1. -// -// This is a best-effort derivation of the message descriptor using the protobuf -// tags on the struct fields. -func aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { - aberrantMessageDescLock.Lock() - defer aberrantMessageDescLock.Unlock() - if aberrantMessageDescCache == nil { - aberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor) - } - return aberrantLoadMessageDescReentrant(t, name) -} -func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { - // Fast-path: check if an MessageDescriptor is cached for this concrete type. - if md, ok := aberrantMessageDescCache[t]; ok { - return md - } - - // Slow-path: construct a descriptor from the Go struct type (best-effort). - // Cache the MessageDescriptor early on so that we can resolve internal - // cyclic references. - md := &filedesc.Message{L2: new(filedesc.MessageL2)} - md.L0.FullName = aberrantDeriveMessageName(t, name) - md.L0.ParentFile = filedesc.SurrogateProto2 - aberrantMessageDescCache[t] = md - - if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { - return md - } - - // Try to determine if the message is using proto3 by checking scalars. - for i := 0; i < t.Elem().NumField(); i++ { - f := t.Elem().Field(i) - if tag := f.Tag.Get("protobuf"); tag != "" { - switch f.Type.Kind() { - case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: - md.L0.ParentFile = filedesc.SurrogateProto3 - } - for _, s := range strings.Split(tag, ",") { - if s == "proto3" { - md.L0.ParentFile = filedesc.SurrogateProto3 - } - } - } - } - - md.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures - // Obtain a list of oneof wrapper types. - var oneofWrappers []reflect.Type - methods := make([]reflect.Method, 0, 2) - if m, ok := t.MethodByName("XXX_OneofFuncs"); ok { - methods = append(methods, m) - } - if m, ok := t.MethodByName("XXX_OneofWrappers"); ok { - methods = append(methods, m) - } - for _, fn := range methods { - for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]any); ok { - for _, v := range vs { - oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) - } - } - } - } - - // Obtain a list of the extension ranges. - if fn, ok := t.MethodByName("ExtensionRangeArray"); ok { - vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0] - for i := 0; i < vs.Len(); i++ { - v := vs.Index(i) - md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{ - protoreflect.FieldNumber(v.FieldByName("Start").Int()), - protoreflect.FieldNumber(v.FieldByName("End").Int() + 1), - }) - md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil) - } - } - - // Derive the message fields by inspecting the struct fields. - for i := 0; i < t.Elem().NumField(); i++ { - f := t.Elem().Field(i) - if tag := f.Tag.Get("protobuf"); tag != "" { - tagKey := f.Tag.Get("protobuf_key") - tagVal := f.Tag.Get("protobuf_val") - aberrantAppendField(md, f.Type, tag, tagKey, tagVal) - } - if tag := f.Tag.Get("protobuf_oneof"); tag != "" { - n := len(md.L2.Oneofs.List) - md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{}) - od := &md.L2.Oneofs.List[n] - od.L0.FullName = md.FullName().Append(protoreflect.Name(tag)) - od.L0.ParentFile = md.L0.ParentFile - od.L1.EditionFeatures = md.L1.EditionFeatures - od.L0.Parent = md - od.L0.Index = n - - for _, t := range oneofWrappers { - if t.Implements(f.Type) { - f := t.Elem().Field(0) - if tag := f.Tag.Get("protobuf"); tag != "" { - aberrantAppendField(md, f.Type, tag, "", "") - fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1] - fd.L1.ContainingOneof = od - fd.L1.EditionFeatures = od.L1.EditionFeatures - od.L1.Fields.List = append(od.L1.Fields.List, fd) - } - } - } - } - } - - return md -} - -func aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName { - if name.IsValid() { - return name - } - func() { - defer func() { recover() }() // swallow possible nil panics - if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok { - name = protoreflect.FullName(m.XXX_MessageName()) - } - }() - if name.IsValid() { - return name - } - if t.Kind() == reflect.Ptr { - t = t.Elem() - } - return AberrantDeriveFullName(t) -} - -func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) { - t := goType - isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct - isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 - if isOptional || isRepeated { - t = t.Elem() - } - fd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field) - - // Append field descriptor to the message. - n := len(md.L2.Fields.List) - md.L2.Fields.List = append(md.L2.Fields.List, *fd) - fd = &md.L2.Fields.List[n] - fd.L0.FullName = md.FullName().Append(fd.Name()) - fd.L0.ParentFile = md.L0.ParentFile - fd.L0.Parent = md - fd.L0.Index = n - - if fd.L1.IsWeak || fd.L1.EditionFeatures.IsPacked { - fd.L1.Options = func() protoreflect.ProtoMessage { - opts := descopts.Field.ProtoReflect().New() - if fd.L1.IsWeak { - opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true)) - } - if fd.L1.EditionFeatures.IsPacked { - opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked)) - } - return opts.Interface() - } - } - - // Populate Enum and Message. - if fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind { - switch v := reflect.Zero(t).Interface().(type) { - case protoreflect.Enum: - fd.L1.Enum = v.Descriptor() - default: - fd.L1.Enum = LegacyLoadEnumDesc(t) - } - } - if fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) { - switch v := reflect.Zero(t).Interface().(type) { - case protoreflect.ProtoMessage: - fd.L1.Message = v.ProtoReflect().Descriptor() - case messageV1: - fd.L1.Message = LegacyLoadMessageDesc(t) - default: - if t.Kind() == reflect.Map { - n := len(md.L1.Messages.List) - md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)}) - md2 := &md.L1.Messages.List[n] - md2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name())))) - md2.L0.ParentFile = md.L0.ParentFile - md2.L0.Parent = md - md2.L0.Index = n - md2.L1.EditionFeatures = md.L1.EditionFeatures - - md2.L1.IsMapEntry = true - md2.L2.Options = func() protoreflect.ProtoMessage { - opts := descopts.Message.ProtoReflect().New() - opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true)) - return opts.Interface() - } - - aberrantAppendField(md2, t.Key(), tagKey, "", "") - aberrantAppendField(md2, t.Elem(), tagVal, "", "") - - fd.L1.Message = md2 - break - } - fd.L1.Message = aberrantLoadMessageDescReentrant(t, "") - } - } -} - -type placeholderEnumValues struct { - protoreflect.EnumValueDescriptors -} - -func (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { - return filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf("UNKNOWN_%d", n))) -} - -// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder. -type legacyMarshaler interface { - Marshal() ([]byte, error) -} - -// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder. -type legacyUnmarshaler interface { - Unmarshal([]byte) error -} - -// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder. -type legacyMerger interface { - Merge(protoiface.MessageV1) -} - -var aberrantProtoMethods = &protoiface.Methods{ - Marshal: legacyMarshal, - Unmarshal: legacyUnmarshal, - Merge: legacyMerge, - - // We have no way to tell whether the type's Marshal method - // supports deterministic serialization or not, but this - // preserves the v1 implementation's behavior of always - // calling Marshal methods when present. - Flags: protoiface.SupportMarshalDeterministic, -} - -func legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - v := in.Message.(unwrapper).protoUnwrap() - marshaler, ok := v.(legacyMarshaler) - if !ok { - return protoiface.MarshalOutput{}, errors.New("%T does not implement Marshal", v) - } - out, err := marshaler.Marshal() - if in.Buf != nil { - out = append(in.Buf, out...) - } - return protoiface.MarshalOutput{ - Buf: out, - }, err -} - -func legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - v := in.Message.(unwrapper).protoUnwrap() - unmarshaler, ok := v.(legacyUnmarshaler) - if !ok { - return protoiface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v) - } - return protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf) -} - -func legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput { - // Check whether this supports the legacy merger. - dstv := in.Destination.(unwrapper).protoUnwrap() - merger, ok := dstv.(legacyMerger) - if ok { - merger.Merge(Export{}.ProtoMessageV1Of(in.Source)) - return protoiface.MergeOutput{Flags: protoiface.MergeComplete} - } - - // If legacy merger is unavailable, implement merge in terms of - // a marshal and unmarshal operation. - srcv := in.Source.(unwrapper).protoUnwrap() - marshaler, ok := srcv.(legacyMarshaler) - if !ok { - return protoiface.MergeOutput{} - } - dstv = in.Destination.(unwrapper).protoUnwrap() - unmarshaler, ok := dstv.(legacyUnmarshaler) - if !ok { - return protoiface.MergeOutput{} - } - if !in.Source.IsValid() { - // Legacy Marshal methods may not function on nil messages. - // Check for a typed nil source only after we confirm that - // legacy Marshal/Unmarshal methods are present, for - // consistency. - return protoiface.MergeOutput{Flags: protoiface.MergeComplete} - } - b, err := marshaler.Marshal() - if err != nil { - return protoiface.MergeOutput{} - } - err = unmarshaler.Unmarshal(b) - if err != nil { - return protoiface.MergeOutput{} - } - return protoiface.MergeOutput{Flags: protoiface.MergeComplete} -} - -// aberrantMessageType implements MessageType for all types other than pointer-to-struct. -type aberrantMessageType struct { - t reflect.Type -} - -func (mt aberrantMessageType) New() protoreflect.Message { - if mt.t.Kind() == reflect.Ptr { - return aberrantMessage{reflect.New(mt.t.Elem())} - } - return aberrantMessage{reflect.Zero(mt.t)} -} -func (mt aberrantMessageType) Zero() protoreflect.Message { - return aberrantMessage{reflect.Zero(mt.t)} -} -func (mt aberrantMessageType) GoType() reflect.Type { - return mt.t -} -func (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor { - return LegacyLoadMessageDesc(mt.t) -} - -// aberrantMessage implements Message for all types other than pointer-to-struct. -// -// When the underlying type implements legacyMarshaler or legacyUnmarshaler, -// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is -// not much that can be done with values of this type. -type aberrantMessage struct { - v reflect.Value -} - -// Reset implements the v1 proto.Message.Reset method. -func (m aberrantMessage) Reset() { - if mr, ok := m.v.Interface().(interface{ Reset() }); ok { - mr.Reset() - return - } - if m.v.Kind() == reflect.Ptr && !m.v.IsNil() { - m.v.Elem().Set(reflect.Zero(m.v.Type().Elem())) - } -} - -func (m aberrantMessage) ProtoReflect() protoreflect.Message { - return m -} - -func (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor { - return LegacyLoadMessageDesc(m.v.Type()) -} -func (m aberrantMessage) Type() protoreflect.MessageType { - return aberrantMessageType{m.v.Type()} -} -func (m aberrantMessage) New() protoreflect.Message { - if m.v.Type().Kind() == reflect.Ptr { - return aberrantMessage{reflect.New(m.v.Type().Elem())} - } - return aberrantMessage{reflect.Zero(m.v.Type())} -} -func (m aberrantMessage) Interface() protoreflect.ProtoMessage { - return m -} -func (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - return -} -func (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool { - return false -} -func (m aberrantMessage) Clear(protoreflect.FieldDescriptor) { - panic("invalid Message.Clear on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { - if fd.Default().IsValid() { - return fd.Default() - } - panic("invalid Message.Get on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) { - panic("invalid Message.Set on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value { - panic("invalid Message.Mutable on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value { - panic("invalid Message.NewField on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName())) -} -func (m aberrantMessage) GetUnknown() protoreflect.RawFields { - return nil -} -func (m aberrantMessage) SetUnknown(protoreflect.RawFields) { - // SetUnknown discards its input on messages which don't support unknown field storage. -} -func (m aberrantMessage) IsValid() bool { - if m.v.Kind() == reflect.Ptr { - return !m.v.IsNil() - } - return false -} -func (m aberrantMessage) ProtoMethods() *protoiface.Methods { - return aberrantProtoMethods -} -func (m aberrantMessage) protoUnwrap() any { - return m.v.Interface() -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge.go b/vendor/google.golang.org/protobuf/internal/impl/merge.go deleted file mode 100644 index 7e65f64..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/merge.go +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -type mergeOptions struct{} - -func (o mergeOptions) Merge(dst, src proto.Message) { - proto.Merge(dst, src) -} - -// merge is protoreflect.Methods.Merge. -func (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput { - dp, ok := mi.getPointer(in.Destination) - if !ok { - return protoiface.MergeOutput{} - } - sp, ok := mi.getPointer(in.Source) - if !ok { - return protoiface.MergeOutput{} - } - mi.mergePointer(dp, sp, mergeOptions{}) - return protoiface.MergeOutput{Flags: protoiface.MergeComplete} -} - -func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { - mi.init() - if dst.IsNil() { - panic(fmt.Sprintf("invalid value: merging into nil message")) - } - if src.IsNil() { - return - } - for _, f := range mi.orderedCoderFields { - if f.funcs.merge == nil { - continue - } - sfptr := src.Apply(f.offset) - if f.isPointer && sfptr.Elem().IsNil() { - continue - } - f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts) - } - if mi.extensionOffset.IsValid() { - sext := src.Apply(mi.extensionOffset).Extensions() - dext := dst.Apply(mi.extensionOffset).Extensions() - if *dext == nil { - *dext = make(map[int32]ExtensionField) - } - for num, sx := range *sext { - xt := sx.Type() - xi := getExtensionFieldInfo(xt) - if xi.funcs.merge == nil { - continue - } - dx := (*dext)[num] - var dv protoreflect.Value - if dx.Type() == sx.Type() { - dv = dx.Value() - } - if !dv.IsValid() && xi.unmarshalNeedsValue { - dv = xt.New() - } - dv = xi.funcs.merge(dv, sx.Value(), opts) - dx.Set(sx.Type(), dv) - (*dext)[num] = dx - } - } - if mi.unknownOffset.IsValid() { - su := mi.getUnknownBytes(src) - if su != nil && len(*su) > 0 { - du := mi.mutableUnknownBytes(dst) - *du = append(*du, *su...) - } - } -} - -func mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - return src -} - -func mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - return protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...)) -} - -func mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - dstl := dst.List() - srcl := src.List() - for i, llen := 0, srcl.Len(); i < llen; i++ { - dstl.Append(srcl.Get(i)) - } - return dst -} - -func mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - dstl := dst.List() - srcl := src.List() - for i, llen := 0, srcl.Len(); i < llen; i++ { - sb := srcl.Get(i).Bytes() - db := append(emptyBuf[:], sb...) - dstl.Append(protoreflect.ValueOfBytes(db)) - } - return dst -} - -func mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - dstl := dst.List() - srcl := src.List() - for i, llen := 0, srcl.Len(); i < llen; i++ { - sm := srcl.Get(i).Message() - dm := proto.Clone(sm.Interface()).ProtoReflect() - dstl.Append(protoreflect.ValueOfMessage(dm)) - } - return dst -} - -func mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { - opts.Merge(dst.Message().Interface(), src.Message().Interface()) - return dst -} - -func mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - if f.mi != nil { - if dst.Elem().IsNil() { - dst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))) - } - f.mi.mergePointer(dst.Elem(), src.Elem(), opts) - } else { - dm := dst.AsValueOf(f.ft).Elem() - sm := src.AsValueOf(f.ft).Elem() - if dm.IsNil() { - dm.Set(reflect.New(f.ft.Elem())) - } - opts.Merge(asMessage(dm), asMessage(sm)) - } -} - -func mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) { - for _, sp := range src.PointerSlice() { - dm := reflect.New(f.ft.Elem().Elem()) - if f.mi != nil { - f.mi.mergePointer(pointerOfValue(dm), sp, opts) - } else { - opts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem()))) - } - dst.AppendPointerSlice(pointerOfValue(dm)) - } -} - -func mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Bytes() = append(emptyBuf[:], *src.Bytes()...) -} - -func mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Bytes() - if len(v) > 0 { - *dst.Bytes() = append(emptyBuf[:], v...) - } -} - -func mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.BytesSlice() - for _, v := range *src.BytesSlice() { - *ds = append(*ds, append(emptyBuf[:], v...)) - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go b/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go deleted file mode 100644 index 8816c27..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package impl - -import () - -func mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Bool() = *src.Bool() -} - -func mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Bool() - if v != false { - *dst.Bool() = v - } -} - -func mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.BoolPtr() - if p != nil { - v := *p - *dst.BoolPtr() = &v - } -} - -func mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.BoolSlice() - ss := src.BoolSlice() - *ds = append(*ds, *ss...) -} - -func mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Int32() = *src.Int32() -} - -func mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Int32() - if v != 0 { - *dst.Int32() = v - } -} - -func mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Int32Ptr() - if p != nil { - v := *p - *dst.Int32Ptr() = &v - } -} - -func mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Int32Slice() - ss := src.Int32Slice() - *ds = append(*ds, *ss...) -} - -func mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Uint32() = *src.Uint32() -} - -func mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Uint32() - if v != 0 { - *dst.Uint32() = v - } -} - -func mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Uint32Ptr() - if p != nil { - v := *p - *dst.Uint32Ptr() = &v - } -} - -func mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Uint32Slice() - ss := src.Uint32Slice() - *ds = append(*ds, *ss...) -} - -func mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Int64() = *src.Int64() -} - -func mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Int64() - if v != 0 { - *dst.Int64() = v - } -} - -func mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Int64Ptr() - if p != nil { - v := *p - *dst.Int64Ptr() = &v - } -} - -func mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Int64Slice() - ss := src.Int64Slice() - *ds = append(*ds, *ss...) -} - -func mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Uint64() = *src.Uint64() -} - -func mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Uint64() - if v != 0 { - *dst.Uint64() = v - } -} - -func mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Uint64Ptr() - if p != nil { - v := *p - *dst.Uint64Ptr() = &v - } -} - -func mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Uint64Slice() - ss := src.Uint64Slice() - *ds = append(*ds, *ss...) -} - -func mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Float32() = *src.Float32() -} - -func mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Float32() - if v != 0 { - *dst.Float32() = v - } -} - -func mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Float32Ptr() - if p != nil { - v := *p - *dst.Float32Ptr() = &v - } -} - -func mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Float32Slice() - ss := src.Float32Slice() - *ds = append(*ds, *ss...) -} - -func mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.Float64() = *src.Float64() -} - -func mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.Float64() - if v != 0 { - *dst.Float64() = v - } -} - -func mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.Float64Ptr() - if p != nil { - v := *p - *dst.Float64Ptr() = &v - } -} - -func mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.Float64Slice() - ss := src.Float64Slice() - *ds = append(*ds, *ss...) -} - -func mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - *dst.String() = *src.String() -} - -func mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - v := *src.String() - if v != "" { - *dst.String() = v - } -} - -func mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - p := *src.StringPtr() - if p != nil { - v := *p - *dst.StringPtr() = &v - } -} - -func mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - ds := dst.StringSlice() - ss := src.StringSlice() - *ds = append(*ds, *ss...) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go deleted file mode 100644 index 741b5ed..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/message.go +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "sync" - "sync/atomic" - - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// MessageInfo provides protobuf related functionality for a given Go type -// that represents a message. A given instance of MessageInfo is tied to -// exactly one Go type, which must be a pointer to a struct type. -// -// The exported fields must be populated before any methods are called -// and cannot be mutated after set. -type MessageInfo struct { - // GoReflectType is the underlying message Go type and must be populated. - GoReflectType reflect.Type // pointer to struct - - // Desc is the underlying message descriptor type and must be populated. - Desc protoreflect.MessageDescriptor - - // Deprecated: Exporter will be removed the next time we bump - // protoimpl.GenVersion. See https://github.com/golang/protobuf/issues/1640 - Exporter exporter - - // OneofWrappers is list of pointers to oneof wrapper struct types. - OneofWrappers []any - - initMu sync.Mutex // protects all unexported fields - initDone uint32 - - reflectMessageInfo // for reflection implementation - coderMessageInfo // for fast-path method implementations -} - -// exporter is a function that returns a reference to the ith field of v, -// where v is a pointer to a struct. It returns nil if it does not support -// exporting the requested field (e.g., already exported). -type exporter func(v any, i int) any - -// getMessageInfo returns the MessageInfo for any message type that -// is generated by our implementation of protoc-gen-go (for v2 and on). -// If it is unable to obtain a MessageInfo, it returns nil. -func getMessageInfo(mt reflect.Type) *MessageInfo { - m, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage) - if !ok { - return nil - } - mr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo }) - if !ok { - return nil - } - return mr.ProtoMessageInfo() -} - -func (mi *MessageInfo) init() { - // This function is called in the hot path. Inline the sync.Once logic, - // since allocating a closure for Once.Do is expensive. - // Keep init small to ensure that it can be inlined. - if atomic.LoadUint32(&mi.initDone) == 0 { - mi.initOnce() - } -} - -func (mi *MessageInfo) initOnce() { - mi.initMu.Lock() - defer mi.initMu.Unlock() - if mi.initDone == 1 { - return - } - - t := mi.GoReflectType - if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct { - panic(fmt.Sprintf("got %v, want *struct kind", t)) - } - t = t.Elem() - - si := mi.makeStructInfo(t) - mi.makeReflectFuncs(t, si) - mi.makeCoderMethods(t, si) - - atomic.StoreUint32(&mi.initDone, 1) -} - -// getPointer returns the pointer for a message, which should be of -// the type of the MessageInfo. If the message is of a different type, -// it returns ok==false. -func (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) { - switch m := m.(type) { - case *messageState: - return m.pointer(), m.messageInfo() == mi - case *messageReflectWrapper: - return m.pointer(), m.messageInfo() == mi - } - return pointer{}, false -} - -type ( - SizeCache = int32 - WeakFields = map[int32]protoreflect.ProtoMessage - UnknownFields = unknownFieldsA // TODO: switch to unknownFieldsB - unknownFieldsA = []byte - unknownFieldsB = *[]byte - ExtensionFields = map[int32]ExtensionField -) - -var ( - sizecacheType = reflect.TypeOf(SizeCache(0)) - weakFieldsType = reflect.TypeOf(WeakFields(nil)) - unknownFieldsAType = reflect.TypeOf(unknownFieldsA(nil)) - unknownFieldsBType = reflect.TypeOf(unknownFieldsB(nil)) - extensionFieldsType = reflect.TypeOf(ExtensionFields(nil)) -) - -type structInfo struct { - sizecacheOffset offset - sizecacheType reflect.Type - weakOffset offset - weakType reflect.Type - unknownOffset offset - unknownType reflect.Type - extensionOffset offset - extensionType reflect.Type - - fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField - oneofsByName map[protoreflect.Name]reflect.StructField - oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber - oneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type -} - -func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo { - si := structInfo{ - sizecacheOffset: invalidOffset, - weakOffset: invalidOffset, - unknownOffset: invalidOffset, - extensionOffset: invalidOffset, - - fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{}, - oneofsByName: map[protoreflect.Name]reflect.StructField{}, - oneofWrappersByType: map[reflect.Type]protoreflect.FieldNumber{}, - oneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{}, - } - -fieldLoop: - for i := 0; i < t.NumField(); i++ { - switch f := t.Field(i); f.Name { - case genid.SizeCache_goname, genid.SizeCacheA_goname: - if f.Type == sizecacheType { - si.sizecacheOffset = offsetOf(f, mi.Exporter) - si.sizecacheType = f.Type - } - case genid.WeakFields_goname, genid.WeakFieldsA_goname: - if f.Type == weakFieldsType { - si.weakOffset = offsetOf(f, mi.Exporter) - si.weakType = f.Type - } - case genid.UnknownFields_goname, genid.UnknownFieldsA_goname: - if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType { - si.unknownOffset = offsetOf(f, mi.Exporter) - si.unknownType = f.Type - } - case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname: - if f.Type == extensionFieldsType { - si.extensionOffset = offsetOf(f, mi.Exporter) - si.extensionType = f.Type - } - default: - for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { - if len(s) > 0 && strings.Trim(s, "0123456789") == "" { - n, _ := strconv.ParseUint(s, 10, 64) - si.fieldsByNumber[protoreflect.FieldNumber(n)] = f - continue fieldLoop - } - } - if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 { - si.oneofsByName[protoreflect.Name(s)] = f - continue fieldLoop - } - } - } - - // Derive a mapping of oneof wrappers to fields. - oneofWrappers := mi.OneofWrappers - methods := make([]reflect.Method, 0, 2) - if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofFuncs"); ok { - methods = append(methods, m) - } - if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofWrappers"); ok { - methods = append(methods, m) - } - for _, fn := range methods { - for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]any); ok { - oneofWrappers = vs - } - } - } - for _, v := range oneofWrappers { - tf := reflect.TypeOf(v).Elem() - f := tf.Field(0) - for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { - if len(s) > 0 && strings.Trim(s, "0123456789") == "" { - n, _ := strconv.ParseUint(s, 10, 64) - si.oneofWrappersByType[tf] = protoreflect.FieldNumber(n) - si.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf - break - } - } - } - - return si -} - -func (mi *MessageInfo) New() protoreflect.Message { - m := reflect.New(mi.GoReflectType.Elem()).Interface() - if r, ok := m.(protoreflect.ProtoMessage); ok { - return r.ProtoReflect() - } - return mi.MessageOf(m) -} -func (mi *MessageInfo) Zero() protoreflect.Message { - return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface()) -} -func (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor { - return mi.Desc -} -func (mi *MessageInfo) Enum(i int) protoreflect.EnumType { - mi.init() - fd := mi.Desc.Fields().Get(i) - return Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()]) -} -func (mi *MessageInfo) Message(i int) protoreflect.MessageType { - mi.init() - fd := mi.Desc.Fields().Get(i) - switch { - case fd.IsWeak(): - mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()) - return mt - case fd.IsMap(): - return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]} - default: - return Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()]) - } -} - -type mapEntryType struct { - desc protoreflect.MessageDescriptor - valType any // zero value of enum or message type -} - -func (mt mapEntryType) New() protoreflect.Message { - return nil -} -func (mt mapEntryType) Zero() protoreflect.Message { - return nil -} -func (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor { - return mt.desc -} -func (mt mapEntryType) Enum(i int) protoreflect.EnumType { - fd := mt.desc.Fields().Get(i) - if fd.Enum() == nil { - return nil - } - return Export{}.EnumTypeOf(mt.valType) -} -func (mt mapEntryType) Message(i int) protoreflect.MessageType { - fd := mt.desc.Fields().Get(i) - if fd.Message() == nil { - return nil - } - return Export{}.MessageTypeOf(mt.valType) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go deleted file mode 100644 index ecb4623..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +++ /dev/null @@ -1,462 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "reflect" - - "google.golang.org/protobuf/internal/detrand" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -type reflectMessageInfo struct { - fields map[protoreflect.FieldNumber]*fieldInfo - oneofs map[protoreflect.Name]*oneofInfo - - // fieldTypes contains the zero value of an enum or message field. - // For lists, it contains the element type. - // For maps, it contains the entry value type. - fieldTypes map[protoreflect.FieldNumber]any - - // denseFields is a subset of fields where: - // 0 < fieldDesc.Number() < len(denseFields) - // It provides faster access to the fieldInfo, but may be incomplete. - denseFields []*fieldInfo - - // rangeInfos is a list of all fields (not belonging to a oneof) and oneofs. - rangeInfos []any // either *fieldInfo or *oneofInfo - - getUnknown func(pointer) protoreflect.RawFields - setUnknown func(pointer, protoreflect.RawFields) - extensionMap func(pointer) *extensionMap - - nilMessage atomicNilMessage -} - -// makeReflectFuncs generates the set of functions to support reflection. -func (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) { - mi.makeKnownFieldsFunc(si) - mi.makeUnknownFieldsFunc(t, si) - mi.makeExtensionFieldsFunc(t, si) - mi.makeFieldTypes(si) -} - -// makeKnownFieldsFunc generates functions for operations that can be performed -// on each protobuf message field. It takes in a reflect.Type representing the -// Go struct and matches message fields with struct fields. -// -// This code assumes that the struct is well-formed and panics if there are -// any discrepancies. -func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) { - mi.fields = map[protoreflect.FieldNumber]*fieldInfo{} - md := mi.Desc - fds := md.Fields() - for i := 0; i < fds.Len(); i++ { - fd := fds.Get(i) - fs := si.fieldsByNumber[fd.Number()] - isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() - if isOneof { - fs = si.oneofsByName[fd.ContainingOneof().Name()] - } - var fi fieldInfo - switch { - case fs.Type == nil: - fi = fieldInfoForMissing(fd) // never occurs for officially generated message types - case isOneof: - fi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()]) - case fd.IsMap(): - fi = fieldInfoForMap(fd, fs, mi.Exporter) - case fd.IsList(): - fi = fieldInfoForList(fd, fs, mi.Exporter) - case fd.IsWeak(): - fi = fieldInfoForWeakMessage(fd, si.weakOffset) - case fd.Message() != nil: - fi = fieldInfoForMessage(fd, fs, mi.Exporter) - default: - fi = fieldInfoForScalar(fd, fs, mi.Exporter) - } - mi.fields[fd.Number()] = &fi - } - - mi.oneofs = map[protoreflect.Name]*oneofInfo{} - for i := 0; i < md.Oneofs().Len(); i++ { - od := md.Oneofs().Get(i) - mi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter) - } - - mi.denseFields = make([]*fieldInfo, fds.Len()*2) - for i := 0; i < fds.Len(); i++ { - if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) { - mi.denseFields[fd.Number()] = mi.fields[fd.Number()] - } - } - - for i := 0; i < fds.Len(); { - fd := fds.Get(i) - if od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() { - mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()]) - i += od.Fields().Len() - } else { - mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()]) - i++ - } - } - - // Introduce instability to iteration order, but keep it deterministic. - if len(mi.rangeInfos) > 1 && detrand.Bool() { - i := detrand.Intn(len(mi.rangeInfos) - 1) - mi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i] - } -} - -func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { - switch { - case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType: - // Handle as []byte. - mi.getUnknown = func(p pointer) protoreflect.RawFields { - if p.IsNil() { - return nil - } - return *p.Apply(mi.unknownOffset).Bytes() - } - mi.setUnknown = func(p pointer, b protoreflect.RawFields) { - if p.IsNil() { - panic("invalid SetUnknown on nil Message") - } - *p.Apply(mi.unknownOffset).Bytes() = b - } - case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType: - // Handle as *[]byte. - mi.getUnknown = func(p pointer) protoreflect.RawFields { - if p.IsNil() { - return nil - } - bp := p.Apply(mi.unknownOffset).BytesPtr() - if *bp == nil { - return nil - } - return **bp - } - mi.setUnknown = func(p pointer, b protoreflect.RawFields) { - if p.IsNil() { - panic("invalid SetUnknown on nil Message") - } - bp := p.Apply(mi.unknownOffset).BytesPtr() - if *bp == nil { - *bp = new([]byte) - } - **bp = b - } - default: - mi.getUnknown = func(pointer) protoreflect.RawFields { - return nil - } - mi.setUnknown = func(p pointer, _ protoreflect.RawFields) { - if p.IsNil() { - panic("invalid SetUnknown on nil Message") - } - } - } -} - -func (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) { - if si.extensionOffset.IsValid() { - mi.extensionMap = func(p pointer) *extensionMap { - if p.IsNil() { - return (*extensionMap)(nil) - } - v := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType) - return (*extensionMap)(v.Interface().(*map[int32]ExtensionField)) - } - } else { - mi.extensionMap = func(pointer) *extensionMap { - return (*extensionMap)(nil) - } - } -} -func (mi *MessageInfo) makeFieldTypes(si structInfo) { - md := mi.Desc - fds := md.Fields() - for i := 0; i < fds.Len(); i++ { - var ft reflect.Type - fd := fds.Get(i) - fs := si.fieldsByNumber[fd.Number()] - isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() - if isOneof { - fs = si.oneofsByName[fd.ContainingOneof().Name()] - } - var isMessage bool - switch { - case fs.Type == nil: - continue // never occurs for officially generated message types - case isOneof: - if fd.Enum() != nil || fd.Message() != nil { - ft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type - } - case fd.IsMap(): - if fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil { - ft = fs.Type.Elem() - } - isMessage = fd.MapValue().Message() != nil - case fd.IsList(): - if fd.Enum() != nil || fd.Message() != nil { - ft = fs.Type.Elem() - } - isMessage = fd.Message() != nil - case fd.Enum() != nil: - ft = fs.Type - if fd.HasPresence() && ft.Kind() == reflect.Ptr { - ft = ft.Elem() - } - case fd.Message() != nil: - ft = fs.Type - if fd.IsWeak() { - ft = nil - } - isMessage = true - } - if isMessage && ft != nil && ft.Kind() != reflect.Ptr { - ft = reflect.PtrTo(ft) // never occurs for officially generated message types - } - if ft != nil { - if mi.fieldTypes == nil { - mi.fieldTypes = make(map[protoreflect.FieldNumber]any) - } - mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface() - } - } -} - -type extensionMap map[int32]ExtensionField - -func (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if m != nil { - for _, x := range *m { - xd := x.Type().TypeDescriptor() - v := x.Value() - if xd.IsList() && v.List().Len() == 0 { - continue - } - if !f(xd, v) { - return - } - } - } -} -func (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) { - if m == nil { - return false - } - x, ok := (*m)[int32(xd.Number())] - if !ok { - return false - } - if x.isUnexpandedLazy() { - // Avoid calling x.Value(), which triggers a lazy unmarshal. - return true - } - switch { - case xd.IsList(): - return x.Value().List().Len() > 0 - case xd.IsMap(): - return x.Value().Map().Len() > 0 - } - return true -} -func (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) { - delete(*m, int32(xd.Number())) -} -func (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { - if m != nil { - if x, ok := (*m)[int32(xd.Number())]; ok { - return x.Value() - } - } - return xd.Type().Zero() -} -func (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) { - xt := xd.Type() - isValid := true - switch { - case !xt.IsValidValue(v): - isValid = false - case xd.IsList(): - isValid = v.List().IsValid() - case xd.IsMap(): - isValid = v.Map().IsValid() - case xd.Message() != nil: - isValid = v.Message().IsValid() - } - if !isValid { - panic(fmt.Sprintf("%v: assigning invalid value", xd.FullName())) - } - - if *m == nil { - *m = make(map[int32]ExtensionField) - } - var x ExtensionField - x.Set(xt, v) - (*m)[int32(xd.Number())] = x -} -func (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { - if xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() { - panic("invalid Mutable on field with non-composite type") - } - if x, ok := (*m)[int32(xd.Number())]; ok { - return x.Value() - } - v := xd.Type().New() - m.Set(xd, v) - return v -} - -// MessageState is a data structure that is nested as the first field in a -// concrete message. It provides a way to implement the ProtoReflect method -// in an allocation-free way without needing to have a shadow Go type generated -// for every message type. This technique only works using unsafe. -// -// Example generated code: -// -// type M struct { -// state protoimpl.MessageState -// -// Field1 int32 -// Field2 string -// Field3 *BarMessage -// ... -// } -// -// func (m *M) ProtoReflect() protoreflect.Message { -// mi := &file_fizz_buzz_proto_msgInfos[5] -// if protoimpl.UnsafeEnabled && m != nil { -// ms := protoimpl.X.MessageStateOf(Pointer(m)) -// if ms.LoadMessageInfo() == nil { -// ms.StoreMessageInfo(mi) -// } -// return ms -// } -// return mi.MessageOf(m) -// } -// -// The MessageState type holds a *MessageInfo, which must be atomically set to -// the message info associated with a given message instance. -// By unsafely converting a *M into a *MessageState, the MessageState object -// has access to all the information needed to implement protobuf reflection. -// It has access to the message info as its first field, and a pointer to the -// MessageState is identical to a pointer to the concrete message value. -// -// Requirements: -// - The type M must implement protoreflect.ProtoMessage. -// - The address of m must not be nil. -// - The address of m and the address of m.state must be equal, -// even though they are different Go types. -type MessageState struct { - pragma.NoUnkeyedLiterals - pragma.DoNotCompare - pragma.DoNotCopy - - atomicMessageInfo *MessageInfo -} - -type messageState MessageState - -var ( - _ protoreflect.Message = (*messageState)(nil) - _ unwrapper = (*messageState)(nil) -) - -// messageDataType is a tuple of a pointer to the message data and -// a pointer to the message type. It is a generalized way of providing a -// reflective view over a message instance. The disadvantage of this approach -// is the need to allocate this tuple of 16B. -type messageDataType struct { - p pointer - mi *MessageInfo -} - -type ( - messageReflectWrapper messageDataType - messageIfaceWrapper messageDataType -) - -var ( - _ protoreflect.Message = (*messageReflectWrapper)(nil) - _ unwrapper = (*messageReflectWrapper)(nil) - _ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil) - _ unwrapper = (*messageIfaceWrapper)(nil) -) - -// MessageOf returns a reflective view over a message. The input must be a -// pointer to a named Go struct. If the provided type has a ProtoReflect method, -// it must be implemented by calling this method. -func (mi *MessageInfo) MessageOf(m any) protoreflect.Message { - if reflect.TypeOf(m) != mi.GoReflectType { - panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType)) - } - p := pointerOfIface(m) - if p.IsNil() { - return mi.nilMessage.Init(mi) - } - return &messageReflectWrapper{p, mi} -} - -func (m *messageReflectWrapper) pointer() pointer { return m.p } -func (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi } - -// Reset implements the v1 proto.Message.Reset method. -func (m *messageIfaceWrapper) Reset() { - if mr, ok := m.protoUnwrap().(interface{ Reset() }); ok { - mr.Reset() - return - } - rv := reflect.ValueOf(m.protoUnwrap()) - if rv.Kind() == reflect.Ptr && !rv.IsNil() { - rv.Elem().Set(reflect.Zero(rv.Type().Elem())) - } -} -func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message { - return (*messageReflectWrapper)(m) -} -func (m *messageIfaceWrapper) protoUnwrap() any { - return m.p.AsIfaceOf(m.mi.GoReflectType.Elem()) -} - -// checkField verifies that the provided field descriptor is valid. -// Exactly one of the returned values is populated. -func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) { - var fi *fieldInfo - if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) { - fi = mi.denseFields[n] - } else { - fi = mi.fields[n] - } - if fi != nil { - if fi.fieldDesc != fd { - if got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want { - panic(fmt.Sprintf("mismatching field: got %v, want %v", got, want)) - } - panic(fmt.Sprintf("mismatching field: %v", fd.FullName())) - } - return fi, nil - } - - if fd.IsExtension() { - if got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want { - // TODO: Should this be exact containing message descriptor match? - panic(fmt.Sprintf("extension %v has mismatching containing message: got %v, want %v", fd.FullName(), got, want)) - } - if !mi.Desc.ExtensionRanges().Has(fd.Number()) { - panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName())) - } - xtd, ok := fd.(protoreflect.ExtensionTypeDescriptor) - if !ok { - panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) - } - return nil, xtd - } - panic(fmt.Sprintf("field %v is invalid", fd.FullName())) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go deleted file mode 100644 index 986322b..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +++ /dev/null @@ -1,543 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "math" - "reflect" - "sync" - - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -type fieldInfo struct { - fieldDesc protoreflect.FieldDescriptor - - // These fields are used for protobuf reflection support. - has func(pointer) bool - clear func(pointer) - get func(pointer) protoreflect.Value - set func(pointer, protoreflect.Value) - mutable func(pointer) protoreflect.Value - newMessage func() protoreflect.Message - newField func() protoreflect.Value -} - -func fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo { - // This never occurs for generated message types. - // It implies that a hand-crafted type has missing Go fields - // for specific protobuf message fields. - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - return false - }, - clear: func(p pointer) { - panic("missing Go struct field for " + string(fd.FullName())) - }, - get: func(p pointer) protoreflect.Value { - return fd.Default() - }, - set: func(p pointer, v protoreflect.Value) { - panic("missing Go struct field for " + string(fd.FullName())) - }, - mutable: func(p pointer) protoreflect.Value { - panic("missing Go struct field for " + string(fd.FullName())) - }, - newMessage: func() protoreflect.Message { - panic("missing Go struct field for " + string(fd.FullName())) - }, - newField: func() protoreflect.Value { - if v := fd.Default(); v.IsValid() { - return v - } - panic("missing Go struct field for " + string(fd.FullName())) - }, - } -} - -func fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { - ft := fs.Type - if ft.Kind() != reflect.Interface { - panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft)) - } - if ot.Kind() != reflect.Struct { - panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot)) - } - if !reflect.PtrTo(ot).Implements(ft) { - panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft)) - } - conv := NewConverter(ot.Field(0).Type, fd) - isMessage := fd.Message() != nil - - // TODO: Implement unsafe fast path? - fieldOffset := offsetOf(fs, x) - return fieldInfo{ - // NOTE: The logic below intentionally assumes that oneof fields are - // well-formatted. That is, the oneof interface never contains a - // typed nil pointer to one of the wrapper structs. - - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { - return false - } - return true - }, - clear: func(p pointer) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() || rv.Elem().Type().Elem() != ot { - // NOTE: We intentionally don't check for rv.Elem().IsNil() - // so that (*OneofWrapperType)(nil) gets cleared to nil. - return - } - rv.Set(reflect.Zero(rv.Type())) - }, - get: func(p pointer) protoreflect.Value { - if p.IsNil() { - return conv.Zero() - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { - return conv.Zero() - } - rv = rv.Elem().Elem().Field(0) - return conv.PBValueOf(rv) - }, - set: func(p pointer, v protoreflect.Value) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { - rv.Set(reflect.New(ot)) - } - rv = rv.Elem().Elem().Field(0) - rv.Set(conv.GoValueOf(v)) - }, - mutable: func(p pointer) protoreflect.Value { - if !isMessage { - panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName())) - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { - rv.Set(reflect.New(ot)) - } - rv = rv.Elem().Elem().Field(0) - if rv.Kind() == reflect.Ptr && rv.IsNil() { - rv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message()))) - } - return conv.PBValueOf(rv) - }, - newMessage: func() protoreflect.Message { - return conv.New().Message() - }, - newField: func() protoreflect.Value { - return conv.New() - }, - } -} - -func fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { - ft := fs.Type - if ft.Kind() != reflect.Map { - panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft)) - } - conv := NewConverter(ft, fd) - - // TODO: Implement unsafe fast path? - fieldOffset := offsetOf(fs, x) - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - return rv.Len() > 0 - }, - clear: func(p pointer) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - rv.Set(reflect.Zero(rv.Type())) - }, - get: func(p pointer) protoreflect.Value { - if p.IsNil() { - return conv.Zero() - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.Len() == 0 { - return conv.Zero() - } - return conv.PBValueOf(rv) - }, - set: func(p pointer, v protoreflect.Value) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - pv := conv.GoValueOf(v) - if pv.IsNil() { - panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName())) - } - rv.Set(pv) - }, - mutable: func(p pointer) protoreflect.Value { - v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if v.IsNil() { - v.Set(reflect.MakeMap(fs.Type)) - } - return conv.PBValueOf(v) - }, - newField: func() protoreflect.Value { - return conv.New() - }, - } -} - -func fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { - ft := fs.Type - if ft.Kind() != reflect.Slice { - panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft)) - } - conv := NewConverter(reflect.PtrTo(ft), fd) - - // TODO: Implement unsafe fast path? - fieldOffset := offsetOf(fs, x) - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - return rv.Len() > 0 - }, - clear: func(p pointer) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - rv.Set(reflect.Zero(rv.Type())) - }, - get: func(p pointer) protoreflect.Value { - if p.IsNil() { - return conv.Zero() - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type) - if rv.Elem().Len() == 0 { - return conv.Zero() - } - return conv.PBValueOf(rv) - }, - set: func(p pointer, v protoreflect.Value) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - pv := conv.GoValueOf(v) - if pv.IsNil() { - panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName())) - } - rv.Set(pv.Elem()) - }, - mutable: func(p pointer) protoreflect.Value { - v := p.Apply(fieldOffset).AsValueOf(fs.Type) - return conv.PBValueOf(v) - }, - newField: func() protoreflect.Value { - return conv.New() - }, - } -} - -var ( - nilBytes = reflect.ValueOf([]byte(nil)) - emptyBytes = reflect.ValueOf([]byte{}) -) - -func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { - ft := fs.Type - nullable := fd.HasPresence() - isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 - if nullable { - if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice { - // This never occurs for generated message types. - // Despite the protobuf type system specifying presence, - // the Go field type cannot represent it. - nullable = false - } - if ft.Kind() == reflect.Ptr { - ft = ft.Elem() - } - } - conv := NewConverter(ft, fd) - - // TODO: Implement unsafe fast path? - fieldOffset := offsetOf(fs, x) - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if nullable { - return !rv.IsNil() - } - switch rv.Kind() { - case reflect.Bool: - return rv.Bool() - case reflect.Int32, reflect.Int64: - return rv.Int() != 0 - case reflect.Uint32, reflect.Uint64: - return rv.Uint() != 0 - case reflect.Float32, reflect.Float64: - return rv.Float() != 0 || math.Signbit(rv.Float()) - case reflect.String, reflect.Slice: - return rv.Len() > 0 - default: - panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen - } - }, - clear: func(p pointer) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - rv.Set(reflect.Zero(rv.Type())) - }, - get: func(p pointer) protoreflect.Value { - if p.IsNil() { - return conv.Zero() - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if nullable { - if rv.IsNil() { - return conv.Zero() - } - if rv.Kind() == reflect.Ptr { - rv = rv.Elem() - } - } - return conv.PBValueOf(rv) - }, - set: func(p pointer, v protoreflect.Value) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if nullable && rv.Kind() == reflect.Ptr { - if rv.IsNil() { - rv.Set(reflect.New(ft)) - } - rv = rv.Elem() - } - rv.Set(conv.GoValueOf(v)) - if isBytes && rv.Len() == 0 { - if nullable { - rv.Set(emptyBytes) // preserve presence - } else { - rv.Set(nilBytes) // do not preserve presence - } - } - }, - newField: func() protoreflect.Value { - return conv.New() - }, - } -} - -func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo { - if !flags.ProtoLegacy { - panic("no support for proto1 weak fields") - } - - var once sync.Once - var messageType protoreflect.MessageType - lazyInit := func() { - once.Do(func() { - messageName := fd.Message().FullName() - messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) - if messageType == nil { - panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName())) - } - }) - } - - num := fd.Number() - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - _, ok := p.Apply(weakOffset).WeakFields().get(num) - return ok - }, - clear: func(p pointer) { - p.Apply(weakOffset).WeakFields().clear(num) - }, - get: func(p pointer) protoreflect.Value { - lazyInit() - if p.IsNil() { - return protoreflect.ValueOfMessage(messageType.Zero()) - } - m, ok := p.Apply(weakOffset).WeakFields().get(num) - if !ok { - return protoreflect.ValueOfMessage(messageType.Zero()) - } - return protoreflect.ValueOfMessage(m.ProtoReflect()) - }, - set: func(p pointer, v protoreflect.Value) { - lazyInit() - m := v.Message() - if m.Descriptor() != messageType.Descriptor() { - if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want { - panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want)) - } - panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName())) - } - p.Apply(weakOffset).WeakFields().set(num, m.Interface()) - }, - mutable: func(p pointer) protoreflect.Value { - lazyInit() - fs := p.Apply(weakOffset).WeakFields() - m, ok := fs.get(num) - if !ok { - m = messageType.New().Interface() - fs.set(num, m) - } - return protoreflect.ValueOfMessage(m.ProtoReflect()) - }, - newMessage: func() protoreflect.Message { - lazyInit() - return messageType.New() - }, - newField: func() protoreflect.Value { - lazyInit() - return protoreflect.ValueOfMessage(messageType.New()) - }, - } -} - -func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { - ft := fs.Type - conv := NewConverter(ft, fd) - - // TODO: Implement unsafe fast path? - fieldOffset := offsetOf(fs, x) - return fieldInfo{ - fieldDesc: fd, - has: func(p pointer) bool { - if p.IsNil() { - return false - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if fs.Type.Kind() != reflect.Ptr { - return !isZero(rv) - } - return !rv.IsNil() - }, - clear: func(p pointer) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - rv.Set(reflect.Zero(rv.Type())) - }, - get: func(p pointer) protoreflect.Value { - if p.IsNil() { - return conv.Zero() - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - return conv.PBValueOf(rv) - }, - set: func(p pointer, v protoreflect.Value) { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - rv.Set(conv.GoValueOf(v)) - if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { - panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName())) - } - }, - mutable: func(p pointer) protoreflect.Value { - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { - rv.Set(conv.GoValueOf(conv.New())) - } - return conv.PBValueOf(rv) - }, - newMessage: func() protoreflect.Message { - return conv.New().Message() - }, - newField: func() protoreflect.Value { - return conv.New() - }, - } -} - -type oneofInfo struct { - oneofDesc protoreflect.OneofDescriptor - which func(pointer) protoreflect.FieldNumber -} - -func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo { - oi := &oneofInfo{oneofDesc: od} - if od.IsSynthetic() { - fs := si.fieldsByNumber[od.Fields().Get(0).Number()] - fieldOffset := offsetOf(fs, x) - oi.which = func(p pointer) protoreflect.FieldNumber { - if p.IsNil() { - return 0 - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() { // valid on either *T or []byte - return 0 - } - return od.Fields().Get(0).Number() - } - } else { - fs := si.oneofsByName[od.Name()] - fieldOffset := offsetOf(fs, x) - oi.which = func(p pointer) protoreflect.FieldNumber { - if p.IsNil() { - return 0 - } - rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() - if rv.IsNil() { - return 0 - } - rv = rv.Elem() - if rv.IsNil() { - return 0 - } - return si.oneofWrappersByType[rv.Type().Elem()] - } - } - return oi -} - -// isZero is identical to reflect.Value.IsZero. -// TODO: Remove this when Go1.13 is the minimally supported Go version. -func isZero(v reflect.Value) bool { - switch v.Kind() { - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return math.Float64bits(v.Float()) == 0 - case reflect.Complex64, reflect.Complex128: - c := v.Complex() - return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0 - case reflect.Array: - for i := 0; i < v.Len(); i++ { - if !isZero(v.Index(i)) { - return false - } - } - return true - case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: - return v.IsNil() - case reflect.String: - return v.Len() == 0 - case reflect.Struct: - for i := 0; i < v.NumField(); i++ { - if !isZero(v.Field(i)) { - return false - } - } - return true - default: - panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()}) - } -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go deleted file mode 100644 index 99dc23c..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package impl - -import ( - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -func (m *messageState) Descriptor() protoreflect.MessageDescriptor { - return m.messageInfo().Desc -} -func (m *messageState) Type() protoreflect.MessageType { - return m.messageInfo() -} -func (m *messageState) New() protoreflect.Message { - return m.messageInfo().New() -} -func (m *messageState) Interface() protoreflect.ProtoMessage { - return m.protoUnwrap().(protoreflect.ProtoMessage) -} -func (m *messageState) protoUnwrap() any { - return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) -} -func (m *messageState) ProtoMethods() *protoiface.Methods { - mi := m.messageInfo() - mi.init() - return &mi.methods -} - -// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code -// to be able to retrieve a v2 MessageInfo struct. -// -// WARNING: This method is exempt from the compatibility promise and -// may be removed in the future without warning. -func (m *messageState) ProtoMessageInfo() *MessageInfo { - return m.messageInfo() -} - -func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - mi := m.messageInfo() - mi.init() - for _, ri := range mi.rangeInfos { - switch ri := ri.(type) { - case *fieldInfo: - if ri.has(m.pointer()) { - if !f(ri.fieldDesc, ri.get(m.pointer())) { - return - } - } - case *oneofInfo: - if n := ri.which(m.pointer()); n > 0 { - fi := mi.fields[n] - if !f(fi.fieldDesc, fi.get(m.pointer())) { - return - } - } - } - } - mi.extensionMap(m.pointer()).Range(f) -} -func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.has(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Has(xd) - } -} -func (m *messageState) Clear(fd protoreflect.FieldDescriptor) { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - fi.clear(m.pointer()) - } else { - mi.extensionMap(m.pointer()).Clear(xd) - } -} -func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.get(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Get(xd) - } -} -func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - fi.set(m.pointer(), v) - } else { - mi.extensionMap(m.pointer()).Set(xd, v) - } -} -func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.mutable(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Mutable(xd) - } -} -func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.newField() - } else { - return xd.Type().New() - } -} -func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - mi := m.messageInfo() - mi.init() - if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { - return od.Fields().ByNumber(oi.which(m.pointer())) - } - panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) -} -func (m *messageState) GetUnknown() protoreflect.RawFields { - mi := m.messageInfo() - mi.init() - return mi.getUnknown(m.pointer()) -} -func (m *messageState) SetUnknown(b protoreflect.RawFields) { - mi := m.messageInfo() - mi.init() - mi.setUnknown(m.pointer(), b) -} -func (m *messageState) IsValid() bool { - return !m.pointer().IsNil() -} - -func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor { - return m.messageInfo().Desc -} -func (m *messageReflectWrapper) Type() protoreflect.MessageType { - return m.messageInfo() -} -func (m *messageReflectWrapper) New() protoreflect.Message { - return m.messageInfo().New() -} -func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage { - if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok { - return m - } - return (*messageIfaceWrapper)(m) -} -func (m *messageReflectWrapper) protoUnwrap() any { - return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) -} -func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods { - mi := m.messageInfo() - mi.init() - return &mi.methods -} - -// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code -// to be able to retrieve a v2 MessageInfo struct. -// -// WARNING: This method is exempt from the compatibility promise and -// may be removed in the future without warning. -func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo { - return m.messageInfo() -} - -func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - mi := m.messageInfo() - mi.init() - for _, ri := range mi.rangeInfos { - switch ri := ri.(type) { - case *fieldInfo: - if ri.has(m.pointer()) { - if !f(ri.fieldDesc, ri.get(m.pointer())) { - return - } - } - case *oneofInfo: - if n := ri.which(m.pointer()); n > 0 { - fi := mi.fields[n] - if !f(fi.fieldDesc, fi.get(m.pointer())) { - return - } - } - } - } - mi.extensionMap(m.pointer()).Range(f) -} -func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.has(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Has(xd) - } -} -func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - fi.clear(m.pointer()) - } else { - mi.extensionMap(m.pointer()).Clear(xd) - } -} -func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.get(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Get(xd) - } -} -func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - fi.set(m.pointer(), v) - } else { - mi.extensionMap(m.pointer()).Set(xd, v) - } -} -func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.mutable(m.pointer()) - } else { - return mi.extensionMap(m.pointer()).Mutable(xd) - } -} -func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - mi := m.messageInfo() - mi.init() - if fi, xd := mi.checkField(fd); fi != nil { - return fi.newField() - } else { - return xd.Type().New() - } -} -func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - mi := m.messageInfo() - mi.init() - if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { - return od.Fields().ByNumber(oi.which(m.pointer())) - } - panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) -} -func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields { - mi := m.messageInfo() - mi.init() - return mi.getUnknown(m.pointer()) -} -func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) { - mi := m.messageInfo() - mi.init() - mi.setUnknown(m.pointer(), b) -} -func (m *messageReflectWrapper) IsValid() bool { - return !m.pointer().IsNil() -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go deleted file mode 100644 index 79e1866..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "reflect" - "sync/atomic" - "unsafe" -) - -const UnsafeEnabled = true - -// Pointer is an opaque pointer type. -type Pointer unsafe.Pointer - -// offset represents the offset to a struct field, accessible from a pointer. -// The offset is the byte offset to the field from the start of the struct. -type offset uintptr - -// offsetOf returns a field offset for the struct field. -func offsetOf(f reflect.StructField, x exporter) offset { - return offset(f.Offset) -} - -// IsValid reports whether the offset is valid. -func (f offset) IsValid() bool { return f != invalidOffset } - -// invalidOffset is an invalid field offset. -var invalidOffset = ^offset(0) - -// zeroOffset is a noop when calling pointer.Apply. -var zeroOffset = offset(0) - -// pointer is a pointer to a message struct or field. -type pointer struct{ p unsafe.Pointer } - -// pointerOf returns p as a pointer. -func pointerOf(p Pointer) pointer { - return pointer{p: unsafe.Pointer(p)} -} - -// pointerOfValue returns v as a pointer. -func pointerOfValue(v reflect.Value) pointer { - return pointer{p: unsafe.Pointer(v.Pointer())} -} - -// pointerOfIface returns the pointer portion of an interface. -func pointerOfIface(v any) pointer { - type ifaceHeader struct { - Type unsafe.Pointer - Data unsafe.Pointer - } - return pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data} -} - -// IsNil reports whether the pointer is nil. -func (p pointer) IsNil() bool { - return p.p == nil -} - -// Apply adds an offset to the pointer to derive a new pointer -// to a specified field. The pointer must be valid and pointing at a struct. -func (p pointer) Apply(f offset) pointer { - if p.IsNil() { - panic("invalid nil pointer") - } - return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))} -} - -// AsValueOf treats p as a pointer to an object of type t and returns the value. -// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) -func (p pointer) AsValueOf(t reflect.Type) reflect.Value { - return reflect.NewAt(t, p.p) -} - -// AsIfaceOf treats p as a pointer to an object of type t and returns the value. -// It is equivalent to p.AsValueOf(t).Interface() -func (p pointer) AsIfaceOf(t reflect.Type) any { - // TODO: Use tricky unsafe magic to directly create ifaceHeader. - return p.AsValueOf(t).Interface() -} - -func (p pointer) Bool() *bool { return (*bool)(p.p) } -func (p pointer) BoolPtr() **bool { return (**bool)(p.p) } -func (p pointer) BoolSlice() *[]bool { return (*[]bool)(p.p) } -func (p pointer) Int32() *int32 { return (*int32)(p.p) } -func (p pointer) Int32Ptr() **int32 { return (**int32)(p.p) } -func (p pointer) Int32Slice() *[]int32 { return (*[]int32)(p.p) } -func (p pointer) Int64() *int64 { return (*int64)(p.p) } -func (p pointer) Int64Ptr() **int64 { return (**int64)(p.p) } -func (p pointer) Int64Slice() *[]int64 { return (*[]int64)(p.p) } -func (p pointer) Uint32() *uint32 { return (*uint32)(p.p) } -func (p pointer) Uint32Ptr() **uint32 { return (**uint32)(p.p) } -func (p pointer) Uint32Slice() *[]uint32 { return (*[]uint32)(p.p) } -func (p pointer) Uint64() *uint64 { return (*uint64)(p.p) } -func (p pointer) Uint64Ptr() **uint64 { return (**uint64)(p.p) } -func (p pointer) Uint64Slice() *[]uint64 { return (*[]uint64)(p.p) } -func (p pointer) Float32() *float32 { return (*float32)(p.p) } -func (p pointer) Float32Ptr() **float32 { return (**float32)(p.p) } -func (p pointer) Float32Slice() *[]float32 { return (*[]float32)(p.p) } -func (p pointer) Float64() *float64 { return (*float64)(p.p) } -func (p pointer) Float64Ptr() **float64 { return (**float64)(p.p) } -func (p pointer) Float64Slice() *[]float64 { return (*[]float64)(p.p) } -func (p pointer) String() *string { return (*string)(p.p) } -func (p pointer) StringPtr() **string { return (**string)(p.p) } -func (p pointer) StringSlice() *[]string { return (*[]string)(p.p) } -func (p pointer) Bytes() *[]byte { return (*[]byte)(p.p) } -func (p pointer) BytesPtr() **[]byte { return (**[]byte)(p.p) } -func (p pointer) BytesSlice() *[][]byte { return (*[][]byte)(p.p) } -func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.p) } -func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) } - -func (p pointer) Elem() pointer { - return pointer{p: *(*unsafe.Pointer)(p.p)} -} - -// PointerSlice loads []*T from p as a []pointer. -// The value returned is aliased with the original slice. -// This behavior differs from the implementation in pointer_reflect.go. -func (p pointer) PointerSlice() []pointer { - // Super-tricky - p should point to a []*T where T is a - // message type. We load it as []pointer. - return *(*[]pointer)(p.p) -} - -// AppendPointerSlice appends v to p, which must be a []*T. -func (p pointer) AppendPointerSlice(v pointer) { - *(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v) -} - -// SetPointer sets *p to v. -func (p pointer) SetPointer(v pointer) { - *(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p) -} - -func (p pointer) growBoolSlice(addCap int) { - sp := p.BoolSlice() - s := make([]bool, 0, addCap+len(*sp)) - s = s[:len(*sp)] - copy(s, *sp) - *sp = s -} - -func (p pointer) growInt32Slice(addCap int) { - sp := p.Int32Slice() - s := make([]int32, 0, addCap+len(*sp)) - s = s[:len(*sp)] - copy(s, *sp) - *sp = s -} - -func (p pointer) growUint32Slice(addCap int) { - p.growInt32Slice(addCap) -} - -func (p pointer) growFloat32Slice(addCap int) { - p.growInt32Slice(addCap) -} - -func (p pointer) growInt64Slice(addCap int) { - sp := p.Int64Slice() - s := make([]int64, 0, addCap+len(*sp)) - s = s[:len(*sp)] - copy(s, *sp) - *sp = s -} - -func (p pointer) growUint64Slice(addCap int) { - p.growInt64Slice(addCap) -} - -func (p pointer) growFloat64Slice(addCap int) { - p.growInt64Slice(addCap) -} - -// Static check that MessageState does not exceed the size of a pointer. -const _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{})) - -func (Export) MessageStateOf(p Pointer) *messageState { - // Super-tricky - see documentation on MessageState. - return (*messageState)(unsafe.Pointer(p)) -} -func (ms *messageState) pointer() pointer { - // Super-tricky - see documentation on MessageState. - return pointer{p: unsafe.Pointer(ms)} -} -func (ms *messageState) messageInfo() *MessageInfo { - mi := ms.LoadMessageInfo() - if mi == nil { - panic("invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct") - } - return mi -} -func (ms *messageState) LoadMessageInfo() *MessageInfo { - return (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)))) -} -func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { - atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi)) -} - -type atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper - -func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { - if p := atomic.LoadPointer(&m.p); p != nil { - return (*messageReflectWrapper)(p) - } - w := &messageReflectWrapper{mi: mi} - atomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w)) - return (*messageReflectWrapper)(atomic.LoadPointer(&m.p)) -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go deleted file mode 100644 index a24e6bb..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/validate.go +++ /dev/null @@ -1,576 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - "math" - "math/bits" - "reflect" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" -) - -// ValidationStatus is the result of validating the wire-format encoding of a message. -type ValidationStatus int - -const ( - // ValidationUnknown indicates that unmarshaling the message might succeed or fail. - // The validator was unable to render a judgement. - // - // The only causes of this status are an aberrant message type appearing somewhere - // in the message or a failure in the extension resolver. - ValidationUnknown ValidationStatus = iota + 1 - - // ValidationInvalid indicates that unmarshaling the message will fail. - ValidationInvalid - - // ValidationValid indicates that unmarshaling the message will succeed. - ValidationValid -) - -func (v ValidationStatus) String() string { - switch v { - case ValidationUnknown: - return "ValidationUnknown" - case ValidationInvalid: - return "ValidationInvalid" - case ValidationValid: - return "ValidationValid" - default: - return fmt.Sprintf("ValidationStatus(%d)", int(v)) - } -} - -// Validate determines whether the contents of the buffer are a valid wire encoding -// of the message type. -// -// This function is exposed for testing. -func Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) { - mi, ok := mt.(*MessageInfo) - if !ok { - return out, ValidationUnknown - } - if in.Resolver == nil { - in.Resolver = protoregistry.GlobalTypes - } - o, st := mi.validate(in.Buf, 0, unmarshalOptions{ - flags: in.Flags, - resolver: in.Resolver, - }) - if o.initialized { - out.Flags |= protoiface.UnmarshalInitialized - } - return out, st -} - -type validationInfo struct { - mi *MessageInfo - typ validationType - keyType, valType validationType - - // For non-required fields, requiredBit is 0. - // - // For required fields, requiredBit's nth bit is set, where n is a - // unique index in the range [0, MessageInfo.numRequiredFields). - // - // If there are more than 64 required fields, requiredBit is 0. - requiredBit uint64 -} - -type validationType uint8 - -const ( - validationTypeOther validationType = iota - validationTypeMessage - validationTypeGroup - validationTypeMap - validationTypeRepeatedVarint - validationTypeRepeatedFixed32 - validationTypeRepeatedFixed64 - validationTypeVarint - validationTypeFixed32 - validationTypeFixed64 - validationTypeBytes - validationTypeUTF8String - validationTypeMessageSetItem -) - -func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { - var vi validationInfo - switch { - case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic(): - switch fd.Kind() { - case protoreflect.MessageKind: - vi.typ = validationTypeMessage - if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { - vi.mi = getMessageInfo(ot.Field(0).Type) - } - case protoreflect.GroupKind: - vi.typ = validationTypeGroup - if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { - vi.mi = getMessageInfo(ot.Field(0).Type) - } - case protoreflect.StringKind: - if strs.EnforceUTF8(fd) { - vi.typ = validationTypeUTF8String - } - } - default: - vi = newValidationInfo(fd, ft) - } - if fd.Cardinality() == protoreflect.Required { - // Avoid overflow. The required field check is done with a 64-bit mask, with - // any message containing more than 64 required fields always reported as - // potentially uninitialized, so it is not important to get a precise count - // of the required fields past 64. - if mi.numRequiredFields < math.MaxUint8 { - mi.numRequiredFields++ - vi.requiredBit = 1 << (mi.numRequiredFields - 1) - } - } - return vi -} - -func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { - var vi validationInfo - switch { - case fd.IsList(): - switch fd.Kind() { - case protoreflect.MessageKind: - vi.typ = validationTypeMessage - if ft.Kind() == reflect.Slice { - vi.mi = getMessageInfo(ft.Elem()) - } - case protoreflect.GroupKind: - vi.typ = validationTypeGroup - if ft.Kind() == reflect.Slice { - vi.mi = getMessageInfo(ft.Elem()) - } - case protoreflect.StringKind: - vi.typ = validationTypeBytes - if strs.EnforceUTF8(fd) { - vi.typ = validationTypeUTF8String - } - default: - switch wireTypes[fd.Kind()] { - case protowire.VarintType: - vi.typ = validationTypeRepeatedVarint - case protowire.Fixed32Type: - vi.typ = validationTypeRepeatedFixed32 - case protowire.Fixed64Type: - vi.typ = validationTypeRepeatedFixed64 - } - } - case fd.IsMap(): - vi.typ = validationTypeMap - switch fd.MapKey().Kind() { - case protoreflect.StringKind: - if strs.EnforceUTF8(fd) { - vi.keyType = validationTypeUTF8String - } - } - switch fd.MapValue().Kind() { - case protoreflect.MessageKind: - vi.valType = validationTypeMessage - if ft.Kind() == reflect.Map { - vi.mi = getMessageInfo(ft.Elem()) - } - case protoreflect.StringKind: - if strs.EnforceUTF8(fd) { - vi.valType = validationTypeUTF8String - } - } - default: - switch fd.Kind() { - case protoreflect.MessageKind: - vi.typ = validationTypeMessage - if !fd.IsWeak() { - vi.mi = getMessageInfo(ft) - } - case protoreflect.GroupKind: - vi.typ = validationTypeGroup - vi.mi = getMessageInfo(ft) - case protoreflect.StringKind: - vi.typ = validationTypeBytes - if strs.EnforceUTF8(fd) { - vi.typ = validationTypeUTF8String - } - default: - switch wireTypes[fd.Kind()] { - case protowire.VarintType: - vi.typ = validationTypeVarint - case protowire.Fixed32Type: - vi.typ = validationTypeFixed32 - case protowire.Fixed64Type: - vi.typ = validationTypeFixed64 - case protowire.BytesType: - vi.typ = validationTypeBytes - } - } - } - return vi -} - -func (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) { - mi.init() - type validationState struct { - typ validationType - keyType, valType validationType - endGroup protowire.Number - mi *MessageInfo - tail []byte - requiredMask uint64 - } - - // Pre-allocate some slots to avoid repeated slice reallocation. - states := make([]validationState, 0, 16) - states = append(states, validationState{ - typ: validationTypeMessage, - mi: mi, - }) - if groupTag > 0 { - states[0].typ = validationTypeGroup - states[0].endGroup = groupTag - } - initialized := true - start := len(b) -State: - for len(states) > 0 { - st := &states[len(states)-1] - for len(b) > 0 { - // Parse the tag (field number and wire type). - var tag uint64 - if b[0] < 0x80 { - tag = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - tag = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - tag, n = protowire.ConsumeVarint(b) - if n < 0 { - return out, ValidationInvalid - } - b = b[n:] - } - var num protowire.Number - if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) { - return out, ValidationInvalid - } else { - num = protowire.Number(n) - } - wtyp := protowire.Type(tag & 7) - - if wtyp == protowire.EndGroupType { - if st.endGroup == num { - goto PopState - } - return out, ValidationInvalid - } - var vi validationInfo - switch { - case st.typ == validationTypeMap: - switch num { - case genid.MapEntry_Key_field_number: - vi.typ = st.keyType - case genid.MapEntry_Value_field_number: - vi.typ = st.valType - vi.mi = st.mi - vi.requiredBit = 1 - } - case flags.ProtoLegacy && st.mi.isMessageSet: - switch num { - case messageset.FieldItem: - vi.typ = validationTypeMessageSetItem - } - default: - var f *coderFieldInfo - if int(num) < len(st.mi.denseCoderFields) { - f = st.mi.denseCoderFields[num] - } else { - f = st.mi.coderFields[num] - } - if f != nil { - vi = f.validation - if vi.typ == validationTypeMessage && vi.mi == nil { - // Probable weak field. - // - // TODO: Consider storing the results of this lookup somewhere - // rather than recomputing it on every validation. - fd := st.mi.Desc.Fields().ByNumber(num) - if fd == nil || !fd.IsWeak() { - break - } - messageName := fd.Message().FullName() - messageType, err := protoregistry.GlobalTypes.FindMessageByName(messageName) - switch err { - case nil: - vi.mi, _ = messageType.(*MessageInfo) - case protoregistry.NotFound: - vi.typ = validationTypeBytes - default: - return out, ValidationUnknown - } - } - break - } - // Possible extension field. - // - // TODO: We should return ValidationUnknown when: - // 1. The resolver is not frozen. (More extensions may be added to it.) - // 2. The resolver returns preg.NotFound. - // In this case, a type added to the resolver in the future could cause - // unmarshaling to begin failing. Supporting this requires some way to - // determine if the resolver is frozen. - xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num) - if err != nil && err != protoregistry.NotFound { - return out, ValidationUnknown - } - if err == nil { - vi = getExtensionFieldInfo(xt).validation - } - } - if vi.requiredBit != 0 { - // Check that the field has a compatible wire type. - // We only need to consider non-repeated field types, - // since repeated fields (and maps) can never be required. - ok := false - switch vi.typ { - case validationTypeVarint: - ok = wtyp == protowire.VarintType - case validationTypeFixed32: - ok = wtyp == protowire.Fixed32Type - case validationTypeFixed64: - ok = wtyp == protowire.Fixed64Type - case validationTypeBytes, validationTypeUTF8String, validationTypeMessage: - ok = wtyp == protowire.BytesType - case validationTypeGroup: - ok = wtyp == protowire.StartGroupType - } - if ok { - st.requiredMask |= vi.requiredBit - } - } - - switch wtyp { - case protowire.VarintType: - if len(b) >= 10 { - switch { - case b[0] < 0x80: - b = b[1:] - case b[1] < 0x80: - b = b[2:] - case b[2] < 0x80: - b = b[3:] - case b[3] < 0x80: - b = b[4:] - case b[4] < 0x80: - b = b[5:] - case b[5] < 0x80: - b = b[6:] - case b[6] < 0x80: - b = b[7:] - case b[7] < 0x80: - b = b[8:] - case b[8] < 0x80: - b = b[9:] - case b[9] < 0x80 && b[9] < 2: - b = b[10:] - default: - return out, ValidationInvalid - } - } else { - switch { - case len(b) > 0 && b[0] < 0x80: - b = b[1:] - case len(b) > 1 && b[1] < 0x80: - b = b[2:] - case len(b) > 2 && b[2] < 0x80: - b = b[3:] - case len(b) > 3 && b[3] < 0x80: - b = b[4:] - case len(b) > 4 && b[4] < 0x80: - b = b[5:] - case len(b) > 5 && b[5] < 0x80: - b = b[6:] - case len(b) > 6 && b[6] < 0x80: - b = b[7:] - case len(b) > 7 && b[7] < 0x80: - b = b[8:] - case len(b) > 8 && b[8] < 0x80: - b = b[9:] - case len(b) > 9 && b[9] < 2: - b = b[10:] - default: - return out, ValidationInvalid - } - } - continue State - case protowire.BytesType: - var size uint64 - if len(b) >= 1 && b[0] < 0x80 { - size = uint64(b[0]) - b = b[1:] - } else if len(b) >= 2 && b[1] < 128 { - size = uint64(b[0]&0x7f) + uint64(b[1])<<7 - b = b[2:] - } else { - var n int - size, n = protowire.ConsumeVarint(b) - if n < 0 { - return out, ValidationInvalid - } - b = b[n:] - } - if size > uint64(len(b)) { - return out, ValidationInvalid - } - v := b[:size] - b = b[size:] - switch vi.typ { - case validationTypeMessage: - if vi.mi == nil { - return out, ValidationUnknown - } - vi.mi.init() - fallthrough - case validationTypeMap: - if vi.mi != nil { - vi.mi.init() - } - states = append(states, validationState{ - typ: vi.typ, - keyType: vi.keyType, - valType: vi.valType, - mi: vi.mi, - tail: b, - }) - b = v - continue State - case validationTypeRepeatedVarint: - // Packed field. - for len(v) > 0 { - _, n := protowire.ConsumeVarint(v) - if n < 0 { - return out, ValidationInvalid - } - v = v[n:] - } - case validationTypeRepeatedFixed32: - // Packed field. - if len(v)%4 != 0 { - return out, ValidationInvalid - } - case validationTypeRepeatedFixed64: - // Packed field. - if len(v)%8 != 0 { - return out, ValidationInvalid - } - case validationTypeUTF8String: - if !utf8.Valid(v) { - return out, ValidationInvalid - } - } - case protowire.Fixed32Type: - if len(b) < 4 { - return out, ValidationInvalid - } - b = b[4:] - case protowire.Fixed64Type: - if len(b) < 8 { - return out, ValidationInvalid - } - b = b[8:] - case protowire.StartGroupType: - switch { - case vi.typ == validationTypeGroup: - if vi.mi == nil { - return out, ValidationUnknown - } - vi.mi.init() - states = append(states, validationState{ - typ: validationTypeGroup, - mi: vi.mi, - endGroup: num, - }) - continue State - case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem: - typeid, v, n, err := messageset.ConsumeFieldValue(b, false) - if err != nil { - return out, ValidationInvalid - } - xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid) - switch { - case err == protoregistry.NotFound: - b = b[n:] - case err != nil: - return out, ValidationUnknown - default: - xvi := getExtensionFieldInfo(xt).validation - if xvi.mi != nil { - xvi.mi.init() - } - states = append(states, validationState{ - typ: xvi.typ, - mi: xvi.mi, - tail: b[n:], - }) - b = v - continue State - } - default: - n := protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return out, ValidationInvalid - } - b = b[n:] - } - default: - return out, ValidationInvalid - } - } - if st.endGroup != 0 { - return out, ValidationInvalid - } - if len(b) != 0 { - return out, ValidationInvalid - } - b = st.tail - PopState: - numRequiredFields := 0 - switch st.typ { - case validationTypeMessage, validationTypeGroup: - numRequiredFields = int(st.mi.numRequiredFields) - case validationTypeMap: - // If this is a map field with a message value that contains - // required fields, require that the value be present. - if st.mi != nil && st.mi.numRequiredFields > 0 { - numRequiredFields = 1 - } - } - // If there are more than 64 required fields, this check will - // always fail and we will report that the message is potentially - // uninitialized. - if numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields { - initialized = false - } - states = states[:len(states)-1] - } - out.n = start - len(b) - if initialized { - out.initialized = true - } - return out, ValidationValid -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/weak.go b/vendor/google.golang.org/protobuf/internal/impl/weak.go deleted file mode 100644 index eb79a7b..0000000 --- a/vendor/google.golang.org/protobuf/internal/impl/weak.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package impl - -import ( - "fmt" - - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -// weakFields adds methods to the exported WeakFields type for internal use. -// -// The exported type is an alias to an unnamed type, so methods can't be -// defined directly on it. -type weakFields WeakFields - -func (w weakFields) get(num protoreflect.FieldNumber) (protoreflect.ProtoMessage, bool) { - m, ok := w[int32(num)] - return m, ok -} - -func (w *weakFields) set(num protoreflect.FieldNumber, m protoreflect.ProtoMessage) { - if *w == nil { - *w = make(weakFields) - } - (*w)[int32(num)] = m -} - -func (w *weakFields) clear(num protoreflect.FieldNumber) { - delete(*w, int32(num)) -} - -func (Export) HasWeak(w WeakFields, num protoreflect.FieldNumber) bool { - _, ok := w[int32(num)] - return ok -} - -func (Export) ClearWeak(w *WeakFields, num protoreflect.FieldNumber) { - delete(*w, int32(num)) -} - -func (Export) GetWeak(w WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName) protoreflect.ProtoMessage { - if m, ok := w[int32(num)]; ok { - return m - } - mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) - if mt == nil { - panic(fmt.Sprintf("message %v for weak field is not linked in", name)) - } - return mt.Zero().Interface() -} - -func (Export) SetWeak(w *WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName, m protoreflect.ProtoMessage) { - if m != nil { - mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) - if mt == nil { - panic(fmt.Sprintf("message %v for weak field is not linked in", name)) - } - if mt != m.ProtoReflect().Type() { - panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface())) - } - } - if m == nil || !m.ProtoReflect().IsValid() { - delete(*w, int32(num)) - return - } - if *w == nil { - *w = make(weakFields) - } - (*w)[int32(num)] = m -} diff --git a/vendor/google.golang.org/protobuf/internal/order/order.go b/vendor/google.golang.org/protobuf/internal/order/order.go deleted file mode 100644 index dea522e..0000000 --- a/vendor/google.golang.org/protobuf/internal/order/order.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package order - -import ( - "google.golang.org/protobuf/reflect/protoreflect" -) - -// FieldOrder specifies the ordering to visit message fields. -// It is a function that reports whether x is ordered before y. -type FieldOrder func(x, y protoreflect.FieldDescriptor) bool - -var ( - // AnyFieldOrder specifies no specific field ordering. - AnyFieldOrder FieldOrder = nil - - // LegacyFieldOrder sorts fields in the same ordering as emitted by - // wire serialization in the github.com/golang/protobuf implementation. - LegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { - ox, oy := x.ContainingOneof(), y.ContainingOneof() - inOneof := func(od protoreflect.OneofDescriptor) bool { - return od != nil && !od.IsSynthetic() - } - - // Extension fields sort before non-extension fields. - if x.IsExtension() != y.IsExtension() { - return x.IsExtension() && !y.IsExtension() - } - // Fields not within a oneof sort before those within a oneof. - if inOneof(ox) != inOneof(oy) { - return !inOneof(ox) && inOneof(oy) - } - // Fields in disjoint oneof sets are sorted by declaration index. - if inOneof(ox) && inOneof(oy) && ox != oy { - return ox.Index() < oy.Index() - } - // Fields sorted by field number. - return x.Number() < y.Number() - } - - // NumberFieldOrder sorts fields by their field number. - NumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { - return x.Number() < y.Number() - } - - // IndexNameFieldOrder sorts non-extension fields before extension fields. - // Non-extensions are sorted according to their declaration index. - // Extensions are sorted according to their full name. - IndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { - // Non-extension fields sort before extension fields. - if x.IsExtension() != y.IsExtension() { - return !x.IsExtension() && y.IsExtension() - } - // Extensions sorted by fullname. - if x.IsExtension() && y.IsExtension() { - return x.FullName() < y.FullName() - } - // Non-extensions sorted by declaration index. - return x.Index() < y.Index() - } -) - -// KeyOrder specifies the ordering to visit map entries. -// It is a function that reports whether x is ordered before y. -type KeyOrder func(x, y protoreflect.MapKey) bool - -var ( - // AnyKeyOrder specifies no specific key ordering. - AnyKeyOrder KeyOrder = nil - - // GenericKeyOrder sorts false before true, numeric keys in ascending order, - // and strings in lexicographical ordering according to UTF-8 codepoints. - GenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool { - switch x.Interface().(type) { - case bool: - return !x.Bool() && y.Bool() - case int32, int64: - return x.Int() < y.Int() - case uint32, uint64: - return x.Uint() < y.Uint() - case string: - return x.String() < y.String() - default: - panic("invalid map key type") - } - } -) diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go deleted file mode 100644 index a1f0916..0000000 --- a/vendor/google.golang.org/protobuf/internal/order/range.go +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package order provides ordered access to messages and maps. -package order - -import ( - "sort" - "sync" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -type messageField struct { - fd protoreflect.FieldDescriptor - v protoreflect.Value -} - -var messageFieldPool = sync.Pool{ - New: func() any { return new([]messageField) }, -} - -type ( - // FieldRnger is an interface for visiting all fields in a message. - // The protoreflect.Message type implements this interface. - FieldRanger interface{ Range(VisitField) } - // VisitField is called every time a message field is visited. - VisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool -) - -// RangeFields iterates over the fields of fs according to the specified order. -func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) { - if less == nil { - fs.Range(fn) - return - } - - // Obtain a pre-allocated scratch buffer. - p := messageFieldPool.Get().(*[]messageField) - fields := (*p)[:0] - defer func() { - if cap(fields) < 1024 { - *p = fields - messageFieldPool.Put(p) - } - }() - - // Collect all fields in the message and sort them. - fs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - fields = append(fields, messageField{fd, v}) - return true - }) - sort.Slice(fields, func(i, j int) bool { - return less(fields[i].fd, fields[j].fd) - }) - - // Visit the fields in the specified ordering. - for _, f := range fields { - if !fn(f.fd, f.v) { - return - } - } -} - -type mapEntry struct { - k protoreflect.MapKey - v protoreflect.Value -} - -var mapEntryPool = sync.Pool{ - New: func() any { return new([]mapEntry) }, -} - -type ( - // EntryRanger is an interface for visiting all fields in a message. - // The protoreflect.Map type implements this interface. - EntryRanger interface{ Range(VisitEntry) } - // VisitEntry is called every time a map entry is visited. - VisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool -) - -// RangeEntries iterates over the entries of es according to the specified order. -func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) { - if less == nil { - es.Range(fn) - return - } - - // Obtain a pre-allocated scratch buffer. - p := mapEntryPool.Get().(*[]mapEntry) - entries := (*p)[:0] - defer func() { - if cap(entries) < 1024 { - *p = entries - mapEntryPool.Put(p) - } - }() - - // Collect all entries in the map and sort them. - es.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { - entries = append(entries, mapEntry{k, v}) - return true - }) - sort.Slice(entries, func(i, j int) bool { - return less(entries[i].k, entries[j].k) - }) - - // Visit the entries in the specified ordering. - for _, e := range entries { - if !fn(e.k, e.v) { - return - } - } -} diff --git a/vendor/google.golang.org/protobuf/internal/pragma/pragma.go b/vendor/google.golang.org/protobuf/internal/pragma/pragma.go deleted file mode 100644 index 49dc4fc..0000000 --- a/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package pragma provides types that can be embedded into a struct to -// statically enforce or prevent certain language properties. -package pragma - -import "sync" - -// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals. -type NoUnkeyedLiterals struct{} - -// DoNotImplement can be embedded in an interface to prevent trivial -// implementations of the interface. -// -// This is useful to prevent unauthorized implementations of an interface -// so that it can be extended in the future for any protobuf language changes. -type DoNotImplement interface{ ProtoInternal(DoNotImplement) } - -// DoNotCompare can be embedded in a struct to prevent comparability. -type DoNotCompare [0]func() - -// DoNotCopy can be embedded in a struct to help prevent shallow copies. -// This does not rely on a Go language feature, but rather a special case -// within the vet checker. -// -// See https://golang.org/issues/8005. -type DoNotCopy [0]sync.Mutex diff --git a/vendor/google.golang.org/protobuf/internal/set/ints.go b/vendor/google.golang.org/protobuf/internal/set/ints.go deleted file mode 100644 index d3d7f89..0000000 --- a/vendor/google.golang.org/protobuf/internal/set/ints.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package set provides simple set data structures for uint64s. -package set - -import "math/bits" - -// int64s represents a set of integers within the range of 0..63. -type int64s uint64 - -func (bs *int64s) Len() int { - return bits.OnesCount64(uint64(*bs)) -} -func (bs *int64s) Has(n uint64) bool { - return uint64(*bs)&(uint64(1)<<n) > 0 -} -func (bs *int64s) Set(n uint64) { - *(*uint64)(bs) |= uint64(1) << n -} -func (bs *int64s) Clear(n uint64) { - *(*uint64)(bs) &^= uint64(1) << n -} - -// Ints represents a set of integers within the range of 0..math.MaxUint64. -type Ints struct { - lo int64s - hi map[uint64]struct{} -} - -func (bs *Ints) Len() int { - return bs.lo.Len() + len(bs.hi) -} -func (bs *Ints) Has(n uint64) bool { - if n < 64 { - return bs.lo.Has(n) - } - _, ok := bs.hi[n] - return ok -} -func (bs *Ints) Set(n uint64) { - if n < 64 { - bs.lo.Set(n) - return - } - if bs.hi == nil { - bs.hi = make(map[uint64]struct{}) - } - bs.hi[n] = struct{}{} -} -func (bs *Ints) Clear(n uint64) { - if n < 64 { - bs.lo.Clear(n) - return - } - delete(bs.hi, n) -} diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings.go b/vendor/google.golang.org/protobuf/internal/strs/strings.go deleted file mode 100644 index a6e7df2..0000000 --- a/vendor/google.golang.org/protobuf/internal/strs/strings.go +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package strs provides string manipulation functionality specific to protobuf. -package strs - -import ( - "go/token" - "strings" - "unicode" - "unicode/utf8" - - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// EnforceUTF8 reports whether to enforce strict UTF-8 validation. -func EnforceUTF8(fd protoreflect.FieldDescriptor) bool { - if flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions { - if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok { - return fd.EnforceUTF8() - } - } - return fd.Syntax() == protoreflect.Proto3 -} - -// GoCamelCase camel-cases a protobuf name for use as a Go identifier. -// -// If there is an interior underscore followed by a lower case letter, -// drop the underscore and convert the letter to upper case. -func GoCamelCase(s string) string { - // Invariant: if the next letter is lower case, it must be converted - // to upper case. - // That is, we process a word at a time, where words are marked by _ or - // upper case letter. Digits are treated as words. - var b []byte - for i := 0; i < len(s); i++ { - c := s[i] - switch { - case c == '.' && i+1 < len(s) && isASCIILower(s[i+1]): - // Skip over '.' in ".{{lowercase}}". - case c == '.': - b = append(b, '_') // convert '.' to '_' - case c == '_' && (i == 0 || s[i-1] == '.'): - // Convert initial '_' to ensure we start with a capital letter. - // Do the same for '_' after '.' to match historic behavior. - b = append(b, 'X') // convert '_' to 'X' - case c == '_' && i+1 < len(s) && isASCIILower(s[i+1]): - // Skip over '_' in "_{{lowercase}}". - case isASCIIDigit(c): - b = append(b, c) - default: - // Assume we have a letter now - if not, it's a bogus identifier. - // The next word is a sequence of characters that must start upper case. - if isASCIILower(c) { - c -= 'a' - 'A' // convert lowercase to uppercase - } - b = append(b, c) - - // Accept lower case sequence that follows. - for ; i+1 < len(s) && isASCIILower(s[i+1]); i++ { - b = append(b, s[i+1]) - } - } - } - return string(b) -} - -// GoSanitized converts a string to a valid Go identifier. -func GoSanitized(s string) string { - // Sanitize the input to the set of valid characters, - // which must be '_' or be in the Unicode L or N categories. - s = strings.Map(func(r rune) rune { - if unicode.IsLetter(r) || unicode.IsDigit(r) { - return r - } - return '_' - }, s) - - // Prepend '_' in the event of a Go keyword conflict or if - // the identifier is invalid (does not start in the Unicode L category). - r, _ := utf8.DecodeRuneInString(s) - if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) { - return "_" + s - } - return s -} - -// JSONCamelCase converts a snake_case identifier to a camelCase identifier, -// according to the protobuf JSON specification. -func JSONCamelCase(s string) string { - var b []byte - var wasUnderscore bool - for i := 0; i < len(s); i++ { // proto identifiers are always ASCII - c := s[i] - if c != '_' { - if wasUnderscore && isASCIILower(c) { - c -= 'a' - 'A' // convert to uppercase - } - b = append(b, c) - } - wasUnderscore = c == '_' - } - return string(b) -} - -// JSONSnakeCase converts a camelCase identifier to a snake_case identifier, -// according to the protobuf JSON specification. -func JSONSnakeCase(s string) string { - var b []byte - for i := 0; i < len(s); i++ { // proto identifiers are always ASCII - c := s[i] - if isASCIIUpper(c) { - b = append(b, '_') - c += 'a' - 'A' // convert to lowercase - } - b = append(b, c) - } - return string(b) -} - -// MapEntryName derives the name of the map entry message given the field name. -// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057 -func MapEntryName(s string) string { - var b []byte - upperNext := true - for _, c := range s { - switch { - case c == '_': - upperNext = true - case upperNext: - b = append(b, byte(unicode.ToUpper(c))) - upperNext = false - default: - b = append(b, byte(c)) - } - } - b = append(b, "Entry"...) - return string(b) -} - -// EnumValueName derives the camel-cased enum value name. -// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313 -func EnumValueName(s string) string { - var b []byte - upperNext := true - for _, c := range s { - switch { - case c == '_': - upperNext = true - case upperNext: - b = append(b, byte(unicode.ToUpper(c))) - upperNext = false - default: - b = append(b, byte(unicode.ToLower(c))) - upperNext = false - } - } - return string(b) -} - -// TrimEnumPrefix trims the enum name prefix from an enum value name, -// where the prefix is all lowercase without underscores. -// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375 -func TrimEnumPrefix(s, prefix string) string { - s0 := s // original input - for len(s) > 0 && len(prefix) > 0 { - if s[0] == '_' { - s = s[1:] - continue - } - if unicode.ToLower(rune(s[0])) != rune(prefix[0]) { - return s0 // no prefix match - } - s, prefix = s[1:], prefix[1:] - } - if len(prefix) > 0 { - return s0 // no prefix match - } - s = strings.TrimLeft(s, "_") - if len(s) == 0 { - return s0 // avoid returning empty string - } - return s -} - -func isASCIILower(c byte) bool { - return 'a' <= c && c <= 'z' -} -func isASCIIUpper(c byte) bool { - return 'A' <= c && c <= 'Z' -} -func isASCIIDigit(c byte) bool { - return '0' <= c && c <= '9' -} diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go deleted file mode 100644 index 832a798..0000000 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.21 - -package strs - -import ( - "unsafe" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -type ( - stringHeader struct { - Data unsafe.Pointer - Len int - } - sliceHeader struct { - Data unsafe.Pointer - Len int - Cap int - } -) - -// UnsafeString returns an unsafe string reference of b. -// The caller must treat the input slice as immutable. -// -// WARNING: Use carefully. The returned result must not leak to the end user -// unless the input slice is provably immutable. -func UnsafeString(b []byte) (s string) { - src := (*sliceHeader)(unsafe.Pointer(&b)) - dst := (*stringHeader)(unsafe.Pointer(&s)) - dst.Data = src.Data - dst.Len = src.Len - return s -} - -// UnsafeBytes returns an unsafe bytes slice reference of s. -// The caller must treat returned slice as immutable. -// -// WARNING: Use carefully. The returned result must not leak to the end user. -func UnsafeBytes(s string) (b []byte) { - src := (*stringHeader)(unsafe.Pointer(&s)) - dst := (*sliceHeader)(unsafe.Pointer(&b)) - dst.Data = src.Data - dst.Len = src.Len - dst.Cap = src.Len - return b -} - -// Builder builds a set of strings with shared lifetime. -// This differs from strings.Builder, which is for building a single string. -type Builder struct { - buf []byte -} - -// AppendFullName is equivalent to protoreflect.FullName.Append, -// but optimized for large batches where each name has a shared lifetime. -func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { - n := len(prefix) + len(".") + len(name) - if len(prefix) == 0 { - n -= len(".") - } - sb.grow(n) - sb.buf = append(sb.buf, prefix...) - sb.buf = append(sb.buf, '.') - sb.buf = append(sb.buf, name...) - return protoreflect.FullName(sb.last(n)) -} - -// MakeString is equivalent to string(b), but optimized for large batches -// with a shared lifetime. -func (sb *Builder) MakeString(b []byte) string { - sb.grow(len(b)) - sb.buf = append(sb.buf, b...) - return sb.last(len(b)) -} - -func (sb *Builder) grow(n int) { - if cap(sb.buf)-len(sb.buf) >= n { - return - } - - // Unlike strings.Builder, we do not need to copy over the contents - // of the old buffer since our builder provides no API for - // retrieving previously created strings. - sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) -} - -func (sb *Builder) last(n int) string { - return UnsafeString(sb.buf[len(sb.buf)-n:]) -} diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go deleted file mode 100644 index 1ffddf6..0000000 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.21 - -package strs - -import ( - "unsafe" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -// UnsafeString returns an unsafe string reference of b. -// The caller must treat the input slice as immutable. -// -// WARNING: Use carefully. The returned result must not leak to the end user -// unless the input slice is provably immutable. -func UnsafeString(b []byte) string { - return unsafe.String(unsafe.SliceData(b), len(b)) -} - -// UnsafeBytes returns an unsafe bytes slice reference of s. -// The caller must treat returned slice as immutable. -// -// WARNING: Use carefully. The returned result must not leak to the end user. -func UnsafeBytes(s string) []byte { - return unsafe.Slice(unsafe.StringData(s), len(s)) -} - -// Builder builds a set of strings with shared lifetime. -// This differs from strings.Builder, which is for building a single string. -type Builder struct { - buf []byte -} - -// AppendFullName is equivalent to protoreflect.FullName.Append, -// but optimized for large batches where each name has a shared lifetime. -func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { - n := len(prefix) + len(".") + len(name) - if len(prefix) == 0 { - n -= len(".") - } - sb.grow(n) - sb.buf = append(sb.buf, prefix...) - sb.buf = append(sb.buf, '.') - sb.buf = append(sb.buf, name...) - return protoreflect.FullName(sb.last(n)) -} - -// MakeString is equivalent to string(b), but optimized for large batches -// with a shared lifetime. -func (sb *Builder) MakeString(b []byte) string { - sb.grow(len(b)) - sb.buf = append(sb.buf, b...) - return sb.last(len(b)) -} - -func (sb *Builder) grow(n int) { - if cap(sb.buf)-len(sb.buf) >= n { - return - } - - // Unlike strings.Builder, we do not need to copy over the contents - // of the old buffer since our builder provides no API for - // retrieving previously created strings. - sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) -} - -func (sb *Builder) last(n int) string { - return UnsafeString(sb.buf[len(sb.buf)-n:]) -} diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go deleted file mode 100644 index fb8e15e..0000000 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package version records versioning information about this module. -package version - -import ( - "fmt" - "strings" -) - -// These constants determine the current version of this module. -// -// For our release process, we enforce the following rules: -// - Tagged releases use a tag that is identical to String. -// - Tagged releases never reference a commit where the String -// contains "devel". -// - The set of all commits in this repository where String -// does not contain "devel" must have a unique String. -// -// Steps for tagging a new release: -// -// 1. Create a new CL. -// -// 2. Update Minor, Patch, and/or PreRelease as necessary. -// PreRelease must not contain the string "devel". -// -// 3. Since the last released minor version, have there been any changes to -// generator that relies on new functionality in the runtime? -// If yes, then increment RequiredGenerated. -// -// 4. Since the last released minor version, have there been any changes to -// the runtime that removes support for old .pb.go source code? -// If yes, then increment SupportMinimum. -// -// 5. Send out the CL for review and submit it. -// Note that the next CL in step 8 must be submitted after this CL -// without any other CLs in-between. -// -// 6. Tag a new version, where the tag is is the current String. -// -// 7. Write release notes for all notable changes -// between this release and the last release. -// -// 8. Create a new CL. -// -// 9. Update PreRelease to include the string "devel". -// For example: "" -> "devel" or "rc.1" -> "rc.1.devel" -// -// 10. Send out the CL for review and submit it. -const ( - Major = 1 - Minor = 35 - Patch = 1 - PreRelease = "" -) - -// String formats the version string for this module in semver format. -// -// Examples: -// -// v1.20.1 -// v1.21.0-rc.1 -func String() string { - v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch) - if PreRelease != "" { - v += "-" + PreRelease - - // TODO: Add metadata about the commit or build hash. - // See https://golang.org/issue/29814 - // See https://golang.org/issue/33533 - var metadata string - if strings.Contains(PreRelease, "devel") && metadata != "" { - v += "+" + metadata - } - } - return v -} diff --git a/vendor/google.golang.org/protobuf/proto/checkinit.go b/vendor/google.golang.org/protobuf/proto/checkinit.go deleted file mode 100644 index 3e9a6a2..0000000 --- a/vendor/google.golang.org/protobuf/proto/checkinit.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// CheckInitialized returns an error if any required fields in m are not set. -func CheckInitialized(m Message) error { - // Treat a nil message interface as an "untyped" empty message, - // which we assume to have no required fields. - if m == nil { - return nil - } - - return checkInitialized(m.ProtoReflect()) -} - -// CheckInitialized returns an error if any required fields in m are not set. -func checkInitialized(m protoreflect.Message) error { - if methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil { - _, err := methods.CheckInitialized(protoiface.CheckInitializedInput{ - Message: m, - }) - return err - } - return checkInitializedSlow(m) -} - -func checkInitializedSlow(m protoreflect.Message) error { - md := m.Descriptor() - fds := md.Fields() - for i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ { - fd := fds.ByNumber(nums.Get(i)) - if !m.Has(fd) { - return errors.RequiredNotSet(string(fd.FullName())) - } - } - var err error - m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - switch { - case fd.IsList(): - if fd.Message() == nil { - return true - } - for i, list := 0, v.List(); i < list.Len() && err == nil; i++ { - err = checkInitialized(list.Get(i).Message()) - } - case fd.IsMap(): - if fd.MapValue().Message() == nil { - return true - } - v.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool { - err = checkInitialized(v.Message()) - return err == nil - }) - default: - if fd.Message() == nil { - return true - } - err = checkInitialized(v.Message()) - } - return err == nil - }) - return err -} diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go deleted file mode 100644 index d75a653..0000000 --- a/vendor/google.golang.org/protobuf/proto/decode.go +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/runtime/protoiface" -) - -// UnmarshalOptions configures the unmarshaler. -// -// Example usage: -// -// err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m) -type UnmarshalOptions struct { - pragma.NoUnkeyedLiterals - - // Merge merges the input into the destination message. - // The default behavior is to always reset the message before unmarshaling, - // unless Merge is specified. - Merge bool - - // AllowPartial accepts input for messages that will result in missing - // required fields. If AllowPartial is false (the default), Unmarshal will - // return an error if there are any missing required fields. - AllowPartial bool - - // If DiscardUnknown is set, unknown fields are ignored. - DiscardUnknown bool - - // Resolver is used for looking up types when unmarshaling extension fields. - // If nil, this defaults to using protoregistry.GlobalTypes. - Resolver interface { - FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) - FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) - } - - // RecursionLimit limits how deeply messages may be nested. - // If zero, a default limit is applied. - RecursionLimit int -} - -// Unmarshal parses the wire-format message in b and places the result in m. -// The provided message must be mutable (e.g., a non-nil pointer to a message). -// -// See the [UnmarshalOptions] type if you need more control. -func Unmarshal(b []byte, m Message) error { - _, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect()) - return err -} - -// Unmarshal parses the wire-format message in b and places the result in m. -// The provided message must be mutable (e.g., a non-nil pointer to a message). -func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error { - if o.RecursionLimit == 0 { - o.RecursionLimit = protowire.DefaultRecursionLimit - } - _, err := o.unmarshal(b, m.ProtoReflect()) - return err -} - -// UnmarshalState parses a wire-format message and places the result in m. -// -// This method permits fine-grained control over the unmarshaler. -// Most users should use [Unmarshal] instead. -func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - if o.RecursionLimit == 0 { - o.RecursionLimit = protowire.DefaultRecursionLimit - } - return o.unmarshal(in.Buf, in.Message) -} - -// unmarshal is a centralized function that all unmarshal operations go through. -// For profiling purposes, avoid changing the name of this function or -// introducing other code paths for unmarshal that do not go through this. -func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) { - if o.Resolver == nil { - o.Resolver = protoregistry.GlobalTypes - } - if !o.Merge { - Reset(m.Interface()) - } - allowPartial := o.AllowPartial - o.Merge = true - o.AllowPartial = true - methods := protoMethods(m) - if methods != nil && methods.Unmarshal != nil && - !(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) { - in := protoiface.UnmarshalInput{ - Message: m, - Buf: b, - Resolver: o.Resolver, - Depth: o.RecursionLimit, - } - if o.DiscardUnknown { - in.Flags |= protoiface.UnmarshalDiscardUnknown - } - out, err = methods.Unmarshal(in) - } else { - o.RecursionLimit-- - if o.RecursionLimit < 0 { - return out, errors.New("exceeded max recursion depth") - } - err = o.unmarshalMessageSlow(b, m) - } - if err != nil { - return out, err - } - if allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) { - return out, nil - } - return out, checkInitialized(m) -} - -func (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error { - _, err := o.unmarshal(b, m) - return err -} - -func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error { - md := m.Descriptor() - if messageset.IsMessageSet(md) { - return o.unmarshalMessageSet(b, m) - } - fields := md.Fields() - for len(b) > 0 { - // Parse the tag (field number and wire type). - num, wtyp, tagLen := protowire.ConsumeTag(b) - if tagLen < 0 { - return errDecode - } - if num > protowire.MaxValidNumber { - return errDecode - } - - // Find the field descriptor for this field number. - fd := fields.ByNumber(num) - if fd == nil && md.ExtensionRanges().Has(num) { - extType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) - if err != nil && err != protoregistry.NotFound { - return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) - } - if extType != nil { - fd = extType.TypeDescriptor() - } - } - var err error - if fd == nil { - err = errUnknown - } else if flags.ProtoLegacy { - if fd.IsWeak() && fd.Message().IsPlaceholder() { - err = errUnknown // weak referent is not linked in - } - } - - // Parse the field value. - var valLen int - switch { - case err != nil: - case fd.IsList(): - valLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd) - case fd.IsMap(): - valLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd) - default: - valLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd) - } - if err != nil { - if err != errUnknown { - return err - } - valLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:]) - if valLen < 0 { - return errDecode - } - if !o.DiscardUnknown { - m.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...)) - } - } - b = b[tagLen+valLen:] - } - return nil -} - -func (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) { - v, n, err := o.unmarshalScalar(b, wtyp, fd) - if err != nil { - return 0, err - } - switch fd.Kind() { - case protoreflect.GroupKind, protoreflect.MessageKind: - m2 := m.Mutable(fd).Message() - if err := o.unmarshalMessage(v.Bytes(), m2); err != nil { - return n, err - } - default: - // Non-message scalars replace the previous value. - m.Set(fd, v) - } - return n, nil -} - -func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) { - if wtyp != protowire.BytesType { - return 0, errUnknown - } - b, n = protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - var ( - keyField = fd.MapKey() - valField = fd.MapValue() - key protoreflect.Value - val protoreflect.Value - haveKey bool - haveVal bool - ) - switch valField.Kind() { - case protoreflect.GroupKind, protoreflect.MessageKind: - val = mapv.NewValue() - } - // Map entries are represented as a two-element message with fields - // containing the key and value. - for len(b) > 0 { - num, wtyp, n := protowire.ConsumeTag(b) - if n < 0 { - return 0, errDecode - } - if num > protowire.MaxValidNumber { - return 0, errDecode - } - b = b[n:] - err = errUnknown - switch num { - case genid.MapEntry_Key_field_number: - key, n, err = o.unmarshalScalar(b, wtyp, keyField) - if err != nil { - break - } - haveKey = true - case genid.MapEntry_Value_field_number: - var v protoreflect.Value - v, n, err = o.unmarshalScalar(b, wtyp, valField) - if err != nil { - break - } - switch valField.Kind() { - case protoreflect.GroupKind, protoreflect.MessageKind: - if err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil { - return 0, err - } - default: - val = v - } - haveVal = true - } - if err == errUnknown { - n = protowire.ConsumeFieldValue(num, wtyp, b) - if n < 0 { - return 0, errDecode - } - } else if err != nil { - return 0, err - } - b = b[n:] - } - // Every map entry should have entries for key and value, but this is not strictly required. - if !haveKey { - key = keyField.Default() - } - if !haveVal { - switch valField.Kind() { - case protoreflect.GroupKind, protoreflect.MessageKind: - default: - val = valField.Default() - } - } - mapv.Set(key.MapKey(), val) - return n, nil -} - -// errUnknown is used internally to indicate fields which should be added -// to the unknown field set of a message. It is never returned from an exported -// function. -var errUnknown = errors.New("BUG: internal error (unknown)") - -var errDecode = errors.New("cannot parse invalid wire-format data") diff --git a/vendor/google.golang.org/protobuf/proto/decode_gen.go b/vendor/google.golang.org/protobuf/proto/decode_gen.go deleted file mode 100644 index 301eeb2..0000000 --- a/vendor/google.golang.org/protobuf/proto/decode_gen.go +++ /dev/null @@ -1,603 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package proto - -import ( - "math" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// unmarshalScalar decodes a value of the given kind. -// -// Message values are decoded into a []byte which aliases the input data. -func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) { - switch fd.Kind() { - case protoreflect.BoolKind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil - case protoreflect.EnumKind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil - case protoreflect.Int32Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt32(int32(v)), n, nil - case protoreflect.Sint32Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil - case protoreflect.Uint32Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfUint32(uint32(v)), n, nil - case protoreflect.Int64Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt64(int64(v)), n, nil - case protoreflect.Sint64Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil - case protoreflect.Uint64Kind: - if wtyp != protowire.VarintType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfUint64(v), n, nil - case protoreflect.Sfixed32Kind: - if wtyp != protowire.Fixed32Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt32(int32(v)), n, nil - case protoreflect.Fixed32Kind: - if wtyp != protowire.Fixed32Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfUint32(uint32(v)), n, nil - case protoreflect.FloatKind: - if wtyp != protowire.Fixed32Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil - case protoreflect.Sfixed64Kind: - if wtyp != protowire.Fixed64Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfInt64(int64(v)), n, nil - case protoreflect.Fixed64Kind: - if wtyp != protowire.Fixed64Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfUint64(v), n, nil - case protoreflect.DoubleKind: - if wtyp != protowire.Fixed64Type { - return val, 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil - case protoreflect.StringKind: - if wtyp != protowire.BytesType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return val, 0, errDecode - } - if strs.EnforceUTF8(fd) && !utf8.Valid(v) { - return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName())) - } - return protoreflect.ValueOfString(string(v)), n, nil - case protoreflect.BytesKind: - if wtyp != protowire.BytesType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil - case protoreflect.MessageKind: - if wtyp != protowire.BytesType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfBytes(v), n, nil - case protoreflect.GroupKind: - if wtyp != protowire.StartGroupType { - return val, 0, errUnknown - } - v, n := protowire.ConsumeGroup(fd.Number(), b) - if n < 0 { - return val, 0, errDecode - } - return protoreflect.ValueOfBytes(v), n, nil - default: - return val, 0, errUnknown - } -} - -func (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) { - switch fd.Kind() { - case protoreflect.BoolKind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v))) - return n, nil - case protoreflect.EnumKind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))) - return n, nil - case protoreflect.Int32Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt32(int32(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - return n, nil - case protoreflect.Sint32Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))) - return n, nil - case protoreflect.Uint32Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfUint32(uint32(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - return n, nil - case protoreflect.Int64Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt64(int64(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - return n, nil - case protoreflect.Sint64Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))) - return n, nil - case protoreflect.Uint64Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeVarint(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfUint64(v)) - } - return n, nil - } - if wtyp != protowire.VarintType { - return 0, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - return n, nil - case protoreflect.Sfixed32Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed32(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt32(int32(v))) - } - return n, nil - } - if wtyp != protowire.Fixed32Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt32(int32(v))) - return n, nil - case protoreflect.Fixed32Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed32(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfUint32(uint32(v))) - } - return n, nil - } - if wtyp != protowire.Fixed32Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfUint32(uint32(v))) - return n, nil - case protoreflect.FloatKind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed32(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) - } - return n, nil - } - if wtyp != protowire.Fixed32Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed32(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))) - return n, nil - case protoreflect.Sfixed64Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed64(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfInt64(int64(v))) - } - return n, nil - } - if wtyp != protowire.Fixed64Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfInt64(int64(v))) - return n, nil - case protoreflect.Fixed64Kind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed64(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfUint64(v)) - } - return n, nil - } - if wtyp != protowire.Fixed64Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfUint64(v)) - return n, nil - case protoreflect.DoubleKind: - if wtyp == protowire.BytesType { - buf, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - for len(buf) > 0 { - v, n := protowire.ConsumeFixed64(buf) - if n < 0 { - return 0, errDecode - } - buf = buf[n:] - list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) - } - return n, nil - } - if wtyp != protowire.Fixed64Type { - return 0, errUnknown - } - v, n := protowire.ConsumeFixed64(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v))) - return n, nil - case protoreflect.StringKind: - if wtyp != protowire.BytesType { - return 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - if strs.EnforceUTF8(fd) && !utf8.Valid(v) { - return 0, errors.InvalidUTF8(string(fd.FullName())) - } - list.Append(protoreflect.ValueOfString(string(v))) - return n, nil - case protoreflect.BytesKind: - if wtyp != protowire.BytesType { - return 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...))) - return n, nil - case protoreflect.MessageKind: - if wtyp != protowire.BytesType { - return 0, errUnknown - } - v, n := protowire.ConsumeBytes(b) - if n < 0 { - return 0, errDecode - } - m := list.NewElement() - if err := o.unmarshalMessage(v, m.Message()); err != nil { - return 0, err - } - list.Append(m) - return n, nil - case protoreflect.GroupKind: - if wtyp != protowire.StartGroupType { - return 0, errUnknown - } - v, n := protowire.ConsumeGroup(fd.Number(), b) - if n < 0 { - return 0, errDecode - } - m := list.NewElement() - if err := o.unmarshalMessage(v, m.Message()); err != nil { - return 0, err - } - list.Append(m) - return n, nil - default: - return 0, errUnknown - } -} - -// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices. -var emptyBuf [0]byte diff --git a/vendor/google.golang.org/protobuf/proto/doc.go b/vendor/google.golang.org/protobuf/proto/doc.go deleted file mode 100644 index 80ed16a..0000000 --- a/vendor/google.golang.org/protobuf/proto/doc.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package proto provides functions operating on protocol buffer messages. -// -// For documentation on protocol buffers in general, see: -// https://protobuf.dev. -// -// For a tutorial on using protocol buffers with Go, see: -// https://protobuf.dev/getting-started/gotutorial. -// -// For a guide to generated Go protocol buffer code, see: -// https://protobuf.dev/reference/go/go-generated. -// -// # Binary serialization -// -// This package contains functions to convert to and from the wire format, -// an efficient binary serialization of protocol buffers. -// -// - [Size] reports the size of a message in the wire format. -// -// - [Marshal] converts a message to the wire format. -// The [MarshalOptions] type provides more control over wire marshaling. -// -// - [Unmarshal] converts a message from the wire format. -// The [UnmarshalOptions] type provides more control over wire unmarshaling. -// -// # Basic message operations -// -// - [Clone] makes a deep copy of a message. -// -// - [Merge] merges the content of a message into another. -// -// - [Equal] compares two messages. For more control over comparisons -// and detailed reporting of differences, see package -// [google.golang.org/protobuf/testing/protocmp]. -// -// - [Reset] clears the content of a message. -// -// - [CheckInitialized] reports whether all required fields in a message are set. -// -// # Optional scalar constructors -// -// The API for some generated messages represents optional scalar fields -// as pointers to a value. For example, an optional string field has the -// Go type *string. -// -// - [Bool], [Int32], [Int64], [Uint32], [Uint64], [Float32], [Float64], and [String] -// take a value and return a pointer to a new instance of it, -// to simplify construction of optional field values. -// -// Generated enum types usually have an Enum method which performs the -// same operation. -// -// Optional scalar fields are only supported in proto2. -// -// # Extension accessors -// -// - [HasExtension], [GetExtension], [SetExtension], and [ClearExtension] -// access extension field values in a protocol buffer message. -// -// Extension fields are only supported in proto2. -// -// # Related packages -// -// - Package [google.golang.org/protobuf/encoding/protojson] converts messages to -// and from JSON. -// -// - Package [google.golang.org/protobuf/encoding/prototext] converts messages to -// and from the text format. -// -// - Package [google.golang.org/protobuf/reflect/protoreflect] provides a -// reflection interface for protocol buffer data types. -// -// - Package [google.golang.org/protobuf/testing/protocmp] provides features -// to compare protocol buffer messages with the [github.com/google/go-cmp/cmp] -// package. -// -// - Package [google.golang.org/protobuf/types/dynamicpb] provides a dynamic -// message type, suitable for working with messages where the protocol buffer -// type is only known at runtime. -// -// This module contains additional packages for more specialized use cases. -// Consult the individual package documentation for details. -package proto diff --git a/vendor/google.golang.org/protobuf/proto/encode.go b/vendor/google.golang.org/protobuf/proto/encode.go deleted file mode 100644 index 1f847bc..0000000 --- a/vendor/google.golang.org/protobuf/proto/encode.go +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "errors" - "fmt" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/order" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" - - protoerrors "google.golang.org/protobuf/internal/errors" -) - -// MarshalOptions configures the marshaler. -// -// Example usage: -// -// b, err := MarshalOptions{Deterministic: true}.Marshal(m) -type MarshalOptions struct { - pragma.NoUnkeyedLiterals - - // AllowPartial allows messages that have missing required fields to marshal - // without returning an error. If AllowPartial is false (the default), - // Marshal will return an error if there are any missing required fields. - AllowPartial bool - - // Deterministic controls whether the same message will always be - // serialized to the same bytes within the same binary. - // - // Setting this option guarantees that repeated serialization of - // the same message will return the same bytes, and that different - // processes of the same binary (which may be executing on different - // machines) will serialize equal messages to the same bytes. - // It has no effect on the resulting size of the encoded message compared - // to a non-deterministic marshal. - // - // Note that the deterministic serialization is NOT canonical across - // languages. It is not guaranteed to remain stable over time. It is - // unstable across different builds with schema changes due to unknown - // fields. Users who need canonical serialization (e.g., persistent - // storage in a canonical form, fingerprinting, etc.) must define - // their own canonicalization specification and implement their own - // serializer rather than relying on this API. - // - // If deterministic serialization is requested, map entries will be - // sorted by keys in lexographical order. This is an implementation - // detail and subject to change. - Deterministic bool - - // UseCachedSize indicates that the result of a previous Size call - // may be reused. - // - // Setting this option asserts that: - // - // 1. Size has previously been called on this message with identical - // options (except for UseCachedSize itself). - // - // 2. The message and all its submessages have not changed in any - // way since the Size call. - // - // If either of these invariants is violated, - // the results are undefined and may include panics or corrupted output. - // - // Implementations MAY take this option into account to provide - // better performance, but there is no guarantee that they will do so. - // There is absolutely no guarantee that Size followed by Marshal with - // UseCachedSize set will perform equivalently to Marshal alone. - UseCachedSize bool -} - -// flags turns the specified MarshalOptions (user-facing) into -// protoiface.MarshalInputFlags (used internally by the marshaler). -// -// See impl.marshalOptions.Options for the inverse operation. -func (o MarshalOptions) flags() protoiface.MarshalInputFlags { - var flags protoiface.MarshalInputFlags - - // Note: o.AllowPartial is always forced to true by MarshalOptions.marshal, - // which is why it is not a part of MarshalInputFlags. - - if o.Deterministic { - flags |= protoiface.MarshalDeterministic - } - - if o.UseCachedSize { - flags |= protoiface.MarshalUseCachedSize - } - - return flags -} - -// Marshal returns the wire-format encoding of m. -// -// This is the most common entry point for encoding a Protobuf message. -// -// See the [MarshalOptions] type if you need more control. -func Marshal(m Message) ([]byte, error) { - // Treat nil message interface as an empty message; nothing to output. - if m == nil { - return nil, nil - } - - out, err := MarshalOptions{}.marshal(nil, m.ProtoReflect()) - if len(out.Buf) == 0 && err == nil { - out.Buf = emptyBytesForMessage(m) - } - return out.Buf, err -} - -// Marshal returns the wire-format encoding of m. -func (o MarshalOptions) Marshal(m Message) ([]byte, error) { - // Treat nil message interface as an empty message; nothing to output. - if m == nil { - return nil, nil - } - - out, err := o.marshal(nil, m.ProtoReflect()) - if len(out.Buf) == 0 && err == nil { - out.Buf = emptyBytesForMessage(m) - } - return out.Buf, err -} - -// emptyBytesForMessage returns a nil buffer if and only if m is invalid, -// otherwise it returns a non-nil empty buffer. -// -// This is to assist the edge-case where user-code does the following: -// -// m1.OptionalBytes, _ = proto.Marshal(m2) -// -// where they expect the proto2 "optional_bytes" field to be populated -// if any only if m2 is a valid message. -func emptyBytesForMessage(m Message) []byte { - if m == nil || !m.ProtoReflect().IsValid() { - return nil - } - return emptyBuf[:] -} - -// MarshalAppend appends the wire-format encoding of m to b, -// returning the result. -// -// This is a less common entry point than [Marshal], which is only needed if you -// need to supply your own buffers for performance reasons. -func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) { - // Treat nil message interface as an empty message; nothing to append. - if m == nil { - return b, nil - } - - out, err := o.marshal(b, m.ProtoReflect()) - return out.Buf, err -} - -// MarshalState returns the wire-format encoding of a message. -// -// This method permits fine-grained control over the marshaler. -// Most users should use [Marshal] instead. -func (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - return o.marshal(in.Buf, in.Message) -} - -// marshal is a centralized function that all marshal operations go through. -// For profiling purposes, avoid changing the name of this function or -// introducing other code paths for marshal that do not go through this. -func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) { - allowPartial := o.AllowPartial - o.AllowPartial = true - if methods := protoMethods(m); methods != nil && methods.Marshal != nil && - !(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) { - in := protoiface.MarshalInput{ - Message: m, - Buf: b, - Flags: o.flags(), - } - if methods.Size != nil { - sout := methods.Size(protoiface.SizeInput{ - Message: m, - Flags: in.Flags, - }) - if cap(b) < len(b)+sout.Size { - in.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size)) - copy(in.Buf, b) - } - in.Flags |= protoiface.MarshalUseCachedSize - } - out, err = methods.Marshal(in) - } else { - out.Buf, err = o.marshalMessageSlow(b, m) - } - if err != nil { - var mismatch *protoerrors.SizeMismatchError - if errors.As(err, &mismatch) { - return out, fmt.Errorf("marshaling %s: %v", string(m.Descriptor().FullName()), err) - } - return out, err - } - if allowPartial { - return out, nil - } - return out, checkInitialized(m) -} - -func (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) { - out, err := o.marshal(b, m) - return out.Buf, err -} - -// growcap scales up the capacity of a slice. -// -// Given a slice with a current capacity of oldcap and a desired -// capacity of wantcap, growcap returns a new capacity >= wantcap. -// -// The algorithm is mostly identical to the one used by append as of Go 1.14. -func growcap(oldcap, wantcap int) (newcap int) { - if wantcap > oldcap*2 { - newcap = wantcap - } else if oldcap < 1024 { - // The Go 1.14 runtime takes this case when len(s) < 1024, - // not when cap(s) < 1024. The difference doesn't seem - // significant here. - newcap = oldcap * 2 - } else { - newcap = oldcap - for 0 < newcap && newcap < wantcap { - newcap += newcap / 4 - } - if newcap <= 0 { - newcap = wantcap - } - } - return newcap -} - -func (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) { - if messageset.IsMessageSet(m.Descriptor()) { - return o.marshalMessageSet(b, m) - } - fieldOrder := order.AnyFieldOrder - if o.Deterministic { - // TODO: This should use a more natural ordering like NumberFieldOrder, - // but doing so breaks golden tests that make invalid assumption about - // output stability of this implementation. - fieldOrder = order.LegacyFieldOrder - } - var err error - order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - b, err = o.marshalField(b, fd, v) - return err == nil - }) - if err != nil { - return b, err - } - b = append(b, m.GetUnknown()...) - return b, nil -} - -func (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { - switch { - case fd.IsList(): - return o.marshalList(b, fd, value.List()) - case fd.IsMap(): - return o.marshalMap(b, fd, value.Map()) - default: - b = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()]) - return o.marshalSingular(b, fd, value) - } -} - -func (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) { - if fd.IsPacked() && list.Len() > 0 { - b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) - b, pos := appendSpeculativeLength(b) - for i, llen := 0, list.Len(); i < llen; i++ { - var err error - b, err = o.marshalSingular(b, fd, list.Get(i)) - if err != nil { - return b, err - } - } - b = finishSpeculativeLength(b, pos) - return b, nil - } - - kind := fd.Kind() - for i, llen := 0, list.Len(); i < llen; i++ { - var err error - b = protowire.AppendTag(b, fd.Number(), wireTypes[kind]) - b, err = o.marshalSingular(b, fd, list.Get(i)) - if err != nil { - return b, err - } - } - return b, nil -} - -func (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) { - keyf := fd.MapKey() - valf := fd.MapValue() - keyOrder := order.AnyKeyOrder - if o.Deterministic { - keyOrder = order.GenericKeyOrder - } - var err error - order.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool { - b = protowire.AppendTag(b, fd.Number(), protowire.BytesType) - var pos int - b, pos = appendSpeculativeLength(b) - - b, err = o.marshalField(b, keyf, key.Value()) - if err != nil { - return false - } - b, err = o.marshalField(b, valf, value) - if err != nil { - return false - } - b = finishSpeculativeLength(b, pos) - return true - }) - return b, err -} - -// When encoding length-prefixed fields, we speculatively set aside some number of bytes -// for the length, encode the data, and then encode the length (shifting the data if necessary -// to make room). -const speculativeLength = 1 - -func appendSpeculativeLength(b []byte) ([]byte, int) { - pos := len(b) - b = append(b, "\x00\x00\x00\x00"[:speculativeLength]...) - return b, pos -} - -func finishSpeculativeLength(b []byte, pos int) []byte { - mlen := len(b) - pos - speculativeLength - msiz := protowire.SizeVarint(uint64(mlen)) - if msiz != speculativeLength { - for i := 0; i < msiz-speculativeLength; i++ { - b = append(b, 0) - } - copy(b[pos+msiz:], b[pos+speculativeLength:]) - b = b[:pos+msiz+mlen] - } - protowire.AppendVarint(b[:pos], uint64(mlen)) - return b -} diff --git a/vendor/google.golang.org/protobuf/proto/encode_gen.go b/vendor/google.golang.org/protobuf/proto/encode_gen.go deleted file mode 100644 index 185dacf..0000000 --- a/vendor/google.golang.org/protobuf/proto/encode_gen.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package proto - -import ( - "math" - "unicode/utf8" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" -) - -var wireTypes = map[protoreflect.Kind]protowire.Type{ - protoreflect.BoolKind: protowire.VarintType, - protoreflect.EnumKind: protowire.VarintType, - protoreflect.Int32Kind: protowire.VarintType, - protoreflect.Sint32Kind: protowire.VarintType, - protoreflect.Uint32Kind: protowire.VarintType, - protoreflect.Int64Kind: protowire.VarintType, - protoreflect.Sint64Kind: protowire.VarintType, - protoreflect.Uint64Kind: protowire.VarintType, - protoreflect.Sfixed32Kind: protowire.Fixed32Type, - protoreflect.Fixed32Kind: protowire.Fixed32Type, - protoreflect.FloatKind: protowire.Fixed32Type, - protoreflect.Sfixed64Kind: protowire.Fixed64Type, - protoreflect.Fixed64Kind: protowire.Fixed64Type, - protoreflect.DoubleKind: protowire.Fixed64Type, - protoreflect.StringKind: protowire.BytesType, - protoreflect.BytesKind: protowire.BytesType, - protoreflect.MessageKind: protowire.BytesType, - protoreflect.GroupKind: protowire.StartGroupType, -} - -func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) { - switch fd.Kind() { - case protoreflect.BoolKind: - b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool())) - case protoreflect.EnumKind: - b = protowire.AppendVarint(b, uint64(v.Enum())) - case protoreflect.Int32Kind: - b = protowire.AppendVarint(b, uint64(int32(v.Int()))) - case protoreflect.Sint32Kind: - b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int())))) - case protoreflect.Uint32Kind: - b = protowire.AppendVarint(b, uint64(uint32(v.Uint()))) - case protoreflect.Int64Kind: - b = protowire.AppendVarint(b, uint64(v.Int())) - case protoreflect.Sint64Kind: - b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int())) - case protoreflect.Uint64Kind: - b = protowire.AppendVarint(b, v.Uint()) - case protoreflect.Sfixed32Kind: - b = protowire.AppendFixed32(b, uint32(v.Int())) - case protoreflect.Fixed32Kind: - b = protowire.AppendFixed32(b, uint32(v.Uint())) - case protoreflect.FloatKind: - b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float()))) - case protoreflect.Sfixed64Kind: - b = protowire.AppendFixed64(b, uint64(v.Int())) - case protoreflect.Fixed64Kind: - b = protowire.AppendFixed64(b, v.Uint()) - case protoreflect.DoubleKind: - b = protowire.AppendFixed64(b, math.Float64bits(v.Float())) - case protoreflect.StringKind: - if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) { - return b, errors.InvalidUTF8(string(fd.FullName())) - } - b = protowire.AppendString(b, v.String()) - case protoreflect.BytesKind: - b = protowire.AppendBytes(b, v.Bytes()) - case protoreflect.MessageKind: - var pos int - var err error - b, pos = appendSpeculativeLength(b) - b, err = o.marshalMessage(b, v.Message()) - if err != nil { - return b, err - } - b = finishSpeculativeLength(b, pos) - case protoreflect.GroupKind: - var err error - b, err = o.marshalMessage(b, v.Message()) - if err != nil { - return b, err - } - b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType)) - default: - return b, errors.New("invalid kind %v", fd.Kind()) - } - return b, nil -} diff --git a/vendor/google.golang.org/protobuf/proto/equal.go b/vendor/google.golang.org/protobuf/proto/equal.go deleted file mode 100644 index c36d4a9..0000000 --- a/vendor/google.golang.org/protobuf/proto/equal.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "reflect" - - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// Equal reports whether two messages are equal, -// by recursively comparing the fields of the message. -// -// - Bytes fields are equal if they contain identical bytes. -// Empty bytes (regardless of nil-ness) are considered equal. -// -// - Floating-point fields are equal if they contain the same value. -// Unlike the == operator, a NaN is equal to another NaN. -// -// - Other scalar fields are equal if they contain the same value. -// -// - Message fields are equal if they have -// the same set of populated known and extension field values, and -// the same set of unknown fields values. -// -// - Lists are equal if they are the same length and -// each corresponding element is equal. -// -// - Maps are equal if they have the same set of keys and -// the corresponding value for each key is equal. -// -// An invalid message is not equal to a valid message. -// An invalid message is only equal to another invalid message of the -// same type. An invalid message often corresponds to a nil pointer -// of the concrete message type. For example, (*pb.M)(nil) is not equal -// to &pb.M{}. -// If two valid messages marshal to the same bytes under deterministic -// serialization, then Equal is guaranteed to report true. -func Equal(x, y Message) bool { - if x == nil || y == nil { - return x == nil && y == nil - } - if reflect.TypeOf(x).Kind() == reflect.Ptr && x == y { - // Avoid an expensive comparison if both inputs are identical pointers. - return true - } - mx := x.ProtoReflect() - my := y.ProtoReflect() - if mx.IsValid() != my.IsValid() { - return false - } - - // Only one of the messages needs to implement the fast-path for it to work. - pmx := protoMethods(mx) - pmy := protoMethods(my) - if pmx != nil && pmy != nil && pmx.Equal != nil && pmy.Equal != nil { - return pmx.Equal(protoiface.EqualInput{MessageA: mx, MessageB: my}).Equal - } - - vx := protoreflect.ValueOfMessage(mx) - vy := protoreflect.ValueOfMessage(my) - return vx.Equal(vy) -} diff --git a/vendor/google.golang.org/protobuf/proto/extension.go b/vendor/google.golang.org/protobuf/proto/extension.go deleted file mode 100644 index 78445d1..0000000 --- a/vendor/google.golang.org/protobuf/proto/extension.go +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/reflect/protoreflect" -) - -// HasExtension reports whether an extension field is populated. -// It returns false if m is invalid or if xt does not extend m. -func HasExtension(m Message, xt protoreflect.ExtensionType) bool { - // Treat nil message interface or descriptor as an empty message; no populated - // fields. - if m == nil || xt == nil { - return false - } - - // As a special-case, we reports invalid or mismatching descriptors - // as always not being populated (since they aren't). - mr := m.ProtoReflect() - xd := xt.TypeDescriptor() - if mr.Descriptor() != xd.ContainingMessage() { - return false - } - - return mr.Has(xd) -} - -// ClearExtension clears an extension field such that subsequent -// [HasExtension] calls return false. -// It panics if m is invalid or if xt does not extend m. -func ClearExtension(m Message, xt protoreflect.ExtensionType) { - m.ProtoReflect().Clear(xt.TypeDescriptor()) -} - -// GetExtension retrieves the value for an extension field. -// If the field is unpopulated, it returns the default value for -// scalars and an immutable, empty value for lists or messages. -// It panics if xt does not extend m. -// -// The type of the value is dependent on the field type of the extension. -// For extensions generated by protoc-gen-go, the Go type is as follows: -// -// ╔═══════════════════╤═════════════════════════╗ -// ║ Go type │ Protobuf kind ║ -// ╠═══════════════════╪═════════════════════════╣ -// ║ bool │ bool ║ -// ║ int32 │ int32, sint32, sfixed32 ║ -// ║ int64 │ int64, sint64, sfixed64 ║ -// ║ uint32 │ uint32, fixed32 ║ -// ║ uint64 │ uint64, fixed64 ║ -// ║ float32 │ float ║ -// ║ float64 │ double ║ -// ║ string │ string ║ -// ║ []byte │ bytes ║ -// ║ protoreflect.Enum │ enum ║ -// ║ proto.Message │ message, group ║ -// ╚═══════════════════╧═════════════════════════╝ -// -// The protoreflect.Enum and proto.Message types are the concrete Go type -// associated with the named enum or message. Repeated fields are represented -// using a Go slice of the base element type. -// -// If a generated extension descriptor variable is directly passed to -// GetExtension, then the call should be followed immediately by a -// type assertion to the expected output value. For example: -// -// mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage) -// -// This pattern enables static analysis tools to verify that the asserted type -// matches the Go type associated with the extension field and -// also enables a possible future migration to a type-safe extension API. -// -// Since singular messages are the most common extension type, the pattern of -// calling HasExtension followed by GetExtension may be simplified to: -// -// if mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage); mm != nil { -// ... // make use of mm -// } -// -// The mm variable is non-nil if and only if HasExtension reports true. -func GetExtension(m Message, xt protoreflect.ExtensionType) any { - // Treat nil message interface as an empty message; return the default. - if m == nil { - return xt.InterfaceOf(xt.Zero()) - } - - return xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor())) -} - -// SetExtension stores the value of an extension field. -// It panics if m is invalid, xt does not extend m, or if type of v -// is invalid for the specified extension field. -// -// The type of the value is dependent on the field type of the extension. -// For extensions generated by protoc-gen-go, the Go type is as follows: -// -// ╔═══════════════════╤═════════════════════════╗ -// ║ Go type │ Protobuf kind ║ -// ╠═══════════════════╪═════════════════════════╣ -// ║ bool │ bool ║ -// ║ int32 │ int32, sint32, sfixed32 ║ -// ║ int64 │ int64, sint64, sfixed64 ║ -// ║ uint32 │ uint32, fixed32 ║ -// ║ uint64 │ uint64, fixed64 ║ -// ║ float32 │ float ║ -// ║ float64 │ double ║ -// ║ string │ string ║ -// ║ []byte │ bytes ║ -// ║ protoreflect.Enum │ enum ║ -// ║ proto.Message │ message, group ║ -// ╚═══════════════════╧═════════════════════════╝ -// -// The protoreflect.Enum and proto.Message types are the concrete Go type -// associated with the named enum or message. Repeated fields are represented -// using a Go slice of the base element type. -// -// If a generated extension descriptor variable is directly passed to -// SetExtension (e.g., foopb.E_MyExtension), then the value should be a -// concrete type that matches the expected Go type for the extension descriptor -// so that static analysis tools can verify type correctness. -// This also enables a possible future migration to a type-safe extension API. -func SetExtension(m Message, xt protoreflect.ExtensionType, v any) { - xd := xt.TypeDescriptor() - pv := xt.ValueOf(v) - - // Specially treat an invalid list, map, or message as clear. - isValid := true - switch { - case xd.IsList(): - isValid = pv.List().IsValid() - case xd.IsMap(): - isValid = pv.Map().IsValid() - case xd.Message() != nil: - isValid = pv.Message().IsValid() - } - if !isValid { - m.ProtoReflect().Clear(xd) - return - } - - m.ProtoReflect().Set(xd, pv) -} - -// RangeExtensions iterates over every populated extension field in m in an -// undefined order, calling f for each extension type and value encountered. -// It returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current extension field. -func RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) { - // Treat nil message interface as an empty message; nothing to range over. - if m == nil { - return - } - - m.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - if fd.IsExtension() { - xt := fd.(protoreflect.ExtensionTypeDescriptor).Type() - vi := xt.InterfaceOf(v) - return f(xt, vi) - } - return true - }) -} diff --git a/vendor/google.golang.org/protobuf/proto/merge.go b/vendor/google.golang.org/protobuf/proto/merge.go deleted file mode 100644 index 3c6fe57..0000000 --- a/vendor/google.golang.org/protobuf/proto/merge.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "fmt" - - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// Merge merges src into dst, which must be a message with the same descriptor. -// -// Populated scalar fields in src are copied to dst, while populated -// singular messages in src are merged into dst by recursively calling Merge. -// The elements of every list field in src is appended to the corresponded -// list fields in dst. The entries of every map field in src is copied into -// the corresponding map field in dst, possibly replacing existing entries. -// The unknown fields of src are appended to the unknown fields of dst. -// -// It is semantically equivalent to unmarshaling the encoded form of src -// into dst with the [UnmarshalOptions.Merge] option specified. -func Merge(dst, src Message) { - // TODO: Should nil src be treated as semantically equivalent to a - // untyped, read-only, empty message? What about a nil dst? - - dstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect() - if dstMsg.Descriptor() != srcMsg.Descriptor() { - if got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want { - panic(fmt.Sprintf("descriptor mismatch: %v != %v", got, want)) - } - panic("descriptor mismatch") - } - mergeOptions{}.mergeMessage(dstMsg, srcMsg) -} - -// Clone returns a deep copy of m. -// If the top-level message is invalid, it returns an invalid message as well. -func Clone(m Message) Message { - // NOTE: Most usages of Clone assume the following properties: - // t := reflect.TypeOf(m) - // t == reflect.TypeOf(m.ProtoReflect().New().Interface()) - // t == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface()) - // - // Embedding protobuf messages breaks this since the parent type will have - // a forwarded ProtoReflect method, but the Interface method will return - // the underlying embedded message type. - if m == nil { - return nil - } - src := m.ProtoReflect() - if !src.IsValid() { - return src.Type().Zero().Interface() - } - dst := src.New() - mergeOptions{}.mergeMessage(dst, src) - return dst.Interface() -} - -// mergeOptions provides a namespace for merge functions, and can be -// exported in the future if we add user-visible merge options. -type mergeOptions struct{} - -func (o mergeOptions) mergeMessage(dst, src protoreflect.Message) { - methods := protoMethods(dst) - if methods != nil && methods.Merge != nil { - in := protoiface.MergeInput{ - Destination: dst, - Source: src, - } - out := methods.Merge(in) - if out.Flags&protoiface.MergeComplete != 0 { - return - } - } - - if !dst.IsValid() { - panic(fmt.Sprintf("cannot merge into invalid %v message", dst.Descriptor().FullName())) - } - - src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - switch { - case fd.IsList(): - o.mergeList(dst.Mutable(fd).List(), v.List(), fd) - case fd.IsMap(): - o.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue()) - case fd.Message() != nil: - o.mergeMessage(dst.Mutable(fd).Message(), v.Message()) - case fd.Kind() == protoreflect.BytesKind: - dst.Set(fd, o.cloneBytes(v)) - default: - dst.Set(fd, v) - } - return true - }) - - if len(src.GetUnknown()) > 0 { - dst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...)) - } -} - -func (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) { - // Merge semantics appends to the end of the existing list. - for i, n := 0, src.Len(); i < n; i++ { - switch v := src.Get(i); { - case fd.Message() != nil: - dstv := dst.NewElement() - o.mergeMessage(dstv.Message(), v.Message()) - dst.Append(dstv) - case fd.Kind() == protoreflect.BytesKind: - dst.Append(o.cloneBytes(v)) - default: - dst.Append(v) - } - } -} - -func (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) { - // Merge semantics replaces, rather than merges into existing entries. - src.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { - switch { - case fd.Message() != nil: - dstv := dst.NewValue() - o.mergeMessage(dstv.Message(), v.Message()) - dst.Set(k, dstv) - case fd.Kind() == protoreflect.BytesKind: - dst.Set(k, o.cloneBytes(v)) - default: - dst.Set(k, v) - } - return true - }) -} - -func (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value { - return protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...)) -} diff --git a/vendor/google.golang.org/protobuf/proto/messageset.go b/vendor/google.golang.org/protobuf/proto/messageset.go deleted file mode 100644 index 575d148..0000000 --- a/vendor/google.golang.org/protobuf/proto/messageset.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/order" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" -) - -func (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) { - m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - size += messageset.SizeField(fd.Number()) - size += protowire.SizeTag(messageset.FieldMessage) - size += protowire.SizeBytes(o.size(v.Message())) - return true - }) - size += messageset.SizeUnknown(m.GetUnknown()) - return size -} - -func (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) { - if !flags.ProtoLegacy { - return b, errors.New("no support for message_set_wire_format") - } - fieldOrder := order.AnyFieldOrder - if o.Deterministic { - fieldOrder = order.NumberFieldOrder - } - var err error - order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - b, err = o.marshalMessageSetField(b, fd, v) - return err == nil - }) - if err != nil { - return b, err - } - return messageset.AppendUnknown(b, m.GetUnknown()) -} - -func (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { - b = messageset.AppendFieldStart(b, fd.Number()) - b = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType) - calculatedSize := o.Size(value.Message().Interface()) - b = protowire.AppendVarint(b, uint64(calculatedSize)) - before := len(b) - b, err := o.marshalMessage(b, value.Message()) - if err != nil { - return b, err - } - if measuredSize := len(b) - before; calculatedSize != measuredSize { - return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) - } - b = messageset.AppendFieldEnd(b) - return b, nil -} - -func (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error { - if !flags.ProtoLegacy { - return errors.New("no support for message_set_wire_format") - } - return messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error { - err := o.unmarshalMessageSetField(m, num, v) - if err == errUnknown { - unknown := m.GetUnknown() - unknown = protowire.AppendTag(unknown, num, protowire.BytesType) - unknown = protowire.AppendBytes(unknown, v) - m.SetUnknown(unknown) - return nil - } - return err - }) -} - -func (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error { - md := m.Descriptor() - if !md.ExtensionRanges().Has(num) { - return errUnknown - } - xt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num) - if err == protoregistry.NotFound { - return errUnknown - } - if err != nil { - return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err) - } - xd := xt.TypeDescriptor() - if err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil { - return err - } - return nil -} diff --git a/vendor/google.golang.org/protobuf/proto/proto.go b/vendor/google.golang.org/protobuf/proto/proto.go deleted file mode 100644 index 7543ee6..0000000 --- a/vendor/google.golang.org/protobuf/proto/proto.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// Message is the top-level interface that all messages must implement. -// It provides access to a reflective view of a message. -// Any implementation of this interface may be used with all functions in the -// protobuf module that accept a Message, except where otherwise specified. -// -// This is the v2 interface definition for protobuf messages. -// The v1 interface definition is [github.com/golang/protobuf/proto.Message]. -// -// - To convert a v1 message to a v2 message, -// use [google.golang.org/protobuf/protoadapt.MessageV2Of]. -// - To convert a v2 message to a v1 message, -// use [google.golang.org/protobuf/protoadapt.MessageV1Of]. -type Message = protoreflect.ProtoMessage - -// Error matches all errors produced by packages in the protobuf module -// according to [errors.Is]. -// -// Example usage: -// -// if errors.Is(err, proto.Error) { ... } -var Error error - -func init() { - Error = errors.Error -} - -// MessageName returns the full name of m. -// If m is nil, it returns an empty string. -func MessageName(m Message) protoreflect.FullName { - if m == nil { - return "" - } - return m.ProtoReflect().Descriptor().FullName() -} diff --git a/vendor/google.golang.org/protobuf/proto/proto_methods.go b/vendor/google.golang.org/protobuf/proto/proto_methods.go deleted file mode 100644 index 465e057..0000000 --- a/vendor/google.golang.org/protobuf/proto/proto_methods.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The protoreflect build tag disables use of fast-path methods. -//go:build !protoreflect -// +build !protoreflect - -package proto - -import ( - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -const hasProtoMethods = true - -func protoMethods(m protoreflect.Message) *protoiface.Methods { - return m.ProtoMethods() -} diff --git a/vendor/google.golang.org/protobuf/proto/proto_reflect.go b/vendor/google.golang.org/protobuf/proto/proto_reflect.go deleted file mode 100644 index 494d6ce..0000000 --- a/vendor/google.golang.org/protobuf/proto/proto_reflect.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The protoreflect build tag disables use of fast-path methods. -//go:build protoreflect -// +build protoreflect - -package proto - -import ( - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -const hasProtoMethods = false - -func protoMethods(m protoreflect.Message) *protoiface.Methods { - return nil -} diff --git a/vendor/google.golang.org/protobuf/proto/reset.go b/vendor/google.golang.org/protobuf/proto/reset.go deleted file mode 100644 index 3d7f894..0000000 --- a/vendor/google.golang.org/protobuf/proto/reset.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "fmt" - - "google.golang.org/protobuf/reflect/protoreflect" -) - -// Reset clears every field in the message. -// The resulting message shares no observable memory with its previous state -// other than the memory for the message itself. -func Reset(m Message) { - if mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods { - mr.Reset() - return - } - resetMessage(m.ProtoReflect()) -} - -func resetMessage(m protoreflect.Message) { - if !m.IsValid() { - panic(fmt.Sprintf("cannot reset invalid %v message", m.Descriptor().FullName())) - } - - // Clear all known fields. - fds := m.Descriptor().Fields() - for i := 0; i < fds.Len(); i++ { - m.Clear(fds.Get(i)) - } - - // Clear extension fields. - m.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool { - m.Clear(fd) - return true - }) - - // Clear unknown fields. - m.SetUnknown(nil) -} diff --git a/vendor/google.golang.org/protobuf/proto/size.go b/vendor/google.golang.org/protobuf/proto/size.go deleted file mode 100644 index 052fb5a..0000000 --- a/vendor/google.golang.org/protobuf/proto/size.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -import ( - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/runtime/protoiface" -) - -// Size returns the size in bytes of the wire-format encoding of m. -func Size(m Message) int { - return MarshalOptions{}.Size(m) -} - -// Size returns the size in bytes of the wire-format encoding of m. -func (o MarshalOptions) Size(m Message) int { - // Treat a nil message interface as an empty message; nothing to output. - if m == nil { - return 0 - } - - return o.size(m.ProtoReflect()) -} - -// size is a centralized function that all size operations go through. -// For profiling purposes, avoid changing the name of this function or -// introducing other code paths for size that do not go through this. -func (o MarshalOptions) size(m protoreflect.Message) (size int) { - methods := protoMethods(m) - if methods != nil && methods.Size != nil { - out := methods.Size(protoiface.SizeInput{ - Message: m, - Flags: o.flags(), - }) - return out.Size - } - if methods != nil && methods.Marshal != nil { - // This is not efficient, but we don't have any choice. - // This case is mainly used for legacy types with a Marshal method. - out, _ := methods.Marshal(protoiface.MarshalInput{ - Message: m, - Flags: o.flags(), - }) - return len(out.Buf) - } - return o.sizeMessageSlow(m) -} - -func (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) { - if messageset.IsMessageSet(m.Descriptor()) { - return o.sizeMessageSet(m) - } - m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - size += o.sizeField(fd, v) - return true - }) - size += len(m.GetUnknown()) - return size -} - -func (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) { - num := fd.Number() - switch { - case fd.IsList(): - return o.sizeList(num, fd, value.List()) - case fd.IsMap(): - return o.sizeMap(num, fd, value.Map()) - default: - return protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value) - } -} - -func (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) { - sizeTag := protowire.SizeTag(num) - - if fd.IsPacked() && list.Len() > 0 { - content := 0 - for i, llen := 0, list.Len(); i < llen; i++ { - content += o.sizeSingular(num, fd.Kind(), list.Get(i)) - } - return sizeTag + protowire.SizeBytes(content) - } - - for i, llen := 0, list.Len(); i < llen; i++ { - size += sizeTag + o.sizeSingular(num, fd.Kind(), list.Get(i)) - } - return size -} - -func (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) { - sizeTag := protowire.SizeTag(num) - - mapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool { - size += sizeTag - size += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value)) - return true - }) - return size -} diff --git a/vendor/google.golang.org/protobuf/proto/size_gen.go b/vendor/google.golang.org/protobuf/proto/size_gen.go deleted file mode 100644 index 3cf61a8..0000000 --- a/vendor/google.golang.org/protobuf/proto/size_gen.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-types. DO NOT EDIT. - -package proto - -import ( - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/reflect/protoreflect" -) - -func (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int { - switch kind { - case protoreflect.BoolKind: - return protowire.SizeVarint(protowire.EncodeBool(v.Bool())) - case protoreflect.EnumKind: - return protowire.SizeVarint(uint64(v.Enum())) - case protoreflect.Int32Kind: - return protowire.SizeVarint(uint64(int32(v.Int()))) - case protoreflect.Sint32Kind: - return protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int())))) - case protoreflect.Uint32Kind: - return protowire.SizeVarint(uint64(uint32(v.Uint()))) - case protoreflect.Int64Kind: - return protowire.SizeVarint(uint64(v.Int())) - case protoreflect.Sint64Kind: - return protowire.SizeVarint(protowire.EncodeZigZag(v.Int())) - case protoreflect.Uint64Kind: - return protowire.SizeVarint(v.Uint()) - case protoreflect.Sfixed32Kind: - return protowire.SizeFixed32() - case protoreflect.Fixed32Kind: - return protowire.SizeFixed32() - case protoreflect.FloatKind: - return protowire.SizeFixed32() - case protoreflect.Sfixed64Kind: - return protowire.SizeFixed64() - case protoreflect.Fixed64Kind: - return protowire.SizeFixed64() - case protoreflect.DoubleKind: - return protowire.SizeFixed64() - case protoreflect.StringKind: - return protowire.SizeBytes(len(v.String())) - case protoreflect.BytesKind: - return protowire.SizeBytes(len(v.Bytes())) - case protoreflect.MessageKind: - return protowire.SizeBytes(o.size(v.Message())) - case protoreflect.GroupKind: - return protowire.SizeGroup(num, o.size(v.Message())) - default: - return 0 - } -} diff --git a/vendor/google.golang.org/protobuf/proto/wrappers.go b/vendor/google.golang.org/protobuf/proto/wrappers.go deleted file mode 100644 index 653b12c..0000000 --- a/vendor/google.golang.org/protobuf/proto/wrappers.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proto - -// Bool stores v in a new bool value and returns a pointer to it. -func Bool(v bool) *bool { return &v } - -// Int32 stores v in a new int32 value and returns a pointer to it. -func Int32(v int32) *int32 { return &v } - -// Int64 stores v in a new int64 value and returns a pointer to it. -func Int64(v int64) *int64 { return &v } - -// Float32 stores v in a new float32 value and returns a pointer to it. -func Float32(v float32) *float32 { return &v } - -// Float64 stores v in a new float64 value and returns a pointer to it. -func Float64(v float64) *float64 { return &v } - -// Uint32 stores v in a new uint32 value and returns a pointer to it. -func Uint32(v uint32) *uint32 { return &v } - -// Uint64 stores v in a new uint64 value and returns a pointer to it. -func Uint64(v uint64) *uint64 { return &v } - -// String stores v in a new string value and returns a pointer to it. -func String(v string) *string { return &v } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go deleted file mode 100644 index 8fbecb4..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +++ /dev/null @@ -1,286 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protodesc provides functionality for converting -// FileDescriptorProto messages to/from [protoreflect.FileDescriptor] values. -// -// The google.protobuf.FileDescriptorProto is a protobuf message that describes -// the type information for a .proto file in a form that is easily serializable. -// The [protoreflect.FileDescriptor] is a more structured representation of -// the FileDescriptorProto message where references and remote dependencies -// can be directly followed. -package protodesc - -import ( - "google.golang.org/protobuf/internal/editionssupport" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - - "google.golang.org/protobuf/types/descriptorpb" -) - -// Resolver is the resolver used by [NewFile] to resolve dependencies. -// The enums and messages provided must belong to some parent file, -// which is also registered. -// -// It is implemented by [protoregistry.Files]. -type Resolver interface { - FindFileByPath(string) (protoreflect.FileDescriptor, error) - FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) -} - -// FileOptions configures the construction of file descriptors. -type FileOptions struct { - pragma.NoUnkeyedLiterals - - // AllowUnresolvable configures New to permissively allow unresolvable - // file, enum, or message dependencies. Unresolved dependencies are replaced - // by placeholder equivalents. - // - // The following dependencies may be left unresolved: - // • Resolving an imported file. - // • Resolving the type for a message field or extension field. - // If the kind of the field is unknown, then a placeholder is used for both - // the Enum and Message accessors on the protoreflect.FieldDescriptor. - // • Resolving an enum value set as the default for an optional enum field. - // If unresolvable, the protoreflect.FieldDescriptor.Default is set to the - // first value in the associated enum (or zero if the also enum dependency - // is also unresolvable). The protoreflect.FieldDescriptor.DefaultEnumValue - // is populated with a placeholder. - // • Resolving the extended message type for an extension field. - // • Resolving the input or output message type for a service method. - // - // If the unresolved dependency uses a relative name, - // then the placeholder will contain an invalid FullName with a "*." prefix, - // indicating that the starting prefix of the full name is unknown. - AllowUnresolvable bool -} - -// NewFile creates a new [protoreflect.FileDescriptor] from the provided -// file descriptor message. See [FileOptions.New] for more information. -func NewFile(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) { - return FileOptions{}.New(fd, r) -} - -// NewFiles creates a new [protoregistry.Files] from the provided -// FileDescriptorSet message. See [FileOptions.NewFiles] for more information. -func NewFiles(fd *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) { - return FileOptions{}.NewFiles(fd) -} - -// New creates a new [protoreflect.FileDescriptor] from the provided -// file descriptor message. The file must represent a valid proto file according -// to protobuf semantics. The returned descriptor is a deep copy of the input. -// -// Any imported files, enum types, or message types referenced in the file are -// resolved using the provided registry. When looking up an import file path, -// the path must be unique. The newly created file descriptor is not registered -// back into the provided file registry. -func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) { - if r == nil { - r = (*protoregistry.Files)(nil) // empty resolver - } - - // Handle the file descriptor content. - f := &filedesc.File{L2: &filedesc.FileL2{}} - switch fd.GetSyntax() { - case "proto2", "": - f.L1.Syntax = protoreflect.Proto2 - f.L1.Edition = filedesc.EditionProto2 - case "proto3": - f.L1.Syntax = protoreflect.Proto3 - f.L1.Edition = filedesc.EditionProto3 - case "editions": - f.L1.Syntax = protoreflect.Editions - f.L1.Edition = fromEditionProto(fd.GetEdition()) - default: - return nil, errors.New("invalid syntax: %q", fd.GetSyntax()) - } - if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) { - return nil, errors.New("use of edition %v not yet supported by the Go Protobuf runtime", fd.GetEdition()) - } - f.L1.Path = fd.GetName() - if f.L1.Path == "" { - return nil, errors.New("file path must be populated") - } - f.L1.Package = protoreflect.FullName(fd.GetPackage()) - if !f.L1.Package.IsValid() && f.L1.Package != "" { - return nil, errors.New("invalid package: %q", f.L1.Package) - } - if opts := fd.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.FileOptions) - f.L2.Options = func() protoreflect.ProtoMessage { return opts } - } - initFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures()) - - f.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency())) - for _, i := range fd.GetPublicDependency() { - if !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsPublic { - return nil, errors.New("invalid or duplicate public import index: %d", i) - } - f.L2.Imports[i].IsPublic = true - } - for _, i := range fd.GetWeakDependency() { - if !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsWeak { - return nil, errors.New("invalid or duplicate weak import index: %d", i) - } - f.L2.Imports[i].IsWeak = true - } - imps := importSet{f.Path(): true} - for i, path := range fd.GetDependency() { - imp := &f.L2.Imports[i] - f, err := r.FindFileByPath(path) - if err == protoregistry.NotFound && (o.AllowUnresolvable || imp.IsWeak) { - f = filedesc.PlaceholderFile(path) - } else if err != nil { - return nil, errors.New("could not resolve import %q: %v", path, err) - } - imp.FileDescriptor = f - - if imps[imp.Path()] { - return nil, errors.New("already imported %q", path) - } - imps[imp.Path()] = true - } - for i := range fd.GetDependency() { - imp := &f.L2.Imports[i] - imps.importPublic(imp.Imports()) - } - - // Handle source locations. - f.L2.Locations.File = f - for _, loc := range fd.GetSourceCodeInfo().GetLocation() { - var l protoreflect.SourceLocation - // TODO: Validate that the path points to an actual declaration? - l.Path = protoreflect.SourcePath(loc.GetPath()) - s := loc.GetSpan() - switch len(s) { - case 3: - l.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[0]), int(s[2]) - case 4: - l.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[2]), int(s[3]) - default: - return nil, errors.New("invalid span: %v", s) - } - // TODO: Validate that the span information is sensible? - // See https://github.com/protocolbuffers/protobuf/issues/6378. - if false && (l.EndLine < l.StartLine || l.StartLine < 0 || l.StartColumn < 0 || l.EndColumn < 0 || - (l.StartLine == l.EndLine && l.EndColumn <= l.StartColumn)) { - return nil, errors.New("invalid span: %v", s) - } - l.LeadingDetachedComments = loc.GetLeadingDetachedComments() - l.LeadingComments = loc.GetLeadingComments() - l.TrailingComments = loc.GetTrailingComments() - f.L2.Locations.List = append(f.L2.Locations.List, l) - } - - // Step 1: Allocate and derive the names for all declarations. - // This copies all fields from the descriptor proto except: - // google.protobuf.FieldDescriptorProto.type_name - // google.protobuf.FieldDescriptorProto.default_value - // google.protobuf.FieldDescriptorProto.oneof_index - // google.protobuf.FieldDescriptorProto.extendee - // google.protobuf.MethodDescriptorProto.input - // google.protobuf.MethodDescriptorProto.output - var err error - sb := new(strs.Builder) - r1 := make(descsByName) - if f.L1.Enums.List, err = r1.initEnumDeclarations(fd.GetEnumType(), f, sb); err != nil { - return nil, err - } - if f.L1.Messages.List, err = r1.initMessagesDeclarations(fd.GetMessageType(), f, sb); err != nil { - return nil, err - } - if f.L1.Extensions.List, err = r1.initExtensionDeclarations(fd.GetExtension(), f, sb); err != nil { - return nil, err - } - if f.L1.Services.List, err = r1.initServiceDeclarations(fd.GetService(), f, sb); err != nil { - return nil, err - } - - // Step 2: Resolve every dependency reference not handled by step 1. - r2 := &resolver{local: r1, remote: r, imports: imps, allowUnresolvable: o.AllowUnresolvable} - if err := r2.resolveMessageDependencies(f.L1.Messages.List, fd.GetMessageType()); err != nil { - return nil, err - } - if err := r2.resolveExtensionDependencies(f.L1.Extensions.List, fd.GetExtension()); err != nil { - return nil, err - } - if err := r2.resolveServiceDependencies(f.L1.Services.List, fd.GetService()); err != nil { - return nil, err - } - - // Step 3: Validate every enum, message, and extension declaration. - if err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil { - return nil, err - } - if err := validateMessageDeclarations(f, f.L1.Messages.List, fd.GetMessageType()); err != nil { - return nil, err - } - if err := validateExtensionDeclarations(f, f.L1.Extensions.List, fd.GetExtension()); err != nil { - return nil, err - } - - return f, nil -} - -type importSet map[string]bool - -func (is importSet) importPublic(imps protoreflect.FileImports) { - for i := 0; i < imps.Len(); i++ { - if imp := imps.Get(i); imp.IsPublic { - is[imp.Path()] = true - is.importPublic(imp.Imports()) - } - } -} - -// NewFiles creates a new [protoregistry.Files] from the provided -// FileDescriptorSet message. The descriptor set must include only -// valid files according to protobuf semantics. The returned descriptors -// are a deep copy of the input. -func (o FileOptions) NewFiles(fds *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) { - files := make(map[string]*descriptorpb.FileDescriptorProto) - for _, fd := range fds.File { - if _, ok := files[fd.GetName()]; ok { - return nil, errors.New("file appears multiple times: %q", fd.GetName()) - } - files[fd.GetName()] = fd - } - r := &protoregistry.Files{} - for _, fd := range files { - if err := o.addFileDeps(r, fd, files); err != nil { - return nil, err - } - } - return r, nil -} -func (o FileOptions) addFileDeps(r *protoregistry.Files, fd *descriptorpb.FileDescriptorProto, files map[string]*descriptorpb.FileDescriptorProto) error { - // Set the entry to nil while descending into a file's dependencies to detect cycles. - files[fd.GetName()] = nil - for _, dep := range fd.Dependency { - depfd, ok := files[dep] - if depfd == nil { - if ok { - return errors.New("import cycle in file: %q", dep) - } - continue - } - if err := o.addFileDeps(r, depfd, files); err != nil { - return err - } - } - // Delete the entry once dependencies are processed. - delete(files, fd.GetName()) - f, err := o.New(fd, r) - if err != nil { - return err - } - return r.RegisterFile(f) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go deleted file mode 100644 index ebcb4a8..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protodesc - -import ( - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - - "google.golang.org/protobuf/types/descriptorpb" -) - -type descsByName map[protoreflect.FullName]protoreflect.Descriptor - -func (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) { - es = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers - for i, ed := range eds { - e := &es[i] - e.L2 = new(filedesc.EnumL2) - if e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil { - return nil, err - } - if opts := ed.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.EnumOptions) - e.L2.Options = func() protoreflect.ProtoMessage { return opts } - } - e.L1.EditionFeatures = mergeEditionFeatures(parent, ed.GetOptions().GetFeatures()) - for _, s := range ed.GetReservedName() { - e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s)) - } - for _, rr := range ed.GetReservedRange() { - e.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{ - protoreflect.EnumNumber(rr.GetStart()), - protoreflect.EnumNumber(rr.GetEnd()), - }) - } - if e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil { - return nil, err - } - } - return es, nil -} - -func (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) { - vs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers - for i, vd := range vds { - v := &vs[i] - if v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil { - return nil, err - } - if opts := vd.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.EnumValueOptions) - v.L1.Options = func() protoreflect.ProtoMessage { return opts } - } - v.L1.Number = protoreflect.EnumNumber(vd.GetNumber()) - } - return vs, nil -} - -func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) { - ms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers - for i, md := range mds { - m := &ms[i] - m.L2 = new(filedesc.MessageL2) - if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil { - return nil, err - } - m.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures()) - if opts := md.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.MessageOptions) - m.L2.Options = func() protoreflect.ProtoMessage { return opts } - m.L1.IsMapEntry = opts.GetMapEntry() - m.L1.IsMessageSet = opts.GetMessageSetWireFormat() - } - for _, s := range md.GetReservedName() { - m.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s)) - } - for _, rr := range md.GetReservedRange() { - m.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{ - protoreflect.FieldNumber(rr.GetStart()), - protoreflect.FieldNumber(rr.GetEnd()), - }) - } - for _, xr := range md.GetExtensionRange() { - m.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{ - protoreflect.FieldNumber(xr.GetStart()), - protoreflect.FieldNumber(xr.GetEnd()), - }) - var optsFunc func() protoreflect.ProtoMessage - if opts := xr.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions) - optsFunc = func() protoreflect.ProtoMessage { return opts } - } - m.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc) - } - if m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil { - return nil, err - } - if m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil { - return nil, err - } - if m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil { - return nil, err - } - if m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil { - return nil, err - } - if m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil { - return nil, err - } - } - return ms, nil -} - -// canBePacked returns whether the field can use packed encoding: -// https://protobuf.dev/programming-guides/encoding/#packed -func canBePacked(fd *descriptorpb.FieldDescriptorProto) bool { - if fd.GetLabel() != descriptorpb.FieldDescriptorProto_LABEL_REPEATED { - return false // not a repeated field - } - - switch protoreflect.Kind(fd.GetType()) { - case protoreflect.MessageKind, protoreflect.GroupKind: - return false // not a scalar type field - - case protoreflect.StringKind, protoreflect.BytesKind: - // string and bytes can explicitly not be declared as packed, - // see https://protobuf.dev/programming-guides/encoding/#packed - return false - - default: - return true - } -} - -func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) { - fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers - for i, fd := range fds { - f := &fs[i] - if f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil { - return nil, err - } - f.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures()) - f.L1.IsProto3Optional = fd.GetProto3Optional() - if opts := fd.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.FieldOptions) - f.L1.Options = func() protoreflect.ProtoMessage { return opts } - f.L1.IsWeak = opts.GetWeak() - f.L1.IsLazy = opts.GetLazy() - if opts.Packed != nil { - f.L1.EditionFeatures.IsPacked = opts.GetPacked() - } - } - f.L1.Number = protoreflect.FieldNumber(fd.GetNumber()) - f.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel()) - if fd.Type != nil { - f.L1.Kind = protoreflect.Kind(fd.GetType()) - } - if fd.JsonName != nil { - f.L1.StringName.InitJSON(fd.GetJsonName()) - } - - if f.L1.EditionFeatures.IsLegacyRequired { - f.L1.Cardinality = protoreflect.Required - } - - if f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded { - f.L1.Kind = protoreflect.GroupKind - } - } - return fs, nil -} - -func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) { - os = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers - for i, od := range ods { - o := &os[i] - if o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil { - return nil, err - } - o.L1.EditionFeatures = mergeEditionFeatures(parent, od.GetOptions().GetFeatures()) - if opts := od.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.OneofOptions) - o.L1.Options = func() protoreflect.ProtoMessage { return opts } - } - } - return os, nil -} - -func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) { - xs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers - for i, xd := range xds { - x := &xs[i] - x.L2 = new(filedesc.ExtensionL2) - if x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil { - return nil, err - } - x.L1.EditionFeatures = mergeEditionFeatures(parent, xd.GetOptions().GetFeatures()) - if opts := xd.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.FieldOptions) - x.L2.Options = func() protoreflect.ProtoMessage { return opts } - if opts.Packed != nil { - x.L1.EditionFeatures.IsPacked = opts.GetPacked() - } - } - x.L1.Number = protoreflect.FieldNumber(xd.GetNumber()) - x.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel()) - if xd.Type != nil { - x.L1.Kind = protoreflect.Kind(xd.GetType()) - } - if xd.JsonName != nil { - x.L2.StringName.InitJSON(xd.GetJsonName()) - } - if x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded { - x.L1.Kind = protoreflect.GroupKind - } - } - return xs, nil -} - -func (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) { - ss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers - for i, sd := range sds { - s := &ss[i] - s.L2 = new(filedesc.ServiceL2) - if s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil { - return nil, err - } - if opts := sd.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.ServiceOptions) - s.L2.Options = func() protoreflect.ProtoMessage { return opts } - } - if s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil { - return nil, err - } - } - return ss, nil -} - -func (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) { - ms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers - for i, md := range mds { - m := &ms[i] - if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil { - return nil, err - } - if opts := md.GetOptions(); opts != nil { - opts = proto.Clone(opts).(*descriptorpb.MethodOptions) - m.L1.Options = func() protoreflect.ProtoMessage { return opts } - } - m.L1.IsStreamingClient = md.GetClientStreaming() - m.L1.IsStreamingServer = md.GetServerStreaming() - } - return ms, nil -} - -func (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) { - if !protoreflect.Name(name).IsValid() { - return filedesc.BaseL0{}, errors.New("descriptor %q has an invalid nested name: %q", parent.FullName(), name) - } - - // Derive the full name of the child. - // Note that enum values are a sibling to the enum parent in the namespace. - var fullName protoreflect.FullName - if _, ok := parent.(protoreflect.EnumDescriptor); ok { - fullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name)) - } else { - fullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name)) - } - if _, ok := r[fullName]; ok { - return filedesc.BaseL0{}, errors.New("descriptor %q already declared", fullName) - } - r[fullName] = child - - // TODO: Verify that the full name does not already exist in the resolver? - // This is not as critical since most usages of NewFile will register - // the created file back into the registry, which will perform this check. - - return filedesc.BaseL0{ - FullName: fullName, - ParentFile: parent.ParentFile().(*filedesc.File), - Parent: parent, - Index: idx, - }, nil -} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go deleted file mode 100644 index f3cebab..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protodesc - -import ( - "google.golang.org/protobuf/internal/encoding/defval" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/reflect/protoregistry" - - "google.golang.org/protobuf/types/descriptorpb" -) - -// resolver is a wrapper around a local registry of declarations within the file -// and the remote resolver. The remote resolver is restricted to only return -// descriptors that have been imported. -type resolver struct { - local descsByName - remote Resolver - imports importSet - - allowUnresolvable bool -} - -func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) { - for i, md := range mds { - m := &ms[i] - for j, fd := range md.GetField() { - f := &m.L2.Fields.List[j] - if f.L1.Cardinality == protoreflect.Required { - m.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number) - } - if fd.OneofIndex != nil { - k := int(fd.GetOneofIndex()) - if !(0 <= k && k < len(md.GetOneofDecl())) { - return errors.New("message field %q has an invalid oneof index: %d", f.FullName(), k) - } - o := &m.L2.Oneofs.List[k] - f.L1.ContainingOneof = o - o.L1.Fields.List = append(o.L1.Fields.List, f) - } - - if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil { - return errors.New("message field %q cannot resolve type: %v", f.FullName(), err) - } - if f.L1.Kind == protoreflect.GroupKind && (f.IsMap() || f.IsMapEntry()) { - // A map field might inherit delimited encoding from a file-wide default feature. - // But maps never actually use delimited encoding. (At least for now...) - f.L1.Kind = protoreflect.MessageKind - } - if fd.DefaultValue != nil { - v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable) - if err != nil { - return errors.New("message field %q has invalid default: %v", f.FullName(), err) - } - f.L1.Default = filedesc.DefaultValue(v, ev) - } - } - - if err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil { - return err - } - if err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil { - return err - } - } - return nil -} - -func (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) { - for i, xd := range xds { - x := &xs[i] - if x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee()), false); err != nil { - return errors.New("extension field %q cannot resolve extendee: %v", x.FullName(), err) - } - if x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName()), false); err != nil { - return errors.New("extension field %q cannot resolve type: %v", x.FullName(), err) - } - if xd.DefaultValue != nil { - v, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable) - if err != nil { - return errors.New("extension field %q has invalid default: %v", x.FullName(), err) - } - x.L2.Default = filedesc.DefaultValue(v, ev) - } - } - return nil -} - -func (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) { - for i, sd := range sds { - s := &ss[i] - for j, md := range sd.GetMethod() { - m := &s.L2.Methods.List[j] - m.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()), false) - if err != nil { - return errors.New("service method %q cannot resolve input: %v", m.FullName(), err) - } - m.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()), false) - if err != nil { - return errors.New("service method %q cannot resolve output: %v", m.FullName(), err) - } - } - } - return nil -} - -// findTarget finds an enum or message descriptor if k is an enum, message, -// group, or unknown. If unknown, and the name could be resolved, the kind -// returned kind is set based on the type of the resolved descriptor. -func (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) { - switch k { - case protoreflect.EnumKind: - ed, err := r.findEnumDescriptor(scope, ref, isWeak) - if err != nil { - return 0, nil, nil, err - } - return k, ed, nil, nil - case protoreflect.MessageKind, protoreflect.GroupKind: - md, err := r.findMessageDescriptor(scope, ref, isWeak) - if err != nil { - return 0, nil, nil, err - } - return k, nil, md, nil - case 0: - // Handle unspecified kinds (possible with parsers that operate - // on a per-file basis without knowledge of dependencies). - d, err := r.findDescriptor(scope, ref) - if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) { - return k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil - } else if err == protoregistry.NotFound { - return 0, nil, nil, errors.New("%q not found", ref.FullName()) - } else if err != nil { - return 0, nil, nil, err - } - switch d := d.(type) { - case protoreflect.EnumDescriptor: - return protoreflect.EnumKind, d, nil, nil - case protoreflect.MessageDescriptor: - return protoreflect.MessageKind, nil, d, nil - default: - return 0, nil, nil, errors.New("unknown kind") - } - default: - if ref != "" { - return 0, nil, nil, errors.New("target name cannot be specified for %v", k) - } - if !k.IsValid() { - return 0, nil, nil, errors.New("invalid kind: %d", k) - } - return k, nil, nil, nil - } -} - -// findDescriptor finds the descriptor by name, -// which may be a relative name within some scope. -// -// Suppose the scope was "fizz.buzz" and the reference was "Foo.Bar", -// then the following full names are searched: -// - fizz.buzz.Foo.Bar -// - fizz.Foo.Bar -// - Foo.Bar -func (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) { - if !ref.IsValid() { - return nil, errors.New("invalid name reference: %q", ref) - } - if ref.IsFull() { - scope, ref = "", ref[1:] - } - var foundButNotImported protoreflect.Descriptor - for { - // Derive the full name to search. - s := protoreflect.FullName(ref) - if scope != "" { - s = scope + "." + s - } - - // Check the current file for the descriptor. - if d, ok := r.local[s]; ok { - return d, nil - } - - // Check the remote registry for the descriptor. - d, err := r.remote.FindDescriptorByName(s) - if err == nil { - // Only allow descriptors covered by one of the imports. - if r.imports[d.ParentFile().Path()] { - return d, nil - } - foundButNotImported = d - } else if err != protoregistry.NotFound { - return nil, errors.Wrap(err, "%q", s) - } - - // Continue on at a higher level of scoping. - if scope == "" { - if d := foundButNotImported; d != nil { - return nil, errors.New("resolved %q, but %q is not imported", d.FullName(), d.ParentFile().Path()) - } - return nil, protoregistry.NotFound - } - scope = scope.Parent() - } -} - -func (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.EnumDescriptor, error) { - d, err := r.findDescriptor(scope, ref) - if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) { - return filedesc.PlaceholderEnum(ref.FullName()), nil - } else if err == protoregistry.NotFound { - return nil, errors.New("%q not found", ref.FullName()) - } else if err != nil { - return nil, err - } - ed, ok := d.(protoreflect.EnumDescriptor) - if !ok { - return nil, errors.New("resolved %q, but it is not an enum", d.FullName()) - } - return ed, nil -} - -func (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.MessageDescriptor, error) { - d, err := r.findDescriptor(scope, ref) - if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) { - return filedesc.PlaceholderMessage(ref.FullName()), nil - } else if err == protoregistry.NotFound { - return nil, errors.New("%q not found", ref.FullName()) - } else if err != nil { - return nil, err - } - md, ok := d.(protoreflect.MessageDescriptor) - if !ok { - return nil, errors.New("resolved %q, but it is not an message", d.FullName()) - } - return md, nil -} - -// partialName is the partial name. A leading dot means that the name is full, -// otherwise the name is relative to some current scope. -// See google.protobuf.FieldDescriptorProto.type_name. -type partialName string - -func (s partialName) IsFull() bool { - return len(s) > 0 && s[0] == '.' -} - -func (s partialName) IsValid() bool { - if s.IsFull() { - return protoreflect.FullName(s[1:]).IsValid() - } - return protoreflect.FullName(s).IsValid() -} - -const unknownPrefix = "*." - -// FullName converts the partial name to a full name on a best-effort basis. -// If relative, it creates an invalid full name, using a "*." prefix -// to indicate that the start of the full name is unknown. -func (s partialName) FullName() protoreflect.FullName { - if s.IsFull() { - return protoreflect.FullName(s[1:]) - } - return protoreflect.FullName(unknownPrefix + s) -} - -func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) { - var evs protoreflect.EnumValueDescriptors - if fd.Enum() != nil { - evs = fd.Enum().Values() - } - v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor) - if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() { - v = protoreflect.ValueOfEnum(0) - if evs.Len() > 0 { - v = protoreflect.ValueOfEnum(evs.Get(0).Number()) - } - ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s))) - } else if err != nil { - return v, ev, err - } - if !fd.HasPresence() { - return v, ev, errors.New("cannot be specified with implicit field presence") - } - if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated { - return v, ev, errors.New("cannot be specified on composite types") - } - return v, ev, nil -} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go deleted file mode 100644 index 6de31c2..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +++ /dev/null @@ -1,371 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protodesc - -import ( - "strings" - "unicode" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/internal/genid" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/reflect/protoreflect" - - "google.golang.org/protobuf/types/descriptorpb" -) - -func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error { - for i, ed := range eds { - e := &es[i] - if err := e.L2.ReservedNames.CheckValid(); err != nil { - return errors.New("enum %q reserved names has %v", e.FullName(), err) - } - if err := e.L2.ReservedRanges.CheckValid(); err != nil { - return errors.New("enum %q reserved ranges has %v", e.FullName(), err) - } - if len(ed.GetValue()) == 0 { - return errors.New("enum %q must contain at least one value declaration", e.FullName()) - } - allowAlias := ed.GetOptions().GetAllowAlias() - foundAlias := false - for i := 0; i < e.Values().Len(); i++ { - v1 := e.Values().Get(i) - if v2 := e.Values().ByNumber(v1.Number()); v1 != v2 { - foundAlias = true - if !allowAlias { - return errors.New("enum %q has conflicting non-aliased values on number %d: %q with %q", e.FullName(), v1.Number(), v1.Name(), v2.Name()) - } - } - } - if allowAlias && !foundAlias { - return errors.New("enum %q allows aliases, but none were found", e.FullName()) - } - if !e.IsClosed() { - if v := e.Values().Get(0); v.Number() != 0 { - return errors.New("enum %q using open semantics must have zero number for the first value", v.FullName()) - } - // Verify that value names in open enums do not conflict if the - // case-insensitive prefix is removed. - // See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055 - names := map[string]protoreflect.EnumValueDescriptor{} - prefix := strings.Replace(strings.ToLower(string(e.Name())), "_", "", -1) - for i := 0; i < e.Values().Len(); i++ { - v1 := e.Values().Get(i) - s := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix)) - if v2, ok := names[s]; ok && v1.Number() != v2.Number() { - return errors.New("enum %q using open semantics has conflict: %q with %q", e.FullName(), v1.Name(), v2.Name()) - } - names[s] = v1 - } - } - - for j, vd := range ed.GetValue() { - v := &e.L2.Values.List[j] - if vd.Number == nil { - return errors.New("enum value %q must have a specified number", v.FullName()) - } - if e.L2.ReservedNames.Has(v.Name()) { - return errors.New("enum value %q must not use reserved name", v.FullName()) - } - if e.L2.ReservedRanges.Has(v.Number()) { - return errors.New("enum value %q must not use reserved number %d", v.FullName(), v.Number()) - } - } - } - return nil -} - -func validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error { - // There are a few limited exceptions only for proto3 - isProto3 := file.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) - for i, md := range mds { - m := &ms[i] - - // Handle the message descriptor itself. - isMessageSet := md.GetOptions().GetMessageSetWireFormat() - if err := m.L2.ReservedNames.CheckValid(); err != nil { - return errors.New("message %q reserved names has %v", m.FullName(), err) - } - if err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil { - return errors.New("message %q reserved ranges has %v", m.FullName(), err) - } - if err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil { - return errors.New("message %q extension ranges has %v", m.FullName(), err) - } - if err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil { - return errors.New("message %q reserved and extension ranges has %v", m.FullName(), err) - } - for i := 0; i < m.Fields().Len(); i++ { - f1 := m.Fields().Get(i) - if f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 { - return errors.New("message %q has conflicting fields: %q with %q", m.FullName(), f1.Name(), f2.Name()) - } - } - if isMessageSet && !flags.ProtoLegacy { - return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName()) - } - if isMessageSet && (isProto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) { - return errors.New("message %q is an invalid proto1 MessageSet", m.FullName()) - } - if isProto3 { - if m.ExtensionRanges().Len() > 0 { - return errors.New("message %q using proto3 semantics cannot have extension ranges", m.FullName()) - } - } - - for j, fd := range md.GetField() { - f := &m.L2.Fields.List[j] - if m.L2.ReservedNames.Has(f.Name()) { - return errors.New("message field %q must not use reserved name", f.FullName()) - } - if !f.Number().IsValid() { - return errors.New("message field %q has an invalid number: %d", f.FullName(), f.Number()) - } - if !f.Cardinality().IsValid() { - return errors.New("message field %q has an invalid cardinality: %d", f.FullName(), f.Cardinality()) - } - if m.L2.ReservedRanges.Has(f.Number()) { - return errors.New("message field %q must not use reserved number %d", f.FullName(), f.Number()) - } - if m.L2.ExtensionRanges.Has(f.Number()) { - return errors.New("message field %q with number %d in extension range", f.FullName(), f.Number()) - } - if fd.Extendee != nil { - return errors.New("message field %q may not have extendee: %q", f.FullName(), fd.GetExtendee()) - } - if f.L1.IsProto3Optional { - if !isProto3 { - return errors.New("message field %q under proto3 optional semantics must be specified in the proto3 syntax", f.FullName()) - } - if f.Cardinality() != protoreflect.Optional { - return errors.New("message field %q under proto3 optional semantics must have optional cardinality", f.FullName()) - } - if f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 { - return errors.New("message field %q under proto3 optional semantics must be within a single element oneof", f.FullName()) - } - } - if f.IsWeak() && !flags.ProtoLegacy { - return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName()) - } - if f.IsWeak() && (!f.HasPresence() || !isOptionalMessage(f) || f.ContainingOneof() != nil) { - return errors.New("message field %q may only be weak for an optional message", f.FullName()) - } - if f.IsPacked() && !isPackable(f) { - return errors.New("message field %q is not packable", f.FullName()) - } - if err := checkValidGroup(file, f); err != nil { - return errors.New("message field %q is an invalid group: %v", f.FullName(), err) - } - if err := checkValidMap(f); err != nil { - return errors.New("message field %q is an invalid map: %v", f.FullName(), err) - } - if isProto3 { - if f.Cardinality() == protoreflect.Required { - return errors.New("message field %q using proto3 semantics cannot be required", f.FullName()) - } - if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() { - return errors.New("message field %q using proto3 semantics may only depend on open enums", f.FullName()) - } - } - if f.Cardinality() == protoreflect.Optional && !f.HasPresence() && f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() { - return errors.New("message field %q with implicit presence may only use open enums", f.FullName()) - } - } - seenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs - for j := range md.GetOneofDecl() { - o := &m.L2.Oneofs.List[j] - if o.Fields().Len() == 0 { - return errors.New("message oneof %q must contain at least one field declaration", o.FullName()) - } - if n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) { - return errors.New("message oneof %q must have consecutively declared fields", o.FullName()) - } - - if o.IsSynthetic() { - seenSynthetic = true - continue - } - if !o.IsSynthetic() && seenSynthetic { - return errors.New("message oneof %q must be declared before synthetic oneofs", o.FullName()) - } - - for i := 0; i < o.Fields().Len(); i++ { - f := o.Fields().Get(i) - if f.Cardinality() != protoreflect.Optional { - return errors.New("message field %q belongs in a oneof and must be optional", f.FullName()) - } - if f.IsWeak() { - return errors.New("message field %q belongs in a oneof and must not be a weak reference", f.FullName()) - } - } - } - - if err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil { - return err - } - if err := validateMessageDeclarations(file, m.L1.Messages.List, md.GetNestedType()); err != nil { - return err - } - if err := validateExtensionDeclarations(file, m.L1.Extensions.List, md.GetExtension()); err != nil { - return err - } - } - return nil -} - -func validateExtensionDeclarations(f *filedesc.File, xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error { - for i, xd := range xds { - x := &xs[i] - // NOTE: Avoid using the IsValid method since extensions to MessageSet - // may have a field number higher than normal. This check only verifies - // that the number is not negative or reserved. We check again later - // if we know that the extendee is definitely not a MessageSet. - if n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) { - return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number()) - } - if !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required { - return errors.New("extension field %q has an invalid cardinality: %d", x.FullName(), x.Cardinality()) - } - if xd.JsonName != nil { - // A bug in older versions of protoc would always populate the - // "json_name" option for extensions when it is meaningless. - // When it did so, it would always use the camel-cased field name. - if xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) { - return errors.New("extension field %q may not have an explicitly set JSON name: %q", x.FullName(), xd.GetJsonName()) - } - } - if xd.OneofIndex != nil { - return errors.New("extension field %q may not be part of a oneof", x.FullName()) - } - if md := x.ContainingMessage(); !md.IsPlaceholder() { - if !md.ExtensionRanges().Has(x.Number()) { - return errors.New("extension field %q extends %q with non-extension field number: %d", x.FullName(), md.FullName(), x.Number()) - } - isMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat() - if isMessageSet && !isOptionalMessage(x) { - return errors.New("extension field %q extends MessageSet and must be an optional message", x.FullName()) - } - if !isMessageSet && !x.Number().IsValid() { - return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number()) - } - } - if xd.GetOptions().GetWeak() { - return errors.New("extension field %q cannot be a weak reference", x.FullName()) - } - if x.IsPacked() && !isPackable(x) { - return errors.New("extension field %q is not packable", x.FullName()) - } - if err := checkValidGroup(f, x); err != nil { - return errors.New("extension field %q is an invalid group: %v", x.FullName(), err) - } - if md := x.Message(); md != nil && md.IsMapEntry() { - return errors.New("extension field %q cannot be a map entry", x.FullName()) - } - if f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) { - switch x.ContainingMessage().FullName() { - case (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName(): - case (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName(): - default: - return errors.New("extension field %q cannot be declared in proto3 unless extended descriptor options", x.FullName()) - } - } - } - return nil -} - -// isOptionalMessage reports whether this is an optional message. -// If the kind is unknown, it is assumed to be a message. -func isOptionalMessage(fd protoreflect.FieldDescriptor) bool { - return (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional -} - -// isPackable checks whether the pack option can be specified. -func isPackable(fd protoreflect.FieldDescriptor) bool { - switch fd.Kind() { - case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: - return false - } - return fd.IsList() -} - -// checkValidGroup reports whether fd is a valid group according to the same -// rules that protoc imposes. -func checkValidGroup(f *filedesc.File, fd protoreflect.FieldDescriptor) error { - md := fd.Message() - switch { - case fd.Kind() != protoreflect.GroupKind: - return nil - case f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3): - return errors.New("invalid under proto3 semantics") - case md == nil || md.IsPlaceholder(): - return errors.New("message must be resolvable") - } - if f.L1.Edition < fromEditionProto(descriptorpb.Edition_EDITION_2023) { - switch { - case fd.FullName().Parent() != md.FullName().Parent(): - return errors.New("message and field must be declared in the same scope") - case !unicode.IsUpper(rune(md.Name()[0])): - return errors.New("message name must start with an uppercase") - case fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))): - return errors.New("field name must be lowercased form of the message name") - } - } - return nil -} - -// checkValidMap checks whether the field is a valid map according to the same -// rules that protoc imposes. -// See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115 -func checkValidMap(fd protoreflect.FieldDescriptor) error { - md := fd.Message() - switch { - case md == nil || !md.IsMapEntry(): - return nil - case fd.FullName().Parent() != md.FullName().Parent(): - return errors.New("message and field must be declared in the same scope") - case md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))): - return errors.New("incorrect implicit map entry name") - case fd.Cardinality() != protoreflect.Repeated: - return errors.New("field must be repeated") - case md.Fields().Len() != 2: - return errors.New("message must have exactly two fields") - case md.ExtensionRanges().Len() > 0: - return errors.New("message must not have any extension ranges") - case md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0: - return errors.New("message must not have any nested declarations") - } - kf := md.Fields().Get(0) - vf := md.Fields().Get(1) - switch { - case kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault(): - return errors.New("invalid key field") - case vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault(): - return errors.New("invalid value field") - } - switch kf.Kind() { - case protoreflect.BoolKind: // bool - case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32 - case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64 - case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32 - case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64 - case protoreflect.StringKind: // string - default: - return errors.New("invalid key kind: %v", kf.Kind()) - } - if e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 { - return errors.New("map enum value must have zero number for the first value") - } - return nil -} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go deleted file mode 100644 index 002e004..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protodesc - -import ( - "fmt" - "os" - "sync" - - "google.golang.org/protobuf/internal/editiondefaults" - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - "google.golang.org/protobuf/types/descriptorpb" - "google.golang.org/protobuf/types/gofeaturespb" -) - -var defaults = &descriptorpb.FeatureSetDefaults{} -var defaultsCacheMu sync.Mutex -var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet) - -func init() { - err := proto.Unmarshal(editiondefaults.Defaults, defaults) - if err != nil { - fmt.Fprintf(os.Stderr, "unmarshal editions defaults: %v\n", err) - os.Exit(1) - } -} - -func fromEditionProto(epb descriptorpb.Edition) filedesc.Edition { - return filedesc.Edition(epb) -} - -func toEditionProto(ed filedesc.Edition) descriptorpb.Edition { - switch ed { - case filedesc.EditionUnknown: - return descriptorpb.Edition_EDITION_UNKNOWN - case filedesc.EditionProto2: - return descriptorpb.Edition_EDITION_PROTO2 - case filedesc.EditionProto3: - return descriptorpb.Edition_EDITION_PROTO3 - case filedesc.Edition2023: - return descriptorpb.Edition_EDITION_2023 - default: - panic(fmt.Sprintf("unknown value for edition: %v", ed)) - } -} - -func getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet { - defaultsCacheMu.Lock() - defer defaultsCacheMu.Unlock() - if def, ok := defaultsCache[ed]; ok { - return def - } - edpb := toEditionProto(ed) - if defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb { - // This should never happen protodesc.(FileOptions).New would fail when - // initializing the file descriptor. - // This most likely means the embedded defaults were not updated. - fmt.Fprintf(os.Stderr, "internal error: unsupported edition %v (did you forget to update the embedded defaults (i.e. the bootstrap descriptor proto)?)\n", edpb) - os.Exit(1) - } - fsed := defaults.GetDefaults()[0] - // Using a linear search for now. - // Editions are guaranteed to be sorted and thus we could use a binary search. - // Given that there are only a handful of editions (with one more per year) - // there is not much reason to use a binary search. - for _, def := range defaults.GetDefaults() { - if def.GetEdition() <= edpb { - fsed = def - } else { - break - } - } - fs := proto.Clone(fsed.GetFixedFeatures()).(*descriptorpb.FeatureSet) - proto.Merge(fs, fsed.GetOverridableFeatures()) - defaultsCache[ed] = fs - return fs -} - -// mergeEditionFeatures merges the parent and child feature sets. This function -// should be used when initializing Go descriptors from descriptor protos which -// is why the parent is a filedesc.EditionsFeatures (Go representation) while -// the child is a descriptorproto.FeatureSet (protoc representation). -// Any feature set by the child overwrites what is set by the parent. -func mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorpb.FeatureSet) filedesc.EditionFeatures { - var parentFS filedesc.EditionFeatures - switch p := parentDesc.(type) { - case *filedesc.File: - parentFS = p.L1.EditionFeatures - case *filedesc.Message: - parentFS = p.L1.EditionFeatures - default: - panic(fmt.Sprintf("unknown parent type %T", parentDesc)) - } - if child == nil { - return parentFS - } - if fp := child.FieldPresence; fp != nil { - parentFS.IsFieldPresence = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED || - *fp == descriptorpb.FeatureSet_EXPLICIT - parentFS.IsLegacyRequired = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED - } - if et := child.EnumType; et != nil { - parentFS.IsOpenEnum = *et == descriptorpb.FeatureSet_OPEN - } - - if rfe := child.RepeatedFieldEncoding; rfe != nil { - parentFS.IsPacked = *rfe == descriptorpb.FeatureSet_PACKED - } - - if utf8val := child.Utf8Validation; utf8val != nil { - parentFS.IsUTF8Validated = *utf8val == descriptorpb.FeatureSet_VERIFY - } - - if me := child.MessageEncoding; me != nil { - parentFS.IsDelimitedEncoded = *me == descriptorpb.FeatureSet_DELIMITED - } - - if jf := child.JsonFormat; jf != nil { - parentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW - } - - if goFeatures, ok := proto.GetExtension(child, gofeaturespb.E_Go).(*gofeaturespb.GoFeatures); ok && goFeatures != nil { - if luje := goFeatures.LegacyUnmarshalJsonEnum; luje != nil { - parentFS.GenerateLegacyUnmarshalJSON = *luje - } - } - - return parentFS -} - -// initFileDescFromFeatureSet initializes editions related fields in fd based -// on fs. If fs is nil it is assumed to be an empty featureset and all fields -// will be initialized with the appropriate default. fd.L1.Edition must be set -// before calling this function. -func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) { - dfs := getFeatureSetFor(fd.L1.Edition) - // initialize the featureset with the defaults - fd.L1.EditionFeatures = mergeEditionFeatures(fd, dfs) - // overwrite any options explicitly specified - fd.L1.EditionFeatures = mergeEditionFeatures(fd, fs) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go deleted file mode 100644 index a5de8d4..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +++ /dev/null @@ -1,274 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protodesc - -import ( - "fmt" - "strings" - - "google.golang.org/protobuf/internal/encoding/defval" - "google.golang.org/protobuf/internal/strs" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/reflect/protoreflect" - - "google.golang.org/protobuf/types/descriptorpb" -) - -// ToFileDescriptorProto copies a [protoreflect.FileDescriptor] into a -// google.protobuf.FileDescriptorProto message. -func ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileDescriptorProto { - p := &descriptorpb.FileDescriptorProto{ - Name: proto.String(file.Path()), - Options: proto.Clone(file.Options()).(*descriptorpb.FileOptions), - } - if file.Package() != "" { - p.Package = proto.String(string(file.Package())) - } - for i, imports := 0, file.Imports(); i < imports.Len(); i++ { - imp := imports.Get(i) - p.Dependency = append(p.Dependency, imp.Path()) - if imp.IsPublic { - p.PublicDependency = append(p.PublicDependency, int32(i)) - } - if imp.IsWeak { - p.WeakDependency = append(p.WeakDependency, int32(i)) - } - } - for i, locs := 0, file.SourceLocations(); i < locs.Len(); i++ { - loc := locs.Get(i) - l := &descriptorpb.SourceCodeInfo_Location{} - l.Path = append(l.Path, loc.Path...) - if loc.StartLine == loc.EndLine { - l.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndColumn)} - } else { - l.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndLine), int32(loc.EndColumn)} - } - l.LeadingDetachedComments = append([]string(nil), loc.LeadingDetachedComments...) - if loc.LeadingComments != "" { - l.LeadingComments = proto.String(loc.LeadingComments) - } - if loc.TrailingComments != "" { - l.TrailingComments = proto.String(loc.TrailingComments) - } - if p.SourceCodeInfo == nil { - p.SourceCodeInfo = &descriptorpb.SourceCodeInfo{} - } - p.SourceCodeInfo.Location = append(p.SourceCodeInfo.Location, l) - - } - for i, messages := 0, file.Messages(); i < messages.Len(); i++ { - p.MessageType = append(p.MessageType, ToDescriptorProto(messages.Get(i))) - } - for i, enums := 0, file.Enums(); i < enums.Len(); i++ { - p.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i))) - } - for i, services := 0, file.Services(); i < services.Len(); i++ { - p.Service = append(p.Service, ToServiceDescriptorProto(services.Get(i))) - } - for i, exts := 0, file.Extensions(); i < exts.Len(); i++ { - p.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i))) - } - if syntax := file.Syntax(); syntax != protoreflect.Proto2 && syntax.IsValid() { - p.Syntax = proto.String(file.Syntax().String()) - } - if file.Syntax() == protoreflect.Editions { - desc := file - if fileImportDesc, ok := file.(protoreflect.FileImport); ok { - desc = fileImportDesc.FileDescriptor - } - - if editionsInterface, ok := desc.(interface{ Edition() int32 }); ok { - p.Edition = descriptorpb.Edition(editionsInterface.Edition()).Enum() - } - } - return p -} - -// ToDescriptorProto copies a [protoreflect.MessageDescriptor] into a -// google.protobuf.DescriptorProto message. -func ToDescriptorProto(message protoreflect.MessageDescriptor) *descriptorpb.DescriptorProto { - p := &descriptorpb.DescriptorProto{ - Name: proto.String(string(message.Name())), - Options: proto.Clone(message.Options()).(*descriptorpb.MessageOptions), - } - for i, fields := 0, message.Fields(); i < fields.Len(); i++ { - p.Field = append(p.Field, ToFieldDescriptorProto(fields.Get(i))) - } - for i, exts := 0, message.Extensions(); i < exts.Len(); i++ { - p.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i))) - } - for i, messages := 0, message.Messages(); i < messages.Len(); i++ { - p.NestedType = append(p.NestedType, ToDescriptorProto(messages.Get(i))) - } - for i, enums := 0, message.Enums(); i < enums.Len(); i++ { - p.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i))) - } - for i, xranges := 0, message.ExtensionRanges(); i < xranges.Len(); i++ { - xrange := xranges.Get(i) - p.ExtensionRange = append(p.ExtensionRange, &descriptorpb.DescriptorProto_ExtensionRange{ - Start: proto.Int32(int32(xrange[0])), - End: proto.Int32(int32(xrange[1])), - Options: proto.Clone(message.ExtensionRangeOptions(i)).(*descriptorpb.ExtensionRangeOptions), - }) - } - for i, oneofs := 0, message.Oneofs(); i < oneofs.Len(); i++ { - p.OneofDecl = append(p.OneofDecl, ToOneofDescriptorProto(oneofs.Get(i))) - } - for i, ranges := 0, message.ReservedRanges(); i < ranges.Len(); i++ { - rrange := ranges.Get(i) - p.ReservedRange = append(p.ReservedRange, &descriptorpb.DescriptorProto_ReservedRange{ - Start: proto.Int32(int32(rrange[0])), - End: proto.Int32(int32(rrange[1])), - }) - } - for i, names := 0, message.ReservedNames(); i < names.Len(); i++ { - p.ReservedName = append(p.ReservedName, string(names.Get(i))) - } - return p -} - -// ToFieldDescriptorProto copies a [protoreflect.FieldDescriptor] into a -// google.protobuf.FieldDescriptorProto message. -func ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.FieldDescriptorProto { - p := &descriptorpb.FieldDescriptorProto{ - Name: proto.String(string(field.Name())), - Number: proto.Int32(int32(field.Number())), - Label: descriptorpb.FieldDescriptorProto_Label(field.Cardinality()).Enum(), - Options: proto.Clone(field.Options()).(*descriptorpb.FieldOptions), - } - if field.IsExtension() { - p.Extendee = fullNameOf(field.ContainingMessage()) - } - if field.Kind().IsValid() { - p.Type = descriptorpb.FieldDescriptorProto_Type(field.Kind()).Enum() - } - if field.Enum() != nil { - p.TypeName = fullNameOf(field.Enum()) - } - if field.Message() != nil { - p.TypeName = fullNameOf(field.Message()) - } - if field.HasJSONName() { - // A bug in older versions of protoc would always populate the - // "json_name" option for extensions when it is meaningless. - // When it did so, it would always use the camel-cased field name. - if field.IsExtension() { - p.JsonName = proto.String(strs.JSONCamelCase(string(field.Name()))) - } else { - p.JsonName = proto.String(field.JSONName()) - } - } - if field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() { - p.Proto3Optional = proto.Bool(true) - } - if field.Syntax() == protoreflect.Editions { - // Editions have no group keyword, this type is only set so that downstream users continue - // treating this as delimited encoding. - if p.GetType() == descriptorpb.FieldDescriptorProto_TYPE_GROUP { - p.Type = descriptorpb.FieldDescriptorProto_TYPE_MESSAGE.Enum() - } - // Editions have no required keyword, this label is only set so that downstream users continue - // treating it as required. - if p.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REQUIRED { - p.Label = descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum() - } - } - if field.HasDefault() { - def, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor) - if err != nil && field.DefaultEnumValue() != nil { - def = string(field.DefaultEnumValue().Name()) // occurs for unresolved enum values - } else if err != nil { - panic(fmt.Sprintf("%v: %v", field.FullName(), err)) - } - p.DefaultValue = proto.String(def) - } - if oneof := field.ContainingOneof(); oneof != nil { - p.OneofIndex = proto.Int32(int32(oneof.Index())) - } - return p -} - -// ToOneofDescriptorProto copies a [protoreflect.OneofDescriptor] into a -// google.protobuf.OneofDescriptorProto message. -func ToOneofDescriptorProto(oneof protoreflect.OneofDescriptor) *descriptorpb.OneofDescriptorProto { - return &descriptorpb.OneofDescriptorProto{ - Name: proto.String(string(oneof.Name())), - Options: proto.Clone(oneof.Options()).(*descriptorpb.OneofOptions), - } -} - -// ToEnumDescriptorProto copies a [protoreflect.EnumDescriptor] into a -// google.protobuf.EnumDescriptorProto message. -func ToEnumDescriptorProto(enum protoreflect.EnumDescriptor) *descriptorpb.EnumDescriptorProto { - p := &descriptorpb.EnumDescriptorProto{ - Name: proto.String(string(enum.Name())), - Options: proto.Clone(enum.Options()).(*descriptorpb.EnumOptions), - } - for i, values := 0, enum.Values(); i < values.Len(); i++ { - p.Value = append(p.Value, ToEnumValueDescriptorProto(values.Get(i))) - } - for i, ranges := 0, enum.ReservedRanges(); i < ranges.Len(); i++ { - rrange := ranges.Get(i) - p.ReservedRange = append(p.ReservedRange, &descriptorpb.EnumDescriptorProto_EnumReservedRange{ - Start: proto.Int32(int32(rrange[0])), - End: proto.Int32(int32(rrange[1])), - }) - } - for i, names := 0, enum.ReservedNames(); i < names.Len(); i++ { - p.ReservedName = append(p.ReservedName, string(names.Get(i))) - } - return p -} - -// ToEnumValueDescriptorProto copies a [protoreflect.EnumValueDescriptor] into a -// google.protobuf.EnumValueDescriptorProto message. -func ToEnumValueDescriptorProto(value protoreflect.EnumValueDescriptor) *descriptorpb.EnumValueDescriptorProto { - return &descriptorpb.EnumValueDescriptorProto{ - Name: proto.String(string(value.Name())), - Number: proto.Int32(int32(value.Number())), - Options: proto.Clone(value.Options()).(*descriptorpb.EnumValueOptions), - } -} - -// ToServiceDescriptorProto copies a [protoreflect.ServiceDescriptor] into a -// google.protobuf.ServiceDescriptorProto message. -func ToServiceDescriptorProto(service protoreflect.ServiceDescriptor) *descriptorpb.ServiceDescriptorProto { - p := &descriptorpb.ServiceDescriptorProto{ - Name: proto.String(string(service.Name())), - Options: proto.Clone(service.Options()).(*descriptorpb.ServiceOptions), - } - for i, methods := 0, service.Methods(); i < methods.Len(); i++ { - p.Method = append(p.Method, ToMethodDescriptorProto(methods.Get(i))) - } - return p -} - -// ToMethodDescriptorProto copies a [protoreflect.MethodDescriptor] into a -// google.protobuf.MethodDescriptorProto message. -func ToMethodDescriptorProto(method protoreflect.MethodDescriptor) *descriptorpb.MethodDescriptorProto { - p := &descriptorpb.MethodDescriptorProto{ - Name: proto.String(string(method.Name())), - InputType: fullNameOf(method.Input()), - OutputType: fullNameOf(method.Output()), - Options: proto.Clone(method.Options()).(*descriptorpb.MethodOptions), - } - if method.IsStreamingClient() { - p.ClientStreaming = proto.Bool(true) - } - if method.IsStreamingServer() { - p.ServerStreaming = proto.Bool(true) - } - return p -} - -func fullNameOf(d protoreflect.Descriptor) *string { - if d == nil { - return nil - } - if strings.HasPrefix(string(d.FullName()), unknownPrefix) { - return proto.String(string(d.FullName()[len(unknownPrefix):])) - } - return proto.String("." + string(d.FullName())) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go deleted file mode 100644 index 742cb51..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -import ( - "google.golang.org/protobuf/internal/pragma" -) - -// The following types are used by the fast-path Message.ProtoMethods method. -// -// To avoid polluting the public protoreflect API with types used only by -// low-level implementations, the canonical definitions of these types are -// in the runtime/protoiface package. The definitions here and in protoiface -// must be kept in sync. -type ( - methods = struct { - pragma.NoUnkeyedLiterals - Flags supportFlags - Size func(sizeInput) sizeOutput - Marshal func(marshalInput) (marshalOutput, error) - Unmarshal func(unmarshalInput) (unmarshalOutput, error) - Merge func(mergeInput) mergeOutput - CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error) - Equal func(equalInput) equalOutput - } - supportFlags = uint64 - sizeInput = struct { - pragma.NoUnkeyedLiterals - Message Message - Flags uint8 - } - sizeOutput = struct { - pragma.NoUnkeyedLiterals - Size int - } - marshalInput = struct { - pragma.NoUnkeyedLiterals - Message Message - Buf []byte - Flags uint8 - } - marshalOutput = struct { - pragma.NoUnkeyedLiterals - Buf []byte - } - unmarshalInput = struct { - pragma.NoUnkeyedLiterals - Message Message - Buf []byte - Flags uint8 - Resolver interface { - FindExtensionByName(field FullName) (ExtensionType, error) - FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error) - } - Depth int - } - unmarshalOutput = struct { - pragma.NoUnkeyedLiterals - Flags uint8 - } - mergeInput = struct { - pragma.NoUnkeyedLiterals - Source Message - Destination Message - } - mergeOutput = struct { - pragma.NoUnkeyedLiterals - Flags uint8 - } - checkInitializedInput = struct { - pragma.NoUnkeyedLiterals - Message Message - } - checkInitializedOutput = struct { - pragma.NoUnkeyedLiterals - } - equalInput = struct { - pragma.NoUnkeyedLiterals - MessageA Message - MessageB Message - } - equalOutput = struct { - pragma.NoUnkeyedLiterals - Equal bool - } -) diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go deleted file mode 100644 index c85bfaa..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +++ /dev/null @@ -1,513 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protoreflect provides interfaces to dynamically manipulate messages. -// -// This package includes type descriptors which describe the structure of types -// defined in proto source files and value interfaces which provide the -// ability to examine and manipulate the contents of messages. -// -// # Protocol Buffer Descriptors -// -// Protobuf descriptors (e.g., [EnumDescriptor] or [MessageDescriptor]) -// are immutable objects that represent protobuf type information. -// They are wrappers around the messages declared in descriptor.proto. -// Protobuf descriptors alone lack any information regarding Go types. -// -// Enums and messages generated by this module implement [Enum] and [ProtoMessage], -// where the Descriptor and ProtoReflect.Descriptor accessors respectively -// return the protobuf descriptor for the values. -// -// The protobuf descriptor interfaces are not meant to be implemented by -// user code since they might need to be extended in the future to support -// additions to the protobuf language. -// The [google.golang.org/protobuf/reflect/protodesc] package converts between -// google.protobuf.DescriptorProto messages and protobuf descriptors. -// -// # Go Type Descriptors -// -// A type descriptor (e.g., [EnumType] or [MessageType]) is a constructor for -// a concrete Go type that represents the associated protobuf descriptor. -// There is commonly a one-to-one relationship between protobuf descriptors and -// Go type descriptors, but it can potentially be a one-to-many relationship. -// -// Enums and messages generated by this module implement [Enum] and [ProtoMessage], -// where the Type and ProtoReflect.Type accessors respectively -// return the protobuf descriptor for the values. -// -// The [google.golang.org/protobuf/types/dynamicpb] package can be used to -// create Go type descriptors from protobuf descriptors. -// -// # Value Interfaces -// -// The [Enum] and [Message] interfaces provide a reflective view over an -// enum or message instance. For enums, it provides the ability to retrieve -// the enum value number for any concrete enum type. For messages, it provides -// the ability to access or manipulate fields of the message. -// -// To convert a [google.golang.org/protobuf/proto.Message] to a [protoreflect.Message], use the -// former's ProtoReflect method. Since the ProtoReflect method is new to the -// v2 message interface, it may not be present on older message implementations. -// The [github.com/golang/protobuf/proto.MessageReflect] function can be used -// to obtain a reflective view on older messages. -// -// # Relationships -// -// The following diagrams demonstrate the relationships between -// various types declared in this package. -// -// ┌───────────────────────────────────┐ -// V │ -// ┌────────────── New(n) ─────────────┐ │ -// │ │ │ -// │ ┌──── Descriptor() ──┐ │ ┌── Number() ──┐ │ -// │ │ V V │ V │ -// ╔════════════╗ ╔════════════════╗ ╔════════╗ ╔════════════╗ -// ║ EnumType ║ ║ EnumDescriptor ║ ║ Enum ║ ║ EnumNumber ║ -// ╚════════════╝ ╚════════════════╝ ╚════════╝ ╚════════════╝ -// Λ Λ │ │ -// │ └─── Descriptor() ──┘ │ -// │ │ -// └────────────────── Type() ───────┘ -// -// • An [EnumType] describes a concrete Go enum type. -// It has an EnumDescriptor and can construct an Enum instance. -// -// • An [EnumDescriptor] describes an abstract protobuf enum type. -// -// • An [Enum] is a concrete enum instance. Generated enums implement Enum. -// -// ┌──────────────── New() ─────────────────┐ -// │ │ -// │ ┌─── Descriptor() ─────┐ │ ┌── Interface() ───┐ -// │ │ V V │ V -// ╔═════════════╗ ╔═══════════════════╗ ╔═════════╗ ╔══════════════╗ -// ║ MessageType ║ ║ MessageDescriptor ║ ║ Message ║ ║ ProtoMessage ║ -// ╚═════════════╝ ╚═══════════════════╝ ╚═════════╝ ╚══════════════╝ -// Λ Λ │ │ Λ │ -// │ └──── Descriptor() ────┘ │ └─ ProtoReflect() ─┘ -// │ │ -// └─────────────────── Type() ─────────┘ -// -// • A [MessageType] describes a concrete Go message type. -// It has a [MessageDescriptor] and can construct a [Message] instance. -// Just as how Go's [reflect.Type] is a reflective description of a Go type, -// a [MessageType] is a reflective description of a Go type for a protobuf message. -// -// • A [MessageDescriptor] describes an abstract protobuf message type. -// It has no understanding of Go types. In order to construct a [MessageType] -// from just a [MessageDescriptor], you can consider looking up the message type -// in the global registry using the FindMessageByName method on -// [google.golang.org/protobuf/reflect/protoregistry.GlobalTypes] -// or constructing a dynamic [MessageType] using -// [google.golang.org/protobuf/types/dynamicpb.NewMessageType]. -// -// • A [Message] is a reflective view over a concrete message instance. -// Generated messages implement [ProtoMessage], which can convert to a [Message]. -// Just as how Go's [reflect.Value] is a reflective view over a Go value, -// a [Message] is a reflective view over a concrete protobuf message instance. -// Using Go reflection as an analogy, the [ProtoMessage.ProtoReflect] method is similar to -// calling [reflect.ValueOf], and the [Message.Interface] method is similar to -// calling [reflect.Value.Interface]. -// -// ┌── TypeDescriptor() ──┐ ┌───── Descriptor() ─────┐ -// │ V │ V -// ╔═══════════════╗ ╔═════════════════════════╗ ╔═════════════════════╗ -// ║ ExtensionType ║ ║ ExtensionTypeDescriptor ║ ║ ExtensionDescriptor ║ -// ╚═══════════════╝ ╚═════════════════════════╝ ╚═════════════════════╝ -// Λ │ │ Λ │ Λ -// └─────── Type() ───────┘ │ └─── may implement ────┘ │ -// │ │ -// └────── implements ────────┘ -// -// • An [ExtensionType] describes a concrete Go implementation of an extension. -// It has an [ExtensionTypeDescriptor] and can convert to/from -// an abstract [Value] and a Go value. -// -// • An [ExtensionTypeDescriptor] is an [ExtensionDescriptor] -// which also has an [ExtensionType]. -// -// • An [ExtensionDescriptor] describes an abstract protobuf extension field and -// may not always be an [ExtensionTypeDescriptor]. -package protoreflect - -import ( - "fmt" - "strings" - - "google.golang.org/protobuf/encoding/protowire" - "google.golang.org/protobuf/internal/pragma" -) - -type doNotImplement pragma.DoNotImplement - -// ProtoMessage is the top-level interface that all proto messages implement. -// This is declared in the protoreflect package to avoid a cyclic dependency; -// use the [google.golang.org/protobuf/proto.Message] type instead, which aliases this type. -type ProtoMessage interface{ ProtoReflect() Message } - -// Syntax is the language version of the proto file. -type Syntax syntax - -type syntax int8 // keep exact type opaque as the int type may change - -const ( - Proto2 Syntax = 2 - Proto3 Syntax = 3 - Editions Syntax = 4 -) - -// IsValid reports whether the syntax is valid. -func (s Syntax) IsValid() bool { - switch s { - case Proto2, Proto3, Editions: - return true - default: - return false - } -} - -// String returns s as a proto source identifier (e.g., "proto2"). -func (s Syntax) String() string { - switch s { - case Proto2: - return "proto2" - case Proto3: - return "proto3" - case Editions: - return "editions" - default: - return fmt.Sprintf("<unknown:%d>", s) - } -} - -// GoString returns s as a Go source identifier (e.g., "Proto2"). -func (s Syntax) GoString() string { - switch s { - case Proto2: - return "Proto2" - case Proto3: - return "Proto3" - default: - return fmt.Sprintf("Syntax(%d)", s) - } -} - -// Cardinality determines whether a field is optional, required, or repeated. -type Cardinality cardinality - -type cardinality int8 // keep exact type opaque as the int type may change - -// Constants as defined by the google.protobuf.Cardinality enumeration. -const ( - Optional Cardinality = 1 // appears zero or one times - Required Cardinality = 2 // appears exactly one time; invalid with Proto3 - Repeated Cardinality = 3 // appears zero or more times -) - -// IsValid reports whether the cardinality is valid. -func (c Cardinality) IsValid() bool { - switch c { - case Optional, Required, Repeated: - return true - default: - return false - } -} - -// String returns c as a proto source identifier (e.g., "optional"). -func (c Cardinality) String() string { - switch c { - case Optional: - return "optional" - case Required: - return "required" - case Repeated: - return "repeated" - default: - return fmt.Sprintf("<unknown:%d>", c) - } -} - -// GoString returns c as a Go source identifier (e.g., "Optional"). -func (c Cardinality) GoString() string { - switch c { - case Optional: - return "Optional" - case Required: - return "Required" - case Repeated: - return "Repeated" - default: - return fmt.Sprintf("Cardinality(%d)", c) - } -} - -// Kind indicates the basic proto kind of a field. -type Kind kind - -type kind int8 // keep exact type opaque as the int type may change - -// Constants as defined by the google.protobuf.Field.Kind enumeration. -const ( - BoolKind Kind = 8 - EnumKind Kind = 14 - Int32Kind Kind = 5 - Sint32Kind Kind = 17 - Uint32Kind Kind = 13 - Int64Kind Kind = 3 - Sint64Kind Kind = 18 - Uint64Kind Kind = 4 - Sfixed32Kind Kind = 15 - Fixed32Kind Kind = 7 - FloatKind Kind = 2 - Sfixed64Kind Kind = 16 - Fixed64Kind Kind = 6 - DoubleKind Kind = 1 - StringKind Kind = 9 - BytesKind Kind = 12 - MessageKind Kind = 11 - GroupKind Kind = 10 -) - -// IsValid reports whether the kind is valid. -func (k Kind) IsValid() bool { - switch k { - case BoolKind, EnumKind, - Int32Kind, Sint32Kind, Uint32Kind, - Int64Kind, Sint64Kind, Uint64Kind, - Sfixed32Kind, Fixed32Kind, FloatKind, - Sfixed64Kind, Fixed64Kind, DoubleKind, - StringKind, BytesKind, MessageKind, GroupKind: - return true - default: - return false - } -} - -// String returns k as a proto source identifier (e.g., "bool"). -func (k Kind) String() string { - switch k { - case BoolKind: - return "bool" - case EnumKind: - return "enum" - case Int32Kind: - return "int32" - case Sint32Kind: - return "sint32" - case Uint32Kind: - return "uint32" - case Int64Kind: - return "int64" - case Sint64Kind: - return "sint64" - case Uint64Kind: - return "uint64" - case Sfixed32Kind: - return "sfixed32" - case Fixed32Kind: - return "fixed32" - case FloatKind: - return "float" - case Sfixed64Kind: - return "sfixed64" - case Fixed64Kind: - return "fixed64" - case DoubleKind: - return "double" - case StringKind: - return "string" - case BytesKind: - return "bytes" - case MessageKind: - return "message" - case GroupKind: - return "group" - default: - return fmt.Sprintf("<unknown:%d>", k) - } -} - -// GoString returns k as a Go source identifier (e.g., "BoolKind"). -func (k Kind) GoString() string { - switch k { - case BoolKind: - return "BoolKind" - case EnumKind: - return "EnumKind" - case Int32Kind: - return "Int32Kind" - case Sint32Kind: - return "Sint32Kind" - case Uint32Kind: - return "Uint32Kind" - case Int64Kind: - return "Int64Kind" - case Sint64Kind: - return "Sint64Kind" - case Uint64Kind: - return "Uint64Kind" - case Sfixed32Kind: - return "Sfixed32Kind" - case Fixed32Kind: - return "Fixed32Kind" - case FloatKind: - return "FloatKind" - case Sfixed64Kind: - return "Sfixed64Kind" - case Fixed64Kind: - return "Fixed64Kind" - case DoubleKind: - return "DoubleKind" - case StringKind: - return "StringKind" - case BytesKind: - return "BytesKind" - case MessageKind: - return "MessageKind" - case GroupKind: - return "GroupKind" - default: - return fmt.Sprintf("Kind(%d)", k) - } -} - -// FieldNumber is the field number in a message. -type FieldNumber = protowire.Number - -// FieldNumbers represent a list of field numbers. -type FieldNumbers interface { - // Len reports the number of fields in the list. - Len() int - // Get returns the ith field number. It panics if out of bounds. - Get(i int) FieldNumber - // Has reports whether n is within the list of fields. - Has(n FieldNumber) bool - - doNotImplement -} - -// FieldRanges represent a list of field number ranges. -type FieldRanges interface { - // Len reports the number of ranges in the list. - Len() int - // Get returns the ith range. It panics if out of bounds. - Get(i int) [2]FieldNumber // start inclusive; end exclusive - // Has reports whether n is within any of the ranges. - Has(n FieldNumber) bool - - doNotImplement -} - -// EnumNumber is the numeric value for an enum. -type EnumNumber int32 - -// EnumRanges represent a list of enum number ranges. -type EnumRanges interface { - // Len reports the number of ranges in the list. - Len() int - // Get returns the ith range. It panics if out of bounds. - Get(i int) [2]EnumNumber // start inclusive; end inclusive - // Has reports whether n is within any of the ranges. - Has(n EnumNumber) bool - - doNotImplement -} - -// Name is the short name for a proto declaration. This is not the name -// as used in Go source code, which might not be identical to the proto name. -type Name string // e.g., "Kind" - -// IsValid reports whether s is a syntactically valid name. -// An empty name is invalid. -func (s Name) IsValid() bool { - return consumeIdent(string(s)) == len(s) -} - -// Names represent a list of names. -type Names interface { - // Len reports the number of names in the list. - Len() int - // Get returns the ith name. It panics if out of bounds. - Get(i int) Name - // Has reports whether s matches any names in the list. - Has(s Name) bool - - doNotImplement -} - -// FullName is a qualified name that uniquely identifies a proto declaration. -// A qualified name is the concatenation of the proto package along with the -// fully-declared name (i.e., name of parent preceding the name of the child), -// with a '.' delimiter placed between each [Name]. -// -// This should not have any leading or trailing dots. -type FullName string // e.g., "google.protobuf.Field.Kind" - -// IsValid reports whether s is a syntactically valid full name. -// An empty full name is invalid. -func (s FullName) IsValid() bool { - i := consumeIdent(string(s)) - if i < 0 { - return false - } - for len(s) > i { - if s[i] != '.' { - return false - } - i++ - n := consumeIdent(string(s[i:])) - if n < 0 { - return false - } - i += n - } - return true -} - -func consumeIdent(s string) (i int) { - if len(s) == 0 || !isLetter(s[i]) { - return -1 - } - i++ - for len(s) > i && isLetterDigit(s[i]) { - i++ - } - return i -} -func isLetter(c byte) bool { - return c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') -} -func isLetterDigit(c byte) bool { - return isLetter(c) || ('0' <= c && c <= '9') -} - -// Name returns the short name, which is the last identifier segment. -// A single segment FullName is the [Name] itself. -func (n FullName) Name() Name { - if i := strings.LastIndexByte(string(n), '.'); i >= 0 { - return Name(n[i+1:]) - } - return Name(n) -} - -// Parent returns the full name with the trailing identifier removed. -// A single segment FullName has no parent. -func (n FullName) Parent() FullName { - if i := strings.LastIndexByte(string(n), '.'); i >= 0 { - return n[:i] - } - return "" -} - -// Append returns the qualified name appended with the provided short name. -// -// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid -func (n FullName) Append(s Name) FullName { - if n == "" { - return FullName(s) - } - return n + "." + FullName(s) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go deleted file mode 100644 index 0b99428..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -import ( - "strconv" -) - -// SourceLocations is a list of source locations. -type SourceLocations interface { - // Len reports the number of source locations in the proto file. - Len() int - // Get returns the ith SourceLocation. It panics if out of bounds. - Get(int) SourceLocation - - // ByPath returns the SourceLocation for the given path, - // returning the first location if multiple exist for the same path. - // If multiple locations exist for the same path, - // then SourceLocation.Next index can be used to identify the - // index of the next SourceLocation. - // If no location exists for this path, it returns the zero value. - ByPath(path SourcePath) SourceLocation - - // ByDescriptor returns the SourceLocation for the given descriptor, - // returning the first location if multiple exist for the same path. - // If no location exists for this descriptor, it returns the zero value. - ByDescriptor(desc Descriptor) SourceLocation - - doNotImplement -} - -// SourceLocation describes a source location and -// corresponds with the google.protobuf.SourceCodeInfo.Location message. -type SourceLocation struct { - // Path is the path to the declaration from the root file descriptor. - // The contents of this slice must not be mutated. - Path SourcePath - - // StartLine and StartColumn are the zero-indexed starting location - // in the source file for the declaration. - StartLine, StartColumn int - // EndLine and EndColumn are the zero-indexed ending location - // in the source file for the declaration. - // In the descriptor.proto, the end line may be omitted if it is identical - // to the start line. Here, it is always populated. - EndLine, EndColumn int - - // LeadingDetachedComments are the leading detached comments - // for the declaration. The contents of this slice must not be mutated. - LeadingDetachedComments []string - // LeadingComments is the leading attached comment for the declaration. - LeadingComments string - // TrailingComments is the trailing attached comment for the declaration. - TrailingComments string - - // Next is an index into SourceLocations for the next source location that - // has the same Path. It is zero if there is no next location. - Next int -} - -// SourcePath identifies part of a file descriptor for a source location. -// The SourcePath is a sequence of either field numbers or indexes into -// a repeated field that form a path starting from the root file descriptor. -// -// See google.protobuf.SourceCodeInfo.Location.path. -type SourcePath []int32 - -// Equal reports whether p1 equals p2. -func (p1 SourcePath) Equal(p2 SourcePath) bool { - if len(p1) != len(p2) { - return false - } - for i := range p1 { - if p1[i] != p2[i] { - return false - } - } - return true -} - -// String formats the path in a humanly readable manner. -// The output is guaranteed to be deterministic, -// making it suitable for use as a key into a Go map. -// It is not guaranteed to be stable as the exact output could change -// in a future version of this module. -// -// Example output: -// -// .message_type[6].nested_type[15].field[3] -func (p SourcePath) String() string { - b := p.appendFileDescriptorProto(nil) - for _, i := range p { - b = append(b, '.') - b = strconv.AppendInt(b, int64(i), 10) - } - return string(b) -} - -type appendFunc func(*SourcePath, []byte) []byte - -func (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte { - if len(*p) == 0 { - return b - } - b = append(b, '.') - b = append(b, name...) - *p = (*p)[1:] - if f != nil { - b = f(p, b) - } - return b -} - -func (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte { - b = p.appendSingularField(b, name, nil) - if len(*p) == 0 || (*p)[0] < 0 { - return b - } - b = append(b, '[') - b = strconv.AppendUint(b, uint64((*p)[0]), 10) - b = append(b, ']') - *p = (*p)[1:] - if f != nil { - b = f(p, b) - } - return b -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go deleted file mode 100644 index ea154ee..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +++ /dev/null @@ -1,573 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Code generated by generate-protos. DO NOT EDIT. - -package protoreflect - -func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendSingularField(b, "package", nil) - case 3: - b = p.appendRepeatedField(b, "dependency", nil) - case 10: - b = p.appendRepeatedField(b, "public_dependency", nil) - case 11: - b = p.appendRepeatedField(b, "weak_dependency", nil) - case 4: - b = p.appendRepeatedField(b, "message_type", (*SourcePath).appendDescriptorProto) - case 5: - b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) - case 6: - b = p.appendRepeatedField(b, "service", (*SourcePath).appendServiceDescriptorProto) - case 7: - b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) - case 8: - b = p.appendSingularField(b, "options", (*SourcePath).appendFileOptions) - case 9: - b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo) - case 12: - b = p.appendSingularField(b, "syntax", nil) - case 14: - b = p.appendSingularField(b, "edition", nil) - } - return b -} - -func (p *SourcePath) appendDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendRepeatedField(b, "field", (*SourcePath).appendFieldDescriptorProto) - case 6: - b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto) - case 3: - b = p.appendRepeatedField(b, "nested_type", (*SourcePath).appendDescriptorProto) - case 4: - b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto) - case 5: - b = p.appendRepeatedField(b, "extension_range", (*SourcePath).appendDescriptorProto_ExtensionRange) - case 8: - b = p.appendRepeatedField(b, "oneof_decl", (*SourcePath).appendOneofDescriptorProto) - case 7: - b = p.appendSingularField(b, "options", (*SourcePath).appendMessageOptions) - case 9: - b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendDescriptorProto_ReservedRange) - case 10: - b = p.appendRepeatedField(b, "reserved_name", nil) - } - return b -} - -func (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendRepeatedField(b, "value", (*SourcePath).appendEnumValueDescriptorProto) - case 3: - b = p.appendSingularField(b, "options", (*SourcePath).appendEnumOptions) - case 4: - b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange) - case 5: - b = p.appendRepeatedField(b, "reserved_name", nil) - } - return b -} - -func (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendRepeatedField(b, "method", (*SourcePath).appendMethodDescriptorProto) - case 3: - b = p.appendSingularField(b, "options", (*SourcePath).appendServiceOptions) - } - return b -} - -func (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 3: - b = p.appendSingularField(b, "number", nil) - case 4: - b = p.appendSingularField(b, "label", nil) - case 5: - b = p.appendSingularField(b, "type", nil) - case 6: - b = p.appendSingularField(b, "type_name", nil) - case 2: - b = p.appendSingularField(b, "extendee", nil) - case 7: - b = p.appendSingularField(b, "default_value", nil) - case 9: - b = p.appendSingularField(b, "oneof_index", nil) - case 10: - b = p.appendSingularField(b, "json_name", nil) - case 8: - b = p.appendSingularField(b, "options", (*SourcePath).appendFieldOptions) - case 17: - b = p.appendSingularField(b, "proto3_optional", nil) - } - return b -} - -func (p *SourcePath) appendFileOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "java_package", nil) - case 8: - b = p.appendSingularField(b, "java_outer_classname", nil) - case 10: - b = p.appendSingularField(b, "java_multiple_files", nil) - case 20: - b = p.appendSingularField(b, "java_generate_equals_and_hash", nil) - case 27: - b = p.appendSingularField(b, "java_string_check_utf8", nil) - case 9: - b = p.appendSingularField(b, "optimize_for", nil) - case 11: - b = p.appendSingularField(b, "go_package", nil) - case 16: - b = p.appendSingularField(b, "cc_generic_services", nil) - case 17: - b = p.appendSingularField(b, "java_generic_services", nil) - case 18: - b = p.appendSingularField(b, "py_generic_services", nil) - case 23: - b = p.appendSingularField(b, "deprecated", nil) - case 31: - b = p.appendSingularField(b, "cc_enable_arenas", nil) - case 36: - b = p.appendSingularField(b, "objc_class_prefix", nil) - case 37: - b = p.appendSingularField(b, "csharp_namespace", nil) - case 39: - b = p.appendSingularField(b, "swift_prefix", nil) - case 40: - b = p.appendSingularField(b, "php_class_prefix", nil) - case 41: - b = p.appendSingularField(b, "php_namespace", nil) - case 44: - b = p.appendSingularField(b, "php_metadata_namespace", nil) - case 45: - b = p.appendSingularField(b, "ruby_package", nil) - case 50: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendSourceCodeInfo(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendRepeatedField(b, "location", (*SourcePath).appendSourceCodeInfo_Location) - } - return b -} - -func (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "start", nil) - case 2: - b = p.appendSingularField(b, "end", nil) - case 3: - b = p.appendSingularField(b, "options", (*SourcePath).appendExtensionRangeOptions) - } - return b -} - -func (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendSingularField(b, "options", (*SourcePath).appendOneofOptions) - } - return b -} - -func (p *SourcePath) appendMessageOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "message_set_wire_format", nil) - case 2: - b = p.appendSingularField(b, "no_standard_descriptor_accessor", nil) - case 3: - b = p.appendSingularField(b, "deprecated", nil) - case 7: - b = p.appendSingularField(b, "map_entry", nil) - case 11: - b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) - case 12: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "start", nil) - case 2: - b = p.appendSingularField(b, "end", nil) - } - return b -} - -func (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendSingularField(b, "number", nil) - case 3: - b = p.appendSingularField(b, "options", (*SourcePath).appendEnumValueOptions) - } - return b -} - -func (p *SourcePath) appendEnumOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 2: - b = p.appendSingularField(b, "allow_alias", nil) - case 3: - b = p.appendSingularField(b, "deprecated", nil) - case 6: - b = p.appendSingularField(b, "deprecated_legacy_json_field_conflicts", nil) - case 7: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "start", nil) - case 2: - b = p.appendSingularField(b, "end", nil) - } - return b -} - -func (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name", nil) - case 2: - b = p.appendSingularField(b, "input_type", nil) - case 3: - b = p.appendSingularField(b, "output_type", nil) - case 4: - b = p.appendSingularField(b, "options", (*SourcePath).appendMethodOptions) - case 5: - b = p.appendSingularField(b, "client_streaming", nil) - case 6: - b = p.appendSingularField(b, "server_streaming", nil) - } - return b -} - -func (p *SourcePath) appendServiceOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 34: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 33: - b = p.appendSingularField(b, "deprecated", nil) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendFieldOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "ctype", nil) - case 2: - b = p.appendSingularField(b, "packed", nil) - case 6: - b = p.appendSingularField(b, "jstype", nil) - case 5: - b = p.appendSingularField(b, "lazy", nil) - case 15: - b = p.appendSingularField(b, "unverified_lazy", nil) - case 3: - b = p.appendSingularField(b, "deprecated", nil) - case 10: - b = p.appendSingularField(b, "weak", nil) - case 16: - b = p.appendSingularField(b, "debug_redact", nil) - case 17: - b = p.appendSingularField(b, "retention", nil) - case 19: - b = p.appendRepeatedField(b, "targets", nil) - case 20: - b = p.appendRepeatedField(b, "edition_defaults", (*SourcePath).appendFieldOptions_EditionDefault) - case 21: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 22: - b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendFeatureSet(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "field_presence", nil) - case 2: - b = p.appendSingularField(b, "enum_type", nil) - case 3: - b = p.appendSingularField(b, "repeated_field_encoding", nil) - case 4: - b = p.appendSingularField(b, "utf8_validation", nil) - case 5: - b = p.appendSingularField(b, "message_encoding", nil) - case 6: - b = p.appendSingularField(b, "json_format", nil) - } - return b -} - -func (p *SourcePath) appendUninterpretedOption(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 2: - b = p.appendRepeatedField(b, "name", (*SourcePath).appendUninterpretedOption_NamePart) - case 3: - b = p.appendSingularField(b, "identifier_value", nil) - case 4: - b = p.appendSingularField(b, "positive_int_value", nil) - case 5: - b = p.appendSingularField(b, "negative_int_value", nil) - case 6: - b = p.appendSingularField(b, "double_value", nil) - case 7: - b = p.appendSingularField(b, "string_value", nil) - case 8: - b = p.appendSingularField(b, "aggregate_value", nil) - } - return b -} - -func (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendRepeatedField(b, "path", nil) - case 2: - b = p.appendRepeatedField(b, "span", nil) - case 3: - b = p.appendSingularField(b, "leading_comments", nil) - case 4: - b = p.appendSingularField(b, "trailing_comments", nil) - case 6: - b = p.appendRepeatedField(b, "leading_detached_comments", nil) - } - return b -} - -func (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - case 2: - b = p.appendRepeatedField(b, "declaration", (*SourcePath).appendExtensionRangeOptions_Declaration) - case 50: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 3: - b = p.appendSingularField(b, "verification", nil) - } - return b -} - -func (p *SourcePath) appendOneofOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendEnumValueOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "deprecated", nil) - case 2: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 3: - b = p.appendSingularField(b, "debug_redact", nil) - case 4: - b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendMethodOptions(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 33: - b = p.appendSingularField(b, "deprecated", nil) - case 34: - b = p.appendSingularField(b, "idempotency_level", nil) - case 35: - b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) - case 999: - b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) - } - return b -} - -func (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 3: - b = p.appendSingularField(b, "edition", nil) - case 2: - b = p.appendSingularField(b, "value", nil) - } - return b -} - -func (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "edition_introduced", nil) - case 2: - b = p.appendSingularField(b, "edition_deprecated", nil) - case 3: - b = p.appendSingularField(b, "deprecation_warning", nil) - case 4: - b = p.appendSingularField(b, "edition_removed", nil) - } - return b -} - -func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "name_part", nil) - case 2: - b = p.appendSingularField(b, "is_extension", nil) - } - return b -} - -func (p *SourcePath) appendExtensionRangeOptions_Declaration(b []byte) []byte { - if len(*p) == 0 { - return b - } - switch (*p)[0] { - case 1: - b = p.appendSingularField(b, "number", nil) - case 2: - b = p.appendSingularField(b, "full_name", nil) - case 3: - b = p.appendSingularField(b, "type", nil) - case 5: - b = p.appendSingularField(b, "reserved", nil) - case 6: - b = p.appendSingularField(b, "repeated", nil) - } - return b -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go deleted file mode 100644 index cd8fadb..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +++ /dev/null @@ -1,672 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -// Descriptor provides a set of accessors that are common to every descriptor. -// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto, -// but provides efficient lookup and immutability. -// -// Each descriptor is comparable. Equality implies that the two types are -// exactly identical. However, it is possible for the same semantically -// identical proto type to be represented by multiple type descriptors. -// -// For example, suppose we have t1 and t2 which are both an [MessageDescriptor]. -// If t1 == t2, then the types are definitely equal and all accessors return -// the same information. However, if t1 != t2, then it is still possible that -// they still represent the same proto type (e.g., t1.FullName == t2.FullName). -// This can occur if a descriptor type is created dynamically, or multiple -// versions of the same proto type are accidentally linked into the Go binary. -type Descriptor interface { - // ParentFile returns the parent file descriptor that this descriptor - // is declared within. The parent file for the file descriptor is itself. - // - // Support for this functionality is optional and may return nil. - ParentFile() FileDescriptor - - // Parent returns the parent containing this descriptor declaration. - // The following shows the mapping from child type to possible parent types: - // - // ╔═════════════════════╤═══════════════════════════════════╗ - // ║ Child type │ Possible parent types ║ - // ╠═════════════════════╪═══════════════════════════════════╣ - // ║ FileDescriptor │ nil ║ - // ║ MessageDescriptor │ FileDescriptor, MessageDescriptor ║ - // ║ FieldDescriptor │ FileDescriptor, MessageDescriptor ║ - // ║ OneofDescriptor │ MessageDescriptor ║ - // ║ EnumDescriptor │ FileDescriptor, MessageDescriptor ║ - // ║ EnumValueDescriptor │ EnumDescriptor ║ - // ║ ServiceDescriptor │ FileDescriptor ║ - // ║ MethodDescriptor │ ServiceDescriptor ║ - // ╚═════════════════════╧═══════════════════════════════════╝ - // - // Support for this functionality is optional and may return nil. - Parent() Descriptor - - // Index returns the index of this descriptor within its parent. - // It returns 0 if the descriptor does not have a parent or if the parent - // is unknown. - Index() int - - // Syntax is the protobuf syntax. - Syntax() Syntax // e.g., Proto2 or Proto3 - - // Name is the short name of the declaration (i.e., FullName.Name). - Name() Name // e.g., "Any" - - // FullName is the fully-qualified name of the declaration. - // - // The FullName is a concatenation of the full name of the type that this - // type is declared within and the declaration name. For example, - // field "foo_field" in message "proto.package.MyMessage" is - // uniquely identified as "proto.package.MyMessage.foo_field". - // Enum values are an exception to the rule (see EnumValueDescriptor). - FullName() FullName // e.g., "google.protobuf.Any" - - // IsPlaceholder reports whether type information is missing since a - // dependency is not resolved, in which case only name information is known. - // - // Placeholder types may only be returned by the following accessors - // as a result of unresolved dependencies or weak imports: - // - // ╔═══════════════════════════════════╤═════════════════════╗ - // ║ Accessor │ Descriptor ║ - // ╠═══════════════════════════════════╪═════════════════════╣ - // ║ FileImports.FileDescriptor │ FileDescriptor ║ - // ║ FieldDescriptor.Enum │ EnumDescriptor ║ - // ║ FieldDescriptor.Message │ MessageDescriptor ║ - // ║ FieldDescriptor.DefaultEnumValue │ EnumValueDescriptor ║ - // ║ FieldDescriptor.ContainingMessage │ MessageDescriptor ║ - // ║ MethodDescriptor.Input │ MessageDescriptor ║ - // ║ MethodDescriptor.Output │ MessageDescriptor ║ - // ╚═══════════════════════════════════╧═════════════════════╝ - // - // If true, only Name and FullName are valid. - // For FileDescriptor, the Path is also valid. - IsPlaceholder() bool - - // Options returns the descriptor options. The caller must not modify - // the returned value. - // - // To avoid a dependency cycle, this function returns a proto.Message value. - // The proto message type returned for each descriptor type is as follows: - // ╔═════════════════════╤══════════════════════════════════════════╗ - // ║ Go type │ Protobuf message type ║ - // ╠═════════════════════╪══════════════════════════════════════════╣ - // ║ FileDescriptor │ google.protobuf.FileOptions ║ - // ║ EnumDescriptor │ google.protobuf.EnumOptions ║ - // ║ EnumValueDescriptor │ google.protobuf.EnumValueOptions ║ - // ║ MessageDescriptor │ google.protobuf.MessageOptions ║ - // ║ FieldDescriptor │ google.protobuf.FieldOptions ║ - // ║ OneofDescriptor │ google.protobuf.OneofOptions ║ - // ║ ServiceDescriptor │ google.protobuf.ServiceOptions ║ - // ║ MethodDescriptor │ google.protobuf.MethodOptions ║ - // ╚═════════════════════╧══════════════════════════════════════════╝ - // - // This method returns a typed nil-pointer if no options are present. - // The caller must import the descriptorpb package to use this. - Options() ProtoMessage - - doNotImplement -} - -// FileDescriptor describes the types in a complete proto file and -// corresponds with the google.protobuf.FileDescriptorProto message. -// -// Top-level declarations: -// [EnumDescriptor], [MessageDescriptor], [FieldDescriptor], and/or [ServiceDescriptor]. -type FileDescriptor interface { - Descriptor // Descriptor.FullName is identical to Package - - // Path returns the file name, relative to the source tree root. - Path() string // e.g., "path/to/file.proto" - // Package returns the protobuf package namespace. - Package() FullName // e.g., "google.protobuf" - - // Imports is a list of imported proto files. - Imports() FileImports - - // Enums is a list of the top-level enum declarations. - Enums() EnumDescriptors - // Messages is a list of the top-level message declarations. - Messages() MessageDescriptors - // Extensions is a list of the top-level extension declarations. - Extensions() ExtensionDescriptors - // Services is a list of the top-level service declarations. - Services() ServiceDescriptors - - // SourceLocations is a list of source locations. - SourceLocations() SourceLocations - - isFileDescriptor -} -type isFileDescriptor interface{ ProtoType(FileDescriptor) } - -// FileImports is a list of file imports. -type FileImports interface { - // Len reports the number of files imported by this proto file. - Len() int - // Get returns the ith FileImport. It panics if out of bounds. - Get(i int) FileImport - - doNotImplement -} - -// FileImport is the declaration for a proto file import. -type FileImport struct { - // FileDescriptor is the file type for the given import. - // It is a placeholder descriptor if IsWeak is set or if a dependency has - // not been regenerated to implement the new reflection APIs. - FileDescriptor - - // IsPublic reports whether this is a public import, which causes this file - // to alias declarations within the imported file. The intended use cases - // for this feature is the ability to move proto files without breaking - // existing dependencies. - // - // The current file and the imported file must be within proto package. - IsPublic bool - - // IsWeak reports whether this is a weak import, which does not impose - // a direct dependency on the target file. - // - // Weak imports are a legacy proto1 feature. Equivalent behavior is - // achieved using proto2 extension fields or proto3 Any messages. - IsWeak bool -} - -// MessageDescriptor describes a message and -// corresponds with the google.protobuf.DescriptorProto message. -// -// Nested declarations: -// [FieldDescriptor], [OneofDescriptor], [FieldDescriptor], [EnumDescriptor], -// and/or [MessageDescriptor]. -type MessageDescriptor interface { - Descriptor - - // IsMapEntry indicates that this is an auto-generated message type to - // represent the entry type for a map field. - // - // Map entry messages have only two fields: - // • a "key" field with a field number of 1 - // • a "value" field with a field number of 2 - // The key and value types are determined by these two fields. - // - // If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true - // for some field with this message type. - IsMapEntry() bool - - // Fields is a list of nested field declarations. - Fields() FieldDescriptors - // Oneofs is a list of nested oneof declarations. - Oneofs() OneofDescriptors - - // ReservedNames is a list of reserved field names. - ReservedNames() Names - // ReservedRanges is a list of reserved ranges of field numbers. - ReservedRanges() FieldRanges - // RequiredNumbers is a list of required field numbers. - // In Proto3, it is always an empty list. - RequiredNumbers() FieldNumbers - // ExtensionRanges is the field ranges used for extension fields. - // In Proto3, it is always an empty ranges. - ExtensionRanges() FieldRanges - // ExtensionRangeOptions returns the ith extension range options. - // - // To avoid a dependency cycle, this method returns a proto.Message] value, - // which always contains a google.protobuf.ExtensionRangeOptions message. - // This method returns a typed nil-pointer if no options are present. - // The caller must import the descriptorpb package to use this. - ExtensionRangeOptions(i int) ProtoMessage - - // Enums is a list of nested enum declarations. - Enums() EnumDescriptors - // Messages is a list of nested message declarations. - Messages() MessageDescriptors - // Extensions is a list of nested extension declarations. - Extensions() ExtensionDescriptors - - isMessageDescriptor -} -type isMessageDescriptor interface{ ProtoType(MessageDescriptor) } - -// MessageType encapsulates a [MessageDescriptor] with a concrete Go implementation. -// It is recommended that implementations of this interface also implement the -// [MessageFieldTypes] interface. -type MessageType interface { - // New returns a newly allocated empty message. - // It may return nil for synthetic messages representing a map entry. - New() Message - - // Zero returns an empty, read-only message. - // It may return nil for synthetic messages representing a map entry. - Zero() Message - - // Descriptor returns the message descriptor. - // - // Invariant: t.Descriptor() == t.New().Descriptor() - Descriptor() MessageDescriptor -} - -// MessageFieldTypes extends a [MessageType] by providing type information -// regarding enums and messages referenced by the message fields. -type MessageFieldTypes interface { - MessageType - - // Enum returns the EnumType for the ith field in MessageDescriptor.Fields. - // It returns nil if the ith field is not an enum kind. - // It panics if out of bounds. - // - // Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum() - Enum(i int) EnumType - - // Message returns the MessageType for the ith field in MessageDescriptor.Fields. - // It returns nil if the ith field is not a message or group kind. - // It panics if out of bounds. - // - // Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message() - Message(i int) MessageType -} - -// MessageDescriptors is a list of message declarations. -type MessageDescriptors interface { - // Len reports the number of messages. - Len() int - // Get returns the ith MessageDescriptor. It panics if out of bounds. - Get(i int) MessageDescriptor - // ByName returns the MessageDescriptor for a message named s. - // It returns nil if not found. - ByName(s Name) MessageDescriptor - - doNotImplement -} - -// FieldDescriptor describes a field within a message and -// corresponds with the google.protobuf.FieldDescriptorProto message. -// -// It is used for both normal fields defined within the parent message -// (e.g., [MessageDescriptor.Fields]) and fields that extend some remote message -// (e.g., [FileDescriptor.Extensions] or [MessageDescriptor.Extensions]). -type FieldDescriptor interface { - Descriptor - - // Number reports the unique number for this field. - Number() FieldNumber - // Cardinality reports the cardinality for this field. - Cardinality() Cardinality - // Kind reports the basic kind for this field. - Kind() Kind - - // HasJSONName reports whether this field has an explicitly set JSON name. - HasJSONName() bool - - // JSONName reports the name used for JSON serialization. - // It is usually the camel-cased form of the field name. - // Extension fields are represented by the full name surrounded by brackets. - JSONName() string - - // TextName reports the name used for text serialization. - // It is usually the name of the field, except that groups use the name - // of the inlined message, and extension fields are represented by the - // full name surrounded by brackets. - TextName() string - - // HasPresence reports whether the field distinguishes between unpopulated - // and default values. - HasPresence() bool - - // IsExtension reports whether this is an extension field. If false, - // then Parent and ContainingMessage refer to the same message. - // Otherwise, ContainingMessage and Parent likely differ. - IsExtension() bool - - // HasOptionalKeyword reports whether the "optional" keyword was explicitly - // specified in the source .proto file. - HasOptionalKeyword() bool - - // IsWeak reports whether this is a weak field, which does not impose a - // direct dependency on the target type. - // If true, then Message returns a placeholder type. - IsWeak() bool - - // IsPacked reports whether repeated primitive numeric kinds should be - // serialized using a packed encoding. - // If true, then it implies Cardinality is Repeated. - IsPacked() bool - - // IsList reports whether this field represents a list, - // where the value type for the associated field is a List. - // It is equivalent to checking whether Cardinality is Repeated and - // that IsMap reports false. - IsList() bool - - // IsMap reports whether this field represents a map, - // where the value type for the associated field is a Map. - // It is equivalent to checking whether Cardinality is Repeated, - // that the Kind is MessageKind, and that MessageDescriptor.IsMapEntry reports true. - IsMap() bool - - // MapKey returns the field descriptor for the key in the map entry. - // It returns nil if IsMap reports false. - MapKey() FieldDescriptor - - // MapValue returns the field descriptor for the value in the map entry. - // It returns nil if IsMap reports false. - MapValue() FieldDescriptor - - // HasDefault reports whether this field has a default value. - HasDefault() bool - - // Default returns the default value for scalar fields. - // For proto2, it is the default value as specified in the proto file, - // or the zero value if unspecified. - // For proto3, it is always the zero value of the scalar. - // The Value type is determined by the Kind. - Default() Value - - // DefaultEnumValue returns the enum value descriptor for the default value - // of an enum field, and is nil for any other kind of field. - DefaultEnumValue() EnumValueDescriptor - - // ContainingOneof is the containing oneof that this field belongs to, - // and is nil if this field is not part of a oneof. - ContainingOneof() OneofDescriptor - - // ContainingMessage is the containing message that this field belongs to. - // For extension fields, this may not necessarily be the parent message - // that the field is declared within. - ContainingMessage() MessageDescriptor - - // Enum is the enum descriptor if Kind is EnumKind. - // It returns nil for any other Kind. - Enum() EnumDescriptor - - // Message is the message descriptor if Kind is - // MessageKind or GroupKind. It returns nil for any other Kind. - Message() MessageDescriptor - - isFieldDescriptor -} -type isFieldDescriptor interface{ ProtoType(FieldDescriptor) } - -// FieldDescriptors is a list of field declarations. -type FieldDescriptors interface { - // Len reports the number of fields. - Len() int - // Get returns the ith FieldDescriptor. It panics if out of bounds. - Get(i int) FieldDescriptor - // ByName returns the FieldDescriptor for a field named s. - // It returns nil if not found. - ByName(s Name) FieldDescriptor - // ByJSONName returns the FieldDescriptor for a field with s as the JSON name. - // It returns nil if not found. - ByJSONName(s string) FieldDescriptor - // ByTextName returns the FieldDescriptor for a field with s as the text name. - // It returns nil if not found. - ByTextName(s string) FieldDescriptor - // ByNumber returns the FieldDescriptor for a field numbered n. - // It returns nil if not found. - ByNumber(n FieldNumber) FieldDescriptor - - doNotImplement -} - -// OneofDescriptor describes a oneof field set within a given message and -// corresponds with the google.protobuf.OneofDescriptorProto message. -type OneofDescriptor interface { - Descriptor - - // IsSynthetic reports whether this is a synthetic oneof created to support - // proto3 optional semantics. If true, Fields contains exactly one field - // with FieldDescriptor.HasOptionalKeyword specified. - IsSynthetic() bool - - // Fields is a list of fields belonging to this oneof. - Fields() FieldDescriptors - - isOneofDescriptor -} -type isOneofDescriptor interface{ ProtoType(OneofDescriptor) } - -// OneofDescriptors is a list of oneof declarations. -type OneofDescriptors interface { - // Len reports the number of oneof fields. - Len() int - // Get returns the ith OneofDescriptor. It panics if out of bounds. - Get(i int) OneofDescriptor - // ByName returns the OneofDescriptor for a oneof named s. - // It returns nil if not found. - ByName(s Name) OneofDescriptor - - doNotImplement -} - -// ExtensionDescriptor is an alias of [FieldDescriptor] for documentation. -type ExtensionDescriptor = FieldDescriptor - -// ExtensionTypeDescriptor is an [ExtensionDescriptor] with an associated [ExtensionType]. -type ExtensionTypeDescriptor interface { - ExtensionDescriptor - - // Type returns the associated ExtensionType. - Type() ExtensionType - - // Descriptor returns the plain ExtensionDescriptor without the - // associated ExtensionType. - Descriptor() ExtensionDescriptor -} - -// ExtensionDescriptors is a list of field declarations. -type ExtensionDescriptors interface { - // Len reports the number of fields. - Len() int - // Get returns the ith ExtensionDescriptor. It panics if out of bounds. - Get(i int) ExtensionDescriptor - // ByName returns the ExtensionDescriptor for a field named s. - // It returns nil if not found. - ByName(s Name) ExtensionDescriptor - - doNotImplement -} - -// ExtensionType encapsulates an [ExtensionDescriptor] with a concrete -// Go implementation. The nested field descriptor must be for a extension field. -// -// While a normal field is a member of the parent message that it is declared -// within (see [Descriptor.Parent]), an extension field is a member of some other -// target message (see [FieldDescriptor.ContainingMessage]) and may have no -// relationship with the parent. However, the full name of an extension field is -// relative to the parent that it is declared within. -// -// For example: -// -// syntax = "proto2"; -// package example; -// message FooMessage { -// extensions 100 to max; -// } -// message BarMessage { -// extends FooMessage { optional BarMessage bar_field = 100; } -// } -// -// Field "bar_field" is an extension of FooMessage, but its full name is -// "example.BarMessage.bar_field" instead of "example.FooMessage.bar_field". -type ExtensionType interface { - // New returns a new value for the field. - // For scalars, this returns the default value in native Go form. - New() Value - - // Zero returns a new value for the field. - // For scalars, this returns the default value in native Go form. - // For composite types, this returns an empty, read-only message, list, or map. - Zero() Value - - // TypeDescriptor returns the extension type descriptor. - TypeDescriptor() ExtensionTypeDescriptor - - // ValueOf wraps the input and returns it as a Value. - // ValueOf panics if the input value is invalid or not the appropriate type. - // - // ValueOf is more extensive than protoreflect.ValueOf for a given field's - // value as it has more type information available. - ValueOf(any) Value - - // InterfaceOf completely unwraps the Value to the underlying Go type. - // InterfaceOf panics if the input is nil or does not represent the - // appropriate underlying Go type. For composite types, it panics if the - // value is not mutable. - // - // InterfaceOf is able to unwrap the Value further than Value.Interface - // as it has more type information available. - InterfaceOf(Value) any - - // IsValidValue reports whether the Value is valid to assign to the field. - IsValidValue(Value) bool - - // IsValidInterface reports whether the input is valid to assign to the field. - IsValidInterface(any) bool -} - -// EnumDescriptor describes an enum and -// corresponds with the google.protobuf.EnumDescriptorProto message. -// -// Nested declarations: -// [EnumValueDescriptor]. -type EnumDescriptor interface { - Descriptor - - // Values is a list of nested enum value declarations. - Values() EnumValueDescriptors - - // ReservedNames is a list of reserved enum names. - ReservedNames() Names - // ReservedRanges is a list of reserved ranges of enum numbers. - ReservedRanges() EnumRanges - - // IsClosed reports whether this enum uses closed semantics. - // See https://protobuf.dev/programming-guides/enum/#definitions. - // Note: the Go protobuf implementation is not spec compliant and treats - // all enums as open enums. - IsClosed() bool - - isEnumDescriptor -} -type isEnumDescriptor interface{ ProtoType(EnumDescriptor) } - -// EnumType encapsulates an [EnumDescriptor] with a concrete Go implementation. -type EnumType interface { - // New returns an instance of this enum type with its value set to n. - New(n EnumNumber) Enum - - // Descriptor returns the enum descriptor. - // - // Invariant: t.Descriptor() == t.New(0).Descriptor() - Descriptor() EnumDescriptor -} - -// EnumDescriptors is a list of enum declarations. -type EnumDescriptors interface { - // Len reports the number of enum types. - Len() int - // Get returns the ith EnumDescriptor. It panics if out of bounds. - Get(i int) EnumDescriptor - // ByName returns the EnumDescriptor for an enum named s. - // It returns nil if not found. - ByName(s Name) EnumDescriptor - - doNotImplement -} - -// EnumValueDescriptor describes an enum value and -// corresponds with the google.protobuf.EnumValueDescriptorProto message. -// -// All other proto declarations are in the namespace of the parent. -// However, enum values do not follow this rule and are within the namespace -// of the parent's parent (i.e., they are a sibling of the containing enum). -// Thus, a value named "FOO_VALUE" declared within an enum uniquely identified -// as "proto.package.MyEnum" has a full name of "proto.package.FOO_VALUE". -type EnumValueDescriptor interface { - Descriptor - - // Number returns the enum value as an integer. - Number() EnumNumber - - isEnumValueDescriptor -} -type isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) } - -// EnumValueDescriptors is a list of enum value declarations. -type EnumValueDescriptors interface { - // Len reports the number of enum values. - Len() int - // Get returns the ith EnumValueDescriptor. It panics if out of bounds. - Get(i int) EnumValueDescriptor - // ByName returns the EnumValueDescriptor for the enum value named s. - // It returns nil if not found. - ByName(s Name) EnumValueDescriptor - // ByNumber returns the EnumValueDescriptor for the enum value numbered n. - // If multiple have the same number, the first one defined is returned - // It returns nil if not found. - ByNumber(n EnumNumber) EnumValueDescriptor - - doNotImplement -} - -// ServiceDescriptor describes a service and -// corresponds with the google.protobuf.ServiceDescriptorProto message. -// -// Nested declarations: [MethodDescriptor]. -type ServiceDescriptor interface { - Descriptor - - // Methods is a list of nested message declarations. - Methods() MethodDescriptors - - isServiceDescriptor -} -type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) } - -// ServiceDescriptors is a list of service declarations. -type ServiceDescriptors interface { - // Len reports the number of services. - Len() int - // Get returns the ith ServiceDescriptor. It panics if out of bounds. - Get(i int) ServiceDescriptor - // ByName returns the ServiceDescriptor for a service named s. - // It returns nil if not found. - ByName(s Name) ServiceDescriptor - - doNotImplement -} - -// MethodDescriptor describes a method and -// corresponds with the google.protobuf.MethodDescriptorProto message. -type MethodDescriptor interface { - Descriptor - - // Input is the input message descriptor. - Input() MessageDescriptor - // Output is the output message descriptor. - Output() MessageDescriptor - // IsStreamingClient reports whether the client streams multiple messages. - IsStreamingClient() bool - // IsStreamingServer reports whether the server streams multiple messages. - IsStreamingServer() bool - - isMethodDescriptor -} -type isMethodDescriptor interface{ ProtoType(MethodDescriptor) } - -// MethodDescriptors is a list of method declarations. -type MethodDescriptors interface { - // Len reports the number of methods. - Len() int - // Get returns the ith MethodDescriptor. It panics if out of bounds. - Get(i int) MethodDescriptor - // ByName returns the MethodDescriptor for a service method named s. - // It returns nil if not found. - ByName(s Name) MethodDescriptor - - doNotImplement -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go deleted file mode 100644 index a7b0d06..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -import "google.golang.org/protobuf/encoding/protowire" - -// Enum is a reflection interface for a concrete enum value, -// which provides type information and a getter for the enum number. -// Enum does not provide a mutable API since enums are commonly backed by -// Go constants, which are not addressable. -type Enum interface { - // Descriptor returns enum descriptor, which contains only the protobuf - // type information for the enum. - Descriptor() EnumDescriptor - - // Type returns the enum type, which encapsulates both Go and protobuf - // type information. If the Go type information is not needed, - // it is recommended that the enum descriptor be used instead. - Type() EnumType - - // Number returns the enum value as an integer. - Number() EnumNumber -} - -// Message is a reflective interface for a concrete message value, -// encapsulating both type and value information for the message. -// -// Accessor/mutators for individual fields are keyed by [FieldDescriptor]. -// For non-extension fields, the descriptor must exactly match the -// field known by the parent message. -// For extension fields, the descriptor must implement [ExtensionTypeDescriptor], -// extend the parent message (i.e., have the same message [FullName]), and -// be within the parent's extension range. -// -// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]). -// See [Value] for the Go types associated with a [FieldDescriptor]. -// Providing a [Value] that is invalid or of an incorrect type panics. -type Message interface { - // Descriptor returns message descriptor, which contains only the protobuf - // type information for the message. - Descriptor() MessageDescriptor - - // Type returns the message type, which encapsulates both Go and protobuf - // type information. If the Go type information is not needed, - // it is recommended that the message descriptor be used instead. - Type() MessageType - - // New returns a newly allocated and mutable empty message. - New() Message - - // Interface unwraps the message reflection interface and - // returns the underlying ProtoMessage interface. - Interface() ProtoMessage - - // Range iterates over every populated field in an undefined order, - // calling f for each field descriptor and value encountered. - // Range returns immediately if f returns false. - // While iterating, mutating operations may only be performed - // on the current field descriptor. - Range(f func(FieldDescriptor, Value) bool) - - // Has reports whether a field is populated. - // - // Some fields have the property of nullability where it is possible to - // distinguish between the default value of a field and whether the field - // was explicitly populated with the default value. Singular message fields, - // member fields of a oneof, and proto2 scalar fields are nullable. Such - // fields are populated only if explicitly set. - // - // In other cases (aside from the nullable cases above), - // a proto3 scalar field is populated if it contains a non-zero value, and - // a repeated field is populated if it is non-empty. - Has(FieldDescriptor) bool - - // Clear clears the field such that a subsequent Has call reports false. - // - // Clearing an extension field clears both the extension type and value - // associated with the given field number. - // - // Clear is a mutating operation and unsafe for concurrent use. - Clear(FieldDescriptor) - - // Get retrieves the value for a field. - // - // For unpopulated scalars, it returns the default value, where - // the default value of a bytes scalar is guaranteed to be a copy. - // For unpopulated composite types, it returns an empty, read-only view - // of the value; to obtain a mutable reference, use Mutable. - Get(FieldDescriptor) Value - - // Set stores the value for a field. - // - // For a field belonging to a oneof, it implicitly clears any other field - // that may be currently set within the same oneof. - // For extension fields, it implicitly stores the provided ExtensionType. - // When setting a composite type, it is unspecified whether the stored value - // aliases the source's memory in any way. If the composite value is an - // empty, read-only value, then it panics. - // - // Set is a mutating operation and unsafe for concurrent use. - Set(FieldDescriptor, Value) - - // Mutable returns a mutable reference to a composite type. - // - // If the field is unpopulated, it may allocate a composite value. - // For a field belonging to a oneof, it implicitly clears any other field - // that may be currently set within the same oneof. - // For extension fields, it implicitly stores the provided ExtensionType - // if not already stored. - // It panics if the field does not contain a composite type. - // - // Mutable is a mutating operation and unsafe for concurrent use. - Mutable(FieldDescriptor) Value - - // NewField returns a new value that is assignable to the field - // for the given descriptor. For scalars, this returns the default value. - // For lists, maps, and messages, this returns a new, empty, mutable value. - NewField(FieldDescriptor) Value - - // WhichOneof reports which field within the oneof is populated, - // returning nil if none are populated. - // It panics if the oneof descriptor does not belong to this message. - WhichOneof(OneofDescriptor) FieldDescriptor - - // GetUnknown retrieves the entire list of unknown fields. - // The caller may only mutate the contents of the RawFields - // if the mutated bytes are stored back into the message with SetUnknown. - GetUnknown() RawFields - - // SetUnknown stores an entire list of unknown fields. - // The raw fields must be syntactically valid according to the wire format. - // An implementation may panic if this is not the case. - // Once stored, the caller must not mutate the content of the RawFields. - // An empty RawFields may be passed to clear the fields. - // - // SetUnknown is a mutating operation and unsafe for concurrent use. - SetUnknown(RawFields) - - // IsValid reports whether the message is valid. - // - // An invalid message is an empty, read-only value. - // - // An invalid message often corresponds to a nil pointer of the concrete - // message type, but the details are implementation dependent. - // Validity is not part of the protobuf data model, and may not - // be preserved in marshaling or other operations. - IsValid() bool - - // ProtoMethods returns optional fast-path implementations of various operations. - // This method may return nil. - // - // The returned methods type is identical to - // google.golang.org/protobuf/runtime/protoiface.Methods. - // Consult the protoiface package documentation for details. - ProtoMethods() *methods -} - -// RawFields is the raw bytes for an ordered sequence of fields. -// Each field contains both the tag (representing field number and wire type), -// and also the wire data itself. -type RawFields []byte - -// IsValid reports whether b is syntactically correct wire format. -func (b RawFields) IsValid() bool { - for len(b) > 0 { - _, _, n := protowire.ConsumeField(b) - if n < 0 { - return false - } - b = b[n:] - } - return true -} - -// List is a zero-indexed, ordered list. -// The element [Value] type is determined by [FieldDescriptor.Kind]. -// Providing a [Value] that is invalid or of an incorrect type panics. -type List interface { - // Len reports the number of entries in the List. - // Get, Set, and Truncate panic with out of bound indexes. - Len() int - - // Get retrieves the value at the given index. - // It never returns an invalid value. - Get(int) Value - - // Set stores a value for the given index. - // When setting a composite type, it is unspecified whether the set - // value aliases the source's memory in any way. - // - // Set is a mutating operation and unsafe for concurrent use. - Set(int, Value) - - // Append appends the provided value to the end of the list. - // When appending a composite type, it is unspecified whether the appended - // value aliases the source's memory in any way. - // - // Append is a mutating operation and unsafe for concurrent use. - Append(Value) - - // AppendMutable appends a new, empty, mutable message value to the end - // of the list and returns it. - // It panics if the list does not contain a message type. - AppendMutable() Value - - // Truncate truncates the list to a smaller length. - // - // Truncate is a mutating operation and unsafe for concurrent use. - Truncate(int) - - // NewElement returns a new value for a list element. - // For enums, this returns the first enum value. - // For other scalars, this returns the zero value. - // For messages, this returns a new, empty, mutable value. - NewElement() Value - - // IsValid reports whether the list is valid. - // - // An invalid list is an empty, read-only value. - // - // Validity is not part of the protobuf data model, and may not - // be preserved in marshaling or other operations. - IsValid() bool -} - -// Map is an unordered, associative map. -// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind. -// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind. -// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics. -type Map interface { - // Len reports the number of elements in the map. - Len() int - - // Range iterates over every map entry in an undefined order, - // calling f for each key and value encountered. - // Range calls f Len times unless f returns false, which stops iteration. - // While iterating, mutating operations may only be performed - // on the current map key. - Range(f func(MapKey, Value) bool) - - // Has reports whether an entry with the given key is in the map. - Has(MapKey) bool - - // Clear clears the entry associated with they given key. - // The operation does nothing if there is no entry associated with the key. - // - // Clear is a mutating operation and unsafe for concurrent use. - Clear(MapKey) - - // Get retrieves the value for an entry with the given key. - // It returns an invalid value for non-existent entries. - Get(MapKey) Value - - // Set stores the value for an entry with the given key. - // It panics when given a key or value that is invalid or the wrong type. - // When setting a composite type, it is unspecified whether the set - // value aliases the source's memory in any way. - // - // Set is a mutating operation and unsafe for concurrent use. - Set(MapKey, Value) - - // Mutable retrieves a mutable reference to the entry for the given key. - // If no entry exists for the key, it creates a new, empty, mutable value - // and stores it as the entry for the key. - // It panics if the map value is not a message. - Mutable(MapKey) Value - - // NewValue returns a new value assignable as a map value. - // For enums, this returns the first enum value. - // For other scalars, this returns the zero value. - // For messages, this returns a new, empty, mutable value. - NewValue() Value - - // IsValid reports whether the map is valid. - // - // An invalid map is an empty, read-only value. - // - // An invalid message often corresponds to a nil Go map value, - // but the details are implementation dependent. - // Validity is not part of the protobuf data model, and may not - // be preserved in marshaling or other operations. - IsValid() bool -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go deleted file mode 100644 index 654599d..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -import ( - "bytes" - "fmt" - "math" - "reflect" - - "google.golang.org/protobuf/encoding/protowire" -) - -// Equal reports whether v1 and v2 are recursively equal. -// -// - Values of different types are always unequal. -// -// - Bytes values are equal if they contain identical bytes. -// Empty bytes (regardless of nil-ness) are considered equal. -// -// - Floating point values are equal if they contain the same value. -// Unlike the == operator, a NaN is equal to another NaN. -// -// - Enums are equal if they contain the same number. -// Since [Value] does not contain an enum descriptor, -// enum values do not consider the type of the enum. -// -// - Other scalar values are equal if they contain the same value. -// -// - [Message] values are equal if they belong to the same message descriptor, -// have the same set of populated known and extension field values, -// and the same set of unknown fields values. -// -// - [List] values are equal if they are the same length and -// each corresponding element is equal. -// -// - [Map] values are equal if they have the same set of keys and -// the corresponding value for each key is equal. -func (v1 Value) Equal(v2 Value) bool { - return equalValue(v1, v2) -} - -func equalValue(x, y Value) bool { - eqType := x.typ == y.typ - switch x.typ { - case nilType: - return eqType - case boolType: - return eqType && x.Bool() == y.Bool() - case int32Type, int64Type: - return eqType && x.Int() == y.Int() - case uint32Type, uint64Type: - return eqType && x.Uint() == y.Uint() - case float32Type, float64Type: - return eqType && equalFloat(x.Float(), y.Float()) - case stringType: - return eqType && x.String() == y.String() - case bytesType: - return eqType && bytes.Equal(x.Bytes(), y.Bytes()) - case enumType: - return eqType && x.Enum() == y.Enum() - default: - switch x := x.Interface().(type) { - case Message: - y, ok := y.Interface().(Message) - return ok && equalMessage(x, y) - case List: - y, ok := y.Interface().(List) - return ok && equalList(x, y) - case Map: - y, ok := y.Interface().(Map) - return ok && equalMap(x, y) - default: - panic(fmt.Sprintf("unknown type: %T", x)) - } - } -} - -// equalFloat compares two floats, where NaNs are treated as equal. -func equalFloat(x, y float64) bool { - if math.IsNaN(x) || math.IsNaN(y) { - return math.IsNaN(x) && math.IsNaN(y) - } - return x == y -} - -// equalMessage compares two messages. -func equalMessage(mx, my Message) bool { - if mx.Descriptor() != my.Descriptor() { - return false - } - - nx := 0 - equal := true - mx.Range(func(fd FieldDescriptor, vx Value) bool { - nx++ - vy := my.Get(fd) - equal = my.Has(fd) && equalValue(vx, vy) - return equal - }) - if !equal { - return false - } - ny := 0 - my.Range(func(fd FieldDescriptor, vx Value) bool { - ny++ - return true - }) - if nx != ny { - return false - } - - return equalUnknown(mx.GetUnknown(), my.GetUnknown()) -} - -// equalList compares two lists. -func equalList(x, y List) bool { - if x.Len() != y.Len() { - return false - } - for i := x.Len() - 1; i >= 0; i-- { - if !equalValue(x.Get(i), y.Get(i)) { - return false - } - } - return true -} - -// equalMap compares two maps. -func equalMap(x, y Map) bool { - if x.Len() != y.Len() { - return false - } - equal := true - x.Range(func(k MapKey, vx Value) bool { - vy := y.Get(k) - equal = y.Has(k) && equalValue(vx, vy) - return equal - }) - return equal -} - -// equalUnknown compares unknown fields by direct comparison on the raw bytes -// of each individual field number. -func equalUnknown(x, y RawFields) bool { - if len(x) != len(y) { - return false - } - if bytes.Equal([]byte(x), []byte(y)) { - return true - } - - mx := make(map[FieldNumber]RawFields) - my := make(map[FieldNumber]RawFields) - for len(x) > 0 { - fnum, _, n := protowire.ConsumeField(x) - mx[fnum] = append(mx[fnum], x[:n]...) - x = x[n:] - } - for len(y) > 0 { - fnum, _, n := protowire.ConsumeField(y) - my[fnum] = append(my[fnum], y[:n]...) - y = y[n:] - } - return reflect.DeepEqual(mx, my) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go deleted file mode 100644 index 9fe83ce..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +++ /dev/null @@ -1,438 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoreflect - -import ( - "fmt" - "math" -) - -// Value is a union where only one Go type may be set at a time. -// The Value is used to represent all possible values a field may take. -// The following shows which Go type is used to represent each proto [Kind]: -// -// ╔════════════╤═════════════════════════════════════╗ -// ║ Go type │ Protobuf kind ║ -// ╠════════════╪═════════════════════════════════════╣ -// ║ bool │ BoolKind ║ -// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ -// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ -// ║ uint32 │ Uint32Kind, Fixed32Kind ║ -// ║ uint64 │ Uint64Kind, Fixed64Kind ║ -// ║ float32 │ FloatKind ║ -// ║ float64 │ DoubleKind ║ -// ║ string │ StringKind ║ -// ║ []byte │ BytesKind ║ -// ║ EnumNumber │ EnumKind ║ -// ║ Message │ MessageKind, GroupKind ║ -// ╚════════════╧═════════════════════════════════════╝ -// -// Multiple protobuf Kinds may be represented by a single Go type if the type -// can losslessly represent the information for the proto kind. For example, -// [Int64Kind], [Sint64Kind], and [Sfixed64Kind] are all represented by int64, -// but use different integer encoding methods. -// -// The [List] or [Map] types are used if the field cardinality is repeated. -// A field is a [List] if [FieldDescriptor.IsList] reports true. -// A field is a [Map] if [FieldDescriptor.IsMap] reports true. -// -// Converting to/from a Value and a concrete Go value panics on type mismatch. -// For example, [ValueOf]("hello").Int() panics because this attempts to -// retrieve an int64 from a string. -// -// [List], [Map], and [Message] Values are called "composite" values. -// -// A composite Value may alias (reference) memory at some location, -// such that changes to the Value updates the that location. -// A composite value acquired with a Mutable method, such as [Message.Mutable], -// always references the source object. -// -// For example: -// -// // Append a 0 to a "repeated int32" field. -// // Since the Value returned by Mutable is guaranteed to alias -// // the source message, modifying the Value modifies the message. -// message.Mutable(fieldDesc).List().Append(protoreflect.ValueOfInt32(0)) -// -// // Assign [0] to a "repeated int32" field by creating a new Value, -// // modifying it, and assigning it. -// list := message.NewField(fieldDesc).List() -// list.Append(protoreflect.ValueOfInt32(0)) -// message.Set(fieldDesc, list) -// // ERROR: Since it is not defined whether Set aliases the source, -// // appending to the List here may or may not modify the message. -// list.Append(protoreflect.ValueOfInt32(0)) -// -// Some operations, such as [Message.Get], may return an "empty, read-only" -// composite Value. Modifying an empty, read-only value panics. -type Value value - -// The protoreflect API uses a custom Value union type instead of any -// to keep the future open for performance optimizations. Using an any -// always incurs an allocation for primitives (e.g., int64) since it needs to -// be boxed on the heap (as interfaces can only contain pointers natively). -// Instead, we represent the Value union as a flat struct that internally keeps -// track of which type is set. Using unsafe, the Value union can be reduced -// down to 24B, which is identical in size to a slice. -// -// The latest compiler (Go1.11) currently suffers from some limitations: -// • With inlining, the compiler should be able to statically prove that -// only one of these switch cases are taken and inline one specific case. -// See https://golang.org/issue/22310. - -// ValueOf returns a Value initialized with the concrete value stored in v. -// This panics if the type does not match one of the allowed types in the -// Value union. -func ValueOf(v any) Value { - switch v := v.(type) { - case nil: - return Value{} - case bool: - return ValueOfBool(v) - case int32: - return ValueOfInt32(v) - case int64: - return ValueOfInt64(v) - case uint32: - return ValueOfUint32(v) - case uint64: - return ValueOfUint64(v) - case float32: - return ValueOfFloat32(v) - case float64: - return ValueOfFloat64(v) - case string: - return ValueOfString(v) - case []byte: - return ValueOfBytes(v) - case EnumNumber: - return ValueOfEnum(v) - case Message, List, Map: - return valueOfIface(v) - case ProtoMessage: - panic(fmt.Sprintf("invalid proto.Message(%T) type, expected a protoreflect.Message type", v)) - default: - panic(fmt.Sprintf("invalid type: %T", v)) - } -} - -// ValueOfBool returns a new boolean value. -func ValueOfBool(v bool) Value { - if v { - return Value{typ: boolType, num: 1} - } else { - return Value{typ: boolType, num: 0} - } -} - -// ValueOfInt32 returns a new int32 value. -func ValueOfInt32(v int32) Value { - return Value{typ: int32Type, num: uint64(v)} -} - -// ValueOfInt64 returns a new int64 value. -func ValueOfInt64(v int64) Value { - return Value{typ: int64Type, num: uint64(v)} -} - -// ValueOfUint32 returns a new uint32 value. -func ValueOfUint32(v uint32) Value { - return Value{typ: uint32Type, num: uint64(v)} -} - -// ValueOfUint64 returns a new uint64 value. -func ValueOfUint64(v uint64) Value { - return Value{typ: uint64Type, num: v} -} - -// ValueOfFloat32 returns a new float32 value. -func ValueOfFloat32(v float32) Value { - return Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))} -} - -// ValueOfFloat64 returns a new float64 value. -func ValueOfFloat64(v float64) Value { - return Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))} -} - -// ValueOfString returns a new string value. -func ValueOfString(v string) Value { - return valueOfString(v) -} - -// ValueOfBytes returns a new bytes value. -func ValueOfBytes(v []byte) Value { - return valueOfBytes(v[:len(v):len(v)]) -} - -// ValueOfEnum returns a new enum value. -func ValueOfEnum(v EnumNumber) Value { - return Value{typ: enumType, num: uint64(v)} -} - -// ValueOfMessage returns a new Message value. -func ValueOfMessage(v Message) Value { - return valueOfIface(v) -} - -// ValueOfList returns a new List value. -func ValueOfList(v List) Value { - return valueOfIface(v) -} - -// ValueOfMap returns a new Map value. -func ValueOfMap(v Map) Value { - return valueOfIface(v) -} - -// IsValid reports whether v is populated with a value. -func (v Value) IsValid() bool { - return v.typ != nilType -} - -// Interface returns v as an any. -// -// Invariant: v == ValueOf(v).Interface() -func (v Value) Interface() any { - switch v.typ { - case nilType: - return nil - case boolType: - return v.Bool() - case int32Type: - return int32(v.Int()) - case int64Type: - return int64(v.Int()) - case uint32Type: - return uint32(v.Uint()) - case uint64Type: - return uint64(v.Uint()) - case float32Type: - return float32(v.Float()) - case float64Type: - return float64(v.Float()) - case stringType: - return v.String() - case bytesType: - return v.Bytes() - case enumType: - return v.Enum() - default: - return v.getIface() - } -} - -func (v Value) typeName() string { - switch v.typ { - case nilType: - return "nil" - case boolType: - return "bool" - case int32Type: - return "int32" - case int64Type: - return "int64" - case uint32Type: - return "uint32" - case uint64Type: - return "uint64" - case float32Type: - return "float32" - case float64Type: - return "float64" - case stringType: - return "string" - case bytesType: - return "bytes" - case enumType: - return "enum" - default: - switch v := v.getIface().(type) { - case Message: - return "message" - case List: - return "list" - case Map: - return "map" - default: - return fmt.Sprintf("<unknown: %T>", v) - } - } -} - -func (v Value) panicMessage(what string) string { - return fmt.Sprintf("type mismatch: cannot convert %v to %s", v.typeName(), what) -} - -// Bool returns v as a bool and panics if the type is not a bool. -func (v Value) Bool() bool { - switch v.typ { - case boolType: - return v.num > 0 - default: - panic(v.panicMessage("bool")) - } -} - -// Int returns v as a int64 and panics if the type is not a int32 or int64. -func (v Value) Int() int64 { - switch v.typ { - case int32Type, int64Type: - return int64(v.num) - default: - panic(v.panicMessage("int")) - } -} - -// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64. -func (v Value) Uint() uint64 { - switch v.typ { - case uint32Type, uint64Type: - return uint64(v.num) - default: - panic(v.panicMessage("uint")) - } -} - -// Float returns v as a float64 and panics if the type is not a float32 or float64. -func (v Value) Float() float64 { - switch v.typ { - case float32Type, float64Type: - return math.Float64frombits(uint64(v.num)) - default: - panic(v.panicMessage("float")) - } -} - -// String returns v as a string. Since this method implements [fmt.Stringer], -// this returns the formatted string value for any non-string type. -func (v Value) String() string { - switch v.typ { - case stringType: - return v.getString() - default: - return fmt.Sprint(v.Interface()) - } -} - -// Bytes returns v as a []byte and panics if the type is not a []byte. -func (v Value) Bytes() []byte { - switch v.typ { - case bytesType: - return v.getBytes() - default: - panic(v.panicMessage("bytes")) - } -} - -// Enum returns v as a [EnumNumber] and panics if the type is not a [EnumNumber]. -func (v Value) Enum() EnumNumber { - switch v.typ { - case enumType: - return EnumNumber(v.num) - default: - panic(v.panicMessage("enum")) - } -} - -// Message returns v as a [Message] and panics if the type is not a [Message]. -func (v Value) Message() Message { - switch vi := v.getIface().(type) { - case Message: - return vi - default: - panic(v.panicMessage("message")) - } -} - -// List returns v as a [List] and panics if the type is not a [List]. -func (v Value) List() List { - switch vi := v.getIface().(type) { - case List: - return vi - default: - panic(v.panicMessage("list")) - } -} - -// Map returns v as a [Map] and panics if the type is not a [Map]. -func (v Value) Map() Map { - switch vi := v.getIface().(type) { - case Map: - return vi - default: - panic(v.panicMessage("map")) - } -} - -// MapKey returns v as a [MapKey] and panics for invalid [MapKey] types. -func (v Value) MapKey() MapKey { - switch v.typ { - case boolType, int32Type, int64Type, uint32Type, uint64Type, stringType: - return MapKey(v) - default: - panic(v.panicMessage("map key")) - } -} - -// MapKey is used to index maps, where the Go type of the MapKey must match -// the specified key [Kind] (see [MessageDescriptor.IsMapEntry]). -// The following shows what Go type is used to represent each proto [Kind]: -// -// ╔═════════╤═════════════════════════════════════╗ -// ║ Go type │ Protobuf kind ║ -// ╠═════════╪═════════════════════════════════════╣ -// ║ bool │ BoolKind ║ -// ║ int32 │ Int32Kind, Sint32Kind, Sfixed32Kind ║ -// ║ int64 │ Int64Kind, Sint64Kind, Sfixed64Kind ║ -// ║ uint32 │ Uint32Kind, Fixed32Kind ║ -// ║ uint64 │ Uint64Kind, Fixed64Kind ║ -// ║ string │ StringKind ║ -// ╚═════════╧═════════════════════════════════════╝ -// -// A MapKey is constructed and accessed through a [Value]: -// -// k := ValueOf("hash").MapKey() // convert string to MapKey -// s := k.String() // convert MapKey to string -// -// The MapKey is a strict subset of valid types used in [Value]; -// converting a [Value] to a MapKey with an invalid type panics. -type MapKey value - -// IsValid reports whether k is populated with a value. -func (k MapKey) IsValid() bool { - return Value(k).IsValid() -} - -// Interface returns k as an any. -func (k MapKey) Interface() any { - return Value(k).Interface() -} - -// Bool returns k as a bool and panics if the type is not a bool. -func (k MapKey) Bool() bool { - return Value(k).Bool() -} - -// Int returns k as a int64 and panics if the type is not a int32 or int64. -func (k MapKey) Int() int64 { - return Value(k).Int() -} - -// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64. -func (k MapKey) Uint() uint64 { - return Value(k).Uint() -} - -// String returns k as a string. Since this method implements [fmt.Stringer], -// this returns the formatted string value for any non-string type. -func (k MapKey) String() string { - return Value(k).String() -} - -// Value returns k as a [Value]. -func (k MapKey) Value() Value { - return Value(k) -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go deleted file mode 100644 index 0015fcb..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.21 - -package protoreflect - -import ( - "unsafe" - - "google.golang.org/protobuf/internal/pragma" -) - -type ( - stringHeader struct { - Data unsafe.Pointer - Len int - } - sliceHeader struct { - Data unsafe.Pointer - Len int - Cap int - } - ifaceHeader struct { - Type unsafe.Pointer - Data unsafe.Pointer - } -) - -var ( - nilType = typeOf(nil) - boolType = typeOf(*new(bool)) - int32Type = typeOf(*new(int32)) - int64Type = typeOf(*new(int64)) - uint32Type = typeOf(*new(uint32)) - uint64Type = typeOf(*new(uint64)) - float32Type = typeOf(*new(float32)) - float64Type = typeOf(*new(float64)) - stringType = typeOf(*new(string)) - bytesType = typeOf(*new([]byte)) - enumType = typeOf(*new(EnumNumber)) -) - -// typeOf returns a pointer to the Go type information. -// The pointer is comparable and equal if and only if the types are identical. -func typeOf(t any) unsafe.Pointer { - return (*ifaceHeader)(unsafe.Pointer(&t)).Type -} - -// value is a union where only one type can be represented at a time. -// The struct is 24B large on 64-bit systems and requires the minimum storage -// necessary to represent each possible type. -// -// The Go GC needs to be able to scan variables containing pointers. -// As such, pointers and non-pointers cannot be intermixed. -type value struct { - pragma.DoNotCompare // 0B - - // typ stores the type of the value as a pointer to the Go type. - typ unsafe.Pointer // 8B - - // ptr stores the data pointer for a String, Bytes, or interface value. - ptr unsafe.Pointer // 8B - - // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or - // Enum value as a raw uint64. - // - // It is also used to store the length of a String or Bytes value; - // the capacity is ignored. - num uint64 // 8B -} - -func valueOfString(v string) Value { - p := (*stringHeader)(unsafe.Pointer(&v)) - return Value{typ: stringType, ptr: p.Data, num: uint64(len(v))} -} -func valueOfBytes(v []byte) Value { - p := (*sliceHeader)(unsafe.Pointer(&v)) - return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))} -} -func valueOfIface(v any) Value { - p := (*ifaceHeader)(unsafe.Pointer(&v)) - return Value{typ: p.Type, ptr: p.Data} -} - -func (v Value) getString() (x string) { - *(*stringHeader)(unsafe.Pointer(&x)) = stringHeader{Data: v.ptr, Len: int(v.num)} - return x -} -func (v Value) getBytes() (x []byte) { - *(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)} - return x -} -func (v Value) getIface() (x any) { - *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} - return x -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go deleted file mode 100644 index 479527b..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.21 - -package protoreflect - -import ( - "unsafe" - - "google.golang.org/protobuf/internal/pragma" -) - -type ( - ifaceHeader struct { - _ [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. - Type unsafe.Pointer - Data unsafe.Pointer - } -) - -var ( - nilType = typeOf(nil) - boolType = typeOf(*new(bool)) - int32Type = typeOf(*new(int32)) - int64Type = typeOf(*new(int64)) - uint32Type = typeOf(*new(uint32)) - uint64Type = typeOf(*new(uint64)) - float32Type = typeOf(*new(float32)) - float64Type = typeOf(*new(float64)) - stringType = typeOf(*new(string)) - bytesType = typeOf(*new([]byte)) - enumType = typeOf(*new(EnumNumber)) -) - -// typeOf returns a pointer to the Go type information. -// The pointer is comparable and equal if and only if the types are identical. -func typeOf(t any) unsafe.Pointer { - return (*ifaceHeader)(unsafe.Pointer(&t)).Type -} - -// value is a union where only one type can be represented at a time. -// The struct is 24B large on 64-bit systems and requires the minimum storage -// necessary to represent each possible type. -// -// The Go GC needs to be able to scan variables containing pointers. -// As such, pointers and non-pointers cannot be intermixed. -type value struct { - pragma.DoNotCompare // 0B - - // typ stores the type of the value as a pointer to the Go type. - typ unsafe.Pointer // 8B - - // ptr stores the data pointer for a String, Bytes, or interface value. - ptr unsafe.Pointer // 8B - - // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or - // Enum value as a raw uint64. - // - // It is also used to store the length of a String or Bytes value; - // the capacity is ignored. - num uint64 // 8B -} - -func valueOfString(v string) Value { - return Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))} -} -func valueOfBytes(v []byte) Value { - return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))} -} -func valueOfIface(v any) Value { - p := (*ifaceHeader)(unsafe.Pointer(&v)) - return Value{typ: p.Type, ptr: p.Data} -} - -func (v Value) getString() string { - return unsafe.String((*byte)(v.ptr), v.num) -} -func (v Value) getBytes() []byte { - return unsafe.Slice((*byte)(v.ptr), v.num) -} -func (v Value) getIface() (x any) { - *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} - return x -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go deleted file mode 100644 index de17773..0000000 --- a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +++ /dev/null @@ -1,882 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protoregistry provides data structures to register and lookup -// protobuf descriptor types. -// -// The [Files] registry contains file descriptors and provides the ability -// to iterate over the files or lookup a specific descriptor within the files. -// [Files] only contains protobuf descriptors and has no understanding of Go -// type information that may be associated with each descriptor. -// -// The [Types] registry contains descriptor types for which there is a known -// Go type associated with that descriptor. It provides the ability to iterate -// over the registered types or lookup a type by name. -package protoregistry - -import ( - "fmt" - "os" - "strings" - "sync" - - "google.golang.org/protobuf/internal/encoding/messageset" - "google.golang.org/protobuf/internal/errors" - "google.golang.org/protobuf/internal/flags" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// conflictPolicy configures the policy for handling registration conflicts. -// -// It can be over-written at compile time with a linker-initialized variable: -// -// go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -// -// It can be over-written at program execution with an environment variable: -// -// GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main -// -// Neither of the above are covered by the compatibility promise and -// may be removed in a future release of this module. -var conflictPolicy = "panic" // "panic" | "warn" | "ignore" - -// ignoreConflict reports whether to ignore a registration conflict -// given the descriptor being registered and the error. -// It is a variable so that the behavior is easily overridden in another file. -var ignoreConflict = func(d protoreflect.Descriptor, err error) bool { - const env = "GOLANG_PROTOBUF_REGISTRATION_CONFLICT" - const faq = "https://protobuf.dev/reference/go/faq#namespace-conflict" - policy := conflictPolicy - if v := os.Getenv(env); v != "" { - policy = v - } - switch policy { - case "panic": - panic(fmt.Sprintf("%v\nSee %v\n", err, faq)) - case "warn": - fmt.Fprintf(os.Stderr, "WARNING: %v\nSee %v\n\n", err, faq) - return true - case "ignore": - return true - default: - panic("invalid " + env + " value: " + os.Getenv(env)) - } -} - -var globalMutex sync.RWMutex - -// GlobalFiles is a global registry of file descriptors. -var GlobalFiles *Files = new(Files) - -// GlobalTypes is the registry used by default for type lookups -// unless a local registry is provided by the user. -var GlobalTypes *Types = new(Types) - -// NotFound is a sentinel error value to indicate that the type was not found. -// -// Since registry lookup can happen in the critical performance path, resolvers -// must return this exact error value, not an error wrapping it. -var NotFound = errors.New("not found") - -// Files is a registry for looking up or iterating over files and the -// descriptors contained within them. -// The Find and Range methods are safe for concurrent use. -type Files struct { - // The map of descsByName contains: - // EnumDescriptor - // EnumValueDescriptor - // MessageDescriptor - // ExtensionDescriptor - // ServiceDescriptor - // *packageDescriptor - // - // Note that files are stored as a slice, since a package may contain - // multiple files. Only top-level declarations are registered. - // Note that enum values are in the top-level since that are in the same - // scope as the parent enum. - descsByName map[protoreflect.FullName]any - filesByPath map[string][]protoreflect.FileDescriptor - numFiles int -} - -type packageDescriptor struct { - files []protoreflect.FileDescriptor -} - -// RegisterFile registers the provided file descriptor. -// -// If any descriptor within the file conflicts with the descriptor of any -// previously registered file (e.g., two enums with the same full name), -// then the file is not registered and an error is returned. -// -// It is permitted for multiple files to have the same file path. -func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error { - if r == GlobalFiles { - globalMutex.Lock() - defer globalMutex.Unlock() - } - if r.descsByName == nil { - r.descsByName = map[protoreflect.FullName]any{ - "": &packageDescriptor{}, - } - r.filesByPath = make(map[string][]protoreflect.FileDescriptor) - } - path := file.Path() - if prev := r.filesByPath[path]; len(prev) > 0 { - r.checkGenProtoConflict(path) - err := errors.New("file %q is already registered", file.Path()) - err = amendErrorWithCaller(err, prev[0], file) - if !(r == GlobalFiles && ignoreConflict(file, err)) { - return err - } - } - - for name := file.Package(); name != ""; name = name.Parent() { - switch prev := r.descsByName[name]; prev.(type) { - case nil, *packageDescriptor: - default: - err := errors.New("file %q has a package name conflict over %v", file.Path(), name) - err = amendErrorWithCaller(err, prev, file) - if r == GlobalFiles && ignoreConflict(file, err) { - err = nil - } - return err - } - } - var err error - var hasConflict bool - rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { - if prev := r.descsByName[d.FullName()]; prev != nil { - hasConflict = true - err = errors.New("file %q has a name conflict over %v", file.Path(), d.FullName()) - err = amendErrorWithCaller(err, prev, file) - if r == GlobalFiles && ignoreConflict(d, err) { - err = nil - } - } - }) - if hasConflict { - return err - } - - for name := file.Package(); name != ""; name = name.Parent() { - if r.descsByName[name] == nil { - r.descsByName[name] = &packageDescriptor{} - } - } - p := r.descsByName[file.Package()].(*packageDescriptor) - p.files = append(p.files, file) - rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) { - r.descsByName[d.FullName()] = d - }) - r.filesByPath[path] = append(r.filesByPath[path], file) - r.numFiles++ - return nil -} - -// Several well-known types were hosted in the google.golang.org/genproto module -// but were later moved to this module. To avoid a weak dependency on the -// genproto module (and its relatively large set of transitive dependencies), -// we rely on a registration conflict to determine whether the genproto version -// is too old (i.e., does not contain aliases to the new type declarations). -func (r *Files) checkGenProtoConflict(path string) { - if r != GlobalFiles { - return - } - var prevPath string - const prevModule = "google.golang.org/genproto" - const prevVersion = "cb27e3aa (May 26th, 2020)" - switch path { - case "google/protobuf/field_mask.proto": - prevPath = prevModule + "/protobuf/field_mask" - case "google/protobuf/api.proto": - prevPath = prevModule + "/protobuf/api" - case "google/protobuf/type.proto": - prevPath = prevModule + "/protobuf/ptype" - case "google/protobuf/source_context.proto": - prevPath = prevModule + "/protobuf/source_context" - default: - return - } - pkgName := strings.TrimSuffix(strings.TrimPrefix(path, "google/protobuf/"), ".proto") - pkgName = strings.Replace(pkgName, "_", "", -1) + "pb" // e.g., "field_mask" => "fieldmaskpb" - currPath := "google.golang.org/protobuf/types/known/" + pkgName - panic(fmt.Sprintf(""+ - "duplicate registration of %q\n"+ - "\n"+ - "The generated definition for this file has moved:\n"+ - "\tfrom: %q\n"+ - "\tto: %q\n"+ - "A dependency on the %q module must\n"+ - "be at version %v or higher.\n"+ - "\n"+ - "Upgrade the dependency by running:\n"+ - "\tgo get -u %v\n", - path, prevPath, currPath, prevModule, prevVersion, prevPath)) -} - -// FindDescriptorByName looks up a descriptor by the full name. -// -// This returns (nil, [NotFound]) if not found. -func (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - prefix := name - suffix := nameSuffix("") - for prefix != "" { - if d, ok := r.descsByName[prefix]; ok { - switch d := d.(type) { - case protoreflect.EnumDescriptor: - if d.FullName() == name { - return d, nil - } - case protoreflect.EnumValueDescriptor: - if d.FullName() == name { - return d, nil - } - case protoreflect.MessageDescriptor: - if d.FullName() == name { - return d, nil - } - if d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name { - return d, nil - } - case protoreflect.ExtensionDescriptor: - if d.FullName() == name { - return d, nil - } - case protoreflect.ServiceDescriptor: - if d.FullName() == name { - return d, nil - } - if d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name { - return d, nil - } - } - return nil, NotFound - } - prefix = prefix.Parent() - suffix = nameSuffix(name[len(prefix)+len("."):]) - } - return nil, NotFound -} - -func findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor { - name := suffix.Pop() - if suffix == "" { - if ed := md.Enums().ByName(name); ed != nil { - return ed - } - for i := md.Enums().Len() - 1; i >= 0; i-- { - if vd := md.Enums().Get(i).Values().ByName(name); vd != nil { - return vd - } - } - if xd := md.Extensions().ByName(name); xd != nil { - return xd - } - if fd := md.Fields().ByName(name); fd != nil { - return fd - } - if od := md.Oneofs().ByName(name); od != nil { - return od - } - } - if md := md.Messages().ByName(name); md != nil { - if suffix == "" { - return md - } - return findDescriptorInMessage(md, suffix) - } - return nil -} - -type nameSuffix string - -func (s *nameSuffix) Pop() (name protoreflect.Name) { - if i := strings.IndexByte(string(*s), '.'); i >= 0 { - name, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:] - } else { - name, *s = protoreflect.Name((*s)), "" - } - return name -} - -// FindFileByPath looks up a file by the path. -// -// This returns (nil, [NotFound]) if not found. -// This returns an error if multiple files have the same path. -func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - fds := r.filesByPath[path] - switch len(fds) { - case 0: - return nil, NotFound - case 1: - return fds[0], nil - default: - return nil, errors.New("multiple files named %q", path) - } -} - -// NumFiles reports the number of registered files, -// including duplicate files with the same name. -func (r *Files) NumFiles() int { - if r == nil { - return 0 - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - return r.numFiles -} - -// RangeFiles iterates over all registered files while f returns true. -// If multiple files have the same name, RangeFiles iterates over all of them. -// The iteration order is undefined. -func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) { - if r == nil { - return - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - for _, files := range r.filesByPath { - for _, file := range files { - if !f(file) { - return - } - } - } -} - -// NumFilesByPackage reports the number of registered files in a proto package. -func (r *Files) NumFilesByPackage(name protoreflect.FullName) int { - if r == nil { - return 0 - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - p, ok := r.descsByName[name].(*packageDescriptor) - if !ok { - return 0 - } - return len(p.files) -} - -// RangeFilesByPackage iterates over all registered files in a given proto package -// while f returns true. The iteration order is undefined. -func (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) { - if r == nil { - return - } - if r == GlobalFiles { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - p, ok := r.descsByName[name].(*packageDescriptor) - if !ok { - return - } - for _, file := range p.files { - if !f(file) { - return - } - } -} - -// rangeTopLevelDescriptors iterates over all top-level descriptors in a file -// which will be directly entered into the registry. -func rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) { - eds := fd.Enums() - for i := eds.Len() - 1; i >= 0; i-- { - f(eds.Get(i)) - vds := eds.Get(i).Values() - for i := vds.Len() - 1; i >= 0; i-- { - f(vds.Get(i)) - } - } - mds := fd.Messages() - for i := mds.Len() - 1; i >= 0; i-- { - f(mds.Get(i)) - } - xds := fd.Extensions() - for i := xds.Len() - 1; i >= 0; i-- { - f(xds.Get(i)) - } - sds := fd.Services() - for i := sds.Len() - 1; i >= 0; i-- { - f(sds.Get(i)) - } -} - -// MessageTypeResolver is an interface for looking up messages. -// -// A compliant implementation must deterministically return the same type -// if no error is encountered. -// -// The [Types] type implements this interface. -type MessageTypeResolver interface { - // FindMessageByName looks up a message by its full name. - // E.g., "google.protobuf.Any" - // - // This return (nil, NotFound) if not found. - FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) - - // FindMessageByURL looks up a message by a URL identifier. - // See documentation on google.protobuf.Any.type_url for the URL format. - // - // This returns (nil, NotFound) if not found. - FindMessageByURL(url string) (protoreflect.MessageType, error) -} - -// ExtensionTypeResolver is an interface for looking up extensions. -// -// A compliant implementation must deterministically return the same type -// if no error is encountered. -// -// The [Types] type implements this interface. -type ExtensionTypeResolver interface { - // FindExtensionByName looks up a extension field by the field's full name. - // Note that this is the full name of the field as determined by - // where the extension is declared and is unrelated to the full name of the - // message being extended. - // - // This returns (nil, NotFound) if not found. - FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) - - // FindExtensionByNumber looks up a extension field by the field number - // within some parent message, identified by full name. - // - // This returns (nil, NotFound) if not found. - FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) -} - -var ( - _ MessageTypeResolver = (*Types)(nil) - _ ExtensionTypeResolver = (*Types)(nil) -) - -// Types is a registry for looking up or iterating over descriptor types. -// The Find and Range methods are safe for concurrent use. -type Types struct { - typesByName typesByName - extensionsByMessage extensionsByMessage - - numEnums int - numMessages int - numExtensions int -} - -type ( - typesByName map[protoreflect.FullName]any - extensionsByMessage map[protoreflect.FullName]extensionsByNumber - extensionsByNumber map[protoreflect.FieldNumber]protoreflect.ExtensionType -) - -// RegisterMessage registers the provided message type. -// -// If a naming conflict occurs, the type is not registered and an error is returned. -func (r *Types) RegisterMessage(mt protoreflect.MessageType) error { - // Under rare circumstances getting the descriptor might recursively - // examine the registry, so fetch it before locking. - md := mt.Descriptor() - - if r == GlobalTypes { - globalMutex.Lock() - defer globalMutex.Unlock() - } - - if err := r.register("message", md, mt); err != nil { - return err - } - r.numMessages++ - return nil -} - -// RegisterEnum registers the provided enum type. -// -// If a naming conflict occurs, the type is not registered and an error is returned. -func (r *Types) RegisterEnum(et protoreflect.EnumType) error { - // Under rare circumstances getting the descriptor might recursively - // examine the registry, so fetch it before locking. - ed := et.Descriptor() - - if r == GlobalTypes { - globalMutex.Lock() - defer globalMutex.Unlock() - } - - if err := r.register("enum", ed, et); err != nil { - return err - } - r.numEnums++ - return nil -} - -// RegisterExtension registers the provided extension type. -// -// If a naming conflict occurs, the type is not registered and an error is returned. -func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error { - // Under rare circumstances getting the descriptor might recursively - // examine the registry, so fetch it before locking. - // - // A known case where this can happen: Fetching the TypeDescriptor for a - // legacy ExtensionDesc can consult the global registry. - xd := xt.TypeDescriptor() - - if r == GlobalTypes { - globalMutex.Lock() - defer globalMutex.Unlock() - } - - field := xd.Number() - message := xd.ContainingMessage().FullName() - if prev := r.extensionsByMessage[message][field]; prev != nil { - err := errors.New("extension number %d is already registered on message %v", field, message) - err = amendErrorWithCaller(err, prev, xt) - if !(r == GlobalTypes && ignoreConflict(xd, err)) { - return err - } - } - - if err := r.register("extension", xd, xt); err != nil { - return err - } - if r.extensionsByMessage == nil { - r.extensionsByMessage = make(extensionsByMessage) - } - if r.extensionsByMessage[message] == nil { - r.extensionsByMessage[message] = make(extensionsByNumber) - } - r.extensionsByMessage[message][field] = xt - r.numExtensions++ - return nil -} - -func (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error { - name := desc.FullName() - prev := r.typesByName[name] - if prev != nil { - err := errors.New("%v %v is already registered", kind, name) - err = amendErrorWithCaller(err, prev, typ) - if !(r == GlobalTypes && ignoreConflict(desc, err)) { - return err - } - } - if r.typesByName == nil { - r.typesByName = make(typesByName) - } - r.typesByName[name] = typ - return nil -} - -// FindEnumByName looks up an enum by its full name. -// E.g., "google.protobuf.Field.Kind". -// -// This returns (nil, [NotFound]) if not found. -func (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - if v := r.typesByName[enum]; v != nil { - if et, _ := v.(protoreflect.EnumType); et != nil { - return et, nil - } - return nil, errors.New("found wrong type: got %v, want enum", typeName(v)) - } - return nil, NotFound -} - -// FindMessageByName looks up a message by its full name, -// e.g. "google.protobuf.Any". -// -// This returns (nil, [NotFound]) if not found. -func (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - if v := r.typesByName[message]; v != nil { - if mt, _ := v.(protoreflect.MessageType); mt != nil { - return mt, nil - } - return nil, errors.New("found wrong type: got %v, want message", typeName(v)) - } - return nil, NotFound -} - -// FindMessageByURL looks up a message by a URL identifier. -// See documentation on google.protobuf.Any.type_url for the URL format. -// -// This returns (nil, [NotFound]) if not found. -func (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) { - // This function is similar to FindMessageByName but - // truncates anything before and including '/' in the URL. - if r == nil { - return nil, NotFound - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - message := protoreflect.FullName(url) - if i := strings.LastIndexByte(url, '/'); i >= 0 { - message = message[i+len("/"):] - } - - if v := r.typesByName[message]; v != nil { - if mt, _ := v.(protoreflect.MessageType); mt != nil { - return mt, nil - } - return nil, errors.New("found wrong type: got %v, want message", typeName(v)) - } - return nil, NotFound -} - -// FindExtensionByName looks up a extension field by the field's full name. -// Note that this is the full name of the field as determined by -// where the extension is declared and is unrelated to the full name of the -// message being extended. -// -// This returns (nil, [NotFound]) if not found. -func (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - if v := r.typesByName[field]; v != nil { - if xt, _ := v.(protoreflect.ExtensionType); xt != nil { - return xt, nil - } - - // MessageSet extensions are special in that the name of the extension - // is the name of the message type used to extend the MessageSet. - // This naming scheme is used by text and JSON serialization. - // - // This feature is protected by the ProtoLegacy flag since MessageSets - // are a proto1 feature that is long deprecated. - if flags.ProtoLegacy { - if _, ok := v.(protoreflect.MessageType); ok { - field := field.Append(messageset.ExtensionName) - if v := r.typesByName[field]; v != nil { - if xt, _ := v.(protoreflect.ExtensionType); xt != nil { - if messageset.IsMessageSetExtension(xt.TypeDescriptor()) { - return xt, nil - } - } - } - } - } - - return nil, errors.New("found wrong type: got %v, want extension", typeName(v)) - } - return nil, NotFound -} - -// FindExtensionByNumber looks up a extension field by the field number -// within some parent message, identified by full name. -// -// This returns (nil, [NotFound]) if not found. -func (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) { - if r == nil { - return nil, NotFound - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - if xt, ok := r.extensionsByMessage[message][field]; ok { - return xt, nil - } - return nil, NotFound -} - -// NumEnums reports the number of registered enums. -func (r *Types) NumEnums() int { - if r == nil { - return 0 - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - return r.numEnums -} - -// RangeEnums iterates over all registered enums while f returns true. -// Iteration order is undefined. -func (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) { - if r == nil { - return - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - for _, typ := range r.typesByName { - if et, ok := typ.(protoreflect.EnumType); ok { - if !f(et) { - return - } - } - } -} - -// NumMessages reports the number of registered messages. -func (r *Types) NumMessages() int { - if r == nil { - return 0 - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - return r.numMessages -} - -// RangeMessages iterates over all registered messages while f returns true. -// Iteration order is undefined. -func (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) { - if r == nil { - return - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - for _, typ := range r.typesByName { - if mt, ok := typ.(protoreflect.MessageType); ok { - if !f(mt) { - return - } - } - } -} - -// NumExtensions reports the number of registered extensions. -func (r *Types) NumExtensions() int { - if r == nil { - return 0 - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - return r.numExtensions -} - -// RangeExtensions iterates over all registered extensions while f returns true. -// Iteration order is undefined. -func (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) { - if r == nil { - return - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - for _, typ := range r.typesByName { - if xt, ok := typ.(protoreflect.ExtensionType); ok { - if !f(xt) { - return - } - } - } -} - -// NumExtensionsByMessage reports the number of registered extensions for -// a given message type. -func (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int { - if r == nil { - return 0 - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - return len(r.extensionsByMessage[message]) -} - -// RangeExtensionsByMessage iterates over all registered extensions filtered -// by a given message type while f returns true. Iteration order is undefined. -func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) { - if r == nil { - return - } - if r == GlobalTypes { - globalMutex.RLock() - defer globalMutex.RUnlock() - } - for _, xt := range r.extensionsByMessage[message] { - if !f(xt) { - return - } - } -} - -func typeName(t any) string { - switch t.(type) { - case protoreflect.EnumType: - return "enum" - case protoreflect.MessageType: - return "message" - case protoreflect.ExtensionType: - return "extension" - default: - return fmt.Sprintf("%T", t) - } -} - -func amendErrorWithCaller(err error, prev, curr any) error { - prevPkg := goPackage(prev) - currPkg := goPackage(curr) - if prevPkg == "" || currPkg == "" || prevPkg == currPkg { - return err - } - return errors.New("%s\n\tpreviously from: %q\n\tcurrently from: %q", err, prevPkg, currPkg) -} - -func goPackage(v any) string { - switch d := v.(type) { - case protoreflect.EnumType: - v = d.Descriptor() - case protoreflect.MessageType: - v = d.Descriptor() - case protoreflect.ExtensionType: - v = d.TypeDescriptor() - } - if d, ok := v.(protoreflect.Descriptor); ok { - v = d.ParentFile() - } - if d, ok := v.(interface{ GoPackagePath() string }); ok { - return d.GoPackagePath() - } - return "" -} diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go b/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go deleted file mode 100644 index c587276..0000000 --- a/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoiface - -type MessageV1 interface { - Reset() - String() string - ProtoMessage() -} - -type ExtensionRangeV1 struct { - Start, End int32 // both inclusive -} diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go deleted file mode 100644 index 2461565..0000000 --- a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protoiface contains types referenced or implemented by messages. -// -// WARNING: This package should only be imported by message implementations. -// The functionality found in this package should be accessed through -// higher-level abstractions provided by the proto package. -package protoiface - -import ( - "google.golang.org/protobuf/internal/pragma" - "google.golang.org/protobuf/reflect/protoreflect" -) - -// Methods is a set of optional fast-path implementations of various operations. -type Methods = struct { - pragma.NoUnkeyedLiterals - - // Flags indicate support for optional features. - Flags SupportFlags - - // Size returns the size in bytes of the wire-format encoding of a message. - // Marshal must be provided if a custom Size is provided. - Size func(SizeInput) SizeOutput - - // Marshal formats a message in the wire-format encoding to the provided buffer. - // Size should be provided if a custom Marshal is provided. - // It must not return an error for a partial message. - Marshal func(MarshalInput) (MarshalOutput, error) - - // Unmarshal parses the wire-format encoding and merges the result into a message. - // It must not reset the target message or return an error for a partial message. - Unmarshal func(UnmarshalInput) (UnmarshalOutput, error) - - // Merge merges the contents of a source message into a destination message. - Merge func(MergeInput) MergeOutput - - // CheckInitialized returns an error if any required fields in the message are not set. - CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error) - - // Equal compares two messages and returns EqualOutput.Equal == true if they are equal. - Equal func(EqualInput) EqualOutput -} - -// SupportFlags indicate support for optional features. -type SupportFlags = uint64 - -const ( - // SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported. - SupportMarshalDeterministic SupportFlags = 1 << iota - - // SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported. - SupportUnmarshalDiscardUnknown -) - -// SizeInput is input to the Size method. -type SizeInput = struct { - pragma.NoUnkeyedLiterals - - Message protoreflect.Message - Flags MarshalInputFlags -} - -// SizeOutput is output from the Size method. -type SizeOutput = struct { - pragma.NoUnkeyedLiterals - - Size int -} - -// MarshalInput is input to the Marshal method. -type MarshalInput = struct { - pragma.NoUnkeyedLiterals - - Message protoreflect.Message - Buf []byte // output is appended to this buffer - Flags MarshalInputFlags -} - -// MarshalOutput is output from the Marshal method. -type MarshalOutput = struct { - pragma.NoUnkeyedLiterals - - Buf []byte // contains marshaled message -} - -// MarshalInputFlags configure the marshaler. -// Most flags correspond to fields in proto.MarshalOptions. -type MarshalInputFlags = uint8 - -const ( - MarshalDeterministic MarshalInputFlags = 1 << iota - MarshalUseCachedSize -) - -// UnmarshalInput is input to the Unmarshal method. -type UnmarshalInput = struct { - pragma.NoUnkeyedLiterals - - Message protoreflect.Message - Buf []byte // input buffer - Flags UnmarshalInputFlags - Resolver interface { - FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) - FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) - } - Depth int -} - -// UnmarshalOutput is output from the Unmarshal method. -type UnmarshalOutput = struct { - pragma.NoUnkeyedLiterals - - Flags UnmarshalOutputFlags -} - -// UnmarshalInputFlags configure the unmarshaler. -// Most flags correspond to fields in proto.UnmarshalOptions. -type UnmarshalInputFlags = uint8 - -const ( - UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota -) - -// UnmarshalOutputFlags are output from the Unmarshal method. -type UnmarshalOutputFlags = uint8 - -const ( - // UnmarshalInitialized may be set on return if all required fields are known to be set. - // If unset, then it does not necessarily indicate that the message is uninitialized, - // only that its status could not be confirmed. - UnmarshalInitialized UnmarshalOutputFlags = 1 << iota -) - -// MergeInput is input to the Merge method. -type MergeInput = struct { - pragma.NoUnkeyedLiterals - - Source protoreflect.Message - Destination protoreflect.Message -} - -// MergeOutput is output from the Merge method. -type MergeOutput = struct { - pragma.NoUnkeyedLiterals - - Flags MergeOutputFlags -} - -// MergeOutputFlags are output from the Merge method. -type MergeOutputFlags = uint8 - -const ( - // MergeComplete reports whether the merge was performed. - // If unset, the merger must have made no changes to the destination. - MergeComplete MergeOutputFlags = 1 << iota -) - -// CheckInitializedInput is input to the CheckInitialized method. -type CheckInitializedInput = struct { - pragma.NoUnkeyedLiterals - - Message protoreflect.Message -} - -// CheckInitializedOutput is output from the CheckInitialized method. -type CheckInitializedOutput = struct { - pragma.NoUnkeyedLiterals -} - -// EqualInput is input to the Equal method. -type EqualInput = struct { - pragma.NoUnkeyedLiterals - - MessageA protoreflect.Message - MessageB protoreflect.Message -} - -// EqualOutput is output from the Equal method. -type EqualOutput = struct { - pragma.NoUnkeyedLiterals - - Equal bool -} diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go deleted file mode 100644 index 4a1ab7f..0000000 --- a/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package protoimpl contains the default implementation for messages -// generated by protoc-gen-go. -// -// WARNING: This package should only ever be imported by generated messages. -// The compatibility agreement covers nothing except for functionality needed -// to keep existing generated messages operational. Breakages that occur due -// to unauthorized usages of this package are not the author's responsibility. -package protoimpl - -import ( - "google.golang.org/protobuf/internal/filedesc" - "google.golang.org/protobuf/internal/filetype" - "google.golang.org/protobuf/internal/impl" -) - -// UnsafeEnabled specifies whether package unsafe can be used. -const UnsafeEnabled = impl.UnsafeEnabled - -type ( - // Types used by generated code in init functions. - DescBuilder = filedesc.Builder - TypeBuilder = filetype.Builder - - // Types used by generated code to implement EnumType, MessageType, and ExtensionType. - EnumInfo = impl.EnumInfo - MessageInfo = impl.MessageInfo - ExtensionInfo = impl.ExtensionInfo - - // Types embedded in generated messages. - MessageState = impl.MessageState - SizeCache = impl.SizeCache - WeakFields = impl.WeakFields - UnknownFields = impl.UnknownFields - ExtensionFields = impl.ExtensionFields - ExtensionFieldV1 = impl.ExtensionField - - Pointer = impl.Pointer -) - -var X impl.Export diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go deleted file mode 100644 index a105cb2..0000000 --- a/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package protoimpl - -import ( - "google.golang.org/protobuf/internal/version" -) - -const ( - // MaxVersion is the maximum supported version for generated .pb.go files. - // It is always the current version of the module. - MaxVersion = version.Minor - - // GenVersion is the runtime version required by generated .pb.go files. - // This is incremented when generated code relies on new functionality - // in the runtime. - GenVersion = 20 - - // MinVersion is the minimum supported version for generated .pb.go files. - // This is incremented when the runtime drops support for old code. - MinVersion = 0 -) - -// EnforceVersion is used by code generated by protoc-gen-go -// to statically enforce minimum and maximum versions of this package. -// A compilation failure implies either that: -// - the runtime package is too old and needs to be updated OR -// - the generated code is too old and needs to be regenerated. -// -// The runtime package can be upgraded by running: -// -// go get google.golang.org/protobuf -// -// The generated code can be regenerated by running: -// -// protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES} -// -// Example usage by generated code: -// -// const ( -// // Verify that this generated code is sufficiently up-to-date. -// _ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion) -// // Verify that runtime/protoimpl is sufficiently up-to-date. -// _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion) -// ) -// -// The genVersion is the current minor version used to generated the code. -// This compile-time check relies on negative integer overflow of a uint -// being a compilation failure (guaranteed by the Go specification). -type EnforceVersion uint - -// This enforces the following invariant: -// -// MinVersion ≤ GenVersion ≤ MaxVersion -const ( - _ = EnforceVersion(GenVersion - MinVersion) - _ = EnforceVersion(MaxVersion - GenVersion) -) diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go deleted file mode 100644 index 6dea75c..0000000 --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +++ /dev/null @@ -1,5341 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/descriptor.proto - -package descriptorpb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -// The full set of known editions. -type Edition int32 - -const ( - // A placeholder for an unknown edition value. - Edition_EDITION_UNKNOWN Edition = 0 - // A placeholder edition for specifying default behaviors *before* a feature - // was first introduced. This is effectively an "infinite past". - Edition_EDITION_LEGACY Edition = 900 - // Legacy syntax "editions". These pre-date editions, but behave much like - // distinct editions. These can't be used to specify the edition of proto - // files, but feature definitions must supply proto2/proto3 defaults for - // backwards compatibility. - Edition_EDITION_PROTO2 Edition = 998 - Edition_EDITION_PROTO3 Edition = 999 - // Editions that have been released. The specific values are arbitrary and - // should not be depended on, but they will always be time-ordered for easy - // comparison. - Edition_EDITION_2023 Edition = 1000 - Edition_EDITION_2024 Edition = 1001 - // Placeholder editions for testing feature resolution. These should not be - // used or relyed on outside of tests. - Edition_EDITION_1_TEST_ONLY Edition = 1 - Edition_EDITION_2_TEST_ONLY Edition = 2 - Edition_EDITION_99997_TEST_ONLY Edition = 99997 - Edition_EDITION_99998_TEST_ONLY Edition = 99998 - Edition_EDITION_99999_TEST_ONLY Edition = 99999 - // Placeholder for specifying unbounded edition support. This should only - // ever be used by plugins that can expect to never require any changes to - // support a new edition. - Edition_EDITION_MAX Edition = 2147483647 -) - -// Enum value maps for Edition. -var ( - Edition_name = map[int32]string{ - 0: "EDITION_UNKNOWN", - 900: "EDITION_LEGACY", - 998: "EDITION_PROTO2", - 999: "EDITION_PROTO3", - 1000: "EDITION_2023", - 1001: "EDITION_2024", - 1: "EDITION_1_TEST_ONLY", - 2: "EDITION_2_TEST_ONLY", - 99997: "EDITION_99997_TEST_ONLY", - 99998: "EDITION_99998_TEST_ONLY", - 99999: "EDITION_99999_TEST_ONLY", - 2147483647: "EDITION_MAX", - } - Edition_value = map[string]int32{ - "EDITION_UNKNOWN": 0, - "EDITION_LEGACY": 900, - "EDITION_PROTO2": 998, - "EDITION_PROTO3": 999, - "EDITION_2023": 1000, - "EDITION_2024": 1001, - "EDITION_1_TEST_ONLY": 1, - "EDITION_2_TEST_ONLY": 2, - "EDITION_99997_TEST_ONLY": 99997, - "EDITION_99998_TEST_ONLY": 99998, - "EDITION_99999_TEST_ONLY": 99999, - "EDITION_MAX": 2147483647, - } -) - -func (x Edition) Enum() *Edition { - p := new(Edition) - *p = x - return p -} - -func (x Edition) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Edition) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor() -} - -func (Edition) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[0] -} - -func (x Edition) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *Edition) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Edition(num) - return nil -} - -// Deprecated: Use Edition.Descriptor instead. -func (Edition) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0} -} - -// The verification state of the extension range. -type ExtensionRangeOptions_VerificationState int32 - -const ( - // All the extensions of the range must be declared. - ExtensionRangeOptions_DECLARATION ExtensionRangeOptions_VerificationState = 0 - ExtensionRangeOptions_UNVERIFIED ExtensionRangeOptions_VerificationState = 1 -) - -// Enum value maps for ExtensionRangeOptions_VerificationState. -var ( - ExtensionRangeOptions_VerificationState_name = map[int32]string{ - 0: "DECLARATION", - 1: "UNVERIFIED", - } - ExtensionRangeOptions_VerificationState_value = map[string]int32{ - "DECLARATION": 0, - "UNVERIFIED": 1, - } -) - -func (x ExtensionRangeOptions_VerificationState) Enum() *ExtensionRangeOptions_VerificationState { - p := new(ExtensionRangeOptions_VerificationState) - *p = x - return p -} - -func (x ExtensionRangeOptions_VerificationState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor() -} - -func (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[1] -} - -func (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *ExtensionRangeOptions_VerificationState) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = ExtensionRangeOptions_VerificationState(num) - return nil -} - -// Deprecated: Use ExtensionRangeOptions_VerificationState.Descriptor instead. -func (ExtensionRangeOptions_VerificationState) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0} -} - -type FieldDescriptorProto_Type int32 - -const ( - // 0 is reserved for errors. - // Order is weird for historical reasons. - FieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1 - FieldDescriptorProto_TYPE_FLOAT FieldDescriptorProto_Type = 2 - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - FieldDescriptorProto_TYPE_INT64 FieldDescriptorProto_Type = 3 - FieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4 - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - FieldDescriptorProto_TYPE_INT32 FieldDescriptorProto_Type = 5 - FieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6 - FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7 - FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 - FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 - // Tag-delimited aggregate. - // Group type is deprecated and not supported after google.protobuf. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. In Editions, the group wire format - // can be enabled via the `message_encoding` feature. - FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 - FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate. - // New in version 2. - FieldDescriptorProto_TYPE_BYTES FieldDescriptorProto_Type = 12 - FieldDescriptorProto_TYPE_UINT32 FieldDescriptorProto_Type = 13 - FieldDescriptorProto_TYPE_ENUM FieldDescriptorProto_Type = 14 - FieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15 - FieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16 - FieldDescriptorProto_TYPE_SINT32 FieldDescriptorProto_Type = 17 // Uses ZigZag encoding. - FieldDescriptorProto_TYPE_SINT64 FieldDescriptorProto_Type = 18 // Uses ZigZag encoding. -) - -// Enum value maps for FieldDescriptorProto_Type. -var ( - FieldDescriptorProto_Type_name = map[int32]string{ - 1: "TYPE_DOUBLE", - 2: "TYPE_FLOAT", - 3: "TYPE_INT64", - 4: "TYPE_UINT64", - 5: "TYPE_INT32", - 6: "TYPE_FIXED64", - 7: "TYPE_FIXED32", - 8: "TYPE_BOOL", - 9: "TYPE_STRING", - 10: "TYPE_GROUP", - 11: "TYPE_MESSAGE", - 12: "TYPE_BYTES", - 13: "TYPE_UINT32", - 14: "TYPE_ENUM", - 15: "TYPE_SFIXED32", - 16: "TYPE_SFIXED64", - 17: "TYPE_SINT32", - 18: "TYPE_SINT64", - } - FieldDescriptorProto_Type_value = map[string]int32{ - "TYPE_DOUBLE": 1, - "TYPE_FLOAT": 2, - "TYPE_INT64": 3, - "TYPE_UINT64": 4, - "TYPE_INT32": 5, - "TYPE_FIXED64": 6, - "TYPE_FIXED32": 7, - "TYPE_BOOL": 8, - "TYPE_STRING": 9, - "TYPE_GROUP": 10, - "TYPE_MESSAGE": 11, - "TYPE_BYTES": 12, - "TYPE_UINT32": 13, - "TYPE_ENUM": 14, - "TYPE_SFIXED32": 15, - "TYPE_SFIXED64": 16, - "TYPE_SINT32": 17, - "TYPE_SINT64": 18, - } -) - -func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type { - p := new(FieldDescriptorProto_Type) - *p = x - return p -} - -func (x FieldDescriptorProto_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor() -} - -func (FieldDescriptorProto_Type) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[2] -} - -func (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldDescriptorProto_Type) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldDescriptorProto_Type(num) - return nil -} - -// Deprecated: Use FieldDescriptorProto_Type.Descriptor instead. -func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0} -} - -type FieldDescriptorProto_Label int32 - -const ( - // 0 is reserved for errors - FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1 - FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3 - // The required label is only allowed in google.protobuf. In proto3 and Editions - // it's explicitly prohibited. In Editions, the `field_presence` feature - // can be used to get this behavior. - FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2 -) - -// Enum value maps for FieldDescriptorProto_Label. -var ( - FieldDescriptorProto_Label_name = map[int32]string{ - 1: "LABEL_OPTIONAL", - 3: "LABEL_REPEATED", - 2: "LABEL_REQUIRED", - } - FieldDescriptorProto_Label_value = map[string]int32{ - "LABEL_OPTIONAL": 1, - "LABEL_REPEATED": 3, - "LABEL_REQUIRED": 2, - } -) - -func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label { - p := new(FieldDescriptorProto_Label) - *p = x - return p -} - -func (x FieldDescriptorProto_Label) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor() -} - -func (FieldDescriptorProto_Label) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[3] -} - -func (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldDescriptorProto_Label) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldDescriptorProto_Label(num) - return nil -} - -// Deprecated: Use FieldDescriptorProto_Label.Descriptor instead. -func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1} -} - -// Generated classes can be optimized for speed or code size. -type FileOptions_OptimizeMode int32 - -const ( - FileOptions_SPEED FileOptions_OptimizeMode = 1 // Generate complete code for parsing, serialization, - // etc. - FileOptions_CODE_SIZE FileOptions_OptimizeMode = 2 // Use ReflectionOps to implement these methods. - FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 // Generate code using MessageLite and the lite runtime. -) - -// Enum value maps for FileOptions_OptimizeMode. -var ( - FileOptions_OptimizeMode_name = map[int32]string{ - 1: "SPEED", - 2: "CODE_SIZE", - 3: "LITE_RUNTIME", - } - FileOptions_OptimizeMode_value = map[string]int32{ - "SPEED": 1, - "CODE_SIZE": 2, - "LITE_RUNTIME": 3, - } -) - -func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode { - p := new(FileOptions_OptimizeMode) - *p = x - return p -} - -func (x FileOptions_OptimizeMode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor() -} - -func (FileOptions_OptimizeMode) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[4] -} - -func (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FileOptions_OptimizeMode) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FileOptions_OptimizeMode(num) - return nil -} - -// Deprecated: Use FileOptions_OptimizeMode.Descriptor instead. -func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0} -} - -type FieldOptions_CType int32 - -const ( - // Default mode. - FieldOptions_STRING FieldOptions_CType = 0 - // The option [ctype=CORD] may be applied to a non-repeated field of type - // "bytes". It indicates that in C++, the data should be stored in a Cord - // instead of a string. For very large strings, this may reduce memory - // fragmentation. It may also allow better performance when parsing from a - // Cord, or when parsing with aliasing enabled, as the parsed Cord may then - // alias the original buffer. - FieldOptions_CORD FieldOptions_CType = 1 - FieldOptions_STRING_PIECE FieldOptions_CType = 2 -) - -// Enum value maps for FieldOptions_CType. -var ( - FieldOptions_CType_name = map[int32]string{ - 0: "STRING", - 1: "CORD", - 2: "STRING_PIECE", - } - FieldOptions_CType_value = map[string]int32{ - "STRING": 0, - "CORD": 1, - "STRING_PIECE": 2, - } -) - -func (x FieldOptions_CType) Enum() *FieldOptions_CType { - p := new(FieldOptions_CType) - *p = x - return p -} - -func (x FieldOptions_CType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor() -} - -func (FieldOptions_CType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[5] -} - -func (x FieldOptions_CType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldOptions_CType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldOptions_CType(num) - return nil -} - -// Deprecated: Use FieldOptions_CType.Descriptor instead. -func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0} -} - -type FieldOptions_JSType int32 - -const ( - // Use the default type. - FieldOptions_JS_NORMAL FieldOptions_JSType = 0 - // Use JavaScript strings. - FieldOptions_JS_STRING FieldOptions_JSType = 1 - // Use JavaScript numbers. - FieldOptions_JS_NUMBER FieldOptions_JSType = 2 -) - -// Enum value maps for FieldOptions_JSType. -var ( - FieldOptions_JSType_name = map[int32]string{ - 0: "JS_NORMAL", - 1: "JS_STRING", - 2: "JS_NUMBER", - } - FieldOptions_JSType_value = map[string]int32{ - "JS_NORMAL": 0, - "JS_STRING": 1, - "JS_NUMBER": 2, - } -) - -func (x FieldOptions_JSType) Enum() *FieldOptions_JSType { - p := new(FieldOptions_JSType) - *p = x - return p -} - -func (x FieldOptions_JSType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor() -} - -func (FieldOptions_JSType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[6] -} - -func (x FieldOptions_JSType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldOptions_JSType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldOptions_JSType(num) - return nil -} - -// Deprecated: Use FieldOptions_JSType.Descriptor instead. -func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1} -} - -// If set to RETENTION_SOURCE, the option will be omitted from the binary. -// Note: as of January 2023, support for this is in progress and does not yet -// have an effect (b/264593489). -type FieldOptions_OptionRetention int32 - -const ( - FieldOptions_RETENTION_UNKNOWN FieldOptions_OptionRetention = 0 - FieldOptions_RETENTION_RUNTIME FieldOptions_OptionRetention = 1 - FieldOptions_RETENTION_SOURCE FieldOptions_OptionRetention = 2 -) - -// Enum value maps for FieldOptions_OptionRetention. -var ( - FieldOptions_OptionRetention_name = map[int32]string{ - 0: "RETENTION_UNKNOWN", - 1: "RETENTION_RUNTIME", - 2: "RETENTION_SOURCE", - } - FieldOptions_OptionRetention_value = map[string]int32{ - "RETENTION_UNKNOWN": 0, - "RETENTION_RUNTIME": 1, - "RETENTION_SOURCE": 2, - } -) - -func (x FieldOptions_OptionRetention) Enum() *FieldOptions_OptionRetention { - p := new(FieldOptions_OptionRetention) - *p = x - return p -} - -func (x FieldOptions_OptionRetention) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor() -} - -func (FieldOptions_OptionRetention) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[7] -} - -func (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldOptions_OptionRetention) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldOptions_OptionRetention(num) - return nil -} - -// Deprecated: Use FieldOptions_OptionRetention.Descriptor instead. -func (FieldOptions_OptionRetention) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 2} -} - -// This indicates the types of entities that the field may apply to when used -// as an option. If it is unset, then the field may be freely used as an -// option on any kind of entity. Note: as of January 2023, support for this is -// in progress and does not yet have an effect (b/264593489). -type FieldOptions_OptionTargetType int32 - -const ( - FieldOptions_TARGET_TYPE_UNKNOWN FieldOptions_OptionTargetType = 0 - FieldOptions_TARGET_TYPE_FILE FieldOptions_OptionTargetType = 1 - FieldOptions_TARGET_TYPE_EXTENSION_RANGE FieldOptions_OptionTargetType = 2 - FieldOptions_TARGET_TYPE_MESSAGE FieldOptions_OptionTargetType = 3 - FieldOptions_TARGET_TYPE_FIELD FieldOptions_OptionTargetType = 4 - FieldOptions_TARGET_TYPE_ONEOF FieldOptions_OptionTargetType = 5 - FieldOptions_TARGET_TYPE_ENUM FieldOptions_OptionTargetType = 6 - FieldOptions_TARGET_TYPE_ENUM_ENTRY FieldOptions_OptionTargetType = 7 - FieldOptions_TARGET_TYPE_SERVICE FieldOptions_OptionTargetType = 8 - FieldOptions_TARGET_TYPE_METHOD FieldOptions_OptionTargetType = 9 -) - -// Enum value maps for FieldOptions_OptionTargetType. -var ( - FieldOptions_OptionTargetType_name = map[int32]string{ - 0: "TARGET_TYPE_UNKNOWN", - 1: "TARGET_TYPE_FILE", - 2: "TARGET_TYPE_EXTENSION_RANGE", - 3: "TARGET_TYPE_MESSAGE", - 4: "TARGET_TYPE_FIELD", - 5: "TARGET_TYPE_ONEOF", - 6: "TARGET_TYPE_ENUM", - 7: "TARGET_TYPE_ENUM_ENTRY", - 8: "TARGET_TYPE_SERVICE", - 9: "TARGET_TYPE_METHOD", - } - FieldOptions_OptionTargetType_value = map[string]int32{ - "TARGET_TYPE_UNKNOWN": 0, - "TARGET_TYPE_FILE": 1, - "TARGET_TYPE_EXTENSION_RANGE": 2, - "TARGET_TYPE_MESSAGE": 3, - "TARGET_TYPE_FIELD": 4, - "TARGET_TYPE_ONEOF": 5, - "TARGET_TYPE_ENUM": 6, - "TARGET_TYPE_ENUM_ENTRY": 7, - "TARGET_TYPE_SERVICE": 8, - "TARGET_TYPE_METHOD": 9, - } -) - -func (x FieldOptions_OptionTargetType) Enum() *FieldOptions_OptionTargetType { - p := new(FieldOptions_OptionTargetType) - *p = x - return p -} - -func (x FieldOptions_OptionTargetType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor() -} - -func (FieldOptions_OptionTargetType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[8] -} - -func (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FieldOptions_OptionTargetType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FieldOptions_OptionTargetType(num) - return nil -} - -// Deprecated: Use FieldOptions_OptionTargetType.Descriptor instead. -func (FieldOptions_OptionTargetType) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 3} -} - -// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, -// or neither? HTTP based RPC implementation may choose GET verb for safe -// methods, and PUT verb for idempotent methods instead of the default POST. -type MethodOptions_IdempotencyLevel int32 - -const ( - MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0 - MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1 // implies idempotent - MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2 // idempotent, but may have side effects -) - -// Enum value maps for MethodOptions_IdempotencyLevel. -var ( - MethodOptions_IdempotencyLevel_name = map[int32]string{ - 0: "IDEMPOTENCY_UNKNOWN", - 1: "NO_SIDE_EFFECTS", - 2: "IDEMPOTENT", - } - MethodOptions_IdempotencyLevel_value = map[string]int32{ - "IDEMPOTENCY_UNKNOWN": 0, - "NO_SIDE_EFFECTS": 1, - "IDEMPOTENT": 2, - } -) - -func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { - p := new(MethodOptions_IdempotencyLevel) - *p = x - return p -} - -func (x MethodOptions_IdempotencyLevel) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor() -} - -func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[9] -} - -func (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = MethodOptions_IdempotencyLevel(num) - return nil -} - -// Deprecated: Use MethodOptions_IdempotencyLevel.Descriptor instead. -func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0} -} - -type FeatureSet_FieldPresence int32 - -const ( - FeatureSet_FIELD_PRESENCE_UNKNOWN FeatureSet_FieldPresence = 0 - FeatureSet_EXPLICIT FeatureSet_FieldPresence = 1 - FeatureSet_IMPLICIT FeatureSet_FieldPresence = 2 - FeatureSet_LEGACY_REQUIRED FeatureSet_FieldPresence = 3 -) - -// Enum value maps for FeatureSet_FieldPresence. -var ( - FeatureSet_FieldPresence_name = map[int32]string{ - 0: "FIELD_PRESENCE_UNKNOWN", - 1: "EXPLICIT", - 2: "IMPLICIT", - 3: "LEGACY_REQUIRED", - } - FeatureSet_FieldPresence_value = map[string]int32{ - "FIELD_PRESENCE_UNKNOWN": 0, - "EXPLICIT": 1, - "IMPLICIT": 2, - "LEGACY_REQUIRED": 3, - } -) - -func (x FeatureSet_FieldPresence) Enum() *FeatureSet_FieldPresence { - p := new(FeatureSet_FieldPresence) - *p = x - return p -} - -func (x FeatureSet_FieldPresence) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_FieldPresence) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor() -} - -func (FeatureSet_FieldPresence) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[10] -} - -func (x FeatureSet_FieldPresence) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_FieldPresence) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_FieldPresence(num) - return nil -} - -// Deprecated: Use FeatureSet_FieldPresence.Descriptor instead. -func (FeatureSet_FieldPresence) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0} -} - -type FeatureSet_EnumType int32 - -const ( - FeatureSet_ENUM_TYPE_UNKNOWN FeatureSet_EnumType = 0 - FeatureSet_OPEN FeatureSet_EnumType = 1 - FeatureSet_CLOSED FeatureSet_EnumType = 2 -) - -// Enum value maps for FeatureSet_EnumType. -var ( - FeatureSet_EnumType_name = map[int32]string{ - 0: "ENUM_TYPE_UNKNOWN", - 1: "OPEN", - 2: "CLOSED", - } - FeatureSet_EnumType_value = map[string]int32{ - "ENUM_TYPE_UNKNOWN": 0, - "OPEN": 1, - "CLOSED": 2, - } -) - -func (x FeatureSet_EnumType) Enum() *FeatureSet_EnumType { - p := new(FeatureSet_EnumType) - *p = x - return p -} - -func (x FeatureSet_EnumType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_EnumType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor() -} - -func (FeatureSet_EnumType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[11] -} - -func (x FeatureSet_EnumType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_EnumType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_EnumType(num) - return nil -} - -// Deprecated: Use FeatureSet_EnumType.Descriptor instead. -func (FeatureSet_EnumType) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 1} -} - -type FeatureSet_RepeatedFieldEncoding int32 - -const ( - FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN FeatureSet_RepeatedFieldEncoding = 0 - FeatureSet_PACKED FeatureSet_RepeatedFieldEncoding = 1 - FeatureSet_EXPANDED FeatureSet_RepeatedFieldEncoding = 2 -) - -// Enum value maps for FeatureSet_RepeatedFieldEncoding. -var ( - FeatureSet_RepeatedFieldEncoding_name = map[int32]string{ - 0: "REPEATED_FIELD_ENCODING_UNKNOWN", - 1: "PACKED", - 2: "EXPANDED", - } - FeatureSet_RepeatedFieldEncoding_value = map[string]int32{ - "REPEATED_FIELD_ENCODING_UNKNOWN": 0, - "PACKED": 1, - "EXPANDED": 2, - } -) - -func (x FeatureSet_RepeatedFieldEncoding) Enum() *FeatureSet_RepeatedFieldEncoding { - p := new(FeatureSet_RepeatedFieldEncoding) - *p = x - return p -} - -func (x FeatureSet_RepeatedFieldEncoding) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_RepeatedFieldEncoding) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor() -} - -func (FeatureSet_RepeatedFieldEncoding) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[12] -} - -func (x FeatureSet_RepeatedFieldEncoding) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_RepeatedFieldEncoding) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_RepeatedFieldEncoding(num) - return nil -} - -// Deprecated: Use FeatureSet_RepeatedFieldEncoding.Descriptor instead. -func (FeatureSet_RepeatedFieldEncoding) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 2} -} - -type FeatureSet_Utf8Validation int32 - -const ( - FeatureSet_UTF8_VALIDATION_UNKNOWN FeatureSet_Utf8Validation = 0 - FeatureSet_VERIFY FeatureSet_Utf8Validation = 2 - FeatureSet_NONE FeatureSet_Utf8Validation = 3 -) - -// Enum value maps for FeatureSet_Utf8Validation. -var ( - FeatureSet_Utf8Validation_name = map[int32]string{ - 0: "UTF8_VALIDATION_UNKNOWN", - 2: "VERIFY", - 3: "NONE", - } - FeatureSet_Utf8Validation_value = map[string]int32{ - "UTF8_VALIDATION_UNKNOWN": 0, - "VERIFY": 2, - "NONE": 3, - } -) - -func (x FeatureSet_Utf8Validation) Enum() *FeatureSet_Utf8Validation { - p := new(FeatureSet_Utf8Validation) - *p = x - return p -} - -func (x FeatureSet_Utf8Validation) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_Utf8Validation) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor() -} - -func (FeatureSet_Utf8Validation) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[13] -} - -func (x FeatureSet_Utf8Validation) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_Utf8Validation) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_Utf8Validation(num) - return nil -} - -// Deprecated: Use FeatureSet_Utf8Validation.Descriptor instead. -func (FeatureSet_Utf8Validation) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 3} -} - -type FeatureSet_MessageEncoding int32 - -const ( - FeatureSet_MESSAGE_ENCODING_UNKNOWN FeatureSet_MessageEncoding = 0 - FeatureSet_LENGTH_PREFIXED FeatureSet_MessageEncoding = 1 - FeatureSet_DELIMITED FeatureSet_MessageEncoding = 2 -) - -// Enum value maps for FeatureSet_MessageEncoding. -var ( - FeatureSet_MessageEncoding_name = map[int32]string{ - 0: "MESSAGE_ENCODING_UNKNOWN", - 1: "LENGTH_PREFIXED", - 2: "DELIMITED", - } - FeatureSet_MessageEncoding_value = map[string]int32{ - "MESSAGE_ENCODING_UNKNOWN": 0, - "LENGTH_PREFIXED": 1, - "DELIMITED": 2, - } -) - -func (x FeatureSet_MessageEncoding) Enum() *FeatureSet_MessageEncoding { - p := new(FeatureSet_MessageEncoding) - *p = x - return p -} - -func (x FeatureSet_MessageEncoding) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_MessageEncoding) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor() -} - -func (FeatureSet_MessageEncoding) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[14] -} - -func (x FeatureSet_MessageEncoding) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_MessageEncoding) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_MessageEncoding(num) - return nil -} - -// Deprecated: Use FeatureSet_MessageEncoding.Descriptor instead. -func (FeatureSet_MessageEncoding) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 4} -} - -type FeatureSet_JsonFormat int32 - -const ( - FeatureSet_JSON_FORMAT_UNKNOWN FeatureSet_JsonFormat = 0 - FeatureSet_ALLOW FeatureSet_JsonFormat = 1 - FeatureSet_LEGACY_BEST_EFFORT FeatureSet_JsonFormat = 2 -) - -// Enum value maps for FeatureSet_JsonFormat. -var ( - FeatureSet_JsonFormat_name = map[int32]string{ - 0: "JSON_FORMAT_UNKNOWN", - 1: "ALLOW", - 2: "LEGACY_BEST_EFFORT", - } - FeatureSet_JsonFormat_value = map[string]int32{ - "JSON_FORMAT_UNKNOWN": 0, - "ALLOW": 1, - "LEGACY_BEST_EFFORT": 2, - } -) - -func (x FeatureSet_JsonFormat) Enum() *FeatureSet_JsonFormat { - p := new(FeatureSet_JsonFormat) - *p = x - return p -} - -func (x FeatureSet_JsonFormat) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FeatureSet_JsonFormat) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor() -} - -func (FeatureSet_JsonFormat) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[15] -} - -func (x FeatureSet_JsonFormat) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *FeatureSet_JsonFormat) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = FeatureSet_JsonFormat(num) - return nil -} - -// Deprecated: Use FeatureSet_JsonFormat.Descriptor instead. -func (FeatureSet_JsonFormat) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 5} -} - -// Represents the identified object's effect on the element in the original -// .proto file. -type GeneratedCodeInfo_Annotation_Semantic int32 - -const ( - // There is no effect or the effect is indescribable. - GeneratedCodeInfo_Annotation_NONE GeneratedCodeInfo_Annotation_Semantic = 0 - // The element is set or otherwise mutated. - GeneratedCodeInfo_Annotation_SET GeneratedCodeInfo_Annotation_Semantic = 1 - // An alias to the element is returned. - GeneratedCodeInfo_Annotation_ALIAS GeneratedCodeInfo_Annotation_Semantic = 2 -) - -// Enum value maps for GeneratedCodeInfo_Annotation_Semantic. -var ( - GeneratedCodeInfo_Annotation_Semantic_name = map[int32]string{ - 0: "NONE", - 1: "SET", - 2: "ALIAS", - } - GeneratedCodeInfo_Annotation_Semantic_value = map[string]int32{ - "NONE": 0, - "SET": 1, - "ALIAS": 2, - } -) - -func (x GeneratedCodeInfo_Annotation_Semantic) Enum() *GeneratedCodeInfo_Annotation_Semantic { - p := new(GeneratedCodeInfo_Annotation_Semantic) - *p = x - return p -} - -func (x GeneratedCodeInfo_Annotation_Semantic) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor() -} - -func (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[16] -} - -func (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Do not use. -func (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = GeneratedCodeInfo_Annotation_Semantic(num) - return nil -} - -// Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead. -func (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0, 0} -} - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -type FileDescriptorSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"` -} - -func (x *FileDescriptorSet) Reset() { - *x = FileDescriptorSet{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FileDescriptorSet) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileDescriptorSet) ProtoMessage() {} - -func (x *FileDescriptorSet) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FileDescriptorSet.ProtoReflect.Descriptor instead. -func (*FileDescriptorSet) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0} -} - -func (x *FileDescriptorSet) GetFile() []*FileDescriptorProto { - if x != nil { - return x.File - } - return nil -} - -// Describes a complete .proto file. -type FileDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // file name, relative to root of source tree - Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc. - // Names of files imported by this file. - Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"` - // Indexes of the public imported files in the dependency list above. - PublicDependency []int32 `protobuf:"varint,10,rep,name=public_dependency,json=publicDependency" json:"public_dependency,omitempty"` - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"` - // All top-level definitions in this file. - MessageType []*DescriptorProto `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"` - EnumType []*EnumDescriptorProto `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"` - Service []*ServiceDescriptorProto `protobuf:"bytes,6,rep,name=service" json:"service,omitempty"` - Extension []*FieldDescriptorProto `protobuf:"bytes,7,rep,name=extension" json:"extension,omitempty"` - Options *FileOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"` - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"` - // The syntax of the proto file. - // The supported values are "proto2", "proto3", and "editions". - // - // If `edition` is present, this value must be "editions". - Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"` - // The edition of the proto file. - Edition *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` -} - -func (x *FileDescriptorProto) Reset() { - *x = FileDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FileDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileDescriptorProto) ProtoMessage() {} - -func (x *FileDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FileDescriptorProto.ProtoReflect.Descriptor instead. -func (*FileDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1} -} - -func (x *FileDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *FileDescriptorProto) GetPackage() string { - if x != nil && x.Package != nil { - return *x.Package - } - return "" -} - -func (x *FileDescriptorProto) GetDependency() []string { - if x != nil { - return x.Dependency - } - return nil -} - -func (x *FileDescriptorProto) GetPublicDependency() []int32 { - if x != nil { - return x.PublicDependency - } - return nil -} - -func (x *FileDescriptorProto) GetWeakDependency() []int32 { - if x != nil { - return x.WeakDependency - } - return nil -} - -func (x *FileDescriptorProto) GetMessageType() []*DescriptorProto { - if x != nil { - return x.MessageType - } - return nil -} - -func (x *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto { - if x != nil { - return x.EnumType - } - return nil -} - -func (x *FileDescriptorProto) GetService() []*ServiceDescriptorProto { - if x != nil { - return x.Service - } - return nil -} - -func (x *FileDescriptorProto) GetExtension() []*FieldDescriptorProto { - if x != nil { - return x.Extension - } - return nil -} - -func (x *FileDescriptorProto) GetOptions() *FileOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo { - if x != nil { - return x.SourceCodeInfo - } - return nil -} - -func (x *FileDescriptorProto) GetSyntax() string { - if x != nil && x.Syntax != nil { - return *x.Syntax - } - return "" -} - -func (x *FileDescriptorProto) GetEdition() Edition { - if x != nil && x.Edition != nil { - return *x.Edition - } - return Edition_EDITION_UNKNOWN -} - -// Describes a message type. -type DescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Field []*FieldDescriptorProto `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"` - Extension []*FieldDescriptorProto `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"` - NestedType []*DescriptorProto `protobuf:"bytes,3,rep,name=nested_type,json=nestedType" json:"nested_type,omitempty"` - EnumType []*EnumDescriptorProto `protobuf:"bytes,4,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"` - ExtensionRange []*DescriptorProto_ExtensionRange `protobuf:"bytes,5,rep,name=extension_range,json=extensionRange" json:"extension_range,omitempty"` - OneofDecl []*OneofDescriptorProto `protobuf:"bytes,8,rep,name=oneof_decl,json=oneofDecl" json:"oneof_decl,omitempty"` - Options *MessageOptions `protobuf:"bytes,7,opt,name=options" json:"options,omitempty"` - ReservedRange []*DescriptorProto_ReservedRange `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"` - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"` -} - -func (x *DescriptorProto) Reset() { - *x = DescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DescriptorProto) ProtoMessage() {} - -func (x *DescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DescriptorProto.ProtoReflect.Descriptor instead. -func (*DescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2} -} - -func (x *DescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *DescriptorProto) GetField() []*FieldDescriptorProto { - if x != nil { - return x.Field - } - return nil -} - -func (x *DescriptorProto) GetExtension() []*FieldDescriptorProto { - if x != nil { - return x.Extension - } - return nil -} - -func (x *DescriptorProto) GetNestedType() []*DescriptorProto { - if x != nil { - return x.NestedType - } - return nil -} - -func (x *DescriptorProto) GetEnumType() []*EnumDescriptorProto { - if x != nil { - return x.EnumType - } - return nil -} - -func (x *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange { - if x != nil { - return x.ExtensionRange - } - return nil -} - -func (x *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto { - if x != nil { - return x.OneofDecl - } - return nil -} - -func (x *DescriptorProto) GetOptions() *MessageOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange { - if x != nil { - return x.ReservedRange - } - return nil -} - -func (x *DescriptorProto) GetReservedName() []string { - if x != nil { - return x.ReservedName - } - return nil -} - -type ExtensionRangeOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` - // For external users: DO NOT USE. We are in the process of open sourcing - // extension declaration and executing internal cleanups before it can be - // used externally. - Declaration []*ExtensionRangeOptions_Declaration `protobuf:"bytes,2,rep,name=declaration" json:"declaration,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,50,opt,name=features" json:"features,omitempty"` - // The verification state of the range. - // TODO: flip the default to DECLARATION once all empty ranges - // are marked as UNVERIFIED. - Verification *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"` -} - -// Default values for ExtensionRangeOptions fields. -const ( - Default_ExtensionRangeOptions_Verification = ExtensionRangeOptions_UNVERIFIED -) - -func (x *ExtensionRangeOptions) Reset() { - *x = ExtensionRangeOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExtensionRangeOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExtensionRangeOptions) ProtoMessage() {} - -func (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor instead. -func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3} -} - -func (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -func (x *ExtensionRangeOptions) GetDeclaration() []*ExtensionRangeOptions_Declaration { - if x != nil { - return x.Declaration - } - return nil -} - -func (x *ExtensionRangeOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *ExtensionRangeOptions) GetVerification() ExtensionRangeOptions_VerificationState { - if x != nil && x.Verification != nil { - return *x.Verification - } - return Default_ExtensionRangeOptions_Verification -} - -// Describes a field within a message. -type FieldDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Number *int32 `protobuf:"varint,3,opt,name=number" json:"number,omitempty"` - Label *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"` - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - Type *FieldDescriptorProto_Type `protobuf:"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type" json:"type,omitempty"` - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - TypeName *string `protobuf:"bytes,6,opt,name=type_name,json=typeName" json:"type_name,omitempty"` - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - Extendee *string `protobuf:"bytes,2,opt,name=extendee" json:"extendee,omitempty"` - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - OneofIndex *int32 `protobuf:"varint,9,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"` - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - JsonName *string `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"` - Options *FieldOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"` - // If true, this is a proto3 "optional". When a proto3 field is optional, it - // tracks presence regardless of field type. - // - // When proto3_optional is true, this field must belong to a oneof to signal - // to old proto3 clients that presence is tracked for this field. This oneof - // is known as a "synthetic" oneof, and this field must be its sole member - // (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs - // exist in the descriptor only, and do not generate any API. Synthetic oneofs - // must be ordered after all "real" oneofs. - // - // For message fields, proto3_optional doesn't create any semantic change, - // since non-repeated message fields always track presence. However it still - // indicates the semantic detail of whether the user wrote "optional" or not. - // This can be useful for round-tripping the .proto file. For consistency we - // give message fields a synthetic oneof also, even though it is not required - // to track presence. This is especially important because the parser can't - // tell if a field is a message or an enum, so it must always create a - // synthetic oneof. - // - // Proto2 optional fields do not set this flag, because they already indicate - // optional with `LABEL_OPTIONAL`. - Proto3Optional *bool `protobuf:"varint,17,opt,name=proto3_optional,json=proto3Optional" json:"proto3_optional,omitempty"` -} - -func (x *FieldDescriptorProto) Reset() { - *x = FieldDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FieldDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FieldDescriptorProto) ProtoMessage() {} - -func (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FieldDescriptorProto.ProtoReflect.Descriptor instead. -func (*FieldDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4} -} - -func (x *FieldDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *FieldDescriptorProto) GetNumber() int32 { - if x != nil && x.Number != nil { - return *x.Number - } - return 0 -} - -func (x *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label { - if x != nil && x.Label != nil { - return *x.Label - } - return FieldDescriptorProto_LABEL_OPTIONAL -} - -func (x *FieldDescriptorProto) GetType() FieldDescriptorProto_Type { - if x != nil && x.Type != nil { - return *x.Type - } - return FieldDescriptorProto_TYPE_DOUBLE -} - -func (x *FieldDescriptorProto) GetTypeName() string { - if x != nil && x.TypeName != nil { - return *x.TypeName - } - return "" -} - -func (x *FieldDescriptorProto) GetExtendee() string { - if x != nil && x.Extendee != nil { - return *x.Extendee - } - return "" -} - -func (x *FieldDescriptorProto) GetDefaultValue() string { - if x != nil && x.DefaultValue != nil { - return *x.DefaultValue - } - return "" -} - -func (x *FieldDescriptorProto) GetOneofIndex() int32 { - if x != nil && x.OneofIndex != nil { - return *x.OneofIndex - } - return 0 -} - -func (x *FieldDescriptorProto) GetJsonName() string { - if x != nil && x.JsonName != nil { - return *x.JsonName - } - return "" -} - -func (x *FieldDescriptorProto) GetOptions() *FieldOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *FieldDescriptorProto) GetProto3Optional() bool { - if x != nil && x.Proto3Optional != nil { - return *x.Proto3Optional - } - return false -} - -// Describes a oneof. -type OneofDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` -} - -func (x *OneofDescriptorProto) Reset() { - *x = OneofDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *OneofDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OneofDescriptorProto) ProtoMessage() {} - -func (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OneofDescriptorProto.ProtoReflect.Descriptor instead. -func (*OneofDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5} -} - -func (x *OneofDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *OneofDescriptorProto) GetOptions() *OneofOptions { - if x != nil { - return x.Options - } - return nil -} - -// Describes an enum type. -type EnumDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Value []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"` - Options *EnumOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` - // Range of reserved numeric values. Reserved numeric values may not be used - // by enum values in the same enum declaration. Reserved ranges may not - // overlap. - ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"` - // Reserved enum value names, which may not be reused. A given name may only - // be reserved once. - ReservedName []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"` -} - -func (x *EnumDescriptorProto) Reset() { - *x = EnumDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnumDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnumDescriptorProto) ProtoMessage() {} - -func (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnumDescriptorProto.ProtoReflect.Descriptor instead. -func (*EnumDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6} -} - -func (x *EnumDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto { - if x != nil { - return x.Value - } - return nil -} - -func (x *EnumDescriptorProto) GetOptions() *EnumOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange { - if x != nil { - return x.ReservedRange - } - return nil -} - -func (x *EnumDescriptorProto) GetReservedName() []string { - if x != nil { - return x.ReservedName - } - return nil -} - -// Describes a value within an enum. -type EnumValueDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Number *int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"` - Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -} - -func (x *EnumValueDescriptorProto) Reset() { - *x = EnumValueDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnumValueDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnumValueDescriptorProto) ProtoMessage() {} - -func (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Descriptor instead. -func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7} -} - -func (x *EnumValueDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *EnumValueDescriptorProto) GetNumber() int32 { - if x != nil && x.Number != nil { - return *x.Number - } - return 0 -} - -func (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions { - if x != nil { - return x.Options - } - return nil -} - -// Describes a service. -type ServiceDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Method []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"` - Options *ServiceOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -} - -func (x *ServiceDescriptorProto) Reset() { - *x = ServiceDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ServiceDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServiceDescriptorProto) ProtoMessage() {} - -func (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ServiceDescriptorProto.ProtoReflect.Descriptor instead. -func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8} -} - -func (x *ServiceDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto { - if x != nil { - return x.Method - } - return nil -} - -func (x *ServiceDescriptorProto) GetOptions() *ServiceOptions { - if x != nil { - return x.Options - } - return nil -} - -// Describes a method of a service. -type MethodDescriptorProto struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - InputType *string `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"` - OutputType *string `protobuf:"bytes,3,opt,name=output_type,json=outputType" json:"output_type,omitempty"` - Options *MethodOptions `protobuf:"bytes,4,opt,name=options" json:"options,omitempty"` - // Identifies if client streams multiple client messages - ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"` - // Identifies if server streams multiple server messages - ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"` -} - -// Default values for MethodDescriptorProto fields. -const ( - Default_MethodDescriptorProto_ClientStreaming = bool(false) - Default_MethodDescriptorProto_ServerStreaming = bool(false) -) - -func (x *MethodDescriptorProto) Reset() { - *x = MethodDescriptorProto{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MethodDescriptorProto) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MethodDescriptorProto) ProtoMessage() {} - -func (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MethodDescriptorProto.ProtoReflect.Descriptor instead. -func (*MethodDescriptorProto) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9} -} - -func (x *MethodDescriptorProto) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *MethodDescriptorProto) GetInputType() string { - if x != nil && x.InputType != nil { - return *x.InputType - } - return "" -} - -func (x *MethodDescriptorProto) GetOutputType() string { - if x != nil && x.OutputType != nil { - return *x.OutputType - } - return "" -} - -func (x *MethodDescriptorProto) GetOptions() *MethodOptions { - if x != nil { - return x.Options - } - return nil -} - -func (x *MethodDescriptorProto) GetClientStreaming() bool { - if x != nil && x.ClientStreaming != nil { - return *x.ClientStreaming - } - return Default_MethodDescriptorProto_ClientStreaming -} - -func (x *MethodDescriptorProto) GetServerStreaming() bool { - if x != nil && x.ServerStreaming != nil { - return *x.ServerStreaming - } - return Default_MethodDescriptorProto_ServerStreaming -} - -type FileOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"` - // Controls the name of the wrapper Java class generated for the .proto file. - // That class will always contain the .proto file's getDescriptor() method as - // well as any top-level extensions defined in the .proto file. - // If java_multiple_files is disabled, then all the other classes from the - // .proto file will be nested inside the single wrapper outer class. - JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"` - // If enabled, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the wrapper class - // named by java_outer_classname. However, the wrapper class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` - // This option does nothing. - // - // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. - JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` - // A proto2 file can set this to true to opt in to UTF-8 checking for Java, - // which will throw an exception if invalid UTF-8 is parsed from the wire or - // assigned to a string field. - // - // TODO: clarify exactly what kinds of field types this option - // applies to, and update these docs accordingly. - // - // Proto3 files already perform these checks. Setting the option explicitly to - // false has no effect: it cannot be used to opt proto3 files out of UTF-8 - // checks. - JavaStringCheckUtf8 *bool `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"` - OptimizeFor *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"` - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - GoPackage *string `protobuf:"bytes,11,opt,name=go_package,json=goPackage" json:"go_package,omitempty"` - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - CcGenericServices *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"` - JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"` - PyGenericServices *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"` - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - Deprecated *bool `protobuf:"varint,23,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - CcEnableArenas *bool `protobuf:"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=1" json:"cc_enable_arenas,omitempty"` - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"` - // Namespace for generated classes; defaults to the package. - CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"` - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"` - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"` - // Use this option to change the namespace of php generated classes. Default - // is empty. When this option is empty, the package name will be used for - // determining the namespace. - PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"` - // Use this option to change the namespace of php generated metadata classes. - // Default is empty. When this option is empty, the proto file name will be - // used for determining the namespace. - PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"` - // Use this option to change the package of ruby generated classes. Default - // is empty. When this option is not set, the package name will be used for - // determining the ruby package. - RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,50,opt,name=features" json:"features,omitempty"` - // The parser stores options it doesn't recognize here. - // See the documentation for the "Options" section above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for FileOptions fields. -const ( - Default_FileOptions_JavaMultipleFiles = bool(false) - Default_FileOptions_JavaStringCheckUtf8 = bool(false) - Default_FileOptions_OptimizeFor = FileOptions_SPEED - Default_FileOptions_CcGenericServices = bool(false) - Default_FileOptions_JavaGenericServices = bool(false) - Default_FileOptions_PyGenericServices = bool(false) - Default_FileOptions_Deprecated = bool(false) - Default_FileOptions_CcEnableArenas = bool(true) -) - -func (x *FileOptions) Reset() { - *x = FileOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FileOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileOptions) ProtoMessage() {} - -func (x *FileOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FileOptions.ProtoReflect.Descriptor instead. -func (*FileOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10} -} - -func (x *FileOptions) GetJavaPackage() string { - if x != nil && x.JavaPackage != nil { - return *x.JavaPackage - } - return "" -} - -func (x *FileOptions) GetJavaOuterClassname() string { - if x != nil && x.JavaOuterClassname != nil { - return *x.JavaOuterClassname - } - return "" -} - -func (x *FileOptions) GetJavaMultipleFiles() bool { - if x != nil && x.JavaMultipleFiles != nil { - return *x.JavaMultipleFiles - } - return Default_FileOptions_JavaMultipleFiles -} - -// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -func (x *FileOptions) GetJavaGenerateEqualsAndHash() bool { - if x != nil && x.JavaGenerateEqualsAndHash != nil { - return *x.JavaGenerateEqualsAndHash - } - return false -} - -func (x *FileOptions) GetJavaStringCheckUtf8() bool { - if x != nil && x.JavaStringCheckUtf8 != nil { - return *x.JavaStringCheckUtf8 - } - return Default_FileOptions_JavaStringCheckUtf8 -} - -func (x *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode { - if x != nil && x.OptimizeFor != nil { - return *x.OptimizeFor - } - return Default_FileOptions_OptimizeFor -} - -func (x *FileOptions) GetGoPackage() string { - if x != nil && x.GoPackage != nil { - return *x.GoPackage - } - return "" -} - -func (x *FileOptions) GetCcGenericServices() bool { - if x != nil && x.CcGenericServices != nil { - return *x.CcGenericServices - } - return Default_FileOptions_CcGenericServices -} - -func (x *FileOptions) GetJavaGenericServices() bool { - if x != nil && x.JavaGenericServices != nil { - return *x.JavaGenericServices - } - return Default_FileOptions_JavaGenericServices -} - -func (x *FileOptions) GetPyGenericServices() bool { - if x != nil && x.PyGenericServices != nil { - return *x.PyGenericServices - } - return Default_FileOptions_PyGenericServices -} - -func (x *FileOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_FileOptions_Deprecated -} - -func (x *FileOptions) GetCcEnableArenas() bool { - if x != nil && x.CcEnableArenas != nil { - return *x.CcEnableArenas - } - return Default_FileOptions_CcEnableArenas -} - -func (x *FileOptions) GetObjcClassPrefix() string { - if x != nil && x.ObjcClassPrefix != nil { - return *x.ObjcClassPrefix - } - return "" -} - -func (x *FileOptions) GetCsharpNamespace() string { - if x != nil && x.CsharpNamespace != nil { - return *x.CsharpNamespace - } - return "" -} - -func (x *FileOptions) GetSwiftPrefix() string { - if x != nil && x.SwiftPrefix != nil { - return *x.SwiftPrefix - } - return "" -} - -func (x *FileOptions) GetPhpClassPrefix() string { - if x != nil && x.PhpClassPrefix != nil { - return *x.PhpClassPrefix - } - return "" -} - -func (x *FileOptions) GetPhpNamespace() string { - if x != nil && x.PhpNamespace != nil { - return *x.PhpNamespace - } - return "" -} - -func (x *FileOptions) GetPhpMetadataNamespace() string { - if x != nil && x.PhpMetadataNamespace != nil { - return *x.PhpMetadataNamespace - } - return "" -} - -func (x *FileOptions) GetRubyPackage() string { - if x != nil && x.RubyPackage != nil { - return *x.RubyPackage - } - return "" -} - -func (x *FileOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type MessageOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - MessageSetWireFormat *bool `protobuf:"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0" json:"message_set_wire_format,omitempty"` - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - NoStandardDescriptorAccessor *bool `protobuf:"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0" json:"no_standard_descriptor_accessor,omitempty"` - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // - // map<KeyType, ValueType> map_field = 1; - // - // The parsed descriptor looks like: - // - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementations still need to work as - // if the field is a repeated message field. - // - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"` - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // - // This should only be used as a temporary measure against broken builds due - // to the change in behavior for JSON field name conflicts. - // - // TODO This is legacy behavior we plan to remove once downstream - // teams have had time to migrate. - // - // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. - DeprecatedLegacyJsonFieldConflicts *bool `protobuf:"varint,11,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts" json:"deprecated_legacy_json_field_conflicts,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,12,opt,name=features" json:"features,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for MessageOptions fields. -const ( - Default_MessageOptions_MessageSetWireFormat = bool(false) - Default_MessageOptions_NoStandardDescriptorAccessor = bool(false) - Default_MessageOptions_Deprecated = bool(false) -) - -func (x *MessageOptions) Reset() { - *x = MessageOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MessageOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MessageOptions) ProtoMessage() {} - -func (x *MessageOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MessageOptions.ProtoReflect.Descriptor instead. -func (*MessageOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11} -} - -func (x *MessageOptions) GetMessageSetWireFormat() bool { - if x != nil && x.MessageSetWireFormat != nil { - return *x.MessageSetWireFormat - } - return Default_MessageOptions_MessageSetWireFormat -} - -func (x *MessageOptions) GetNoStandardDescriptorAccessor() bool { - if x != nil && x.NoStandardDescriptorAccessor != nil { - return *x.NoStandardDescriptorAccessor - } - return Default_MessageOptions_NoStandardDescriptorAccessor -} - -func (x *MessageOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_MessageOptions_Deprecated -} - -func (x *MessageOptions) GetMapEntry() bool { - if x != nil && x.MapEntry != nil { - return *x.MapEntry - } - return false -} - -// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -func (x *MessageOptions) GetDeprecatedLegacyJsonFieldConflicts() bool { - if x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil { - return *x.DeprecatedLegacyJsonFieldConflicts - } - return false -} - -func (x *MessageOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type FieldOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is only implemented to support use of - // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of - // type "bytes" in the open source release -- sorry, we'll try to include - // other types in a future version! - Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"` - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. This option is prohibited in - // Editions, but the `repeated_field_encoding` feature can be used to control - // the behavior. - Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"` - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - // is represented as JavaScript string, which avoids loss of precision that - // can happen when a large value is converted to a floating point JavaScript. - // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - // use the JavaScript "number" type. The behavior of the default option - // JS_NORMAL is implementation dependent. - // - // This option is an enum to permit additional types to be added, e.g. - // goog.math.Integer. - Jstype *FieldOptions_JSType `protobuf:"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0" json:"jstype,omitempty"` - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // Note that lazy message fields are still eagerly verified to check - // ill-formed wireformat or missing required fields. Calling IsInitialized() - // on the outer message would fail if the inner message has missing required - // fields. Failed verification would result in parsing failure (except when - // uninitialized messages are acceptable). - Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"` - // unverified_lazy does no correctness checks on the byte stream. This should - // only be used where lazy with verification is prohibitive for performance - // reasons. - UnverifiedLazy *bool `protobuf:"varint,15,opt,name=unverified_lazy,json=unverifiedLazy,def=0" json:"unverified_lazy,omitempty"` - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // For Google-internal migration only. Do not use. - Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"` - // Indicate that the field value should not be printed out when using debug - // formats, e.g. when the field contains sensitive credentials. - DebugRedact *bool `protobuf:"varint,16,opt,name=debug_redact,json=debugRedact,def=0" json:"debug_redact,omitempty"` - Retention *FieldOptions_OptionRetention `protobuf:"varint,17,opt,name=retention,enum=google.protobuf.FieldOptions_OptionRetention" json:"retention,omitempty"` - Targets []FieldOptions_OptionTargetType `protobuf:"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType" json:"targets,omitempty"` - EditionDefaults []*FieldOptions_EditionDefault `protobuf:"bytes,20,rep,name=edition_defaults,json=editionDefaults" json:"edition_defaults,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,21,opt,name=features" json:"features,omitempty"` - FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,22,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for FieldOptions fields. -const ( - Default_FieldOptions_Ctype = FieldOptions_STRING - Default_FieldOptions_Jstype = FieldOptions_JS_NORMAL - Default_FieldOptions_Lazy = bool(false) - Default_FieldOptions_UnverifiedLazy = bool(false) - Default_FieldOptions_Deprecated = bool(false) - Default_FieldOptions_Weak = bool(false) - Default_FieldOptions_DebugRedact = bool(false) -) - -func (x *FieldOptions) Reset() { - *x = FieldOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FieldOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FieldOptions) ProtoMessage() {} - -func (x *FieldOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FieldOptions.ProtoReflect.Descriptor instead. -func (*FieldOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12} -} - -func (x *FieldOptions) GetCtype() FieldOptions_CType { - if x != nil && x.Ctype != nil { - return *x.Ctype - } - return Default_FieldOptions_Ctype -} - -func (x *FieldOptions) GetPacked() bool { - if x != nil && x.Packed != nil { - return *x.Packed - } - return false -} - -func (x *FieldOptions) GetJstype() FieldOptions_JSType { - if x != nil && x.Jstype != nil { - return *x.Jstype - } - return Default_FieldOptions_Jstype -} - -func (x *FieldOptions) GetLazy() bool { - if x != nil && x.Lazy != nil { - return *x.Lazy - } - return Default_FieldOptions_Lazy -} - -func (x *FieldOptions) GetUnverifiedLazy() bool { - if x != nil && x.UnverifiedLazy != nil { - return *x.UnverifiedLazy - } - return Default_FieldOptions_UnverifiedLazy -} - -func (x *FieldOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_FieldOptions_Deprecated -} - -func (x *FieldOptions) GetWeak() bool { - if x != nil && x.Weak != nil { - return *x.Weak - } - return Default_FieldOptions_Weak -} - -func (x *FieldOptions) GetDebugRedact() bool { - if x != nil && x.DebugRedact != nil { - return *x.DebugRedact - } - return Default_FieldOptions_DebugRedact -} - -func (x *FieldOptions) GetRetention() FieldOptions_OptionRetention { - if x != nil && x.Retention != nil { - return *x.Retention - } - return FieldOptions_RETENTION_UNKNOWN -} - -func (x *FieldOptions) GetTargets() []FieldOptions_OptionTargetType { - if x != nil { - return x.Targets - } - return nil -} - -func (x *FieldOptions) GetEditionDefaults() []*FieldOptions_EditionDefault { - if x != nil { - return x.EditionDefaults - } - return nil -} - -func (x *FieldOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *FieldOptions) GetFeatureSupport() *FieldOptions_FeatureSupport { - if x != nil { - return x.FeatureSupport - } - return nil -} - -func (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type OneofOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,1,opt,name=features" json:"features,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -func (x *OneofOptions) Reset() { - *x = OneofOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *OneofOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OneofOptions) ProtoMessage() {} - -func (x *OneofOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OneofOptions.ProtoReflect.Descriptor instead. -func (*OneofOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13} -} - -func (x *OneofOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type EnumOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Set this option to true to allow mapping different tag names to the same - // value. - AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"` - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // TODO Remove this legacy behavior once downstream teams have - // had time to migrate. - // - // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. - DeprecatedLegacyJsonFieldConflicts *bool `protobuf:"varint,6,opt,name=deprecated_legacy_json_field_conflicts,json=deprecatedLegacyJsonFieldConflicts" json:"deprecated_legacy_json_field_conflicts,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,7,opt,name=features" json:"features,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for EnumOptions fields. -const ( - Default_EnumOptions_Deprecated = bool(false) -) - -func (x *EnumOptions) Reset() { - *x = EnumOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnumOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnumOptions) ProtoMessage() {} - -func (x *EnumOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnumOptions.ProtoReflect.Descriptor instead. -func (*EnumOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14} -} - -func (x *EnumOptions) GetAllowAlias() bool { - if x != nil && x.AllowAlias != nil { - return *x.AllowAlias - } - return false -} - -func (x *EnumOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_EnumOptions_Deprecated -} - -// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. -func (x *EnumOptions) GetDeprecatedLegacyJsonFieldConflicts() bool { - if x != nil && x.DeprecatedLegacyJsonFieldConflicts != nil { - return *x.DeprecatedLegacyJsonFieldConflicts - } - return false -} - -func (x *EnumOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type EnumValueOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - Deprecated *bool `protobuf:"varint,1,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` - // Indicate that fields annotated with this enum value should not be printed - // out when using debug formats, e.g. when the field contains sensitive - // credentials. - DebugRedact *bool `protobuf:"varint,3,opt,name=debug_redact,json=debugRedact,def=0" json:"debug_redact,omitempty"` - // Information about the support window of a feature value. - FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,4,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for EnumValueOptions fields. -const ( - Default_EnumValueOptions_Deprecated = bool(false) - Default_EnumValueOptions_DebugRedact = bool(false) -) - -func (x *EnumValueOptions) Reset() { - *x = EnumValueOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnumValueOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnumValueOptions) ProtoMessage() {} - -func (x *EnumValueOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor instead. -func (*EnumValueOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15} -} - -func (x *EnumValueOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_EnumValueOptions_Deprecated -} - -func (x *EnumValueOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *EnumValueOptions) GetDebugRedact() bool { - if x != nil && x.DebugRedact != nil { - return *x.DebugRedact - } - return Default_EnumValueOptions_DebugRedact -} - -func (x *EnumValueOptions) GetFeatureSupport() *FieldOptions_FeatureSupport { - if x != nil { - return x.FeatureSupport - } - return nil -} - -func (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type ServiceOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,34,opt,name=features" json:"features,omitempty"` - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for ServiceOptions fields. -const ( - Default_ServiceOptions_Deprecated = bool(false) -) - -func (x *ServiceOptions) Reset() { - *x = ServiceOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ServiceOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServiceOptions) ProtoMessage() {} - -func (x *ServiceOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor instead. -func (*ServiceOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16} -} - -func (x *ServiceOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *ServiceOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_ServiceOptions_Deprecated -} - -func (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -type MethodOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"` - // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,35,opt,name=features" json:"features,omitempty"` - // The parser stores options it doesn't recognize here. See above. - UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` -} - -// Default values for MethodOptions fields. -const ( - Default_MethodOptions_Deprecated = bool(false) - Default_MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN -) - -func (x *MethodOptions) Reset() { - *x = MethodOptions{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MethodOptions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MethodOptions) ProtoMessage() {} - -func (x *MethodOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MethodOptions.ProtoReflect.Descriptor instead. -func (*MethodOptions) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17} -} - -func (x *MethodOptions) GetDeprecated() bool { - if x != nil && x.Deprecated != nil { - return *x.Deprecated - } - return Default_MethodOptions_Deprecated -} - -func (x *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel { - if x != nil && x.IdempotencyLevel != nil { - return *x.IdempotencyLevel - } - return Default_MethodOptions_IdempotencyLevel -} - -func (x *MethodOptions) GetFeatures() *FeatureSet { - if x != nil { - return x.Features - } - return nil -} - -func (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption { - if x != nil { - return x.UninterpretedOption - } - return nil -} - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -type UninterpretedOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"` - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - IdentifierValue *string `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"` - PositiveIntValue *uint64 `protobuf:"varint,4,opt,name=positive_int_value,json=positiveIntValue" json:"positive_int_value,omitempty"` - NegativeIntValue *int64 `protobuf:"varint,5,opt,name=negative_int_value,json=negativeIntValue" json:"negative_int_value,omitempty"` - DoubleValue *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"` - StringValue []byte `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"` - AggregateValue *string `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"` -} - -func (x *UninterpretedOption) Reset() { - *x = UninterpretedOption{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UninterpretedOption) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UninterpretedOption) ProtoMessage() {} - -func (x *UninterpretedOption) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UninterpretedOption.ProtoReflect.Descriptor instead. -func (*UninterpretedOption) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18} -} - -func (x *UninterpretedOption) GetName() []*UninterpretedOption_NamePart { - if x != nil { - return x.Name - } - return nil -} - -func (x *UninterpretedOption) GetIdentifierValue() string { - if x != nil && x.IdentifierValue != nil { - return *x.IdentifierValue - } - return "" -} - -func (x *UninterpretedOption) GetPositiveIntValue() uint64 { - if x != nil && x.PositiveIntValue != nil { - return *x.PositiveIntValue - } - return 0 -} - -func (x *UninterpretedOption) GetNegativeIntValue() int64 { - if x != nil && x.NegativeIntValue != nil { - return *x.NegativeIntValue - } - return 0 -} - -func (x *UninterpretedOption) GetDoubleValue() float64 { - if x != nil && x.DoubleValue != nil { - return *x.DoubleValue - } - return 0 -} - -func (x *UninterpretedOption) GetStringValue() []byte { - if x != nil { - return x.StringValue - } - return nil -} - -func (x *UninterpretedOption) GetAggregateValue() string { - if x != nil && x.AggregateValue != nil { - return *x.AggregateValue - } - return "" -} - -// TODO Enums in C++ gencode (and potentially other languages) are -// not well scoped. This means that each of the feature enums below can clash -// with each other. The short names we've chosen maximize call-site -// readability, but leave us very open to this scenario. A future feature will -// be designed and implemented to handle this, hopefully before we ever hit a -// conflict here. -type FeatureSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - extensionFields protoimpl.ExtensionFields - - FieldPresence *FeatureSet_FieldPresence `protobuf:"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence" json:"field_presence,omitempty"` - EnumType *FeatureSet_EnumType `protobuf:"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType" json:"enum_type,omitempty"` - RepeatedFieldEncoding *FeatureSet_RepeatedFieldEncoding `protobuf:"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding" json:"repeated_field_encoding,omitempty"` - Utf8Validation *FeatureSet_Utf8Validation `protobuf:"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation" json:"utf8_validation,omitempty"` - MessageEncoding *FeatureSet_MessageEncoding `protobuf:"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding" json:"message_encoding,omitempty"` - JsonFormat *FeatureSet_JsonFormat `protobuf:"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat" json:"json_format,omitempty"` -} - -func (x *FeatureSet) Reset() { - *x = FeatureSet{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FeatureSet) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeatureSet) ProtoMessage() {} - -func (x *FeatureSet) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeatureSet.ProtoReflect.Descriptor instead. -func (*FeatureSet) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19} -} - -func (x *FeatureSet) GetFieldPresence() FeatureSet_FieldPresence { - if x != nil && x.FieldPresence != nil { - return *x.FieldPresence - } - return FeatureSet_FIELD_PRESENCE_UNKNOWN -} - -func (x *FeatureSet) GetEnumType() FeatureSet_EnumType { - if x != nil && x.EnumType != nil { - return *x.EnumType - } - return FeatureSet_ENUM_TYPE_UNKNOWN -} - -func (x *FeatureSet) GetRepeatedFieldEncoding() FeatureSet_RepeatedFieldEncoding { - if x != nil && x.RepeatedFieldEncoding != nil { - return *x.RepeatedFieldEncoding - } - return FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN -} - -func (x *FeatureSet) GetUtf8Validation() FeatureSet_Utf8Validation { - if x != nil && x.Utf8Validation != nil { - return *x.Utf8Validation - } - return FeatureSet_UTF8_VALIDATION_UNKNOWN -} - -func (x *FeatureSet) GetMessageEncoding() FeatureSet_MessageEncoding { - if x != nil && x.MessageEncoding != nil { - return *x.MessageEncoding - } - return FeatureSet_MESSAGE_ENCODING_UNKNOWN -} - -func (x *FeatureSet) GetJsonFormat() FeatureSet_JsonFormat { - if x != nil && x.JsonFormat != nil { - return *x.JsonFormat - } - return FeatureSet_JSON_FORMAT_UNKNOWN -} - -// A compiled specification for the defaults of a set of features. These -// messages are generated from FeatureSet extensions and can be used to seed -// feature resolution. The resolution with this object becomes a simple search -// for the closest matching edition, followed by proto merges. -type FeatureSetDefaults struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Defaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:"bytes,1,rep,name=defaults" json:"defaults,omitempty"` - // The minimum supported edition (inclusive) when this was constructed. - // Editions before this will not have defaults. - MinimumEdition *Edition `protobuf:"varint,4,opt,name=minimum_edition,json=minimumEdition,enum=google.protobuf.Edition" json:"minimum_edition,omitempty"` - // The maximum known edition (inclusive) when this was constructed. Editions - // after this will not have reliable defaults. - MaximumEdition *Edition `protobuf:"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition" json:"maximum_edition,omitempty"` -} - -func (x *FeatureSetDefaults) Reset() { - *x = FeatureSetDefaults{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FeatureSetDefaults) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeatureSetDefaults) ProtoMessage() {} - -func (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeatureSetDefaults.ProtoReflect.Descriptor instead. -func (*FeatureSetDefaults) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20} -} - -func (x *FeatureSetDefaults) GetDefaults() []*FeatureSetDefaults_FeatureSetEditionDefault { - if x != nil { - return x.Defaults - } - return nil -} - -func (x *FeatureSetDefaults) GetMinimumEdition() Edition { - if x != nil && x.MinimumEdition != nil { - return *x.MinimumEdition - } - return Edition_EDITION_UNKNOWN -} - -func (x *FeatureSetDefaults) GetMaximumEdition() Edition { - if x != nil && x.MaximumEdition != nil { - return *x.MaximumEdition - } - return Edition_EDITION_UNKNOWN -} - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -type SourceCodeInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // - // message Foo { - // optional string foo = 1; - // } - // - // Let's look at just the field definition: - // - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // - // We have the following locations: - // - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendant. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"` -} - -func (x *SourceCodeInfo) Reset() { - *x = SourceCodeInfo{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SourceCodeInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SourceCodeInfo) ProtoMessage() {} - -func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead. -func (*SourceCodeInfo) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21} -} - -func (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location { - if x != nil { - return x.Location - } - return nil -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -type GeneratedCodeInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"` -} - -func (x *GeneratedCodeInfo) Reset() { - *x = GeneratedCodeInfo{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GeneratedCodeInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeneratedCodeInfo) ProtoMessage() {} - -func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead. -func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22} -} - -func (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation { - if x != nil { - return x.Annotation - } - return nil -} - -type DescriptorProto_ExtensionRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive. - End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` // Exclusive. - Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` -} - -func (x *DescriptorProto_ExtensionRange) Reset() { - *x = DescriptorProto_ExtensionRange{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DescriptorProto_ExtensionRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DescriptorProto_ExtensionRange) ProtoMessage() {} - -func (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Descriptor instead. -func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *DescriptorProto_ExtensionRange) GetStart() int32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *DescriptorProto_ExtensionRange) GetEnd() int32 { - if x != nil && x.End != nil { - return *x.End - } - return 0 -} - -func (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions { - if x != nil { - return x.Options - } - return nil -} - -// Range of reserved tag numbers. Reserved tag numbers may not be used by -// fields or extension ranges in the same message. Reserved ranges may -// not overlap. -type DescriptorProto_ReservedRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive. - End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` // Exclusive. -} - -func (x *DescriptorProto_ReservedRange) Reset() { - *x = DescriptorProto_ReservedRange{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DescriptorProto_ReservedRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DescriptorProto_ReservedRange) ProtoMessage() {} - -func (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Descriptor instead. -func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1} -} - -func (x *DescriptorProto_ReservedRange) GetStart() int32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *DescriptorProto_ReservedRange) GetEnd() int32 { - if x != nil && x.End != nil { - return *x.End - } - return 0 -} - -type ExtensionRangeOptions_Declaration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The extension number declared within the extension range. - Number *int32 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"` - // The fully-qualified name of the extension field. There must be a leading - // dot in front of the full name. - FullName *string `protobuf:"bytes,2,opt,name=full_name,json=fullName" json:"full_name,omitempty"` - // The fully-qualified type name of the extension field. Unlike - // Metadata.type, Declaration.type must have a leading dot for messages - // and enums. - Type *string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` - // If true, indicates that the number is reserved in the extension range, - // and any extension field with the number will fail to compile. Set this - // when a declared extension field is deleted. - Reserved *bool `protobuf:"varint,5,opt,name=reserved" json:"reserved,omitempty"` - // If true, indicates that the extension must be defined as repeated. - // Otherwise the extension must be defined as optional. - Repeated *bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"` -} - -func (x *ExtensionRangeOptions_Declaration) Reset() { - *x = ExtensionRangeOptions_Declaration{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ExtensionRangeOptions_Declaration) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExtensionRangeOptions_Declaration) ProtoMessage() {} - -func (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExtensionRangeOptions_Declaration.ProtoReflect.Descriptor instead. -func (*ExtensionRangeOptions_Declaration) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3, 0} -} - -func (x *ExtensionRangeOptions_Declaration) GetNumber() int32 { - if x != nil && x.Number != nil { - return *x.Number - } - return 0 -} - -func (x *ExtensionRangeOptions_Declaration) GetFullName() string { - if x != nil && x.FullName != nil { - return *x.FullName - } - return "" -} - -func (x *ExtensionRangeOptions_Declaration) GetType() string { - if x != nil && x.Type != nil { - return *x.Type - } - return "" -} - -func (x *ExtensionRangeOptions_Declaration) GetReserved() bool { - if x != nil && x.Reserved != nil { - return *x.Reserved - } - return false -} - -func (x *ExtensionRangeOptions_Declaration) GetRepeated() bool { - if x != nil && x.Repeated != nil { - return *x.Repeated - } - return false -} - -// Range of reserved numeric values. Reserved values may not be used by -// entries in the same enum. Reserved ranges may not overlap. -// -// Note that this is distinct from DescriptorProto.ReservedRange in that it -// is inclusive such that it can appropriately represent the entire int32 -// domain. -type EnumDescriptorProto_EnumReservedRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive. - End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` // Inclusive. -} - -func (x *EnumDescriptorProto_EnumReservedRange) Reset() { - *x = EnumDescriptorProto_EnumReservedRange{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnumDescriptorProto_EnumReservedRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} - -func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Descriptor instead. -func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0} -} - -func (x *EnumDescriptorProto_EnumReservedRange) GetStart() int32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 { - if x != nil && x.End != nil { - return *x.End - } - return 0 -} - -type FieldOptions_EditionDefault struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value. -} - -func (x *FieldOptions_EditionDefault) Reset() { - *x = FieldOptions_EditionDefault{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FieldOptions_EditionDefault) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FieldOptions_EditionDefault) ProtoMessage() {} - -func (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FieldOptions_EditionDefault.ProtoReflect.Descriptor instead. -func (*FieldOptions_EditionDefault) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0} -} - -func (x *FieldOptions_EditionDefault) GetEdition() Edition { - if x != nil && x.Edition != nil { - return *x.Edition - } - return Edition_EDITION_UNKNOWN -} - -func (x *FieldOptions_EditionDefault) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" -} - -// Information about the support window of a feature. -type FieldOptions_FeatureSupport struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The edition that this feature was first available in. In editions - // earlier than this one, the default assigned to EDITION_LEGACY will be - // used, and proto files will not be able to override it. - EditionIntroduced *Edition `protobuf:"varint,1,opt,name=edition_introduced,json=editionIntroduced,enum=google.protobuf.Edition" json:"edition_introduced,omitempty"` - // The edition this feature becomes deprecated in. Using this after this - // edition may trigger warnings. - EditionDeprecated *Edition `protobuf:"varint,2,opt,name=edition_deprecated,json=editionDeprecated,enum=google.protobuf.Edition" json:"edition_deprecated,omitempty"` - // The deprecation warning text if this feature is used after the edition it - // was marked deprecated in. - DeprecationWarning *string `protobuf:"bytes,3,opt,name=deprecation_warning,json=deprecationWarning" json:"deprecation_warning,omitempty"` - // The edition this feature is no longer available in. In editions after - // this one, the last default assigned will be used, and proto files will - // not be able to override it. - EditionRemoved *Edition `protobuf:"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition" json:"edition_removed,omitempty"` -} - -func (x *FieldOptions_FeatureSupport) Reset() { - *x = FieldOptions_FeatureSupport{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FieldOptions_FeatureSupport) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FieldOptions_FeatureSupport) ProtoMessage() {} - -func (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FieldOptions_FeatureSupport.ProtoReflect.Descriptor instead. -func (*FieldOptions_FeatureSupport) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1} -} - -func (x *FieldOptions_FeatureSupport) GetEditionIntroduced() Edition { - if x != nil && x.EditionIntroduced != nil { - return *x.EditionIntroduced - } - return Edition_EDITION_UNKNOWN -} - -func (x *FieldOptions_FeatureSupport) GetEditionDeprecated() Edition { - if x != nil && x.EditionDeprecated != nil { - return *x.EditionDeprecated - } - return Edition_EDITION_UNKNOWN -} - -func (x *FieldOptions_FeatureSupport) GetDeprecationWarning() string { - if x != nil && x.DeprecationWarning != nil { - return *x.DeprecationWarning - } - return "" -} - -func (x *FieldOptions_FeatureSupport) GetEditionRemoved() Edition { - if x != nil && x.EditionRemoved != nil { - return *x.EditionRemoved - } - return Edition_EDITION_UNKNOWN -} - -// The name of the uninterpreted option. Each string represents a segment in -// a dot-separated name. is_extension is true iff a segment represents an -// extension (denoted with parentheses in options specs in .proto files). -// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents -// "foo.(bar.baz).moo". -type UninterpretedOption_NamePart struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NamePart *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"` - IsExtension *bool `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"` -} - -func (x *UninterpretedOption_NamePart) Reset() { - *x = UninterpretedOption_NamePart{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UninterpretedOption_NamePart) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UninterpretedOption_NamePart) ProtoMessage() {} - -func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Descriptor instead. -func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0} -} - -func (x *UninterpretedOption_NamePart) GetNamePart() string { - if x != nil && x.NamePart != nil { - return *x.NamePart - } - return "" -} - -func (x *UninterpretedOption_NamePart) GetIsExtension() bool { - if x != nil && x.IsExtension != nil { - return *x.IsExtension - } - return false -} - -// A map from every known edition with a unique set of defaults to its -// defaults. Not all editions may be contained here. For a given edition, -// the defaults at the closest matching edition ordered at or before it should -// be used. This field must be in strict ascending order by edition. -type FeatureSetDefaults_FeatureSetEditionDefault struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` - // Defaults of features that can be overridden in this edition. - OverridableFeatures *FeatureSet `protobuf:"bytes,4,opt,name=overridable_features,json=overridableFeatures" json:"overridable_features,omitempty"` - // Defaults of features that can't be overridden in this edition. - FixedFeatures *FeatureSet `protobuf:"bytes,5,opt,name=fixed_features,json=fixedFeatures" json:"fixed_features,omitempty"` -} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() { - *x = FeatureSetDefaults_FeatureSetEditionDefault{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeatureSetDefaults_FeatureSetEditionDefault.ProtoReflect.Descriptor instead. -func (*FeatureSetDefaults_FeatureSetEditionDefault) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0} -} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetEdition() Edition { - if x != nil && x.Edition != nil { - return *x.Edition - } - return Edition_EDITION_UNKNOWN -} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetOverridableFeatures() *FeatureSet { - if x != nil { - return x.OverridableFeatures - } - return nil -} - -func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFixedFeatures() *FeatureSet { - if x != nil { - return x.FixedFeatures - } - return nil -} - -type SourceCodeInfo_Location struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition appears. - // For example, this path: - // - // [ 4, 3, 2, 7, 1 ] - // - // refers to: - // - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // - // This is because FileDescriptorProto.message_type has field number 4: - // - // repeated DescriptorProto message_type = 4; - // - // and DescriptorProto.field has field number 2: - // - // repeated FieldDescriptorProto field = 2; - // - // and FieldDescriptorProto.name has field number 1: - // - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // - // [ 4, 3, 2, 7 ] - // - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"` - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - Span []int32 `protobuf:"varint,2,rep,packed,name=span" json:"span,omitempty"` - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to moo. - // // - // // Another line attached to moo. - // optional double moo = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to moo or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - LeadingComments *string `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"` - TrailingComments *string `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"` - LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"` -} - -func (x *SourceCodeInfo_Location) Reset() { - *x = SourceCodeInfo_Location{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SourceCodeInfo_Location) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SourceCodeInfo_Location) ProtoMessage() {} - -func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead. -func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0} -} - -func (x *SourceCodeInfo_Location) GetPath() []int32 { - if x != nil { - return x.Path - } - return nil -} - -func (x *SourceCodeInfo_Location) GetSpan() []int32 { - if x != nil { - return x.Span - } - return nil -} - -func (x *SourceCodeInfo_Location) GetLeadingComments() string { - if x != nil && x.LeadingComments != nil { - return *x.LeadingComments - } - return "" -} - -func (x *SourceCodeInfo_Location) GetTrailingComments() string { - if x != nil && x.TrailingComments != nil { - return *x.TrailingComments - } - return "" -} - -func (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string { - if x != nil { - return x.LeadingDetachedComments - } - return nil -} - -type GeneratedCodeInfo_Annotation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"` - // Identifies the filesystem path to the original source .proto. - SourceFile *string `protobuf:"bytes,2,opt,name=source_file,json=sourceFile" json:"source_file,omitempty"` - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"` - // Identifies the ending offset in bytes in the generated code that - // relates to the identified object. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"` - Semantic *GeneratedCodeInfo_Annotation_Semantic `protobuf:"varint,5,opt,name=semantic,enum=google.protobuf.GeneratedCodeInfo_Annotation_Semantic" json:"semantic,omitempty"` -} - -func (x *GeneratedCodeInfo_Annotation) Reset() { - *x = GeneratedCodeInfo_Annotation{} - mi := &file_google_protobuf_descriptor_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GeneratedCodeInfo_Annotation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} - -func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[32] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead. -func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0} -} - -func (x *GeneratedCodeInfo_Annotation) GetPath() []int32 { - if x != nil { - return x.Path - } - return nil -} - -func (x *GeneratedCodeInfo_Annotation) GetSourceFile() string { - if x != nil && x.SourceFile != nil { - return *x.SourceFile - } - return "" -} - -func (x *GeneratedCodeInfo_Annotation) GetBegin() int32 { - if x != nil && x.Begin != nil { - return *x.Begin - } - return 0 -} - -func (x *GeneratedCodeInfo_Annotation) GetEnd() int32 { - if x != nil && x.End != nil { - return *x.End - } - return 0 -} - -func (x *GeneratedCodeInfo_Annotation) GetSemantic() GeneratedCodeInfo_Annotation_Semantic { - if x != nil && x.Semantic != nil { - return *x.Semantic - } - return GeneratedCodeInfo_Annotation_NONE -} - -var File_google_protobuf_descriptor_proto protoreflect.FileDescriptor - -var file_google_protobuf_descriptor_proto_rawDesc = []byte{ - 0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x22, 0x4d, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69, - 0x6c, 0x65, 0x22, 0x98, 0x05, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, - 0x77, 0x65, 0x61, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x43, - 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, - 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, - 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, - 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, - 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, - 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, - 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, - 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xcc, 0x04, 0x0a, 0x15, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, - 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, - 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x42, 0x03, 0x88, - 0x01, 0x02, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x1a, 0x94, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, - 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, - 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, - 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, - 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, - 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, - 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, - 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, - 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, - 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, - 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, - 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, - 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, - 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, - 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, - 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14, - 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, - 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, - 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, - 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, - 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x22, 0xad, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, - 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, - 0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, - 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, - 0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, - 0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, - 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, - 0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, - 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, - 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, - 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, - 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68, - 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, - 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, - 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, - 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, - 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, - 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x02, 0x4a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x52, 0x14, 0x70, - 0x68, 0x70, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x22, 0xf4, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, - 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, - 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, - 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x9d, 0x0d, 0x0a, 0x0c, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, - 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, - 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, - 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, - 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, - 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, - 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x55, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x96, 0x02, 0x0a, - 0x0e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, - 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, - 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, - 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, - 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, - 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, - 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, - 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, - 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, - 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, - 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, - 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, - 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, - 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, - 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, - 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, - 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, - 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, - 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, - 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd8, 0x02, - 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, - 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, - 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x0f, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, - 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, - 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, - 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, 0x65, - 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, - 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6d, - 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x08, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, - 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, - 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, - 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, - 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, - 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, - 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, - 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x0a, 0x0a, 0x0a, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x0e, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x3f, 0x88, 0x01, - 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, - 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, 0x4d, 0x50, 0x4c, - 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, - 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0d, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x09, - 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, - 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, - 0x09, 0x12, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, - 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x17, 0x72, - 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, - 0x2d, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, - 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x15, - 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7e, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, 0x38, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, - 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, 0xe6, - 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, 0xb2, - 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x26, 0x88, 0x01, - 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, - 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xb2, 0x01, - 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, - 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x42, 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, 0x98, 0x01, - 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, - 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, - 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0a, - 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, - 0x43, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, - 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, - 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, - 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, - 0x02, 0x22, 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, - 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, - 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, - 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x49, 0x0a, 0x0e, 0x55, 0x74, 0x66, - 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, - 0x54, 0x46, 0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, - 0x46, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x04, - 0x08, 0x01, 0x10, 0x01, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, - 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, - 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, - 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, - 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, - 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0x8b, 0x4e, 0x2a, 0x06, 0x08, 0x8b, 0x4e, - 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, - 0x10, 0xe8, 0x07, 0x22, 0xef, 0x03, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, - 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, - 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, - 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf8, 0x01, 0x0a, 0x18, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x14, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x66, - 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, - 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, - 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, - 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, - 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, - 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, - 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, - 0x10, 0x02, 0x2a, 0xa7, 0x02, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, - 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, - 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x84, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, - 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, - 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, - 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x32, 0x30, 0x32, 0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, - 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, - 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, - 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, - 0x4e, 0x4c, 0x59, 0x10, 0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, 0x0a, 0x13, - 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, - 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -} - -var ( - file_google_protobuf_descriptor_proto_rawDescOnce sync.Once - file_google_protobuf_descriptor_proto_rawDescData = file_google_protobuf_descriptor_proto_rawDesc -) - -func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte { - file_google_protobuf_descriptor_proto_rawDescOnce.Do(func() { - file_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_descriptor_proto_rawDescData) - }) - return file_google_protobuf_descriptor_proto_rawDescData -} - -var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 17) -var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 33) -var file_google_protobuf_descriptor_proto_goTypes = []any{ - (Edition)(0), // 0: google.protobuf.Edition - (ExtensionRangeOptions_VerificationState)(0), // 1: google.protobuf.ExtensionRangeOptions.VerificationState - (FieldDescriptorProto_Type)(0), // 2: google.protobuf.FieldDescriptorProto.Type - (FieldDescriptorProto_Label)(0), // 3: google.protobuf.FieldDescriptorProto.Label - (FileOptions_OptimizeMode)(0), // 4: google.protobuf.FileOptions.OptimizeMode - (FieldOptions_CType)(0), // 5: google.protobuf.FieldOptions.CType - (FieldOptions_JSType)(0), // 6: google.protobuf.FieldOptions.JSType - (FieldOptions_OptionRetention)(0), // 7: google.protobuf.FieldOptions.OptionRetention - (FieldOptions_OptionTargetType)(0), // 8: google.protobuf.FieldOptions.OptionTargetType - (MethodOptions_IdempotencyLevel)(0), // 9: google.protobuf.MethodOptions.IdempotencyLevel - (FeatureSet_FieldPresence)(0), // 10: google.protobuf.FeatureSet.FieldPresence - (FeatureSet_EnumType)(0), // 11: google.protobuf.FeatureSet.EnumType - (FeatureSet_RepeatedFieldEncoding)(0), // 12: google.protobuf.FeatureSet.RepeatedFieldEncoding - (FeatureSet_Utf8Validation)(0), // 13: google.protobuf.FeatureSet.Utf8Validation - (FeatureSet_MessageEncoding)(0), // 14: google.protobuf.FeatureSet.MessageEncoding - (FeatureSet_JsonFormat)(0), // 15: google.protobuf.FeatureSet.JsonFormat - (GeneratedCodeInfo_Annotation_Semantic)(0), // 16: google.protobuf.GeneratedCodeInfo.Annotation.Semantic - (*FileDescriptorSet)(nil), // 17: google.protobuf.FileDescriptorSet - (*FileDescriptorProto)(nil), // 18: google.protobuf.FileDescriptorProto - (*DescriptorProto)(nil), // 19: google.protobuf.DescriptorProto - (*ExtensionRangeOptions)(nil), // 20: google.protobuf.ExtensionRangeOptions - (*FieldDescriptorProto)(nil), // 21: google.protobuf.FieldDescriptorProto - (*OneofDescriptorProto)(nil), // 22: google.protobuf.OneofDescriptorProto - (*EnumDescriptorProto)(nil), // 23: google.protobuf.EnumDescriptorProto - (*EnumValueDescriptorProto)(nil), // 24: google.protobuf.EnumValueDescriptorProto - (*ServiceDescriptorProto)(nil), // 25: google.protobuf.ServiceDescriptorProto - (*MethodDescriptorProto)(nil), // 26: google.protobuf.MethodDescriptorProto - (*FileOptions)(nil), // 27: google.protobuf.FileOptions - (*MessageOptions)(nil), // 28: google.protobuf.MessageOptions - (*FieldOptions)(nil), // 29: google.protobuf.FieldOptions - (*OneofOptions)(nil), // 30: google.protobuf.OneofOptions - (*EnumOptions)(nil), // 31: google.protobuf.EnumOptions - (*EnumValueOptions)(nil), // 32: google.protobuf.EnumValueOptions - (*ServiceOptions)(nil), // 33: google.protobuf.ServiceOptions - (*MethodOptions)(nil), // 34: google.protobuf.MethodOptions - (*UninterpretedOption)(nil), // 35: google.protobuf.UninterpretedOption - (*FeatureSet)(nil), // 36: google.protobuf.FeatureSet - (*FeatureSetDefaults)(nil), // 37: google.protobuf.FeatureSetDefaults - (*SourceCodeInfo)(nil), // 38: google.protobuf.SourceCodeInfo - (*GeneratedCodeInfo)(nil), // 39: google.protobuf.GeneratedCodeInfo - (*DescriptorProto_ExtensionRange)(nil), // 40: google.protobuf.DescriptorProto.ExtensionRange - (*DescriptorProto_ReservedRange)(nil), // 41: google.protobuf.DescriptorProto.ReservedRange - (*ExtensionRangeOptions_Declaration)(nil), // 42: google.protobuf.ExtensionRangeOptions.Declaration - (*EnumDescriptorProto_EnumReservedRange)(nil), // 43: google.protobuf.EnumDescriptorProto.EnumReservedRange - (*FieldOptions_EditionDefault)(nil), // 44: google.protobuf.FieldOptions.EditionDefault - (*FieldOptions_FeatureSupport)(nil), // 45: google.protobuf.FieldOptions.FeatureSupport - (*UninterpretedOption_NamePart)(nil), // 46: google.protobuf.UninterpretedOption.NamePart - (*FeatureSetDefaults_FeatureSetEditionDefault)(nil), // 47: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault - (*SourceCodeInfo_Location)(nil), // 48: google.protobuf.SourceCodeInfo.Location - (*GeneratedCodeInfo_Annotation)(nil), // 49: google.protobuf.GeneratedCodeInfo.Annotation -} -var file_google_protobuf_descriptor_proto_depIdxs = []int32{ - 18, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto - 19, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto - 23, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto - 25, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto - 21, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto - 27, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions - 38, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo - 0, // 7: google.protobuf.FileDescriptorProto.edition:type_name -> google.protobuf.Edition - 21, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto - 21, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto - 19, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto - 23, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto - 40, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange - 22, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto - 28, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions - 41, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange - 35, // 16: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 42, // 17: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration - 36, // 18: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet - 1, // 19: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState - 3, // 20: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label - 2, // 21: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type - 29, // 22: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions - 30, // 23: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions - 24, // 24: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto - 31, // 25: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions - 43, // 26: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange - 32, // 27: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions - 26, // 28: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto - 33, // 29: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions - 34, // 30: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions - 4, // 31: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode - 36, // 32: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 33: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 34: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 35: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 5, // 36: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType - 6, // 37: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType - 7, // 38: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention - 8, // 39: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType - 44, // 40: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault - 36, // 41: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet - 45, // 42: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport - 35, // 43: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 44: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 45: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 46: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 47: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 48: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet - 45, // 49: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport - 35, // 50: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 51: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 52: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 9, // 53: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel - 36, // 54: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 55: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 46, // 56: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart - 10, // 57: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence - 11, // 58: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType - 12, // 59: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding - 13, // 60: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation - 14, // 61: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding - 15, // 62: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat - 47, // 63: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault - 0, // 64: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition - 0, // 65: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition - 48, // 66: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location - 49, // 67: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation - 20, // 68: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions - 0, // 69: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition - 0, // 70: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition - 0, // 71: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition - 0, // 72: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition - 0, // 73: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition - 36, // 74: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet - 36, // 75: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet - 16, // 76: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic - 77, // [77:77] is the sub-list for method output_type - 77, // [77:77] is the sub-list for method input_type - 77, // [77:77] is the sub-list for extension type_name - 77, // [77:77] is the sub-list for extension extendee - 0, // [0:77] is the sub-list for field type_name -} - -func init() { file_google_protobuf_descriptor_proto_init() } -func file_google_protobuf_descriptor_proto_init() { - if File_google_protobuf_descriptor_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_google_protobuf_descriptor_proto_rawDesc, - NumEnums: 17, - NumMessages: 33, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_google_protobuf_descriptor_proto_goTypes, - DependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs, - EnumInfos: file_google_protobuf_descriptor_proto_enumTypes, - MessageInfos: file_google_protobuf_descriptor_proto_msgTypes, - }.Build() - File_google_protobuf_descriptor_proto = out.File - file_google_protobuf_descriptor_proto_rawDesc = nil - file_google_protobuf_descriptor_proto_goTypes = nil - file_google_protobuf_descriptor_proto_depIdxs = nil -} diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go deleted file mode 100644 index c7e860f..0000000 --- a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go +++ /dev/null @@ -1,165 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2023 Google Inc. All rights reserved. -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file or at -// https://developers.google.com/open-source/licenses/bsd - -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/go_features.proto - -package gofeaturespb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - descriptorpb "google.golang.org/protobuf/types/descriptorpb" - reflect "reflect" - sync "sync" -) - -type GoFeatures struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Whether or not to generate the deprecated UnmarshalJSON method for enums. - LegacyUnmarshalJsonEnum *bool `protobuf:"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum" json:"legacy_unmarshal_json_enum,omitempty"` -} - -func (x *GoFeatures) Reset() { - *x = GoFeatures{} - mi := &file_google_protobuf_go_features_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GoFeatures) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GoFeatures) ProtoMessage() {} - -func (x *GoFeatures) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_go_features_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead. -func (*GoFeatures) Descriptor() ([]byte, []int) { - return file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0} -} - -func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool { - if x != nil && x.LegacyUnmarshalJsonEnum != nil { - return *x.LegacyUnmarshalJsonEnum - } - return false -} - -var file_google_protobuf_go_features_proto_extTypes = []protoimpl.ExtensionInfo{ - { - ExtendedType: (*descriptorpb.FeatureSet)(nil), - ExtensionType: (*GoFeatures)(nil), - Field: 1002, - Name: "pb.go", - Tag: "bytes,1002,opt,name=go", - Filename: "google/protobuf/go_features.proto", - }, -} - -// Extension fields to descriptorpb.FeatureSet. -var ( - // optional pb.GoFeatures go = 1002; - E_Go = &file_google_protobuf_go_features_proto_extTypes[0] -) - -var File_google_protobuf_go_features_proto protoreflect.FileDescriptor - -var file_google_protobuf_go_features_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, 0x0a, 0x0a, 0x47, 0x6f, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1a, 0x6c, 0x65, 0x67, - 0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x6a, 0x73, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x80, 0x01, - 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, - 0x75, 0x65, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, - 0xe7, 0x07, 0xb2, 0x01, 0x5b, 0x08, 0xe8, 0x07, 0x10, 0xe8, 0x07, 0x1a, 0x53, 0x54, 0x68, 0x65, - 0x20, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, - 0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x3c, 0x0a, 0x02, 0x67, 0x6f, 0x12, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x67, 0x6f, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x70, 0x62, -} - -var ( - file_google_protobuf_go_features_proto_rawDescOnce sync.Once - file_google_protobuf_go_features_proto_rawDescData = file_google_protobuf_go_features_proto_rawDesc -) - -func file_google_protobuf_go_features_proto_rawDescGZIP() []byte { - file_google_protobuf_go_features_proto_rawDescOnce.Do(func() { - file_google_protobuf_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_go_features_proto_rawDescData) - }) - return file_google_protobuf_go_features_proto_rawDescData -} - -var file_google_protobuf_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_google_protobuf_go_features_proto_goTypes = []any{ - (*GoFeatures)(nil), // 0: pb.GoFeatures - (*descriptorpb.FeatureSet)(nil), // 1: google.protobuf.FeatureSet -} -var file_google_protobuf_go_features_proto_depIdxs = []int32{ - 1, // 0: pb.go:extendee -> google.protobuf.FeatureSet - 0, // 1: pb.go:type_name -> pb.GoFeatures - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 1, // [1:2] is the sub-list for extension type_name - 0, // [0:1] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_google_protobuf_go_features_proto_init() } -func file_google_protobuf_go_features_proto_init() { - if File_google_protobuf_go_features_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_google_protobuf_go_features_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 1, - NumServices: 0, - }, - GoTypes: file_google_protobuf_go_features_proto_goTypes, - DependencyIndexes: file_google_protobuf_go_features_proto_depIdxs, - MessageInfos: file_google_protobuf_go_features_proto_msgTypes, - ExtensionInfos: file_google_protobuf_go_features_proto_extTypes, - }.Build() - File_google_protobuf_go_features_proto = out.File - file_google_protobuf_go_features_proto_rawDesc = nil - file_google_protobuf_go_features_proto_goTypes = nil - file_google_protobuf_go_features_proto_depIdxs = nil -} diff --git a/vendor/modules.txt b/vendor/modules.txt deleted file mode 100644 index 95a1e03..0000000 --- a/vendor/modules.txt +++ /dev/null @@ -1,109 +0,0 @@ -# github.com/JalfResi/justext v0.0.0-20221106200834-be571e3e3052 -## explicit -github.com/JalfResi/justext -# github.com/PuerkitoBio/goquery v1.10.0 -## explicit; go 1.23 -github.com/PuerkitoBio/goquery -# github.com/advancedlogic/GoOse v0.0.0-20231203033844-ae6b36caf275 -## explicit; go 1.13 -github.com/advancedlogic/GoOse -# github.com/andybalholm/cascadia v1.3.2 -## explicit; go 1.16 -github.com/andybalholm/cascadia -# github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de -## explicit; go 1.12 -github.com/araddon/dateparse -# github.com/fatih/set v0.2.1 -## explicit -github.com/fatih/set -# github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573 -## explicit -github.com/gigawattio/window -# github.com/go-resty/resty/v2 v2.15.3 -## explicit; go 1.20 -github.com/go-resty/resty/v2 -github.com/go-resty/resty/v2/shellescape -# github.com/golang/protobuf v1.5.4 -## explicit; go 1.17 -github.com/golang/protobuf/proto -# github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056 -## explicit -github.com/jaytaylor/html2text -# github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5 -## explicit -github.com/levigross/exp-html -# github.com/mattn/go-runewidth v0.0.16 -## explicit; go 1.9 -github.com/mattn/go-runewidth -# github.com/olekukonko/tablewriter v0.0.5 -## explicit; go 1.12 -github.com/olekukonko/tablewriter -# github.com/otiai10/gosseract/v2 v2.4.1 -## explicit; go 1.18 -github.com/otiai10/gosseract/v2 -# github.com/pkg/errors v0.9.1 -## explicit -github.com/pkg/errors -# github.com/rivo/uniseg v0.4.7 -## explicit; go 1.18 -github.com/rivo/uniseg -# github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf -## explicit -github.com/ssor/bom -# golang.org/x/net v0.30.0 -## explicit; go 1.18 -golang.org/x/net/html -golang.org/x/net/html/atom -golang.org/x/net/html/charset -golang.org/x/net/publicsuffix -# golang.org/x/text v0.19.0 -## explicit; go 1.18 -golang.org/x/text/encoding -golang.org/x/text/encoding/charmap -golang.org/x/text/encoding/htmlindex -golang.org/x/text/encoding/internal -golang.org/x/text/encoding/internal/identifier -golang.org/x/text/encoding/japanese -golang.org/x/text/encoding/korean -golang.org/x/text/encoding/simplifiedchinese -golang.org/x/text/encoding/traditionalchinese -golang.org/x/text/encoding/unicode -golang.org/x/text/internal/language -golang.org/x/text/internal/language/compact -golang.org/x/text/internal/tag -golang.org/x/text/internal/utf8internal -golang.org/x/text/language -golang.org/x/text/runes -golang.org/x/text/transform -# google.golang.org/protobuf v1.35.1 -## explicit; go 1.21 -google.golang.org/protobuf/encoding/prototext -google.golang.org/protobuf/encoding/protowire -google.golang.org/protobuf/internal/descfmt -google.golang.org/protobuf/internal/descopts -google.golang.org/protobuf/internal/detrand -google.golang.org/protobuf/internal/editiondefaults -google.golang.org/protobuf/internal/editionssupport -google.golang.org/protobuf/internal/encoding/defval -google.golang.org/protobuf/internal/encoding/messageset -google.golang.org/protobuf/internal/encoding/tag -google.golang.org/protobuf/internal/encoding/text -google.golang.org/protobuf/internal/errors -google.golang.org/protobuf/internal/filedesc -google.golang.org/protobuf/internal/filetype -google.golang.org/protobuf/internal/flags -google.golang.org/protobuf/internal/genid -google.golang.org/protobuf/internal/impl -google.golang.org/protobuf/internal/order -google.golang.org/protobuf/internal/pragma -google.golang.org/protobuf/internal/set -google.golang.org/protobuf/internal/strs -google.golang.org/protobuf/internal/version -google.golang.org/protobuf/proto -google.golang.org/protobuf/reflect/protodesc -google.golang.org/protobuf/reflect/protoreflect -google.golang.org/protobuf/reflect/protoregistry -google.golang.org/protobuf/runtime/protoiface -google.golang.org/protobuf/runtime/protoimpl -google.golang.org/protobuf/types/descriptorpb -google.golang.org/protobuf/types/gofeaturespb From 7b60952017ccdb54d994d877d8ac9ab64c7b9e30 Mon Sep 17 00:00:00 2001 From: Kim Pepper <kim@pepper.id.au> Date: Fri, 5 Dec 2025 15:25:09 +1100 Subject: [PATCH 4/7] Bump alpine version --- .goreleaser.yml | 8 ++++---- Dockerfile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 706b7f5..810e658 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -3,8 +3,7 @@ project_name: docconv version: 2 builds: - - id: docconv-build - main: ./docd + - main: ./docd binary: docconv ldflags: - -extldflags '-static' @@ -21,8 +20,7 @@ release: name: docconv nfpms: - - id: docconv-package - package_name: docconv + - package_name: docconv license: MIT maintainer: Skpr homepage: https://github.com/skpr/docconv @@ -48,3 +46,5 @@ dockers_v2: platforms: - linux/amd64 - linux/arm64 + build_args: + ALPINE_VERSION: "3.23" diff --git a/Dockerfile b/Dockerfile index 7008e8e..dbd04aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG ALPINE_VERSION=3.21 +ARG ALPINE_VERSION=3.23 FROM alpine:$ALPINE_VERSION RUN apk add --no-cache tesseract-ocr tesseract-ocr-dev poppler-utils From 63acb274e1fb8b8ae2fe1c6a2e781986317d0f07 Mon Sep 17 00:00:00 2001 From: Kim Pepper <kim@pepper.id.au> Date: Fri, 5 Dec 2025 16:44:59 +1100 Subject: [PATCH 5/7] Upload apk packages to s3 --- .github/workflows/release.yml | 35 +++++++++++++++++++++++++++++++--- .github/workflows/snapshot.yml | 6 +++--- .gitignore | 1 + .goreleaser.yml | 5 ++++- skpr.rsa.pub | 14 ++++++++++++++ 5 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 skpr.rsa.pub diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 262b528..4afe6cc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,13 +16,42 @@ jobs: curl https://mise.run | sh mise install - - name: Set up QEMU + - name: ⚙️ Set up QEMU uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx + - name: ⚙️ Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Run GoReleaser Snapshot + - name: 🔑 Get signing key + run: | + echo "${{ secrets.SKPR_PRIVATE_KEY }}" > skpr.rsa + chmod 600 skpr.rsa + + - name: 🚀 Publish Release run: mise release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: 🚮 Delete signing key + if: always() + run: rm -f skpr.rsa + + - name: 🔑 Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v5 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: 📤 Upload APKs to S3 + run: | + VERSION=${GITHUB_TAG} + aws s3 cp ./dist/docconv_${VERSION}_linux_arm64.apk s3://package-skpr-io/docconv/${VERSION}/aarch64/docconv_${VERSION}.apk --acl public-read --cache-control "max-age=86400" + aws s3 cp ./dist/docconv_${VERSION}_linux_amd64.apk s3://package-skpr-io/docconv/${VERSION}/x86_64/docconv_${VERSION}.apk --acl public-read --cache-control "max-age=86400" + # upload public key for validating repository packages. + aws s3 cp skpr.rsa.pub s3://package-skpr-io/docconv/skpr.rsa.pub --acl public-read + + - name: ☁️ Invalidate CloudFront Cache + run: | + VERSION=${GITHUB_TAG} + aws cloudfront create-invalidation --distribution-id ${CLOUDFRONT_ID} --paths /docconv/${VERSION}/* /docconv/skpr.rsa.pub diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 23ea238..5e85aaf 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -14,13 +14,13 @@ jobs: curl https://mise.run | sh mise install - - name: Set up QEMU + - name: ⚙️ Set up QEMU uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx + - name: ⚙️ Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Run GoReleaser Snapshot + - name: 🚀 Create Snapshot Release run: mise snapshot env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index d872b6e..3da6f6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ sajari-convert *tests/ +skpr.rsa /dist /vendor diff --git a/.goreleaser.yml b/.goreleaser.yml index 810e658..6edea86 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -22,7 +22,7 @@ release: nfpms: - package_name: docconv license: MIT - maintainer: Skpr + maintainer: admin@skpr.com.au homepage: https://github.com/skpr/docconv description: Fork of https://github.com/sajari/docconv to add additional package formats. formats: [ apk ] @@ -35,6 +35,9 @@ nfpms: - tesseract-ocr - tesseract-ocr-dev - poppler-utils + apk: + signature: + key_file: skpr.rsa dockers_v2: - images: diff --git a/skpr.rsa.pub b/skpr.rsa.pub new file mode 100644 index 0000000..438458f --- /dev/null +++ b/skpr.rsa.pub @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0oN523bLY7VuiMUwH2kO +0x+fliiOkRIhWDBfreqYBvfBtO5FJVVQK/O1tFl4KJaNLFz4Ysnv2KjNuhgGv1ZB +hH5MNlRA78AwqpFNVs04OAeVEZyRK2zQgqcvyxITAI9x7OliQ2D/wXA3lqyUZgL3 +SAhjvtAp6HzxL9J5fKYS1QmrTCsSMH6v5uFZcUZyAoCQyUXb2If+LNCUmNuZT3Ly +UeEwuTI31M4tyPpL2i9G6IbTDa5vybqnGtnS1ws7xyMfkIxSrFuokmLqrlZeLD1Y +IU19svEZ2CZSdCt8g4GnUgLkjq4EHklzDQN4zfFbiyiM4KF3T66LHXzWywBO9cNE +Xwol124K+8ltygljQPihUvhzoaAqIHj8T/7l8hvtAiBCMFqlNwPyMul1tjLln/4U +1A3FnHII8IUSnJqxHnMuI4WcFMsisuzd18k6wbVEjuqbU8WXS9/qNV/w0w5n2or0 +B4aAZsMrd4+c8c15OVFviotP+JcOfuoeDcIPUFtOyaN4+FE/qhJ2jUYjMiHcscAa +i075p0ETflHoIzZtVI4pzt5eNhU0f8AEdBRHzX2cLTcpm/LuAW61LIXicd8Dcm+d +DXM0Ppy4flbUf3/dVqs5amrEKk8GqELCRpUZCGohu56BKJP+o8sfRauiHzQUGtVP +Wu7OQMYSMmXZatGL+FXIN2ECAwEAAQ== +-----END PUBLIC KEY----- From 4d89401c92dbf5eade412e7f41141c3a97f13d6b Mon Sep 17 00:00:00 2001 From: Kim Pepper <kim@pepper.id.au> Date: Fri, 5 Dec 2025 16:57:14 +1100 Subject: [PATCH 6/7] Formatting --- .github/workflows/release.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4afe6cc..738063c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,8 +46,18 @@ jobs: - name: 📤 Upload APKs to S3 run: | VERSION=${GITHUB_TAG} - aws s3 cp ./dist/docconv_${VERSION}_linux_arm64.apk s3://package-skpr-io/docconv/${VERSION}/aarch64/docconv_${VERSION}.apk --acl public-read --cache-control "max-age=86400" - aws s3 cp ./dist/docconv_${VERSION}_linux_amd64.apk s3://package-skpr-io/docconv/${VERSION}/x86_64/docconv_${VERSION}.apk --acl public-read --cache-control "max-age=86400" + aws s3 sync \ + ./dist/docconv_${VERSION}_linux_arm64.apk \ + s3://package-skpr-io/docconv/${VERSION}/aarch64/docconv_${VERSION}.apk \ + --acl public-read \ + --cache-control "max-age=86400" \ + --delete + aws s3 sync \ + ./dist/docconv_${VERSION}_linux_amd64.apk \ + s3://package-skpr-io/docconv/${VERSION}/x86_64/docconv_${VERSION}.apk \ + --acl public-read \ + --cache-control "max-age=86400" \ + --delete # upload public key for validating repository packages. aws s3 cp skpr.rsa.pub s3://package-skpr-io/docconv/skpr.rsa.pub --acl public-read From 8e6f0ed315eae8c065c9a231d648e9aba499cd07 Mon Sep 17 00:00:00 2001 From: Kim Pepper <kim@pepper.id.au> Date: Mon, 8 Dec 2025 09:56:16 +1100 Subject: [PATCH 7/7] Make public key a secret too --- .github/workflows/release.yml | 5 +++-- .gitignore | 1 + skpr.rsa.pub | 14 -------------- 3 files changed, 4 insertions(+), 16 deletions(-) delete mode 100644 skpr.rsa.pub diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 738063c..0730d85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,10 +22,11 @@ jobs: - name: ⚙️ Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: 🔑 Get signing key + - name: 🔑 Get signing keys run: | echo "${{ secrets.SKPR_PRIVATE_KEY }}" > skpr.rsa - chmod 600 skpr.rsa + echo "${{ secrets.SKPR_PUBLIC_KEY }}" > skpr.rsa.pub + chmod 600 skpr.rsa skpr.rsa.pub - name: 🚀 Publish Release run: mise release diff --git a/.gitignore b/.gitignore index 3da6f6e..8239872 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ sajari-convert *tests/ skpr.rsa +skpr.rsa.pub /dist /vendor diff --git a/skpr.rsa.pub b/skpr.rsa.pub deleted file mode 100644 index 438458f..0000000 --- a/skpr.rsa.pub +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0oN523bLY7VuiMUwH2kO -0x+fliiOkRIhWDBfreqYBvfBtO5FJVVQK/O1tFl4KJaNLFz4Ysnv2KjNuhgGv1ZB -hH5MNlRA78AwqpFNVs04OAeVEZyRK2zQgqcvyxITAI9x7OliQ2D/wXA3lqyUZgL3 -SAhjvtAp6HzxL9J5fKYS1QmrTCsSMH6v5uFZcUZyAoCQyUXb2If+LNCUmNuZT3Ly -UeEwuTI31M4tyPpL2i9G6IbTDa5vybqnGtnS1ws7xyMfkIxSrFuokmLqrlZeLD1Y -IU19svEZ2CZSdCt8g4GnUgLkjq4EHklzDQN4zfFbiyiM4KF3T66LHXzWywBO9cNE -Xwol124K+8ltygljQPihUvhzoaAqIHj8T/7l8hvtAiBCMFqlNwPyMul1tjLln/4U -1A3FnHII8IUSnJqxHnMuI4WcFMsisuzd18k6wbVEjuqbU8WXS9/qNV/w0w5n2or0 -B4aAZsMrd4+c8c15OVFviotP+JcOfuoeDcIPUFtOyaN4+FE/qhJ2jUYjMiHcscAa -i075p0ETflHoIzZtVI4pzt5eNhU0f8AEdBRHzX2cLTcpm/LuAW61LIXicd8Dcm+d -DXM0Ppy4flbUf3/dVqs5amrEKk8GqELCRpUZCGohu56BKJP+o8sfRauiHzQUGtVP -Wu7OQMYSMmXZatGL+FXIN2ECAwEAAQ== ------END PUBLIC KEY-----